DE102022130598A1 - Registerschnittstelle für computerprozessor - Google Patents

Registerschnittstelle für computerprozessor Download PDF

Info

Publication number
DE102022130598A1
DE102022130598A1 DE102022130598.8A DE102022130598A DE102022130598A1 DE 102022130598 A1 DE102022130598 A1 DE 102022130598A1 DE 102022130598 A DE102022130598 A DE 102022130598A DE 102022130598 A1 DE102022130598 A1 DE 102022130598A1
Authority
DE
Germany
Prior art keywords
processor
access
register
feature
request
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
DE102022130598.8A
Other languages
English (en)
Inventor
Stanley Chen
Vivek Garg
Ankush Varma
Eric DeHaemer
Johan Van De Groenendaal
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 DE102022130598A1 publication Critical patent/DE102022130598A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Power Sources (AREA)

Abstract

In einer Ausführungsform kann ein Prozessor mindestens eine Verarbeitungs-Engine zum Ausführen von Anweisungen und eine Registerschnittstellenschaltung, die mit der mindestens einen Verarbeitungs-Engine gekoppelt ist, beinhalten. Die Registerschnittstellenschaltung kann konfiguriert sein zum: Empfangen einer Anfrage zum Zugreifen auf ein Register, das mit einem Merkmal des Prozessors assoziiert ist; Bestimmen, ob der angefragte Zugriff autorisiert ist, zumindest teilweise auf Grundlage eines Eintrags einer Zugriffsstruktur, wobei die Zugriffsstruktur eine Vielzahl von Einträgen speichern soll, die mit einer Vielzahl von Merkmalen des Prozessors assoziiert sind; und in Reaktion auf eine Bestimmung, dass der angefragte Zugriff durch die Zugriffsstruktur autorisiert ist, Durchführen des angefragten Zugriffs auf das Register, das mit dem Merkmal assoziiert ist. Andere Ausführungsformen sind beschrieben und beansprucht.

Description

  • Ausführungsformen betreffen allgemein Computersysteme. Insbesondere betreffen Ausführungsformen Schnittstellen für Computerprozessoren.
  • Fortschritte bei der Halbleiterverarbeitung und dem Logikdesign haben eine Zunahme der Menge an Logik, die auf Verarbeitungsvorrichtungen vorhanden sein kann, gestattet. Zum Beispiel haben sich Verarbeitungsvorrichtungen von einer einzigen integrierten Verarbeitungsschaltung zu mehreren Hardware-Threads, mehreren Kernen und so weiter entwickelt. Ferner können Verarbeitungsvorrichtungen in einigen Fällen unterschiedliche Betriebsmodi verwenden, die unterschiedliche Eigenschaften wie Leistungsaufnahme und Verarbeitungsgeschwindigkeit aufweisen.
    • 1 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 4 ist eine Ausführungsform eines Prozessors, der mehrere Kerne beinhaltet.
    • 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer anderen Ausführungsform.
    • 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer anderen Ausführungsform.
    • 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer noch weiteren Ausführungsform.
    • 9 ist ein 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 anderen beispielhaften SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 13 ist ein Blockdiagramm eines anderen beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 14 ein Blockdiagramm eines repräsentativen Computersystems.
    • 15A-15B sind Blockdiagramme von Systemen gemäß Ausführungsformen der vorliegenden Erfindung.
    • 16 ist ein Blockdiagramm, ein IP-Kernentwicklungssystem darstellend, das zum Herstellen einer integrierten Schaltung zum Ausführen von Operationen verwendet wird, gemäß einer Ausführungsform.
    • 17A-17B sind Blockdiagramme, die ein allgemeines vektorfreundliches Befehlsformat und entsprechende Befehlsvorlagen gemäß Ausführungsformen der Erfindung zeigen.
    • 18A-D sind Blockdiagramme, die ein beispielhaftes spezifisches vektorfreundliches Befehlsformat gemäß Ausführungsformen der Erfindung zeigen.
    • 19 ist ein Blockdiagramm einer Registerarchitektur gemäß einer Ausführungsform der Erfindung.
    • 20A ist ein Blockdiagramm, 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 darstellend.
    • 20B ist ein Blockdiagramm, sowohl ein Ausführungsbeispiel eines reihenfolgetreuen Architekturkerns als auch einen beispielhaften reihenfolgeveränderten Ausgabe/Ausführung-Architekturkern mit Registerumbenennung, der in einem Prozessor enthalten sein soll, gemäß Ausführungsformen der Erfindung darstellend.
    • 21A-B zeigen ein Blockdiagramm einer spezifischeren beispielhaften In-Order-Core-Architektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne desselben Typs und/oder verschiedener 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 von beispielhaften Computerarchitekturen.
    • 25 ist ein Blockdiagramm, das die Verwendung eines Softwareanweisungskonverters zum Konvertieren binärer Anweisungen in einem Quellbefehlssatz in binäre Anweisungen in einem Zielbefehlssatz gegenüberstellt, gemäß Ausführungsformen der Erfindung.
    • 26 ist ein Blockdiagramm eines beispielhaften Systems gemäß einer oder mehreren Ausführungsformen.
    • 27 zeigt Darstellungen beispielhafter Datenstrukturen gemäß einer oder mehreren Ausführungsformen.
    • 28 zeigt eine Darstellung einer beispielhaften Datenstruktur gemäß einer oder mehreren Ausführungsformen.
    • 29 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 30 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 31 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 32 ist ein Flussdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 33 zeigt eine Darstellung einer beispielhaften Datenstruktur gemäß einer oder mehreren Ausführungsformen.
    • 34 ist eine Veranschaulichung eines beispielhaften Speichermediums gemäß einer oder mehreren Ausführungsformen.
  • Einige Computerprozessoren beinhalten Schnittstellenmechanismen, um Zugriff auf verschiedene Prozessormerkmale bereitzustellen. Einige Prozessoren können zum Beispiel mehrere Schnittstellen beinhalten, um Software zu ermöglichen, Leistungsverwaltungsmerkmale zu steuern, auf Performanzüberwachungsmerkmale zuzugreifen und so weiter. Solche mehreren Schnittstellen können modellspezifische Register (MSRs), Konfigurationsraumregister (configuration space registers, CSRs), Memory-Mapped Input/Output (MMIO), Betriebssystemmailbox und so weiter beinhalten. Die Verwendung mehrerer unterschiedlicher Schnittstellen in komplexen modernen Prozessoren kann jedoch zu verschiedenen Problemen führen. Zum Beispiel stellen solche Schnittstellen möglicherweise keine Aufzählung von Merkmalen für mehrere Dies und Verarbeitungs-Engines bereit, die in einem Ein-Chip-System (System on a Chip, SoC) enthalten sind. In einem anderen Beispiel können solche Schnittstellen Software-und/oder Treiberänderungen für jede Prozessorerzeugung erfordern. In einem weiteren Beispiel können unterschiedliche Merkmale mit unterschiedlichen Schnittstellen auf eine inkonsistente Weise assoziiert sein und können dadurch Schwierigkeiten und Verwirrung für Benutzer verursachen, die versuchen, derartige Merkmale zu verwenden. In einem weiteren Beispiel stellen solche Schnittstellen keinen einfachen Weg bereit, die Merkmale durch einen bestimmten Typ von Softwareentität zu konfigurieren und zu steuern. Dementsprechend kann die Verwendung solcher Schnittstellen zu einer ungleichmäßigen, nicht skalierbaren und nicht erweiterbaren Architektur führen und kann relativ hohe Betriebskosten aufweisen.
  • Gemäß einer oder mehreren Ausführungsformen kann ein Prozessor eine vereinheitlichte Registerschnittstelle beinhalten, um Zugriff auf Prozessormerkmale bereitzustellen. Die vereinheitlichte Registerschnittstelle kann in Schnittstellenschaltungsanordnungen und Datenstrukturen implementiert sein, die in dem Prozessor enthalten sind. In einigen Ausführungsformen kann die Schnittstellenschaltungsanordnung eine Anfrage nach Zugriff auf ein Register empfangen, das mit einem Prozessormerkmal assoziiert ist, und kann bestimmen, ob der angefragte Zugriff durch eine Zugriffsstruktur autorisiert ist. Falls ja, kann die Schnittstellenschaltungsanordnung eine Ortsstruktur verwenden, um den angefragten Zugriff auf das Register durchzuführen. In einigen Ausführungsformen kann die vereinheitlichte Registerschnittstelle eine einzige Schnittstelle für alle Software-Interaktionen bieten, einschließlich Erkennungsinteraktionen, Merkmalsaufzählung, Merkmalskonfiguration und Register-Lese-/Schreibzugriff. Ferner kann die vereinheitlichte Registerschnittstelle Konsistenz der Registerschnittstelle über eine beliebige Anzahl von Prozessortypen und Revisionen/Aktualisierungen hinweg bereitstellen. Die vereinheitlichte Registerschnittstelle kann zudem hierarchische Leistungsverwaltung und Die-Disaggregation unterstützen und kann mit Prozessorgestaltungsauswahlen (z.B. Anzahl von Chips/Dies, Anzahl von Verarbeitungs-Engines usw.) kompatibel sein. Des Weiteren kann die vereinheitlichte Registerschnittstelle Architekturdetails vor nicht autorisierten Entitäten verschleiern und kann ermöglichen, dass unterschiedliche Arten von Softwareentitäten (z.B. Außerband-Entitäten und Inband-Entitäten) unterschiedliche Steuerebenen über spezifische Merkmale aufweisen. Dementsprechend kann die vereinheitlichte Registerschnittstelle eine einheitliche, skalierbare und erweiterbare Registerarchitektur bereitstellen und kann zudem relativ niedrige Betriebskosten gewährleisten. Verschiedene Einzelheiten einiger Ausführungsformen werden weiter unten unter Bezugnahme auf 26-34 beschrieben. Weitere beispielhafte Systeme und Architekturen werden im Folgenden unter Bezugnahme auf 1-25 beschrieben.
  • Beispielhafte Systeme und Architekturen
  • Wenngleich die folgenden Ausführungsformen unter Bezugnahme auf bestimmte Implementierungen beschrieben werden, sind die Ausführungsformen diesbezüglich nicht eingeschränkt. Insbesondere wird in Betracht gezogen, dass ähnliche Techniken und Lehren vorliegend beschriebener 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 tragbaren Vorrichtungen, Ein-Chip-Systemen (SoCs) und eingebetteten Anwendungen. Einige Beispiele tragbarer Vorrichtungen beinhalten Mobiltelefone, wie etwa Smartphones, Internetprotokoll-Vorrichtungen, Digitalkameras, PDAs (persönliche digitale Assistenten) und tragbare PCs. Eingebettete Anwendungen können typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), Netzwerkcomputer (NetPC), Set-Top-Boxen, Netzwerkknoten, Weitverkehrsnetzwerk- (WAN-) Switches, Wearable-Vorrichtungen oder ein beliebiges anderes System, das die nachstehend gelehrten Funktionen und Operationen ausführen kann, beinhalten. Ferner können Ausführungsformen in mobilen Endgeräten mit Standard-Sprachfunktionalität, wie Mobiltelefonen, Smartphones und Phablets, und/oder in nicht mobilen Endgeräten ohne standardmäßige drahtlose Sprachkommunikationsfunktion, wie vielen Wearables, Tablets, Notebooks, Desktops, Micro-Servern, Servern usw., implementiert werden.
  • Gemäß 1 ist ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 1 gezeigt, kann das System 100 verschiedene Komponenten beinhalten, einschließlich eines Prozessors 110, der, wie gezeigt, ein Mehrkernprozessor ist. Der Prozessor 110 kann über einen externen Spannungsregler 160 mit einer Leistungsversorgung 150 gekoppelt sein, der eine erste Spannungsumwandlung durchführen kann, um dem Prozessor 110 eine geregelte Primärspannung Vreg bereitzustellen.
  • Wie zu sehen ist, kann der Prozessor 110 ein Einzel-Die-Prozessor sein, der mehrere Kerne 120a - 120n enthält. Außerdem kann jedem Kern ein integrierter Spannungsregler (IVR) 125a - 125n zugeordnet sein, der die geregelte Primärspannung empfängt und eine Betriebsspannung erzeugt, die einem oder mehreren Agenten des mit dem IVR verbundenen Prozessors zur Verfügung gestellt wird. Dementsprechend kann eine IVR-Implementierung bereitgestellt werden, um eine feinkörnige Steuerung von Spannung und damit Leistung und Performanz jedes einzelnen Kerns zu ermöglichen. Daher kann jeder Kern bei einer unabhängigen Spannung und Frequenz arbeiten, was eine große Flexibilität ermöglicht und umfassende Gelegenheiten zum Ausgleichen von Leistungsaufnahme und Performanz bietet. In einigen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs das Gruppieren von Komponenten in separate Leistungsniveaus, so dass Leistung durch den IVR geregelt und nur an jene Komponenten in der Gruppe geliefert wird. Während der Leistungsverwaltung kann ein gegebenes Leistungsniveau eines IVR heruntergefahren oder ausgeschaltet werden, wenn der Prozessor in einen bestimmten Niedrigleistungszustand versetzt wird, während ein anderes Leistungsniveau eines anderen IVR aktiv bleibt oder vollständig mit Leistung versorgt wird. Ebenso können die Kerne 120 unabhängige Takterzeugungsschaltungsanordnungen wie eine oder mehrere Phasenregelschleifen (phase lock loops, PLLs) enthalten oder damit verbunden sein, um eine Betriebsfrequenz jedes Kerns 120 unabhängig zu steuern.
  • Unter weiterer Bezugnahme auf 1 können zusätzliche Komponenten innerhalb des Prozessors vorhanden sein, einschließlich einer Eingabe/Ausgabe-Schnittstelle (interface, IF) 132, einer weiteren Schnittstelle 134 und einer integrierten Speichersteuerung (IMC, integrated memory controller) 136. Wie zu sehen ist, kann jede dieser Komponenten durch einen anderen integrierten Spannungsregler 125x mit Leistung versorgt werden. In einer Ausführungsform kann die Schnittstelle 132 den Betrieb für eine Intel®-QPI (Quick Path Interconnect) Verbindung ermöglichen, die Punkt-zu-Punkt- (PtP) Verbindungen in einem kohärenten Cache-Protokoll bereitstellt, das mehrere Schichten enthält, darunter eine physikalische Schicht, eine Verbindungsschicht und eine Protokollschicht. Die Schnittstelle 134 kann ihrerseits über ein PCIe™- (Peripheral Component Interconnect Express) Protokoll kommunizieren.
  • Ebenfalls dargestellt ist eine Leistungssteuereinheit (PCU) 138, die Schaltungsanordnungen mit Hardware, Software und/oder Firmware enthalten kann, um Energieverwaltungsoperationen in Bezug auf den Prozessor 110 durchzuführen. Wie zu sehen ist, stellt die PCU 138 dem externen Spannungsregler 160 über eine digitale Schnittstelle 162 Steuerinformationen zur Verfügung, um den Spannungsregler zu veranlassen, die entsprechende geregelte Spannung zu erzeugen. Die PCU 138 liefert zudem Steuerinformationen an die IVRs 125 über eine weitere digitale Schnittstelle 163, um die erzeugte Betriebsspannung zu steuern (oder um zu bewirken, dass ein entsprechender IVR in einem Modus mit geringer Leistung deaktiviert wird). In verschiedenen Ausführungsformen kann die PCU 138 eine Vielfalt von Leistungsverwaltungslogikeinheiten zum Durchführen hardwarebasierter Leistungsverwaltung beinhalten. Eine solche Leistungsverwaltung kann vollständig prozessorgesteuert sein (z.B. durch verschiedene Prozessorhardware, die durch Arbeitslast und/oder Leistung, thermische oder andere Prozessoreinschränkungen ausgelöst werden kann), und/oder die Leistungsverwaltung kann in Reaktion auf externe Quellen (wie etwa eine Plattform- oder Leistungsverwaltungsquelle oder Systemsoftware) durchgeführt werden.
  • In 1 ist die PCU 138 als eine separate Logik des Prozessors dargestellt. In anderen Fällen kann die PCU 138 auf einem oder mehreren der Kerne 120 ausgeführt werden. In einigen Fällen kann die PCU 138 als ein Mikrocontroller (dediziert oder universell) oder eine andere Steuerlogik implementiert sein, die dazu ausgelegt ist, ihren eigenen dedizierten Leistungsverwaltungscode, manchmal als P-Code bezeichnet, auszuführen. In anderen Ausführungsformen können die von der PCU 138 durchzuführenden Energieverwaltungsoperationen außerhalb des Prozessors implementiert werden, z.B. durch eine separate integrierte Energieverwaltungsschaltung (power management integrated circuit, PMIC) oder eine andere Komponente außerhalb des Prozessors. In weiteren Ausführungsformen können von der PCU 138 durchzuführende Leistungsverwaltungsoperationen im BIOS oder einer anderen Systemsoftware implementiert werden.
  • Ausführungsformen können insbesondere für einen Mehrkernprozessor geeignet sein, in dem jeder von mehreren Kernen mit einem unabhängigen Spannungs- und Frequenzpunkt arbeiten kann. Vorliegend wird der Begriff „Domäne“ verwendet, um eine Sammlung von Hardware und/oder Logik zu bezeichnen, die mit demselben Spannungs- und Frequenzpunkt arbeitet. Zudem kann ein Mehrkernprozessor auch andere, nicht zum Kern gehörende Verarbeitungs-Engines wie Einheiten mit fester Funktion, Grafik-Engines usw. enthalten. Ein solcher Prozessor kann neben den Kernen auch andere unabhängige Domänen enthalten, z.B. eine oder mehrere Domänen, die mit einer Grafik-Engine assoziiert sind (vorliegend als Grafikdomäne bezeichnet), und eine oder mehrere Domänen, die mit nicht zum Kern gehörenden Schaltungsanordnungen assoziiert sind (vorliegend als Systemagent bezeichnet). Wenngleich viele Implementierungen eines Mehrdomänenprozessors auf einem einzigen Halbleiterchip gebildet werden können, können andere Implementierungen durch ein Mehrchip-Package realisiert werden, in dem verschiedene Domänen auf verschiedenen Halbleiter-Dies eines einzigen Package vorhanden sein können.
  • Wenngleich 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, wenngleich in der Implementierung von 1 mit einem integrierten Spannungsregler gezeigt, Ausführungsformen nicht hierauf 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 vorliegend beschriebenen Leistungsverwaltungstechniken unabhängig von und komplementär zu einem auf dem Betriebssystem (BS) basierenden Leistungsverwaltungs- (OS-based power management, OSPM-) Mechanismus sein können. Gemäß einer beispielhaften OSPM-Technik kann ein Prozessor bei verschiedenen Performanzzuständen oder -niveaus, sogenannten P-Zuständen, nämlich von P0 bis PN, arbeiten. Im Allgemeinen kann der P1-Performanzzustand dem höchsten garantierten Performanzzustand, der von einem OS gefordert werden kann, entsprechen. Zusätzlich zu diesem P1-Zustand kann das OS ferner einen höheren Performanzzustand, nämlich einen P0-Zustand, anfragen. Dieser P0-Zustand kann daher ein opportunistischer, übertaktender oder Turbomodus-Zustand sein, in dem, wenn Leistungs- und/oder thermisches Budget verfügbar ist, Prozessorhardware den Prozessor oder zumindest Teile davon konfigurieren kann, mit einer höheren als der garantierten Frequenz zu arbeiten. In vielen Implementierungen kann ein Prozessor mehrere so genannte Bin-Frequenzen oberhalb der garantierten Maximalfrequenz P1 enthalten, die eine maximale Spitzenfrequenz des jeweiligen Prozessors übersteigen, wie sie bei der Herstellung in den Prozessor eingeschrieben wurde. Außerdem kann gemäß einem OSPM-Mechanismus ein Prozessor bei verschiedenen Leistungszuständen oder -niveaus arbeiten. In Bezug auf Leistungszustände kann ein OSPM-Mechanismus unterschiedliche Leistungsaufnahmezustände spezifizieren, die im Allgemeinen als C-Zustände C0-, C1- bis Cn bezeichnet werden. Wenn ein Kern aktiv ist, läuft er in einem C0-Zustand, und wenn der Kern im Leerlauf ist, kann er in einen Kern-Niederleistungszustand 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 Leistungsaufnahmeniveau liegt (sodass C6 ein tieferer Niederleistungszustand als C1 ist und so weiter).
  • Es versteht sich, dass in verschiedenen Ausführungsformen viele unterschiedliche Typen von Leistungsverwaltungstechniken einzeln oder in Kombination verwendet werden können. Als repräsentative Beispiele kann eine Leistungssteuerung den Prozessor steuern, um durch irgendeine Form einer dynamischen Spannungsfrequenzskalierung (Dynamic Voltage Frequency Scaling - DVFS), bei der eine Betriebsspannung und/oder Betriebsfrequenz eines oder mehrerer Kerne oder einer anderen Prozessorlogik dynamisch gesteuert werden kann, leistungsverwaltet zu werden, um eine Leistungsaufnahme in bestimmten Situationen zu reduzieren. In einem Beispiel kann DVFS unter Verwendung der Enhanced Intel SpeedStep™-Technologie durchgeführt werden, die von der Intel Corporation aus Santa Clara, CA, bereitgestellt wird, um optimale Performanz bei einem niedrigstmöglichen Leistungsaufnahmeniveau bereitzustellen. In einem anderen Beispiel kann DVFS unter Verwendung der Intel TurboBoost™-Technologie durchgeführt werden, um einem oder mehreren Kernen oder anderen Rechen-Engines zu ermöglichen, basierend auf Bedingungen (z.B. Arbeitslast und Verfügbarkeit) bei einer höheren als der garantierten Betriebsfrequenz zu arbeiten.
  • Eine weitere Leistungsverwaltungstechnik, die in bestimmten Beispielen verwendet werden kann, ist dynamisches Tauschen von Arbeitslasten zwischen unterschiedlichen Rechen-Engines. Der Prozessor kann zum Beispiel asymmetrische Kerne oder andere Verarbeitungs-Engines, die bei unterschiedlichen Leistungsaufnahmeniveaus arbeiten, derart beinhalten, dass in einer leistungsbeschränkten Situation eine oder mehrere Arbeitslasten dynamisch vermittelt werden können, um auf einem Kern oder einer anderen Rechen-Engine mit niedrigerer Leistung ausgeführt zu werden. Eine weitere beispielhafte Leistungsverwaltungstechnik ist Hardware-Tastverhältnissteuerung (hardware duty cycling), was bewirken kann, dass Kerne und/oder andere Rechen-Engines 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.
  • Leistungsverwaltungstechniken können zudem verwendet werden, wenn in einer Betriebsumgebung Einschränkungen vorhanden sind. Wenn zum Beispiel eine Leistungs- und/oder thermische Einschränkung auftritt, kann Leistung reduziert werden, indem eine Betriebsfrequenz und/oder -spannung reduziert wird. Andere Leistungsverwaltungstechniken beinhalten Drosseln einer Anweisungsausführungsrate oder Begrenzen des Planens von Anweisungen. Ferner ist es möglich, dass Anweisungen einer gegebenen Befehlssatzarchitektur ausdrückliche oder implizite Anweisungen hinsichtlich der Leistungsverwaltungsoperation umfassen. Wenngleich anhand dieser bestimmten Beispiele beschrieben, versteht es sich, dass viele andere Leistungsverwaltungstechniken 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, Mobilprozessoren und so weiter. Unter Bezugnahme auf 2 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt, kann der Prozessor 200 ein Mehrkernprozessor sein, der eine Vielzahl von Kernen 210a - 210n beinhaltet. In einer Ausführungsform kann jeder Kern einer unabhängigen Leistungsdomäne angehören und dazu konfiguriert sein, basierend auf Arbeitslast in aktive Zustände und/oder maximale Performanzzustände einzutreten und auszutreten. Ein oder mehrere Kerne 210 können heterogen zu anderen Kernen sein, z.B. unterschiedliche Mikroarchitekturen, Befehlssatzarchitekturen, Pipeline-Tiefen, Leistungs- und Performanzfähigkeiten aufweisen. Die verschiedenen Kerne können über eine Verschaltung (interconnect) 215 mit einem Systemagenten 220 gekoppelt sein, der verschiedene Komponenten enthält. Wie zu sehen ist, kann der Systemagent 220 einen gemeinsamen Cache 230 enthalten, der ein Cache der letzten Ebene 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, enthalten. Der Systemagent 220 enthält zudem verschiedene Schnittstellen 250 und eine Leistungssteuereinheit 255, die Logik zum Durchführen der vorliegend beschriebenen Leistungsverwaltungstechniken umfassen kann.
  • Zusätzlich kann, über Schnittstellen 250a-250n, eine Verbindung zu verschiedenen chip externen Komponenten, wie etwa peripheren Vorrichtungen, Massenspeichern und so weiter, hergestellt werden. Obgleich in der Ausführungsform von 2 mit dieser bestimmten Implementierung gezeigt, ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Unter Bezugnahme auf 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in der Ausführungsform von 3 gezeigt ist, weist der Prozessor 300 mehrere Domänen auf. Insbesondere kann eine Kerndomäne 310 eine Vielzahl von Kernen 310a-310n enthalten, eine Grafikdomäne 320 kann eine oder mehrere Grafik-Engines enthalten, und eine Systemagentendomäne 350 kann ebenfalls vorhanden sein. In einigen Ausführungsformen kann die Systemagentendomäne 350 mit einer unabhängigen Frequenz von der Kerndomäne ausgeführt werden und kann jederzeit eingeschaltet bleiben, um Leistungssteuerereignisse und Leistungsverwaltung derart zu handhaben, dass die Domänen 310 und 320 gesteuert werden können, um dynamisch in Zustände mit hoher Leistung und niedriger Leistung einzutreten und diese zu verlassen. Jede der Domänen 310 und 320 kann bei unterschiedlicher Spannung und/oder Leistung arbeiten. Es 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 mehrere Kerndomänen, die jeweils mindestens einen Kern beinhalten, vorhanden sein.
  • Im Allgemeinen kann jeder der Kerne 310a-310n ferner Low-Level-Caches zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen enthalten. 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 Grafik-Engine sowie von verschiedenen Medienverarbeitungsschaltungsanordnungen gemeinsam genutzt werden. Wie zu sehen ist, verbindet eine Ringverbindung (ring interconnect) 330 die Kerne miteinander und stellt die Verbindung zwischen den Kernen, der Grafikdomäne 320 und der Systemagentendomäne 350 her. In einer Ausführungsform kann die Verschaltung 330 Teil der Kerndomäne sein. In anderen Ausführungsformen kann die Ringverbindung jedoch eine eigene Domäne aufweisen.
  • Wie ferner zu sehen ist, kann die Systemagentendomäne 350 eine Anzeigesteuerung 352 enthalten, 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 Leistungssteuereinheit 355 enthalten, die Logik zum Durchführen der vorliegend beschriebenen Leistungsverwaltungstechniken enthalten kann.
  • Wie ferner in 3 zu sehen ist, kann der Prozessor 300 ferner eine integrierte Speichersteuerung (IMC) 370 enthalten, 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 können in einer Ausführungsform zumindest eine DMI- (Direct Media Interface) Schnittstelle sowie eine oder mehrere PCIe™-Schnittstellen bereitgestellt sein. Ferner können zum Bereitstellen von Kommunikationen zwischen anderen Agenten, wie etwa zusätzlichen Prozessoren oder anderen Schaltungsanordnungen, zudem eine oder mehrere QPI-Schnittstellen bereitgestellt sein. Wenngleich 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.
  • Gemäß 4 ist eine Ausführungsform eines mehrere Kerne enthaltenden Prozessors dargestellt. Der Prozessor 400 enthält 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 Ein-Chip-System (SOC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 400 enthält 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 der Prozessor 400 eine beliebige Anzahl von Verarbeitungselementen enhtalten, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Software-Threads. Beispiele für Hardwareverarbeitungselemente beinhalten: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder ein beliebiges anderes Element, das in der Lage ist, einen Zustand für einen Prozessor, wie einen Ausführungszustand oder einen Architekturzustand, zu halten. Mit anderen Worten, ein Verarbeitungselement bezieht sich in einer Ausführungsform auf jede Hardware, die in der Lage ist, unabhängig mit Code, wie etwa einem Software-Thread, Betriebssystem, einer Anwendung oder einem anderem Code assoziiert zu werden. Ein physischer Prozessor bezieht sich typischerweise auf eine integrierte Schaltung, die potenziell eine beliebige Anzahl von anderen Verarbeitungselementen, wie etwa Kerne oder Hardware-Threads 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 Hardware-Thread üblicherweise auf jegliche Logik, die auf einer integrierten Schaltung angeordnet ist, die dazu in der Lage ist, einen unabhängigen architektonischen Zustand aufrechtzuerhalten, wobei sich die unabhängig aufrechterhaltenen architektonischen Zustände einen Zugriff auf Ausführungsressourcen teilen. Wie ersichtlich ist, überlappt die Grenze zwischen der Nomenklatur eines Hardware-Threads und eines Kerns, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere für einen Architekturzustand vorgesehen sind. Dennoch werden ein Kern und ein Hardware-Thread von einem Betriebssystem häufig als individuelle Logikprozessoren angesehen, wobei das Betriebssystem dazu in der Lage ist, Operationen auf jedem Logikprozessor individuell zu planen.
  • Der physische Prozessor 400, wie in 4 dargestellt, enthält zwei Kerne, nämlich die Kerne 401 und 402. Hier werden die Kerne 401 und 401 als symmetrische Kerne betrachtet, das heißt Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder der gleichen Logik. In einer anderen Ausführungsform enthält der Kern 401 einen reihenfolgeveränderten (Out-of-Order-) Prozessorkern, während der Kern 402 einen reihenfolgetreuen (In-order-) Prozessorkern enthält. Allerdings können die 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, beinhaltet der Kern 401 zwei Architekturzustandsregister 401a und 401b, die mit zwei Hardware-Threads (auch als Hardware-Thread-Slots bezeichnet) assoziiert sein können. Software-Entitäten, wie ein Betriebssystem, sehen folglich den Prozessor 400 in einer Ausführungsform potenziell als vier separate Prozessoren, das heißt vier logische Prozessoren oder Verarbeitungselemente, die fähig sind, vier Software-Threads gleichzeitig auszuführen. Wie vorstehend erwähnt, ist ein erster Thread Architekturzustandsregistern 401a zugeordnet, ist ein zweiter Thread Architekturzustandsregistern 401b zugeordnet, kann ein dritter Thread Architekturzustandsregistern 402a zugeordnet sein und kann ein vierter Thread Architekturzustandsregistern 402b zugeordnet sein. Hierbei können die Architekturzustandsregister (401a, 401b, 402a und 402b) mit Verarbeitungselementen, Thread-Slots oder Thread-Einheiten assoziiert sein, wie vorstehend beschrieben. Wie veranschaulicht, werden Architekturzustandsregister 401a in Architekturzustandsregistern 401b repliziert, so dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 401a und den logischen Prozessor 401b gespeichert werden können. In dem Kern 401 können zudem andere kleinere Ressourcen, wie Anweisungszeiger und Umbenennungslogik in dem Zuordnungs- und Umbenennungsblock 430 für die Threads 401a und 401b repliziert werden. Einige Ressourcen, wie etwa Umordnungspuffer in Neuordnungs-/Rückzugseinheit 435, Verzweigungszielpuffer und Anweisungsü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 enthält oft andere Ressourcen, die vollständig gemeinsam genutzt, durch Partitionierung gemeinsam genutzt oder durch/für Verarbeitungselemente 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 jede dieser Funktionseinheiten beinhalten oder weglassen kann sowie andere nicht dargestellte bekannte Funktionseinheiten, Logik oder Firmware beinhalten kann. Wie dargestellt, enthält der Kern 401 einen vereinfachten, repräsentativen reihenfolgeveränderten (OOO-) Prozessorkern. Ein In-Order-Prozessor kann jedoch in verschiedenen Ausführungsformen genutzt werden.
  • Der Kern 401 enthält ferner ein Decodiermodul 425, das mit einer Abrufeinheit gekoppelt ist, um abgerufene Elemente zu decodieren. Abruflogik enthält in einer Ausführungsform individuelle Sequenzierer, die den Thread-Slots 401a bzw. 401b zugeordnet sind. Üblicherweise ist der Kern 401 mit einer ersten ISA assoziiert, die Befehle, die auf dem Prozessor 400 ausführbar sind, definiert/spezifiziert. Oft beinhalten Maschinencodeanweisungen, die Teil der ersten ISA sind, einen Abschnitt der Anweisung (bezeichnet als Opcode), der auf eine auszuführende Anweisung oder eine auszuführende Operation verweist/diese spezifiziert. Das Decodiermodul 425 enthält Schaltungsanordnungen, die diese Anweisungen aus ihren Opcodes erkennen und die decodierten Anweisungen in der Verarbeitungspipeline weiterleiten, wie durch die erste ISA definiert. Beispielsweise enthält das Decodiermodul 425 in einer Ausführungsform Logik, dazu ausgestaltet oder angepasst, spezifische Anweisungen, wie etwa transaktionale Anweisungen, 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 der entsprechenden Anweisung durchzuführen. Es ist wichtig anzumerken, dass jede/jeder/jedes der vorliegend beschriebenen Aufgaben, Blöcke, Operationen und Verfahren in Reaktion auf eine einzelne oder mehrere Anweisungen durchgeführt werden kann; von denen einige neue oder alte Anweisungen 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 Anweisungsverarbeitungsergebnissen. Die Threads 401a und 401b sind jedoch potenziell zu einer reihenfolgeveränderten Ausführung fähig, wobei der Zuordner- und Umbenennerblock 430 auch andere Ressourcen, wie zum Beispiel Neuordnungspuffer, reserviert, um Anweisungsergebnisse zu verfolgen. Der Umbenennerblock 430 kann auch einen Registerumbenenner enthalten, um Programm-/Anweisungsreferenzregister in andere Register in dem Prozessor 400 umzubenennen. Die Neuordnungs-/Rückzugseinheit 435 enthält Komponenten, wie die vorstehend erwähnten Neuordnungspuffer, Ladepuffer und Speicherpuffer, um eine reihenfolgeveränderte Ausführung und später einen reihenfolgetreuen Rückzug von Anweisungen, die außerhalb der Reihenfolge ausgeführt wurden, zu unterstützen.
  • Ein Planungs- und Ausführungseinheit(en)-Block 440 enthält in einer Ausführungsform eine Planungseinheit, um Anweisungen/eine Operation auf Ausführungseinheiten zu planen. Zum Beispiel wird eine Gleitkommaanweisung an einem Port einer Ausführungseinheit, die eine verfügbare Gleitkommaausführungseinheit aufweist, geplant. Registerdateien, die mit den Ausführungseinheiten assoziiert sind, sind ebenfalls enthalten, um Verarbeitungsergebnisse von Informationsbefehlen zu speichern. Beispielhafte Ausführungseinheiten beinhalten eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Daten-Cache niedrigerer Ebene und der Datenübersetzungspuffer (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 kürzlich erfolgte Übersetzungen virtueller/linearer Adressen in physische speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur enthalten, um physischen Speicher in eine Vielzahl virtueller Seiten aufzuteilen.
  • Hierbei teilen sich die Kerne 401 und 402 den 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 eine höhere Ebene oder eine Ebene weiter außen Cache-Ebenen betrifft, die von der (den) Ausführungseinheit(en) ansteigen oder weiter entfernt sind. In einer Ausführungsform ist der Cache 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 höherer Ebene 410 ist jedoch nicht hierauf beschränkt, da er einem Anweisungscache zugeordnet sein kann oder einen solchen enthält. Ein Trace-Cache - ein Typ von Anweisungscache - kann stattdessen nach dem Decodierer 425 gekoppelt werden, um kürzlich decodierte Verfolgungen zu speichern.
  • In der dargestellten Konfiguration enthält der Prozessor 400 zudem die Busschnittstelle 405 und eine Leistungssteuereinheit 460, die Leistungsverwaltung gemäß einer Ausführungsform der vorliegenden Erfindung durchführen kann. In diesem Szenario dient die 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 enthält 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 geringer Leistungsaufnahme bereitzustellen.
  • Gemäß 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt, kann der Prozessorkern 500 ein reihenfolgeveränderter Prozessor mit mehrstufiger Pipeline sein. Der 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, enthält der Kern 500 Frontend-Einheiten 510, die verwendet werden können, um Anweisungen abzurufen, die auszuführen sind, und sie für eine spätere Verwendung in der Prozessor-Pipeline vorzubereiten. Zum Beispiel können die Frontend-Einheiten 510 eine Abrufeinheit 501, einen Anweisungscache 503 und einen Anweisungsdecodierer 505 beinhalten. In einigen Implementierungen können die Frontend-Einheiten 510 ferner einen Trace-Cache umfassen, zusammen mit Mikrocodespeicher sowie einem Mikrooperationsspeicher. Die Abrufeinheit 501 kann Makroanweisungen zum Beispiel aus dem Speicher oder Anweisungscache 503 abrufen und sie dem Anweisungsdecodierer 505 zuführen, um sie in Primitive, das heißt Mikrooperationen, zur Ausführung durch den Prozessor zu decodieren.
  • Gekoppelt zwischen Frontend-Einheiten 510 und Ausführungseinheiten 520 ist eine reihenfolgeveränderte (OOO-) Engine 515, die verwendet werden kann, um die Mikroanweisungen zu empfangen und für die Ausführung vorzubereiten. Genauer gesagt kann die OOO-Engine 515 verschiedene Puffer beinhalten, um den Mikroanweisungsfluss neu zu ordnen und verschiedene Ressourcen zuzuordnen, die zur Ausführung benötigt werden, sowie um Umbenennung logischer Register auf Speicherorte innerhalb verschiedener Registerdateien, wie der Registerdatei 530 und der erweiterten Registerdatei 535, bereitzustellen. Die Registerdatei 530 kann separate Registerdateien für Ganzzahl- und Gleitkommaoperationen beinhalten. Zu Konfigurations-, Steuerzwecken und für zusätzliche Operationen kann auch ein Satz maschinenspezifischer Register (MSRs) 538 vorhanden sein und für verschiedene Logik innerhalb des Kerns 500 (und außerhalb des Kerns) zugänglich sein.
  • Verschiedene Ressourcen können in den Ausführungseinheiten 520 vorhanden sein, einschließlich zum Beispiel verschiedener Ganzzahl-, Gleitkomma- und Einzelanweisungs-Mehrfachdaten- (single instruction multiple data, SIMD-) Logikeinheiten unter anderer spezialisierter Hardware. Derartige Ausführungseinheiten können zum Beispiel unter anderen derartigen Ausführungseinheiten eine oder mehrere arithmetische Logikeinheiten (ALUs) 522 und eine oder mehrere Vektorausführungseinheiten 524 beinhalten.
  • Ergebnisse von den Ausführungseinheiten können einer Rückzugslogik, nämlich einem Umordnungspuffer (reorder buffer, ROB) 540, bereitgestellt werden. Genauer gesagt kann der ROB 540 verschiedene Arrays und Logik zum Empfangen von Informationen beinhalten, die mit Anweisungen, die ausgeführt werden, assoziiert sind. Diese Informationen werden dann von dem ROB 540 untersucht, um zu bestimmen, ob die Anweisungen gültig zurückgenommen werden können und Ergebnisdaten im Zusammenhang mit dem Architekturzustand des Prozessors übergeben werden, oder ob eine oder mehrere Ausnahmen aufgetreten sind, die eine ordnungsgemäße Rücknahme der Anweisungen verhindern. Natürlich kann der ROB 540 andere Operationen, die mit dem Rückziehen assoziiert sind, handhaben.
  • Wie in 5 gezeigt, ist der ROB 540 mit einem Cache 550 gekoppelt, der in einer Ausführungsform ein Low-Level-Cache (zum Beispiel ein L1-Cache) sein kann, wenngleich der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Außerdem können die Ausführungseinheiten 520 direkt mit dem Cache 550 gekoppelt sein. Von dem Cache 550 kann eine Datenkommunikation mit Caches höherer Ebenen, Systemspeicher usw. erfolgen. Wenngleich er mit diesem hohen Niveau in der Ausführungsform aus 5 gezeigt, versteht sich, dass der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Auch wenn sich die Implementierung der 5 zum Beispiel auf eine Out-of-Order-Maschine bezieht, wie etwa auf eine Intel® x86-Befehlssatz-Architektur (ISA), ist der Schutzumfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt. Das heißt, andere Ausführungsformen können in einem reihenfolgetreuen 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 Anweisungen und Operationen einer unterschiedlichen ISA über eine Emulierungs-Engine und verbundene Logikschaltungsanordnungen emulieren kann, implementiert sein.
  • Gemäß 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer weiteren Ausführungsform gezeigt. In der Ausführungsform aus 6 kann Kern 600 ein Niederleistungskern einer unterschiedlichen Mikroarchitektur sein, wie etwa ein Intel® Atom™-basierter Prozessor mit einer relativ begrenzten Pipeline-Tiefe, konzipiert, um eine Leistungsaufnahme zu verringern. Wie zu sehen ist, weist der Kern 600 einen Anweisungs-Cache 610 auf, der gekoppelt ist, um Anweisungen an einen Anweisungsdecodierer 615 bereitzustellen. Ein Verzweigungsvorhersager 605 kann mit dem Anweisungs-Cache 610 gekoppelt sein. Es wird angemerkt, dass der Anweisungscache 610 ferner mit einer anderen Ebene eines Cache-Speichers gekoppelt sein kann, wie etwa mit einem L2-Cache (der der Einfachheit halber in der Veranschaulichung in 6 nicht gezeigt ist). Der Anweisungsdecodierer 615 stellt seinerseits decodierte Anweisungen für eine Ausgabewarteschlange (IQ, Issue Queue) 620 zur Speicherung und Zuführung zu einer gegebenen Ausführungs-Pipeline bereit. Ein Microcode-ROM 618 ist mit dem Anweisungsdecodierer 615 gekoppelt.
  • Eine Gleitkomma-Pipeline 630 enthält eine Gleitkomma- (floating point, FP-) Registerdatei 632, die eine Vielzahl architektonischer Register einer gegebenen Bitbreite, wie etwa 128, 256 oder 512 Bits, enthalten kann. Die Pipeline 630 enthält eine Gleitkomma-Planung 634 zum Planen von Anweisungen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline. In der gezeigten Ausführungsform beinhalten solche Ausführungseinheiten eine arithmetische Logikeinheit (ALU) 635, eine Umstelleinheit 636 und einen Gleitkomma- (FP-) Addierer 638. Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, können wiederum Puffern und/oder Registern der Registerdatei 632 bereitgestellt werden. Selbstverständlich können, während sie mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt sind, in einer anderen Ausführungsform zusätzliche oder andere Gleitkomma-Ausführungseinheiten vorhanden sein.
  • Eine Ganzzahl-Pipeline 640 kann ebenfalls bereitgestellt sein. In der gezeigten Ausführungsform enthält die Pipeline 640 eine Ganzzahl- (integer, INT-) Registerdatei 642, die eine Vielzahl architektonischer Register einer gegebenen Bitbreite, wie etwa 128 oder 256 Bits, enthalten kann. Die Pipeline 640 enthält einen Ganzzahlausführungs- (integer execution, IE-) Planer 644 zum Planen von Anweisungen zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline. In der gezeigten Ausführungsform beinhalten solche Ausführungseinheiten eine ALU 645, eine Verschiebeeinheit 646 und eine Sprungausführungseinheit (jump execution unit, JEU) 648. Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, können wiederum Puffern und/oder Registern der Registerdatei 642 bereitgestellt werden. Natürlich versteht es sich, dass, wenngleich mit diesen wenigen beispielhaften Ausführungseinheiten gezeigt, in einer weiteren Ausführungsform zusätzliche oder andere Ganzzahl-Ausführungseinheiten vorhanden sein können.
  • Ein Speicherausführungs- (memory execution, ME-) Planer 650 kann Speicheroperationen zur Ausführung in einer Adresserzeugungseinheit (address generation unit, AGU) 652 planen, die ebenfalls mit einem TLB 654 gekoppelt ist. Wie zu sehen ist, können diese Strukturen mit einem Datencache 660 gekoppelt sein, der ein L0- und/oder L1-Datencache sein kann, der seinerseits mit zusätzlichen Ebenen einer Cachespeicherhierarchie gekoppelt ist, einschließlich eines L2-Cachespeichers.
  • Zum Bereitstellen von Unterstützung für reihenfolgeveränderte Ausführung kann ein Zuordner/Umbenenner 670 bereitgestellt sein, zusätzlich zu einem Umordnungspuffer 680, der dazu konfiguriert ist, Anweisungen, die reihenfolgeverändert ausgeführt werden, für reihenfolgetreuen Rückzug umzuordnen. Wenngleich mit dieser speziellen Pipeline-Architektur in der Veranschaulichung der 6 gezeigt, versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Es ist zu beachten, dass in einem Prozessor mit asymmetrischen Kernen, wie z..B. gemäß den Mikroarchitekturen aus 5 und 6, Arbeitslasten aus Gründen der Leistungsverwaltung dynamisch zwischen den Kernen ausgetauscht werden können, da diese Kerne, wenngleich sie unterschiedliche Pipeline-Designs und -tiefen aufweisen, dieselbe oder eine verwandte ISA aufweisen 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.
  • Gemäß 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer weiteren Ausführungsform gezeigt. Wie in 7 dargestellt, kann ein Kern 700 eine mehrstufige reihenfolgetreue Pipeline zum Ausführen bei sehr niedrigen Leistungsaufnahmeniveaus enthalten. Als ein solches Beispiel kann der Kern 700 eine Mikroarchitektur gemäß einem ARM Cortex A53 Design aufweisen, wie es von ARM Holdings, LTD. aus Sunnyvale, CA, erhältlich ist. In einer Implementierung kann eine 8-stufige Pipeline bereitgestellt werden, die so konfiguriert ist, dass sie sowohl 32-Bit- als auch 64-Bit-Code ausführen kann. Der Kern 700 enthält eine Abrufeinheit 710, die dazu konfiguriert ist, Anweisungen abzurufen und sie für eine Decodiereinheit 715 bereitzustellen, die die Anweisungen decodieren kann, z.B. Makroanweisungen einer gegebenen ISA, wie etwa einer ARMv8-ISA. Es wird weiter angemerkt, dass eine Warteschlange 730 mit der Decodiereinheit 715 gekoppelt sein kann, um decodierte Anweisungen zu speichern. Decodierte Anweisungen werden einer Ausgabelogik 725 bereitgestellt, wo die decodierten Anweisungen zu einer gegebenen von mehreren Ausführungseinheiten ausgegeben werden können.
  • Unter weiterer Bezugnahme auf 7 kann die Ausgabelogik 725 Anweisungen an eine von mehreren Ausführungseinheiten ausgeben. In der gezeigten Ausführungsform beinhalten diese Ausführungseinheiten eine Ganzzahl-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ückschreib-(writeback, WB-) Einheit 780 bereitgestellt werden. Es versteht sich, dass, wenngleich zur Vereinfachung der Veranschaulichung eine einzige Rückschreibeinheit gezeigt ist, bei einigen Implementierungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten assoziiert sein können. Außerdem versteht es sich, dass, während jede der in 7 gezeigten Einheiten und Logik auf einer hohen Ebene repräsentiert sind, eine bestimmte Implementierung mehr oder andere Strukturen beinhalten kann. Ein Prozessor, der unter Verwendung eines oder mehrerer Kerne mit einer Pipeline wie in 7 ausgebildet ist, kann in vielen unterschiedlichen Endprodukten, die sich von Mobilvorrichtungen bis zu Serversystemen erstrecken, implementiert werden.
  • Unter Bezugnahme auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer weiteren Ausführungsform gezeigt. Wie in 8 dargestellt, kann ein Kern 800 eine reihenfolgeveränderte mehrstufige Pipeline mit Mehrfachausgabe enthalten, um bei sehr hohen Performanzniveaus ausgeführt zu werden (was bei höheren Leistungsaufnahmeniveaus als bei Kern 700 aus 7 geschehen kann). Als ein derartiges Beispiel kann der Prozessor 800 eine Mikroarchitektur gemäß einem ARM-Cortex-A57-Design aufweisen. In einer Implementierung kann eine 15- (oder mehr) Stufen-Pipeline bereitgestellt werden, die dazu konfiguriert ist, sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Zusätzlich kann die Pipeline eine Operation mit 3 Breite (oder mehr) und 3 Ausgabe (oder mehr) bereitstellen. Der Kern 800 enthält eine Abrufeinheit 810, die dazu konfiguriert ist, Anweisungen abzurufen und sie für eine Decodier-/Umbenenn-/Verteilereinheit 815, die mit einem Cache 820 gekoppelt ist, bereitzustellen. Die Einheit 815 kann die Anweisungen, z.B. Makroanweisungen einer ARMv8-Befehlssatzarchitektur, decodieren, Registerreferenzen innerhalb der Anweisungen umbenennen und (schließlich) die Anweisungen an eine ausgewählte Ausführungseinheit verteilen. Decodierte Anweisungen können in einer Warteschlange 825 gespeichert werden. Es ist anzumerken, dass, wenngleich 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 ist auch eine Ausgabelogik 830 gezeigt, von der decodierte Anweisungen, die in der Warteschlange 825 gespeichert sind, an eine ausgewählte Ausführungseinheit ausgegeben werden können. Die Ausgabelogik 830 kann in einer bestimmten Ausführungsform auch mit einer separaten Ausgabelogik für jeden der mehreren unterschiedlichen Typen von Ausführungseinheiten, mit denen die Ausgabelogik 830 gekoppelt ist, implementiert werden.
  • Decodierte Anweisungen können an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden. In der gezeigten Ausführungsform enthalten diese Ausführungseinheiten eine oder mehrere Ganzzahl-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 konfiguriert sein, SIMD- oder Vektordaten mit 128 oder 256 Bits zu bearbeiten. Des Weiteren kann die Gleitkomma-/Vektor-Ausführungseinheit 850 Gleitkommaoperationen mit doppelter Genauigkeit gemäß IEEE-754 ausführen. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können einer Rückschreibeinheit 880 bereitgestellt werden. Es wird angemerkt, dass in einigen Implementierungen separate Rückschreibeinheiten mit jeder der Ausführungseinheiten assoziiert sein können. Außerdem versteht es sich, dass, während jede der in 8 gezeigten Einheiten und Logik auf einer hohen Ebene repräsentiert ist, eine bestimmte Implementierung mehr oder andere Strukturen beinhalten kann.
  • Es ist zu beachten, dass in einem Prozessor mit asymmetrischen Kernen, wie z.B. gemäß den Mikroarchitekturen aus 7 und 8, Arbeitslasten aus Gründen der Leistungsverwaltung dynamisch getauscht werden können, da diese Kerne, auch wenn sie unterschiedliche Pipeline-Designs und -tiefen aufweisen, dieselbe oder eine verwandte ISA aufweisen 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 einen oder mehrere Kerne mit Pipelines wie in einer oder mehreren von 5-8 verwendet, kann in vielen verschiedenen Endprodukten implementiert werden, die von Mobilvorrichtungen bis zu Serversystemen reichen. 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 Niederleistungsprozessoren, 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 MIPS-basierte 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 Niederleistungssystem 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 enthält Prozessor 900 mehrere Kerneinheiten 910a-910n. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cachespeicher und andere Schaltungsanordnungen enthalten. 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 wird angemerkt, dass einige der Kerneinheiten heterogene Ressourcen (zum Beispiel mit einem unterschiedlichen Design) sein können. Zusätzlich kann jeder Kern mit einem Cachespeicher (nicht gezeigt) gekoppelt sein, der in einer Ausführungsform ein gemeinsam genutzter Level-2- (L2-) Cachespeicher sein kann. Ein nichtflü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 zudem eine Schnittstelle, wie etwa eine Busschnittstelleneinheit, beinhalten, um eine Verbindung mit einer zusätzlichen Schaltungsanordnung des Prozessors zu ermöglichen. In einer Ausführungsform ist jede Kerneinheit 910 mit einer kohärenten Struktur (Fabric) gekoppelt, die als eine primäre Cache-kohärente Verschaltung auf dem Die wirken kann, die ihrerseits mit einer Speichersteuerung 935 gekoppelt ist. Die Speichersteuerung 935 steuert ihrerseits Kommunikationen mit einem Speicher, wie etwa einem DRAM (der Einfachheit halber in der Veranschaulichung in 9 nicht gezeigt).
  • Zusätzlich zu Kerneinheiten sind zusätzliche Verarbeitungs-Engines innerhalb des Prozessors vorhanden, darunter mindestens eine Grafikeinheit 920, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) zum Ausführen einer Grafikverarbeitung sowie möglicherweise zum Ausführen von Universaloperationen auf dem Grafikprozessor (sogenannte GPGPU-Operation) beinhalten kann. Zusätzlich kann mindestens ein Bildsignalprozessor 925 vorhanden sein. Der Signalprozessor 925 kann dazu konfiguriert sein, eingehende Bilddaten zu verarbeiten, die von einer oder mehreren Aufzeichnungsvorrichtungen, entweder SoC-intern oder außerhalb des Chips, empfangen werden.
  • Andere Beschleuniger können ebenfalls vorhanden sein. In der Veranschaulichung der 9 kann ein Videocodierer 950 Codierungsoperationen, einschließlich Codieren und Decodieren für Videoinformationen, zum Beispiel Bereitstellen von Hardwarebeschleunigungsunterstützung für hochauflösenden Videoinhalt, ausführen. Eine Anzeigesteuerung 955 kann ferner bereitgestellt sein, um Anzeigevorgänge, einschließlich Bereitstellen von Unterstützung für interne und externe Anzeigen eines Systems, zu beschleunigen. Zusätzlich kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsoperationen, wie etwa sichere Boot-Operationen, verschiedene Kryptographieoperationen und so weiter, auszuführen.
  • Jede der Einheiten kann ihre Leistungsaufnahme über einen Leistungsmanager 940 steuern, der Steuerlogik zum Ausführen der verschiedenen vorliegend beschriebenen Leistungsverwaltungstechniken beinhalten kann.
  • In einigen Ausführungsformen kann der Prozessor 900 ferner eine nicht-kohärente Fabric enthalten, die mit der kohärenten Fabric verbunden ist, und an die verschiedene Peripherievorrichtungen gekoppelt werden können. Eine oder mehrere Schnittstellen 960a bis 960d ermöglichen Kommunikation mit einer oder mehreren chipexternen Vorrichtungen. Derartige Kommunikationen können unter anderen Arten von Kommunikationsprotokollen über eine Vielfalt von Kommunikationsprotokollen erfolgen, wie etwa PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI. Wenngleich 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.
  • Gemäß 10 ist ein Blockdiagramm eines repräsentativen SoC gezeigt. In der gezeigten Ausführungsform kann das SoC 1000 ein Mehrkern-SoC sein, das dazu konfiguriert ist, einen Niederleistungsbetrieb zur Integration in ein Smartphone oder eine andere Niederleistungsvorrichtung, wie etwa einen Tablet-Computer oder eine andere tragbare Datenverarbeitungsvorrichtung zu optimieren. Als ein Beispiel kann das SoC 1000 unter Verwendung von asymmetrischen oder unterschiedlichen Typen von Kernen, wie etwa Kombinationen von Kernen mit höherer Leistungsaufnahme und/oder Kernen mit niedriger Leistungsaufnahme, z.B. reihenfolgeveränderten Kernen und reihenfolgetreuen Kernen, implementiert sein. In unterschiedlichen Ausführungsformen können diese Kerne auf einer Intel® Architecture™-Kemausgestaltung oder einer ARM-Architekturausgestaltung basieren. In weiteren Ausführungsformen kann eine Mischung von Intel- und ARM-Kernen in einem gegebenen SoC implementiert sein.
  • Wie in 10 zu sehen ist, enthält das SoC 1000 eine erste Kerndomäne 1010 mit einer Vielzahl erster Kerne 1012a - 1012d. In einem Beispiel können diese Kerne Niederleistungskerne sein, wie etwa reihenfolgetreue Kerne. In einer Ausführungsform können diese ersten Kerne als ARM Cortex A53 Kerne implementiert sein. Diese Kerne sind wiederum mit einem Cachespeicher 1015 der Kerndomäne 1010 gekoppelt. Außerdem enthält das SoC 1000 eine zweite Kerndomäne 1020. In der Darstellung von 10 weist eine zweite Kerndomäne 1020 eine Vielzahl zweiter Kerne 1022a - 1022d auf. In einem Beispiel können diese Kerne Kerne mit höherer Leistungsaufnahme 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 implementiert sein können. Diese Kerne sind wiederum mit einem Cachespeicher 1025 der Kerndomäne 1020 gekoppelt. Es ist anzumerken, dass, wenngleich das in 10 gezeigte Beispiel 4 Kerne in jeder Domäne enthält, 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 zudem eine Grafikdomäne 1030 bereitgestellt, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) umfassen kann, die konfiguriert sind, um unabhängig Grafikarbeitslasten auszuführen, die z.B. durch einen oder mehrere Kerne der Kerndomänen 1010 und 1020 geliefert werden. Als ein Beispiel kann die 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 zu sehen ist, sind die verschiedenen Domänen mit einer kohärenten Verschaltung 1040 gekoppelt, die in einer Ausführungsform eine Cache-kohärente Verschaltungs-Fabric sein kann, die ihrerseits mit einer integrierten Speichersteuerung 1050 gekoppelt ist. Die kohärente Verschaltung 1040 kann in einigen Beispielen einen gemeinsam genutzten Cachespeicher enthalten, wie etwa einen L3-Cache. In einer Ausführungsform kann die 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 der Kerndomänen variieren. Beispielsweise kann für ein SoC mit niedriger Leistungsaufnahme, das für Integration in eine mobile Datenverarbeitungsvorrichtung geeignet ist, eine begrenzte Anzahl von Kerndomänen, wie in 10 gezeigt, vorhanden sein. Ferner kann in solchen SoCs mit niedriger Leistungsaufnahme die Kerndomäne 1020, die Kerne mit höherer Leistungsaufnahme enthält, geringere Anzahlen solcher Kerne aufweisen. Beispielsweise können in einer Implementierung zwei Kerne 1022 bereitgestellt sein, um Betrieb bei verringerten Leistungsaufnahmeniveaus zu ermöglichen. Zusätzlich dazu können die unterschiedlichen Kerndomänen auch mit einer Interrupt-Steuerung gekoppelt sein, um ein dynamisches Austauschen von Arbeitslasten zwischen den unterschiedlichen Domänen zu ermöglichen.
  • In 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 Performanz- (und Leistungs-) Niveaus skaliert werden kann. Als ein solches Beispiel können 4 Kerndomänen, die jeweils eine gegebene Anzahl von reihenfolgeveränderten Kernen aufweisen, bereitgestellt sein. Ferner können zusätzlich zu der optionalen GPU-Unterstützung (die als ein Beispiel die Form einer GPGPU annehmen kann) auch ein oder mehrere Beschleuniger zum Bereitstellen einer optimierten Hardwareunterstützung für bestimmte Funktionen (z.B. Webdienste, Netzwerkverarbeitung, Vermittlung und so weiter) bereitgestellt sein. Außerdem kann eine Eingabe/Ausgabe-Schnittstelle vorhanden sein, um derartige Beschleuniger mit chip externen Bauelementen zu koppeln.
  • Gemäß 11 ist ein Blockdiagramm eines weiteren beispielhaften SoC gezeigt. In der Ausführungsform aus 11 kann das SoC 1100 verschiedene Schaltungsanordnungen enthalten, um hohe Performanz für Multimedia-Anwendungen, Kommunikationen und andere Funktionen zu ermöglichen. Daher eignet sich das SoC 1100 zur Einbindung in eine breite Vielfalt tragbarer und anderer Vorrichtungen, wie etwa Smartphones, Tablet-Computer, Smart-TVs und so weiter. In dem gezeigten Beispiel enthält das SoC 1100 eine Zentralprozessoreinheiten- (central processor unit, CPU-) Domäne 1110. In einer Ausführungsform kann eine Vielzahl individueller Prozessorkerne in der CPU-Domäne 1110 vorhanden sein. Als ein Beispiel kann die CPU-Domäne 1110 ein Vierkernprozessor mit 4 Multithread-Kernen sein. Derartige Prozessoren können homogene oder heterogene Prozessoren sein, zum Beispiel eine Mischung aus Niederleistungs- und Hochleistungsprozessorkernen.
  • Ferner ist eine GPU-Domäne 1120 bereitgestellt, um eine erweiterte Grafikverarbeitung in einer oder mehreren GPUs auszuführen, um Grafik- und Rechen-APIs zu handhaben. Eine DSP-Einheit 1130 kann einen oder mehrere Niederleistungs-DSPs zum Handhaben von Niederleistungs-Multimedia-Anwendungen, wie etwa Musikwiedergabe, Audio/Video und so weiter, zusätzlich zu fortgeschrittenen Berechnungen, die während der Ausführung von Multimedia-Anweisungen auftreten können, bereitstellen. Eine Kommunikationseinheit 1140 kann ihrerseits verschiedene Komponenten enthalten, 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.
  • Ferner kann ein Multimedia-Prozessor 1150 verwendet werden, um eine Aufzeichnung und Wiedergabe von hochauflösenden Video- und Audioinhalten, einschließlich einer Verarbeitung von Benutzergesten, auszuführen. Eine Sensoreinheit 1160 kann eine Vielzahl von Sensoren und/oder eine Sensorsteuerung zur Schnittstellenbildung mit verschiedenen chip externen Sensoren, die in einer gegebenen Plattform vorhanden sind, beinhalten. Ein Bildsignalprozessor (ISP) 1170 kann eine Bildverarbeitung im Zusammenhang mit aufgezeichnetem Inhalt einer oder mehrerer Kameras einer Plattform, einschließlich Standbild- und Videokameras, durchführen.
  • Ein Anzeigeprozessor 1180 kann Unterstützung zur Verbindung mit einer hochauflösenden Anzeige mit einer gegebenen Pixeldichte, einschließlich der Fähigkeit, drahtlos Inhalt zur Wiedergabe auf einer solchen Anzeige zu kommunizieren, bereitstellen. Ferner kann eine Ortungseinheit 1190 einen GPS- (Global Positioning System) Empfänger mit Unterstützung für mehrere GPS-Konstellationen beinhalten, um Anwendungen hochpräzise Positionsbestimmungsinformationen bereitzustellen, die unter Verwendung eines solchen GPS-Empfängers erhalten werden. Es versteht sich, dass, wenngleich dieser spezielle Satz von Komponenten in dem Beispiel der 11 gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Gemäß 12 ist ein Blockdiagramm eines beispielhaften Systems gezeigt, mit dem Ausführungsformen verwendet werden können. Wie zu sehen ist, kann das System 1200 ein Smartphone oder ein anderer drahtloser Kommunikator sein. Ein Basisbandprozessor 1205 ist dazu konfiguriert, verschiedene Signalverarbeitung in Bezug auf Kommunikationssignale, die von dem System gesendet oder von diesem empfangen werden sollen, auszuführen. Der Basisbandprozessor 1205 ist seinerseits mit einem Anwendungsprozessor 1210 gekoppelt, der eine Haupt-CPU des Systems zum Ausführen eines OS und anderer Systemsoftware sein kann, zusätzlich zu Benutzeranwendungen, wie etwa viele bekannte Social-Media- und Multimedia-Apps. Der Anwendungsprozessor 1210 kann ferner dazu konfiguriert sein, eine Vielfalt anderer Datenverarbeitungsoperationen für die Vorrichtung durchzuführen.
  • Der Anwendungsprozessor 1210 kann seinerseits mit einer Benutzerschnittstelle/Anzeige 1220, z.B. einer Touchscreenanzeige, gekoppelt sein. Zusätzlich kann der Anwendungsprozessor 1210 mit einem Speichersystem gekoppelt sein, das einen nichtflüchtigen Speicher, nämlich einen Flash-Speicher 1230 und einen Systemspeicher, nämlich einen dynamischen Direktzugriffsspeicher (DRAM) 1235, beinhaltet. Wie ferner zu sehen ist, ist der Anwendungsprozessor 1210 ferner mit einer Aufzeichnungsvorrichtung 1241 gekoppelt, wie etwa einer oder mehreren Bildaufzeichnungsvorrichtungen, die Video- und/oder Standbilder aufzeichnen können.
  • Immer noch unter Bezugnahme auf 12 ist eine universelle integrierte Schaltungskarte (universal integrated circuit card, UICC) 1246, die ein Teilnehmeridentitätsmodul und möglicherweise einen sicheren Speicherungs- und Kryptoprozessor umfasst, ebenfalls mit dem Anwendungsprozessor 1210 gekoppelt. Das System 1200 kann ferner einen Sicherheitsprozessor 1250 beinhalten, der mit dem Anwendungsprozessor 1210 gekoppelt sein kann. Eine Vielzahl von Sensoren 1225 kann mit dem Anwendungsprozessor 1210 gekoppelt sein, 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, zum Beispiel in der Form von Sprachkommunikationen, abgespielten oder Streaming-Audiodaten usw., bereitstellen.
  • Wie ferner dargestellt, wird eine kontaktlose Nahfeldkommunikations- (near field communication, NFC-) Schnittstelle 1260 bereitgestellt, die in einem NFC-Nahfeld über eine NFC-Antenne 1265 kommuniziert. Wenngleich in 12 separate Antennen gezeigt sind, versteht es sich, dass in einigen Implementierungen eine Antenne oder eine unterschiedliche Menge von Antennen bereitgestellt werden kann, um verschiedene drahtlose Funktionalitäten zu ermöglichen.
  • Eine integrierte Leistungsverwaltungsschaltung (power management integrated circuit, PMIC) 1215 ist mit dem Anwendungsprozessor 1210 gekoppelt, um Leistungsverwaltung auf Plattformebene durchzuführen. Zu diesem Zweck kann die PMIC 1215 Leistungsverwaltungsanfragen an den Anwendungsprozessor 1210 ausgeben, um wie gewünscht in bestimmte Niederleistungszustände einzutreten. Des Weiteren kann die PMIC 1215 basierend auf Plattformbeschränkungen auch das Leistungsniveau anderer Komponenten des Systems 1200 steuern.
  • Um zu ermöglichen, dass Kommunikationen übertragen und empfangen werden, können verschiedene Schaltungen zwischen dem Basisbandprozessor 1205 und einer Antenne 1290 gekoppelt sein. Insbesondere können ein Hochfrequenz- bzw. HF-Sendeempfänger 1270 und ein drahtloser Lokalbereichsnetzwerk- bzw. WLAN-Sendeempfänger 1275 vorhanden sein. Im Allgemeinen kann der HF-Sendeempfänger 1270 verwendet werden, um drahtlose Daten und Anrufe gemäß einem gegebenen drahtlosen Kommunikationsprotokoll, wie etwa einem drahtlosen 3G- oder 4G-Kommunikationsprotokoll, wie etwa gemäß einem Codemultiplex-Mehrfachzugriff- (code division multiple access, CDMA), GSM- (Global System for Mobile Communication), LTE- (Long Term Evolution) oder einem anderen Protokoll, zu empfangen und zu übertragen. Zusätzlich kann ein GPS-Sensor 1280 vorhanden sein. Andere drahtlose Kommunikationen, wie etwa der Empfang oder die Übertragung von Funksignalen, zum Beispiel von AM-/FM- und anderen Signalen, können ebenfalls bereitgestellt werden. Zusätzlich können über den WLAN-Sendeempfänger 1275 auch lokale drahtlose Kommunikationen realisiert werden.
  • Gemäß 13 ist ein Blockdiagramm eines weiteren beispielhaften Systems gezeigt, mit dem Ausführungsformen verwendet werden können. In der Veranschaulichung der 13 kann das System 1300 ein mobiles Niederleistungssystem sein, wie etwa ein Tablet-Computer, 2:1-Tablet, Phablet oder ein anderes umwandelbares oder eigenständiges Tablet-System. Wie dargestellt, ist ein SoC 1310 vorhanden und kann dazu konfiguriert sein, als ein Anwendungsprozessor für eine Vorrichtung zu arbeiten.
  • Eine Vielzahl von Vorrichtungen kann mit dem SoC 1310 koppeln. Bei der gezeigten Veranschaulichung beinhaltet ein Speichersubsystem einen Flash-Speicher 1340 und einen DRAM 1345, die mit dem SoC 1310 gekoppelt sind. 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. Um drahtgebundene Netzwerkkonnektivität bereitzustellen, ist das SoC 1310 mit einer Ethernet-Schnittstelle 1330 gekoppelt. Ein Peripherie-Hub 1325 ist mit dem SoC 1310 gekoppelt, um eine Schnittstelle mit verschiedenen Peripherievorrichtungen zu ermöglichen, wie sie beispielsweise durch einen beliebigen von verschiedenen Ports oder anderen Verbindern mit dem System 1300 gekoppelt sein können.
  • Zusätzlich zu internen Leistungsverwaltungsschaltungsanordnungen und - funktionalität innerhalb von SoC 1310 ist ein PMIC 1380 mit dem SoC 1310 gekoppelt, um plattformbasierte Leistungsverwaltung bereitzustellen, z.B. basierend darauf, ob das System durch eine Batterie 1390 oder Wechselstrom über einen Wechselstromadapter 1395 betrieben wird. Zusätzlich zu dieser leistungsquellenbasierten Leistungsverwaltung kann die PMIC 1380 ferner Plattformleistungsverwaltungsaktivitäten basierend auf Umgebungs- und Nutzungsbedingungen ausführen. Ferner kann die PMIC 1380 Steuer- und Statusinformationen an das SoC 1310 kommunizieren, um verschiedene Leistungsverwaltungsaktionen innerhalb des SoC 1310 zu bewirken.
  • Immer noch unter Bezugnahme auf 13 ist, um drahtlose Fähigkeiten bereitzustellen, eine WLAN-Einheit 1350 mit dem SoC 1310 und wiederum mit einer Antenne 1355 gekoppelt. In verschiedenen Implementierungen kann die WLAN-Einheit 1350 eine Kommunikation gemäß einem oder mehreren drahtlosen Protokollen bereitstellen.
  • Wie ferner dargestellt, können mehrere Sensoren 1360 mit dem SoC 1310 gekoppelt sein. Diese Sensoren können verschiedene Beschleunigungsmesser, Umgebungs- und andere Sensoren, einschließlich Benutzergestensensoren, beinhalten. Schließlich ist ein Audiocodec 1365 mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu einer Audioausgabevorrichtung 1370 bereitzustellen. Selbstverständlich versteht es sich, dass, obwohl mit dieser speziellen Umsetzung in 13 gezeigt, viele Variationen und Alternativen möglich sind.
  • Gemäß 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 beinhaltet in einer Ausführungsform einen Mikroprozessor, Mehrkernprozessor, Multithread-Prozessor, einen Ultra-Niederspannungs-Prozessor, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. In der dargestellten Implementierung wirkt der Prozessor 1410 als eine Hauptverarbeitungseinheit und als zentraler Knoten zur Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400 und kann eine Leistungsverwaltungsschaltungsanordnung wie vorliegend beschrieben enthalten. 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 ist der Systemspeicher 1415 über mehrere Speichervorrichtungen oder Module umgesetzt, um eine gegebene Menge an Systemspeicher bereitzustellen.
  • Um eine dauerhafte Speicherung von Informationen, wie etwa Daten, Anwendungen, einem oder mehreren Betriebssystemen usw., bereitzustellen, kann eine Massenspeicherung 1420 ebenfalls mit dem Prozessor 1410 gekoppelt sein. 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 SAD implementiert sein, oder der Massenspeicher kann primär unter Verwendung einer Festplatte (HDD; Hard Disk Drive) mit einer kleineren Menge an SAD-Speicher zum Wirken als ein SAD-Cache implementiert sein, um nichtflüchtige Speicherung von Kontextzustand und anderen solchen Informationen während Stromlosereignissen zu ermöglichen, sodass bei der Neuinitiierung von Systemaktivitäten ein schnelles Hochfahren erfolgen kann. Wie ebenfalls in 14 gezeigt ist, kann eine Flash-Vorrichtung 1422 z. B. über eine serielle Peripherieschnittstelle (serial peripheral interface, SPI) mit dem Prozessor 1410 gekoppelt sein. Diese Flash-Vorrichtung kann eine nichtflüchtige Speicherung von Systemsoftware bereitstellen, einschließlich einer Basic-Input/Output-Software (BIOS) sowie anderer Firmware des Systems.
  • Verschiedene Eingabe/Ausgabe-Vorrichtungen (E/A-Vorrichtungen) können innerhalb des Systems 1400 vorhanden sein. Insbesondere ist bei der Ausführungsform der 14 eine Anzeige 1424 gezeigt, die ein hochauflösendes LCD- oder LED-Panel sein kann, das ferner einen Touchscreen 1425 bereitstellt. In einer Ausführungsform kann die Anzeige 1424 mit einem Prozessor 1410 über eine Anzeigeverschaltung gekoppelt sein, die als eine Hochleistungsgrafikverschaltung implementiert sein kann. Der Touchscreen 1425 kann über eine weitere Verschaltung mit dem Prozessor 1410 gekoppelt sein, die in einer Ausführungsform eine I2C-Verschaltung sein kann. Wie weiter in 14 gezeigt ist, kann zusätzlich zum Touchscreen 1425 eine Benutzereingabe durch Berührung auch durch ein Touchpad 1430 erfolgen, welches innerhalb des Chassis konfiguriert sein kann und ebenfalls mit derselben I2C-Verschaltung wie der Touchscreen 1425 gekoppelt sein kann.
  • Für Perceptual Computing und andere Zwecke können verschiedene Sensoren innerhalb des Systems vorhanden sein und können mit dem Prozessor 1410 auf verschiedene Weisen gekoppelt sein. Bestimmte Inertial- und Umweltsensoren 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 (ambient light sensor, ALS) 1442, einen Kompass 1443 und ein Gyroskop 1444 beinhalten. Andere Umgebungssensoren können einen oder mehrere thermische Sensoren 1446 beinhalten, die in einigen Ausführungsformen über einen Systemverwaltungsbus (SMBus) mit dem Prozessor 1410 gekoppelt sind.
  • Wie in 14 ebenfalls zu sehen ist, können verschiedene periphere Vorrichtungen über eine Verschaltung mit niedriger Pinzahl (LPC, low pin count) mit dem Prozessor 1410 gekoppelt sein. In der gezeigten Ausführungsform können verschiedene Komponenten über eine eingebettete Steuerung 1435 gekoppelt sein. Solche Komponenten können eine Tastatur 1436 (zum Beispiel über eine PS2-Schnittstelle gekoppelt), einen Lüfter 1437 und einen thermischen Sensor 1439 beinhalten. In einigen Ausführungsformen kann das Touchpad 1430 ebenfalls über eine PS2-Schnittstelle mit der EC 1435 gekoppelt sein. Zusätzlich kann ein Sicherheitsprozessor, wie etwa ein Vertrauenswürdige-Plattform-Modul (TPM, Trusted Platform Module) 1438 ebenfalls über diese LPC-Verschaltung mit dem Prozessor 1410 gekoppelt sein.
  • Das System 1400 kann mit externen Vorrichtungen in einer Vielzahl von Weisen, einschließlich drahtlos, kommunizieren. Bei der in 14 gezeigten Ausführungsform sind verschiedene drahtlose Module vorhanden, von denen jedes einem Funkgerät, das für ein bestimmtes drahtloses Kommunikationsprotokoll konfiguriert ist, entsprechen kann. Eine Art und Weise für drahtlose Kommunikation in einem Nahbereich, wie etwa in einem Nahfeld, kann über eine NFC-Einheit 1445 erfolgen, die bei einer Ausführungsform über einen SMBus mit dem Prozessor 1410 kommunizieren kann. Es sei angemerkt, dass Vorrichtungen in unmittelbarer Nähe über diese NFC-Einheit 1445 Vorrichtungen miteinander kommunizieren können.
  • Wie in 14 ferner gezeigt, können zusätzliche drahtlose Einheiten andere drahtlose Nahbereichs-Engines beinhalten, einschließlich einer WLAN-Einheit 1450 und einer Bluetooth™-Einheit 1452. Unter Verwendung der WLAN-Einheit 1450 können Wi-Fi™-Kommunikationen implementiert werden, während über die Bluetooth™-Einheit 1452 Bluetooth™-Kommunikationen mit kurzer Reichweite erfolgen können. Diese Einheiten können über einen gegebenen Link mit dem Prozessor 1410 kommunizieren.
  • Zusätzlich können drahtlose Weitbereichskommunikationen, zum Beispiel gemäß einem zellbasierten oder anderen drahtlosen Weitbereichsprotokoll über eine WWAN-Einheit 1456 erfolgen, die wiederum mit einem Teilnehmeridentitätsmodul (subscriber identity module, SIM) 1457 gekoppelt sein kann. Zusätzlich kann, um den Empfang und die Verwendung von Ortungsinformationen zu ermöglichen, auch ein GPS-Modul 1455 vorhanden sein. Es wird angemerkt, dass bei der in 14 gezeigten Ausführungsform die WWAN-Einheit 1456 und eine integrierte Aufzeichnungsvorrichtung, wie etwa ein Kameramodul 1454, über einen gegebenen Link kommunizieren können.
  • 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. Ähnlich kann der DSP 1460 mit einem integrierten Codierer/Decodierer (CODEC) und Verstärker 1462 kommunizieren, die wiederum mit Ausgabelautsprechern 1463 koppeln können, die innerhalb des Chassis implementiert 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) implementiert sein kann, um qualitativ hochwertige Audioeingaben zu unterstützen, um eine sprachaktivierte Steuerung verschiedener Operationen innerhalb des Systems zu ermöglichen. Es sei angemerkt, dass Audioausgaben von dem Verstärker/CODEC 1462 zu einer Kopfhörerbuchse 1464 zugeführt werden können. Wenngleich der Schutzumfang der vorliegenden Erfindung mit diesen speziellen Komponenten in der Ausführungsform der 14 gezeigt ist, ist der Schutzumfang in dieser Hinsicht nicht beschränkt.
  • Ausführungsformen können in vielen verschiedenen Systemtypen umgesetzt werden. Gemäß 15A ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15A gezeigt, ist das Mehrprozessorsystem 1500 ein Punkt-zu-Punkt-Verschaltungssystem und enthält einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Verschaltung 1550 gekoppelt sind. Wie in 15A gezeigt, kann jeder der Prozessoren 1570 und 1580 ein Mehrkernprozessor sein, umfassend erste und zweite Prozessorkerne (d.h. Prozessorkerne 1574a und 1574b und Prozessorkerne 1584a und 1584b), wenngleich potenziell sehr viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU oder eine andere Leistungsverwaltungslogik zum Durchführen von prozessorbasierter Leistungsverwaltung wie vorliegend beschrieben enthalten.
  • Unter weiterer Bezugnahme auf 15A beinhaltet der erste Prozessor 1570 ferner eine integrierte Speichersteuerung (IMC) 1572 und Punkt-zu-Punkt- (P-P-) Schnittstellen 1576 und 1578. Gleichermaßen beinhaltet der zweite Prozessor 1580 eine IMC 1582 und P-P-Schnittstellen 1586 und 1588. Wie in 15 gezeigt, koppeln die IMCs 1572 und 1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, die Teile des Systemspeichers (z.B. DRAM) sein können, die lokal mit den jeweiligen Prozessoren verbunden sind. Der erste Prozessor 1570 und der zweite Prozessor 1580 können über P-P-Verbindungen 1562 bzw. 1564 mit einem Chipsatz 1590 gekoppelt sein. Wie in 15A gezeigt, beinhaltet der Chipsatz 1590 P-P-Schnittstellen 1594 und 1598.
  • Ferner enthält der Chipsatz 1590 eine Schnittstelle 1592 zum Koppeln des Chipsatzes 1590 mit einer Hochleistungs-Grafik-Engine 1538 über eine P-P-Verschaltung 1539. Der Chipsatz 1590 wiederum kann über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. Wie in 15A gezeigt, können verschiedene Eingabe/Ausgabe- bzw. 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 enthalten kann. Ferner kann eine Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt sein. Ausführungsformen können in andere Arten von Systemen integriert werden, einschließlich Mobilvorrichtungen, wie etwa ein Smart-Mobiltelefon, Tablet-Computer, Netbook, Ultrabook™ oder so weiter.
  • Gemäß 15B, ist ein Blockdiagramm eines zweiten, spezifischeren Beispielsystems 1501 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Ähnliche Elemente in 15A und 15B tragen gleiche Bezugszeichen und bestimmte Aspekte aus 15A aus 15B wurden ausgelassen, um ein Verschleiern anderer Aspekte von 15B zu verhindern.
  • 15B veranschaulicht, dass die Prozessoren 1570, 1580 integrierten Speicher und E/A-Steuerlogik („CL", control logic) 1571 bzw. 1581 beinhalten können. Somit beinhaltet die Steuerlogik 1571 und 1581 integrierte Speichersteuerungseinheiten und beinhaltet E/A-Steuerlogik. 15N stellt dar, dass nicht nur die Speicher 1532, 1534 mit der Steuerlogik 1571 und 1581 gekoppelt sind, sondern auch, dass E/A-Vorrichtungen 1513 ebenfalls mit der Steuerlogik 1571 und 1581 gekoppelt sind. Legacy-E/A-Vorrichtungen 1515 sind mit dem Chipsatz 1590 gekoppelt.
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentativen Code implementiert werden, der auf einem maschinenlesbaren Medium gespeichert ist, und der Logik innerhalb einer integrierten Schaltung, wie z.B. einem Prozessor, repräsentiert und/oder definiert. Das maschinenlesbare Medium kann zum Beispiel Anweisungen beinhalten, die verschiedene Logik innerhalb des Prozessors repräsentieren. Wenn sie von einer Maschine gelesen werden, können die Anweisungen die Maschine veranlassen, die Logik zu erzeugen, um die vorliegend 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 Hardwaremodell, das die Struktur der integrierten Schaltung beschreibt, gespeichert werden können. Das Hardwaremodell kann an verschiedene Kunden oder Fertigungseinrichtungen geliefert werden, die das Hardwaremodell auf Fertigungsmaschinen laden, die die integrierte Schaltung herstellen. Die integrierte Schaltung kann derart hergestellt werden, dass die Schaltung Operationen durchführt, die in Verbindung mit einer beliebigen der vorliegend beschriebenen Ausführungsformen beschrieben sind.
  • 16 ist ein Blockdiagramm, das ein IP-Kernentwicklungssystem 1600 veranschaulicht, das zum Herstellen einer integrierten Schaltung zum Ausführen von Operationen verwendet werden kann, gemäß einer Ausführungsform. Das IP-Kementwicklungssystem 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 (zum Beispiel eine integrierte SoC-Schaltung) zu konstruieren. Eine Designeinrichtung 1630 kann eine Softwaresimulation 1610 eines IP-Core-Designs in einer Programmier-Hochsprache (z.B. C/C++) erzeugen. Die Softwaresimulation 1610 kann verwendet werden, um das Verhalten des IP-Kerns zu entwerfen, zu testen und zu verifizieren. Aus dem Simulationsmodell kann dann ein Register-Transfer-Level-Design (RTL-Design) angelegt oder synthetisiert werden. Das RTL-Design 1615 ist eine Abstraktion des Verhaltens der integrierten Schaltung, das den Fluss von Digitalsignalen zwischen Hardwareregistern, einschließlich der zugehörigen Logik, die unter Verwendung der modellierten Digitalsignale durchgeführt wird, modelliert. Zusätzlich zu dem RTL-Design 1615 können auch niedrigere Designs auf Logikebene oder Transistorebene erzeugt, konzipiert oder synthetisiert werden. Daher können die spezifischen Einzelheiten des Anfangsdesigns und der Simulation variieren.
  • Das RTL-Design 1615 oder -Äquivalent kann ferner durch die Designanlage in ein Hardwaremodell 1620 synthetisiert werden, das in einer Hardwarebeschreibungssprache (HDL) oder einer anderen Darstellung von physischen Design-Daten vorliegen kann. Die HDL kann weiter simuliert oder getestet werden, um das IP-Kern-Design zu verifizieren. Das IP-Kern-Design kann zur Lieferung an eine Fertigungseinrichtung 1665 eines anderen Herstellers unter Verwendung von nichtflüchtigem Speicher 1640 (z.B. Festplatte, Flash-Speicher oder einem beliebigen nichtflüchtigen Speichermedium) gespeichert werden. Alternativ dazu kann das IP-Kern-Design über eine drahtgebundene Verbindung 1650 oder eine drahtlose Verbindung 1660 (zum Beispiel über das Internet) übertragen werden. Die Fertigungseinrichtung 1665 kann dann eine integrierte Schaltung fertigen, die zumindest teilweise auf dem IP-Kern-Design basiert. Die gefertigte integrierte Schaltung kann dazu konfiguriert sein, Operationen gemäß den vorliegend beschriebenen Komponenten und/oder Prozessen durchzuführen.
  • Die nachstehend beschriebenen 17A-25 zeigen beispielhafte Architekturen und Systeme zur Umsetzung von Ausführungsformen der hier beschriebenen Komponenten und/oder Prozesse. In einigen Ausführungsformen werden eine oder mehrere Hardwarekomponenten und/oder Anweisungen, die hier beschrieben sind, emuliert, wie unten ausführlich beschrieben ist, oder sind als Softwaremodule implementiert.
  • Ausführungsformen der oben ausführlich beschriebenen Anweisung(en) können in einem „generischen vektorfreundlichen Anweisungsformat“ ausgeführt werden, was nachstehend ausführlich beschrieben wird. In anderen Ausführungsformen wird ein solches Format nicht genutzt, und ein anderes Anweisungsformat wird genutzt, allerdings ist die nachstehende Beschreibung der Schreibmaskenregister, verschiedener Datentransformationen (Mischen (Swizzle), Rundsenden (Broadcast) usw.), Adressierung usw. im Allgemeinen auf die obige Beschreibung der Ausführungsformen der Anweisung(en) anwendbar. Außerdem sind Beispielsysteme, Architekturen und Pipelines weiter unten ausführlich beschrieben. Obige Ausführungsformen der Anweisung(en) können auf solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind aber nicht auf die ausführlich beschriebenen beschränkt.
  • Ein Befehlssatz kann ein oder mehrere Anweisungsformate umfassen. Ein gegebenes Anweisungsformat kann verschiedene Felder (zum Beispiel Anzahl von Bits, Position von Bits) definieren, um unter anderem die Operation, die ausgeführt werden soll (zum Beispiel Opcode), und den bzw. die Operanden, auf dem bzw. denen diese Operation ausgeführt werden soll, und/oder andere Datenfelder (zum Beispiel Maske) zu spezifizieren. Einige Anweisungsformate sind durch die Definition von Anweisungsvorlagen (oder Subformaten) weiter heruntergebrochen. Zum Beispiel können die Anweisungsvorlagen eines gegebenen Anweisungsformats so definiert sein, dass sie unterschiedliche Teilsätze der Felder des Anweisungsformats aufweisen (die enthaltenen Felder sind typischerweise in der gleichen Reihenfolge, aber zumindest einige weisen unterschiedliche Bitpositionen auf, weil dort weniger Felder enthalten sind), und/oder so definiert sein, dass sie ein gegebenes Feld aufweisen, das unterschiedlich interpretiert wird. Dementsprechend wird jede Anweisung einer ISA unter Verwendung eines gegebenen Anweisungsformats (und, falls definiert, in einer gegebenen der Anweisungsvorlagen jenes Anweisungsformats) ausgedrückt und beinhaltet Felder zum Spezifizieren der Operation und der Operanden. Zum Beispiel hat eine beispielhafte ADD-Anweisung einen speziellen Opcode und ein Anweisungsformat, das ein Opcode-Feld zum Spezifizieren dieses Opcodes und Operandenfelder zum Auswählen von Operanden (Quellel/Ziel und Quelle2) beinhaltet; und ein Auftreten dieser ADD-Anweisung in einem Anweisungs-Stream wird spezielle Inhalte in den Operandenfeldern aufweisen, die spezielle Operanden auswählen. Eine Reihe von SIMD-Erweiterungen, die als Advanced Vector Extensions (AVX) (AVX1 und AVX2) bezeichnet werden und das Codierungsschema Vector Extensions (VEX) verwenden, wurden freigegeben 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 Anweisungsformate
  • Ausführungsformen der vorliegend beschriebenen Anweisung(en) können in unterschiedlichen Formaten ausgeführt werden. Zudem werden beispielhafte Systeme, Architekturen und Pipelines nachfolgend ausführlich beschrieben. Ausführungsformen der Anweisung(en) können auf derartigen Systemen, Architekturen und Pipelines ausgeführt werden, sind jedoch nicht auf die besprochenen beschränkt.
  • Generisches vektorfreundliches Anweisungsformat
  • Ein vektorfreundliches Anweisungsformat ist ein Anweisungsformat, das für Vektoranweisungen geeignet ist (zum Beispiel gibt es für Vektoroperationen spezifische Felder). Wenngleich Ausführungsformen beschrieben werden, bei denen sowohl Vektor- als auch skalare Operationen durch das vektorfreundliche Anweisungsformat unterstützt werden, verwenden alternative Ausführungsformen nur Vektoroperationen des vektorfreundlichen Anweisungsformats.
  • 17A-17B sind Blockdiagramme, die ein allgemeines vektorfreundliches Anweisungsformat und entsprechende Anweisungsvorlagen gemäß Ausführungsformen der Erfindung zeigen. 17A ist ein Blockdiagramm, ein generisches vektorfreundliches Anweisungsformat und Klasse-A-Anweisungsvorlagen davon darstellend, gemäß Ausführungsformen der Erfindung; während 17B ein Blockdiagramm ist, das generische vektorfreundliche Anweisungsformat und Klasse-B-Anweisungsvorlagen davon darstellend, gemäß Ausführungsformen der Erfindung. Insbesondere ein generisches vektorfreundliches Anweisungsformat 1700, für das Klasse-A- und Klasse-B-Anweisungsvorlagen definiert sind, die beide Anweisungsvorlagen ohne Speicherzugriff 1705 und Anweisungsvorlagen mit Speicherzugriff 1720 beinhalten. Der Ausdruck „generisch“ im Kontext des vektorfreundlichen Anweisungsformats bezieht sich darauf, dass das Anweisungsformat nicht an irgendeinen spezifischen Befehlssatz gebunden ist.
  • Während Ausführungsformen der Erfindung beschrieben werden, in denen das vektorfreundliche Anweisungsformat 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 somit besteht ein 64-Byte-Vektor entweder aus 16 Doppelwort-Größe-Elementen oder alternativ dazu aus 8 Quadwort-Größe-Elementen); 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 andere Vektoroperandengrößen unterstützen (z.B. 256-Byte-Vektoroperanden) mit mehr, weniger oder anderen Datenelementbreiten (z.B. Datenelementbreiten von 128 Bit (16 Byte)).
  • Die Klasse-A-Anweisungsvorlagen in 17A beinhalten: 1) innerhalb der Anweisungsvorlagen ohne Speicherzugriff 1705 ist eine Anweisungsvorlage für eine Operation vom Typ Vollrundungssteuerung ohne Speicherzugriff 1710 und eine Anweisungsvorlage für eine Operation vom Datentransformationstyp ohne Speicherzugriff 1715 gezeigt; und 2) innerhalb der Anweisungsvorlagen mit Speicherzugriff 1720 ist eine temporale Anweisungsvorlage mit Speicherzugriff 1725 und eine nicht-temporale Anweisungsvorlage mit Speicherzugriff 1730 gezeigt. Die Klasse-B-Anweisungsvorlagen in 17B beinhalten: 1) innerhalb der Anweisungsvorlagen ohne Speicherzugriff 1705 ist eine Anweisungsvorlage für eine Operation vom Typ Teilrundungssteuerung mit Schreibmaskensteuerung ohne Speicherzugriff 1712 und eine Anweisungsvorlage für eine Operation vom vsize-Typ mit Schreibmaskensteuerung ohne Speicherzugriff 1717 gezeigt; und 2) innerhalb der Anweisungsvorlagen mit Speicherzugriff 1720 ist eine Anweisungsvorlage für Schreibmaskensteuerung mit Speicherzugriff 1727 gezeigt.
  • Das generische vektorfreundliche Befehlsformat 1700 umfasst die folgenden Felder, die in der in den 17A-17B dargestellten Reihenfolge aufgeführt sind.
  • Formatfeld 1740 - ein spezifischer Wert (ein Anweisungsformat-Identifiziererwert) in diesem Feld identifiziert eindeutig das vektorfreundliche Anweisungsformat und daher Auftreten von Anweisungen im vektorfreundlichen Anweisungsformat in Anweisungsströmen. Daher ist dieses Feld optional in dem Sinne, dass es nicht für einen Befehlssatz benötigt wird, der nur das generische vektorfreundliche Anweisungsformat hat.
  • Basisoperationsfeld 1742 - sein Inhalt unterscheidet unterschiedliche Basisoperationen.
  • Registerindexfeld 1744 - sein Inhalt spezifiziert direkt oder durch Adresserzeugung die Orte der Quell- und Zieloperanden, sei es in Registern oder in Speicher. Diese beinhalten eine ausreichende Anzahl an Bits, um N Register aus einer PxQ- (z.B. 32x512, 16x128, 32x1024, 64x1024) Registerdatei auszuwählen. 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 zudem als Ziel wirkt; können bis zu drei Quellen unterstützen, wobei eine dieser Quellen zudem als Ziel wirkt; können bis zu zwei Quellen und ein Ziel unterstützen).
  • Modifikatorfeld 1746 - sein Inhalt unterscheidet Fälle des Auftretens von Anweisungen in dem generischen Vektoranweisungsformat, die einen Speicherzugriff spezifizieren, von jenen, die dies nicht tun; das heißt, zwischen Anweisungsvorlagen ohne Speicherzugriff 1705 und Anweisungsvorlagen mit Speicherzugriff 1720. Operationen mit Speicherzugriff lesen von der und/oder schreiben in die Speicherhierarchie (und spezifizieren in einigen Fällen die Quell- und/oder Zieladressen durch Verwenden von Werten in Registern), während Operationen ohne Speicherzugriff dies nicht tun (zum Beispiel sind die Quelle und die Ziele Register). Während in einer Ausführungsform dieses Feld auch zwischen drei unterschiedlichen Arten auswählt, um Speicheradressenberechnungen auszuführen, können alternative Ausführungsformen mehr, weniger oder andere Arten unterstützen, um Speicheradressenberechnungen auszuführen.
  • Erweiterungsoperationsfeld 1750 - sein Inhalt unterscheidet, welche von einer Vielzahl von unterschiedlichen Operationen zusätzlich zu der Basisoperation ausgeführt werden soll. 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 Erweiterungsoperationsfeld 1750 ermöglicht gängigen Gruppen von Operationen, in einer einzelnen Anweisung durchgeführt zu werden, anstatt in 2, 3 oder 4 Anweisungen.
  • 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 Verschiebungsfaktorfeldes 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 zur 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 Anweisungsvorlagen ohne Speicherzugriff 1705 verwendet werden, und/oder unterschiedliche Ausführungsformen können auch nur eines oder keines der zwei implementieren.
  • Datenelementbreitenfeld 1764 - sein Inhalt unterscheidet, welche einer Anzahl von Datenelementbreiten zu verwenden ist (in einigen Ausführungsformen für alle Anweisungen; in anderen Ausführungsformen nur für einige der Anweisungen). Dieses Feld ist in dem Sinn optional, dass es nicht benötigt wird, wenn nur eine Datenelementbreite unterstützt wird, und/oder Datenelementbreiten unterstützt werden, die einen gewissen Aspekt der Opcodes verwenden.
  • Schreibmaskenfeld 1770 - sein Inhalt steuert auf einer Basis einer Datenelementposition, ob diese Datenelementposition in dem Zielvektoroperanden das Ergebnis der Basisoperation und der Erweiterungsoperation widerspiegelt. Klasse-A-Anweisungsvorlagen unterstützen Zusammenführungs-Schreibmaskieren, während Klasse-B-Anweisungsvorlagen sowohl Zusammenführungs- als auch Nullsetzungs-Schreibmaskieren unterstützen. Beim Zusammenführen ermöglichen Vektormasken, dass jeglicher Satz von Elementen in dem Ziel während der Ausführung jeglicher Operation (spezifiziert durch die Basisoperation und die Erweiterungsoperation) vor Aktualisierungen geschützt wird; in einer anderen Ausführungsform, dass der alte Wert jedes Elements des Ziels bewahrt wird, wobei das entsprechende Maskenbit eine 0 hat. Im Gegensatz dazu ermöglicht das Nullsetzen von Vektormasken, dass jeglicher Satz von Elementen in dem Ziel während der Ausführung jeglicher Operation (spezifiziert durch die Basisoperation und die Erweiterungsoperation) auf Null gesetzt wird; in einer Ausführungsform wird ein Element des Ziels auf 0 gesetzt, wenn das entsprechende Maskenbit einen 0-Wert hat. Ein Teilsatz 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.
  • Direktfeld 1772 - Sein Inhalt ermöglicht die Angabe eines direkten Elements. Dieses Feld ist in dem Sinn optional, dass es in einer Implementierung des generischen vektorfreundlichen Formats, das einen Direktoperanden nicht unterstützt, nicht vorhanden ist, und in Anweisungen, die keinen Direktoperanden verwenden, nicht vorhanden ist.
  • Klassenfeld 1768 - sein Inhalt unterscheidet zwischen unterschiedlichen Klassen von Anweisungen. Gemäß 17A-B wird durch den Inhalt dieses Feldes zwischen Befehlen der Klasse A und der Klasse B ausgewählt. In 17A-B werden abgerundete Eckquadrate verwendet, um anzuzeigen, dass ein bestimmter Wert in einem Feld vorhanden ist (z.B. Klasse A 1768A und Klasse B 1768B für das Klassenfeld 1768 in 17A-B).
  • Anweisungsvorlagen der Klasse A
  • In dem Fall der Anweisungsvorlagen der Klasse A ohne Speicherzugriff 1705 wird das Alpha-Feld 1752 als ein RS-Feld 1752A interpretiert, dessen Inhalt unterscheidet, welche der unterschiedlichen Erweiterungsoperationstypen ausgeführt werden sollen (zum Beispiel sind Rundung 1752A.1 und Datentransformation 1752A.2 jeweils für die Anweisungsvorlagen für eine Operation vom Typ Rundung ohne Speicherzugriff 1710 bzw. vom Typ Datentransformation ohne Speicherzugriff 1715 spezifiziert), während das Beta-Feld 1754 unterscheidet, welche der Operationen des spezifizierten Typs ausgeführt werden sollen. In den Anweisungsvorlagen ohne Speicherzugriff 1705 sind das Skalierfeld 1760, das Verschiebungsfeld 1762A und das Verschiebungsskalierfeld 1762B nicht vorhanden.
  • Anweisungsvorlagen ohne Speicherzugriff - Operation vom Typ Vollrundungssteuerung
  • In der Anweisungsvorlage für die Operation vom Typ Vollrundungssteuerung ohne Speicherzugriff 1710 wird das Beta-Feld 1754 als Rundungssteuerungsfeld 1754A interpretiert, dessen Inhalt bzw. Inhalte statisches Runden bereitstellen. Während in den beschriebenen Ausführungsformen der Erfindung das Rundungssteuerfeld 1754A ein Feld zum Unterdrücken aller Gleitkommaausnahmen (SAE) 1756 und ein Rundungsoperationssteuerfeld 1758 enthält, können alternative Ausführungsformen beide Konzepte unterstützen und in das gleiche Feld codieren oder nur ein oder das andere dieser Konzepte/Felder aufweisen (z.B. können sie nur das Rundungsoperationssteuerfeld 1758 aufweisen).
  • 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 eine gegebene Anweisung keinen Typ von Gleitkommaausnahmen-Kennzeichen 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). Somit erlaubt das Rundungsoperationssteuerfeld 1758 das Ändern des Rundungsmodus auf einer Anweisungsbasis. In einer Ausführungsform der Erfindung, in der ein Prozessor ein Steuerregister zum Angeben der Rundungsmodi enthält, überschreibt der Inhalt des Rundungsoperationssteuerfelds 1750 diesen Registerwert.
  • Anweisungsvorlagen ohne Speicherzugriff - Operation vom Typ Datentransformation
  • In der Anweisungsvorlage für eine Operation vom Typ Datentransformation ohne Speicherzugriff 1715 wird das Beta-Feld 1754 als Datentransformationsfeld 1754B interpretiert, dessen Inhalt unterscheidet, welche von einer Anzahl von Datentransformationen ausgeführt werden soll (zum Beispiel keine Datentransformation, Mischen, Senden).
  • Im Falle einer Anweisungsvorlage 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 Anweisungsvorlage mit Speicherzugriff 1725 bzw. die nicht-temporale Anweisungsvorlage 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 Anweisungsvorlagen mit Speicherzugriff 1720 beinhalten das Skalierungsfeld 1760, und optional das Verschiebungsfeld 1762A oder das Verschiebungsskalierungsfeld 1762B.
  • Vektorspeicherbefehle führen Vektorladungen aus und Vektorspeicherungen in den Speicher durch, wobei eine Konvertierung unterstützt wird. Wie bei regulären Vektoranweisungen transferieren Vektorspeicheranweisungen Daten von dem/in den Speicher auf eine datenelementweise Art, wobei die Elemente, die tatsächlich transferiert werden, durch die Inhalte der Vektormaske, die als die Schreibmaske ausgewählt wird, diktiert werden.
  • Anweisungsvorlagen mit Speicherzugriff - Temporal
  • Temporale Daten sind Daten, die wahrscheinlich bald genug wiederverwendet werden, um von einem Zwischenspeichern zu profitieren. Dies ist jedoch ein Hinweis, und unterschiedliche Prozessoren können ihn auf unterschiedliche Weisen, einschließlich vollständigen Ignorierens des Hinweises, implementieren.
  • Anweisungsvorlagen mit Speicherzugriff - Nicht-temporal
  • Nicht temporale Daten sind Daten, die wahrscheinlich nicht bald genug wiederverwendet werden, um von einem Zwischenspeichern in dem Cache der ersten Ebene zu profitieren, und sollten für die Räumung Priorität erhalten. Dies ist jedoch ein Hinweis, und unterschiedliche Prozessoren können ihn auf unterschiedliche Weisen, einschließlich vollständigen Ignorierens des Hinweises, implementieren.
  • Anweisungsvorlagen der Klasse B
  • Im Fall der Klasse-B-Anweisungsvorlagen wird das Alpha-Feld 1752 als Schreibmaskensteuer- (Z-) Feld 1752C interpretiert, dessen Inhalt unterscheidet, ob die durch das Schreibmaskenfeld 1770 gesteuerte Schreibmaskierung ein Zusammenführen oder ein Nullsetzen sein sollte.
  • In dem Fall der Klasse-B-Anweisungsvorlagen ohne Speicherzugriff 1705 wird ein Teil des Beta-Felds 1754 als RL-Feld 1757A interpretiert, dessen Inhalt unterscheidet, welcher der unterschiedlichen Erweiterungsoperationstypen ausgeführt werden soll (zum Beispiel sind Rundung 1757A.1 und Vektorlänge (VSIZE) 1757A.2 für die Anweisungsvorlage für eine Operation vom Typ Schreibmaskensteuerung-Teilrundungssteuerung ohne Speicherzugriff 1712 bzw. die Anweisungsvorlage für eine Operation vom Typ Schreibmaskensteuerung-vsize-Operation ohne Speicherzugriff 1717 spezifiziert), während der Rest des Beta-Felds 1754 unterscheidet, welche der Operationen von dem spezifizierten Typ ausgeführt werden soll. In den Anweisungsvorlagen ohne Speicherzugriff 1705 sind das Skalierfeld 1760, das Verschiebungsfeld 1762A und das Verschiebungsskalierfeld 1762B nicht vorhanden.
  • In den Anweisungsvorlagen für eine Operation 1710 vom Typ Teilrundungssteuerung mit Schreibmaskensteuerung ohne Speicherzugriff wird der Rest des Beta-Feldes 1754 als ein Rundungsoperationsfeld 1759A interpretiert und ist eine Ausnahmeereignismeldung deaktiviert (eine gegebene Anweisung berichtet keinerlei Art von Gleitkommaausnahme-Flag und verursacht keinerlei Gleitkommaausnahme-Handler).
  • 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 Anweisungsbasis. In einer Ausführungsform der Erfindung, in der ein Prozessor ein Steuerregister zum Angeben der Rundungsmodi enthält, überschreibt der Inhalt des Rundungsoperationssteuerfelds 1750 diesen Registerwert.
  • In der Anweisungsvorlage der Schreibmaskensteuerungsoperation vom VSIZE-Typ ohne Speicherzugriff 1717 wird der Rest des Beta-Felds 1754 als ein Vektorlängenfeld 1759B interpretiert, dessen Inhalt unterscheidet, mit welcher einer Anzahl von Datenvektorlängen durchgeführt werden soll (z.B. 128, 256 oder 512 Byte).
  • Im Falle einer Anweisungsvorlage der Klasse B mit Speicherzugriff 1720 wird ein Teil des Beta-Felds 1754 als ein Sendefeld 1757B interpretiert, dessen Inhalt unterscheidet, ob die Datenmanipulationsoperation vom Sendetyp durchzuführen ist, während der Rest des Beta-Felds 1754 als das Vektorlängenfeld 1759B interpretiert wird. Die Anweisungsvorlagen mit Speicherzugriff 1720 beinhalten das Skalierfeld 1760, und optional das Verschiebungsfeld 1762A oder das Verschiebungsskalierfeld 1762B.
  • Mit Bezug auf das generische vektorfreundliche Anweisungsformat 1700 ist ein Voll-Opcode-Feld 1774 gezeigt, das das Formatfeld 1740, das Basisoperationsfeld 1742 und das Datenelementbreitenfeld 1764 beinhaltet. Während eine Ausführungsform gezeigt ist, bei der das Voll-Opcode-Feld 1774 alle diese Felder beinhaltet, beinhaltet das Voll-Opcode-Feld 1774 in Ausführungsformen, die nicht alle von ihnen unterstützen, weniger als alle diese Felder. Das Voll-Opcode-Feld 1774 stellt den Operationscode (Opcode) bereit.
  • Das Erweiterungsoperationsfeld 1750, das Datenelementbreitenfeld 1764 und das Schreibmaskenfeld 1770 ermöglichen, dass diese Merkmale auf Anweisungsbasis in dem generischen vektorfreundlichen Anweisungsformat spezifiziert werden.
  • Die Kombination von Schreibmaskenfeld und Datenelementbreitenfeld erzeugt insofern typisierte Anweisungen, als ermöglicht wird, dass die Maske basierend auf unterschiedlichen Datenelementbreiten angewandt wird.
  • Die verschiedenen Anweisungsvorlagen, die innerhalb Klasse A und Klasse B gefunden werden, sind in unterschiedlichen Situationen vorteilhaft. In einigen Ausführungsformen der Erfindung können unterschiedliche Prozessoren oder unterschiedliche Kerne innerhalb eines Prozessors nur Klasse A, nur Klasse B oder beide Klassen unterstützen. Zum Beispiel kann ein Hochleistungsallzweck- und reihenfolgeveränderter Kern, der für Allzweckberechnung vorgesehen ist, nur Klasse B unterstützen, kann ein Kern, der primär für Grafik- und/oder wissenschaftliche (Durchsatz-)Berechnung vorgesehen ist, nur Klasse A unterstützen, und kann ein Kern, der für beides vorgesehen ist, beides unterstützen (natürlich liegt ein Kern, der eine Mischung aus Vorlagen und Anweisungen von beiden Klassen, aber nicht alle Vorlagen und Anweisungen von beiden Klassen aufweist, innerhalb des Geltungsbereichs der Erfindung). Außerdem kann ein einzelner Prozessor mehrere Kerne enthalten, 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 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 oder reihenfolgeveränderte 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 implementiert 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-time-kompiliert oder statisch kompiliert), umfassend: 1) eine Form, nur Anweisungen 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 Anweisungen auswählt.
  • Beispielhaftes spezifisches vektorfreundliches Anweisungsformat
  • 18A-18C sind Blockdiagramme, die ein beispielhaftes spezifisches vektorfreundliches Anweisungsformat gemäß Ausführungsformen der Erfindung darstellen. 18A zeigt ein spezifisches vektorfreundliches Anweisungsformat 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 Anweisungsformat 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, Real-Opcode-Byte-Feld, MOD-R/M-Feld, SIB-Feld, Verschiebungsfeld und den Direktfeldern des existierenden x86-Befehlssatzes mit Erweiterungen. Die Felder aus 17A-17B, in die die Felder aus den 18A-18C abgebildet sind.
  • Es versteht sich, dass, obwohl Ausführungsformen der Erfindung zu Darstellungszwecken unter Bezugnahme auf das spezifische vektorfreundliche Anweisungsformat 1800 im Kontext des generischen vektorfreundlichen Anweisungsformats 1700 beschrieben sind, die Erfindung nicht auf das spezifische vektorfreundliche Anweisungsformat 1800 beschränkt ist, ausgenommen dort, wo beansprucht. Beispielsweise berücksichtigt das generische vektorfreundliche Anweisungsformat 1700 eine Vielzahl möglicher Größen für die verschiedenen Felder, während das spezifische vektorfreundliche Anweisungsformat 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 Anweisungsformat 1800 dargestellt ist, ist die Erfindung nicht so beschränkt (das heißt, das generische vektorfreundliche Anweisungsformat 1700 zieht andere Größen für das Datenelementbreitenfeld 1764 in Betracht).
  • Das generische vektorfreundliche Anweisungsformat 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 Anweisungsformat 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 Bitfelder EVEX.R, EVEX.X und EVEX.B bieten die gleiche Funktionalität wie die entsprechenden VEX-Bitfelder und sind unter Verwendung einer 1er-Komplementform codiert, d.h. ZMM0 ist als 1111B codiert, ZMM15 ist als 0000B codiert. Andere Felder der Anweisungen 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-Registersatzes zu codieren. In einer Ausführungsform der Erfindung wird dieses Bit, zusammen mit anderen, wie nachfolgend angezeigt, im bitinvertierten Format gespeichert, um sich (im wohlbekannten x86-32-Bit-Modus) von der BOUND-Anweisung zu unterscheiden, deren 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 (entweder 32-Bit-Datenelemente oder 64-Bit-Datenelemente) zu definieren.
  • EVEX.vvvv 1820 (EVEX-Byte 2, Bits [6:3]-vwv) - die Rolle von EVEX.vwv kann Folgendes umfassen: 1) VEX.vwv codiert den ersten Quellregisteroperanden, spezifiziert in invertierter (1s-Komplement-) Form, und gilt für Anweisungen mit 2 oder mehr Quelloperanden; 2) VEX.vvw codiert den Zielregisteroperanden, spezifiziert in 1s-Komplementform, für bestimmte Vektorverschiebungen; oder 3) VEX.vvw codiert keinerlei Operanden, das Feld ist reserviert und sollte 1111b enthalten. Somit codiert das EVEX.vvw-Feld 1820 die 4 niederwertigen Bits des ersten Quellregisterspezifizierers, die in invertierter (1s-Komplement-) Form gespeichert sind. In Abhängigkeit von der Anweisung 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-Anweisungen 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-Anweisungen 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 zur 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 Anweisungen ohne Modifikationen ausführen kann). Wenngleich neuere Anweisungen den Inhalt des EVEX-Präfix-Codierungsfeldes direkt als eine Opcode-Erweiterung verwenden können, erweitern bestimmte Ausführungsformen aus Konsistenzgründen in einer ähnlichen Weise, erlauben aber, dass unterschiedliche Bedeutungen durch diese älteren SIMD-Präfixe spezifiziert 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 als EVEX.s2-0, EVEX.r2-0, EVEX.rr1, EVEX.LL0, EVEX.LLB bekannt; auch mit βββ veranschaulicht) - wie zuvor 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 Kombination von EVEX.V', EVEX.vvw gebildet.
  • Schreibmaskenfeld 1770 (EVEX-Byte 3, Bits [2:0]-kkk) - sein Inhalt gibt den Index eines Registers in den Schreibmaskenregistern an, wie zuvor beschrieben. In einer Ausführungsform der Erfindung hat der spezifische Wert EVEX.kkk=000 ein spezielles Verhalten, implizierend, dass keine Schreibmaske für die bestimmte Anweisung 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) wird auch als Opcode-Byte bezeichnet. Ein Teil des Opcodes ist 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 des Reg-Felds 1844 kann auf zwei Situationen zusammengefasst werden: entweder den Zielregisteroperanden oder einen Quellregisteroperanden codieren oder als eine Opcode-Erweiterung behandelt werden und nicht zum Codieren irgendeines Befehlsoperanden verwendet werden. Die Rolle des R/M-Felds 1846 kann Folgendes umfassen: Codieren des Anweisungsoperanden, der eine Speicheradresse referenziert, oder Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden.
  • Skalierung-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 zwischen -128 und 127 Bytes-Versätzen adressieren; in Bezug auf 64-Byte-Cache-Zeilen verwendet disp8 8 Bits, die auf nur vier wirklich nützliche Werte, -128, -64, 0 und 64, gesetzt werden können; da oft ein größerer Bereich benötigt wird, wird disp32 verwendet; disp32 benötigt jedoch 4 Bytes. Im Gegensatz zu disp8 und disp32 ist das Verschiebungsfaktorfeld 1762B eine Neuinterpretation von disp8; bei Verwendung des Verschiebungsfaktorfelds 1762B wird die tatsächliche Verschiebung durch den Inhalt des Verschiebungsfaktorfelds multipliziert mit der Größe des Speicheroperandenzugriffs (N) bestimmt. Diese Art von Verschiebung wird als disp8*N bezeichnet. Dies reduziert die durchschnittliche Anweisungslänge (es wird ein einzelnes Byte 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 daher die redundanten niederwertigen Bits des Adressenversatzes nicht codiert werden müssen. Mit anderen Worten ersetzt das Verschiebungsfaktorfeld 1762B die 8-Bit-Verschiebung des älteren x86-Befehlssatzes. Somit wird das Verschiebungsfaktorfeld 1762B auf dieselbe Weise codiert wie eine 8-Bit-Verschiebung des x86-Befehlssatzes (also keine Änderungen in den ModRM/SIB-Codierungsregeln) 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). Das Direktfeld 1772 arbeitet wie zuvor beschrieben.
  • Voll-Opcode-Feld
  • 18B ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Anweisungsformats 1800, die das Voll-Opcode-Feld 1774 bilden, gemäß einer Ausführungsform der Erfindung darstellt. Insbesondere umfasst das Voll-Opcode-Feld 1774 das Formatfeld 1740, das Basisoperationsfeld 1742 und das Datenelementbreiten- (W-) Feld 1764. Das Basisoperationsfeld 1742 umfasst das Präfixcodierungsfeld 1825, das Opcode-Abbildungsfeld 1815 und das Real-Opcode-Feld 1830.
  • Registerindexfeld
  • 18C ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Anweisungsformats 1800, die das Registerindexfeld 1744 bilden, gemäß einer Ausführungsform der Erfindung darstellt. Insbesondere enthält 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.
  • Erweiterungsoperationsfeld
  • 18D ist ein Blockdiagramm, das die Felder des spezifischen vektorfreundlichen Anweisungsformats 1800, die das Erweiterungsoperationsfeld 1750 bilden, gemäß einer Ausführungsform der Erfindung darstellt. Wenn das Feld Klasse (U) 1768 den Wert 0 enthält, bedeutet es EVEX.U0 (Klasse A 1768A); wenn es den Wert 1 enthält, bedeutet es EVEX.U1 (Klasse B 1768B). Wenn U=0 ist und das MOD-Feld 1842 11 enthält (was eine Nicht-Speicherzugriffsoperation bedeutet), wird das Alpha-Feld 1752 (EVEX-Byte 3, Bit [7] - EH) als das rs-Feld 1752A interpretiert. Wenn das rs-Feld 1752A eine 1 enthält (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]- S0) 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 den Register ymm0-16 überlagert. Die niederwertigen 128 Bits der unteren 16 zmm-Register (die niederwertigen 128 Bits der ymm-Register) werden den Registern xmm0-15 überlagert. Das spezifische vektorfreundliche Anweisungsformat 1800 arbeitet auf diesen überlagerten Registerdateien, wie in den Tabellen unten veranschaulicht.
    Anpassbare Vektorlänge Klasse Operationen Register
    Anweisungsvorlagen, die das Vektorlängenfeld nicht enthalten 1759B 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)
    Anweisungsvorlagen, die das Vektorlängenfeld 1759B nicht enthalten 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 Anweisungsvorlagen ohne das Vektorlängenfeld 1759B operieren auf der maximalen Vektorlänge. Ferner arbeiten in einer Ausführungsform die Klasse-B-Anweisungsvorlagen des spezifischen vektorfreundlichen Anweisungsformats 1800 an gepackten oder skalaren Gleitkommadaten mit einfacher/doppelter Präzision und gepackten oder skalaren Ganzzahldaten. Skalaroperationen sind Operationen, die an der Datenelementposition niedrigster Ordnung in einem zmm/ymm/xmm-Register durchgeführt werden; die Datenelementpositionen höherer Ordnung werden je nach Ausführungsform entweder gleich gelassen wie vor der Anweisung oder auf Null gesetzt.
  • 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 sind die Schreibmaskenregister 1915 16 Bit groß. 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 angeben würde, für eine Schreibmaske verwendet wird, wählt sie eine festverdrahtete Schreibmaske von 0xFFFF, wobei Schreibmaskierung für diese Anweisung wirksam deaktiviert wird.
  • 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 werden durch die Namen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 bezeichnet.
  • Skalare Gleitkommastapel-Registerdatei (x87-Stack) 1945, die als Alias für gepackte MMX Ganzzahl-Flat-Registerdatei 1950 verwendet wird - in der veranschaulichten Ausführungsform ist der x87-Stapel ein Acht-Elemente-Stapel, der verwendet wird, um skalare Gleitkommaoperationen an 32-/64-/80-Bit-Gleitkommadaten durch Verwenden der x87-Anweisungssatzerweiterung auszuführen, während die MMX-Register verwendet werden, um Operationen an gepackten 64-Bit-Ganzzahldaten auszuführen, sowie Operanden für einige Operationen zu halten, die zwischen dem MMX- und dem XMM-Register ausgeführt werden.
  • Alternative Ausführungsformen der Erfindung können breitere oder schmalere Register verwenden. Außerdem können alternative Ausführungsformen der Erfindung mehr, weniger oder andere Registerbänke und Register verwenden.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Prozessorkerne können auf unterschiedliche Weise, für unterschiedliche Zwecke und in unterschiedlichen Prozessoren eingesetzt werden. Beispielsweise können Implementierungen solcher Kerne beinhalten: 1) einen universellen reihenfolgetreuen (In-Order-) Kern für universelles Rechnen; 2) einen universellen reihenfolgeveränderten (Out-of-Order-) Hochleistungskern für universelles Rechnen; 3) einen Spezialkern, primär für Grafik und/oder wissenschaftliches (Durchsatz-) Rechnen. Implementierungen unterschiedlicher Prozessoren können beinhalten: 1) eine CPU, die einen oder mehrere universelle reihenfolgetreue Kerne, gedacht für universelles Rechnen, und/oder einen oder mehrere universelle reihenfolgeveränderte Kerne, gedacht für universelles Rechnen, enthält; und 2) einen Koprozessor, der einen oder mehrere spezielle Kerne, primär gedacht für Grafik und/oder Wissenschaft (Durchsatz), enthält. Diese unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die beinhalten können: 1) den Koprozessor auf einem von der CPU getrennten Chip; 2) den Koprozessor auf einem separaten Die in dem gleichen Gehäuse wie eine CPU; 3) den Koprozessor auf dem gleichen Die wie eine CPU (in diesem Fall wird ein solcher Koprozessor manchmal als SpezialLogik, wie etwa als integrierte Grafik- und/oder wissenschaftliche (Durchsatz-) Logik, oder als Spezial-Kerne bezeichnet); und 4) ein System auf einem Chip, das auf dem gleichen Die die beschriebene CPU (manchmal als der bzw. die Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den vorstehend beschriebenen Koprozessor und zusätzliche Funktionalitäten umfassen kann. Als Nächstes werden beispielhafte Kernarchitekturen beschrieben, gefolgt von Beschreibungen beispielhafter Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • Blockdiagramm des In-Order- und Out-of-Order-Kerns
  • 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. Die mit durchgezogenen Linien gezeichneten Kästen in den 20A-B stellen die In-Order-Pipeline und den In-Order-Kern dar, während die optionale Hinzufügung der mit gestrichelten Linien gezeichneten Kästen die Register-Umbenennung, die Out-of-Order-Ausgabe-/Ausführungs-Pipeline und den Kern darstellt. Angesichts der Tatsache, dass der reihenfolgetreue Aspekt eine Teilmenge des reihenfolgeveränderten Aspekts ist, wird der reihenfolgeveränderte Aspekt beschrieben.
  • In 20A umfasst eine Prozessorpipeline 2000 eine Abrufstufe 2002, eine Längendecodierungsstufe 2004, eine Decodierungsstufe 2006, eine Zuteilungsstufe 2008, eine Umbenennungsstufe 2010, eine Planungsstufe 2012 (auch als Dispatch- oder Ausgabestufe bekannt), eine Registerlese-/Speicherlesestufe 2014, eine Ausführungsstufe 2016, eine Rückschreib-/Speicherschreibstufe 2018, eine Ausnahmehandhabungsstufe 2022 und eine Festschreibstufe 2024.
  • 20B zeigt Prozessorkern 2090, der Frontend-Einheit 2030 beinhaltet, die mit Ausführungs-Engine-Einheit 2050 gekoppelt ist, und beide sind mit Speichereinheit 2070 gekoppelt. Der Kern 2090 kann ein Kern mit reduziertem Befehlssatz (RISC), ein Kern mit komplexem Befehlssatz (CISC), ein Kern mit sehr langen Befehlswörtern (VLIW) oder ein hybrider oder alternativer Kerntyp sein. Als weitere Option kann der Kern 2090 ein Spezialkern sein, wie etwa zum Beispiel ein Netzwerk- oder Kommunikationskern, eine Komprimierungs-Engine, ein Koprozessorkern, ein GPGPU- (General Purpose Computing Graphics Processing Unit, Universal-Grafikverarbeitungseinheit) Kern, ein Grafikkern oder dergleichen.
  • Die Frontend-Einheit 2030 umfasst eine Verzweigungsvorhersageeinheit 2032, gekoppelt mit einer Anweisungscacheeinheit 2034, die mit einem Anweisungsübersetzungspuffer (TLB, Instruction Translation Lookaside Buffer) 2036 gekoppelt ist, der mit einer Anweisungsabrufeinheit 2038 gekoppelt ist, die mit einer Decodiereinheit 2040 gekoppelt ist. Die Decodiereinheit 2040 (oder der Decodierer) kann Anweisungen decodieren und als eine Ausgabe eine oder mehrere Mikrooperationen, Mikrocodeeingangspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale erzeugen, die von den ursprünglichen Anweisungen decodiert werden oder diese anderweitig widerspiegeln oder von diesen abgeleitet werden. Die Decodiereinheit 2040 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert sein. Beispiele für geeignete Mechanismen umfassen, ohne jedoch hierauf eingeschränkt zu sein, Nachschlagetabellen, Hardwareimplementierungen, programmierbare Logikarrays (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs) usw. In einer Ausführungsform enthält der Kern 2090 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für bestimmte Makroanweisungen speichert (z.B. in Decodiereinheit 2040 oder anderweitig innerhalb der Frontend-Einheit 2030). Die Decodiereinheit 2040 ist mit einer Umbenennungs-/Zuweisungseinheit 2052 in der Ausführungs-Engine-Einheit 2050 gekoppelt.
  • Die Ausführungs-Engine-Einheit 2050 beinhaltet die Umbenennungs-/Zuweisungseinheit 2052, die mit einer Rückzugseinheit 2054 und einem Satz aus einer oder mehreren Planungseinheiten 2056 gekoppelt ist. Die eine oder die mehreren Planungseinheiten 2056 repräsentieren eine beliebige Anzahl verschiedener Scheduler (Planer), einschließlich Reservierungsstationen, Zentralbefehlsfenster usw. Die eine oder die mehreren Planungseinheiten 2056 sind mit der einen oder den mehreren physischen Registerdateieinheiten 2058 gekoppelt. Jede der physischen Registerdatei(en)einheiten 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 Anweisungszeiger, der die Adresse der nächsten auszuführenden Anweisung 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 Architekturvektorregister, Vektormaskenregister und Mehrzweckregister bereitstellen. Die physische (n) Registerdatei(en) -Einheit(en) 2058 wird (werden) durch die Rückzugseinheit 2054 überlappt, um verschiedene Weisen zu veranschaulichen, auf die Registerumbenennung und reihenfolgeveränderte Ausführung implementiert werden können (z.B. unter Verwendung eines oder mehrerer Umordnungspuffer und einer oder mehrerer Rückzugsregisterdateien; unter Verwendung einer oder mehrerer künftigen Dateien, eines oder mehrerer Verlaufspuffer und einer oder mehrerer Rückzugsregisterdateien; unter Verwendung einer Registerabbildung und eines Pools von Registern; usw.). Die Rückzugseinheit 2054 und die eine oder die mehreren physischen Registerdateieinheiten 2058 sind mit dem einen oder den mehreren Ausführungsclustern 2060 gekoppelt. Der eine oder die mehreren Ausführungscluster 2060 beinhalten einen Satz von einer oder mehreren Ausführungseinheiten 2062 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 2064. Die Ausführungseinheiten 2062 können verschiedene Operationen (z.B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen (z.B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma) durchführen. Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten beinhalten können, die für spezielle Funktionen oder Sätze von Funktionen dediziert sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die allesamt alle Funktionen durchführen, beinhalten. Die eine oder die mehreren Planungseinheiten 2056, die eine oder die mehreren physischen Registerdateieinheiten 2058 und der eine oder die mehreren Ausführungscluster 2060 sind als möglicherweise mehrfach gezeigt, weil bestimmte Ausführungsformen separate Pipelines für bestimmte Arten von Daten/Operationen erzeugen (z.B. eine Skalar-Ganzzahl-Pipeline, eine Skalar-Gleitkomma-/Gepackte-Ganzzahl-/Gepacktes-Gleitkomma-/Vektor-Ganzzahl-/Vektor-Gleitkomma-Pipeline, und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Planungseinheit, eine physische Registerdateieinheit und/oder ein Ausführungscluster aufweisen - und im Falle einer separaten Speicherzugriffs-Pipeline werden bestimmte Ausführungsformen implementiert, bei denen nur der Ausführungscluster dieser Pipeline die eine oder die mehreren Speicherzugriffseinheiten 2064 aufweist). Es versteht sich zudem, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines reihenfolgeveränderte Ausgabe/Ausführung und der Rest reihenfolgetreu sein können.
  • Der Satz von Speicherzugriffseinheiten 2064 ist mit der Speichereinheit 2070 gekoppelt, die eine Daten-TLB-Einheit 2072 beinhaltet, die mit einer Datencacheeinheit 2074 gekoppelt ist, die mit einer Level-2- (L2-) Cacheeinheit 2076 gekoppelt ist. In einem Ausführungsbeispiel können die Speicherzugriffseinheiten 2064 eine Ladeeinheit, eine Adressenspeichereinheit und eine Datenspeichereinheit aufweisen, von denen jede mit der Daten-TLB-Einheit 2072 in der Speichereinheit 2070 gekoppelt ist. Die Befehlscache-Einheit 2034 ist ferner mit einer Level-2- (L2-) Cache-Einheit 2076 in der Speichereinheit 2070 gekoppelt. Die L2-Cache-Einheit 2076 ist mit einem oder mehreren anderen Cache-Levels und schließlich mit einem Hauptspeicher gekoppelt.
  • Beispielsweise kann die beispielhafte Kernarchitektur für reihenfolgeveränderte Ausgabe/Ausführung mit Registerumbenennung die Pipeline 2000 wie folgt implementieren: 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-/Zuweisungseinheit 2052 führt die Zuweisungsstufe 2008 und die Umbenennungsstufe 2010 durch; 4) die Planungseinheit(en) 2056 führt bzw. führen die Planungsstufe 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 Rückschreib-/Speicherschreibstufe 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 Festschreibstufe 2024 durch.
  • Der Kern 2090 kann einen oder mehrere Befehlssätze unterstützen (z.B. den x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies von Sunnyvale, CA, USA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings von Sunnyvale, CA, USA), einschließlich des einen oder der mehreren vorliegend beschriebenen Befehle. In einer Ausführungsform weist der Kern 2090 Logik auf, um eine Befehlssatzerweiterung gepackter Daten (z.B. AVX1, AVX2) zu unterstützen, wodurch ermöglicht wird, dass die Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung gepackter Daten durchgeführt werden.
  • Es versteht sich, dass der Kern 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).
  • Auch wenn die Registerumbenennung im Kontext einer reihenfolgeveränderten Ausführung beschrieben wird, versteht es sich, dass die Registerumbenennung auch in einer reihenfolgetreuen Architektur verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch separate Anweisungs- und Datencacheeinheiten 2034/2074 und eine gemeinsam genutzte L2-Cacheeinheit 2076 umfasst, können alternative Ausführungsformen einen einzelnen internen Cache für Anweisungen und Daten aufweisen, wie etwa 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, der außerhalb des Kerns und/oder des Prozessors liegt, beinhalten. Alternativ kann der gesamte Cache außerhalb des Kerns und/oder des Prozessors liegen.
  • Spezifische beispielhafte reihenfolgetreue Kernarchitektur
  • 21A-B zeigen ein Blockdiagramm einer spezifischeren beispielhaften In-Order-Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne desselben Typs und/oder verschiedener Typen) in einem Chip wäre. Die Logikblöcke kommunizieren über ein Verbindungsnetzwerk mit hoher Bandbreite (z.B. ein Ringnetzwerk) mit einiger fester Funktionslogik, Speicher-E/A-Schnittstellen und anderer notwendiger E/A-Logik, 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 der Anweisungsdecodierer 2100 den x86-Befehlssatz mit einer Befehlssatzerweiterung für gepackte Daten. Ein L1-Cache 2106 ermöglicht Zugriffe mit niedriger Latenz auf den Cache-Speicher in die Skalar- und Vektoreinheiten. Während in einer Ausführungsform (zur Vereinfachung des Designs) Skalareinheit 2108 und Vektoreinheit 2110 separate Registersätze (Skalarregister 2112 bzw. Vektorregister 2114) verwenden, und zwischen diesen übertragene Daten in Speicher geschrieben und dann von einem Level-1- (L1-) Cache 2106 wieder eingelesen werden, können alternative Ausführungsformen der Erfindung einen anderen Ansatz verwenden (zum Beispiel einen einzelnen Registersatz verwenden oder einen Kommunikationspfad beinhalten, die es ermöglichen, Daten zwischen den zwei Registerdateien zu übertragen, ohne diese zu schreiben und wieder einzulesen).
  • 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. Durch einen Prozessorkern gelesene Daten werden in seinem L2-Cache-Teilsatz 2104 gespeichert, und es kann schnell auf diese zugegriffen werden, parallel zu 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 eine Kohärenz für gemeinsam genutzte 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 beinhaltet L1-Datencache 2106A, der Teil des L1-Cache 2104 ist, sowie mehr Details bezüglich der Vektoreinheit 2110 und den Vektorregistern 2114. Insbesondere ist die Vektoreinheit 2110 eine 16-breite Vektorverarbeitungseinheit (VPU, Vector Processing Unit) (siehe die 16-breite ALU 2128), die eine oder mehrere Ganzzahlanweisungen, Gleitkommaanweisungen mit einfacher Genauigkeit und Gleitkommaanweisungen 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. Die Schreibmaskenregister 2126 ermöglichen ein Prädizieren der resultierenden Vektorschreibvorgänge.
  • 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 durchgezogenen Kästchen in 22 veranschaulichen einen Prozessor 2200 mit einem einzelnen Kern 2202A, einem Systemagenten 2210, einem Satz von einer oder mehreren Bus-Controller-Einheiten 2216, während die optionale Hinzufügung der gestrichelten Kästchen einen alternativen Prozessor 2200 mit mehreren Kernen 2202A-N, einem Satz von einer oder mehreren integrierten Speicher-Controller-Einheit(en) 2214 in der Systemagenten-Einheit 2210 und einer speziellen Logik 2208 veranschaulicht.
  • Somit können unterschiedliche Implementierungen des Prozessors 2200 Folgendes umfassen: 1) eine CPU mit der Speziallogik 2208, die eine integrierte Grafik- und/oder wissenschaftliche (Durchsatz-) Logik ist (die einen oder mehrere Kerne beinhalten kann), und die Kerne 2202A-N, die ein oder mehrere Universalkerne sind (zum Beispiel In-Order-Universalkerne, Out-of-Order-Universalkeme, eine Kombination der beiden); 2) einen Koprozessor, wobei die Kerne 2202A-N eine große Anzahl von Spezialkernen sind, die hauptsächlich für Grafik- und/oder wissenschaftliche (Durchsatz-) Datenverarbeitung vorgesehen sind; und 3) einen Koprozessor, wobei die Kerne 2202A-N eine große Anzahl von In-Order-Universalkernen sind. Somit kann der Prozessor 2200 ein Allzweckprozessor, ein Koprozessor oder ein Sonderzweckprozessor sein, wie z.B. ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU (Allzweck-Grafikprozessoreinheit), ein Koprozessor der MIC-(Many Integrated Core) Architektur mit hohem Durchsatz (30 oder mehr Kerne), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 2200 kann ein Teil eines oder mehrerer Substrate sein und/oder darauf implementiert sein, wobei eine beliebige Anzahl von Prozesstechnologien, wie z.B. BiCMOS, CMOS oder NMOS, genutzt werden kann.
  • Die Speicherhierarchie beinhaltet ein oder mehrere Cacheebenen innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinsam genutzte Cacheeinheiten 2206 und einen (nicht gezeigten) externen Speicher, der mit dem Satz von integrierten Speichersteuereinheiten 2214 gekoppelt ist. Der Satz gemeinsam genutzter Cache-Einheiten 2206 kann ein oder mehrere Mid-Level-Caches, wie zum Beispiel Level-2- (L2-), Level-3- (L3-), Level-4- (L4-) Cache oder andere Cache-Level, einen Last-Level-Cache (LLC) und/oder Kombinationen davon beinhalten. Während in einer Ausführungsform eine ringbasierte Verbindungseinheit 2212 die integrierte Grafiklogik 2208, den Satz gemeinsam genutzter Cache-Einheiten 2206 und die Systemagenteneinheit 2210/integrierte Speichersteuerungseinheit(en) 2214 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl bekannter 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 2202A-N in der Lage, Multithreading durchzuführen. Der Systemagent 2210 beinhaltet diejenigen Komponenten, welche die Kerne 2202A-N koordinieren und betreiben. Die Systemagenteneinheit 2210 kann zum Beispiel eine Leistungssteuereinheit (power control unit, PCU) und eine Anzeigeeinheit beinhalten. Die PCU kann aus Logik und Komponenten bestehen oder diese enthalten, die für die Regulierung des Leistungszustands der Kerne 2202A-N und der integrierten Grafiklogik 2208 erforderlich sind. Die Anzeigeeinheit dient der Ansteuerung eines oder mehrerer extern angeschlossener Displays.
  • Die Kerne 2202A-N können in Bezug auf einen Architekturanweisungssatz homogen oder heterogen sein; das heißt, zwei oder mehr der Kerne 2202A-N können zur Ausführung des gleichen Anweisungssatzes geeignet sein, während andere zur Ausführung von nur einem Untersatz von diesem Anweisungssatz oder einem unterschiedlichen Anweisungssatz geeignet sein können.
  • Beispielhafte Computerarchitekturen
  • Die 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, Switches, 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 große Vielzahl an Systemen oder elektronischen Vorrichtungen allgemein geeignet, die zum Einbinden eines Prozessors und/oder anderer Ausführungslogik, wie hier offenbart, fähig sind.
  • Gemäß 23 ist ein Blockdiagramm eines Systems 2300 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 2300 kann einen oder mehrere Prozessoren 2310, 2315 enthalten, die mit einem Steuerungsknoten 2320 gekoppelt sind. In einer Ausführungsform enthält der Steuerungsknoten 2320 einen Grafikspeichersteuerungsknoten (GMCH) 2390 und einen Eingabe/Ausgabe-Knoten (EAH) 2350 (die sich auf separaten Chips befinden können); der GMCH 2390 enthält Speicher- und Grafiksteuerungen, mit denen Speicher 2340 und ein Koprozessor 2345 gekoppelt sind; der EAH 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 EAH 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 enthalten und kann eine Version des Prozessors 2200 sein.
  • Der Speicher 2340 kann, beispielsweise, ein dynamischer Direktzugriffsspeicher (DRAM), ein Phasenwechselspeicher (PCM) 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 ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder ein Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder ähnliches. In einer Ausführungsform kann der Steuerungsknoten 2320 einen integrierten Grafikbeschleuniger enthalten.
  • 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 Leistungsverbrauchscharakteristiken und dergleichen.
  • In einer Ausführungsform führt der Prozessor 2310 Anweisungen aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. In die Anweisungen können Koprozessoranweisungen eingebettet sein. Der Prozessor 2310 erkennt, dass diese Koprozessoranweisungen von einem Typ sind, der durch den zugehörigen Koprozessor 2345 ausgeführt werden soll. Entsprechend gibt der Prozessor 2310 diese Koprozessoranweisungen (oder Steuersignale, die die Koprozessoranweisungen darstellen) auf einem Koprozessorbus oder einer anderen Verbindung an den Koprozessor 2345 aus. Ein oder mehrere Koprozessoren 2345 akzeptieren die empfangenen Koprozessoranweisungen und führen sie aus.
  • Gemäß 24 ist ein Blockdiagramm eines SoC 2400 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Ä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.
  • Einige Ausführungsformen der vorliegend offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination aus diesen Implementierungsansätzen implementiert werden. Einige Ausführungsformen der Erfindung können als Computerprogramme oder Programmcodes implementiert sein, die in programmierbaren Systemen, die mindestens einen Prozessor, ein Speichersystem (einschließlich eines flüchtigen und eines nichtflüchtigen Speichers und/oder flüchtiger und nichtflüchtiger Speicherelemente), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung umfassen, ausgeführt werden.
  • Programmcode kann auf die Eingabeanweisungen angewendet werden, um die vorliegend beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf eine oder mehrere Ausgabevorrichtungen auf bereits bekannte Weise angewendet werden. Im Zusammenhang mit dieser Anmeldung umfasst ein Verarbeitungssystem jedes System, das einen Prozessor aufweist, wie etwa einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer höheren prozeduralen oder objektorientierten Programmiersprache implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann, falls gewünscht, auch in einer Assembler- oder Maschinensprache implementiert sein. Tatsächlich sind die vorliegend beschriebenen Mechanismen in ihrem Umfang nicht auf eine spezielle 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 Anweisungen, gespeichert auf einem maschinenlesbaren Medium, das unterschiedliche Logik innerhalb des Prozessors repräsentiert, impementiert sein, die, wenn von einer Maschine gelesen, die Maschine veranlassen, Logik zu erzeugen, um die vorliegend 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 u.a. nichtflüchtige greifbare Anordnungen von Gegenständen enthalten, die durch eine Maschine oder Vorrichtung hergestellt oder gebildet werden, darunter Speichermedien wie etwa Festplatten, eine beliebige andere Art von Disketten einschließlich Floppy Disks, optische Disketten, CD-Nur-Lese-Speicher (CD-ROM, Compact Disk Read-Only-Memory), wiederbeschreibbare CDs (CD-RWs, Compact Disk Rewritable) und magnetooptische Disketten, Halbleitereinrichtungen wie Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM) wie dynamische Direktzugriffsspeicher (DRAM), statische Direktzugriffsspeicher (SRAM), löschbare programmierbare Nur-Lese-Speicher (EPROM, erasable programmable read-only-memory), Flashspeicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs, electrically erasable programmable read-only memory), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder eine beliebige andere Art von Medien, die zum Speichern elektronischer Anweisungen geeignet sind.
  • Entsprechend umfassen Ausführungsformen der Erfindung auch nichtflüchtige, greifbare, maschinenlesbare Medien, Anweisungen enthaltend oder Konzeptionsdaten enthaltend, wie etwa Hardwarebeschreibungssprache (HDL, Hardware Description Language), die Strukturen, Schaltungen, Einrichtungen, Prozessoren und/oder Systemmerkmale, wie hier beschrieben, definiert. Diese Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Emulation (einschließlich binärer Übersetzung, Code-Morphing usw.)
  • In manchen Fällen kann ein Anweisungsumwandler verwendet werden, um eine Anweisung aus einem Quellbefehlssatz in einen Zielbefehlssatz umzuwandeln. Beispielsweise kann der Anweisungsumwandler eine Anweisung in eine oder mehrere andere durch den Kern zu verarbeitende Anweisungen (z.B. unter Verwendung statischer Binärübersetzung, dynamischer Binärübersetzung einschließlich dynamischer Kompilation) übersetzen, morphen, emulieren oder anderweitig umwandeln. Der Anweisungsumwandler kann in Software, Hardware, Firmware oder einer Kombination aus diesen implementiert sein. Der Anweisungsumwandler kann prozessorintern, prozessorextern oder teilweise prozessorintern und teilweise prozessorextern sein.
  • 25 ist ein Blockdiagramm, das die Verwendung eines Softwareanweisungskonverters zum Konvertieren binärer Anweisungen in einem Quellbefehlssatz in binäre Anweisungen in einem Zielbefehlssatz gegenüberstellt, gemäß Ausführungsformen der Erfindung. In der dargestellten Ausführungsform ist der Anweisungsumwandler ein Softwareanweisungsumwandler, auch wenn der Anweisungsumwandler alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen daraus implementiert 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 systemintern durch einen Prozessor mit zumindest einem x86-Befehlssatzkern 2516 ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Befehlssatzkern 2516 stellt jeden Prozessor dar, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatzkern durchführen kann, indem er (1) einen wesentlichen Teil des Befehlssatzes des Intel-x86-Befehlssatzkerns oder (2) Objektcodeversionen von Anwendungen oder anderer Software, die zum Laufen auf einem Intel-Prozessor mit wenigstens einem x86-Befehlssatzkern vorgesehen ist, kompatibel ausführt oder anders verarbeitet, um im Wesentlichen das gleiche Ergebnis wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatzkern zu erreichen. Der x86-Compiler 2504 repräsentiert einen Compiler, der betreibbar ist zum Erzeugen von x86-Binärcode 2506 (e.g. Objektcode), der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit mindestens einem x86-Befehlssatzkern 2516 ausgeführt werden kann. Gleichermaßen zeigt 25, dass das Programm in der Hochsprache 2502 unter Verwendung eines Alternativbefehlssatz-Compilers 2508 compiliert werden kann, um den Alternativbefehlssatz-Binärcode 2510 zu erzeugen, der von einem Prozessor ohne mindestens einen x86-Befehlssatz-Kern 2514 (z.B. einem Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technologies in Sunnyvale, Kalifornien, ausführen und/oder die den ARM-Befehlssatz von ARM Holdings in Sunnyvale, Kalifornien ausführen) nativ ausgeführt werden kann. Der Anweisungsumwandler 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 Alternativbefehlssatz-Binärcode 2510, da ein Anweisungsumwandler, der dies erreichen könnte, schwierig zu erstellen ist; allerdings erfüllt der umgewandelte Code die allgemeine Operation und besteht aus Anweisungen aus dem alternativen Befehlssatz. Somit repräsentiert der Anweisungsumwandler 2512 Software, Firmware, Hardware oder eine Kombination daraus, die es durch Emulation, Simulation oder einen beliebigen anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtung, der/die keinen x86-Befehlssatz-Prozessor oder -Kern aufweist, ermöglicht, den x86-Binärcode 2506 auszuführen.
  • Registerschnittstelle für Computerprozessor
  • FIG. 26 - Beispielhaftes Datenverarbeitungssystem
  • Gemäß 26 ist ein Blockdiagramm eines beispielhaften Datenverarbeitungssystems 2605 gemäß einer oder mehreren Ausführungsformen gezeigt. Das Datenverarbeitungssystem 2605 kann einen Prozessor 2600, einen Speicher 2602 und eine Basisplatinenverwaltungssteuerung (BMC) 2690 beinhalten. Der Prozessor 2600 kann eine Hardwareverarbeitungsvorrichtung (z.B. eine zentrale Verarbeitungseinheit (CPU), ein Ein-Chip-System (SoC) und so weiter) sein. Der Speicher 2602 kann einen beliebigen Typ flüchtigen Speichers beinhalten, wie etwa dynamischen RAM (DRAM), synchronen dynamischen RAM (SDRAM) und so weiter. Die BMC 2690 kann eine Hardwaresteuerung sein, die von einem primären Verarbeitungspfad des Prozessors 2600 und/oder des Datenverarbeitungssystems 2605 getrennt ist und die verwendet werden kann, um den Prozessor 2600 und/oder das Datenverarbeitungssystem 2605 fernzuverwalten. Zum Beispiel kann sich ein entfernter Benutzer mit der BMC 2690 verbinden, um den Zustand des Prozessors 2600 zu überwachen, ein Hochfahren oder Herunterfahren des Prozessors 2600 zu bewirken und so weiter.
  • In einigen Ausführungsformen kann der Prozessor 2600 eine beliebige Anzahl von Verarbeitungs-Engine(s) 2610, Registerspeicher 2680 und eine Verwaltungsschaltung 2620 beinhalten. Die Verarbeitungs-Engine(s) 2610 kann (können) Allzweckverarbeitungs-Engines (d.h. „Kerne“), Grafikverarbeitungs-Engines, Mathematikverarbeitungs-Engines, Netzwerkverarbeitungs-Engines, Kryptographieverarbeitungs-Engines und so weiter beinhalten. Vorliegend kann Software, die durch die eine oder die mehreren Verarbeitungs-Engines 2610 ausgeführt wird, als „Inband“-Softwareentitäten bezeichnet werden. Ferner kann Software, die außerhalb des primären Verarbeitungspfads der Verarbeitungs-Engine(s) 2610 ausgeführt wird (z.B. die durch die BMC 2690 ausgeführt wird), vorliegend als „Außerband-“ (Out-of-Band-, OOB-) Softwareentitäten bezeichnet werden.
  • In einigen Ausführungsformen kann der Registerspeicher 2680 ein Speicher sein, der zum Speichern von Registern dediziert ist, die mit Merkmalen des Prozessors 2600 assoziiert sind. Der Registerspeicher 2680 kann zum Beispiel ein statischer Direktzugriffsspeicher (SRAM) sein, der dazu konfiguriert sein kann, eine beliebige Anzahl von Registern zu speichern, die mit Prozessormerkmalen assoziiert sind. In einigen Ausführungsformen können die Register, die in dem Registerspeicher 2680 enthalten sind, in Telemetrieregister 2682 und Steuerregister 2686 unterteilt sein. Vorliegend kann sich ein „Telemetrieregister“ auf ein Register beziehen, das lesbar ist, um Zustands- und/oder Performanzinformationen bezüglich des Prozessors 2600 zu erhalten. Ferner kann sich ein „Steuerregister“ auf ein Register beziehen, das modifizierbar ist, um ein Prozessormerkmal zu steuern, oder das lesbar ist, um sensible Informationen bezüglich des Prozessors 2600 zu erhalten.
  • In einer oder mehreren Ausführungsformen kann die Verwaltungsschaltung 2620 eine Mehrzweckverwaltungsvorrichtung oder -komponente sein, die in dem Prozessor 2600 enthalten ist. Zum Beispiel kann die Verwaltungsschaltung 2620 eine PCIe™- (Peripheral Component Interconnect Express) Vorrichtung sein, die in einem SoC (d.h. dem Prozessor 2600) enthalten ist. In einigen Ausführungsformen kann die Verwaltungsschaltung 2620 mehrere Verwaltungsfunktionen oder -„Fähigkeiten“ beinhalten, auf die Softwareentitäten (z.B. Inband-Software, die durch eine Verarbeitungs-Engine 2610 ausgeführt wird, Außerband-Software, die durch die BMC 2690 ausgeführt wird usw.) zugreifen können. Ferner kann die Verwaltungsschaltung 2620 eine Fähigkeitsstruktur 2630 beinhalten, die durch die Softwareentitäten gelesen werden kann, um die verschiedenen Fähigkeiten der Verwaltungsschaltung 2620 zu identifizieren. Zum Beispiel kann die Fähigkeitsstruktur 2630 eine PCIe-VSEC- (Vendor Specific Extended Capabilities, Anbieter-spezifische erweiterte Fähigkeiten) Struktur sein. Eine beispielhafte Implementierung eines Eintrags der Fähigkeitsstruktur 2630 wird nachstehend unter Bezugnahme auf 33 besprochen.
  • In einigen Ausführungsformen kann die Verwaltungsschaltung 2620 eine Inband-Kommunikation (z.B. von einer Verarbeitungs-Engine 2610) über eine primäre Schnittstelle der Verwaltungsvorrichtung 2620 (z.B. eine PCIe-Schnittstelle) empfangen, die empfangene In-Kommunikation in eine Außerband-Kommunikation umwandeln und dann die Außerband-Kommunikation an ihr beabsichtigtes Ziel (z.B. ein spezielles Register) weiterleiten. Dieser InBand-Umwandlungsprozess kann umgekehrt werden, wenn eine Antwort an eine Inband-Quelle zurückgesendet wird. Ferner kann die Verwaltungsschaltung 2620 eine Außerband-Kommunikation (z.B. von der BMC 2690) über eine Sekundärschnittstelle der Verwaltungsvorrichtung 2620 (z.B. eine PECI- (platform environment control interface, Plattformumgebungssteuerschnittstelle) Schnittstelle, eine Direktmedienschnittstelle (DMI usw.) empfangen und kann die Außerband-Kommunikation zu ihrem beabsichtigten Ziel weiterleiten.
  • In einigen Ausführungsformen kann die Fähigkeitsstruktur 2630 angeben, dass die Verwaltungsschaltung 2620 eine URI- (Unified Register Interface) Fähigkeit zum Zugreifen auf Merkmale des Prozessors 2600 beinhaltet. In solchen Ausführungsformen kann die Verwaltungsschaltung 2620 eine Merkmalsstruktur 2640, eine Zugriffsstruktur 2650, eine Registerschnittstellenschaltung 2625, eine Ortsstruktur 2660, Telemetrieregisterformate 2670 und Steuerregisterformate 2675 beinhalten.
  • In einigen Ausführungsformen kann die Merkmalsstruktur 2640 durch Außerband-und Inband-Softwareentitäten lesbar sein, um zu erkennen, welche Merkmale in dem Prozessor 2600 enthalten sind. Ferner kann eine Softwareentität nach dem Erkennen eines speziellen Merkmals die Merkmalsstruktur 2640 verwenden, um zu bestimmen, wie eine Anfrage zum Zugreifen auf die Register (z.B. im Registerspeicher 2680), die mit dem entdeckten Merkmal assoziiert sind, gesendet werden soll. In einigen Ausführungsformen kann die Registerschnittstellenschaltung 2625 die Anfrage von der Softwareentität empfangen und kann die Ortsstruktur 2660 verwenden, um die Anfrage auszuführen. Die Ortsstruktur 2660 kann Informationen bezüglich der Architekturdetails des Prozessors 2660 speichern, die mit jedem Merkmal assoziiert sind (z.B. Anzahl von Verarbeitungs-Engines 2610, Typ von Verarbeitungs-Engines 2610 und so weiter). Ferner ist die Ortsstruktur 2660 möglicherweise nicht durch Außerband- und Inband-Softwareentitäten lesbar. Dementsprechend kann die Ortsstruktur 2660 Zugriff auf die Register (z.B. im Registerspeicher 2680) erlauben, während sie auch die Architekturdetails des Prozessors 2600 gegenüber nichtautorisierten Entitäten verdeckt. Beispielhafte Implementierungen der Merkmalsstruktur 2640 und der Ortsstruktur 2660 werden nachstehend unter Bezugnahme auf 27 besprochen.
  • In einer oder mehreren Ausführungsformen kann die Registerschnittstellenschaltung 2625 eine Anfrage von einer Softwareentität empfangen und kann die Zugriffsstruktur 2650 verwenden, um zu bestimmen, ob die Anfrage autorisiert ist. Die Zugriffsstruktur 2650 kann mehrere Einträge beinhalten, die identifizieren, auf welche Prozessormerkmale Softwareentitäten zugreifen können. Zum Beispiel kann die Zugriffsstruktur 2650 Einträge beinhalten, die verschiedene Kombinationen von Registerzugriffstyp (z.B. Lese- oder Schreib-) und Quellentitätstyp (z.B. Außerband oder Inband) spezifizieren, die für jedes eindeutige Merkmal des Prozessors 2600 autorisiert sind. In einigen Ausführungsformen können Außerband-Entitäten eine höhere Priorität als Inband-Entitäten aufweisen, um die Einträge der Zugriffsstruktur 2650 zu modifizieren. Zum Beispiel kann eine Außerband-Entität einen bestimmten Eintrag vor Inband-Entitäten verbergen oder um zu verhindern, dass Inband-Entitäten diesen Eintrag modifizieren. Ferner kann die Außerband-Entität einen Eintrag sperren und verhindern, dass eine weitere Modifikation dieses Eintrags entweder durch Außerband- oder Inband-Entitäten erfolgt. Eine beispielhafte Implementierung der Zugriffsstruktur 2650 wird nachstehend unter Bezugnahme auf 28 besprochen.
  • In einigen Ausführungsformen kann eine Softwareentität die Telemetrieregisterformate 2670 und/oder die Steuerregisterformate 2675 lesen, um die Formate (z.B. Namen, Längen, Offsets usw.) der Register 2682, 2686 zu bestimmen, und die bestimmten Formate verwenden, um Zugriffsanfragen für die Register 2682, 2686 zu erzeugen. Zum Beispiel können die Telemetrieregisterformate 2670 und die Steuerregisterformate 2675 maschinenlesbare Informationen (z.B. XML-Dateien) beinhalten, die Datenformate unterschiedlicher Sätze von Registern beschreiben. In einigen Ausführungsformen können die Telemetrieregisterformate 2670 Formate für jedes Telemetrieregister 2682 spezifizieren, und die Steuerregisterformate 2675 können Formate für jedes Steuerregister 2686 spezifizieren.
  • In einer oder mehreren Ausführungsformen können die Verwaltungsschaltung 2620 und ihre assoziierte Firmware aktualisiert werden, um die Merkmale und assoziierten Register des Prozessors 2600 zu modifizieren. Solche Modifikationen können zum Beispiel Hinzufügen neuer Register zu dem Registerspeicher 2680 oder Modifizieren bestehender Register in dem Registerspeicher 2680 beinhalten. In einem anderen Beispiel kann die Merkmalsstruktur 2640 modifiziert werden, um neue Merkmale hinzuzufügen oder austretende Merkmale zu modifizieren oder zu löschen. Ferner kann die Ortsstruktur 2660 aktualisiert werden, um Änderungen an den Registern widerzuspiegeln.
  • Es ist anzumerken, dass, wenngleich 26 eine beispielhafte Ausführungsform des Systems 2605 zeigt, in Betracht gezogen wird, dass andere Ausführungsformen möglich sind. Wenngleich 26 zum Beispiel die verschiedenen Komponenten (z.B. Registerschnittstellenschaltung 2625, Merkmalsstruktur 2640, Zugriffsstruktur 2650, Ortsstruktur 2660 usw.) als in der Verwaltungsschaltung 2620 enthalten zeigt, wird in Betracht gezogen, dass einige oder alle dieser Komponenten in einem beliebigen anderen Teil des Prozessors 2600 enthalten sein können. Ferner wird in Betracht gezogen, dass eine bandexterne Entität in anderen Vorrichtungen oder Quellen als der BMC 2690 ausgeführt werden kann. Andere Variationen sind möglich.
  • FIG. 27 - Beispielhafte Strukturen
  • Gemäß 27 sind eine Merkmalsstruktur 2640 und eine beispielhafte Ortsstruktur 2660 gemäß einigen Ausführungsformen gezeigt. Wie gezeigt, kann die Merkmalsstruktur 2640 mehrere Einträge oder Zeilen beinhalten, die jeweils ein spezielles Merkmal des Prozessors 2600 identifizieren. Jeder Eintrag der Merkmalsstruktur 2640 kann ein Feld beinhalten, das einen jeweiligen Merkmalsnamen 2710 speichert. Zum Beispiel kann eine Softwareentität den Merkmalsnamen 2710 verwenden, um ein jeweiliges Merkmal zu identifizieren (z.B. Merkmal „B“ in 27). Ferner kann jeder Eintrag andere Felder beinhalten, die verwendet werden können, um auf das assoziierte Merkmal zuzugreifen, einschließlich einer Merkmalskennung 2720, einer Anzahl von Einträgen 2730 und der Eintragsgröße 2735. Die Anzahl von Einträgen 2730 kann die Anzahl distinkter Register für das Merkmal identifizieren, und die Eintragsgröße 2735 kann die Größe jedes Registers angeben. Angenommen, eine Softwareentität liest zum Beispiel den Eintrag für Merkmal „B“ (d.h. basierend auf dem Merkmalsnamen 2710) und kann dadurch die assoziierten Werte für die Merkmalskennung 2720, die Anzahl von Einträgen 2730 und die Eintragsgröße 2735 bestimmen.
  • In einigen Ausführungsformen kann die Anzahl von Einträgen 2730 für ein gegebenes Merkmal die Anzahl von Einträgen in der Ortsstruktur 2660 angeben, die mit diesem gegebenen Merkmal assoziiert sind. Zum Beispiel ist anzumerken, dass das Merkmal „B“ eine Anzahl an Einträgen 2730 gleich „4“ aufweist und dass die Ortsstruktur 2660 vier Zeilen beinhaltet, die dem Merkmal „B“ entsprechen. In einigen Ausführungsformen kann eine Softwareentität einen Eintrag der Merkmalsstruktur 2640 verwenden, um eine Anfrage zum Zugreifen (z.B. Lesen oder Modifizieren) auf ein spezielles Register zu erzeugen. Die Registerschnittstellenschaltung 2625 (in 26 gezeigt) kann diese Anfrage empfangen und kann die Anfrage mit einem bestimmten Eintrag oder einer bestimmten Zeile der Ortsstruktur 2660 abgleichen, die ein spezifisches Register identifiziert, das mit Merkmal „B“ assoziiert ist. Auf diese Weise kann die Registerschnittstellenschaltung 2625 die Ortsstruktur 2660 verwenden, um die Anfrage an den geeigneten Registerort zu leiten und dadurch die Anfrage auszuführen oder anderweitig durchzuführen.
  • Die Ortsstruktur 2660 kann Informationen bezüglich der Architekturdetails der Register, die mit jedem Merkmal assoziiert sind, speichern. Wie zum Beispiel in 27 gezeigt, kann jeder Eintrag der Ortsstruktur 2660 Felder zum Speichern eines Offset-Felds 2740, eines Merkmalsnamens 2750, eines Ports 2760, eines Startorts 2770 und eines Registernamens 2780 beinhalten. In einigen Ausführungsformen können diese Felder (z.B. durch die Registerschnittstellenschaltung 2625 in 26) verwendet werden, um auf ein Register zuzugreifen und dadurch eine empfangene Anfrage auszuführen. Ferner ist die Ortsstruktur 2660 möglicherweise nicht durch Außerband- und Inband-Softwareentitäten lesbar. Die Ortsstruktur 2660 kann folglich Zugriff auf die Register erlauben, ohne Architekturdetails des Prozessors 2600 und der assoziierten Merkmale offenzulegen.
  • FIG. 28 - Beispielhafte Struktur
  • Gemäß 28 ist eine beispielhafte Zugriffsstruktur 2650 gemäß einigen Ausführungsformen gezeigt. Wie gezeigt, kann die Zugriffsstruktur 2650 mehrere Einträge oder Zeilen beinhalten, die jeweils einem bestimmten Merkmal des Prozessors 2600 entsprechen. Zum Beispiel kann jeder Eintrag der Zugriffsstruktur 2650 einen Merkmalsnamen 2750 zum Identifizieren eines speziellen Merkmals und eine Inband-Leseautorisierung 2760 beinhalten, die eingestellt ist, um anzugeben, dass Inband-Softwareentitäten aus den assoziierten Registern (d.h. den Registern, die mit dem speziellen Merkmal assoziiert sind) lesen können. Ferner kann der Eintrag eine Inband-Schreib-Autorisierung 2765, die eingestellt ist, um anzugeben, dass Inband-Softwareentitäten in die assoziierten Register schreiben können, eine Außerband-Lese-Autorisierung 2770, die eingestellt ist, um anzugeben, dass Außerband-Softwareentitäten aus den assoziierten Registern lesen können, und eine Außerband-Schreib-Autorisierung 2775 beinhalten, die eingestellt ist, um anzugeben, dass Außerband-Softwareentitäten in die assoziierten Register schreiben können. Des Weiteren kann der Eintrag in einigen Ausführungsformen eine Sperreinstellung 2780 beinhalten, die auf „Sperren“ gesetzt ist bzw. verhindert, dass dieser Eintrag durch Inband-oder Außerband-Softwareentitäten geändert wird.
  • In einigen Ausführungsformen kann die Registerschnittstellenschaltung 2625 eine Anfrage von einer Softwareentität empfangen und kann die Zugriffsstruktur 2650 verwenden, um zu bestimmen, ob die Anfrage autorisiert ist. Zum Beispiel sei angenommen, dass eine empfangene Anfrage von einer In-Bound-Entität gesendet wurde, um ein Register für Merkmal „A“ zu lesen. In diesem Beispiel kann die Registerschnittstellenschaltung 2625 bestimmen, dass der Eintrag für Merkmal „A“ eine Inband-Lese-Autorisierung 2760 aufweist, die eingestellt ist, um eine Autorisierung (z.B. mit einem „1"-Bitwert) anzugeben, und kann daher die Anfrage ausführen oder anderweitig durchführen.
  • FIG. 29 - Beispielhaftes Verfahren zum Erzeugen einer Anfrage
  • Gemäß 29 ist ein Flussdiagramm eines Verfahrens 2900 zum Erzeugen einer Anfrage gemäß einer oder mehreren Ausführungsformen gezeigt. In verschiedenen Ausführungsformen kann das Verfahren 2900 durch eine In-Bound-Softwareentität (die z.B. durch eine in 26 gezeigte Verarbeitungs-Engine 2610 ausgeführt wird) oder eine Out-of-Bound-Softwareentität (die z.B. durch die in 26 gezeigte BMC 2690 ausgeführt wird) durchgeführt werden. Das Verfahren 2900 kann zum Beispiel durchgeführt werden, um auf ein bestimmtes Merkmal eines Prozessors zuzugreifen. Die In-Bound- und Out-of-Bound-Softwareentitäten können Software, Firmware oder eine Kombination davon beinhalten und können durch computerausgeführte Anweisungen implementiert werden, die in einem nichtflüchtigen maschinenlesbaren Medium (z.B. optische, Halbleiter-, magnetische Speicherungsvorrichtung usw.) 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. Zur Veranschaulichung werden die Einzelheiten des Verfahrens 2900 im Folgenden unter Bezugnahme auf die 26-28 beschrieben, die Beispiele gemäß einer oder mehrerer Ausführungsformen zeigen. Allerdings ist der Schutzumfang der verschiedenen vorliegend erörterten Ausführungsformen in dieser Hinsicht nicht beschränkt.
  • Block 2910 kann Lesen einer Fähigkeitsstruktur eines Prozessors beinhalten. Der Entscheidungsblock 2920 kann auf Grundlage der Fähigkeitsstruktur erfolgendes Bestimmen beinhalten, ob der Prozessor eine URI- (Unified Register Interface) Fähigkeit beinhaltet. Falls nicht („NEIN“), kann das Verfahren 2900 bei Block 2970 fortfahren, der Verwenden einer verfügbaren Registerschnittstelle beinhaltet. Nach Block 2970 kann das Verfahren 2900 abgeschlossen werden. Unter Bezugnahme auf 26 kann zum Beispiel eine In-Bound-Softwareentität (die z.B. durch eine Verarbeitungs-Engine 2610 ausgeführt wird) die Fähigkeitsstruktur 2630 lesen, um zu bestimmen, ob die Verwaltungsschaltung 2620 und/oder der Prozessor 2600 eine URI-Fähigkeit beinhalten. Falls die Fähigkeitsstruktur 2630 nicht angibt, dass die URI-Fähigkeit verfügbar ist, kann die In-Bound-Softwareentität eine alternative Registerschnittstelle für das spezielle Merkmal (z.B. modellspezifische Registerbetriebssystem-Mailbox usw.) verwenden. In einigen Beispielen kann die Fähigkeitsstruktur 2630 eine PCIe-VSEC- (Vendor Specific Extended Capabilities, Anbieter-spezifische erweiterte Fähigkeiten) Struktur sein.
  • Unter erneuter Bezugnahme auf 29 kann, falls bei Entscheidungsblock 2920 bestimmt wird, dass der Prozessor eine URI-Fähigkeit beinhaltet („JA“), das Verfahren 2900 bei Block 2930 fortfahren, das Lesen einer Merkmalsstruktur beinhaltet, um ein Prozessormerkmal zu identifizieren und die assoziierten Merkmalsparameter zu bestimmen. Beispielsweise kann gemäß 26-27 die In-Bound-Softwareeinheit die Merkmalsstruktur 2640 lesen, um ein bestimmtes Merkmal „A“ des Prozessors 2600 (z.B. ein Leistungsverwaltungsmerkmal) zu identifizieren und die Merkmalskennung 2720, die Anzahl der Einträge 2730 und die Eintragsgröße 2735 zu bestimmen, die mit Merkmal „A“ assoziiert sind
  • Unter weiterer Bezugnahme auf 29 kann Block 2940 Lesen einer Formatstruktur beinhalten, um ein Format für eine Merkmalsanfrage zu bestimmen. Block 2950 kann Erzeugen der Anfrage auf Grundlage des bestimmten Formats beinhalten. Block 2960 kann Senden der Anfordrage an eine URI-Schaltung beinhalten. Nach Block 2960 kann das Verfahren 2900 abgeschlossen werden. Gemäß 26-27 kann beispielsweise die In-Bound-Softwareeinheit die Telemetrieregisterformate 2670 lesen, um das Format eines Registers zu bestimmen, das mit dem Merkmal „A“ assoziiert ist, und eine Anfrage zum Lesen des Registers auf Grundlage des bestimmten Formats erzeugen. Die In-Bound-Softwareentität kann dann die erzeugte Anfrage an die Registerschnittstellenschaltung 2625 senden, um abgeschlossen zu werden.
  • FIG. 30 - Beispielhaftes Verfahren zum Konfigurieren eines Merkmals
  • Gemäß 30 ist ein Flussdiagramm eines Verfahrens 3000 zum Konfigurieren eines Merkmals gemäß einer oder mehreren Ausführungsformen gezeigt. In verschiedenen Ausführungsformen kann das Verfahren 3000 durch eine Verarbeitungslogik (z.B. Registerschnittstellenschaltung 2625 und/oder Verwaltungsschaltung 2620, gezeigt in 26) durchgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungsanordnung, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z.B. auf einer Verarbeitungsvorrichtung ausgeführte Anweisungen) oder eine Kombination davon beinhalten kann. Zum Beispiel kann das Verfahren 3000 durchgeführt werden, um ein spezielles Merkmal eines Prozessors in Reaktion auf eine Konfigurationsanfrage von einer In-Bound-Softwareentität (die z.B. durch eine in 26 gezeigte Verarbeitungs-Engine 2610 ausgeführt wird) oder einer Out-of-Bound-Softwareentität (die z.B. durch die in 26 gezeigte BMC 2690 ausgeführt wird) zu konfigurieren. In Firmware- oder Softwareausführungsformen kann das Verfahren 3000 durch computerausgeführte Anweisungen implementiert werden, die in einem nichtflü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. Zur Veranschaulichung werden die Einzelheiten des Verfahrens 3000 im Folgenden unter Bezugnahme auf die 26-28 beschrieben, die Beispiele gemäß einer oder mehrerer Ausführungsformen zeigen. Allerdings ist der Schutzumfang der verschiedenen vorliegend erörterten Ausführungsformen in dieser Hinsicht nicht beschränkt.
  • Block 3010 kann Empfangen einer Konfigurationsanfrage für ein Prozessormerkmal beinhalten. Unter Bezugnahme auf 26 kann die Registerschnittstellenschaltung 2625 zum Beispiel eine Anfrage zum Konfigurieren eines Merkmals des Prozessors 2600 empfangen. Die Anfragekonfiguration kann Modifizieren von Autorisierungen zum Zugreifen auf Register, die mit dem Merkmal assoziiert sind (z.B. Leseautorisierung, Schreibautorisierung), Modifizieren von Betriebsparametern (z.B. Ein- oder Ausschalten von Einstellungen, Einstellen von Schwellenwerten) und so weiter beinhalten. In einigen Ausführungsformen kann die Registerschnittstellenschaltung 2625 in einer Verwaltungsschaltung 2620 enthalten sein. In anderen Ausführungsformen kann die Registerschnittstellenschaltung 2625 jedoch in einem beliebigen anderen Teil des Prozessors 2600 enthalten sein.
  • Unter erneuter Bezugnahme auf 30 kann Block 3020 Bestimmen der Quellenentität der Konfigurationsanfrage beinhalten. Der Entscheidungsblock 3030 kann Bestimmen beinhalten, ob die Quellenentität eine Außerband-Softwareentität ist. Falls nicht („NEIN“), kann das Verfahren 3000 bei Entscheidungsblock 3060 fortfahren, der Bestimmen beinhaltet, ob die Anfrage zum Konfigurieren von Verbergungs- oder Sperreinstellungen dient. Falls ja („JA“), kann das Verfahren 3000 bei Block 3050 (nachstehend beschrieben) fortfahren. Falls die Anfrage nicht zum Konfigurieren von Verbergungs- oder Sperreinstellungen dient, kann das Verfahren 3000 bei Block 3070 fortfahren, der Ablehnen der Konfigurationsanfrage beinhaltet. Nach Block 3070 kann das Verfahren 3000 abgeschlossen werden. Gemäß 26-27 kann die Registerschnittstellenschaltung 2625 beispielsweise eine Anfrage zur Konfiguration eines Merkmals des Prozessors 2600 (z.B. das in der Merkmalsstruktur 2640 identifizierte Merkmal „A“) empfangen und dann bestimmen, ob die Konfigurationsanfrage von einer Out-of-Bound-Softwareentität (z.B. von der BMC 2690) oder von einer In-Bound-Softwareentität (z.B. von einer Verarbeitungs-Engine 2610) empfangen wurde. Ferner kann die Registerschnittstellenschaltung 2625 bestimmen, ob die Konfigurationsanfrage die Inband-Lese-Autorisierung 2760 oder die Inband-Schreib-Autorisierung 2765 in dem Eintrag für Merkmal „A“ in der Zugriffsstruktur 2650 konfigurieren soll. In einigen Ausführungsformen kann die Registerschnittstellenschaltung 2625 die Konfigurationsanfrage in Reaktion auf Bestimmen ablehnen, dass die Konfigurationsanfrage von einer In-Bound-Softwareentität empfangen wurde und die Inband-Lese-Autorisierung 2760 oder die Inband-Schreib-Autorisierung 2765 konfigurieren soll.
  • Unter erneuter Bezugnahme auf 30 kann, falls bei Entscheidungsblock 3030 bestimmt wird, dass die Quellenentität der Konfigurationsanfrage eine Außerband-Softwareentität ist („JA“), das Verfahren 3000 bei Block 3040 fortfahren, das Konfigurieren des Prozessormerkmals gemäß der Konfigurationsanfrage beinhaltet. Block 3050 kann Verbergen oder Sperren der Merkmalsregister gemäß der Konfigurationsanfrage beinhalten. Nach Block 3050 kann das Verfahren 3000 abgeschlossen werden. Beispielsweise kann die Registerschnittstellenschaltung 2625 gemäß 26-27 bestimmen, dass eine Konfigurationsanfrage von einer Out-of-Bound-Softwareentität (z.B. von der BMC 2690) empfangen wurde, und kann daraufhin das Merkmal auf Grundlage der Konfigurationsanfrage konfigurieren. Eine solche Konfiguration kann Modifizieren eines Steuerregisters 2686 und/oder einer Inband-Lese-Autorisierung 2760 und/oder einer Inband-Schreib-Autorisierung 2765 und/oder einer Außerband-Lese-Autorisierung 2770 und/oder einer Außerband-Schreib-Autorisierung 2775 beinhalten. Ferner kann eine solche Konfiguration in einigen Ausführungsformen Aktivieren der Sperreinstellung 2780 beinhalten, um jegliche weiteren Änderungen an dem entsprechenden Eintrag der Zugriffsstruktur 2650 durch Inband-oder Außerband-Softwareentitäten zu verhindern.
  • FIG. 31 - Beispielhaftes Verfahren zum Zugreifen auf ein Merkmal
  • Gemäß 31 ist ein Flussdiagramm eines Verfahrens 3100 zum Zugreifen auf ein Merkmal gemäß einer oder mehreren Ausführungsformen gezeigt. In verschiedenen Ausführungsformen kann das Verfahren 3100 durch eine Verarbeitungslogik (z.B. Registerschnittstellenschaltung 2625 und/oder Verwaltungsschaltung 2620, gezeigt in 26) durchgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungsanordnung, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z.B. auf einer Verarbeitungsvorrichtung ausgeführte Anweisungen) oder eine Kombination davon beinhalten kann. Zum Beispiel kann das Verfahren 3100 durchgeführt werden, um auf ein spezielles Merkmal eines Prozessors in Reaktion auf eine Konfigurationsanfrage von einer In-Bound-Softwareentität (die z.B. durch eine in 26 gezeigte Verarbeitungs-Engine 2610 ausgeführt wird) oder einer Out-of-Bound-Softwareentität (die z.B. durch die in 26 gezeigte BMC 2690 ausgeführt wird) zuzugreifen. In Firmware- oder Softwareausführungsformen kann das Verfahren 3100 durch computerausgeführte Anweisungen implementiert werden, die in einem nichtflü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. Zur Veranschaulichung werden die Einzelheiten des Verfahrens 3100 im Folgenden unter Bezugnahme auf die 26-28 beschrieben, die Beispiele gemäß einer oder mehrerer Ausführungsformen zeigen. Allerdings ist der Schutzumfang der verschiedenen vorliegend erörterten Ausführungsformen in dieser Hinsicht nicht beschränkt.
  • Block 3110 kann Empfangen einer Anfrage zum Zugreifen auf ein Register für ein Prozessormerkmal beinhalten. Block 3120 kann Bestimmen eines Quellentitätstyps für die Anfrage beinhalten. Block 3130 kann Bestimmen eines Zugriffstyps in der Anfrage beinhalten. Gemäß 26 kann die Registerschnittstellenschaltung 2625 zum Beispiel eine Anfrage zum Zugreifen auf ein Register empfangen, das mit einem Prozessormerkmal (z.B. einem Leistungsverwaltungsmerkmal) assoziiert ist. Die Registerschnittstellenschaltung 2625 kann den Typ der Softwareentität, die die Anfrage gesendet hat (z.B. In-Bound-Entität oder Out-of-Bound-Entität), und den Typ des Zugriffs in der Anfrage (z. B. Lesen oder Schreiben in das Register) bestimmen.
  • Unter erneuter Bezugnahme auf 31 kann Block 3140 Lesen einer Zugriffsstruktur beinhalten, um die Kombination des Zugriffstyps (bestimmt bei Block 3130) und des Quellentitätstyps (bestimmt bei Block 3120) nachzuschlagen. Der Entscheidungsblock 3150 kann Bestimmen beinhalten, ob die Kombination des Zugangstyps und des Quellentitätstyps in der Zugriffsstruktur autorisiert ist. Falls nicht („NEIN“), kann das Verfahren 3100 bei Block 3180 fortfahren, der Ablehnen der Anfrage beinhaltet. Nach Block 3180 kann das Verfahren 3100 abgeschlossen werden. Gemäß 26-28 kann die Registerschnittstellenschaltung 2625 beispielsweise eine Anfrage von einer In-Bound-Entität erhalten, in ein Register für Merkmal „A“ zu schreiben, und kann dann die Zugriffsstruktur 2650 lesen, um zu bestimmen, ob die empfangene Anfrage autorisiert ist. Ferner kann die Registerschnittstellenschaltung 2625 bestimmen, dass der Eintrag für Merkmal „A“ eine Inband-Schreib-Autorisierung 2765 aufweist, die nicht eingestellt ist, um eine Autorisierung anzugeben (z.B. mit einem Bitwert „0“). Entsprechend kann die Registerschnittstellenschaltung 2625 bestimmen, dass die empfangene Anfrage nicht durch die Zugriffsstruktur 2650 autorisiert wird, und kann daher die Anfrage ablehnen (z.B. durch Senden einer Ablehnungsnachricht an die anfragende Entität).
  • Unter erneuter Bezugnahme auf 31 kann, falls bei Entscheidungsblock 3150 bestimmt wird, dass die Kombination des Zugangstyps und des Quellentitätstyps in der Zugriffsstruktur autorisiert ist („JA“), das Verfahren 3100 bei Block 3160 fortfahren, das Bestimmen des Orts des Registers unter Verwendung einer Ortsstruktur beinhaltet. Block 3170 kann Durchführen des angefragten Zugriffs auf das Register an dem bestimmten Ort beinhalten. Nach Block 3170 kann das Verfahren 3100 abgeschlossen werden. Gemäß 26-28 kann die Registerschnittstellenschaltung 2625 beispielsweise eine Anfrage von einer Out-of-Bound-Entität erhalten, in ein Register für Merkmal „A“ zu schreiben, und kann dann die Zugriffsstruktur 2650 lesen, um zu bestimmen, ob die empfangene Anfrage autorisiert ist. Ferner kann die Registerschnittstellenschaltung 2625 bestimmen, dass der Eintrag für Merkmal „A“ eine Außerband-Schreib-Autorisierung 2775 aufweist, die eingestellt ist, um eine Autorisierung anzugeben (z.B. mit einem Bitwert „1"). In Reaktion darauf kann die Registerschnittstellenschaltung 2625 eine Suche in der Ortsstruktur 2660 durchführen, um zu bestimmen, wie auf das geeignete Register zuzugreifen ist. In einigen Ausführungsformen kann die Ortsstruktur 2660 Informationen speichern, die verwendet werden, um auf ein gegebenes Register zuzugreifen. Wie zum Beispiel in 27 gezeigt, kann jeder Eintrag der Ortsstruktur 2660 Felder zum Speichern eines Offset-Felds 2740, eines Merkmalsnamens 2750, eines Ports 2760, eines Startorts 2770 und eines Registernamens 2780 beinhalten. Die Registerschnittstellenschaltung 2625 kann die Informationen von der Ortsstruktur 2660 verwenden, um den Registerort zu bestimmen und dadurch auf das Register zuzugreifen, um die empfangene Anfrage auszuführen.
  • FIG. 32 - Beispielhaftes Verfahren zum Zugreifen auf ein Merkmal
  • Gemäß 32 ist ein Flussdiagramm eines Verfahrens 3200 zum Zugreifen auf ein Merkmal gemäß einer oder mehreren Ausführungsformen gezeigt. In verschiedenen Ausführungsformen kann das Verfahren 3200 durch eine Verarbeitungslogik (z.B. Registerschnittstellenschaltung 2625 und/oder Verwaltungsschaltung 2620, gezeigt in 26) durchgeführt werden, die Hardware (z.B. Verarbeitungsvorrichtung, Schaltungsanordnung, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z.B. auf einer Verarbeitungsvorrichtung ausgeführte Anweisungen) oder eine Kombination davon beinhalten kann. In Firmware- oder Softwareausführungsformen kann das Verfahren 3100 durch computerausgeführte Anweisungen implementiert werden, die in einem nichtflü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.
  • Block 3210 kann durch eine Registerschnittstellenschaltung eines Prozessors erfolgendes Empfangen einer Anfrage zum Zugreifen auf ein Register, das mit einem Merkmal des Prozessors assoziiert ist, beinhalten. Block 3220 kann durch die Registerschnittstellenschaltung erfolgendes Bestimmen, ob der angefragte Zugriff autorisiert ist, zumindest teilweise auf Grundlage eines Eintrags einer Zugriffsstruktur beinhalten, wobei die Zugriffsstruktur eine Vielzahl von Einträgen speichern soll, die mit einer Vielzahl von Merkmalen des Prozessors assoziiert sind. Block 3230 kann beinhalten, dass die Registerschnittstellenschaltung in Reaktion auf eine Bestimmung, dass der angefragte Zugriff autorisiert ist, den angefragten Zugriff des Registers, das mit dem Merkmal assoziiert ist, durchführt. Nach Block 3230 kann das Verfahren 3200 abgeschlossen werden.
  • FIG. 33 - Beispielhafte Struktur
  • Gemäß 33 ist ein beispielhafter Fähigkeitsstruktureintrag 3300 gemäß einigen Ausführungsformen gezeigt. Insbesondere kann der beispielhafte Fähigkeitsstruktureintrag 3300 als eine VSEC- (PCIe Vendor Specific Extended Capabilities, PCIe-Anbieter-spezifische erweiterte Fähigkeiten) Struktur implementiert werden. Wie gezeigt, kann der beispielhafte Fähigkeitsstruktureintrag 3300 Felder beinhalten, um eine Fähigkeitskennung (ID) anzugeben, um eine Fähigkeit, eine Fähigkeitsversion und einen Offset zu einer nächsten Fähigkeit (z.B. Offset zu einem verknüpften Eintrag in einer Kette von Einträgen) zu identifizieren. Ferner können die Felder eine Kennung (VSEC_ID) zum Identifizieren der VSEC-Struktur, eine VSEC-Versionsnummer (VSEC_REV), eine VSEC-Feldlänge (VSEC_LEN), die Anzahl von Einträgen (AnzEinträge), die Eintragsgröße (EintragsGröße), ein Balkenindikatorregister (tBIR) und einen Offset zu einer Basisadresse (Adresse) beinhalten. In einigen Ausführungsformen kann der beispielhafte Fähigkeitsstruktureintrag 3300 durch die Softwareentitäten gelesen werden, um die verschiedenen Fähigkeiten einer Verwaltungsschaltung (z.B. Verwaltungsschaltung 2620 in 26), wie etwa eine URI- (unified register interface, vereinheitlichte Registerschnittstelle) Fähigkeit, zu identifizieren.
  • FIG. 34 - Beispielhaftes Speichermedium
  • Gemäß 34 ist ein Speichermedium 3400 gezeigt, auf dem ausführbare Anweisungen 3410 gespeichert sind. In einigen Ausführungsformen kann das Speichermedium 3400 ein nicht-transientes, maschinenlesbares Medium sein, wie z.B. ein optisches Medium, ein Halbleiter, eine magnetische Speichervorrichtung und so weiter. Die ausführbaren Anweisungen 3410 können durch eine Verarbeitungsvorrichtung ausführbar sein. Ferner können die ausführbaren Anweisungen 3410 von mindestens einer Maschine verwendet werden, um mindestens eine integrierte Schaltung herzustellen, um eine/s oder mehrere der in den 29-32 dargestellten Verfahren und/oder Operationen durchzuführen.
  • Die folgenden Abschnitte und/oder Beispiele betreffen weitere Ausführungsformen:
    • In Beispiel 1 kann ein Prozessor für Registerzugriff mindestens eine Verarbeitungs-Engine zum Ausführen von Anweisungen und eine Registerschnittstellenschaltung, die mit der mindestens einen Verarbeitungs-Engine gekoppelt ist, beinhalten. Die Registerschnittstellenschaltung kann konfiguriert sein zum: Empfangen einer Anfrage zum Zugreifen auf ein Register, das mit einem Merkmal des Prozessors assoziiert ist; Bestimmen, ob der angefragte Zugriff autorisiert ist, zumindest teilweise auf Grundlage eines Eintrags einer Zugriffsstruktur, wobei die Zugriffsstruktur eine Vielzahl von Einträgen speichern soll, die mit einer Vielzahl von Merkmalen des Prozessors assoziiert sind; und in Reaktion auf eine Bestimmung, dass der angefragte Zugriff durch die Zugriffsstruktur autorisiert ist, Durchführen des angefragten Zugriffs auf das Register, das mit dem Merkmal assoziiert ist.
    • In Beispiel 2 kann der Gegenstand des Beispiels 1 wahlweise beinhalten, dass die Registerschnittstellenschaltung konfiguriert ist zum: Identifizieren eines Quellentitätstyps für die Anfrage; Identifizieren eines Zugriffstyps der Anfrage; Bestimmen, ob die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist; und Bestimmen, dass der angefragte Zugriff autorisiert ist, in Reaktion auf eine Bestimmung, dass die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist.
    • In Beispiel 3 kann der Gegenstand der Beispiele 1 und 2 wahlweise beinhalten, dass die Registerschnittstellenschaltung die Anfrage in Reaktion auf eine Bestimmung ablehnen soll, dass die Zugriffsstruktur angibt, dass der Zugriffstyp nicht für den Quellentitätstyp autorisiert ist.
    • In Beispiel 4 kann der Gegenstand der Beispiele 1 bis 3 wahweise beinhalten, dass jeder Eintrag der Zugangsstruktur Folgendes beinhaltet: ein erstes Feld zum Speichern einer Merkmalskennung; ein zweites Feld zum Speichern einer Inband-Lese-Autorisierungseinstellung; ein drittes Feld zum Speichern einer Inband-Schreib-Autorisierungseinstellung; ein viertes Feld zum Speichern einer Außerband-Lese-Autorisierungseinstellung; ein fünftes Feld zum Speichern einer Außerband-Schreib-Autorisierungseinstellung; und ein sechstes Feld zum Speichern einer Sperreinstellung.
    • In Beispiel 5 kann der Gegenstand der Beispiele 1 bis 4 wahlweise beinhalten, dass die Registerschnittstellenschaltung und die Zugriffsstruktur in einer Verwaltungsschaltung des Prozessors enthalten sind, und dass die Verwaltungsschaltung eine Fähigkeitsstruktur zum Identifizieren einer Vielzahl von Fähigkeiten der Verwaltungsschaltung umfasst, wobei die Fähigkeitsstruktur durch Außerband-Softwareentitäten und Inband-Softwareentitäten lesbar ist.
    • In Beispiel 6 kann der Gegenstand der Beispiele 1 bis 5 wahlweise beinhalten, dass die Verwaltungsschaltung eine Merkmalsstruktur zum Identifizieren jedes Merkmals der Vielzahl von Merkmalen beinhaltet, wobei die Merkmalsstruktur durch Außerband-Softwareentitäten und Inband-Softwareentitäten lesbar ist.
    • In Beispiel 7 kann der Gegenstand der Beispiele 1 bis 6 wahlweise beinhalten, dass die Registerschnittstellenschaltung konfiguriert ist zum: Bestimmen eines Orts des Merkmalsregisters unter Verwendung einer Ortsstruktur der Verwaltungsschaltung; und Durchführen des angefragten Zugriffs auf das Merkmalsregister an dem bestimmten Ort.
    • In Beispiel 8 kann der Gegenstand der Beispiele 1 bis 7 wahlweise beinhalten, dass die Ortsstruktur Hardwarekomponenten des Prozessors identifiziert und dass die Ortsstruktur nicht durch Außerband-Softwareentitäten und Inband-Softwareentitäten lesbar ist.
    • In Beispiel 9 kann der Gegenstand der Beispiele 1 bis 8 wahlweise beinhalten, dass die Registerschnittstellenschaltung konfiguriert ist zum: Empfangen einer Konfigurationsanfrage zum Konfigurieren eines jeweiligen Merkmals der Vielzahl von Merkmalen; Bestimmen, ob die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde; in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde, Konfigurieren des jeweiligen Merkmals gemäß der Konfigurationsanfrage; und in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage nicht von der Außerband-Softwareentität gesendet wurde, Ablehnen der Konfigurationsanfrage.
    • In Beispiel 10 beinhaltet ein Verfahren für Registerzugriff: durch eine Registerschnittstellenschaltung eines Prozessors erfolgendes Empfangen einer Anfrage zum Zugreifen auf ein Register, das mit einem ersten Merkmal des Prozessors assoziiert ist; durch die Registerschnittstellenschaltung erfolgendes Bestimmen, ob der angefragte Zugriff autorisiert ist, zumindest teilweise auf Grundlage eines Eintrags einer Zugriffsstruktur, wobei die Zugriffsstruktur eine Vielzahl von Einträgen speichern soll, die mit einer Vielzahl von Merkmalen des Prozessors assoziiert sind; und in Reaktion auf eine Bestimmung, dass der angefragte Zugriff autorisiert ist, durch die Registerschnittstellenschaltung erfolgendes Durchführen des angefragten Zugriffs auf das mit dem ersten Merkmal assoziierte Register.
    • In Beispiel 11 kann der Gegenstand des Beispiels 10 wahlweise Folgendes beinhalten: Identifizieren eines Quellentitätstyps für die Anfrage; Identifizieren eines Zugriffstyps der Anfrage; Bestimmen, ob die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist; und Bestimmen, dass der angefragte Zugriff autorisiert ist, in Reaktion auf eine Bestimmung, dass die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist.
    • In Beispiel 12 kann der Gegenstand der Beispiele 10 und 11 wahlweise Ablehnen der Anfrage in Reaktion auf eine Bestimmung beinhalten, dass die Zugriffsstruktur angibt, dass der Zugriffstyp nicht für den Quellentitätstyp autorisiert ist.
    • In Beispiel 13 kann der Gegenstand der Beispiele 10 bis 12 vor einem Empfang der Anfrage durch die Registerschnittstellenschaltung wahlweise Folgendes beinhalten: Lesen einer Fähigkeitsstruktur einer Verwaltungsschaltung durch eine erste Softwareentität, um zu bestimmen, ob die Verwaltungsschaltung eine Fähigkeit für vereinheitlichte Registerschnittstellen beinhaltet; und in Reaktion auf eine Bestimmung, dass die Verwaltungsschaltung die Fähigkeit für vereinheitlichte Registerschnittstellen beinhaltet, durch die Quellentität erfolgendes Lesen einer Merkmalsstruktur der Verwaltungsschaltung, um eine Vielzahl von Merkmalen zu identifizieren, die durch den Prozessor unterstützt werden.
    • In Beispiel 14 kann der Gegenstand der Beispiele 10 bis 13 wahlweise Folgendes beinhalten: durch die erste Softwareentität erfolgendes Bestimmen, dass das erste Merkmal in der Vielzahl durch den Prozessor unterstützter Merkmale enthalten ist; und in Reaktion auf eine Bestimmung, dass das erste Merkmal in der Vielzahl durch den Prozessor unterstützter Merkmale enthalten ist, durch die erste Softwareentität erfolgendes Senden der Anfrage an die Verwaltungsschaltung, um auf das mit dem ersten Merkmal assoziierte Register zuzugreifen.
    • In Beispiel 15 kann der Gegenstand der Beispiele 10 bis 14 wahlweise Folgendes beinhalten: Empfangen einer Konfigurationsanfrage zum Konfigurieren eines jeweiligen Merkmals der Vielzahl von Merkmalen; Bestimmen, ob die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde; und in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde, Konfigurieren des jeweiligen Merkmals gemäß der Konfigurationsanfrage.
    • In Beispiel 16 kann der Gegenstand der Beispiele 10 bis 15 wahlweise Folgendes beinhalten: Bestimmen eines Orts des Merkmalsregisters auf Grundlage einer Ortsstruktur; und Durchführen des angefragten Zugriffs auf das Merkmalsregister an dem bestimmten Ort.
    • In Beispiel 17 kann eine Datenverarbeitungsvorrichtung einen oder mehrere Prozessoren und einen Speicher mit mehreren darin gespeicherten Anweisungen beinhalten, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, die Datenverarbeitungsvorrichtung veranlassen, das Verfahren aus einem der Beispiele 10 bis 16 durchzuführen.
    • In Beispiel 18 kann ein maschinenlesbares Medium darauf Daten gespeichert haben, die, falls sie von mindestens einer Maschine verwendet werden, die mindestens eine Maschine veranlassen, mindestens eine integrierte Schaltung herzustellen, um ein Verfahren aus einem der Beispiele 10 bis 16 durchzuführen.
    • In Beispiel 19 kann eine elektronische Vorrichtung Mittel zum Ausführen des Verfahrens aus einem der Beispiele 10 bis 16 beinhalten.
    • In Beispiel 20 kann ein System für Registerzugriff einen Prozessor und einen Speicher, der mit dem Prozessor gekoppelt ist, beinhalten. Der Prozessor kann eine Registerschnittstellenschaltung beinhalten zum: Empfangen einer Anfrage zum Zugreifen auf ein Register, das mit einem Merkmal des Prozessors assoziiert ist; Bestimmen, ob der angefragte Zugriff autorisiert ist, zumindest teilweise auf Grundlage eines Eintrags einer Zugriffsstruktur, wobei die Zugriffsstruktur eine Vielzahl von Einträgen speichern soll, die mit einer Vielzahl von Merkmalen des Prozessors assoziiert sind; und in Reaktion auf eine Bestimmung, dass der angefragte Zugriff autorisiert ist, Durchführen des angefragten Zugriffs auf das mit dem Merkmal assoziierte Register.
    • In Beispiel 21 kann der Gegenstand des Beispiels 20 wahlweise beinhalten, dass die Registerschnittstellenschaltung konfiguriert ist zum: Identifizieren eines Quellentitätstyps für die Anfrage; Identifizieren eines Zugriffstyps der Anfrage; Bestimmen, ob die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist; und Bestimmen, dass der angefragte Zugriff autorisiert ist, in Reaktion auf eine Bestimmung, dass die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist.
    • In Beispiel 22 kann der Gegenstand der Beispiele 20 bis 21 wahlweise beinhalten, dass: die Registerschnittstellenschaltung und die Zugriffsstruktur in einer Verwaltungsschaltung des Prozessors enthalten sind, die Verwaltungsschaltung eine Merkmalsstruktur und eine Ortsstruktur beinhaltet, die Merkmalsstruktur lesbar ist, um jedes Merkmal der Vielzahl von Merkmalen zu identifizieren, und die Registerschnittstellenschaltung einen Ort des Merkmalsregisters unter Verwendung der Ortsstruktur bestimmen soll.
    • In Beispiel 23 kann der Gegenstand der Beispiele 20 bis 22 wahlweise beinhalten, dass die Registerschnittstellenschaltung konfiguriert ist zum: Empfangen einer Konfigurationsanfrage zum Konfigurieren eines jeweiligen Merkmals der Vielzahl von Merkmalen; Bestimmen, ob die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde; in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde, Konfigurieren des jeweiligen Merkmals gemäß der Konfigurationsanfrage; und in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage nicht von der Außerband-Softwareentität gesendet wurde, Ablehnen der Konfigurationsanfrage.
    • In Beispiel 24 kann eine Einrichtung für Registerzugriff Folgendes beinhalten: Mittel zum Empfangen einer Anfrage zum Zugreifen auf ein Register, das mit einem ersten Merkmal eines Prozessors assoziiert ist; Mittel zum Bestimmen, ob der angefragte Zugriff autorisiert ist, zumindest teilweise auf Grundlage eines Eintrags einer Zugriffsstruktur, wobei die Zugriffsstruktur eine Vielzahl von Einträgen speichern soll, die mit einer Vielzahl von Merkmalen des Prozessors assoziiert sind; und Mittel zum in Reaktion auf eine Bestimmung, dass der angefragte Zugriff autorisiert ist, erfolgenden Durchführen des angefragten Zugriffs auf das mit dem ersten Merkmal assoziierte Register.
    • In Beispiel 25 kann der Gegenstand des Beispiels 24 wahlweise Folgendes beinhalten: Mittel zum Identifizieren eines Quellentitätstyps für die Anfrage; Mittel zum Identifizieren eines Zugriffstyps der Anfrage; Mittel zum Bestimmen, ob die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist; und Mittel zum Bestimmen, dass der angefragte Zugriff autorisiert ist, in Reaktion auf eine Bestimmung, dass die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist.
    • In Beispiel 26 kann der Gegenstand der Beispiele 24 und 25 wahlweise Mittel zum Ablehnen der Anfrage in Reaktion auf eine Bestimmung beinhalten, dass die Zugriffsstruktur angibt, dass der Zugriffstyp nicht für den Quellentitätstyp autorisiert ist.
    • In Beispiel 27 kann der Gegenstand der Beispiele 24 bis 26 wahlweise Folgendes beinhalten: Mittel zum Lesen einer Fähigkeitsstruktur einer Verwaltungsschaltung, um zu bestimmen, ob die Verwaltungsschaltung eine Fähigkeit für vereinheitlichte Registerschnittstellen beinhaltet; und Mittel zum in Reaktion auf eine Bestimmung, dass die Verwaltungsschaltung die Fähigkeit für vereinheitlichte Registerschnittstellen beinhaltet, erfolgenden Lesen einer Merkmalsstruktur der Verwaltungsschaltung, um eine Vielzahl durch den Prozessor unterstützter Merkmale zu identifizieren.
    • In Beispiel 28 kann der Gegenstand der Beispiele 24 bis 27 wahlweise Folgendes beinhalten: Mittel zum Bestimmen, dass das erste Merkmal in der Vielzahl durch den Prozessor unterstützter Merkmale enthalten ist; und Mittel zum in Reaktion auf eine Bestimmung, dass das erste Merkmal in der Vielzahl durch den Prozessor unterstützter Merkmale enthalten ist, erfolgenden Senden der Anfrage an die Verwaltungsschaltung, um auf das mit dem ersten Merkmal assoziierte Register zuzugreifen.
    • In Beispiel 29 kann der Gegenstand der Beispiele 24 bis 28 wahlweise Folgendes beinhalten: Mittel zum Empfangen einer Konfigurationsanfrage zum Konfigurieren eines jeweiligen Merkmals der Vielzahl von Merkmalen; Mittel zum Bestimmen, ob die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde; und Mittel zum in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde, erfolgenden Konfigurieren des jeweiligen Merkmals gemäß der Konfigurationsanfrage.
    • In Beispiel 30 kann der Gegenstand der Beispiele 24 bis 29 wahlweise Folgendes beinhalten: Mittel zum Bestimmen eines Orts des Merkmalsregisters auf Grundlage einer Ortsstruktur; und Mittel zum Durchführen des angefragten Zugriffs auf das Merkmalsregister an dem bestimmten Ort.
  • Gemäß einer oder mehreren Ausführungsformen kann ein Prozessor eine vereinheitlichte Registerschnittstelle beinhalten, um Zugriff auf Prozessormerkmale bereitzustellen. Die vereinheitlichte Registerschnittstelle kann in Schnittstellenschaltungsanordnungen und Datenstrukturen implementiert sein, die in dem Prozessor enthalten sind. In einigen Ausführungsformen kann die Schnittstellenschaltungsanordnung eine Anfrage nach Zugriff auf ein Register empfangen, das mit einem Prozessormerkmal assoziiert ist, und kann bestimmen, ob der angefragte Zugriff durch eine Zugriffsstruktur autorisiert ist. Falls ja, kann die Schnittstellenschaltungsanordnung eine Ortsstruktur verwenden, um den angefragten Zugriff auf das Register durchzuführen. In einigen Ausführungsformen kann die vereinheitlichte Registerschnittstelle eine einzige Schnittstelle für alle Software-Interaktionen bieten, einschließlich Erkennungsinteraktionen, Merkmalsaufzählung, Merkmalskonfiguration und Register-Lese-/Schreibzugriff. Ferner kann die vereinheitlichte Registerschnittstelle Konsistenz der Registerschnittstelle über eine beliebige Anzahl von Prozessortypen und Revisionen/Aktualisierungen hinweg bereitstellen. Die vereinheitlichte Registerschnittstelle kann zudem hierarchische Leistungsverwaltung und Die-Disaggregation unterstützen und kann mit Prozessorgestaltungsauswahlen (z.B. Anzahl von Chips/Dies, Anzahl von Verarbeitungs-Engines usw.) kompatibel sein. Des Weiteren kann die vereinheitlichte Registerschnittstelle Architekturdetails vor nicht autorisierten Entitäten verschleiern und kann ermöglichen, dass unterschiedliche Arten von Softwareentitäten (z.B. Außerband-Entitäten und Inband-Entitäten) unterschiedliche Steuerebenen über spezifische Merkmale aufweisen. Dementsprechend kann die vereinheitlichte Registerschnittstelle eine einheitliche, skalierbare und erweiterbare Registerarchitektur bereitstellen und kann zudem relativ niedrige Betriebskosten gewährleisten.
  • Es ist zu beachten, dass 26-34 zwar verschiedene beispielhafte Implementierungen zeigen, aber auch andere Varianten möglich sind. Es ist beispielsweise denkbar, dass eine oder mehrere Ausführungsformen in den Beispielvorrichtungen und -systemen implementiert werden, die unter Bezugnahme auf 1-25 beschrieben werden. Es ist zu beachten, dass die in 1-34 gezeigten Beispiele nur der Veranschaulichung dienen und nicht dazu gedacht sind, irgendwelche Ausführungsformen einzuschränken. Wenngleich Ausführungsformen der Klarheit halber in vereinfachter Form gezeigt sein können, so können Ausführungsformen eine beliebige Anzahl und/oder Anordnung von Komponenten beinhalten. Es ist beispielsweise denkbar, dass einige Ausführungsformen eine beliebige Anzahl von Komponenten zusätzlich zu den gezeigten beinhalten und dass bei bestimmten Implementierungen eine unterschiedliche Anordnung der gezeigten Komponenten auftreten kann. Darüber hinaus ist zu bedenken, dass die Besonderheiten der in 1-34 ü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. In einer Ausführungsform kann zum Beispiel eine Kommunikationsvorrichtung angeordnet sein, um die verschiedenen hierin 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 Anweisungen oder auf ein oder mehrere maschinenlesbare Medien gerichtet sein, umfassend Anweisungen, die in 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 Patentschrift bedeuten Verweise auf „eine Ausführungsform“ durchweg, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Implementierung enthalten ist, die in der vorliegenden Offenbarung eingeschlossen ist. Daher bezieht sich die Formulierung „eine Ausführungsform“ oder „in einer Ausführungsform“ nicht notwendigerweise auf dieselbe 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. Die beiliegenden Ansprüche sollen alle diese Abwandlungen und Variationen, die dem Grundgedanken und Schutzumfang dieser vorliegenden Erfindung entsprechen, abdecken.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI [0061]
    • ambient light sensor, ALS) 1442 [0087]
    • Speicher und E/A-Steuerlogik („CL“, control logic) 1571 bzw. 1581 [0097]
    • Intel® 64 und IA-32 Architectures Software Developer's Manual, September 2014 [0103]
    • Intel® Advanced Vector Extensions Programming Reference, Oktober 2014 [0103]
    • MIPS Technologies von Sunnyvale, CA, [0181]
    • zusätzlichen Erweiterungen wie NEON) von ARM Holdings von Sunnyvale, CA, USA [0181]

Claims (10)

  1. Prozessor, umfassend: mindestens eine Verarbeitungs-Engine zum Ausführen von Anweisungen; und eine Registerschnittstellenschaltung, die mit der mindestens einen Verarbeitungs-Engine gekoppelt ist, wobei die Registerschnittstellenschaltung konfiguriert ist zum: Empfangen einer Anfrage zum Zugreifen auf ein mit einem Merkmal des Prozessors assoziiertes Register; Bestimmen, ob der angefragte Zugriff autorisiert ist, zumindest teilweise auf Grundlage eines Eintrags einer Zugriffsstruktur, wobei die Zugriffsstruktur eine Vielzahl von Einträgen speichern soll, die mit einer Vielzahl von Merkmalen des Prozessors assoziiert sind; und in Reaktion auf eine Bestimmung, dass der angefragte Zugriff durch die Zugriffsstruktur autorisiert ist, Durchführen des angefragten Zugriffs auf das mit dem Merkmal assoziierte Register.
  2. Prozessor nach Anspruch 1, wobei die Registerschnittstellenschaltung konfiguriert ist zum: Identifizieren eines Quellentitätstyps für die Anfrage; Identifizieren eines Zugriffstyps der Anfrage; Bestimmen, ob die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist; und Bestimmen, dass der angefragte Zugriff autorisiert ist, in Reaktion auf eine Bestimmung, dass die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist; wobei wahlweise die Registerschnittstellenschaltung die Anfrage in Reaktion auf eine Bestimmung ablehnen soll, dass die Zugriffsstruktur angibt, dass der Zugriffstyp nicht für den Quellentitätstyp autorisiert ist.
  3. Prozessor nach einem der Ansprüche 1 oder 2, wobei jeder Eintrag der Zugriffsstruktur umfasst: ein erstes Feld zum Speichern einer Merkmalskennung; ein zweites Feld zum Speichern einer Inband-Lese-Autorisierungseinstellung; ein drittes Feld zum Speichern einer Inband-Schreib-Autorisierungseinstellung; ein viertes Feld zum Speichern einer Außerband-Lese-Autorisierungseinstellung; ein fünftes Feld zum Speichern einer Außerband-Schreib-Autorisierungseinstellung; und ein sechstes Feld zum Speichern einer Sperreinstellung; und/oder wobei die Registerschnittstellenschaltung und die Zugriffsstruktur in einer Verwaltungsschaltung des Prozessors enthalten sind und wobei die Verwaltungsschaltung eine Fähigkeitsstruktur zum Identifizieren einer Vielzahl von Fähigkeiten der Verwaltungsschaltung umfasst, wobei die Fähigkeitsstruktur durch Außerband-Softwareentitäten und Inband-Softwareentitäten lesbar ist; wobei die Verwaltungsschaltung wahlweise ferner eine Merkmalsstruktur zum Identifizieren jedes Merkmals der Vielzahl von Merkmalen umfasst, wobei die Merkmalsstruktur durch Außerband-Softwareentitäten und Inband-Softwareentitäten lesbar ist; und/oder
  4. Prozessor nach Anspruch 3, wobei die Registerschnittstellenschaltung konfiguriert ist zum: Bestimmen eines Orts des Merkmalsregisters unter Verwendung einer Ortsstruktur der Verwaltungsschaltung; und Durchführen des angefragten Zugriffs auf das Merkmalsregister an dem bestimmten Ort; wobei wahlweise die Ortsstruktur Hardwarekomponenten des Prozessors identifiziert und wobei die Ortsstruktur nicht durch Außerband-Softwareentitäten und Inband-Softwareentitäten lesbar ist; und/oder wobei die Registerschnittstellenschaltung konfiguriert ist zum: Empfangen einer Konfigurationsanfrage zum Konfigurieren eines jeweiligen Merkmals der Vielzahl von Merkmalen; Bestimmen, ob die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde; in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage durch eine Außerband-Softwareentität gesendet wurde, Konfigurieren des jeweiligen Merkmals gemäß der Konfigurationsanfrage; und in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage nicht durch die Außerband-Softwareentität gesendet wurde, Ablehnen der Konfigurationsanfrage.
  5. Verfahren, umfassend: durch eine Registerschnittstellenschaltung eines Prozessors erfolgendes Empfangen einer Anfrage zum Zugreifen auf ein mit einem ersten Merkmal des Prozessors assoziiertes Register; durch die Registerschnittstellenschaltung erfolgendes Bestimmen, ob der angefragte Zugriff autorisiert ist, zumindest teilweise auf Grundlage eines Eintrags einer Zugriffsstruktur, wobei die Zugriffsstruktur eine Vielzahl von Einträgen speichern soll, die mit einer Vielzahl von Merkmalen des Prozessors assoziiert sind; und in Reaktion auf eine Bestimmung, dass der angefragte Zugriff autorisiert ist, durch die Registerschnittstellenschaltung erfolgendes Durchführen des angefragten Zugriffs auf das mit dem ersten Merkmal assoziierte Register; wobei das Verfahren wahlweise ferner umfasst: Identifizieren eines Quellentitätstyps für die Anfrage; Identifizieren eines Zugriffstyps der Anfrage; Bestimmen, ob die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist; und Bestimmen, dass der angefragte Zugriff autorisiert ist, in Reaktion auf eine Bestimmung, dass die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist.
  6. Verfahren nach Anspruch 5, umfassend: Ablehnen der Anfrage in Reaktion auf eine Bestimmung, dass die Zugriffsstruktur angibt, dass der Zugriffstyp nicht für den Quellentitätstyp autorisiert ist; und/oder wobei das Verfahren ferner vor einem Empfang der Anfrage durch die Registerschnittstellenschaltung umfasst: durch eine erste Softwareentität erfolgendes Lesen einer Fähigkeitsstruktur einer Verwaltungsschaltung, um zu bestimmen, ob die Verwaltungsschaltung eine Fähigkeit für vereinheitlichte Registerschnittstellen beinhaltet; und in Reaktion auf eine Bestimmung, dass die Verwaltungsschaltung die Fähigkeit für vereinheitlichte Registerschnittstellen beinhaltet, durch die Quellentität erfolgendes Lesen einer Merkmalsstruktur der Verwaltungsschaltung, um eine Vielzahl durch den Prozessor unterstützter Merkmale zu identifizieren; wobei das Verfahren wahlweise ferner umfasst: durch die erste Softwareentität erfolgendes Bestimmen, dass das erste Merkmal in der Vielzahl durch den Prozessor unterstützter Merkmale enthalten ist; und in Reaktion auf eine Bestimmung, dass das erste Merkmal in der Vielzahl durch den Prozessor unterstützter Merkmale enthalten ist, durch die erste Softwareentität erfolgendes Senden der Anfrage an die Verwaltungsschaltung, um auf das mit dem ersten Merkmal assoziierte Register zuzugreifen. wobei das Verfahren wahlweise ferner umfasst: Empfangen einer Konfigurationsanfrage zum Konfigurieren eines jeweiligen Merkmals der Vielzahl von Merkmalen; Bestimmen, ob die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde; in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage durch eine Außerband-Softwareentität gesendet wurde, Konfigurieren des jeweiligen Merkmals gemäß der Konfigurationsanfrage; und/oder wobei das Verfahren ferner Bestimmen eines Orts des Merkmalsregisters auf Grundlage einer Ortsstruktur; und Durchführen des angefragten Zugriffs auf das Merkmalsregister an dem bestimmten Ort umfasst.
  7. Datenverarbeitungsvorrichtung, umfassend: einen oder mehrere Prozessoren; und einen Speicher mit einer Vielzahl darin gespeicherter Anweisungen, die bei Ausführung durch den Prozessor die Datenverarbeitungsvorrichtung zum Durchführen des Verfahrens nach einem der Ansprüche 5 oder 6 veranlassen.
  8. Maschinenlesbares Medium, auf dem Daten gespeichert sind, die, wenn sie von mindestens einer Maschine verwendet werden, die mindestens eine Maschine veranlassen, mindestens eine integrierte Schaltung herzustellen, um ein Verfahren nach einem der Ansprüche 5 oder 6 durchzuführen.
  9. Elektronische Vorrichtung, die Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 5 oder 6 umfasst.
  10. System, umfassend: einen Prozessor, der eine Registerschnittstellenschaltung umfasst, wobei die Registerschnittstellenschaltung konfiguriert ist zum: Empfangen einer Anfrage zum Zugreifen auf ein mit einem Merkmal des Prozessors assoziiertes Register; Bestimmen, ob der angefragte Zugriff autorisiert ist, zumindest teilweise auf Grundlage eines Eintrags einer Zugriffsstruktur, wobei die Zugriffsstruktur eine Vielzahl von Einträgen speichern soll, die mit einer Vielzahl von Merkmalen des Prozessors assoziiert sind; und in Reaktion auf eine Bestimmung, dass der angefragte Zugriff autorisiert ist, Durchführen des angefragten Zugriffs auf das mit dem Merkmal assoziierte Register; und einen Speicher, der mit dem Prozessor gekoppelt ist; wobei wahlweise die Registerschnittstellenschaltung konfiguriert ist zum: Identifizieren eines Quellentitätstyps für die Anfrage; Identifizieren eines Zugriffstyps der Anfrage; Bestimmen, ob die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist; und Bestimmen, dass der angefragte Zugriff autorisiert ist, in Reaktion auf eine Bestimmung, dass die Zugriffsstruktur angibt, dass der Zugriffstyp für den Quellentitätstyp autorisiert ist; und/oder wobei wahlweise die Registerschnittstellenschaltung und die Zugriffsstruktur in einer Verwaltungsschaltung des Prozessors enthalten sind, wobei die Verwaltungsschaltung ferner eine Merkmalsstruktur und eine Ortsstruktur umfasst, wobei die Merkmalsstruktur lesbar ist, um jedes Merkmal der Vielzahl von Merkmalen zu identifizieren, und wobei die Registerschnittstellenschaltung einen Ort des Merkmalsregisters unter Verwendung der Ortsstruktur bestimmen soll; wobei ferner wahlweise die Registerschnittstellenschaltung konfiguriert ist zum: Empfangen einer Konfigurationsanfrage zum Konfigurieren eines jeweiligen Merkmals der Vielzahl von Merkmalen; Bestimmen, ob die Konfigurationsanfrage von einer Außerband-Softwareentität gesendet wurde; in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage durch eine Außerband-Softwareentität gesendet wurde, Konfigurieren des jeweiligen Merkmals gemäß der Konfigurationsanfrage; und in Reaktion auf eine Bestimmung, dass die Konfigurationsanfrage nicht durch die Außerband-Softwareentität gesendet wurde, Ablehnen der Konfigurationsanfrage.
DE102022130598.8A 2021-12-20 2022-11-18 Registerschnittstelle für computerprozessor Pending DE102022130598A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/645,070 US20230195918A1 (en) 2021-12-20 2021-12-20 Register interface for computer processor
US17/645,070 2021-12-20

Publications (1)

Publication Number Publication Date
DE102022130598A1 true DE102022130598A1 (de) 2023-06-22

Family

ID=86606214

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022130598.8A Pending DE102022130598A1 (de) 2021-12-20 2022-11-18 Registerschnittstelle für computerprozessor

Country Status (3)

Country Link
US (1) US20230195918A1 (de)
CN (1) CN116303210A (de)
DE (1) DE102022130598A1 (de)

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
ambient light sensor, ALS) 1442
Intel® 64 und IA-32 Architectures Software Developer's Manual, September 2014
Intel® Advanced Vector Extensions Programming Reference, Oktober 2014
MIPS Technologies von Sunnyvale, CA,
PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI
Speicher und E/A-Steuerlogik („CL", control logic) 1571 bzw. 1581
zusätzlichen Erweiterungen wie NEON) von ARM Holdings von Sunnyvale, CA, USA

Also Published As

Publication number Publication date
US20230195918A1 (en) 2023-06-22
CN116303210A (zh) 2023-06-23

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
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE112016004776T5 (de) Datenkomprimierung unter Verwendung eines Beschleunigers mit mehreren Suchmaschinen
EP3547116B1 (de) Verzweigungsvorhersage basierend auf kohärenzoperationen in prozessoren
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
DE112018004329T5 (de) Steuerblöcke zur prozessorleistungsverwaltung
EP3674847B1 (de) Steuerung der leistungszustandseinschränkung in einem prozessor
DE112017005000T5 (de) Prozessorspannungssteuerung unter verwendung eines beweglichen mittelwerts
DE112017004991T5 (de) Ausgleichssteuerung für variable energieschienen
US20210064110A1 (en) Control blocks for processor power management
DE102022121048A1 (de) Auswahl der leistungsversorgung für ein hostsystem
DE112013007703T5 (de) Befehl und Logik zum Kennzeichnen von Befehlen zur Rückordnung in einem mehrsträngigen Out-of-order-Prozessor
US20200004584A1 (en) Hardware Queue Manager for Scheduling Requests in a Processor
DE102018114958A1 (de) Validieren eines Abbilds für eine umkonfigurierbare Vorrichtung
EP4155914A1 (de) Cachespeicherung basierend auf verzweigungsbefehlen in einem prozessor
US20230100693A1 (en) Prediction of next taken branches in a processor
DE102018001896A1 (de) Hardwarebeschleuniger für das Auswählen von Datenelementen
DE102022130598A1 (de) Registerschnittstelle für computerprozessor
US10796626B2 (en) Expanded refresh rates for a display service
DE102022121054A1 (de) Gating eines mesh-taktsignals in einem prozessor
US20240111598A1 (en) Sequencing circuit for a processor
US20220101478A1 (en) Configuration profiles for graphics processing unit