DE112020001586T5 - System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors - Google Patents

System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors Download PDF

Info

Publication number
DE112020001586T5
DE112020001586T5 DE112020001586.6T DE112020001586T DE112020001586T5 DE 112020001586 T5 DE112020001586 T5 DE 112020001586T5 DE 112020001586 T DE112020001586 T DE 112020001586T DE 112020001586 T5 DE112020001586 T5 DE 112020001586T5
Authority
DE
Germany
Prior art keywords
core
processor
instructions
license
level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020001586.6T
Other languages
English (en)
Inventor
Krishnamurthy JAMBUR SATHYANARAYANA
Robert Valentine
Alexander Gendler
Shmuel Zobel
Gavri BERGER
Ian M. Steiner
Nikhil Gupta
Eyal Hadas
Edo Hachamo
Sumesh Subramanian
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112020001586T5 publication Critical patent/DE112020001586T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

Bei einer Ausführungsform beinhaltet ein Prozessor eine Stromschutzsteuervorrichtung zum: Empfangen von Anweisungsbreiteninformationen und Anweisungstypinformationen, die mit einer oder mehreren Anweisungen assoziiert sind, die in einer Anweisungswarteschlange gespeichert sind, vor der Ausführung der einen oder der mehreren Anweisungen durch eine Ausführungsschaltung; Bestimmen eines Leistungslizenzniveaus für den Kern basierend auf den entsprechenden Anweisungsbreiteninformationen und den Anweisungstypinformationen; Erzeugen einer Anforderung für eine Lizenz für den Kern, die dem Leistungslizenzniveau entspricht; und Kommunizieren der Anforderung zu einer Leistungssteuervorrichtung, wenn die eine oder mehreren Anweisungen nicht spekulativ sind, und Aufschieben der Kommunikation der Anforderung, wenn mindestens eine der einen oder mehreren Anweisungen spekulativ ist. Andere Ausführungsformen sind beschrieben und werden beansprucht.

Description

  • Technisches Gebiet
  • Ausführungsformen betreffen Leistungsmanagement eines Prozessors.
  • Hintergrund
  • Fortschritte bei der Halbleiterverarbeitung und dem Logikdesign haben eine Zunahme der Menge an Logik, die auf integrierten Schaltungsvorrichtungen vorhanden sein kann, gestattet. Infolgedessen haben sich Computersystemkonfigurationen von einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Hardware-Threads, mehreren Kernen, mehreren Vorrichtungen und/oder vollständigen Systemen auf individuell integrierten Schaltungen entwickelt. Zusätzlich haben sich mit dem Wachsen der Dichte integrierter Schaltungen auch die Leistungsanforderungen für Rechensysteme (von eingebetteten Systemen zu Servern) erhöht. Des Weiteren haben Softwareineffizienzen und ihre Anforderungen an Hardware auch eine Zunahme des Energieverbrauchs der Rechenvorrichtung verursacht. Tatsächlich geben einige Studien an, dass Rechenvorrichtungen einen nennenswerten Prozentsatz der gesamten Stromversorgung für ein Land, wie etwa die Vereinigten Staaten von Amerika, verbrauchen. Infolgedessen besteht ein wesentlicher Bedarf an Energieeffizienz und -erhaltung, die mit integrierten Schaltungen assoziiert sind. Diese Bedürfnisse werden zunehmen, während Server, Desktop-Computer, Notebooks, Ultrabooks™, Tablets, Mobiltelefone, Prozessoren, eingebettete Systeme usw. noch häufiger werden (von der Einbeziehung in den typischen Computer, in Kraftfahrzeuge und Fernsehgeräten zur Biotechnologie).
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 2 ist ein Blockschaltbild eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne beinhaltet.
    • 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform.
    • 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer anderen Ausführungsform.
    • 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer noch weiteren Ausführungsform.
    • 9 ist ein Blockschaltbild eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 10 ist ein Blockdiagramm eines repräsentativen SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 11 ist ein Blockdiagramm eines anderen beispielhaften SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 13 ist ein Blockdiagramm eines anderen beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 14 ein Blockschaltbild eines repräsentativen Computersystems.
    • 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 16 ist ein Blockdiagramm, das ein IP-Kernentwicklungssystem veranschaulicht, das zum Herstellen einer integrierten Schaltung zum Ausführen von Operationen verwendet wird, gemäß einer Ausführungsform.
    • 17 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 18 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 19 ist ein Blockdiagramm eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 20 ist ein Blockdiagramm einer Konfigurationsspeicherung, die in einer Register-Alias-Tabelle oder einer anderen Außer-Reihenfolge-Maschine eines Prozessors vorhanden sein kann.
    • 21 ist ein Blockdiagramm eines Abschnitts eines Prozessors gemäß einer Ausführungsform.
    • 22 ist ein Flussdiagramm einer Prozessorleistungsmanagementtechnik gemäß einer Ausführungsform.
    • 23 ist ein anderes Flussdiagramm einer Prozessorleistungsmanagementtechnik gemäß einer Ausführungsform.
    • 24 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 25 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 26 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 27 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
  • Ausführliche Beschreibung veranschaulichender Ausführungsformen
  • Bei verschiedenen Ausführungsformen ist ein Prozessor mit Leistungsmanagementschaltungen konfiguriert, um dynamisch während des Prozessorbetriebs zweckdienliche Leistungslizenzniveaus zu bestimmen, um Verarbeitungskernen oder anderen Verarbeitungsschaltungen als Reaktion auf Anforderungen von Lizenzgewährungen, die von diesen Agenten empfangen werden, zu gewähren. Im Allgemeinen können Anforderungen nach erhöhten Leistungslizenzniveaus gemacht werden, wenn ein Kern höhere Leistung verbrauchende Anweisungen trifft, einschließlich gewisser breiter Anweisungen, wie vektorbasierter Anweisungen. Ausführungsformen können erlauben, dass bestimmte derartige breite Anweisungen, einschließlich Speicherzugriffsanweisungen für Vektorbreiten, auf niedrigeren Lizenzniveaus ausgeführt werden, wodurch die Anzahl von Anforderungen nach höheren Lizenzniveaus reduziert wird. Zusätzlich können Ausführungsformen Kerne konfigurieren, um das Fordern von Lizenzgewährungen für Anweisungen, die spekulativer hart sind, aufzuschieben. Auf diese Weise wird eine gewisse Anzahl von Lizenzen höherer Leistung nicht angefordert, was die Auswirkung auf die Prozessor-Prozessorleistungsfähigkeit reduziert.
  • Zusätzlich können Ausführungsformen weiter konfigurierbare Leistungsverbrauchsniveaus pro Kern bereitstellen, wie etwa TDP-Niveaus (Thermal-Design-Power-Niveaus). Auf diese Weise kann in Verbindung mit dem Planen von Arbeitslasten zu einem oder mehreren Kernen eine Angabe der Leistungsverbrauchsart der Arbeitslast von dem Scheduler zu einer Leistungssteuervorrichtung identifiziert werden, um zu ermöglichen, dass ein konfigurierbares TDP-Niveau für den Kern zum Beispiel auf ein niedrigeres Niveau eingestellt wird. Auf diese Weise kann eine Vorabgewährung einer Frequenzlizenz für den Betrieb der Arbeitslast mit einer garantierten Betriebsfrequenz derart auftreten, dass der Overhead des Ausführens einer Lizenzverhandlung zwischen einem Kern und einer Leistungssteuervorrichtung vermieden wird, wodurch die Latenz der Arbeitslastausführung reduziert wird.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieeinsparung und Energieeffizienz in spezifischen integrierten Schaltungen, wie etwa in Rechenplattformen oder Prozessoren, beschrieben sind, sind andere Ausführungsformen auf andere Typen integrierter Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren hierin beschriebener Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitervorrichtungen, die auch von besserer Energieeffizienz und Energieeinsparung profitieren können, angewandt werden. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf irgendeine spezielle Art von Rechensystemen beschränkt. Offenbarte Ausführungsformen können daher in vielen unterschiedlichen Systemtypen verwendet werden, die von Server-Computern (zum Beispiel Turm, Rack, Blade, Mikroserver und so fort), Kommunikationssystemen, Speicherungssystemen, Desktop-Computern einer beliebigen Konfiguration, Laptop, Notebook und Tablet-Computer (einschließlich 2:1-Tablets, Phablets und so fort) und können auch in anderen Vorrichtungen, wie etwa handgehaltenen Vorrichtungen, System-on-Chip (SoCs) und eingebetteten Anwendungen, verwendet werden. Einige Beispiele handgehaltener Vorrichtungen beinhalten Mobiltelefone, wie etwa Smartphones, Internetprotokollvorrichtungen, Digitalkameras, PDAs (Personal Digital Assistants) und handgehaltene PCs. Eingebettete Anwendungen können typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, Weitverkehrsnetzwerk-Switches (WAN-Switches), Wearable-Vorrichtungen oder ein beliebiges anderes System, das die unten gelehrten Funktionen und Operationen ausführen kann, beinhalten. Ausführungsformen können noch dazu in mobilen Endgeräten mit standardmäßiger Sprachfunktionalität, wie etwa Mobiltelefonen, Smartphones und Phablets, und/oder in nicht mobilen Endgeräten ohne eine standardmäßige drahtlose Sprachfunktionskommunikationsfähigkeit, wie etwa vielen Wearables, Tablets, Notebooks, Desktops, Mikroservern, Servern und so weiter, umgesetzt werden. Darüber hinaus sind die hierin beschriebenen Geräten, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können auch Softwareoptimierungen für Energieeinsparung und -effizienz betreffen. Wie in der nachfolgenden Beschreibung ohne Weiteres ersichtlich wird, sind die hierin beschriebenen Ausführungsformen von Verfahren, Geräten und Systemen (egal, ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) für eine „grüne Technologie“-Zukunft unerlässlich, wie etwa für Stromeinsparung und Energieeffizienz in Produkten, die einen großen Teil der US-Wirtschaft einschließen.
  • Unter Bezugnahme auf 1 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt, kann das System 100 verschiedene Bauelemente beinhalten, einschließlich eines Prozessors 110, der, wie gezeigt, ein Mehrkernprozessor ist. Der Prozessor 110 kann mit einer Leistungsversorgung 150 über einen externen Spannungsregler 160 gekoppelt sein, der eine erste Spannungsumsetzung ausführen kann, um dem Prozessor 110 eine geregelte Primärspannung bereitzustellen.
  • Wie man sieht, kann der Prozessor 110 ein Einzel-Die-Prozessor sein, der mehrere Kerne 120a bis 120n beinhaltet. Zusätzlich kann jeder Kern mit einem integrierten Spannungsregler (IVR) 125a bis 125n assoziiert sein, der die geregelte Primärspannung empfängt und eine Betriebsspannung erzeugt, die zu einem oder mehrere Agenten des Prozessors, der mit dem IVR assoziiert ist, geliefert werden soll. Dementsprechend kann eine IVR-Umsetzung bereitgestellt werden, um eine feinkörnige Spannungssteuerung und somit Leistung und Leistungsfähigkeit jedes einzelnen Kerns zu erlauben. Daher kann jeder Kern bei einer unabhängigen Spannung und Frequenz arbeiten, was eine große Flexibilität ermöglicht und umfassende Gelegenheiten zum Ausgleichen des Leistungsverbrauchs mit Leistungsfähigkeit bietet. Bei einigen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs das Gruppieren von Bauelementen in separate Leistungsniveaus, so dass Leistung von dem IVR geregelt und nur diesen Bauelementen in der Gruppe zugeführt wird. Während des Leistungsmanagements kann ein gegebenes Leistungsniveau eines IVR heruntergefahren oder ausgeschaltet werden, wenn der Prozessor in einen bestimmten Niedrigleistungszustand versetzt wird, während ein anderes Leistungsniveau eines anderen IVR aktiv bleibt oder vollständig mit Leistung versorgt wird.
  • Immer noch unter Bezugnahme auf 1 können zusätzliche Bauelemente innerhalb des Prozessors einschließlich einer Eingabe/Ausgabe-Schnittstelle 132, einer anderen Schnittstelle 134 und einer integrierten Speichersteuervorrichtung 136 vorhanden sein. Wie man sieht, kann jedes dieser Bauelemente von einem anderen integrierten Spannungsregler 125x mit Leistung versorgt werden. Bei einer Ausführungsform kann die Schnittstelle 132 in der Lage sein, Betrieb für einen Intel®, Quick-Path-Interconnect-Verbindung (QPI-Verbindung) ermöglichen, die Punkt-zu-Punkt-Verbindungen (PtP-Verbindungen) in einem kohärenten Cache-Protokoll bereitstellt, das mehrere Schichten einschließlich einer physischen Schicht, einer Verbindungsschicht und einer Protokollschicht beinhaltet. Im Gegenzug kann die Schnittstelle 134 über ein Peripheral-Component-Interconnect-Express-Protokoll (PCIe™-Protokoll) kommunizieren.
  • Es ist eine Leistungssteuereinheit (PCU) 138 gezeigt, die Hardware, Software und/oder Firmware zum Ausführen von Leistungsmanagementoperationen im Zusammenhang mit dem Prozessor 110 beinhalten kann. Wie man sieht, stellt die PCU 138 Steuerinformationen zu dem externen Spannungsregler 160 über eine digitale Schnittstelle bereit, um den Spannungsregler zu veranlassen, die zweckdienliche geregelte Spannung zu erzeugen. Die PCU 138 stellt auch Steuerinformationen zu den IVRs 125 über eine andere digitale Schnittstelle bereit, um die erzeugte Betriebsspannung zu steuern (oder um einen entsprechenden IVR in einem Niedrigleistungsmodus zu deaktivieren). Bei verschiedenen Ausführungsformen kann die PCU 138 eine Vielfalt von Leistungsmanagementlogikeinheiten beinhalten, um ein hardwarebasiertes Leistungsmanagement auszuführen. Ein derartiges Leistungsmanagement kann vollständig prozessorgesteuert sein (zum Beispiel durch verschiedene Prozessorhardware, und die durch Arbeitslast und/oder Leistung, thermische oder andere Prozessorauflagen ausgelöst werden kann), und/oder das Leistungsmanagement kann als Reaktion auf externe Quellen (wie etwa eine Plattform- oder Verwaltungsleistungsmanagementquelle oder Systemsoftware) ausgeführt werden.
  • Obwohl 1 eine Umsetzung zeigt, bei der die PCU 138 eine separate Verarbeitungs-Engine ist (die als ein Mikrocontroller umgesetzt werden kann), versteht es sich des Weiteren, dass in einigen Fällen zusätzlich zu oder an Stelle einer dedizierten Leistungssteuervorrichtung jeder Kern einen Leistungssteueragenten beinhalten oder damit assoziiert sein kann, um den Leistungsverbrauch autonomer unabhängig zu steuern. In einigen Fällen kann eine hierarchische Leistungsmanagementarchitektur bereitgestellt werden, wobei die PCU 138 in Kommunikation mit entsprechenden Leistungsmanagementagenten, die mit jedem der Kerne 120 assoziiert sind, steht.
  • Eine Leistungsmanagementlogikeinheit, die in der PCU 138 enthalten ist, kann eine Lizenzgewährungsschaltung sein. Eine derartige Lizenzgewährungsschaltung kann eingehende Anforderungen nach Leistungslizenzen empfangen und mindestens zum Teil auf einem oder mehreren Budgets basierend Lizenzgewährungen an gegebene Kerne 120 zur Ausführung bei einem gegebenen Leistungsniveau bereitstellen. Ferner kann diese Lizenzgewährungsschaltung weiter eine Vorabgewährung einer Frequenzlizenz an eine Ausführung einer Arbeitslast eines gegebenen Kerns 124 basierend auf Planungsinformationen bereitstellen, die eine Einstellung eines konfigurierbaren TDP-Werts pro Kern, wie hier beschrieben, veranlassen.
  • Obwohl zur Vereinfachung der Veranschaulichung nicht gezeigt, versteht es sich, dass zusätzliche Bauelemente innerhalb des Prozessors 110 vorhanden sein können, wie etwa zusätzliche Steuerschaltungen, und andere Bauelemente, wie etwa interne Speicher, zum Beispiel eine oder mehrere Ebenen einer Cache-Speicherhierarchie und so weiter. Obwohl in der Umsetzung der 1 mit einem integrierten Spannungsregler gezeigt, sind Ausführungsformen nicht darauf beschränkt.
  • Es wird angemerkt, dass die hierin beschriebenen Leistungsmanagementtechniken unabhängig von und komplementär zu einem Betriebssystem-basierten (OS-basierten) Leistungsmanagementmechanismus (OSPM-Mechanismus) sein können. Gemäß einer beispielhaften OSPM-Technik kann ein Prozessor bei verschiedenen Leistungsfähigkeitszuständen oder -niveaus, sogenannten P-Zuständen, nämlich von P0 bis PN, arbeiten. Im Allgemeinen kann der P1-Leistungsfähigkeitszustand dem höchsten garantierten Leistungsfähigkeitszustand, der von einem OS gefordert werden kann, entsprechen. Hierin beschriebene Ausführungsformen können dynamische Änderungen der garantierten Frequenz des P1-Leistungsfähigkeitszustands basierend auf einer Vielfalt von Eingaben und Prozessorbetriebsparametern ermöglichen. Zusätzlich zu diesem P1-Zustand kann das OS weiter einen höheren Leistungsfähigkeitszustand, nämlich einen P0-Zustand, anfordern. Dieser P0-Zustand kann somit ein opportunistischer oder Turbomoduszustand sein, in dem, wenn Leistung und/oder thermisches Budget verfügbar ist, Prozessorhardware den Prozessor oder mindestens Abschnitte davon konfiguriert, um mit einer höheren als garantierten Frequenz zu arbeiten. Bei vielen Umsetzungen kann ein Prozessor mehrere sogenannte Bin-Frequenzen oberhalb der garantierten P1-Maximalfrequenz beinhalten, die eine maximale Spitzenfrequenz des speziellen Prozessors überschreiten, wie sie während der Herstellung zusammengeführt oder anderswie in den Prozessor geschrieben werden. Außerdem kann gemäß einem OSPM-Mechanismus ein Prozessor bei verschiedenen Leistungszuständen oder -niveaus arbeiten. In Bezug auf Leistungszustände kann ein OSPM-Mechanismus unterschiedliche Leistungsverbrauchszustände, die im Allgemeinen als C-Zustände C0-, C1- bis Cn-Zustände bezeichnet werden, spezifizieren. Wenn ein Kern aktiv ist, läuft er in einem C0-Zustand, und wenn der Kern im Ruhezustand ist, kann er in einen Kern-Niedrigleistungszustand versetzt werden, der auch als ein Kern-C-Zustand ungleich null bezeichnet wird (zum Beispiel C1- bis C6-Zustände), wobei sich jeder C-Zustand auf einem niedrigeren Leistungsverbrauchsniveau befindet (so dass C6 ein tieferer Niedrigleistungszustand als C1 ist usw.).
  • Es versteht sich, dass viele unterschiedliche Typen von Leistungsmanagementtechniken einzeln oder in Kombination bei verschiedenen Ausführungsformen verwendet werden können. Als repräsentative Beispiele kann eine Leistungssteuervorrichtung den Prozessor steuern, um durch irgendeine Form einer dynamischen Spannungsfrequenzskalierung (Dynamic Voltage Frequency Scaling - DVFS), bei der eine Betriebsspannung und/oder Betriebsfrequenz eines oder mehrerer Kerne oder einer anderen Prozessorlogik dynamisch gesteuert werden kann, leistungsverwaltet zu werden, um den Leistungsverbrauch in bestimmten Situationen zu reduzieren. Bei einem Beispiel kann DVFS unter Verwenden von Enhanced-Intel-SpeedStep™-Technologie, die von Intel Corporation, Santa Clara, Ca, erhältlich ist, ausgeführt werden, um eine optimale Leistungsfähigkeit bei einem niedrigsten Leistungsverbrauchsniveau bereitzustellen. Bei einem anderen Beispiel kann DVFS unter Verwenden von Intel-TurboBoost™-Technologie ausgeführt werden, um es einem oder mehreren Kernen oder anderen Rechen-Engines zu ermöglichen, basierend auf Bedingungen (zum Beispiel Arbeitslast und Verfügbarkeit) mit einer höheren als garantierten Betriebsfrequenz zu arbeiten.
  • Eine andere Leistungsmanagementtechnik, die bei bestimmten Beispielen verwendet werden kann, ist dynamisches Austauschen von Arbeitslasten zwischen unterschiedlichen Rechen-Engines. Der Prozessor kann zum Beispiel asymmetrische Kerne oder andere Verarbeitungs-Engines, die bei unterschiedlichen Leistungsverbrauchsniveaus arbeiten, derart beinhalten, dass in einer leistungsbeschränkten Situation eine oder mehrere Arbeitslasten dynamisch umgeschaltet werden können, um auf einem Kern mit niedrigerer Leistung oder einer anderen Rechen-Engine ausgeführt zu werden. Eine andere beispielhafte Leistungsmanagementtechnik ist Hardware-Cycling (HDC), das bewirken kann, dass Kerne und/oder andere Rechen-Engines periodisch gemäß einem Arbeitszyklus aktiviert und deaktiviert werden, so dass ein oder mehrere Kerne während einer inaktiven Periode des Arbeitszyklus inaktiv gemacht werden können und während einer aktiven Periode des Arbeitszyklus aktiv gemacht werden können. Obwohl sie mit diesen speziellen Beispielen beschrieben sind, versteht es sich, dass viele andere Leistungsmanagementtechniken bei speziellen Ausführungsformen verwendet werden können.
  • Ausführungsformen können in Prozessoren für verschiedene Märkte umgesetzt werden, einschließlich Serverprozessoren, Desktopprozessoren, Mobilprozessoren und so weiter. Unter Bezugnahme auf 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt, kann der Prozessor 200 ein Mehrkernprozessor, der eine Vielzahl von Kernen 210a-210n beinhaltet, sein. Bei einer Ausführungsform kann jeder solche Kern von einer unabhängigen Leistungsdomäne und kann dazu konfiguriert sein, basierend auf Arbeitslast in aktive Zustände und/oder maximale Leistungsfähigkeitszustände einzutreten und auszutreten. Die verschiedenen Kerne können über ein Interconnect 215 mit einem Systemagenten 220, der verschiedene Bauelemente beinhaltet, gekoppelt sein. Wie man sieht, kann der Systemagent 220 einen gemeinsam genutzten Cache 230, der ein Last-Level-Cache sein kann, beinhalten. Zusätzlich kann der Systemagent eine integrierte Speichersteuervorrichtung 240 beinhalten, um mit einem (in 2 nicht gezeigten) Systemspeicher, zum Beispiel über einen Speicherbus, zu kommunizieren. Der Systemagent 220 beinhaltet auch verschiedene Schnittstellen 250 und eine Leistungssteuereinheit 255, die Logik zum Ausführen der hier beschriebenen Leistungsmanagementtechniken beinhalten kann. Eine Lizenzgewährungsschaltung 258 kann Kernen 210 Leistungslizenzen basierend auf Lizenzforderungen zur nicht-spekulativen Anweisungsausführung gewähren. Die Lizenzgewährungsschaltung 258 kann weiter eine Vorabgewährung einer Frequenzlizenz für eine garantierte Betriebsfrequenz einem gegebenen Kern 210 zur Ausführung einer bestimmten Arbeitslast basierend auf einem konfigurierbaren TDP-Wert pro Kern bereitstellen, wie hierin beschrieben.
  • Zusätzlich kann Schnittstellen 250a bis 250n eine Verbindung zu verschiedenen chipexternen Bauelementen, wie etwa Peripherievorrichtungen, Massenspeicherung und so weiter, hergestellt werden. Obwohl er mit dieser speziellen Umsetzung bei der Ausführungsform der 2 gezeigt ist, ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Unter Bezugnahme auf 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie bei der Ausführungsform der 3 gezeigt ist, weist der Prozessor 300 mehrere Domänen auf. Insbesondere kann eine Kerndomäne 310 mehrere Kerne 3100 bis 310n beinhalten, eine Grafikdomäne 320 kann eine oder mehrere Grafik-Engines beinhalten, und weiter kann eine Systemagentendomäne 350 vorhanden sein. Bei einigen Ausführungsformen kann die Systemagentendomäne 350 mit einer unabhängigen Frequenz von der Kerndomäne ausgeführt werden und kann jederzeit eingeschaltet bleiben, um Leistungssteuerereignisse und Leistungsmanagement derart zu handhaben, dass die Domäne 310 und 320 gesteuert werden können, um dynamisch in Zustände mit hoher Leistung und niedriger Leistung einzutreten und diese zu verlassen. Jede der Domänen 310 und 320 kann bei unterschiedlicher Spannung und/oder Leistung arbeiten. Es wird angemerkt, dass der Schutzumfang, obwohl er nur mit drei Domänen gezeigt, der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist und zusätzliche Domänen bei anderen Ausführungsformen vorhanden sein können. Beispielsweise können mehrere Kerndomänen, die jeweils mindestens einen Kern beinhalten, vorhanden sein.
  • Im Allgemeinen kann jeder Kern 310 weiter Low-Level-Caches zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen aufweisen. Die verschiedenen Kerne können wiederum miteinander und mit einem gemeinsam genutzten Cache-Speicher, der aus mehreren Einheiten eines letzten Level-Cache (LLC) 3400 bis 340 n gebildet ist, gekoppelt sein. Bei verschiedenen Ausführungsformen kann der LLC 340 von den Kernen und der Grafik-Engine sowie verschiedenen Medienverarbeitungsschaltungen gemeinsam genutzt werden. Wie man sieht, koppelt somit ein Ring-Interconnect 330 die Kerne miteinander und stellt Interconnect zwischen den Kernen, der Grafikdomäne 320 und den Systemagentenschaltungen 350 bereit. Bei einer Ausführungsform kann das Interconnect 330 Teil des Kerndomäne sein. Bei anderen Ausführungsformen kann das Ring-Interconnect jedoch von seiner eigenen Domäne sein.
  • Wie man weiter sieht, kann der Systemagentendomäne 350 eine Anzeigesteuervorrichtung 352 beinhalten, die Steuerung einer assoziierten Anzeige und eine Schnittstelle zu dieser bereitstellen kann. Wie man weiter sieht, kann die Systemagentendomäne 350 eine Leistungssteuereinheit 355 beinhalten, die Logik zum Ausführen der hierin beschriebenen Leistungsmanagementtechniken beinhalten kann. Bei der gezeigten Ausführungsform beinhaltet die Leistungssteuereinheit 355 eine Lizenzgewährungsschaltung 359 zum Ausführen von Leistungslizenzgewährungen als Reaktion auf eine Anforderung einer nichtspekulativen Anweisungsausführung und von Vorabgewährungen von Frequenzlizenzen zur Arbeitslastausführung basierend auf TDP-Werten pro Kern, wie hierin beschrieben.
  • Wie man weiter in 3 sieht, kann der Prozessor 300 weiter eine integrierte Speichersteuervorrichtung (IMC) 370 beinhalten, die eine Schnittstelle zu einem Systemspeicher, wie etwa einem dynamischen Direktzugriffsspeicher (DRAM), bereitstellen kann. Mehrere Schnittstellen 3800 bis 380n können vorhanden sein, um eine Verbindung zwischen dem Prozessor und anderen Schaltungen zu ermöglichen. Zum Beispiel können bei einer Ausführungsform mindestens eine direkte Medienschnittstelle-Schnittstelle (DMI-Schnittstelle) sowie eine oder mehrere PCIe™ -Schnittstellen bereitgestellt werden. Noch weiter können zum Bereitstellen von Kommunikationen zwischen anderen Agenten, wie etwa zusätzlichen Prozessoren oder anderen Schaltungen, auch eine oder mehrere QPI-Schnittstellen bereitgestellt werden. Obwohl bei der Ausführungsform der 3 auf diesem hohen Niveau gezeigt, ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Unter Bezugnahme auf 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne beinhaltet, veranschaulicht. Der Prozessor 400 beinhaltet einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen handgehaltenen Prozessor, einen Anwendungsprozessor, einen Coprozessor, einen System-on-Chip (SoC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 400 beinhaltet bei einer Ausführungsform mindestens zwei Kerne - die Kerne 401 und 402, die asymmetrische Kerne oder symmetrische Kerne beinhalten können (die veranschaulichte Ausführungsform). Der Prozessor 400 kann jedoch eine beliebige Anzahl von Verarbeitungselementen, die symmetrisch oder asymmetrisch sein können, beinhalten.
  • Bei einer Ausführungsform betrifft ein Verarbeitungselement Hardware oder Logik zum Unterstützen eines Software-Threads. Beispiele für Hardware-Verarbeitungselemente beinhalten: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen Logikprozessor, einen Hardware-Thread, einen Kern und/oder ein beliebiges anderes Element, das dazu in der Lage ist, einen Zustand für einen Prozessor, wie etwa einen Ausführungszustand oder einen Architekturzustand, zu halten. Mit anderen Worten betrifft ein Verarbeitungselement bei einer Ausführungsform beliebige Hardware, die dazu in der Lage ist, unabhängig mit Code, wie etwa einem Software-Thread, einem Betriebssystem, einer Anwendung oder einem anderen Code assoziiert zu sein. Ein physischer Prozessor verweist typischerweise auf eine integrierte Schaltung, die potenziell eine beliebige Anzahl anderer Verarbeitungselemente, wie etwa Kerne oder Hardware-Threads, beinhaltet.
  • Ein Kern betrifft oft Logik, die sich auf einer integrierten Schaltung befindet, die geeignet ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand mit mindestens einigen dedizierten Ausführungsressourcen assoziiert ist. Im Gegensatz dazu betrifft ein Hardware-Thread typischerweise jede Logik, die auf einer integrierten Schaltung angeordnet und geeignet ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände den Zugriff auf Ausführungsressourcen gemeinsam nutzen. Wie ersichtlich ist, überlappt die Grenze zwischen der Nomenklatur eines Hardware-Thread und eines Kerns, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere einem Architekturzustand gewidmet sind. Dennoch werden ein Kern und ein Hardware-Thread von einem Betriebssystem häufig als individuelle Logikprozessoren angesehen, wobei das Betriebssystem dazu in der Lage ist, Operationen auf jedem Logikprozessor individuell zu planen.
  • Der physische Prozessor 400, wie in 4 veranschaulicht, beinhaltet zwei Kerne, die Kerne 401 und 402. Hier werden die Kerne 401 und 401 als symmetrische Kerne betrachtet, das heißt Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder der gleichen Logik. Bei einer anderen Ausführungsform beinhaltet der Kern 401 einen Außer-Reihenfolge-Prozessorkern, während der Kern 402 einen In-Reihenfolge-Prozessorkern beinhaltet. Die Kerne 401 und 402 können jedoch individuell aus einem beliebigen Kerntyp ausgewählt werden, wie etwa einem nativen Kern, einem softwareverwalteten Kern, einem Kern, der dazu angepasst ist, eine native Anweisungssatzarchitektur (ISA) auszuführen, einem Kern, der dazu angepasst ist, eine übersetzte ISA auszuführen, einem co-entworfenen Kern oder einem anderen bekannten Kern. Um die Erörterung weiter zu fördern, werden die in Kern 401 veranschaulichten Funktionseinheiten unten ausführlicher beschrieben, da die Einheiten in dem Kern 401 auf eine ähnliche Weise arbeiten.
  • Wie abgebildet, beinhaltet der Kern 401 zwei Hardware-Threads 401a und 401b, die auch als Hardware-Thread-Schlitze 401a und 401b bezeichnet werden können. Daher betrachten Softwareentitäten, wie etwa ein Betriebssystem, bei einer Ausführungsform potenziell den Prozessor 400 als vier separate Prozessoren, das heißt vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Software-Threads gleichzeitig auszuführen. Wie oben erwähnt, ist ein erster Thread mit Architekturzustandsregistern 401a assoziiert, ein zweiter Thread ist mit Architekturzustandsregistern 401b assoziiert, ein dritter Thread kann mit Architekturzustandsregistern 401b assoziiert sein und ein vierter Thread kann mit Architekturzustandsregistern 402b assoziiert sein. Hier kann jedes der Architekturzustandsregister (401a, 401b, 401b und 402b), wie oben beschrieben, als Verarbeitungselemente, Thread-Schlitze oder Thread-Einheiten bezeichnet werden. Wie veranschaulicht, werden Architekturzustandsregister 401a in Architekturzustandsregistern 401b repliziert, so dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 401a und den logischen Prozessor 401b gespeichert werden können. In dem Kern 401 können auch andere kleinere Ressourcen, wie Anweisungszeiger und Umbenennungslogik im Zuordnungs- und Umbenennungsblock 430 für die Threads 401a und 401b repliziert werden. Einige Ressourcen, wie etwa Neuordnungspuffer in der Neuordnungs-/Rückzugseinheit 435, ILTB 420, Lade-/Speicherpuffer und Warteschlangen, können durch Partitionieren gemeinsam genutzt werden. Andere Ressourcen, wie etwa universelle interne Register, Seitentabellenbasisregister, Low-Level-Daten-Cache und Daten-TLB 415, Ausführungseinheit(en) 440 und Teile der Außer-Reihenfolge-Einheit 435 werden potenziell vollständig gemeinsam genutzt.
  • Der Prozessor 400 beinhaltet häufig andere Ressourcen, die vollständig gemeinsam genutzt, durch Partitionieren gemeinsam genutzt oder durch/für Verarbeitungselemente dediziert werden können. In 4 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors veranschaulicht. Es ist zu beachten, dass ein Prozessor jede dieser Funktionseinheiten beinhalten oder weglassen kann, sowie andere nicht abgebildete bekannte Funktionseinheiten, Logik oder Firmware beinhalten kann. Wie veranschaulicht, beinhaltet der Kern 401 einen vereinfachten, repräsentativen Out-Of-Order-Prozessorkern (OOO-Prozessorkern). Ein In-Order-Prozessor kann jedoch bei unterschiedlichen Ausführungsformen eingesetzt werden. Der OOO-Kern beinhaltet einen Verzweigungszielpuffer 420 zum Vorhersagen von Verzweigungen, die ausgeführt/genommen werden sollen, und einen Anweisungsübersetzungspuffer (I-TLB) 420 zum Speichern von Adressübersetzungseinträgen für Anweisungen.
  • Der Kern 401 beinhaltet weiter ein Decodierungsmodul 425, das mit der Abrufeinheit 420 gekoppelt ist, um abgerufene Elemente zu decodieren. Abruflogik beinhaltet bei einer Ausführungsform individuelle Sequenzierer, die jeweils mit Thread-Schlitzen 401a, 401b assoziiert sind. Üblicherweise ist der Kern 401 mit einer ersten ISA assoziiert, die Anweisungen, die auf dem Prozessor 400 ausführbar sind, definiert/spezifiziert. Oft beinhalten Maschinencodeanweisungen, die Teil der ersten ISA sind, einen Abschnitt der Anweisung (als ein Opcode bezeichnet), der auf eine auszuführende Anweisung oder verweist/diese spezifiziert. Die Decodierungslogik 425 beinhaltet Schaltungen, die diese Anweisungen anhand ihrer Opcodes erkennt und die decodierten Anweisungen in der Pipeline zur Verarbeitung, wie von der ersten ISA definiert, weitergibt. Zum Beispiel beinhalten die Decoder 425 bei einer Ausführungsform Logik, die dazu ausgelegt oder angepasst ist, spezifische Anweisungen, wie etwa transaktionale Anweisungen, zu erkennen. Als ein Ergebnis des Erkennens durch die Decoder 425 ergreift die Architektur oder der Kern 401 spezifische, vordefinierte Handlungen, um Aufgaben auszuführen, die mit der geeigneten Anweisung assoziiert sind. Es ist wichtig zu beachten, dass jede der hierin beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf eine einzelne oder mehrere Anweisungen ausgeführt werden können; einige davon können neue oder alte Anweisungen sein.
  • Bei einem Beispiel beinhaltet der Zuordnungs- und Umbenennerblock 430 einen Zuordner zum Reservieren von Ressourcen, wie Registerdateien, um Anweisungsverarbeitungsergebnisse zu speichern. Die Threads 401a und 401b sind jedoch potenziell zur Ausführung außerhalb der Reihenfolge in der Lage, wobei der Zuordnungs- und Umbenennerblock 430 auch andere Ressourcen reserviert, wie etwa Umordnungspuffer, um Anweisungsergebnisse zu verfolgen. Die Einheit 430 kann auch einen Registerumbenenner zum Umbenennen von Programm-/Anweisungsreferenzregistern zu anderen Registern innerhalb des Prozessors 400 beinhalten. Die Neuordnungs-/Rückzugseinheit 435 beinhaltet Bauelemente, wie etwa die oben erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um die Ausführung außerhalb der Reihenfolge und den späteren In-Reihenfolge-Rückzug von Anweisungen, die außerhalb der Reihenfolge ausgeführt werden, zu unterstützen.
  • Der Scheduler- und Ausführungseinheit(en) -Block 440 beinhalten bei einer Ausführungsform eine Schedulereinheit zum Planen von Anweisungen/Operationen auf Ausführungseinheiten. Zum Beispiel wird eine Gleitkommaanweisung auf einem Port einer Ausführungseinheit, die eine verfügbare Gleitkomma-Ausführungseinheit aufweist, geplant. Registerdateien, die mit den Ausführungseinheiten assoziiert sind, sind ebenfalls enthalten, um Informationsanweisungs-Verarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten beinhalten eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Lower-Level-Daten-Cache und der Datenübersetzungspuffer (D-TLB) 450 sind mit der/den Ausführungseinheit(en) 440 gekoppelt. Der Daten-Cache soll Elemente, die kürzlich verwendet wurden/auf welchen kürzlich Vorgänge vorgenommen wurden, wie Datenoperanden, die potenziell in Speicherkohärenzzuständen gehalten werden, speichern. Der D-TLB soll neueste virtuell/linear zu physisch Adressübersetzungen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur beinhalten, um den physischen Speicher in eine Vielzahl virtueller Seiten zu teilen.
  • Hier nutzen die Kerne 401 und 402 Zugriff auf den Cache 410 höherer Ebene oder weitere, der kürzlich abgerufene Elemente zwischenspeichern soll, gemeinsam. Es wird angemerkt, dass eine höhere Ebene oder eine Ebene weiter außen Cache-Ebenen betrifft, die von der (den) Ausführungseinheit(en) steigen oder weiter entfernt sind. Bei einer Ausführungsform ist der Cache 410 höherer Ebene ein Daten-Cache - letzter Ebene in der Speicherhierarchie auf dem Prozessor 400 - wie ein Daten-Cache zweiter oder dritter Ebene. Der High-Level-Cache 410 ist jedoch nicht derart beschränkt, da er mit einem Anweisungs-Cache assoziiert sein kann oder einen Anweisungs-Cache enthält. Ein Trace-Cache - ein Typ von Anweisungs-Cache - kann stattdessen nach dem Decoder 425 gekoppelt sein, um kürzlich decodierte Traces zu speichern.
  • Bei der abgebildeten Konfiguration beinhaltet der Prozessor 400 auch ein Busschnittstellenmodul 405 und eine Leistungssteuervorrichtung 460, die ein Leistungsmanagement gemäß einer Ausführungsform der vorliegenden Erfindung ausführen kann. In diesem Szenario soll die Busschnittstelle 405 mit Vorrichtungen außerhalb des Prozessors 400 kommunizieren, wie etwa mit Systemspeicher und anderen Bauelementen.
  • Eine Speichersteuervorrichtung 470 kann mit anderen Vorrichtungen, wie etwa einem oder vielen Speichern, eine Schnittstelle bilden. Bei einem Beispiel beinhaltet die Busschnittstelle 405 ein Ring-Interconnect mit einer Speichersteuervorrichtung zu Schnittstellenherstellung mit einem Speicher und einer Grafiksteuervorrichtung zur Schnittstellenherstellung mit einem Grafikprozessor. In einer SoC-Umgebung können sogar noch mehr Vorrichtungen, wie etwa eine Netzwerkschnittstelle, Coprozessoren, Speicher, Grafikprozessor und beliebige andere bekannte Computervorrichtungen/Schnittstellen, auf einem einzigen Die oder einer integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Leistungsverbrauch bereitzustellen.
  • Nun wird unter Bezugnahme auf 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt, kann der Prozessorkern 500 ein mehrstufiger Pipeline-Außer-Reihenfolge-Prozessor sein. Der Kern 500 kann bei verschiedenen Spannungen basierend auf einer empfangenen Betriebsspannung arbeiten, die von einem integrierten Spannungsregler oder externen Spannungsregler empfangen werden kann.
  • Wie in 5 zu sehen ist, beinhaltet der Kern 500 Frontendeinheiten 510, die verwendet werden können, um auszuführende Anweisungen abzurufen und sie für eine spätere Verwendung in der Prozessor-Pipeline vorzubereiten. Zum Beispiel können die Frontendeinheiten 510 eine Abrufeinheit 501, einen Anweisungs-Cache 503 und einen Anweisungsdecoder 505 aufweisen. Bei einigen Umsetzungen können die Frontendeinheiten 510 weiter einen Trace-Cache gemeinsam mit einem Mikrocodespeicher sowie einem Mikrooperationsspeicher beinhalten. Die Abrufeinheit 501 kann Makrobefehle zum Beispiel aus dem Speicher oder Anweisungs-Cache 503 abrufen und sie dem Anweisungsdecoder 505 zuführen, um sie in Primitive, das heißt Mikrooperationen zur Ausführung durch den Prozessor zu decodieren.
  • Zwischen Frontendeinheiten 510 und Ausführungseinheiten 520 ist eine Out-Of-Order-Engine (OOO-Engine) 515 gekoppelt, die verwendet werden kann, um die Mikroanweisungen zu empfangen und sie zur Ausführung vorzubereiten. Genauer gesagt kann die OOO-Engine 515 verschiedene Puffer beinhalten, um den Mikroanweisungsfluss neu zu ordnen und verschiedene Ressourcen zuzuordnen, die zur Ausführung benötigt werden, sowie um Umbenennung logischer Register auf Speicherorte innerhalb verschiedener Registerdateien, wie der Registerdatei 530 und der erweiterter Registerdatei 535, bereitzustellen. Die Registerdatei 530 kann separate Registerdateien für Ganzzahl- und Gleitkommaoperationen beinhalten. Die erweiterte Registerdatei 535 kann Speicher für Einheiten in Vektorgröße, zum Beispiel 256 oder 512 Bits pro Register, bereitstellen. Zu Konfigurations-, Steuerzwecken und für zusätzliche Operationen kann auch ein Satz maschinenspezifischer Register (MSRs) 538 vorhanden sein und für verschiedene 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 zum Beispiel verschiedener Ganzzahl-, Gleitkomma- und Einzelanweisungs-Mehrfachdaten-Logikeinheiten(SIMD-Logikeinheiten) unter anderer spezialisierter Hardware. Derartige Ausführungseinheiten können zum Beispiel unter anderen derartigen Ausführungseinheiten eine oder mehrere arithmetische Logikeinheiten (ALUs) 522 und eine oder mehrere Vektorausführungseinheiten 524 beinhalten.
  • Ergebnisse von den Ausführungseinheiten können einer Rückzugslogik, nämlich einem Neuordnungspuffer (ROB) 540, bereitgestellt werden. Genauer gesagt kann der ROB 540 verschiedene Arrays und Logik zum Empfangen von Informationen beinhalten, die mit Anweisungen, die ausgeführt werden, assoziiert sind. Diese Informationen werden dann von dem ROB 540 untersucht, um zu bestimmen, ob die Anweisungen gültig zurückgenommen werden können und Ergebnisdaten im Zusammenhang mit dem Architekturzustand des Prozessors übergeben werden, oder ob eine oder mehrere Ausnahmen aufgetreten sind, die eine ordnungsgemäße Rücknahme der Anweisungen verhindern. Natürlich kann der ROB 540 andere Operationen, die mit dem Rückziehen assoziiert sind, handhaben.
  • Wie in 5 gezeigt, ist der ROB 540 mit einem Cache 550 gekoppelt, der bei einer Ausführungsform ein Low-Level-Cache (zum Beispiel ein LI-Cache) sein kann, obwohl der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Außerdem können die Ausführungseinheiten 520 direkt mit dem Cache 550 gekoppelt sein. Von dem Cache 550 kann eine Datenkommunikation mit Caches höherer Ebenen, Systemspeicher usw. stattfinden. Obwohl er mit diesem hohen Niveau in der Ausführungsform aus 5 gezeigt, versteht sich, dass der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Obwohl sich die Umsetzung der 5 zum Beispiel auf eine Außer-Reihenfolge-Maschine bezieht, wie etwa auf eine Intel® x86-Anweisungssatz-Architektur (ISA), ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt. Andere Ausführungsformen können daher in einem In-Reihenfolge Prozessor, einem RISC-Prozessor (Reduced Instruction Set Computing - RISC), wie etwa einem ARM-basierten Prozessor, oder einem Prozessor eines anderen Typs von ISA umgesetzt sein, der Anweisungen und Operationen einer unterschiedlichen ISA über eine Emulations-Engine und assoziierte Logikschaltungen emulieren kann.
  • Nun wird unter Bezugnahme aufFIG.6 ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform gezeigt. Bei der Ausführungsform der 6 kann der Kern 600 ein Niedrigleistungskern mit einer unterschiedlichen Mikroarchitektur, wie etwa ein Intel®, Atom™-basierter-Prozessor sein, der eine relativ begrenzte Pipeline-Tiefe, die dazu ausgelegt ist, den Leistungsverbrauch zu reduzieren, aufweist. Wie man sieht, weist der Kern 600 einen Anweisungs-Cache 610 auf, der gekoppelt ist, um Anweisungen zu einem Anweisungsdecoder 615 bereitzustellen. Ein Verzweigungsvorhersager 605 kann mit dem Anweisungs-Cache 610 gekoppelt sein. Es wird angemerkt, dass der Anweisungs-Cache 610 weiter mit einer anderen Ebene eines Cache-Speichers gekoppelt sein kann, wie etwa mit einem L2-Cache (der der Einfachheit halber in der Veranschaulichung in 6 nicht gezeigt ist). Im Gegenzug stellt der Anweisungsdecoder 615 decodierte Anweisungen zu einer Ausgabewarteschlange 620 zur Speicherung und Lieferung zu einer gegebenen Ausführungspipeline bereit. Ein Microcode-ROM 618 ist mit dem Anweisungsdecoder 615 gekoppelt.
  • Eine Gleitkomma-Pipeline 630 beinhaltet eine Gleitkomma-Registerdatei 632, die eine Vielzahl von Architekturregistern eines gegebenen Bits mit beispielsweise 128, 256 oder 512 Bits beinhalten kann. Die Pipeline 630 beinhaltet einen Gleitkomma-Scheduler 634 zum Planen von Anweisungen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline. Bei der gezeigten Ausführungsform beinhalten solche Ausführungseinheiten eine ALU 635, eine Shuffle-Einheit 636 und einen Gleitkomma-Addierer 638. Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, können wiederum Puffern und/oder Registern der Registerdatei 632 bereitgestellt werden. Selbstverständlich können, während sie mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt sind, zusätzliche oder unterschiedliche Gleitkomma-Ausführungseinheiten bei einer anderen Ausführungsform vorhanden sein.
  • Es kann auch eine Ganzzahl-Pipeline 640 vorgesehen sein. Bei der gezeigten Ausführungsform beinhaltet die Pipeline 640 eine Ganzzahlregisterdatei 642, die eine Vielzahl von Architekturregistern eines gegebenen Bits mit beispielsweise 128 oder 256 Bits beinhalten kann. Die Pipeline 640 beinhaltet einen Ganzzahl-Scheduler 644 zum Planen von Anweisungen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline. Bei der gezeigten Ausführungsform beinhalten derartige Ausführungseinheiten eine ALU 645, eine Verschiebereinheit 646 und eine Sprungausführungseinheit 648. Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, können wiederum Puffern und/oder Registern der Registerdatei 642 bereitgestellt werden. Selbstverständlich können, während sie mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt sind, zusätzliche oder unterschiedliche Ganzzahlausführungseinheiten bei einer anderen Ausführungsform vorhanden sein.
  • Ein Speicherausführungs-Scheduler 650 kann Speicheroperationen zur Ausführung in einer Adresserzeugungseinheit 652, die auch mit einem TLB 654 gekoppelt ist, planen. Wie man sieht, können diese Strukturen mit einem Daten-Cache 660 koppeln, der ein L0- und/oder L1-Daten-Cache sein kann, der wiederum mit zusätzlichen Ebenen einer Cache-Speicherhierarchie, einschließlich eines L2-Cache-Speichers, koppelt.
  • Um Unterstützung für eine Außerreihenfolgeausführung bereitzustellen, kann ein Zuordner/Umbenenner 670 zusätzlich zu einem Umordnungspuffer 680 bereitgestellt sein, der 2 konfiguriert ist, Anweisungen, die außerhalb der Reihenfolge ausgeführt werden, zum Rückziehen in der Reihenfolge umzuordnen. Obwohl mit dieser speziellen Pipeline-Architektur in der Veranschaulichung der 6 gezeigt, versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Es wird angemerkt, dass in einem Prozessor, der asymmetrische Kerne aufweist, wie etwa gemäß den Mikroarchitekturen der 5 und 6, Arbeitslasten aus Leistungsmanagementgründen dynamisch zwischen den Kernen ausgetauscht werden können, da diese Kerne, obwohl sie unterschiedliche Pipeline-Designs und Tiefen aufweisen, von der gleichen oder verwandten ISA sein können. Ein derartiges dynamisches Core-Austauschen kann auf eine Art, die für eine Benutzeranwendung (und möglicherweise auch Kernel) transparent ist, ausgeführt werden.
  • Unter Bezugnahme auf 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer anderen Ausführungsform gezeigt. Wie in 7 veranschaulicht, kann ein Kern 700 eine mehrstufige In-Reihenfolge-Pipeline zum Ausführen bei sehr niedrigen Leistungsverbrauchsniveaus beinhalten. Als ein derartiges Beispiel kann der Prozessor 700 eine Mikroarchitektur gemäß einem ARM-Cortex-A53-Design aufweisen, das von ARM Holdings, LTD., Sunnyvale, Ca, erhältlich ist. Bei einer Umsetzung kann eine 8-stufige Pipeline bereitgestellt sein, die dazu konfiguriert ist, sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Der Kern 700 beinhaltet eine Abrufeinheit 710, die dazu konfiguriert ist, Anweisungen abzurufen und sie einer Decodiereinheit 715 bereitzustellen, die die Anweisungen, zum Beispiel Makroanweisungen einer gegebenen ISA, wie etwa einer ARMv8-ISA, decodieren kann. Es wird weiter angemerkt, dass eine Warteschlange 730 mit der Decodiereinheit 715 koppeln kann, um decodierte Anweisungen zu speichern. Decodierte Anweisungen werden einer Ausgabelogik 725 bereitgestellt, wo die decodierten Anweisungen zu einer gegebenen von mehreren Ausführungseinheiten ausgegeben werden können.
  • Unter weiterer Bezugnahme auf 7 kann die Ausgabelogik 725 Anweisungen zu einer von mehreren Ausführungseinheiten ausgeben. Bei der gezeigten Ausführungsform beinhalten diese Ausführungseinheiten eine Ganzzahleinheit 735, eine Multiplikationseinheit 740, eine Gleitkomma-/Vektoreinheit 750, eine Doppelausgabeeinheit 760 und eine Lade-/Speichereinheit 770. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können zu einer Rückschreibeinheit 780 bereitgestellt werden. Es versteht sich, dass, obwohl zur Vereinfachung der Veranschaulichung eine einzige Rückschreibeinheit gezeigt ist, bei einigen Umsetzungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten assoziiert sein können. Außerdem versteht es sich, dass, während jede der in 7 gezeigten Einheiten und Logik auf einer hohen Ebene repräsentiert sind, eine bestimmte Umsetzung mehr oder unterschiedliche Strukturen beinhalten kann. Ein Prozessor, der unter Verwenden eines oder mehrerer Kerne mit einer Pipeline wie in 7 ausgebildet ist, kann in vielen unterschiedlichen Endprodukten, die sich von Mobilgeräten zu Serversystemen erstrecken, umgesetzt werden.
  • Unter Bezugnahme auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer noch weiteren Ausführungsform gezeigt. Wie in 8 veranschaulicht, kann ein Kern 800 eine mehrstufige Mehrfach-Ausgabe-Außer-Reihenfolge-Pipeline zum Ausführen bei sehr hohen Leistungsniveaus (die bei höheren Leistungsverbrauchsniveaus als der Kern 700 der 7 auftreten können) beinhalten. Als ein derartiges Beispiel kann der Prozessor 800 eine Mikroarchitektur gemäß einem ARM-Cortex-A57-Design aufweisen. Bei einer Umsetzung kann eine 15-Stufen-Pipeline (oder mehrstufige Pipeline) bereitgestellt werden, die dazu konfiguriert ist, sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Zusätzlich kann die Pipeline eine Operation mit 3 Breite (oder mehr) und 3 Ausgabe (oder mehr) bereitstellen. Der Kern 800 beinhaltet eine Abrufeinheit 810, die dazu konfiguriert ist, Anweisungen abzurufen und sie einem Decoder/Umbenenner/Dispatcher 815 bereitzustellen, der die Anweisungen decodieren kann, zum Beispiel Makrobefehle einer ARMv8-Anweisungssatzarchitektur, Registerreferenzen innerhalb der Anweisungen umbenennen und die Anweisungen (letztendlich) an eine ausgewählte Ausführungseinheit versenden kann. Decodierte Anweisungen können in einer Warteschlange 825 gespeichert werden. Es wird angemerkt, dass, obwohl eine einzige Warteschlangenstruktur zur Vereinfachung der Veranschaulichung in 8 gezeigt ist, verstanden wird, dass separate Warteschlangen für jeden der mehreren unterschiedlichen Typen von Ausführungseinheiten bereitgestellt werden können.
  • In 8 ist auch eine Ausgabelogik 830 gezeigt, von der decodierte Anweisungen, die in der Warteschlange 825 gespeichert sind, an eine ausgewählte Ausführungseinheit ausgegeben werden können. Die Ausgabelogik 830 kann bei einer bestimmten Ausführungsform auch mit einer separaten Ausgabelogik für jeden der mehreren unterschiedlichen Typen von Ausführungseinheiten, mit denen die Ausgabelogik 830 gekoppelt ist, umgesetzt werden.
  • Decodierte Anweisungen können an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden. Bei der gezeigten Ausführungsform beinhalten diese Ausführungseinheiten eine oder mehrere Ganzzahleinheiten 835, eine Multiplikationseinheit 840, eine Gleitkomma-/Vektoreinheit 850, eine Verzweigungseinheit 860 und eine Lade-/Speichereinheit 870. Bei einer Ausführungsform kann die Gleitkomma-/Vektoreinheit 850 dazu konfiguriert sein, SIMD oder Vektordaten von 128 oder 256 Bit zu handhaben. Des Weiteren kann die Gleitkomma-/Vektor-Ausführungseinheit 850 Gleitkommaoperationen mit doppelter Genauigkeit IEEE-754 ausführen. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können zu einer Rückschreibeinheit 880 bereitgestellt werden. Es wird angemerkt, dass bei einigen Umsetzungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten assoziiert sein können. Außerdem versteht es sich, dass, während jede der in 8 gezeigten Einheiten und Logik auf einer hohen Ebene repräsentiert ist, eine bestimmte Umsetzung mehr oder unterschiedliche Strukturen beinhalten kann.
  • Es wird angemerkt, dass in einem Prozessor mit asymmetrischen Kernen, wie etwa gemäß den Mikroarchitekturen der 7 und 8, Arbeitslasten aus Leistungsmanagementgründen dynamisch ausgetauscht werden können, da diese Kerne, obwohl sie unterschiedliche Pipeline-Designs und Tiefen aufweisen, von der gleichen oder verwandten ISA sein können. Ein derartiges dynamisches Core-Austauschen kann auf eine Art, die für eine Benutzeranwendung (und möglicherweise auch Kernel) transparent ist, ausgeführt werden.
  • Ein Prozessor, der unter Verwenden eines oder mehrerer Kerne mit Pipelines wie in einer oder mehreren der 5 bis 8, konzipiert ist, kann in vielen unterschiedlichen Endprodukten, die sich von Mobilgeräten zu Serversystemen erstrecken, umgesetzt werden. Nun wird unter Bezugnahme auf 9 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Bei der Ausführungsform der 9 kann der Prozessor 900 eine SoC sein, das mehrere Domänen beinhaltet, von denen jede gesteuert werden kann, um bei einer unabhängigen Betriebsspannung und Betriebsfrequenz zu arbeiten. Als ein spezifisches veranschaulichendes Beispiel kann der Prozessor 900 ein Intel®-Architecture-Core™-based-Prozessor sein, wie etwa ein i3, i5, i7, oder ein anderer derartiger Prozessor, der von der Intel Corporation erhältlich ist. Jedoch können andere Prozessoren mit niedriger Leistung, wie etwa von Advanced Micro Devices, Inc. (AMD) von Sunnyvale, Ca, 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 ihren Lizenznehmern bezogen werden, oder Adopter können stattdessen bei anderen Ausführungsformen vorhanden sein, wie etwa einem A7-Prozessor von Apple, einem Snapdragon-Prozessor von Qualcomm oder OMAP-Prozessor von Texas Instruments. Ein derartiges SoC kann in einem Niedrigleistungssystem, wie etwa einem Smartphone, Tablet-Computer, Phablet-Computer, Ultrabook™-Computer oder einer anderen tragbaren Rechenvorrichtung oder vernetzten Vorrichtung verwendet werden.
  • Bei der in 9 gezeigten High-Level-Ansicht beinhaltet der Prozessor 900 eine Vielzahl von Kerneinheiten 9100 bis 910n. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cache-Speicher und andere Schaltungen beinhalten. Jede Kerneinheit 910 kann einen oder mehrere Anweisungssätze (zum Beispiel einen x86-Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); einen MIPS-Anweisungssatz; einen ARM-Anweisungssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) oder einen anderen Anweisungssatz oder Kombinationen davon unterstützen. Es wird angemerkt, dass einige der Kerneinheiten heterogene Ressourcen (zum Beispiel mit einem unterschiedlichen Design) sein können. Außerdem kann jeder solche Kern mit einem Cache-Speicher (nicht gezeigt) gekoppelt sein, der bei einer Ausführungsform ein Cache-Speicher mit gemeinsam genutzter Ebene (L2 sein kann. Eine nichtflüchtige Speicherung 930 kann verwendet werden, um verschiedene Programme und andere Daten zu speichern. Diese Speicherung kann zum Beispiel verwendet werden, um mindestens Teile von Mikrocode, Boot-Informationen, wie etwa ein BIOS, andere Systemsoftware oder so weiter, zu speichern.
  • Jede Kerneinheit 910 kann auch eine Schnittstelle, wie etwa eine Busschnittstelleneinheit, beinhalten, um eine Verbindung mit einer zusätzlichen Schaltungsanordnung des Prozessors zu ermöglichen. Bei einer Ausführungsform ist jede Kerneinheit 910 mit einer kohärenten Struktur gekoppelt, die als ein kohärentes On-Die-Primär-Cache-Interconnect fungieren kann, das wiederum mit einer Speichersteuervorrichtung 935 gekoppelt ist. Im Gegenzug steuert die Speichersteuervorrichtung 935 Kommunikationen mit einem Speicher, wie etwa einem DRAM (der Einfachheit halber in der Veranschaulichung in 9 nicht gezeigt).
  • Zusätzlich zu Kerneinheiten sind zusätzliche Verarbeitungs-Engines innerhalb des Prozessors vorhanden, einschließlich mindestens einer Grafikeinheit 920, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) zum Ausführen einer Grafikverarbeitung sowie möglicherweise zum Ausführen von Allzweckoperationen auf dem Grafikprozessor (sogenannte GPGPU-Operation) beinhalten kann. Zusätzlich kann mindestens ein Bildsignalprozessor 925 vorhanden sein. Der Signalprozessor 925 kann dazu konfiguriert sein, eingehende Bilddaten, die von einer oder mehreren Erfassungsvorrichtungen empfangen werden, entweder innerhalb des SoC oder außerhalb des Chips zu verarbeiten.
  • Andere Beschleuniger können auch vorhanden sein. In der Veranschaulichung der 9 kann ein Videocodierer 950 Codierungsoperationen, einschließlich Codieren und Decodieren für Videoinformationen, zum Beispiel Bereitstellen von Hardwarebeschleunigungsunterstützung für hochauflösenden Videoinhalt, ausführen. Eine Anzeigesteuervorrichtung 955 kann weiter bereitgestellt sein, um Anzeigevorgänge, einschließlich Bereitstellen von Unterstützung für interne und externe Anzeigen eines Systems, zu beschleunigen. Zusätzlich kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsoperationen, wie etwa sichere Boot-Operationen, verschiedene Kryptographieoperationen und so weiter, auszuführen.
  • Jede der Einheiten kann ihren Leistungsverbrauch über einen Leistungsmanager 940 steuern, der Steuerlogik zum Ausführen der verschiedenen hierin beschriebenen Leistungsmanagementtechniken beinhalten kann.
  • Bei einigen Ausführungsformen kann das SoC 900 weiter eine nichtkohärente Struktur beinhalten, die mit der kohärenten Struktur gekoppelt ist, mit der verschiedene Peripherievorrichtungen koppeln können. Eine oder mehrere Schnittstellen 960a bis 960d ermöglichen Kommunikation mit einer oder mehreren chipexternen Vorrichtungen. Derartige Kommunikationen können unter anderen Arten von Kommunikationsprotokollen über eine Vielfalt von Kommunikationsprotokollen erfolgen, wie etwa PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI. Obwohl bei der Ausführungsform der 9 auf diesem hohen Niveau gezeigt, ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Nun wird unter Bezugnahme auf 10 ein Blockdiagramm eines repräsentativen SoC gezeigt. Bei der gezeigten Ausführungsform kann das SoC 1000 ein Mehrkern-SoC sein, das für einen Niedrigleistungsbetrieb konfiguriert ist, der zur Integration in ein Smartphone oder eine andere Niedrigleistungsvorrichtung, wie etwa einen Tablet-Computer oder eine andere tragbare Rechenvorrichtung, optimiert werden soll. Als ein Beispiel kann das SoC 1000 unter Verwenden asymmetrischer oder unterschiedlicher Typen von Kernen umgesetzt werden, wie etwa Kombinationen von Kernen mit höherer Leistung und/oder niedriger Leistung, zum Beispiel Außer-Reihenfolge-Kernen und In-Reihenfolge-Kernen. Bei unterschiedlichen Ausführungsformen können diese Kerne auf einem Intel® Architecture™-Kerndesign oder einem ARM-Architekturdesign basieren. Bei noch anderen Ausführungsformen kann eine Mischung von Intel®- und ARM-Kernen in einem gegebenen SoC umgesetzt werden.
  • Wie in 10 zu sehen ist, weist das SoC 1000 eine erste Kerndomäne 1010 mit mehreren ersten Kernen 10120 bis 10123 auf Bei einem Beispiel können diese Kerne Niedrigleistungskerne sein, wie etwa In-Reihenfolge-Kerne. Bei einer Ausführungsform können diese ersten Kerne als ARM-Cortex A53-Kerne umgesetzt sein. Diese Kerne koppeln wiederum mit einem Cache-Speicher 1015 der Kerndomäne 1010. Außerdem weist das SoC 1000 eine zweite Kerndomäne 1020 auf. In der Darstellung der 10 weist die zweite Kerndomäne 1020 mehrere zweite Kerne 10220 bis 10223 auf. Bei einem Beispiel können diese Kerne Kerne mit höherem Leistungsverbrauch als die ersten Kerne 1012 sein. Bei einer Ausführungsform können die zweiten Kerne Außer-Reihenfolge-Kerne sein, die als ARM-Cortex-Kerne A57 umgesetzt sein können. Diese Kerne koppeln wiederum mit einem Cache-Speicher 1025 der Kerndomäne 1020. Es wird angemerkt, dass man, obwohl das in 10 gezeigte Beispiel 4 Kerne in jeder Domäne beinhaltet, versteht, dass bei anderen Beispielen mehr oder weniger Kerne in einer gegebenen Domäne vorhanden sein können.
  • Unter weiterer Bezugnahme auf 10 ist auch eine Grafikdomäne 1030 bereitgestellt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) beinhalten kann, die dazu ausgelegt sind, Grafikarbeitslasten die zum Beispiel von einem oder mehreren Kernen der Kerndomänen 1010 und 1020 bereitgestellt werden, unabhängig auszuführen. Als ein Beispiel kann die GPU-DOMANE 1030 verwendet werden, um eine Anzeigeunterstützung für eine Vielfalt von Bildschirmgrößen zusätzlich zu dem Bereitstellen von Grafik- und Anzeige-Render-Operationen bereitzustellen.
  • Wie man sieht, koppeln die verschiedenen Domänen mit einem kohärenten Interconnect 1040, das bei einer Ausführungsform eine kohärente Interconnect-Struktur sein kann, die wiederum mit einer integrierten Speichersteuervorrichtung 1050 koppelt. Das kohärente Interconnect 1040 kann bei einigen Beispielen einen gemeinsam genutzten Cache-Speicher, wie etwa einen L3-Cache, beinhalten. Bei einer Ausführungsform kann die Speichersteuervorrichtung 1050 eine Direktspeichersteuervorrichtung sein, um mehrere Kommunikationskanäle mit einem chip externen Speicher, wie etwa mehrere Kanäle eines DRAM (der Einfachheit halber in der Veranschaulichung in 10 nicht gezeigt), bereitzustellen.
  • Bei unterschiedlichen Beispielen kann die Anzahl der Kerndomänen variieren. Zum Beispiel kann für ein SoC mit niedriger Leistung, das zur Integration in eine mobile Rechenvorrichtung geeignet ist, eine begrenzte Anzahl von Kerndomänen, wie in 10 gezeigt, vorhanden sein. Noch weiter kann in derartigen Niedrigleistungs-SoCs die Kerndomäne 1020 einschließlich Kernen höherer Leistung weniger solche Kerne aufweisen. Bei einer Umsetzung können zum Beispiel zwei Kerne 1022 bereitgestellt sein, um einen Betrieb bei reduzierten Leistungsverbrauchsniveaus zu ermöglichen. Zusätzlich dazu können die unterschiedlichen Kerndomänen auch mit einer Unterbrechungssteuervorrichtung gekoppelt sein, um ein dynamisches Austauschen von Arbeitslasten zwischen den unterschiedlichen Domänen zu ermöglichen.
  • Bei noch anderen Ausführungsformen kann eine größere Anzahl von Kerndomänen sowie zusätzliche optionale IP-Logik vorhanden sein, indem ein SoC zur Einbindung in andere Rechenvorrichtungen, wie etwa Desktops, Server, Hochleistungsrechensysteme, Basisstationen, auf höhere Leistungsfähigkeitsniveaus (und Leistungsniveaus) skaliert werden kann. Als ein solches Beispiel können 4 Kerndomänen bereitgestellt werden, die jeweils eine gegebene Anzahl von Außer-Reihenfolge-Kernen aufweisen. Noch weiter können zusätzlich zu einer optionalen GPU-Unterstützung (die als ein Beispiel die Form einer GPGPU annehmen kann) auch ein oder mehrere Beschleuniger zum Bereitstellen optimierter Hardwareunterstützung für besondere Funktionen (zum Beispiel Web-Service, Netzwerkverarbeitung, Umschalten oder so fort) bereitgestellt werden. Außerdem kann eine Eingabe/Ausgabe-Schnittstelle vorhanden sein, um derartige Beschleuniger mit chipexternen Bauelementen zu koppeln.
  • Nun wird unter Bezugnahme auf 11 ein Blockdiagramm eines anderen beispielhaften SoC gezeigt. Bei der Ausführungsform der 11 kann das SoC 1100 verschiedene Schaltungen beinhalten, um eine hohe Leistungsfähigkeit für Multimedia-Anwendungen, Kommunikationen und andere Funktionen zu ermöglichen. Daher eignet sich das SoC 1100 zur Einbindung in eine breite Vielfalt tragbarer und anderer Vorrichtungen, wie etwa Smartphones, Tablet-Computer, Smart-TVs und so weiter. Bei dem gezeigten Beispiel weist das SoC 1100 eine Zentralprozessoreinheit-Domäne (CPU-Domäne) 1110 auf. Bei 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 Quad-Core-Prozessor mit 4 Multithread-Kernen sein. Derartige Prozessoren können homogene oder heterogene Prozessoren sein, zum Beispiel eine Mischung aus Niedrigleistungs- und Hochleistungsprozessorkernen.
  • Im Gegenzug wird eine GPU-Domäne 1120 bereitgestellt, um eine fortschrittliche Grafikverarbeitung in einer oder mehreren GPUs auszuführen, um Grafik- und Rechen-APIs zu handhaben. Eine DSP-Einheit 1130 kann einen oder mehrere Niedrigleistungs-DSPs zum Handhaben von Niedrigleistungsmultimedia-Anwendungen, wie etwa Musikwiedergabe, Audio/Video und so weiter, zusätzlich zu fortgeschrittenen Berechnungen, die während der Ausführung von Multimedia-Anweisungen auftreten können, bereitstellen. Eine Kommunikationseinheit 1140 kann wiederum verschiedene Bauelemente beinhalten, um Konnektivität über verschiedene drahtlose Protokolle bereitzustellen, wie etwa zellulare Kommunikationen (einschließlich 3G/4G-LTE), drahtlose lokale Protokolle, wie etwa Bluetooth™, IEEE 802.11 und so weiter.
  • Noch weiter kann ein Multimedia-Prozessor 1150 verwendet werden, um eine Aufzeichnung und Wiedergabe von hochauflösenden Video- und Audioinhalten, einschließlich einer Verarbeitung von Benutzergesten, auszuführen. Eine Sensoreinheit 1160 kann eine Vielzahl von Sensoren und/oder eine Sensorsteuervorrichtung zur Schnittstellenherstellung mit verschiedenen chipexternen Sensoren, die in einer gegebenen Plattform vorhanden sind, beinhalten. Ein Bildsignalprozessor 1170 kann mit einem oder mehreren separaten ISPs versehen sein, um eine Bildverarbeitung im Zusammenhang aufgezeichnetem Inhalt einer oder mehrerer Kameras einer Plattform, einschließlich Standbild- und Videokameras, auszuführen.
  • Ein Anzeigeprozessor 1180 kann Unterstützung zur Verbindung mit einer hochauflösenden Anzeige mit einer gegebenen Pixeldichte, einschließlich der Fähigkeit, drahtlos Inhalt zur Wiedergabe auf einer solchen Anzeige zu kommunizieren, bereitstellen. Ferner kann eine Ortungseinheit 1190 einen GPS-Empfänger mit Unterstützung für mehrere GPS-Konstellationen beinhalten, um Anwendungen mit hoch präzisen Positionierungsinformationen, die unter Verwendung eines solchen GPS-Empfängers erhalten werden, bereitzustellen. Man versteht, dass, obwohl mit diesem speziellen Satz von Bauelementen in dem Beispiel der 11 gezeigt, viele Variationen und Alternativen möglich sind.
  • Nun wird unter Bezugnahme auf 12 ein Blockdiagramm eines beispielhaften Systems gezeigt, mit dem Ausführungsformen verwendet werden können. Wie man sieht, kann das System 1200 ein Smartphone oder ein anderer drahtloser Kommunikator sein. Ein Basisbandprozessor 1205 ist dazu konfiguriert, verschiedene Signalverarbeitung in Bezug auf Kommunikationssignale, die von dem System gesendet oder von diesem empfangen werden sollen, auszuführen. Der Basisbandprozessor 1205 ist im Gegenzug zusätzlich zu Benutzeranwendungen, wie etwa vielen wohlbekannten sozialen Medien und Multimedia-Anwendungen, mit einem Anwendungsprozessor 1210 gekoppelt, der eine Haupt-CPU des Systems zum Ausführen eines OS und einer anderen Systemsoftware sein kann. Der Anwendungsprozessor 1210 kann weiter dazu konfiguriert sein, eine Vielfalt anderer Rechenoperationen für die Vorrichtung und die hier beschriebenen Leistungsmanagementtechniken auszuführen.
  • Im Gegenzug kann der Anwendungsprozessor 1210 mit einer Benutzeroberfläche/Anzeige 1220, zum Beispiel einer Touchscreen-Anzeige, koppeln. Zusätzlich kann der Anwendungsprozessor 1210 mit einem Speichersystem koppeln, das einen nichtflüchtigen Speicher, nämlich einen Flash-Speicher 1230 und einen Systemspeicher, nämlich einen dynamischen Direktzugriffsspeicher (DRAM) 1235, beinhaltet. Wie man weiter sieht, koppelt der Anwendungsprozessor 1210 weiter mit einer Aufzeichnungsvorrichtung 1240, wie etwa einer oder mehreren Bildaufzeichnungsvorrichtungen, die Video- und/oder Standbilder aufzeichnen können.
  • Immer noch unter Bezugnahme auf 12 ist eine universelle integrierte Schaltungskarte (UICC) 1240, die ein Teilnehmeridentifikationsmodul und möglicherweise einen sicheren Speicherungs- und Kryptoprozessor umfasst, auch mit dem Anwendungsprozessor 1210 gekoppelt. Das System 1200 kann weiter einen Sicherheitsprozessor 1250 beinhalten, der mit dem Anwendungsprozessor 1210 koppeln kann. Eine Vielzahl von Sensoren 1225 können mit dem Anwendungsprozessor 1210 koppeln, um die Eingabe einer Vielfalt erhobener Informationen, wie etwa Beschleunigungsmesser und anderer Umgebungsinformationen, zu ermöglichen. Eine Audioausgabevorrichtung 1295 kann eine Schnittstelle zum Ausgeben von Ton, zum Beispiel in der Form von Sprachkommunikationen, abgespielten oder Streaming-Audiodaten usw. bereitstellen.
  • Wie weiter veranschaulicht, ist eine kontaktlose Nahfeldkommunikationsschnittstelle (NFC-Schnittstelle) 1260 bereitgestellt, die in einem NFC-Nahfeld über eine NFC-Antenne 1265 kommuniziert. Obwohl separate Antennen in 12 gezeigt sind, versteht es sich, dass bei einigen Umsetzungen eine Antenne oder ein unterschiedlicher Satz von Antennen bereitgestellt werden kann, um verschiedene drahtlose Funktionalitäten zu ermöglichen.
  • Eine PMIC 1215 koppelt mit dem Anwendungsprozessor 1210, um Leistungsmanagement auf Plattformebene auszuführen. Zu diesem Zweck kann die PMIC 1215 Leistungsmanagementanforderungen zu dem Anwendungsprozessor 1210 ausgeben, um, wie gewünscht, in bestimmte Niederleistungszustände einzutreten. Des Weiteren kann die PMIC 1215 basierend auf Plattformbeschränkungen auch das Leistungsniveau anderer Bauelemente des Systems 1200 steuern.
  • Um zu ermöglichen, dass Kommunikationen übertragen und empfangen werden, können verschiedene Schaltungen zwischen dem Basisbandprozessor 1205 und einer Antenne 1290 gekoppelt sein. Insbesondere können ein Hochfrequenz-Transceiver (HF-Transceiver) 1270 und ein Wireless-Local-Area-Network-Transceiver (WLAN-Transceiver) 1275 vorhanden sein. Im Allgemeinen kann der HF-Sendeempfänger 1270 verwendet werden, um drahtlose Daten und Anrufe gemäß einem gegebenen drahtlosen Kommunikationsprotokoll, wie etwa einem drahtlosen 3G- oder 4G-Kommunikationsprotokoll, wie etwa gemäß einem Codemultiplex-Mehrfachzugriff (CDMA: Code Division Multiple Access), Global System for Mobile Communication (GSM: Global System for Mobile Communication), Long Term Evolution (LTE: Long Term Evolution) oder einem anderen Protokoll, zu empfangen und zu übertragen. Zusätzlich kann ein GPS-Sensor 1280 vorhanden sein. Andere drahtlose Kommunikationen, wie etwa der Empfang oder die Übertragung von Funksignalen, zum Beispiel von AM/FM und anderen Signalen, können ebenfalls bereitgestellt werden. Zusätzlich können über den WLAN-Transceiver 1275 auch lokale drahtlose Kommunikationen realisiert werden.
  • Nun wird unter Bezugnahme auf 13 ein Blockdiagramm eines anderen beispielhaften Systems, mit dem Ausführungsformen verwendet werden können, gezeigt. In der Veranschaulichung der 13 kann das System 1300 ein mobiles Niederleistungssystem sein, wie etwa ein Tablet-Computer, 2:1-Tablet, Phablet oder ein anderes umwandelbares oder eigenständiges Tablet-System. Wie veranschaulicht, ist ein SoC 1310 vorhanden und kann dazu konfiguriert sein, als ein Anwendungsprozessor für die Vorrichtung zu arbeiten und die hier beschriebenen Leistungsmanagementtechniken auszuführen.
  • Eine Vielzahl von Vorrichtungen kann mit dem SoC 1310 koppeln. Bei der gezeigten Veranschaulichung beinhaltet ein Speichersubsystem einen Flash-Speicher 1340 und einen DRAM 1345, die mit dem SoC 1310 gekoppelt sind. Außerdem ist ein Touchpanel 1320 mit dem SoC 1310 gekoppelt, um Anzeigefähigkeit und Benutzereingabe über Berührung bereitzustellen, einschließlich des Bereitstellens einer virtuellen Tastatur auf einer Anzeige des Touchpanels 1320. Um drahtgebundene Netzwerkkonnektivität bereitzustellen, koppelt das SoC 1310 mit einer Ethernet-Schnittstelle 1330. Ein Peripherie-Hub 1325 ist mit dem SoC 1310 gekoppelt, um eine Schnittstelle mit verschiedenen Peripherievorrichtungen zu ermöglichen, wie sie beispielsweise durch einen beliebigen von verschiedenen Ports oder anderen Verbindern mit dem System 1300 gekoppelt sein können.
  • Zusätzlich zu internen Leistungsmanagementschaltungen und Funktionalität innerhalb des SoC 1310 ist eine PMIC 1380 mit dem SoC 1310 gekoppelt, um plattformbasiertes Leistungsmanagement bereitzustellen, zum Beispiel basierend darauf, ob das System von einer Batterie 1390 oder AC-Leistung über einen AC-Adapter 1395 mit Leistung versorgt wird. Zusätzlich zu diesem leistungsquellenbasierten Leistungsmanagement kann die PMIC 1380 weiter Plattformleistungsmanagementaktivitäten basierend auf Umgebungs- und Nutzungsbedingungen ausführen. Weiter kann die PMIC 1380 Steuer- und Statusinformationen an das SoC 1310 kommunizieren, um verschiedene Leistungsmanagementhandlungen innerhalb des SoC 1310 zu bewirken.
  • Immer noch unter Bezugnahme auf 13 ist, um drahtlose Fähigkeiten bereitzustellen, eine WLAN-Einheit 1350 mit dem SoC 1310 und wiederum mit einer Antenne 1355 gekoppelt. Bei verschiedenen Umsetzungen kann die WLAN-Einheit 1350 eine Kommunikation gemäß einem oder mehreren drahtlosen Protokollen bereitstellen.
  • Wie weiter veranschaulicht, kann eine Vielzahl von Sensoren 1360 mit dem SoC 1310 koppeln. Diese Sensoren können verschiedene Beschleunigungsmesser, Umgebungs- und andere Sensoren, einschließlich Benutzergestensensoren, beinhalten. Schließlich ist ein Audiocodec 1365 mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu einer Audioausgabevorrichtung 1370 bereitzustellen. Selbstverständlich versteht es sich, dass, obwohl mit dieser speziellen Umsetzung in 13 gezeigt, viele Variationen und Alternativen möglich sind.
  • Nun wird unter Bezugnahme auf 14 ein Blockdiagramm eines repräsentativen Computersystems, wie etwa Notebook, Ultrabook™ oder eines anderen Systems mit kleinem Formfaktor, gezeigt. Ein Prozessor 1410 beinhaltet bei einer Ausführungsform einen Mikroprozessor, Mehrkernprozessor, Multithread-Prozessor, einen Ultra-Low-Voltage-Prozessor, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. Bei der veranschaulichten Umsetzung agiert der Prozessor 1410 als eine Hauptverarbeitungseinheit und ein zentraler Hub zur Kommunikation mit vielen der verschiedenen Bauelementen des Systems 1400. Als ein Beispiel ist der Prozessor 1400 als ein SoC umgesetzt.
  • Der Prozessor 1410 kommuniziert bei einer Ausführungsform mit einem Systemspeicher 1415. Als ein veranschaulichendes Beispiel ist der Systemspeicher 1415 über mehrere Speichervorrichtungen oder Module umgesetzt, um eine gegebene Menge an Systemspeicher bereitzustellen.
  • Um eine dauerhafte Speicherung von Informationen, wie etwa Daten, Anwendungen, einem oder mehreren Betriebssystemen usw., bereitzustellen, kann eine Massenspeicherung 1420 auch mit dem Prozessor 1410 koppeln. Bei verschiedenen Ausführungsformen kann diese Massenspeicherung, um ein dünneres und leichteres Systemdesign zu ermöglichen sowie die Systemansprechempfindlichkeit zu verbessern, über ein SSD umgesetzt werden, oder die Massenspeicherung kann primär unter Verwenden eines Festplattenlaufwerks (HDD) mit einer geringeren Menge an SSD-Speicherung umgesetzt werden, um als ein SSD-Cache zu wirken, um eine nichtflüchtige Speicherung eines Kontextzustands und anderer derartiger Informationen während Abschaltereignissen zu ermöglichen, so dass ein schnelles Hochfahren bei Wiedereinleitung von Systemaktivitäten auftreten kann. Eine Flash-Vorrichtung 1422, die auch in 14 gezeigt ist, kann zum Beispiel über eine serielle Peripherieschnittstelle (SPI) mit dem Prozessor 1410 gekoppelt sein. Diese Flash-Vorrichtung kann eine nichtflüchtige Speicherung von Systemsoftware bereitstellen, einschließlich einer Basic-Input/Output-Software (BIOS) sowie anderer Firmware des Systems.
  • Verschiedene Eingabe/Ausgabe-Vorrichtungen (E/A-Vorrichtungen) können innerhalb des Systems 1400 vorhanden sein. Insbesondere ist bei der Ausführungsform der 14 eine Anzeige 1424 gezeigt, die ein hochauflösendes LCD- oder LED-Panel sein kann, das weiter einen Touchscreen 1425 bereitstellt. Bei einer Ausführungsform kann die Anzeige 1424 mit dem Prozessor 1410 über eine Anzeigeverbindung gekoppelt sein, die als eine Hochleistungsgrafikverbindung umgesetzt sein kann. Der Touchscreen 1425 kann über eine andere Verschaltung mit dem Prozessor 1410 gekoppelt sein, die bei einer Ausführungsform ein I2C-Interconnect sein kann. Wie weiter in 14 zusätzlich zu dem Touchscreen 1425 gezeigt ist, kann eine Benutzereingabe durch Berührung auch über ein Touchpad 1430 stattfinden, das innerhalb des Chassis konfiguriert sein kann und auch mit demselben I2C-Interconnect wie der Touchscreen 1425 gekoppelt sein kann.
  • Für Wahrnehmungscomputing und andere Zwecke können verschiedene Sensoren innerhalb des Systems vorhanden sein und können mit dem Prozessor 1410 auf verschiedene Weisen gekoppelt sein. Bestimmte Trägheits- und Umgebungssensoren können über ein I2C-Interconnect über einen Sensorhub 1440, zum Beispiel mit dem Prozessor 1410 koppeln. Bei der in 14 gezeigten Ausführungsform können diese Sensoren einen Beschleunigungsmesser 1441, einen Umgebungslichtsensor (ALS) 1442, einen Kompass 1443 und ein Gyroskop 1444 beinhalten. Andere Umgebungssensoren können einen oder mehrere thermische Sensoren 1446 beinhalten, die bei einigen Ausführungsformen über einen Systemmanagementbus (SMBus) mit dem Prozessor 1410 koppeln.
  • Außerdem ist in 14 zu sehen, dass verschiedene Peripherievorrichtungen mit dem Prozessor 1410 über eine LPC-Verbindung (Low Pin Count - LPC-Verbindung) koppeln können. Bei der gezeigten Ausführungsform können verschiedene Bauelemente durch eine eingebettete Steuervorrichtung 1435 gekoppelt sein. Derartige Bauelemente können eine Tastatur 1436 (zum Beispiel über eine PS2-Schnittstelle gekoppelt), einen Lüfter 1437 und einen thermischen Sensor 1439 beinhalten. Bei einigen Ausführungsformen kann das Touchpad 1430 auch über eine PS2-Schnittstelle mit der EC 1435 koppeln. Zusätzlich kann ein Sicherheitsprozessor, wie etwa ein Trusted Platform Module (TPM) 1438, auch über dieses LPC-Interconnect mit dem Prozessor 1410 koppeln.
  • Das System 1400 kann mit externen Vorrichtungen in einer Vielzahl von Weisen, einschließlich drahtlos, kommunizieren. Bei der in 14 gezeigten Ausführungsform sind verschiedene drahtlose Module vorhanden, von denen jedes einem Funkgerät, das für ein bestimmtes drahtloses Kommunikationsprotokoll konfiguriert ist, entsprechen kann. Eine Art und Weise für drahtlose Kommunikation in einem Nahbereich, wie etwa in einem Nahfeld, kann über eine NFC-Einheit 1445 erfolgen, die bei einer Ausführungsform über einen SMBus mit dem Prozessor 1410 kommunizieren kann. Es sei angemerkt, dass Vorrichtungen in unmittelbarer Nähe über diese NFC-Einheit 1445 Vorrichtungen miteinander kommunizieren können.
  • Wie man weiter in 14 sieht, können zusätzliche drahtlose Einheiten andere drahtlose Engines mit kurzer Reichweite, einschließlich einer WLAN-Einheit 1450 und einer Bluetooth-Einheit 1452 beinhalten. Mit der WLAN-Einheit 1450 können Wi-Fi™-Kommunikationen realisiert werden, während mit der Bluetooth-Einheit 1452 Kurzstrecken-Bluetooth™-Kommunikationen stattfinden können. Diese Einheiten können über einen gegebenen Link mit dem Prozessor 1410 kommunizieren.
  • Zusätzlich können drahtlose Weitbereichskommunikationen, zum Beispiel gemäß einem zellularen oder anderen drahtlosen-Weitbereichsprotokoll über eine WWAN-Einheit 1456 stattfinden, die wiederum mit einem Teilnehmeridentitätsmodul (SIM) 1457 koppeln kann. Zusätzlich kann, um den Empfang und die Verwendung von Ortsinformationen zu ermöglichen, auch ein GPS-Modul 1455 vorhanden sein. Es wird angemerkt, dass bei der in 14 gezeigten Ausführungsform die WWAN-Einheit 1456 und eine integrierte Aufzeichnungsvorrichtung, wie etwa ein Kameramodul 1454, über einen gegebenen Link kommunizieren können.
  • In den Deckel kann ein integriertes Kameramodul 1454 eingebaut sein. Um Audioeingänge und -ausgänge bereitzustellen, kann ein Audioprozessor über einen digitalen Signalprozessor (DSP) 1460 umgesetzt werden, der über eine High-Definition-Audio-Verbindung (HDA-Verbindung) mit dem Prozessor 1410 koppeln kann. Ähnlich kann der DSP 1460 mit einem integrierten Codierer/Decoder (CODEC) und Verstärker 1462 kommunizieren, die wiederum mit Ausgangslautsprechern 1463 koppeln können, die innerhalb des Chassis umgesetzt sein können. Ähnlich können Verstärker und CODEC 1462 gekoppelt sein, um Audioeingaben von einem Mikrofon 1465 zu empfangen, das bei einer Ausführungsform über Dual-Array-Mikrofone (wie etwa ein digitales Mikrofon-Array) umgesetzt werden kann, um Audioeingaben mit hoher Qualität bereitzustellen, um eine sprachaktivierte Steuerung verschiedener Operationen innerhalb des Systems zu ermöglichen. Es sei angemerkt, dass Audioausgaben von dem Verstärker/CODEC 1462 zu einer Kopfhörerbuchse 1464 zugeführt werden können. Obwohl der Schutzumfang der vorliegenden Erfindung mit diesen speziellen Bauelementen in der Ausführungsform der 14 gezeigt, ist der Schutzumfang in dieser Hinsicht nicht beschränkt.
  • Ausführungsformen können in vielen verschiedenen Systemtypen umgesetzt werden. Nun wird unter Bezugnahme auf 15 ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 gezeigt, ist das Multiprozessorsystem 1500 ein Punkt-zu-Punkt-Interconnet-System und beinhaltet einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über ein Punkt-zu-Punkt-Interconnect 1550 gekoppelt sind. Wie in 15 gezeigt, können alle der Prozessoren 1570 und 1580 Mehrkernprozessoren sein, einschließlich erster und zweiter Prozessorkerne (das heißt Prozessoren 1574a und 1574b und Prozessorkerne 1584a und 1584b), obwohl potenziell viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU 1575, 1585 zum Ausführen eines prozessorbasierten Leistungsmanagements beinhalten, einschließlich einer Lizenzgewährungsschaltung 1559 zum Ausführen von Leistungslizenzgewährungen als Reaktion auf eine Anforderung einer nichtspekulativen Anweisungsausführung und Vorgewährungen von Frequenzlizenzen zur Arbeitslastausführung basierend auf TDP-Werten pro Kern, wie hier beschrieben.
  • Immer noch unter Bezugnahme auf 15 weist der erste Prozessor 1570 weiter einen Speichersteuervorrichtungs-Hub (MCH) 1572 und Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1576 und 1578 auf. Ähnlich weist der zweite Prozessor 1580 einen MCH 1582 und P-P-Schnittstellen 1586 und 1588 auf. Wie in 15 gezeigt, koppeln die MCH's 1572 und 1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, die Systemspeicherabschnitte (zum Beispiel DRAM) sein können, die lokal mit den jeweiligen Prozessoren verbunden sind. Der erste Prozessor 1570 und der zweite Prozessor 1580 können über P-P-Interconnects 1562 bzw. 1564 mit einem Chipsatz 1590 gekoppelt sein. Wie in 15 gezeigt, beinhaltet der Chipsatz 1590 P-P-Schnittstellen 1594 und 1598.
  • Des Weiteren beinhaltet der Chipsatz 1590 eine Schnittstelle 1592 zum Koppeln des Chipsatzes 1590 mit einer Hochleistungsgrafik-Engine 1538 durch ein P-P-Interconnect 1539. Der Chipsatz 1590 wiederum kann über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. Wie in 15 gezeigt, können verschiedene Eingabe/AusgabeVorrichtungen (E/A-Vorrichtungen) 1514 mit dem ersten Bus 1516, gemeinsam mit einer Busbrücke 1518, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt, gekoppelt sein. Verschiedene Vorrichtungen können bei einer Ausführungsform mit dem zweiten Bus 1520 gekoppelt sein, einschließlich zum Beispiel einer Tastatur/Maus 1522, Kommunikationsvorrichtungen 1526 und einer Datenspeicherungseinheit 1528, wie etwa einem Plattenlaufwerk oder einer anderen Massenspeicherungsvorrichtung, die Code 1530 beinhalten kann. Weiter kann ein Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt sein. Ausführungsformen können in andere Arten von Systemen integriert werden, einschließlich Mobilvorrichtungen, wie etwa ein Smart-Mobiltelefon, Tablet-Computer, Netbook, Ultrabook™ oder so weiter.
  • 16 ist ein Blockdiagramm, das ein IP-Kernentwicklungssystem 1600 veranschaulicht, das zum Herstellen einer integrierten Schaltung zum Ausführen von Operationen verwendet werden kann, gemäß einer Ausführungsform. Das IP-Kernentwicklungssystem 1600 kann verwendet werden, um modulare, wiederverwendbare Designs zu erzeugen, die in ein größeres Design integriert werden können oder verwendet werden können, um eine gesamte integrierte Schaltung (zum Beispiel eine integrierte SoC-Schaltung) zu konstruieren. Eine Designanlage 1630 kann eine Softwaresimulation 1610 eines IP-Kerndesigns in einer höheren Programmiersprache (zum Beispiel C/C++) generieren. Die Softwaresimulation 1610 kann verwendet werden, um das Verhalten des IP-Kerns zu entwerfen, zu testen und zu verifizieren. Aus dem Simulationsmodell kann dann ein Register-Transfer-Level-Design (RTL-Design) angelegt oder synthetisiert werden. Das RTL-Design 1615 ist eine Abstraktion des Verhaltens der integrierten Schaltung, die den Fluss digitaler Signale zwischen Hardwareregistern modelliert, einschließlich der assoziierten Logik, die unter Verwenden der modellierten digitalen Signale ausgeführt wird. Zusätzlich zu einem RTL-Design 1615 können auch Designs niedrigerer Ebene auf dem Logikniveau oder Transistorniveau erzeugt, gestaltet oder synthetisiert werden. Somit können die speziellen Einzelheiten des anfänglichen Designs und der Simulation variieren.
  • Das RTL-Design 1615 oder Äquivalent kann weiter durch die Designanlage zu einem Hardwaremodell 1620 synthetisiert werden, das in einer Hardwarebeschreibungssprache (HDL) oder einer anderen Darstellung physischer Designdaten vorliegen kann. Die HDL kann weiter simuliert oder getestet werden, um das IP-Kerndesign zu verifizieren. Das IP-Kerndesign kann zur Lieferung an eine Drittparteifertigungsanlage 1665 unter Verwendung eines nichtflüchtigen Speichers 1640 (zum Beispiel Festplatte, Flash-Speicher oder ein beliebiges nichtflüchtiges Speichermedium) gespeichert werden. Alternativ dazu kann das IP-Kerndesign über eine drahtgebundene Verbindung 1650 oder eine drahtlose Verbindung 1660 (zum Beispiel über das Internet) übertragen werden. Die Fertigungsanlage 1665 kann dann eine integrierte Schaltung, die mindestens zum Teil auf dem IP-Kerndesign basiert, fertigen. Die gefertigte integrierte Schaltung kann dazu konfiguriert sein, Operationen gemäß mindestens einer hier beschriebenen Ausführungsform auszuführen.
  • Unter Bezugnahme auf 17 ist ein Blockdiagramm eines Prozessors 1700 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Der Prozessor 1700 kann eine Vielzahl von Kernen 17020, 1702 n und optional mindestens ein anderes Rechenelement 1712, zum Beispiel eine Grafik-Engine, beinhalten. Wie in Kern 17020 gezeigt, kann jeder Kern 1702i (i=1, n) eine Ausführungsschaltung 1704 i, eine Out-Of-Order-Schaltung (OOO-Schaltung) 1706 i, eine Zählerschaltung 1708 i und eine Stromschutz (IccP) - Steuervorrichtung 1710 i beinhalten. Zum Beispiel weist der Kern 17020 eine Ausführungseinheit 17040, eine OOO-Schaltungseinheit 17060, eine Zählerschaltung 17080 und eine IccP-Steuervorrichtung 17100 auf. Der Prozessor 1700 beinhaltet auch eine Leistungsmanagementeinheit (PMU) 1730, die eine Summierungsschaltung 1732 und eine Entscheidungsschaltung 1734 beinhalten kann.
  • Beim Betrieb können jeder der Kerne 17020,... , 1702n und das Rechenelement 1712 eine jeweilige IccP-Lizenzanforderung 17360, ausgeben... 1736n. Jede Lizenzanforderung kann durch eine jeweilige IccP-Steuervorrichtung 1710i des Kerns 1702i (zum Beispiel IccP-Steuervorrichtung 17100 des Kerns 17020) bestimmt werden, und die Lizenzanforderung kann zum Beispiel auf einer Summe von Leistungsgewichen einer Gruppe von Anweisungen basieren, die während eines designierten Zeitraums durch die jeweilige Ausführungseinheit 1704 i (zum Beispiel Ausführungseinheit 17040 des Kerns 17020) auszuführen sind. Die Summe von Leistungsgewichten kann durch die Zählerlogik 1708i bestimmt werden. Zum Beispiel kann eine Größe der Lizenzanforderungen-, zum Beispiel Ausmaß eines maximalen Stroms (Icc), der für den Kern 1702i verfügbar ist, um die Gruppe von Anweisungen in einer Ausführungswarteschlange auszuführen, die in einem ersten Zeitraum auszuführen ist, basierend auf der Summe von Leistungsgewichten der Gruppe von Anweisungen bestimmt werden. Es wird angemerkt, dass diese Summe von Leistungsgewichten mindestens zum Teil auf einer Anweisungsbreite der Anweisungen und einem Typ von Anweisungen basieren kann, da erkannt wird, dass bestimmte Anweisungen, selbst wenn sie eine größere Breite aufweisen, nicht den gleichen Leistungsverbrauch wie andere Anweisungen dieser Anweisungsbreite erfahren.
  • Jeder der Kerne kann die PMU 1730 für eine unterschiedliche Lizenz, die mit einem anderen Niveau von Icc assoziiert ist, anfordern. Die PMU 1730 kann die Lizenzanforderungen der verschiedenen Kerne berücksichtigen und Aktionen gemäß den Lizenzanforderungen bestimmen. Die Aktionen können zum Beispiel Ändern der Kernfrequenz gemäß der Lizenz, Erhöhen der Schutzbandspannung oder einen anderen Mechanismus, der die an den Kern gelieferte Leistung begrenzt, beinhalten. Die PMU 1730 kann gemäß der Lizenz, die von dem Kern angefordert wird, entscheiden, ob die Schutzbandspannung erhöht werden soll, irgendeine Leistungsfähigkeit aufgegeben wird (zum Beispiel Kernfrequenz reduzieren) oder eine andere Aktion oder eine Kombination davon. Die PMU 1730 kann dann zu jedem Kern-/Berechnungselement (17020 bis 1702n, 1712) seine jeweilige Lizenz 17380, 17381, ... 1738 n (in 17, 17380 bis 17383), die mit der maximalen erwarteten Stromaufnahme (Icc) des Kerns/Rechenelements assoziiert ist, ausgeben.
  • Die OOO-LOGIK 17060 kann zum Beispiel Anweisungen in einer ersten Gruppe identifizieren, die sich in der Ausführungswarteschlange befinden, die während eines ersten Zeitraums von der Ausführungseinheit 17040 des Kerns 17020 auszuführen sind. Die OOO-LOGIK 17060 kann der Zählerlogik 17080 eine Angabe der Anweisungen in der ersten Gruppe (zum Beispiel eine Identifikationsliste) bereitstellen. Die Zählerlogik 17080 kann (zum Beispiel über eine Nachschlagetabelle oder eine andere Datenspeicherung, die in einer Ausführungsform durch die Ausführungslogik 17040 bereitgestellt werden kann), ein entsprechendes Leistungsgewicht für jeden der Anweisungen in der ersten Gruppe bestimmen. Jedes Leistungsgewicht kann einen jeweiligen Wert aufweisen, der von einer entsprechenden Anweisungsbreite unabhängig ist. Die Zählerlogik 17080 kann eine Summe der Leistungsgewichte für die erste Gruppe bestimmen. Die Zählerlogik 17080 kann die Summe von Leistungsgewichten an die IccP-Steuervorrichtung 17100 liefern, die basierend auf der Summe von Leistungsgewichten eine IccP-Lizenzanforderung 17360 bestimmen kann, die mit einem angeforderten Maximalstrom (Icc) des Kerns assoziiert ist, und die IccP-Lizenzanforderung 17360 zu der PMU 1730 senden kann. Es wird angemerkt, dass die IccP-Steuervorrichtung 1710 bei Ausführungsformen das Senden derartiger Lizenzanforderungen aufschieben kann, wenn bestimmt wird, dass eine oder mehrere Anweisungen, die die Basis der Lizenzanforderungen bilden, spekulative Anweisungen sind, wie hierin weiter beschrieben. Ungeachtet dessen kann die IccP-Steuervorrichtung 1710 als Reaktion auf empfangene Lizenzanforderungen für ein Leistungslizenzniveau, das ein aktuelles Leistungslizenzniveau überschreitet, dazu konfiguriert sein, ein Drosselsignal auszugeben, um die Ausführung von Anweisungen innerhalb des Kerns 1702 zu drosseln.
  • Die PMU 1730 kann IccP eine jeweilige Lizenzanforderung von jedem der Kerne 17020, .., 1702n (und optional von einem oder mehreren Rechenelementen, wie etwa dem Rechenelement 1712) empfangen, und die PMU 1730 kann eine jeweilige Lizenz für jeden der Kerne und/oder jedes der Rechenelemente durch eine Kombination der Summierungslogik 1732 und der Entscheidungslogik 1734 bestimmen. Bei einer Ausführungsform kann die Summierungslogik 1732 zum Beispiel die Stromanforderungen jeder der IccP-Lizenzanforderungen summieren, und die Entscheidungslogik 1734 kann eine jeweilige Lizenz 17380 bis 1738n basierend auf einer Summe der angeforderten Icc der Kerne/Rechenelemente und der Gesamtstromkapazität der PMU 1730 bestimmen. Die PMU 1730 kann IccP-Lizenzen 17380 bis 1738 n an die jeweiligen Kerne 17020 .., 1702n ausgeben und kann auch Leistungssteuerparameter 17400 bis 1740n für die Kerne 17020 .., 1702n bestimmen. Die Leistungssteuerparameter können eine jeweilige Kernfrequenz und/oder Schutzbandspannung für jedes Kern-/Berechnungselement beinhalten. Falls (zum Beispiel aufgrund eines höheren als erwarteten Strombedarfs) die ausgegebene IccP-Lizenz nicht reicht, um die Leistungsanforderungen aller Anweisungen in der Warteschlange unterzubringen, kann die IccP-Steuervorrichtung zum Beispiel einem Frontend eines oder mehrerer der Kerne anzeigen, dass dieser Durchsatz gedrosselt werden soll (zum Beispiel die Ausführungsrate von Anweisungen reduziert werden soll) und die jeweilige IccP-Steuervorrichtung des gedrosselten Kerns kann auch eine Anforderung für eine aktualisierte Lizenz mit einer höheren Icc ausgeben. Bei einer Ausführungsform können das Drosseln und die Anforderung für die Lizenz stattfinden, bevor die erste Anweisung in der Warteschlange ausgeführt wird.
  • 18 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung. Der Prozessor 1800 beinhaltet mehrere Kerne 18021 bis 1802N. Der Kern 18021 beinhaltet eine Zählerlogik 1820, eine IccP-Steuervorrichtung 1840, eine Out-Of-Order-Logik (OOO-Logik) 1860 und eine Ausführungslogik 1880 sowie andere (nicht gezeigte) Bauelemente. Beim Betrieb kann die Zählerlogik 1820 von der OOO 1860 eine Angabe jeder Anweisung empfangen, die in einer Ausführungswarteschlange für jeden Zyklus innerhalb eines Fensters von N Zyklen auszuführen ist. Die Zählerlogik 1820 kann eine Summe von Leistungsgewichten pro Zyklus, zum Beispiel durch Abrufen eines entsprechenden Leistungsgewichts, das mit jedem in dem Zyklus auszuführenden Anweisung assoziiert ist, und Addieren der abgerufenen Leistungsgewichte pro Zyklus bestimmen. Die Summe von Leistungsgewichten für einen gegebenen Zyklus kann zu der IccP-Steuervorrichtung 1840 gesendet werden, die die Summe von Leistungsgewichten für jeden Zyklus in eines von mehreren Bins kategorisieren kann, wobei jedes Bin einem Leistungsbereich innerhalb eines Schwellenniveaus („T“) entspricht. Als ein Beispiel sind fünf Bins gezeigt. Bei anderen Ausführungsformen kann es jedoch mehr Bins oder weniger Bins geben. Wie in 18 gezeigt, sind die Bins Bin 1804 (kleiner oder gleich Schwellenwert 1), Bin 1806 (> T1 und ≤ T2), Bin 1808 (> T2 und ≤ T3), Bin 1810 (> T3 und ≤ T4) und Bin 1812 (> T4). Die Summe von Leistungsgewichten pro Zyklus wird in das geeignete Bin platziert, zum Beispiel wird eine Zählung, die mit dem geeigneten Bin assoziiert ist, um eins erhöht. Es wird angemerkt, dass die IccP-Steuervorrichtung 1840 auf derartige Schwellenwertinformationen, die in einem Konfigurationsregister 1850 vorhanden sind, zugreifen kann, die verwendet werden können, um diese Schwellenwerte basierend auf unterschiedlichen Lizenzniveaus zu erzeugen, die verfügbar sind, um Anweisungen unterschiedlicher Anweisungsbreiten und -typen auszuführen, wie hierin weiter beschrieben ist.
  • Nachdem die Leistungsgewichte von N Zyklen summiert wurden und die Summe in das zweckdienliche Bin platziert wurde, werden die Ergebnisse an der Logik 1814 kombiniert. Bei einer Ausführungsform kann die Zählung von Summen in jedem Bin mit dem Schwellenniveau des Bin multipliziert werden, und Ergebnisse können summiert werden, um ein Leistungsmaß der Anweisungen in den N Zyklen zu bestimmen. Jede Summe kann somit als eine einzige Zählung des Bin behandelt werden. (Zum Beispiel können drei Summen, die in ein spezielles Bin platziert werden, als eine Zählung von drei für das spezielle Bin behandelt werden usw.). Bei einer Ausführungsform kann bestimmt werden, dass eine Zählung von A Summen in Bin 1804 (T1) ist, eine Zählung von B Summen in Bin 1806 (T2) ist, eine Zählung von C Summen in Bin 1808 (T3) ist, eine Zählung von D Summen in Bin 1810 (T4) ist, und eine Zählung von E Summen in Bin 1812 (T5) ist, und das Leistungsmaß berechnet werden kann als: Leistungsmaß = ( T 1 ) ( A ) + ( T 2 ) ( B ) + ( T 3 ) ( C ) + ( T 4 ) ( D ) + ( T 5 ) ( E )
    Figure DE112020001586T5_0001
  • Das Leistungsmaß kann zu der Lizenzauswahlschaltung 1816 gesendet werden, die ein Ausmaß der anzufragenden Stromschutzlizenz (IccP-Lizenz) basierend auf dem Leistungsmaß bestimmen kann. Die Lizenzauswahlschaltung 1816 kann eine entsprechende Lizenzanforderung 1818 erzeugen, die an eine Leistungssteuereinheit (PCU) 1860 gesendet werden soll.
  • Noch weiter, wie in 18 veranschaulicht, kann, wenn die IccP-Steuervorrichtung 1840 bestimmt, dass ein Niveau der Lizenzanforderung kleiner als ein aktuelles Lizenzniveau ist (wie in einem Komparator 1819 bestimmt), ein Drosselsignal an die OOO 1860 gesendet werden, um ein Drosseln der Anweisungsausführung innerhalb des Kerns 1802 zu bewirken, wie hierin beschrieben.
  • Nun wird unter Bezugnahme auf 19 ein Blockdiagramm eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 19 gezeigt, kann der Kern 1900 einer von mehreren Verarbeitungskernen in einem gegebenen Mehrkernprozessor oder einem anderen SoC sein. In dem relevanten Teil beinhaltet der Kern 1900 eine Schaltungsanordnung zum Identifizieren von Anweisungen, die zur Ausführung zugewiesen sind, einschließlich der Breiten und Typen der Anweisungen, und Ausführungsschaltungen zum Ausführen derartiger Anweisungen. Zusätzlich sind Stromschutzsteuerschaltungen vorhanden, um eine angemessene Stromlizenz zum Suchen nach Ausführung von Anweisungen mindestens zum Teil basierend auf der Breite und Art von Anweisungen zu bestimmen. Zusätzlich kann eine derartige Steuervorrichtung Schaltungen zum Identifizieren des Vorhandenseins spekulativer Anweisungen beinhalten und von Lizenzanforderungen einbehalten, bis derartige Anweisungen nicht spekulativ werden.
  • Wie veranschaulicht, beinhaltet der Kern 1900 eine Register-Alias-Tabelle (RAT) 1910, die eingehende Anweisungen zur Zuordnung, zum Beispiel in der Form von Uops empfangen kann. Die RAT 1910 kann ein oder mehrere Konfigurationsregister 1915 beinhalten, die Informationen im Zusammenhang mit Standardlizenzen für bestimmte Anweisungstypen (einschließlich unterschiedlicher Standardlizenzniveaus basierend auf einer Breite von mindestens einigen dieser Anweisungen) speichern. Basierend auf der Breite und dem Typ einer zugeordneten Anweisung und Informationen im Konfigurationsregister 1915, kann ein angemessenes Standardlizenzniveau für diesen Anweisung bestimmt werden. Die RAT 1910 kann dieses Standardlizenzniveau zu einem Stromschutzcontroller 1920 kommunizieren. Zusätzlich kann eine Ausführungsschaltung 1930 (die selbst verschiedene Ausführungslogiken beinhalten kann) Informationen im Zusammenhang mit einem relativen Gewicht von Anweisungen, die pro Zyklus ausgeführt werden, als ein Zyklusgewicht, das sie einem Zähler 1940 bereitstellt, kommunizieren. Gewichtete Zählungsinformationen wiederum werden von dem Zähler 1940 an die Stromschutzsteuerung 1920 geliefert.
  • Wie weiter in 19 veranschaulicht, beinhaltet die Stromschutzsteuerung 1920 Bestandteilbauelemente, einschließlich einer Virusdetektionsschaltung 1922, einer ICC-Steuervorrichtung 1925 und einer Drosselsteuervorrichtung 1928. Basierend auf den gewichteten Zählungsinformationen, die von dem Zähler 1940 empfangen werden, kann die Virusdetektionsschaltung 1922 bestimmen, wenn ein Leistungsvirus identifiziert wird, und eine Anforderung nach erhöhtem Strom an die ICC-Steuervorrichtung 1925 ausgeben. Zumindest zum Teil basierend auf diesen Informationen kann die ICC-Steuervorrichtung 1925 eine Lizenzanforderung ausgeben, die sie an eine Leistungssteuervorrichtung eines Prozessors (der Einfachheit der Veranschaulichung in 19 halber nicht gezeigt) sendet.
  • Wenn jedoch bestimmt wird, dass eine oder mehrere Anweisungen spekulativ sind, kann die ICC-Steuervorrichtung 1925 das Senden der Lizenzanforderung aufschieben, da es möglich ist, dass eine oder mehrere derartige Anweisungen tatsächlich nicht ausgeführt werden. Die spekulative Beschaffenheit einer oder mehrerer solcher Anweisungen kann von der Drosselsteuervorrichtung 1928 kommuniziert werden. Es wird angemerkt, dass die Drosselsteuervorrichtung 1928 als Reaktion auf eine Anforderung für ein gegebenes Lizenzniveau, das größer als eine aktuelle Lizenzgewährung ist, ein Drosselsignal ausgeben kann (als Reaktion auf eine Drosselanforderung, die von der ICC-Steuervorrichtung 1925 empfangen wird). Wie weiter veranschaulicht, empfängt die ICC-Steuervorrichtung 1925 weiter eine Lizenzbestätigung, zum Beispiel von der Leistungssteuervorrichtung. Man muss verstehen, dass, während dies bei der Ausführungsform der 19 auf diesem hohen Niveau gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Nun wird unter Bezugnahme auf 20 ein Blockdiagramm einer Konfigurationsspeicherung gezeigt, die in einer Register-Alias-Tabelle oder einer anderen Out-of-Order-Engine eines Prozessors vorhanden sein kann. Wie in 20 veranschaulicht, kann die Konfigurationsspeicherung 2000 mit mehreren Registern 20200-2020n umgesetzt werden. Jedes derartige Register kann mit einem gegebenen Anweisungstyp (zum Beispiel Uop-Typ) assoziiert sein und kann eine Vielzahl von Feldern beinhalten, die jeweils mit einer gegebenen Breite der Anweisung assoziiert sind. Genauer gesagt, wie in 20 veranschaulicht, beinhaltet jedes Konfigurationsregister 2020 eine Vielzahl von Feldern, einschließlich eines Typenfelds 2010 zum Identifizieren einer gegebenen Anweisung (Uop) und einer Vielzahl von Breitenfeldern (2012, 2014, 2016 und 2018), von denen jedes mit einer gegebenen Bitbreite der Anweisung assoziiert ist. Wie bei der Ausführungsform aus 20 veranschaulicht, reichen diese Bitbreiten spezieller von 64 Bit bis 512 Bit. Jedes Feld innerhalb jedes Konfigurationsregisters 2020 ist dazu konfiguriert, ein Standardlizenzniveau zu speichern, das einem geeigneten Stromverbrauchsniveau entspricht, um die Anweisung dieser Bitbreite angemessen auszuführen. Genauer gesagt speichert jedes Feld einen numerischen Wert, der einem Standardlizenzniveau entspricht, das für eine ordnungsgemäße Ausführung der Anweisung angefordert werden kann. Es wird angemerkt, dass diese Standardlizenzniveaus einfach numerische Repräsentationen (zum Beispiel bei dem Beispiel der 20 auf einer Skala von 0 bis 3) an Stelle eines tatsächlichen elektrischen Stromniveaus sein können. Natürlich kann jedes solches Standardlizenzniveau einem gegebenen tatsächlichen Stromniveau entsprechen.
  • Es wird angemerkt, dass für gewisse breite Anweisungen (zum Beispiel Lade- und Speicheranweisungen) ein Standardlizenzniveau, das niedriger als eine höchste Lizenzstufe ist, verwendet werden kann. Weiter kann es bei diesem niedrigeren Standardlizenz möglich sein, dass bestimmte Uops mit hohem Energieverbrauch, zum Beispiel 512-Bit-Fusioned-Multiplication-Add-Uops (FMA-Uops) in einer einzigen Ausführungseinheit ausgeführt werden. Mehrere solcher Ausführungseinheiten können jedoch möglicherweise nicht mit Strom versorgt werden, es sei denn, eine höchste Stromlizenz wird gewährt.
  • Nun wird unter Bezugnahme auf 21 ein Blockdiagramm eines Abschnitts eines Prozessors gemäß einer Ausführungsform gezeigt. Wie in 21 gezeigt, ist ein Abschnitt eines Kerns 2100 gezeigt, der eine Register-Alias-Tabelle 2160 beinhaltet, die mit einer ICCP-Steuervorrichtung 2140 gekoppelt ist. Wie man weiter sieht, koppelt die RAT 2160 mit mehreren FMA-Ausführungsschaltungen 21650-21651 (Fused Multiply Add - FMA). Bei Ausführungsformen hierin kann standardmäßig mindestens eine dieser beiden FMA-Ausführungsschaltungen 2165 bei Abwesenheit einer höchsten Stromlizenzgewährung leistungsgesteuert werden. Daher kann, wenn eine höchste Stromlizenzniveaugewährung empfangen wird, die RAT 2160 bewirken, dass beide FMA-Schaltungen 21650,1 aktiviert werden und Uops (einschließlich 512b Uops) zu beiden Ausführungsschaltungen (die jeweils mit einem gegebenen Ausführungsport assoziiert sind) ausgeben.
  • Nun wird unter Bezugnahme auf 22 ein Flussdiagramm einer Prozessorleistungsmanagementtechnik gemäß einer Ausführungsform gezeigt. Wie in 22 gezeigt, wird das Verfahren 2200 in der OOO-Engine 2210 (generisch OOO 2210) initiiert, wenn es eine Anweisung (zum Beispiel Uop) identifiziert, die ein höheres Stromniveau als ein aktuell gewährtes Stromlizenzniveau verbrauchen soll. Daher gibt die OOO 2210 eine Anforderung für eine erhöhte Stromlizenz zu einem MLC 2220 aus. Es ist weiter anzumerken, dass als Reaktion auf diese Anforderung für ein erhöhtes Stromlizenzniveau die OOO 2210 und der MLC 2220 in eine Drosselungsperiode eintreten können, die sich bis zur Gewährung des erhöhten Lizenzniveaus erstreckt. Es wird angemerkt, dass, wenn der MLC 2220 diese Anforderung nach einem erhöhten Stromniveau empfängt, er ein Evaluierungsfenster (zum Beispiel bei einer Ausführungsform 64 Zyklen) initiiert, um ein angemessenes anzufragendes Lizenzniveau mindestens zum Teil basierend auf Gewichtinformationen bezüglich Anweisungsausführung während des Fensters zu bestimmen.
  • Nach Abschluss dieses Fensters gibt der MLC 2220 eine Lizenzanforderung für die entsprechende Stromlizenzstufe zu einer Leistungssteuereinheit (PCU) 2230 aus. Unter der Annahme, dass ausreichend Budget verfügbar ist, gewährt die PCU 2230 die Lizenz, die in dem MLC 2220 empfangen wird. Der MLC 2220 wiederum gibt diese Lizenzgewährung an die OOO 2210 gemeinsam mit einem Reset der Drosselungsangabe derart weiter, dass Anweisungen ohne weitere Drosselung ausgegeben und ausgeführt werden können, einschließlich Anweisungen (zum Beispiel Uops), die das höhere Leistungsniveau aufweisen, das von der Lizenzanforderung (und nun Gewährung) angestrebt wird.
  • Ähnlich zeigt 23 ein anderes Flussdiagramm einer Prozessorleistungsmanagementtechnik gemäß einer anderen Ausführungsform. In 23 fährt ein Verfahren 2300 ähnlich zwischen einer OOO-ENGINE 2310, einem MLC 2320 und einer PCU 2330 fort. Bei diesem Verfahren kann im Vergleich zu Verfahren 2200 eine gewichtete Anzahl von Anweisungen pro Zyklus verwendet werden, um ein höheres Lizenzniveau anzufordern. Bei anderen Aspekten kann das Verfahren 2300 wie bei Verfahren 2200 fortfahren.
  • Nun wird unter Bezugnahme auf 24 ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Genauer gesagt ist das Verfahren 2400 ein Verfahren zum Ausführen einer Leistungssteuerung in einem Prozessor, das mindestens zum Teil auf einem Lizenzanforderungs- und - Gewährungsprotokoll, wie hierin beschrieben, basiert. Daher kann das Verfahren 2400 von Stromschutzschaltungen innerhalb eines Kerns und einer assoziierten Leistungssteuervorrichtung ausgeführt werden und kann daher von Hardwareschaltungen, Firmware, Software und/oder Kombinationen davon ausgeführt werden.
  • Wie veranschaulicht, beginnt das Verfahren 2400 mit dem Empfangen einer Anweisung bei der Zuordnung (Block 2405). Eine derartige Anweisung kann in einer Außer-Reihenfolge-Engine, wie etwa einer Register-Alias-Tabelle, empfangen werden. Ein Leistungslizenzniveau für diese Anweisung kann basierend auf einem Zugriff auf eine Leistungslizenztabelle, die innerhalb eines oder mehrerer Konfigurationsregister der RAT umgesetzt werden kann, bestimmt werden. Nächstfolgend wird an der Raute 2415 festgestellt, ob der Kern mindestens bei diesem ermittelten Leistungslizenzniveau in Betrieb ist. Falls ja, wird die Anweisung zu einer gegebenen Ausführungseinheit zur Ausführung bereitgestellt (Block 2420).
  • Andernfalls, falls bestimmt wird, dass der Kern nicht auf dem angeforderten Leistungslizenzniveau in Betrieb ist, kann der Kernbetrieb bei Block 2425 der gedrosselt werden. Zusätzlich kann bei Block 2430 ein Evaluierungsfenster geöffnet werden, um Kernaktivität zu analysieren, um ein angemessenes Leistungslizenzniveau zu bestimmen. Während dieses Fensters können Aktivitätsinformationen gesammelt werden (Block 2435). Derartige Aktivitätsinformationen können auf einer Zyklusbasis erhalten werden, mit einer Angabe der Anzahl und Breite (und des Typs) von Anweisungen, die in jedem Zyklus ausgeführt werden. Nachdem bei Raute 2440 bestimmt wurde, dass das Fenster abgeschlossen ist (was bei einem Ausführungsbeispiel 64 Zyklen betragen kann), kann ein Leistungslizenzniveau basierend auf Aktivitätsinformationen des Fensters bestimmt werden (Block 2445). Eine Stromschutzsteuervorrichtung kann zum Beispiel ein geeignetes Leistungsniveau, zum Beispiel unter Bezugnahme auf einen Satz von Schwellenwerten, die jeweils mit einem gegebenen Leistungslizenzniveau assoziiert sind, identifizieren.
  • Immer noch unter Bezugnahme auf 24 wird nächstfolgend bestimmt, ob die Anweisung (die ein erhöhtes Leistungslizenzniveau ausgelöst hat) spekulativ ist (Raute 2450). Falls ja, wird als Nächstes bestimmt, ob die aktuelle Drosseldauer eine gegebene Drosselschwelle überschreitet (Raute 2455). Falls nicht, kann die Ausgabe der Lizenzanforderung zu einer Leistungssteuervorrichtung zurückgestellt werden (Block 2460). Wenn entweder bestimmt wird, dass die Anweisung nicht mehr spekulativ ist oder dass die Drosseldauer eine Schwellendauer überschreitet, wird bei Block 2470 die Lizenzanforderung für das bestimmte Leistungslizenzniveau zu der Leistungssteuervorrichtung gesendet. Wenn bestimmt wird (bei Raute 2480), dass diese Lizenzgewährung empfangen wird, geht die Steuerung zu Block 2420 über, wo die Anweisung zur Ausführung bereitgestellt wird. Man muss verstehen, dass, während dies bei der Ausführungsform der 24 auf diesem hohen Niveau gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Nun wird unter Bezugnahme auf 25 ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 25 gezeigt, kann das Verfahren 2500 von Stromschutzschaltungen innerhalb eines Kerns und einer assoziierten Leistungssteuervorrichtung ausgeführt werden und kann daher von Hardwareschaltungen, Firmware, Software und/oder Kombinationen davon ausgeführt werden.
  • Wie veranschaulicht, beginnt das Verfahren 2500 mit dem Empfangen einer Anweisung (zum Beispiel Uop) bei Zuordnung (Block 2505). Eine derartige Anweisung kann in einer Register-Alias-Tabelle oder einer anderen Out-of-Order-Engine empfangen werden. Nächstfolgend wird bei Raute 2510 bestimmt, ob die Anweisungsbreite eine erste Schwellenbreite aufweist (die bei einem Ausführungsbeispiel 64 Bits betragen kann). Falls ja, kann die Anweisung als eine Anweisung mit einem ersten Leistungsniveau identifiziert werden (zum Beispiel eine Anweisung mit einem niedrigsten Leistungsniveau), und dementsprechend reicht ein niedrigstes Leistungslizenzniveau zur Ausführung dieser Anweisung (Block 2515). Falls stattdessen bei Raute 2520 bestimmt wird, dass die Anweisungsbreite eine zweite Schwellenbreite aufweist (die bei einer Ausführungsform 128 Bits betragen kann), wird nächstfolgend bestimmt, ob die Anweisung eine arithmetische Anweisung ist (bei Raute 2525). Falls ja, wird die Anweisung als ein Anweisung mit einem zweiten Leistungsniveau identifiziert, das einem zweiten Leistungslizenzniveau entsprechen kann (Block 2530). Andernfalls, falls die Anweisung keine arithmetische Anweisung ist (zum Beispiel ein Lade- oder Speicherbefehl ist), geht die Steuerung zu Block 2535 über, bei dem die Anweisung als eine Anweisung mit einem ersten Leistungsniveau identifiziert werden kann und somit das niedrigste Leistungsniveau zur Ausführung dieser Anweisungs reicht (Block 2535).
  • Immer noch unter Bezugnahme auf 25 geht die Steuerung von Raute 2520 zu Raute 2540 über, um zu bestimmen, ob eine Anweisungsbreite kleiner als ein dritter Schwellenwert ist. Falls ja, wird nächstfolgend bestimmt, ob die Anweisung eine arithmetische Anweisung ist (bei Raute 2550). Falls nicht, wird die Anweisung als eine Anweisung mit einem zweiten Leistungsniveau identifiziert, das dem zweiten Leistungslizenzniveau entspricht (Block 2560). Ansonsten, falls die Anweisung eine arithmetische Anweisung ist, geht die Steuerung zu Block 2565 über, wo die Anweisung als eine dritte Leistungsniveauanweisung (größer als das erste und das zweite Leistungsniveau) identifiziert werden kann (Block 2565).
  • Falls schließlich eine Anweisungsbreite den dritten Schwellenwert überschreitet, geht die Steuerung zu Raute 2570 über, an der bestimmt wird, ob die Anweisung eine arithmetische Anweisung ist. Falls ja, wird die Anweisung als eine vierte Anweisung höchsten Niveaus identifiziert (Block 2580). Ansonsten, falls die Anweisung keine arithmetische Anweisung ist, geht die Steuerung zu Block 2575 über, wo die Anweisung als eine Anweisung mit zweitem Leistungsniveau identifiziert werden kann. Somit können bei Ausführungsformen sowohl Anweisungsbreite als auch Typ beim Bestimmen eines geeigneten Leistungslizenzniveaus berücksichtigt werden, wodurch die Fähigkeit realisiert wird, nicht arithmetische breite Anweisungen bei niedrigeren Leistungsniveaus und mit reduzierter Latenz auszuführen, da Drosseln und erhöhte Lizenzverhandlung für derartige Anweisungen vermieden werden können. Man muss verstehen, dass, während dies bei der Ausführungsform der 25 auf diesem hohen Niveau gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Wie oben beschrieben, können die Kernschaltungen Leistungslizenzgewährungen anfordern, bevor bestimmte Anweisungstypen ausgeführt werden. Obwohl diese Anordnung geeignet ist, einen Betrieb mit niedrigerer Leistung zu erlauben, wenn die hohe Leistung für eine relativ kleine Anzahl von Anweisungen mit hoher Leistung benötigt wird, kann es einen bestimmten Overhead und eine Latenz geben, die beim Suchen derartiger Lizenzen auftreten (und die zu einem Drosseln für mindestens gewisse Zeitdauern führen können, wie oben besprochen). Daher können Ausführungsformen weiter einen Prozessor auf einem relativ feinkörnigen Niveau (zum Beispiel auf einer Basis pro Kern) mit einem konfigurierbaren Wärmedesignleistungsniveau (TDP-Niveau) konfigurieren, die als eine Vorgewährung einer Frequenzlizenz agiert, um den Betrieb einer Arbeitslast mit einer garantierten Betriebsfrequenz sicherzustellen, selbst wenn die Arbeitslast Anweisungen mit hohem Stromverbrauch beinhaltet. Außerdem wird bei dieser Anordnung nur denjenigen Kernen, die tatsächlich derartige Hochleistungsanweisungen ausführen sollen, ein niedrigerer konfigurierbarer TDP-Wert bereitgestellt (und somit eine entsprechende niedrigere garantierte Betriebsfrequenz), so dass andere Kerne Arbeitslasten, denen diese höhere Leistung verbrauchenden Anweisungen fehlen, auf höheren konfigurierbaren TDP-Niveaus (und somit höheren entsprechenden garantierten Betriebsfrequenzen) ausführen können.
  • Daher ist ein Leistungsfähigkeitszustand, der in einem Prozessor verfügbar ist, ein garantierter Leistungsfähigkeitszustand, auch als ein P1-Leistungsfähigkeitszustand bezeichnet, der eine garantierte Betriebsfrequenz bereitstellt, um eine konsistente Leistungsfähigkeit mit variierenden Arbeitslasten sicherzustellen. Ausnahmen, die auf erhöhten Arbeitslastanforderungen basieren, können jedoch Abweichungen von diesem Determinismus ergeben, was zu Jitter und unregelmäßigen Leistungsmanagementzustandsänderungen führt. Eine besondere Ausnahme für einen solchen Nichtdeterminismus ist die Ausführung leistungsstarker rechenintensiver Anweisungen, wie etwa bestimmter Vektoranweisungen.
  • Um konsistentes und deterministisches Verhalten mit variierender Arbeitslast bereitzustellen, kann bei Ausführungsformen basierend auf einem gegebenen Leistungsbudget ein Pro-Kern-Konfigurationsparameter für eine konfigurierbare TDP-Einstellung realisiert werden. Insbesondere können Ausführungsformen ein oder mehrere Konfigurationsregister bereitstellen, denen ein Scheduler Informationen bereitstellen kann, um die Speicherung eines dynamischen konfigurierbaren TDP-Werts für einen gegebenen Prozessorkern oder eine andere Verarbeitungsschaltung zu ermöglichen. Obwohl der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, kann ein solcher Scheduler als Beispiele ein Betriebssystemscheduler und/oder ein Arbeitslastscheduler sein, der Informationen bezüglich Arbeitslasten aufweist, die zu Kernen oder anderen Verarbeitungsschaltungen zu planen sind.
  • Derartige Konfigurationsregister können mindestens zum Teil basierend auf Planungsinformationen dynamisch aktualisiert werden, wie etwa während des Planens einer Arbeitslast zu einem bestimmten Kern, um es dem Kern zu ermöglichen, die Arbeitslast auf eine deterministische Weise auszuführen, indem dieser konfigurierbare TDP-Wert eingehalten wird. Ein Scheduler kann während der Laufzeit die Scheduling-Informationen bereitstellen, um eine Aktualisierung dieser Konfigurationsregister zu bewirken. Bei einer Ausführungsform können die Konfigurationsregister als ein oder mehrere modellspezifische Register (MSRs) umgesetzt werden. Auf diese Weise kann eine Vorgewährung einer Frequenzlizenz vor der Ausführung einer gegebenen Arbeitslast auf einem gegebenen Kern auftreten. Und es wird angemerkt, dass der Scheduler dynamisch eine Änderung an einem solchen konfigurierbaren TDP-Wert für eine nächste Arbeitslast auslösen kann, wodurch eine Vorgewährungsfrequenzlizenz für diese nächste Arbeitslast bereitgestellt wird. Bei Ausführungsformen kann diese pro Kern konfigurierbare TDP-Anordnung Schedulern und anderen Entitäten zum Beispiel exponiert werden, indem ein Flag in einem Prozessorkennungsregister, wie etwa einem gegebenen CPUID-Register, gesetzt wird.
  • Im Gegensatz dazu steht in typischen Prozessoren eine prozessorweite einzelne TDP-Einstellung zur Verfügung, die während eines Pre-Boot eines Systems, zum Beispiel durch ein grundlegendes Eingabe-/Ausgabesystem (BIOS) eingestellt wird. Mit dieser herkömmlichen Anordnung erfordert jede Änderung an einem prozessorweiten einzelnen TDP-Wert ein Reset der Plattform, was die Latenz und Komplexität unerwünscht erhöht. Bei solchen typischen Anordnungen, bei denen verschiedene Arten von Anwendungen auf einem Prozessor ausgeführt werden, kann eine derartige plattformweite Boot-Time-Einstellung für die Leistungsfähigkeit verschiedener Anwendungen nachteilig sein, die Anweisungen mit höherer Leistung verwenden, wie verschiedene Vektorbefehle, einschließlich AVX-Anweisungen (Advanced Vector Extension-Anweisungen) (wie AVX2 und AVX-512) und zusätzliche ISA-Anweisungen, wie SSE-Anweisungen (Streaming-SIMD-Extension-Anweisungen) und so weiter.
  • Infolgedessen können Ausführungsformen Leistungsverbesserungen für heterogene Arbeitslasten, die sowohl vektorbasierte als auch nicht-vektorbasierte Anweisungen verwenden, mittels Lizenzgewährungen pro Kernfrequenz während der Laufzeit bereitstellen. Eine derartige Laufzeitsteuerung kann unter Verwenden des einen oder der mehreren Konfigurationsregister realisiert werden, die Schedulern ausgesetzt sind, um Vorgewährungsfrequenzlizenzen basierend auf Arbeitslasten, die auf bestimmten Kernen ausgeführt werden, zu ermöglichen. Auf diese Weise können heterogene Arbeitslasten, die bei Cloud-basierten Anwendungen typisch sein können, auf eine Weise ausgeführt werden, dass komplexe Echtzeit-Arbeitslasten mit Nicht-Echtzeit-Arbeitslasten bei höheren Leistungsfähigkeitsniveaus koexistieren können.
  • Bei diversen Ausführungsformen können die Scheduler Planungsinformationen in der Form eines gegebenen Leistungsniveaus für Anweisungen bereitstellen, die in einer Planungsgruppe vorhanden sind. Obwohl diese Leistungsniveauinformationen unterschiedliche Formen annehmen können, kann der Scheduler in einigen Fällen in Abhängigkeit von einem Typ und einer Breite von Anweisungen, die in der Planungsgruppe vorhanden sind, ein oder mehrere Leistungsniveaus mehrerer solcher Leistungsniveaus zu einer PCU oder einer anderen Leistungssteuervorrichtung bereitstellen. Im Gegenzug kann die Leistungssteuervorrichtung ein maximales Leistungsniveau für Anweisungen für die Planungsgruppe auf einen gegebenen konfigurierbaren TDP-Wert abbilden, den er in einem Pro-Kern-Konfigurationsregister speichern kann, da der Scheduler weiter eine Angabe des einen oder der mehreren Kerne, auf denen eine Arbeitslast einschließlich dieser Planungsgruppe auszuführen ist, bereitstellen kann. Dann kann die Leistungssteuervorrichtung eine garantierte Betriebsfrequenz mindestens zum Teil basierend auf dem konfigurierbaren TDP-Wert bestimmen. Auf diese Weise können die geplanten Anweisungen ohne die Notwendigkeit von Leistungslizenzverhandlungen während der Ausführung der Anweisungen ausgeführt werden und können weiter mit einer garantierten Betriebsfrequenz arbeiten, die ausgewählt ist, um ein Drosseln oder eine andere Bedingung zu vermeiden.
  • Die nachfolgende Tabelle 1 zeigt einen beispielhaften Satz von Leistungsniveaus, die mit bestimmten Anweisungstypen assoziiert sein können. Wie man sieht, kann jedes der unterschiedlichen Leistungsniveaus mit Anweisungen eines bestimmten Typs und einer bestimmten Breite assoziiert sein. Folglich kann der Scheduler bei einer Ausführungsform eine Anweisung mit maximaler Leistungsaufnahme einer Scheduling-Gruppe identifizieren und das entsprechenden Leistungsniveau als die Scheduling-Informationen gemeinsam mit einer Angabe des/der Kerns/Kerne, auf dem/denen die Scheduling-Gruppe ausgeführt werden soll, bereitstellen. Tabelle 1
    Leistungsniveau Name Spannungsniveau AVX Breite Max Turboplan Anweisungen
    1 Nicht-AVX 128/256 SSE AVX Scalar**, AVX 128, SSE, alles
    2 AVX2 Light 128/256 SSE AVX2 ohne FP oder INT MUL/FMA
    3 AVX2 Heavy 128/256 AVX2 AVX2 FP + INT MUL/FMA
    4 AVX-512 Light 512 AVX2 AVX-512 ohne FP oder INT MUL/FMA
    5 AVX-512 Heavy 512 AVX-512 AVX-512 FP+INT MUL/FMA
  • Ferner können Ausführungsformen eine höhere Leistungsfähigkeit und eine bessere Leistungsfähigkeit pro Watt realisieren, indem Pro-Kern-Frequenzniveaugewährungen bereitgestellt werden. Zusätzlich dazu können Leistungseinsparungen auf einem Pro-Kern-Niveau basierend auf einer gegebenen Arbeitslast, die ausgeführt wird, realisiert werden. Ausführungsformen stellen auch eine Schnittstelle bereit, um es einem Cloud-Orchestrator zu ermöglichen, eine Zielplattform zu identifizieren, die Auf-Abruf-Frequenzlizenzgewährungsfähigkeiten aufweist, um bestimmte Arbeitslasten einzusetzen, die für eine solche Konfigurierbarkeit geeignet sind. Obwohl der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist, können derartige Arbeitslasten softwaredefinierte Vernetzungsarbeitslasten, andere Telecom-basierte Arbeitslasten und andere Arbeitslasten einschließlich finanzieller Arbeitslasten, Hochleistungsberechnung und so weiter beinhalten. Als Beispiele können Ausführungsformen das Planen unterschiedlicher Schichten einer drahtlosen Netzwerkarbeitslast zu unterschiedlichen Kernen, die bei unterschiedlichen konfigurierbaren TDP-Werten arbeiten, ermöglichen. Zum Beispiel kann ein Abschnitt einer physischen Schicht (L1) einer derartigen Arbeitslast Anweisungen mit hohem Energieverbrauch beinhalten und kann somit zu Kernen geplant werden, die mit niedrigeren TDP-Werten arbeiten als andere Kerne, zu denen Abschnitte einer höheren Schicht der Arbeitslast geplant sind.
  • Bei Ausführungsformen kann eine garantierte Basisbetriebsfrequenz mit den konfigurierbaren KERN-TDP-Fähigkeiten relativ höher gehalten werden. Das heißt, dass, während eine Gesamtrechenplattform mit einem ersten TDP-Niveau eingestellt werden kann, was dazu führt, dass verschiedene Kerne oder andere Verarbeitungseinheiten mit einer ersten P1-Betriebsfrequenz arbeiten, ein oder mehrere andere Kerne, die mehr Strom verbrauchende Arbeitslasten ausführen sollen, wie etwa AVX-Arbeitslasten, mit einem zweiten, niedrigeren TDP-Niveau konfiguriert werden können. Infolgedessen arbeiten diese Kerne bei einer zweiten P1-Betriebsfrequenz, die niedriger ist als die erste P1-Betriebsfrequenz. Somit kann eine verbesserte Leistungsfähigkeit realisiert werden, anstatt den gesamten Prozessor auf dieses zweite, niedrigere TDP-Niveau (und die zweite P1-Betriebsfrequenz) zu beschränken. Obwohl hier beschriebene Ausführungsformen Vorgewährungslizenzanforderungen basierend auf dem Vorhandensein von Vektoranweisungen basieren können, versteht es sich, dass andere Arbeitslasten, die höhere Leistung verbrauchen, ähnlich einen Scheduler veranlassen können, einen niedriger konfigurierten TDP-Wert für einen oder mehrere Kerne anzufordern,, um derartige Arbeitslasten auszuführen.
  • Nun wird unter Bezugnahme auf 26 ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 26 gezeigt, kann der Prozessor 2600 ein Mehrkernprozessor oder ein anderer Typ von SoC sein. Wie veranschaulicht, beinhaltet der Prozessor 2600 mehrere Kerne 26100 bis 2610n. Bei unterschiedlichen Umsetzungen können die Kerne 2610 homogene Kerne sein, während in anderen Fällen mindestens einige der Kerne in Bezug aufeinander heterogen sein können. In jedem Fall stellt ein Scheduler 2620, der selbst innerhalb des Prozessors 2600 ausgeführt werden kann, Arbeitslasten zu den Kerne 2610 bereit. Und bei Ausführungsformen hierin kann der Scheduler 2620 weiter Planungsinformationen bezüglich der Leistungsverbrauchsart der Arbeitslast bereitstellen, um das Einstellen konfigurierbarer TDP-Informationen auf einer Pro-Kern-Basis zu ermöglichen. Auf diese Weise können Ausführungsformen sicherstellen, dass gegebene Arbeitslasten, die auf Kernen 2610 laufen, auf eine deterministische Weise arbeiten. Durch Einstellen eines konfigurierbaren TDP-Werts für einen gegebenen Kern 2610, auf dem eine Arbeitslast läuft, wird somit eine deterministische Leistungsfähigkeit realisiert. Dies ist der Fall, da der ausgewählte Kern 2610 bei einer garantierten Betriebsfrequenz, ohne Drosseln oder eine andere Störung von dieser garantierten Betriebsfrequenz, arbeitet, um eine im Wesentlichen deterministische Ausführung der Arbeitslast bereitzustellen.
  • Zu diesem Zweck stellt der Scheduler 2620, wie weiter in 26 veranschaulicht, Planungsinformationen pro Kern zu einer PCU 2630 bereit. Derartige Informationen können Leistungsniveaus, wie etwa oben in Tabelle 1 gezeigt, beinhalten oder auf diesen basieren. Wie veranschaulicht, beinhaltet die PCU 2630 eine Vielzahl von Konfigurationsregistern 26320 bis 2632n. Genauer gesagt, können Konfigurationsregister 2632 auf einer Pro-Kern-Basis bereitgestellt werden, die jeweils einen konfigurierbaren TDP-Wert speichern, wie durch die PCU mindestens zum Teil basierend auf Planungsinformationen, die von dem Scheduler 2620 empfangen werden, bestimmt wird. Wie weiter in 26 gezeigt, weist die PCU 2630 auch einen Vorgewährungsfrequenzlizenzrechner 2635 auf. Bei Ausführungsformen kann der Frequenzrechner 2635 mindestens zum Teil basierend auf einem gegebenen konfigurierbaren TDP-Wert und anderen Betriebsparametern, Tabelleninformationen oder so weiter, eine garantierte Betriebsfrequenz für einen Kern 2610, der eine bestimmte Arbeitslast ausführen soll, bestimmen. Somit kann eine derartige Arbeitslast unabhängig von der Leistungsverbrauchsart der Anweisungen in der Arbeitslast auf Kernen 2610 ohne jegliches Drosseln oder andere Störung ausgeführt werden, was einen deterministischen Betrieb bei einer angemessenen garantierten Betriebsspannung und - frequenz erlaubt.
  • Als ein konkretes Beispiel sei angenommen, dass ein Prozessor mit einem nominalen TDP-Niveau von 150 Watt konfiguriert ist. Und basierend auf Konfigurationsinformationen für den Prozessor kann mit diesem nominalen TDP-Niveau eine garantierte Betriebsfrequenz, um zu ermöglichen, dass ein Betrieb innerhalb dieses TDP-Budgets stattfindet, bei einer ersten garantierten Betriebsfrequenz, zum Beispiel 2,4 GHz liegen. Sollte jedoch bei einem derartigen Betriebsniveau eine Arbeitslast eine wesentliche Anzahl von Anweisungen mit hohem Leistungsverbrauch beinhalten, kann eine thermische Grenze und/oder eine Leistungsgrenze und/oder eine Stromgrenze und/oder eine andere Umgebungsbedingung angetroffen werden, was bewirken würde, dass eine Drosselsituation auftritt, die diese garantierte Betriebsfrequenz reduziert.
  • Stattdessen kommuniziert bei einer Ausführungsform ein Scheduler, wenn er bestimmt, dass eine Arbeitslast Anweisungen mit hohem Stromverbrauch beinhaltet, Planungsinformationen zu der PCU 2630, um eine Einstellung in einem oder mehreren Konfigurationsregistern 2632 auf einen pro Kern konfigurierbaren TDP-Wert, der niedriger als der nominale TDP-Wert ist, zu ermöglichen. Und im Gegenzug kann der Vorgewährungslizenzfrequenzrechner 2635 eine garantierte Betriebsfrequenz auf einem niedrigeren Niveau, zum Beispiel 2,2 GHz, festlegen. Bei einem derartigen Betriebsfrequenzniveau kann die Arbeitslast arbeiten, ohne irgendeine Art von Grenze zu erreichen, was ein Drosseln vermeidet und einen deterministischen Betrieb sicherstellt. Es versteht sich, dass, obwohl bei der Ausführungsform der 26 auf diesem hohen Niveau gezeigt, viele Variationen und Alternativen möglich sind.
  • 27 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung. Insbesondere ist das Verfahren 2700 ein Verfahren zum Ausführen einer konfigurierbaren TDP-Steuerung pro Kern gemäß einer Ausführungsform. Daher kann das Verfahren 2700 von Hardware, Firmware, Software und/oder Kombinationen davon ausgeführt werden. Wie veranschaulicht, beginnt das Verfahren 2700 mit dem Exponieren der konfigurierbaren TDP-Fähigkeit pro Kern als ein maschinenspezifisches Register (Block 2710). Ein CPUID-Register kann zum Beispiel ein Flag eines gegebenen Feldes setzen, um die Fähigkeit des Prozessors für eine derartige Steuerung zu identifizieren.
  • Nächstfolgend geht die Steuerung zu Block 2720 über, wo ein nominales TDP-Niveau für die Rechenplattform konfiguriert werden kann. Als ein Beispiel kann BIOS oder eine andere Firmware dieses nominale Niveau einstellen. Nächstfolgend geht die Steuerung zu Block 2730 über, wobei die Rechenplattform in eine Boot-Umgebung eintritt, in der das nominale TDP-Niveau zum Beispiel von einem OS festgelegt werden kann. Zu diesem Zeitpunkt ist die Plattform für den normalen Betrieb bereit.
  • Daher kann ein Scheduler bei Block 2740 Planungsinformationen für eine gegebene Arbeitslast empfangen (oder anderswie identifizieren). Bei einer Ausführungsform können diese Planungsinformationen Leistungsverbrauchsinformationen im Zusammenhang mit Anweisungen in der Arbeitslast beinhalten. Wenn die Arbeitslast zum Beispiel eine wesentliche Anzahl von Anweisungen mit hohem Energieverbrauch, wie etwa Breitvektoranweisungen, beinhaltet, können die Planungsinformationen, wie oben in Tabelle 1 gezeigt, einen hohen Leistungsniveau identifizieren. Nächstfolgend kann der Scheduler bei Block 2750 einen oder mehrere Kerne bestimmen, auf denen die Arbeitslast geplant werden soll. In dem Fall heterogener Kerne kann der Scheduler zum Beispiel einen oder mehrere Kerne bestimmen, auf denen die Arbeitslast ausgeführt werden soll, mindestens zum Teil basierend auf einer Fähigkeit eines Kerns, bestimmte Anweisungen der Arbeitslast auszuführen. Beispielsweise können im Fall vektorbasierter Anweisungen ein oder mehrere Kerne, die eine Vektorausführungseinheit aufweisen, ausgewählt werden.
  • Nächstfolgend kann der Scheduler bei Block 2760 Planungsinformationen zu der Leistungssteuervorrichtung senden. Die Planungsinformationen können das Leistungsniveau sowie eine Angabe des einen oder der mehreren Kerne, auf denen die Arbeitslast ausgeführt werden soll, beinhalten. Nächstfolgend geht die Steuerung zu Block 2770 über, wo die PCU einen pro Kern konfigurierbaren TDP-Wert zur Speicherung in mindestens einem Konfigurationsregister setzen kann. Es wird angemerkt, dass, wie zuvor beschrieben, ein Vorgewährungslizenzfrequenzrechner innerhalb der PCU eine angemessene garantierte Betriebsfrequenz für etwa einen oder mehrere Kerne mindestens zum Teil basierend auf diesem konfigurierbaren TDP-Wert auswählen kann. Schließlich kann der Scheduler bei Block 2780 die Arbeitslast dem einen oder den mehreren bestimmten Kernen zur Ausführung zuweisen. Danach kann eine Planungsschleife zurück zu Block 2740 zum Planen einer anderen Arbeitslast gehen. Man muss verstehen, dass, während dies bei der Ausführungsform der 27 auf diesem hohen Niveau gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Bei einem Beispiel beinhaltet ein Prozessor mehrere Kerne, wobei mindestens einige der mehreren Kerne eine Ausführungsschaltung und eine Stromschutzsteuervorrichtung beinhalten. Die Stromschutzsteuervorrichtung kann konfiguriert sein zum: Empfangen von Anweisungsbreiteninformationen und Anweisungstypinformationen, die mit einer oder mehreren Anweisungen assoziiert sind, die in einer Anweisungswarteschlange gespeichert sind, vor der Ausführung der einen oder der mehreren Anweisungen durch die Ausführungsschaltung; Bestimmen eines Leistungslizenzniveaus für den Kern basierend auf den entsprechenden Anweisungsbreiteninformationen und den Anweisungstypinformationen; Erzeugen einer Anforderung für eine Lizenz für den Kern, die dem Leistungslizenzniveau entspricht; und Kommunizieren der Anforderung zu einer Leistungssteuervorrichtung, wenn die eine oder mehreren Anweisungen nicht spekulativ sind, und Aufschieben der Kommunikation der Anforderung, wenn mindestens eine der einen oder mehreren Anweisungen spekulativ ist. Der Prozessor kann weiter die Leistungssteuervorrichtung beinhalten, die mit der Vielzahl von Kernen gekoppelt ist, um der Stromschutzsteuerung als Reaktion auf die Anforderung die Lizenz zu gewähren.
  • Bei einem Beispiel umfasst der Prozessor weiter eine Register-Alias-Tabelle zum Speichern der Anweisungen, wobei die Register-Alias-Tabelle mehrere Konfigurationsregister zum Speichern von Standardleistungslizenzinformationen für mehrere Anweisungen beinhaltet, wobei die Register-Alias-Tabelle ein Standardleistungslizenzniveau für eine erste Anweisung zu der Stromschutzsteuerung senden soll.
  • Bei einem Beispiel ist jedes der Vielzahl von Konfigurationsregistern mit einem Anweisungstyp assoziiert und umfasst eine Vielzahl von Feldern, die jeweils mit einer Anweisungsbreite assoziiert sind, und zum Speichern eines Standardprozessorlizenzniveaus für den Anweisungstyp und die Anweisungsbreite.
  • Bei einem Beispiel ist die Register-Alias-Tabelle mit einer ersten Fusioned-Multiplication-Add-Schaltung und einer zweiten Fusioned-Multiplication-Add-Schaltung gekoppelt, wobei mindestens die zweite Fusioned-Multiplication-Add-Schaltung Gate-gesteuert werden soll, es sei denn, der Kern empfängt die Lizenzgewährung mit einem höchsten Niveau.
  • Bei einem Beispiel soll die Register-Alias-Tabelle bewirken, dass die zweite Fusioned-Multiplication-Add-Schaltung aktiviert wird, wenn der Kern die Leistungslizenzgewährung mit dem höchsten Niveau empfängt.
  • Bei einem Beispiel umfasst die Stromschutzsteuerung weiter eine Drosselsteuervorrichtung zum Senden eines Drosselsignals zu der Register-Alias-Tabelle, um die Ausführung der einen oder der mehreren Anweisungen, als Reaktion auf eine Bestimmung, dass das Standardleistungslizenzniveau für die erste Anweisung ein aktuelles Leistungslizenzniveau für den Kern überschreitet, zu drosseln.
  • Bei einem Beispiel soll die Stromschutzschaltung die aufgeschobene Anforderung kommunizieren, wenn eine Drosseldauer der Drosselausführung eine Schwellendauer überschreitet.
  • Bei einem Beispiel soll die Stromschutzschaltung die aufgeschobene Anforderung als Reaktion auf das Rückziehen der mindestens einen spekulativen Anweisung kommunizieren.
  • Bei einem Beispiel soll die Stromschutzsteuerung die Lizenzanforderung mit dem Leistungslizenzniveau eines ersten Niveaus für eine oder mehrere Vektorspeicherzugriffsanweisungen erzeugen und die Lizenzanforderung mit dem Leistungslizenzniveau eines zweiten Niveaus für eine oder mehrere Vektorarithmetikanweisungen erzeugen, wobei das zweite Niveau größer als das erste Niveau ist.
  • Bei einem Beispiel soll die Ausführungsschaltung eine oder mehrere 512-Bit-Speicherzugriffsanweisungen ungeachtet eines aktuellen Leistungslizenzniveaus für den Kern ohne Drosseln ausführen.
  • Bei einem anderen Beispiel umfasst ein Verfahren: Empfangen in einer Leistungssteuervorrichtung eines Prozessors von einem Scheduler von Planungsinformationen zum Identifizieren eines Leistungsniveaus, das mit einer ersten Arbeitslast assoziiert ist, die eine oder mehrere Vektoranweisungen und einen ersten Kern einer Vielzahl von Kernen des Prozessors beinhaltet, auf dem die erste Arbeitslast geplant ist; basierend auf den Planungsinformationen Einstellen, durch die Leistungssteuervorrichtung eines ersten Konfigurationsregisters, das dem ersten Kern zugeordnet ist, auf einen ersten TDP-Wert, um den ersten Kern derart zu konfigurieren, dass er gemäß dem ersten TDP-Wert arbeitet, wobei der erste TDP-Wert unabhängig von TDP-Werten ist, die anderen Kernen der Vielzahl von Kernen zugeordnet sind; und Veranlassen, dass die erste Arbeitslast deterministisch auf dem ersten Kern mit einer ersten garantierten Betriebsfrequenz basierend auf dem ersten TDP-Wert ausgeführt wird.
  • Bei einem Beispiel umfasst das Verfahren weiter: Empfangen in der Leistungssteuervorrichtung von dem Scheduler von zweiten Scheduling-Informationen, um ein Leistungsniveau zu identifizieren, der mit einer zweiten Arbeitslast und einem zweiten Kern der Vielzahl von Kernen des Prozessors assoziiert ist, auf dem die zweite Arbeitslast geplant ist; basierend auf den Scheduling-Informationen, Einstellen, durch die Leistungssteuervorrichtung eines zweiten Konfigurationsregisters, das dem zweiten Kern zugeordnet ist, auf einen zweiten TDP-Wert, um den zweiten Kern derart zu konfigurieren, dass er gemäß dem zweiten TDP-wert arbeitet, wobei der zweite TDP-Wert größer als der erste TDP-Wert ist, und Veranlassen, dass die zweite Arbeitslast deterministisch auf dem zweiten Kern mit einer zweiten garantierten Betriebsfrequenz, die größer als die erste garantierte Betriebsfrequenz ist, ausgeführt wird.
  • Bei einem Beispiel umfasst das Verfahren weiter: dynamisches Reset des ersten Konfigurationsregisters auf den zweiten TDP-Wert, um den ersten Kern zu konfigurieren, gemäß dem zweiten TDP-Wert zu arbeiten, während eines einzigen Bootens des Prozessors; und Veranlassen, dass eine dritte Arbeitslast deterministisch auf dem ersten Kern mit der zweiten garantierten Betriebsfrequenz ausgeführt wird.
  • Bei einem Beispiel umfasst das Verfahren weiter das Bestimmen des Vorhandenseins einer Vielzahl von Konfigurationsregistern zum Speichern konfigurierbarer TDP-Werte pro Kern über ein Flag einer Identifikationsspeicherung.
  • Bei einem Beispiel umfasst das Verfahren weiter während einer Pre-Boot-Umgebung des Systems das Einstellen der Vielzahl von Konfigurationsregister auf einen nominalen TDP-Wert.
  • Bei einem Beispiel umfasst das Verfahren weiter das unabhängige Aktualisieren mindestens einiger der Vielzahl von Konfigurationsregistern auf unabhängige TDP-Werte basierend auf Arbeitslasten, die von der Vielzahl von Kernen auszuführen sind, um zu bewirken, dass der erste Kern mit der ersten garantierten Betriebsfrequenz arbeitet, während mindestens ein anderer Kern der Vielzahl von Kernen mit einer zweiten garantierten Betriebsfrequenz, die größer als die erste garantierte Betriebsfrequenz ist, arbeiten soll.
  • Bei einem Beispiel umfasst der erste TDP-Wert eine Vorgewährung einer Frequenzlizenz für die erste garantierte Betriebsfrequenz, um es dem ersten Kern zu ermöglichen, die erste Arbeitslast ohne Drosseln des ersten Kerns auszuführen.
  • Bei einem anderen Beispiel soll ein computerlesbares Medium, das Anweisungen beinhaltet, das Verfahren nach einem der obigen Beispiele ausführen.
  • Bei einem weiteren Beispiel soll ein computerlesbares Medium, das Daten beinhaltet von mindestens einer Maschine verwendet werden, um mindestens eine integrierte Schaltung zu fertigen, um das Verfahren nach einem der obigen Beispiele auszuführen.
  • Bei einem noch weiteren Beispiel umfasst ein Gerät Mittel zum Ausführen des Verfahrens nach einem der obigen Beispiele.
  • Bei einem anderen Beispiel beinhaltet ein System einen Prozessor und einen dynamischen Direktzugriffsspeicher, der mit dem Prozessor gekoppelt ist. Der Prozessor umfasst eine Vielzahl von Kernen und eine Vielzahl von Konfigurationsregistern, die jeweils zum Speichern eines konfigurierbaren TDP-Werts für einen der Vielzahl von Kernen ausgelegt sind, wobei die Vielzahl von Konfigurationsregistern während eines einzigen Bootens des Systems aktualisierbar ist. Der Prozessor beinhaltet weiter eine Leistungssteuervorrichtung, die mit der Vielzahl von Kernen gekoppelt ist, wobei die Leistungssteuervorrichtung Planungsinformationen empfangen soll, um ein Leistungsniveau zu identifizieren, das mit einer ersten Arbeitslast assoziiert ist, die eine oder mehrere Vektoranweisungen und einen ersten Kern der Vielzahl von Kernen beinhaltet, auf dem die erste Arbeitslast geplant ist, basierend auf den Planungsinformationen Einstellen eines ersten Konfigurationsregisters der Vielzahl von Konfigurationsregistern auf einen ersten TDP-Wert, um den ersten Kern derart zu konfigurieren, dass er gemäß dem ersten TDP-Wert arbeitet, während eines oder mehrere andere der Vielzahl von Konfigurationsregistern einen nominalen TDP-Wert speichern sollen; und Veranlassen, dass der erste Kern die erste Arbeitslast mit einer ersten garantierten Betriebsfrequenz basierend auf dem ersten TDP-Wert ausführt.
  • Bei einem Beispiel umfasst der erste Kern: eine Stromschutzsteuerung zum: Empfangen von Anweisungsbreiteninformationen und Anweisungstypinformationen, die mit einer oder mehreren Anweisungen assoziiert sind, die in einer Anweisungswarteschlange gespeichert sind, vor der Ausführung der einen oder der mehreren Anweisungen; Bestimmen eines Leistungslizenzniveaus für den Kern basierend auf den entsprechenden Anweisungsbreiteninformationen und den Anweisungstypinformationen; Erzeugen einer Anforderung für eine Lizenz für den ersten Kern entsprechend dem Leistungslizenzniveau; und Kommunizieren der Anforderung zu der Leistungssteuervorrichtung, wenn die eine oder mehreren Anweisungen nicht spekulativ sind, und Aufschieben der Kommunikation der Anforderung, wenn mindestens eine der einen oder mehreren Anweisungen spekulativ ist.
  • Bei einem Beispiel soll die Leistungssteuervorrichtung gleichzeitig mit der Ausführung der ersten Arbeitslast durch den ersten Kern: zweite Planungsinformationen empfangen, um ein Leistungsniveau zu identifizieren, das mit einer zweiten Arbeitslast und einem zweiten Kern der Vielzahl von Kernen assoziiert ist, auf denen die zweite Arbeitslast geplant ist; und basierend auf den zweiten Planungsinformationen ein zweites Konfigurationsregisters der Vielzahl von Konfigurationsregistern auf einen zweiten TDP-Wert einstellen, um den zweiten Kern derart zu konfigurieren, dass er gemäß dem zweiten TDP-Wert arbeitet; und bewirken, dass der zweite Kern die zweite Arbeitslast mit einer zweiten garantierten Betriebsfrequenz ausführt, die größer als die erste garantierte Betriebsfrequenz ist, basierend auf dem zweiten TDP-Wert.
  • Es versteht sich, dass verschiedene Kombinationen der obigen Beispiele möglich sind.
  • Es wird angemerkt, dass die Begriffe „Schaltung“ und „Schaltungen“ hier austauschbar verwendet werden. Wie hier verwendet, werden diese Begriffe und der Begriff „Logik“ verwendet, um allein oder in einer beliebigen Kombination auf analoge Schaltungen, digitale Schaltungen, fest verdrahtete Schaltungen, programmierbare Schaltungen, Prozessorschaltungen, Mikrocontrollerschaltungen, Hardwarelogikschaltungen, Zustandsmaschinenschaltungen und/oder eine beliebige andere Art physischer Hardwarebauelemente zu verweisen. Ausführungsformen können in vielen unterschiedlichen Arten von Systemen verwendet werden. Bei einer Ausführungsform kann zum Beispiel eine Kommunikationsvorrichtung eingerichtet sein, um die verschiedenen hierin beschriebenen Verfahren und Techniken auszuführen. Natürlich ist der Schutzumfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt und stattdessen können andere Ausführungsformen auf andere Arten von Geräten zum Verarbeiten von Anweisungen oder ein oder mehrere maschinenlesbare Medien einschließlich Anweisungen, die als Reaktion darauf, dass sie auf einer Rechenvorrichtung ausgeführt werden, bewirken, dass die Vorrichtung eines oder mehrere der hier beschriebenen Verfahren und Techniken ausführt, gerichtet sein.
  • Ausführungsformen können in Code umgesetzt sein und können auf einem nichtflüchtigen Speichermedium gespeichert sein, auf dem Anweisungen gespeichert sind, die verwendet werden können, um ein System zum Ausführen der Anweisungen zu programmieren. Ausführungsformen können auch in Daten umgesetzt sein und können auf einem nichtflüchtigen Speichermedium gespeichert sein, das, falls es von mindestens einer Maschine verwendet wird, bewirkt, dass die mindestens eine Maschine mindestens eine integrierte Schaltung herstellt, um eine oder mehrere Operationen auszuführen. Noch weitere Ausführungsformen können in einem computerlesbaren Speichermedium umgesetzt sein, das Informationen beinhaltet, die, wenn sie in ein SoC oder einen anderen Prozessor hergestellt werden, das SoC oder den anderen Prozessor zum Ausführen einer oder mehrerer Operationen konfigurieren sollen. Das Speichermedium kann eine beliebige Art von Platte einschließlich Floppy Disks, optische Platten, Festkörperlaufwerke (SSDs, Solid State Drives), CD-Nur-Lese-Speicher (CD-ROMs, Compact Disk Read-Only Memories), wiederbeschreibbare Compact Disks (CD-RWs) und magnetooptische Platten, Halbleitervorrichtungen, wie etwa Nur-Lese-Speicher (ROMs, Read-Only Memories), Direktzugriffsspeicher (RAMs, Random Access Memories), wie etwa dynamische Direktzugriffsspeicher (DRAMs, Dynamic Random Access Memories), statische Direktzugriffsspeicher (SRAMs, Static Random Access Memories), löschbare, programmierbare Nur-Lese-Speicher (EPROMs, Erasable Programmable Read-Only Memories), Flash-Speicher, elektrisch löschbare, programmierbare Nur-Lese-Speicher (EEPROMs, Electrically Erasable Programmable Read-Only Memories), magnetische oder optische Karten oder jeden anderen Typ von zum Speichern von elektronischen Anweisungen geeigneten Medien beinhalten, ohne darauf beschränkt zu sein.
  • Obwohl die vorliegende Erfindung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, wird der Fachmann zahlreiche Modifikationen und Varianten davon zu würdigen wissen. Es wird beabsichtigt, dass die angehängten Ansprüche alle solchen Modifikationen und Variationen, wie sie in den wahren Geist und Schutzumfang dieser vorliegenden Erfindung fallen, abdecken.

Claims (26)

  1. Prozessor, der Folgendes umfasst: eine Vielzahl von Kernen, wobei mindestens einige der Vielzahl von Kernen Folgendes umfassen: eine Ausführungsschaltung; und eine Stromschutzsteuerung zum: Empfangen von Anweisungsbreiteninformationen und Anweisungstypinformationen, die mit einer oder mehreren Anweisungen assoziiert sind, die in einer Anweisungswarteschlange gespeichert sind, vor der Ausführung der einen oder der mehreren Anweisungen durch die Ausführungsschaltung; Bestimmen eines Leistungslizenzniveaus für den Kern basierend auf den entsprechenden Anweisungsbreiteninformationen und den Anweisungstypinformationen; Erzeugen einer Anforderung für eine Lizenz für den Kern, die dem Leistungslizenzniveau entspricht; und Kommunizieren der Anforderung an eine Leistungssteuervorrichtung, wenn die eine oder mehreren Anweisungen nicht spekulativ sind, und Aufschieben der Kommunikation der Anforderung, wenn mindestens eine der einen oder mehreren Anweisungen spekulativ ist; und wobei die Leistungssteuervorrichtung mit der Vielzahl von Kernen gekoppelt ist, um der Stromschutzsteuervorrichtung die Lizenz als Reaktion auf die Anforderung zu gewähren.
  2. Prozessor nach Anspruch 1, der weiter eine Register-Alias-Tabelle zum Speichern der Anweisungen aufweist, wobei die Register-Alias-Tabelle eine Vielzahl von Konfigurationsregistern zum Speichern von Standardleistungslizenzinformationen für eine Vielzahl von Anweisungen aufweist, wobei die Register-Alias-Tabelle ein Standardleistungslizenzniveau für eine erste Anweisung an die Stromschutzsteuervorrichtung sendet.
  3. Prozessor nach Anspruch 2, wobei jedes der Vielzahl von Konfigurationsregistern mit einem Anweisungstyp assoziiert ist und eine Vielzahl von Feldern aufweist, die jeweils mit einer Anweisungsbreite assoziiert sind, und zum Speichern eines StandardProzessorlizenzniveaus für den Anweisungstyp und die Anweisungsbreite.
  4. Prozessor nach Anspruch 2, wobei die Register-Alias-Tabelle mit einer ersten Fusioned-Multiplication-Add-Schaltung und einer zweiten Fusioned-Multiplication-Add-Schaltung gekoppelt ist, wobei mindestens die zweite Fusioned-Multiplication-Add-Schaltung Gate-gesteuert werden soll, es sei denn, der Kern empfängt die Lizenzgewährung mit einem höchsten Niveau.
  5. Prozessor nach Anspruch 4, wobei die Register-Alias-Tabelle bewirken soll, dass die zweite Fusioned-Multiplication-Add-Schaltung aktiviert wird, wenn der Kern die Leistungslizenzgewährung mit dem höchsten Niveau empfängt.
  6. Prozessor nach Anspruch 2, wobei die Stromschutzsteuervorrichtung weiter eine Drosselsteuervorrichtung zum Senden eines Drosselsignals zu der Register-Alias-Tabelle zum Drosseln der Ausführung der einen oder der mehreren Anweisungen als Reaktion auf eine Bestimmung aufweist, dass das Standardleistungslizenzniveau für die erste Anweisung ein aktuelles Leistungslizenzniveau für den Kern überschreitet.
  7. Prozessor nach Anspruch 6, wobei die Stromschutzschaltung die aufgeschobene Anforderung kommunizieren soll, wenn eine Drosseldauer der Drosselausführung eine Schwellendauer überschreitet.
  8. Prozessor nach Anspruch 1, wobei die Stromschutzschaltung die aufgeschobene Anforderung als Reaktion auf das Rückziehen der mindestens einen spekulativen Anweisungs kommunizieren soll.
  9. Prozessor nach Anspruch 1, wobei die Stromschutzsteuervorrichtung die Lizenzanforderung mit dem Leistungslizenzniveau eines ersten Niveaus für eine oder mehrere Vektorspeicherzugriffanweisungen erzeugen soll, und die Lizenzanforderung mit dem Leistungslizenzniveau eines zweiten Niveaus für eine oder mehrere Vektorarithmetikanweisungen erzeugen soll, wobei das zweite Niveau größer als das erste Niveau ist.
  10. Prozessor nach Anspruch 1, wobei die Ausführungsschaltung eine oder mehrere 512-Bit-Speicherzugriffsanweisungen unabhängig von einem aktuellen Leistungslizenzniveau für den Kern ohne Drosseln ausführen soll.
  11. Verfahren, das Folgendes umfasst: Empfangen in einer Leistungssteuervorrichtung eines Prozessors von einem Scheduler von Planungsinformationen zum Identifizieren eines Leistungsniveaus, das mit einer ersten Arbeitslast assoziiert ist, die eine oder mehrere Vektoranweisungen und einen ersten Kern einer Vielzahl von Kernen des Prozessors, auf denen die erste Arbeitslast geplant ist, beinhaltet; basierend auf den Planungsinformationen, Einstellen durch die Leistungssteuervorrichtung eines ersten Konfigurationsregisters, das mit dem ersten Kern assoziiert ist, auf einen ersten Wärmedesignleistungswert (TDP-Wert), um den ersten Kern zu konfigurieren, gemäß dem ersten TDP-Wert zu arbeiten, wobei der erste TDP-Wert von TDP-Werten ist, die mit anderen Kernen der Vielzahl von Kernen assoziiert sind, unabhängig ist, und Bewirken, dass die erste Arbeitslast deterministisch auf dem ersten Kern mit einer ersten garantierten Betriebsfrequenz basierend auf dem ersten TDP-Wert ausgeführt wird.
  12. Verfahren nach Anspruch 11, das weiter Folgendes umfasst: Empfangen in der Leistungssteuervorrichtung von dem Scheduler zweiter Planungsinformationen, um ein Leistungsniveau zu identifizieren, das mit einer zweiten Arbeitslast und einem zweiten Kern der Vielzahl von Kernen des Prozessors, auf dem die zweite Arbeitslast geplant ist, assoziiert ist; basierend auf den Planungsinformationen, Einstellen durch die Leistungssteuervorrichtung eines zweiten Konfigurationsregisters, das mit dem zweiten Kern assoziiert ist, auf einen zweiten TDP-Wert, um den zweiten Kern zu konfigurieren, gemäß dem zweiten TDP-Wert zu arbeiten, wobei der zweite TDP-Wert größer als der erste TDP-Wert ist, und Bewirken, dass die zweite Arbeitslast deterministisch auf dem zweiten Kern mit einer zweiten garantierten Betriebsfrequenz, die größer als die erste garantierte Betriebsfrequenz ist, ausgeführt wird.
  13. Verfahren nach Anspruch 12, das weiter Folgendes umfasst: dynamisches Reset des ersten Konfigurationsregisters auf den zweiten TDP-Wert, um den ersten Kern derart zu konfigurieren, dass er gemäß dem zweiten TDP-Wert während eines einzigen Bootens des Prozessors arbeitet; und Bewirken, dass eine dritte Arbeitslast deterministisch auf dem ersten Kern mit der zweiten garantierten Betriebsfrequenz ausgeführt wird.
  14. Verfahren nach Anspruch 11, das weiter das Bestimmen des Vorhandenseins einer Vielzahl von Konfigurationsregistern zum Speichern konfigurierbarer TDP-Werte pro Kern über ein Flag einer Identifikationsspeicherung umfasst.
  15. Verfahren nach Anspruch 14, das weiter während einer Pre-Boot-Umgebung des Systems das Einstellen der mehreren Konfigurationsregister auf einen nominalen TDP-Wert umfasst.
  16. Verfahren nach Anspruch 15, das weiter unabhängiges Aktualisieren mindestens einiger der Vielzahl von Konfigurationsregistern auf unabhängige TDP-Werte basierend auf Arbeitslasten umfasst, die von der Vielzahl von Kernen auszuführen sind, um zu bewirken, dass der erste Kern mit der ersten garantierten Betriebsfrequenz arbeitet, während mindestens ein anderer Kern der Vielzahl von Kernen mit einer zweiten garantierten Betriebsfrequenz arbeiten soll, die größer als die erste garantierte Betriebsfrequenz ist.
  17. Verfahren nach Anspruch 11, wobei der erste TDP-Wert eine Vorgewährung einer Frequenzlizenz für die erste garantierte Betriebsfrequenz umfasst, um es dem ersten Kern zu ermöglichen, die erste Arbeitslast ohne Drosseln des ersten Kerns auszuführen.
  18. Computerlesbares Speichermedium, das computerlesbare Anweisungen beinhaltet, um bei dem Ausführen ein Verfahren nach einem der Ansprüche 11 bis 17 umzusetzen.
  19. Vorrichtung, die Mittel zum Ausführen eines Verfahrens nach einem der Ansprüche 11 bis 17 umfasst.
  20. System, das Folgendes umfasst: einen Prozessor, der Folgendes umfasst: eine Vielzahl von Kernen; eine Vielzahl von Konfigurationsregistern, die jeweils einen konfigurierbaren Thermodesignleistungswert (TDP-Wert) für einen der Vielzahl von Kernen speichern soll, wobei die mehreren Konfigurationsregister während eines einzigen Bootens des Systems aktualisierbar sind; und eine Leistungssteuervorrichtung, die mit der Vielzahl von Kernen gekoppelt ist, wobei die Leistungssteuervorrichtung Planungsinformationen empfangen soll, um ein Leistungsniveau zu identifizieren, das mit einer ersten Arbeitslast einschließlich einer oder mehrerer Vektoranweisungen und einem ersten Kern der Vielzahl von Kernen, auf dem die erste Arbeitslast geplant ist, assoziiert ist, basierend auf den Planungsinformationen, ein erstes Konfigurationsregisters der Vielzahl von Konfigurationsregistern auf einen ersten TDP-Wert einstellen soll, um den ersten Kern derart zu konfigurieren, dass er gemäß dem ersten TDP-Wert arbeitet, während eines oder mehrere andere der Vielzahl von Konfigurationsregistern einen nominalen TDP-Wert speichern sollen; und bewirken soll, dass der erste Kern die erste Arbeitslast mit einer ersten garantierten Betriebsfrequenz basierend auf dem ersten TDP-Wert ausführt, und einen dynamischen Direktzugriffsspeicher, der mit dem Prozessor gekoppelt ist.
  21. System nach Anspruch 20, wobei der erste Kern Folgendes umfasst: eine Stromschutzsteuerung zum: Empfangen von Anweisungsbreiteninformationen und Anweisungstypinformationen, die mit einer oder mehreren Anweisungen assoziiert sind, die in einer Anweisungswarteschlange vor der Ausführung der einen oder der mehreren Anweisungen gespeichert sind; Bestimmen eines Leistungslizenzniveaus für den Kern basierend auf den entsprechenden Anweisungsbreiteninformationen und den Anweisungstypinformationen; Erzeugen einer Anforderung für eine Lizenz für den ersten Kern, die dem Leistungslizenzniveau entspricht; und Kommunizieren der Anforderung zu der Leistungssteuervorrichtung, wenn die eine oder mehreren Anweisungen nicht spekulativ sind, und Aufschieben der Kommunikation der Anforderung, wenn mindestens eine der einen oder mehreren Anweisungen spekulativ ist.
  22. System nach Anspruch 20, wobei die Leistungssteuervorrichtung gleichzeitig mit der Ausführung der ersten Arbeitslast durch den ersten Kern ausgelegt ist zum: Empfangen zweiter Planungsinformationen zum Identifizieren eines Leistungsniveaus, das mit einer zweiten Arbeitslast und einem zweiten Kern der Vielzahl von Kernen assoziiert ist, auf dem die zweite Arbeitslast geplant ist; und basierend auf den zweiten Planungsinformationen, Einstellen eines zweiten Konfigurationsregisters der Vielzahl von Konfigurationsregistern auf einen zweiten TDP-Wert, um den zweiten Kern derart zu konfigurieren, dass er gemäß dem zweiten TDP-Wert arbeitet; und Bewirken, dass der zweite Kern die zweite Arbeitslast mit einer zweiten garantierten Betriebsfrequenz ausführt, die größer als die erste garantierte Betriebsfrequenz ist, basierend auf dem zweiten TDP-Wert.
  23. Gerät, das Folgendes umfasst: eine Vielzahl von Kernmitteln, wobei mindestens einige der Vielzahl von Kernmitteln Folgendes umfassen: Ausführungsmittel; und Stromschutzsteuermittel zum: Empfangen von Anweisungsbreiteninformationen und Anweisungstypinformationen, die mit einer oder mehreren Anweisungen assoziiert sind, die in einer Anweisungswarteschlange gespeichert sind, bevor die eine oder die mehreren Anweisungen durch das Ausführungsmittel ausgeführt werden; Bestimmen eines Leistungslizenzniveaus für die Kernmittel basierend auf den entsprechenden Anweisungsbreiteninformationen und den Anweisungstypinformationen; Erzeugen einer Anforderung für eine Lizenz für die Kernmittel entsprechend dem Leistungslizenzniveau; und Kommunizieren der Anforderung zu einem Leistungssteuermittel, wenn die eine oder mehreren Anweisungen nicht spekulativ sind, und Aufschieben der Kommunikation der Anforderung, wenn mindestens eine der einen oder mehreren Anweisungen spekulativ ist; und wobei die Leistungssteuermittel mit der Vielzahl von Kernmitteln gekoppelt sind, um den Stromschutzsteuermitteln die Lizenz als Reaktion auf die Anforderung zu gewähren.
  24. Gerät nach Anspruch 23, das weiter Register-Alias-Tabellenmittel zum Speichern der Anweisungen umfasst, wobei die Register-Alias-Tabellenmittel mehrere Konfigurationsregister zum Speichern von Standardleistungslizenzinformationen für mehrere Anweisungen beinhalten, wobei die Register-Alias-Tabellenmittel zum Senden eines Standardleistungslizenzniveaus für eine erste Anweisung zu den Stromschutzsteuermitteln dienen.
  25. Gerät nach Anspruch 24, wobei jedes der Vielzahl von Konfigurationsregistern mit einem Anweisungstyp assoziiert ist und eine Vielzahl von Feldern umfasst, die jeweils mit einer Anweisungsbreite assoziiert sind, und zum Speichern eines Standardlizenzniveaus für den Anweisungstyp und die Anweisungsbreite.
  26. Vorrichtung nach Anspruch 23, wobei das Register-Alias-Tabellenmittel mit einem ersten Fusioned-Multiplication-Add-Mittel und einem zweiten Fusioned-Multiplication-Add-Mittel gekoppelt ist, wobei mindestens das zweite Fusioned-Multiplication-Add-Mittel Gate-gesteuert werden soll, es sei denn, das Kernmittel empfängt die Lizenzgewährung mit einem höchsten Niveau.
DE112020001586.6T 2019-03-28 2020-03-18 System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors Pending DE112020001586T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/367,581 2019-03-28
US16/367,581 US11409560B2 (en) 2019-03-28 2019-03-28 System, apparatus and method for power license control of a processor
PCT/US2020/023278 WO2020197870A1 (en) 2019-03-28 2020-03-18 System, apparatus and method for power license control of a processor

Publications (1)

Publication Number Publication Date
DE112020001586T5 true DE112020001586T5 (de) 2022-03-03

Family

ID=72605724

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020001586.6T Pending DE112020001586T5 (de) 2019-03-28 2020-03-18 System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors

Country Status (6)

Country Link
US (1) US11409560B2 (de)
JP (1) JP2022526765A (de)
KR (1) KR20210134322A (de)
CN (1) CN113366410A (de)
DE (1) DE112020001586T5 (de)
WO (1) WO2020197870A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7287147B2 (ja) * 2019-06-26 2023-06-06 富士通株式会社 演算処理装置および演算処理装置の制御方法
KR20210016707A (ko) * 2019-08-05 2021-02-17 삼성전자주식회사 성능효율을 바탕으로 한 스케줄링 방법, 스케줄링 장치 및 컴퓨터 판독가능 저장 매체
CN114424168A (zh) 2019-09-27 2022-04-29 英特尔公司 用于软件定义的硅安全性的系统、方法和装置
US11573830B2 (en) * 2019-09-27 2023-02-07 Intel Corporation Software defined silicon implementation and management
US11775298B2 (en) * 2020-04-24 2023-10-03 Intel Corporation Frequency scaling for per-core accelerator assignments
US11977612B2 (en) 2020-07-07 2024-05-07 Intel Corporation Software defined silicon guardianship
US11989077B2 (en) * 2021-12-06 2024-05-21 Mediatek Inc. Maximum current suppression for power management in a multi-core system
CN116755542B (zh) * 2023-06-16 2024-06-04 北京市合芯数字科技有限公司 一种整机功耗降低方法、系统、基板管理控制器及服务器

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447923B2 (en) 2005-08-19 2008-11-04 International Business Machines Corporation Systems and methods for mutually exclusive activation of microprocessor resources to control maximum power
US7600077B2 (en) * 2007-01-10 2009-10-06 Arm Limited Cache circuitry, data processing apparatus and method for handling write access requests
US8010822B2 (en) * 2008-03-28 2011-08-30 Microsoft Corporation Power-aware thread scheduling and dynamic use of processors
US8190939B2 (en) * 2009-06-26 2012-05-29 Microsoft Corporation Reducing power consumption of computing devices by forecasting computing performance needs
US8504854B2 (en) 2010-06-21 2013-08-06 Advanced Micro Devices, Inc. Managing multiple operating points for stable virtual frequencies
US8943334B2 (en) 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
US8806232B2 (en) 2010-09-30 2014-08-12 Apple Inc. Systems and method for hardware dynamic cache power management via bridge and power manager
US8984305B2 (en) 2010-12-21 2015-03-17 Intel Corporation Method and apparatus to configure thermal design power in a microprocessor
US9411395B2 (en) 2013-04-18 2016-08-09 Intel Corporation Method and apparatus to control current transients in a processor
JP6381899B2 (ja) * 2013-12-05 2018-08-29 ルネサスエレクトロニクス株式会社 半導体装置の設計方法、設計支援プログラム、設計装置、及び、半導体装置
US9703613B2 (en) * 2013-12-20 2017-07-11 Qualcomm Incorporated Multi-core dynamic workload management using native and dynamic parameters
US10114435B2 (en) 2013-12-23 2018-10-30 Intel Corporation Method and apparatus to control current transients in a processor
US9323525B2 (en) * 2014-02-26 2016-04-26 Intel Corporation Monitoring vector lane duty cycle for dynamic optimization
US10108454B2 (en) * 2014-03-21 2018-10-23 Intel Corporation Managing dynamic capacitance using code scheduling
US9983611B1 (en) * 2014-05-29 2018-05-29 Amazon Technologies, Inc. Power management in a complex integrated circuit
US11126433B2 (en) * 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US20180032335A1 (en) * 2016-07-31 2018-02-01 Microsoft Technology Licensing, Llc Transactional register file for a processor
US10551901B2 (en) * 2017-07-01 2020-02-04 Microsoft Technology Licensing, Llc Core frequency management using effective utilization for power-efficient performance
US10732698B2 (en) * 2017-11-15 2020-08-04 Nxp B.V. Event-based power manager

Also Published As

Publication number Publication date
KR20210134322A (ko) 2021-11-09
WO2020197870A1 (en) 2020-10-01
US20200310872A1 (en) 2020-10-01
CN113366410A (zh) 2021-09-07
JP2022526765A (ja) 2022-05-26
US11409560B2 (en) 2022-08-09

Similar Documents

Publication Publication Date Title
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
US11048318B2 (en) Reducing microprocessor power with minimal performance impact by dynamically adapting runtime operating configurations using machine learning
DE112019001522T5 (de) System, vorrichtung und verfahren zur optimierten drosselung eines prozessors
US9910481B2 (en) Performing power management in a multicore processor
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
DE102018125236A1 (de) System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand
DE112019000693T5 (de) System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor
DE102020134491A1 (de) System, Vorrichtung und Verfahren zum dynamischen Justieren von Plattformenergie und -leistung basierend auf Aufgabeneigenschaften
DE112019001001T5 (de) System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen
DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
DE112020000231T5 (de) Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität
DE112016004776T5 (de) Datenkomprimierung unter Verwendung eines Beschleunigers mit mehreren Suchmaschinen
DE112017001805T5 (de) Bestimmen von thermischen obergrenzen in einem prozessor mit mehreren dies
DE102018129330A1 (de) System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors
DE202015009867U1 (de) Einrichtung zum Bereitstellen einer Wärmeparametermeldung für eine Mehrchip-Baugruppe
DE112017003080T5 (de) Prozessor mit gleichzeitigem kern und gewebeausgang aus einem zustand mit geringer energie
DE102020130910A1 (de) System, vorrichtung und verfahren für dynamische energiezustandsskalierung eines spannungsreglers für einen prozessor
DE112017005000T5 (de) Prozessorspannungssteuerung unter verwendung eines beweglichen mittelwerts
DE112017004991T5 (de) Ausgleichssteuerung für variable energieschienen
DE112018004329T5 (de) Steuerblöcke zur prozessorleistungsverwaltung
DE112017003873T5 (de) Bereitstellung einer Schnittstelle für Herabstufungssteuerinformationen in einem Prozessor
DE102020127742A1 (de) System, vorrichtung und verfahren für eine global bewusste reaktive lokale leistungssteuerung in einem prozessor
DE102020128219A1 (de) System, Einrichtung und Verfahren zur Latenzüberwachung und Reaktion
DE112019002564T5 (de) System, Vorrichtung und Verfahren zur dynamischen Wärmeverteilung eines Ein-Chip-Systems