DE102018114958A1 - Validieren eines Abbilds für eine umkonfigurierbare Vorrichtung - Google Patents

Validieren eines Abbilds für eine umkonfigurierbare Vorrichtung Download PDF

Info

Publication number
DE102018114958A1
DE102018114958A1 DE102018114958.1A DE102018114958A DE102018114958A1 DE 102018114958 A1 DE102018114958 A1 DE 102018114958A1 DE 102018114958 A DE102018114958 A DE 102018114958A DE 102018114958 A1 DE102018114958 A1 DE 102018114958A1
Authority
DE
Germany
Prior art keywords
image
reconfiguration
policy
validator
interface
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
DE102018114958.1A
Other languages
English (en)
Inventor
Joshua D. Fender
Utkarsh Y. Kakaiya
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 DE102018114958A1 publication Critical patent/DE102018114958A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17768Structural details of configuration resources for security
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17764Structural details of configuration resources for reliability

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)

Abstract

Eine Vorrichtung enthält eine umkonfigurierbare Schaltung und Umkonfigurationslogik. Die Umkonfigurationslogik ist zu Folgendem ausgelegt: Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie über eine Richtlinienschnittstelle; Empfangen eines ersten Umkonfigurationsabbilds über eine erste Konfigurationsschnittstelle mehrerer Konfigurationsschnittstellen; Validieren der ersten Konfigurationsschnittstelle basierend auf der Anwenderrichtlinie; Validieren des ersten Umkonfigurationsabbilds basierend auf der Abbildrichtlinie; und als Antwort auf eine Bestimmung, dass die erste Konfigurationsschnittstelle und das erste Umkonfigurationsabbild beide gültig sind, Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des ersten Umkonfigurationsabbilds.

Description

  • Gebiet der Erfindung
  • Ausführungsformen beziehen sich auf umkonfigurierbare Vorrichtungen.
  • Hintergrund
  • Einige integrierte Schaltungen können dazu ausgelegt sein, nach der Herstellung von einem Anwender konfiguriert zu werden. Zum Beispiel kann eine feldprogrammierbare Gatteranordnung (FPGA) eine Anordnung programmierbarer Logikelemente umfassen, die in verschiedenen Konfigurationen miteinander verschaltet werden können. Durch Ändern solcher Verschaltungen kann die FPGA dazu konfiguriert werden, verschiedene unterschiedliche Verarbeitungsaufgaben (z. B. digitale Signalverarbeitung, Videoanimation, Paketverarbeitung etc.) durchzuführen.
  • Figurenliste
    • 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 weiteren Ausführungsform der vorliegenden Erfindung.
    • 4 ist eine Ausführungsform eines Prozessors mit mehreren Kernen.
    • 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 weiteren Ausführungsform.
    • 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform.
    • 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform.
    • 9 ist ein Blockdiagramm eines Prozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
    • 10 ist ein Blockdiagramm eines repräsentativen SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 11 ist ein Blockdiagramm eines weiteren beispielhaften SoC gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 13 ist ein Blockdiagramm eines weiteren beispielhaften Systems, mit dem Ausführungsformen verwendet werden können.
    • 14 ist ein Blockdiagramm eines repräsentativen Computersystems.
    • 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 16 ist ein Blockdiagramm, das ein IP-Kern-Entwicklungssystem zeigt, das dazu verwendet wird, eine integrierte Schaltung zum Durchführen von Operationen gemäß einer Ausführungsform herzustellen.
    • 17 ist eine Darstellung eines beispielhaften Systems gemäß einer oder mehreren Ausführungsformen.
    • 18A ist eine Darstellung einer beispielhaften Umkonfigurationslogik gemäß einer oder mehreren Ausführungsformen.
    • 18B ist eine Darstellung einer beispielhaften Umkonfigurationslogik gemäß einer oder mehreren Ausführungsformen.
    • 18C ist eine Darstellung einer beispielhaften Umkonfigurationslogik gemäß einer oder mehreren Ausführungsformen.
    • 18D ist eine Darstellung einer beispielhaften Umkonfigurationslogik gemäß einer oder mehreren Ausführungsformen.
    • 19 ist ein Ablaufdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
    • 20 ist ein Ablaufdiagramm eines beispielhaften Verfahrens gemäß einer oder mehreren Ausführungsformen.
  • Genaue Beschreibung
  • Manche Datenzentren können Rechenbetriebsmittel mit mehreren Clients teilen. Zum Beispiel kann es ein Cloud-Dienstanbieter mehreren Clients ermöglichen, den Speicher und die Rechenbetriebsmittel eines einzigen Servers gemeinsam zu nutzen. Solche Rechenbetriebsmittel können umkonfigurierbare Schaltungen umfassen. Wie hierin verwendet bezieht sich „umkonfigurierbare Schaltung“ auf eine Schaltung, in der Verschaltungen zwischen Logikelementen gemäß einer Datenspezifikation oder einem „Abbild“ umkonfiguriert werden können. Zum Beispiel ist eine feldprogrammierbare Gatteranordnung (FPGA) ein Typ einer umkonfigurierbaren Schaltung. Die gemeinsame Nutzung einer umkonfigurierbaren Schaltung kann allerdings zu möglichen Schäden an Daten und Hardware führen. Zum Beispiel könnte ein böswilliger Anwender eine FPGA umkonfigurieren, um sensitive Daten von anderen Anwendern des Datenzentrums zu stehlen. In einem weiteren Beispiel könnte die FPGA so umkonfiguriert werden, dass sie sich wiederholende Aufgaben solange durchführt, bis ein Überhitzungsereignis auftritt und dabei Schäden an den Hardwarebetriebsmitteln verursacht werden.
  • Gemäß einer oder mehreren Ausführungsformen kann eine umkonfigurierbare Vorrichtung einer Anwenderrichtlinie und einer Abbildrichtlinie zugeordnet sein. Die Anwenderrichtlinie kann eine Anwenderentität und/oder eine Konfigurationsschnittstelle definieren, der es erlaubt ist, Umkonfigurationsabbilder für die Vorrichtung zu liefern. Die Abbildrichtlinie kann valide Umkonfigurationsabbilder für die Vorrichtung definieren. In einigen Ausführungsformen kann die Umkonfigurationslogik die Anwenderrichtlinie und die Abbildrichtlinie zum Steuern von Umkonfigurationen der Vorrichtung verwenden. Dementsprechend kann das Risiko von Schäden, die der umkonfigurierbaren Vorrichtung im Zusammenhang stehen, reduziert werden. Ferner kann die Umkonfigurationslogik in einigen Ausführungsformen eine virtualisierte Umkonfiguration der Vorrichtung bereitstellen. Wie hierin verwendet bezieht sich der Begriff „virtualisierte Umkonfiguration“ auf eine Umkonfiguration unter Verwendung einer Abstraktionsschicht zwischen der umkonfigurierbaren Vorrichtung und mehreren Anwenderentitäten, so dass jede Anwenderentität dieselbe Vorrichtung separat und sicher umkonfigurieren kann. Beispiele einiger Ausführungsformen sind unten unter Bezugnahme auf 17-20 beschrieben.
  • Unter Bezugnahme auf 1 wird nun ein Blockdiagramm eines Abschnitts eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung aufgezeigt. Wie in 1 gezeigt kann das System 100 verschiedene Komponenten umfassen, einschließlich eines Prozessors 110, der wie gezeigt ein Mehrkernprozessor ist. Der Prozessor 110 kann mit einer Leistungsversorgung 150 über einen externen Spannungsregler 160 gekoppelt sein, der eine erste Spannungsumsetzung durchführen kann, um dem Prozessor 110 eine primäre geregelte Spannung Vreg zu liefern.
  • Wie ersichtlich kann der Prozessor 110 ein Ein-Chip-Prozessor sein, der mehrere Kerne 120a - 120n umfasst. Zusätzlich kann jeder Kern einem integrierten Spannungsregler (IVR) 125a - 125n zugeordnet sein, der die primäre geregelte Spannung empfängt und eine Betriebsspannung erzeugt, die an den einen oder die mehreren dem IVR zugeordneten Agenten des Prozessors geliefert werden soll. Dementsprechend kann eine IVR-Implementierung bereitgestellt werden, um eine genaue Steuerung der Spannung und somit der Leistungsaufnahme und der Rechenleistung jedes einzelnen Kerns zu ermöglichen. Somit kann jeder Kern bei einer unabhängigen Spannung und Frequenz arbeiten, wodurch große Flexibilität ermöglicht wird und vielfältige Möglichkeiten zum Ausbalancieren der Leistungsaufnahme mit der Rechenleistung eröffnet werden. In einigen Ausführungsformen ermöglicht die Verwendung mehrerer IVRs das Gruppieren von Komponenten in separate Leistungsebenen, so dass die Leistung durch den IVR nur für diese Komponenten in der Gruppe geliefert und geregelt wird. Während des Leistungsmanagements kann eine bestimmte Leistungsebene eines IVR heruntergefahren werden oder ausgeschaltet werden, wenn der Prozessor in einen bestimmten Niederleistungszustand versetzt wird, während eine weitere Leistungsebene eines anderen IVR aktiv bleibt oder voll mit Leistung versorgt wird. Ebenso können die Kerne 120 unabhängige Takterzeugungsschaltungen wie eine oder mehrere Phasenregelschleifen (PLL) umfassen oder diesen zugeordnet sein, um die 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-/Ausgabeschnittstelle (IF) 132, einer weiteren Schnittstelle 134 und eines integrierten Speichercontrollers (IMC) 136. Wie gezeigt kann jede dieser Komponenten von einem anderen integrierten Spannungsregler 125X mit Leistung versorgt werden. In einer Ausführungsform kann die Schnittstelle 132 den Betrieb für eine Intel®-Quick-Path-Interconnect-Zwischenverbindung ermöglichen, die Punkt-zu-Punkt-Verknüpfungen (PtP-Verknüpfungen) in einem cachekohärenten Protokoll bereitstellt, das mehrere Schichten, die eine Bitübertragungsschicht, eine Verbindungsschicht und eine Protokollschicht umfassen, umfasst. Die Schnittstelle 134 kann wiederum über ein Express-Peripheriekomponenten-Zwischenverbindungs-Protokoll (PCIe™-Protokoll) kommunizieren.
  • Ebenso ist eine Leistungssteuereinheit (PCU) 138 gezeigt, die eine Schaltungsanordnung umfassen kann, die Hardware, Software und/oder Firmware umfasst, um Leistungsmanagementaufgaben in Bezug auf den Prozessor 110 durchzuführen. Wie gezeigt liefert die PCU 138 Steuerinformationen über eine digitale Schnittstelle 162 an den externen Spannungsregler 160, um den Spannungsregler dazu zu veranlassen, die geeignete geregelte Spannung zu erzeugen. Die PCU 138 liefert zudem Steuerinformationen über eine weitere digitale Schnittstelle 163 an den IVR 125, um die erzeugte Betriebsspannung zu steuern (oder um zu veranlassen, dass ein entsprechender IVR in einem Niederleistungsmodus ausgeschaltet ist). In verschiedenen Ausführungsformen kann die PCU 138 eine Vielfalt von Leistungsmanagement-Logikeinheiten aufweisen, um hardwarebasiertes Leistungsmanagement durchzuführen. Ein solches Leistungsmanagement kann gänzlich prozessorgesteuert sein (z. B. durch verschiedene Prozessorhardware, und was durch Arbeitslast und/oder Leistungs-, Wärme- oder andere Prozessorbeschränkungen ausgelöst werden kann) und/oder das Leistungsmanagement kann als Antwort auf externe Quellen (wie etwa eine Plattform oder eine Leistungsmanagementquelle oder Systemsoftware) durchgeführt werden.
  • In 1 ist die PCU 138 als eine separate Logik des Prozessors vorliegend gezeigt. In anderen Fällen kann die PCU 138 auf einem bestimmten oder mehreren Kernen 120 ausgeführt werden. In einigen Fällen kann die PCU 138 als (Spezial- oder Allzweck-)Mikrocontroller oder eine andere Steuerlogik implementiert sein, die dazu ausgelegt ist, ihren eigenen speziellen Leistungsmanagementcode, der manchmal als P-Code bezeichnet wird, auszuführen. In wieder anderen Ausführungsformen können Leistungsmanagementaufgaben, die durch die PCU 138 durchgeführt werden sollen, außerhalb eines Prozessors implementiert sein, beispielsweise durch eine separate integrierte Leistungsmanagementschaltung (PMIC) oder eine weitere Komponente, die außerhalb des Prozessors liegt. In wieder anderen Ausführungsformen können Leistungsmanagementaufgaben, die durch die PCU 138 durchgeführt werden sollen, innerhalb des BIOS oder einer anderen Systemsoftware implementiert sein.
  • Obwohl dies in 1 nicht gezeigt ist, können in einigen Ausführungsformen der Prozessor 110 und/oder ein Kern 120 die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Ausführungsformen können insbesondere für einen Mehrkernprozessor geeignet sein, bei dem jeder der mehreren Kerne an einem unabhängigen Spannungs- und Frequenzpunkt arbeiten kann. Wie hier eingesetzt wird der Ausdruck „Domäne“ verwendet, um eine Sammlung von Hardware und/oder Logik zu bezeichnen, die an dem gleichen Spannungs- und Frequenzpunkt arbeitet. Zusätzlich kann ein Mehrkernprozessor ferner andere Nicht-Kern-Verarbeitungsmaschinen wie z. B. Einheiten mit fester Funktion, Grafikmaschinen usw. enthalten. Ein solcher Prozessor kann andere Domänen als die Kerne enthalten, wie beispielsweise eine oder mehrere mit einer Grafikmaschine zugeordnete Domänen (hier als Grafikdomäne bezeichnet) und eine oder mehrere mit Nicht-Kern-Schaltungen verbundene Domänen, die hier als Uncore (Unkern) oder Systemagent bezeichnet werden. Obwohl viele Implementierungen eines Mehrdomänenprozessors auf einem einzelnen Halbleiterchip ausgebildet sein können, können andere Implementierungen durch eine Mehrchipbaugruppe verwirklicht werden, bei der verschiedene Domänen auf unterschiedlichen Halbleiterchips einer einzelnen Baugruppe vorhanden sein können.
  • Obwohl es zur Vereinfachung der Darstellung nicht gezeigt ist, versteht es sich, dass zusätzliche Komponenten wie etwa Uncore-Logik und andere Komponenten wie etwa interne Speicher innerhalb des Prozessors 110 vorhanden sein können, z. B. eine oder mehrere Ebenen einer Cachespeicherhierarchie und so weiter. Obwohl sie in der Implementierung von 1 mit einem integrierten Spannungsregler gezeigt sind, sind Ausführungsformen zudem nicht darauf beschränkt. Zum Beispiel können andere geregelte Spannungen von einem externen Spannungsregler 160 oder einer oder mehreren zusätzlichen externen Quellen von geregelten Spannungen an die chipinternen Betriebsmittel geliefert werden.
  • Es ist zu beachten, dass die hierin beschriebenen Leistungsmanagementtechniken unabhängig von und komplementär zu einem auf einem Betriebssystem (OS) basierten Leistungsmanagement-Mechanismus (OSPM-Mechanismus) sein können. Gemäß einer beispielhaften OSPM-Technik kann ein Prozessor in verschiedenen Rechenleistungszuständen oder Niveaus, sogenannten P-Zuständen, nämlich von PO bis PN, arbeiten. Im Allgemeinen kann der P1-Rechenleistungszustand dem höchsten garantierten Rechenleistungszustand entsprechen, der von einem OS angefordert werden kann. Zusätzlich zu diesem P1-Zustand kann das OS ferner einen höheren Rechenleistungszustand anfordern, nämlich einen PO-Zustand. Dieser P0-Zustand kann daher ein opportunistischer, übertakteter Zustand oder Turbomoduszustand sein, in dem die Prozessorhardware dann, wenn das Leistungs- und/oder Wärmebudget verfügbar ist, den Prozessor oder zumindest Teile davon so konfigurieren kann, dass er bei einer höheren als der garantierten Frequenz arbeitet. In vielen Implementierungen kann ein Prozessor mehrere so genannte Bin-Frequenzen oberhalb der garantierten maximalen P1-Frequenz enthalten, die eine maximale Spitzenfrequenz des bestimmten Prozessors überschreiten, die während der Herstellung in den Prozessor eingeschmolzen oder anderweitig eingeschrieben wird. Gemäß einem OSPM-Mechanismus kann ein Prozessor außerdem bei verschiedenen Leistungszuständen oder -niveaus arbeiten. In Bezug auf Leistungszustände kann ein OSPM-Mechanismus unterschiedliche Leistungsaufnahmezustände spezifizieren, die allgemein 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 untätig ist, kann er in einen Kernzustand mit niedriger Leistungsaufnahme gebracht werden, der auch als ein Nicht-Null-C-Kernzustand (z. B. Zustände C1-C6) bezeichnet wird, wobei jeder C-Zustand sich auf einem Niveau niedrigerer Leistungsaufnahme befindet (so dass C6 ein Zustand mit niedrigerer Leistungsaufnahme als C1 ist usw.).
  • Es gilt zu verstehen, dass viele verschiedene Arten von Leistungsmanagementtechniken in verschiedenen Ausführungsformen einzeln oder in Kombination verwendet werden können. Als repräsentative Beispiele kann ein Leistungscontroller den Prozessor so steuern, dass er durch irgendeine Form von dynamischer Spannungsfrequenzskalierung (DVFS) leistungstechnisch verwaltet wird, bei der eine Betriebsspannung und/oder Betriebsfrequenz von einem oder mehreren Kernen oder einer anderen Prozessorlogik dynamisch gesteuert werden kann, um die Leistungsaufnahme in bestimmten Situationen zu reduzieren. In einem Beispiel kann DVFS unter Verwendung der verbesserten Intel-SpeedStep™-Technologie durchgeführt werden, die von Intel Corporation, Santa Clara, Kalifornien, erhältlich ist, um eine optimale Rechenleistung auf dem niedrigsten Leistungsaufnahmeniveau bereitzustellen. In einem weiteren Beispiel kann DVFS unter Verwendung der Intel-TurboBoost™-Technologie durchgeführt werden, um zu ermöglichen, dass ein oder mehrere Kerne oder andere Rechenmaschinen abhängig von Bedingungen (z. B. Arbeitslast und Verfügbarkeit) mit einer höheren als der garantierten Betriebsfrequenz arbeiten.
  • Eine weitere Leistungsmanagementtechnik, die in bestimmten Beispielen verwendet werden kann, ist das dynamische Austauschen von Arbeitslasten zwischen verschiedenen Rechenmaschinen. Zum Beispiel kann der Prozessor asymmetrische Kerne oder andere Verarbeitungsmaschinen enthalten, die aus unterschiedlichen Leistungsaufnahmeniveaus arbeiten, so dass in einer leistungsbeschränkten Situation eine oder mehrere Arbeitslasten dynamisch auf eine Ausführung auf einem Kern mit niedriger Leistungsaufnahme oder einer anderen Recheneinheit umgeschaltet werden können. Ein anderes beispielhaftes Leistungsmanagementverfahren ist ein Hardwarearbeitszyklus (HDC), der veranlassen kann, dass Kerne und/oder andere Rechenmaschinen entsprechend einem Tastgrad periodisch aktiviert und deaktiviert werden, so dass ein oder mehrere Kerne während einer inaktiven Periode des inaktiv gemacht werden können und während einer aktiven Periode des Arbeitszyklus aktiv gemacht werden können.
  • Leistungsmanagementtechniken können auch verwendet werden, wenn Beschränkungen in einer Betriebsumgebung existieren. Wenn beispielsweise eine Leistungsbeschränkung und/oder thermische Beschränkung auftritt, kann die Leistung durch Verringern der Betriebsfrequenz und/oder der Betriebsspannung reduziert werden. Andere Leistungsmanagementtechniken umfassen ein Drosseln einer Befehlsausführungsrate oder ein Begrenzen der Planung von Befehlen. Darüber hinaus ist es möglich, dass Befehle einer gegebenen Befehlssatzarchitektur eine ausdrückliche oder implizite Anweisung bezüglich Leistungsmanagementoperationen umfassen. Trotz der Beschreibung mit diesen speziellen Beispielen gilt es zu verstehen, dass viele andere Leistungsmanagementtechniken in bestimmten Ausführungsformen verwendet werden können.
  • Ausführungsformen können in Prozessoren für verschiedene Märkte einschließlich Serverprozessoren, Desktop-Prozessoren, Mobil-Prozessoren usw. implementiert werden. 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 mehrere Kerne 210a - 210n enthält. In einer Ausführungsform kann jeder solche Kern eine unabhängige Leistungsdomäne sein und kann dazu ausgelegt sein, basierend auf der Arbeitslast in aktive Zustände und/oder Zustände mit maximaler Rechenleistung einzutreten und diese zu verlassen. Ein oder mehrere Kerne 210 können in Bezug auf die anderen Kerne heterogen sein, z. B. unterschiedliche Mikroarchitekturen, Befehlssatzarchitekturen, Pipelinetiefen, Leistungsaufnahme- und Rechenleistungsfähigkeiten aufweisen. Die verschiedenen Kerne können über eine Zwischenverbindung 215 mit einem Systemagenten oder Uncore 220 gekoppelt sein, der verschiedene Komponenten enthält. Wie zu sehen ist, kann der Uncore 220 einen gemeinsamen Cache 230 enthalten, der ein Cache letzter Ebene sein kann. Zusätzlich kann der Uncore einen integrierten Speichercontroller 240 zum Kommunizieren mit einem Systemspeicher (in 2 nicht gezeigt), beispielsweise über einen Speicherbus, enthalten. Der Uncore 220 enthält auch verschiedene Schnittstellen 250 und eine Leistungssteuereinheit 255, die Logik zum Ausführen der hierin beschriebenen Leistungsmanagementtechniken enthalten kann.
  • Zusätzlich kann durch die Schnittstellen 250a-250n eine Verbindung zu verschiedenen chipexternen Komponenten wie Peripherievorrichtungen, Massenspeicher usw. hergestellt werden. Obwohl diese spezielle Implementierung in der Ausführungsform von 2 gezeigt ist, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Obwohl dies in 2 nicht gezeigt ist, kann der Prozessor 200 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 3 ist ein Blockdiagramm eines Mehrdomänenprozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Wie in der Ausführungsform von 3 gezeigt umfasst der Prozessor 300 mehrere Domänen. Insbesondere kann eine Kerndomäne 310 mehrere Kerne 310a-310n enthalten, eine Grafikdomäne 320 eine oder mehrere Grafikmaschinen enthalten und ferner eine Systemagentendomäne 350 vorhanden sein. In einigen Ausführungsformen kann die Systemagentendomäne 350 mit einer unabhängigen Frequenz im Vergleich zu der Kerndomäne ausgeführt werden und kann zu allen Zeiten eingeschaltet bleiben, um Leistungssteuerungsereignisse und Leistungsmanagement zu handhaben, so dass die Domänen 310 und 320 so gesteuert werden können, dass sie dynamisch in Zustände mit hoher Leistungsaufnahme und Zustände mit niedriger Leistungsaufnahme eintreten bzw. aus diesen austreten. Jede der Domänen 310 und 320 kann mit unterschiedlicher Spannung und/oder Leistung arbeiten. Es ist zu beachten, dass, obwohl nur drei Domänen gezeigt sind, der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist und in anderen Ausführungsformen zusätzliche Domänen vorhanden sein können. Zum Beispiel können mehrere Kerndomänen vorhanden sein, die jeweils mindestens einen Kern enthalten.
  • Im Allgemeinen kann jeder der Kerne 310a - 310n ferner Caches niedriger Ebene zusätzlich zu verschiedenen Ausführungseinheiten und zusätzlichen Verarbeitungselementen enthalten. Die verschiedenen Kerne können wiederum miteinander und mit einem gemeinsamen Cachespeicher gekoppelt sein, der aus mehreren Einheiten eines Caches letzter Ebene (LLC) 340a-340n gebildet ist. In verschiedenen Ausführungsformen können sich die Kerne und die Grafikmaschine sowie verschiedene Medienverarbeitungsschaltungen den LLC 340 teilen. Wie zu sehen ist, verbindet somit eine Ringzwischenverbindung 330 die Kerne miteinander und stellt eine Zwischenverbindung zwischen den Kernen, der Grafikdomäne 320 und der Systemagentendomäne 350 bereit. In einer Ausführungsform kann die Zwischenverbindung 330 Teil der Kerndomäne sein. In anderen Ausführungsformen kann die Ringverbindung jedoch ihre eigene Domäne sein.
  • Wie ferner ersichtlich ist, kann die Systemagentendomäne 350 einen Anzeigecontroller 352 enthalten, der eine Steuerung einer zugehörigen Anzeige und eine Schnittstelle zu dieser bereitstellen kann. Wie ferner ersichtlich ist, kann die Systemagentendomäne 350 eine Leistungssteuereinheit 355 enthalten, die Logik zum Ausführen der hierin beschriebenen Leistungsmanagementtechniken enthalten kann.
  • Wie weiter in 3 gezeigt kann der Prozessor 300 ferner einen integrierten Speichercontroller (IMC) 370 enthalten, der eine Schnittstelle zu einem Systemspeicher, beispielsweise einem dynamischen Direktzugriffsspeicher (DRAM), bereitstellen kann. Mehrere Schnittstellen 380a-380n können vorhanden sein, um eine Zwischenverbindung zwischen dem Prozessor und anderen Schaltungen zu ermöglichen. Zum Beispiel können in einer Ausführungsform mindestens eine direkte Medienschnittstelle (DMI-Schnittstelle) sowie eine oder mehrere PCIe™-Schnittstellen bereitgestellt sein. Um Kommunikation zwischen anderen Agenten wie z. B. zusätzlichen Prozessoren oder anderen Schaltungen bereitzustellen, können ferner eine oder mehrere QPI-Schnittstellen bereitgestellt sein. Obwohl dies in der Ausführungsform von 3 auf dieser hohen Ebene gezeigt ist, gilt es zu verstehen, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Obwohl dies in 3 nicht gezeigt ist, kann der Prozessor 300 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 4 ist eine Ausführungsform eines Prozessors mit mehreren Kernen dargestellt. Der Prozessor 400 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungseinrichtung wie beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzprozessor, einen tragbaren Prozessor, einen Anwendungsprozessor, einen Coprozessor, 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, Kern 401 und 402, die asymmetrische Kerne oder symmetrische Kerne (die veranschaulichte Ausführungsform) umfassen können. Der Prozessor 400 kann jedoch eine beliebige Anzahl von Verarbeitungselementen enthalten, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Softwarestrangs. Beispiele für Hardwareverarbeitungselemente umfassen: eine Strangeinheit, einen Strangschlitz, einen Strang, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardwarestrang, einen Kern und/oder ein beliebiges anderes Element, das zum Halten eines Zustands wie beispielsweise eines Ausführungszustands oder eines Architekturzustands für einen Prozessor fähig ist. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf irgendeine Hardware, die unabhängig einem Code wie beispielsweise einem Softwarestrang, einem Betriebssystem, einer Anwendung oder einem anderen Code zugeordnet werden kann. Ein physischer Prozessor bezieht sich typischerweise auf eine integrierte Schaltung, die möglicherweise eine beliebige Anzahl von anderen Verarbeitungselementen wie beispielsweise Kerne oder Hardwarestränge enthält.
  • Ein Kern bezieht sich häufig auf eine Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand wenigstens einigen dedizierten Ausführungsbetriebsmitteln zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardwarestrang typischerweise auf irgendeine Logik, die sich auf einer integrierten Schaltung befindet, die in der Lage ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei sich die unabhängig aufrechterhaltenen Architekturzustände einen Zugriff auf Ausführungsbetriebsmittel teilen. Wie zu sehen ist, überlappt die nomenklaturische Grenze zwischen dem Hardwarestrang und dem Kern, wenn bestimmte Betriebsmittel gemeinsam genutzt werden und andere einem Architekturzustand gewidmet sind. Häufig werden ein Kern- und ein Hardwarestrang jedoch von einem Betriebssystem als einzelne logische Prozessoren betrachtet, wobei das Betriebssystem Operationen auf jedem logischen Prozessor individuell planen kann.
  • Der physische Prozessor 400 enthält wie in 4 gezeigt zweit Kerne, die Kerne 401 und 402. Die Kerne 401 und 402 werden hier als symmetrische Kerne betrachtet, d. h. Kerne mit den gleichen Konfigurationen, Funktionseinheiten und/oder der gleichen Logik. In einer weiteren Ausführungsform enthält der Kern 401 einen nicht reihenfolgetreuen Prozessorkern, während der Kern 402 einen reihenfolgetreuen Prozessorkern enthält. Die Kerne 401 und 402 können jedoch individuell aus einem beliebigen Kerntyp ausgewählt werden, wie etwa einem nativen Kern, einem softwaregesteuerten Kern, einem Kern, der zum Ausführen einer nativen Befehlssatzarchitektur (ISA) ausgelegt ist, einem Kern, der zum Ausführen einer übersetzten ISA ausgelegt ist, einem gemeinsam entwickelten Kern oder einem anderen bekannten Kern. Um die Diskussion weiter voranzubringen, sind die in dem Kern 401 dargestellten Funktionseinheiten im Folgenden ausführlicher beschrieben, da die Einheiten in dem Kern 402 in ähnlicher Weise arbeiten.
  • Wie dargestellt enthält der Kern 401 zwei Hardwarestränge 401a und 401b, die auch als Hardwarestrangschlitze 401a und 401b bezeichnet werden können. Daher betrachten Softwareentitäten wie beispielsweise ein Betriebssystem in einer Ausführungsform den Prozessor 400 möglicherweise als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Softwarestränge gleichzeitig auszuführen. Wie oben angedeutet ist ein erster Strang Architekturzustandsregistern 401a zugeordnet, ein zweiter Strang Architekturzustandsregistern 401b zugeordnet, ein dritter Strang kann Architekturzustandsregistern 402a zugeordnet sein und ein vierter Strang kann Architekturzustandsregistern 402b zugeordnet sein. Hier kann jedes der Architekturzustandsregister (401a, 401b, 402a und 402b) wie oben beschrieben als Verarbeitungselement, Strangschlitz oder Strangeinheit bezeichnet werden. Wie dargestellt sind die Architekturzustandsregister 401a in den Architekturzustandsregistern 401b repliziert, so dass einzelne Architekturzustände/- kontexte für den logischen Prozessor 401a und den logischen Prozessor 401b gespeichert werden können. In dem Kern 401 können auch andere kleinere Betriebsmittel wie z. B. Befehlszeiger und Umbenennungslogik in einem Zuweisungs- und Umbenennungsblock 430 für die Stränge 401a und 401b repliziert werden. Einige Betriebsmittel wie etwa Umordnungspuffer in einer Umordnungs-/Stillegungseinheit 435, Verzweigungszielpuffer und Befehlsübersetzungs-Nachschlagepuffer (BTB und I-TLB) 420, Lade-/Speicherpuffer und Warteschlangen können durch Partitionierung gemeinsam genutzt werden. Andere Betriebsmittel wie etwa interne Allzweckregister, Seitentabellenbasisregister, Datencache niedriger Ebene und Daten-TLB 450, Ausführungseinheit(en) 440 und Teile der Umordnungs-/Stillegungseinheit 435 werden möglicherweise vollständig gemeinsam genutzt.
  • Der Prozessor 400 enthält oft andere Betriebsmittel, die vollständig gemeinsam verwendet, unter Partitionierung gemeinsam verwendet oder Verarbeitungselementen zugewiesen sein können. In 4 ist eine Ausführungsform eines rein beispielhaften Prozessors mit beispielhaften logischen Einheiten/Betriebsmitteln eines Prozessors dargestellt. Es ist zu beachten, dass ein Prozessor eine beliebige dieser Funktionseinheiten enthalten oder nicht enthalten kann und auch andere bekannte Funktionseinheiten, Logik oder Firmware, die nicht dargestellt sind, enthalten kann. Wie dargestellt enthält der Kern 401 einen vereinfachten, repräsentativen nicht reihenfolgetreuen Prozessorkern (OOO-Prozessorkern). Jedoch kann in verschiedenen Ausführungsformen ein reihenfolgetreuer Prozessor verwendet werden.
  • Der Kern 401 enthält ferner ein Decodiermodul 425, das mit einer Abrufeinheit gekoppelt ist, um abgerufene Elemente zu decodieren. Eine Abruflogik enthält in einer Ausführungsform individuelle Sequenzer, die jeweils den Strangschlitzen 401a, 401b zugeordnet sind. Üblicherweise ist der Kern 401 einer ersten ISA zugeordnet, die auf dem Prozessor 400 ausführbare Befehle definiert/spezifiziert. Oft enthalten Maschinencodebefehle, die Teil der ersten ISA sind, einen Teil des Befehls (der als Opcode bezeichnet wird), der auf einen Befehl oder eine Operation verweist, die ausgeführt werden soll. Das Decodiermodul 425 enthält eine Schaltungsanordnung, die diese Befehle aus deren Opcodes erkennt und die decodierten Befehle in der Pipeline zur Verarbeitung, wie sie durch die erste ISA definiert ist, weitergibt. Zum Beispiel enthält das Decodiermodul 425 in einer Ausführungsform eine Logik, die dazu ausgelegt oder angepasst ist, spezifische Befehle wie z. B. Transaktionsbefehle zu erkennen. Als Ergebnis der Erkennung durch das Decodiermodul 425 nimmt die Architektur oder der Kern 401 spezifische vordefinierte Aktionen zum Ausführen von Aufgaben, die dem geeigneten Befehl zugeordnet sind, vor. Es ist wichtig zu beachten, dass beliebige der hier beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Antwort auf einen einzelnen oder mehrere Befehle ausgeführt werden können; einige davon können neue oder alte Befehle sein.
  • In einem Beispiel enthält der Zuweisungs- und Umbenennungsblock 430 eine Zuweisungseinrichtung zum Reservieren von Betriebsmitteln wie beispielsweise Registersätzen zum Speichern von Befehlsverarbeitungsergebnissen. Die Stränge 401a und 401b sind jedoch potentiell in der Lage, außerhalb der Reihenfolge ausgeführt zu werden, wobei der Zuweisungs- und Umbenennungsblock 430 auch andere Betriebsmittel wie etwa Umordnungspuffer reserviert, um Befehlsergebnisse zu verfolgen. Der Umbenennungsblock 430 kann auch eine Registerumbenennungseinrichtung zum Umbenennen von Programm-/Befehlsreferenzregistern in andere Register innerhalb des Prozessors 400 enthalten. Die Umordnungs-/Stillegungseinheit 435 enthält Komponenten wie etwa die oben erwähnten Umordnungspuffer, Ladepuffer und Speicherpuffer zur Unterstützung einer nicht reihenfolgetreuen Ausführung und späteren reihenfolgetreuen Stilllegung von Befehlen, die nicht reihenfolgetreu ausgeführt werden.
  • Ein Scheduler- und Ausführungseinheits-Block 440 enthält in einer Ausführungsform eine Schedulereinheit, um Befehle/Operationen auf Ausführungseinheiten zu planen. Zum Beispiel wird ein Gleitkommabefehl an einem Port einer Ausführungseinheit geplant, die eine verfügbare Fließkomma-Ausführungseinheit aufweist. Registersätze, die den Ausführungseinheiten zugeordnet sind, sind ebenfalls enthalten, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkomma-Ausführungseinheit, eine Ganzzahl-Ausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Ein Datencache niedrigerer Ebene und ein Datenübersetzungs-Nachschlagepuffer (D-TLB) 450 sind mit Ausführungseinheit(en) 440 gekoppelt. Der Datencache dient zum Speichern kürzlich verwendeter/bearbeiteter Elemente wie z. B. Datenoperanden, die potentiell in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient zum Speichern von Adressübersetzungen von virtuell/linear zu physisch. Als spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur enthalten, um den physischen Speicher in mehrere virtuelle Seiten zu teilen.
  • Hier teilen sich die Kerne 401 und 402 den Zugriff auf den Cachespeicher 410 höherer Ebene bzw. weiter entfernt liegenden Cachespeicher, der kürzlich abgerufene Elemente zwischenspeichern soll. Es ist zu beachten, dass sich höhere Ebenen oder weiter entfernte Ebenen auf Cacheebenen beziehen, die sich von der/den Ausführungseinheit(en) entfernen. In einer Ausführungsform ist der Cachespeicher höherer Ebene 410 ein Cachespeicher letzter Ebene in der Speicherhierarchie auf dem Prozessor 400, wie etwa ein Datencache zweiter oder dritter Ebene. Der Cache 410 höherer Ebene ist jedoch nicht derart eingeschränkt, da er einem Befehlscache zugeordnet sein kann oder einen solchen enthalten kann. Ein Spurcache - eine Art von Befehlscache - kann stattdessen hinter dem Decodierermodul 425 eingekoppelt sein, um kürzlich decodierte Spuren zu speichern.
  • In der dargestellten Konfiguration umfasst der Prozessor 400 auch eine Busschnittstelle 405 und eine Leistungssteuereinheit 460, die ein Leistungsmanagement gemäß einer Ausführungsform der vorliegenden Erfindung durchführen kann. In diesem Szenario soll die Busschnittstelle 405 mit Vorrichtungen kommunizieren, die sich außerhalb des Prozessors 400 befinden, wie beispielsweise dem Systemspeicher und anderen Komponenten.
  • Ein Speichercontroller 470 kann eine Schnittstelle mit anderen Vorrichtungen wie etwa einem oder mehreren Speichern bilden. In einem Beispiel enthält die Busschnittstelle 405 eine Ringzwischenverbindung mit einer Speichersteuereinheit zum Verbinden mit einem Speicher und einer Grafiksteuereinheit zum Verbinden mit einem Grafikprozessor. In einer SoC-Umgebung können sogar noch mehr Vorrichtungen wie etwa eine Netzschnittstelle, Coprozessoren, Speicher, Grafikprozessoren und andere bekannte Computervorrichtungen/Schnittstellen auf einem einzelnen Chip oder einer integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und geringer Leistungsaufnahme bereitzustellen.
  • Obwohl dies in 4 nicht gezeigt ist, kann der Prozessor 400 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 5 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt kann der Prozessorkern 500 ein mehrstufiger nicht reihenfolgetreuer Pipeline-Prozessor sein. Der Kern 500 kann mit verschiedenen Spannungen arbeiten, die auf einer empfangenen Betriebsspannung basieren, die von einem integrierten Spannungsregler oder externen Spannungsregler empfangen werden kann.
  • Wie in 5 ersichtlich enthält der Kern 500 Frontend-Einheiten 510, die verwendet werden können, um auszuführende Befehle abzurufen und sie für die spätere Verwendung in der Prozessor-Pipeline vorzubereiten. Zum Beispiel können die Frontend-Einheiten 510 eine Abrufeinheit 501, einen Befehlscache 503 und einen Befehlsdecodierer 505 enthalten. In einigen Implementierungen können die Frontend-Einheiten 510 ferner einen Spurcache zusammen mit einem Mikrocode-Speicher sowie einem Mikrooperationsspeicher enthalten. Die Abrufeinheit 501 kann Makrobefehle z. B. aus dem Speicher oder dem Befehlscachespeicher 503 abrufen und sie dem Befehlsdecodierer 505 zuführen, um sie in Grundelemente, d. h. Mikrooperationen zur Ausführung durch den Prozessor, zu decodieren.
  • Zwischen den Frontend-Einheiten 510 und den Ausführungseinheiten 520 ist eine nicht reihenfolgetreue Maschine (OOO-Maschine) 515 eingekoppelt, die verwendet werden kann, um die Mikrobefehle zu empfangen und sie für die Ausführung vorzubereiten. Insbesondere kann die OOO-Maschine 515 verschiedene Puffer enthalten, um den Mikrobefehlsfluss neu zu ordnen und verschiedene zur Ausführung benötigte Betriebsmittel zuzuweisen sowie eine Umbenennung von logischen Registern auf Speicherstellen in verschiedenen Registersätzen wie dem Registersatz 530 und dem erweiterten Registersatz 535 bereitzustellen. Der Registersatz 530 kann separate Registersätze für Ganzzahl- und Gleitkommaoperationen enthalten. Zu Zwecken der Konfiguration, Steuerung und zusätzlicher Operationen kann zudem ein Satz von maschinenspezifischen Registern (MSRs) 538 vorhanden sein und für vielfältige Logik innerhalb des Kerns 500 (und außerhalb des Kerns) zugänglich sein.
  • Verschiedene Betriebsmittel können in Ausführungseinheiten 520 vorhanden sein, einschließlich z. B. vielfältiger Ganzzahl-Logikeinheiten, Gleitkomma-Logikeinheiten und Logikeinheiten zur Anwendung von einzelnen Befehlen auf mehrere Datenströme (SIMD- Logikeinheiten) neben anderer spezialisierter Hardware. Zum Beispiel können solche Ausführungseinheiten eine oder mehrere arithmetische Logikeinheiten (ALUs) 522 und eine oder mehrere Vektorausführungseinheiten 524 neben anderen derartigen Ausführungseinheiten enthalten.
  • Ergebnisse aus den Ausführungseinheiten können an die Stilllegungslogik, nämlich einen Umordnungspuffer (ROB) 540, geliefert werden. Insbesondere kann der ROB 540 verschiedene Arrays und Logik enthalten, um Informationen zu empfangen, die Befehlen zugeordnet sind, die ausgeführt werden. Diese Informationen werden dann durch den ROB 540 untersucht, um zu bestimmen, ob die Befehle in gültiger Weise stillgelegt werden können und Ergebnisdaten an den Architekturzustand des Prozessors übergeben werden können oder ob eine oder mehrere Ausnahmen aufgetreten sind, die ein ordnungsgemäßes Stilllegen der Befehle verhindern. Natürlich kann der ROB 540 andere Operationen im Zusammenhang mit der Stilllegung handhaben.
  • Wie in 5 gezeigt ist der ROB 540 mit einem Cache 550 gekoppelt, der in einer Ausführungsform ein Cache niedriger Ebene (z. B. ein LI-Cache) sein kann, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Außerdem können die Ausführungseinheiten 520 direkt mit dem Cache 550 verbunden sein. Aus dem Cache 550 kann die Datenkommunikation mit Cachespeichern höherer Ebene, dem Systemspeicher usw. erfolgen. Obwohl dies auf hoher Ebene in der Ausführungsform von 5 gezeigt ist, gilt es zu verstehen, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Obwohl sich beispielsweise die Implementierung von 5 auf eine nicht reihenfolgetreue Maschine wie beispielsweise eine Intel®x86-Befehlssatzarchitektur (ISA) bezieht, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt. Das heißt, dass andere Ausführungsformen in einem reihenfolgetreuen Prozessor, einem Prozessor eines Rechners mit reduziertem Befehlssatz (RISC-Prozessor) wie etwa einem ARM-basierten Prozessor oder einem Prozessor eines anderen ISA-Typs, der Befehle und Operationen einer anderen ISA mittels einer Emulationsmaschine und zugehöriger Logikschaltungen emulieren kann, implementiert werden können.
  • Obwohl dies in 5 nicht gezeigt ist, kann der Kern 500 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 6 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß einer weiteren Ausführungsform gezeigt. In der Ausführungsform von 6 kann der Kern 600 ein Kern mit geringer Leistungsaufnahme einer anderen Mikroarchitektur sein, wie etwa ein auf Intel®-Atom basierter Prozessor mit einer relativ begrenzten Pipeline-Tiefe, der für eine Reduktion der Leistungsaufnahme ausgelegt ist. Wie zu sehen ist, enthält der Kern 600 einen Befehlscachespeicher 610, der angekoppelt ist, um Befehle an einen Befehlsdecodierer 615 zu liefern. Ein Verzweigungsvorhersager 605 kann mit dem Befehlscache 610 gekoppelt sein. Es ist zu beachten, dass der Befehlscache 610 ferner mit einer anderen Ebene eines Cachespeichers wie etwa einem L2-Cache gekoppelt sein kann (zur Vereinfachung der Darstellung in 6 nicht gezeigt). Der Befehlsdecodierer 615 liefert wiederum decodierte Befehle an eine Ausgabewarteschlange (IQ) 620 zur Speicherung und Lieferung an eine gegebene Ausführungspipeline. Ein Mikrocode-ROM 618 ist mit dem Befehlsdecodierer 615 gekoppelt.
  • Eine Gleitkomma-Pipeline 630 enthält einen Gleitkomma-Registersatz 632, der mehrere Architekturregister mit einer gegebenen Bitbreite wie 128, 256 oder 512 Bits enthalten kann. Die Pipeline 630 enthält einen Gleitkomma-Scheduler 634, um Befehle zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline zu planen. In der gezeigten Ausführungsform umfassen solche Ausführungseinheiten eine ALU 635, eine Shuffle-Einheit 636 und einen Gleitkomma-Addierer 638. Die in diesen Ausführungseinheiten erzeugten Ergebnisse können wiederum an Puffer und/oder Register des Registersatzes 632 zurückgegeben werden. Natürlich versteht es sich, dass, obwohl diese wenigen beispielhaften Ausführungseinheiten gezeigt sind, zusätzliche oder andere Gleitkomma-Ausführungseinheiten in einer anderen Ausführungsform vorhanden sein können.
  • Es kann auch eine Ganzzahl-Pipeline 640 bereitgestellt sein. In der gezeigten Ausführungsform enthält die Pipeline 640 einen Ganzzahl-Registersatz (INT-Registersatz) 642, der mehrere Architekturregister mit einer gegebenen Bitbreite wie etwa 128 oder 256 Bits enthalten kann. Die Pipeline 640 enthält einen Ganzzahl-Ausführungs-Scheduler (IE-Scheduler) 644, um Befehle zur Ausführung auf einer von mehreren Ausführungseinheiten der Pipeline zu planen. In der gezeigten Ausführungsform umfassen solche Ausführungseinheiten eine ALU 645, eine Verschiebeeinheit 646 und eine Sprungausführungseinheit (JEU) 648. Die Ergebnisse, die in diesen Ausführungseinheiten erzeugt werden, können wiederum an Puffer und/oder Register des Registersatzes zurückgegeben werden. Natürlich versteht es sich, dass, obwohl diese wenigen beispielhaften Ausführungseinheiten gezeigt sind, zusätzliche oder andere Ganzzahl-Ausführungseinheiten in einer weiteren Ausführungsform vorhanden sein können.
  • Ein Speicherausführungs-Scheduler (ME-Scheduler) 650 kann Speicheroperationen zur Ausführung in einer Adressenerzeugungseinheit (AGU) 652, die auch mit einem TLB 654 gekoppelt ist, planen. Wie zu sehen ist, können diese Strukturen mit einem Datencache 660 gekoppelt sein, der ein L0- und/oder L1-Datencache sein kann und der seinerseits mit zusätzlichen Ebenen einer CacheSpeicherhierarchie, einschließlich eines L2-Cachespeichers, gekoppelt ist.
  • Um Unterstützung für eine Ausführung außerhalb der Reihenfolge bereitzustellen, kann eine Zuweisungs-/Umbenennungseinrichtung 670 zusätzlich zu einem Umordnungspuffer 680, der zum Umordnen von Befehlen, die außerhalb der Reihenfolge ausgeführt werden, zur Stilllegung in Reihenfolge ausgelegt ist, bereitgestellt sein. Obwohl diese spezielle Pipeline-Architektur in der Darstellung von 6 gezeigt ist, versteht es sich, dass viele Variationen und Alternativen möglich sind.
  • Obwohl dies in 6 nicht gezeigt ist, kann der Kern 600 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Es ist zu beachten, dass in einem Prozessor mit asymmetrischen Kernen, wie z. B. gemäß den Mikroarchitekturen von 5 und 6, Arbeitslasten aus Gründen des Leistungsmanagements dynamisch zwischen den Kernen ausgetauscht werden können, da diese Kerne, obwohl sie unterschiedliche Pipeline-Designs und -Tiefen aufweisen, die gleiche oder eine verwandte ISA aufweisen können. Ein solcher dynamischer Kernaustausch kann auf eine Weise durchgeführt werden, die für eine Anwenderanwendung (und möglicherweise auch für einen Kernel) transparent ist.
  • Unter Bezugnahme auf 7 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform gezeigt. Wie in 7 gezeigt kann ein Kern 700 eine mehrstufige reihenfolgetreue Pipeline enthalten, die bei sehr niedrigen Leistungsaufnahmepegeln ausgeführt wird. Als ein solches Beispiel kann der Kern 700 eine Mikroarchitektur gemäß einem ARM-Cortex-A53-Design aufweisen, erhältlich von ARM Holdings, LTD., Sunnyvale, Kalifornien. In einer Implementierung kann eine 8-stufige Pipeline bereitgestellt sein, die so ausgelegt ist, dass sie sowohl 32-Bit- als auch 64-Bit-Code ausführt. Der Kern 700 enthält eine Abrufeinheit 710, die dazu ausgelegt, Befehle abzurufen und sie an eine Decodiereinheit 715 zu liefern, die die Befehle, z. B. Makrobefehle einer gegebenen ISA wie einer ARMv8-ISA, decodieren kann. Es ist ferner zu beachten, dass eine Warteschlange 730 an die Decodiereinheit 715 gekoppelt sein kann, um decodierte Befehle zu speichern. Decodierte Befehle werden an eine Fehlerlogik 725 geliefert, in der die decodierten Befehle an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden können.
  • Unter weiterer Bezugnahme auf 7 kann die Ausgabelogik 725 Befehle an eine von mehreren Ausführungseinheiten ausgeben. In der gezeigten Ausführungsform umfassen diese Ausführungseinheiten eine Ganzzahleinheit 735, eine Multiplikationseinheit 740, eine Gleitkomma-/Vektoreinheit 750, eine Dual-Ausgabeeinheit 760 und eine Lade-/Speichereinheit 770. Die Ergebnisse dieser verschiedenen Ausführungseinheiten können an eine Rückschreibeeinheit (WB-Einheit) 780 geliefert werden. Ferner gilt es zu verstehen, dass, obwohl zur Erleichterung der Darstellung eine einzelne Rückschreibeeinheit gezeigt ist, in einigen Implementierungen jeder der Ausführungseinheiten separate Rückschreibeeinheiten zugeordnet sein können. Ferner gilt es zu verstehen, dass, obwohl jede der Einheiten und jegliche Logik in 7 auf einer hohen Ebene dargestellt ist, eine bestimmte Implementierung mehr oder andere Strukturen umfassen kann. Ein Prozessor, der wie in 7 unter Verwendung eines oder mehrerer Kerne mit einer Pipeline ausgebildet ist, kann in vielen verschiedenen Endprodukten implementiert werden, die von mobilen Vorrichtungen bis zu Serversystemen reichen.
  • Obwohl dies in 7 nicht gezeigt ist, kann der Kern 700 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 8 ist ein Blockdiagramm einer Mikroarchitektur eines Prozessorkerns gemäß noch einer weiteren Ausführungsform gezeigt. Wie in 8 gezeigt kann ein Kern 800 eine mehrstufige nicht reihenfolgetreue Pipeline mit mehreren Ausgaben enthalten, die bei sehr hohen Rechenleistungspegeln ausgeführt wird (was bei höheren Leistungsaufnahmepegeln als für den Kern 700 von 7 geschehen kann). Als ein solches Beispiel kann der Prozessor 800 eine Mikroarchitektur gemäß einem ARM-Cortex-A57-Design aufweisen. In einer Implementierung kann eine Pipeline mit 15 (oder mehr) Stufen bereitgestellt sein, die dazu ausgelegt ist, sowohl 32-Bit- als auch 64-Bit-Code auszuführen. Zusätzlich kann die Pipeline für eine Operation mit einer Breite von 3 (oder mehr) und 3 (oder mehr) Ausgaben sorgen. Der Kern 800 enthält eine Abrufeinheit 810, die dazu ausgelegt ist, Befehle abzurufen und sie an eine mit einem Cache 820 gekoppelte Decodierer/Umbenennungs/Verteiler-Einheit 815 zu liefern. Die Einheit 815 kann die Befehle, z.B. Makrobefehle einer ARMv8-Befehlssatzarchitektur, decodieren, Registerreferenzen in den Befehlen umbenennen und die Befehle (letztendlich) an eine ausgewählte Ausführungseinheit senden. Decodierte Befehle können in einer Warteschlange 825 gespeichert werden. Es ist zu beachten, dass, obwohl zur Vereinfachung der Darstellung eine einzelne Warteschlangenstruktur in 8 gezeigt ist, separate Warteschlangen für jeden der mehreren unterschiedlichen Typen von Ausführungseinheiten vorgesehen sein können.
  • Ferner ist in 8 eine Ausgabelogik 830 gezeigt, aus der decodierte Befehle, 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 sein.
  • Decodierte Befehle können an eine gegebene von mehreren Ausführungseinheiten ausgegeben werden. In der gezeigten Ausführungsform umfassen diese Ausführungseinheiten eine oder mehrere Ganzzahleinheiten 835, eine Multiplikationseinheit 840, eine Gleitkomma-/Vektoreinheit 850, eine Verzweigungseinheit 860 und eine Lade-/Speichereinheit 870. In einer Ausführungsformkann die Gleitkomma-/Vektoreinheit 850 dazu ausgelegt sein, SIMD- oder Vektordaten von 128 oder 256 Bits zu verarbeiten. Ferner kann die Gleitkomma-/Vektor-Ausführungseinheit 850 IEEE-754-Gleitkommaoperationen mit doppelter Genauigkeit ausführen. Die Ergebnisse dieser unterschiedlichen Ausführungseinheiten können an eine Rückschreibeeinheit 880 geliefert werden. Es ist zu beachten, dass in einigen Implementierungen jeder der Ausführungseinheiten separate Rückschreibeeinheiten zugeordnet sein können. Ferner gilt es zu verstehen, dass, während die Einheiten und die Logik in 8 jeweils auf einer hohen Ebene dargestellt sind, eine bestimmte Implementierung mehr oder andere Strukturen umfassen kann.
  • Obwohl dies in 8 nicht gezeigt ist, kann der Kern 800 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Es ist zu beachten, dass in einem Prozessor mit asymmetrischen Kernen, wie z. B. gemäß den Mikroarchitekturen von 7 und 8, aus Gründen des Leistungsmanagements Arbeitslasten dynamisch ausgetauscht werden können, da diese Kerne, obwohl sie unterschiedliche Pipeline-Designs und -Tiefen aufweisen, dieselbe oder eine verwandte ISA aufweisen können. Ein solcher dynamischer Kernaustausch kann auf eine Weise durchgeführt werden, die für eine Anwenderanwendung (und möglicherweise auch für einen Kernel) transparent ist.
  • Ein Prozessor, der einen oder mehrere Kerne mit Pipelines wie in einer oder mehreren der 5-8 verwendet, kann in vielen verschiedenen Endprodukten implementiert werden, die von mobilen Vorrichtungen bis zu Serversystemen reichen. Unter Bezugnahme auf 9 ist ein Blockdiagramm eines Prozessors gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. In der Ausführungsform von 9 kann der Prozessor 900 ein SoC sein, der mehrere Domänen enthält, von denen jede so gesteuert werden kann, dass sie bei einer unabhängigen Betriebsspannung und Betriebsfrequenz arbeitet. Als ein spezifisches veranschaulichendes Beispiel kann der Prozessor 900 ein auf Intel® Architecture Core™ basierender Prozessor sein, wie beispielsweise ein i3, i5, i7 oder ein anderer solcher Prozessor, der von der Intel Corporation erhältlich ist. In anderen Ausführungsformen können stattdessen andere Prozessoren mit niedriger Leistungsaufnahme, wie sie z. B. von Advanced Micro Devices, Inc. (AMD) aus Sunnyvale, Kalifornien, erhältlich sind, ein ARM-basiertes Design von ARM Holdings, Ltd. oder ein Lizenznehmer davon oder ein MIPS-basiertes Design von MIPS Technologies, Inc. von Sunnyvale, Kalifornien, oder ihre Lizenznehmer oder Anwender, wie etwa ein Apple-A7-Prozessor, ein Qualcomm-Snapdragon-Prozessor oder ein Texas-Instruments-OMAP-Prozessor, vorhanden sein. Solch ein SoC kann in einem Niederleistungssystem wie etwa einem Smartphone, einem Tabletcomputer, einem Phabletcomputer, einem Ultrabook™-Computer oder einer anderen tragbaren Rechenvorrichtung, die eine heterogene Systemarchitektur mit einem auf heterogener Systemarchitektur basierenden Prozessordesign umfassen kann, verwendet werden.
  • In der in 9 gezeigten Ansicht auf hoher Ebene enthält der Prozessor 900 mehrere Kerneinheiten 910a-910n. Jede Kerneinheit kann einen oder mehrere Prozessorkerne, einen oder mehrere Cachespeicher und andere Schaltungen enthalten. Jede Kerneinheit 910 kann einen oder mehrere Befehlssätze (z. B. einen x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden), einen MIPS-Befehlssatz, einen ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie NEON)) oder einen anderen Befehlssatz oder Kombinationen davon unterstützen. Es ist zu beachten, dass einige der Kerneinheiten heterogene Betriebsmittel (z. B. von einem anderen Design) sein können. Zusätzlich kann jeder derartige Kern mit einem Cachespeicher (nicht gezeigt) gekoppelt sein, der in einer Ausführungsform ein gemeinsamer L2-Cache-Speicher sein kann. Ein nichtflüchtiger Speicher 930 kann verwendet werden, um verschiedene Programm- und andere Daten zu speichern. Zum Beispiel kann dieser Speicher verwendet werden, um zumindest Teile von Mikrocode, Boot-Informationen wie etwa ein BIOS, andere Systemsoftware oder so weiter zu speichern.
  • Jede Kerneinheit 910 kann auch eine Schnittstelle wie etwa eine Busschnittstelleneinheit enthalten, um eine Verschaltung mit einer zusätzlichen Schaltung des Prozessors zu ermöglichen. In einer Ausführungsform ist jede Kerneinheit 910 mit einer kohärenten Struktur gekoppelt, die als eine primäre cachekohärente chipinterne Verbindung fungieren kann, die wiederum mit einem Speichercontroller 935 gekoppelt ist. Der Speichercontroller 935 steuert ihrerseits die Kommunikation mit einem Speicher wie etwa einem DRAM (zur Vereinfachung der Darstellung in 9 nicht gezeigt).
  • Zusätzlich zu Kerneinheiten sind zusätzliche Verarbeitungseinheiten innerhalb des Prozessors vorhanden, einschließlich mindestens einer Grafikeinheit 920, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) enthalten kann, um eine Grafikverarbeitung auszuführen sowie möglicherweise Allzweckoperationen auf dem Grafikprozessor (sogenannte GPGPU-Operation) auszuführen. Zusätzlich kann mindestens ein Bildsignalprozessor 925 vorhanden sein. Der Signalprozessor 925 kann dazu ausgelegt sein, eingehende Bilddaten zu verarbeiten, die von einer oder mehreren Erfassungsvorrichtungen entweder innerhalb des SoC oder außerhalb des Chips empfangen werden.
  • Andere Beschleuniger können zudem vorhanden sein. In der Darstellung von 9 kann ein Videocodierer 950 Codierungsoperationen einschließlich Codieren und Decodieren für Videoinformationen durchführen, z. B. ein Bereitstellen von Hardwarebeschleunigungsunterstützung für hochauflösenden Videoinhalt. Ferner kann ein Anzeigecontroller 955 bereitgestellt sein, um Anzeigeoperationen zu beschleunigen, einschließlich des Bereitstellens von Unterstützung für interne und externe Anzeigen eines Systems. Zusätzlich kann ein Sicherheitsprozessor 945 vorhanden sein, um Sicherheitsoperationen wie etwa sichere Boot-Operationen, verschiedene Kryptografieoperationen usw. durchzuführen.
  • Die Leistungsaufnahme jeder der Einheiten kann über einen Leistungsmanager 940 gesteuert werden, der eine Steuerlogik enthalten kann, um die verschiedenen hierin beschriebenen Leistungsmanagementtechniken auszuführen.
  • In einigen Ausführungsformen kann der Prozessor 900 ferner eine nichtkohärente Struktur umfassen, die mit der kohärenten Struktur gekoppelt ist, mit der verschiedene periphere Vorrichtungen gekoppelt werden können. Eine oder mehrere Schnittstellen 960a-960d ermöglichen eine Kommunikation mit einer oder mehreren chipexternen Vorrichtungen. Eine solche Kommunikation kann über eine Vielzahl von Kommunikationsprotokollen wie PCIe™, GPIO, USB, I2C, UART, MIPI, SDIO, DDR, SPI, HDMI unter anderen Arten von Kommunikationsprotokollen erfolgen. Obwohl in der Ausführungsform von 9 auf dieser hohen Ebene gezeigt, gilt es zu verstehen, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Obwohl dies in 9 nicht gezeigt ist, kann der Prozessor 900 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 10 ist ein Blockdiagramm eines repräsentativen SoC gezeigt. In der gezeigten Ausführungsform kann der SoC 1000 ein Mehrkern-SoC sein, der für einen Betrieb bei niedriger Leistung ausgelegt ist, um für einen Einbau in ein Smartphone oder eine andere Vorrichtung mit niedriger Leistungsaufnahme wie etwa einen Tablet-Computer oder eine andere tragbare Rechenvorrichtung optimiert zu werden. Als Beispiel kann der SoC 1000 unter Verwendung von asymmetrischen oder anderen Arten von Kernen implementiert werden, wie z. B. Kombinationen von Kernen mit höherer Leistungsaufnahme und/oder niedriger Leistungsaufnahme, z. B. nicht reihenfolgetreuen Kernen und reihenfolgetreuen Kernen. In verschiedenen Ausführungsformen können diese Kerne auf einem Intel®-Architecture™-Kerndesign oder einem ARM-Architekturdesign basieren. In wieder anderen Ausführungsformen kann eine Mischung von Intel- und ARM-Kernen in einem gegebenen SoC implementiert sein.
  • Wie in 10 ersichtlich umfasst ein SoC 1000 eine erste Kerndomäne 1010 mit mehreren ersten Kernen 1012a-1012d. In einem Beispiel können diese Kerne Kerne mit niedriger Leistungsaufnahme 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. Zusätzlich enthält der SoC 1000 eine zweite Kerndomäne 1020. In der Darstellung von 10 hat die zweite Kerndomäne 1020 mehrere zweite Kernen 1022a-1022d. In einem Beispiel können diese Kerne Kerne mit höherer Leistungsaufnahme sein als die ersten Kerne 1012. In einer Ausführungsform können die zweiten Kerne nicht reihenfolgetreue 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. Obwohl das in 10 gezeigte Beispiel 4 Kerne in jeder Domäne umfasst, gilt es zu verstehen, dass in anderen Beispielen mehr oder weniger Kerne in einer gegebenen Domäne vorhanden sein können.
  • Unter weiterer Bezugnahme auf 10 ist auch eine Grafikdomäne 1030 vorgesehen, die eine oder mehrere Grafikverarbeitungseinheiten (GPUs) enthalten kann, die zum unabhängigen Ausführen von Grafikarbeitslasten ausgelegt sind, die z. B. von einem oder mehreren Kernen der Kerndomänen 1010 und 1020 bereitgestellt werden. Als ein Beispiel kann die GPU-Domäne 1030 verwendet werden, um zusätzlich zum Bereitstellen von Grafik- und Anzeigerenderoperationen eine Anzeigeunterstützung für eine Vielzahl von Bildschirmgrößen bereitzustellen.
  • Wie zu sehen ist, sind die verschiedenen Domänen mit einer kohärenten Zwischenverbindung 1040 gekoppelt, die in einer Ausführungsform eine cachekohärente Zwischenverbindungsstruktur sein kann, die wiederum mit einem integrierten Speichercontroller 1050 gekoppelt ist. Die kohärente Zwischenverbindung 1040 kann in einigen Beispielen einen gemeinsam genutzten Cachespeicher wie z. B. einen L3-Cache umfassen. In einer Ausführungsform kann der Speichercontroller 1050 ein Direktspeichercontroller sein, um mehrere Kommunikationskanäle mit einem chipexternen Speicher bereitzustellen, wie z. B. mehrere Kanäle eines DRAM (zur Vereinfachung der Darstellung in 10 nicht gezeigt).
  • In verschiedenen Beispielen kann die Anzahl der Kerndomänen variieren. Zum Beispiel kann für ein SoC mit niedriger Leistungsaufnahme, das zum Einbau in eine mobile Rechenvorrichtung geeignet ist, eine begrenzte Anzahl von Kerndomänen vorhanden sein, wie es z. B. in 10 gezeigt ist. Bei solchen SoCs mit niedriger Leistungsaufnahme kann die Kerndomäne 1020, die Kerne mit höherer Leistungsaufnahme enthält, ferner eine geringere Anzahl solcher Kerne aufweisen. Zum Beispiel können in einer Implementierung zwei Kerne 1022 bereitgestellt sein, um einen Betrieb bei reduzierten Leistungsaufnahmepegeln zu ermöglichen. Zusätzlich können die verschiedenen Kerndomänen auch mit einem Unterbrechungscontroller gekoppelt sein, um ein dynamisches Austauschen von Arbeitslasten zwischen den verschiedenen Domänen zu ermöglichen.
  • In wieder anderen Ausführungsformen kann eine größere Anzahl von Kerndomänen sowie zusätzliche optionale IP-Logik vorhanden sein, da ein SoC für höhere Rechenleistungsniveaus (und Leistungsaufnahmeniveaus) zum Einbau in andere Rechenvorrichtungen wie z. B. Desktops, Server, Rechensysteme mit hoher Rechenleistung, Basisstationen usw. skaliert werden kann. Als ein solches Beispiel können 4 Kerndomänen, die jeweils eine gegebene Anzahl von nicht reihenfolgetreuen Kernen aufweisen, bereitgestellt sein. Zusätzlich zu einer optionalen GPU-Unterstützung (die beispielsweise die Form einer GPGPU annehmen kann) können ein oder mehrere Beschleuniger auch eine optimierte Hardwareunterstützung für bestimmte Funktionen (z. B. Web-Serving, Netzverarbeitung, Vermittlung usw.) vorgesehen sein. Zusätzlich kann eine Eingabe-/Ausgabe-Schnittstelle vorhanden sein, um solche Beschleuniger mit Komponenten außerhalb des Chips zu koppeln.
  • Obwohl dies in 10 nicht gezeigt ist, kann das SoC 1000 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 11 ist ein Blockdiagramm eines weiteren beispielhaften SoC gezeigt. In der Ausführungsform von 11 kann das SoC 1100 verschiedene Schaltungen enthalten, um eine hohe Leistungsfähigkeit für Multimediaanwendungen, Kommunikation und andere Funktionen zu ermöglichen. Daher eignet sich das SoC 1100 zum Einbau in eine Vielzahl tragbarer und anderer Vorrichtungen wie etwa Smartphones, Tablet-Computer, intelligente TVs usw. In dem gezeigten Beispiel umfasst das SoC 1100 eine Domäne einer zentralen Prozessoreinheit (CPU-Domäne) 1110. In einer Ausführungsform können mehrere einzelne Prozessorkerne in der CPU-Domäne 1110 vorhanden sein. Als ein Beispiel kann die CPU-Domäne 1110 ein Vierkern-Prozessor mit 4 Mehrstrang-Kernen sein. Solche Prozessoren können homogene oder heterogene Prozessoren sein, z. B. eine Mischung aus Prozessorkernen mit niedriger Leistungsaufnahme und hoher Leistungsaufnahme.
  • Weiterhin ist eine GPU-Domäne 1120 bereitgestellt, um eine fortgeschrittene Grafikverarbeitung in einer oder mehreren GPUs durchzuführen und um Grafik- und Rechen-APIs zu handhaben. Eine DSP-Einheit 1130 kann einen oder mehrere DSPs mit niedriger Leistungsaufnahme zum Handhaben von Multimediaanwendungen mit geringer Leistungsaufnahme wie Musikwiedergabe, Audio/Video usw. zusätzlich zu fortgeschrittenen Berechnungen, die während der Ausführung von Multimediabefehlen stattfinden können, bereitzustellen. Weiterhin kann eine Kommunikationseinheit 1140 verschiedene Komponenten umfassen, um eine Verbindungsfähigkeit über verschiedene Drahtlosprotokolle bereitzustellen, wie z. B. zellulare Kommunikation (einschließlich 3G/4G-LTE), drahtlose Lokalbereichsprotokolle wie Bluetooth™, IEEE 802.11 und so weiter.
  • Ferner kann ein Multimediaprozessor 1150 verwendet werden, um die Aufnahme und Wiedergabe von hochauflösendem Video- und Audioinhalt durchzuführen, einschließlich der Verarbeitung von Anwendergesten. Eine Sensoreinheit 1160 kann mehrere Sensoren und/oder einen Sensorcontroller zum Ausbilden einer Schnittstelle zu verschiedenen Sensoren außerhalb des Chips, die in einer gegebenen Plattform vorhanden sind, umfassen. Ein Bildsignalprozessor 1170 kann mit einem oder mehreren separaten ISPs versehen sein, um eine Bildverarbeitung in Bezug auf den von einer oder mehreren Kameras einer Plattform einschließlich Standbild- und Videokameras erfassten Inhalt durchzuführen.
  • Ein Anzeigeprozessor 1180 kann Unterstützung für eine Verbindung mit einer hochauflösenden Anzeige einer gegebenen Pixeldichte bereitstellen, einschließlich der Fähigkeit, Inhalt zur Wiedergabe auf einer solchen Anzeige drahtlos zu übertragen. Weiterhin kann eine Standorteinheit 1190 einen GPS-Empfänger mit Unterstützung für mehrere GPS-Konstellationen enthalten, um Anwendungen mit hochgenauen Positionsinformationen zu versorgen, die unter Verwendung eines solchen GPS-Empfängers erhalten werden. Es gilt zu verstehen, dass, obwohl dieser spezielle Satz von Komponenten in dem Beispiel von 11 gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Obwohl dies in 11 nicht gezeigt ist, kann das SoC 1100 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 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 ausgelegt, verschiedene Signalverarbeitungen bezüglich Kommunikationssignalen durchzuführen, die von dem System gesendet oder empfangen werden. Der Basisbandprozessor 1205 ist wiederum mit einem Anwendungsprozessor 1210 gekoppelt, der eine Haupt-CPU des Systems zum Ausführen eines Betriebssystems und anderer Systemsoftware zusätzlich zu Anwenderanwendungen wie vielen wohlbekannten Anwendungen zu sozialen Medien und Multimedia-Anwendungen sein kann. Der Anwendungsprozessor 1210 kann ferner dazu ausgelegt sein, mehrere andere Rechenoperationen für die Vorrichtung durchzuführen.
  • Der Anwendungsprozessor 1210 kann seinerseits mit einer Anwenderschnittstelle/Anzeige 1220, z. B. einer Berührungsbildschirmanzeige, gekoppelt sein. Außerdem kann der Anwendungsprozessor 1210 mit einem Speichersystem gekoppelt sein, das einen nichtflüchtigen Speicher, nämlich einen Flash-Speicher 1230 und einen Systemspeicher, d. h. einen dynamischen Direktzugriffsspeicher (DRAM) 1235, enthält. Wie ferner ersichtlich ist der Anwendungsprozessor 1210 mit einer Erfassungsvorrichtung 1240 wie etwa einer oder mehreren Bilderfassungsvorrichtungen, die Video- und/oder Standbilder aufzeichnen können, gekoppelt.
  • Unter weiterer Bezugnahme auf 12 ist eine universelle integrierte Schaltungskarte (UICC) 1246, die ein Teilnehmeridentitätsmodul und möglicherweise einen sicheren Speicher- und Kryptoprozessor umfasst, ebenfalls mit dem Anwendungsprozessor 1210 gekoppelt. Das System 1200 kann ferner einen Sicherheitsprozessor 1250 umfassen, der mit dem Anwendungsprozessor 1210 gekoppelt sein kann. Mehrere Sensoren 1225 können mit dem Anwendungsprozessor 1210 gekoppelt sein, um eine Eingabe einer Vielzahl von erfassten Informationen wie Beschleunigungsmesserinformationen und anderer Umgebungsinformationen zu ermöglichen. Eine Audioausgabevorrichtung 1295 kann eine Schnittstelle zum Ausgeben von Ton bereitstellen, z. B. in Form von Sprachkommunikation, abgespielten oder gestreamten Audiodaten und so weiter.
  • Wie weiter veranschaulicht ist eine kontaktfreie Nahbereichskommunikations-Schnittstelle (NFC-Schnittstelle) 1260 bereitgestellt, die in einem NFC-Nahfeld über eine NFC-Antenne 1265 kommuniziert. Es versteht sich, dass in einigen Implementierungen eine Antenne oder ein anderer Satz von Antennen bereitgestellt sein kann, um verschiedene drahtlose Funktionen zu ermöglichen.
  • Eine integrierte Leistungsmanagementschaltung (PMIC) 1215 ist mit dem Anwendungsprozessor 1210 gekoppelt, um ein Leistungsmanagement auf Plattformebene durchzuführen. Zu diesem Zweck kann die PMIC 1215 Leistungsmanagementanforderungen an den Anwendungsprozessor 1210 ausgeben, um wie gewünscht in bestimmte Niederleistungszustände einzutreten. Darüber hinaus kann die PMIC 1215 basierend auf Plattformbeschränkungen auch den Leistungspegel anderer Komponenten des Systems 1200 steuern.
  • Um zu ermöglichen, dass Kommunikation gesendet und empfangen werden kann, können verschiedene Schaltungen zwischen dem Basisbandprozessor 1205 und einer Antenne 1290 eingekoppelt sein. Insbesondere können ein Hochfrequenz-Sendeempfänger (HF-Sendeempfänger) 1270 und ein Sendeempfänger für das drahtlose Lokalbereichsnetz (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 z. B. einem drahtlosen 3G- oder 4G-Kommunikationsprotokoll zu empfangen und zu senden, beispielsweise gemäß Codemultiplexverfahren (CDMA), dem globalen System für mobile Kommunikation (GSM), Langzeitevolution (LTE) oder einem anderen Protokoll. Zusätzlich kann ein GPS-Sensor 1280 vorhanden sein. Andere drahtlose Kommunikation wie der Empfang oder das Senden von Funksignalen, z. B. AM/FM und anderen Signale, kann ebenfalls bereitgestellt werden. Zusätzlich kann über den WLAN-Sendeempfänger 1275 auch lokale drahtlose Kommunikation umgesetzt werden.
  • Obwohl dies in 12 nicht gezeigt ist, kann das System 1200 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 13 ist ein Blockdiagramm eines weiteren beispielhaften Systems gezeigt, mit dem Ausführungsformen verwendet werden können. In der Darstellung von 13 kann das System 1300 ein mobiles System mit geringer Leistungsaufnahme wie etwa ein Tablet-Computer, ein 2:1-Tablet, ein Phablet oder ein anderes konvertierbares oder eigenständiges Tablet-System sein. Wie dargestellt ist ein SoC 1310 vorhanden und kann dazu ausgelegt sein, als Anwendungsprozessor für die Vorrichtung zu arbeiten.
  • Eine Vielzahl von Vorrichtungen kann mit dem SoC 1310 gekoppelt sein. In der gezeigten Darstellung enthält ein Speicheruntersystem einen Flashspeicher 1340 und einen DRAM 1345, die mit dem SoC 1310 gekoppelt sind. Zusätzlich ist eine Berührungstafel 1320 mit dem SoC 1310 gekoppelt, um eine Anzeigefähigkeit und Anwendereingaben über Berührung einschließlich einer Bereitstellung einer virtuellen Tastatur auf einer Anzeige der Berührungstafel 1320 bereitzustellen. Um eine drahtgebundene Netzverbindungsfähigkeit bereitzustellen, ist das SoC 1310 mit einer Ethernet-Schnittstelle 1330 gekoppelt. Ein Peripheriehub 1325 ist mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu verschiedenen Peripherievorrichtungen zu ermöglichen, wie sie mit dem System 1300 durch irgendeinen von verschiedenen Anschlüssen oder anderen Verbindern verbunden sein können.
  • Zusätzlich zu der internen Leistungsmanagementschaltung und -funktionalität innerhalb des SoC 1310 ist eine PMIC 1380 mit dem SoC 1310 gekoppelt, um ein plattformbasiertes Leistungsmanagement bereitzustellen, z. B. basierend darauf, ob das System über eine Batterie 1390 oder Wechselstromleistung über einen Wechselstromadapter 1395 betrieben wird. Zusätzlich zu diesem leistungsquellenbasierten Leistungsmanagement kann die PMIC 1380 ferner Plattform-Leistungsmanagementaktivitäten basierend auf Umwelt- und Nutzungsbedingungen durchführen. Darüber hinaus kann die PMIC 1380 Steuer- und Zustandsinformationen an das SoC 1310 übermitteln, um verschiedene Leistungsmanagementaktionen innerhalb des SoC 1310 zu veranlassen.
  • Unter weiterer 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 Drahtlosprotokollen bereitstellen.
  • Wie weiter veranschaulicht können mehrere Sensoren 1360 mit dem SoC 1310 gekoppelt sein. Diese Sensoren können verschiedene Beschleunigungsmesser, Umgebungssensoren und andere Sensoren einschließlich Anwendergestensensoren umfassen. Schließlich ist ein Audio-Codec 1365 mit dem SoC 1310 gekoppelt, um eine Schnittstelle zu einer Audioausgabevorrichtung 1370 bereitzustellen. Es gilt natürlich zu verstehen, dass, obwohl diese spezielle Implementierung in 13 gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Obwohl dies in 13 nicht gezeigt ist, kann das System 1300 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Unter Bezugnahme auf 14 ist ein Blockdiagramm eines repräsentativen Computersystems wie z. B. eines Notebooks, Ultrabooks™ oder eines anderen Systems mit kleinem Formfaktor gezeigt. Ein Prozessor 1410 umfasst in einer Ausführungsform einen Mikroprozessor, einen Mehrkernprozessor, einen Mehrstrangprozessor, einen Prozessor mit äußerst niedriger Spannung, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. In der dargestellten Implementierung fungiert der Prozessor 1410 als eine Hauptverarbeitungseinheit und ein zentraler Hub für die Kommunikation mit vielen der verschiedenen Komponenten des Systems 1400 und kann eine Leistungsmanagementschaltungsanordnung enthalten, wie sie hierin beschrieben ist. Als ein Beispiel ist der Prozessor 1410 als ein SoC implementiert.
  • Der Prozessor 1410 kommuniziert in einer Ausführungsform mit einem Systemspeicher 1415. Als ein veranschaulichendes Beispiel ist der Systemspeicher 1415 mittels mehrerer Speichervorrichtungen oder Module implementiert, um eine gegebene Menge an Systemspeicher bereitzustellen.
  • Um eine dauerhafte Speicherung von Informationen wie Daten, Anwendungen, einem oder mehreren Betriebssystemen usw. bereitzustellen, kann zudem ein Massenspeicher 1420 mit dem Prozessor 1410 gekoppelt sein. In verschiedenen Ausführungsformen kann dieser Massenspeicher, um eine dünnere und leichtere Systemgestaltung zu ermöglichen und um die Systemreaktionsfähigkeit zu verbessern, mittels einer SSD implementiert sein oder der Massenspeicher kann primär unter Verwendung eines Festplattenlaufwerks (HDD) mit einer kleineren Menge an SSD-Speicher, der als SSD-Cache fungieren soll, implementiert sein, um eine nichtflüchtige Speicherung des Kontextzustands und anderer solcher Informationen während Herunterfahrereignissen zu ermöglichen, so dass ein schnelles Hochfahren bei einer Wiederaufnahme von Systemaktivitäten erfolgen kann. Wie auch in 14 gezeigt kann eine Flashvorrichtung 1422 beispielsweise über eine serielle periphere Schnittstelle (SPI) mit dem Prozessor 1410 gekoppelt sein. Diese Flashvorrichtung kann eine nichtflüchtige Speicherung von Systemsoftware einschließlich einer grundlegenden Eingabe/Ausgabe-Software (BIOS) sowie anderer Firmware des Systems bereitstellen.
  • In dem System 1400 können verschiedene Eingabe/AusgabeVorrichtungen (I/O-Vorrichtungen) vorhanden sein. In der Ausführungsform von 14 ist speziell eine Anzeige 1424 gezeigt, die eine hochauflösende LCD- oder LED-Tafel sein kann, die ferner einen Berührungsbildschirm 1425 bereitstellt. In einer Ausführungsform kann die Anzeige 1424 mit dem Prozessor 1410 über eine Anzeigezwischenverbindung gekoppelt sein, die als eine Hochleistungsgrafikverbindung implementiert sein kann. Der Berührungsbildschirm 1425 kann mit dem Prozessor 1410 über eine weitere Zwischenverbindung gekoppelt sein, die in einer Ausführungsform eine I2C-Zwischenverbindung sein kann. Wie ferner in 14 gezeigt können Anwendereingaben mittels Berührung außer über den Berührungsbildschirm 1425 auch über ein Berührungsfeld 1430 erfolgen, das innerhalb des Gehäuses ausgebildet sein kann und auch mit der gleichen I2C-Zwischenverbindung wie der Berührungsbildschirm 1425 gekoppelt sein kann.
  • Zur Wahrnehmungsberechnung und andere Zwecke können verschiedene Sensoren innerhalb des Systems vorhanden sein und können auf verschiedene Weisen mit dem Prozessor 1410 gekoppelt sein. Bestimmte Trägheits- und Umgebungssensoren können über einen Sensorhub 1440, beispielsweise über eine I2C-Zwischenverbindung, mit dem Prozessor 1410 gekoppelt sein. In der in 14 gezeigten Ausführungsform können diese Sensoren einen Beschleunigungsmesser 1441, einen Umgebungslichtsensor (ALS) 1442, einen Kompass 1443 und ein Gyroskop 1444 umfassen. Andere Umgebungssensoren können einen oder mehrere Wärmesensoren 1446 umfassen, die in einigen Ausführungsformen über einen Systemmanagementbus (SMBus) mit dem Prozessor 1410 gekoppelt sind.
  • Wie ebenfalls in 14 zu sehen ist, können verschiedene Peripherievorrichtungen über eine Zwischenverbindung mit niedriger Stiftzahl (LPC-Zwischenverbindung) mit dem Prozessor 1410 gekoppelt sein. In der gezeigten Ausführungsform können verschiedene Komponenten über einen eingebetteten Controller 1435 gekoppelt sein. Solche Komponenten können eine Tastatur 1436 (z. B. über eine PS2-Schnittstelle angekoppelt), einen Lüfter 1437 und einen Wärmesensor 1439 umfassen. In einigen Ausführungsformen kann das Berührungsfeld 1430 auch über eine PS2-Schnittstelle mit dem EC 1435 gekoppelt sein. Zusätzlich kann ein Sicherheitsprozessor wie etwa ein vertrauenswürdiges Plattformmodul (TPM) 1438 auch über diese LPC-Zwischenverbindung mit dem Prozessor 1410 gekoppelt sein.
  • Das System 1400 kann auf verschiedene Arten mit externen Vorrichtungen kommunizieren, auch drahtlos. In der in 14 gezeigten Ausführungsform sind verschiedene Drahtlosmodule vorhanden, von denen jedes einer Funkvorrichtung entsprechen kann, die für ein bestimmtes Drahtloskommunikationsprotokoll ausgelegt ist. Eine Möglichkeit für die drahtlose Kommunikation mit kurzer Reichweite wie etwa in einem Nahfeld kann über eine NFC-Einheit 1445 erfolgen, die in einer Ausführungsform mit dem Prozessor 1410 über einen SMBus kommunizieren kann. Es ist zu beachten, dass über diese NFC-Einheit 1445 Vorrichtungen in unmittelbarer Nähe miteinander kommunizieren können.
  • Wie ferner in 14 ersichtlich können zusätzliche Drahtloseinheiten andere Drahtlosmaschinen mit kurzer Reichweite einschließlich einer WLAN-Einheit 1450 und einer Bluetooth™-Einheit 1452 umfassen. Unter Verwendung der WLAN-Einheit 1450 kann Wi-Fi™-Kommunikation realisiert werden, während über die Bluetooth™-Einheit 1452 kurzreichweitige Bluetooth™-Kommunikation stattfinden kann. Diese Einheiten können über eine gegebene Verbindung mit dem Prozessor 1410 kommunizieren.
  • Zusätzlich kann drahtlose Weitbereichskommunikation, z. B. gemäß einem zellularen oder anderen drahtlosen Weitbereichsprotokoll, über eine WWAN-Einheit 1456 stattfinden, die wiederum mit einem Teilnehmeridentitätsmodul (SIM) 1457 gekoppelt sein kann. Um zusätzlich den Empfang und die Verwendung von Standortinformationen zu ermöglichen, kann zudem ein GPS-Modul 1455 vorhanden sein. Es ist zu beachten, dass in der Ausführungsform, die in 14 gezeigt ist, die WWAN-Einheit 1456 und eine integrierte Erfassungsvorrichtung wie etwa ein Kameramodul 1454 über eine gegebene Verbindung kommunizieren können.
  • Um Audioeingaben und -ausgaben bereitzustellen, kann ein Audioprozessor über einen Digitalsignalprozessor (DSP) 1460 implementiert sein, der über eine High-Definition-Audioverbindung (HDA-Verbindung) mit dem Prozessor 1410 gekoppelt sein kann. In ähnlicher Weise kann der DSP 1460 mit einem integrierten Codierer/Decodierer (CODEC) und Verstärker 1462 kommunizieren, die wiederum mit Ausgangslautsprechern 1463 gekoppelt sein können, die innerhalb des Gehäuses implementiert sein können. In ähnlicher Weise können der Verstärker und der CODEC 1462 angekoppelt sein, um Audioeingaben von einem Mikrofon 1465 zu empfangen, das in einer Ausführungsform über Dual-Array-Mikrofone (wie etwa eine digitale Mikrofonanordnung) implementiert sein kann, um Audioeingaben mit hoher Qualität bereitzustellen, um eine sprachaktivierte Steuerung von verschiedene Operationen innerhalb des Systems zu ermöglichen. Es ist auch zu beachten, dass Audioausgaben aus dem Verstärker/CODEC 1462 an eine Kopfhörerbuchse 1464 geliefert werden können. Obwohl diese speziellen Komponenten in 14 gezeigt sind, gilt es zu verstehen, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Obwohl dies in 14 nicht gezeigt ist, kann das System 1400 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Ausführungsformen können in vielen verschiedenen Systemtypen implementiert sein. Unter Bezugnahme auf 15 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 ist das Mehrprozessorsystem 1500 ein Punkt-zu-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Zwischenverbindung 1550 gekoppelt sind. Wie in 15 gezeigt können die Prozessoren 1570 und 1580 jeweils Mehrkernprozessoren sein, die einen ersten und zweiten Prozessorkern (d. h. Prozessorkerne 1574a und 1574b und Prozessorkerne 1584a und 1584b) enthalten, obwohl möglicherweise viel mehr Kerne in den Prozessoren vorhanden sein können. Jeder der Prozessoren kann eine PCU oder eine andere Leistungsmanagementlogik enthalten, um ein prozessorbasiertes Leistungsmanagement durchzuführen, wie es hierin beschrieben ist.
  • Unter weiterer Bezugnahme auf 15 umfasst der erste Prozessor 1570 ferner einen Speichercontroller-Hub (MCH) 1572 und Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1576 und 1578. Ebenso umfasst der zweite Prozessor 1580 einen MCH 1582 und PP-Schnittstellen 1586 und 1588. Wie in 15 gezeigt koppeln die MCHs 1572 und 1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, bei denen es sich um Abschnitte des Systemspeichers (z. B. DRAM) handeln kann, die lokal an die jeweiligen Prozessoren angeschlossen sind. Der erste Prozessor 1570 und der zweite Prozessor 1580 können über die P-P-Zwischenverbindungen 1562 bzw. 1564 mit einem Chipsatz 1590 verbunden sein. Wie in 15 gezeigt enthält der Chipsatz 1590 P-P-Schnittstellen 1594 und 1598.
  • Ferner umfasst der Chipsatz 1590 eine Schnittstelle 1592 zum Koppeln des Chipsatzes 1590 mit einer Hochleistungsgrafikmaschine 1538 durch eine PP-Zwischenverbindung 1539. Der Chipsatz 1590 kann wiederum über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. Wie in 15 gezeigt können verschiedene Eingabe/Ausgabe-Vorrichtungen (I/O-Vorrichtungen) 1514, zusammen mit einer Busbrücke 1518, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt, mit dem ersten Bus 1516 gekoppelt sein. Verschiedene Vorrichtungen können mit dem zweiten Bus 1520 gekoppelt sein, einschließlich z.B. einer Tastatur/Maus 1522, Kommunikationsvorrichtungen 1526 und einer Datenspeichereinheit 1528 wie beispielsweise eines Plattenlaufwerks oder einer anderen Massenspeichervorrichtung, die in einer Ausführungsform den Code 1530 enthalten kann. Ferner kann ein Audio-I/O 1524 mit dem zweiten Bus 1520 gekoppelt sein. Ausführungsformen können in andere Arten von Systemen einschließlich mobiler Vorrichtungen wie z. B. ein intelligentes Mobiltelefon, Tablet-Computer, Netbook, Ultrabook™ oder dergleichen integriert sein.
  • Obwohl dies in 15 nicht gezeigt ist, kann das System 1500 in einigen Ausführungsformen die Gesamtheit oder einen Teil der Umkonfigurationslogik, die unten unter Bezugnahme auf 17-20 beschrieben ist, umfassen.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentativen Code implementiert sein, der auf einem maschinenlesbaren Medium gespeichert ist, das Logik innerhalb einer integrierten Schaltung wie etwa eines Prozessors darstellt und/oder definiert. Zum Beispiel kann das maschinenlesbare Medium Befehle enthalten, die vielfältige Logik innerhalb des Prozessors repräsentieren. Wenn sie von einer Maschine gelesen werden, können die Befehle veranlassen, dass die Maschine die Logik zum Ausführen der hierin beschriebenen Techniken herstellt. Solche Repräsentationen, die als „IP-Kerne“ bekannt sind, sind wiederverwendbare logische Einheiten für eine integrierte Schaltung, die auf einem konkreten, maschinenlesbaren Medium als Hardwaremodell gespeichert sein können, das die Struktur der integrierten Schaltung beschreibt. 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 so hergestellt werden, dass die Schaltung Operationen ausführt, die in Verbindung mit irgendeiner der hierin beschriebenen Ausführungsformen beschrieben sind.
  • 16 ist ein Blockdiagramm, das ein IP-Kern-Entwicklungssystem 1600 darstellt, das zur Herstellung einer integrierten Schaltung zum Durchführen von Operationen gemäß einer Ausführungsform verwendet werden kann. Das IP-Kern-Entwicklungssystem 1600 kann verwendet werden, um modulare wiederverwendbare Entwürfe zu erzeugen, die in einen größeren Entwurf integriert oder zum Aufbau einer gesamten integrierten Schaltung (z. B. einer integrierten SoC-Schaltung) verwendet werden können. Eine Entwurfseinrichtung 1630 kann eine Softwaresimulation 1610 eines IP-Kern-Entwurfs in einer höheren Programmiersprache (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übertragungsebenen-Entwurf (RTL-Entwurf) erstellt oder synthetisiert werden. Der RTL-Entwurf 1615 ist eine Abstraktion des Verhaltens der integrierten Schaltung, die den Fluss digitaler Signale zwischen Hardwareregistern modelliert, einschließlich der zugehörigen Logik, die unter Verwendung der modellierten digitalen Signale ausgeführt wird. Zusätzlich zu einem RTL-Entwurf 1615 können auch Entwürfe auf niedrigerer Ebene auf der Logikebene oder der Transistorebene erstellt, entworfen oder synthetisiert werden. Daher können die speziellen Einzelheiten des anfänglichen Entwurfs und der Simulation variieren.
  • Der RTL-Entwurf 1615 oder ein Äquivalent kann ferner durch die Entwurfseinrichtung zu einem Hardwaremodell 1620 synthetisiert werden, das in einer Hardwarebeschreibungssprache (HDL) oder einer anderen Repräsentation von physikalischen Entwurfsdaten vorliegen kann. Das HDL kann weiter simuliert oder getestet werden, um den IP-Kern-Entwurf zu verifizieren. Der IP-Kern-Entwurf kann zur Lieferung an eine Fertigungseinrichtung 1665 eines Drittanbieters unter Verwendung eines nichtflüchtigen Speichers 1640 (z. B. einer Festplatte, eines Flashspeichers oder irgendeines nichtflüchtigen Speichermediums) gespeichert werden. Alternativ kann der IP-Kern-Entwurf über eine drahtgebundene Verbindung 1650 oder eine drahtlose Verbindung 1660 übertragen werden (z.B. über das Internet). Die Fertigungseinrichtung 1665 kann dann eine integrierte Schaltung herstellen, die zumindest teilweise auf dem IP-Kern-Entwurf basiert. Die hergestellte integrierte Schaltung kann dazu ausgelegt sein, Operationen gemäß der unten unter Bezugnahme auf 17-20 beschriebenen Umkonfigurationslogik durchzuführen.
  • Unter Bezugnahme auf 17 ist ein Blockdiagramm eines Systems 1700 gemäß einer oder mehreren Ausführungsformen gezeigt. Wie gezeigt, kann das System 1700 einen Host 1740 und eine beliebige Anzahl von Clients 1750 enthalten. In einigen Ausführungsformen kann der Host 1740 einem Anwender eines Clients 1750 Rechenbetriebsmittel bereitstellen. Beispielsweise kann der Host 1740 ein Server sein, der in einem Datenzentrum enthalten ist, das Cloud-Rechendienste bereitstellt. Ferner können die Clients 1750 einen beliebigen Typ von Hardware- und/oder Software-Clients umfassen, wie z. B. Computervorrichtungen, Softwareanwendungen, virtuelle Maschinen, Container, Server, Smartphones, Prozessoren, eingebettete Controller und so weiter.
  • In einer oder mehreren Ausführungsformen kann der Host 1740 eine umkonfigurierbare Vorrichtung 1710 umfassen. Zum Beispiel kann die umkonfigurierbare Vorrichtung 1710 eine Erweiterungskarte, ein Prozessor, eine integrierte Schaltung, eine in einen Prozessor eingebettete Vorrichtung, eine in einem Ein-Chip-System (SoC) enthaltene Vorrichtung und so weiter sein. Obwohl dies in 17 nicht gezeigt ist, kann der Host 1740 andere Komponenten (z. B. Speicher, Speichervorrichtung, Netzschnittstelle und so weiter) enthalten. In einigen Ausführungsformen kann die umkonfigurierbare Vorrichtung 1710 eine umkonfigurierbare Schaltung 1720 und eine Umkonfigurationslogik 1730 enthalten. Die umkonfigurierbare Schaltung 1720 kann einen Satz von verschalteten logischen Blöcken (LBs) 1725 enthalten. In einigen Ausführungsformen sind die LBs 1725 und/oder die Zwischenverbindungen in der umkonfigurierbaren Schaltung 1720 gemäß einem Datenabbild konfiguriert, das eine Umkonfiguration spezifiziert (hier als „Umkonfigurationsabbild“ bezeichnet). Beispielsweise kann der Client 1750 ein Umkonfigurationsabbild senden, um die umkonfigurierbare Schaltung 1720 neu zu konfigurieren. In einigen Ausführungsformen kann die umkonfigurierbare Schaltung 1720 eine FPGA sein.
  • In einer oder mehreren Ausführungsformen kann die Umkonfigurationslogik 1730 die Umkonfiguration der umkonfigurierbaren Schaltung 1720 steuern. Zum Beispiel kann die Umkonfigurationslogik 1730 validieren, dass eine Anwenderentität berechtigt ist, die umkonfigurierbare Schaltung 1720 neu zu konfigurieren. Eine Anwenderentität kann eine Person, eine Anwendung, eine Rolle, eine Organisation und so weiter umfassen. Ferner kann die Umkonfigurationslogik 1730 ein Abbild validieren, bevor es verwendet werden kann, um die umkonfigurierbare Schaltung 1720 neu zu konfigurieren. In einigen Ausführungsformen kann die Umkonfigurationslogik 1730 die Konfiguration der LBs 1725 und zugehörigen Zwischenverbindungen unter Verwendung eines validierten Umkonfigurationsabbildes steuern. Die Validierung von Anwenderentitäten und/oder Umkonfigurationsabbildern ist weiter unten unter Bezugnahme auf 18-20 beschrieben.
  • In einigen Ausführungsformen kann die Umkonfigurationslogik 1730 eine virtualisierte Umkonfiguration der umkonfigurierbaren Vorrichtung 1710 bereitstellen. Zum Beispiel kann die Umkonfigurationslogik 1730 eine Abstraktionsschicht zwischen der umkonfigurierbaren Vorrichtung 1710 und mehreren Anwenderentitäten (z. B. Anwenderentitäten, die zwei verschiedenen Organisationen zugeordnet sind) bereitstellen. Ferner kann die Umkonfigurationslogik 1730 jeder Anwenderentität eine unabhängige logische Ansicht der umkonfigurierbaren Vorrichtung 1710 liefern. Dementsprechend können mehrere Anwenderentitäten die gleiche umkonfigurierbare Vorrichtung 1710 separat und sicher umkonfigurieren, ohne sich gegenseitig zu stören oder einander zu beeinflussen.
  • Unter Bezugnahme auf 18A ist eine beispielhafte Umkonfigurationslogik 1800 gemäß einer oder mehreren Ausführungsformen gezeigt. Die Umkonfigurationslogik 1800 kann im Allgemeinen einer beispielhaften Ausführungsform eines Teils oder der Gesamtheit der Umkonfigurationslogik 1730, die in 17 gezeigt ist, entsprechen. Somit kann die Umkonfigurationslogik 1800 einer bestimmten umkonfigurierbaren Vorrichtung (z. B. der in 17 gezeigten umkonfigurierbaren Vorrichtung 1710) zugeordnet sein. Wie in 18A gezeigt kann die Umkonfigurationslogik 1800 einen Umkonfigurationscontroller 1810 enthalten. In einigen Ausführungsformen kann der Umkonfigurationscontroller 1810 eine Hardwarevorrichtung sein und kann in der Lage sein, maschinenlesbare Befehle (z. B. Software und/oder Firmware) auszuführen.
  • In einer oder mehreren Ausführungsformen kann der Umkonfigurationscontroller 1810 eine Richtlinienschnittstelle 1825 und einen Satz von Konfigurationsschnittstellen 1820A-1820C (auch allgemein als Konfigurationsschnittstellen 1820 bezeichnet) umfassen. Die Schnittstellen 1825 und 1820 können in Hardware (z.B. Netzschnittstellen, lokalen Busschnittstellen, Speicherregistern usw.) implementiert sein. Diese Schnittstellen können verschiedene Protokolle verwenden, wie etwa Ethernet, Peripheriekomponenten-Zwischenverbindung (PCI), physische Funktionen von PCI Express (physische PCIe-Funktionen), virtuelle PCIe-Funktionen und so weiter.
  • In einer oder mehreren Ausführungsformen können die Konfigurationsschnittstellen 1820A-1820C verschiedene Umkonfigurationsabbilder 1822A-1822C empfangen. In einigen Ausführungsformen kann jede Konfigurationsschnittstelle 1820 eindeutig einer bestimmten Anwenderentität zugeordnet sein. Zum Beispiel kann die Konfigurationsschnittstelle 1820A für die Verwendung durch eine erste Anwenderentität reserviert sein, die Konfigurationsschnittstelle 1820B für die Verwendung durch eine zweite Anwenderentität reserviert sein und so weiter. In einigen Ausführungsformen kann jede Konfigurationsschnittstelle 1820 für den Empfang von Umkonfigurationsabbildern validiert sein (z. B. autorisiert sein, einen oder mehrere Abschnitte der in 17 gezeigten umkonfigurierbaren Schaltung 1720 zu modifizieren.
  • In einer oder mehreren Ausführungsformen kann die Richtlinienschnittstelle 1825 Richtlinieninformationen bezüglich der Umkonfiguration der umkonfigurierbaren Vorrichtung, die der Umkonfigurationssteuereinheit 1810 zugeordnet ist, kommunizieren. Beispielsweise kann eine Verwaltungsentität (z. B. ein Systemadministrator, der einen Client 1750 verwendet, der in 17 gezeigt ist) die Richtlinienschnittstelle 1825 verwenden, um eine Anwenderrichtlinie 1835 und/oder eine Abbildrichtlinie 1845 für den Umkonfigurationscontroller 1810 bereitzustellen.
  • In einigen Ausführungsformen kann eine Anwenderrichtlinie 1835 Informationen umfassen, die Anwenderentitäten zugeordnet sind, die autorisiert sind, die umkonfigurierbare Vorrichtung neu zu konfigurieren. Zum Beispiel kann eine Anwenderrichtlinie 1835 Identitäten von autorisierten Anwenderentitäten, Eigenschaften von autorisierten Anwenderentitäten (z. B. Jobtitel, Gruppenzugehörigkeit usw.), Sicherheits- und/oder Verschlüsselungsinformationen (digitale Schlüssel/Signaturen, digitale Zertifikate usw.), Privilegien und/oder Rechte jeder Anwenderentität, spezifische Abschnitte einer umkonfigurierbaren Schaltung (z. B. ein bestimmter Satz der in 17 gezeigten LBs 1725), zu deren Umkonfiguration eine bestimmte Anwenderentität autorisiert ist, gültige Abbildtypen jeder Anwenderentität und so weiter angeben. Ferner kann eine Anwenderrichtlinie 1835 in einigen Ausführungsformen angeben, dass eine bestimmte Konfigurationsschnittstelle zum Empfangen von Umkonfigurationsabbildern gültig ist und/oder einer autorisierten Anwenderentität zugeordnet ist.
  • In einigen Ausführungsformen kann eine Abbildrichtlinie 1845 Informationen umfassen, die gültigen Abbildern zur Umkonfiguration der umkonfigurierbaren Vorrichtung zugeordnet sind. Zum Beispiel kann eine Abbildrichtlinie 1845 gültige Arten von Konfigurationen, gültige Funktionen, gültige Abschnitte zur Umkonfiguration einer umkonfigurierbaren Schaltung, gültige digitale Signaturen von Umkonfigurationsabbildern und so weiter angeben. In einem weiteren Beispiel kann eine Abbildrichtlinie 1845 angeben, dass ein bestimmtes Umkonfigurationsabbild nur an einer bestimmten Konfigurationsschnittstelle empfangen werden kann (z. B. kann das Umkonfigurationsabbild 1822A nur an der Konfigurationsschnittstelle 1820A empfangen werden). In einigen Ausführungsformen können die empfangenen Umkonfigurationsabbilder 1822 gemäß einer Abbildrichtlinie 1845 verschlüsselt sein. Ferner kann die Umkonfigurationssteuerung 1810 in einigen Ausführungsformen einen Speicher oder ein Speichermedium (in 18A nicht gezeigt) enthalten, um eine(s) oder mehrere Anwenderrichtlinien 1835, Abbildrichtlinien 1845 und/oder Umkonfigurationsabbilder 1822 zu speichern.
  • In einer oder mehreren Ausführungsformen kann der Umkonfigurationscontroller 1810 einen Anwenderentitätsvalidierer 1830, einen Abbildvalidierer 1840 und einen Schaltungscontroller 1850 umfassen, die jeweils in Hardware, maschinenlesbaren Befehlen (z. B. Software und/oder Firmware) oder einer beliebigen Kombination davon implementiert sein können. In einer oder mehreren Ausführungsformen kann der Anwenderentitätsvalidierer 1830 Konfigurationsschnittstellen 1820 und/oder Anwenderentitäten validieren, die versuchen, eine umkonfigurierbare Schaltung neu zu konfigurieren. Zum Beispiel kann der Anwenderentitätsvalidierer 1830 eine Anwenderrichtlinie 1835 verwenden, um eine Konfigurationsschnittstelle 1820 dafür zu validieren, ein Umkonfigurationsabbild 1822 zu empfangen. In einem weiteren Beispiel kann der Anwenderentitätsvalidierer 1830 eine Anwenderrichtlinie 1835 verwenden, um eine Anwenderentität dafür zu autorisieren, ein Umkonfigurationsabbild 1822 bereitzustellen. In einigen Ausführungsformen kann der Anwenderentitätsvalidierer 1830 eine Anwenderrichtlinie 1835 verwenden, um Sicherheits- und/oder Verschlüsselungsinformationen zu validieren, die einer Anwenderentität zugeordnet sind (z. B. digitale Signaturen, digitale Zertifikate usw.).
  • In einer oder mehreren Ausführungsformen kann der Abbildvalidierer 1840 ein Umkonfigurationsabbild 1822 validieren, das zum Umkonfigurieren einer umkonfigurierbaren Schaltung verwendet werden soll. In einigen Ausführungsformen kann der Abbildvalidierer 1840 Abbildrichtlinien 1845 verwenden, um Umkonfigurationsabbilder 1822 für eine zugehörige umkonfigurierbare Schaltung zu validieren. Zum Beispiel kann der Abbildvalidierer 1840 eine Abbildrichtlinie 1845 verwenden, um zu bestimmen, ob ein Umkonfigurationsabbild 1822 eine gültige digitale Signatur enthält. In einem weiteren Beispiel kann der Abbildvalidierer 1840 eine Abbildrichtlinie 1845 verwenden, um zu bestimmen, ob ein Umkonfigurationsabbild 1822 nur autorisierte Abschnitte oder Funktionen einer umkonfigurierbaren Schaltung betrifft. In noch einem weiteren Beispiel kann der Abbildvalidierer 1840 eine Abbildrichtlinie 1845 verwenden, um zu bestimmen, ob ein Umkonfigurationsabbild 1822 ähnlich zu oder identisch mit Bildern ist, von denen bekannt ist, dass sie schädlich oder bösartig sind.
  • In einer oder mehreren Ausführungsformen kann der Schaltungscontroller 1850 ein validiertes Umkonfigurationsabbild 1822 verwenden, um eine umkonfigurierbare Schaltung (z. B. die in 17 gezeigte umkonfigurierbare Schaltung 1720) neu zu konfigurieren. Zum Beispiel kann der Schaltungscontroller 1850 eine Konfiguration von Logikblöcken und Zwischenverbindungen einer umkonfigurierbaren Schaltung so modifizieren, wie es durch das Umkonfigurationsabbild 1822 spezifiziert ist.
  • In einigen Ausführungsformen kann der Umkonfigurationscontroller 1810 verschlüsselte Umkonfigurationsabbilder 1822 verarbeiten. Es sei beispielsweise angenommen, dass eine Anwenderentität (z. B. unter Verwendung eines in 17 gezeigten Clients 1750) vielleicht ein verschlüsseltes Umkonfigurationsabbild 1822 über ein Netz liefert. Der Anwenderentitätsvalidierer 1830 und/oder der Abbildvalidierer 1840 können die Anwenderrichtlinie 1835 und/oder die Abbildrichtlinie 1845 verwenden, um das verschlüsselte Umkonfigurationsabbild 1822 zu entschlüsseln. Das entschlüsselte Umkonfigurationsabbild 1822 kann durch den Abbildvalidierer 1840 validiert werden und verwendet, um eine umkonfigurierbare Schaltung neu zu konfigurieren. In einigen Ausführungsformen können die Umkonfigurationsabbilder 1822 unter Verwendung von Sicherheitsmerkmalen geschützt werden, die von der Plattform der umkonfigurierbaren Schaltung bereitgestellt werden (z. B. eingebrannte Schlüssel, Gesamtspeicherverschlüsselung, Software-Wacherweiterungen, Fernbestätigung, Inline-Verschlüsselung/Entschlüsselung usw.).
  • In einigen Ausführungsformen kann der Umkonfigurationscontroller 1810 eine virtualisierte Umkonfiguration einer umkonfigurierbaren Schaltung bereitstellen. Es sei beispielsweise angenommen, dass drei verschiedene Anwenderentitäten jeweils den Konfigurationsschnittstellen 1820A-1820C zugeordnet sind. In diesem Beispiel kann eine erste Anwenderentität ein Umkonfigurationsabbild 1822 ohne Wahrnehmbarkeit der Umkonfigurationsabbilder 1822, die von den anderen Anwenderentitäten geliefert werden, bereitstellen. Ferner kann in einigen Ausführungsformen jede Anwenderentität einen Abschnitt der umkonfigurierbaren Schaltung neu konfigurieren, der für diese Anwenderentität reserviert ist. Dementsprechend kann verhindert werden, dass eine Anwenderentität auf die Verarbeitungsaktivitäten anderer Anwenderentitäten zugreift oder diese betrachtet. Daher können mehrere Anwenderentitäten die gleiche umkonfigurierbare Vorrichtung separat und sicher umkonfigurieren, ohne sich gegenseitig zu stören und/oder zu beeinflussen.
  • Unter Bezugnahme auf 18B ist eine beispielhafte Umkonfigurationslogik 1802 gemäß einer oder mehreren Ausführungsformen gezeigt. Die Umkonfigurationslogik 1802 kann eine alternative Ausführungsform der in 18A gezeigten Umkonfigurationslogik 1800 sein. Es sei angenommen, dass die Komponenten der Umkonfigurationslogik 1802 im Wesentlichen äquivalent zu den Komponenten der Umkonfigurationslogik 1800 mit den gleichen Bezeichnungen sind.
  • Wie in 18B gezeigt kann die Umkonfigurationslogik 1802 eine Umkonfigurationsanwendung 1815 und einen Umkonfigurationscontroller 1810 umfassen. Die Umkonfigurationsanwendung 1815 kann in Software implementiert sein (z. B. maschinenlesbaren Befehlen, die von einem Allzweckprozessor (in 18B nicht gezeigt) ausgeführt werden).. Ferner kann der Umkonfigurationscontroller 1810 in Hardware implementiert sein (z. B. als Hardwarecontroller).
  • Wie in 18B gezeigt kann die Umkonfigurationsanwendung 1815 die Richtlinienschnittstelle 1825, den Anwenderentitätsvalidierer 1830 und den Abbildvalidierer 1840 umfassen. Ferner kann der Umkonfigurationscontroller 1810 den Schaltungscontroller 1850 und die Konfigurationsschnittstellen 1820 umfassen. In 18B kann der Umkonfigurationscontroller 1810 an die Umkonfigurationsanwendung 1815 eine Nachricht 1860 senden, die angibt, dass ein Umkonfigurationsabbild über eine bestimmte Konfigurationsschnittstelle 1820 empfangen worden ist. In einigen Ausführungsformen kann die Umkonfigurationsanwendung 1815 die bestimmte Konfigurationsschnittstelle 1820 (z. B. durch den Anwenderentitätsvalidierer 1830 unter Verwendung einer Anwenderrichtlinie 1835) und das empfangene Umkonfigurationsabbild (z. B. durch den Abbildvalidierer 1840 unter Verwendung einer Abbildrichtlinie 1845) validieren. Wenn die Konfigurationsschnittstelle 1820 und das empfangene Umkonfigurationsabbild validiert sind, kann die Umkonfigurationsanwendung 1815 an den Umkonfigurationscontroller 1810 eine Nachricht 1865 senden, die angibt, dass das empfangene Umkonfigurationsabbild zum Umkonfigurieren einer umkonfigurierbaren Schaltung verwendet werden kann. Als Antwort auf die Nachricht 1865 kann der Schaltungscontroller 1850 die umkonfigurierbare Schaltung gemäß dem empfangenen Umkonfigurationsabbild modifizieren.
  • Unter Bezugnahme auf 18C ist eine beispielhafte Umkonfigurationslogik 1804 gemäß einer oder mehreren Ausführungsformen gezeigt. Die Umkonfigurationslogik 1804 kann eine alternative Ausführungsform der Umkonfigurationslogik 1800 (in 18A gezeigt) und/oder der Umkonfigurationslogik 1802 (in 18B gezeigt) sein. Es sei angenommen, dass die Komponenten der Umkonfigurationslogik 1804 im Wesentlichen äquivalent zu den Komponenten der Umkonfigurationslogik 1800 und/oder der Umkonfigurationslogik 1802 mit den gleichen Bezeichnungen sind.
  • Wie in 18C gezeigt kann die Umkonfigurationslogik 1804 eine Umkonfigurationsanwendung 1815 und einen Schaltungscontroller 1850 umfassen. Die Umkonfigurationsanwendung 1815 kann in Software implementiert sein und der Schaltungscontroller 1850 kann in Hardware implementiert sein.
  • In der beispielhaften Ausführungsform von 18C kann die Umkonfigurationsanwendung 1815 die Richtlinienschnittstelle 1825, die Konfigurationsschnittstellen 1820, den Anwenderentitätsvalidierer 1830 und den Abbildvalidierer 1840 enthalten. Die Umkonfigurationsanwendung 1815 kann ein Umkonfigurationsabbild über eine bestimmte Konfigurationsschnittstelle 1820 empfangen und kann die bestimmte Konfigurationsschnittstelle 1820 (z. B. durch den Anwenderentitätsvalidierer 1830 unter Verwendung einer Anwenderrichtlinie 1835) und das empfangene Umkonfigurationsabbild (z. B. durch den Abbildvalidierer 1840 unter Verwendung einer Abbildrichtlinie 1845) validieren. Wenn die Konfigurationsschnittstelle 1820 und das empfangene Umkonfigurationsabbild validiert sind, kann die Umkonfigurationsanwendung 1815 das Umkonfigurationsabbild an den Schaltungscontroller 1850 senden. Der Schaltungscontroller 1850 kann die umkonfigurierbare Schaltung basierend auf dem Umkonfigurationsabbild neu konfigurieren.
  • Unter Bezugnahme auf 18D ist eine beispielhafte Umkonfigurationslogik 1806 gemäß einer oder mehreren Ausführungsformen gezeigt. Die Umkonfigurationslogik 1806 kann eine alternative Ausführungsform der Umkonfigurationslogik 1800 (in 18A gezeigt), der Umkonfigurationslogik 1802 (in 18B gezeigt) und/oder der Umkonfigurationslogik 1804 (in 18C gezeigt) sein. Es sei angenommen, dass die Komponenten der Umkonfigurationslogik 1806 im Wesentlichen äquivalent zu den Komponenten der Umkonfigurationslogik 1800, der Umkonfigurationslogik 1802 und/oder der Umkonfigurationslogik 1804 mit den gleichen Bezeichnungen sind.
  • Wie in 18D gezeigt kann die Umkonfigurationslogik 1806 eine Umkonfigurationsanwendung 1815 und einen Umkonfigurationscontroller 1810 umfassen. Die Umkonfigurationsanwendung 1815 kann in Software implementiert sein und der Umkonfigurationscontroller 1810 kann in Hardware implementiert sein.
  • In der beispielhaften Ausführungsform von 18D kann die Umkonfigurationsanwendung 1815 die Konfigurationsschnittstellen 1820 umfassen. Ferner kann der Umkonfigurationscontroller 1810 den Anwenderentitätsvalidierer 1830, den Abbildvalidierer 1840, den Schaltungscontroller 1850, die Richtlinienschnittstelle 1825 und eine Konfigurationsschnittstelle 1870 umfassen.
  • Die Umkonfigurationsanwendung 1815 kann ein Umkonfigurationsabbild über eine bestimmte Konfigurationsschnittstelle 1820 empfangen und kann das empfangene Umkonfigurationsabbild über die Konfigurationsschnittstelle 1870 an den Umkonfigurationscontroller 1810 senden. Der Umkonfigurationscontroller 1810 kann die bestimmte Konfigurationsschnittstelle 1820 (z. B. durch den Anwenderentitätsvalidierer 1830 unter Verwendung einer Anwenderrichtlinie 1835) und das empfangene Umkonfigurationsabbild (z. B. durch den Abbildvalidierer 1840 unter Verwendung einer Abbildrichtlinie 1845) validieren. Wenn die Konfigurationsschnittstelle 1820 und das empfangene Umkonfigurationsabbild validiert sind, kann der Schaltungscontroller 1850 die umkonfigurierbare Schaltung basierend auf dem Umkonfigurationsabbild neu konfigurieren.
  • Unter Bezugnahme auf 19 ist ein Ablaufdiagramm eines Verfahrens 1900 zur Datenauswahl gemäß einer oder mehreren Ausführungsformen gezeigt. In verschiedenen Ausführungsformen kann das Verfahren 1900 durch eine Verarbeitungslogik ausgeführt werden, die Hardware (z. B. eine Verarbeitungsvorrichtung, eine Schaltungsanordnung, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Befehle, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Implementierungen kann das Verfahren 1900 unter Verwendung von einer oder mehreren Komponenten durchgeführt werden, die in 17-18D gezeigt sind (z. B. den Umkonfigurationslogiken1730, 1800, 1802, 1804, 1806). In Firmware- oder Software-Ausführungsformen kann das Verfahren 1900 durch computerausgeführte Befehle implementiert werden, die in einem nichtflüchtigen maschinenlesbaren Medium wie beispielsweise einer optischen Speichervorrichtung, Halbleiter- oder Magnetspeichervorrichtung gespeichert sind. Das maschinenlesbare Medium kann Daten speichern, die, wenn sie von mindestens einer Maschine verwendet werden, veranlassen, dass die mindestens eine Maschine mindestens eine integrierte Schaltung zum Durchführen eines Verfahrens herstellt. Zur Veranschaulichung können die in dem Verfahren 1900 involvierten Aktionen im Folgenden unter Bezugnahme auf 17-18D beschrieben werden, die Beispiele gemäß einer oder mehreren Ausführungsformen zeigen. Der Umfang der verschiedenen hier diskutierten Ausführungsformen ist jedoch in dieser Hinsicht nicht beschränkt.
  • Der Block 1910 kann ein Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie über eine Richtlinienschnittstelle umfassen. Zum Beispiel kann der Umkonfigurationscontroller 1810 unter Bezugnahme auf 18A eine Anwenderrichtlinie 1835 und eine Abbildrichtlinie 1845 über die Richtlinienschnittstelle 1825 empfangen. In einigen Ausführungsformen können die Anwenderrichtlinie 1835 und die Abbildrichtlinie 1845 von einer Managemententität (z.B. einem Administrator unter Verwendung eines Clients 1750, der in 17 gezeigt ist) empfangen werden.
  • Der Block 1920 kann ein Empfangen eines ersten Umkonfigurationsabbildes über eine erste Konfigurationsschnittstelle mehrerer Konfigurationsschnittstellen umfassen. Zum Beispiel kann der Umkonfigurationscontroller 1810 unter Bezugnahme auf 18A das Umkonfigurationsabbild 1822A über die Konfigurationsschnittstelle 1820A empfangen. In einigen Ausführungsformen kann die Konfigurationsschnittstelle 1820A einer ersten Anwenderentität eindeutig zugeordnet sein.
  • Der Block 1930 kann ein Validieren der ersten Konfigurationsschnittstelle basierend auf der Anwenderrichtlinie umfassen. Zum Beispiel kann der Anwenderentitätsvalidierer 1830 unter Bezugnahme auf 18A unter Verwendung der Anwenderrichtlinie 1835 die Konfigurationsschnittstelle 1820A validieren. In einigen Ausführungsformen kann das Validieren der Konfigurationsschnittstelle 1820A ein Bestimmen, dass eine zugeordnete Anwenderentität dazu autorisiert ist, das Umkonfigurationsabbild 1822A zu liefern, umfassen.
  • Der Block 1940 kann ein Validieren des ersten Umkonfigurationsabbildes basierend auf der Abbildrichtlinie umfassen. Zum Beispiel kann der Abbildvalidierer 1840 unter Bezugnahme auf 18A das Umkonfigurationsabbild 1822A unter Verwendung der Abbildrichtlinie 1845 validieren. In einigen Ausführungsformen kann das Validieren des Umkonfigurationsabbilds 1822A ein Bestimmen, ob das Umkonfigurationsabbild 1822A eine gültige digitale Signatur enthält, nur autorisierte Abschnitte der umkonfigurierbaren Schaltung betrifft, ähnlich zu Umkonfigurationsabbildern ist, die als bösartig bekannt sind, und so weiter umfassen.
  • Der Block 1950 kann als Antwort auf eine Bestimmung, dass die erste Konfigurationsschnittstelle und das erste Umkonfigurationsabbild beide gültig sind, ein Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des ersten Umkonfigurationsabbildes umfassen. Zum Beispiel kann der Schaltungscontroller 1850 unter Bezugnahme auf 18A logische Blöcke und Zwischenverbindungen der umkonfigurierbaren Schaltung basierend auf dem validierten Umkonfigurationsabbild 1822A neu konfigurieren. Nach dem Block 1950 ist das Verfahren 1900 abgeschlossen.
  • Unter Bezugnahme auf 20 ist ein Ablaufdiagramm eines Verfahrens 2000 zur Datenauswahl gemäß einer oder mehreren Ausführungsformen gezeigt. In verschiedenen Ausführungsformen kann das Verfahren 2000 durch eine Verarbeitungslogik ausgeführt werden, die Hardware (z. B. eine Verarbeitungsvorrichtung, eine Schaltungsanordnung, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (z. B. Befehle, die auf einer Verarbeitungsvorrichtung ausgeführt werden) oder eine Kombination davon umfassen kann. In einigen Implementierungen kann das Verfahren 2000 unter Verwendung von einer oder mehreren Komponenten durchgeführt werden, die in 17-18D gezeigt sind (z. B. den Umkonfigurationslogiken1730, 1800, 1802, 1804, 1806). In Firmware- oder Software-Ausführungsformen kann das Verfahren 2000 durch computerausgeführte Befehle implementiert werden, die in einem nichtflüchtigen maschinenlesbaren Medium wie beispielsweise einer optischen Speichervorrichtung, Halbleiter- oder Magnetspeichervorrichtung gespeichert sind. Das maschinenlesbare Medium kann Daten speichern, die, wenn sie von mindestens einer Maschine verwendet werden, veranlassen, dass die mindestens eine Maschine mindestens eine integrierte Schaltung zum Durchführen eines Verfahrens herstellt. Zur Veranschaulichung können die in dem Verfahren 2000 involvierten Aktionen im Folgenden unter Bezugnahme auf 17-18D beschrieben werden, die Beispiele gemäß einer oder mehreren Ausführungsformen zeigen. Der Umfang der verschiedenen hier diskutierten Ausführungsformen ist jedoch in dieser Hinsicht nicht beschränkt.
  • Der Block 2010 kann ein Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie über eine Richtlinienschnittstelle umfassen. Zum Beispiel kann der Umkonfigurationscontroller 1810 unter Bezugnahme auf 18A eine Anwenderrichtlinie 1835 und eine Abbildrichtlinie 1845 über die Richtlinienschnittstelle 1825 empfangen.
  • Der Block 2020 kann ein Empfangen eines verschlüsselten Umkonfigurationsabbildes über eine erste Konfigurationsschnittstelle mehrerer Konfigurationsschnittstellen umfassen. Zum Beispiel kann der Umkonfigurationscontroller 1810 unter Bezugnahme auf 18A ein verschlüsseltes Umkonfigurationsabbild 1822A über die Konfigurationsschnittstelle 1820A empfangen. In einigen Ausführungsformen kann das Umkonfigurationsabbild 1822A verschlüsselt sein, um Privatsphäre und/oder Sicherheit für die Anwenderentität der Konfigurationsschnittstelle 1820A zu bieten.
  • Der Block 2030 kann ein Validieren der ersten Konfigurationsschnittstelle basierend auf der Anwenderrichtlinie umfassen. Zum Beispiel kann der Anwenderentitätsvalidierer 1830 unter Bezugnahme auf 18A die Konfigurationsschnittstelle 1820A unter Verwendung der Anwenderrichtlinie 1835 validieren.
  • Der Block 2040 kann ein Entschlüsseln des verschlüsselten Umkonfigurationsabbildes umfassen, um ein entschlüsseltes Umkonfigurationsabbild zu erzeugen. Zum Beispiel kann der Abbildvalidierer 1840 unter Bezugnahme auf 18A das verschlüsselte Umkonfigurationsabbild 1822 basierend auf der Abbildrichtlinie 1845 entschlüsseln.
  • Der Block 2050 kann ein Validieren einer Signatur des entschlüsselten Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie umfassen. Zum Beispiel kann der Abbildvalidierer 1840 unter Bezugnahme auf 18A die Abbildrichtlinie 1845 verwenden, um zu bestimmen, dass das entschlüsselte Umkonfigurationsabbild 1822A eine gültige digitale Signatur enthält.
  • Der Block 2060 kann ein Bestimmen unter Verwendung der Abbildrichtlinie, dass das entschlüsselte Umkonfigurationsabbild dazu autorisiert ist, einen ersten Abschnitt einer umkonfigurierbaren Schaltung zu modifizieren, umfassen. Zum Beispiel kann der Abbildvalidierer 1840 unter Bezugnahme auf 17 und 18A die Abbildrichtlinie 1845 verwenden, um zu bestimmen, dass das entschlüsselte Umkonfigurationsabbild 1822A nur einen autorisierten Abschnitt der umkonfigurierbaren Schaltung 1720 (z. B. einen definierten Satz von LBs 1725 und ihre Zwischenverbindungen) modifiziert.
  • Der Block 2070 kann ein Umkonfigurieren des ersten Abschnitts der umkonfigurierbaren Schaltung unter Verwendung des entschlüsselten Umkonfigurationsabbildes umfassen. Zum Beispiel kann der Schaltungscontroller 1850 unter Bezugnahme auf 18A dann, wenn die erste Konfigurationsschnittstelle und die Signatur des entschlüsselten Umkonfigurationsabbildes gültig sind und wenn das entschlüsselte Umkonfigurationsabbild dazu autorisiert ist, den ersten Abschnitt zu modifizieren, den ersten Abschnitt der umkonfigurierbaren Schaltung unter Verwendung des entschlüsselten Umkonfigurationsabbilds 1822A neu konfigurieren. Nach dem Block 2070 ist das Verfahren 2000 abgeschlossen.
  • Es ist zu beachten, dass, obwohl 17-20 zahlreiche beispielhafte Implementierungen darstellen, andere Variationen möglich sind. Es wird in Betracht gezogen, dass eine oder mehrere Ausführungsformen in den beispielhaften Vorrichtungen und Systemen implementiert werden können, die nachstehend unter Bezugnahme auf 1-16. beschrieben sind.
  • Es ist zu beachten, dass die in 1-20 gezeigten Beispiele zur Veranschaulichung gezeigt sind und nicht irgendwelche Ausführungsformen einschränken sollen. Es ist speziell zu beachten, dass, obwohl Ausführungsformen aus Gründen der Klarheit in vereinfachter Form gezeigt sein können, Ausführungsformen eine beliebige Anzahl und/oder Anordnung von Prozessoren, Kernen und/oder zusätzlichen Komponenten (z. B. Bussen, Speichermedien, Verbinder, Leistungskomponenten, Puffer, Schnittstellen usw.) aufweisen können. Zum Beispiel wird in Betracht gezogen, dass einige Ausführungsformen eine beliebige Anzahl von Komponenten zusätzlich zu den gezeigten enthalten können und dass in bestimmten Implementierungen eine andere Anordnung der gezeigten Komponenten auftreten kann. Darüber hinaus wird in Betracht gezogen, dass die Einzelheiten in den Beispielen, die in 1-20 gezeigt sind, irgendwo in einer oder mehreren Ausführungsformen verwendet werden können.
  • Obwohl einige Ausführungsformen unter Bezugnahme auf spezifische integrierte Schaltungen beschrieben sind, beispielsweise auf Computerplattformen oder Prozessoren, sind andere Ausführungsformen auf andere Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren der hierin beschriebenen Ausführungsformen können auf andere Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf irgendeinen bestimmten Typ von Computersystemen beschränkt. Das heißt, offenbarte Ausführungsformen können in vielen unterschiedlichen Systemtypen verwendet werden, die von Servercomputern (z. B. Tower, Rack, Blade, Mikroserver usw.) über Kommunikationssysteme, Speichersysteme, Desktopcomputer beliebiger Konfiguration zu Laptop-, Notebook- und Tablet-Computern (einschließlich 2:1-Tablets, Phablets usw.) reichen, und können auch in anderen Vorrichtungen wie etwa tragbaren Vorrichtungen, Ein-Chip-Systemen (SoCs) und eingebetteten Anwendungen verwendet werden. Einige Beispiele für tragbare Vorrichtungen sind Mobiltelefone wie Smartphones, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und tragbare PCs. Eingebettete Anwendungen können typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), Netzcomputer (NetPC), Beistellkästen, Netzhubs, Weitbereichsnetz-Switches (WAN-Switches), am Körper tragbare Vorrichtungen oder jedes andere System, das die unten gelehrten Funktionen und Operationen ausführen kann, umfassen. Mehr noch können Ausführungsformen in mobilen Endgeräten mit standardmäßiger Sprachfunktionalität wie Mobiltelefonen, Smartphones und Phablets und/oder in nichtmobilen Endgeräten ohne eine drahtlose Kommunikationsfähigkeit über standardmäßige Sprachfunktion wie viele am Körper tragbare Vorrichtungen, Tablets, Notebooks, Desktops, Mikroserver, Server und so weiter implementiert werden. Darüber hinaus sind die hier beschriebenen Vorrichtungen, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können sich auch auf Softwareimplementierungen beziehen.
  • Ausführungsformen können in Code implementiert sein und können auf einem nichtflüchtigen Speichermedium gespeichert sein, auf dem Befehle gespeichert sind, die zum Programmieren eines Systems zum Ausführen der Befehle verwendet werden können. Ausführungsformen können auch in Daten implementiert sein und können auf einem nichtflüchtigen Speichermedium gespeichert sein, das, wenn es von mindestens einer Maschine verwendet wird, veranlasst, dass die mindestens eine Maschine mindestens eine integrierte Schaltung zum Durchführen einer oder mehrerer Operationen fertigt. Das Speichermedium kann einen beliebigen Typ von Laufwerk einschließlich Disketten, optischen Scheiben, Festkörperlaufwerken (SSDs), CD-ROMs, CD-RWs und magnetooptischen Platten, Halbleiterbauelementen wie beispielsweise Nur-Lese-Speichern (ROMs), Direktzugriffsspeicher (RAMs) wie dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Nur-LeseSpeicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs), magnetische oder optische Karten oder jede andere Art von Medien, die zum Speichern elektronischer Befehle geeignet sind, umfassen, ist aber nicht darauf beschränkt.
  • Die folgenden Punkte und/oder Beispiele betreffen weitere Ausführungsformen.
  • In Beispiel 1 enthält eine umkonfigurierbare Vorrichtung eine umkonfigurierbare Schaltung und Umkonfigurationslogik. Die Umkonfigurationslogik ist zu Folgendem ausgelegt: Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie über eine Richtlinienschnittstelle; Empfangen eines ersten Umkonfigurationsabbildes über eine erste Konfigurationsschnittstelle mehrerer Konfigurationsschnittstellen; Validieren der ersten Konfigurationsschnittstelle basierend auf der Anwenderrichtlinie; Validieren des ersten Umkonfigurationsabbilds basierend auf der Abbildrichtlinie; und als Antwort auf eine Bestimmung, dass die erste Konfigurationsschnittstelle und das erste Umkonfigurationsabbild beide gültig sind, Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des ersten Umkonfigurationsabbilds.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 optional umfassen, dass die Umkonfigurationslogik enthält: einen Anwenderentitätsvalidierer zum Validieren der ersten Umkonfigurationsschnittstelle unter Verwendung der Anwenderrichtlinie; einen Abbildvalidierer zum Validieren des ersten Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie; und einen Schaltungscontroller zum Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des ersten Umkonfigurationsabbilds.
  • In Beispiel 3 kann der Gegenstand der Beispiele 1-2 optional umfassen, dass der Anwenderentitätsvalidierer, der Abbildvalidierer und der Schaltungscontroller in einem Hardwarecontroller implementiert sind.
  • In Beispiel 4 kann der Gegenstand der Beispiele 1-3 optional umfassen, dass die Richtlinienschnittstelle und die mehreren Konfigurationsschnittstellen in dem Hardwarecontroller implementiert sind.
  • In Beispiel 5 kann der Gegenstand der Beispiele 1-4 optional umfassen, dass der Anwenderentitätsvalidierer und der Abbildvalidierer in einer Softwareanwendung implementiert sind und der Schaltungscontroller in einem Hardwarecontroller implementiert ist.
  • In Beispiel 6 kann der Gegenstand der Beispiele 1-5 optional umfassen, dass die Richtlinienschnittstelle in einer Softwareanwendung implementiert ist und die mehreren Konfigurationsschnittstellen in einem Hardwarecontroller implementiert sind.
  • In Beispiel 7 kann der Gegenstand der Beispiele 1-6 optional umfassen, dass der Anwenderentitätsvalidierer, der Abbildvalidierer, die Richtlinienschnittstelle und die mehreren Konfigurationsschnittstellen in einer Softwareanwendung implementiert sind und der Schaltungscontroller in einem Hardwarecontroller implementiert ist.
  • In Beispiel 8 kann der Gegenstand der Beispiele 1-7 optional umfassen, dass die mehreren Konfigurationsschnittstellen in einer Softwareanwendung implementiert sind und der Anwenderentitätsvalidierer, der Abbildvalidierer, der Schaltungscontroller und die Richtlinienschnittstelle in einem Hardwarecontroller implementiert sind.
  • In Beispiel 9 kann der Gegenstand der Beispiele 1-8 optional umfassen, dass die umkonfigurierbare Schaltung eine feldprogrammierbare Gatteranordnung (FPGA) ist.
  • In Beispiel 10 kann der Gegenstand der Beispiele 1-9 optional umfassen, dass die Umkonfigurationslogik eine virtualisierte Umkonfiguration der umkonfigurierbaren Schaltung bereitstellt.
  • In Beispiel 11 umfasst ein Verfahren zum Umkonfigurieren einer Schaltung: Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie, die einer umkonfigurierbaren Schaltung zugeordnet sind, über eine Richtlinienschnittstelle; Empfangen eines Umkonfigurationsabbilds über eine erste Konfigurationsschnittstelle mehrerer Konfigurationsschnittstellen; Validieren der ersten Umkonfigurationsschnittstelle unter Verwendung der Anwenderrichtlinie durch einen Anwenderentitätsvalidierer; Validieren des Umkonfigurationsabbilds durch einen Abbildvalidierer unter Verwendung der Abbildrichtlinie; und Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des validierten Umkonfigurationsabbilds durch einen Schaltungscontroller.
  • In Beispiel 12 kann der Gegenstand von Beispiel 11 optional umfassen, dass das empfangene Umkonfigurationsabbild verschlüsselt ist, und das Verfahren umfasst ein Entschlüsseln des verschlüsselten Umkonfigurationsabbilds.
  • In Beispiel 13 kann der Gegenstand der Beispiele 11-12 optional umfassen, dass eine Signatur des Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie validiert wird.
  • In Beispiel 14 kann der Gegenstand der Beispiele 11-13 optional umfassen, dass der Anwenderentitätsvalidierer, der Abbildvalidierer, der Schaltungscontroller, die Richtlinienschnittstelle und die mehreren Konfigurationsschnittstellen in einem Hardwarecontroller implementiert sind.
  • In Beispiel 15 kann der Gegenstand der Beispiele 11-14 optional ein Bereitstellen einer virtualisierten Umkonfiguration der umkonfigurierbaren Schaltung über die mehreren Konfigurationsschnittstellen umfassen.
  • In Beispiel 16 kann der Gegenstand der Beispiele 11 bis 15 optional umfassen, dass die umkonfigurierbare Schaltung eine feldprogrammierbare Gatteranordnung (FPGA) ist.
  • In Beispiel 17 umfasst eine Rechenvorrichtung zur Datenauswahl: einen oder mehrere Prozessoren; und einen Speicher, in dem mehrere Befehle gespeichert sind, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, veranlassen, dass die Rechenvorrichtung das Verfahren nach einem der Beispiele 11 bis 16 durchführt.
  • In Beispiel 18 sind auf mindestens einem maschinenlesbaren Medium Daten gespeichert, die, wenn sie von mindestens einer Maschine verwendet werden, veranlassen, dass die mindestens eine Maschine das Verfahren nach einem der Beispiele 11 bis 16 durchführt.
  • In Beispiel 19 umfasst eine elektronische Vorrichtung zur Datenauswahl Mittel zum Durchführen des Verfahrens nach einem der Beispiele 11 bis 16.
  • In Beispiel 20 umfasst ein System zum Umkonfigurieren einer Schaltung: eine umkonfigurierbare Schaltung; eine Richtlinienschnittstelle zum Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie; mehrere Konfigurationsschnittstellen einschließlich einer ersten Konfigurationsschnittstelle zum Empfangen eines Umkonfigurationsabbilds; einen Anwenderentitätsvalidierer zum Validieren der ersten Konfigurationsschnittstelle basierend auf der Anwenderrichtlinie; einen Abbildvalidierer zum Validieren des Umkonfigurationsabbilds basierend auf der Abbildrichtlinie; und einen Schaltungscontroller zum Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des validierten Umkonfigurationsabbilds.
  • In Beispiel 21 kann der Gegenstand von Beispiel 20 optional umfassen, dass der Abbildvalidierer ferner das Umkonfigurationsabbild unter Verwendung der Abbildrichtlinie entschlüsseln soll.
  • In Beispiel 22 kann der Gegenstand der Beispiele 20-21 optional umfassen, dass der Abbildvalidierer ferner eine Signatur des Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie validiert.
  • In Beispiel 23 kann der Gegenstand der Beispiele 20-22 optional umfassen, dass die mehreren Konfigurationsschnittstellen mehrere Anwenderentitäten mit einer virtualisierten Umkonfiguration der umkonfigurierbaren Schaltung versehen soll.
  • In Beispiel 24 kann der Gegenstand der Beispiele 20-23 optional umfassen, dass die umkonfigurierbare Schaltung, der Anwenderentitätsvalidierer, der Abbildvalidierer, der Schaltungscontroller, die Richtlinienschnittstelle und die mehreren Konfigurationsschnittstellen in einem Hardwareprozessor enthalten sind.
  • In Beispiel 25 kann der Gegenstand der Beispiele 20-24 optional umfassen, dass die umkonfigurierbare Schaltung eine feldprogrammierbare Gatteranordnung (FPGA) ist.
  • In Beispiel 26 umfasst eine Einrichtung zum Umkonfigurieren einer Schaltung: Mittel zum Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie, die einer umkonfigurierbaren Schaltung zugeordnet sind, über eine Richtlinienschnittstelle; Mittel zum Empfangen eines Umkonfigurationsabbilds über eine erste Konfigurationsschnittstelle mehrerer Konfigurationsschnittstellen; Mittel zum Validieren der ersten Umkonfigurationsschnittstelle unter Verwendung der Anwenderrichtlinie; Mittel zum Validieren des Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie; und Mittel zum Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des validierten Umkonfigurationsabbilds.
  • In Beispiel 27 kann der Gegenstand von Beispiel 26 optional umfassen, dass das empfangene Umkonfigurationsabbild verschlüsselt ist, und die Vorrichtung umfasst ferner Mittel zum Entschlüsseln des verschlüsselten Umkonfigurationsabbilds.
  • In Beispiel 28 kann der Gegenstand der Beispiele 26-27 optional Mittel zum Validieren einer Signatur des Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie umfassen.
  • In Beispiel 29 kann der Gegenstand der Beispiele 26-28 optional Mittel zum Bereitstellen einer virtualisierten Umkonfiguration der umkonfigurierbaren Schaltung über die mehreren Konfigurationsschnittstellen umfassen.
  • In Beispiel 30 kann der Gegenstand der Beispiele 26-29 optional umfassen, dass die umkonfigurierbare Schaltung eine feldprogrammierbare Gatteranordnung (FPGA) ist.
  • Es wird in Betracht gezogen, dass verschiedene Kombinationen der obigen Beispiele möglich sind. Ausführungsformen können in vielen verschiedenen Typen von Systemen verwendet werden. Zum Beispiel kann in einer Ausführungsform eine Kommunikationsvorrichtung angeordnet sein, um die verschiedenen hierin beschriebenen Verfahren und Techniken auszuführen. Natürlich ist der Umfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt und stattdessen können andere Ausführungsformen auf andere Typen von Vorrichtungen zum Verarbeiten von Befehlen oder auf ein oder mehrere maschinenlesbare Medien, die Befehle enthalten, die als Antwort auf die Ausführung auf einer Datenverarbeitungsvorrichtung veranlassen, dass die Vorrichtung eines oder mehrere der hierin beschriebenen Verfahren und Techniken ausführt, gerichtet sein.
  • Verweise in dieser Beschreibung auf „eine Ausführungsform“ bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben worden ist, in mindestens einer Implementierung enthalten ist, die in der vorliegenden Erfindung eingeschlossen ist. Somit bezieht sich das Auftreten des Ausdrucks „eine Ausführungsform“ oder „in einer Ausführungsform“ nicht notwendigerweise auf die gleiche Ausführungsform. Darüber hinaus können die speziellen Merkmale, Strukturen oder Eigenschaften in anderen geeigneten Formen als der bestimmten dargestellten Ausführungsform eingerichtet werden und alle diese Formen können in den Ansprüchen der vorliegenden Anmeldung enthalten sein. Wie hier verwendet bezieht sich „als Antwort auf“ auf eine direkte Ursache-Wirkungs-Beziehung.
  • Obwohl die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben worden ist, werden Fachleute auf dem Gebiet zahlreiche Abwandlungen und Variationen davon erkennen. Es ist beabsichtigt, dass die angefügten Ansprüche alle derartigen Abwandlungen und Variationen abdecken, die unter den wahren Gedanken und Umfang der vorliegenden Erfindung fallen.

Claims (25)

  1. Umkonfigurierbare Vorrichtung, die Folgendes umfasst: eine umkonfigurierbare Schaltung; und Umkonfigurationslogik, die zu Folgendem ausgelegt ist: Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie über eine Richtlinienschnittstelle; Empfangen eines ersten Umkonfigurationsabbilds über eine erste Konfigurationsschnittstelle mehrerer Konfigurationsschnittstellen; Validieren der ersten Konfigurationsschnittstelle basierend auf der Anwenderrichtlinie; Validieren des ersten Umkonfigurationsabbilds basierend auf der Abbildrichtlinie; und als Antwort auf eine Bestimmung, dass die erste Konfigurationsschnittstelle und das erste Umkonfigurationsabbild beide gültig sind, Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des ersten Umkonfigurationsabbilds.
  2. Umkonfigurierbare Vorrichtung nach Anspruch 1, wobei die Umkonfigurationslogik Folgendes umfasst: einen Anwenderentitätsvalidierer zum Validieren der ersten Umkonfigurationsschnittstelle unter Verwendung der Anwenderrichtlinie; einen Abbildvalidierer zum Validieren des ersten Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie; und einen Schaltungscontroller zum Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des ersten Umkonfigurationsabbilds.
  3. Umkonfigurierbare Vorrichtung nach Anspruch 2, wobei der Anwenderentitätsvalidierer, der Abbildvalidierer und der Schaltungscontroller in einem Hardwarecontroller implementiert sind.
  4. Umkonfigurierbare Vorrichtung nach Anspruch 3, wobei die Richtlinienschnittstelle und die mehreren Konfigurationsschnittstellen in dem Hardwarecontroller implementiert sind.
  5. Umkonfigurierbare Vorrichtung nach Anspruch 2, wobei: der Anwenderentitätsvalidierer und der Abbildvalidierer in einer Softwareanwendung implementiert sind; und der Schaltungscontroller in einem Hardwarecontroller implementiert ist.
  6. Umkonfigurierbare Vorrichtung nach Anspruch 2, wobei: die Richtlinienschnittstelle in einer Softwareanwendung implementiert ist; und die mehreren Konfigurationsschnittstellen in einem Hardwarecontroller implementiert sind.
  7. Umkonfigurierbare Vorrichtung nach Anspruch 2, wobei: der Anwenderentitätsvalidierer, der Abbildvalidierer, die Richtlinienschnittstelle und die mehreren Konfigurationsschnittstellen in einer Softwareanwendung implementiert sind; und der Schaltungscontroller in einem Hardwarecontroller implementiert ist.
  8. Umkonfigurierbare Vorrichtung nach Anspruch 2, wobei: die mehreren Konfigurationsschnittstellen in einer Softwareanwendung implementiert sind; und der Anwenderentitätsvalidierer, der Abbildvalidierer, der Schaltungscontroller und die Richtlinienschnittstelle in einem Hardwarecontroller implementiert sind.
  9. Umkonfigurierbare Vorrichtung nach Anspruch 1, wobei die umkonfigurierbare Schaltung eine feldprogrammierbare Gatteranordnung (FPGA) ist.
  10. Umkonfigurierbare Vorrichtung nach Anspruch 1, wobei die Umkonfigurationslogik eine virtualisierte Konfiguration der umkonfigurierbaren Schaltung bereitstellt.
  11. Verfahren, das Folgendes umfasst: Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie, die einer umkonfigurierbaren Schaltung zugeordnet sind, über eine Richtlinienschnittstelle; Empfangen eines Umkonfigurationsabbilds über eine erste Konfigurationsschnittstelle mehrerer Konfigurationsschnittstellen; Validieren der ersten Umkonfigurationsschnittstelle unter Verwendung der Anwenderrichtlinie durch einen Anwenderentitätsvalidierer; Validieren des Umkonfigurationsabbilds durch einen Abbildvalidierer unter Verwendung der Abbildrichtlinie; und Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des validierten Umkonfigurationsabbilds durch einen Schaltungscontroller.
  12. Verfahren nach Anspruch 11, wobei das empfangene Umkonfigurationsabbild verschlüsselt ist und das Verfahren ferner ein Entschlüsseln des verschlüsselten Umkonfigurationsabbilds umfasst.
  13. Verfahren nach Anspruch 11, das ferner umfasst: Validieren einer Signatur des Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie.
  14. Verfahren nach Anspruch 11, wobei der Anwenderentitätsvalidierer, der Abbildvalidierer, der Schaltungscontroller, die Richtlinienschnittstelle und die mehreren Konfigurationsschnittstellen in einem Hardwarecontroller implementiert sind.
  15. Verfahren nach Anspruch 11, das ferner ein Bereitstellen einer virtualisierten Konfiguration der umkonfigurierbaren Schaltung über die mehreren Konfigurationsschnittstellen umfasst.
  16. Verfahren nach Anspruch 11, wobei die umkonfigurierbare Schaltung eine feldprogrammierbare Gatteranordnung (FPGA) ist.
  17. Rechenvorrichtung, die Folgendes umfasst: einen oder mehrere Prozessoren; und einen Speicher, in dem mehrere Befehle gespeichert sind, die, wenn sie von dem einen oder den mehreren Prozessoren ausgeführt werden, veranlassen, dass die Rechenvorrichtung das Verfahren nach einem der Ansprüche 11 bis 16 durchführt.
  18. Maschinenlesbares Medium bzw. maschinenlesbare Medien, auf denen Daten gespeichert sind, die, wenn sie von mindestens einer Maschine verwendet werden, veranlassen, dass die mindestens eine Maschine das Verfahren nach einem der Ansprüche 11 bis 16 durchführt.
  19. Elektronische Vorrichtung, die Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 11 bis 16 umfasst.
  20. System, das Folgendes umfasst: eine umkonfigurierbare Schaltung; eine Richtlinienschnittstelle zum Empfangen einer Anwenderrichtlinie und einer Abbildrichtlinie; mehrere Konfigurationsschnittstellen einschließlich einer ersten Konfigurationsschnittstelle zum Empfangen eines Umkonfigurationsabbilds; einen Anwenderentitätsvalidierer zum Validieren der ersten Konfigurationsschnittstelle basierend auf der Anwenderrichtlinie; einen Abbildvalidierer zum Validieren des Umkonfigurationsabbilds basierend auf der Abbildrichtlinie; und einen Schaltungscontroller zum Umkonfigurieren der umkonfigurierbaren Schaltung unter Verwendung des validierten Umkonfigurationsabbilds.
  21. System nach Anspruch 20, wobei der Abbildvalidierer ferner zum Entschlüsseln des Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie ausgelegt ist.
  22. System nach Anspruch 20, wobei der Abbildvalidierer ferner zum Validieren einer Signatur des Umkonfigurationsabbilds unter Verwendung der Abbildrichtlinie ausgelegt ist.
  23. System nach Anspruch 20, wobei die mehreren Konfigurationsschnittstellen zum Versehen mehrerer Anwenderentitäten mit einer virtualisierten Konfiguration der umkonfigurierbaren Schaltung ausgelegt sind.
  24. System nach Anspruch 20, wobei die umkonfigurierbare Schaltung, der Anwenderentitätsvalidierer, der Abbildvalidierer, der Schaltungscontroller, die Richtlinienschnittstelle und die mehreren Konfigurationsschnittstellen in einem Hardwareprozessor enthalten sind.
  25. System nach Anspruch 20, wobei die umkonfigurierbare Schaltung eine feldprogrammierbare Gatteranordnung (FPGA) ist.
DE102018114958.1A 2017-06-21 2018-06-21 Validieren eines Abbilds für eine umkonfigurierbare Vorrichtung Pending DE102018114958A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/628,888 US9935638B1 (en) 2017-06-21 2017-06-21 Validating an image for a reconfigurable device
US15/628,888 2017-06-21

Publications (1)

Publication Number Publication Date
DE102018114958A1 true DE102018114958A1 (de) 2018-12-27

Family

ID=61711552

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018114958.1A Pending DE102018114958A1 (de) 2017-06-21 2018-06-21 Validieren eines Abbilds für eine umkonfigurierbare Vorrichtung

Country Status (3)

Country Link
US (2) US9935638B1 (de)
CN (1) CN109104184A (de)
DE (1) DE102018114958A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9935638B1 (en) * 2017-06-21 2018-04-03 Intel Corporation Validating an image for a reconfigurable device
US11196569B2 (en) * 2018-09-12 2021-12-07 Bitclave Pte. Ltd. Systems and methods for accuracy and attestation of validity of data shared in a secure distributed environment

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6904527B1 (en) * 2000-03-14 2005-06-07 Xilinx, Inc. Intellectual property protection in a programmable logic device
US7987373B2 (en) * 2004-09-30 2011-07-26 Synopsys, Inc. Apparatus and method for licensing programmable hardware sub-designs using a host-identifier
US9411688B1 (en) * 2013-12-11 2016-08-09 Xilinx, Inc. System and method for searching multiple boot devices for boot images
US9935638B1 (en) * 2017-06-21 2018-04-03 Intel Corporation Validating an image for a reconfigurable device

Also Published As

Publication number Publication date
US9935638B1 (en) 2018-04-03
CN109104184A (zh) 2018-12-28
US20190109593A1 (en) 2019-04-11
US10541687B2 (en) 2020-01-21

Similar Documents

Publication Publication Date Title
DE112019001522T5 (de) System, vorrichtung und verfahren zur optimierten drosselung eines prozessors
DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
DE112020001586T5 (de) System, gerät und verfahren zur leistungslizenzsteuerung eines prozessors
DE102018125236A1 (de) System, Vorrichtung und Verfahren zum Selbsstest vor Ort in einem Diagnose-Ruhezustand
DE112020000231T5 (de) Einstellung von Anzeige Auffrischung Raten basierend auf Benutzer Aktivität
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE112017004361T5 (de) Steuern eines leistungszustands eines prozessors unter verwendung einer kombination von package- und thread-hinweis-informationen
TW201723747A (zh) 控制在處理器中的遙測資料通訊
DE112019000693T5 (de) System, vorrichtung und verfahren zur bereitstellung von hardware-rückmeldungsinformationen in einem prozessor
DE202015009867U1 (de) Einrichtung zum Bereitstellen einer Wärmeparametermeldung für eine Mehrchip-Baugruppe
DE102020134491A1 (de) System, Vorrichtung und Verfahren zum dynamischen Justieren von Plattformenergie und -leistung basierend auf Aufgabeneigenschaften
DE112017001805T5 (de) Bestimmen von thermischen obergrenzen in einem prozessor mit mehreren dies
DE112019001001T5 (de) System, vorrichtung und verfahren für eine datengestützte niedrigenergiezustandssteuerung auf der grundlage von leistungsüberwachungsinformationen
DE102018129330A1 (de) System, Vorrichtung und Verfahren zur prozessorexternen Überschreibung der Hardwareleistungszustandssteuerung eines Prozessors
DE112017003080T5 (de) Prozessor mit gleichzeitigem kern und gewebeausgang aus einem zustand mit geringer energie
DE102020130910A1 (de) System, vorrichtung und verfahren für dynamische energiezustandsskalierung eines spannungsreglers für einen prozessor
DE112018004329T5 (de) Steuerblöcke zur prozessorleistungsverwaltung
DE112017004991T5 (de) Ausgleichssteuerung für variable energieschienen
DE112017003873T5 (de) Bereitstellung einer Schnittstelle für Herabstufungssteuerinformationen in einem Prozessor
DE102020127742A1 (de) System, vorrichtung und verfahren für eine global bewusste reaktive lokale leistungssteuerung in einem prozessor
DE102018114958A1 (de) Validieren eines Abbilds für eine umkonfigurierbare Vorrichtung
DE102020128219A1 (de) System, Einrichtung und Verfahren zur Latenzüberwachung und Reaktion
DE112017005000T5 (de) Prozessorspannungssteuerung unter verwendung eines beweglichen mittelwerts
DE102018001896A1 (de) Hardwarebeschleuniger für das Auswählen von Datenelementen
DE112019002564T5 (de) System, Vorrichtung und Verfahren zur dynamischen Wärmeverteilung eines Ein-Chip-Systems