DE102018131595A1 - Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen - Google Patents

Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen Download PDF

Info

Publication number
DE102018131595A1
DE102018131595A1 DE102018131595.3A DE102018131595A DE102018131595A1 DE 102018131595 A1 DE102018131595 A1 DE 102018131595A1 DE 102018131595 A DE102018131595 A DE 102018131595A DE 102018131595 A1 DE102018131595 A1 DE 102018131595A1
Authority
DE
Germany
Prior art keywords
user
processor
interrupt
notification
vector
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
DE102018131595.3A
Other languages
English (en)
Inventor
Jacob Jun Pan
Ashok Raj
Srinivas Pandruvada
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 DE102018131595A1 publication Critical patent/DE102018131595A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/24Interrupt
    • G06F2213/2416Determination of the interrupt source among a plurality of incoming interrupts
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

In einer Ausführungsform umfasst ein Prozessor zur Leistungszustandseinstellung mehrere Verarbeitungsengines (PEs), eine Stromsteuereinheit und eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU). Die IOMMU dient zum Bestimmen einer Ziel-PE für eine Benutzerunterbrechung basierend auf Abbildungsdaten der IOMMU und zum Senden einer Benachrichtigung über die Benutzerunterbrechung an die Stromsteuereinheit. Die Benachrichtigung zeigt die Ziel-PE für die Benutzerunterbrechung an. Die Stromsteuereinheit dient zum Einstellen eines Leistungszustands der Ziel-PE als Reaktion auf die Benachrichtigung über die Benutzerunterbrechung. Andere Ausführungsformen werden beschrieben und beansprucht.

Description

  • Gebiet der Erfindung
  • Ausführungsformen beziehen sich im Allgemeinen auf Computerprozessoren. Insbesondere beziehen sich Ausführungsformen auf das Verwalten von Leistungszuständen von Computerprozessoren.
  • Stand der Technik
  • Fortschritte bei Halbleiterverarbeitung und Logikausgestaltung haben eine Erhöhung in der Menge von Logik ermöglicht, die auf integrierten Schaltungsvorrichtungen vorhanden sein kann. Als ein Ergebnis haben sich Computersystemauslegungen aus einer einzelnen oder mehreren integrierten Schaltungen hin zu mehreren Hardwaresträngen, Mehrfachkernen, Mehrfachvorrichtungen und/oder kompletten Systemen auf einzelnen integrierten Schaltungen entwickelt. Ferner sind, da die Dichte integrierter Schaltungen zugenommen hat, auch die Stromanforderungen für Datenverarbeitungssysteme gewachsen. Als ein Ergebnis gibt es ein vitales Bedürfnis nach Energieeffizienz und -einsparung im Zusammenhang 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 Mehrdomänen-Prozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
    • 4 ist eine Ausführungsform eines mehrere Kerne umfassenden Prozessors.
    • 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkems gemäß einer weiteren Ausführungsform.
    • 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkems gemäß noch einer weiteren Ausführungsform.
    • 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkems gemäß noch einer weiteren Ausführungsform.
    • 9 ist ein Blockdiagramm eines Prozessors gemäß einer weiteren 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 weiteren beispielhaften SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 13 ist ein Blockdiagramm eines weiteren beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 14 ist ein Blockdiagramm eines repräsentativen Computersystems.
    • 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 16 ist ein Blockdiagramm, das ein IP-Kern-Entwicklungssystem gemäß einer Ausführungsform darstellt, das zur Herstellung einer integrierten Schaltung zur Durchführung von Operationen verwendet werden kann.
    • 17A-17B sind Blockdiagramme, ein generisches vektorfreundliches Befehlsformat und Befehlsvorlagen davon darstellend, gemäß Ausführungsformen der Erfindung;
    • 18A-D sind Blockdiagramme, die ein beispielhaftes spezifisches vektorfreundliches Befehlsformat gemäß Ausführungsformen der Erfindung darstellen;
    • 19 ist ein Blockdiagramm einer Registerarchitektur, gemäß einer Ausführungsform der Erfindung;
    • 20A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue (In-order) Pipeline als auch eine beispielhafte reihenfolgeveränderte (Out-of-order) Ausgabe-/Ausführungspipeline mit Registerumbenennung gemäß Ausführungsformen der Erfindung darstellt.
    • 20B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel für einen reihenfolgetreuen Architekturkern als auch einen beispielhaften reihenfolgeveränderten Registerumbenennungs-Ausgabe/Ausführungs-Architekturkern, der in einem Prozessor aufzunehmen ist, gemäß Ausführungsformen der Erfindung darstellt;
    • 21A-B stellen ein Blockdiagramm einer spezifischeren beispielhaften reihenfolgetreuen (In-order) Kernarchitektur dar, deren Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne vom gleichen Typ und/oder anderen Typen) in einem Chip wäre;
    • 22 ist ein Blockdiagramm eines Prozessors, der mehr als einen Kern haben kann, der eine integrierte Speichersteuerung haben kann und der integrierte Grafik haben kann, gemäß Ausführungsformen der Erfindung;
    • 23-24 sind Blockdiagramme beispielhafter Computerarchitekturen; und
    • 25 ist ein Blockdiagramm, die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz abgesetzt darstellend, gemäß Ausführungsformen der Erfindung.
    • 26 ist ein Diagramm eines beispielhaften Systems gemäß einer oder mehrerer Ausführungsformen.
    • 27A-27B sind Diagramme von beispielhaften Unterbrechungsoperationen gemäß einer oder mehrerer Ausführungsformen.
    • 28 ist eine Darstellung eines beispielhaften Unterbrechungssystems gemäß einer oder mehrerer Ausführungsformen.
    • 29 ist eine Darstellung eines beispielhaften Verfahrens gemäß einer oder mehrerer Ausführungsformen.
    • 30 ist ein Flussdiagramm eines beispielhaften Verfahrens zur Systemauslegung gemäß einer oder mehrerer Ausführungsformen.
    • 31 ist eine Tabelle von Feldern in einer beispielhaften Datenstruktur gemäß einer oder mehrerer Ausführungsformen.
  • Ausführliche Beschreibung
  • In der Computertechnologie ist eine Geräteunterbrechung ein an einen Prozessor (z. B. eine Zentraleinheit) gesendetes Signal, das ein Geräteereignis anzeigt, das eine Behandlung durch den Prozessor erfordert. Beispielsweise kann eine Eingabevorrichtung (z. B. eine Tastatur) eine Unterbrechung senden, um anzuzeigen, dass der Prozessor eine durch einen Benutzer gedrückte Taste lesen soll. In einem weiteren Beispiel kann eine Netzwerkschnittstellenvorrichtung eine Unterbrechung senden, um anzuzeigen, dass der Prozessor ein über ein Netzwerk empfangenes Paket lesen soll.
  • In einigen Computersystemen kann eine Unterbrechung durch zwei Handler behandelt werden, namentlich einen ersten Handler im Kernelraum und einen zweiten Handler im Benutzerraum. Der erste und der zweite Handler können auf zwei unterschiedlichen Verarbeitungsengines oder -kernen ausgeführt werden. Die Unterbrechung kann anfänglich durch den ersten Handler auf einer ersten Verarbeitungsengine behandelt werden und kann nachfolgend für einen zweiten Handler für eine zweite Verarbeitungsengine geplant werden. In einigen Fällen kann es wünschenswert sein, einen Leistungszustand der ersten und/oder zweiten Verarbeitungsengine zu erhöhen, um die Behandlung der Unterbrechung zu verbessern. Da allerdings die zweite Verarbeitungsengine nicht bekannt ist, bis nachdem der erste Handler seine Verarbeitung abgeschlossen hat und die Unterbrechung geplant ist, kann es nicht möglich sein, die Leistung der zweiten Verarbeitungsengine rechtzeitig einzustellen. Daher kann die Verarbeitungsverbesserung, die mit solchen Leistungszustandseinstellungen verbunden ist, begrenzt sein.
  • In Übereinstimmung mit einigen Ausführungsformen kann ein Prozessor eine Speicherverwaltungseinheit umfassen, um Unterbrechungen direkt zu einem angegebenen Ziel zu leiten. Das angegebene Ziel kann ein Benutzerraumhandler sein, der auf einer bestimmten Verarbeitungsengine ausgeführt wird. Die Speicherverwaltungseinheit kann eine Benachrichtigung der Unterbrechung und des Ziels an eine Stromverwaltungseinheit senden. Die Stromverwaltungseinheit kann die Benachrichtigung verwenden, um einen Leistungszustand des Ziels zur Behandlung der Unterbrechung einzustellen. Dementsprechend können einige Ausführungsformen verbesserte Leistung der Unterbrechungsbehandlung bereitstellen. Verschiedene Details einiger Ausführungsformen werden weiter unten Bezug nehmend auf 26-31 beschrieben. Ferner werden nachfolgend beispielhafte Systeme und Architekturen Bezug nehmend auf 1-25 beschrieben.
  • Beispielhafte Systeme und Architekturen
  • Obwohl die folgenden Ausführungsformen Bezug nehmend auf bestimmte Umsetzungen beschrieben werden, sind Ausführungsformen in dieser Hinsicht nicht beschränkt. Insbesondere wird in Betracht gezogen, dass ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen auf andere Typen von Schaltungen, Halbleitervorrichtungen, Prozessoren, Systemen usw. angewendet werden können. Beispielsweise können die offenbarten Ausführungsformen in einem beliebigen Typ von Computersystem umgesetzt sein, einschließlich Servercomputer (z. B. Turm, Rack, Blade, Mikroserver und so weiter), Kommunikationssysteme, Speichersysteme, Desktopcomputer beliebiger Auslegung, Laptop, Notebook und Tablet-Computer (einschließlich 2:1-Tablets, Phablets und so weiter).
  • Zusätzlich können offenbarte Ausführungsformen auch in anderen Vorrichtungen verwendet werden, wie etwa in handgehaltenen Vorrichtungen, Systems-on-Chip (SoCs) und eingebetteten Anwendungen. Einige Beispiele von handgehaltenen Vorrichtungen umfassen Mobiltelefone, wie etwa Smartphones, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDA, Personal Digital Assistants) und handgehaltene PCs. Eingebettete Anwendungen können typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerkknoten, Weitbereichsnetzwerk-Weichen (WAN), tragbare Vorrichtungen oder jedes andere System umfassen, das die nachfolgend gelehrten Funktionen und Operationen durchführen kann. Ferner können Ausführungsformen in mobilen Endgeräten mit Standardsprachfunktionen, wie etwa Mobiltelefonen, Smartphones und Phablets und/oder in nicht-mobilen Endgeräten ohne eine drahtlose Standardkommunikationsfähigkeit mit Sprachfunktion, wie viele Wearables, Tablets, Notebooks, Desktops, Mikroserver, Server und so weiter umgesetzt sein.
  • Jetzt Bezug nehmend auf 1 ist ein Blockdiagramm eines Teils eines Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt, kann System 100 verschiedene Komponenten umfassen, einschließlich eines Prozessors 110, der, wie gezeigt, ein Mehrkernprozessor ist. Prozessor 110 kann über einen externen Spannungsregler 160, der eine erste Spannungsumwandlung zum Bereitstellen einer primären geregelten Spannung Vreg für Prozessor 110 durchführen kann, mit einer Stromversorgung 150 gekoppelt sein.
  • Wie gesehen, kann Prozessor 110 ein Einzel-Die-Prozessor, umfassend mehrere Kerne 120a - 120n, sein. Zusätzlich kann jeder Kern mit einem integrierten Spannungsregler (IVR) 125a - 125n verbunden sein, der die primäre geregelte Spannung empfängt und eine Betriebsspannung erzeugt, die einem oder mehreren Agenten des Prozessors in Verbindung mit dem IVR bereitgestellt werden soll. Entsprechend kann eine IVR-Umsetzung bereitgestellt werden, um eine feinkörnige Steuerung von Spannung und damit Strom und Leistung jedes einzelnen Kerns zu ermöglichen. Daher kann jeder Kern bei einer unabhängigen Spannung und Frequenz betrieben werden, was eine große Flexibilität ermöglicht und breite Möglichkeiten zum Abgleichen von Stromverbrauch und Leistung bietet. In einigen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs das Gruppieren von Komponenten in separate Stromebenen, so dass Strom durch den IVR geregelt und nur an jene Komponenten in der Gruppe geliefert wird. Während der Stromverwaltung kann eine gegebene Stromebene von einem IVR heruntergefahren oder aus sein, wenn der Prozessor in einen gewissen Niederstromzustand versetzt wird, während eine andere Stromebene eines anderen IVR aktiv oder unter Vollleistung verbleibt. In ähnlicher Weise können Kerne 120 unabhängige Takterzeugungsschaltungsanordnungen, wie etwa eine oder mehrere Phasenregelschleifen (PLL, Phase Lock Loops) zum unabhängigen Steuern der Betriebsfrequenz jedes Kerns 120 umfassen oder damit verknüpft sein.
  • Weiterhin Bezug nehmend auf 1 können zusätzliche Komponenten innerhalb des Prozessors vorhanden sein, einschließlich einer Eingabe/Ausgabe-Schnittstelle (S/S) 132, einer weiteren Schnittstelle 134 und einer integrierten Speichersteuerung (IMC, Integrated Memory Controller) 136. Wie gesehen, kann jede dieser Komponenten durch einen anderen integrierten Spannungsregler 125x betrieben werden. In einer Ausführungsform kann Schnittstelle 132 Betrieb für eine QPI-Verschaltung (Intel® Quick Path Interconnect) ermöglichen, die Punkt-zu-Punkt-Verknüpfungen (PtP) in einem Cache-kohärenten Protokoll bereitstellt, das mehrere Schichten umfasst, einschließlich einer physischen Schicht, einer Verbindungsschicht und einer Protokollschicht. Schnittstelle 134 kann ihrerseits über ein PCIe™-Protokoll (Peripheral Component Interconnect Express) kommunizieren.
  • Außerdem gezeigt ist eine Stromsteuereinheit (PCU, Power Control Unit) 138, die Schaltungsanordnungen umfassen kann, einschließlich Hardware, Software und/oder Firmware zum Durchführen von Stromverwaltungsoperationen im Hinblick auf den Prozessor 110. Wie gesehen, stellt PCU 138 über eine digitale Schnittstelle 162 Steuerinformationen für den externen Spannungsregler 160 bereit, um den Spannungsregler zu veranlassen, die entsprechende geregelte Spannung zu erzeugen. PCU 138 stellt über eine weitere digitale Schnittstelle 163 auch Steuerinformationen für IVRs 125 bereit, um die erzeugte Betriebsspannung zu steuern (oder einen entsprechenden IVR zu veranlassen, in einem Niederstrommodus deaktiviert zu werden). In verschiedenen Ausführungsformen kann die PCU 138 eine Vielfalt von Stromverwaltungslogikeinheiten zum Durchführen hardwarebasierter Stromverwaltung umfassen. Eine solche Stromverwaltung kann gänzlich prozessorgesteuert sein (z. B. durch verschiedene Prozessorhardware, und die durch Arbeitslast und/oder strombezogene, thermische oder andere Prozessorbeschränkungen ausgelöst werden können), und/oder die Stromverwaltung kann als Reaktion auf externe Quellen (wie etwa eine Plattform oder eine Stromverwaltungsquelle oder Systemsoftware) durchgeführt werden.
  • In 1 ist die PCU 138 als eine separate Logik des Prozessors vorhanden gezeigt. In anderen Fällen kann die PCU 138 auf einem gegebenen oder mehreren Kernen 120 ausführen. In einigen Fällen kann die PCU 138 als ein Mikrocontroller (speziell oder universell) oder eine andere Steuerlogik umgesetzt sein, dazu ausgelegt, ihren eigenen speziellen Stromverwaltungscode, manchmal als P-Code bezeichnet, auszuführen. In noch anderen Ausführungsformen können die Stromverwaltungsoperationen, die durch die PCU 138 durchzuführen sind, extern zu einem Prozessor umgesetzt sein, beispielsweise mittels einer separaten integrierten Stromverwaltungsschaltung (PMIC, Power Management Integrated Circuit) oder einer anderen Komponente extern zum Prozessor. In noch anderen Ausführungsformen können die Stromverwaltungsoperationen, die durch die PCU 138 durchzuführen sind, innerhalb des BIOS oder einer anderen Systemsoftware umgesetzt sein.
  • Obwohl in 1 nicht gezeigt, können, in einigen Ausführungsformen, der Prozessor 110 und/oder ein Kern 120 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Ausführungsformen können insbesondere für einen Mehrkernprozessor geeignet sein, bei dem jeder der mehreren Kerne bei einem unabhängigen Spannungs- und Frequenzpunkt betrieben werden kann. Wie hier verwendet, wird der Begriff „Domäne“ verwendet, um eine Sammlung von Hardware und/oder Logik zu bezeichnen, die bei dem gleichen Spannungs- und Frequenzpunkt betrieben werden. Zusätzlich kann ein Mehrkernprozessor ferner andere Nicht-Kern-Verarbeitungsengines umfassen, wie etwa feste Funktionseinheiten, Grafikengines und so weiter. Ein solcher Prozessor kann unabhängige, von den Kernen verschiedene Domänen, wie etwa eine oder mehrere Domänen in Verbindung mit einer Grafikengine (hier als Grafikdomäne bezeichnet), und eine oder mehrere Domänen in Verbindung mit Nicht-Kern-Schaltungsanordnungen, hier als Systemagent bezeichnet, umfassen. Obwohl viele Umsetzungen eines Mehrdomänen-Prozessors auf einem einzelnen Halbleiter-Die ausgebildet sein können, können andere Umsetzungen durch ein Mehrfachchipgehäuse realisiert sein, bei dem unterschiedliche Domänen auf unterschiedlichen Halbleiter-Dies eines einzelnen Gehäuses vorhanden sein können.
  • Obwohl aus Gründen der Einfachheit der Darstellung nicht gezeigt, versteht es sich, dass zusätzliche Komponenten in Prozessor 110 vorhanden sein können, wie etwa Nicht-Kern-Logik, und andere Komponenten, wie etwa interne Speicher, z. B. eine oder mehrere Ebenen einer Cachespeicherhierarchie und so weiter. Ferner sind, obwohl in der Umsetzung von 1 mit einem integrierten Spannungsregler gezeigt, Ausführungsformen nicht so beschränkt. Beispielsweise können andere geregelte Spannungen für Ressourcen auf dem Chip vom externen Spannungsregler 160 oder einer oder mehreren zusätzlichen externen Quellen von geregelten Spannungen bereitgestellt werden.
  • Es ist anzumerken, dass die hier beschriebenen Stromverwaltungstechniken unabhängig von und komplementär zu einem auf dem Betriebssystem (BS) basierenden Stromverwaltungsmechanismus (OSPM) sein können. Gemäß einer beispielhaften OSPM-Technik kann ein Prozessor bei verschiedenen Leistungszuständen oder -ebenen, so genannten P-Zuständen, namentlich von P0 bis PN arbeiten. Im Allgemeinen kann der PI-Leistungszustand dem höchsten garantierten Leistungszustand entsprechen, der von einem BS angefordert werden kann. Zusätzlich zu diesem P1-Zustand kann das BS ferner einen höheren Leistungszustand, namentlich einen P0-Zustand anfordern. Dieser P0-Zustand kann daher ein opportunistischer, übertaktender oder Turbomodus-Zustand sein, in dem, wenn Strom- und/oder thermisches Budget verfügbar ist, die Prozessorhardware den Prozessor oder zumindest Teile davon auslegen kann, bei einer höheren als der garantierten Frequenz zu arbeiten. In vielen Umsetzungen kann ein Prozessor mehrere so genannte Bin-Frequenzen über der garantierten maximalen P1-Frequenz umfassen, die eine maximale Spitzenfrequenz des bestimmten Prozessors überschreiten, wie in den Prozessor während der Fertigung eingebrannt oder anderweitig darauf geschrieben. Zusätzlich kann, gemäß einem OSPM-Mechanismus, ein Prozessor bei verschiedenen Leistungszuständen oder -ebenen arbeiten. Hinsichtlich der Leistungszustände kann ein OSPM-Mechanismus unterschiedliche Stromverbrauchzustände angeben, im Allgemeinen als C-Zustände (C0-, C1- bis Cn-Zustand) bezeichnet. Wenn ein Kern aktiv ist, läuft er in einem C0-Zustand, und wenn der Kern im Leerlauf ist, kann er in einen Kern-Niederstromzustand versetzt werden, auch als ein Nicht-Null-C-Zustand des Kerns (z.B. Zustände C1-C6) bezeichnet, wobei jeder C-Zustand auf einem niedrigeren Stromverbrauchsniveau liegt (sodass C6 ein tieferer Niederstromzustand als C1 ist und so weiter).
  • Es versteht sich, dass in unterschiedlichen Ausführungsformen viele unterschiedliche Typen von Stromverwaltungstechniken individuell oder in Kombination verwendet werden können. Als repräsentatives Beispiel kann eine Stromsteuerung den Prozessor so steuern, dass er durch irgendeine Art von dynamischer Spannungs-Frequenz-Skalierung (DVFS, Dynamic Voltage Frequency Scaling) stromverwaltet wird, wobei eine Betriebsspannung und/oder Betriebsfrequenz von einem oder mehreren Kernen oder eine andere Prozessorlogik dynamisch gesteuert werden kann, um in bestimmten Situationen den Stromverbrauch zu verringern. In einem Beispiel kann DVFS unter Verwendung der Enhanced Intel SpeedStep™ Technologie durchgeführt werden, die von der Intel Corporation aus Santa Clara, CA, zur Verfügung gestellt wird, um optimale Leistung beim niedrigstmöglichen Stromverbrauchsniveau bereitzustellen. In einem anderen Beispiel kann DVFS unter Verwendung der Intel TurboBoost™ Technologie durchgeführt werden, um einem oder mehreren Kernen oder anderen Rechenengines zu ermöglichen, basierend auf den Bedingungen bei einer höheren als der garantierten Betriebsfrequenz zu arbeiten (z. B. Arbeitslast und Verfügbarkeit).
  • Eine weitere Stromverwaltungstechnik, die in bestimmten Beispielen verwendet werden kann, ist dynamisches Tauschen von Arbeitslasten zwischen unterschiedlichen Rechenengines. Beispielsweise kann der Prozessor asymmetrische Kerne oder andere Verarbeitungsengines umfassen, die bei unterschiedlichen Stromverbrauchsniveaus arbeiten, sodass in einer strombeschränkten Situation eine oder mehrere Arbeitslasten dynamisch umgeschaltet werden, um auf einem Kern mit niedrigerer Stromaufnahme oder einer anderen Rechenengine ausgeführt zu werden. Eine weitere beispielhafte Stromverwaltungstechnik ist Hardware-Tastverhältnissteuerung (HDC, Hardware Duty Cycling), was bewirken kann, dass Kerne und/oder andere Rechenengines periodisch entsprechend einem Tastverhältnis aktiviert und deaktiviert werden, sodass einer oder mehrere Kerne während einer inaktiven Periode des Tastverhältnisses inaktiv gemacht werden und während einer aktiven Periode des Tastverhältnisses aktiv gemacht werden können.
  • Stromverwaltungstechniken können auch verwendet werden, wenn in einer Betriebsumgebung Beschränkungen vorhanden sind. Wenn beispielsweise eine strombezogene und/oder thermische Beschränkung vorliegt, kann der Strom verringert werden durch Verringern der Betriebsfrequenz und/oder -spannung. Andere Stromverwaltungstechniken umfassen Drosselungsbefehl-Ausführungsrate oder Begrenzen der Planung von Befehlen. Ferner ist es möglich, dass Befehle einer gegebenen Befehlssatzarchitektur ausdrückliche oder implizite Anweisungen hinsichtlich der Stromverwaltungsoperation umfassen. Obwohl anhand dieser bestimmten Beispiele beschrieben, versteht es sich, dass viele andere Stromverwaltungstechniken in bestimmten Ausführungsformen verwendet werden können.
  • Ausführungsformen können in Prozessoren für verschiedene Märkte umgesetzt werden, einschließlich Serverprozessoren, Desktop-Prozessoren, mobile Prozessoren und so weiter. Jetzt Bezug nehmend auf 2 ist ein Blockdiagramm eines Prozessors in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt, kann Prozessor 200 ein Mehrkernprozessor sein, umfassend mehrere Kerne 210a -210n . In einer Ausführungsform kann jeder solche Kern aus einer unabhängigen Stromdomäne sein und kann dazu ausgelegt sein, basierend auf der Arbeitslast in aktive Zustände und/oder maximale Leistungszustände einzutreten oder diese zu verlassen. Ein oder mehrere Kerne 210 können heterogen zu anderen Kernen sein, z. B. unterschiedliche Mikroarchitekturen, Befehlssatzarchitekturen, Pipeline-Tiefen, Strom- und Leistungsfähigkeiten aufweisend. Die verschiedenen Kerne können über eine Verschaltung 215 mit einem Systemagenten 220 gekoppelt sein, der verschiedene Komponenten umfasst. Wie gesehen, kann der Systemagent 220 einen gemeinsam genutzten Cache 230 umfassen, der ein Last-Level-Cache sein kann. Zusätzlich kann der Systemagent eine integrierte Speichersteuerung 240 zum Kommunizieren mit einem Systemspeicher (in 2 nicht gezeigt), z. B. über einen Speicherbus, umfassen. Der Systemagent 220 umfasst auch verschiedene Schnittstellen 250 und eine Stromsteuereinheit 255, die Logik zum Durchführen der hier beschriebenen Stromverwaltungstechniken umfassen kann.
  • Zusätzlich kann, über Schnittstellen 250a-250n, eine Verbindung zu verschiedenen chipexternen Komponenten, wie etwa peripheren Vorrichtungen, Massenspeichern und so weiter, hergestellt werden. Obgleich in der Ausführungsform von 2 mit dieser bestimmten Umsetzung gezeigt, ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Obwohl in 2 nicht gezeigt, kann, in einigen Ausführungsformen, der Prozessor 200 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Jetzt Bezug nehmend auf 3 ist ein Blockdiagramm eines Mehrdomänen-Prozessors in Übereinstimmung mit einer weiteren 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 umfassen, eine Grafikdomäne 320 kann eine oder mehrere Grafikengines umfassen, und eine Systemagentendomäne 350 kann ferner vorhanden sein. In einigen Ausführungsformen kann die Systemagentendomäne 350 bei einer von der Kerndomäne unabhängigen Frequenz ausführen und kann jederzeit eingeschaltet bleiben, um Stromsteuerereignisse und Stromverwaltung zu behandeln, sodass Domänen 310 und 320 gesteuert werden können, um dynamisch in Hochstrom- und Niederstromzustände einzutreten oder diese zu verlassen. Jede der Domänen 310 und 320 kann bei unterschiedlicher Spannung und/oder Strom arbeiten. Es ist anzumerken, dass, wenngleich nur mit drei Domänen gezeigt, der Umfang der vorliegenden Erfindung nicht diesbezüglich beschränkt ist und zusätzliche Domänen in anderen Ausführungsformen vorhanden sein können. Beispielsweise können Mehrkemdomänen vorhanden sein, von denen jede zumindest einen Kern umfasst.
  • Im Allgemeinen kann jeder der Kerne 310a-310n ferner Low-Level-Caches zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen umfassen. Die verschiedenen Kerne können ihrerseits miteinander und mit einem gemeinsam genutzten Cache, der aus mehreren Einheiten eines Last-Level-Cache (LLC) 340a -340n gebildet ist, gekoppelt sein. In verschiedenen Ausführungsformen kann LLC 340 von den Kernen und der Grafikengine, sowie von verschiedenen Medienverarbeitungsschaltungsanordnungen gemeinsam genutzt werden. Wie gesehen, koppelt eine Ringverschaltung 330 so die Kerne zusammen und bietet eine Verschaltung zwischen den Kernen, der Grafikdomäne 320 und der Systemagentendomäne 350. In einer Ausführungsform kann Verschaltung 330 Teil der Kerndomäne sein. Allerdings kann die Ringverschaltung in anderen Ausführungsformen eine eigene Domäne sein.
  • Wie ferner zu sehen ist, kann die Systemagentendomäne 350 eine Anzeigesteuerung 352 umfassen, die eine Steuerung von und eine Schnittstelle zu einer zugehörigen Anzeige bereitstellen kann. Wie ferner zu sehen ist, kann die Systemagentendomäne 350 eine Stromsteuereinheit 355 umfassen, die Logik zum Durchführen der hier beschriebenen Stromverwaltungstechniken umfassen kann.
  • Wie ferner in 3 zu sehen ist, kann Prozessor 300 ferner eine integrierte Speichersteuerung (IMC) 370 umfassen, die eine Schnittstelle zu einem Systemspeicher, wie etwa einem 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 anderen Schaltungsanordnungen zu ermöglichen. Zum Beispiel sind in einer Ausführungsform zumindest eine DMI-Schnittstelle (Direct Media Interface) sowie eine oder mehrere PCIe ™-Schnittstellen bereitgestellt. Noch ferner können zum Bereitstellen von Kommunikationen zwischen anderen Agenten, wie etwa zusätzlichen Prozessoren oder anderen Schaltungsanordnungen, auch eine oder mehrere QPI-Schnittstellen bereitgestellt werden. Obwohl in der Ausführungsform aus 3 auf dieser hohen Ebene gezeigt, versteht es sich, dass der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Obwohl in 3 nicht gezeigt, kann, in einigen Ausführungsformen, der Prozessor 300 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Bezug nehmend auf 4 ist eine Ausführungsform eines mehrere Kerne umfassenden Prozessors dargestellt. Prozessor 400 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzwerkprozessor, einen Handheld-Prozessor, einen Anwendungsprozessor, einen Koprozessor, ein System-on-a-Chip (SOC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 400 umfasst in einer Ausführungsform mindestens zwei Kerne, nämlich Kerne 401 und 402, die asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) umfassen können. Allerdings kann Prozessor 400 jede Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Softwarethreads. Beispiele von Hardwareverarbeitungselementen umfassen: eine Threadeinheit, einen Threadschlitz, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardwarethread, einen Kern und/oder jedes andere Element, das in der Lage ist, einen Zustand für einen Prozessor, wie etwa einen Ausführungszustand oder einen architektonischen Zustand, zu halten. Mit anderen Worten, ein Verarbeitungselement, in einer Ausführungsform, bezieht sich auf jede Hardware, die in der Lage ist, unabhängig mit Code, wie etwa einem Softwarethread, Betriebssystem, einer Anwendung oder einem anderen Code assoziiert zu werden. Ein physischer Prozessor bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell jede Anzahl von anderen Verarbeitungselementen, wie etwa Kerne oder Hardwarethreads umfasst.
  • Ein Kern bezieht sich häufig auf Logik, die sich auf einer integrierten Schaltung befindet und in der Lage ist, einen unabhängigen architektonischen Zustand zu halten, wobei jeder unabhängig gehaltene architektonische Zustand mit zumindest einigen speziellen Ausführungsressourcen verbunden ist. Im Gegensatz zu Kernen bezieht sich ein Hardwarethread üblicherweise auf jegliche Logik, die auf einer integrierten Schaltung angeordnet ist, die dazu in der Lage ist, einen unabhängigen architektonischen Zustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen architektonischen Zustände den Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere speziell für einen architektonischen Zustand gedacht sind, überschneidet sich die begriffliche Linie zwischen einem Hardwarethread und einem Kern. Dennoch werden ein Kern und ein Hardwarethread durch ein Betriebssystem häufig als individuelle logische Prozessoren betrachtet, wobei das Betriebssystem in der Lage ist, Operationen auf jedem logischen Prozessor individuell zu planen.
  • Der physische Prozessor 400, wie in 4 dargestellt, umfasst zwei Kerne, nämlich Kerne 401 und 402. Hier werden Kerne 401 und 402 als symmetrische Kerne, das heißt Kerne mit denselben Auslegungen und Funktionseinheiten und/oder derselben Logik, betrachtet. In einer anderen Ausführungsform umfasst der Kern 401 einen reihenfolgeveränderten (Out-of-order) Prozessorkem, während der Kern 402 einen reihenfolgetreuen (In-order) Prozessorkern umfasst. Allerdings können Kerne 401 und 402 einzeln aus jedem Typ von Kern gewählt werden, wie etwa einem systemeigenen Kern, einem softwareverwalteten Kern, einem Kern, der zum Ausführen einer systemeigenen Befehlssatzarchitektur (ISA, Instruction Set Architecture) angepasst ist, einem Kern, der zum Ausführen einer übersetzten ISA angepasst ist, einem partizipatorisch entwickelten Kern oder einem anderen bekannten Kern. Zur weiteren Erörterung sind jedoch die Funktionseinheiten, die in dem Kern 401 dargestellt sind, unten ausführlicher beschrieben, da die Einheiten in dem Kern 402 auf eine ähnliche Art arbeiten.
  • Wie dargestellt, umfasst Kern 401 zwei Hardwarethreads 401a und 401b, die auch als Hardwarethreadschlitze 401a und 401b bezeichnet werden können. Software-Entitäten, wie ein Betriebssystem, sehen folglich den Prozessor 400 in einer Ausführungsform potenziell als vier separate Prozessoren, das heißt vier logische Prozessoren oder Verarbeitungselemente, die fähig sind, vier Softwarethreads gleichzeitig auszuführen. Wie oben erwähnt, ist ein erster Thread Architekturzustandsregistem 401a zugeordnet, ist ein zweiter Thread Architekturzustandsregistern 401b zugeordnet, kann ein dritter Thread Architekturzustandsregistern 402a zugeordnet sein und kann ein vierter Thread Architekturzustandsregistern 402b zugeordnet sein. Hier kann jedes der Architekturzustandsregister (401a, 401b, 402a und 402b) als Verarbeitungselemente, Threadschlitze oder Threadeinheiten, wie oben beschrieben, bezeichnet werden. Wie dargestellt, werden die Architekturzustandsregister 401a in Architekturzustandsregistern 401b derart repliziert, dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 401a und den logischen Prozessor 401b gespeichert werden können. In Kern 401 können andere kleinere Ressourcen, wie Befehlszeiger und Umbenennungslogik in einem Zuordner- und Umbenennerblock 430, auch für die Threads 401a und 401b repliziert werden. Einige Ressourcen, wie etwa Umordnungspuffer in Neuordnungs-/Rückzugseinheit 435, Verzweigungszielpuffer und Befehlsübersetzungspuffer (BTB und I-TLB) 420, Lade-/Speicherpuffer und Warteschlangen können durch Partitionierung gemeinsam genutzt werden. Andere Ressourcen, wie zum Beispiel interne Universalregister, Seitentabellenbasisregister, Low-Level-Datencache und Daten-TLB 450, Ausführungseinheit(en) 440 und Teile der Neuordnungs-/Rückzugseinheit 435 werden potenziell vollständig gemeinsam genutzt.
  • Der Prozessor 400 umfasst oft andere Ressourcen, die vollständig gemeinsam genutzt, durch Partitionierung gemeinsam genutzt oder durch/für Verarbeitungselemente(n) vorgesehen werden können. In 4 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Es ist zu beachten, dass ein Prozessor jegliche dieser Funktionseinheiten umfassen oder auslassen kann sowie andere nicht dargestellte bekannte Funktionseinheiten, Logik oder Firmware umfassen kann. Wie dargestellt, umfasst der Kern 401 einen vereinfachten, repräsentativen reihenfolgeveränderten (Out-of-order, OOO) Prozessorkern. Ein reihenfolgetreuer (In-order) Prozessor kann jedoch in verschiedenen Ausführungsformen verwendet werden.
  • Kern 401 umfasst ferner ein Decodiermodul 425, das mit der Abrufeinheit gekoppelt ist, um abgerufene Elemente zu decodieren. Abruflogik umfasst in einer Ausführungsform individuelle Sequenzierer, die den Threadschlitzen 401a bzw. 401b zugeordnet sind. Üblicherweise ist Kern 401 mit einer ersten ISA verbunden, die auf dem Prozessor 400 ausführbare Befehle definiert/angibt. Häufig umfassen Maschinencodebefehle, die Teil der ersten ISA sind, einen Teil des Befehls (als ein Opcode bezeichnet), der einen Befehl oder eine durchzuführende Operation referenziert/angibt. Decodiermodul 425 umfasst Schaltungsanordnungen, die diese Befehle aus ihren Opcodes erkennen und die decodierten Befehle in der Verarbeitungspipeline weiterleiten, wie durch die erste ISA definiert. Beispielsweise umfasst Decodiermodul 425, in einer Ausführungsform, Logik, dazu ausgestaltet oder angepasst, spezifische Befehle, wie etwa transaktionale Befehle, zu erkennen. Als ein Ergebnis der Erkennung durch das Decodiermodul 425 leitet die Architektur oder der Kern 401 spezifische, vordefinierte Aktionen ein, um Aufgaben in Verbindung mit dem entsprechenden Befehl durchzuführen. Es ist wichtig anzumerken, dass jede/jeder/jedes der hier beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Reaktion auf einen einzelnen oder mehrere Befehle durchgeführt werden kann; von denen einige neue oder alte Befehle sein können.
  • In einem Beispiel enthält der Zuordner- und Umbenennerblock 430 einen Zuordner zum Reservieren von Ressourcen, wie zum Beispiel Registerdateien zum Speichern von Befehlsverarbeitungsergebnissen. Die Threads 401a und 401b sind jedoch potenziell zu einer reihenfolgeveränderten (Out-of-order) Ausführung fähig, wobei der Zuordner- und Umbenennerblock 430 auch andere Ressourcen, wie zum Beispiel Neuordnungspuffer, reserviert, um Befehlsergebnisse zu verfolgen. Der Umbenennerblock 430 kann auch einen Registerumbenenner einschließen, um Programm-Befehlsreferenzregister in andere Register in dem Prozessor 400 umzubenennen. Die Neuordnungs-/Rückzugseinheit 435 umfasst Komponenten, wie die oben erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um eine reihenfolgeveränderte (Out-of-order) Ausführung und später einen reihenfolgetreuen (In-order) Rückzug von Befehlen, die außerhalb der Reihenfolge ausgeführt wurden, zu unterstützen.
  • Ein Ablaufsteuerungs- und Ausführungseinheit(en)-Block 440 umfasst in einer Ausführungsform eine Ablaufsteuerungseinheit, um Befehle/eine Operation bei Ausführungseinheiten zu planen. Zum Beispiel wird ein Gleitkommabefehl an einem Port einer Ausführungseinheit, die eine verfügbare Gleitkommaausführungseinheit aufweist, geplant. Registerdateien, die den Ausführungseinheiten zugeordnet sind, sind ebenfalls enthalten, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Datencache auf niedrigerer Ebene und Datenübersetzungspuffer (Data Translation Lookaside Buffer, D-TLB) 450 sind mit der/den Ausführungseinheit(en) 440 gekoppelt. Der Datencache soll kürzlich verwendete/betriebene Elemente, wie zum Beispiel Datenoperanden, die potenziell in Speicherkohärenzzuständen gehalten werden, speichern. Der D-TLB soll aktuelle Übersetzungen von virtuellen/linearen zu physikalischen Adressen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur umfassen, um physikalischen Speicher in mehrere virtuelle Seiten zu zerteilen.
  • Hier teilen Kerne 401 und 402 Zugriff auf Cache auf höherer Ebene oder weiter außen liegenden Cache 410, der dazu dient, jüngst abgerufene Elemente zwischenzuspeichern. Es ist zu beachten, dass sich Cache auf höherer Ebene oder weiter außen liegender Cache auf Cache-Ebenen bezieht, die ausgehend von der/den Ausführungseinheit(en) zunehmen oder sich weiter von diesen entfernen. In einer Ausführungsform ist der Cache auf höherer Ebene 410 ein Last-Level-Datencache -letzter Cache in der Speicherhierarchie auf dem Prozessor 400 -wie zum Beispiel ein Datencache der zweiten oder dritten Ebene. Der Cache auf höherer Ebene 410 ist jedoch nicht hierauf beschränkt, da er einem Befehlscache zugeordnet sein kann oder einen solchen umfasst. Ein Trace-Cache -ein Typ von Befehlscache -kann stattdessen nach dem Decodierer 425 gekoppelt werden, um kürzlich decodierte Spuren zu speichern.
  • In der dargestellten Auslegung umfasst der Prozessor 400 auch Busschnittstelle 405 und eine Stromsteuereinheit 460, die Stromverwaltung gemäß einer Ausführungsform der vorliegenden Erfindung durchführen kann. In diesem Szenario dient Busschnittstelle 405 dazu, mit Vorrichtungen außerhalb des Prozessors 400, wie etwa Systemspeicher und anderen Komponenten, zu kommunizieren.
  • Eine Speichersteuerung 470 kann mit anderen Vorrichtungen, wie etwa einem oder mehreren Speichern verbunden sein. In einem Beispiel umfasst Busschnittstelle 405 eine Ringverschaltung mit einer Speichersteuerung zum Verbinden mit einem Speicher und eine Grafiksteuerung zum Verbinden mit einem Grafikprozessor. In einer SoC-Umgebung können sogar noch mehr Vorrichtungen, wie die Netzwerkschnittstelle, Koprozessoren, Speicher, Grafikprozessor und beliebige andere bekannte Computervorrichtungen/-schnittstellen auf einem einzigen Die oder einer einzigen integrierten Schaltung integriert werden, um einen kleinen Formfaktor mit hoher Funktionalität und geringem Stromverbrauch bereitzustellen.
  • Obwohl in 4 nicht gezeigt, kann, in einigen Ausführungsformen, der Prozessor 400 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Jetzt Bezug nehmend auf 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt, kann Prozessorkern 500 ein reihenfolgeveränderter (Out-of-order) Prozessor mit mehrstufiger Pipeline sein. Kern 500 kann bei verschiedenen Spannungen betrieben werden, basierend auf einer empfangenen Betriebsspannung, die von einem integrierten Spannungsregler oder einem externen Spannungsregler empfangen werden können.
  • Wie in 5 zu sehen, umfasst Kern 500 Frontendeinheiten 510, die verwendet werden können, um Befehle abzurufen, die auszuführen sind, und sie für eine spätere Verwendung in der Prozessor-Pipeline vorzubereiten. Beispielsweise können die Frontendeinheiten 510 eine Abrufeinheit 501, einen Befehlscache 503 und einen Befehlsdecodierer 505 umfassen. In einigen Umsetzungen können die Frontendeinheiten 510 ferner einen Trace-Cache umfassen, zusammen mit Mikrocodespeicher sowie einen Mikrooperationsspeicher. Abrufeinheit 501 kann, z. B. aus dem Speicher oder dem Befehlscache 503, Makrobefehle abrufen und sie dem Befehlsdecodierer 505 zuführen, um sie in Primitive, d. h. Mikrooperationen zur Ausführung durch den Prozessor, zu decodieren.
  • Gekoppelt zwischen Frontendeinheiten 510 und Ausführungseinheiten 520 ist eine reihenfolgeveränderte (Out-of-order, OOO) Engine 515, die verwendet werden kann, um die Mikrobefehle zu empfangen und für die Ausführung vorzubereiten. Insbesondere kann die OOO-Engine 515 verschiedene Puffer zum Neuordnen des Mikrobefehlsflusses und Zuordnen verschiedener für die Ausführung nötiger Ressourcen sowie zum Bereitstellen des Umbenennens von logischen Registern auf Speicherorten innerhalb verschiedener Registerdateien, wie etwa Registerdatei 530 und erweiterte Registerdatei 535, umfassen. Registerdatei 530 kann separate Registerdateien für ganzzahlige und Gleitkommaoperationen umfassen. Zum Zwecke der Auslegung, Steuerung und als zusätzliche Operationen kann auch eine Menge von maschinenspezifischen Registern (MSRs) 538 vorhanden und für verschiedene Logiken innerhalb des Kerns 500 (und außerhalb des Kerns) zugänglich sein.
  • Verschiedene Ressourcen können in Ausführungseinheiten 520 vorhanden sein, einschließlich, beispielsweise, verschiedene ganzzahlige, Gleitkomma- und SIMD-Logikeinheiten (Single Instruction Multiple Data, Einzelbefehl mit mehreren Daten), unter anderer spezialisierter Hardware. Beispielsweise können solche Ausführungseinheiten eine oder mehrere arithmetische Logikeinheiten (ALUs) 522 und eine oder mehrere Vektorausführungseinheiten 524, unter anderen solchen Ausführungseinheiten, umfassen.
  • Ergebnisse von den Ausführungseinheiten können der Rückzugslogik bereitgestellt werden, namentlich einem Neuordnungspuffer (ROB, Reorder Buffer) 540. Insbesondere kann ROB 540 verschiedene Felder und Logiken zum Empfangen von Informationen in Verbindung mit Befehlen, die ausgeführt werden, umfassen. Diese Informationen werden dann durch ROB 540 geprüft, um zu bestimmen, ob der Befehl in gültiger Weise zurückgezogen werden kann und die Ergebnisdaten an den architektonischen Zustand des Prozessors übergeben werden können, oder ob eine oder mehrere Ausnahmen aufgetreten sind, die einen korrekten Rückzug der Befehle verhindern. Natürlich kann ROB 540 andere Operationen im Zusammenhang mit dem Rückzug behandeln.
  • Wie in 5 gezeigt, ist ROB 540 mit einem Cache 550 gekoppelt, der, in einer Ausführungsform, ein Cache auf niedriger Ebene (z. B. ein LI-Cache) sein kann, obwohl der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Außerdem können Ausführungseinheiten 520 direkt mit Cache 550 gekoppelt sein. Vom Cache 550 aus kann Datenkommunikation mit Caches auf höherer Ebene, Systemspeicher und so fort, erfolgen. Obwohl in der Ausführungsform aus 5 mit dieser hohen Ebene gezeigt, versteht es sich, dass der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Während beispielsweise die Umsetzung aus 5 bezüglich einer reihenfolgeveränderten (Out-of-order) Maschine, wie etwa einer Intel® x86-Befehlssatzarchitektur (ISA, Instruction Set Architecture) ist, ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt. Das heißt, andere Ausführungsformen können in einem reihenfolgetreuen (In-order) Prozessor, einem Prozessor mit reduziertem Befehlssatz (RISC, Reduced Instruction Set Computing), wie etwa einem ARM-basiertem Prozessor, oder einem Prozessor mit einem anderen Typ von ISA, der Befehle und Operationen einer unterschiedlichen ISA über eine Emulierungsengine und verbundene Logikschaltungsanordnungen emulieren kann, umgesetzt sein.
  • Obwohl in 5 nicht gezeigt, kann, in einigen Ausführungsformen, der Kern 500 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Jetzt Bezug nehmend auf 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer weiteren Ausführungsform gezeigt. In der Ausführungsform aus 6 kann Kern 600 ein Niederstromkern einer unterschiedlichen Mikroarchitektur sein, wie etwa ein Intel® Atom™-basierter Prozessor mit einer relativ begrenzten Pipeline-Tiefe, konzipiert, um Stromverbrauch zu verringern. Wie gesehen, umfasst Kern 600 einen Befehlscache 610, gekoppelt, um Befehle für einen Befehlsdecodierer 615 bereitzustellen. Ein Verzweigungsvorhersager 605 kann mit Befehlscache 610 gekoppelt sein. Es ist anzumerken, dass Befehlscache 610 ferner mit einer anderen Ebene von Cachespeicher gekoppelt sein kann, wie etwa einem L2-Cache (aus Gründen der Einfachheit der Darstellung in 6 nicht gezeigt). Befehlsdecodierer 615 seinerseits stellt decodierte Befehle für eine Ausgabewarteschlange (IQ, Issue Queue) 620 zur Speicherung und Zuführung zu einer gegebenen Ausführungs-Pipeline bereit. Ein Mikrocode-ROM 618 ist mit dem Befehlsdecodierer 615 gekoppelt.
  • Eine Gleitkomma-Pipeline 630 umfasst eine Gleitkomma-Registerdatei (GK) 632, die mehrere architektonische Register einer gegebenen Bitbreite, wie etwa 128, 256 oder 512 Bits, umfassen kann. Pipeline 630 umfasst eine Gleitkomma-Ablaufsteuerung 634 zum Planen von Befehlen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline. In der gezeigten Ausführungsform umfassen solche Ausführungseinheiten eine ALU 635, eine Umstelleinheit 636 und einen Gleitkommaaddierer 638. Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, können ihrerseits wieder den Puffern und/oder Registern von Registerdatei 632 bereitgestellt werden. Natürlich versteht es sich, dass, obwohl mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt, in einer weiteren Ausführungsform zusätzliche oder unterschiedliche Gleitkomma-Ausführungseinheiten vorhanden sein können.
  • Eine ganzzahlige Pipeline 640 kann ebenfalls bereitgestellt sein. In der gezeigten Ausführungsform umfasst Pipeline 640 eine ganzzahlige Registerdatei (INT, Integer) 642, die mehrere architektonische Register einer gegebenen Bitbreite, wie etwa 128 oder 256 Bits, umfassen kann. Pipeline 640 umfasst eine Ablaufsteuerung für ganzzahlige Ausführung (IE, Integer Execution) 644 zum Planen von Befehlen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline. In der gezeigten Ausführungsform umfassen solche Ausführungseinheiten eine ALU 645, eine Verschiebeeinheit 646 und eine Sprungausführungseinheit (JEU, Jump Execution Unit) 648. Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, können ihrerseits wieder den Puffern und/oder Registern von Registerdatei 642 bereitgestellt werden. Natürlich versteht es sich, dass, obwohl mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt, in einer weiteren Ausführungsform zusätzliche oder unterschiedliche ganzzahlige Ausführungseinheiten vorhanden sein können.
  • Eine Ablaufsteuerung für Speicherausführung (ME, Memory Execution) 650 kann Speicheroperationen für Ausführung in einer Adresserzeugungseinheit (AGU) 652, die ebenfalls mit einem TLB 654 gekoppelt ist, planen. Wie gesehen, können diese Strukturen mit einem Datencache 660 koppeln, der ein L0- und/oder L1-Datencache sein kann, der seinerseits mit zusätzlichen Ebenen einer Cachespeicherhierarchie koppelt, einschließlich eines L2-Cachespeichers.
  • Zum Bereitstellen von Unterstützung für reihenfolgeveränderte (Out-of-order) Ausführung kann ein Zuordner/Umbenenner 670 bereitgestellt sein, zusätzlich zu einem Neuordnungspuffer 680, der dazu ausgelegt ist, Befehle, die reihenfolgeverändert ausgeführt werden, für reihenfolgetreuen Rückzug neu zu ordnen. Obwohl in der Darstellung aus 6 mit dieser bestimmten Pipeline-Architektur gezeigt, versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Obwohl in 6 nicht gezeigt, kann, in einigen Ausführungsformen, der Kern 600 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Es ist anzumerken, dass in einem Prozessor mit asymmetrischen Kernen, wie etwa in Übereinstimmung mit den Mikroarchitekturen aus 5 und 6, Arbeitslasten aus Gründen der Stromverwaltung dynamisch zwischen den Kernen getauscht werden können, da diese Kerne, obwohl sie unterschiedliche Pipeline-Ausgestaltungen und -Tiefen haben, von derselben oder verwandten ISA sein können. Ein solches dynamisches Kerntauschen kann in einer Weise durchgeführt werden, die transparent für eine Benutzeranwendung (und möglicherweise auch einen Kernel) ist.
  • Bezug nehmend auf 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkems gemäß einer weiteren Ausführungsform gezeigt. Wie in 7 dargestellt, kann ein Kern 700 eine mehrstufige reihenfolgetreue Pipeline zum Ausführen bei sehr niedrigen Stromverbrauchniveaus umfassen. Als ein solches Beispiel kann Kern 700 eine Mikroarchitektur in Übereinstimmung mit einem ARM Cortex A53 Design haben, wie es von ARM Holdings, LTD. aus Sunnyvale, CA, verfügbar ist. In einer Umsetzung kann eine 8-stufige Pipeline bereitgestellt sein, die dazu ausgelegt ist, sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Kern 700 umfasst eine Abrufeinheit 710, die dazu ausgelegt ist, Befehle abzurufen und sie für eine Decodiereinheit 715 bereitzustellen, die die Befehle decodieren kann, z. B. Makrobefehle einer gegebenen ISA, wie etwa einer ARMv8-ISA. Es ist ferner anzumerken, dass eine Warteschlange 730 mit der Decodiereinheit 715 koppeln kann, um decodierte Befehle zu speichern. Decodierte Befehle werden einer Ausgabelogik 725 bereitgestellt, wo die decodierten Befehle an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden können.
  • Weiter Bezug nehmend auf 7 kann Ausgabelogik 725 Befehle an eine von mehreren Ausführungseinheiten ausgeben. In der gezeigten Ausführungsform umfassen diese Ausführungseinheiten eine ganzzahlige Einheit 735, eine Multipliziereinheit 740, eine Gleitkomma-/Vektoreinheit 750, eine duale Ausgabeeinheit 760 und eine Lade-/Speichereinheit 770. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können einer Rückschreibeeinheit (WB, Writeback) 780 bereitgestellt werden. Es versteht sich, dass, obwohl aus Gründen der Einfachheit der Darstellung eine einzelne Rückschreibeeinheit gezeigt ist, in einigen Umsetzungen separate Rückschreibeeinheiten mit jeder der Ausführungseinheiten verbunden werden können. Des Weiteren versteht es sich, dass, obwohl jede der in 7 gezeigten Einheiten und Logiken bei einer hohen Ebene dargestellt ist, eine bestimmte Umsetzung mehr oder unterschiedliche Strukturen umfassen kann. Ein Prozessor, der dazu ausgestaltet ist, einen oder mehrere Kerne zu verwenden, eine Pipeline wie in 7 aufweisend, kann in vielen unterschiedlichen Endprodukten umgesetzt werden, von mobilen Vorrichtungen zu Serversystemen reichend.
  • Obwohl in 7 nicht gezeigt, kann, in einigen Ausführungsformen, der Kern 700 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Bezug nehmend auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkems gemäß noch einer weiteren Ausführungsform gezeigt. Wie in 8 dargestellt, kann ein Kern 800 eine reihenfolgeveränderte (Out-of-order) mehrstufige Pipeline mit Mehrfachausgabe umfassen, um bei sehr hohen Leistungsniveaus auszuführen (was bei höheren Stromverbrauchniveaus als bei Kern 700 aus 7 geschehen kann). Als ein solches Beispiel kann Prozessor 800 eine Mikroarchitektur in Übereinstimmung mit einem ARM Cortex A57 Design haben. In einer Umsetzung kann eine 15- (oder mehr-)stufige Pipeline bereitgestellt sein, die dazu ausgelegt ist, sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Zusätzlich kann die Pipeline 3-(oder größer)-breite Operation mit 3 (oder mehr) Ausgaben bereitstellen. Kern 800 umfasst eine Abrufeinheit 810, die dazu ausgelegt ist, Befehle abzurufen und sie für eine Decodier-/Umbenenn-/Verteilereinheit 815, die mit einem Cache 820 gekoppelt ist, bereitzustellen. Einheit 815 kann die Befehle, z. B. Makrobefehle einer ARMv8-Befehlssatzarchitektur, decodieren, Registerreferenzen innerhalb der Befehle umbenennen und (schließlich) die Befehle an eine ausgewählte Ausführungseinheit verteilen. Decodierte Befehle können in einer Warteschlange 825 gespeichert werden. Es ist anzumerken, dass, obwohl aus Gründen der Einfachheit der Darstellung in 8 eine einzelne Warteschlangenstruktur gezeigt ist, es sich versteht, dass separate Warteschlangen für jeden der mehreren unterschiedlichen Typen von Ausführungseinheiten bereitgestellt sein können.
  • In 8 ebenfalls gezeigt wird eine Ausgabelogik 830, von der decodierte Befehle, die in Warteschlange 825 gespeichert sind, an eine ausgewählte Ausgabeeinheit ausgegeben werden können. Ausgabelogik 830 kann auch in einer bestimmten Ausführungsform mit einer separaten Ausgabelogik für jeden der unterschiedlichen Typen von Ausführungseinheiten sein, mit denen Ausgabelogik 830 koppelt.
  • Decodierte Befehle können an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden. In der gezeigten Ausführungsform umfassen diese Ausführungseinheiten eine oder mehrere ganzzahlige Einheiten 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 dazu ausgelegt sein, SIMD oder Vektordaten mit 128 oder 256 Bits zu behandeln. Noch ferner kann die Gleitkomma-/Vektorausführungseinheit 850 Gleitkommaoperationen mit doppelter Genauigkeit nach IEEE-754 durchführen. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können einer Rückschreibeeinheit 880 bereitgestellt werden. Es ist anzumerken, dass in einigen Umsetzungen separate Rückschreibeeinheiten mit jeder der Ausführungseinheiten verbunden sein können. Des Weiteren versteht es sich, dass, obwohl jede der in 8 gezeigten Einheiten und Logiken bei einer hohen Ebene dargestellt ist, eine bestimmte Umsetzung mehr oder unterschiedliche Strukturen umfassen kann.
  • Obwohl in 8 nicht gezeigt, kann, in einigen Ausführungsformen, der Kern 800 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Es ist anzumerken, dass in einem Prozessor mit asymmetrischen Kernen, wie etwa in Übereinstimmung mit den Mikroarchitekturen aus 7 und 8, Arbeitslasten aus Gründen der Stromverwaltung dynamisch getauscht werden können, da diese Kerne, obwohl sie unterschiedliche Pipeline-Ausgestaltungen und -Tiefen haben, von derselben oder verwandten ISA sein können. Ein solches dynamisches Kerntauschen kann in einer Weise durchgeführt werden, die transparent für eine Benutzeranwendung (und möglicherweise auch einen Kernel) ist.
  • Ein Prozessor, der dazu ausgestaltet ist, einen oder mehrere Kerne zu verwenden, Pipelines wie in einer beliebigen oder mehreren aus 5-8 aufweisend, kann in unterschiedlichen Endprodukten umgesetzt sein, von mobilen Vorrichtungen bis hin zu Serversystemen reichend. Jetzt Bezug nehmend auf 9 ist ein Blockdiagramm eines Prozessors in Übereinstimmung mit einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. In der Ausführungsform aus 9 kann Prozessor 900 ein SoC sein, umfassend mehrere Domänen, von denen jede gesteuert werden kann, um bei einer unabhängigen Betriebsspannung und Betriebsfrequenz zu arbeiten. Als ein spezifisches veranschaulichendes Beispiel kann der Prozessor 900 ein Intel® Architecture Core™-basierter Prozessor, wie etwa ein i3, i5, i7 oder ein anderer derartiger von der Intel Corporation, Santa Clara, CA, erhältlicher Prozessor sein. Allerdings können in anderen Ausführungsformen stattdessen andere Prozessoren mit niedriger Stromaufnahme, wie etwa die von Advanced Micro Devices, Inc. (AMD) aus Sunnyvale, CA, eine ARM-basierte Ausgestaltung von ARM Holdings, Ltd. oder ihren Lizenznehmern oder eine MIPSbasierte Ausgestaltung von MIPS Technologies, Inc., aus Sunnyvale, CA, oder ihren Lizenznehmern oder Nutzern vorhanden sein, wie etwa ein Apple A7 Prozessor, ein Qualcomm Snapdragon Prozessor oder ein Texas Instruments OMAP Prozessor. Solche SoC können in einem System mit niedriger Stromaufnahme verwendet werden, wie etwa einem Smartphone, Tablet-Computer, Phablet-Computer, Ultrabook™-Computer oder einer anderen tragbaren Datenverarbeitungsvorrichtung, die eine heterogene Systemarchitektur mit einer auf heterogener Systemarchitektur basierenden Prozessorausgestaltung enthalten können.
  • In der in 9 gezeigten Ansicht auf hoher Ebene umfasst Prozessor 900 mehrere Kerneinheiten 910a-910n. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cachespeicher und andere Schaltungsanordnungen umfassen. Jede Kerneinheit 910 kann einen oder mehrere Befehlssätze (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen, wie etwa NEON) oder einen anderen Befehlssatz oder Kombinationen daraus unterstützen. Es ist anzumerken, dass einige der Kerneinheiten heterogene Ressourcen (z. B. mit unterschiedlichen Ausgestaltungen) sein können. Zusätzlich kann jeder solche Kern mit einem Cachespeicher (nicht gezeigt) gekoppelt sein, der in einer Ausführungsform ein gemeinsam genutzter Level-2-Cachespeicher (L2) sein kann. Ein nicht-flüchtiger Speicher 930 kann verwendet werden, um verschiedene Programme und andere Daten zu speichern. Beispielsweise kann dieser Speicher verwendet werden, um zumindest 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, umfassen, um Verschaltung mit zusätzlichen Schaltungsanordnungen des Prozessors zu ermöglichen. In einer Ausführungsform koppelt jede Kerneinheit 910 mit einer kohärenten Fabric-Struktur, die als eine primäre Cache-kohärente Verschaltung auf dem Die wirken kann, die ihrerseits mit einer Speichersteuerung 935 koppelt. Die Speichersteuerung 935 ihrerseits steuert Kommunikationen mit einem Speicher, wie etwa einem DRAM (aus Gründen der Einfachheit der Darstellung in 9 nicht gezeigt).
  • Zusätzlich zu den Kerneinheiten sind zusätzliche Verarbeitungsengines innerhalb des Prozessors vorhanden, umfassend zumindest eine Grafikeinheit 920, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) zum Durchführen von Grafikoperationen sowie zum möglicherweise Ausführen von allgemeinen Operationen auf dem Grafikprozessor (so genannter GPGPU-Betrieb) umfassen kann. Zusätzlich kann zumindest ein Bildsignalprozessor 925 vorhanden sein. Signalprozessor 925 kann dazu ausgelegt sein, eingehende Bilddaten zu verarbeiten, die von einer oder mehreren Erfassungsvorrichtungen, entweder SoC-intern oder außerhalb des Chips, empfangen werden.
  • Andere Beschleuniger können auch vorhanden sein. In der Darstellung von 9 kann ein Videocodierer 950 Codierungsoperationen durchführen, einschließlich Codieren und Decodieren von Videoinformationen, z. B. Hardwarebeschleunigung für hochauflösende Videoinhalte bereitstellend. Eine Anzeigesteuerung 955 kann ferner bereitgestellt werden, um Anzeigeoperationen zu beschleunigen, einschließlich Bereitstellen von Unterstützung für interne und externe Anzeigen eines Systems. Zusätzlich kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsoperationen durchzuführen, wie etwa sichere Bootoperationen, verschiedene Kryptographieoperationen und so weiter.
  • Jede der Einheiten kann ihren eigenen Stromverbrauch über einen Stromverwalter 940 steuern, der Steuerlogik zum Durchführen der hier beschriebenen verschiedenen Stromverwaltungstechniken umfassen kann.
  • In einigen Ausführungsformen kann Prozessor 900 ferner eine nicht-kohärente Fabric-Struktur mit der kohärenten Fabric-Struktur koppeln, mit der verschiedene periphere Vorrichtungen gekoppelt werden können. Eine oder mehrere Schnittstellen 960a-960d ermöglichen Kommunikation mit einer oder mehreren chipexternen Vorrichtungen. Solche Kommunikationen können eine Vielfalt von Kommunikationsprotokollen sein, wie etwa PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI, unter anderen Typen von Kommunikationsprotokollen. Obwohl in der Ausführungsform aus 9 auf dieser hohen Ebene gezeigt, versteht es sich, dass der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Obwohl in 9 nicht gezeigt, kann, in einigen Ausführungsformen, der Prozessor 900 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Jetzt Bezug nehmend auf 10 ist ein Blockdiagramm eines repräsentativen SoC gezeigt. In der gezeigten Ausführungsform kann SoC 1000 ein Mehrkern-SoC sein, der dazu ausgelegt ist, einen Betrieb mit niedriger Stromaufnahme zur Integration in ein Smartphone oder eine andere Vorrichtung mit niedriger Stromaufnahme, wie etwa einen Tablet-Computer oder eine andere tragbare Datenverarbeitungsvorrichtung zu optimieren. Als ein Beispiel kann SoC 1000 unter Verwendung von asymmetrischen oder unterschiedlichen Typen von Kernen, wie etwa Kombinationen von Kernen mit hoher Stromaufnahme und/oder Kernen mit niedriger Stromaufnahme, z. B. reihenfolgeveränderten (Out-of-order) Kernen und reihenfolgetreuen (In-order) Kernen, umgesetzt sein. In unterschiedlichen Ausführungsformen können diese Kerne auf einer Intel® Architecture™ Kernausgestaltung oder einer ARM Architekturausgestaltung basieren. In noch weiteren Ausführungsformen kann eine Mischung von Intel- und ARM-Kernen in einem gegebenen SoC umgesetzt sein.
  • Wie in 10 zu sehen ist, umfasst SoC 1000 eine erste Kerndomäne 1010, mehrere erste Kerne 1012a -1012d aufweisend. In einem Beispiel können diese Kerne Kerne mit niedriger Stromaufnahme sein, wie etwa reihenfolgetreue (In-order) Kerne. In einer Ausführungsform können diese ersten Kerne als ARM Cortex A53 Kerne umgesetzt sein. Diese Kerne koppeln ihrerseits mit einem Cachespeicher 1015 von Kerndomäne 1010. Zusätzlich umfasst SoC 1000 eine zweite Kerndomäne 1020. In der Darstellung von 10 hat eine zweite Kerndomäne 1020 mehrere zweite Kerne 1022a -1022d. In einem Beispiel können diese Kerne Kerne mit höherer Stromaufnahme als die ersten Kerne 1012 sein. In einer Ausführungsform können die zweiten Kerne reihenfolgeveränderte Kerne sein, die als ARM Cortex A57 Kerne umgesetzt sein können. Diese Kerne koppeln ihrerseits mit einem Cachespeicher 1025 von Kerndomäne 1020. Es ist anzumerken, dass, obwohl das in 10 gezeigte Beispiel 4 Kerne in jeder Domäne umfasst, es sich versteht, dass in anderen Beispielen mehr oder weniger Kerne in einer gegebenen Domäne vorhanden sein können.
  • Weiter Bezug nehmend auf 10 ist auch eine Grafikdomäne 1030 bereitgestellt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) umfassen kann, dazu ausgelegt, unabhängig Grafikarbeitslasten auszuführen, z. B. bereitgestellt durch einen oder mehrere Kerne der Kerndomänen 1010 und 1020. Als ein Beispiel kann GPU-Domäne 1030 verwendet werden, um Anzeigeunterstützung für eine Vielfalt von Bildschirmgrößen bereitzustellen, zusätzlich zum Bereitstellen von Grafik- und Anzeigedarstellungsoperationen.
  • Wie gesehen, koppeln die verschiedenen Domänen mit einer kohärenten Verschaltung 1040, die in einer Ausführungsform eine Cache-kohärente Verschaltungs-Fabric-Struktur sein kann, die ihrerseits mit einer integrierten Speichersteuerung 1050 koppelt. Die kohärente Verschaltung 1040 kann, in einigen Beispielen, einen gemeinsam genutzten Cachespeicher umfassen, wie etwa einen L3-Cache. In einer Ausführungsform kann Speichersteuerung 1050 eine direkte Speichersteuerung zum Bereitstellen mehrerer Kanäle für Kommunikation mit einem chipexternen Speicher, wie etwa mehrerer Kanäle eines DRAM (aus Gründen der Einfachheit der Darstellung in 10 nicht gezeigt) sein.
  • In unterschiedlichen Beispielen kann die Anzahl von Kerndomänen variieren. Beispielsweise kann für einen SoC mit niedriger Stromaufnahme, der für Integration in eine mobile Datenverarbeitungsvorrichtung geeignet ist, eine begrenzte Anzahl von Kerndomänen, wie in 10 gezeigt, vorhanden sein. Noch ferner kann, in solchen SoCs mit niedriger Stromaufnahme, Kerndomäne 1020, umfassend Kerne mit höherer Stromaufnahme, geringere Anzahlen von solchen Kernen haben. Beispielsweise können in einer Umsetzung zwei Kerne 1022 bereitgestellt sein, um Betrieb bei verringerten Stromverbrauchsniveaus zu ermöglichen. Zusätzlich können unterschiedliche Kerndomänen auch mit einer Unterbrechungssteuerung gekoppelt sein, um dynamisches Tauschen von Arbeitslasten zwischen unterschiedlichen Domänen zu ermöglichen.
  • In noch weiteren Ausführungsformen kann eine größere Anzahl von Kerndomänen sowie zusätzliche optionale IP-Logik vorhanden sein, dahingehend, dass ein SoC zur Integration in andere Datenverarbeitungsvorrichtungen, wie etwa Desktops, Server, Hochleistungs-Datenverarbeitungssysteme, Basisstationen und so weiter, für höhere Leistungs- (und Strom-)niveaus skaliert werden kann. Als ein solches Beispiel können 4 Kerndomänen, die jeweils eine gegebene Anzahl von reihenfolgeveränderten (Out-of-order) Kernen aufweisen, bereitgestellt sein. Noch ferner können, zusätzlich zu der optionalen GPU-Unterstützung (die als ein Beispiel die Form einer GPGPU annehmen kann), auch einer oder mehrere Beschleuniger zum Bereitstellen einer optimierten Hardwareunterstützung für bestimmte Funktionen (z. B. Webdienste, Netzwerkverarbeitung, Vermittlung und so weiter) bereitgestellt sein. Zusätzlich kann eine Eingabe/Ausgabe-Schnittstelle vorhanden sein, um solche Beschleuniger mit chipexternen Komponenten zu koppeln.
  • Obwohl in 10 nicht gezeigt, kann, in einigen Ausführungsformen, das SoC 1000 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Jetzt Bezug nehmend auf 11 ist ein Blockdiagramm eines weiteren beispielhaften SoC gezeigt. In der Ausführungsform aus 11 kann SoC 1100 verschiedene Schaltungsanordnungen umfassen, um hohe Leistung für Multimedia-Anwendungen, Kommunikationen und andere Funktionen zu ermöglichen. Daher ist SoC 1100 für Integration in eine breite Vielfalt von tragbaren und anderen Vorrichtungen, wie etwa Smartphones, Tablet-Computer, Smart-TVs und so weiter, geeignet. In dem gezeigten Beispiel umfasst SoC 1100 eine Zentraleinheitsdomäne (CPU, Central Processor Unit) 1110. In einer Ausführungsform können mehrere individuelle Prozessorkerne in CPU-Domäne 1110 vorhanden sein. Als ein Beispiel kann CPU-Domäne 1110 ein Vierkernprozessor sein, 4 Kerne mit Mehrsträngigkeit aufweisend. Solche Prozessoren können homogene oder heterogene Prozessoren sein, z. B. eine Mischung aus Prozessoren mit niedriger Stromaufnahme und mit hoher Stromaufnahme.
  • Eine GPU-Domäne 1120 wird bereitgestellt, um erweiterte Grafikverarbeitung in einer oder mehreren GPUs bereitzustellen, um Grafik zu behandeln und APIs zu berechnen. Eine DSP-Einheit 1130 kann einen oder mehrere DSPs mit niedriger Stromaufnahme zum Behandeln von Multimedia-Anwendungen mit niedrigem Strombedarf, wie etwa Musikwiedergabe, Audio/Video und so weiter bereitstellen, zusätzlich zu erweiterten Berechnungen, die während der Ausführung von Multimedia-Befehlen auftreten können. Eine Kommunikationseinheit 1140 kann ihrerseits verschiedene Komponenten umfassen, um Konnektivität über verschiedene drahtlose Protokolle, wie etwa Mobilfunkkommunikationen (einschließlich 3G/4G LTE), drahtlose Nahbereichsprotokolle, wie etwa Bluetooth™, IEEE 802.11, und so weiter, bereitzustellen.
  • Noch ferner kann ein Multimedia-Prozessor 1150 verwendet werden, um Erfassung und Wiedergabe von hochauflösenden Video- und Audioinhalten durchzuführen, einschließlich Verarbeiten von Benutzergesten. Eine Sensoreinheit 1160 kann mehrere Sensoren und/oder eine Sensorsteuerung zum Verbinden mit verschiedenen chipexternen Sensoren, die in einer gegebenen Plattform vorhanden sind, umfassen. Ein Bildsignalprozessor 1170 kann mit einem oder mehreren separaten ISPs bereitgestellt sein, um Bildverarbeitung im Hinblick auf von einer oder mehreren Kameras, umfassend Einzelbild- und Videokameras, erfasste Inhalte durchzuführen.
  • Ein Anzeigeprozessor 1180 kann Unterstützung für eine Verbindung mit einer hochauflösenden Anzeige einer gegebenen Pixeldichte bereitstellen, einschließlich der Fähigkeit, drahtlos Inhalt für Wiedergabe auf einer solchen Anzeige zu kommunizieren. Noch ferner kann eine Lokalisierungseinheit 1190 einen GPS-Empfänger mit Unterstützung für mehrere GPS-Konstellationen umfassen, um Anwendungen hochgradig genaue Positionierungsinformationen, die unter Verwendung eines solchen GPS-Empfängers erhalten wurden, bereitzustellen. Obwohl im Beispiel aus 11 mit dieser bestimmten Menge von Komponenten gezeigt, versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Obwohl in 11 nicht gezeigt, kann, in einigen Ausführungsformen, das SoC 1100 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Jetzt Bezug nehmend auf 12 ist ein Blockdiagramm eines beispielhaften Systems gezeigt, mit dem Ausführungsformen verwendet werden können. Wie zu sehen ist, kann System 1200 ein Smartphone oder ein anderer drahtloser Kommunikator sein. Ein Basisbandprozessor 1205 ist dazu ausgelegt, verschiedene Signalverarbeitungen im Hinblick auf Kommunikationssignale durchzuführen, die vom System gesendet oder empfangen werden sollen. Der Basisbandprozessor 1205 ist seinerseits mit einem Anwendungsprozessor 1210 gekoppelt, der eine Haupt-CPU des Systems zum Ausführen eines BS und anderer Systemsoftware sein kann, zusätzlich zu Benutzeranwendungen, wie etwa viele wohlbekannte Soziale-Medien- und Multimedia-Apps. Anwendungsprozessor 1210 kann ferner dazu ausgelegt sein, eine Vielfalt anderer Datenverarbeitungsoperationen für die Vorrichtung durchzuführen.
  • Anwendungsprozessor 1210 kann seinerseits mit einer Benutzerschnittstelle/Anzeige 1220, z. B. einer Touchscreenanzeige, koppeln. Zusätzlich kann Anwendungsprozessor 1210 mit einem Speichersystem, umfassend einen nicht-flüchtigen Speicher, namentlich einen Flash-Speicher 1230 und einen Systemspeicher, namentlich einen dynamischen Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory) 1235, koppeln. Wie ferner zu sehen ist, koppelt Anwendungsprozessor 1210 ferner mit einer Erfassungsvorrichtung 1240, wie etwa einer oder mehrerer Bilderfassungsvorrichtungen, die Video- und/oder Einzelbilder aufnehmen können.
  • Weiterhin Bezug nehmend auf 12 ist eine universelle integrierte Schaltungskarte (UICC) 1246, umfassend ein Teilnehmer-Identitätsmodul und möglicherweise einen sicheren Speicher und Kryptoprozessor, ebenfalls mit Anwendungsprozessor 1210 gekoppelt. System 1200 kann ferner einen Sicherheitsprozessor 1250 umfassen, der mit Anwendungsprozessor 1210 koppeln kann. Mehrere Sensoren 1225 können mit Anwendungsprozessor 1210 koppeln, um Eingabe einer Vielfalt von erfassten Informationen, wie etwa Beschleunigungsmesser- oder andere Umgebungsinformationen zu ermöglichen. Eine Audioausgabevorrichtung 1295 kann eine Schnittstelle zum Ausgeben von Ton bereitstellen, z. B. in der Form von Sprachkommunikationen, wiedergegebenen oder gestreamten Audiodaten und so weiter.
  • Wie ferner dargestellt, wird eine kontaktlose Nahfeldkommunikations-Schnittstelle (NFC, Near Field Communication) 1260 bereitgestellt, die in einem NFC-Nahfeld über eine NFC-Antenne 1265 kommuniziert. Während in 12 separate Antennen gezeigt sind, versteht es sich, dass in einigen Umsetzungen eine Antenne oder eine unterschiedliche Menge von Antennen bereitgestellt werden kann, um verschiedene drahtlose Funktionalität zu ermöglichen.
  • Eine integrierte Stromverwaltungsschaltung (PMIC, Power Management Integrated Circuit) 1215 koppelt mit Anwendungsprozessor 1210 zum Durchführen von Stromverwaltung auf Plattformebene. Dazu kann die PMIC 1215 Stromverwaltungsanforderungen an Anwendungsprozessor 1210 ausgeben, um in bestimmte Niederstromzustände, wie gewünscht, einzutreten. Ferner kann, basierend auf Plattformbeschränkungen, PMIC 1215 auch das Stromniveau von anderen Komponenten des Systems 1200 steuern.
  • Um zu ermöglichen, dass Kommunikationen gesendet und empfangen werden, können verschiedene Schaltungsanordnungen zwischen den Basisbandprozessor 1205 und eine Antenne 1290 gekoppelt werden. Insbesondere können ein Hochfrequenz(HF)-Sender-Empfänger 1270 und ein WLAN-Sender-Empfänger (Wireless Local Area Network) 1275 vorhanden sein. Im Allgemeinen kann ein HF-Sender-Empfänger 1270 verwendet werden, um drahtlose Daten und Anrufe gemäß einem gegebenen drahtlosen Kommunikationsprotokoll, wie etwa 3G oder 4G, einem drahtlosen Kommunikationsprotokoll, wie etwa in Übereinstimmung mit einem CDMA-(Mehrfachzugriff im Codemultiplex, Code Division Multiple Access), einem GSM- (globales System für mobile Kommunikation), LTE- (Long Term Evolution) oder einem anderen Protokoll zu empfangen und zu senden. Zusätzlich kann ein GPS-Sensor 1280 vorhanden sein. Andere drahtlose Kommunikationen, wie etwa Empfang oder Senden von Funksignalen, z. B. AM/FM und anderen Signalen, kann ebenfalls bereitgestellt sein. Zusätzlich kann, über einen WLAN-Sender-Empfänger 1275, lokale drahtlose Kommunikationen umgesetzt werden.
  • Obwohl in 12 nicht gezeigt, kann, in einigen Ausführungsformen, das System 1200 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Jetzt Bezug nehmend auf 13 ist ein Blockdiagramm eines weiteren beispielhaften Systems gezeigt, mit dem Ausführungsformen verwendet werden können. In der Darstellung aus 13 kann System 1300 ein mobiles Niederstromsystem sein, wie etwa ein Tablet-Computer, ein 2:1 -Tablet, ein Phablet oder ein anderes umwandelbares oder eigenständiges Tablet-System. Wie dargestellt, ist ein SoC 1310 vorhanden und kann dazu ausgelegt sein, als ein Anwendungsprozessor für eine Vorrichtung zu arbeiten.
  • Eine Vielfalt von Vorrichtungen kann mit SoC 1310 koppeln. In der gezeigten Darstellung umfasst ein Speicherteilsystem einen Flash-Speicher 1340 und einen DRAM 1345, gekoppelt mit dem SoC 1310. Zusätzlich ist ein Berührungsfeld 1320 mit dem SoC 1310 gekoppelt, um Anzeigefähigkeit und Benutzereingabe durch Berühren bereitzustellen, einschließlich Bereitstellung einer virtuellen Tastatur auf einer Anzeige eines Berührungsfelds 1320. Zum Bereitstellen von kabelgebundener Netzwerkkonnektivität koppelt das SoC 1310 mit einer Ethernet-Schnittstelle 1330. Ein peripherer Knoten 1325 ist mit dem SoC 1310 gekoppelt, um Verbinden mit verschiedenen peripheren Vorrichtungen zu ermöglichen, wie etwa solchen, die über verschiedene Ports oder andere Verbinder mit System 1300 gekoppelt werden können.
  • Zusätzlich zu internen Stromverwaltungsschaltungsanordnungen und - funktionalität innerhalb von SoC 1310 ist ein PMIC 1380 mit dem SoC 1310 gekoppelt, um plattformbasierte Stromverwaltung bereitzustellen, z. B. basierend darauf, ob das System durch eine Batterie 1390 oder Wechselstrom über einen Wechselstromadapter 1395 betrieben wird. Zusätzlich zu dieser stromquellenbasierten Stromverwaltung kann PMIC 1380 ferner, basierend auf Umgebungs- und Nutzungsbedingungen, Plattform-Stromverwaltungsaktivitäten durchführen. Noch ferner kann PMIC 1380 Steuerungs- und Statusinformationen an das SoC 1310 kommunizieren, um verschiedene Stromverwaltungsaktionen innerhalb des SoC 1310 zu veranlassen.
  • Weiterhin Bezug nehmend auf 13 ist, zum Bereitstellen von drahtlosen Fähigkeiten, eine WLAN-Einheit 1350 mit SoC 1310 und ihrerseits mit einer Antenne 1355 gekoppelt. In verschiedenen Umsetzungen kann WLAN-Einheit 1350 Kommunikation gemäß einem oder mehreren drahtlosen Protokollen bereitstellen.
  • Wie ferner dargestellt, können mehrere Sensoren 1360 mit SoC 1310 koppeln. Diese Sensoren können verschiedene Beschleunigungsmesser, Umgebungs- und andere Sensoren, einschließlich Benutzergestensensoren, umfassen. Schließlich ist ein Audio-Codec 1365 mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu einer Audioausgabevorrichtung 1370 bereitzustellen. Obwohl in 13 mit dieser bestimmten Umsetzung gezeigt, versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Obwohl in 13 nicht gezeigt, kann, in einigen Ausführungsformen, das System 1300 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Jetzt Bezug nehmend auf 14 ist ein Blockdiagramm eines repräsentativen Computersystems 1400, wie etwa eines Notebooks, Ultrabook™ oder eines anderen Systems mit kleinem Formfaktor gezeigt. Ein Prozessor 1410 umfasst, in einer Ausführungsform, einen Mikroprozessor, einen Mehrkemprozessor, einen Multithread-Prozessor, einen Ultraniedrigspannungsprozessor, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. In der dargestellten Umsetzung wirkt der Prozessor 1410 als eine Hauptverarbeitungseinheit und als zentraler Knoten zur Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400 und kann eine Stromverwaltungsschaltungsanordnung, wie hier beschrieben, umfassen. Als ein Beispiel ist der Prozessor 1410 als ein SOC umgesetzt.
  • Der Prozessor 1410 kommuniziert in einer Ausführungsform mit einem Systemspeicher 1415. Als ein veranschaulichendes Beispiel wird der Systemspeicher 1415 über mehrere Speichervorrichtungen oder -module umgesetzt, um eine gegebene Menge von Systemspeicher bereitzustellen.
  • Um eine dauerhafte Speicherung von Informationen, wie etwa Daten, Anwendungen, einem oder mehreren Betriebssystemen und so weiter, zu unterstützen, kann auch ein Massenspeicher 1420 mit dem Prozessor 1410 koppeln. In verschiedenen Ausführungsformen kann, um dünnere und leichtere Systemausgestaltungen zu ermöglichen sowie um das Ansprechverhalten des Systems zu verbessern, dieser Massenspeicher über ein SSD umgesetzt sein, oder der Massenspeicher kann primär unter Verwendung einer Festplatte (HDD; Hard Disk Drive) mit einer kleineren Menge an SSD-Speicher zum Wirken als ein SSD-Cache, um nicht-flüchtige Speicherung von Kontextzustand und anderen solchen Informationen während Stromlosereignissen zu ermöglichen, sodass bei der Neuinitiierung von Systemaktivitäten ein schnelles Hochfahren auftreten kann. Ebenfalls in 14 gezeigt ist eine Flash-Vorrichtung 1422, die mit dem Prozessor 1410 gekoppelt sein kann, z. B. über eine serielle Peripherieschnittstelle (SPI - Serial Peripheral Interface). Diese Flash-Vorrichtung kann eine nichtflüchtige Speicherung von Systemsoftware unterstützen, einschließlich einer Basic Input/Output Software (BIOS) sowie anderer Firmware des Systems.
  • Verschiedene Eingabe/Ausgabe(E/A)-Vorrichtungen können innerhalb des Systems 1400 vorhanden sein. Insbesondere ist in der Ausführungsform von 14 eine Anzeige 1424 gezeigt, die ein hochauflösendes LCD- oder LED-Feld sein kann, das ferner einen Touchscreen 1425 bereitstellt. In einer Ausführungsform kann die Anzeige 1424 mit einem Prozessor 1410 über eine Anzeigeverschaltung gekoppelt sein, die als eine Hochleistungsgrafikverschaltung umgesetzt sein kann. Der Touchscreen 1425 kann über eine weitere Verschaltung mit dem Prozessor 1410 gekoppelt sein, die in einer Ausführungsform eine I2C-Verschaltung sein kann. Wie weiter in 14 zusätzlich zum Touchscreen 1425 gezeigt ist, kann eine Benutzereingabe durch Berührung auch durch ein Touchpad 1430 stattfinden, welches innerhalb des Chassis konfiguriert sein kann und auch mit derselben I2C-Verschaltung wie der Touchscreen 1425 gekoppelt sein kann.
  • Für Wahrnehmungscomputing und andere Zwecke können verschiedene Sensoren innerhalb des Systems vorhanden sein und können mit dem Prozessor 1410 auf verschiedene Weisen gekoppelt sein. Gewisse Inertial- und Umgebungssensoren können mit dem Prozessor 1410 über einen Sensorknoten 1440, z. B. über eine I2C-Verschaltung, gekoppelt sein. Bei der in 14 gezeigten Ausführungsform können diese Sensoren einen Beschleunigungsmesser 1441, einen Umgebungslichtsensor (ALS) 1442, einen Kompass 1443 und ein Gyroskop 1444 umfassen. Andere Umgebungssensoren können einen oder mehrere thermische Sensoren 1446 umfassen, die in manchen Ausführungsformen über einen Systemverwaltungsbus (SMBus) mit dem Prozessor 1410 koppeln.
  • Wie in 14 ebenfalls zu sehen ist, können verschiedene Peripherievorrichtungen über eine Verschaltung mit niedriger Pinzahl (LPC, Low Pin Count) mit dem Prozessor 1410 koppeln. In der gezeigten Ausführungsform können verschiedene Komponenten über eine eingebettete Steuerung 1435 gekoppelt sein. Solche Komponenten können eine Tastatur 1436 (z. B. über eine PS2-Schnittstelle gekoppelt), einen Lüfter 1437 und einen thermischen Sensor 1439 umfassen. In einigen Ausführungsformen kann das Touchpad 1430 ebenfalls über eine PS2-Schnittstelle mit dem EC 1435 koppeln. Zusätzlich kann ein Sicherheitsprozessor, wie etwa ein Vertrauenswürdige-Plattform-Modul (TPM, Trusted Platform Module) 1438 auch über diese LPC-Verschaltung mit Prozessor 1410 koppeln.
  • Das System 1400 kann mit externen Vorrichtungen auf verschiedenste Weisen kommunizieren, einschließlich drahtlos. In der in 14 gezeigten Ausführungsform sind verschiedene Drahtlosmodule vorhanden, von denen jedes einer Funkvorrichtung entsprechen kann, die für ein bestimmtes drahtloses Kommunikationsprotokoll ausgelegt ist. Eine Weise für eine drahtlose Kommunikation auf kurze Entfernung, wie etwa einem Nahfeld, kann über eine NFC-Einheit 1445 erfolgen, die in einer Ausführungsform mit dem Prozessor 1410 über einen SMBus kommunizieren kann. Es sei angemerkt, dass über diese NFC-Einheit 1445 Vorrichtungen in direkter Nähe zueinander kommunizieren können.
  • Wie in 14 ferner gezeigt, können zusätzliche drahtlose Einheiten andere drahtlose Nahbereichs-Engines einschließen, einschließlich einer WLAN-Einheit 1450 und einer Bluetooth-Einheit 1452. Unter Verwendung von WLAN-Einheit 1450 können Wi-Fi™-Kommunikationen umgesetzt werden, während über Bluetooth™-Einheit 1452 Bluetooth™-Kommunikationen mit kurzer Reichweite erfolgen können. Diese Einheiten können über eine gegebene Verbindung mit Prozessor 1410 kommunizieren.
  • Zusätzlich können drahtlose Weitbereichskommunikationen, z.B. gemäß einem Mobilfunk- oder einem anderen drahtlosen Weitbereichsprotokoll, über eine WWAN-Einheit 1456 erfolgen, die ihrerseits mit einem Teilnehmer-Identitätsmodul (SIM, Subscriber Identity Module) 1457 koppeln kann. Zusätzlich kann auch ein GPS-Modul 1455 vorhanden sein, um einen Empfang und eine Verwendung von Ortsinformationen zu ermöglichen. Es ist anzumerken, dass in der in 14 gezeigten Ausführungsform WWAN-Einheit 1456 und eine integrierte Erfassungsvorrichtung, wie etwa ein Kameramodul 1454 über eine gegebene Verbindung kommunizieren können.
  • Zum Bereitstellen von Audioein- und -ausgaben kann ein Audioprozessor über einen Digitalsignalprozessor (DSP) 1460 umgesetzt sein, der mit dem Prozessor 1410 über eine hochauflösende Audioverbindung (HDA, High Definition Audio) gekoppelt sein kann. Gleichermaßen kann der DSP 1460 mit einem integrierten Coder/Decoder (CODEC) und Verstärker 1462 kommunizieren, der wiederum mit Ausgabelautsprechern 1463 koppeln kann, die innerhalb des Gehäuses umgesetzt sein können. Gleichermaßen kann der Verstärker und CODEC 1462 gekoppelt sein, um Audioeingaben von einem Mikrofon 1465 zu empfangen, das in einer Ausführungsform über Dual-Array-Mikrofone (wie etwa ein digitales Mikrofon-Array) umgesetzt sein kann, um qualitativ hochwertige Audioeingaben zu unterstützen, um eine sprachaktivierte Steuerung von verschiedenen Operationen innerhalb des Systems zu ermöglichen. Es sei angemerkt, dass Audioausgaben vom Verstärker/CODEC 1462 zu einer Kopfhörerbuchse 1464 zugeführt werden können. Obwohl in der Ausführungsform von 14 mit diesen bestimmten Komponenten gezeigt, versteht es sich, dass der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Obwohl in 14 nicht gezeigt, kann, in einigen Ausführungsformen, das System 1400 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Ausführungsformen können in vielen unterschiedlichen Systemtypen umgesetzt werden. Jetzt Bezug nehmend auf 15 ist ein Blockdiagramm eines Systems in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 gezeigt, ist Mehrprozessorsystem 1500 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Verbindung 1550 gekoppelt sind. Wie in 15 gezeigt, kann jeder der Prozessoren 1570 und 1580 Mehrkernprozessoren sein, umfassend erste und zweite Prozessorkerne (d. h. Prozessorkerne 1574a und 1574b und Prozessorkerne 1584a und 1584b), obwohl potenziell sehr viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU oder eine andere Stromverwaltungslogik zum Durchführen von prozessorbasierter Stromverwaltung, wie hier beschrieben, umfassen.
  • Weiterhin Bezug nehmend auf 15 umfasst der erste Prozessor 1570 ferner einen Speichersteuerungsknoten (MCH) 1572 und Punkt-zu-Punkt-Schnittstellen (P-P) 1576 und 1578. In ähnlicher Weise umfasst der zweite Prozessor 1580 einen MCH 1582 und P-P-Schnittstellen 1586 und 1588. Wie in 15 gezeigt, koppeln MCHs 1572 und 1582 die Prozessoren mit jeweiligen Speichern, insbesondere einem Speicher 1532 und einem Speicher 1534, die Teile des lokal mit den jeweiligen Prozessoren verbundenen Systemspeichers (z.B. DRAM) sein können. Der erste Prozessor 1570 und der zweite Prozessor 1580 können über P-P-Verschaltungen 1562 bzw. 1564 mit einem Chipsatz 1590 gekoppelt sein. Wie in 15 gezeigt, umfasst Chipsatz 1590 P-P-Schnittstellen 1594 und 1598.
  • Ferner umfasst Chipsatz 1590 eine Schnittstelle 1592 zum Koppeln von Chipsatz 1590 mit einer Hochleistungs-Grafikengine 1538 über eine P-P-Verschaltung 1539. Chipsatz 1590 kann seinerseits über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. Wie in 15 gezeigt, können verschiedene Eingabe/Ausgabe(E/A)-Vorrichtungen 1514 mit dem ersten Bus 1516 gekoppelt sein, zusammen mit einer Busbrücke 1518, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt. Verschiedene Vorrichtungen können mit dem zweiten Bus 1520 gekoppelt sein, einschließlich zum Beispiel einer Tastatur/Maus 1522, Kommunikationsvorrichtungen 1526 und einer Speichereinheit 1528, wie etwa einem Diskettenlaufwerk oder einer anderen Massenspeichervorrichtung, die in einer Ausführungsform Code 1530 umfassen kann. Ferner kann eine Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt sein. Ausführungsformen können in andere Typen von Systemen integriert sein, einschließlich mobiler Vorrichtungen, wie etwa Mobiltelefon, Tablet-Computer, Netbook, Ultrabook™ und so weiter.
  • Obwohl in 15 nicht gezeigt, kann, in einigen Ausführungsformen, das System 1500 alle oder einen Teil der Komponenten und/oder Prozesse umfassen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • Ein oder mehrere Aspekte zumindest einer Ausführungsform können durch einen repräsentativen Code umgesetzt sein, der auf einem maschinenlesbaren Medium gespeichert ist, das Logik innerhalb einer integrierten Schaltung, wie etwa eines Prozessors, repräsentiert und/oder definiert. Zum Beispiel kann das maschinenlesbare Medium Befehle umfassen, die verschiedene Logik innerhalb des Prozessors repräsentieren. Wenn sie von einer Maschine gelesen werden, können die Befehle die Maschine veranlassen, die Logik herzustellen, um die hierin beschriebenen Techniken durchzuführen. Solche Darstellungen, die als „IP-Kerne „bekannt sind, sind wiederverwendbare Logikeinheiten für eine integrierte Schaltung, die auf einem greifbaren, maschinenlesbaren Medium als ein Hardware-Modell gespeichert werden können, das die Struktur der integrierten Schaltung beschreibt. Das Hardware-Modell kann an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, die das Hardwaremodell auf Herstellungsmaschinen laden, die die integrierte Schaltung herstellen. Die integrierte Schaltung kann derart hergestellt sein, dass die Schaltung Operationen durchführt, die in Verbindung mit irgendeiner der hier beschriebenen Ausführungsformen beschrieben sind.
  • 16 ist ein Blockdiagramm, das ein IP-Kern-Entwicklungssystem 1600 gemäß einer Ausführungsform darstellt, das zur Herstellung einer integrierten Schaltung zur Durchführung von Operationen verwendet werden kann. Das IP-Kern-Entwicklungssystem 1600 kann verwendet werden, um modulare, wiederverwendbare Ausgestaltungen zu erzeugen, die in eine größere Ausgestaltung integriert werden können oder verwendet werden können, um eine gesamte integrierte Schaltung (z. B. eine integrierte SoC-Schaltung) aufzubauen. Eine Ausgestaltungseinrichtung 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 konzipieren, zu testen und zu verifizieren. Eine Registertransferebenen-Ausgestaltung (RTL, Register Transfer Level) kann dann aus dem Simulationsmodell erzeugt oder synthetisiert werden. Die RTL-Ausgestaltung 1615 ist eine Abstraktion des Verhaltens der integrierten Schaltung, die den Fluss digitaler Signale zwischen Hardwareregistern modelliert, einschließlich der zugehörigen Logik, die unter Verwendung der modellierten digitalen Signale ausgeführt wird. Neben einer RTL-Ausgestaltung 1615 können auch Ausgestaltungen auf niedrigerer Ebene auf der Logikebene oder der Transistorebene erzeugt, konzipiert oder synthetisiert werden. Daher können die speziellen Details der anfänglichen Ausgestaltung und der Simulation variieren.
  • Die RTL-Ausgestaltung 1615 oder ein Äquivalent kann ferner durch die Ausgestaltungseinrichtung in ein Hardwaremodell 1620 synthetisiert werden, das in einer Hardwarebeschreibungssprache (HDL, Hardware Description Language) oder einer anderen Darstellung von physischen Ausgestaltungsdaten vorliegen kann. Die HDL kann weiter simuliert oder getestet werden, um die IP-Kern-Ausgestaltung zu verifizieren. Die IP-Kern-Ausgestaltung kann zur Lieferung an eine Drittherstellereinrichtung 1665 unter Verwendung eines nichtflüchtigen Speichers 1640 (z. B. Festplatte, Flash-Speicher oder ein beliebiges nichtflüchtiges Speichermedium) gespeichert werden. Alternativ kann die IP-Kern-Ausgestaltung über eine Kabelverbindung 1650 oder eine drahtlose Verbindung 1660 (z. B. über das Internet) übertragen werden. Die Herstellungseinrichtung 1665 kann dann eine integrierte Schaltung herstellen, die zumindest teilweise auf der IP-Kern-Ausgestaltung basiert. Die hergestellte integrierte Schaltung kann dazu ausgelegt sein, Operationen in Übereinstimmung mit den Komponenten und/oder Prozessen durchzuführen, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden.
  • 17A-25 beschreibt nachfolgend detailliert beispielhafte Architekturen und Systeme zum Umsetzen von Ausführungsformen der Komponenten und/oder Prozesse, die nachfolgend Bezug nehmend auf 26-31 beschrieben werden. In einigen Ausführungsformen werden eine oder mehrere Hardwarekomponenten und/oder Befehle, die in 26-31 beschrieben werden, emuliert, wie nachfolgend detailliert aufgeführt, oder als Softwaremodule umgesetzt.
  • Ausführungsformen des bzw. der oben detaillierten Befehl(e) werden in einem „generischen vektorfreundlichen Befehlsformat“ ausgeführt bzw. können ausgeführt werden, was nachfolgend detailliert beschrieben wird. In anderen Ausführungsformen wird ein solches Format nicht genutzt, und ein anderes Befehlsformat wird genutzt, allerdings ist die folgende Beschreibung der Schreibmaskenregister, verschiedenen Datentransformationen (Mischen (Swizzle), Broadcast usw.), Adressierung usw. im Allgemeinen auf die obige Beschreibung der Ausführungsformen des Befehls bzw. der Befehle anwendbar. Zusätzlich werden beispielhafte Systeme, Architekturen und Pipelines nachfolgend ausführlich beschrieben. Obige Ausführungsformen des Befehls bzw. der Befehle können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind aber nicht auf jene ausführlich beschriebenen beschränkt.
  • Ein Befehlssatz kann ein oder mehrere Befehlsformate umfassen. Ein gegebenes Befehlsformat kann verschiedene Felder (Anzahl von Bits, Ort von Bits) zum Angeben, unter anderen Dingen, der Operation, die durchgeführt werden soll (Opcode) und des bzw. der Operanden, auf denen die Operation durchgeführt werden soll, und/oder andere(s) Datenfeld(er) (z. B. Maske) definieren. Einige Befehlsformate werden durch die Definition von Befehlsvorlagen (oder Unterformaten) weiter aufgeteilt. Beispielsweise können die Befehlsvorlagen eines gegebenen Befehlsformats so definiert sein, dass sie unterschiedliche Teilsätze der Felder des Befehlsformats haben (die enthaltenen Felder sind typischerweise in der gleichen Reihenfolge, aber zumindest einige haben unterschiedliche Bitpositionen, da weniger Felder enthalten sind) und/oder so definiert sein, dass ein gegebenes Feld unterschiedlich interpretiert wird. Daher wird jeder Befehl einer ISA unter Verwendung eines gegebenen Befehlsformats (und, wenn definiert, in einer gegebenen der Befehlsvorlagen dieses Befehlsformats) ausgedrückt und umfasst Felder zum Angeben der Operation und der Operanden. Beispielsweise hat ein beispielhafter ADD-Befehl einen spezifischen Opcode und ein Befehlsformat, das ein Opcode-Feld zum Angeben dieses Opcodes und Operandenfelder zum Auswählen von Operanden (Quelle 1/Ziel und Quelle2) umfasst; und ein Auftreten dieses ADD-Befehls in einem Befehlsstrom hat spezifische Inhalte in den Operandenfeldern, die spezifische Operanden auswählen. Ein Satz von SIMD-Erweiterungen, die als AVX (Advanced Vector Extensions - weiterentwickelte Vektorerweiterungen) (AVX1 und AVX2) bezeichnet werden, und das Verwenden des VEX-Codierungsschemas (VEX: Vector Extensions - Vektorerweiterungen) wurden herausgegeben und/oder veröffentlicht (siehe z. B. Intel® 64 und IA-32 Architectures Software Developer's Manual, September 2014; und siehe Intel® Advanced Vector Extensions Programming Reference, Oktober 2014).
  • Beispielhafte Befehlsformate
  • Ausführungsformen des bzw. der hier beschriebenen Befehle können in unterschiedlichen Formaten ausgeführt sein. Zusätzlich werden beispielhafte Systeme, Architekturen und Pipelines nachfolgend ausführlich beschrieben. Ausführungsformen des bzw. der Befehle können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind aber nicht auf diese aufgeführten beschränkt.
  • Generisches vektorfreundliches Befehlsformat
  • Ein vektorfreundliches Befehlsformat ist ein Befehlsformat, das für Vektorbefehle geeignet ist (z. B. gibt es gewisse Felder, die für Vektoroperationen spezifisch sind). Während Ausführungsformen beschrieben sind, in denen sowohl Vektor- als auch skalare Operationen durch das vektorfreundliche Format unterstützt sind, verwenden alternative Ausführungsformen nur Vektoroperationen im vektorfreundlichen Befehlsformat.
  • 17A-17B sind Blockdiagramme, ein generisches vektorfreundliches Befehlsformat und Befehlsvorlagen davon darstellend, gemäß Ausführungsformen der Erfindung. 17A ist ein Blockdiagramm, ein generisches vektorfreundliches Befehlsformat und Klasse-A-Befehlsvorlagen davon darstellend, gemäß Ausführungsformen der Erfindung; während 17B ein Blockdiagramm ist, das generische vektorfreundliche Befehlsformat und Klasse-B-Befehlsvorlagen davon darstellend, gemäß Ausführungsformen der Erfindung. Insbesondere ein generisches vektorfreundliches Befehlsformat 1700, für das Klasse-A- und Klasse-B-Befehlsvorlagen definiert sind, die beide Befehlsvorlagen ohne Speicherzugriff 1705 und Befehlsvorlagen mit Speicherzugriff 1720 umfassen. Der Begriff „generisch “im Kontext des vektorfreundlichen Befehlsformats bezieht sich darauf, dass das Befehlsformat nicht an einen spezifischen Befehlssatz gebunden ist.
  • Während Ausführungsformen der Erfindung beschrieben werden, in denen das vektorfreundliche Befehlsformat Folgendes unterstützt: eine 64-Byte-Vektoroperandenlänge (oder Größe) mit Datenelementbreiten (oder Größen) von 32 Bit (4 Byte) oder 64 Bit (8 Byte) (und daher besteht ein 64-Byte-Vektor entweder aus 16 Elementen in Doppelwortgröße oder alternativ aus 8 Elementen in Quadrupelwortgröße); eine 64-Byte-Vektoroperandenlänge (oder Größe) mit Datenelementbreiten (oder Größen) von 16 Bit (2 Byte) oder 8 Bit (1 Byte); eine 32-Byte-Vektoroperandenlänge (oder Größe) mit Datenelementbreiten (oder Größen) von 32 Bit (4 Byte), 64 Bit (8 Byte), 16 Bit (2 Byte) oder 8 Bit (1 Byte); und eine 16-Byte-Vektoroperandenlänge (oder Größe) mit Datenelementbreiten (oder Größen) von 32 Bit (4 Byte), 64 Bit (8 Byte), 16 Bit (2 Byte) oder 8 Bit (1 Byte); können alternative Ausführungsformen mehr, weniger und/oder verschiedene Vektoroperandengrößen (z. B. 256-Byte-Vektoroperanden) mit mehr, weniger oder verschiedenen Datenelementbreiten (z. B. Datenelementbreiten von 128 Bit (16 Byte)) unterstützen.
  • Die Klasse-A-Befehlsvorlagen in 17A umfassen: 1) innerhalb der Befehlsvorlagen ohne Speicherzugriff 1705 ist eine Befehlsvorlage für eine Operation vom vollen Rundungssteuerungstyp ohne Speicherzugriff 1710 und eine Befehlsvorlage für eine Operation vom Datentransformationstyp ohne Speicherzugriff 1715 gezeigt; und 2) innerhalb der Befehlsvorlagen mit Speicherzugriff 1720 ist eine temporale Befehlsvorlage mit Speicherzugriff 1725 und eine nicht-temporale Befehlsvorlage mit Speicherzugriff 1730 gezeigt. Die Klasse-B-Befehlsvorlagen in 17B umfassen: 1) innerhalb der Befehlsvorlagen ohne Speicherzugriff 1705 ist eine Befehlsvorlage für eine Operation vom teilweisen Rundungssteuerungstyp mit Schreibmaskensteuerung ohne Speicherzugriff 1712 und eine Befehlsvorlage für eine Operation vom vsize-Typ mit Schreibmaskensteuerung ohne Speicherzugriff 1717 gezeigt; und 2) innerhalb der Befehlsvorlagen mit Speicherzugriff 1720 ist eine Befehlsvorlage mit Schreibmaskensteuerung mit Speicherzugriff 1727 gezeigt.
  • Das generische vektorfreundliche Befehlsformat 1700 umfasst die folgenden Felder, nachfolgend in der in 17A-17B dargestellten Reihenfolge aufgeführt.
  • Formatfeld 1740 -ein spezifischer Wert (ein Befehlsformat-Identifiziererwert) in diesem Feld identifiziert eindeutig das vektorfreundliche Befehlsformat und daher Auftreten von Befehlen im vektorfreundlichen Befehlsformat in Befehlsströmen. Daher ist dieses Feld optional in dem Sinne, dass es nicht für einen Befehlssatz benötigt wird, der nur das generische vektorfreundliche Befehlsformat hat.
  • Basisoperationsfeld 1742 -sein Inhalt unterscheidet die unterschiedlichen Basisoperationen.
  • Registerindexfeld 1744 -sein Inhalt gibt, direkt oder über Adresserzeugung, die Orte der Quell- und Zieloperanden an, seien sie in Registern oder im Speicher. Dies umfasst eine ausreichende Anzahl von Bits zum Auswählen von N Registern aus einer PxQ-Registerdatei (z. B. 32×512, 16×128, 32×1024, 64×1024). Während in einer Ausführungsform N bis zu drei Quellen und ein Zielregister sein kann, können alternative Ausführungsformen mehr oder weniger Quellen und Zielregister unterstützen (z. B. können bis zu zwei Quellen unterstützen, wobei eine dieser Quellen auch als das Ziel wirkt; können bis zu drei Quellen unterstützen, wobei eine dieser Quellen auch als das Ziel wirkt; können bis zu zwei Quellen und ein Ziel unterstützen).
  • Modifiziererfeld 1746 -sein Inhalt unterscheidet Auftreten von Befehlen im generischen Vektorbefehlsformat, die Speicherzugriff angeben, von denen, die dies nicht tun; das heißt, zwischen Befehlsvorlagen ohne Speicherzugriff 1705 und Befehlsvorlagen mit Speicherzugriff 1720. Speicherzugriffsoperationen lesen und/oder schreiben in die Speicherhierarchie (in einigen Fällen die Quell- und Zieladressen unter Verwendung von Werten in Registern angebend), während Nicht-Speicherzugriffsoperationen dies nicht tun (z. B. die Quelle und Ziele sind Register). Während in einer Ausführungsform dieses Feld auch zwischen drei unterschiedlichen Wegen zum Durchführen von Speicheradressberechnungen auswählt, können alternative Ausführungsformen mehr, weniger oder verschiedene Wege zum Durchführen von Speicheradressberechnungen unterstützen.
  • Zusatzoperationsfeld 1750 -sein Inhalt unterscheidet, welche von mehreren unterschiedlichen Operationen zusätzlich zu der Basisoperation durchzuführen sind. Dieses Feld ist kontextspezifisch. In einer Ausführungsform der Erfindung wird dieses Feld in ein Klassenfeld 1768, ein Alpha-Feld 1752 und ein Beta-Feld 1754 unterteilt. Das Zusatzoperationsfeld 1750 ermöglicht gängigen Gruppen von Operationen, in einem einzelnen Befehl durchgeführt zu werden, anstatt in 2, 3 oder 4 Befehlen.
  • Skalierungsfeld 1760 -sein Inhalt ermöglicht das Skalieren des Inhalts des Indexfelds zur Speicheradresserzeugung (z. B. für Adresserzeugung, die 2Skalierung * Index + Basis verwendet).
  • Verschiebungsfeld 1762A -sein Inhalt wird als Teil einer Speicheradresserzeugung verwendet (z. B. für Adresserzeugung, die 2Skalierung * Index + Basis + Verschiebung verwendet).
  • Verschiebungsfaktorfeld 1762B (es ist anzumerken, dass die Stellung von Verschiebungsfeld 1762A direkt über Verschiebungsfaktorfeld 1762B anzeigt, dass das eine oder das andere verwendet wird) -sein Inhalt wird als Teil der Adresserzeugung verwendet; gibt einen Verschiebungsfaktor an, der um die Größe eines Speicherzugriffs (N) zu skalieren ist -wobei N die Anzahl von Bytes im Speicherzugriff ist (z. B. für Adresserzeugung, die 2Skalierung * Index + Basis + skalierte Verschiebung verwendet). Redundante Bits niedriger Ordnung werden ignoriert, und daher wird der Inhalt des Verschiebungsfaktorfelds mit der Speicheroperandengesamtgröße (N) multipliziert, um die abschließende Verschiebung zu erzeugen, die beim Berechnen einer effektiven Adresse zu verwenden ist. Der Wert von N wird durch die Prozessorhardware bei Laufzeit basierend auf dem vollen Opcode-Feld 1774 (hier später beschrieben) und dem Datenmanipulationsfeld 1754C bestimmt. Das Verschiebungsfeld 1762A und das Verschiebungsfaktorfeld 1762B sind optional in dem Sinn, dass sie nicht für die Befehlsvorlagen ohne Speicherzugriff 1705 verwendet werden, und/oder unterschiedliche Ausführungsformen können nur eins oder keins der zwei umsetzen.
  • Datenelementbreitenfeld 1764 -sein Inhalt unterscheidet, welche einer Anzahl von 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 Sinn, dass es nicht benötigt wird, wenn nur eine Datenelementbreite unterstützt wird und/oder Datenelementbreiten unter Verwendung einiger Aspekte der Opcodes unterstützt werden.
  • Schreibmaskenfeld 1770 -sein Inhalt steuert, basierend auf der Datenelementposition, ob diese Datenelementposition im Zielvektoroperanden das Ergebnis der Basisoperation und Zusatzoperation widerspiegelt. Klasse-A-Befehlsvorlagen unterstützen Zusammenführungs-Schreibmaskierung, während Klasse-B-Befehlsvorlagen sowohl Zusammenführungs- als auch Nullungs-Schreibmaskierung unterstützen. Beim Zusammenführen erlauben Vektormasken jedem Satz von Elementen im Ziel, vor Aktualisierungen während der Ausführung einer beliebigen Operation (angegeben durch die Basisoperation und die Zusatzoperation) geschützt zu werden; in einer anderen Ausführungsform, Beibehalten des alten Werts jedes Elements des Ziels, wo das zugehörige Maskenbit eine 0 hat. Im Gegensatz dazu erlauben beim Nullen Vektormasken einem beliebigen Satz von Elementen im Ziel, während der Ausführung eines beliebigen Befehls (angegeben durch die Basisoperation und die Zusatzoperation) genullt zu werden; in einer Ausführungsform wird ein Element des Ziels auf 0 gesetzt, wenn das zugehörige Maskenbit einen 0-Wert hat. Eine Teilmenge dieser Funktionalität ist die Fähigkeit, die Vektorlänge der durchzuführenden Operation zu steuern (das heißt die Spanne von Elementen, die modifiziert werden, vom ersten bis zum letzten); allerdings ist es nicht notwendig, dass die Elemente, die modifiziert werden, aufeinander folgen. Daher erlaubt das Schreibmaskenfeld 1770 teilweise Vektoroperationen, einschließlich Ladeoperationen, Speicherungen, arithmetisch, logisch usw. Während Ausführungsformen der Erfindung beschrieben werden, in denen der Inhalt des Schreibmaskenfelds 1770 eines aus einer Anzahl von Schreibmaskenregistern auswählt, das die zu verwendende Schreibmaske enthält (und daher identifiziert der Inhalt des Schreibmaskenfelds 1770 indirekt die durchzuführende Maskierung), erlauben alternative Ausführungsformen stattdessen oder zusätzlich dem Inhalt des Schreibmaskenfelds 1770, die durchzuführende Maskierung direkt anzugeben.
  • Direktoperandenfeld 1772 -sein Inhalt ermöglicht die Spezifikation eines Direktoperanden. Dieses Feld ist optional in dem Sinn, dass es in einer Umsetzung des generischen vektorfreundlichen Formats, das keinen Direktoperanden unterstützt, nicht vorhanden ist, und dass es nicht in Befehlen vorhanden ist, die keine Direktoperanden verwenden.
  • Klassenfeld 1768 -sein Inhalt unterscheidet zwischen unterschiedlichen Klassen von Befehlen. Mit Bezug auf 17A-B wählen die Inhalte dieses Felds zwischen Klasse-A- und Klasse-B-Befehlen aus. In den 17A-B werden Quadrate mit abgerundeten Ecken verwendet, um anzuzeigen, dass ein spezifischer Wert in einem Feld vorhanden ist (z. B. Klasse A 1768A bzw. Klasse B 1768B für das Klassenfeld 1768 in 17A-B).
  • Befehlsvorlagen der Klasse A
  • Im Falle der Befehlsvorlagen der Klasse A ohne Speicherzugriff 1705 wird das Alpha-Feld 1752 als ein RS-Feld 1752A interpretiert, dessen Inhalt unterscheidet, welche der unterschiedlichen Zusatzoperationstypen durchzuführen sind (z. B. Runden 1752A.1 und Datentransformation 1752A.2 sind jeweils für die Befehlsvorlagen für Operation vom Rundungstyp ohne Speicherzugriff 1710 bzw. die Operation vom Datentransformationstyp 1715 ohne Speicherzugriff angegeben), während das Beta-Feld 1754 unterscheidet, welche der Operationen des angegebenen Typs durchzuführen sind. In den Befehlsvorlagen ohne Speicherzugriff 1705 sind das Skalierungsfeld 1760, das Verschiebungsfeld 1762A und das Verschiebungsskalierungsfeld 1762B nicht vorhanden.
  • Befehlsvorlagen ohne Speicherzugriff -Operation vom vollen Rundungssteuerungstyp
  • In der Befehlsvorlage für die Operation vom vollen Rundungssteuerungstyp ohne Speicherzugriff 1710 wird das Beta-Feld 1754 als Rundungsteuerungsfeld 1754A interpretiert, dessen Inhalt(e) statisches Runden bietet bzw. bieten. Während in den beschriebenen Ausführungsformen der Erfindung das Rundungssteuerungsfeld 1754A ein Feld zum Unterdrücken aller Gleitkommaausnahmen (SAE) 1756 und ein Rundungsoperationssteuerungsfeld 1758 umfasst, können alternative Ausführungsformen diese beiden Konzepte unterstützen und in das gleiche Feld codieren oder nur ein oder das andere dieser Konzepte/Felder haben (z. B. kann nur das Rundungsoperationssteuerfeld 1758 haben).
  • SAE-Feld 1756 -sein Inhalt unterscheidet, ob oder ob nicht Melden von Ausnahmeereignissen deaktiviert werden soll; wenn der Inhalt des SAE-Felds 1756 anzeigt, dass Unterdrückung aktiviert ist, meldet ein gegebener Befehl keinen Typ von Gleitkommaausnahmen-Flag und zeigt keinen Gleitkommaausnahmen-Handler an.
  • Rundungsoperationssteuerfeld 1758 -sein Inhalt unterscheidet, welche aus einer Gruppe von Rundungsoperationen durchzuführen ist (z. B. Aufrunden, Abrunden, Runden Richtung null und Runden zur nächstgelegenen Rundungszahl). Daher erlaubt das Rundungsoperationssteuerfeld 1758 das Ändern des Rundungsmodus auf einer Befehlsbasis. In einer Ausführungsform der Erfindung, wo ein Prozessor ein Steuerregister zum Angeben der Rundungsmodi umfasst, überschreibt der Inhalt des Rundungsoperationssteuerfelds 1750 diesen Registerwert.
  • Befehlsvorlagen ohne Speicherzugriff -Operation vom Datentransformationstyp
  • In der Befehlsvorlage der Operation vom Datentransformationstyp ohne Speicherzugriff 1715 wird das Beta-Feld 1754 als ein Datentransformationsfeld 1754B interpretiert, dessen Inhalt unterscheidet, welche aus einer Anzahl von Datentransformationen durchzuführen ist (z. B. keine Datentransformation, Mischen, Senden).
  • Im Falle einer Befehlsvorlage der Klasse A mit Speicherzugriff 1720 wird das Alpha-Feld 1752 als ein Räumungshinweisfeld 1752B interpretiert, dessen Inhalt unterscheidet, welcher der Räumungshinweise zu verwenden ist (in 17A sind temporal 1752B.1 und nicht-temporal 1752B.2 angegeben für die temporale Befehlsvorlage mit Speicherzugriff 1725 bzw. die nicht-temporale Befehlsvorlage mit Speicherzugriff 1730), während das Beta-Feld 1754 als ein Datenmanipulationsfeld 1754C interpretiert wird, dessen Inhalt unterscheidet, welche aus einer Anzahl von Datenmanipulationsoperationen (auch als Primitiven bekannt) durchzuführen sind (z. B. keine Manipulation; Senden; Aufwärtsumwandlung einer Quelle; und Abwärtsumwandlung eines Ziels). Die Befehlsvorlagen mit Speicherzugriff 1720 umfassen das Skalierungsfeld 1760 und optional das Verschiebungsfeld 1762A oder das Verschiebungsskalierungsfeld 1762B.
  • Vektorspeicherbefehle führen Vektorladeoperationen vom und Vektorspeicheroperationen im Speicher mit Umwandlungsunterstützung durch. Wie bei regulären Vektorbefehlen, transferieren Vektorspeicherbefehle Daten datenelementweise vom/in den Speicher, wobei die Elemente, die tatsächlich transferiert werden, durch die Inhalte der Vektormaske, die als Schreibmaske ausgewählt ist, bestimmt wird.
  • Befehlsvorlagen mit Speicherzugriff -Temporal
  • Temporale Daten sind Daten, die wahrscheinlich bald genug wiederverwendet werden, um von Caching profitieren zu können. Dies ist allerdings ein Hinweis, und unterschiedliche Prozessoren können dies in unterschiedlichen Weisen umsetzen, einschließlich vollständiges Ignorieren des Hinweises.
  • Befehlsvorlagen mit Speicherzugriff -Nicht-temporal
  • Nicht-temporale Daten sind Daten, die wahrscheinlich nicht bald genug wiederverwendet werden, um von Caching im Level-1-Cache profitieren zu können und denen Priorität für Räumung gegeben werden sollte. Dies ist allerdings ein Hinweis, und unterschiedliche Prozessoren können dies in unterschiedlichen Weisen umsetzen, einschließlich vollständiges Ignorieren des Hinweises.
  • Befehlsvorlagen der Klasse B
  • Im Falle der Befehlsvorlagen der Klasse B wird das Alpha-Feld 1752 als ein Schreibmaskensteuerfeld (Z) 1752C interpretiert, dessen Inhalt unterscheidet, ob die durch das Schreibmaskenfeld 1770 gesteuerte Schreibmaskierung zusammenführend oder nullend sein soll.
  • Im Falle der Befehlsvorlagen der Klasse B ohne Speicherzugriff 1705 wird ein Teil des Beta-Felds 1754 als ein RL-Feld 1757A interpretiert, dessen Inhalt unterscheidet, welche der unterschiedlichen Zusatzoperationstypen durchzuführen sind (z. B. Runden 1757A.1 und Vektorlänge (VSIZE) 1757A.2 sind jeweils für die Befehlsvorlage für Schreibmaskensteuerungsoperation vom teilweisen Rundungssteuerungstyp ohne Speicherzugriff 1712 bzw. die Befehlsvorlage für Schreibmaskensteuerungsoperation vom VSIZE-Typ ohne Speicherzugriff 1717 angegeben), während der Rest des Beta-Felds 1754 unterscheidet, welche der Operationen des angegebenen Typs durchzuführen sind. In den Befehlsvorlagen ohne Speicherzugriff 1705 sind das Skalierungsfeld 1760, das Verschiebungsfeld 1762A und das Verschiebungsskalierungsfeld 1762B nicht vorhanden.
  • In der Befehlsvorlage für Schreibmaskensteuerungsoperation vom teilweisen Rundungssteuerungstyp ohne Speicherzugriff 1710 wird der Rest des Beta-Felds 1754 als ein Rundungsoperationsfeld 1759A interpretiert, und Melden von Ausnahmeereignissen ist deaktiviert (ein gegebener Befehl meldet keinen Typ von Gleitkommaausnahmen-Flag und zeigt keinen Gleitkommaausnahmen-Handler an).
  • Rundungsoperationssteuerfeld 1759A -wie bei Rundungsoperationssteuerfeld 1758, unterscheidet sein Inhalt, welche aus einer Gruppe von Rundungsoperationen durchzuführen ist (z. B. Aufrunden, Abrunden, Runden Richtung null und Runden zur nächstgelegenen Rundungszahl). Daher erlaubt das Rundungsoperationssteuerfeld 1759A das Ändern des Rundungsmodus auf einer Befehlsbasis. In einer Ausführungsform der Erfindung, wo ein Prozessor ein Steuerregister zum Angeben der Rundungsmodi umfasst, überschreibt der Inhalt des Rundungsoperationssteuerfelds 1750 diesen Registerwert.
  • In der Befehlsvorlage der Schreibmaskensteuerungsoperation vom VSIZE-Typ ohne Speicherzugriff 1717 wird der Rest des Beta-Felds 1754 als ein Vektorlängenfeld 1759B interpretiert, dessen Inhalt unterscheidet, auf welcher einer Anzahl von Datenvektorlängen durchgeführt werden soll (z. B. 128, 256 oder 512 Byte).
  • Im Falle einer Befehlsvorlage der Klasse B mit Speicherzugriff 1720 wird ein Teil des Beta-Felds 1754 als ein Sendefeld 1757B interpretiert, dessen Inhalt unterscheidet, ob oder ob nicht die Datenmanipulationsoperation vom Sendetyp durchzuführen ist, während der Rest des Beta-Felds 1754 als das Vektorlängenfeld 1759B interpretiert wird. Die Befehlsvorlagen mit Speicherzugriff 1720 umfassen das Skalierungsfeld 1760 und optional das Verschiebungsfeld 1762A oder das Verschiebungsskalierungsfeld 1762B.
  • Hinsichtlich des generischen vektorfreundlichen Befehlsformats 1700, ist ein volles Opcode-Feld 1774 gezeigt, das Formatfeld 1740, das Basisoperationsfeld 1742 und das Datenelementbreitenfeld 1764 umfassend. Während eine Ausführungsform gezeigt ist, bei der das volle Opcode-Feld 1774 all diese Felder umfasst, umfasst das volle Opcode-Feld 1774 in Ausführungsformen, die nicht alle unterstützen, weniger als alle diese Felder. Das volle Opcode-Feld 1774 stellt den Operationscode (Opcode) bereit.
  • Das Zusatzoperationsfeld 1750, das Datenelementbreitenfeld 1764 und das Schreibmaskenfeld 1770 ermöglichen, dass diese Merkmale auf einer befehlsweisen Grundlage im generischen vektorfreundlichen Befehlsformat angegeben werden können.
  • Die Kombination aus Schreibmaskenfeld und Datenelementbreitenfeld erzeugt typenbehaftete Befehle dahingehend, dass sie ermöglichen, die Maske basierend auf unterschiedlichen Datenelementbreiten anzuwenden.
  • Die verschiedenen Befehlsvorlagen, die in Klasse A und Klasse B zu finden sind, sind in unterschiedlichen Situationen vorteilhaft. In einigen Ausführungsformen der Erfindung können unterschiedliche Prozessoren oder unterschiedliche Kerne nur Klasse A, nur Klasse B oder beide Klassen unterstützen. Beispielsweise kann ein universeller reihenfolgeveränderter (Out-of-order) Hochleistungskem, der für universelles Rechnen gedacht ist, nur Klasse B unterstützen, ein Kern, der primär für Grafik und/oder wissenschaftliches (Durchsatz) Rechnen gedacht ist, kann nur Klasse A unterstützen, und ein Kern, der für beides gedacht ist, kann beide unterstützen (natürlich liegt ein Kern, der einen gewissen Mix aus Vorlagen und Befehlen von beiden Klassen hat, aber nicht alle Vorlagen und Befehle von beiden Klassen, innerhalb des Geltungsbereichs der Erfindung). Außerdem kann ein einzelner Prozessor mehrere Kerne umfassen, die alle die gleiche Klasse unterstützen oder von denen verschiedene Kerne unterschiedliche Klassen unterstützen. Beispielsweise kann in einem Prozessor mit separaten Grafik- und universellen Kernen einer der Grafikkerne, die primär für Grafik und/oder wissenschaftliches Rechnen gedacht sind, nur Klasse A unterstützen, während einer oder mehrere der universellen Kerne universelle Hochleistungskerne mit reihenfolgeveränderter (Out-of-order) Ausführung und Registerumbenennung sein können, die für universelles Rechnen gedacht sind, die nur Klasse B unterstützen. Ein weiterer Prozessor, der keinen separaten Grafikkern hat, kann einen oder mehrere reihenfolgetreue (In-order) oder reihenfolgeveränderte (Out-of-order) Kerne umfassen, die sowohl Klasse A als auch Klasse B unterstützen. Natürlich können in verschiedenen Ausführungsformen der Erfindung Merkmale von einer Klasse auch in der anderen Klasse umgesetzt sein. Programme, die in einer höheren Sprache geschrieben sind, würden in eine Vielzahl von unterschiedlichen ausführbaren Formen gebracht werden (z. B. just-in-timekompiliert oder statisch kompiliert), umfassend: 1) eine Form, nur Befehle der Klasse(n) aufweisend, die durch den Zielprozessor für Ausführung unterstützt werden; oder 2) eine Form, alternative Routinen aufweisend, die unter Verwendung unterschiedlicher Kombinationen aller Klassen geschrieben wurden und Steuerflusscode aufweisen, der die auszuführenden Routinen basierend auf den durch den Prozessor, der momentan den Code ausführt, unterstützten Befehlen auswählt.
  • Beispielhaftes spezifisches vektorfreundliches Befehlsformat
  • 18A-18C sind Blockdiagramme, die ein beispielhaftes spezifisches vektorfreundliches Befehlsformat gemäß Ausführungsformen der Erfindung darstellen; 18A zeigt ein spezifisches vektorfreundliches Befehlsformat 1800, das spezifisch in dem Sinn ist, dass es den Ort, die Größe, die Interpretation und die Reihenfolge der Felder sowie Werte für einige dieser Felder angibt. Das spezifische vektorfreundliche Befehlsformat 1800 kann verwendet werden, um den x86-Befehlssatz zu erweitern, und daher sind einige der Felder ähnlich wie oder die gleichen wie die, die im bestehenden x86-Befehlssatz und Erweiterungen davon (z. B. AVX) verwendet werden. Dieses Format bleibt konsistent mit dem Präfixcodierungsfeld, dem Real-Opcode-Bytefeld, dem MOD R/M-Feld, dem SIB-Feld, dem Verschiebungsfeld und dem Direktausführungsfeld des vorhandenen x86-Befehlssatzes mit Erweiterungen. Die Felder aus 17A-17B, in die die Felder aus 18A-18C abgebildet werden, sind dargestellt.
  • Es versteht sich, dass, obwohl Ausführungsformen der Erfindung zu Darstellungszwecken unter Bezugnahme auf das spezifische vektorfreundliche Befehlsformat 1800 im Kontext des generischen vektorfreundlichen Befehlsformats 1700 beschrieben sind, die Erfindung nicht auf das spezifische vektorfreundliche Befehlsformat 1800 beschränkt ist, ausgenommen dort, wo beansprucht. Beispielsweise berücksichtigt das generische vektorfreundliche Befehlsformat 1700 eine Vielzahl möglicher Größen für die verschiedenen Felder, während das spezifische vektorfreundliche Befehlsformat 1800 als Felder mit spezifischen Größen aufweisend gezeigt ist. Als spezifisches Beispiel, während das Datenelementbreitenfeld 1764 als ein Ein-Bit-Feld im spezifischen vektorfreundlichen Befehlsformat 1800 dargestellt ist, ist die Erfindung nicht so beschränkt (das heißt, das generische vektorfreundliche Befehlsformat 1700 zieht andere Größen für das Datenelementbreitenfeld 1764 in Betracht).
  • Das generische vektorfreundliche Befehlsformat 1700 umfasst die folgenden Felder, nachfolgend in der in 18A dargestellten Reihenfolge aufgeführt.
  • EVEX-Präfix (Bytes 0-3) 1802 -ist in einer Vier-Byte-Form codiert.
  • Formatfeld 1740 (EVEX-Byte 0, Bits [7:0]) -das erste Byte (EVEX-Byte 0) ist das Formatfeld 1740, und es beinhaltet 0x62 (der eindeutige Wert, der in einer Ausführungsform der Erfindung zum Unterscheiden des vektorfreundlichen Befehls verwendet wird).
  • Die zweiten bis vierten Bytes (EVEX-Bytes 1-3) umfassen eine Anzahl von Bitfeldern, die eine spezifische Fähigkeit bieten.
  • 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 einem EVEX.B-Byte 1, Bit[5] -B). Die EVEX.R-, EVEX.X- und EVEX.B-Bitfelder bieten die gleiche Funktionalität wie die zugehörigen VEX-Bitfelder und werden unter Verwendung der Einerkomplementform codiert, d. h. ZMM0 wird als 1111B codiert, ZMM15 wird als 0000B codiert. Andere Felder der Befehle codieren die niedrigeren drei Bits der Registerindizes, wie im Fachgebiet bekannt ist (rrr, xxx und bbb), sodass Rrrr, Xxxx und Bbbb durch Addieren von EVEX.R, EVEX.X und EVEX.B gebildet werden können.
  • 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 die unteren 16 des erweiterten 32-Register-Satzes zu codieren. In einer Ausführungsform der Erfindung wird dieses Bit, zusammen mit anderen, wie nachfolgend angezeigt, im bitinvertierten Format gespeichert, um (im wohlbekannten x86-32-Bit-Modus) vom BOUND-Befehl zu unterscheiden, dessen Real-Opcode-Byte 62 ist, akzeptiert aber nicht im MOD-R/M-Feld (nachfolgend beschrieben) den Wert von 11 im MOD-Feld; alternative Ausführungsformen der Erfindung speichern dieses und die anderen nachfolgend angezeigten Bits nicht im invertierten Format. Ein Wert von 1 wird verwendet, um die unteren 16 Register zu codieren. Mit anderen Worten, R'Rrrr wird durch Kombinieren von EVEX.R', EVEX.R und den anderen RRR aus anderen Feldern gebildet.
  • Opcode-Abbildungsfeld 1815 (EVEX-Byte 1, Bits [3:0] -mmmm) -sein Inhalt codiert ein impliziertes führendes Opcode-Byte (0F, 0F 38 oder 0F 3).
  • Datenelementbreitenfeld 1764 (EVEX-Byte 2, Bit [7] -W) -wird durch die Notation EVEX.W repräsentiert. EVEX.W wird verwendet, um die Granularität (Größe) des Datentyps zu definieren (entweder 32-Bit-Datenelemente oder 64-Bit-Datenelemente).
  • 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, angegeben in invertierter Form (Einerkomplement) und ist gültig für Befehle mit 2 oder mehr Quelloperanden; 2) EVEX.vwv codiert den Zielregisteroperanden, angegeben in Einerkomplementform für gewisse Vektorverschiebungen; oder 3) EVEX.vwv codiert keinen Operanden, das Feld ist reserviert und sollte 1111b enthalten. Daher codiert EVEX.vvvv-Feld 1820 die 4 Bits niedriger Ordnung des ersten Quellregisterspezifizierers, gespeichert in invertierter Form (Einerkomplement). In Abhängigkeit vom Befehl wird ein zusätzliches unterschiedliches EVEX-Bitfeld verwendet, um die Spezifizierergröße auf 32 Register zu erweitern.
  • EVEX.U-Klassenfeld 1768 (EVEX-Byte 2, Bit [2]-U) -Wenn EVEX.U = 0, zeigt dies Klasse A oder EVEX.U0 an; wenn EVEX.U = 1, zeigt dies Klasse B oder EVEX.U1 an.
  • Präfixcodierungsfeld 1825 (EVEX-Byte 2, Bits [1:0]-pp) bietet zusätzliche Bits für das Basisoperationsfeld. Zusätzlich zum Bereitstellen von Unterstützung für ältere SSE-Befehle im EVEX-Präfixformat hat dies auch den Vorteil des Kompaktierens des SIMD-Präfixes (anstatt dass ein Byte erforderlich ist, um das SIMD-Präfix auszudrücken, erfordert das EVEX-Präfix nur 2 Bits). In einer Ausführungsform werden, um die älteren SSE-Befehle zu unterstützen, die ein SIMD-Präfix (66H, F2H, F3H) sowohl im älteren Format als auch im EVEX-Präfixformat verwenden, diese älteren SIMD-Präfixe in das SIMD-Präfixcodierungsfeld codiert und werden bei Laufzeit in das ältere SIMD-Präfix erweitert, bevor Sie der PLA des Decodierers bereitgestellt werden (sodass die PLA sowohl das ältere als auch das EVEX-Format dieser älteren Befehle ohne Modifikationen ausführen kann). Obwohl neuere Befehle den Inhalt des EVEX-Präfixcodierungsfelds direkt als eine Opcode-Erweiterung verwenden können, erweitern gewisse Ausführungsformen aus Gründen der Konsistenz in einer ähnlichen Weise, erlauben aber, dass unterschiedliche Bedeutungen durch diese älteren SIMD-Präfixe angegeben werden. Eine alternative Ausführungsform kann die PLA neu konzipieren, um die 2-Bit-SIMD-Präfixcodierungen zu unterstützen, und daher die Erweiterung nicht benötigen.
  • Alpha-Feld 1752 (EVEX-Byte 3, Bit [7] -EH; auch bekannt als EVEX.EH, EVEX.rs, EVEX.RL, EVEX.write mask control (Schreibmaskensteuerung) und EVEX.N; auch dargestellt durch α) -wie vorher beschrieben, ist dieses Feld kontextspezifisch.
  • Beta-Feld 1754 (EVEX-Byte 3, Bits [6:4]-SSS, auch bekannt als EVEX.s2-0, EVEX.r2-0, EVEX.rr1, EVEX.LL0, EVEX.LLB; auch dargestellt durch βββ) -wie vorher beschrieben, ist dieses Feld kontextspezifisch.
  • 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 die unteren 16 des erweiterten 32-Register-Satzes zu codieren. Dieses Bit wird im bitinvertierten Format gespeichert. Ein Wert von 1 wird verwendet, um die unteren 16 Register zu codieren. Mit anderen Worten, V'VVVV wird durch Kombinieren von EVEX.V', EVEX.vvvv gebildet.
  • Schreibmaskenfeld 1770 (EVEX-Byte 3, Bits [2:0]-kkk) -sein Inhalt gibt den Index eines Registers in den Schreibmaskenregistem an, wie vorher beschrieben. In einer Ausführungsform der Erfindung hat der spezifische Wert EVEX.kkk=000 ein spezielles Verhalten, implizierend, dass keine Schreibmaske für den bestimmten Befehl verwendet wird (dies kann auf verschiedene Weisen umgesetzt werden, einschließlich des Verwendens einer Schreibmaske, fest mit allen verdrahtet, oder von 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 angegeben.
  • MOD-R/M-Feld 1840 (Byte 5) umfasst MOD-Feld 1842, Reg-Feld 1844 und R/M-Feld 1846. Wie zuvor beschrieben, unterscheidet der Inhalt des MOD-Felds 1842 zwischen Operationen mit Speicherzugriff und ohne Speicherzugriff. Die Rolle von Reg-Feld 1844 kann für zwei Situationen zusammengefasst werden: Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden, oder als eine Opcode-Erweiterung behandelt zu werden und nicht zum Codieren eines Befehlsoperanden verwendet zu werden. Die Rolle von R/M-Feld 1846 kann Folgendes umfassen: Codieren des Befehlsoperanden, der sich auf eine Speicheradresse bezieht, oder Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden.
  • Skalierungs-Index-Basis-Byte (SIB, Scale, Index, Base) (Byte 6) -Wie zuvor beschrieben, wird der Inhalt des Skalierungsfelds 1850 für Speicheradressenerzeugung verwendet. SIB.xxx 1854 und SIB.bbb 1856 -auf die Inhalte dieser Felder wurde vorher im Zusammenhang mit den Registerindizes Xxxx und Bbbb Bezug genommen.
  • Verschiebungsfeld 1762A (Bytes 7-10) -wenn MOD-Feld 1842 eine 10 beinhaltet, sind Bytes 7-10 das Verschiebungsfeld 1762A, und es funktioniert genau so wie die ältere 32-Bit-Verschiebung (disp32) und arbeitet mit Bytegranularität.
  • Verschiebungsfaktorfeld 1762B (Byte 7) -wenn MOD-Feld 1842 eine 01 enthält, ist Byte 7 das Verschiebungsfaktorfeld 1762B. Der Ort dieses Felds ist der gleiche wie der der älteren 8-Bit-Verschiebung (disp8) im x86-Befehlssatz, die mit Bytegranularität arbeitet. Da disp8 vorzeichenerweitert ist, kann es nur Versätze zwischen -128 und 127 Bytes adressieren; in Verbindung mit 64-Byte-Cache-Zeilen verwendet disp8 acht (8) Bits, die auf nur vier wirklich sinnvolle Werte -128, -64, 0 und 64 gesetzt werden können; da häufig ein größerer Bereich benötigt ist, wird disp32 verwendet; disp32 erfordert allerdings 4 Bytes. Im Gegensatz zu disp8 und disp32 ist das Verschiebungsfaktorfeld 1762B eine Neuinterpretation von disp8; bei Verwenden von Verschiebungsfaktorfeld 1762B wird die tatsächliche Verschiebung durch den Inhalt des Verschiebungsfaktorfelds, multipliziert mit der Größe des Speicheroperandenzugriffs (N) bestimmt. Dieser Typ von Verschiebung wird als disp8*N bezeichnet. Dies verringert die durchschnittliche Befehlslänge (ein einzelnes Byte wird für die Verschiebung verwendet, aber 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 dass daher die redundanten Bits niedrigerer Ordnung des Adressenversatzes nicht codiert werden müssen. Mit anderen Worten, das Verschiebungsfaktorfeld 1762B ersetzt die 8-Bit-Verschiebung des älteren x86-Befehlssatzes. Daher wird das Verschiebungsfaktorfeld 1762B auf die gleiche Weise codiert wie eine 8-Bit-Verschiebung des x86-Befehlssatzes (also keine Änderungen in den ModRM/SIB-Codierregeln), mit der einzigen Ausnahme, dass disp8 auf disp8*N überladen wird. Mit anderen Worten, es gibt keine Änderungen in den Codierregeln oder Codierlängen, sondern nur bei der Interpretation des Verschiebungswertes durch Hardware (die die Verschiebung um die Größe des Speicheroperanden skalieren muss, um einen byteweisen Adressenversatz zu erhalten). Direktoperandenfeld 1772 arbeitet, wie zuvor beschrieben.
  • Volles Opcode-Feld
  • 18B ist ein Blockdiagramm, die Felder des spezifischen vektorfreundlichen Befehlsformats 1800, die das volle Opcode-Feld 1774 bilden, darstellend, gemäß einer Ausführungsform der Erfindung. Insbesondere umfasst das volle Opcode-Feld 1774 das Formatfeld 1740, das Basisoperationsfeld 1742 und das Datenelementbreitenfeld (W) 1764. Das Basisoperationsfeld 1742 umfasst das Präfixcodierungsfeld 1825, das Opcode-Abbildungsfeld 1815 und das Real-Opcode-Feld 1830.
  • Registerindexfeld
  • 18C ist ein Blockdiagramm, die Felder des spezifischen vektorfreundlichen Befehlsformats 1800, die das Registerindexfeld 1744 bilden, darstellend, gemäß einer Ausführungsform der Erfindung. 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.
  • Zusatzoperationsfeld
  • 18D ist ein Blockdiagramm, die Felder des spezifischen vektorfreundlichen Befehlsformats 1800, die das Zusatzoperationsfeld 1750 bilden, darstellend, gemäß einer Ausführungsform der Erfindung. Wenn das Klassenfeld (U) 1768 eine 0 enthält, bedeutet dies EVEX.U0 (Klasse A 1768A); wenn es eine 1 enthält, bedeutet dies EVEX.U1 (Klasse B 1768B). Wenn U=0 und das MOD-Feld 1842 eine 11 enthält (eine Operation ohne Speicherzugriff bedeutend), 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 (Runden 1752A.1), wird das Beta-Feld 1754 (EVEX-Byte 3, Bits [6:4]- SSS) als das Rundungssteuerfeld 1754A interpretiert. Das Rundungssteuerfeld 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 das Drei-Bit-Datentransformationsfeld 1754B interpretiert. Wenn U=0 und das MOD-Feld 1842 eine 00, 01 oder 10 enthält (eine Operation mit Speicherzugriff bedeutend), wird das Alpha-Feld 1752 (EVEX-Byte 3, Bit [7] -EH) als das Räumungshinweisfeld (EH, Eviction Hint) 1752B interpretiert, und das Beta-Feld 1754 (EVEX-Byte 3, Bits [6:4]- SSS) wird als ein Drei-Bit-Datenmanipulationsfeld 1754C interpretiert.
  • Wenn U=1, wird das Alpha-Feld 1752 (EVEX-Byte 3, Bit [7] -EH) als das Schreibmaskensteuerfeld (Z) 1752C interpretiert. Wenn U=1 und das MOD-Feld 1842 eine 11 enthält (eine Operation ohne Speicherzugriff bedeutend), wird ein Teil des Beta-Felds 1754 (EVEX-Byte 3, Bit [4]- So) als das RL-Feld 1757A interpretiert; wenn es eine 1 enthält (Runden 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), wird 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. Wenn U=1 und das MOD-Feld 1842 eine 00, 01 oder 10 enthält (eine Operation mit Speicherzugriff bedeutend), 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 Sendefeld 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 dargestellten Ausführungsform gibt es 32 Vektorregister 1910, die 512 Bits breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die 256 Bits niedrigerer Ordnung der unteren 16 zmm-Register werden auf Register ymm0-16 überlagert. Die 128 Bits niedrigerer Ordnung der unteren 16 zmm-Register (die 128 Bit niedriger Ordnung der ymm-Register) werden auf Register xmmO-15 überlagert. Das spezifische vektorfreundliche Befehlsformat 1800 operiert auf dieser überlagerten Registerdatei, wie in den folgenden Tabellen dargestellt.
    Einstellbare Vektorlänge Klasse Operationen Register
    Befehlsvorlagen, die das Vektorlängenfeld 1759B nicht umfassen A ( 17A; U=0) 1710, 1715, 1725, 1730 zmm-Register (die Vektorlänge ist 64 Byte)
    B ( 17B; U=1) 1712 zmm-Register (die Vektorlänge ist 64 Byte)
    Befehlsvorlagen, die das Vektorlängenfeld 1759B umfassen B ( 17B; U=1) 1717, 1727 zmm-, ymm- oder xmm-Register (die Vektorlänge ist 64 Byte, 32 Byte oder 16 Byte) in Abhängigkeit vom Vektorlängenfeld 1759B
  • Mit anderen Worten, das Vektorlängenfeld 1759B wählt zwischen einer maximalen Länge und einer oder mehreren anderen kürzeren Längen aus, wobei jede der solchen kürzeren Längen die halbe Länge der vorhergehenden Länge ist, und Befehlsvorlagen ohne das Vektorlängenfeld 1759B operieren auf der maximalen Vektorlänge. Ferner operieren, in einer Ausführungsform, die Klasse-B-Befehlsvorlagen des spezifischen vektorfreundlichen Befehlsformats 1800 auf gepackten oder skalaren Gleitkommadaten mit einfacher/doppelter Genauigkeit und gepackten oder skalaren ganzzahligen Daten. Skalare Operationen sind Operationen, die auf der Datenelementposition der niedrigsten Ordnung in einem zmm/ymm/xmm-Register durchgeführt werden; die Datenelementpositionen der höheren Ordnung werden, in Abhängigkeit von der Ausführungsform, entweder so gelassen, wie sie vor dem Befehl waren, oder genullt.
  • Schreibmaskenregister 1915 -in der dargestellten Ausführungsform gibt es 8 Schreibmaskenregister (k0 bis k7), die jeweils 64 Bit groß sind. In einer alternativen Ausführungsform haben die Schreibmaskenregister 1915 eine Größe von 16 Bit. Wie zuvor beschrieben, kann, in einer Ausführungsform der Erfindung, das Vektormaskenregister k0 nicht als eine Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 anzeigen würde, für eine Schreibmaske verwendet wird, wählt sie eine fest verdrahtete Schreibmaske 0xFFFF aus, dadurch effektiv die Schreibmaskierung für diesen Befehl deaktivierend.
  • Universelle Register 1925 -in der dargestellten Ausführungsform gibt es sechzehn universelle 64-Bit-Register, die zusammen mit den vorhandenen x86-Adressierungsmodi verwendet werden, um Speicheroperanden zu adressieren. Diese Register sind mit RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 bezeichnet.
  • Die skalare Gleitkommastapelregisterdatei (x87-Stapel) 1945, die als Alias für die gepackte ganzzahlige flache MMX-Registerdatei 1950 verwendet wird -in der dargestellten Ausführungsform ist der x87-Stapel ein Acht-Elemente-Stapel, der verwendet wird, um skalare Gleitkommaoperationen auf 32/64/80-Bit-Gleitkommadaten unter Verwendung der x87-Befehlssatzerweiterung durchzuführen; während die MMX-Register verwendet werden, um Operationen auf gepackten ganzzahligen 64-Bit-Daten durchzuführen sowie um Operanden für einige Operationen zu halten, die zwischen dem MMX- und dem XMM-Register durchgeführt werden.
  • Alternative Ausführungsformen der Erfindung können weitere oder engere Register verwenden. Zusätzlich können alternative Ausführungsformen der Erfindung mehr, weniger oder unterschiedliche Registerdateien und Register verwenden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Prozessorkerne können auf unterschiedliche Weisen, für unterschiedliche Zwecke und in unterschiedlichen Prozessoren umgesetzt sein. Beispielsweise können Umsetzungen solcher Kerne Folgendes umfassen: 1) einen universellen reihenfolgetreuen (In-order) Kern, gedacht für universelles Rechnen; 2) einen universellen reihenfolgeveränderten (Out-of-order) Hochleistungskern, gedacht für universelles Rechnen; 3) einen speziellen Kern, primär gedacht für Grafik und/oder wissenschaftliche (Durchsatz) Berechnung. Umsetzungen von unterschiedlichen Prozessoren können umfassen: 1) eine CPU, einen oder mehrere universelle reihenfolgetreue (In-order) Kerne, gedacht für universelles Rechnen, und/oder einen oder mehrere universelle reihenfolgeveränderte (Out-of-order) Kerne, gedacht für universelles Rechnen, umfassend; und 2) einen Koprozessor, einen oder mehrere spezielle Kerne, primär gedacht für Grafik und/oder Wissenschaft (Durchsatz), umfassend. Solche unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die Folgendes umfassen können: 1) den Koprozessor auf einem von der CPU separaten Chip; 2) den Koprozessor auf einem separaten Die im gleichen Chipgehäuse wie eine CPU; 3) den Koprozessor auf dem gleichen Die wie eine CPU (in diesem Fall wird ein solcher Koprozessor manchmal als spezielle Logik, wie etwa als integrierte Grafik und/oder wissenschaftliche (Durchsatz) Logik, oder als spezielle Kerne bezeichnet); und 4) ein System auf einem Chip, das auf demselben Die die beschriebene CPU (manchmal als der bzw. die Anwendungskerne oder Anwendungsprozessoren bezeichnet), den oben beschriebenen Koprozessor und zusätzliche Funktionalität umfassen kann. Beispielhafte Kernarchitekturen werden als nächstes beschrieben, gefolgt von Beschreibungen von beispielhaften Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • Blockdiagramm zu reihenfolgetreuem (In-order) und reihenfolgeverändertem (Out-of-order) Kern
  • 20A ist ein Blockdiagramm, das sowohl eine beispielhafte reihenfolgetreue (In-order) Pipeline als auch eine beispielhafte reihenfolgeveränderte (Out-of-order) Ausgabe-/Ausführungspipeline mit Registerumbenennung gemäß Ausführungsformen der Erfindung darstellt. 20B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel für einen reihenfolgetreuen Architekturkern als auch einen beispielhaften reihenfolgeveränderten Registerumbenennungs-Ausgabe/Ausführungs-Architekturkern, der in einem Prozessor aufzunehmen ist, gemäß Ausführungsformen der Erfindung veranschaulicht. Die Felder mit durchgezogenen Linien in den 20A-B stellen die reihenfolgetreue Pipeline und den reihenfolgetreuen Kern dar, während die optionale Hinzufügung von Feldern mit gestrichelten Linien die/den reihenfolgeveränderte(n) Ausgabe-/Ausführungspipeline bzw. -kern mit Registerumbenennung darstellt. Angesichts der Tatsache, dass der reihenfolgetreue (In-order) Aspekt eine Teilmenge des reihenfolgeveränderten (Out-of-order) Aspekts ist, wird der reihenfolgeveränderte Aspekt beschrieben.
  • In 20A umfasst eine Prozessorpipeline 2000 eine Abrufstufe 2002, eine Längendecodierstufe 2004, eine Decodierstufe 2006, eine Zuordnungsstufe 2008, eine Umbenennungsstufe 2010, eine Ablaufsteuerungsstufe (Scheduling, auch als Verteilung oder Ausgabe bekannt) 2012, eine Registerlese-/Speicherlesestufe 2014, eine Ausführungsstufe 2016, eine Zurückschreibe-/Speicherschreibestufe 2018, eine Ausnahmenbehandlungsstufe 2022 und eine Übergabestufe 2024.
  • 20B zeigt Prozessorkern 2090, eine Frontendeinheit 2030 umfassend, gekoppelt mit einer Ausführungsengineeinheit 2050, und beide sind mit einer Speichereinheit 2070 gekoppelt. Der Kern 2090 kann ein Kern mit reduziertem Befehlssatz (RISC, Reduced Instruction Set Computing), ein Kern mit komplexem Befehlssatz (CISC, Complex Instruction Set Computing), ein Kern mit sehr langen Befehlswörtern (VLIW, Very Long Instruction Word) oder ein hybrider oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 2090 ein spezieller Kern sein, wie etwa, beispielsweise, ein Netzwerk- oder Kommunikationskern, eine Komprimierungsengine, ein Koprozessorkern, ein universeller Berechnungskern für Grafikprozessoreinheiten (GPGPU, General Purpose Computing Graphics Processing Unit), ein Grafikkern oder ähnliches.
  • Die Frontendeinheit 2030 umfasst eine Verzweigungsvorhersageeinheit 2032, gekoppelt mit einer Befehlscacheeinheit 2034, die mit einem Befehlsübersetzungspuffer (TLB, Instruction Translation Lookaside Buffer) 2036 gekoppelt ist, der mit einer Befehlsabrufeinheit 2038 gekoppelt ist, die mit einer Decodiereinheit 2040 gekoppelt ist. Die Decodiereinheit 2040 (oder Decodierer) kann Befehle decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocodeeinstiegspunkte, Mikrobefehle oder Befehle oder andere Steuersignale decodieren, die aus den ursprünglichen Befehlen decodiert werden oder diese anderweitig widerspiegeln oder aus diesen abgeleitet sind. Die Decodiereinheit 2040 kann unter Verwendung verschiedener unterschiedlicher Mechanismen umgesetzt sein. Beispiele von geeigneten Mechanismen umfassen, sind aber nicht beschränkt auf, Nachschlagetabellen, Hardwareumsetzungen, programmierbare Logikarrays (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 gewisse Makrobefehle speichert (z. B. in Decodiereinheit 2040 oder anderweitig innerhalb der Frontendeinheit 2030). Die Decodiereinheit 2040 ist mit einer Umbenennungs-/Zuordnungseinheit 2052 in der Ausführungsengineeinheit 2050 gekoppelt.
  • Die Ausführungsengineeinheit 2050 umfasst die Umbenennungs-/Zuordnungseinheit 2052, gekoppelt mit einer Rückzugseinheit 2054 und einer Menge von einer oder mehreren Ablaufsteuerungseinheiten 2056. Die Ablaufsteuerungseinheit(en) 2056 stellt bzw. stellen eine beliebige Anzahl von unterschiedlichen Ablaufsteuerungseinheiten dar, einschließlich Reservierungsstationen, zentralem Befehlsfenster usw. Ablaufsteuerungseinheit(en) 2056 ist bzw. sind mit der bzw. den physischen Registerdateieinheiten 2058 gekoppelt. Jede der physischen Registerdateieinheiten 2058 stellt eine oder mehrere physische Registerdateien dar, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie etwa skalare Ganzzahlen, skalare Gleitkommazahlen, gepackte Ganzzahlen, gepackte Gleitkommazahlen, Vektorganzzahlen, Vektorgleitkommazahlen, 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 skalare Registereinheit. Diese Registereinheiten können architektonische Vektorregister, Vektormaskenregister und universelle Register bereitstellen. Die physische(n) Registerdatei(en)einheit(en) 2058 wird bzw. werden von der Rückzugseinheit 2054 überlappt, um verschiedene Weisen darzustellen, in denen Registerumbenennung und reihenfolgeveränderte Ausführung umgesetzt werden können (z. B. unter Verwendung eines Neuordnungspuffers und einer Rückzugsregisterdatei; unter Verwendung einer Zukunftsdatei, eines Verlaufspuffers und einer Rückzugsregisterdatei; unter Verwendung einer Registerabbildung und einer Sammlung von Registern usw.). Die Rückzugseinheit 2054 und die physischen Registerdatei(en)einheit(en) 2058 ist bzw. sind mit dem bzw. den Ausführungsclustern 2060 gekoppelt. Der bzw. die Ausführungscluster 2060 umfassen eine Menge von einer oder mehreren Ausführungseinheiten 2062 und eine Menge von einer oder mehreren Speicherzugriffseinheiten 2064. Die Ausführungseinheiten 2062 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) auf verschiedenen Typen von Daten (z. B. skalare Gleitkommadaten, gepackte ganzzahlige Daten, gepackte Gleitkommadaten, Vektorganzzahl, Vektorgleitkomma) durchführen. Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten, speziell für spezifische Funktionen oder Mengen von Funktionen bestimmt, umfassen können, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, die allesamt alle Funktionen durchführen. Die Ablaufsteuerungseinheit(en) 2056, die physischen Registerdatei(en)einheit(en) 2058 und das bzw. die Ausführungscluster 2060 werden als möglicherweise mehrere gezeigt, da gewisse Ausführungsformen separate Pipelines für gewisse Typen von Daten/Operationen erzeugen (z. B. eine skalare ganzzahlige Pipeline, eine skalare Gleitkomma-/gepackte ganzzahlige/gepackte Gleitkomma-/Vektorganzzahl-/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriffspipeline, die jeweils ihre(n) eigene(n) Ablaufsteuerungseinheit, physische Registerdatei(en)einheit und/oder Ausführungscluster haben -und im Falle einer separaten Speicherzugriffspipeline sind gewisse Ausführungsformen umgesetzt, bei denen nur das Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 2064 hat). Es versteht sich auch, dass dort, wo separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines reihenfolgeveränderte Ausgabe-/Ausführungspipelines und die restlichen reihenfolgetreue sein können.
  • Die Menge von Speicherzugriffseinheiten 2064 ist mit der Speichereinheit 2070 gekoppelt, die eine Daten-TLB-Einheit 2072 umfasst, gekoppelt mit einer Datencacheeinheit 2074, gekoppelt mit einer Level-2-Cacheeinheit (L2) 2076. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 2064 eine Ladeeinheit, eine Adressspeichereinheit und eine Datenspeichereinheit beinhalten, von denen jede mit der Daten-TLB-Einheit 2072 in der Speichereinheit 2070 gekoppelt ist. Die Befehlscacheeinheit 2034 ist ferner mit einer Level-2-Cacheeinheit (L2) 2076 in der Speichereinheit 2070 gekoppelt. Die L2-Cacheeinheit 2076 ist mit einer oder mehreren anderen Cacheebenen und eventuell mit dem Hauptspeicher gekoppelt.
  • Als Beispiel kann die beispielhafte, Register umbenennende reihenfolgeveränderte Ausgabe-/Ausführungskernarchitektur die Pipeline 2000 wie folgt umsetzen: 1) der Befehlsabruf 2038 führt die Abruf- und die Längendecodierstufen 2002 und 2004 durch; 2) die Decodiereinheit 2040 führt die Decodierstufe 2006 durch; 3) die Umbenennungs-/Zuordnungseinheit 2052 führt die Zuordnungsstufe 2008 und die Umbenennungsstufe 2010 durch; 4) die Ablaufsteuerungseinheit(en) 2056 führt bzw. führen die Ablaufsteuerungsstufe 2012 durch; 5) die physische(n) Registerdatei(en)einheit(en) 2058 und die Speichereinheit 2070 führen die Registerlese-/Speicherlesestufe 2014 durch; der Ausführungscluster 2060 führt die Ausführungsstufe 2016 durch; 6) die Speichereinheit 2070 und die physische(n) Registerdatei(en)einheit(en) 2058 führen die Zurückschreibe-/Speicherschreibestufe 2018 durch; 7) verschiedene Einheiten können bei der Ausnahmenbehandlungsstufe 2022 beteiligt sein; und 8) die Rückzugseinheit 2054 und die physische(n) Registerdatei(en)einheit(en) 2058 führen die Übergabestufe 2024 durch.
  • Der Kern 2090 kann einen oder mehrere Befehlssätze (z.B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen, wie etwa NEON) von ARM Holdings aus Sunnyvale, CA) unterstützen, einschließlich der hier beschriebenen Befehle. In einer Ausführungsform umfasst der Kern 2090 Logik zum Unterstützen einer Befehlssatzerweiterung mit gepackten Daten (z. B. AVX1, AVX2), dadurch ermöglichend, dass Operationen, die von vielen Multimedia-Anwendungen verwendet werden, mit gepackten Daten durchgeführt werden.
  • Es versteht sich, dass der Kern Mehrsträngigkeit (oder Multithreading, Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf vielfältige Weisen vornehmen kann, einschließlich Zeitscheiben-Multithreading, Simultan-Multithreading (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die der physische Kern simultan im Multithreading behandelt), oder eine Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und Simultan-Multithreading danach, wie etwa bei der Intel® Hyperthreading-Technologie).
  • Während Registerumbenennung im Kontext von reihenfolgeveränderter (Out-of-order) Ausführung beschrieben ist, versteht es sich, dass Registerumbenennung in einer reihenfolgetreuen (In-order) Architektur verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch separate Befehls- und Datencacheeinheiten 2034/2074 und eine gemeinsam genutzte L2-Cacheeinheit 2076 umfasst, können alternative Ausführungsformen einen einzelnen internen Cache für Befehle und Daten haben, wie etwa, beispielsweise, einen internen Level-1-Cache (L1) oder mehrere Ebenen von internem Cache. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache umfassen, die extern zum Kern und/oder zum Prozessor ist. Alternativ kann der gesamte Cache extern zum Kern und/oder zum Prozessor sein.
  • Spezifische beispielhafte reihenfolgetreue (In-order) Kernarchitektur
  • 21A-B stellen ein Blockdiagramm einer spezifischeren beispielhaften reihenfolgetreuen (In-order) Kernarchitektur dar, deren Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne vom gleichen Typ und/oder anderen Typen) in einem Chip wäre. Die Logikblöcke kommunizieren über ein Verbindungsnetzwerk mit hoher Bandbreite (z. B. ein Ringnetzwerk) mit einigen festen Funktionslogiken, Speicher-E/A-Schnittstellen und anderen notwendigen E/A-Logiken, in Abhängigkeit von der Anwendung.
  • 21A ist ein Blockdiagramm eines einzelnen Prozessorkerns, zusammen mit seiner Verbindung zu dem On-Die-Verbindungsnetzwerk 2102 und mit seinem lokalen Teilsatz des Level-2-Caches (L2) 2104, gemäß Ausführungsformen der Erfindung. In einer Ausführungsform unterstützt ein Befehlsdecodierer 2100 den x86-Befehlssatz mit einer Befehlssatzerweiterung mit gepackten Daten. Ein LI-Cache 2106 ermöglicht Zugriffe mit geringer Latenz auf einen Cachespeicher in die skalaren und Vektoreinheiten. Während in einer Ausführungsform (zum Vereinfachen der Konzeption) eine skalare Einheit 2108 und eine Vektoreinheit 2110 separate Registersätze verwenden (skalare Register 2112 bzw. Vektorregister 2114) und Daten, die zwischen ihnen transferiert werden, in Speicher geschrieben und dann von einem Level-1-Cache (L1) 2106 zurückgelesen werden, können alternative Ausführungsformen der Erfindung einen unterschiedlichen Ansatz verwenden (z. B. einen einzelnen Registersatz verwenden oder einen Kommunikationspfad umfassen, der Daten ermöglicht, zwischen den zwei Registerdateien transferiert zu werden, ohne geschrieben und zurückgelesen zu werden).
  • Der lokale Teilsatz des L2-Caches 2104 ist Teil eines globalen L2-Caches, der in separate lokale Teilsätze unterteilt wird, einen pro Prozessorkern. Jeder Prozessorkern hat einen direkten Zugriffspfad auf seinen eigenen lokalen Teilsatz des L2-Caches 2104. Daten, die von einem Prozessorkern gelesen werden, werden in dessen L2-Cacheteilsatz 2104 gespeichert, und auf sie kann schnell zugegriffen werden, parallel mit anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cacheteilsätze zugreifen. Daten, die durch einen Prozessorkern geschrieben werden, werden in dessen eigenem L2-Cacheteilsatz 2104 gespeichert und werden, wenn nötig, aus anderen Teilsätzen ausgeräumt. Das Ringnetzwerk sichert Kohärenz der gemeinsam genutzten Daten. Das Ringnetzwerk ist bidirektional, um Agenten, wie etwa Prozessorkernen, L2-Caches und anderen Logikblöcken zu ermöglichen, innerhalb des Chips miteinander zu kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1012 Bit breit.
  • 21B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 21A gemäß Ausführungsformen der Erfindung. 21B umfasst einen L1-Datencache 2106A als Teil des L1-Caches 2104, sowie weitere Details hinsichtlich 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 Ganzzahlbefehle, Gleitkommabefehle mit einfacher Genauigkeit und Gleitkommabefehle mit doppelter Genauigkeit ausführt. Die VPU unterstützt Mischen der Registereingänge mit Mischeinheit 2120, numerische Umwandlung mit numerischen Umwandlungseinheiten 2122A-B und Replikation mit Replikationseinheit 2124 auf dem Speichereingang. Schreibmaskenregister 2126 ermöglichen das Prädizieren von resultierenden Vektorschreibvorgängen.
  • 22 ist ein Blockdiagramm eines Prozessors 2200, der mehr als einen Kern haben kann, der eine integrierte Speichersteuerung haben kann und der integrierte Grafik haben kann, gemäß Ausführungsformen der Erfindung; Die Felder mit den durchgezogenen Linien in 22 stellen einen Prozessor 2200 mit einem einzelnen Kern 2202A, einen Systemagenten 2210 und eine Menge von einer oder mehreren Bussteuerungseinheiten 2216 dar, während die optionale Hinzufügung von Feldern mit gestrichelten Linien einen alternativen Prozessor 2200 mit mehreren Kernen 2202A-N, eine Menge von einer oder mehreren integrierten Speichersteuerungeinheiten 2214 in der Systemagenteneinheit 2210 und spezieller Logik 2208 darstellt.
  • Daher können unterschiedliche Umsetzungen des Prozessors 2200 umfassen: 1) eine CPU, wobei die spezielle Logik 2208 integrierte Grafik und/oder wissenschaftliche (Durchsatz) Logik ist (die einen oder mehrere Kerne umfassen kann), und wobei die Kerne 2202A-N ein oder mehrere universelle Kerne sind (z. B. universelle reihenfolgetreue (In-order) Kerne, universelle reihenfolgeveränderte (Out-of-order) Kerne, eine Kombination aus den zwei); 2) einen Koprozessor, wobei die Kerne 2202A-N eine große Anzahl von speziellen Kernen sind, primär für Grafik und/oder wissenschaftliches (Durchsatz) Rechnen gedacht; und 3) einen Koprozessor, wobei die Kerne 2202A-N eine große Anzahl von universellen reihenfolgetreuen (In-order) Kernen sind. Daher kann der Prozessor 2200 ein universeller Prozessor, Koprozessor oder spezieller Prozessor sein, wie etwa, beispielsweise, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsengine, ein Grafikprozessor, eine universelle Grafikprozessor-Berechnungseinheit (GPGPU, General Purpose Graphics Processing Unit), ein Koprozessor mit hohem Durchsatz und vielen integrierten Kernen (MIC, Many Integrated Core) (30 oder mehr Kerne umfassend), ein eingebetteter Prozessor oder ähnliches. Der Prozessor kann auf einem oder mehreren Chips umgesetzt sein. Der Prozessor 2200 kann ein Teil eines und/oder kann auf einem oder mehreren Substraten unter Verwendung einer beliebigen aus einer Anzahl von Prozesstechnologien umgesetzt sein, wie etwa, beispielsweise, BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst eine oder mehrere Cacheebenen innerhalb der Kerne, einen Satz von einer oder mehreren gemeinsam genutzten Cacheeinheiten 2206 und externen Speicher (nicht gezeigt), gekoppelt mit der Menge von integrierten Speichersteuerungseinheiten 2214. Die Menge von gemeinsam genutzten Cacheeinheiten 2206 kann einen oder mehrere Mid-Level-Caches, wie etwa Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cacheebenen, einen Cache auf der untersten Ebene (LLC, Last Level Cache) und/oder Kombinationen davon umfassen. Während in einer Ausführungsform eine ringbasierte Verbindungseinheit 2212 die integrierte Grafiklogik 2208, die Menge von gemeinsam genutzten Cacheeinheiten 2206 und die Systemagenteneinheit 2210/die integrierte(n) Speichersteuerungseinheit(en) 2214 verbinden, können alternative Ausführungsformen eine beliebige Anzahl von wohlbekannten Techniken zum Verbinden solcher Einheiten verwenden. In einer Ausführungsform wird Kohärenz zwischen einer oder mehreren Cacheeinheiten 2206 und Kernen 2202-A-N gewahrt.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 2202AN zu Multithreading fähig. Der Systemagent 2210 umfasst diejenigen Komponenten, die Kerne 2202A-N koordinieren und betreiben. Die Systemagenteneinheit 2210 kann, beispielsweise, eine Leistungssteuerungseinheit (PCU, Power Control Unit) und eine Anzeigeeinheit umfassen. Die PCU kann Logik und Komponenten, die zum Regeln des Leistungszustands der Kerne 2202A-N und der integrierten Grafiklogik 2208 benötigt werden, sein oder umfassen. Die Anzeigeeinheit dient zum Ansteuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 2202A-N können homogen oder heterogen in Bezug auf den Architekturbefehlssatz sein; das heißt, zwei oder mehr der Kerne 2202A-N können zur Ausführung des gleichen Befehlssatzes in der Lage sein, während andere möglicherweise in der Lage sind, nur einen Teilsatz dieses Befehlssatzes oder einen unterschiedlichen Befehlssatz auszuführen.
  • Beispielhafte Computerarchitekturen
  • 23-24 sind Blockdiagramme beispielhafter Computerarchitekturen. Andere im Fachgebiet bekannte Systemkonzeptionen und -auslegungen für Laptops, Desktops, handgestützte PCs, persönliche digitale Assistenten, technische Workstations, Server, Netzwerkvorrichtungen, Netzwerkknoten, Weichen, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienabspielvorrichtungen, handgestützte Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind ebenfalls geeignet. Im Allgemeinen ist eine riesige Vielfalt von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder andere Ausführungslogik, wie hier offenbart, zu integrieren, allgemein geeignet.
  • Jetzt Bezug nehmend auf 23 ist ein Blockdiagramm eines Systems 2300 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 2300 kann einen oder mehrere Prozessoren 2310, 2315 umfassen, die mit einem Steuerungsknoten 2320 gekoppelt sind. In einer Ausführungsform umfasst der Steuerungsknoten 2320 einen Grafikspeichersteuerungsknoten (GMCH, Graphics Memory Controller Hub) 2390 und einen Eingabe/Ausgabe-Knoten (IOH, Input/Output Hub) 2350 (die sich auf separaten Chips befinden können); der GMCH 2390 umfasst Speicher- und Grafiksteuerungen, mit denen Speicher 2340 und ein Koprozessor 2345 gekoppelt sind; der IOH 2350 koppelt Eingabe-/Ausgabevorrichtungen (E/A) 2360 mit dem GMCH 2390. Alternativ sind die Speicher- und/oder die Grafiksteuerung in den Prozessor integriert (wie hier beschrieben), der Speicher 2340 und der Koprozessor 2345 sind direkt mit dem Prozessor 2310 gekoppelt, und der Steuerungsknoten 2320 in einem einzelnen Chip mit dem IOH 2350.
  • Die optionale Natur der zusätzlichen Prozessoren 2315 wird in 23 durch unterbrochene Linien gekennzeichnet. Jeder Prozessor 2310,2315 kann einen oder mehrere der hier beschriebenen Verarbeitungskerne umfassen und kann eine Version des Prozessors 2200 sein.
  • Der Speicher 2340 kann, beispielsweise, ein dynamischer Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory), ein Phasenwechselspeicher (PCM, Phase Change Memory) oder eine Kombination aus den zweien sein. In zumindest einer Ausführungsform kommuniziert der Steuerungsknoten 2320 mit dem bzw. den Prozessoren 2310, 2315 über einen Multi-Drop-Bus, wie etwa einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie etwa QuickPath Interconnect (QPI) oder eine ähnliche Verbindung 2395.
  • In einer Ausführungsform ist der Koprozessor 2345 ein spezieller Prozessor, wie etwa, beispielsweise, ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder ein Kommunikationsprozessor, eine Komprimierungsengine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches. In einer Ausführungsform kann der Steuerungsknoten 2320 einen integrierten Grafikbeschleuniger umfassen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physischen Ressourcen 2310, 2315 im Hinblick auf ein Spektrum von relevanten Metriken geben, einschließlich architektonisch, mikroarchitektonisch, thermisch, der Stromverbrauchscharakteristiken und ähnliches.
  • In einer Ausführungsform führt der Prozessor 2310 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Eingebettet in die Befehle können Koprozessorbefehle sein. Der Prozessor 2310 erkennt, dass diese Koprozessorbefehle von einem Typ sind, der durch den angeführten Koprozessor 2345 ausgeführt werden soll. Entsprechend gibt der Prozessor 2310 diese Koprozessorbefehle (oder Steuersignale, die Koprozessorbefehle darstellend) auf einem Koprozessorbus oder einer anderen Verbindung an den Koprozessor 2345 aus. Ein oder mehrere Koprozessoren 2345 akzeptieren die empfangenen Koprozessorbefehle und führen sie aus.
  • Jetzt Bezug nehmend auf 24 ist ein Blockdiagramm eines SoC 2400 in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 22 tragen ähnliche Bezugszeichen. Außerdem sind Felder mit gestrichelten Linien optionale Merkmale auf weiterentwickelten SoCs. In 24 ist bzw. sind Verbindungseinheit(en) 2402 gekoppelt mit: einem Anwendungsprozessor 2410, der einen Satz von einem oder mehreren Kernen 202A-N und gemeinsam genutzte Cacheeinheit(en) 2206 umfasst; einer Systemagenteneinheit 2210; einer oder mehreren Bussteuerungseinheiten 2216; einer oder mehreren integrierten Speichersteuerungseinheiten 2214; einem Satz aus einem oder mehreren Koprozessoren 2420, der integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen kann; einer statischen Direktzugriffsspeichereinheit (SRAM, Static Random Access Memory) 2430; einer Direktzugriffsspeichereinheit (DMA, Direct Memory Access) 2432; und einer Anzeigeeinheit 2440 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst bzw. umfassen der/die Koprozessor(en) 2420 einen speziellen Prozessor, wie etwa, beispielsweise, einen Netzwerk- oder Kommunikationsprozessor, eine Komprimierungsengine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder ähnliches.
  • Ausführungsformen der hier offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination aus solchen Umsetzungsansätzen umgesetzt sein. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode umgesetzt sein, die bzw. der auf programmierbaren Systemen, zumindest einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nicht-flüchtiger Speicher und/oder Speicherelemente), zumindest eine Eingabevorrichtung und zumindest eine Ausgabevorrichtung umfassend, ausgeführt werden bzw. wird.
  • Programmcode kann auf die Eingabebefehle angewendet werden, um die hier beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in bekannter Weise auf eine oder mehrere Ausgabevorrichtungen angewendet werden. Im Zusammenhang mit dieser Anmeldung umfasst ein Verarbeitungssystem jedes System, das einen Prozessor hat, wie etwa, beispielsweise, einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit) oder einen Mikroprozessor.
  • Der Programmcode kann in einer höheren prozeduralen oder objektorientierten Programmiersprache umgesetzt sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch, wenn gewünscht, in Assembler- oder Maschinensprache umgesetzt sein. Tatsächlich sind die hier beschriebenen Mechanismen in ihrem Umfang nicht auf eine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte von zumindest einer Ausführungsform können durch repräsentative Befehle, gespeichert auf einem maschinenlesbaren Medium, das unterschiedliche Logik innerhalb des Prozessors repräsentiert, umgesetzt sein, die, wenn von einer Maschine gelesen, die Maschine veranlassen, Logik zu erzeugen, um die hier beschriebenen Techniken durchzuführen. Solche Repräsentationen, auch als „IP-Kerne“ bekannt, können auf einem greifbaren, maschinenlesbaren Medium gespeichert und verschiedenen Kunden oder Fertigungseinrichtungen bereitgestellt werden, um in die Fertigungsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich fertigen.
  • Solche maschinenlesbaren Speichermedien können unter anderem umfassen: nicht-flüchtige, greifbare Anordnungen von Artikeln, die durch eine Maschine gefertigt oder gebildet werden, einschließlich Speichermedien, wie etwa Festplatten, jeder andere Typ von Platte, einschließlich Floppy Disks, optische Platten, CD-Nur-Lese-Speicher (CD-ROMs, Compact Disk Read-Only Memories), wiederbeschreibbare Compact Disks (CD-RWs) und magnetooptische Platten, Halbleitervorrichtungen, wie etwa Nur-Lese-Speicher (ROMs, Read-Only Memories), Direktzugriffsspeicher (RAMs, Random Access Memories), wie etwa dynamische Direktzugriffsspeicher (DRAMs, Dynamic Random Access Memories), statische Direktzugriffsspeicher (SRAMs, Static Random Access Memories), löschbare, programmierbare Nur-Lese-Speicher (EPROMs, Erasable Programmable Read-Only Memories), Flash-Speicher, elektrisch löschbare, programmierbare Nur-Lese-Speicher (EEPROMs, Electrically Erasable Programmable Read-Only Memories), Phasenwechselspeicher (PCM, Phase Change Memory), magnetische oder optische Karten oder jeden anderen Typ von zum Speichern von elektronischen Befehlen geeigneten Medien.
  • Entsprechend umfassen Ausführungsformen der Erfindung auch nicht-flüchtige, greifbare, maschinenlesbare Medien, Befehle enthaltend oder Konzeptionsdaten enthaltend, wie etwa Hardwarebeschreibungssprache (HDL, Hardware Description Language), die Strukturen, Schaltungen, Einrichtungen, Prozessoren und/oder Systemmerkmale, wie hier beschrieben, definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Emulierung (einschließlich binäre Übersetzung, Code-Morphing usw.)
  • In einigen Fällen kann ein Befehlsumwandler verwendet werden, um einen Befehl aus einem Quellbefehlssatz in einen Zielbefehlssatz umzuwandeln. Beispielsweise kann der Befehlsumwandler einen Befehl in einen oder mehrere andere Befehle, die durch den Kern zu verarbeiten sind, übersetzen (z. B. unter Verwendung von statischer binärer Übersetzung, dynamischer binärer Übersetzung, einschließlich dynamischer Kompilierung), morphen, emulieren oder anderweitig umwandeln. Der Befehlsumwandler kann in Software, Hardware, Firmware oder einer Kombination daraus umgesetzt sein. Der Befehlsumwandler kann auf dem Prozessor, außerhalb des Prozessors oder teilweise auf und teilweise außerhalb des Prozessors sein.
  • 25 ist ein Blockdiagramm, die Verwendung eines Softwarebefehlsumwandlers zum Umwandeln binärer Befehle in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz abgesetzt darstellend, gemäß Ausführungsformen der Erfindung. In der dargestellten Ausführungsform ist der Befehlsumwandler ein Softwarebefehlsumwandler, obwohl der Befehlsumwandler alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen daraus umgesetzt sein kann. 25 zeigt, wie ein Programm in einer höheren Sprache 2502 mit einem x86-Compiler 2504 kompiliert werden kann, um x86-Binärcode 2506 zu erzeugen, der systemintem durch einen Prozessor mit zumindest einem x86-Befehlssatzkern 2516 ausgeführt werden kann. Der Prozessor mit zumindest einem x86-Befehlssatzkern 2516 repräsentiert jeden Prozessor, der im Wesentlichen die gleichen Funktionen durchführen kann wie ein Intel-Prozessor mit zumindest einem x86-Befehlssatzkern durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Teils des Befehlssatzes des Intel-x86-Befehlssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, dazu bestimmt, auf einem Intel-Prozessor mit zumindest einem x86-Befehlssatzkern ausgeführt zu werden, um im Wesentlichen das gleiche Ergebnis zu erreichen wie ein Intel-Prozessor mit zumindest einem x86-Befehlssatzkem. Der x86-Compiler 2504 repräsentiert einen Compiler, der betreibbar ist, um x86-Binärcode 2506 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit zumindest einem x86-Befehlssatzkern 2516 ausgeführt werden kann. In ähnlicher Weise zeigt 25, wie das Programm in der höheren Sprache 2502 mit einem alternativen Befehlssatzcompiler 2508 kompiliert werden kann, um alternativen Befehlssatz-Binärcode 2510 zu erzeugen, der systemintern durch einen Prozessor ohne zumindest einen x86-Befehlssatzkern 2514 (z. B. einen Prozessor mit Kernen, die den MIPS Befehlssatz von MIPS Technologies aus Sunnyvale, CA ausführen und/oder den ARM-Befehlssatz von ARM Holdings aus Sunnyvale, CA, ausführen) ausgeführt werden kann. Der Befehlsumwandler 2512 wird verwendet, um den x86-Binärcode 2506 in Code umzuwandeln, der systemintern durch den Prozessor ohne einen x86-Befehlssatzkern 2514 ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht der gleiche wie der alternative Befehlssatz-Binärcode 2510, da ein Befehlsumwandler, der dies erreichen könnte, schwierig zu erstellen ist; allerdings erfüllt der umgewandelte Code die allgemeine Operation und besteht aus Befehlen aus dem alternativen Befehlssatz. Daher repräsentiert der Befehlsumwandler 2512 Software, Firmware, Hardware oder eine Kombination daraus, die, durch Emulierung, Simulation oder jeden anderen Prozess, einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen x86-Befehlssatzprozessor oder -kern hat, ermöglicht, den x86-Binärcode 2506 auszuführen.
  • Taktsignalmodulation für Prozessoren
  • Jetzt Bezug nehmend auf 26 ist ein Blockdiagramm eines Systems 2600 in Übereinstimmung mit einer oder mehreren Ausführungsformen gezeigt. In einigen Ausführungsformen kann das System 2600 die gesamte oder ein Teil einer elektronischen Vorrichtung oder Komponente sein. Beispielsweise kann das System 2600 ein Mobiltelefon, ein Computer, ein Server, eine Netzwerkvorrichtung, ein System-on-a-Chip (SoC), eine Steuerung, ein drahtloser Sender-Empfänger, eine Stromversorgungseinheit usw. sein. Ferner kann, in einigen Ausführungsformen, das System 2600 Teil einer Gruppierung von verwandten oder verschalteten Vorrichtungen sein, wie etwa eines Datencenters, eines Datenverarbeitungsclusters usw.
  • Wie in 26 gezeigt, kann das System 2600 einen Prozessor 2610 umfassen, der mit dem Systemspeicher 2650 und einer beliebigen Anzahl von Vorrichtungen 2660A-2660N (auch allgemein als Vorrichtungen 2660 bezeichnet) wirkgekoppelt ist. Ferner kann, obwohl in 26 nicht gezeigt, das System 2600 andere Komponenten umfassen.
  • In einer oder mehreren Ausführungsformen kann der Systemspeicher 2605 mit einem oder mehreren beliebigen Typen von Computerspeicher (z. B. dynamischer Direktzugriffsspeicher (DRAM, Dynamic Random-Access Memory), statischer Direktzugriffsspeicher (SRAM, Static Random-Access Memory), nicht-flüchtiger Speicher (NVM, Non-Volatile Memory), eine Kombination aus DRAM und NVM usw.) umgesetzt sein. In einer oder mehreren Ausführungsformen können die Vorrichtungen 2660 eine beliebige interne oder externe Komponente sein, die mit dem Prozessor 2610 gekoppelt sein oder anderweitig mit diesem interagieren kann. Beispielsweise können die Vorrichtungen 2660 eine periphere Eingabe/Ausgabe(E/A)-Vorrichtung, eine Netzwerkschnittstellensteuerung (NIC, Network Interface Controller), eine Anzeigevorrichtung, eine Audiovorrichtung, eine Netzwerkvorrichtung, eine Festplatte, eine Speichervorrichtung, ein CD/DVD-Laufwerk, einen Drucker, eine Benutzereingabevorrichtung und andere Eingabe/Ausgabe-Vorrichtungen umfassen.
  • In einer oder mehreren Ausführungsformen kann der Prozessor 2610 eine Hardwareverarbeitungsvorrichtung (z. B. eine Zentraleinheit (CPU), ein System-on-a-Chip (SoC) und so weiter) sein. In einigen Ausführungsformen können Hardwarekomponenten des Prozessors 2610 eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU, Input Output Memory Management Unit) 2630, eine Stromsteuereinheit (PCU, Power Control Unit) 2640 und eine beliebige Anzahl von Verarbeitungsengines 2620A-2620N (auch allgemein als Verarbeitungsengines 2620 bezeichnet) umfassen. Jede Verarbeitungsengine 2620 kann Schaltungsanordnungen zum Ausführen von Befehlen in einem oder mehreren Befehlssätzen umfassen.
  • In einer oder mehreren Ausführungsformen kann die PCU 2640 Hardware, Software und/oder Firmware zum Durchführen von Stromverwaltungsoperationen im Hinblick auf den Prozessor 2610 umfassen. In einigen Ausführungsformen kann die PCU 2640 als ein Mikrocontroller (speziell oder universell) oder eine andere Steuerlogik umgesetzt sein, dazu ausgelegt, ihren eigenen speziellen Stromverwaltungscode, manchmal als P-Code bezeichnet, auszuführen. In 1 ist die PCU 2640 als als eine separate Logik im Prozessor 2610 vorhanden gezeigt. Allerdings kann die PCU 2640 in anderen Ausführungsformen auf einem oder mehreren gegebenen Kernen 2620 ausführen. In noch anderen Ausführungsformen können die Stromverwaltungsoperationen, die durch die PCU 2620 durchzuführen sind, extern zu dem Prozessor 2610 umgesetzt sein, beispielsweise mittels einer separaten integrierten Stromverwaltungsschaltung (PMIC, Power Management Integrated Circuit) oder einer anderen Komponente extern zum Prozessor 2610. In noch anderen Ausführungsformen können die Stromverwaltungsoperationen, die durch die PCU 2620 durchzuführen sind, innerhalb des BIOS oder einer anderen Systemsoftware umgesetzt sein.
  • Die IOMMU 2630 kann in Hardware, Software und/oder Firmware umgesetzt sein. Beispielsweise kann die IOMMU 2630 als ein Mikrocontroller (speziell oder universell) oder eine andere Steuerlogik, dazu ausgelegt, ihren eigenen speziellen Programmcode auszuführen (z. B. Firmwarebefehle) umgesetzt sein. In einigen Ausführungsformen kann die IOMMU 2630 Adressabbildung für E/A-Speicheroperationen durchführen. Beispielsweise kann die IOMMU 2630 Abbilden von virtuellen Adressen auf physische Adressen für Speicherlese-/- schreiboperationen für die Vorrichtungen 2660 durchführen.
  • In einer oder mehreren Ausführungsformen kann die IOMMU 2630 Abbilden von Unterbrechungen der Vorrichtungen 2660 durchführen. Beispielsweise kann die IOMMU 2630 eine Abbildungstabelle oder Datenstruktur verwenden, um eine Geräteunterbrechung direkt an ein angegebenes Ziel (z. B. einen Prozess in einem Benutzerraum von Speicher) zu senden, ohne einen Kernelraum-Handler zu verwenden. Wie hier verwendet, bezieht sich der Begriff „Benutzerunterbrechung“ auf eine Unterbrechung, die durch eine Hardwareeinheit direkt an ein in einer Abbildung angegebenes Benutzerraumziel geleitet wird.
  • In einer oder mehreren Ausführungsformen kann die IOMMU 2630 die PCU 2620 dazu benachrichtigen, dass eine Benutzerunterbrechung zu einem Ziel geleitet wird. Als Reaktion auf diese Benachrichtigung kann die PCU 2620 einen Leistungszustand des Ziels einstellen. Beispielsweise kann die PCU 2620 bewirken, dass eine Betriebsfrequenz des Ziels (z. B. Verarbeitungsengine 2620A) erhöht wird. Entsprechend kann, in einigen Ausführungsformen, die Zeit, die erforderlich ist, um die Benutzerunterbrechung zu behandeln, verringert werden. Verschiedene Aspekte von Funktionen der IOMMU 2630 und der PCU 2620 werden nachfolgend Bezug nehmend auf 27A-31 beschrieben.
  • Jetzt Bezug nehmend auf 27A-27B sind Diagramme von beispielhaften Unterbrechungsoperationen gemäß einer oder mehrerer Ausführungsformen gezeigt. Insbesondere stellt 27A eine erste Operation 2700 für eine Unterbrechung dar, die nicht als eine Benutzerunterbrechung definiert ist. Wie gezeigt, kann eine Unterbrechung anfänglich in einem Kemelraum durch einen Kernel-Handler 2710, der auf einem ersten Prozessor 2720 ausgeführt wird, empfangen werden. Nachdem das Verarbeiten des Kernel-Handlers 2710 abgeschlossen ist, wird die Unterbrechung für einen Benutzerhandler 2730 geplant, der auf einem zweiten Prozessor 2740 ausgeführt wird. Der Benutzerhandler 2730 kann in einem Benutzerraum enthalten sein.
  • Jetzt Bezug nehmend auf 27B ist eine zweite Operation 2705 für eine Unterbrechung gezeigt, die als eine Benutzerunterbrechung definiert ist. In einigen Ausführungsformen kann eine Unterbrechung zumindest teilweise durch Angeben einer Abbildung auf ein bestimmtes Ziel als eine Benutzerunterbrechung definiert sein. In einigen Ausführungsformen kann die Benutzerunterbrechungsabbildung durch eine Speicherverwaltungseinheit (z. B. IOMMU 2630, gezeigt in 26) angegeben sein.
  • Wie in 27B gezeigt, kann eine Aufgabe 2745 im Benutzerraum der Verarbeitungsengine 2870 des zweiten Prozessors 2740 mit einer beliebigen Anzahl von Benutzerhandlem 2750A-2750N (auch allgemein als Benutzerhandler 2750 bezeichnet) verknüpft werden. Die Benutzerhandler 2750A-2750N können Benutzerunterbrechungen für unterschiedliche Benutzervektoren A-N behandeln. Jeder Benutzervektor kann einem unterschiedlichen Typ oder einer unterschiedlichen Kategorie von Benutzerunterbrechung entsprechen. In einer oder mehreren Ausführungsformen können die Benutzerunterbrechungen direkt zu den entsprechenden Benutzerhandlern 2750 im Benutzerraum geleitet werden. Daher wird eine Benutzerunterbrechung nicht durch einen Handler im Kemelraum (z. B. Kernel-Handler 2710, gezeigt in 27A) verarbeitet.
  • Jetzt Bezug nehmend auf 28 ist eine Darstellung eines beispielhaften Unterbrechungssystems 2800 gemäß einer oder mehrerer Ausführungsformen gezeigt. Es ist anzumerken, dass einige oder alle der in 28 gezeigten Komponenten im Allgemeinen ähnlichen Komponenten entsprechen können, die oben Bezug nehmend auf 26-27B beschrieben wurden. Das System 2800 kann eine Vorrichtung 2810, eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU) 2830, eine Stromsteuereinheit (PCU) 2860 und eine Verarbeitungsengine 2870 umfassen. In einigen Ausführungsformen kann die IOMMU 2830 Leistungslogik 2835 und Abbildungsdaten 2838 umfassen.
  • Wie in 28 gezeigt, kann die IOMMU 2830 eine durch die Vorrichtung 2810 erzeugte Unterbrechung 2820 empfangen. In einer oder mehreren Ausführungsformen kann, als Reaktion auf einen Empfang der Unterbrechung 2820, die IOMMU 2830 die Unterbrechung 2820 mit den Abbildungsdaten 2838 vergleichen. In einigen Ausführungsformen können die Abbildungsdaten 2838 Benutzerunterbrechungen und ihre zugehörigen Ziele angeben. Sei angenommen, dass, im Beispiel aus 28, die Abbildungsdaten 2838 angeben, dass das Ziel der Unterbrechung 2820 der Benutzerhandler 2875 ist, der auf der Verarbeitungsengine 2870 ausgeführt wird. Entsprechend kann, wie gezeigt, die IOMMU 2830 die Unterbrechung 2820 basierend auf den Abbildungsdaten 2838 direkt zu dem Benutzerhandler 2875 leiten.
  • Wie gezeigt, kann die Leistungslogik 2835 der IOMMU 2830 eine Benachrichtigung 2850 an die PCU 2860 senden. In einigen Ausführungsformen kann die Leistungslogik 2835 die Benachrichtigung 2850 als Reaktion auf eine Bestimmung senden, dass die Unterbrechung 2820 als eine Benutzerunterbrechung angegeben ist (z. B. in den Abbildungsdaten 2838). In einer oder mehreren Ausführungsformen kann die Benachrichtigung 2850 Daten umfassen, die anzeigen, dass das Ziel der Unterbrechung 2820 der Benutzerhandler 2875 auf der Verarbeitungsengine 2870 ist.
  • In einer oder mehreren Ausführungsformen kann, als Reaktion auf die Benachrichtigung 2850, die PCU 2860 eine Leistungszustandseinstellung 2870 der gesamten oder eines Teils der Verarbeitungsengine 2870 durchführen. Beispielsweise kann die Leistungszustandseinstellung 2870 eine Änderung an der Betriebsfrequenz und/oder dem Spannungspegel der Verarbeitungsengine 2870 sein. In einem weiteren Beispiel kann die Leistungszustandseinstellung 2870 einen Zustand einer Teilkomponente der Verarbeitungsengine 2870 (z. B. eine Cacheeinheit, eine Gleitkomma-Ausführungseinheit, eine Grafikeinheit und so weiter) ändern.
  • In einer oder mehreren Ausführungsformen kann der Benutzerhandler 2875 mit einer Aufgabe im Benutzerraum der Verarbeitungsengine 2870 verknüpft sein. Die Aufgabenstruktur 2840 kann im Kernelraumspeicher enthalten sein, und kann Informationen hinsichtlich der Aufgabe in Verbindung mit dem Benutzerhandler 2875 speichern. Wie gezeigt, kann die Aufgabenstruktur 2840 Unterbrechungsdaten 2845 umfassen. In einigen Ausführungsformen können die Unterbrechungsdaten 2845 als ein Deskriptor zu der vom Benutzer ausgelösten Unterbrechung (UPID; User Posted Interrupt Descriptor) umgesetzt sein. Die Unterbrechungsdaten 2845 können Zielhandler und/oder Verarbeitungsengines für alle Benutzerunterbrechungen in Verbindung mit einer bestimmten Aufgabe anzeigen. Ferner können die Unterbrechungsdaten 2845 eine globale Einstellung und Vektoreinstellungen (z. B. Bits oder andere Werte) für eine Aufgabe umfassen. In einigen Ausführungsformen können die Vektoreinstellungen die Benutzervektoren angeben, die, wenn in einer Benachrichtigung 2850 angezeigt, dazu dienen, eine Einstellung an einem Leistungszustand der Zielverarbeitungsengine zu veranlassen. Ferner kann die globale Einstellung anzeigen, dass der Leistungszustand der Zielverarbeitungsengine als Reaktion darauf eingestellt wird, dass ein beliebiger Benutzervektor in einer Benachrichtigung 2850 angezeigt wird. In einigen Ausführungsformen können, wenn die globale Einstellung gesetzt ist, die Vektoreinstellungen ignoriert werden.
  • In einer oder mehreren Ausführungsformen kann die Benachrichtigung 2850 anzeigen, dass das Ziel der Unterbrechung 2820 der Benutzerhandler 2875 auf der Verarbeitungsengine 2870 ist. Ferner kann, in einigen Ausführungsformen, die Benachrichtigung 2850 den Benutzervektor der Unterbrechung 2820 anzeigen. Die PCU 2860 kann den Benutzervektor in der Benachrichtigung 2850 mit der globalen Einstellung und den Vektoreinstellungen in den Unterbrechungsdaten 2845 vergleichen, um zu bestimmen, ob die Leistungszustandseinstellung 2870 durchgeführt werden soll. Wenn beispielsweise die globale Einstellung gesetzt ist, kann die PCU 2860 die Leistungszustandseinstellung 2870 durchführen, ohne den Benutzervektor in der Benachrichtigung 2850 zu evaluieren. Wenn, in einem weiteren Beispiel, die globale Einstellung nicht gesetzt ist, kann die PCU 2860 die Leistungszustandseinstellung 2870 nur durchführen, wenn der Benutzervektor in der Benachrichtigung 2850 mit einer gesetzten Vektoreinstellung übereinstimmt. In einigen Ausführungsformen kann die Leistungszustandseinstellung 2870 auf eine bestimmte Teilkomponente der Verarbeitungsengine 2870, die mit dem Benutzervektor in der Benachrichtigung 2850 verknüpft ist, beschränkt sein.
  • Jetzt Bezug nehmend auf 29 ist ein Flussdiagramm eines Verfahrens 2900 in Übereinstimmung mit einer oder mehreren Ausführungsformen gezeigt. Das Verfahren 2900 kann bei Laufzeit eines Benutzerunterbrechungssystems (z. B. System 2800, gezeigt in 28) durchgeführt werden. In einigen Ausführungsformen kann das Verfahren 2900 nach Abschluss eines Systemauslegungsprozesses durchgeführt werden (z. B. unter Verwendung von Verfahren 3000, das nachfolgend Bezug nehmend auf 30 beschrieben wird).
  • In verschiedenen Ausführungsformen kann das Verfahren 2900 durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Verarbeitungsvorrichtung, Schaltungsanordnungen, spezielle Logik, programmierbare Logik, Mikrocontroller usw.), Software und/oder Firmware (z. B. Befehle, die auf einer Verarbeitungsvorrichtung ausgeführt werden), oder eine Kombination daraus umfassen können. In einigen Umsetzungen kann das Verfahren 2900 unter Verwendung von einer oder mehreren Komponenten durchgeführt werden, die in 26-28 gezeigt werden (z. B. Prozessor 2610, IOMMU 2830, PCU 2860 und so weiter). In Firmware- oder Softwareausführungsformen kann das Verfahren 2900 durch computerausgeführte Befehle umgesetzt werden, die in einem nicht-flüchtigen maschinenlesbaren Medium, wie etwa einer optischen, Halbleiter- oder magnetischen Speichervorrichtung, gespeichert sind. Das maschinenlesbare Medium kann Daten speichern, die, wenn sie durch zumindest eine Maschine verwendet werden, die zumindest eine Maschine veranlassen, zumindest eine integrierte Schaltung herzustellen, um ein Verfahren durchzuführen. Zum Zwecke der Veranschaulichung können die Aktionen im Zusammenhang mit Verfahren 2900 nachfolgend Bezug nehmend auf 26-28 beschrieben werden, die Beispiele in Übereinstimmung mit einer oder mehreren Ausführungsformen zeigen. Allerdings ist der Schutzumfang der verschiedenen hier erörterten Ausführungsformen in dieser Hinsicht nicht beschränkt.
  • Block 2910 kann Empfangen einer Geräteunterbrechung umfassen. Beispielsweise empfängt, Bezug nehmend auf 28, die IOMMU 2830 die Unterbrechung 2820 von der Vorrichtung 2810.
  • Raute 2920 kann umfassen zu bestimmen, ob die empfangene Unterbrechung eine Benutzerunterbrechung ist. Beispielsweise kann, Bezug nehmend auf 28, die IOMMU 2830 basierend auf den Abbildungsdaten 2838 bestimmen, ob die empfangene Unterbrechung 2820 eine Benutzerunterbrechung (UI, User Interrupt) ist.
  • Wenn bei Raute 2920 bestimmt wird, dass die empfangene Unterbrechung eine Benutzerunterbrechung ist, fährt das Verfahren 2900 bei Block 2930 fort, was umfassen kann, das Ziel der Benutzerunterbrechung zu bestimmen. Beispielsweise kann, Bezug nehmend auf 28, die IOMMU 2830 die Abbildungsdaten 2838 verwenden, um zu bestimmen, dass das Ziel für die Unterbrechung 2820 der Benutzerhandler 2875 auf der Verarbeitungsengine 2870 ist. In einigen Ausführungsformen können die Abbildungsdaten 2838 ein oder mehrere Felder umfassen, die den Zielhandler und/oder die Verarbeitungsengine angeben.
  • Nach Block 2930 kann das Verfahren 2900 bei den Blöcken 2940 und 2950 parallel fortfahren. Block 2950 kann umfassen, die Benutzerunterbrechung an das Ziel (bestimmt bei Block 2930) zu senden. Beispielsweise kann, Bezug nehmend auf 28, die IOMMU 2830 die Unterbrechung 2820 direkt an den Benutzerhandler 2875 auf der Verarbeitungsengine 2870 senden.
  • Block 2940 kann Senden einer UI-Benachrichtigung an eine Stromsteuereinheit (PCU) umfassen. Ferner kann Block 2945 Einstellen eines Leistungszustands des Ziels basierend auf der UI-Benachrichtigung umfassen. Beispielsweise kann, Bezug nehmend auf 28, die IOMMU 2830 die Benachrichtigung 2850 an die PCU 2860 senden. Die Benachrichtigung 2850 kann anzeigen, dass das Ziel der Unterbrechung 2820 der Benutzerhandler 2875 auf der Verarbeitungsengine 2870 ist. Entsprechend kann, als Reaktion auf die Benachrichtigung 2850, die PCU 2860 einen Leistungszustand der gesamten oder eines Teils der Verarbeitungsengine 2870 erhöhen. In einigen Ausführungsformen kann Einstellen des Leistungszustands der Verarbeitungsengine 2870 auf in der Aufgabenstruktur enthaltenen globalen und Vektoreinstellungen (z. B. in den Unterbrechungsdaten 2845 von Aufgabenstruktur 2840, gezeigt in 28) basieren. Nach Blöcken 2945 und 2950 kann das Verfahren 2900 bei Block 2955 fortfahren.
  • Block 2955 kann Verarbeiten der Benutzerunterbrechung durch den Zielbenutzerhandler umfassen. Beispielsweise kann, Bezug nehmend auf 28, die Unterbrechung 2820 durch den Benutzerhandler 2875 auf der Verarbeitungsengine 2870 verarbeitet werden. Es ist anzumerken, dass, da der Leistungszustand der Verarbeitungsengine 2870 durch die PCU 2860 erhöht worden sein könnte, die Verarbeitung der Unterbrechung 2920 in kürzerer Zeit abgeschlossen werden kann, als erforderlich wäre, wenn der Leistungszustand nicht erhöht worden wäre.
  • Block 2960 kann Senden einer Abschlussbenachrichtigung an die PCU umfassen. Ferner kann Block 2965 Einstellen des Leistungszustands des Ziels basierend auf der Abschlussbenachrichtigung umfassen. Beispielsweise kann, Bezug nehmend auf 28, der Benutzerhandler 2875 die PCU 2860 benachrichtigen, dass die Verarbeitung von Unterbrechung 2820 abgeschlossen ist. Als Reaktion darauf kann die PCU 2860 den Leistungszustand der Verarbeitungsengine 2870 verringern (z. B. auf den ursprünglichen Leistungszustand vor dem Empfang der Benachrichtigung 2850). Nach Block 2965 ist das Verfahren 2900 abgeschlossen.
  • Wenn, wieder auf Raute 2920 Bezug nehmend, bestimmt wird, dass die empfangene Unterbrechung keine Benutzereingabe ist, fährt das Verfahren 2900 bei Block 2970 fort, was Verarbeiten der Unterbrechung durch einen Kernel-Handler umfassen kann. Ferner kann Block 2980 Verarbeiten der Unterbrechung durch einen Benutzerhandler umfassen. Beispielsweise kann, Bezug nehmend auf 27A, eine Unterbrechung durch den Kernel-Handler 2710 verarbeitet werden, der auf dem ersten Prozessor 2720 ausgeführt wird, und kann anschließend durch den Benutzerhandler 2730 verarbeitet werden, der auf dem zweiten Prozessor 2740 ausgeführt wird. Nach Block 2980 ist das Verfahren 2900 abgeschlossen.
  • Jetzt Bezug nehmend auf 30 ist ein Flussdiagramm eines Verfahrens 3000 zur Systemauslegung in Übereinstimmung mit einer oder mehreren Ausführungsformen gezeigt. Das Verfahren 3000 kann bei Auslegungszeit eines Benutzerunterbrechungssystems (z. B. System 2800, gezeigt in 28) durchgeführt werden. Beispielsweise kann das Verfahren 3000 ganz oder teilweise bei Anwendungsinitialisierung, bei Kontextwechsel, bei Aufgabenmigration, beim Systemstart und so weiter durchgeführt werden. Ferner kann das Verfahren 3000 ganz oder teilweise durch eine Betriebssystem-Ablaufsteuerung durchgeführt werden.
  • In verschiedenen Ausführungsformen kann das Verfahren 3000 durch Verarbeitungslogik durchgeführt werden, die Hardware (z. B. Verarbeitungsvorrichtung, Schaltungsanordnungen, spezielle Logik, programmierbare Logik, Mikrocontroller usw.), Software und/oder Firmware (z. B. Befehle, die auf einer Verarbeitungsvorrichtung ausgeführt werden), oder eine Kombination daraus umfassen können. In einigen Umsetzungen kann das Verfahren 3000 unter Verwendung von einer oder mehreren Komponenten durchgeführt werden, die in 26-28 gezeigt werden (z. B. Prozessor 2610, IOMMU 2830, PCU 2860 und so weiter). In Firmware- oder Softwareausführungsformen kann das Verfahren 3000 durch computerausgeführte Befehle umgesetzt werden, die in einem nicht-flüchtigen maschinenlesbaren Medium, wie etwa einer optischen, Halbleiter- oder magnetischen Speichervorrichtung, gespeichert sind. Das maschinenlesbare Medium kann Daten speichern, die, wenn sie durch zumindest eine Maschine verwendet werden, die zumindest eine Maschine veranlassen, zumindest eine integrierte Schaltung herzustellen, um ein Verfahren durchzuführen. Zum Zwecke der Veranschaulichung können die Aktionen im Zusammenhang mit Verfahren 3000 nachfolgend Bezug nehmend auf 26-28 beschrieben werden, die Beispiele in Übereinstimmung mit einer oder mehreren Ausführungsformen zeigen. Allerdings ist der Schutzumfang der verschiedenen hier erörterten Ausführungsformen in dieser Hinsicht nicht beschränkt.
  • Block 3010 kann Erzeugen einer Aufgabenstruktur für eine Aufgabe in Verbindung mit Benutzerunterbrechungen umfassen. Beispielsweise kann, Bezug nehmend auf 27A und 28, die Aufgabenstruktur 2840 erzeugt werden, um Informationen für Aufgabe 2745 zu speichern. Die Aufgabenstruktur 2840 kann Unterbrechungsdaten 2845 zum Identifizieren von Benutzerunterbrechungszielen, globalen und Vektoreinstellungen und so weiter umfassen. In einigen Ausführungsformen können die Unterbrechungsdaten 2845 in einem Deskriptor zu der vom Benutzer ausgelösten Unterbrechung (UPID; User Posted Interrupt Descriptor) gespeichert werden.
  • Block 3020 kann Aktualisieren von Abbildungsdaten in einer Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU) umfassen, um Weiterleitungsinformationen für Benutzerunterbrechungen einzuschließen. Beispielsweise können, Bezug nehmend auf 28, die Abbildungsdaten 2838 in der IOMMU 2830 aktualisiert werden, um Zielhandler und/oder Verarbeitungsengines für Benutzerunterbrechungen anzugeben.
  • Block 3030 kann Bereitstellen von Benutzerunterbrechungsinformationen für eine Stromsteuereinheit (PCU) umfassen. Beispielsweise kann, Bezug nehmend auf 28, die PCU 2860 auf die Unterbrechungsdaten 2845 und/oder die Abbildungsdaten 2838 zugreifen oder diese empfangen. In einigen Ausführungsformen wird die PCU 2860 über die Benutzerunterbrechung durch ein Betriebssystem benachrichtigt. Nach Block 3030 ist das Verfahren 3000 abgeschlossen.
  • Jetzt Bezug nehmend auf 31 ist eine Tabelle 3100 von Feldern in einer beispielhaften Datenstruktur gemäß einer oder mehrerer Ausführungsformen gezeigt. Insbesondere kann die Tabelle 3100 Feldern in einem Deskriptor zu der vom Benutzer ausgelösten Unterbrechung (UPID) in Verbindung mit der Unterbrechung (z. B. einem in der in 28 gezeigten Aufgabenstruktur 2840 enthaltenen UPID) entsprechen.
  • Wie gezeigt, kann der UPID ein Ausstehend-Benachrichtigungsfeld umfassen, das anzeigt, ob irgendeine Benutzerunterbrechung ausstehend ist. Der UPID kann auch ein Unterdrückungs-Benachrichtigungsfeld umfassen, das anzeigt, ob beim Angeben einer Benutzerunterbrechung eine Benachrichtigung gesendet werden soll.
  • Der UPID kann auch ein globales Einstellungsfeld umfassen, um anzuzeigen, dass der Leistungszustand einer Zielverarbeitungsengine erhöht werden soll als Reaktion auf einen beliebigen Benutzervektor, der in einer UI-Benachrichtigung angezeigt wird. Der UPID kann auch ein Vektoreinstellungsfeld umfassen, um anzuzeigen, welche Benutzervektoren eines Ziels eine Leistungserhöhung erhalten sollen, wenn in einer UI-Benachrichtigung angezeigt. In einigen Ausführungsformen werden die Vektoreinstellungen ignoriert, wenn die globale Einstellung gesetzt ist.
  • Der UPID kann auch ein Benachrichtigungsvektorfeld zum Identifizieren des Benachrichtigungsvektors umfassen. Der UPID kann auch ein Benachrichtigungszielfeld zum Identifizieren des Benachrichtigungsziels umfassen. In einigen Ausführungsformen kann das Benachrichtigungsziel als eine physische erweiterte programmierbare Unterbrechungssteuerungs-Zielkennung (APIC, Advanced Programmable Interrupt Controller) angegeben werden. Der UPID kann auch angegebene Unterbrechungsanforderungsfelder umfassen, um anzuzeigen, ob eine Benutzerunterbrechungsanforderung für einen Benutzervektor vorhanden ist. In einigen Ausführungsformen kann das angegebene Unterbrechungsanforderungsfeld ein Bit pro Benutzervektor umfassen.
  • Die folgenden Klauseln und/oder Beispiele gehören zu weiteren Ausführungsformen.
  • In Beispiel 1 umfasst ein Prozessor zur Leistungszustandseinstellung mehrere Verarbeitungsengines (PEs), eine Stromsteuereinheit und eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU). Die IOMMU dient zum Bestimmen einer Ziel-PE für eine Benutzerunterbrechung basierend auf Abbildungsdaten der IOMMU und zum Senden einer Benachrichtigung über die Benutzerunterbrechung an die Stromsteuereinheit. Die Benachrichtigung zeigt die Ziel-PE für die Benutzerunterbrechung an. Die Stromsteuereinheit dient zum Einstellen eines Leistungszustands der Ziel-PE als Reaktion auf die Benachrichtigung über die Benutzerunterbrechung.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 optional umfassen, dass die Stromsteuereinheit dazu dient, als Reaktion auf die Benachrichtigung über die Benutzerunterbrechung, eine Taktfrequenz und/oder einen Spannungspegel der Ziel-PE zu erhöhen.
  • In Beispiel 3 kann der Gegenstand von Beispielen 1-2 optional umfassen, dass die IOMMU dazu dient, die Benutzerunterbrechung direkt an einen Benutzerhandler an der Ziel-PE zu senden.
  • In Beispiel 4 kann der Gegenstand von Beispielen 1-3 optional umfassen, dass der Benutzerhandler in einem Benutzerraum von Speicher ist.
  • In Beispiel 5 kann der Gegenstand von Beispielen 1-5 optional umfassen, dass die IOMMU Abbildungsdaten speichert, die Ziel-PEs für mehrere Benutzerunterbrechungen angeben.
  • In Beispiel 6 kann der Gegenstand von Beispielen 1-6 optional umfassen, dass die Stromsteuereinheit dient zum Bestimmen, ob der Leistungszustand der Ziel-PE eingestellt werden muss, basierend auf einem Benutzervektor in der Benachrichtigung und einem in der Aufgabenstruktur enthaltenen Deskriptor zu der vom Benutzer ausgelösten Unterbrechung.
  • In Beispiel 7 kann der Gegenstand von Beispielen 1-6 optional umfassen, dass die Aufgabenstruktur mit einer bestimmten Aufgabe im Benutzerraum verbunden ist und wobei die Aufgabenstruktur im Kernelraum gespeichert ist.
  • In Beispiel 8 kann der Gegenstand von Beispielen 1-7 optional umfassen, dass der Deskriptor zu der vom Benutzer ausgelösten Unterbrechung eine globale Einstellung und Vektoreinstellungen umfasst und dass die globale Einstellung anzeigt, dass die Stromsteuereinheit dazu dient, den Leistungszustand der Ziel-PE einzustellen, ohne den Benutzervektor in der Benachrichtigung zu evaluieren.
  • In Beispiel 9 umfasst ein Verfahren zur Leistungseinstellung: Bestimmen, durch eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU, Input/Output Memory Management Unit), einer Zielverarbeitungsengine (PE) für eine Benutzerunterbrechung; Senden, durch die IOMMU, der Benutzerunterbrechung direkt an die bestimmte Ziel-PE; Senden, durch die IOMMU, einer Benachrichtigung an eine Stromsteuereinheit; und Einstellen, durch die Stromsteuereinheit, eines Leistungszustands der bestimmten Ziel-PE als Reaktion auf die Benachrichtigung von der IOMMU.
  • In Beispiel 10 kann der Gegenstand von Beispiel 9 optional umfassen, dass der Leistungszustand der bestimmten Ziel-PE Erhöhen einer Betriebsfrequenz und/oder eines Spannungspegels der bestimmten Ziel-PE umfasst.
  • In Beispiel 11 kann der Gegenstand von Beispielen 9-10 optional Verarbeiten der Benutzerunterbrechung an der bestimmten Ziel-PE im eingestellten Leistungszustand umfassen.
  • In Beispiel 12 kann der Gegenstand von Beispielen 9-11 optional Folgendes umfassen: Bestimmen, durch die IOMMU, ob eine empfangene Unterbrechung eine Benutzerunterbrechung ist, und, als Reaktion auf eine Bestimmung, dass die empfangene Unterbrechung keine Benutzerunterbrechung ist, Senden der empfangenen Unterbrechung an einen Handler im Kernelraum.
  • In Beispiel 13 kann der Gegenstand von Beispielen 9-12 optional umfassen zu bestimmen, durch die Stromsteuereinheit, ob der Leistungszustand der Ziel-PE eingestellt werden muss, basierend auf einem Benutzervektor in der Benachrichtigung und einem in der Aufgabenstruktur enthaltenen Deskriptor zu der vom Benutzer ausgelösten Unterbrechung.
  • In Beispiel 14 kann der Gegenstand von Beispielen 9-13 optional umfassen, dass der Deskriptor zu der vom Benutzer ausgelösten Unterbrechung eine globale Einstellung und Vektoreinstellungen umfasst und dass die globale Einstellung anzeigt, dass die Stromsteuereinheit dazu dient, den Leistungszustand der Ziel-PE einzustellen, ohne den Benutzervektor in der Benachrichtigung zu evaluieren.
  • In Beispiel 15 kann der Gegenstand von Beispielen 9-14 optional Folgendes umfassen: Senden, durch einen Benutzerhandler an der bestimmten Ziel-PE, einer Abschlussbenachrichtigung an die Stromsteuereinheit; und Einstellen, durch die Stromsteuereinheit, der bestimmten Ziel-PE auf einen verringerten Leistungszustand als Reaktion auf die Abschlussbenachrichtigung.
  • In Beispiel 16 umfasst eine Datenverarbeitungsvorrichtung zur Leistungszustandseinstellung einen oder mehrere Prozessoren und einen Speicher, auf dem mehrere Anweisungen gespeichert sind, die, wenn durch den einen oder die mehreren Prozessoren ausgeführt, die Datenverarbeitungsvorrichtung veranlassen, das Verfahren aus einem der Beispiele 9 bis 15 durchzuführen.
  • Beispiel 17 ist zumindest ein maschinenlesbares Medium mit darauf gespeicherten Daten, die, wenn durch zumindest eine Maschine verwendet, die zumindest eine Maschine veranlassen, das Verfahren aus einem der Beispiele 9 bis 15 durchzuführen.
  • Beispiel 18 ist eine elektronische Vorrichtung, umfassend Mittel zum Durchführen des Verfahrens aus einem der Beispiele 9 bis 15.
  • In Beispiel 19 umfasst ein System zur Leistungszustandseinstellung einen Prozessor und einen mit dem Prozessor gekoppelten Systemspeicher. Der Prozessor umfasst mehrere Verarbeitungsengines (PEs), eine Stromsteuereinheit und eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU). Die IOMMU dient zum: Bestimmen einer Ziel-PE für eine Benutzerunterbrechung basierend auf Abbildungsdaten der IOMMU; Senden der Benutzerunterbrechungsdaten direkt an die Ziel-PE; und Senden einer Unterbrechungsbenachrichtigung an die Stromsteuereinheit, wobei die Stromsteuereinheit zum Einstellen eines Leistungszustands der Ziel-PE als Reaktion auf die Benutzerunterbrechungsbenachrichtigung dient.
  • In Beispiel 20 kann der Gegenstand von Beispiel 19 optional umfassen, dass die Stromsteuereinheit dazu dient, als Reaktion auf die Benachrichtigung über die Benutzerunterbrechung, eine Taktfrequenz und/oder einen Spannungspegel der Ziel-PE zu erhöhen.
  • In Beispiel 21 kann der Gegenstand von Beispielen 19-20 optional umfassen, dass die IOMMU Abbildungsdaten speichert, die Ziel-PEs für mehrere Benutzerunterbrechungen angeben.
  • In Beispiel 22 kann der Gegenstand von Beispielen 19-21 optional umfassen, dass die Stromsteuereinheit dient zum Bestimmen, ob der Leistungszustand der Ziel-PE eingestellt werden muss, basierend auf einem Benutzervektor in der Benachrichtigung und einem in der Aufgabenstruktur enthaltenen Deskriptor zu der vom Benutzer ausgelösten Unterbrechung.
  • In Beispiel 23 kann der Gegenstand von Beispielen 19-22 optional umfassen, dass der Deskriptor zu der vom Benutzer ausgelösten Unterbrechung eine globale Einstellung und Vektoreinstellungen umfasst und dass die globale Einstellung anzeigt, dass die Stromsteuereinheit dazu dient, den Leistungszustand der Ziel-PE einzustellen, ohne den Benutzervektor in der Benachrichtigung zu evaluieren.
  • In Beispiel 24 umfasst eine Einrichtung zur Leistungszustandseinstellung Folgendes: Mittel zum Bestimmen einer Zielverarbeitungsengine (PE) für eine Benutzerunterbrechung; Mittel zum Senden der Benutzerunterbrechung direkt an die bestimmte Ziel-PE; Mittel zum Senden einer Benachrichtigung an eine Stromsteuereinheit; und Mittel zum Einstellen, an der Stromsteuereinheit, eines Leistungszustands der bestimmten Ziel-PE als Reaktion auf die Benachrichtigung.
  • In Beispiel 25 kann der Gegenstand von Beispiel 24 optional umfassen, dass die Mittel zum Einstellen des Leistungszustands der bestimmten Ziel-PE Mittel zum Erhöhen einer Betriebsfrequenz und/oder eines Spannungspegels der bestimmten Ziel-PE umfassen.
  • In Beispiel 26 kann der Gegenstand von Beispielen 24-25 optional Mittel zum Verarbeiten der Benutzerunterbrechung an der bestimmten Ziel-PE im eingestellten Leistungszustand umfassen.
  • In Beispiel 27 kann der Gegenstand von Beispielen 24-26 optional Folgendes umfassen: Mittel zum Bestimmen, ob eine empfangene Unterbrechung eine Benutzerunterbrechung ist, und, als Reaktion auf eine Bestimmung, dass die empfangene Unterbrechung keine Benutzerunterbrechung ist, Mittel zum Senden der empfangenen Unterbrechung an einen Handler im Kernelraum.
  • In Beispiel 28 kann der Gegenstand von Beispielen 24-27 optional Mittel zum Bestimmen, ob der Leistungszustand der Ziel-PE eingestellt werden muss, basierend auf einem Benutzervektor in der Benachrichtigung und einem in der Aufgabenstruktur enthaltenen Deskriptor zu der vom Benutzer ausgelösten Unterbrechung, umfassen.
  • In Beispiel 29 kann der Gegenstand von Beispielen 24-28 optional umfassen, dass der Deskriptor zu der vom Benutzer ausgelösten Unterbrechung eine globale Einstellung und Vektoreinstellungen umfasst und dass die globale Einstellung anzeigt, dass die Stromsteuereinheit dazu dient, den Leistungszustand der Ziel-PE einzustellen, ohne den Benutzervektor in der Benachrichtigung zu evaluieren.
  • In Beispiel 30 kann der Gegenstand von Beispielen 24-25 optional Folgendes umfassen: Mittel zum Senden einer Abschlussbenachrichtigung an die Stromsteuereinheit; und Mittel zum Einstellen, an der Stromsteuereinheit, der bestimmten Ziel-PE auf einen verringerten Leistungszustand als Reaktion auf die Abschlussbenachrichtigung.
  • Beispiel 31 ist ein maschinenlesbares Medium mit darauf gespeicherten Daten, die, wenn durch zumindest eine Maschine verwendet, die zumindest eine Maschine veranlassen, zumindest eine integrierte Schaltung herzustellen, um das Verfahren aus einem der Beispiele 9 bis 13 durchzuführen.
  • Beispiel 32 ist eine Einrichtung zum Verarbeiten von Befehlen, dazu ausgelegt, das Verfahren aus einem der Beispiele 9 bis 13 durchzuführen.
  • Gemäß einigen Ausführungsformen sind Beispiele zum Verwalten von Prozessorleistung basierend auf Benutzerunterbrechungen bereitgestellt. Wie oben Bezug nehmend auf 26-31 erörtert, können einige Ausführungsformen Weiterleiten von Benutzerunterbrechungen direkt zu den angegebenen Zielen und Benachrichtigen einer Stromsteuereinheit über die Benutzerunterbrechungen und Ziele umfassen. Die Stromsteuereinheit kann diese Information verwenden, um einen Leistungszustand des Ziels zum Behandeln der Benutzerunterbrechung einzustellen, und kann daher die Zeit verringern, die erforderlich ist, um die Benutzerunterbrechung zu verarbeiten. Dementsprechend können einige Ausführungsformen verbesserte Leistung der Unterbrechungsbehandlung bereitstellen. Es ist anzumerken, dass, während in 26-31 verschiedene beispielhafte Umsetzungen dargestellt sind, andere Variationen möglich sind. Beispielsweise wird in Betracht gezogen, dass eine oder mehrere Ausführungsformen in den beispielhaften Vorrichtungen und Systemen umgesetzt sein können, die Bezug nehmend auf 1-25 beschrieben werden.
  • Es ist anzumerken, dass, während in 26-31 verschiedene beispielhafte Umsetzungen dargestellt sind, andere Variationen möglich sind. Beispielsweise wird in Betracht gezogen, dass eine oder mehrere Ausführungsformen unter Verwendung der beispielhaften Vorrichtungen und Systeme umgesetzt sein können, die Bezug nehmend auf 1-25 beschrieben werden.
  • Es ist anzumerken, dass die Beispiele, die in 1-31 gezeigt sind, zum Zwecke der Veranschaulichung bereitgestellt werden und nicht dazu gedacht sind, irgendwelche Ausführungsformen zu beschränken. Insbesondere können, obwohl Ausführungsformen aus Gründen der Klarheit in vereinfachter Form dargestellt sein können, Ausführungsformen eine beliebige Anzahl und/oder Anordnung von Prozessoren, Kernen und/oder zusätzlichen Komponenten (z. B. Busse, Speichermedien, Verbinder, Stromkomponenten, Puffer, Schnittstellen usw.) umfassen. Beispielsweise wird in Betracht gezogen, dass einige Ausführungsformen eine beliebige Anzahl von Komponenten zusätzlich zu den gezeigten umfassen können, und dass eine unterschiedliche Anordnung der Komponenten zu der gezeigten in bestimmten Umsetzungen auftreten kann. Ferner wird in Betracht gezogen, dass Spezifika, die in 1-31 gezeigt sind, überall in einer oder mehreren Ausführungsformen verwendet werden können.
  • Es versteht sich, dass verschiedene Kombinationen der obigen Beispiele möglich sind. Ausführungsformen können in vielen unterschiedlichen Typen von Systemen verwendet werden. Beispielsweise kann in einer Ausführungsform eine Kommunikationsvorrichtung angeordnet sein, um die verschiedenen hier beschriebenen Verfahren und Techniken durchzuführen. Natürlich ist der Schutzumfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt, und stattdessen können andere Ausführungsformen auf andere Typen von Einrichtungen zum Verarbeiten von Befehlen oder auf ein oder mehrere maschinenlesbare Medien gerichtet sein, umfassend Befehle, die als Reaktion darauf, dass sie auf einer Datenverarbeitungsvorrichtung ausgeführt werden, die Vorrichtung veranlassen, ein(e) oder mehrere der hier beschriebenen Verfahren und Techniken durchzuführen.
  • In dieser gesamten Spezifikation bedeutet ein Bezug auf „eine Ausführungsform“, dass ein bestimmtes Merkmal, eine Struktur oder Charakteristik, in Verbindung mit der Ausführungsform beschrieben, in zumindest einer innerhalb der vorliegenden Erfindung eingeschlossenen Umsetzung enthalten ist. Daher bezieht sich Auftreten der Phrase „eine Ausführungsform“ oder „in einer Ausführungsform“ nicht notwendigerweise immer auf die gleiche Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Charakteristika in anderen geeigneten Formen, als in der bestimmten Ausführungsform dargestellt, eingerichtet sein, und alle solchen Formen können in die Ansprüche der vorliegenden Anmeldung eingeschlossen sein.
  • Während die vorliegende Erfindung im Hinblick auf eine beschränkte Anzahl von Ausführungsformen beschrieben wurde, sind für Fachleute zahlreiche Modifikationen und Variationen davon ersichtlich. Es ist beabsichtigt, dass die beigefügten Ansprüche all solche Modifikationen und Variationen abdecken, die in den wahren Geist und Schutzumfang dieser vorliegenden Erfindung fallen.

Claims (23)

  1. Prozessor, der Folgendes umfasst: mehrere Verarbeitungsengines (PEs, Processing Engines); eine Stromsteuereinheit: eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU, Input/Output Memory Management Unit) zum Bestimmen einer Ziel-PE für eine Benutzerunterbrechung basierend auf Abbildungsdaten der IOMMU und zum Senden einer Benachrichtigung über die Benutzerunterbrechung an die Stromsteuereinheit, wobei die Benachrichtigung die Ziel-PE für die Benutzerunterbrechung anzeigt, wobei die Stromsteuereinheit dazu dient, als Reaktion auf die Benachrichtigung über die Benutzerunterbrechung einen Leistungszustand der Ziel-PE einzustellen.
  2. Prozessor nach Anspruch 1, wobei die Stromsteuereinheit dazu dient, als Reaktion auf die Benachrichtigung über die Benutzerunterbrechung eine Taktfrequenz und/oder einen Spannungspegel der Ziel-PE zu erhöhen.
  3. Prozessor nach Anspruch 1, wobei die IOMMU dazu dient, die Benutzerunterbrechung direkt an einen Benutzerhandler an der Ziel-PE zu senden.
  4. Prozessor nach Anspruch 3, wobei der Benutzerhandler in einem Benutzerraum von Speicher ist.
  5. Prozessor nach Anspruch 1, wobei die IOMMU Abbildungsdaten speichert, die Ziel-PEs für mehrere Benutzerunterbrechungen angeben.
  6. Prozessor nach Anspruch 1, wobei die Stromsteuereinheit dient zum: Bestimmen, ob der Leistungszustand der Ziel-PE eingestellt werden muss, basierend auf einem Benutzervektor in der Benachrichtigung und einem in der Aufgabenstruktur enthaltenen Deskriptor zu der vom Benutzer ausgelösten Unterbrechung.
  7. Prozessor nach Anspruch 6, wobei die Aufgabenstruktur mit einer bestimmten Aufgabe im Benutzerraum verbunden ist und wobei die Aufgabenstruktur im Kemelraum gespeichert ist.
  8. Prozessor nach Anspruch 6, wobei der Deskriptor zu der vom Benutzer ausgelösten Unterbrechung eine globale Einstellung und Vektoreinstellungen umfasst, wobei die globale Einstellung anzeigt, dass die Stromsteuereinheit dazu dient, den Leistungszustand der Ziel-PE einzustellen, ohne den Benutzervektor in der Benachrichtigung zu evaluieren.
  9. Verfahren, das Folgendes umfasst: Bestimmen, durch eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU), einer Ziel-Verarbeitungsengine (PE) für eine Benutzerunterbrechung; Senden, durch die IOMMU, der Benutzerunterbrechung direkt an die bestimmte Ziel-PE; Senden, durch die IOMMU, einer Benachrichtigung an eine Stromsteuereinheit; und Einstellen, durch die Stromsteuereinheit, eines Leistungszustands der bestimmten Ziel-PE als Reaktion auf die Benachrichtigung von der IOMMU.
  10. Verfahren nach Anspruch 9, wobei Einstellen des Leistungszustands der bestimmten Ziel-PE Erhöhen einer Betriebsfrequenz und/oder eines Spannungspegels der bestimmten Ziel-PE umfasst.
  11. Verfahren nach Anspruch 9, das ferner Folgendes umfasst: Verarbeiten der Benutzerunterbrechung an der bestimmten Ziel-PE im eingestellten Leistungszustand.
  12. Verfahren nach Anspruch 9, das ferner Folgendes umfasst: Bestimmen, durch die IOMMU, ob eine empfangene Unterbrechung eine Benutzerunterbrechung ist; und als Reaktion auf eine Bestimmung, dass die empfangene Unterbrechung keine Benutzerunterbrechung ist, Senden der empfangenen Unterbrechung an einen Handler im Kernelraum.
  13. Verfahren nach Anspruch 9, das ferner Folgendes umfasst: Bestimmen, durch die Stromsteuereinheit, ob der Leistungszustand der Ziel-PE eingestellt werden muss, basierend auf einem Benutzervektor in der Benachrichtigung und einem in der Aufgabenstruktur enthaltenen Deskriptor zu der vom Benutzer ausgelösten Unterbrechung.
  14. Verfahren nach Anspruch 9, wobei der Deskriptor zu der vom Benutzer ausgelösten Unterbrechung eine globale Einstellung und Vektoreinstellungen umfasst, wobei die globale Einstellung anzeigt, dass die Stromsteuereinheit dazu dient, den Leistungszustand der Ziel-PE einzustellen, ohne den Benutzervektor in der Benachrichtigung zu evaluieren.
  15. Verfahren nach Anspruch 9, das ferner Folgendes umfasst: Senden, durch einen Benutzerhandler an der bestimmten Ziel-PE, einer Abschlussbenachrichtigung an die Stromsteuereinheit; und Einstellen, durch die Stromsteuereinheit, der bestimmten Ziel-PE auf einen verringerten Leistungszustand als Reaktion auf die Abschlussbenachrichtigung.
  16. Datenverarbeitungsvorrichtung, die Folgendes umfasst: einen oder mehrere Prozessoren; und einen Speicher, auf dem mehrere Anweisungen gespeichert sind, die, wenn durch den einen oder die mehreren Prozessoren ausgeführt, die Datenverarbeitungsvorrichtung veranlassen, das Verfahren aus einem der Ansprüche 9 bis 15 durchzuführen.
  17. Zumindest ein maschinenlesbares Medium mit darauf gespeicherten Daten, die, wenn durch zumindest eine Maschine verwendet, die zumindest eine Maschine veranlassen, das Verfahren nach einem der Ansprüche 9 bis 15 durchzuführen.
  18. Elektronische Vorrichtung, umfassend Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 9 bis 15.
  19. System, das Folgendes umfasst: einen Prozessor, umfassend mehrere Verarbeitungsengines (PEs), eine Stromsteuereinheit und eine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU), wobei die IOMMU dient zum: Bestimmen einer Ziel-PE für eine Benutzerunterbrechung basierend auf Abbildungsdaten der IOMMU; Senden der Benutzerunterbrechung direkt an die Ziel-PE; und Senden einer Benutzerunterbrechungsnachricht an die Stromsteuereinheit, wobei die Stromsteuereinheit dazu dient, einen Leistungszustand der Ziel-PE als Reaktion auf die Benutzerunterbrechungsbenachrichtigung einzustellen; und einen mit dem Prozessor gekoppelten Systemspeicher.
  20. System nach Anspruch 19, wobei die Stromsteuereinheit dazu dient, als Reaktion auf die Benachrichtigung über die Benutzerunterbrechung, eine Taktfrequenz und/oder einen Spannungspegel der Ziel-PE zu erhöhen.
  21. System nach Anspruch 19, wobei die IOMMU Abbildungsdaten speichert, die Ziel-PEs für mehrere Benutzerunterbrechungen angeben.
  22. System nach Anspruch 19, wobei die Stromsteuereinheit dient zum: Bestimmen, ob der Leistungszustand der Ziel-PE eingestellt werden muss, basierend auf einem Benutzervektor in der Benachrichtigung und einem in der Aufgabenstruktur enthaltenen Deskriptor zu der vom Benutzer ausgelösten Unterbrechung.
  23. System nach Anspruch 22, wobei der Deskriptor zu der vom Benutzer ausgelösten Unterbrechung eine globale Einstellung und Vektoreinstellungen umfasst, wobei die globale Einstellung anzeigt, dass die Stromsteuereinheit dazu dient, den Leistungszustand der Ziel-PE einzustellen, ohne den Benutzervektor in der Benachrichtigung zu evaluieren.
DE102018131595.3A 2018-01-08 2018-12-10 Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen Pending DE102018131595A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/864,290 2018-01-08
US15/864,290 US10599596B2 (en) 2018-01-08 2018-01-08 Management of processor performance based on user interrupts

Publications (1)

Publication Number Publication Date
DE102018131595A1 true DE102018131595A1 (de) 2019-07-11

Family

ID=66995370

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018131595.3A Pending DE102018131595A1 (de) 2018-01-08 2018-12-10 Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen

Country Status (2)

Country Link
US (2) US10599596B2 (de)
DE (1) DE102018131595A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457135B1 (en) * 1999-08-10 2002-09-24 Intel Corporation System and method for managing a plurality of processor performance states
US8396953B2 (en) * 2010-03-12 2013-03-12 Hewlett-Packard Development Company, L.P. Processing packets using a virtualized descriptor queue
CN102262557B (zh) * 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
US8762994B2 (en) * 2010-08-26 2014-06-24 Intel Corporation Power-optimized interrupt delivery
US20120226827A1 (en) * 2011-03-02 2012-09-06 Qualcomm Incorporated Mechanism for Performing SDIO Aggregation and Conveying SDIO Device Status to the Host Software
US9910699B2 (en) * 2014-10-28 2018-03-06 Intel Corporation Virtual processor direct interrupt delivery mechanism
US10303644B2 (en) * 2014-11-21 2019-05-28 International Business Machines Corporation Providing remote, reliant and high performance PCI express device in cloud computing environments
JP6988040B2 (ja) * 2016-12-31 2022-01-05 インテル・コーポレーション ヘテロジニアスコンピューティングのためのシステム、方法及び装置
US10891773B2 (en) * 2017-04-07 2021-01-12 Intel Corporation Apparatus and method for efficient graphics virtualization

Also Published As

Publication number Publication date
US20190213153A1 (en) 2019-07-11
US10599596B2 (en) 2020-03-24
US20200218677A1 (en) 2020-07-09

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
DE112019001522T5 (de) System, vorrichtung und verfahren zur optimierten drosselung eines prozessors
DE112013005287B4 (de) Prozessor mit heterogenen physischen Kernen und in einem Prozessor mit heterogenen physischen Kernen implementiertes Verfahren
US20200125396A1 (en) Modifying procressor frequency based on interrupt rate
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
DE112016004776T5 (de) Datenkomprimierung unter Verwendung eines Beschleunigers mit mehreren Suchmaschinen
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE112018004329T5 (de) Steuerblöcke zur prozessorleistungsverwaltung
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
DE112017004991T5 (de) Ausgleichssteuerung für variable energieschienen
DE112017003873T5 (de) Bereitstellung einer Schnittstelle für Herabstufungssteuerinformationen in einem Prozessor
CN115048326A (zh) 用于管理总线通信协议的选择
DE112017005000T5 (de) Prozessorspannungssteuerung unter verwendung eines beweglichen mittelwerts
DE102022121048A1 (de) Auswahl der leistungsversorgung für ein hostsystem
DE102020127742A1 (de) System, vorrichtung und verfahren für eine global bewusste reaktive lokale leistungssteuerung in einem prozessor
DE102020128219A1 (de) System, Einrichtung und Verfahren zur Latenzüberwachung und Reaktion
DE102018114958A1 (de) Validieren eines Abbilds für eine umkonfigurierbare Vorrichtung
DE102018001896A1 (de) Hardwarebeschleuniger für das Auswählen von Datenelementen
US20200004584A1 (en) Hardware Queue Manager for Scheduling Requests in a Processor

Legal Events

Date Code Title Description
R012 Request for examination validly filed