DE112018004329T5 - Steuerblöcke zur prozessorleistungsverwaltung - Google Patents

Steuerblöcke zur prozessorleistungsverwaltung Download PDF

Info

Publication number
DE112018004329T5
DE112018004329T5 DE112018004329.0T DE112018004329T DE112018004329T5 DE 112018004329 T5 DE112018004329 T5 DE 112018004329T5 DE 112018004329 T DE112018004329 T DE 112018004329T DE 112018004329 T5 DE112018004329 T5 DE 112018004329T5
Authority
DE
Germany
Prior art keywords
processor
processing engine
slave processing
slave
master
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
DE112018004329.0T
Other languages
English (en)
Inventor
Alexander Gendler
Krishnakanth V. Sistla
Ankush Varma
Ariel Szapiro
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 DE112018004329T5 publication Critical patent/DE112018004329T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • G06F1/305Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations in the event of power-supply fluctuations
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Abstract

In einer Ausführungsform weist ein Prozessor eine Leistungssteuereinheit, eine Master-Verarbeitungsengine, eine Gruppe von Slave-Verarbeitungsengines und einen Spannungsregler auf. Die Master-Verarbeitungsengine steuert, als Reaktion auf einen Erhalt einer Änderungsnachricht von der Leistungssteuereinheit, den Spannungsregler, um einen Spannungspegel einzustellen, der der Master-Verarbeitungsengine und der Gruppe von Slave-Verarbeitungsengines bereitgestellt wird. Es werden andere Ausführungsformen beschrieben und beansprucht.

Description

  • Gebiet der Erfindung
  • Die Ausführungsformen beziehen sich allgemein auf Computerprozessoren. Genauer beziehen sich die Ausführungsformen auf Leistungsverwaltung in Computerprozessoren.
  • Allgemeiner Stand der Technik
  • Fortschritte bei der Halbleiterverarbeitung und der Logikgestaltung haben eine Erhöhung der Menge an Logik erlaubt, die bei integrierten Schaltungsvorrichtungen vorhanden sein kann. Folglich haben sich Computersystemkonfigurationen von einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Hardwarethreads, mehreren Kernen, mehreren Vorrichtungen und/oder kompletten Systemen auf einzelnen integrierten Schaltungen entwickelt. Ferner haben auch die Leistungsanforderungen für Computersysteme mit wachsender Dichte der integrierten Schaltungen zugenommen. Folglich besteht ein vitales Bedürfnis nach Energieeffizienz und - aufrechterhaltung in Verbindung mit integrierten Schaltungen.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 ist ein Blockdiagramm eines Mehrfachdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne aufweist.
    • 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform.
    • 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer anderen Ausführungsform.
    • 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform.
    • 9 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 10 ist ein Blockdiagramm eines repräsentativen SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 11 ist ein Blockdiagramm eines anderen beispielhaften SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines beispielhaften Systems, mit welchem die Ausführungsformen verwendet werden können.
    • 13 ist ein Blockdiagramm eines anderen beispielhaften Systems, mit welchem die Ausführungsformen verwendet werden können.
    • 14 ist ein Blockdiagramm eines repräsentativen Computersystems.
    • 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 16 ist ein Blockdiagramm, das ein IP-Kern-Entwicklungssystem veranschaulicht, das verwendet wird, um eine integrierte Schaltung herzustellen, um Operationen gemäß einer Ausführungsform durchzuführen.
    • 17A-17B sind Blockdiagramme, die ein generisches vektorfreundliches Befehlsformat und Befehlsvorlagen davon gemäß Ausführungsformen der Erfindung veranschaulichen.
    • 18A-18D sind Blockdiagramme, die ein beispielhaftes spezifisches vektorfreundliches Befehlsformat gemäß Ausführungsformen der Erfindung veranschaulichen.
    • 19 ist ein Blockdiagramm einer Registerarchitektur gemäß einer Ausführungsform der Erfindung.
    • 20A ist ein Blockdiagramm, das sowohl eine beispielhafte In-order-Pipeline als auch eine beispielhafte Registerumbenennungs-, Out-of-order-Ausgabe-/Ausführungspipeline gemäß Ausführungsformen der Erfindung veranschaulicht.
    • 20B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines In-order-Architekturkerns als auch einen beispielhaften Registerumbenennungs-, Out-of-order-Ausgabe-/Ausführungsarchitekturkern, die in einem Prozessor aufzunehmen sind, gemäß Ausführungsformen der Erfindung veranschaulicht.
    • 21A-B veranschaulichen ein Blockdiagramm einer spezifischeren beispielhaften In-order-Kernarchitektur, wobei der Kern einer von mehreren logischen Blöcken (einschließlich anderer Kerne derselben Art und/oder verschiedener Arten) in einem Chip sein würde.
    • 22 ist ein Blockdiagramm eines Prozessors, der mehr als einen Kern aufweisen kann, einen integrierten Speicher-Controller aufweisen kann und eine integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung.
    • 23-24 sind Blockdiagramme von beispielhaften Computerarchitekturen.
    • 25 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlswandlers zum Umwandeln von binären Befehlen in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung gegenüberstellt.
    • 26 ist ein Diagramm eines beispielhaften Systems gemäß einer oder mehreren Ausführungsformen.
    • 27 ist eine Veranschaulichung einer beispielhaften Operation gemäß einer oder mehreren Ausführungsformen.
    • 28 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 29 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
  • Ausführliche Beschreibung
  • Einige Computerprozessoren können mehrere Verarbeitungsengines oder „-kerne“ aufweisen. In einigen Beispielen kann eine Verarbeitungsengine in der Lage sein, mit einem anderen Energie- und/oder Leistungszustand als die anderen Verarbeitungsengines zu arbeiten. Zum Beispiel kann eine erste Verarbeitungsengine mit einer relativ hohen Spannung und/oder hohen Betriebsfrequenz (auch als „Taktfrequenz“ bezeichnet) arbeiten, während eine zweite Verarbeitungsengine gleichzeitig mit einer relativ geringen Spannung und/oder geringen Taktfrequenz arbeiten kann. In einigen Beispielen kann eine Leistungssteuereinheit die Leistungszustände der Verarbeitungskerne in einem Prozessor ändern. Solche Änderungen können jedoch die Koordination von mehreren Nachrichten zu und von den Verarbeitungsengines implizieren und können somit zu deutlichen Zeitverzögerungen während den Änderungen führen. Dementsprechend reagiert die Steuerung von Leistungszuständen möglicherweise nicht auf schnelle Änderungen der Verarbeitungslast der Engines.
  • Gemäß einigen Ausführungsformen kann eine Gruppe von Verarbeitungsengines (hierin als eine „Steuergruppe“ bezeichnet) eine Master-Verarbeitungsengine und eine Gruppe von Slave-Verarbeitungsengines umfassen. Die Master-Verarbeitungsengine kann eine Angabe einer Leistungszustandsänderung von einer Leistungssteuereinheit erhalten und Aktionen für die Steuergruppe (d. h., die Master-Verarbeitungsengine und die Slave-Verarbeitungsengines) koordinieren, um den Leistungszustand zu ändern. Nachdem alle Aktionen der Steuergruppe abgeschlossen sind, kann die Master-Verarbeitungsengine die Leistungssteuereinheit benachrichtigen. Dadurch kann die Master-Verarbeitungsengine die Änderung bezüglich eines neuen Leistungszustands koordinieren und eine einzelne zusammengefasste Antwort bezüglich der Leistungssteuereinheit bereitstellen. Dementsprechend können in einigen Ausführungsformen die Zeit und die Komplexität, die für die Umstellung benötigt werden, verringert werden, und kann die Effizienz und Reaktionsfähigkeit der Leistungsverwaltung verbessert werden. Verschiedene Details einiger Ausführungsformen sind weiter nachstehend unter Bezugnahme auf 26-29 beschrieben. Ferner sind beispielhafte Systeme und Architekturen nachstehend unter Bezugnahme auf 1-25 beschrieben.
  • Beispielhafte Systeme und Architekturen
  • Wenngleich die folgenden Ausführungsformen unter Bezugnahme auf konkrete Implementierungen beschrieben sind, sind die Ausführungsformen nicht diesbezüglich beschränkt. Insbesondere ist vorgesehen, dass ähnliche Techniken und Lehren von Ausführungsformen, die hierin beschrieben sind, bei anderen Arten von Schaltungen, Halbleitervorrichtungen, Prozessoren, Systemen usw. angewendet werden können. Zum Beispiel können die offenbarten Ausführungsformen bei einer beliebigen Art von Computersystem einschließlich Servercomputern (z. B. Tower, Rack, Blade, Mikroserver und so weiter), Kommunikationssystemen, Speichersystemen, Desktopcomputern einer beliebigen Konfiguration, Laptop, Notebook und Tablet-Computern (einschließlich 2:1-Tablets, Phablets und so weiter) implementiert werden.
  • Zusätzlich können die offenbarten Ausführungsformen auch bei anderen Vorrichtungen, wie etwa Handheld-Vorrichtungen, Systemen-auf-Chip (SoCs, Systems on Chip) und eingebetteten Anwendungen, verwendet werden. Einige Beispiele von Handheld-Vorrichtungen umfassen zelluläre Telefone, wie etwa Smartphones, Internetprotokoll-Vorrichtungen, Digitalkameras, Persönliche Digitale Assistenten (PDAs) und Handheld-PCs. Eingebettete Anwendungen können typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), Netzwerkcomputer (NetPC), Set-top-Boxen, Netzwerkhubs, Großraumnetzwerk(WAN, Wide Area Network)-schalter, tragbare Vorrichtungen oder ein beliebiges sonstiges System, das die Funktionen und Operationen, die nachstehend gelehrt werden, durchführen kann, umfassen. Ferner können die Ausführungsformen in mobilen Endgeräten, die eine Standardsprachfunktionalität aufweisen, wie etwa Mobiltelefone, Smartphones und Phablets, und/oder in nichtmobilen Endgeräten ohne eine Standarddrahtlossprachfunktionskommunikationsfähigkeit, wie etwa viele Wearables, Tablets, Notebooks, Desktops, Mikroserver, Server und so weiter, implementiert werden.
  • Unter Bezugnahme nunmehr auf 1 ist ein Blockdiagramm eines Teils eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt ist, kann das System 100 verschiedene Komponenten einschließlich eines Prozessors 110, welcher als ein Mehrkernprozessor gezeigt ist, aufweisen. Der Prozessor 110 kann über einen externen Spannungsregler 160 mit einer Stromversorgung 150 gekoppelt sein, welcher eine erste Spannungswandlung zum Bereitstellen einer primären geregelten Spannung Vreg an den Prozessor 110 durchführen kann.
  • Wie zu sehen ist, kann der Prozessor 110 ein Einchipprozessor sein, der mehrere Kerne 120a - 120n aufweist. Zusätzlich kann jeder Kern mit einem integrierten Spannungsregler (IVR, Integrated Voltage Regulator) 125a - 125n verknüpft sein, welcher die primäre geregelte Spannung empfängt und eine Betriebsspannung erzeugt, die einem oder mehreren Agenten des Prozessors bereitzustellen ist, die mit dem IVR verknüpft sind. Dementsprechend kann eine IVR-Implementierung bereitgestellt werden, um eine genaue Steuerung der Spannung und somit der Energie und Leistung jedes einzelnen Kerns zu erlauben. Von daher kann jeder Kern mit einer unabhängigen Spannung und Frequenz arbeiten, was eine hohe Flexibilität ermöglicht und breite Möglichkeiten zum Ausgleichen des Stromverbrauchs mit Leistungsfähigkeit bietet. In einigen Ausführungsformen ermöglicht die Verwendung von mehreren IVRs das Gruppieren von Komponenten in separate Leistungsebenen, so dass die Leistung durch den IVR geregelt und nur jenen Komponenten in der Gruppe zugeführt wird. Während der Leistungsverwaltung kann eine gegebene Leistungsebene eines IVR herunter- oder ausgeschaltet werden, wenn der Prozessor in einen bestimmten Zustand mit geringer Leistung gebracht wird, während eine andere Leistungsebene eines anderen IVR aktiv oder vollständig eingeschaltet bleibt. Ähnlich können die Kerne 120 eine unabhängige Takterzeugungsschaltungsanordnung, wie etwa eine oder mehrere Phasenregelschleifen (PLLs, Phase Lock Loops), aufweisen oder mit dieser verknüpft sein, um die Betriebsfrequenz jedes Kerns 120 unabhängig zu steuern.
  • Immer noch unter Bezugnahme auf 1 können zusätzliche Komponenten innerhalb des Prozessors einschließlich einer Eingangs-/Ausgangsschnittstelle (IF, Interface) 132, einer anderen Schnittstelle 134 und eines integrierten Speichercontrollers (IMC, Integrated Memory Controller) 136 vorhanden sein. Wie zu sehen ist, kann jede dieser Komponenten von einem anderen integrierten Spannungsregler 125x bestromt werden. In einer Ausführungsform kann die Schnittstelle 132 den Betrieb für eine Intel@ Quick Path Interconnect(QPI)-Verschaltung ermöglichen, welche Punkt-zu-Punkt(PtP, Point-to-Point)-Verknüpfungen in einem Cache-Kohärenz-Protokoll bereitstellt, das mehrere Schichten einschließlich einer physischen Schicht, einer Verbindungsschicht und einer Protokollschicht aufweist. Dagegen kann die Schnittstelle 134 über ein Peripheral Component Interconnect Express(PCIe™)-Protokoll kommunizieren.
  • Ebenfalls ist eine Leistungssteuereinheit (PCU, Power Control Unit) 138 gezeigt, welche eine Schaltungsanordnung aufweisen kann, die Hardware, Software und/oder Firmware umfasst, um Leistungsverwaltungsoperationen bezüglich des Prozessors 110 durchzuführen. Wie zu sehen ist, liefert die PCU 138 dem externen Spannungsregler 160 Steuerinformationen über eine digitale Schnittstelle 162, um zu bewirken, dass der Spannungsregler die geeignete geregelte Spannung erzeugt. Die PCU 138 liefert auch den IVRs 125 Steuerinformationen über eine andere digitale Schnittstelle 163, um die Betriebsspannung zu steuern, die erzeugt wird (oder um zu bewirken, dass ein entsprechender IVR in einem Modus mit geringer Leistung deaktiviert wird). In verschiedenen Ausführungsformen kann die PCU 138 eine Vielfalt an Leistungsverwaltungslogikeinheiten aufweisen, um eine hardwarebasierte Leistungsverwaltung durchzuführen. Solch eine Leistungsverwaltung kann vollständig prozessorgesteuert sein (z. B. durch diverse Prozessorhardware, und welche durch Arbeitslast- und/oder Leistungs-, thermische oder sonstige Prozessorbeschränkungen ausgelöst werden kann), und/oder die Leistungsverwaltung kann als Reaktion auf externe Quellen (wie etwa eine Plattform oder Leistungsverwaltungsquelle oder Systemsoftware) durchgeführt werden.
  • In 1 ist die PCU 138 derart veranschaulicht, dass sie als eine separate Logik des Prozessors vorhanden ist. In anderen Fällen kann die PCU 138 auf einem oder mehreren gegebenen der Kerne 120 ausgeführt werden. In einigen Fällen kann die PCU 138 als ein Mikrocontroller (dediziert oder universal) oder eine andere Steuerlogik, die konfiguriert ist, um ihren eigenen dedizierten Leistungsverwaltungscode, der manchmal als P-Code bezeichnet wird, auszuführen, implementiert sein. In noch anderen Ausführungsformen können Leistungsverwaltungsoperationen, die von der PCU 138 durchzuführen sind, extern bezüglich eines Prozessors implementiert werden, wie etwa durch eine separate integrierte Leistungsverwaltungsschaltung (PMIC, Power Management Integrated Circuit) oder eine andere Komponente, die bezüglich des Prozessors extern ist. In noch anderen Ausführungsformen können Leistungsverwaltungsoperationen, die von der PCU 138 durchzuführen sind, innerhalb von BIOS oder einer anderen Systemsoftware implementiert werden.
  • Wenngleich es nicht in 1 gezeigt ist, können in einigen Ausführungsformen der Prozessor 110 und/oder ein Kern 120 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Die Ausführungsformen können insbesondere für einen Mehrkernprozessor geeignet sein, in welchem jeder von mehreren Kernen mit einem unabhängigen Spannungs- und Frequenzpunkt arbeiten kann. Wie hierin verwendet, wird der Begriff „Domäne“ verwendet, um sich auf eine Sammlung von Hardware und/oder Logik zu beziehen, die mit dem gleichen Spannungs- und Frequenzpunkt arbeitet. Außerdem kann ein Mehrkernprozessor ferner andere Nicht-Kern-Verarbeitungsmaschinen umfassen, wie beispielsweise Festfunktionseinheiten, Grafikengines und so weiter. Solch ein Prozessor kann unabhängige Domänen neben den Kernen umfassen, wie beispielsweise eine oder mehrere Domänen, die mit einer Grafikmaschine assoziiert sind (hierin als Grafikdomäne bezeichnet), und eine oder mehrere Domänen, die mit Nicht-Kern-Schaltungsanordnung assoziiert sind, die hierin als Systemagent bezeichnet wird. Wenngleich viele Implementierungen eines Mehrdomänenprozessors auf einem einzelnen Halbleiterchip gebildet werden können, können andere Implementierungen durch eine Mehrfachchippackung realisiert werden, in welcher verschiedene Domänen auf einem unterschiedlichen Halbleiterchip einer einzelnen Packung vorhanden sein können.
  • Wenngleich es für eine bequemere Veranschaulichung nicht gezeigt ist, versteht sich, dass zusätzliche Komponenten innerhalb des Prozessors 110 vorhanden sein können, wie etwa eine Nicht-Kern-Logik, und sonstige Komponenten, wie etwa interne Speicher, z. B. eine oder mehrere Ebenen einer Cache-Speicher-Hierarchie und so weiter. Wenngleich sie in der Implementierung von 1 mit einem integrierten Spannungsregler gezeigt sind, sind die Ausführungsformen nicht derart beschränkt. Zum Beispiel können andere geregelte Spannungen Ressourcen auf einem Chip von dem externen Spannungsregler 160 oder einer oder mehreren zusätzlichen externen Quellen von geregelten Spannungen bereitgestellt werden.
  • Es sei darauf hingewiesen, dass die hierin beschriebenen Leistungsverwaltungstechniken unabhängig von und komplementär zu einem betriebssystem(OS, Operating System)-basierten Leistungsverwaltungs(OSPM, Operating System based Power Mechanism)-mechanismus sein können. Gemäß einer beispielhaften OSPM-Technik kann ein Prozessor mit verschiedenen Leistungszuständen oder -ebenen, sogenannten P-Zuständen, nämlich von P0 bis PN, arbeiten. Allgemein kann der P1-Leistungszustand dem höchsten garantierten Leistungszustand entsprechen, der von einem OS angefordert werden kann. Zusätzlich zu diesem P1-Zustand kann das OS ferner einen höheren Leistungszustand, nämlich einen P0-Zustand, anfordern. Dieser P0-Zustand kann somit ein opportunistischer, übertakteter Zustand oder Turbomoduszustand, in welchem, wenn eine Leistungs- und/oder Wärmebilanz verfügbar ist, Prozessorhardware den Prozessor oder zumindest Teile davon derart konfigurieren kann, dass sie mit einer höheren Frequenz als der garantierten Frequenz arbeiten, sein. Bei vielen Implementierungen kann ein Prozessor mehrere sogenannte Binärfrequenzen oberhalb der garantierten maximalen P1-Frequenz aufweisen, die bis zu einer maximalen Spitzenfrequenz des konkreten Prozessors reichen, wie sie zusammengefügt oder anderweitig in den Prozessor während der Herstellung geschrieben werden. Zusätzlich kann gemäß einem OSPM-Mechanismus ein Prozessor mit verschiedenen Leistungszuständen oder -ebenen arbeiten. Bezüglich der Leistungszustände kann ein OSPM-Mechanismus verschiedene Stromverbrauchszustände spezifizieren, die allgemein als C-Zustände, C0-, C1- bis Cn-Zustände, bezeichnet werden. Wenn ein Kern aktiv ist, wird er in einem C0-Zustand ausgeführt, und wenn der Kern inaktiv ist, kann er in einen Kernzustand mit geringer Leistung gebracht werden, der auch Kern-Nicht-Null-C-Zustand (z. B. C1-C6-Zustände) genannt wird, wobei sich jeder C-Zustand auf einem geringeren Stromverbrauchspegel befindet (so dass C6 ein tieferer Zustand mit geringer Leistung als C1 ist, und so weiter).
  • Es versteht sich, dass viele verschiedene Arten von Leistungsverwaltungstechniken einzeln oder in Kombination in verschiedenen Ausführungsformen verwendet werden können. Als repräsentative Beispiele kann ein Leistungscontroller den Prozessor derart steuern, dass seine Leistung durch eine Art von dynamischer Spannungsfrequenzskalierung (DVFS, Dynamic Voltage Frequency Scaling) verwaltet wird, bei welcher eine Betriebsspannung und/oder Betriebsfrequenz von einem oder mehreren Kernen oder einer anderen Prozessorlogik dynamisch gesteuert werden können, um den Stromverbrauch in bestimmten Situationen zu verringern. In einem Beispiel kann die DVFS unter Verwendung von Enhanced Intel SpeedStep™-Technologie durchgeführt werden, die bei Intel Corporation, Santa Clara, CA, erhältlich ist, um eine optimale Leistung mit einem geringsten Stromverbrauchspegel bereitzustellen. In einem anderen Beispiel kann die DVFS unter Verwendung von Intel TurboBoost™-Technologie durchgeführt werden, um zu ermöglichen, dass ein oder mehrere Kerne oder sonstige Rechenengines mit einer höheren als der garantierten Betriebsfrequenz basierend auf Bedingungen (z. B. Arbeitslast und Verfügbarkeit) arbeiten.
  • Eine andere Leistungsverwaltungstechnik, die in bestimmten Beispielen verwendet werden kann, ist ein dynamisches Tauschen von Arbeitslasten unter verschiedenen Rechenengines. Zum Beispiel kann der Prozessor asymmetrische Kerne oder sonstige Verarbeitungsengines aufweisen, die mit verschiedenen Stromverbrauchspegeln arbeiten, so dass in einer leistungsbeschränkten Situation eine oder mehrere Arbeitslasten dynamisch gewechselt werden können, um auf einem Kern mit geringerer Leistung oder einer anderen Rechenengine ausgeführt zu werden. Eine andere beispielhafte Leistungsverwaltungstechnik ist Hardware Duty Cycling (HDC), was bewirken kann, dass Kerne und/oder sonstige Rechenengines periodisch gemäß einem Arbeitszyklus aktiviert und deaktiviert werden, so dass ein oder mehrere Kerne während einem inaktiven Zeitraum des Arbeitszyklus inaktiv gemacht werden können und während einem aktiven Zeitraum des Arbeitszyklus aktiv gemacht werden können.
  • Leistungsverwaltungstechniken können auch verwendet werden, wenn Beschränkungen in einer Betriebsumgebung vorhanden sind. Wenn zum Beispiel eine Leistungs- und/oder Wärmebeschränkung vorgefunden wird, kann die Leistung durch Verringern der Betriebsfrequenz und/oder -spannung verringert werden. Andere Leistungsverwaltungstechniken umfassen das Drosseln der Befehlsausführungsrate oder das Beschränken der Planung von Befehlen. Ferner ist es möglich, dass Befehle einer gegebenen Befehlssatzarchitektur eine ausdrückliche oder implizite Richtung bezüglich Leistungsverwaltungsoperationen aufweisen. Wenngleich sie mit diesen konkreten Beispielen beschrieben sind, versteht sich, dass viele andere Leistungsverwaltungstechniken in konkreten Ausführungsformen verwendet werden können.
  • Die Ausführungsformen können in Prozessoren für verschiedene Märkte einschließlich Serverprozessoren, Desktopprozessoren, mobiler Prozessoren und so weiter, implementiert werden. Unter Bezugnahme nunmehr auf 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt ist, kann der Prozessor 200 ein Mehrkernprozessor sein, der mehrere Kerne 210a - 210n aufweist. In einer Ausführungsform kann jeder solche Kern eine unabhängige Leistungsdomäne aufweisen und konfiguriert sein, um in aktive Zustände und/oder maximale Leistungszustände basierend auf der Arbeitslast einzutreten und diese zu verlassen. Einer oder mehrere Kerne 210 können bezüglich der anderen Kerne heterogen sein, z. B. verschiedene Mikroarchitekturen, Befehlssatzarchitekturen, Pipelinetiefen, Energie- und Leistungsfähigkeiten aufweisen. Die verschiedenen Kerne können über eine Verschaltung 215 mit einem Systemagenten 220 gekoppelt sein, der verschiedene Komponenten aufweist. Wie zu sehen ist, kann der Systemagent 220 einen gemeinsamen Cache 230 aufweisen, welcher ein Last-Level-Cache sein kann. Zusätzlich kann der Systemagent einen integrierten Speichercontroller 240 aufweisen, um mit einem Systemspeicher (nicht in 2 gezeigt), z. B. über einen Speicherbus, zu kommunizieren. Der Systemagent 220 weist auch verschiedene Schnittstellen 250 und eine Leistungssteuereinheit 255 auf, welche eine Logik aufweisen können, um die hierin beschriebenen Leistungsverwaltungstechniken durchzuführen.
  • Zusätzlich kann über die Schnittstellen 250a-250n eine Verbindung zu verschiedenen Komponenten außerhalb des Chips, wie etwa peripheren Vorrichtungen, Massenspeicher und so weiter, hergestellt werden. Wenngleich er mit dieser konkreten Implementierung in der Ausführungsform von 2 gezeigt ist, ist der Umfang der vorliegenden Erfindung nicht diesbezüglich beschränkt.
  • Wenngleich es nicht in 2 gezeigt ist, kann in einigen Ausführungsformen der Prozessor 200 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme nunmehr auf 3 ist ein Blockdiagramm eines Mehrfachdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in der Ausführungsform von 3 gezeigt ist, weist der Prozessor 300 mehrere Domänen auf. Insbesondere kann eine Kerndomäne 310 mehrere Kerne 310a-310n aufweisen, kann eine Grafikdomäne 320 eine oder mehrere Grafikengines aufweisen, und kann ferner eine Systemagentendomäne 350 vorhanden sein. In einigen Ausführungsformen kann die Systemagentendomäne 350 mit einer unabhängigen Frequenz in Bezug auf die Kerndomäne ausgeführt werden und zu jeder Zeit eingeschaltet bleiben, um Leistungssteuerereignisse und die Leistungsverwaltung handzuhaben, so dass die Domänen 310 und 320 derart gesteuert werden können, dass sie dynamisch in Zustände mit hoher Leistung und geringer Leistung eintreten und diese verlassen. Jede der Domänen 310 und 320 kann mit einer anderen Spannung und/oder Leistung arbeiten. Es sei darauf hingewiesen, dass, wenngleich er nur mit drei Domänen gezeigt ist, der Umfang der vorliegenden Erfindung nicht diesbezüglich beschränkt ist und zusätzliche Domänen in anderen Ausführungsformen vorhanden sein können. Zum Beispiel können mehrere Kerndomänen vorhanden sein, die jeweils mindestens einen Kern aufweisen.
  • Allgemein kann jeder der Kerne 310a-310n ferner Low-Level-Caches zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen aufweisen. Dagegen können die verschiedenen Kerne miteinander und mit einem gemeinsamen Cache-Speicher, der aus mehreren Einheiten eines Last-Level-Caches (LLC) 340a-340n gebildet ist, gekoppelt sein. In verschiedenen Ausführungsformen kann der LLC 340 unter den Kernen und der Grafikengine sowie verschiedenen Medienverarbeitungsschaltungsanordnungen geteilt werden. Wie zu sehen ist, koppelt somit eine Ringverschaltung 330 die Kerne zusammen und stellt eine Verschaltung zwischen den Kernen, der Grafikdomäne 320 und der Systemagentendomäne 350 bereit. In einer Ausführungsform kann die Verschaltung 330 Teil der Kerndomäne sein. In anderen Ausführungsformen kann die Ringverschaltung jedoch ihre eigene Domäne aufweisen.
  • Wie ferner zu sehen ist, kann die Systemagentendomäne 350 eine Anzeigesteuerung 352 aufweisen, welche eine Steuerung einer zugehörigen Anzeige und eine Schnittstelle mit dieser bereitstellen kann. Wie ferner zu sehen ist, kann die Systemagentendomäne 350 eine Leistungssteuereinheit 355 aufweisen, welche eine Logik aufweisen kann, um die hierin beschriebenen Leistungsverwaltungstechniken durchzuführen.
  • Wie ferner in 3 zu sehen ist, kann der Prozessor 300 ferner einen integrierten Speichercontroller (IMC, Integrated Memory Controller) 370 aufweisen, der eine Schnittstelle zu einem Systemspeicher, wie etwa einen dynamischen Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory), bereitstellen kann. Es können mehrere Schnittstellen 380a - 380n vorhanden sein, um eine Verschaltung zwischen dem Prozessor und einer anderen Schaltungsanordnung zu ermöglichen. Zum Beispiel können in einer Ausführungsform mindestens eine direkte Medienschnittstelle (DMI, Direct Media Interface) sowie eine oder mehrere PCIe™-Schnittstellen bereitgestellt werden. Weiter können auch eine oder mehrere QPI-Schnittstellen bereitgestellt werden, um Kommunikationen zwischen anderen Agenten, wie etwa zusätzlichen Prozessoren oder eine andere Schaltungsanordnung, bereitzustellen. Wenngleich er auf dieser hohen Ebene in der Ausführungsform von 3 gezeigt ist, versteht sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich beschränkt ist.
  • Wenngleich es nicht in 3 gezeigt ist, kann in einigen Ausführungsformen der Prozessor 300 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme auf 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne aufweist, veranschaulicht. Der Prozessor 400 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzwerkprozessor, einen in der Hand gehaltenen Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein System auf einem Chip (SoC) oder eine sonstige Vorrichtung zum Ausführen von Code. Der Prozessor 400 weist in einer Ausführungsform mindestens zwei Kerne - die Kerne 401 und 402, auf, welche asymmetrische Kerne oder symmetrische Kerne (die veranschaulichte Ausführungsform) umfassen können. Der Prozessor 400 kann jedoch eine beliebige Anzahl an Verarbeitungselementen aufweisen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder eine Logik zum Unterstützen eines Softwarethreads. Beispiele von Hardwareverarbeitungselementen umfassen: eine Thread-Einheit, einen Thread-Schlitz, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen Logikprozessor, einen Hardwarethread, einen Kern und/oder ein beliebiges sonstiges Element, welches in der Lage ist, einen Zustand für einen Prozessor zu halten, wie etwa einen Ausführungszustand oder architektonischen Zustand. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf eine beliebige Hardware, die in der Lage ist, unabhängig mit Code verknüpft zu werden, wie etwa ein Softwarethread, ein Betriebssystem, eine Anwendung oder ein sonstiger Code. Ein physikalischer Prozessor bezieht sich typischerweise auf eine integrierte Schaltung, welche potentiell eine beliebige Anzahl an sonstigen Verarbeitungselementen, wie etwa Kerne oder Hardwarethreads, aufweist.
  • Ein Kern bezieht sich oft auf eine Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen architektonischen Zustand beizubehalten, wobei jeder unabhängig beibehaltene architektonische Zustand mit mindestens einigen dedizierten Ausführungsressourcen verknüpft ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen architektonischen Zustand beizubehalten, wobei sich die unabhängig beibehaltenen architektonischen Zustände einen Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, überlappt sich die Linie zwischen der Nomenklatur eines Hardwarethreads und eines Kerns, wenn bestimmte Ressourcen geteilt und andere Ressourcen für einen architektonischen Zustand bestimmt werden. Oft werden jedoch ein Kern und ein Hardwarethread von einem Betriebssystem als einzelne logische Prozessoren betrachtet, wobei das Betriebssystem in der Lage ist, einzeln Operationen auf jedem Logikprozessor zu planen.
  • Der physikalische Prozessor 400, wie in 4 veranschaulicht, weist zwei Kerne auf, die Kerne 401 und 402. Hier werden die Kerne 401 und 402 als symmetrische Kerne betrachtet, d. h., Kerne mit denselben Konfigurationen, funktionellen Einheiten und/oder derselben Logik. In einer anderen Ausführungsform umfasst der Kern 401 einen Out-of-order-Prozessorkern, während der Kern 402 einen In-order-Prozessorkern umfasst. Die Kerne 401 und 402 können jedoch einzeln aus einer beliebigen Art von Kern, wie etwa einem nativen Kern, einem durch Software verwalteten Kern, einem Kern, der eingerichtet ist, um eine native Befehlssatzarchitektur (ISA, Instruction Set Architecture) auszuführen, einem Kern, der eingerichtet ist, um eine übersetzte ISA durchzuführen, einem gemeinsam gestalteten Kern oder einem sonstigen bekannten Kern ausgewählt werden. Zur weiteren Erörterung jedoch werden die funktionellen Einheiten, die in dem Kern 401 veranschaulicht sind, nachstehend ausführlicher beschrieben, da die Einheiten in dem Kern 402 auf eine ähnliche Art arbeiten.
  • Wie dargestellt ist, weist der Kern 401 zwei Hardware-Threads 401a und 401b auf, welche auch als Hardware-Thread-Schlitze 401a und 401b bezeichnet werden können. Daher betrachten Softwareentitäten, wie etwa ein Betriebssystem, in einer Ausführungsform den Prozessor 400 potentiell als vier separate Prozessoren, d. h., vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Softwarethreads gleichzeitig auszuführen. Wie zuvor angedeutet wurde, ist ein erster Thread mit Architekturzustandsregistern 401a verknüpft, ist ein zweiter Thread mit Architekturzustandsregistern 401b verknüpft, kann ein dritter Thread mit Architekturzustandsregistern 402a verknüpft sein, und kann ein vierter Thread mit Architekturzustandsregistern 402b verknüpft sein. Hier kann jedes der Architekturzustandsregister (401a, 401b, 402a und 402b) als Verarbeitungselemente, Thread-Schlitze oder Thread-Einheiten bezeichnet werden, wie zuvor beschrieben wurde. Wie veranschaulicht ist, werden die Architekturzustandsregister 401a in den Architekturzustandsregistern 401b repliziert, so dass einzelne Architekturzustände/-kontexte in der Lage sind, für den Logikprozessor 401a und den Logikprozessor 401b gespeichert zu werden. In dem Kern 401 können andere kleinere Ressourcen, wie etwa Befehlszeiger und eine Umbenennungslogik in einem Zuweiser- und Umbenennerblock 430, auch für die Threads 401a und 401b repliziert werden. Einige Ressourcen, wie etwa Neuordnungspuffer in einer Neuordner-/Rückordnungseinheit 435, Verzweigungszielpuffer und Befehlsübersetzungs-Lookaside-Puffer (BTB (Branch Target Buffer) und I-TLB (Instruction Translation Lookaside Buffer)) 420, Lade-/Speicherpuffer und Warteschlangen, können durch Partitionierung geteilt werden. Andere Ressourcen, wie etwa interne Universalregister, Seiten-Tabellen-Basisregister, ein Datencache niederer Ebene und Daten-TLB 450, (eine) Ausführungseinheit(en) 440 und Teile der Neuordner-/Rückordnungseinheit 435 werden potentiell vollständig geteilt.
  • Der Prozessor 400 weist oft andere Ressourcen auf, welche vollständig geteilt, durch Partitionierung geteilt oder durch Verarbeitungselemente bzw. für diese bestimmt werden können. In 4 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors veranschaulicht. Es sei darauf hingewiesen, dass ein Prozessor beliebige dieser funktionellen Einheiten aufweisen oder weglassen kann und (eine) beliebige sonstige bekannte funktionelle Einheiten, Logik oder Firmware, die nicht dargestellt sind, aufweisen kann. Wie veranschaulicht ist, weist der Kern 401 einen vereinfachten, repräsentativen Out-of-order(OOO)-Prozessorkern auf. Es kann jedoch in verschiedenen Ausführungsformen ein In-order-Prozessor verwendet werden.
  • Der Kern 401 weist ferner ein Decodiermodul 425 auf, das mit einer Abrufeinheit gekoppelt ist, um abgerufene Elemente zu decodieren. Eine Abruflogik weist in einer Ausführungsform einzelne Sequenzierer auf, die jeweils mit den Thread-Schlitzen 401a, 401b verknüpft sind. Für gewöhnlich ist der Kern 401 mit einer ersten ISA verknüpft, welche Befehle definiert/spezifiziert, die auf dem Prozessor 400 ausgeführt werden können. Oft umfassen Maschinencodebefehle, die Teil der ersten ISA sind, einen Teil des Befehls (als Opcode bezeichnet), welcher einen Befehl oder eine Operation bezeichnet/spezifiziert, der bzw. die auszuführen ist. Das Decodermodul 425 weist eine Schaltungsanordnung auf, die diese Befehle anhand von ihren Opcodes erkennt und die decodierten Befehle in der Pipeline zur Verarbeitung weitergibt, wie durch die erste ISA definiert ist. Zum Beispiel weist das Decodermodul 425 in einer Ausführungsform eine Logik auf, die gestaltet oder eingerichtet ist, um spezifische Befehle, wie etwa einen Transaktionsbefehl, zu erkennen. Infolge der Erkennung durch das Decodiermodul 425 trifft die Architektur oder der Kern 401 spezifische, vorab definierte Maßnahmen, um Aufgaben durchzuführen, die mit dem geeigneten Befehl verknüpft sind. Es ist wichtig, darauf hinzuweisen, dass beliebige der Aufgaben, Blöcke, Operationen und Verfahren, die hierin beschrieben sind, als Reaktion auf einen einzelnen oder mehrere Befehle durchgeführt werden können; von welche einige neue oder alte Befehle sein können.
  • In einem Beispiel weist der Zuweiser- und Umbenennerblock 430 einen Zuweiser auf, um Ressourcen zu reservieren, wie etwa Registerdateien, um Befehlsverarbeitungsergebnisse zu speichern. Die Threads 401a und 401b sind jedoch potentiell in der Lage, eine Out-of-order-Ausführung durchzuführen, wobei der Zuweiser- und Umbenennerblock 430 auch andere Ressourcen, wie etwa Neuordnerpuffer, reserviert, um Befehlsergebnisse zu verfolgen. Der Umbenennerblock 430 kann auch einen Registerumbenenner aufweisen, um Programm-/Befehlsreferenzregister in andere Register, die bezüglich des Prozessors 400 intern sind, umzubenennen. Die Neuordner-/Rückordnungseinheit 435 weist Komponenten, wie etwa die zuvor genannten Neuordnerpuffer, Ladepuffer und Speicherpuffer, auf, um eine Out-of-order-Ausführung und später In-order-Rückordnung von Befehlen, die außerhalb der Reihenfolge ausgeführt werden, zu unterstützen.
  • Ein Planer- und Ausführungseinheit(en)block 440 in einer Ausführungsform weist eine Planereinheit auf, um Befehle/Betrieb auf Ausführungseinheiten zu planen. Zum Beispiel wird ein Gleitkommabefehl auf einem Port einer Ausführungseinheit geplant, der eine verfügbare Gleitkommaausführungseinheit aufweist. Registerdateien, die mit den Ausführungseinheiten verknüpft sind, sind auch enthalten, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und sonstige bekannte Ausführungseinheiten.
  • Der Datencache niederer Ebene und der Datenübersetzungs-Lookaside-Puffer (D-TLB) 450 sind mit der bzw. den Ausführungseinheit(en) 440 gekoppelt. Der Datencache wird vor kurzem verwendete/betätigte Elemente, wie etwa Datenoperanden, speichern, welche potentiell in Speicher-Kohärenz-Zuständen gehalten werden. Der D-TLB wird kürzlich vorgenommene virtuell/linear-zu-physisch-Adressübersetzungen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur aufweisen, um physischen Speicher in mehrere virtuelle Seiten aufzubrechen.
  • Hier teilen sich die Kerne 401 und 402 Zugriff auf einen Cache höherer Ebene bzw. Further-out-Cache 410, welcher vor kurzem abgerufene Elemente zwischenspeichert. Es sei darauf hingewiesen, dass sich höherer Ebene oder Further-out auf Cache-Ebenen bezieht, die sich von der bzw. den Ausführungseinheit(en) entfernen oder zunehmen. In einer Ausführungsform ist der Cache 410 höherer Ebene ein Last-Level-Daten-Cache-Last-Cache in der Speicherhierarchie auf dem Prozessor 400 - wie etwa ein Datencache zweiter oder dritter Ebene. Der Cache 410 höherer Ebene ist jedoch nicht so beschränkt, da er mit einem Befehlscache verknüpft sein oder diesen umfassen kann. Ein Trace-Cache - eine Art Befehlscache - kann stattdessen nach dem Decodermodul 425 gekoppelt sein, um vor kurzem decodierte Traces zu speichern.
  • In der dargestellten Konfiguration weist der Prozessor 400 auch eine Busschnittstelle 405 und eine Leistungssteuereinheit 460 auf, welche eine Leistungsverwaltung gemäß einer Ausführungsform der vorliegenden Erfindung durchführen können. In diesem Szenario wird die Busschnittstelle 405 mit Vorrichtungen kommunizieren, die extern bezüglich des Prozessors 400 sind, wie etwa der Systemspeicher und andere Komponenten.
  • Ein Speichercontroller 470 kann mit anderen Vorrichtungen, wie etwa ein oder viele Speicher, verbunden sein. In einem Beispiel weist die Busschnittstelle 405 eine Ringverschaltung mit einem Speichercontroller zum Verbinden mit einem Speicher und einem Grafikcontroller zum Verbinden mit einem Grafikprozessor auf. In einer SoC-Umgebung können noch mehr Vorrichtungen, wie etwa eine Netzwerkschnittstelle, Coprozessoren, ein Speicher, ein Grafikprozessor und (eine) beliebige sonstige bekannte Computervorrichtungen/Schnittstelle auf einem einzigen Chip oder einer einzigen integrierten Schaltung integriert sein, um einen Kleinformfaktor mit einer hohen Funktionalität und einem geringen Stromverbrauch bereitzustellen.
  • Wenngleich es nicht in 4 gezeigt ist, kann in einigen Ausführungsformen der Prozessor 400 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme nunmehr auf 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt ist, kann der Prozessorkern 500 ein mehrstufiger Out-of-order-Pipeline-Prozessor sein. Der Kern 500 kann mit verschiedenen Spannungen basierend auf einer erhaltenen Betriebsspannung, welche von einem integrierten Spannungsregler oder externen Spannungsregler erhalten werden kann, arbeiten.
  • Wie in 5 zu sehen ist, weist der Kern 500 Front-End-Einheiten 510 auf, welche verwendet werden können, um Befehle abzurufen, die auszuführen sind, und diese zur späteren Verwendung in der Prozessorpipeline vorzubereiten. Zum Beispiel können die Front-End-Einheiten 510 eine Abrufeinheit 501, einen Befehlscache 503 und einen Befehlsdecoder 505 umfassen. In einigen Implementierungen können die Front-End-Einheiten 510 ferner einen Abfolge-Cache zusammen mit Mikrocodespeicher sowie einen Mikrooperationsspeicher aufweisen. Die Abrufeinheit 501 kann Makrobefehle abrufen, z. B. aus dem Speicher oder Befehlscache 503, und diese in den Befehlsdecoder 505 einspeisen, um diese in Primitive, d. h., Mikrooperationen zur Ausführung durch den Prozessor, zu decodieren.
  • Zwischen den Front-End-Einheiten 510 und den Ausführungseinheiten 520 befindet sich eine Out-of-order(OOO)-Engine 515, die verwendet werden kann, um die Mikrobefehle zu erhalten und diese zur Ausführung vorzubereiten. Genauer kann die OOO-Engine 515 verschiedene Puffer zum Neuordnen des Mikrobefehlsflusses und Zuweisen verschiedener Ressourcen, die zur Ausführung benötigt werden, sowie zum Bereitstellen einer Umbenennung logischer Register auf Speicherorten innerhalb verschiedener Registerdateien, wie etwa der Registerdatei 530 und der erweiterten Registerdatei 535, aufweisen. Die Registerdatei 530 kann separate Registerdateien für Ganzzahl- und Gleitkommaoperationen umfassen. Zu Zwecken der Konfiguration, Steuerung und von zusätzlichen Operationen kann eine Gruppe von maschinenspezifischen Registern (MSRs) 538 auch vorhanden und für diverse Logik innerhalb des Kerns 500 (und extern bezüglich des Kerns) zugänglich sein.
  • Verschiedene Ressourcen können in den Ausführungseinheiten 520 vorhanden sein, einschließlich zum Beispiel verschiedener Ganzzahl-, Gleitkomma- und Einzelbefehl-Mehrfachdaten(SIMD, Single Instruction Multiple Data)-Logikeinheiten, unter anderer spezialisierter Hardware. Zum Beispiel können solche Ausführungseinheiten eine oder mehrere arithmetische Logikeinheiten (ALUs, Arithmetic Logic Units) 522 und eine oder mehrere Vektorausführungseinheiten 524 unter anderen solchen Ausführungseinheiten umfassen.
  • Ergebnisse von den Ausführungseinheiten können einer Rückordnungslogik, nämlich einem Neuordnerpuffer (ROB, Reorder Buffer) 540, bereitgestellt werden. Genauer kann der ROB 540 verschiedene Anordnungen und eine verschiedene Logik aufweisen, um Informationen zu erhalten, die mit Befehlen verknüpft sind, die ausgeführt werden. Diese Informationen werden dann von dem ROB 540 untersucht, um zu bestimmen, ob die Befehle gültig rückgeordnete und resultierende Daten sein können, die in dem architektonischen Zustand des Prozessors festgeschrieben werden, oder ob eine oder mehrere Ausnahmen aufgetreten sind, die eine geeignete Rückordnung der Befehle verhindern. Selbstverständlich kann der ROB 540 andere Operationen handhaben, die mit der Rückordnung verknüpft sind.
  • Wie in 5 gezeigt ist, ist der ROB 540 mit einem Cache 550 gekoppelt, welcher in einer Ausführungsform ein Cache geringer Ebene (z. B. ein L1-Cache) sein kann, wenngleich der Umfang der vorliegenden Erfindung nicht diesbezüglich beschränkt ist. Ebenfalls können die Ausführungseinheiten 520 direkt mit dem Cache 550 gekoppelt sein. Von dem Cache 550 kann eine Datenkommunikation mit Caches höherer Ebene, dem Systemspeicher und so weiter erfolgen. Wenngleich er mit dieser hohen Ebene in der Ausführungsform von 5 gezeigt ist, versteht sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich beschränkt ist. Wenngleich sich zum Beispiel die Implementierung von 5 auf eine Out-of-order-Maschine, wie etwa eine Intel@ x86-Befehlssatzarchitektur (ISA, Instruction Set Architecture), bezieht, ist der Umfang der vorliegenden Erfindung nicht diesbezüglich beschränkt. D. h., andere Ausführungsformen können in einem In-order-Prozessor, einem Prozessor mit verringerter Befehlssatzberechnung (RISC, Reduced Instruction Set Computing), wie etwa einem ARM-basierten Prozessor, oder einem Prozessor einer anderen Art von ISA, die Befehle und Operationen einer anderen ISA über eine Emulationsengine und zugehörige Logikschaltungsanordnung emulieren können, implementiert sein.
  • Wenngleich es nicht in 5 gezeigt ist, kann in einigen Ausführungsformen der Kern 500 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme nunmehr auf 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform gezeigt. In der Ausführungsform von 6 kann der Kern 600 ein Kern mit geringer Leistung einer anderen Mikroarchitektur sein, wie etwa ein Intel@ Atom™-basierter Prozessor, der eine relativ beschränkte Pipelinetiefe aufweist, die ausgelegt ist, um den Stromverbrauch zu verringern. Wie zu sehen ist, weist der Kern 600 einen Befehlscache 610 auf, der gekoppelt ist, um einem Befehlsdecoder 615 Befehle bereitzustellen. Ein Zweigvorhersager 605 kann mit dem Befehlscache 610 gekoppelt sein. Es sei darauf hingewiesen, dass der Befehlscache 610 ferner mit einer anderen Ebene eines Cache-Speichers, wie etwa eines L2-Caches (für eine bequemere Veranschaulichung in 6 nicht gezeigt), gekoppelt werden kann. Dagegen stellt der Befehlsdecoder 615 decodierte Befehle einer Ausgabewarteschlange (IQ, Issue Queue) 620 zur Speicherung und Lieferung an eine gegebene Ausführungspipeline bereit. Ein Mikrocode-ROM 618 ist mit dem Befehlsdecoder 615 gekoppelt.
  • Eine Gleitkommapipeline 630 weist eine Gleitkomma(FP, Floating Point)-registerdatei 632 auf, welche mehrere architektonische Register einer gegebenen Bitbreite, wie etwa 128, 256 oder 512 Bits, aufweisen kann. Die Pipeline 630 weist einen Gleitkommaplaner 634 auf, um Befehle zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline zu planen. In der gezeigten Ausführungsform umfassen solche Ausführungseinheiten eine ALU 635, eine Shuffle-Einheit 636 und einen Gleitkommaaddierer 638. Dagegen können Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, zurück an Puffer und/oder Register der Registerdatei 632 bereitgestellt werden. Es versteht sich natürlich, dass, wenngleich diese wenigen beispielhaften Ausführungseinheiten gezeigt sind, zusätzliche oder andere Gleitkommaausführungseinheiten in einer anderen Ausführungsform vorhanden sein können.
  • Eine Ganzzahl-Pipeline 640 kann auch bereitgestellt werden. In der gezeigten Ausführungsform weist die Pipeline 640 eine Ganzzahl(INT)-registerdatei 642 auf, welche mehrere architektonische Register einer gegebenen Bitbreite, wie etwa 128 oder 256 Bits, aufweisen kann. Die Pipeline 640 weist einen Ganzzahlausführungs(IE, Integer Execution)-planer 644 auf, um Befehle zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline zu planen. In der gezeigten Ausführungsform umfassen solche Ausführungseinheiten eine ALU 645, eine Verschiebereinheit 646 und eine Sprungausführungseinheit (JEU, Jump Execution Unit) 648. Dagegen können Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, zurück an Puffer und/oder Register der Registerdatei 642 bereitgestellt werden. Es versteht sich natürlich, dass, wenngleich diese wenigen beispielhaften Ausführungseinheiten gezeigt sind, zusätzliche oder andere Ganzzahlausführungseinheiten in einer anderen Ausführungsform vorhanden sein können.
  • Ein Speicherausführungs(ME, Memory Execution)-planer 650 kann Speicheroperationen zur Ausführung in einer Adresserzeugungseinheit (AGU, Address Generation Unit) 652 planen, welche auch mit einem TLB 654 gekoppelt ist. Wie zu sehen ist, können diese Strukturen mit einem Datencache 660 gekoppelt sein, welcher ein L0- und/oder L1-Datencache sein kann, der wiederum mit zusätzlichen Ebenen einer Cache-Speicher-Hierarchie, einschließlich eines L2-Cache-Speichers, gekoppelt ist.
  • Um eine Unterstützung zur Out-of-order-Ausführung bereitzustellen, kann ein Zuweiser-/Umbenenner 670 zusätzlich zu einem Neuordnerpuffer 680 bereitgestellt werden, welcher konfiguriert ist, um außerhalb der Reihenfolge ausgeführte Befehle zur Rückordnung in der Reihenfolge neuzuordnen. Wenngleich es mit dieser konkreten Pipelinearchitektur in der Veranschaulichung von 6 gezeigt ist, versteht sich, dass viele Variationen und Alternativen möglich sind.
  • Wenngleich es nicht in 6 gezeigt ist, kann in einigen Ausführungsformen der Kern 600 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Es sei darauf hingewiesen, dass bei einem Prozessor, der asymmetrische Kerne aufweist, wie etwa gemäß den Mikroarchitekturen von 5 und 6, Arbeitslasten dynamisch unter den Kernen aus Leistungsverwaltungsgründen getauscht werden können, da diese Kerne dieselbe oder eine verwandte ISA aufweisen können, wenngleich sie unterschiedliche Pipelinegestaltungen und -tiefen aufweisen. Solch ein dynamisches Kerntauschen kann auf eine Art durchgeführt werden, die für eine Benutzeranwendung (und möglicherweise auch einen Kernel) transparent ist.
  • Unter Bezugnahme auf 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer anderen Ausführungsform gezeigt. Wie in 7 veranschaulicht ist, kann ein Kern 700 eine mehrstufige In-order-Pipeline aufweisen, um mit sehr geringen Stromverbrauchspegeln ausgeführt zu werden. Als ein solches Beispiel kann der Kern 700 eine Mikroarchitektur gemäß einem ARM Cortex A53-Design aufweisen, das bei ARM Holdings, LTD., Sunnyvale, Kalifornien, verfügbar ist. Bei einer Implementierung kann eine 8-Stufen-Pipeline bereitgestellt werden, die konfiguriert ist, um sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Der Kern 700 weist eine Abrufeinheit 710 auf, die konfiguriert ist, um Befehle abzurufen und diese einer Decodiereinheit 715 bereitzustellen, welche die Befehle, z. B. Makrobefehle einer gegebenen ISA, wie etwa einer ARMv8 ISA, decodieren kann. Es sei ferner darauf hingewiesen, dass eine Warteschlange 730 mit der Decodiereinheit 715 gekoppelt sein kann, um decodierte Befehle zu speichern. Die decodierten Befehle werden einer Ausgabelogik 725 bereitgestellt, wo die decodierten Befehle an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden können.
  • Unter weiterer Bezugnahme auf 7 kann die Ausgabelogik 725 Befehle an eine von mehreren Ausführungseinheiten ausgeben. In der gezeigten Ausführungsform umfassen diese Ausführungseinheiten eine Ganzzahleinheit 735, eine Multipliziereinheit 740, eine Gleitkomma-/Vektoreinheit 750, eine Dualausgabeeinheit 760 und eine Lade-/Speichereinheit 770. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können einer Rückschreib(WB, Writeback)-einheit 780 bereitgestellt werden. Es versteht sich, dass, wenngleich eine einzige Rückschreibeinheit für eine bequemere Veranschaulichung gezeigt ist, bei einigen Implementierungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten verknüpft sein können. Ferner versteht sich, dass, wenngleich jede der Einheiten und der Logik, die in 7 gezeigt sind, auf einer hohen Ebene dargestellt ist, eine konkrete Implementierung mehr oder verschiedene Strukturen aufweisen kann. Ein Prozessor, der unter Verwendung von einem oder mehreren Kernen ausgestaltet ist, die eine Pipeline aufweisen, wie in 7, kann in vielen verschiedenen Endprodukten implementiert werden, die sich von mobilen Vorrichtungen zu Serversystemen erstrecken.
  • Wenngleich es nicht in 7 gezeigt ist, kann in einigen Ausführungsformen der Kern 700 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform gezeigt. Wie in 8 veranschaulicht ist, kann ein Kern 800 eine Mehrstufen-Mehrfachausgabe-Out-of-order-Pipeline zur Ausführung mit Pegeln mit sehr hoher Leistung aufweisen (was mit höheren Stromverbrauchspegeln als der Kern 700 von 7 erfolgen kann). Als ein solches Beispiel kann der Prozessor 800 eine Mikroarchitektur gemäß einem ARM Cortex A57-Design aufweisen. Bei einer Implementierung kann eine 15(oder größer)-Stufen-Pipeline bereitgestellt werden, die konfiguriert ist, um sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Zusätzlich kann die Pipeline eine 3(oder größer)-breite und 3(oder größer)-Ausgabeoperation bereitstellen. Der Kern 800 weist eine Abrufeinheit 810 auf, die konfiguriert ist, um Befehle abzurufen und diese einer Decodierer-/Umbenenner-/Abfertigereinheit 815 bereitzustellen, die mit einem Cache 820 gekoppelt ist. Die Einheit 815 kann die Befehle, z. B. die Makrobefehle einer ARMv8-Befehlssatzarchitektur, decodieren, Registerreferenzen innerhalb der Befehle umbenennen und die Befehle (eventuell) für eine ausgewählte Ausführungseinheit abfertigen. Die decodierten Befehle können in einer Warteschlange 825 gespeichert werden. Es sei darauf hingewiesen, dass, wenngleich eine einzelne Warteschlangenstruktur für eine bequemere Veranschaulichung in 8 gezeigt ist, es sich versteht, dass separate Warteschlangen für jede der mehreren verschiedenen Arten von Ausführungseinheiten bereitgestellt werden können.
  • Ebenfalls in 8 gezeigt ist eine Ausgabelogik 830, von welcher decodierte Befehle, die in der Warteschlange 825 gespeichert sind, an eine ausgewählte Ausführungseinheit ausgegeben werden können. Die Ausgabelogik 830 kann auch in einer konkreten Ausführungsform mit einer separaten Ausgabelogik für jede der mehreren verschiedenen Arten von Ausführungseinheiten, mit welchen die Ausgabelogik 830 gekoppelt ist, implementiert werden.
  • Die decodierten Befehle können an eine gegebene der mehreren Ausführungseinheiten ausgegeben werden. In der gezeigten Ausführungsform umfassen diese Ausführungseinheiten eine oder mehrere Ganzzahleinheiten 835, eine Multipliziereinheit 840, eine Gleitkomma-/Vektoreinheit 850, eine Verzweigungseinheit 860 und eine Lade-/Speichereinheit 870. In einer Ausführungsform kann die Gleitkomma-/Vektoreinheit 850 konfiguriert sein, um SIMD oder Vektordaten von 128 oder 256 Bits handzuhaben. Ferner kann die Gleitkomma-/Vektorausführungseinheit 850 IEEE-754-Double-Precision-Gleitkommaoperationen durchführen. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können einer Rückschreibeinheit 880 bereitgestellt werden. Es sei darauf hingewiesen, dass bei einigen Implementierungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten verknüpft sein können. Ferner versteht sich, dass, wenngleich jede der Einheiten und der Logik, die in 8 gezeigt sind, auf einer hohen Ebene dargestellt ist, eine konkrete Implementierung eine oder verschiedene Strukturen aufweisen kann.
  • Wenngleich es nicht in 8 gezeigt ist, kann in einigen Ausführungsformen der Kern 800 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Es sei darauf hingewiesen, dass bei einem Prozessor, der asymmetrische Kerne aufweist, wie etwa gemäß den Mikroarchitekturen von 7 und 8, Arbeitslasten dynamisch aus Leistungsverwaltungsgründen getauscht werden können, da diese Kerne dieselbe oder eine verwandte ISA aufweisen können, wenngleich sie unterschiedliche Pipelinegestaltungen und -tiefen aufweisen. Solch ein dynamisches Kerntauschen kann auf eine Art durchgeführt werden, die für eine Benutzeranwendung (und möglicherweise auch einen Kernel) transparent ist.
  • Ein Prozessor, der unter Verwendung von einem oder mehreren Kernen ausgestaltet ist, die Pipelines aufweisen, wie in einer oder mehreren von 5-8, kann in vielen verschiedenen Endprodukten implementiert werden, die sich von mobilen Vorrichtungen zu Serversystemen erstrecken. Unter Bezugnahme nunmehr auf 9 ist ein Blockdiagramm eines Prozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. In der Ausführungsform von 9 kann der Prozessor 900 ein SoC sein, der mehrere Domänen aufweist, von welchen jede gesteuert werden kann, um mit einer unabhängigen Betriebsspannung und Betriebsfrequenz zu arbeiten. Als ein spezifisches veranschaulichendes Beispiel kann der Prozessor 900 ein Intel@ Architecture Core™-basierter Prozessor, wie etwa ein i3-Prozessor, i5-Prozessor, i7-Prozessor oder ein anderer derartiger Prozessor, der bei Intel Corporation erhältlich ist, sein. Es können jedoch andere Prozessoren mit geringer Leistung, wie sie etwa bei Advanced Micro Devices, Inc. (AMD) aus Sunnyvale, Kalifornien, erhältlich sind, ein ARM-basiertes Design von ARM Holdings Ltd. oder einem Lizenznehmer davon oder ein MIPS-basiertes Design von MIPS Technologies, Inc. aus Sunnyvale, Kalifornien, oder ihren Lizenznehmern oder Anwendern stattdessen in anderen Ausführungsformen, wie etwa einem Apple A7-Prozessor, einem Qualcomm Snapdragon-Prozessor oder einem Texas Instruments OMAP-Prozessor, vorhanden sein. Solch ein SoC kann bei einem System mit geringer Leistung, wie etwa einem Smartphone, einem Tablet-Computer, Phablet-Computer, Ultrabook™-Computer oder einer anderen tragbaren Rechenvorrichtung verwendet werden, welche eine heterogene Systemarchitektur enthalten kann, die ein auf der heterogenen Systemarchitektur basierendes Prozessordesign aufweist.
  • In der Hochebenenansicht, die in 9 gezeigt ist, weist der Prozessor 900 mehrere Kerneinheiten 910a-910n auf. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cache-Speicher und eine andere Schaltungsanordnung aufweisen. Jede Kerneinheit 910 kann einen oder mehrere Befehlssätze (z. B. einen x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt worden sind); einen MIPS-Befehlssatz; einen ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen, wie etwa NEON)) oder einen anderen Befehlssatz oder Kombinationen davon unterstützen. Es sei darauf hingewiesen, dass einige der Kerneinheiten heterogene Ressourcen (z. B. mit einer unterschiedlichen Gestaltung) sein können. Zusätzlich kann jeder derartige Kern mit einem Cache-Speicher (nicht gezeigt) gekoppelt sein, welcher in einer Ausführungsform ein gemeinsamer Ebene-2(L2, Level Two)-Cache-Speicher sein kann. Ein nichtflüchtiger Speicher 930 kann verwendet werden, um ein verschiedenes Programm und sonstige Daten zu speichern. Zum Beispiel kann dieser Speicher verwendet werden, um mindestens Teile von Mikrocode, Bootinformationen, wie etwa ein BIOS, andere Systemsoftware und so weiter zu speichern.
  • Jede Kerneinheit 910 kann auch eine Schnittstelle, wie etwa eine Busschnittstelleneinheit, aufweisen, um eine Verschaltung mit einer zusätzlichen Schaltungsanordnung des Prozessors zu ermöglichen. In einer Ausführungsform ist jede Kerneinheit 910 mit einer kohärenten Fabric gekoppelt, die als eine primäre cachekohärente Verschaltung auf dem Chip agieren kann, die wiederum mit einem Speichercontroller 935 gekoppelt ist. Der Speichercontroller 935 wiederum steuert Kommunikationen mit einem Speicher, wie etwa einem DRAM (für eine bequemere Veranschaulichung nicht in 9 gezeigt).
  • Zusätzlich zu den Kerneinheiten sind zusätzliche Verarbeitungsengines innerhalb des Prozessors vorhanden, einschließlich mindestens einer Grafikeinheit 920, welche eine oder mehrere Grafikverarbeitungseinheiten (GPUs, Graphic Processing Units) aufweisen kann, um eine Grafikverarbeitung durchzuführen und möglicherweise Universaloperationen auf dem Grafikprozessor (sogenannte GPGPU-Operation) auszuführen. Zusätzlich kann mindestens ein Bildsignalprozessor 925 vorhanden sein. Der Signalprozessor 925 kann konfiguriert sein, um eingehende Bilddaten zu verarbeiten, die von einer oder mehreren Aufnahmevorrichtungen, entweder intern bezüglich des SoC oder außerhalb des Chips, erhalten werden.
  • Es können auch andere Beschleuniger vorhanden sein. In der Veranschaulichung von 9 kann ein Videocodierer 950 Codieroperationen einschließlich Codierung und Decodierung für Videoinformationen, z. B. Bereitstellen von Hardwarebeschleunigungsunterstützung für Videoinhalt mit hoher Auflösung, durchführen. Eine Anzeigesteuerung 955 kann ferner bereitgestellt werden, um Anzeigeoperationen einschließlich des Bereitstellens von Unterstützung für interne und externe Anzeigen eines Systems zu beschleunigen. Zusätzlich kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsoperationen, wie etwa sichere Bootoperationen, verschiedene Kryptographieoperationen und so weiter, durchzuführen.
  • Der Stromverbrauch jeder der Einheiten kann über einen Leistungsmanager 940 gesteuert werden, welcher eine Steuerlogik aufweisen kann, um die verschiedenen Leistungsverwaltungstechniken durchzuführen, die hierin beschrieben sind.
  • In einigen Ausführungsformen kann der Prozessor 900 ferner eine nichtkohärente Fabric aufweisen, die mit der kohärenten Fabric gekoppelt ist, mit welcher diverse periphere Vorrichtungen gekoppelt sein können. Eine oder mehrere Schnittstellen 960a-960d ermöglichen eine Kommunikation mit einer oder mehreren Vorrichtungen außerhalb eines Chips. Solche Kommunikationen können über eine Vielfalt an Kommunikationsprotokollen, wie etwa PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI, unter anderen Arten von Kommunikationsprotokollen, erfolgen. Wenngleich er auf dieser hohen Ebene in der Ausführungsform von 9 gezeigt ist, versteht sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich beschränkt ist.
  • Wenngleich es nicht in 9 gezeigt ist, kann in einigen Ausführungsformen der Prozessor 900 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme nunmehr auf 10 ist ein Blockdiagramm eines repräsentativen SoC gezeigt. In der gezeigten Ausführungsform kann der SoC 1000 ein Mehrkern-SoC sein, der für einen Betrieb mit geringer Leistung konfiguriert ist, der zur Aufnahme in ein Smartphone oder eine sonstige Vorrichtung mit geringer Leistung, wie etwa ein Tablet-Computer oder eine sonstige tragbare Rechenvorrichtung, zu optimieren ist. Als ein Beispiel kann der SoC 1000 unter Verwendung von asymmetrischen oder unterschiedlichen Arten von Kernen, wie etwa Kombinationen von Kernen mit höherer Leistung und/oder geringer Leistung, z. B. Out-of-order-Kerne und In-order-Kerne, implementiert werden. In verschiedenen Ausführungsformen können diese Kerne auf einem Intel® Architecture™-Kerndesign oder einem ARM-Architekturdesign basieren. In noch weiteren Ausführungsformen kann eine Mischung aus Intel- und ARM-Kernen in einem gegebenen SoC implementiert sein.
  • Wie in 10 zu sehen ist, weist der SoC 1000 eine erste Kerndomäne 1010 auf, die mehrere erste Kerne 1012a - 1012d aufweist. In einem Beispiel können diese Kerne mit geringer Leistung, wie etwa In-order-Kerne, sein. In einer Ausführungsform können diese ersten Kerne als ARM Cortex A53-Kerne implementiert sein. Dagegen sind diese Kerne mit einem Cache-Speicher 1015 der Kerndomäne 1010 gekoppelt. Zusätzlich weist der SoC 1000 eine zweite Kerndomäne 1020 auf. In der Veranschaulichung von 10 weist die zweite Kerndomäne 1020 mehrere zweite Kerne 1022a - 1022d auf. In einem Beispiel können diese Kerne mit einem höheren Stromverbrauch als die ersten Kerne 1012 sein. In einer Ausführungsform können die zweiten Kerne Out-of-order-Kerne sein, welche als ARM Cortex A57-Kerne implementiert sein können. Dagegen sind diese Kerne mit einem Cache-Speicher 1025 der Kerndomäne 1020 gekoppelt. Es sei darauf hingewiesen, dass, wenngleich das Beispiel, das in 10 gezeigt ist, 4 Kerne in jeder Domäne aufweist, es sich versteht, dass mehr oder weniger Kerne in einer gegebenen Domäne in anderen Beispielen vorhanden sein können.
  • Unter weiterer Bezugnahme auf 10 ist auch eine Grafikdomäne 1030 bereitgestellt, welche eine oder mehrere Grafikverarbeitungseinheiten (GPUs, Graphics Processing Units) aufweisen kann, die konfiguriert sind, um unabhängig Grafikarbeitslasten auszuführen, die z. B. von einem oder mehreren Kernen der Kerndomänen 1010 und 1020 bereitgestellt werden. Als ein Beispiel kann die GPU-Domäne 1030 verwendet werden, um für eine Vielfalt an Bildschirmgrößen zusätzlich zu dem Bereitstellen von Grafik- und Anzeigerenderoperationen Anzeigeunterstützung bereitzustellen.
  • Wie zu sehen ist, sind die verschiedenen Domänen mit einer kohärenten Verschaltung 1040 gekoppelt, welche in einer Ausführungsform eine cachekohärente Verschaltungsfabric sein kann, die wiederum mit einem integrierten Speichercontroller 1050 gekoppelt ist. Die kohärente Verschaltung 1040 kann einen gemeinsamen Cache-Speicher, wie etwa einen L3-Cache, in einigen Beispielen aufweisen. In einer Ausführungsform kann der Speichercontroller 1050 ein direkter Speichercontroller zum Bereitstellen von mehreren Kommunikationskanälen mit einem Speicher außerhalb eines Chips, wie etwa mehrere Kanäle eines DRAM (für eine bequemere Veranschaulichung in 10 nicht gezeigt), sein.
  • Bei verschiedenen Beispielen kann die Anzahl der Kerndomänen variieren. Zum Beispiel kann für einen SoC mit geringer Leistung, der zur Aufnahme in einer mobilen Rechenvorrichtung geeignet ist, eine beschränkte Anzahl an Kerndomänen, wie sie etwa in 10 gezeigt sind, vorhanden sein. Ferner kann bei solchen SoCs mit geringer Leistung die Kerndomäne 1020, die Kerne mit höherer Leistung aufweist, geringere Anzahlen an solchen Kernen aufweisen. Zum Beispiel können bei einer Implementierung zwei Kerne 1022 bereitgestellt werden, um eine Operation mit verringerten Stromverbrauchspegeln zu ermöglichen. Zusätzlich können die unterschiedlichen Kerndomänen auch mit einem Unterbrechungscontroller gekoppelt sein, um ein dynamisches Tauschen von Arbeitslasten unter den unterschiedlichen Domänen zu ermöglichen.
  • In noch anderen Ausführungsformen können eine höhere Anzahl an Kerndomänen sowie eine zusätzliche optionale IP-Logik vorhanden sein, wo ein SoC auf Pegel mit höherer Leistung (und Energie) zur Aufnahme in andere Rechenvorrichtungen, wie etwa Desktops, Server, Hochleistungsrechensysteme, Basisstationen und so weiter, skaliert werden kann. Als ein solches Beispiel können 4 Kerndomänen bereitgestellt werden, die jeweils eine gegebene Anzahl an Out-of-order-Kernen aufweisen. Ferner können zusätzlich zu der optionalen GPU-Unterstützung (welche als ein Beispiel die Form einer GPGPU annehmen kann) auch ein oder mehrere Beschleuniger zum Bereitstellen von optimierter Hardwareunterstützung für bestimmte Funktionen (z. B. Web-Serving, Netzwerkverarbeitung, Schalten und so weiter) bereitgestellt werden. Zusätzlich kann eine Eingangs-/Ausgangsschnittstelle vorhanden sein, um solche Beschleuniger mit Komponenten außerhalb des Chips zu koppeln.
  • Wenngleich es nicht in 10 gezeigt ist, kann in einigen Ausführungsformen der SoC 1000 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme nunmehr auf 11 ist ein Blockdiagramm eines anderen beispielhaften SoC gezeigt. In der Ausführungsform von 11 kann der SoC 1100 verschiedene Schaltungsanordnungen aufweisen, um eine hohe Leistung für Multimedia-Anwendungen, Kommunikationen und sonstige Funktionen zu ermöglichen. Von daher ist der SoC 1100 zur Aufnahme in eine große Vielfalt an tragbaren und sonstigen Vorrichtungen, wie etwa Smartphones, Tablet-Computer, Smart-TVs und so weiter, geeignet. In dem gezeigten Beispiel weist der SoC 1100 eine zentrale Verarbeitungseinheits(CPU, Central Processor Unit)domäne 1110 auf. In einer Ausführungsform können mehrere einzelne Prozessorkerne in der CPU-Domäne 1110 vorhanden sein. Als ein Beispiel kann die CPU-Domäne 1110 ein Quadcore-Prozessor sein, der 4 Multithread-Kerne aufweist. Solche Prozessoren können homogene oder heterogene Prozessoren sein, z. B. eine Mischung aus Prozessorkernen mit geringer Leistung und hoher Leistung.
  • Dagegen ist eine GPU-Domäne 1120 bereitgestellt, um eine fortgeschrittene Grafikverarbeitung in einer oder mehreren GPUs zum Handhaben von Grafik und Berechnen von APIs durchzuführen. Eine DSP-Einheit 1130 kann einen oder mehrere DSPs mit geringer Leistung zum Handhaben von Multimediaanwendungen mit geringer Leistung, wie etwa Musikwiedergabe, Audio/Video und so weiter, zusätzlich zu fortgeschrittenen Berechnungen, die während der Ausführung von Multimediabefehlen erfolgen können, bereitstellen. Dagegen kann eine Kommunikationseinheit 1140 verschiedene Komponenten zum Bereitstellen einer Konnektivität über verschiedene Drahtlosprotokolle, wie etwa zelluläre Kommunikationsprotokolle (einschließlich 3G/4G, LTE), drahtlose lokale Protokolle, wie etwa Bluetooth™, IEEE 802.11 und so weiter, aufweisen.
  • Ferner kann ein Multimediaprozessor 1150 verwendet werden, um eine Aufnahme und Wiedergabe von Video- und Audio-Inhalt mit hoher Auflösung einschließlich der Verarbeitung von Benutzergesten durchzuführen. Eine Sensoreinheit 1160 kann mehrere Sensoren und/oder einen Sensorcontroller zum Verbinden mit verschiedenen Sensoren außerhalb eines Chips, die in einer gegebenen Plattform vorhanden sind, aufweisen. Ein Bildsignalprozessor 1170 kann mit einem oder mehreren separaten ISPs versehen sein, um eine Bildverarbeitung bezüglich aufgenommenem Inhalt von einer oder mehreren Kameras einer Plattform einschließlich Standbild- und Videokameras durchzuführen.
  • Ein Anzeigeprozessor 1180 kann eine Unterstützung zur Verbindung mit einer Anzeige mit hoher Auflösung einer gegebenen Pixeldichte einschließlich der Fähigkeit, drahtlos Inhalt zur Wiedergabe auf solch einer Anzeige zu kommunizieren, bereitstellen. Ferner kann eine Lokalisierungseinheit 1190 einen GPS-Empfänger mit Unterstützung für mehrere GPS-Konstellationen aufweisen, um Anwendungen hochpräzise Positionierungsinformationen bereitzustellen, die unter Verwendung solch eines GPS-Empfängers erhalten werden. Es versteht sich, dass, wenngleich es mit dieser konkreten Gruppe von Komponenten in dem Beispiel von 11 gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Wenngleich es nicht in 11 gezeigt ist, kann in einigen Ausführungsformen der SoC 1100 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme nunmehr auf 12 ist ein Blockdiagramm eines beispielhaften Systems gezeigt, mit welchem Ausführungsformen verwendet werden können. Wie zu sehen ist, kann das System 1200 ein Smartphone oder ein sonstiger drahtloser Kommunikator sein. Ein Basisbandprozessor 1205 ist konfiguriert, um verschiedene Signalverarbeitungen bezüglich Kommunikationssignalen durchzuführen, die von dem System zu übertragen oder von diesem zu empfangen sind. Der Basisbandprozessor 1205 wiederum ist mit einem Anwendungsprozessor 1210 gekoppelt, welcher eine Haupt-CPU des Systems sein kann, um ein Betriebssystem und eine andere Systemsoftware zusätzlich zu Benutzeranwendungen, wie etwa viele hinreichend bekannte Social Media- und Multimedia-Anwendungen, auszuführen. Der Anwendungsprozessor 1210 kann ferner konfiguriert sein, um eine Vielfalt an anderen Rechenoperationen für die Vorrichtung durchzuführen.
  • Der Anwendungsprozessor 1210 wiederum kann mit einer Benutzerschnittstelle/Anzeige 1220, z. B. einer Touch-Screen-Anzeige, gekoppelt sein. Zusätzlich kann ein Anwendungsprozessor 1210 mit einem Speichersystem einschließlich eines nichtflüchtigen Speichers, nämlich ein Flash-Speicher 1230, und eines Systemspeichers, nämlich ein dynamischer Direktzugriffsspeicher (DRAM) 1235, gekoppelt sein. Wie ferner zu sehen ist, ist ein Anwendungsprozessor 1210 ferner mit einer Aufnahmevorrichtung 1240, wie etwa eine oder mehrere Bildaufnahmevorrichtungen, die Video- und/oder Standbilder aufnehmen können, gekoppelt.
  • Immer noch unter Bezugnahme auf 12 ist eine universale integrierte Schaltungskarte (UICC, Universal Integrated Circuit Card) 1246, die ein Teilnehmeridentitätsmodul und möglicherweise einen sicheren Speicher und Kryptoprozessor umfasst, auch mit dem Anwendungsprozessor 1210 gekoppelt. Das System 1200 kann ferner einen Sicherheitsprozessor 1250 aufweisen, der mit dem Anwendungsprozessor 1210 gekoppelt sein kann. Mehrere Sensoren 1225 können mit dem Anwendungsprozessor 1210 gekoppelt sein, um eine Eingabe einer Vielfalt an erfassten Informationen, wie etwa Beschleunigerinformationen und andere Umgebungsinformationen, zu ermöglichen. Eine Audioausgabevorrichtung 1295 kann eine Schnittstelle zum Ausgeben von Schall, z. B. in Form von Sprachkommunikationen, wiedergegebenen oder Streaming-Audio-Daten und so weiter, bereitstellen.
  • Wie ferner veranschaulicht ist, ist eine kontaktlose Nahfeldkommunikations(NFC, Near Field Communication)-schnittstelle 1260 bereitgestellt, die in einem NFC-Nahfeld über eine NFC-Antenne 1265 kommuniziert. Wenngleich in 12 separate Antennen gezeigt sind, versteht sich, dass bei einigen Implementierungen eine Antenne oder eine andere Gruppe von Antennen bereitgestellt werden können, um verschiedene Drahtlosfunktionalitäten zu ermöglichen.
  • Eine integrierte Leistungsverwaltungsschaltung (PMIC, Power Management Integrated Circuit) 1215 ist mit einem Anwendungsprozessor 1210 gekoppelt, um eine Plattformebenenleistungsverwaltung durchzuführen. Zu diesem Zweck kann die PMIC 1215 Leistungsverwaltungsanforderungen an den Anwendungsprozessor 1210 ausgeben, um wie gewünscht in bestimmte Zustände mit geringer Leistung einzutreten. Ferner kann die PMIC 1215 basierend auf Plattformbeschränkungen auch die Leistungsebene anderer Komponenten des Systems 1200 steuern.
  • Um zu ermöglichen, dass Kommunikationen gesendet und empfangen werden, können verschiedene Schaltungsanordnungen zwischen dem Basisbandprozessor 1205 und einer Antenne 1290 gekoppelt werden. Insbesondere können ein Hochfrequenz(HF)-Sendeempfänger 1270 und ein drahtloser lokaler Netzwerk(WLAN, Wireless Local Area Network)-Sendeempfänger 1275 vorhanden sein. Allgemein kann der HF-Sendeempfänger 1270 verwendet werden, um drahtlose Daten und Anrufe gemäß einem gegebenen Drahtloskommunikationsprotokoll, wie etwa 3G- oder 4G-Drahtloskommunikationsprotokoll, wie etwa gemäß einem Codemultiplex- (CDMA, Code Division Multiple Access), GSM(globales System für mobile Kommunikation)-, Langzeitentwicklungs(LTE, Long Term Evolution)-protokoll oder sonstigem Protokoll, zu empfangen und senden. Zusätzlich kann ein GPS-Sensor 1280 vorhanden sein. Es können auch andere drahtlose Kommunikationen, wie etwa der Empfang oder das Senden von Funksignalen, z. B. AM/FM- und anderen Signalen, bereitgestellt werden. Zusätzlich können über den WLAN-Sendeempfänger 1275 auch lokale drahtlose Kommunikationen realisiert werden.
  • Wenngleich es nicht in 12 gezeigt ist, kann in einigen Ausführungsformen das System 1200 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme nunmehr auf 13 ist ein Blockdiagramm eines anderen beispielhaften Systems, mit welchem Ausführungsformen verwendet werden können, gezeigt. In der Veranschaulichung von 13 kann das System 1300 ein mobiles System mit geringer Leistung, wie etwa ein Tablet-Computer, ein 2:1-Tablet, Phablet oder ein sonstiges umwandelbares oder unabhängiges Tablet-System, sein. Wie veranschaulicht ist, ist ein SoC 1310 vorhanden und kann konfiguriert sein, um als ein Anwendungsprozessor für die Vorrichtung zu arbeiten.
  • Eine Vielfalt an Vorrichtungen kann mit dem SoC 1310 gekoppelt sein. In der gezeigten Veranschaulichung weist ein Speicherteilsystem einen Flash-Speicher 1340 und einen DRAM 1345 auf, die mit dem SoC 1310 gekoppelt sind. Zusätzlich ist ein Berührungspaneel 1320 mit dem SoC 1310 gekoppelt, um eine Anzeigefähigkeit und eine Benutzereingabe durch Berührung bereitzustellen, einschließlich des Bereitstellens einer virtuellen Tastatur auf einer Anzeige des Berührungspaneels 1320. Um drahtgebundene Netzwerkkonnektivität bereitzustellen, ist der SoC 1310 mit einer Ethernet-Schnittstelle 1330 gekoppelt. Ein peripherer Hub 1325 ist mit dem SoC 1310 gekoppelt, um ein Verbinden mit verschiedenen peripheren Vorrichtungen, wie sie etwa mit dem System 1300 durch beliebige von verschiedenen Ports oder anderen Steckverbindern gekoppelt sein können, zu ermöglichen.
  • Zusätzlich zu der internen Leistungsverwaltungsschaltungsanordnung und - funktionalität innerhalb des SoC 1310 ist eine PMIC 1380 mit dem SoC 1310 gekoppelt, um plattformbasierte Leistungsverwaltung, z. B. basierend darauf, ob das System von einer Batterie 1390 oder Wechselstrom über einen Wechselstromadapter 1395 bestromt wird, bereitzustellen. Zusätzlich zu dieser stromquellenbasierten Leistungsverwaltung kann die PMIC 1380 ferner Plattformleistungsverwaltungsaktivitäten basierend auf Umwelt- und Nutzungsbedingungen durchführen. Ferner kann die PMIC 1380 Steuer- und Statusinformationen an den SoC 1310 kommunizieren, um verschiedene Leistungsverwaltungsaktionen innerhalb des SoC 1310 zu bewirken.
  • Immer noch unter Bezugnahme auf 13 ist zum Bereitstellen von drahtlosen Funktionen eine WLAN-Einheit 1350 mit dem SoC 1310 und wiederum mit einer Antenne 1355 gekoppelt. Bei verschiedenen Implementierungen kann die WLAN-Einheit 1350 Kommunikation gemäß einem oder mehreren Drahtlosprotokollen bereitstellen.
  • Wie ferner veranschaulicht ist, kann eine Vielzahl an Sensoren 1360 mit dem SoC 1310 gekoppelt sein. Diese Sensoren können verschiedene Beschleunigungsmesser, Umgebungs- und sonstige Sensoren einschließlich Benutzergestensensoren umfassen. Schließlich ist ein Audio-Codec 1365 mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu einer Audio-Ausgabevorrichtung 1370 bereitzustellen. Es versteht sich natürlich, dass, wenngleich es nicht mit dieser konkreten Implementierung in 13 gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Wenngleich es nicht in 13 gezeigt ist, kann in einigen Ausführungsformen das System 1300 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Unter Bezugnahme nunmehr auf 14 ist ein Blockdiagramm eines repräsentativen Computersystems 1400, wie etwa ein Notebook, Ultrabook™ oder sonstiges Kleinformfaktorsystem, gezeigt. Ein Prozessor 1410 umfasst in einer Ausführungsform einen Mikroprozessor, Mehrkernprozessor, Multithread-Prozessor, einen Prozessor mit ultraniedriger Spannung, einen eingebetteten Prozessor oder ein sonstiges bekanntes Verarbeitungselement. Bei der veranschaulichten Implementierung agiert der Prozessor 1410 als eine Hauptverarbeitungseinheit und zentraler Hub zur Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400 und kann eine Leistungsverwaltungsschaltungsanordnung aufweisen, wie hierin beschrieben ist. Als ein Beispiel ist der Prozessor 1410 als ein SoC implementiert.
  • Der Prozessor 1410 kommuniziert in einer Ausführungsform mit einem Systemspeicher 1415. Als veranschaulichendes Beispiel ist der Systemspeicher 1415 über mehrere Speichervorrichtungen oder -module zum Bereitstellen einer gegebenen Menge an Systemspeicher implementiert.
  • Um eine dauerhafte Speicherung von Informationen, wie etwa Daten, Anwendungen, eines oder mehrerer Betriebssysteme und so weiter, bereitzustellen, kann auch ein Massenspeicher 1420 mit dem Prozessor 1410 gekoppelt sein. In verschiedenen Ausführungsformen kann zum Ermöglichen eines dünneren und leichteren Systemdesigns sowie zum Verbessern der Systemreaktionsfähigkeit dieser Massenspeicher über ein SSD implementiert werden oder kann der Massenspeicher primär unter Verwendung einer Festplatte (HDD, Hard Disk Drive) mit einer geringeren Menge an SSD-Speicher zum Agieren als ein SSD-Cache zum Ermöglichen eines nichtflüchtigen Speichers des Kontextzustands und anderer solcher Informationen während Abschaltereignissen, so dass ein schnelles Einschalten beim Neustart von Systemaktivitäten erfolgen kann, implementiert werden. Ebenfalls ist in 14 gezeigt, dass eine Flash-Vorrichtung 1422 mit dem Prozessor 1410, z. B. über eine serielle periphere Schnittstelle (SPI, Serial Peripheral Interface), gekoppelt sein kann. Diese Flash-Vorrichtung kann eine nichtflüchtige Speicherung von Systemsoftware einschließlich einer Basis-Eingabe-/Ausgabe-Software (BIOS), sowie einer anderen Firmware des Systems bereitstellen.
  • Verschiedene Eingabe-/Ausgabe(E/A)-vorrichtungen können innerhalb des Systems 1400 vorhanden sein. Insbesondere in der Ausführungsform von 14 ist eine Anzeige 1424 gezeigt, welche ein LCD- oder LED-Paneel mit hoher Auflösung sein kann, das ferner einen Touch-Screen 1425 bereitstellt. In einer Ausführungsform kann die Anzeige 1424 mit dem Prozessor 1410 über eine Anzeigeverschaltung gekoppelt sein, die als eine Hochleistungsgrafikverschaltung implementiert sein kann. Der Touch-Screen 1425 kann mit dem Prozessor 1410 über eine andere Verschaltung gekoppelt sein, welche in einer Ausführungsform eine I2C-Verschaltung sein kann. Wie ferner in 14 gezeigt ist, kann zusätzlich zu dem Touch-Screen 1425 eine Benutzereingabe durch Berührung über ein Touch-Pad 1430 erfolgen, welches innerhalb des Rahmens konfiguriert sein kann und auch mit derselben I2C-Verschaltung wie der Touch-Screen 1425 gekoppelt sein kann.
  • Für Perceptual Computing und sonstige Zwecke können verschiedene Sensoren innerhalb des Systems vorhanden sein und auf verschiedene Arten mit dem Prozessor 1410 gekoppelt sein. Bestimmte Trägheits- und Umgebungssensoren können mit dem Prozessor 1410 durch einen Sensor-Hub 1440, z. B. über eine I2C-Verschaltung, gekoppelt sein. In der Ausführungsform, die in 14 gezeigt ist, können diese Sensoren einen Beschleunigungsmesser 1441, einen Umgebungslichtsensor (ALS, Ambient Light Sensor) 1442, einen Kompass 1443 und ein Gyroskop 1444 umfassen. Andere Umgebungssensoren können einen oder mehrere Wärmesensoren 1446 umfassen, welche in einigen Ausführungsformen mit dem Prozessor 1410 über einen Systemverwaltungsbus (SMBus, System Management Bus) gekoppelt sind.
  • Wie auch in 14 zu sehen ist, können verschiedene periphere Vorrichtungen mit dem Prozessor 1410 über eine Low-Pin-Count(LPC)-Verschaltung gekoppelt sein. In der gezeigten Ausführungsform können verschiedene Komponenten durch einen eingebetteten Controller 1435 gekoppelt sein. Solche Komponenten können eine Tastatur 1436 (z. B. über eine PS2-Schnittstelle gekoppelt), einen Ventilator 1437 und einen Wärmesensor 1439 umfassen. In einigen Ausführungsformen kann das Touch-Pad 1430 auch mit dem EC 1435 über eine PS2-Schnittstelle gekoppelt sein. Zusätzlich kann ein Sicherheitsprozessor, wie etwa ein vertrauenswürdiges Plattformmodul (TPM, Trusted Platform Module) 1438, auch mit dem Prozessor 1410 über diese LPC-Verschaltung gekoppelt sein.
  • Das System 1400 kann auf eine Vielfalt an Arten mit externen Vorrichtungen kommunizieren, einschließlich drahtlos. In der Ausführungsform, die in 14 gezeigt ist, sind verschiedene drahtlose Module vorhanden, von welchen jedes einem Funk entsprechen kann, der für ein bestimmtes Drahtloskommunikationsprotokoll konfiguriert ist. Eine Art für drahtlose Kommunikation mit einer kurzen Reichweite, wie etwa einem Nahfeld, kann über eine NFC-Einheit 1445 sein, welche in einer Ausführungsform mit dem Prozessor 1410 über einen SMBus kommunizieren kann. Es sei darauf hingewiesen, dass über diese NFC-Einheit 1445 Vorrichtungen in unmittelbarer Nähe zueinander kommunizieren können.
  • Wie ferner in 14 zu sehen ist, können zusätzliche drahtlose Einheiten andere drahtlose Nahbereichsengines einschließlich einer WLAN-Einheit 1450 und einer Bluetooth™-Einheit 1452 umfassen. Unter Verwendung der WLAN-Einheit 1450 können Wi-Fi™-Kommunikationen realisiert werden, während über die Bluetooth™-Einheit 1452 Nahbereichs-Bluetooth™-Kommunikationen erfolgen können. Diese Einheiten können über eine gegebene Verknüpfung mit dem Prozessor 1410 kommunizieren.
  • Zusätzlich können drahtlose Großraumkommunikationen, z. B. gemäß einem zellulären oder einem anderen Drahtlosgroßraumprotokoll, über eine WWAN-Einheit 1456 erfolgen, welche wiederum mit einem Teilnehmeridentitätsmodul (SIM, Subscriber Identity Module) 1457 gekoppelt sein kann. Zusätzlich kann auch ein GPS-Modul 1455 vorhanden sein, um den Erhalt und die Verwendung von Ortsinformationen zu ermöglichen. Es sei darauf hingewiesen, dass in der Ausführungsform, die in 14 gezeigt ist, die WWAN-Einheit 1456 und eine integrierte Aufnahmevorrichtung, wie etwa ein Kameramodul 1454, über eine gegebene Verknüpfung kommunizieren können.
  • Um Audioeingaben und -ausgaben bereitzustellen, kann ein Audioprozessor über einen Digitalsignalprozessor (DSP) 1460 implementiert werden, welcher mit dem Prozessor 1410 über eine Verknüpfung von Audio mit hoher Auflösung (HDA, High Definition Audio) gekoppelt sein kann. Ähnlich kann der DSP 1460 mit einem integrierten Codierer/Decodierer (CODEC) und einem Verstärker 1462, der wiederum mit Ausgabelautsprechern 1463 gekoppelt sein kann, welche innerhalb des Rahmens implementiert sein können, kommunizieren. Ähnlich können der Verstärker und der CODEC 1462 gekoppelt sein, um Audioeingaben von einem Mikrofon 1465 zu erhalten, welches in einer Ausführungsform über Dual-Array-Mikrofone (wie etwa ein Digitalmikrofonarray) implementiert sein kann, um hochqualitative Audioeingaben bereitzustellen, um eine durch Sprache aktivierte Steuerung verschiedener Operationen innerhalb des Systems zu ermöglichen. Es sei auch darauf hingewiesen, dass Audio-Ausgaben von dem Verstärker/CODEC 1462 einem Kopfhöreranschluss 1464 bereitgestellt werden können. Wenngleich er mit diesen konkreten Komponenten in der Ausführungsform von 14 gezeigt ist, versteht sich, dass der Umfang der vorliegenden Erfindung nicht diesbezüglich beschränkt ist.
  • Wenngleich es nicht in 14 gezeigt ist, kann in einigen Ausführungsformen das System 1400 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Die Ausführungsformen können in vielen verschiedenen Systemarten implementiert werden. Unter Bezugnahme nunmehr auf 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 gezeigt ist, ist das Multiprozessorsystem 1500 ein Punkt-zu-Punkt-Verschaltungssystem und weist einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Verschaltung 1550 gekoppelt sind, auf. Wie in 15 gezeigt ist, kann jeder der Prozessoren 1570 und 1580 ein Mehrkernprozessor einschließlich eines ersten und zweiten Prozessorkerns (d. h., die Prozessorkerne 1574a und 1574b und die Prozessorkerne 1584a und 1584b) sein, wenngleich potentiell viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU oder eine sonstige Leistungsverwaltungslogik aufweisen, um eine prozessorbasierte Leistungsverwaltung durchzuführen, wie hierin beschrieben ist.
  • Immer noch unter Bezugnahme auf 15 umfasst der erste Prozessor 1570 ferner einen Speichercontroller-Hub (MCH, Memory Controller Hub) 1572 und Punkt-zu-Punkt(P-P)-Schnittstellen 1576 und 1578. Ähnlich weist der zweite Prozessor 1580 einen MCH 1582 und P-P-Schnittstellen 1586 und 1588 auf. Wie in 15 gezeigt ist, koppeln die MCHs 1572 und 1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, welche Teile des Systemspeichers (z. B. DRAM) sein können, der lokal mit den jeweiligen Prozessoren verbunden ist. Der erste Prozessor 1570 und der zweite Prozessor 1580 können jeweils über P-P-Verschaltungen 1562 und 1564 mit einem Chipsatz 1590 gekoppelt sein. Wie in 15 gezeigt ist, weist der Chipsatz 1590 P-P-Schnittstellen 1594 und 1598 auf.
  • Ferner weist der Chipsatz 1590 eine Schnittstelle 1592 zum Koppeln des Chipsatzes 1590 mit einer Hochleistungsgrafikengine 1538 durch eine P-P-Verschaltung 1539 auf. Dagegen kann der Chipsatz 1590 über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. Wie in 15 gezeigt ist, können verschiedene Eingabe-/Ausgabe(E/A)-vorrichtungen 1514 mit dem ersten Bus 1516 zusammen mit einer Busbrücke 1518 gekoppelt sein, welche den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt. Verschiedene Vorrichtungen können in einer Ausführungsform mit dem zweiten Bus 1520 gekoppelt sein, einschließlich zum Beispiel einer Tastatur/Maus 1522, Kommunikationsvorrichtungen 1526 und einer Datenspeichereinheit 1528, wie etwa eine Festplatte oder sonstige Massenspeichervorrichtung, welche Code 1530 umfassen kann. Ferner kann eine Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt sein. Die Ausführungsformen können in anderen Arten von Systemen einschließlich mobiler Vorrichtungen, wie etwa ein intelligentes zelluläres Telefon, ein Tablet-Computer, ein Netbook, ein Ultrabook™ und so weiter, aufgenommen sein.
  • Wenngleich es nicht in 15 gezeigt ist, kann in einigen Ausführungsformen das System 1500 alle oder einen Teil der Komponenten und/oder Prozesse, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, aufweisen.
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentativen Code implementiert werden, der auf einem maschinenlesbaren Medium gespeichert ist, welcher Logik innerhalb einer integrierten Schaltung, wie etwa einem Prozessor, darstellt und/oder definiert. Zum Beispiel kann das maschinenlesbare Medium Befehle aufweisen, welche diverse Logik innerhalb des Prozessors darstellen. Wenn sie von einer Maschine gelesen werden, können die Befehle bewirken, dass die Maschine die Logik herstellt, um die hierin beschriebenen Techniken durchzuführen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, sind wiederverwendbare Einheiten von Logik für eine integrierte Schaltung, die auf einem greifbaren maschinenlesbaren Medium als ein Hardwaremodell, das die Struktur der integrierten Schaltung beschreibt, gespeichert werden können. Das Hardwaremodell kann verschiedenen Kunden oder Herstellungseinrichtungen zugeführt werden, welche das Hardwaremodell auf Herstellungsmaschinen laden, die die integrierte Schaltung herstellen. Die integrierte Schaltung kann derart hergestellt werden, dass die Schaltung Operationen durchführt, die in Verbindung mit einer der hierin beschriebenen Ausführungsformen beschrieben sind.
  • 16 ist ein Blockdiagramm, das ein IP-Kern-Entwicklungssystem 1600 veranschaulicht, das verwendet werden kann, um eine integrierte Schaltung herzustellen, um Operationen gemäß einer Ausführungsform durchzuführen. Das IP-Kern-Entwicklungssystem 1600 kann verwendet werden, um modulare, wiederverwendbare Designs zu erzeugen, die in ein größeres Design aufgenommen oder verwendet werden können, um eine gesamte integrierte Schaltung (z. B. eine integrierte SoC-Schaltung) zu konstruieren. Eine Designeinrichtung 1630 kann eine Softwaresimulation 1610 eines IP-Kern-Designs in einer höheren Programmiersprache (z. B. C/C++) erzeugen. Die Softwaresimulation 1610 kann verwendet werden, um das Verhalten des IP-Kerns zu gestalten, testen und verifizieren. Ein Registertransferlevel(RTL)-design kann dann anhand des Simulationsmodells erstellt oder synthetisiert werden. Das RTL-Design 1615 ist eine Abstraktion des Verhaltens der integrierten Schaltung, die den Strom von digitalen Signalen zwischen Hardwareregistern modelliert, einschließlich der zugehörigen Logik, die unter Verwendung der modellierten digitalen Signale durchgeführt wird. Zusätzlich zu einem RTL-Design 1615 können auch Designs niederer Ebene an der Logikebene oder Transistorebene erstellt, gestaltet oder synthetisiert werden. Somit können die konkreten Details der anfänglichen Gestaltung und Simulation variieren.
  • Das RTL-Design 1615 oder ein Äquivalent kann ferner durch die Designeinrichtung zu einem Hardwaremodell 1620 synthetisiert werden, welches in einer Hardwarebeschreibungssprache (HDL, Hardware Description Language) oder einer anderen Darstellung von physikalischen Designdaten vorliegen kann. Die HDL kann ferner simuliert oder getestet werden, um das IP-Kern-Design zu verifizieren. Das IP-Kern-Design kann zur Lieferung an eine Drittherstellungseinrichtung 1665 unter Verwendung von nichtflüchtigem Speicher 1640 (z. B. Festplatte, Flash-Speicher oder ein beliebiges nichtflüchtiges Speichermedium) gespeichert werden. Alternativ kann das IP-Kern-Design (z. B. über das Internet) über eine drahtgebundene Verbindung 1650 oder drahtlose Verbindung 1660 übertragen werden. Die Herstellungseinrichtung 1665 kann dann eine integrierte Schaltung herstellen, die mindestens zum Teil auf dem IP-Kern-Design basiert. Die hergestellte integrierte Schaltung kann konfiguriert sein, um Operationen gemäß den Komponenten und/oder Prozessen, die nachstehend unter Bezugnahme auf 26-29 beschrieben sind, durchzuführen.
  • 17A-25, die nachstehend beschrieben sind, beschreiben genau beispielhafte Architekturen und Systeme zum Implementieren von Ausführungsformen der nachstehend unter Bezugnahme auf 26-29 beschriebenen Komponenten und/oder Prozesse. In einigen Ausführungsformen sind eine oder mehrere Hardwarekomponenten und/oder -befehle, die in 26-29 beschrieben sind, emuliert, wie nachstehend genau beschrieben ist, oder als Softwaremodule implementiert.
  • Die Ausführungsformen des Befehls bzw. der Befehle, die zuvor genau beschrieben wurden, können in einem „generischen vektorfreundlichen Befehlsformat“ ausgeführt werden, welches nachstehend genau beschrieben wird. In anderen Ausführungsformen wird solch ein Format nicht verwendet und wird ein anderes Befehlsformat verwendet, jedoch ist die nachstehende Beschreibung der Schreibmaskenregister, verschiedener Datentransformationen (Swizzle, Broadcast usw.), Adressierung usw. allgemein bei der Beschreibung der Ausführungsformen des vorherigen Befehls bzw. der vorherigen Befehle anwendbar. Zusätzlich werden beispielhafte Systeme, Architekturen und Pipelines nachstehend genau beschrieben. Ausführungsformen des Befehls bzw. der Befehle können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind jedoch nicht auf die genau beschriebenen beschränkt.
  • Ein Befehlssatz kann ein oder mehrere Befehlsformate aufweisen. Ein gegebenes Befehlsformat kann verschiedene Felder definieren (z. B. die Anzahl an Bits, die Position von Bits), um unter anderem die durchzuführende Operation (z. B. den Opcode) und den Operand bzw. die Operanden, auf welchen jene Operation durchzuführen ist und/oder (ein) andere(s) Datenfeld(er) (z. B. eine Maske) zu spezifizieren. Einige Befehlsformate werden weiter durch die Definition von Befehlstemplates (oder Teilformaten) aufgeteilt. Zum Beispiel können die Befehlstemplates eines gegebenen Befehlsformats derart definiert sein, dass sie unterschiedliche Untergruppen der Felder des Befehlsformats aufweisen (die enthaltenen Felder sind typischerweise in derselben Reihenfolge, jedoch weisen zumindest einige unterschiedliche Bit-Positionen auf, da weniger Felder enthalten sind), und/oder derart definiert sein, dass sie ein gegebenes Feld aufweisen, dass unterschiedlich interpretiert wird. Somit wird jeder Befehl einer ISA unter Verwendung eines gegebenen Befehlsformats ausgedrückt (und, wenn er definiert ist, in einem gegebenen der Befehlstemplates jenes Befehlsformats) und weist Felder zum Spezifizieren der Operation und der Operanden auf. Zum Beispiel weist ein beispielhafter ADD-Befehl einen spezifischen Opcode und ein Befehlsformat, das ein Opcodefeld zum Spezifizieren jenes Opcodes und Operandenfelder zum Auswählen von Operanden (source1/destination und source2) umfasst, auf; und ein Auftreten dieses ADD-Befehls in einem Befehlsstrom wird spezifischen Inhalt in den Operandenfeldern aufweisen, die spezifische Operanden auswählen. Es ist eine Gruppe von SMID-Erweiterungen, die als die Fortgeschrittenen Vektorerweiterungen (AVX) (AVX1 und AVX2) bezeichnet werden und das Vektorerweiterungs(VEX)-codierungsschema verwenden, freigegeben und/oder veröffentlicht worden (siehe z. B. Intel® 64 and IA-32 Architectures Software Developer's Manual, September 2014; und siehe Intel® Advanced Vector Extensions Programming Reference, Oktober 2014).
  • Beispielhafte Befehlsformate
  • Ausführungsformen des hierin beschriebenen Befehls bzw. der hierin beschriebenen Befehle können in verschiedenen Formaten ausgeführt werden. Zusätzlich werden beispielhafte Systeme, Architekturen und Pipelines nachstehend genau beschrieben. Ausführungsformen des Befehls bzw. der Befehle können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind jedoch nicht auf die genau beschriebenen beschränkt.
  • Generisches vektorfreundliches Befehlsformat
  • Ein vektorfreundliches Befehlsformat ist ein Befehlsformat, das für Vektorbefehle geeignet ist (z. B. sind bestimmte Felder spezifisch bezüglich Vektoroperationen). Wenngleich Ausführungsformen beschrieben sind, in welchen sowohl Vektor- als auch skalare Operationen durch das vektorfreundliche Befehlsformat unterstützt werden, verwenden alternative Ausführungsformen nur Vektoroperationen mit dem vektorfreundlichen Befehlsformat.
  • 17A-17B sind Blockdiagramme, die ein generisches vektorfreundliches Befehlsformat und Befehlsvorlagen davon gemäß Ausführungsformen der Erfindung veranschaulichen. 17A ist ein Blockdiagramm, das ein generisches vektorfreundliches Befehlsformat und Klasse A-Befehlstemplates davon gemäß Ausführungsformen der Erfindung veranschaulicht; während 17B ein Blockdiagramm ist, das das generische vektorfreundliche Befehlsformat und Klasse B-Befehlstemplates davon gemäß Ausführungsformen der Erfindung veranschaulicht. Insbesondere sind für ein generisches vektorfreundliches Befehlsformat 1700 Klasse-A- und Klasse-B-Befehlstemplates, welche beide Befehlsformate ohne Speicherzugriff 1705 und Befehlstemplates mit Speicherzugriff 1720 umfassen. Der Begriff „generisch“ im Kontext des vektorfreundlichen Befehlsformats bezieht sich darauf, dass das Befehlsformat nicht auf irgendeinen spezifischen Befehlssatz beschränkt ist.
  • Wenngleich Ausführungsformen der Erfindung beschrieben werden, in welchen das vektorfreundliche Befehlsformat Folgendes unterstützt: eine 64-Byte-Vektoroperandenlänge (oder -größe) mit 32-Bit(4-Byte-)- oder 64-Bit(8-Byte-)-Datenelementbreiten (oder -größen) (und somit besteht ein 64-Byte-Vektor entweder aus 16 Doppelwort-Größenelementen oder alternativ 8 Vierwort-Größenelementen); eine 64-Byte-Vektoroperandenlänge (oder -größe) mit 16-Bit-(2-Byte) oder 8-Bit-(1-Byte)Datenelementbreiten (oder -größen); eine 32-Byte-Vektoroperandenlänge (oder -größe) mit 32-Bit(4-Byte-)-, 64-Bit(8-Byte-)-, 16-Bit(2-Byte-)- oder 8-Bit(1-Byte-)-Datenelementbreiten (oder -größen); und eine 16-Byte-Vektoroperandenlänge (oder -größe) mit 32-Bit(4-Byte-)-, 64-Bit(8-Byte-)-, 16-Bit(2-Byte-)- oder 8-Bit(1-Byte-)-Datenelementbreiten (oder -größen); können alternative Ausführungsformen mehr, weniger und/oder andere Vektoroperandengrößen (z. B. 256-Byte-Vektoroperanden) mit mehr, weniger oder anderen Datenelementbreiten (z. B. 128-Bit(16-Byte-)-Datenelementbreiten unterstützen).
  • Die Klasse A-Befehlstemplates in 17A umfassen: 1) innerhalb der Befehlstemplates ohne Speicherzugriff 1705 ist ein Befehlstemplate vom Typ vollständige Rundungssteuerung ohne Speicherzugriff 1710 und ein Befehlstemplate vom Typ Datentransformation ohne Speicherzugriff 1715 gezeigt; und 2) innerhalb der Befehlstemplates mit Speicherzugriff 1720 ist ein Befehlstemplate mit Speicherzugriff, temporär 1725 und ein Befehlstemplate mit Speicherzugriff, nicht temporär 1730 gezeigt. Die Klasse B-Befehlstemplates in 17B umfassen: 1) innerhalb der Befehlstemplates ohne Speicherzugriff 1705 ist ein Befehlstemplate vom Typ teilweise Rundungssteuerungsoperation ohne Speicherzugriff mit Schreibmaskensteuerung 1712 und ein Befehlstemplate für eine Operation vom Typ vsize ohne Speicherzugriff mit Schreibmaskensteuerung 1717 gezeigt; und 2) innerhalb der Befehlstemplates mit Speicherzugriff 1720 ist ein Befehlstemplate mit Speicherzugriff mit Schreibmaskensteuerung 1727 gezeigt.
  • Das generische vektorfreundliche Befehlsformat 1700 umfasst die folgenden Felder, die nachstehend in der in 17A-17B veranschaulichten Reihenfolge aufgelistet sind.
  • Das Formatfeld 1740 - ein spezifischer Wert (ein Befehlsformatkennungswert) in diesem Feld kennzeichnet eindeutig das vektorfreundliche Befehlsformat, und somit das Auftreten von Befehlen in dem vektorfreundlichen Befehlsformat in Befehlsströmen. Von daher ist dieses Feld optional in dem Sinne, dass es nicht für einen Befehlssatz benötigt wird, der nur das generische vektorfreundliche Befehlsformat aufweist.
  • Das Basisoperationsfeld 1742 - sein Inhalt unterscheidet unterschiedliche Basisoperationen.
  • Das Registerindexfeld 1744 - sein Inhalt spezifiziert direkt oder durch Adresserzeugung die Orte der Quell- und Zieloperanden, entweder in Registern oder in dem Speicher. Diese umfassen eine ausreichende Anzahl an Bits zum Auswählen von N Registern aus einer PxQ(z. B. 32x512, 16x128, 32x1024, 64x1024)-Registerdatei. Wenngleich in einer Ausführungsform N bis zu drei Quellen und ein Zielregister vorhanden sein können, können alternative Ausführungsformen mehr oder weniger Quellen und Zielregister unterstützen (können z. B. bis zu zwei Quellen unterstützen, wo eine dieser Quellen auch als Ziel agiert, können bis zu drei Quellen unterstützen, wo eine dieser Quellen auch als Ziel agiert, können bis zu zwei Quellen und ein Ziel unterstützen).
  • Das Modifiziererfeld 1746 - sein Inhalt unterscheidet das Auftreten von Befehlen in dem generischen Vektorbefehlsformat, die Speicherzugriff spezifizieren, von jenen, die dies nicht tun; d. h., zwischen Befehlstemplates ohne Speicherzugriff 1705 und Befehlstemplates mit Speicherzugriff 1720. Die Speicherzugriffsoperationen lesen in und/oder schreiben auf die Speicherhierarchie (in einigen Fällen unter Spezifizierung der Quell- und/oder Zieladressen unter Verwendung von Werten in Registern), während dies Operationen ohne Speicherzugriff nicht tun (z. B. sind die Quelle und die Ziele Register). Wenngleich in einer Ausführungsform dieses Feld auch zwischen drei verschiedenen Arten zum Durchführen von Speicheradressberechnungen auswählt, können alternative Ausführungsformen mehr, weniger oder andere Arten zum Durchführen von Speicheradressberechnungen unterstützen.
  • Das Vergrößerungsoperationsfeld 1750 - sein Inhalt unterscheidet, welche einer Vielfalt an unterschiedlichen Operationen zusätzlich zu der Basisoperation durchzuführen ist. Dieses Feld ist kontextspezifisch. In einer Ausführungsform der Erfindung ist dieses Feld in ein Klassenfeld 1768, ein Alpha-Feld 1752 und ein Beta-Feld 1754 unterteilt. Das Vergrößerungsoperationsfeld 1750 erlaubt gemeinsamen Gruppen von Operationen, in einem einzigen Befehl anstelle von 2, 3 oder 4 Befehlen durchgeführt zu werden.
  • Das Skalenfeld 1760 - sein Inhalt erlaubt das Skalieren des Inhalts des Indexfelds zur Speicheradresserzeugung (z. B. zur Adresserzeugung, die 2Skala * Index + Basis verwendet).
  • Das Verschiebungsfeld 1762A - sein Inhalt wird als Teil der Speicheradresserzeugung (z. B. zur Adresserzeugung, die 2Skala * Index + Basis + Verschiebung verwendet) verwendet.
  • Das Verschiebungsfaktorfeld 1762B (es sei darauf hingewiesen, dass die Nebeneinanderstellung des Verschiebungsfelds 1762A direkt über dem Verschiebungsfaktorfeld 1762B anzeigt, dass entweder das eine oder das andere verwendet wird) - sein Inhalt wird als Teil der Adresserzeugung verwendet; es spezifiziert einen Verschiebungsfaktor, der durch die Größe eines Speicherzugriffs (N) zu skalieren ist - wobei N die Anzahl an Bytes in dem Speicherzugriff ist (z. B. zur Adresserzeugung, die 2 Skala * Index + Basis + skalierte Verschiebung verwendet). Redundante Bits niedriger Ordnung werden ignoriert, und somit wird der Inhalt des Verschiebungsfaktorfelds mit der Speicheroperanden-Gesamtgröße (N) multipliziert, um die letztendliche Verschiebung zu erzeugen, die bei dem Berechnen einer effektiven Adresse zu verwenden ist. Der Wert von N wird durch die Prozessorhardware zur Laufzeit basierend auf dem vollständigen Opcodefeld 1774 (weiter unten hierin beschrieben) und dem Datenmanipulationsfeld 1754C bestimmt. Das Verschiebungsfeld 1762A und das Verschiebungsfaktorfeld 1762B sind optional in dem Sinne, dass sie nicht für die Befehlstemplates ohne Speicherzugriff 1705 verwendet werden, und/oder verschiedene Ausführungsformen können nur eines oder keines der beiden implementieren.
  • Das Datenelementbreitenfeld 1764 - sein Inhalt unterscheidet, welche einer Anzahl an Datenelementbreiten zu verwenden ist (in einigen Ausführungsformen für alle Befehle; in anderen Ausführungsformen nur für einige der Befehle). Dieses Feld ist optional in dem Sinne, dass es nicht benötigt wird, wenn nur eine Datenelementbreite unterstützt wird und/oder Datenelementbreiten unter Verwendung eines Aspekts der Opcodes unterstützt werden.
  • Das Schreibmaskenfeld 1770 - sein Inhalt steuert datenelementpositionsweise, ob jene Datenelementposition in dem Zielvektoroperand das Ergebnis der Basisoperation und der Vergrößerungsoperation widerspiegelt. Klasse-A-Befehlstemplates unterstützen Verschmelzungs-Schreibmaskierung, während Klasse-B-Befehlstemplates der Klasse B sowohl Verschmelzungs- als auch Nullungs-Schreibmaskierung unterstützen. Beim Verschmelzen erlauben Vektormasken den Schutz einer beliebigen Gruppe von Elementen im Ziel vor Aktualisierungen während der Ausführung irgendeiner Operation (spezifiziert durch die Basisoperation und die Vergrößerungsoperation); in einer anderen Ausführungsform, Bewahren des alten Werts jedes Elements des Ziels, wo das entsprechende Maskenbit eine 0 aufweist. Wenn dagegen Nullungsvektormasken die Nullung einer beliebigen Gruppe von Elementen im Ziel während der Ausführung irgendeiner Operation (spezifiziert durch die Basisoperation und die Vergrößerungsoperation) erlauben; in einer Ausführungsform wird ein Element des Ziels auf 0 gesetzt, wenn das entsprechende Maskenbit einen 0-Wert aufweist. Eine Untergruppe dieser Funktionalität ist die Möglichkeit, die Vektorlänge der Operation, die ausgeführt wird (das heißt, die Spanne von Elementen, die modifiziert werden, vom ersten bis zum letzten), zu steuern; es ist jedoch nicht notwendig, dass die Elemente, die abgeändert werden, aufeinanderfolgend sind. Somit erlaubt das Schreibmaskenfeld 1770 teilweise Vektoroperationen, darunter Ladevorgänge, Speichervorgänge, arithmetisch, logisch usw. Wenngleich Ausführungsformen der Erfindung beschrieben werden, in welchen der Inhalt des Schreibmaskenfelds 1770 eines einer Anzahl an Schreibmaskenregister auswählt, das die zu verwendende Schreibmaske enthält (und somit der Inhalt des Schreibmaskenfelds 1770 indirekt jene durchzuführende Maskierung kennzeichnet), erlauben alternative Ausführungsformen stattdessen oder zusätzlich dem Inhalt des Schreibmaskenfelds 1770, direkt die durchzuführende Maskierung zu spezifizieren.
  • Das Immediate-Feld 1772 - sein Inhalt erlaubt die Spezifizierung eines Immediate. Dieses Feld ist in dem Sinne optional, dass es bei einer Implementierung des generischen vektorfreundlichen Formats, das das Immediate nicht unterstützt, nicht vorhanden ist und in Befehlen, die kein Immediate verwenden, nicht vorhanden ist.
  • Klassenfeld 1768 - sein Inhalt unterscheidet zwischen verschiedenen Klassen von Befehlen. Unter Bezugnahme auf 17A-17B wählt der Inhalt dieses Felds zwischen Klasse A- und Klasse B-Befehlen aus. In 17A-B werden Quadrate mit abgerundeten Ecken verwendet, um anzugeben, dass ein spezifischer Wert in einem Feld vorhanden ist (z. B. jeweils Klasse A 1768A und Klasse B 1768B für das Klassenfeld 1768 in 17A-B).
  • Befehlstemplates der Klasse A
  • Im Fall der Klasse-A-Befehlstemplates ohne Speicherzugriff 1705 wird das Alpha-Feld 1752 als ein RS-Feld 1752A interpretiert, dessen Inhalt unterscheidet, welche der verschiedenen Vergrößerungsoperationsarten auszuführen sind (z. B. werden für die Befehlstemplates vom Typ Rundungsoperation ohne Speicherzugriff 1710 und vom Typ Datentransformationsoperation ohne Speicherzugriff 1715 jeweils Rundung 1752A.1 und Datentransformation 1752A.2 spezifiziert), während das Beta-Feld 1754 unterscheidet, welche der Operationen der spezifizierten Art auszuführen ist. Bei den Befehlstemplates ohne Speicherzugriff 1705 sind das Skalenfeld 1760, das Verschiebungsfeld 1762A und das Verschiebungsskalenfeld 1762B nicht vorhanden.
  • Befehlstemplates vom Typ vollständige Rundungssteuerungsoperation ohne Speicherzugriff
  • In dem Befehlstemplate vom Typ vollständige Rundungssteuerungsoperation ohne Speicherzugriff 1710 vom Typ vollständige Rundungssteuerung ohne Speicherzugriff wird das Beta-Feld 1754 als ein Rundungssteuerungsfeld 1754A interpretiert, dessen Inhalt(e) statische Rundung bereitstellen. Wenngleich in den beschriebenen Ausführungsformen der Erfindung das Rundungssteuerungsfeld 1754A ein Feld 1756 zur Unterdrückung aller Gleitkomma-Ausnahmen (SAE) und ein Feld 1758 zur Rundungsoperationssteuerung umfasst, können alternative Ausführungsformen das Codieren dieser beiden Konzepte in dasselbe Feld unterstützen oder können nur das eine oder das andere dieser Konzepte/Felder aufweisen (können z. B. nur das Rundungsoperationssteuerungsfeld 1758 aufweisen).
  • Das SAE-Feld 1756 - sein Inhalt unterscheidet, ob die Ausnahmeereignismeldung zu sperren ist oder nicht; wenn der Inhalt des SAE-Felds 1756 angibt, dass Unterdrückung freigegeben ist, meldet ein gegebener Befehl keinerlei Art von Gleitkomma-Ausnahmeflag und ruft keinerlei Gleitkomma-Ausnahmehandler hervor.
  • Das Rundungsoperationssteuerungsfeld 1758 - sein Inhalt unterscheidet, welche einer Gruppe von Rundungsoperationen durchzuführen ist (z. B. Aufrunden, Abrunden, Runden in Richtung von Null und Runden in Richtung des Nächsten). Somit erlaubt das Rundungsoperationssteuerungsfeld 1758 ein befehlsweises Ändern des Rundungsmodus. In einer Ausführungsform der Erfindung, wo ein Prozessor ein Steuerregister zum Spezifizieren von Rundungsmodi aufweist, überschreibt der Inhalt des Rundungsoperationssteuerungsfelds 1750 jenen Registerwert.
  • Befehlstemplates vom Typ Datentransformationsoperation ohne Speicherzugriff
  • In dem Befehlstemplate vom Typ Datentransformationsoperation ohne Speicherzugriff 1715 wird das Beta-Feld 1754 als ein Datentransformationsfeld 1754B interpretiert, dessen Inhalt unterscheidet, welche einer Anzahl an Datentransformationen auszuführen ist (z. B. keine Datentransformation, Swizzle, Broadcast).
  • Im Fall eines Befehlstemplates mit Speicherzugriff 1720 der Klasse A wird das Alpha-Feld 1752 als ein Ausräumhinweisfeld 1752B interpretiert, dessen Inhalt unterscheidet, welcher der Ausräumhinweise zu verwenden ist (in 17A werden für das Befehlstemplate mit Speicherzugriff, temporär 1725 und das Befehlstemplate mit Speicherzugriff, nicht temporär 1730 jeweils temporär 1752B.1 und nicht-temporär 1752B.2 spezifiziert), während das Beta-Feld 1754 als ein Datenmanipulationsfeld 1754C interpretiert wird, dessen Inhalt unterscheidet, welche einer Anzahl an Datenmanipulationsoperationen (auch als Primitive bekannt) auszuführen ist (z. B. keine Manipulation; Broadcast; Aufwärtsumsetzung einer Quelle; und Abwärtsumsetzung eines Ziels). Die Befehlstemplates mit Speicherzugriff 1720 umfassen das Skalenfeld 1760 und gegebenenfalls das Verschiebungsfeld 1762A oder das Verschiebungsskalenfeld 1762B.
  • Vektor-Speicherbefehle führen Vektorladevorgänge von und Vektorspeichervorgänge in Speicher mit Umsetzungsunterstützung durch. Wie bei regulären Vektorbefehlen transferieren Vektor-Speicherbefehle Daten von/zu Speicher auf datenelementweise Art, wobei die Elemente, die tatsächlich transferiert werden, durch den Inhalt der Vektormaske vorgeschrieben werden, die als die Schreibmaske ausgewählt wird.
  • Befehlstemplates mit Speicherzugriff - Temporär
  • Temporäre Daten sind Daten, die wahrscheinlich bald genug wiederverwendet werden, um von dem Speichern im Cache zu profitieren. Dies ist jedoch ein Hinweis und verschiedene Prozessoren können ihn auf verschiedene Weisen implementieren, darunter vollständiges Ignorieren des Hinweises.
  • Befehlstemplates mit Speicherzugriff - Nicht-temporär
  • Nicht-temporäre Daten sind Daten, die wahrscheinlich nicht bald genug wiederverwendet werden, um von Cache-Speicherung im Cache der ersten Ebene zu profitieren, und sollten Priorität für Ausräumung erhalten. Dies ist jedoch ein Hinweis und verschiedene Prozessoren können ihn auf verschiedene Weisen implementieren, darunter vollständiges Ignorieren des Hinweises.
  • Befehlstemplates der Klasse B
  • Im Fall der Klasse-B-Befehlstemplates wird das Alpha-Feld 1752 als ein Feld 1752C zur Schreibmaskensteuerung (Z) interpretiert, dessen Inhalt unterscheidet, ob die durch das Schreibmaskenfeld 1770 gesteuerte Schreibmaskierung eine Verschmelzung oder eine Nullung sein soll.
  • Im Fall der Befehlstemplates ohne Speicherzugriff 1705 der Klasse B wird ein Teil des Beta-Felds 1754 als ein RL-Feld 1757A interpretiert, dessen Inhalt unterscheidet, welche der verschiedenen Vergrößerungsoperationsarten auszuführen sind (z. B. werden für das Befehlstemplate vom Typ teilweise Rundungssteuerungsoperation ohne Speicherzugriff mit Schreibmaskensteuerung 1712 und das Befehlstemplate vom Typ VSIZE-Operation ohne Speicherzugriff mit Schreibaskensteuerung 1717 jeweils Rundung 1757A.1 bzw. Vektorlänge (VSIZE) 1757A.2 spezifiziert), während der Rest des Beta-Felds 1754 unterscheidet, welche der Operationen des spezifizierten Typs auszuführen ist. Bei den Befehlstemplates ohne Speicherzugriff 1705 sind das Skalenfeld 1760, das Verschiebungsfeld 1762A und das Verschiebungsskalenfeld 1762B nicht vorhanden.
  • In dem Befehlstemplate vom Typ teilweise Rundungssteuerungsoperation ohne Speicherzugriff mit Schreibmaskensteuerung 1710 wird der Rest des Beta-Felds 1754 als ein Rundungsoperationsfeld 1759A interpretiert und Ausnahmeereignismeldung wird gesperrt (ein gegebener Befehl meldet keinerlei Art von Gleitkomma-Ausnahmeflag und ruft keinerlei Gleitkomma-Ausnahmehandler hervor).
  • Das Rundungsoperationssteuerungsfeld 1759A - wie bei dem Rundungsoperationssteuerungsfeld 1758 unterscheidet sein Inhalt, welche einer Gruppe von Rundungsoperationen auszuführen ist (z. B. Aufrunden, Abrunden, Runden in Richtung Null und Runden zum Nächsten). Somit erlaubt das Rundungsoperationssteuerungsfeld 1759A ein befehlsweises Ändern des Rundungsmodus. In einer Ausführungsform der Erfindung, wo ein Prozessor ein Steuerregister zum Spezifizieren von Rundungsmodi aufweist, überschreibt der Inhalt des Rundungsoperationssteuerungsfelds 1750 jenen Registerwert.
  • In dem Befehlstemplate vom Typ VSIZE-Operation ohne Speicherzugriff mit Schreibmaskensteuerung 1717 wird der Rest des Beta-Felds 1754 als ein Vektorlängenfeld 1759B interpretiert, dessen Inhalt unterscheidet, an welcher einer Anzahl an Datenvektorlängen zu arbeiten ist (z. B. 128, 256 oder 512 Bytes).
  • Im Fall eines Befehlstemplates mi Speicherzugriff 1720 der Klasse B wird ein Teil des Beta-Felds 1754 als ein Übertragungsfeld 1757B interpretiert, dessen Inhalt unterscheidet, ob die Datenmanipulationsoperation des Übertragungstyps auszuführen ist, während der Rest des Beta-Felds 1754 als das Vektorlängenfeld 1759B interpretiert wird. Die Befehlstemplates mit Speicherzugriff 1720 umfassen das Skalenfeld 1760 und gegebenenfalls das Verschiebungsfeld 1762A oder das Verschiebungsskalenfeld 1762B.
  • Bezüglich des generischen vektorfreundlichen Befehlsformats 1700 ist ein vollständiges Opcodefeld 1774 einschließlich des Formatfelds 1740, des Basisoperationsfelds 1742 und des Datenelementbreitenfelds 1764 gezeigt. Wenngleich eine Ausführungsform gezeigt ist, wo das vollständige Opcodefeld 1774 alle dieser Felder umfasst, umfasst das vollständige Opcodefeld 1774 weniger als alle dieser Felder in Ausführungsformen, die nicht alle davon unterstützen. Das vollständige Opcodefeld 1774 stellt den Operationscode (Opcode) bereit.
  • Das Vergrößerungsoperationsfeld 1750, das Datenelementbreitenfeld 1764 und das Schreibmaskenfeld 1770 erlauben, dass diese Merkmale befehlsweise in dem generischen vektorfreundlichen Befehlsformat spezifiziert werden.
  • Die Kombination des Schreibmaskenfelds und des Datenelementbreitenfelds erzeugen insofern typisierte Befehle, als sie der Maske erlauben, basierend auf unterschiedlichen Datenelementbreiten angewendet zu werden.
  • Die verschiedenen Befehlstemplates, die innerhalb der Klasse A und der Klasse B zu finden sind, sind in verschiedenen Situationen vorteilhaft. In einigen Ausführungsformen der Erfindung können verschiedene Prozessoren oder verschiedene Kerne innerhalb eines Prozessors nur Klasse A, nur Klasse B oder beide Klassen unterstützen. Zum Beispiel kann ein Hochleistungsuniversal-Out-of-order-Kern, der zur Universalberechnung vorgesehen ist, nur Klasse B unterstützen, kann ein Kern, der primär für Grafik- und/oder wissenschaftliche (Durchsatz-) Berechnung vorgesehen ist, nur Klasse A unterstützen, und kann ein Kern, der für beides vorgesehen ist, beides unterstützen (selbstverständlich liegt ein Kern, der eine Mischung von Templates und Befehlen von beiden Klassen, jedoch nicht alle Templates und Befehle von beiden Klassen aufweist, innerhalb des Geltungsbereichs der Erfindung). Ebenfalls kann ein einzelner Prozessor mehrere Kerne aufweisen, von welchen alle dieselbe Klasse unterstützen oder bei welchem verschiedene Kerne verschiedene Klassen unterstützen. Zum Beispiel kann bei einem Prozessor mit separaten Grafik- und Universalkernen einer der Grafikkerne, die primär für Grafik- und/oder wissenschaftliches Rechnen vorgesehen sind, nur Klasse A unterstützen, während einer oder mehrere der Universalkerne Hochleistungsuniversalkerne mit einer Out-of-order-Ausführung und Registerumbenennung, die für Universalrechnen vorgesehen sind, die nur Klasse B unterstützen, sein können. Ein anderer Prozessor, der keinen separaten Grafikkern aufweist, kann einen oder mehrere Universal-In-order- oder Out-of-order-Kerne aufweisen, die sowohl Klasse A als auch Klasse B unterstützen. Natürlich können Merkmale von einer Klasse auch in der anderen Klasse in verschiedenen Ausführungsformen der Erfindung implementiert sein. Programme, die in einer Hochebenensprache geschrieben sind, würden in vielfältige verschiedene ausführbare Formen versetzt (z. B. Just-in-Time-kompiliert oder statisch kompiliert) werden, darunter: 1) eine Form, die nur Befehle der Klasse(n) aufweist, die durch den Zielprozessor für Ausführung unterstützt werden; oder 2) eine Form mit alternativen Routinen, die unter Verwendung verschiedener Kombinationen der Befehle aller Klassen geschrieben sind, und mit Steuerflusscode, der die auszuführenden Routinen auf der Basis der Befehle auswählt, die durch den Prozessor unterstützt werden, der gerade den Code ausführt.
  • Beispielhaftes spezifisches vektorfreundliches Befehlsformat
  • 18A-18C sind Blockdiagramme, die ein beispielhaftes spezifisches vektorfreundliches Befehlsformat gemäß Ausführungsformen der Erfindung veranschaulichen. 18A zeigt ein spezifisches vektorfreundliches Befehlsformat 1800, das in dem Sinne spezifisch ist, dass es den Ort, die Größe, die Interpretation und Reihenfolge der Felder sowie Werte für einige jener Felder spezifiziert. Das spezifische vektorfreundliche Befehlsformat 1800 kann verwendet werden, um den x86-Befehlssatz zu erweitern, und somit sind einige der Felder ähnlich oder dieselben wie jene, die in dem vorhandenen x86-Befehlssatz und der Erweiterung davon (z. B. AVX) verwendet werden. Dieses Format bleibt mit dem Präfixcodierungsfeld, Real-Opcode-Bytefeld, MOD-R/M-Feld, SIB-Feld, Verschiebungsfeld und den Immediate-Feldern des existierenden x86-Befehlssatzes mit Erweiterungen beständig. Es sind die Felder von 17A-17B dargestellt, auf welche die Felder von 18A-18C abgebildet werden.
  • Es versteht sich, dass, wenngleich die Ausführungsformen der Erfindung unter Bezugnahme auf das spezifische vektorfreundliche Befehlsformat 1800 im Kontext des generischen vektorfreundlichen Befehlsformats 1700 zu Veranschaulichungszwecken beschrieben werden, die Erfindung nicht auf das spezifische vektorfreundliche Befehlsformat 1800 beschränkt ist, außer dort, wo dies beansprucht wird. Zum Beispiel sieht das generische vektorfreundliche Befehlsformat 1700 eine Vielfalt an möglichen Größen für die verschiedenen Felder vor, wenngleich das spezifische vektorfreundliche Befehlsformat 1800 als Felder spezifischer Größen aufweisend gezeigt ist. Anhand eines spezifischen Beispiels ist, wenngleich das Datenelementbreitenfeld 1764 als ein Ein-Bit-Feld in dem spezifischen vektorfreundlichen Befehlsformat 1800 veranschaulicht ist, die Erfindung nicht so beschränkt (d. h., sieht das generische vektorfreundliche Befehlsformat 1700 andere Größen des Datenelementbreitenfelds 1764 vor).
  • Das generische vektorfreundliche Befehlsformat 1700 umfasst die folgenden Felder, die nachstehend in der in 18A veranschaulichten Reihenfolge aufgelistet sind.
  • EVEX Präfix (Bytes 0-3) 1802 - wird in einer Vier-Byte-Form codiert.
  • Das Formatfeld 1740 (EVEX-Byte 0, Bits [7:0]) - das erste Byte (EVEX-Byte 0) ist das Formatfeld 1740 und enthält 0x62 (den eindeutigen Wert, der in einer Ausführungsform der Erfindung zur Unterscheidung des vektorfreundlichen Befehlsformats verwendet wird).
  • Das zweite bis vierte Byte (EVEX-Bytes 1-3) umfassen eine Anzahl an Bitfeldern, die eine spezifische Fähigkeit bereitstellen.
  • Das REX-Feld 1805 (EVEX-Byte 1, Bits [7-5]) - besteht aus einem EVEX.R-Bitfeld (EVEX-Byte 1, Bit [7] - R), einem EVEX.X-Bitfeld-(EVEX-Byte 1, Bit [6] - X) und EVEX.B Byte 1, Bit[5] - B). Die Bitfelder EVEX.R, EVEX.X und EVEX.B stellen dieselbe Funktionalität wie die entsprechenden VEX-Bitfelder bereit und werden unter Verwendung der 1er-Komplementform codiert, d. h. ZMM0 als 1111B und ZMM15 als 0000B codiert. Andere Felder der Befehle codieren die unteren drei Bits der Registerindizes wie in der Technik bekannt (rrr, xxx und bbb), so dass Rrrr, Xxxx und Bbbb durch Addieren von EVEX.R, EVEX.X und EVEX.B gebildet werden können.
  • Das REX'-Feld 1810 - dies ist der erste Teil des REX'-Felds 1810 und ist das EVEX.R'-Bitfeld (EVEX-Byte 1, Bit [4] - R'), das verwendet wird, um entweder die oberen 16 oder unteren 16 des erweiterten 32-Registersatzes zu codieren. In einer Ausführungsform der Erfindung wird dieses Bit zusammen mit anderen wie nachfolgend angegeben in bitinvertiertem Format gespeichert, zur Unterscheidung (im wohlbekannten x86-32-Bit-Modus) von dem BOUND-Befehl, dessen Real-Opcode-Byte 62 ist, das aber in dem (nachfolgend beschriebenen) MOD-R/M-Feld den Wert von 11 im MOD-Feld nicht akzeptiert; alternative Ausführungsformen der Erfindung speichern dies und die anderen nachfolgend angegebenen Bits nicht im invertierten Format. Ein Wert von 1 wird verwendet, um die unteren 16 Register zu codieren. Mit anderen Worten wird R'Rrrr durch Kombinieren von EVEX.R', EVEX.R und des anderen RRR aus anderen Feldern gebildet.
  • Das Opcode-Abbildungsfeld 1815 (EVEX-Byte 1, Bits [3:0] - mmmm) - sein Inhalt codiert ein impliziertes vorderes Opcode-Byte (0F, 0F 38 oder 0F 3).
  • Das Datenelementbreitenfeld 1764 (EVEX-Byte 2, Bit [7] - W) - ist durch die Bezeichnung EVEX.W dargestellt. EVEX.W wird verwendet, um die Granularität (Größe) des Datentyps (entweder 32-Bit-Datenelemente oder 64-Bit-Datenelemente) zu definieren.
  • EVEX.vvvv 1820 (EVEX-Byte 2, Bits [6:3]-vvvv) - die Rolle von EVEX.vvvv kann Folgendes umfassen: 1) EVEX.vvvv codiert den ersten Quellregisteroperanden, spezifiziert in invertierter (1er-Komplement-)Form und ist für Befehle mit zwei oder mehr Quelloperanden gültig; 2) EVEX.vvvv codiert den Zielregisteroperanden, spezifiziert in 1er-Komplementform für bestimmte Vektorverschiebungen; oder 3) EVEX.vvvv codiert keinen Operanden und das Feld ist reserviert und sollte 1111b enthalten. Somit codiert das EVEX.vvvv-Feld 1820 die 4 Bits niedriger Ordnung des ersten Quellregisterspezifizierers, gespeichert in invertierter (1er-Komplement-)Form. Je nach dem Befehl wird ein zusätzliches anderes EVEX-Bitfeld verwendet, um die Spezifizierergröße auf 32 Register zu erweitern.
  • Das Klassenfeld von EVEX.0 1768 (EVEX-Byte 2, Bit [2]-U) - Im Fall EVEX.U = 0 gibt es Klasse A oder EVEX.U0 an; im Fall EVEX.U = 1 gibt es Klasse B oder EVEX.U1 an.
  • Das Präfixcodierungsfeld 1825 (EVEX-Byte 2, Bits [1:0]-pp) - stellt zusätzliche Bits für das Basisoperationsfeld bereit. Zusätzlich zu der Bereitstellung von Unterstützung für die alten SSE-Befehle im EVEX-Präfixformat hat dies auch den Vorteil des Kompaktierens des SIMD-Präfixes (statt ein Byte zu erfordern, um das SIMD-Präfix auszudrücken, erfordert das EVEX-Präfix nur 2 Bits). In einer Ausführungsform werden zur Unterstützung von alten SSE-Befehlen, die ein SIMD-Präfix (66H, F2H, F3H) sowohl im alten Format als auch im EVEX-Präfixformat verwenden, diese alten SIMD-Präfixe in das SIMD-Präfixcodierungsfeld codiert; und werden zur Laufzeit auf das alte SIMD-Präfix expandiert, bevor sie der PLA des Decoders zugeführt werden (so dass die PLA ohne Modifikation sowohl das alte als auch das EVEX-Format dieser alten Befehle ausführen kann). Wenngleich neuere Befehle den Inhalt des EVEX-Präfixcodierungsfelds direkt als eine OpcodeErweiterung verwenden könnten, sind bestimmte Ausführungsformen auf eine ähnliche Art für Konsistenz erweitert, erlauben jedoch, dass unterschiedliche Bedeutungen durch diese älteren SIMD-Präfixe spezifiziert werden. Eine alternative Ausführungsform kann die PLA umentwerfen, um die 2-Bit-SIMD-Präfixcodierungen zu unterstützen, und somit die Expansion nicht erfordern.
  • Das Alpha-Feld 1752 (EVEX-Byte 3, Bit [7] - EH; auch als EVEX.EH, EVEX.rs, EVEX.RL, EVEX.write mask control, und EVEX.N bekannt; auch mit α veranschaulicht) - wie zuvor beschrieben wurde, ist dieses Feld kontextspezifisch.
  • Das Beta-Feld 1754 (EVEX-Byte 3, Bits [6:4]-SSS, auch als EVEX.s2-0, EVEX.r2-0, EVEX.rr1, EVEX.LL0, EVEX.LLB bekannt; auch mit βββ veranschaulicht) - wie zuvor beschrieben wurde, ist dieses Feld kontextspezifisch.
  • Das REX'-Feld 1810 - dies ist der Rest des REX'-Felds und ist das EVEX.V'-Bitfeld (EVEX-Byte 3, Bit [3] - V'), das verwendet werden kann, um entweder die oberen 16 oder unteren 16 des erweiterten 32-Registersatzes zu codieren. Dieses Bit wird in bitinvertiertem Format gespeichert. Ein Wert von 1 wird verwendet, um die unteren 16 Register zu codieren. Mit anderen Worten wird V'VVVV durch Kombinieren von EVEX.V', EVEX.vvvv gebildet.
  • Das Schreibmaskenfeld 1770 (EVEX-Byte 3, Bits [2:0]-kkk) - sein Inhalt spezifiziert den Index eines Registers in den Schreibmaskenregistern wie zuvor beschrieben. In einer Ausführungsform der Erfindung weist der spezifische Wert EVEX.kkk = 000 ein spezielles Verhalten auf, woraus folgt, dass keine Schreibmaske für den konkreten Befehl verwendet wird (dies kann auf vielfältige Weisen implementiert werden, darunter Verwendung einer auf durchweg Einsen fest verdrahteten Schreibmaske oder einer Hardware, die die Maskierungshardware umgeht).
  • Das Real-Opcode-Feld 1830 (Byte 4) ist auch als das Opcode-Byte bekannt. Ein Teil des Opcodes wird in diesem Feld spezifiziert.
  • Das MOD-R/M-Feld 1840 (Byte 5) umfasst das MOD-Feld 1842, das Reg-Feld 1844 und das R/M-Feld 1846. Wie zuvor beschrieben wurde, unterscheidet der Inhalt des MOD-Felds 1842 zwischen Operationen mit Speicherzugriff und ohne Speicherzugriff. Die Rolle des Reg-Felds 1844 kann auf zwei Situationen zusammengefasst werden: Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden, oder als eine Opcodeerweiterung behandelt werden und nicht verwendet werden, um irgendeinen Befehlsoperanden zu codieren. Die Rolle des R/M-Felds 1846 kann Folgendes umfassen: Codieren des Befehlsoperanden, der sich auf eine Speicheradresse bezieht, oder Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden.
  • Das SIB-Byte (Skala, Index, Basis) (Byte 6) - Wie zuvor beschrieben, wird der Inhalt des Skalenfelds 1850 zur Speicheradresserzeugung verwendet. SIB.xxx 1854 und SIB.bbb 1856 - der Inhalt dieser Felder wurde zuvor mit Bezug auf die Registerindizes Xxxx und Bbbb erwähnt.
  • Das Verschiebungsfeld 1762A (Bytes 7-10) - wenn das MOD-Feld 1842 10 enthält, sind die Bytes 7-10 das Verschiebungsfeld 1762A, und es funktioniert genauso wie die alte 32-Bit-Verschiebung (disp32) und funktioniert auf Bytegranularität.
  • Das Verschiebungsfaktorfeld 1762B (Byte 7) - wenn das MOD-Feld 1842 01 enthält, ist das Byte 7 das Verschiebungsfaktorfeld 1762B. Die Position dieses Felds ist dieselbe wie die der 8-Bit-Verschiebung (disp8) des alten x86-Befehlssatzes, die auf Bytegranularität funktioniert. Da disp8 vorzeichenerweitert ist, kann es nur zwischen -128- und 127-Byte-Offsets adressieren; im Hinblick auf 64-Byte-Cache-Zeilen verwendet disp8 8 Bits, die auf nur vier wirklich nützliche Werte gesetzt werden können, -128, -64, 0 und 64; da oft ein größerer Umfang benötigt wird, wird disp32 verwendet; disp32 erfordert jedoch 4 Bytes. Im Gegensatz zu disp8 und disp32 ist das Verschiebungsfaktorfeld 1762B eine Uminterpretation von disp8; bei Verwendung des Verschiebungsfaktorfelds 1762B wird die tatsächliche Verschiebung durch den Inhalt des Verschiebungsfaktorfelds, multipliziert mit der Größe des Speicheroperandenzugriffs (N), bestimmt. Diese Art der Verschiebung wird als disp8*N bezeichnet. Dies verringert die durchschnittliche Befehlslänge (ein einzelnes Byte wird für die Verschiebung verwendet, jedoch mit einem viel größeren Bereich). Eine solche komprimierte Verschiebung basiert auf der Annahme, dass die effektive Verschiebung ein Vielfaches der Granularität des Speicherzugriffs ist und daher die redundanten Bits niedriger Ordnung des Adressenoffsets nicht codiert werden müssen. Mit anderen Worten substituiert das Verschiebungsfaktorfeld 1762B die 8-Bit-Verschiebung des alten x86-Befehlssatzes. Somit wird das Verschiebungsfaktorfeld 1762B auf dieselbe Weise wie eine 8-Bit-Verschiebung des x86-Befehlssatzes codiert (also keine Änderungen an den ModRM/SIB-Codierungsregeln), mit der einzigen Ausnahme, dass disp8 auf disp8*N überladen wird. Mit anderen Worten bestehen keine Änderungen an den Codierungsregeln oder Codierungslängen, sondern nur an der Interpretation des Verschiebungswerts durch Hardware (die die Verschiebung um die Größe des Speicheroperanden skalieren muss, um ein byteweises Adressenoffset zu erhalten). Das Immediate-Feld 1772 wirkt wie zuvor beschrieben.
  • Vollständiges Opcode-Feld
  • 18B ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Befehlsformats 1800 veranschaulicht, die das vollständige Opcode-Feld 1774 gemäß einer Ausführungsform der Erfindung bilden. Insbesondere umfasst das vollständige Opcode-Feld 1774 das Formatfeld 1740, das Basisoperationsfeld 1742 und das Datenelementbreiten(W)-feld 1764. Das Basisoperationsfeld 1742 umfasst das Präfixcodierungsfeld 1825, das Opcodeabbildungsfeld 1815 und das Real-Opcode-Feld 1830.
  • Registerindexfeld
  • 18C ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Befehlsformats 1800 veranschaulicht, die das Registerindexfeld 1744 gemäß einer Ausführungsform der Erfindung bilden. Insbesondere umfasst das Registerindexfeld 1744 das REX-Feld 1805, das REX'-Feld 1810, das MODR/M.reg-Feld 1844, das MODR/M.r/m-Feld 1846, das VVVV-Feld 1820, das xxx-Feld 1854 und das bbb-Feld 1856.
  • Vergrößerungsoperationsfeld
  • 18D ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Befehlsformats 1800 veranschaulicht, die das Vergrößerungsoperationsfeld 1750 gemäß einer Ausführungsform der Erfindung bilden. Wenn das Feld 1768 der Klasse (U) 0 enthält, bedeutet es EVEX.U0 (Klasse A 1768A); wenn es 1 enthält, bedeutet es EVEX.U1 (Klasse B 1768B). Wenn U = 0 ist und das MOD-Feld 1842 11 enthält (was eine Operation ohne Speicherzugriff bedeutet), wird das Alpha-Feld 1752 (EVEX-Byte 3, Bit [7] - EH) als das rs-Feld 1752A interpretiert. Wenn das rs-Feld 1752A eine 1 enthält (Rundung 1752A.1), wird das Beta-Feld 1754 (EVEX-Byte 3, Bits [6:4]- SSS) als das Rundungssteuerungsfeld 1754A interpretiert. Das Rundungssteuerungsfeld 1754A umfasst ein Ein-Bit-SAE-Feld 1756 und ein Zwei-Bit-Rundungsoperationsfeld 1758. Wenn das rs-Feld 1752A eine 0 enthält (Datentransformation 1752A.2), wird das Beta-Feld 1754 (EVEX-Byte 3, Bits [6:4] - SSS) als ein Drei-Bit-Datentransformationsfeld 1754B interpretiert. Wenn U = 0 ist und das MOD-Feld 1842 00, 01 oder 10 enthält (was eine Operation mit Speicherzugriff bedeutet), wird das Alpha-Feld 1752 (EVEX-Byte 3, Bit [7] - EH) als das Feld 1752B des Ausräumhinweises (EH) interpretiert und das Beta-Feld 1754 (EVEX-Byte 3, Bits [6:4] - SSS) als ein Drei-Bit-Datenmanipulationsfeld 1754C interpretiert.
  • Wenn U = 1 ist, wird das Alpha-Feld 1752 (EVEX-Byte 3, Bit [7] - EH) als das Feld 1752C der Schreibmaskensteuerung (Z) interpretiert. Wenn U = 1 und das MOD-Feld 1842 11 enthält (was eine Operation ohne Speicherzugriff bedeutet), wird ein Teil des Beta-Felds 1754 (EVEX-Byte 3, Bit [4] - S0) als das RL-Feld 1757A interpretiert; wenn es eine 1 enthält (Rundung 1757A.1), wird der Rest des Beta-Felds 1754 (EVEX-Byte 3, Bit [6-5] - S2-1) als das Rundungsoperationsfeld 1759A interpretiert, während, wenn das RL-Feld 1757A eine 0 enthält (VSIZE 1757.A2), der Rest des Beta-Felds 1754 (EVEX-Byte 3, Bit [6-5] - S2-1) als das Vektorlängenfeld 1759B (EVEX-Byte 3, Bit [6-5] - L1-0) interpretiert wird. Wenn U = 1 ist und das MOD-Feld 1842 00, 01 oder 10 enthält (was eine Operation mit Speicherzugriff bedeutet), wird das Beta-Feld 1754 (EVEX-Byte 3, Bits [6:4] - SSS) als das Vektorlängenfeld 1759B (EVEX-Byte 3, Bit [6-5] - L1-0) und das Übertragungsfeld 1757B (EVEX-Byte 3, Bit [4] - B) interpretiert.
  • Beispielhafte Registerarchitektur
  • 19 ist ein Blockdiagramm einer Registerarchitektur 1900 gemäß einer Ausführungsform der Erfindung. In der veranschaulichten Ausführungsform sind 32 Vektorregister 1910 vorhanden, die 512 Bits breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die 256 Bits unterer Ordnung der unteren 16 zmm-Register werden auf die Register ymm0-16 überlagert. Die 128 Bits unterer Ordnung der unteren 16 zmm-Register (die 128 Bits unterer Ordnung der ymm-Register) sind den Registern xmm0-15 überlagert. Das spezifische vektorfreundliche Befehlsformat 1800 wirkt an diesen überlagerten Registerdateien wie in den nachfolgenden Tabellen dargestellt.
    Einstellbare Vektorlänge Klasse Operationen Register
    Befehlstemplates, die nicht das Vektorlängenfeld 1759B aufweisen A ( 17A; U=0) 1710, 1715, 1725, 1730 zmm-Register (die Vektorlänge beträgt 64 Bytes)
    B ( 17B; U=1) 1712 zmm-Register (die Vektorlänge beträgt 64 Bytes)
    Befehlstemplates, die das Vektorlängenfeld 1759B aufweisen B ( 17B; U=1) 1717, 1727 zmm-, ymm- oder xmm-Register (die Vektorlänge beträgt 64 Bytes, 32 Bytes oder 16 Bytes), abhängig von dem Vektorlängenfeld 1759B
  • Mit anderen Worten wählt das Vektorlängenfeld 1759B zwischen einer maximalen Länge und einer oder mehreren anderen kürzeren Längen aus, wobei jede solcher kürzeren Längen die Hälfte der Länge der vorhergehenden Länge beträgt; und arbeiten Befehlstemplates ohne das Vektorlängenfeld 1795B auf der maximalen Vektorlänge. Ferner wirken in einer Ausführungsform die Befehlstemplates der Klasse B des spezifischen vektorfreundlichen Befehlsformats 1800 an gepackten oder skalaren Single-/Double-Precision-Gleitkommadaten und gepackten oder skalaren Ganzzahl-Daten. Skalaroperationen sind Operationen, die an der Datenelementposition niedrigster Ordnung in einem zmm/ymm/xmm-Register ausgeführt werden; die Datenelementpositionen höherer Ordnung werden abhängig von der Ausführungsform entweder so gelassen, wie sie vor dem Befehl waren, oder genullt.
  • Die Schreibmaskenregister 1915 - in der veranschaulichten Ausführungsform sind 8 Schreibmaskenregister (k0 bis k7) vorhanden, jeweils mit einer Größe von 64 Bits. In einer alternativen Ausführungsform haben die Schreibmaskenregister 1915 eine Größe von 16 Bits. Wie zuvor beschrieben, kann in einer Ausführungsform der Erfindung das Vektormaskenregister k0 nicht als Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 angeben würde, für eine Schreibmaske verwendet wird, wählt sie eine fest verdrahtete Schreibmaske von 0xFFFF, wobei effektiv für diesen Befehl Schreibmaskierung gesperrt wird.
  • Die Universalregister 1925 - in der veranschaulichten Ausführungsform gibt es sechszehn 64-Bit-Universalregister, die zusammen mit den existierenden x86-Adressierungsmodi verwendet werden, um Speicheroperanden zu adressieren. Diese Register sind durch die Namen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 bezeichnet.
  • Die Skalar-Gleitkomma-Stapelregisterdatei (x87-Stapel) 1945, auf die per Alias die MMX-gepackte-Ganzzahl-Flach-Registerdatei 1950 gelegt wird - in der veranschaulichten Ausführungsform ist der x87-Stapel ein Acht-Element-Stapel, der verwendet wird, um Skalar-Gleitkommaoperationen an 32/64/80-Bit-Gleitkommadaten unter Verwendung der x87-Befehlssatzerweiterung durchzuführen; während die MMX-Register zum Ausführen von Operationen an gepackten 64-Bit-Ganzzahl-Daten sowie zum Halten von Operanden für einige zwischen den MMX- und XMM-Registern ausgeführten Operationen verwendet werden.
  • Alternative Ausführungsformen der Erfindung können breitere oder schmalere Register verwenden. Zusätzlich können alternative Ausführungsformen der Erfindung mehr, weniger oder andere Registerdateien und Register verwenden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Die Prozessorkerne können auf verschiedene Arten, zu verschiedenen Zwecken und in verschiedenen Prozessoren implementiert werden. Zum Beispiel können die Implementierungen solcher Kerne Folgendes umfassen: 1) einen für Universal-Berechnung bestimmten Universal-In-order-Kern; 2) einen für Universal-Berechnung bestimmten Hochleistungs-Universal-Out-of-order-Kern; 3) einen hauptsächlich für Grafik- und/oder wissenschaftliche (Durchsatz-)Berechnung bestimmten Spezialkern. Implementierungen anderer Prozessoren können Folgendes umfassen: 1) eine CPU mit einem oder mehreren für Universal-Berechnung bestimmten Universal-In-order-Kernen und/oder einem oder mehreren für Universal-Berechnung bestimmten Universal-Out-of-order-Kernen; und 2) einen Coprozessor mit einem oder mehreren hauptsächlich für Grafik und/oder Wissenschaft (Durchsatz) bestimmten Spezialkernen. Solche anderen Prozessoren führen zu anderen Computersystemarchitekturen, welche Folgendes umfassen können: 1) den Coprozessor auf einem von der CPU getrennten Chip; 2) den Coprozessor auf einem getrennten Chip in derselben Packung wie eine CPU; 3) den Coprozessor auf demselben Chip wie eine CPU (wobei in diesem Fall ein solcher Coprozessor manchmal als Speziallogik bezeichnet wird, wie etwa integrierte Grafik- und/oder wissenschaftliche (Durchsatz-)Logik, oder als Spezialkerne); und 4) ein System auf einem Chip, das auf demselben Chip die beschriebene CPU (manchmal als Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den oben beschriebenen Coprozessor und zusätzliche Funktionalität umfassen kann. Als Nächstes werden beispielhafte Kernarchitekturen gefolgt von Beschreibungen von beispielhaften Prozessoren und Computerarchitekturen beschrieben.
  • Beispielhafte Kernarchitekturen
  • In-order- und Out-of-order-Kern-Blockdiagramm
  • 20A ist ein Blockdiagramm, das sowohl eine beispielhafte In-order-Pipeline als auch eine beispielhafte Registerumbenennungs-, Out-of-order-Ausgabe-/Ausführungspipeline gemäß Ausführungsformen der Erfindung veranschaulicht. 20B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines In-order-Architekturkerns als auch eines beispielhaften Registerumbenennungs-, Out-of-order-Ausgabe-/Ausführungsarchitekturkerns, die in einem Prozessor aufzunehmen sind, gemäß Ausführungsformen der Erfindung veranschaulicht. Die durchgezogen gezeichneten Kästen in 20A-B veranschaulichen die In-Order-Pipeline und den In-Order-Kern, während das optionale Hinzufügen der gestrichelt gezeichneten Kästen die Registerumbenennungs-Out-of-order-Ausgabe-/Ausführungspipeline und den Registerumbenennungs-Out-of-order-Ausgabe-/-Ausführungskern veranschaulicht. Aufgrund dessen, dass der In-order-Aspekt eine Untergruppe des Out-of-order-Aspekts ist, wird der Out-of-order-Aspekt beschrieben werden.
  • In 20A weist eine Prozessorpipeline 2000 eine Abrufstufe 2002, eine Längendecodierstufe 2004, eine Decodierstufe 2006, eine Zuweisungsstufe 2008, eine Umbenennungsstufe 2010, eine Planungs(auch als eine Abfertigungs- oder Ausgabestufe bekannt)-stufe 2012, eine Registerlese-/Speicherlesestufe 2014, eine Ausführungsstufe 2016, eine Rückschreib-/Speicherschreibstufe 2018, eine Ausnahmehandhabungsstufe 2022 und eine Festschreibungsstufe 2024 auf.
  • 20B zeigt den Prozessorkern 2090, der eine Front-End-Einheit 2030 aufweist, die mit einer Ausführungsengineeinheit 2050 gekoppelt ist, wobei beide mit einer Speichereinheit 2070 gekoppelt sind. Der Kern 2090 kann ein Kern mit einer verringerten Befehlssatzberechnung (RISC, Reduced Instruction Set Computing), ein Kern mit einer komplexen Befehlssatzberechnung (CISC, Complex Instruction Set Computing), ein Kern mit einem sehr langen Befehlswort (VLIW, Very Long Instruction Word) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 2090 ein Spezialkern, wie zum Beispiel ein Netzwerk- oder Kommunikationskern, eine Komprimierungsengine, ein Coprozessorkern, ein Universalrechengrafikverarbeitungseinheit(GPGPU)-kern, ein Grafikkern oder dergleichen sein.
  • Die Front-End-Einheit 2030 umfasst eine Zweigvorhersageeinheit 2032, die mit einer Befehls-Cache-Einheit 2034 gekoppelt ist, die mit einem Befehls- Übersetzungs-Lookaside-Puffer (TLB, Translation Lookaside Buffer) 2036 gekoppelt ist, der mit einer Befehlsabrufeinheit 2038 gekoppelt ist, die mit einer Decodiereinheit 2040 gekoppelt ist. Die Decodiereinheit 2040 (oder der Decoder) kann Befehle decodieren und als Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Eintrittspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale erzeugen, die aus den ursprünglichen Befehlen decodiert werden oder anderweitig diese widerspiegeln oder aus ihnen abgeleitet werden. Die Decodiereinheit 2040 kann unter Verwendung diverser mehrerer verschiedener Mechanismen implementiert werden. Beispiele von geeigneten Mechanismen umfassen Look-up-Tabellen, Hardwareimplementierungen, programmierbare logische Anordnungen (PLAs), Mikrocode-Nur-Lese-Speicher(ROMs, Read-Only-Memories) usw. In einer Ausführungsform umfasst der Kern 2090 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für bestimmte Makrobefehle (z. B. in der Decodiereinheit 2040 oder anderweitig innerhalb der Front-End-Einheit 2030) speichert. Die Decodiereinheit 2040 ist mit einer Umbenenner-/Zuweisereinheit 2052 in der Ausführungsengineeinheit 2050 gekoppelt.
  • Die Ausführungsengineeinheit 2050 weist die Umbenenner-/Zuweisereinheit 2052 auf, die mit einer Rückordnungseinheit 2054 und einer Gruppe von einer oder mehreren Planereinheit(en) 2056 gekoppelt ist. Die Planereinheit(en) 2056 stellt bzw. stellen eine beliebige Anzahl an verschiedenen Planern einschließlich Reservierungsstationen, eines zentralen Befehlsfensters usw. dar. Die Planereinheit(en) 2056 ist bzw. sind mit der bzw. den physischen Registerdatei(en)einheit(en) 2058 gekoppelt. Jede der physischen Registerdatei(en)-einheiten 2058 repräsentiert eine oder mehrere physische Registerdateien, von denen verschiedene einen oder mehrere verschiedene Datentypen speichern, wie etwa Skalar-Integer, Skalar-Gleitkomma, gepackte Integer, gepacktes Gleitkomma, Vektor-Integer, Vektor-Gleitkomma, Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. In einer Ausführungsform umfasst die physische Registerdatei(en)-einheit 2058 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine Skalar-Registereinheit. Diese Registereinheiten können architektonische Vektorregister, Vektormaskenregister und Universalregister bereitstellen. Die physischen Registerdatei(en)-einheit(en) 2058 ist bzw. sind durch die Rückordnungseinheit 2054 überlappt, um verschiedene Weisen darzustellen, auf die Registerumbenennung und Out-of-order-Ausführung implementiert werden können (z. B. unter Verwendung von Neuordnungspuffer(n) und (einer) Rückordnungsegisterdatei(en); unter Verwendung von Zukunft-Datei(en), Vorgeschichte-Puffer(n) und Rückordnungsregisterdatei(en); unter Verwendung von Registerabbildungen und eines Pools von Registern; usw.). Die Rückordnungseinheit 2054 und die physische Registerdatei(en)einheit(en) 2058 sind mit dem bzw. den Ausführungscluster(n) 2060 gekoppelt. Das bzw. die Ausführungscluster 2060 weisen eine Gruppe von einer oder mehreren Ausführungseinheiten 2062 und eine Gruppe von einer oder mehreren Speicherzugriffseinheiten 2064 auf. Die Ausführungseinheiten 2062 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) ausführen und an verschiedenen Arten von Daten (z. B. Skalar-Gleitkomma, gepackte Integer, gepacktes Gleitkomma, Vektor-Integer, Vektor-Gleitkomma). Wenngleich einige Ausführungsformen eine Anzahl an Ausführungseinheiten umfassen können, die für spezifische Funktionen oder Gruppen von Funktionen bestimmt sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, die allesamt alle Funktionen durchführen. Die Planereinheit(en) 2056, die physischen Registerdatei(en)-einheit(en) 2058 und das Ausführungscluster bzw. die Ausführungscluster 2060 sind als möglicherweise vielzahlig gezeigt, weil bestimmte Ausführungsformen getrennte Pipelines für bestimmte Arten von Daten/Operationen erzeugen (z. B. eine Skalar-Integer-Pipeline, eine Skalar-Gleitkomma-/gepackte-Integer-/gepackte-Gleitkomma-/Vektor-Integer-/Vektor-Gleitkomma-Pipeline und/oder eine Speicherzugriffspipeline, die jeweils ihre eigene Planereinheit, physische Registerdatei(en)-einheit und/oder ihr eigenes Ausführungscluster aufweisen - und im Fall einer getrennten Speicherzugriffspipeline werden bestimmte Ausführungsformen implementiert, bei denen nur das Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 2064 aufweist). Es versteht sich auch, dass, wenn getrennte Pipelines verwendet werden, eine oder mehrere dieser Pipelines vom Typ Out-of-order-Ausgabe/-Ausführung und der Rest In-order sein können.
  • Die Gruppe von Speicherzugriffseinheiten 2064 ist mit der Speichereinheit 2070 gekoppelt, welche eine Daten-TLB-Einheit 2072 aufweist, die mit einer Datencacheeinheit 2074 gekoppelt ist, die mit einer Level-2(L2)-Cache-Einheit 2076 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 2064 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit umfassen, von welchen jede mit der Daten-TLB-Einheit 2072 in der Speichereinheit 2070 gekoppelt ist. Die Befehlscacheeinheit 2034 ist ferner mit einer Level 2(L2)-Cache-Einheit 2076 in der Speichereinheit 2070 gekoppelt. Die L2-Cache-Einheit 2076 ist mit einer oder mehreren anderen Ebenen des Caches und eventuell mit einem Arbeitsspeicher gekoppelt.
  • Beispielsweise kann die beispielhafte Registerumbenennungs-Out-of-order-Ausgabe-/Ausführungskernarchitektur die Pipeline 2000 folgendermaßen implementieren: 1) der Befehlsabruf 2038 führt die Abruf- und Längendecodierungsstufen 2002 und 2004 aus; 2) die Decodiereinheit 2040 führt die Decodierstufe 2006 aus; 3) die Umbenenner-/Zuteilereinheit 2052 führt die Zuteilungsstufe 2008 und die Umbenennungsstufe 2010 aus; 4) die Planereinheit(en) 2056 führt bzw. führen die Planungsstufe 2012 aus; 5) die physische Registerdatei(en)-einheit(en) 2058 und die Speichereinheit 2070 führen die Registerlese-/Speicherlesestufe 2014 aus; das Ausführungscluster 2060 führt die Ausführungsstufe 2016 aus; 6) die Speichereinheit 2070 und die physische(n) Registerdatei(en)-einheit(en) 2058 führen die Rückschreib-/Speicherschreibstufe 2018 aus; 7) an der Ausnahmehandhabungsstufe 2022 können verschiedene Einheiten beteiligt sein; und 8) die Rückordnungseinheit 2054 und die physische(n) Registerdatei(en)-einheit(en) 2058 führen die Festschreibungsstufe 2024 aus.
  • Der Kern 2090 kann einen oder mehrere Befehlssätze unterstützen (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz der MIPS Technologies in Sunnyvale, Kalifornien; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) der ARM Holdings in Sunnyvale, Kalifornien), einschließlich des Befehls bzw. der Befehle, die hier beschrieben werden. In einer Ausführungsform umfasst der Kern 2090 Logik zur Unterstützung einer Befehlssatzerweiterung für gepackte Daten (z. B. AVX1, AVX2), um dadurch die Ausführung der von vielen Multimediaanwendungen verwendeten Operationen unter Verwendung gepackter Daten zu erlauben.
  • Es versteht sich, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Gruppen von Operationen oder Threads) unterstützen kann und dies auf vielfältige Weisen, darunter Zeitscheiben-Multithreading, Simultan-Multithreading (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die dieser physische Kern im Simultan-Multithreading ausführt), oder eine Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und Simultan-Multithreading danach, wie etwa bei der Technologie Intel® Hyperthreading).
  • Wenngleich die Registerumbenennung im Kontext der Out-of-order-Ausführung beschrieben wird, versteht sich, dass die Registerumbenennung in einer In-order-Architektur verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch getrennte Befehls- und Datencacheeinheiten 2034/2074 und eine geteilte L2-Cache-Einheit 2076 umfasst, können alternative Ausführungsformen einen einzigen internen Cache sowohl für Befehle als auch für Daten aufweisen, wie zum Beispiel einen internen Cache der Ebene 1 (L1) oder mehrere Ebenen von internem Cache. In einigen Ausführungsformen kann das System eine Kombination eines internen Caches und eines externen Caches, der extern bezüglich des Kerns und/oder des Prozessors ist, aufweisen. Alternativ kann der gesamte Cache extern bezüglich des Kerns und/oder des Prozessors sein.
  • Spezifische beispielhafte In-order-Kernarchitektur
  • 21A-B veranschaulichen ein Blockdiagramm einer spezifischeren beispielhaften In-order-Kernarchitektur, wobei der Kern einer von mehreren logischen Blöcken (einschließlich anderer Kerne derselben Art und/oder verschiedener Arten) in einem Chip sein würde. Die Logikblöcke kommunizieren mittels eines Verschaltungsnetzwerks hoher Bandbreite (z. B. eines Ringnetzwerks) abhängig von der Anwendung mit einiger Festfunktionslogik, Speicher-E/A-Schnittstellen und anderer notwendiger E/A-Logik.
  • 21A ist ein Blockdiagramm eines einzelnen Prozessorkerns zusammen mit seiner Verbindung mit dem Verschaltungsnetzwerk 2102 auf dem Chip und mit seiner lokalen Untergruppe des Caches 2104 der Ebene 2 (L2) gemäß Ausführungsformen der Erfindung. In einer Ausführungsform unterstützt ein Befehlsdecoder 2100 den x86-Befehlssatz mit einer gepackten Datenbefehlssatzerweiterung. Ein L1-Cache 2106 erlaubt Zugriffe auf den Cache-Speicher in die Skalar- und Vektoreinheiten mit geringer Latenz. Wenngleich in einer Ausführungsform (zur Vereinfachung des Entwurfs) eine Skalareinheit 2108 und eine Vektoreinheit 2110 getrennte Registersätze (jeweils Skalarregister 2112 und Vektorregister 2114) verwenden und zwischen ihnen transferierte Daten in Speicher geschrieben und dann aus einem Cache 2106 der Ebene 1 (L1) wieder eingelesen werden, können alternative Ausführungsformen der Erfindung einen anderen Ansatz verwenden (z. B. Verwendung eines einzigen Registersatzes oder Einbindung eines Kommunikationspfads, der den Transfer von Daten zwischen den beiden Registerdateien ohne Schreiben und Rücklesen erlaubt).
  • Die lokale Untergruppe des L2-Caches 2104 ist Teil eines globalen L2-Caches, der in separate lokale Untergruppen, eine pro Prozessorkern, unterteilt ist. Jeder Prozessorkern weist einen direkten Zugriffspfad auf seine eigene lokale Untergruppe des L2-Caches 2104 auf. Daten, die von einem Prozessorkern gelesen werden, werden in seiner L2-Cache-Untergruppe 2104 gespeichert und es kann schnell auf diese zugegriffen werden, parallel mit anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Untergruppen zugreifen. Daten, die von einem Prozessorkern geschrieben werden, werden in seiner eigenen L2-Cache-Untergruppe 2104 gespeichert und werden von anderen Untergruppen gelöscht, falls nötig. Das Ringnetzwerk stellt Kohärenz für gemeinsame Daten sicher. Das Ringnetzwerk ist bidirektional, um Agenten, wie etwa die Prozessorkerne, L2-Caches und andere Logikblöcke, zu erlauben, innerhalb des Chips miteinander zu kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1012 Bits breit.
  • 21B ist eine vergrößerte Ansicht eines Teils des Prozessorkerns in 21A gemäß Ausführungsformen der Erfindung. 21B umfasst einen L1-Datencache 2106A, einen Teil des L1-Caches 2104 sowie mehr Detail bezüglich der Vektoreinheit 2110 und der Vektorregister 2114. Insbesondere ist die Vektoreinheit 2110 eine 16-breite Vektorverarbeitungseinheit (VPU, Vector Processing Unit) (siehe die 16-breite ALU 2128), die einen oder mehrere von Ganzzahl-, Single-Precision-Float- und Double-Precision-Float-Befehlen ausführt. Die VPU unterstützt ein Swizzling der Registereingänge mit der Swizzle-Einheit 2120, numerische Umwandlung mit den numerischen Umwandlungseinheiten 2122A-B und Replikation mit der Replikationseinheit 2124 am Speichereingang. Die Schreibmaskenregister 2126 erlauben Prädikatisieren von sich ergebenden Vektorschreibvorgängen.
  • 22 ist ein Blockdiagramm eines Prozessors 2200, der mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und eine integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung. Die durchgezogenen Kästen in 22 veranschaulichen einen Prozessor 2200 mit einem einzelnen Kern 2202A, einem Systemagenten 2210, einer Gruppe von einer oder mehreren Bus-Controller-Einheiten 2216, während das optionale Hinzufügen der gestrichelten Kästen einen alternativen Prozessor 2200 mit mehreren Kernen 2202A-N, einer Gruppe von einer oder mehreren integrierten Speichercontrollereinheit(en) 2214 in der Systemagenteneinheit 2210 und einer Speziallogik 2208 veranschaulicht.
  • Somit können verschiedene Implementierungen des Prozessors 2200 Folgendes umfassen: 1) eine CPU, wobei die Speziallogik 2208 integrierte Grafik- und/oder wissenschaftliche (Durchsatz-)Logik ist (die einen oder mehrere Kerne umfassen kann) und die Kerne 2202A-N ein oder mehrere Universalkerne sind (z. B. Universal-In-order-Kerne, Universal-Out-of-order-Kerne, eine Kombination der beiden); 2) einen Coprozessor, wobei die Kerne 2202A-N eine große Anzahl an Spezialkernen sind, die hauptsächlich für Grafik und/oder Wissenschaft (Durchsatz) bestimmt sind; und 3) einen Coprozessor, wobei die Kerne 2202A-N eine große Anzahl an Universal-In-Order-Kernen sind. Somit kann der Prozessor 2200 ein Universalprozessor, ein Coprozessor oder ein Spezialprozessor sein, wie zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsengine, ein Grafikprozessor, eine GPGPU (General Purpose Graphics Processing Unit), ein MIC-Coprozessor (Many Integrated Core) mit hohem Durchsatz (der 30 oder mehr Kerne umfasst), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 2200 kann ein Teil von einem oder mehreren Substraten sein und/oder auf diesen implementiert sein, indem eine beliebige einer Anzahl an Prozesstechnologien, wie zum Beispiel BiCMOS, CMOS oder NMOS, verwendet werden.
  • Die Speicherhierarchie umfasst eine oder mehrere Cache-Ebenen innerhalb der Kerne, eine Gruppe von einer oder mehreren gemeinsamen Cache-Einheiten 2206 und einen externen Speicher (nicht gezeigt), der mit der Gruppe von integrierten Speichercontrollereinheiten 2214 gekoppelt ist. Die Gruppe geteilter Cache-Einheiten 2206 kann einen oder mehrere Mitebenen-Caches umfassen, wie etwa Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder andere Ebenen von Cache, einen Cache der letzten Ebene (LLC) und/oder Kombinationen davon. Wenngleich in einer Ausführungsform eine ringbasierte Verschaltungseinheit 2212 die integrierte Grafiklogik 2208, die Gruppe von gemeinsamen Cache-Einheiten 2206 und die Systemagenteneinheit 2210/integrierte(n) Speichercontrollereinheit(en) 2214 verschaltet, können alternative Ausführungsformen eine beliebige Anzahl an hinreichend bekannten Techniken zum Verschalten solcher Einheiten verwenden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 2206 und den Kernen 2202-A-N beibehalten.
  • In einigen Ausführungsformen sind ein oder mehrere der Kerne 2202A-N zu Multithreading in der Lage. Der Systemagent 2210 umfasst die Komponenten, die die Kerne 2202A-N koordinieren und betreiben. Die Systemagenteneinheit 2210 kann zum Beispiel eine Leistungssteuereinheit (PCU, Power Control Unit) und eine Anzeigeeinheit umfassen. Die PCU kann eine Logik und Komponenten sein oder diese aufweisen, die zum Regeln des Leistungszustands der Kerne 2202A-N und der integrierten Grafiklogik 2208 benötigt werden. Die Anzeigeeinheit dient zum Ansteuern einer oder mehrerer extern angeschlossener Anzeigen.
  • Die Kerne 2202A-N können hinsichtlich des Architekturbefehlssatzes homogen oder heterogen sein; d. h., zwei oder mehr der Kerne 2202A-N können in der Lage sein, denselben Befehlssatz auszuführen, während andere in der Lage sein können, nur eine Untergruppe jenes Befehlssatzes oder einen anderen Befehlssatz auszuführen.
  • Beispielhafte Computerarchitekturen
  • 23-24 sind Blockdiagramme von beispielhaften Computerarchitekturen. Es sind auch andere Systementwürfe und -konfigurationen geeignet, die in der Technik bekannt sind für Laptops, Desktops, in der Hand gehaltene PCs, Persönliche Digitale Assistenten, technische Workstations, Server, Netzwerkvorrichtungen, Netzwerk-Hubs, Switches, eingebettete Prozessoren, Digitalsignalprozessoren (DSP), Grafikvorrichtungen, Videospielvorrichtungen, Settop-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienplayer, in der Hand gehaltene Vorrichtungen und verschiedene andere elektronische Vorrichtungen. Allgemein sind eine große Vielfalt an Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder eine andere Ausführungslogik, wie hierin offenbart, aufzunehmen, geeignet.
  • Unter Bezugnahme nunmehr auf 23 ist ein Blockdiagramm eines Systems 2300 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 2300 kann einen oder mehrere Prozessoren 2310, 2315 aufweisen, welche mit einem Controller-Hub 2320 gekoppelt sind. In einer Ausführungsform umfasst der Controller-Hub 2320 einen Grafikspeicher-Controller-Hub (GMCH, Graphics Memory Controller Hub) 2390 und einen Eingabe-/Ausgabe-Hub (IOH, Input/Output Hub) 2350 (die sich auf getrennten Chips befinden können); der GMCH 2390 umfasst Speicher- und Grafikcontroller, mit denen der Speicher 2340 und ein Coprozessor 2345 gekoppelt sind; der IOH 2350 koppelt die Vorrichtungen 2360 für Eingabe/Ausgabe (E/A) mit dem GMCH 2390. Alternativ sind einer des Speicher- und des Grafikcontrollers oder beide innerhalb des Prozessors (wie hierin beschrieben) integriert, sind der Speicher 2340 und der Coprozessor 2345 direkt mit dem Prozessor 2310 und dem Controller-Hub 2320 in einem einzelnen Chip mit dem IOH 2350 gekoppelt.
  • Das optionale Wesen der zusätzlichen Prozessoren 2315 ist in 23 mit gestrichelten Linien bezeichnet. Jeder Prozessor 2310, 2315 kann einen oder mehrere der hierin beschriebenen Verarbeitungskerne aufweisen und kann eine Version des Prozessors 2200 sein.
  • Der Speicher 2340 kann zum Beispiel ein dynamischer Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory), ein Phasenwechselspeicher (PCM, Phase Change Memory) oder eine Kombination der beiden sein. In mindestens einer Ausführungsform kommuniziert der Controller-Hub 2320 über einen Mehrfachauskopplungsbus, wie etwa einen FSB (Frontside Bus), eine Schnittstelle von Punkt zu Punkt wie QPI (QuickPath Interconnect) oder eine ähnliche Verbindung 2395 mit dem Prozessor bzw. den Prozessoren 2310, 2315.
  • In einer Ausführungsform ist der Coprozessor 2345 ein Spezialprozessor, wie zum Beispiel ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsengine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Hub 2320 einen integrierten Grafikbeschleuniger aufweisen.
  • Es kann vielfältige Unterschiede zwischen den physischen Ressourcen 2310, 2315 im Hinblick auf ein Spektrum von Nutzmetriken geben, darunter architektonische, mikroarchitektonische, thermische und Stromverbrauchseigenschaften und dergleichen.
  • In einer Ausführungsform führt der Prozessor 2310 Befehle aus, die Datenverarbeitungsoperationen einer allgemeinen Art steuern. Innerhalb der Befehle können Coprozessorbefehle eingebettet sein. Der Prozessor 2310 erkennt, dass diese Coprozessorbefehle von einer Art sind, die von dem verbundenen Coprozessor 2345 ausgeführt werden sollte. Dementsprechend gibt der Prozessor 2310 diese Coprozessorbefehle (oder Steuersignale, die Coprozessorbefehle darstellen) auf einem Coprozessorbus oder einer sonstigen Verschaltung an den Coprozessor 2345 aus. Der/die Coprozessor(en) 2345 akzeptiert bzw. akzeptieren die erhaltenen Coprozessorbefehle und führt diese aus.
  • Unter Bezugnahme nunmehr auf 24 ist ein Blockdiagramm eines SoC 2400 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 22 tragen gleiche Bezugszeichen. Die gestrichelten Kästen sind auch optionale Merkmale bei fortschrittlicheren SoCs. In 24 ist bzw. sind (eine) Verschaltungseinheit(en) 2402 mit Folgendem gekoppelt: einem Anwendungsprozessor 2410, welcher eine Gruppe von einem oder mehreren Kernen 202A-N und (eine) gemeinsame Cache-Einheit(en) 2206 aufweist; einer Systemagenteneinheit 2210; (einer) Bus-Controller-Einheit(en) 2216; (einer) integrierten Speichercontrollereinheit(en) 2214; einer Gruppe oder einem oder mehreren Coprozessoren 2420, welche eine integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen kann; einer statischen Direktzugriffsspeicher(SRAM, Static Random Access Memory)-einheit 2430; einer Direktspeicherzugriffs(DMA, Direct Memory Access)-einheit 2432; und einer Anzeigeeinheit 2440 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst bzw. umfassen der bzw. die Coprozessor(en) 2420 einen Spezialprozessor, wie zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsengine, eine GPGPU, ein MIC-Prozessor mit hohem Durchsatz, ein eingebetteter Prozessor oder dergleichen.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert werden. Die Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode, die auf programmierbaren Systemen ausgeführt werden, die mindestens einen Prozessor, ein Speichersystem (einschließlich flüchtigem und nichtflüchtigem Speicher und/oder Speicherelementen), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung umfassen, implementiert sein.
  • Programmcode kann bei Eingabebefehlen angewendet werden, um die hierin beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können bei einer oder mehreren Ausgabevorrichtungen auf eine bekannte Art angewendet werden. Zum Zwecke dieser Anmeldung umfasst ein Verarbeitungssystem ein beliebiges System, das einen Prozessor aufweist, wie zum Beispiel einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit) oder einen Mikroprozessor.
  • Der Programmcode kann in einer objektorientierten oder verfahrensorientierten Programmiersprache einer hohen Ebene zum Kommunizieren mit einem Verarbeitungssystem implementiert sein. Falls gewünscht, kann der Programmcode auch in Assembler- oder Maschinensprache implementiert werden. Tatsächlich sind die hierin beschriebenen Mechanismen hinsichtlich des Umfangs nicht auf irgendeine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentative Befehle implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, welches eine diverse Logik innerhalb des Prozessors darstellt, welche, wenn sie von einer Maschine gelesen werden, bewirken, dass die Maschine eine Logik zum Durchführen der hierin beschriebenen Techniken herstellt. Solche Repräsentationen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren maschinenlesbaren Medium gespeichert und verschiedenen Kunden oder Herstellungseinrichtungen zum Laden in die Herstellungsmaschinen zugeführt werden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Solche maschinenlesbaren Speichermedien können ohne Beschränkung nichttransitorische greifbare Anordnungen von Artikeln, die durch eine Maschine oder Vorrichtung hergestellt oder gebildet werden, darunter Speichermedien, wie Festplatten, eine beliebige andere Art von Datenträger wie Disketten, optische Datenträger, CD-ROMs (Compact Disk read-only Memories), CD-RWs (Compact Disk Rewritable's) und magnetooptische Datenträger, Halbleitervorrichtungen wie ROM (Read-Only-Memory, Nur-Lese-Speicher), RAM (Random Access Memory, Direktzugriffsspeicher) wie etwa DRAMs (Dynamic Random Access Memories, dynamische Direktzugriffsspeicher), SRAMs (Static Random Access Memories, statische Direktzugriffsspeicher), EPROMs (Erasable Programmable Read-Only-Memories, löschbare programmierbare Nur-Lese-Speicher), Flash-Speicher, EEPROMs (Electrically Erasable Programmable Read-Only-Memories, elektrisch löschbare programmierbare Nur-Lese-Speicher), PCM (Phase Change Memory, Phasenwechselspeicher), magnetische oder optische Karten oder eine beliebige andere Art von zum Speichern von elektronischen Befehlen geeigneten Medien umfassen.
  • Dementsprechend umfassen Ausführungsformen der Erfindung auch nichttransitorische greifbare maschinenlesbare Medien, die Befehle enthalten oder Entwurfsdaten enthalten, wie etwa HDL (Hardware Description Language), die Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definieren, die hier beschrieben werden. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Emulation (einschließlich Binärübersetzung, Code-Morphing usw.)
  • In einigen Fällen kann ein Befehlswandler verwendet werden, um einen Befehl von einem Quellbefehlssatz in einen Zielbefehlssatz zu wandeln. Zum Beispiel kann der Befehlsumsetzer (z. B. unter Verwendung von statischer Binärübersetzung, dynamischer Binärübersetzung, darunter dynamische Kompilierung) einen Befehl in einen oder mehrere durch den Kern zu verarbeitende andere Befehle übersetzen, morphen, emulieren oder anderweitig umsetzen. Der Befehlswandler kann in Software, Hardware, Firmware oder einer Kombination davon implementiert sein. Der Befehlswandler kann auf dem Prozessor, außerhalb des Prozessors oder zum Teil auf dem Prozessor und zum Teil außerhalb des Prozessors liegen.
  • 25 ist ein Blockdiagramm, das die Verwendung eines Softwarebefehlswandlers zum Umwandeln von binären Befehlen in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung gegenüberstellt. In der veranschaulichten Ausführungsform ist der Befehlswandler ein Softwarebefehlswandler, wenngleich alternativ der Befehlswandler in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert sein kann. 25 zeigt ein Programm in einer Hochebenensprache 2502, die unter Verwendung eines x86-Kompilierers 2504 kompiliert werden kann, um x86-Binärcode 2506 zu erzeugen, der nativ von einem Prozessor mit mindestens einem x86-Befehlssatzkern 2516 ausgeführt werden kann. Der Prozessor mit mindestens einem x86-Befehlssatzkern 2516 repräsentiert einen beliebigen Prozessor, der im Wesentlichen dieselben Funktionen wie ein Intel-Prozessor mit mindestens einem x86-Befehlssatzkern ausführen kann, indem (1) ein wesentlicher Teil des Befehlssatzes des Intel-x86-Befehlssatzkerns oder (2) Objektcodeversionen von Anwendungen oder anderer Software, die dafür bestimmt sind, auf einem Intel-Prozessor mit mindestens einem x86-Befehlssatzkern zu laufen, kompatibel ausgeführt oder anderweitig verarbeitet werden, um im Wesentlichen dasselbe Ergebnis wie ein Intel-Prozessor mit mindestens einem x86-Befehlssatzkern zu erzielen. Der x86-Kompilierer 2504 repräsentiert einen Kompilierer, der betreibbar ist, um x86-Binärecode 2506 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Link-Verarbeitung auf dem Prozessor mit mindestens einem x86-Befehlssatzkern 2516 ausgeführt werden kann. Ähnlich zeigt 25, dass das Programm in der Hochebenensprache 2502 unter Verwendung eines alternativen Befehlssatzkompilierers 2508 kompiliert werden kann, um alternativen Befehlssatzbinärcode 2510 zu erzeugen, der nativ von einem Prozessor ohne mindestens einen x86-Befehlssatzkern 2514 (z. B. ein Prozessor mit Kernen, die den MIPS-Befehlssatz der MIPS Technologies aus Sunnyvale, Kalifornien ausführen und/oder die den ARM-Befehlssatz der ARM Holding aus Sunnyvale, Kalifornien ausführen) ausgeführt werden kann. Der Befehlswandler 2512 wird verwendet, um den x86-Binärcode 2506 in Code zu wandeln, der von dem Prozessor nativ ohne einen x86-Befehlssatzkern 2514 ausgeführt werden kann. Dieser umgewandelte Code ist nur wenig wahrscheinlich derselbe wie der Alternativ-Befehlssatz-Binärcode 2510, weil ein Befehlsumwandler, der hierzu fähig ist, schwierig herzustellen ist; der umgewandelte Code erreicht jedoch die allgemeine Funktionsweise und besteht aus Befehlen aus dem Alternativ-Befehlssatz. Somit stellt der Befehlswandler 2512 Software, Firmware, Hardware oder eine Kombination davon dar, die durch Emulation, Simulation oder einen beliebigen sonstigen Prozess einem Prozessor oder einer sonstigen elektronischen Vorrichtung, die keinen x86-Befehlssatzprozessor oder -kern aufweist, erlaubt, den x86-Binärcode 2506 auszuführen.
  • Steuerblöcke zur Prozessorleistungsverwaltung
  • Unter Bezugnahme nunmehr auf 26 ist ein Blockdiagramm eines Systems 2600 gemäß einer oder mehreren Ausführungsformen gezeigt. In einigen Ausführungsformen kann das System 2600 eine gesamte elektronische Vorrichtung oder Komponente oder ein Teil davon sein. Zum Beispiel kann das System 2600 ein zelluläres Telefon, ein Computer, ein Server, eine Netzwerkvorrichtung, ein System auf einem Chip (SoC), ein Controller, ein drahtloser Sendeempfänger, eine Stromversorgungseinheit usw. sein. Ferner kann in einigen Ausführungsformen das System 2600 Teil einer Gruppierung von verknüpften oder verbundenen Vorrichtungen sein, wie etwa ein Datenzentrum, ein Rechencluster usw.
  • Wie in 26 gezeigt ist, kann das System 2600 einen Prozessor 2610 aufweisen, der mit dem Systemspeicher 2605 und einer Stromversorgung 2650 wirkverbunden ist. Wenngleich es nicht in 26 gezeigt ist, kann das System 2600 ferner andere Komponenten aufweisen. In einer oder mehreren Ausführungsformen kann der Systemspeicher 2605 mit (einer) beliebigen Art(en) von Computerspeicher (z. B. dynamischer Direktzugriffsspeicher (DRAM), statischer Direktzugriffsspeicher (SRAM), nichtflüchtiger Speicher (NVM, Non-Volatile Memory), eine Kombination von DRAM und NVM usw.) implementiert sein. Die Stromversorgung 2650 kann dem Prozessor 2610 elektrischen Strom bereitstellen.
  • In einer oder mehreren Ausführungsformen kann der Prozessor 2610 eine Hardwareverarbeitungsvorrichtung (z. B. eine zentrale Verarbeitungseinheit (CPU, Central Processing Unit), ein System auf einem Chip (SoC, System on a Chip) und so weiter) sein. Wie gezeigt ist, kann der Prozessor 2610 eine beliebige Anzahl an Steuerblöcken 2620A-2620N (auch allgemein als Steuerblöcke 2620 bezeichnet) und eine Leistungssteuereinheit 2630 aufweisen.
  • In einer oder mehreren Ausführungsformen kann jeder Steuerblock 2620 einen integrierten Spannungsregler 2628, eine Master-Verarbeitungsengine 2622 und eine beliebige Anzahl an Slave-Verarbeitungsengines 2624A-2624B (auch allgemein als Slave-Verarbeitungsengines 2624 bezeichnet) aufweisen. In einigen Ausführungsformen können die Master-Verarbeitungsengine 2622 und die Slave-Verarbeitungsengines 2624 in der Steuergruppe 2620 Instanzen einer einzigen Art von Verarbeitungsengine sein. Zum Beispiel kann jede der Master-Verarbeitungsengine 2622 und der Slave-Verarbeitungsengines 2624 eine Universalhardwareverarbeitungsengine sein, die dieselben Leistungsmerkmale aufweist und/oder dieselbe Befehlssatzarchitektur verwendet.
  • In einer oder mehreren Ausführungsformen kann jeder Steuerblock 2620 zu einer Herstellungszeit des Prozessors 2610 definiert werden. Zum Beispiel kann vor dem Abschließen des Prozessors 2610 ein Herstellungsprozess Sicherungen oder sonstige Verbindungen zum Konfigurieren oder „Festverdrahten“ jedes Steuerblocks 2620 modifizieren. In einigen Ausführungsformen kann solch eine Konfiguration eine bestimmte Verarbeitungsengine als die Master-Verarbeitungsengine 2622 spezifizieren und die verbleibenden Verarbeitungsengines als Slave-Verarbeitungsengines 2624 spezifizieren. In einer oder mehreren Ausführungsformen kann die Master-Verarbeitungsengine 2622 Kennungen und/oder Adressen (z. B. eine eindeutige Busadresse) für die Slave-Verarbeitungsengines 2624 speichern oder Zugriff auf diese haben. Ferner kann jede Slave-Verarbeitungsengine 2624 eine Kennung und/oder Adresse für die Master-Verarbeitungsengine 2622 speichern oder Zugriff auf diese haben.
  • In einigen Ausführungsformen kann der integrierte Spannungsregler 2628 eine elektrische Stromversorgung regeln und der Master-Verarbeitungsengine 2622 und den Slave-Verarbeitungsengines 2624 in derselben Steuergruppe 2620 bereitstellen. Ferner kann die Leistungssteuereinheit 2630 Leistungszustände der Steuerblöcke 2620 steuern.
  • In einigen Ausführungsformen kann die Leistungssteuereinheit 2630 Zustandssteuerinformationen (z. B. Nachrichten, Signale usw.) zu der Master-Verarbeitungsengine 2622 senden. Solche Zustandssteuerinformationen können Spannungs- und/oder Betriebsfrequenzeinstellungen (hierin auch als „Arbeitspunkte“ bezeichnet) für einige oder alle der Master-Verarbeitungsengine 2622 und der Slave-Verarbeitungsengines 2624 umfassen. In anderen Ausführungsformen kann die Master-Verarbeitungsengine 2622 Zustandssteuerinformationen von anderen Quellen, wie etwa einem Betriebssystem, einem Treiber, einer externen Vorrichtung und so weiter, erhalten.
  • In einer oder mehreren Ausführungsformen kann als Reaktion auf einen Erhalt von Zustandssteuerinformationen die Master-Verarbeitungsengine 2622 den integrierten Spannungsregler 2628 steuern oder anderweitig veranlassen, einen spezifizierten Spannungspegel der Master-Verarbeitungsengine 2622 und den Slave-Verarbeitungsengines 2624 bereitzustellen. Ferner kann in einigen Ausführungsformen die Master-Verarbeitungsengine 2622 bestimmen, welche Slave-Verarbeitungsengines 2624 ihre Betriebsfrequenzen gemäß den Zustandssteuerinformationen abändern werden müssen. Zum Beispiel kann die Master-Verarbeitungsengine 2622 eine erste Slave-Verarbeitungsengine 2624A kennzeichnen, die eine höhere Betriebsfrequenz verwenden wird, und eine Nachricht oder einen Befehl senden, um zu bewirken, dass die erste Slave-Verarbeitungsengine 2624A ihre Betriebsfrequenz erhöht. In einem anderen Beispiel kann die Master-Verarbeitungsengine 2622 eine zweite Slave-Verarbeitungsengine 2624B kennzeichnen, die eine geringere Betriebsfrequenz verwenden wird, und eine Nachricht oder einen Befehl senden, um zu bewirken, dass die zweite Slave-Verarbeitungsengine 2624B ihre Betriebsfrequenz verringert.
  • In einer oder mehreren Ausführungsformen können die Slave-Verarbeitungsengines 2624 und die Master-Verarbeitungsengine 2622 jeweils eine Schaltungsanordnung aufweisen, um ihre jeweiligen Betriebsfrequenzen gemäß den Zustandssteuerinformationen zu steuern oder erzeugen. Zum Beispiel können die Slave-Verarbeitungsengines 2624 und die Master-Verarbeitungsengine 2622 jeweils eine oder mehrere Phasenregelschleifen (PLLs, Phase Lock Loops) zum unabhängigen Steuern einer jeweiligen Betriebsfrequenz aufweisen.
  • In einer oder mehreren Ausführungsformen kann die Master-Verarbeitungsengine 2622 die Umstellung einer Slave-Verarbeitungsengine 2624 auf die Betriebsfrequenz, die mit ihrem jeweiligen Arbeitspunkt verknüpft ist, koordinieren. Zum Beispiel kann die Master-Verarbeitungsengine 2622 den Zeitpunkt einer Betriebsfrequenzänderung bezüglich einer Änderung der Spannung, die durch den integrierten Spannungsregler 2628 bereitgestellt wird, koordinieren. Ferner kann die Master-Verarbeitungsengine 2622 die Kommunikation von Bestätigungsnachrichten koordinieren, die mit einer Leistungszustandsänderung verknüpft sind. Die Koordination, die von der Master-Verarbeitungsengine 2622 durchgeführt wird, wird weiter unten unter Bezugnahme auf 27-29 beschrieben.
  • In einer oder mehreren Ausführungsformen kann die Master-Verarbeitungsengine 2622 andere Betriebsparameter einer Slave-Verarbeitungsengine 2624 steuern oder abändern. Zum Beispiel kann die Master-Verarbeitungsengine 2622 ein Einstellen auf einen Strompegel, eine Wärmeeinstellung oder einen Wärmeparameter (z. B. Ventilatorgeschwindigkeit, Kühlmittelstrom) und so weiter bewirken.
  • Unter Bezugnahme nunmehr auf 27 ist eine Veranschaulichung einer beispielhaften Operation 2700 gemäß einer oder mehreren Ausführungsformen gezeigt. Insbesondere veranschaulicht 27 verschiedene Aktionen und/oder Nachrichten, die zwischen den Prozessorkomponenten über die Zeiträume 1-6 gesendet werden.
  • Wie gezeigt ist, kann bei dem Zeitraum 1 eine Leistungssteuereinheit (PCU) 2630 eine Zustandsänderungsnachricht 2710 zu einer Master-Verarbeitungsengine (PE, Processing Engine) 2622 senden. Zum Beispiel kann die Zustandsänderungsnachricht 2710 Arbeitspunkte für eine Steuergruppe (z. B. die Steuergruppe 2620A, die in 26 gezeigt ist) einschließlich der Master- PE 2622 , einer ersten Slave- PE 2624A und einer zweiten Slave- PE 2624B aufweisen.
  • In dem Zeitraum 2 kann als Reaktion auf den Erhalt der Zustandsänderungsnachricht 2710 die Master- PE 2622 eine Bestimmung 2720, dass die erste Slave- PE 2624A und die zweite Slave- PE 2624B die Betriebsfrequenzen basierend auf der Zustandsänderungsnachricht 2710 wechseln werden, durchführen. Ferner kann die Master- PE 2622 Arbeitspunktnachrichten 2730, 2735 erzeugen.
  • In dem Zeitraum 3 kann die erste Slave- PE 2624A die Arbeitspunktnachricht 2730 von der Master- PE 2622 erhalten. Ferner kann die zweite Slave- PE 2624B die Arbeitspunktnachricht 2735 von der Master- PE 2622 erhalten.
  • In dem Zeitraum 4 kann die erste Slave- PE 2624A eine Umstellung 2740 auf eine Frequenz, die durch die Arbeitspunktnachricht 2730 angegeben wird, durchführen und eine Bestätigung zu der Master- PE 2622 senden. Ferner kann die zweite Slave- PE 2624B eine Umstellung 2745 auf eine Frequenz, die durch die Arbeitspunktnachricht 2735 angegeben wird, durchführen und eine Bestätigung zu der Master- PE 2622 senden.
  • In dem Zeitraum 5 kann die Master- PE 2622 eine Bestätigung 2750 von der ersten Slave- PE 2624A erhalten. Ferner kann die Master- PE 2622 eine Bestätigung 2755 von der zweiten Slave- PE 2624B erhalten.
  • In dem Zeitraum 6 kann nach dem Erhalten der Bestätigungen 2750, 2755 von der ersten Slave- PE 2624A und der zweiten Slave- PE 2624B (d. h., von allen Slave-PEs in der Steuergruppe) die Master- PE 2622 eine Abschlussnachricht 2760 zu der PCU 2630 senden. In einigen Ausführungsformen kann die Master-PE 2622 auch die Abschlussnachricht 2760 nach dem Abschließen einer Umstellung auf eine Frequenz senden, die in der Zustandsänderungsnachricht 2710 spezifiziert ist.
  • Unter Bezugnahme nunmehr auf 28 ist ein Flussdiagramm eines Verfahrens 2800 gemäß einer oder mehreren Ausführungsformen gezeigt. In verschiedenen Ausführungsformen kann das Verfahren 2800 durch eine Verarbeitungslogik durchgeführt werden, die Hardware (z. B. eine Verarbeitungsvorrichtung, eine Schaltungsanordnung, eine dedizierte Logik, eine programmierbare Logik, Mikrocode usw.), Software (z. B. Befehle, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon umfassen kann. Bei einigen Implementierungen kann das Verfahren 2800 unter Verwendung von einer oder mehreren Komponenten, die in 26-27 gezeigt sind (z. B. die Master-PE 2622, die Slave-PEs 2624 und so weiter) durchgeführt werden. In Firmware- oder Softwareausführungsformen kann das Verfahren 2800 durch von einem Computer ausgeführte Befehle implementiert werden, die in einem nichttransitorischen maschinenlesbaren Medium, wie etwa einer optischen Speichervorrichtung, Halbleiterspeichervorrichtung oder Magnetspeichervorrichtung, gespeichert sind. Das maschinenlesbare Medium kann Daten speichern, welche, wenn sie von mindestens einer Maschine verwendet werden, bewirken, dass die mindestens eine Maschine mindestens eine integrierte Schaltung herstellt, um ein Verfahren durchzuführen. Zur Veranschaulichung können die Aktionen, die in dem Verfahren 2800 involviert sind, nachstehend unter Bezugnahme auf 26-27 beschrieben werden, welche Beispiele gemäß einer oder mehreren Ausführungsformen zeigen. Der Umfang der verschiedenen hierin erörterten Ausführungsformen ist jedoch nicht diesbezüglich beschränkt.
  • Der Block 2810 kann das Erhalten, durch eine Master-Verarbeitungsengine eines Prozessors, einer Änderungsnachricht von einer Leistungssteuereinheit umfassen, wobei der Prozessor die Master-Verarbeitungsengine, eine Gruppe von Slave-Verarbeitungsengines und einen Spannungsregler umfasst. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-Verarbeitungsengine 2622 (die in dem Steuerblock 2620A des Prozessors 2610 enthalten ist) die Zustandsänderungsnachricht 2710 von der Leistungssteuereinheit 2630 erhalten. In einigen Ausführungsformen kann die Zustandsänderungsnachricht Arbeitspunkte für die Master-PE 2622 und mindestens eine Slave-PE 2624 des Steuerblocks 2620 aufweisen.
  • Der Block 2820 kann als Reaktion auf einen Erhalt der Änderungsnachricht das Steuern, durch die Master-Verarbeitungsengine, des Spannungsreglers zum Ausgeben eines abgeänderten Spannungspegels umfassen. Zum Beispiel kann unter Bezugnahme auf 26-27 als Reaktion auf die Zustandsänderungsnachricht 2710 die Master-Verarbeitungsengine 2622 den integrierten Spannungsregler 2628 steuern, um einen bestimmten Spannungspegel auszugeben.
  • Der Block 2830 kann das Bereitstellen durch den Spannungsregler des abgeänderten Spannungspegels an die Master-Verarbeitungsengine und die Gruppe von Slave-Verarbeitungsengines umfassen. Zum Beispiel kann unter Bezugnahme auf 26-27 der integrierte Spannungsregler 2628 den bestimmten Spannungspegel der Master-PE 2622 und den Slave-PEs 2624 bereitstellen.
  • Der Block 2840 kann das Abändern, durch die Master-Verarbeitungsengine, einer Betriebsfrequenz von mindestens einer Slave-Verarbeitungsengine basierend auf der Änderungsnachricht umfassen. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-PE 2622 eine erste Slave- PE 2624A kennzeichnen, die eine höhere Betriebsfrequenz verwenden wird, und eine Nachricht oder einen Befehl senden, um zu bewirken, dass die erste Slave- PE 2624A ihre Betriebsfrequenz erhöht.
  • Der Block 2850 kann das Erhalten, durch die Master-Verarbeitungsengine, einer Bestätigung der Abänderung der Betriebsfrequenz der mindestens einen Slave-Verarbeitungsengine umfassen. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-PE 2622 eine Bestätigung 2750 von der ersten Slave- PE 2624A erhalten.
  • Der Block 2860 kann das Senden, durch die Master-Verarbeitungsengine, einer Abschlussnachricht zu der Leistungssteuereinheit umfassen. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-PE 2622 eine Abschlussnachricht 2760 zu der PCU 2630 senden. In einigen Ausführungsformen kann die Master-PE 2622 die Abschlussnachricht 2760 senden, nachdem die Master-PE 2622 auch ihre eigene Betriebsfrequenz gemäß der Zustandsänderungsnachricht 2710 abändert. In einigen Ausführungsformen kann die Abschlussnachricht 2760 eine zusammengefasste Antwort auf die PCU 2630 von der Master-PE 2622 sein, die angibt, dass die Steuergruppe 2620 die angeforderte Leistungszustandsänderung abgeschlossen hat. Nach Block 2860 ist das Verfahren 2800 abgeschlossen.
  • Unter Bezugnahme nunmehr auf 29 ist ein Flussdiagramm eines Verfahrens 2900 gemäß einer oder mehreren Ausführungsformen gezeigt. In verschiedenen Ausführungsformen kann das Verfahren 2900 durch eine Verarbeitungslogik durchgeführt werden, die Hardware (z. B. eine Verarbeitungsvorrichtung, eine Schaltungsanordnung, eine dedizierte Logik, eine programmierbare Logik, Mikrocode usw.), Software (z. B. Befehle, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon umfassen kann. Bei einigen Implementierungen kann das Verfahren 2900 durch die Master-Verarbeitungsengine 2622 durchgeführt werden, die in 26-27 gezeigt ist. In Firmware- oder Softwareausführungsformen kann das Verfahren 2900 durch von einem Computer ausgeführte Befehle implementiert werden, die in einem nichttransitorischen maschinenlesbaren Medium, wie etwa einer optischen Speichervorrichtung, Halbleiterspeichervorrichtung oder Magnetspeichervorrichtung, gespeichert sind. Das maschinenlesbare Medium kann Daten speichern, welche, wenn sie von mindestens einer Maschine verwendet werden, bewirken, dass die mindestens eine Maschine mindestens eine integrierte Schaltung herstellt, um ein Verfahren durchzuführen. Zur Veranschaulichung können die Aktionen, die in dem Verfahren 2900 involviert sind, nachstehend unter Bezugnahme auf 26-27 beschrieben werden, welche Beispiele gemäß einer oder mehreren Ausführungsformen zeigen. Der Umfang der verschiedenen hierin erörterten Ausführungsformen ist jedoch nicht diesbezüglich beschränkt.
  • Der Block 2910 kann das Erhalten einer Änderungsnachricht für einen Steuerblock umfassen. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-Verarbeitungsengine 2622 die Zustandsänderungsnachricht 2710 von der Leistungssteuereinheit 2630 erhalten. In einigen Ausführungsformen kann die Zustandsänderungsnachricht 2710 Arbeitspunkte für die Master-PE 2622 und mehrere Slave-PEs 2624 des Steuerblocks 2620 aufweisen.
  • Der Block 2920 kann das Kennzeichnen einer Slave-Verarbeitungsengine zum Arbeiten mit einer abgeänderten Betriebsfrequenz umfassen. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-PE 2622 eine erste Slave- PE 2624A kennzeichnen, für welche die Zustandsänderungsnachricht 2710 eine andere Betriebsfrequenz als jene, die aktuell von der ersten Slave- PE 2624A verwendet wird, spezifiziert oder angibt.
  • Die Raute 2930 kann das Bestimmen, ob die Betriebsfrequenz der Slave-Verarbeitungsengine zu erhöhen oder zu verringern ist, umfassen. Wenn bei der Raute 2930 bestimmt wird, dass die Betriebsfrequenz erhöht ist, dann wird bei Block 2940 die Spannung, die dem Steuerblock zugeführt wird, erhöht. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-Verarbeitungsengine 2622 gemäß der Zustandsänderungsnachricht bestimmen, dass die erste Slave- PE 2624A mit einer höheren Betriebsfrequenz 2710 arbeiten wird. Ferner kann die Master-Verarbeitungsengine 2622 den integrierten Spannungsregler 2628 gemäß der Zustandsänderungsnachricht 2710 steuern, um einen bestimmten Spannungspegel auszugeben.
  • Nach Block 2940 wird die Betriebsfrequenz der Slave-Verarbeitungsengine bei Block 2950 erhöht. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-Verarbeitungsengine 2622 eine Arbeitspunktnachricht 2730 zu der ersten Slave- PE 2624A senden, wodurch bewirkt wird, dass die erste Slave- PE 2624A ihre Betriebsfrequenz auf einen spezifizierten Arbeitspunkt erhöht.
  • Nach Block 2950 kann eine Bestätigung (ACK) von der Slave-Verarbeitungsengine bei Block 2960 erhalten werden. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-PE 2622 eine Bestätigung 2750 von der ersten Slave- PE 2624A erhalten. Nach Block 2960 ist das Verfahren 2900 abgeschlossen.
  • Wenn jedoch bei der Raute 2930 bestimmt wird, dass die Betriebsfrequenz verringert ist, dann wird bei Block 2970 die Betriebsfrequenz der Slave-Verarbeitungsengine verringert. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-Verarbeitungsengine 2622 eine Arbeitspunktnachricht 2730 zu der zweiten Slave- PE 2624B senden, wodurch bewirkt wird, dass die zweite Slave- PE 2624B ihre Betriebsfrequenz auf einen spezifizierten Arbeitspunkt verringert.
  • Nach Block 2970 kann eine Bestätigung (ACK) von der Slave-Verarbeitungsengine bei Block 2980 erhalten werden. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-PE 2622 eine Bestätigung 2750 von der zweiten Slave- PE 2624B erhalten.
  • Nach Block 2980 wird die Spannung, die dem Steuerblock zugeführt wird, bei Block 2990 verringert. Zum Beispiel kann unter Bezugnahme auf 26-27 die Master-Verarbeitungsengine 2622 den integrierten Spannungsregler 2628 gemäß der Zustandsänderungsnachricht steuern, um einen bestimmten Spannungspegel 2710 auszugeben. Nach Block 2990 ist das Verfahren 2900 abgeschlossen.
  • Die folgenden Abschnitte und/oder Beispiele gehören zu weiteren Ausführungsformen.
  • In Beispiel 1 weist ein Prozessor zum Steuern der Spannung eine Leistungssteuereinheit; eine Master-Verarbeitungsengine; eine Gruppe von Slave-Verarbeitungsengines; und einen Spannungsregler auf. Die Master-Verarbeitungsengine steuert, als Reaktion auf einen Erhalt einer Änderungsnachricht von der Leistungssteuereinheit, den Spannungsregler, um einen Spannungspegel einzustellen, der der Master-Verarbeitungsengine und der Gruppe von Slave-Verarbeitungsengines bereitgestellt wird.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 wahlweise umfassen, dass die Master-Verarbeitungsengine als Reaktion auf den Erhalt der Änderungsnachricht eine oder mehrere Slave-Verarbeitungsengines in der Gruppe von Slave-Verarbeitungsengines kennzeichnet, um mit abgeänderten Betriebsfrequenzen basierend auf der Änderungsnachricht zu arbeiten.
  • In Beispiel 3 kann der Gegenstand der Beispiele 1-2 wahlweise umfassen, dass die Master-Verarbeitungsengine für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines eine Angabe einer jeweiligen abgeänderten Betriebsfrequenz bereitstellt.
  • In Beispiel 4 kann der Gegenstand der Beispiele 1-3 wahlweise umfassen, dass die Master-Verarbeitungsengine Folgendes durchführt: für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Erhalten einer Bestätigung, dass die Slave-Verarbeitungsengine zu der jeweiligen abgeänderten Betriebsfrequenz übergegangen ist; und als Reaktion auf den Erhalt von Bestätigungen von allen der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Bereitstellen einer Änderungsabschlussnachricht an die Leistungssteuerein heit.
  • In Beispiel 5 kann der Gegenstand der Beispiele 1-4 wahlweise umfassen, dass die Master-Verarbeitungsengine als Reaktion auf eine Kennzeichnung einer ersten Slave-Verarbeitungsengine zum Arbeiten mit einer erhöhten Betriebsfrequenz: vor einem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, zu bewirken, dass die erste Slave-Verarbeitungsengine mit der erhöhten Betriebsfrequenz arbeitet.
  • In Beispiel 6 kann der Gegenstand der Beispiele 1-5 wahlweise umfassen, dass die Master-Verarbeitungsengine als Reaktion auf eine Kennzeichnung einer zweiten Slave-Verarbeitungsengine zum Arbeiten mit einer verringerten Betriebsfrequenz: nach dem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, um einen Spannungspegel einzustellen, zu bewirken, dass die zweite Slave-Verarbeitungsengine mit der verringerten Betriebsfrequenz arbeitet.
  • In Beispiel 7 kann der Gegenstand der Beispiele 1-6 wahlweise umfassen, dass die Master-Verarbeitungsengine, die Gruppe von Slave-Verarbeitungsengines und der Spannungsregler in einem ersten Steuerblock des Prozessors enthalten sind, und dass der Prozessor mehrere Steuerblöcke aufweist.
  • In Beispiel 8 kann der Gegenstand der Beispiele 1-7 wahlweise umfassen, dass jede der Gruppe von Slave-Verarbeitungsengines und der Master-Verarbeitungsengine eine Universal-Verarbeitungsengine ist, die einen einzigen Befehlssatz verwendet.
  • In Beispiel 9 kann ein Verfahren zum Steuern der Spannung Folgendes umfassen: Erhalten, durch eine Master-Verarbeitungsengine eines Prozessors, einer Änderungsnachricht von einer Leistungssteuereinheit, wobei der Prozessor die Master-Verarbeitungsengine, eine Gruppe von Slave-Verarbeitungsengines und einen Spannungsregler umfasst; als Reaktion auf einen Erhalt der Änderungsnachricht, Steuern, durch die Master-Verarbeitungsengine, des Spannungsreglers zum Ausgeben eines abgeänderten Spannungspegels; und Bereitstellen, durch den Spannungsregler, des abgeänderten Spannungspegels an die Master-Verarbeitungsengine und die Gruppe von Slave-Verarbeitungsengines.
  • In Beispiel 10 kann der Gegenstand von Beispiel 9 wahlweise Folgendes umfassen: als Reaktion auf den Erhalt der Änderungsnachricht, Kennzeichnen, durch die Master-Verarbeitungsengine, einer oder mehrerer Slave-Verarbeitungsengines in der Gruppe von Slave-Verarbeitungsengines zum Arbeiten mit abgeänderten Betriebsfrequenzen basierend auf der Änderungsnachricht; und Senden, durch die Master-Verarbeitungsengine, einer Angabe einer jeweiligen abgeänderten Betriebsfrequenz zu den gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines.
  • In Beispiel 11 kann der Gegenstand der Beispiele 9-10 wahlweise Folgendes umfassen: für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Erhalten einer Bestätigung, dass die Slave-Verarbeitungsengine zu der jeweiligen abgeänderten Betriebsfrequenz übergegangen ist; und als Reaktion auf den Erhalt von Bestätigungen von allen der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Senden einer Änderungsabschlussnachricht zu der Leistungssteuereinheit.
  • In Beispiel 12 kann der Gegenstand der Beispiele 9-11 wahlweise vor dem Senden der Änderungsabschlussnachricht zu der Leistungssteuereinheit das Umstellen der Master-Verarbeitungsengine auf eine abgeänderte Betriebsfrequenz basierend auf der Änderungsnachricht umfassen.
  • In Beispiel 13 kann der Gegenstand der Beispiele 9-12 wahlweise Folgendes umfassen: als Reaktion auf den Erhalt der Änderungsnachricht, Kennzeichnen einer ersten Slave-Verarbeitungsengine zum Arbeiten mit einer erhöhten Betriebsfrequenz; und vor einem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, Steuern der ersten Slave-Verarbeitungsengine zum Arbeiten mit der erhöhten Betriebsfrequenz.
  • In Beispiel 14 kann der Gegenstand der Beispiele 9-13 wahlweise Folgendes umfassen: als Reaktion auf den Erhalt der Änderungsnachricht, Kennzeichnen einer zweiten Slave-Verarbeitungsengine zum Arbeiten mit einer verringerten Betriebsfrequenz; und nach dem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, um einen Spannungspegel einzustellen, Steuern der zweiten Slave-Verarbeitungsengine zum Arbeiten mit der verringerten Betriebsfrequenz.
  • In Beispiel 15 weist eine Rechenvorrichtung einen oder mehrere Prozessoren und einen Speicher, auf dem mehrere Befehle gespeichert sind, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, bewirken, dass die Rechenvorrichtung das Verfahren eines der Beispiele 9 bis 14 durchführt, auf.
  • In Beispiel 16 können auf mindestens einem maschinenlesbaren Medium Daten gespeichert sein, welche, wenn sie von mindestens einer Maschine verwendet werden, bewirken, dass die mindestens eine Maschine das Verfahren eines der Beispiele 9 bis 14 durchführt.
  • In Beispiel 17 umfasst eine elektronische Vorrichtung Mittel zum Durchführen des Verfahrens eines der Beispiele 9 bis 14.
  • In Beispiel 18 umfasst ein System zum Steuern der Spannung einen Prozessor und einen Systemspeicher, der mit dem Prozessor gekoppelt ist. Der Prozessor weist Folgendes auf: eine Leistungssteuereinheit; einen Spannungsregler; eine Gruppe von Slave-Verarbeitungsengines; und eine Master-Verarbeitungsengine, um als Reaktion auf einen Erhalt einer Änderungsnachricht von der Leistungssteuereinheit den Spannungsregler zu steuern, um einen Spannungspegel einzustellen, der der Master-Verarbeitungsengine und der Gruppe von Slave-Verarbeitungsengines bereitgestellt wird.
  • In Beispiel 19 kann der Gegenstand von Beispiel 18 wahlweise umfassen, dass die Master-Verarbeitungsengine als Reaktion auf den Erhalt der Änderungsnachricht eine oder mehrere Slave-Verarbeitungsengines in der Gruppe von Slave-Verarbeitungsengines kennzeichnet, um mit abgeänderten Betriebsfrequenzen basierend auf der Änderungsnachricht zu arbeiten.
  • In Beispiel 20 kann der Gegenstand der Beispiele 18-19 wahlweise umfassen, dass die Master-Verarbeitungsengine Folgendes durchführt: für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Bereitstellen einer Angabe einer jeweiligen abgeänderten Betriebsfrequenz; für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Erhalten einer Bestätigung, dass die Slave-Verarbeitungsengine zu der jeweiligen abgeänderten Betriebsfrequenz übergegangen ist; und als Reaktion auf den Erhalt von Bestätigungen von allen der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Bereitstellen einer Änderungsabschlussnachricht an die Leistungssteuerein heit.
  • In Beispiel 21 kann der Gegenstand der Beispiele 18-20 wahlweise umfassen, dass die Master-Verarbeitungsengine als Reaktion auf eine Kennzeichnung einer ersten Slave-Verarbeitungsengine zum Arbeiten mit einer erhöhten Betriebsfrequenz: vor einem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, zu bewirken, dass die erste Slave-Verarbeitungsengine mit der erhöhten Betriebsfrequenz arbeitet.
  • In Beispiel 22 kann der Gegenstand der Beispiele 18-21 wahlweise umfassen, dass die Master-Verarbeitungsengine als Reaktion auf eine Kennzeichnung einer zweiten Slave-Verarbeitungsengine zum Arbeiten mit einer verringerten Betriebsfrequenz: nach dem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, um einen Spannungspegel einzustellen, zu bewirken, dass die zweite Slave-Verarbeitungsengine mit der verringerten Betriebsfrequenz arbeitet.
  • In Beispiel 23 kann der Gegenstand der Beispiele 18-22 wahlweise umfassen, dass der Spannungsregler, die Gruppe von Slave-Verarbeitungsengines und die Master-Verarbeitungsengine in einem ersten Steuerblock des Prozessors enthalten sind, wobei der Prozessor ferner einen zweiten Steuerblock einschließlich einer zweiten Master-Verarbeitungsengine, einer zweiten Gruppe von Slave-Verarbeitungsengines und eines zweiten Spannungsreglers umfasst.
  • In Beispiel 24 weist eine Vorrichtung zum Steuern von Spannungspegeln Folgendes auf: Mittel zum Erhalten, an einer Master-Verarbeitungsengine eines Prozessors, einer Änderungsnachricht von einer Leistungssteuereinheit, wobei der Prozessor die Master-Verarbeitungsengine, eine Gruppe von Slave-Verarbeitungsengines und einen Spannungsregler umfasst; Mittel zum Bewirken, als Reaktion auf einen Erhalt der Änderungsnachricht, dass die Master-Verarbeitungsengine den Spannungsregler zum Ausgeben eines abgeänderten Spannungspegels steuert; und Mittel zum Bewirken, dass der Spannungsregler den abgeänderten Spannungspegel der Master-Verarbeitungsengine und der Gruppe von Slave-Verarbeitungsengines bereitstellt.
  • In Beispiel 25 kann der Gegenstand von Beispiel 24 wahlweise Folgendes umfassen: Mittel zum Bewirken, als Reaktion auf den Erhalt der Änderungsnachricht, dass die Master-Verarbeitungsengine eine oder mehrere Slave-Verarbeitungsengines in der Gruppe von Slave-Verarbeitungsengines zum Arbeiten mit abgeänderten Betriebsfrequenzen basierend auf der Änderungsnachricht kennzeichnet; und Mittel zum Bewirken, dass die Master-Verarbeitungsengine eine Angabe einer jeweiligen abgeänderten Betriebsfrequenz zu den gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines sendet.
  • In Beispiel 26 kann der Gegenstand der Beispiele 24-25 wahlweise Folgendes umfassen: für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Mittel zum Erhalten einer Bestätigung, dass die Slave-Verarbeitungsengine zu der jeweiligen abgeänderten Betriebsfrequenz übergegangen ist; und Mittel zum Senden, als Reaktion auf den Erhalt von Bestätigungen von allen der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, einer Änderungsabschlussnachricht zu der Leistungssteuerein heit.
  • In Beispiel 27 kann der Gegenstand der Beispiele 24-26 wahlweise Mittel zum Umstellen der Master-Verarbeitungsengine auf eine abgeänderte Betriebsfrequenz basierend auf der Änderungsnachricht vor dem Senden der Änderungsabschlussnachricht zu der Leistungssteuereinheit umfassen.
  • In Beispiel 28 kann der Gegenstand der Beispiele 24-27 wahlweise Folgendes umfassen: Mittel zum Kennzeichnen, als Reaktion auf den Erhalt der Änderungsnachricht, einer ersten Slave-Verarbeitungsengine zum Arbeiten mit einer erhöhten Betriebsfrequenz; und Mittel zum Steuern, vor einem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, der ersten Slave-Verarbeitungsengine zum Arbeiten mit der erhöhten Betriebsfrequenz.
  • In Beispiel 29 kann der Gegenstand der Beispiele 24-28 wahlweise Folgendes umfassen: Mittel zum Kennzeichnen, als Reaktion auf den Erhalt der Änderungsnachricht, einer zweiten Slave-Verarbeitungsengine zum Arbeiten mit einer verringerten Betriebsfrequenz; und Mittel zum Steuern nach dem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, um einen Spannungspegel einzustellen, der zweiten Slave-Verarbeitungsengine zum Arbeiten mit der verringerten Betriebsfrequenz.
  • In Beispiel 30 kann der Gegenstand der Beispiele 24-29 wahlweise umfassen, dass die Master-Verarbeitungsengine, die Gruppe von Slave-Verarbeitungsengines und der Spannungsregler in einem ersten Steuerblock des Prozessors enthalten sind, und dass der Prozessor mehrere Steuerblöcke aufweist.
  • Gemäß einigen Ausführungsformen sind Beispiele zur Verwendung von Steuergruppen zur Leistungsverwaltung in einem Prozessor bereitgestellt. Wie zuvor unter Bezugnahme auf 26-29 erörtert wurde, können einige Ausführungsformen einen Prozessor umfassen, der eine Master-Verarbeitungsengine, mehrere Slave-Verarbeitungsengines und einen integrierten Spannungsregler umfasst. In einigen Ausführungsformen kann die Master-Verarbeitungsengine die Umstellungen mehrerer Slave-Verarbeitungsengines auf spezifizierte Arbeitspunkte koordinieren. Ferner kann die Master-Verarbeitungsengine Bestätigungen von den Slave-Verarbeitungsengines erhalten und eine zusammengefasste Antwort an eine Leistungssteuereinheit bereitstellen. Somit können einige Ausführungsformen eine verbesserte Effizienz und Reaktionsfähigkeit der Leistungsverwaltung in dem Prozessor bereitstellen.
  • Es sei darauf hingewiesen, dass, wenngleich 26-29 verschiedene beispielhafte Implementierungen veranschaulichen, andere Variationen möglich sind. Zum Beispiel ist vorgesehen, dass eine oder mehrere Ausführungsformen in den beispielhaften Vorrichtungen und Systemen implementiert werden können, die unter Bezugnahme auf 1-25 beschrieben werden.
  • Es sei darauf hingewiesen, dass die Beispiele, die in den 1-29 gezeigt sind, zur Veranschaulichung bereitgestellt werden und keinerlei Ausführungsformen einschränken sollen. Wenngleich die Ausführungsformen der Klarheit wegen in einer vereinfachten Form gezeigt sein können, können die Ausführungsformen insbesondere eine beliebige Anzahl und/oder Anordnung von Prozessoren, Kernen und/oder zusätzlichen Komponenten (z. B. Busse, Speichermedien, Steckverbinder, Leistungskomponenten, Puffer, Schnittstellen usw.) umfassen. Zum Beispiel ist vorgesehen, dass einige Ausführungsformen eine beliebige Anzahl an Komponenten zusätzlich zu den gezeigten umfassen können und dass eine andere Anordnung der gezeigten Komponenten bei bestimmten Implementierungen auftreten kann. Ferner ist vorgesehen, dass spezifische Elemente in den Beispielen, die in 1-29 gezeigt sind, an beliebiger Stelle in einer oder mehreren Ausführungsformen verwendet werden können.
  • Es versteht sich, dass verschiedene Kombinationen der vorherigen Beispiele möglich sind. Die Ausführungsformen können bei vielen verschiedenen Arten von Systemen verwendet werden. Zum Beispiel kann in einer Ausführungsform eine Kommunikationsvorrichtung angeordnet sein, um die verschiedenen Verfahren und Techniken, die hierin beschrieben sind, durchzuführen. Selbstverständlich ist der Umfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt und können stattdessen andere Ausführungsformen auf andere Arten von Vorrichtung zur Verarbeitung von Befehlen oder ein oder mehrere maschinenlesbare Medien einschließlich Befehlen, die als Reaktion darauf, dass sie auf einer Computervorrichtung ausgeführt werden, bewirken, dass die Vorrichtung eine(s) oder mehrere der hierin beschriebenen Verfahren und Techniken ausführt, gerichtet sein.
  • Die Bezugnahme in der gesamten Beschreibung auf „eine Ausführungsform“ oder „einer Ausführungsform“ bedeutet, dass eine bestimmte Funktion, eine bestimmte Struktur oder ein bestimmtes Merkmal, die in Verbindung mit der Ausführungsform beschrieben sind, in mindestens einer Implementierung enthalten ist, die innerhalb der vorliegenden Erfindung umfasst ist. Somit bezieht sich das Auftreten des Ausdrucks „eine Ausführungsform“ oder „in einer Ausführungsform“ nicht notwendigerweise auf dieselbe Ausführungsform. Ferner können die bestimmten Funktionen, Strukturen oder Merkmale in anderen geeigneten Formen eingesetzt werden, die sich von der bestimmten veranschaulichten Ausführungsform unterscheiden, und können alle solcher Formen innerhalb der Ansprüche der vorliegenden Anmeldung umfasst sein.
  • Wenngleich die vorliegende Erfindung bezüglich einer begrenzten Anzahl an Ausführungsformen beschrieben worden ist, wird ein Fachmann zahlreiche Abänderungen und Variationen diesbezüglich erkennen. Es ist vorgesehen, dass die beanspruchten Ansprüche alle derartigen Abänderungen und Variationen abdecken, wie sie innerhalb des wahren Wesens und Umfangs der vorliegenden Erfindung fallen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • PE 2622 [0234, 0235, 0236, 0237, 0238, 0239]
    • PE 2624 A [0234, 0235, 0236, 0237, 0238, 0239, 0244, 0245, 0249, 0250, 0251, 0252]
    • PE 2624 B [0234, 0235, 0236, 0237, 0238, 0239, 0253, 0254]

Claims (24)

  1. Beansprucht wird:
  2. Prozessor umfassend: eine Leistungssteuereinheit; eine Master-Verarbeitungsengine; eine Gruppe von Slave-Verarbeitungsengines; und einen Spannungsregler, wobei die Master-Verarbeitungsengine als Reaktion auf einen Erhalt einer Änderungsnachricht von der Leistungssteuereinheit den Spannungsregler steuert, um einen Spannungspegel einzustellen, der der Master-Verarbeitungsengine und der Gruppe von Slave-Verarbeitungsengines bereitgestellt wird.
  3. Prozessor nach Anspruch 1, wobei die Master-Verarbeitungsengine: als Reaktion auf den Erhalt der Änderungsnachricht eine oder mehrere Slave-Verarbeitungsengines in der Gruppe von Slave-Verarbeitungsengines kennzeichnet, um mit abgeänderten Betriebsfrequenzen basierend auf der Änderungsnachricht zu arbeiten.
  4. Prozessor nach Anspruch 2, wobei die Master-Verarbeitungsengine: für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines eine Angabe einer jeweiligen abgeänderten Betriebsfrequenz bereitstellt.
  5. Prozessor nach Anspruch 3, wobei die Master-Verarbeitungsengine: für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines eine Bestätigung, dass die Slave-Verarbeitungsengine zu der jeweiligen abgeänderten Betriebsfrequenz übergegangen ist, erhält; und als Reaktion auf den Erhalt von Bestätigungen von allen der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines eine Änderungsabschlussnachricht der Leistungssteuereinheit bereitstellt.
  6. Prozessor nach Anspruch 1, wobei die Master-Verarbeitungsengine: als Reaktion auf eine Kennzeichnung einer ersten Slave-Verarbeitungsengine zum Arbeiten mit einer erhöhten Betriebsfrequenz: vor einem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, bewirkt, dass die erste Slave-Verarbeitungsengine mit der erhöhten Betriebsfrequenz arbeitet.
  7. Prozessor nach Anspruch 1, wobei die Master-Verarbeitungsengine: als Reaktion auf eine Kennzeichnung einer zweiten Slave-Verarbeitungsengine zum Arbeiten mit einer verringerten Betriebsfrequenz: nach dem Einstellen des Spannungspegels, der von dem Spannungsregler zum Einstellen eines Spannungspegels bereitgestellt wird, bewirkt, dass die zweite Slave-Verarbeitungsengine mit der verringerten Betriebsfrequenz arbeitet.
  8. Prozessor nach Anspruch 1, wobei die Master-Verarbeitungsengine, die Gruppe von Slave-Verarbeitungsengines und der Spannungsregler in einem ersten Steuerblock des Prozessors enthalten sind und wobei der Prozessor mehrere Steuerblöcke aufweist.
  9. Prozessor nach Anspruch 1, wobei jede der Gruppe von Slave-Verarbeitungsengines und der Master-Verarbeitungsengine eine Universal-Verarbeitungsengine ist, die einen einzigen Befehlssatz verwendet.
  10. Verfahren umfassend: Erhalten durch eine Master-Verarbeitungsengine eines Prozessors einer Änderungsnachricht von einer Leistungssteuereinheit, wobei der Prozessor die Master-Verarbeitungsengine, eine Gruppe von Slave-Verarbeitungsengines und einen Spannungsregler umfasst; als Reaktion auf einen Erhalt der Änderungsnachricht, Steuern durch die Master-Verarbeitungsengine des Spannungsreglers zum Ausgeben eines abgeänderten Spannungspegels; und Bereitstellen durch den Spannungsregler des abgeänderten Spannungspegels an die Master-Verarbeitungsengine und die Gruppe von Slave-Verarbeitungsengines.
  11. Verfahren nach Anspruch 9, ferner umfassend: als Reaktion auf den Erhalt der Änderungsnachricht, Kennzeichnen durch die Master-Verarbeitungsengine einer oder mehrerer Slave-Verarbeitungsengines in der Gruppe von Slave-Verarbeitungsengines zum Arbeiten mit abgeänderten Betriebsfrequenzen basierend auf der Änderungsnachricht; und Senden durch die Master-Verarbeitungsengine einer Angabe einer jeweiligen abgeänderten Betriebsfrequenz zu den gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines.
  12. Verfahren nach Anspruch 10, ferner umfassend: für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Erhalten einer Bestätigung, dass die Slave-Verarbeitungsengine zu der jeweiligen abgeänderten Betriebsfrequenz übergegangen ist; und als Reaktion auf den Erhalt von Bestätigungen von allen der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines, Senden einer Änderungsabschlussnachricht zu der Leistungssteuereinheit.
  13. Verfahren nach Anspruch 11, ferner umfassend: vor dem Senden der Änderungsabschlussnachricht zu der Leistungssteuereinheit, Umstellen der Master-Verarbeitungsengine auf eine abgeänderte Betriebsfrequenz basierend auf der Änderungsnachricht.
  14. Verfahren nach Anspruch 9, ferner umfassend: als Reaktion auf den Erhalt der Änderungsnachricht, Kennzeichnen einer ersten Slave-Verarbeitungsengine zum Arbeiten mit einer erhöhten Betriebsfrequenz; und vor einem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, Steuern der ersten Slave-Verarbeitungsengine zum Arbeiten mit der erhöhten Betriebsfrequenz.
  15. Verfahren nach Anspruch 9, ferner umfassend: als Reaktion auf den Erhalt der Änderungsnachricht, Kennzeichnen einer zweiten Slave-Verarbeitungsengine zum Arbeiten mit einer verringerten Betriebsfrequenz; und nach dem Einstellen des Spannungspegels, der von dem Spannungsregler zum Einstellen eines Spannungspegels bereitgestellt wird, Steuern der zweiten Slave-Verarbeitungsengine zum Arbeiten mit der verringerten Betriebsfrequenz.
  16. Computervorrichtung umfassend: einen oder mehrere Prozessoren; und einen Speicher, auf dem mehrere Befehle gespeichert sind, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, bewirken, dass die Computervorrichtung das Verfahren nach einem der Ansprüche 9 bis 14 durchführt.
  17. Mindestens ein maschinenlesbares Medium, auf dem Daten gespeichert sind, welche, wenn sie von mindestens einer Maschine verwendet werden, bewirken, dass die mindestens eine Maschine das Verfahren nach einem der Ansprüche 9 bis 14 durchführt.
  18. Elektronische Vorrichtung umfassend Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 9 bis 14.
  19. System umfassend: einen Prozessor umfassend: eine Leistungssteuereinheit; einen Spannungsregler; eine Gruppe von Slave-Verarbeitungsengines; und eine Master-Verarbeitungsengine, um als Reaktion auf einen Erhalt einer Änderungsnachricht von der Leistungssteuereinheit den Spannungsregler zu steuern, um einen Spannungspegel einzustellen, der der Master-Verarbeitungsengine und der Gruppe von Slave-Verarbeitungsengines bereitgestellt wird, und einen Systemspeicher, der mit dem Prozessor gekoppelt ist.
  20. System nach Anspruch 18, wobei die Master-Verarbeitungsengine: als Reaktion auf den Erhalt der Änderungsnachricht eine oder mehrere Slave-Verarbeitungsengines in der Gruppe von Slave-Verarbeitungsengines kennzeichnet, um mit abgeänderten Betriebsfrequenzen basierend auf der Änderungsnachricht zu arbeiten.
  21. System nach Anspruch 19, wobei die Master-Verarbeitungsengine: für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines eine Angabe einer jeweiligen abgeänderten Betriebsfrequenz bereitstellt; für jede der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines eine Bestätigung, dass die Slave-Verarbeitungsengine zu der jeweiligen abgeänderten Betriebsfrequenz übergegangen ist, erhält; und als Reaktion auf den Erhalt von Bestätigungen von allen der gekennzeichneten einen oder mehreren Slave-Verarbeitungsengines eine Änderungsabschlussnachricht der Leistungssteuereinheit bereitstellt.
  22. System nach Anspruch 18, wobei die Master-Verarbeitungsengine: als Reaktion auf eine Kennzeichnung einer ersten Slave-Verarbeitungsengine zum Arbeiten mit einer erhöhten Betriebsfrequenz: vor einem Einstellen des Spannungspegels, der von dem Spannungsregler bereitgestellt wird, bewirkt, dass die erste Slave-Verarbeitungsengine mit der erhöhten Betriebsfrequenz arbeitet.
  23. System nach Anspruch 18, wobei die Master-Verarbeitungsengine: als Reaktion auf eine Kennzeichnung einer zweiten Slave-Verarbeitungsengine zum Arbeiten mit einer verringerten Betriebsfrequenz: nach dem Einstellen des Spannungspegels, der von dem Spannungsregler zum Einstellen eines Spannungspegels bereitgestellt wird, bewirkt, dass die zweite Slave-Verarbeitungsengine mit der verringerten Betriebsfrequenz arbeitet.
  24. System nach Anspruch 18, wobei der Spannungsregler, die Gruppe von Slave-Verarbeitungsengines und die Master-Verarbeitungsengine in einem ersten Steuerblock des Prozessors enthalten sind, wobei der Prozessor ferner einen zweiten Steuerblock einschließlich einer zweiten Master-Verarbeitungsengine, einer zweiten Gruppe von Slave-Verarbeitungsengines und eines zweiten Spannungsreglers umfasst.
DE112018004329.0T 2017-09-29 2018-08-27 Steuerblöcke zur prozessorleistungsverwaltung Pending DE112018004329T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/720,801 US20190101969A1 (en) 2017-09-29 2017-09-29 Control Blocks for Processor Power Management
US15/720,801 2017-09-29
PCT/US2018/048102 WO2019067126A1 (en) 2017-09-29 2018-08-27 CONTROL BLOCKS FOR PROCESSOR FEED MANAGEMENT

Publications (1)

Publication Number Publication Date
DE112018004329T5 true DE112018004329T5 (de) 2020-05-14

Family

ID=65897420

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018004329.0T Pending DE112018004329T5 (de) 2017-09-29 2018-08-27 Steuerblöcke zur prozessorleistungsverwaltung

Country Status (3)

Country Link
US (1) US20190101969A1 (de)
DE (1) DE112018004329T5 (de)
WO (1) WO2019067126A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3367210A1 (de) * 2017-02-24 2018-08-29 Thomson Licensing Verfahren zum betätigen einer vorrichtung sowie entsprechende vorrichtung, system, computerlesbares programmprodukt und computerlesbares speichermedium
US11675599B2 (en) * 2020-08-04 2023-06-13 Dell Products L.P. Systems and methods for managing system rollup of accelerator health
KR20220124499A (ko) * 2021-03-03 2022-09-14 에스케이하이닉스 주식회사 레귤레이터
US11733767B2 (en) 2021-06-25 2023-08-22 Qualcomm Incorporated Power management for multiple-chiplet systems

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346791B2 (en) * 2003-03-26 2008-03-18 Matsushita Electric Industrial Co., Ltd. Method for controlling a clock frequency of an information processor in accordance with the detection of a start and a end of a specific processing section
US7793005B1 (en) * 2003-04-11 2010-09-07 Zilker Labs, Inc. Power management system using a multi-master multi-slave bus and multi-function point-of-load regulators
US8589704B2 (en) * 2005-06-16 2013-11-19 Active-Semi, Inc. System for a scalable and programmable power management integrated circuit
US7132822B1 (en) * 2006-02-28 2006-11-07 Watlow Electric Manufacturing Company Multi-processor restart stabilization system and method
JP4804215B2 (ja) * 2006-04-25 2011-11-02 キヤノン株式会社 画像形成装置及びその制御方法
JP4837780B2 (ja) * 2006-07-28 2011-12-14 アーム・リミテッド マスタおよびスレーブを有するデータ処理デバイスにおける電力管理
US8156353B2 (en) * 2007-09-17 2012-04-10 Intel Corporation Techniques for communications power management based on system states
US8296590B2 (en) * 2008-06-09 2012-10-23 International Business Machines Corporation Budget-based power consumption for application execution on a plurality of compute nodes
EP2360611B1 (de) * 2010-01-22 2014-09-10 ST-Ericsson SA Sichere Umgebungsverwaltung beim Schalten zwischen verschiedenen Betriebsmodi in Mehrkernsystemen
WO2011161782A1 (ja) * 2010-06-23 2011-12-29 富士通株式会社 マルチコアシステムおよび外部入出力バス制御方法
US8943334B2 (en) * 2010-09-23 2015-01-27 Intel Corporation Providing per core voltage and frequency control
KR101740338B1 (ko) * 2010-10-20 2017-05-26 삼성전자주식회사 디지털 시스템에서 동적 클럭 제어 장치 및 방법
CN102566739B (zh) * 2012-01-06 2014-11-26 威盛电子股份有限公司 多核处理器系统及其动态电源管理方法与控制装置
US9158359B2 (en) * 2012-03-23 2015-10-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Adaptive voltage scaling using a serial interface
WO2013165357A1 (en) * 2012-04-30 2013-11-07 Intel Corporation Master slave qpi protocol for coordinated idle power management in glueless and clustered systems
GB201211340D0 (en) * 2012-06-26 2012-08-08 Nordic Semiconductor Asa Control of semiconductor devices
US9405351B2 (en) * 2012-12-17 2016-08-02 Intel Corporation Performing frequency coordination in a multiprocessor system
EP2775395B1 (de) * 2013-03-07 2020-11-25 Nxp B.V. Integrierte Schaltung, elektronische Vorrichtung und Anweisungsplanungsverfahren
US9367114B2 (en) * 2013-03-11 2016-06-14 Intel Corporation Controlling operating voltage of a processor
US9806620B2 (en) * 2015-03-12 2017-10-31 Avago Technologies General Ip (Singapore) Pte. Ltd. Multi-phase hysteretic buck switching regulator

Also Published As

Publication number Publication date
WO2019067126A1 (en) 2019-04-04
US20190101969A1 (en) 2019-04-04

Similar Documents

Publication Publication Date Title
DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
DE112020000231T5 (de) Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112013005287B4 (de) Prozessor mit heterogenen physischen Kernen und in einem Prozessor mit heterogenen physischen Kernen implementiertes Verfahren
DE112018004329T5 (de) Steuerblöcke zur prozessorleistungsverwaltung
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE112016004776T5 (de) Datenkomprimierung unter Verwendung eines Beschleunigers mit mehreren Suchmaschinen
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE112013007701T5 (de) Ein-Chip-System (SOC), das Hybridprozessorkerne enthält
DE112019000693T5 (de) System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE112011105666T5 (de) Befehl und Logik zum Bereitstellen von Vektor-Lade-OP/Speicher-OP mit Schritt-Funktionalität
DE112019002389T5 (de) Architektur zur dynamischen umwandlung einer speicherkonfiguration
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE112013005418T5 (de) Vorrichtung und Verfahren zur schnellen Befehlsfehlerbehandlung
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE112017003080T5 (de) Prozessor mit gleichzeitigem kern und gewebeausgang aus einem zustand mit geringer energie
DE112016004342T5 (de) Hardware-Beschleuniger mit doppelt affiner abgebildeter S-Box
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE112019001001T5 (de) System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen
DE102018129330A1 (de) System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors
DE102020130910A1 (de) System, vorrichtung und verfahren für dynamische energiezustandsskalierung eines spannungsreglers für einen prozessor
DE102018005976A1 (de) Systeme, vorrichtungen und verfahren zur multiplikation und akkumulation von vektorgepackten vorzeichenbehafteten werten