DE102014004563A1 - Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches - Google Patents

Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches Download PDF

Info

Publication number
DE102014004563A1
DE102014004563A1 DE102014004563.3A DE102014004563A DE102014004563A1 DE 102014004563 A1 DE102014004563 A1 DE 102014004563A1 DE 102014004563 A DE102014004563 A DE 102014004563A DE 102014004563 A1 DE102014004563 A1 DE 102014004563A1
Authority
DE
Germany
Prior art keywords
instruction
processor
enclave
secure
hardware threads
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
DE102014004563.3A
Other languages
English (en)
Inventor
Carlos V. Rozas
Alex Berenzon
Anton Ivanov
Francis X. McKeen
Ilya Alexandrovich
A. Goldsmith Michael
Simon P. Johnson
Gilbert Neiger
Ittai Anati
Barry E. Huntley
Rebekah M. Leslie-Hurd
Rinat Rappoport
Vedvyas Shanbhogue
Uday R. Savagaonkar
Wesley H. Smith
Scott Dion Rodgers
Vincent R. Scarlata
William Colin Wood
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 DE102014004563A1 publication Critical patent/DE102014004563A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Abstract

Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches. Ausführungsformen beinhalten mehrere Hardware-Threads oder Prozessorkerne, einen Cache zum Speichern sicherer Daten für gemeinsame Seitenadressen, die einer Secure Enclave zugeordnet sind, und für die Hardware-Threads zugänglich sind. Eine Decode-Stufe dekodiert einen ersten Befehl, der besagte gemeinsame Seitenadresse als einen Operand festlegt, und Ausführungseinheiten markieren einen Eintrag entsprechend einer Enclave-Seitencache-Zuordnung für die gemeinsame Seitenadresse, um die Erstellung einer neuen Übersetzung für entweder besagten ersten oder zweiten Hardware-Thread für den Zugriff auf die gemeinsame Seite zu blockieren. Ein zweiter Befehl wird zur Ausführung dekodiert, wobei der zweite Befehl besagte Secure Enclave als einen Operand festlegt, und Ausführungseinheiten Hardware-Threads aufzeichnet, die gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen, und die aufgezeichnete Anzahl an Hardware-Threads dekrementiert, wenn einer der Hardware-Threads die Secure Enclave verlässt.

Description

  • BEREICH DER OFFENBARUNG
  • Die vorliegende Offenbarung betrifft das Gebiet der Verarbeitungslogik, der Mikroprozessoren, und der zugehörigen Befehlssatzarchitektur, die, wenn vom Prozessor oder einer anderen Verarbeitungslogik ausgeführt, logische, mathematische, oder andere funktionale Operationen durchführt. Die Offenbarung bezieht sich insbesondere auf Befehle und die Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches.
  • HINTERGRUND DER OFFENBARUNG
  • Anwendungen und Hochleistungsnetzwerke zur Unterstützung neuer Verwendungsmodelle und Dienste wie Sprache, Video, Transaktionen, und private Daten, stellen neue Herausforderungen auf dem Gebiet der Sicherheit dar. Die Notwendigkeit, gespeicherte oder übertragene Daten aus Gründen der Vertraulichkeit und Integrität zu schützen, ist wichtig, allerdings führt die Unterstützung von Hochgeschwindigkeits-Verschlüsselung und Speicherung, die für den sicheren Zugriff auf geschützten Code und/oder Daten erforderlich ist, zu höherer Komplexität und schließlich zu höheren Kosten.
  • Eine Methode zur Erstellung und Verwaltung einer abgesicherten, geschützten, oder isolierten Partition oder Umgebung ist die Erstellung einer Enclave. Bei einer Enclave handelt es sich um einen Informationssatz und um Verarbeitungsfähigkeiten, die als Gruppe geschützt werden. Die Informationen und die Verarbeitungsfähigkeiten können Netzwerke, Hosts, oder Anwendungen beinhalten.
  • Eine häufig verwendete Verarbeitungsmethode, um auf Daten und/oder Befehle zuzugreifen, ist über Caches, die virtuelle Speicher unterstützen, z. B. durch Verwendung eines Übersetzungspuffers (Translation Lookaside Buffer, TLB), mithilfe dessen Übersetzungen in der Hardware schnell laut den Zuordnungen von linearen Adressen in physische Speicheradressen, die in den Seitentabellen gefunden werden, ausgeführt werden. Einträge im TLB können mit einem oder mehreren bestimmten Prozessorkernen, Hardware-Threads, oder logischen Prozessoren verknüpft werden. Dadurch können die Daten, auf die in einem Cache zugegriffen werden kann, vor dem Zugriff durch unberechtigte Prozessorkerne, Hardware-Threads, oder logische Prozessoren geschützt werden.
  • Die Verwaltung von Berechtigungen, des physischen Speichers und/oder die Änderung der Zuordnungen in Seitentabellen wird für gewöhnlich von einem Betriebssystem (Operating System, OS) übernommen, aber wenn die Speicherinhalte geschützt sind, z. B. wie in einer Enclave, ist das OS möglicherweise nicht berechtigt oder vertrauenswürdig, um auf die eigentlichen geschützten Inhalte zuzugreifen, d. h. die Enclave verfügt über einen privaten Speicher. Die Gewährleistung der Sicherheit und/oder Integrität von privaten Speicherinhalten und die Verwaltung der technischen Einschränkungen eines begrenzten physischen Speichers ohne einem OS vertrauen zu können, stellt daher eine Reihe von ganz besonderen Herausforderungen hinsichtlich der Sicherheit und Leistung dar.
  • Bis jetzt sind Sicherheitslösungen, die diese Herausforderungen angehen, und potenzielle Lösungen für solche leistungsbeschränkenden Probleme, sowie Design, Validierung und andere Komplexitäten nicht angemessen untersucht worden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird in den Figuren der begleitenden Zeichnungen exemplarisch und in keiner Weise einschränkend veranschaulicht.
  • 1A ist ein Blockdiagramm von einer Ausführungsform eines Systems, das Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 1B ist ein Blockdiagramm von einer weiteren Ausführungsform eines Systems, das Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 1C ist ein Blockdiagramm von einer weiteren Ausführungsform eines Systems, das Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 2 ist ein Blockdiagramm von einer Ausführungsform eines Prozessors, der Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 3A veranschaulicht gepackte Datentypen gemäß einer Ausführungsform.
  • 3B veranschaulicht gepackte Datentypen gemäß einer Ausführungsform.
  • 3C veranschaulicht gepackte Datentypen gemäß einer Ausführungsform.
  • 3D veranschaulicht eine Befehlskodierung, womit verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches entsprechend einer Ausführungsform bereitgestellt werden.
  • 3E veranschaulicht eine Befehlskodierung, womit verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches entsprechend einer weiteren Ausführungsform bereitgestellt werden.
  • 3F veranschaulicht eine Befehlskodierung, womit verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches entsprechend einer weiteren Ausführungsform bereitgestellt werden.
  • 3G veranschaulicht eine Befehlskodierung, womit verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches entsprechend einer weiteren Ausführungsform bereitgestellt werden.
  • 3H veranschaulicht eine Befehlskodierung, womit verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches entsprechend einer weiteren Ausführungsform bereitgestellt werden.
  • 4A veranschaulicht Elemente von einer Ausführungsform einer Prozessor-Mikroarchitektur, die Befehle ausführt, welche verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitstellen.
  • 4B veranschaulicht Elemente von einer weiteren Ausführungsform einer Prozessor-Mikroarchitektur, die Befehle ausführt, welche verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitstellen.
  • 5 ist ein Blockdiagramm von einer Ausführungsform eines Prozessors, der Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 6 ist ein Blockdiagramm von einer Ausführungsform eines Computersystems, das Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 7 ist ein Blockdiagramm von einer weiteren Ausführungsform eines Computersystems, das Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 8 ist ein Blockdiagramm von einer weiteren Ausführungsform eines Computersystems, das Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 9 ist ein Blockdiagramm von einer Ausführungsform eines Ein-Chip-Systems (system-on-a-chip), das Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 10 ist ein Blockdiagramm von einer Ausführungsform eines Prozessors, der Befehle ausführt, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 11 ist ein Blockdiagramm von einer Ausführungsform eines IP-Core-Entwicklungssystems, das verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitstellt.
  • 12 veranschaulicht eine Ausführungsform eines Architektur-Emulationssystems, das verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitstellt.
  • 13 veranschaulicht eine Ausführungsform eines Systems zur Übersetzung von Befehlen, die verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitstellen.
  • 14 veranschaulicht eine Ausführungsform eines Verarbeitungssystems zur Verwendung von Befehlen, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 15 veranschaulicht eine Ausführungsform einer Vorrichtung in einem Prozessor zur Verwendung von Befehlen, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 16 stellt ein Flussdiagramm einer Ausführungsform eines Prozesses dar, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 17 stellt ein Flussdiagramm einer alternativen Ausführungsform eines Prozesses dar, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 18A stellt ein Flussdiagramm einer weiteren Ausführungsform eines Prozesses dar, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • 18B stellt ein Flussdiagramm einer weiteren Ausführungsform eines Prozesses dar, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung offenbart Befehle und die Verarbeitungslogik, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches innerhalb oder in Verbindung mit einem Prozessor, einem Computersystem, oder einer anderen Verarbeitungsvorrichtung bereitzustellen.
  • In einem speziellen Cache oder Teil eines Caches, der ausschließlich private oder geschützte Daten enthält, z. B. verbunden mit einer Enclave, kann der Zugriff auf diese privaten oder geschützten Daten, wenn diese unverschlüsselt sind, nur auf berechtigte Prozessorkerne, Hardware-Threads, oder logische Prozessoren beschränkt werden. Solch ein privater Enclave-Speicher kann als Enclave-Seitencache (enclave page cache, EPC) bezeichnet werden.
  • Wie bei anderen physischen Speichern, kann der EPC dazu genutzt werden, einen größeren privaten oder geschützten Adressraum zu unterstützen, indem Daten und/oder Code je nach Bedarf in die Seitentabelle aufgenommen oder entfernt werden. Die Änderung der Zuordnungen von Seiten wird für gewöhnlich von einem OS übernommen, in einer Enclave hingegen hat das OS nicht zwangsläufig Zugriff auf die Inhalte des privaten Enclave-Speichers.
  • Einträge im TLB sind mit einem oder mehreren speziellen Prozessorkernen, Hardware-Threads oder logischen Prozessoren verknüpft, denen es nicht gestattet sein darf, eine Seite zu ändern, während diese in den Speicher oder permanenten Speicher ausgelesen wird. Aus diesem Grund kann für das Ändern der Zuordnungen von Seiten für eine Enclave, z. B. Entfernen einer Seite oder Laden einer neuen Seite für die Enclave, erforderlich sein, dass das System den einen oder die mehreren Prozessorkerne, Hardware-Threads oder logischen Prozessoren „stilllegt”, die auf die Ressourcen der Enclave zugreifen, indem sie in einen vorübergehend inaktiven oder unterdrückten Zustand gebracht werden, oder anderenfalls die Ausführung von Anwendung(en) in der Enclave zu blockieren, während die Inhalte des EPC-Speichers verschlüsselt und zurückgeschrieben, neue Seiten aus dem Speicher geladen und entschlüsselt, die TLB-Einträge geflusht und ersetzt werden usw. Hardware-Schutzmechanismen sind möglicherweise erforderlich, um die Seiten im EPC zu schützen und so die Sicherheit und/oder Integrität privater Speicherinhalte sicherzustellen, und die Verwaltung eines beschränkten physischen privaten Speichers, ohne dem OS vertrauen zu können, zu unterstützen.
  • Ein beispielhafter Ansatz mit Secure Enclaves wird im anhängigen US-Patentantrag mit dem Titel „Method and Apparatus to Provide Secure Application Execution,” (Verfahren und Vorrichtungen zur Bereitstellung sicherer Anwendungsausführung), eingereicht am 19. Juni 2012, laufende Nr. 13/527,547, beschrieben.
  • Jedes Mal, wenn eine Seite aus dem EPC-Speicher entfernt wird, kann dies zu einer Mitteilung an alle Prozessorkerne oder logischen Prozessoren führen, die den EPC-Speicher nutzen, und/oder dazu, dass alle Prozessorkerne oder logischen Prozessoren dazu aufgefordert werden, die Enclave zu verlassen, damit die Seiteninhalte, der TLB-Eintrag bzw. die TLB-Einträge, usw., ersetzt werden. Darüber hinaus kann das Sicherstellen in der Hardware, dass solch eine Anforderung erfüllt wird, um die Privatsphäre der Enclave zu schützen, erhebliche Design- und Validierungskomplexitäten beinhalten.
  • Es ist zu verstehen, dass, wenn der Paging-Prozess, z. B. wenn die EPC-Speicherinhalte verschlüsselt und zurückgeschrieben, neue Seiten aus dem Speicher geladen und entschlüsselt, die TLB-Einträge geflusht und ersetzt werden usw., in Stufen unterteilt werden kann, in denen die Prozessorkerne oder logischen Prozessoren nur kurz während einer oder mehrerer Stufe(n) unterbrochen werden, die Leistungsminderung aufgrund des Paging-Prozess reduziert werden kann.
  • Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches werden hiernach beschrieben. Einige Ausführungsformen beinhalten mehrere Hardware-Threads, logische Prozessoren oder Prozessorkerne, einen Cache zum Speichern sicherer Daten für gemeinsame Seitenadressen, die einer Secure Enclave zugeordnet sind, und der für die Hardware-Threads, logischen Prozessoren oder Prozessorkerne zugänglich ist. Eine Decode-Stufe entschlüsselt einen ersten Befehl (z. B. einen EBLOCK-Befehl, der später genauer erläutert wird), den ersten Befehl, der die gemeinsame Seitenadresse als Operand festlegt. Eine oder mehrere Ausführungseinheiten markieren einen Eintrag, der einer Enclave-Seitencache-Zuordnung für die gemeinsame Seitenadresse entspricht, um die Erstellung einer neuen TLB-Übersetzung für einen der erwähnten mehrfachen Hardware-Threads, logischen Prozessoren oder Prozessorkerne, um auf die gemeinsame Seite zuzugreifen, zu blockieren. Ein zweiter Befehl (z. B. ein ETRACK-Befehl, der ebenfalls später genauer erläutert wird) wird zur Ausführung entschlüsselt, der zweite Befehl legt besagte Secure Enclave als Operand fest, und eine oder mehrere Ausführungseinheiten zeichnen die Hardware-Threads auf, die gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen. Wenn einer der Hardware-Threads die Secure Enclave verlässt, wird die aufgezeichnete Anzahl der Hardware-Threads dekrementiert.
  • Das OS kann daraufhin einen Inter-Processor-Interrupt (IPI) an einen Hardware-Thread, logischen Prozessor oder Prozessorkern senden, der gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreift. Wenn die Hardware-Threads, logischen Prozessoren oder Prozessorkerne den IPI bestätigen und die Secure Enclave verlassen, werden ihr TLB-Eintrag oder ihre TLB-Einträge geflusht und die aufgezeichnete Anzahl an Hardware-Threads wird dekrementiert. Wenn die aufgezeichnete Anzahl an Hardware-Threads Null erreicht, ist es für das OS sicher, eine Seite oder Seiten zu entfernen, zu verschlüsseln, und sie zurück in den Speicher oder permanten Speicher zu schreiben. Das OS kann einen dritten Befehl (z. B. einen EWB-Befehl, der ebenfalls später genauer erläutert wird) verwenden, um das Entfernen und Zurückschreiben abzuschließen. Da der Enclave-Schutz der sicheren Daten möglicherweise dem OS nicht vertrauen kann, ist es möglich, dass eine Ausführungsform des dritten Befehls fehlschlägt, wenn die aufgezeichnete Anzahl an Hardware-Threads noch nicht Null erreicht hat. In einer alternativen Ausführungsform kann der dritte Befehl mit der Ausführung warten bis die aufgezeichnete Anzahl an Hardware-Threads Null erreicht hat.
  • Es ist zu verstehen, dass die Verwaltung von Berechtigungen, des physischen Speichers und/oder die Änderung der Zuordnungen für gewöhnlich immer noch von einem OS übernommen wird, aber wenn die Speicherinhalte geschützt sind, wie in einer Enclave, ist das OS möglicherweise nicht berechtigt oder vertrauenswürdig, um auf die eigentlichen geschützten Inhalte zuzugreifen, da die Enclave über einen privaten Speicher verfügt. Aus diesem Grund kann die Gewährleistung der Sicherheit und/oder Integrität von privaten Speicherinhalten und die Verwaltung der technischen Einschränkungen eines beschränkten physischen Speichers, ohne einem OS vertrauen zu können, stufenweise mithilfe von Befehlen und Verarbeitungslogik erreicht werden, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen, ohne dass es erforderlich ist, Hardwaresupport und/oder Designaufwand zu prüfen.
  • In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten, wie z. B. Verarbeitungslogik, Prozessortypen, Mikroarchitekturbedingungen, Ereignisse, Ermöglichungsmechanismen und dergleichen, dargelegt, um für ein gründlicheres Verständnis von Ausführungsformen der vorliegenden Erfindung zu sorgen. Für einen Fachmann ist es jedoch offensichtlich, dass die Erfindung auch ohne solche spezifischen Details umgesetzt werden kann. Außerdem wurden einige wohlbekannte Strukturen, Schaltungen und dergleichen nicht in Einzelheiten gezeigt, um Ausführungsformen der vorliegenden Erfindung nicht unnötig zu verschleiern.
  • Obwohl die nachstehenden Ausführungsformen unter Bezugnahme auf einen Prozessor beschrieben sind, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und logischen Einheiten anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen der vorliegenden Erfindung können auf andere Typen von Schaltungen oder Halbleiterbauelementen angewendet werden, die von einem höheren Pipeline-Datendurchsatz und einer verbesserten Leistung profitieren können. Die Lehren von Ausführungsformen der vorliegenden Erfindung sind auf einen beliebigen Prozessor oder eine beliebige Maschine anwendbar, die Datenmanipulationen ausführt. Die vorliegende Erfindung ist jedoch nicht auf Prozessoren oder Maschinen beschränkt, die 512-Bit-, 256-Bit-, 128-Bit-, 64-Bit-, 32-Bit- oder 16-Bit-Datenoperationen ausführen, und kann auf einen beliebigen Prozessor oder eine beliebige Maschine angewendet werden, in denen Datenmanipulationen oder Datenverwaltung durchgeführt wird. Darüber hinaus enthält die nachstehende Beschreibung Beispiele und die beigefügten Zeichnungen zeigen verschiedene Beispiele zu Veranschaulichungszwecken. Diese Beispiele sollen jedoch nicht auf eine einschränkende Wiese verstanden werden, da sie ausschließlich als Beispiele für Ausführungsformen der vorliegenden Erfindung, und nicht als eine erschöpfende Auflistung aller möglichen Implementierungen von Ausführungsformen der vorliegenden Erfindung gedacht sind.
  • Obwohl die untenstehenden Beispiele die Befehlsbearbeitung und -verteilung im Zusammenhang mit Ausführungseinheiten und logischen Schaltungen beschreiben, können andere Ausführungsformen der vorliegenden Erfindung mittels Daten und/oder Befehlen realisiert werden, die auf einem maschinenlesbaren konkreten Medium gespeichert sind, die, wenn sie von einer Maschine ausgeführt werden, verursachen, dass die Maschine Funktionen ausführt, die mit mindestens einer Ausführungsform der Erfindung konsistent sind. In einer Ausführungsform sind Funktionen, die mit Ausführungsformen der vorliegenden Erfindung assoziiert sind, in maschinenausführbaren Befehlen enthalten. Die Befehle können verwendet werden, um einen mit den Befehlen programmierten Universalprozessor oder Spezialprozessor dazu zu veranlassen, die Schritte der vorliegenden Erfindung auszuführen. Ausführungsformen der vorliegenden Erfindung können als ein Computerprogrammprodukt oder Software bereitgestellt sein, die ein maschinen- oder computerlesbares Medium mit darauf gespeicherten Befehlen umfassen können, die zum Programmieren eines Computers (oder anderer elektronischen Vorrichtungen) verwendet werden können, damit er (sie) eine oder mehrere Operationen gemäß Ausführungsformen der vorliegenden Erfindung ausführt. Alternativ könnten Schritte von Ausführungsformen der vorliegenden Erfindung durch spezifische Hardwarekomponenten, die Fixed-Function-Logik zum Durchführen der Schritte enthalten, oder durch eine beliebige Kombination von programmierten Computerkomponenten und Fixed-Function-Hardwarekomponenten ausgeführt werden.
  • Befehle, die zum Programmieren einer Logik verwendet werden, damit sie Ausführungsformen der Erfindung ausführt, können in einem Speicher in dem System (wie zum Beispiel DRAM, Cache, Flash-Speicher oder anderen Speichern) gespeichert sein. Außerdem können die Befehle über ein Netzwerk oder mithilfe von anderen computerlesbaren Medien verbreitet werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übermitteln von Informationen in einer (z. B. einem Computer) maschinenlesbaren Form umfassen, ist aber nicht beschränkt auf Disketten, optische Laufwerke, CDs, Nur-Lese-Speicher (CD-ROMs), magnetooptische Disketten, Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetische oder optische Karten, Flash-Speicher, oder einen nichtflüchtigen, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet mithilfe von von elektrischen, optischen, akustischen oder anderen Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen usw.) verwendet wird. Dementsprechend umfasst das computerlesbare Medium eine beliebige Art von nichtflüchtigem, maschinenlesbaren Medium, das zum Speichern oder Übermitteln elektronischer Befehle oder Informationen in einer von einer Maschine (z. B. einem Computer) lesbaren Form geeignet ist.
  • Ein Design kann verschiedene Stufen durchlaufen, von der Erstellung zur Simulation zur Fertigung. Daten, die ein Design repräsentieren, können das Design auf mehrere Weise repräsentieren. Zuerst einmal, wie es bei Simulationen nützlich ist, kann die Hardware unter Benutzen einer Hardware-Beschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Außerdem kann ein Modell auf Schaltungsebene mit Logik- und/oder Transistor-Gattern auf einigen Stufen des Design-Verfahrens hergestellt werden. Zudem erreichen die meisten Designs irgendwann eine Datenebene, die die physische Anordnung verschiedener Geräte in dem Hardware-Modell darstellt. Wenn herkömmliche Halbleiter-Fertigungstechniken benutzt werden, können die Daten, die das Hardware-Modell darstellen, diejenigen Daten sein, die die Anwesenheit oder Abwesenheit verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken spezifizieren, die zum Herstellen des integrierten Schaltkreises benutzt werden. Bei einer Darstellung des Designs können die Daten in Form eines maschinenlesbaren Mediums gespeichert sein. Ein Speicher oder ein magnetisches oder optisches Speichermedium, wie beispielsweise eine Disk, kann das maschinenlesbare Medium sein, um Informationen zu speichern, die mittels einer optischen oder elektrischen Welle übertragen werden, die moduliert oder auf andere Weise erzeugt wird, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder das Design anzeigt oder trägt, zu einem Ausmaß übertragen wird, dass das Kopieren, Puffer oder die Weiterübertragung des elektrischen Signals durchgeführt wird, wird eine neue Kopie erstellt. So kann ein Kommunikationsdienstanbieter oder ein Netzwerkdienstanbieter auf einem konkreten maschinenlesbaren Medium zumindest zeitweise einen Artikel speichern, wie z. B. Informationen, die in eine Trägerwelle codiert sind, die Techniken von Ausführungsformen der vorliegenden Erfindung verkörpern.
  • In modernen Prozessoren wird eine Anzahl unterschiedlicher Ausführungseinheiten benutzt, um eine Vielfalt an Code und Befehlen zu verarbeiten und auszuführen. Nicht alle Befehle werden gleichartig erzeugt, da einige schneller vollständig ausgeführt werden können, während andere zur vollständigen Ausführung eine Anzahl von Taktzyklen benötigen können. Je schneller der Durchsatz von Befehlen ist, desto besser ist die Gesamtleistungsfähigkeit des Prozessors. Daher wäre es vorteilhaft, wenn so viele Befehle wie möglich so schnell wie möglich ausgeführt werden. Es gibt jedoch bestimmte Befehle, die eine größere Komplexität aufweisen und hinsichtlich der Ausführungsdauer und Prozessorressourcen mehr benötigen. Beispielsweise gibt es Gleitkommabefehle, Lade/Speicher-Operationen, Datenbewegungen usw.
  • Mit dem vermehrten Einsatz von Computersystemen in Internet-, Text- und Multimedia-Anwendungen wurde im Laufe der Zeit auch zusätzliche Prozessorunterstützung eingeführt. In einer Ausführungsform kann ein Befehlssatz mit einer oder mehreren Computerarchitekturen einschließlich Datentypen, Befehlen, Registerarchitektur, Adressiermodi, Speicherarchitektur, Bearbeitung von Unterbrechung und Ausnahme und externer Eingabe und Ausgabe (I/O) verbunden sein.
  • In einer Ausführungsform kann die Befehlssatzarchitektur (instruction set architecture, ISA) durch eine oder mehrere Mikroarchitekturen implementiert sein, die Prozessorlogik und Schaltungen beinhaltet, die benutzt werden, um einen oder mehrere Befehlssätze zu implementieren. Dementsprechend können Prozessoren mit unterschiedlichen Mikroarchitekturen mindestens einen Teil eines gemeinsamen Befehlssatzes gemeinsam nutzen. Beispielsweise implementieren Intel®-Pentium-4-Prozessoren, Intel®-CoreTM-Prozessoren und Prozessoren von Advanced Micro Devices, Inc. aus Sunnyvale, CA nahezu identische Versionen des ×86-Befehlssatzes (mit einigen Erweiterungen, die neueren Versionen hinzugefügt wurden), weisen jedoch unterschiedliche interne Designs auf. Ebenso können sich Prozessoren, die von anderen Prozessorentwicklungsfirmen entworfen wurden, wie z. B. ARM Holdings, Ltd., MIPS oder deren Lizenznehmer oder Anwender, mindestens einen Teil eines gemeinsamen Befehlssatzes gemeinsam nutzen, jedoch unterschiedliche Prozessordesigns beinhalten. Beispielsweise kann dieselbe Registerarchitektur der ISA auf unterschiedliche Weise in unterschiedlichen Mikroarchitekturen unter Benutzen neuer oder wohlbekannter Techniken einschließlich dedizierter physischer Register, eines oder mehrerer dynamisch unter Benutzen eines Registerumbenennungsmechanismus zugewiesener physischer Register (z. B. die Benutzung einer Register-Umbennungstabelle (Register Alias Table, RAT), eines Neuordnungspuffers (Reorder Buffer, ROB) und einer Rückordnungsregister-Datei) implementiert werden. In einer Ausführungsform können Register ein oder mehrere Register, Registerarchitekturen, Registerdateien oder andere Befehlssätze beinhalten, die von einem Software-Programmierer adressierbar oder nicht adressierbar sein können.
  • In einer Ausführungsform kann ein Befehl ein oder mehrere Befehlsformate beinhalten. In einer Ausführungsform kann ein Befehlsformat verschiedene Felder (Anzahl von Bits, Ort von Bits usw.) anzeigen, um u. a. die durchzuführende Operation und den (die) Operanden zu spezifizieren, an dem (denen) die Operation durchzuführen ist. Einige Befehlsformate können, durch Befehlsvorlagen (oder Unterformate) definiert, weiter unterteilt werden. Beispielsweise können die Befehlsvorlagen eines gegebenen Befehlsformates so definiert sein, dass sie unterschiedliche Teilsätze der Felder des Befehlsformates aufweisen und/oder definiert sein, dass ein gegebenes Feld unterschiedlich interpretiert wird. In einer Ausführungsform ist ein Befehl unter Benutzen eines Befehlsformates ausgedrückt (und, falls definiert, in einer gegebenen der Befehlsvorlage dieses Befehlsformates) und spezifiziert oder zeigt die Operation und die Operanden an, an denen die Operation erfolgen wird.
  • Wissenschaftliche, finanzielle, autovektorisierte Allzweck-, RMS-(Erkennung, Mining und Synthese) und visuelle und Multimediaanwendungen (z. B. 2D/3D-Grafik, Bildverarbeitung, Video-Kompression/Dekompression, Spracherkennungsalgorithmen und Audio-Bearbeitung) können erfordern, dass dieselbe Operation an einer großen Zahl von Datenwörtern durchgeführt wird. In ein er Ausführungsform bezieht sich SIMD (Single Instruction Multiple Data) auf einen Typ von Befehl, der bewirkt, dass ein Prozessor eine Operation an mehreren Datenelementen durchführt. Die SIMD-Technologie kann in Prozessoren benutzt werden, welche die Bits in einem Register logisch in eine Anzahl von Datenelementen mit fester Größe oder variabler Größe unterteilen können, von denen jedes einen separaten Wert darstellt. Beispielsweise können in einer Ausführungsform die Bits in einem 64-Bit-Register als ein Quelloperand organisiert sein, der vier separate 16-Bit-Datenelemente enthält, von denen jedes einen separaten 16-Bit-Wert darstellt. Dieser Typ von Daten kann als ’gepackter’ Datentyp oder ’Vektor’datentyp bezeichnet werden, und Operanden dieses Datentyps werden als gepackte Datenoperanden oder Vektoroperanden bezeichnet. In einer Ausführungsform kann ein gepacktes Datenwort oder Vektor eine Sequenz von gepackten Datenelementen sein, die in einem einzelnen Register gespeichert sind, und ein gepackter Datenoperand oder ein Vektoroperand kann ein Quell- oder Zieloperand eines SIMD-Befehls (oder ’gepackten Datenbefehls’ oder eines ’Vektorbefehls’) sein. In einer Ausführungsform spezifiziert ein SIMD-Befehl eine einzelne Vektoroperation zum Durchführen an zwei Quellvektoroperanden, um einen Zielvektoroperanden (auch als ein Ergebnisvektoroperand bezeichnet) von der gleichen oder von unterschiedlicher Größe mit der gleichen oder einer unterschiedlichen Anzahl von Datenelementen und in der gleichen oder einer unterschiedlichen Datenelement-Reihenfolge zu erzeugen.
  • Die SIMD-Technologie, wie z. B. diejenige, die eingesetzt wird bei den Intel®-CoreTM-Prozessoren, die einen Befehlssatz aufweisen, der ×86-, MMXTM-, Streaming-SIMD-Extensions-(SSE), SSE2-, SSE3-, SSE4.1- und SSE4.2-Befehle beinhaltet, ARM-Prozessoren, wie z. B. der ARM-Cortex®-Familie von Prozessoren, die einen Befehlssatz aufweisen, der die Vector-Floating-Point-(VFP) und/oder NEON-Befehle beinhaltet, und MIPS-Prozessoren, wie z. B. die Loongson-Familie von Prozessoren, die vom Institute of Computing Technology (ICT) der Chinese Academy of Sciences entwickelt wurden, hat eine wesentliche Verbesserung der Anwendungsleistung ermöglicht (CoreTM und MMXTM sind eingetragene Handelsmarken oder Handelsmarken der Intel Corporation aus Santa Clara, Kalif.).
  • In einer Ausführungsform sind die Ziel- und Quellregister/daten generische Ausdrücke, um die Quelle und das Ziel der entsprechenden Daten oder Operation darzustellen. In einigen Ausführungsformen können sie durch Register, Speicher oder andere Speicherbereiche, die andere Namen oder Funktionen als die abgebildeten aufweisen, implementiert sein. Beispielsweise kann in einer Ausführungsform ”DEST1” ein temporäres Speicherregister oder ein anderer Speicherbereich sein, wohingegen ”SRC1” und SRC2” ein erstes und ein zweites Quellspeicherregister oder anderer Speicherbereich sein können usw. In anderen Ausführungsformen können zwei oder mehr der SRC- und DEST-Speicherbereiche verschiedenen Datenspeicherelementen innerhalb des gleichen Speicherbereiches (z. B. ein SIMD-Register) entsprechen. In einer Ausführungsform kann eines der Quellregister auch als ein Zielregister wirken, indem beispielsweise das Ergebnis einer Operation, die an den ersten und zweiten Quelldaten durchgeführt wurde, in eines der beiden Quellregister zurückgeschrieben wird, die als Zielregister dienen.
  • 1A ist ein Blockdiagramm eines beispielhaften Computersystems, das mit einem Prozessor gebildet ist, der Ausführungseinheiten zum Ausführen eines Befehls gemäß einer Ausführungsform der vorliegenden Erfindung beinhaltet. Das System 100 beinhaltet eine Komponente, wie z. B. einen Prozessor 102, zum Einsetzen von Ausführungseinheiten, die Logik zum Ausführen von Algorithmen für Prozessdaten beinhalten, gemäß der vorliegenden Erfindung, wie z. B. in der hierin beschriebenen Ausführungsfomr. Das System 100 ist repräsentativ für Verarbeitungssysteme, die auf den PENTIUM®-III-, PENTIUM®-4-, XeonTM-, Itanium®-, XScaleTM und/oder StrongARMTM-Mikroprozessoren basieren, die von der Intel Corporation aus Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PC, die andere Mikroprozessoren aufweisen, Engineering-Workstations, Set-Top-Boxen und dergleichen) benutzt werden können. In einer Ausführungsform kann das Mustersystem 100 eine Version des WINDOWSTM-Betriebssystems ausführen, das von der Microsoft Corporation aus Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (beispielsweise UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen benutzt werden können. Somit sind die Ausführungsformen der vorliegenden Erfindung nicht auf eine bestimmte Kombination von Hardwareschaltung und Software beschränkt.
  • Ausführungsformen sind nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Vorrichtungen, wie Handgeräte und eingebettete Anwendungen, verwendet werden. Einige Beispiele von Handgeräten umfassen Mobiltelefone, Internetprotokoll-Geräte, Digitalkameras, persönliche digitale Assistenten (PDAs) und Handheld-PCs. Eingebettete Anwendungen können einen Mikrocontroller, einen digitalen Signalprozessor (DSP), System-on-a-Chip, Netzwerkcomputer (NetPCs), Set-Top-Boxen, Netzwerk-Hubs, Weitverkehrsnetz-Switches (WAN-Switches) oder ein beliebiges anderes System umfassen, das einen oder mehrere Befehle gemäß mindestens einer Ausführungsform ausführen kann.
  • 1A ist ein Blockdiagramm eines Computersystems 100, das mit einem Prozessor 102 gebildet ist, der eine oder mehrere Ausführungseinheiten 108 zum Ausführen eines Algorithmus beinhaltet, um mindestens einen Befehl gemäß einer Ausführungsform der vorliegenden Erfindung auszuführen. Eine Ausführungsform kann im Zusammenhang mit einem Einprozessor-Desktop- oder -Serversystem beschrieben werden, alternative Ausführungsformen können jedoch in ein Mehrprozessorsystem eingebunden werden. System 100 ist ein Beispiel einer Hub-Architektur des Systems. Das Computersystem 100 weist einen Prozessor 102 zur Verarbeitung von Datensignalen auf. Der Prozessor 102 kann ein Mikroprozessor mit komplexem Befehlssatz (Complex Instruction Set Computer, CISC), ein Mikroprozessor mit reduziertem Befehlssatz (Reduced Instruction Set Computing, RISC), ein Mikroprozessor mit sehr langem Befehlswort (Very Long Instruction Word, VLIW), ein Prozessor, der eine Kombination von Befehlssätzen implementiert, oder eine beliebige andere Prozessorvorrichtung, wie beispielsweise ein Digitalsignalprozessor, sein. Der Prozessor 102 ist mit einem Prozessorbus 110 gekoppelt, der Datensignale zwischen dem Prozessor 102 und anderen Komponenten im System 100 übertragen kann. Die Elemente des Systems 100 führen ihre herkömmlichen Funktionen aus, die dem Fachmann wohlbekannt sind.
  • In einer Ausführungsform beinhaltet der Prozessor 102 einen internen Level-1-(L1)-Cache-Speicher 104. Abhängig von der Architektur kann der Prozessor 102 einen einzelnen internen Cache oder mehrere Ebenen von internem Cache aufweisen. Alternativ kann sich n einer anderen Ausführungsform der Cache-Speicher außerhalb von Prozessor 102 befinden. Andere Ausführungsformen können in Abhängigkeit von der jeweiligen Implementierung und Bedarf auch eine Kombination von internen und externen Cache-Speichern beinhalten. Die Registerdatei 106 kann verschiedene Typen von Daten in verschiedenen Registern einschließlich Ganzzahlregistern, Gleitkommaregistern (floating point (FP) registers), Statusregistern und Befehlszeigerregister speichern.
  • Ausführungseinheit 108, die eine Logik zum Ausführen von Integer- und Gleitkommaoperationen umfasst, liegt ebenfalls im Prozessor 102. Der Prozessor 102 beinhaltet auch einen Mikrocode-ROM (ucode-ROM), der Mikrocode für bestimmte Makrobefehle speichert. Bei einer Ausführungsform umfasst Ausführungseinheit 108 eine Logik zur Bearbeitung eines komprimierten Befehlssatzes 109. Indem der komprimierte Befehlssatz 109 in dem Befehlssatz eines Universalprozessors 102 zusammen mit assoziierten Schaltungen zur Ausführung der Befehle aufgenommen wird, können die Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung von komprimierten Daten in einem Allzweckprozessor 102 ausgeführt werden. Daher können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die volle Breite des Datenbusses eines Prozessors zum Ausführen von Operationen an gepackten Daten benutzt wird. Dies kann die Notwendigkeit der Übertragung kleinerer Dateneinheiten über den Datenbus des Prozessors zur Ausführung einer oder mehrerer Operationen an einem Datenelement nach dem anderen beseitigen.
  • Alternative Ausführungsformen einer Ausführungseinheit 108 können auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikvorrichtungen, DSP und anderen Typen von Logikschaltungen benutzt werden. System 100 umfasst einen Speicher 120. Der Speicher 120 kann eine dynamische Direktzugriffsspeicher-(dynamic random access memory, DRAM), eine statische Direktzugriffsspeicher-(static random access memory, SRAM), eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung sein. Der Speicher 120 kann Befehle und/oder Daten speichern, die durch Datensignale repräsentiert werden, die vom Prozessor 102 ausgeführt werden können.
  • Ein Systemlogik-Chip 116 ist an den Prozessorbus 110 und den Speicher 120 gekoppelt.
  • Der Systemlogik-Chip 116 ist in der dargestellten Ausführungsform ein Memory Controller Hub (MCH). Der Prozessor 102 kann mit dem MCH 116 über einen Prozessorbus 110 kommunizieren. Der MCH 116 stellt einen Speicherpfad 118 mit hoher Bandbreite für den Speicher 120 zur Befehls- und Datenspeicherung und zur Speicherung von Grafikbefehlen, Daten und Texturen bereit. Der MCH 116 leitet Datensignale zwischen dem Prozessor 102, dem Speicher 120 und anderen Komponenten im System 100 und koppelt (bridge) die Datensignale zwischen Prozessorbus 110, Speicher 120 und der Ein- und Ausgabe (I/O) 122 des Systems. In manchen Ausführungsformen kann der Systemlogik-Chip 116 einen Graphics Port zur Koppelung an einen Grafikcontroller 112 bereitstellen. Der MCH 116 ist über eine Speicherschnittstelle 118 an Speicher 120 gekoppelt. Die Grafikkarte 112 ist an den MCH 116 über einen AGP-Anschluss (Accelerated Graphics Port) gekoppelt.
  • System 100 verwendet einen proprietären Hub Interface Bus 122, um den MCH 116 an den I/O Controller Hub (ICH) 130 zu koppeln. Der ICH 130 stellt über einen lokalen I/O-Bus direkte Verbindungen mit einigen Ein- und Ausgabe-Geräten bereit. Der lokale I/O-Bus ist ein Hochgeschwindigkeits-I/O-Bus zur Verbindung von Peripherigeräten an den Speicher 120, den Chipsatz und den Prozessor 102. Einige Beispiele sind der Audiocontroller, Firmware-Hub (Flash-BIOS) 128, drahtloser Transceiver 126, Datenspeicher 124, Legacy-I/O-Controller, der Benutzereingabe- und Tastaturschnittstellen enthält, ein serieller Erweiterungsanschluss, wie z. B. Universal Serial Bus (USB), und ein Netzwerkcontroller 134. Das Datenspeichergerät 124 kann einen Festplattenlaufwerk, einen Diskettenlaufwerk, ein CD-ROM-Gerät, ein Flash-Speicher-Gerät oder ein anderes Massenspeichergerät umfassen.
  • In einer weiteren Ausführungsform eines Systems kann eine Anweisung gemäß einem Ausführungsbeispiel mit einem System auf einem Chip verwendet werden. Eine Ausführungsform eines System-on-a-Chip umfasst einen Prozessor und einen Speicher. Der Speicher für ein solches System ist ein Flash-Speicher. Der Flash-Speicher kann sich auf demselben Die wie der Prozessor und andere Systemkomponenten befinden. Außerdem können sich auch andere logische Blöcke, wie z. B. ein Speichercontroller oder Grafikcontroller auf einem System-on-a-Chip befinden.
  • 1B veranschaulicht ein Datenverarbeitungssystem 140, das die Prinzipien einer Ausführungsform der vorliegenden Erfindung implementiert. Der Fachmann wird ohne Weiteres verstehen, dass die hierin beschriebenen Ausführungsformen bei alternativen Verarbeitungssystemen benutzt werden können, ohne den Umfang von Ausführungsformen der Erfindung zu verlassen.
  • Das Computersystem 140 umfasst einen Verarbeitungskern 159, der in der Lage ist, mindestens einen Befehl gemäß einer Ausführungsform durchzuführen. Bei einer Ausführungsform repräsentiert der Verarbeitungskern 159 eine Verarbeitungseinheit eines beliebigen Typs von Architektur einschließlich, aber nicht beschränkt auf einen CISC-, RISC- oder VLIW-Architekturtyp. Der Verarbeitungskern 159 kann auch zur Fertigung in einer oder mehreren Verfahrenstechnologien geeignet sein und kann, da er auf einem maschinenlesbaren Medium in ausreichenden Einzelheiten repräsentiert ist, zur Erleichterung der Fertigung geeignet sein.
  • Der Verarbeitungskern 159 umfasst eine Ausführungseinheit 142, einen Registerdatei(en)satz 145 und einen Decodierer 144. Der Verarbeitungskern 159 beinhaltet auch zusätzliche Schaltungen (nicht abgebildet), die für das Verständnis von Ausführungsformen der vorliegenden Erfindung nicht notwendig sind. Die Ausführungseinheit 142 wird zum Ausführen von Befehlen benutzt, die vom Verarbeitungskern 159 empfangen werden. Außer der Ausführung typischer Prozessorbefehle kann die Ausführungseinheit 142 Befehle im gepackten Befehlssatz 143 zum Ausführen von Operationen an gepackten Datenformaten ausführen. Der gepackte Befehlssatz 143 beinhaltet Befehle zum Ausführen von Ausführungsformen der Erfindung und anderer gepackter Befehle. Die Ausführungseinheit 142 ist mittels eines internen Busses mit der Registerdatei 145 gekoppelt. Die Registerdatei 145 repräsentiert einen Speicherbereich im Verarbeitungskern 159 zum Speichern von Informationen einschließlich Daten. Wie oben erwähnt, versteht es sich, dass der Speicherbereich, der zum Speichern der gepackten Daten benutzt wird, nicht entscheidend ist. Die Ausführungseinheit 142 ist mit dem Decodierer 144 gekoppelt. Der Decodierer 144 wird zum Decodieren von Befehlen, die vom Verarbeitungskern 159 empfangen werden, zu Steuersignalen und/oder Mikrocode-Eintragspunkten benutzt. Die Ausführungseinheit 142 führt unter Ansprechen auf diese Steuersignale und/oder Mikrocode-Eintragspunkte die geeigneten Operationen durch. In einer Ausführungsform wird der Decodierer benutzt, um den Opcode des Befehls zu interpretieren, der anzeigen wird, welche Operation an den entsprechenden Daten durchgeführt werden sollte, die innerhalb des Befehls angezeigt sind.
  • Der Verarbeitungskern 159 ist zum Kommunizieren mit verschiedenen anderen Systemvorrichtungen, zu denen u. a. beispielsweise die Steuerung 146 für synchronen dynamischen Direktzugriffsspeicher (SDRAM), die Steuerung 147 für statischen Direktzugriffsspeicher (SRAM), Burst-Flash-Speicher-Schnittstelle 148, PCMCIA(personal computer memory card international association)/Compact-Flash-(CF)-Kartensteuerung 149, Flüssigkristallanzeige (LCD) 150, Direct-Memory-Access-(DMA)-Controller 151 und alternative Bus-Master-Schnittstelle 152 gehören, aber nicht auf diese beschränkt sind, mit dem Bus 141 gekoppelt. In einer Ausführungsform kann das Datenverarbeitungssystem 140 auch eine I/O-Brücke 154 zum Kommunizieren mit verschiedenen I/O-Vorrichtungen über einen I/O-Bus 153 umfassen. Solche I/O-Vorrichtungen können u. a. beispielsweise Universal-Asynchronous-Receiver/Transmitter (UART) 155, Universal-Serial-Bus (USB) 156, Bluetooth-Wireless-UART 157 und I/O-Erweiterungsschnittstelle 158 sein, sind aber nicht auf diese beschränkt.
  • Eine Ausführungsform von Datenverarbeitungssystem 140 stellt mobile, Netzwerk- und/oder drahtlose Kommunikation und einen Verarbeitungskern 159 bereit, der in der Lage ist, SIMD-Operationen einschließlich einer Textstring-Vergleichsoperation durchzuführen. Der Verarbeitungskern 159 kann mit verschiedenen Audio-, Video-, Bildverarbeitungs- und Kommunikationsalgorithmen einschließlich diskreter Transformationen, wie z. B. einer Walsh-Hadamard-Transformation, einer schnellen Fourier-Transformation (FFT), einer diskreten Cosinus-Transformation (DCT) und deren jeweiligen Umkehrtransformationen; Kompressions/Dekompressions-Techniken, wie z. B. Farbraumtransformation, videocodierter Bewegungsvorhersage (video encode motion estimation) oder videodecodierter Bewegungskompensation (video decode motion compensation); und Modulation/Demodulations-Funktionen (MODEM-Funktionen), wie z. B. Pulscodemodulation (PCM) programmiert werden.
  • 1C veranschaulicht eine weitere alternative Ausführungsform eines Datenverarbeitungssystems, das in der Lage ist, Befehle auszuführen, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen. Gemäß einer alternativen Ausführungsform kann das Datenverarbeitungssystem 160 einen Hauptprozessor 166, einen SIMD-Coprozessor 161, einen Cache-Speicher 167 und ein Eingabe/Ausgabe-System 168 beinhalten. Das Eingabe/Ausgabe-System 168 kann wahlweise mit einer drahtlosen Schnittstelle 169 gekoppelt werden. Der SIMD-Coprozessor 161 ist fähig, Operationen einschließlich Befehle gemäß einer Ausführungsform auszuführen. Der Verarbeitungskern 170 kann auch zur Fertigung in einer oder mehreren Verfahrenstechnologien geeignet sein und, da er auf einem maschinenlesbaren Medium in ausreichenden Einzelheiten repräsentiert ist, kann er zur Erleichterung der Fertigung des gesamten oder eines Teils des Datenverarbeitungssystems 160 einschließlich des Verarbeitungskerns 170 geeignet sein.
  • Bei einer Ausführungsform umfasst der SIMD-Coprozessor 161 eine Ausführungseinheit 162 und einen Registerdatei(en)satz 164. Eine Ausführungsform des Hauptprozessors 166 umfasst einen Decodierer 165 zum Erkennen von Befehlen von Befehlssatz 163 einschließlich Befehlen gemäß einer Ausführungsform zum Ausführen durch Ausführungseinheit 162. Für alternative Ausführungsformen umfasst der SIMD-Coprozessor 161 auch mindestens einen Teil des Decodierers 165B zum Decodieren von Befehlen des Befehlssatzes 163. Der Verarbeitungskern 170 beinhaltet auch zusätzliche Schaltungen (nicht abgebildet), die für das Verständnis von Ausführungsformen der vorliegenden Erfindung nicht notwendig sind.
  • In Betrieb führt der Hauptprozessor 166 einen Fluss von Datenverarbeitungsbefehlen aus, die Datenverarbeitungsoperationen eines allgemeinen Typs einschließlich Interaktionen mit dem Cache-Speicher 167 und dem Eingabe/Ausgabe-System 168 steuern. Innerhalb des Flusses von Datenverarbeitungsbefehlen eingebettet sind SIMD-Coprozessorbefehle. Der Decodierer 165 des Hauptprozessors 166 erkennt diese SIMD-Coprozessorbefehle als solche eines Typs, der durch einen angefügten SIMD-Coprozessor 161 ausgeführt werden sollte. Demzufolge gibt der Hauptprozessor 166 diese SIMD-Coprozessorbefehle (oder Steuersignale, die SIMD-Coprozessorbefehle repräsentieren) zu dem Coprozessorbus 171 aus, von wo aus sie von angefügten SIMD-Coprozessoren empfangen werden. In diesem Fall wird der SIMD-Coprozessor 161 empfangene SIMD-Coprozessorbefehle, die für ihn bestimmt sind, akzeptieren und ausführen.
  • Daten können über die drahtlose Schnittstelle 169 zum Verarbeiten durch die SIMD-Coprozessorbefehle empfangen werden. Als ein Beispiel kann Sprachkommunikation in Form eines digitalen Signals empfangen werden, das von den SIMD-Coprozessorbefehlen verarbeitet werden kann, um digitale Audiomuster zu regenerieren, die für die Sprachkommunikationen repräsentativ sind. Als ein anderes Beispiel kann komprimiertes Audio und/oder Video in Form eines digitalen Bitstroms empfangen werden, der von den SIMD-Coprozessorbefehlen verarbeitet werden kann, um digitale Audiomuster und/oder Motion-Video-Frames zu regenerieren. Bei einer Ausführungsform des Verarbeitungskerns 170 sind der Hauptprozessor 166 und ein SIMD-Coprozessor 161 in einen einzelnen Verarbeitungskern 170 integriert, der eine Ausführungseinheit 162, einen Registerdatei(en)satz 164 und einen Decodierer 165 umfasst, um Befehle von Befehlssatz 163 einschließlich Befehlen gemäß einer Ausführungsform zu erkennen.
  • 2 ist ein Blockdiagramm der Mikroarchitektur für einen Prozessor 200, der logische Schaltungen zum Ausführen von Befehlen gemäß einer Ausführungsform der vorliegenden Erfindung beinhaltet. In manchen Ausführungsformen kann ein Befehl gemäß einer Ausführungsform implementiert werden, um Datenelemente der Größen Byte, Wort, Doppelwort, Quadwort usw., sowie Datentypen, wie z. B. Integer-Datentypen (mit einfacher und doppelter Genauigkeit) und Gleitkommazahl-Datentypen (mit einfacher und doppelter Genauigkeit), zu bearbeiten. In einer Ausführungsform ist das In-Order-Front-End 201 der Teil des Prozessors 200, das die auszuführenden Befehle holt und sie auf weitere Verwendung in der Prozessor-Pipeline vorbereitet. Das Front-End 201 kann mehrere Einheiten umfassen. In einer Ausführungsform holt der Befehls-Prefetcher 226 Befehle aus dem Speicher und gibt sie an den Befehlsdecoder 228 weiter, der sie seinerseits dekodiert und interpretiert. Zum Beispiel dekodiert der Decoder in einer Ausführungsform einen erhaltenen Befehl zu einer oder mehreren Operationen, die „Mikrobefehle” oder „Mikrooperationen” heißen (sie werden auch als Mikro-ops oder μ-op bezeichnet), die die Maschine ausführen kann. In anderen Ausführungsformen parst der Decoder den Befehl zu einem Opcode und entsprechenden Daten- und Steuerfeldern, die von der Mikroarchitektur verwendet werden, um Operationen gemäß einer Ausführungsform auszuführen. In einer Ausführungsform holt der Trace-Cache 230 die dekodierten Mikrooperationen und assembliert sie für die Ausführung zu geordneten Programmsequenzen oder Traces in der Mikrobefehls-Warteschlange 234. Wenn der Trace-Cache 230 einen komplexen Befehl antrifft, stellt der Mikrocode-ROM 232 die zum Abschluss der Operation nötigen Mikrooperationen bereit.
  • Manche Befehle werden in einfache Mikrooperationen umgewandelt, während andere mehrere Mikrooperationen benötigen, um die vollständige Operation abzuschließen. In einer Ausführungsform, wenn mehr als vier MikroOp zum vollständigen Durchführen eines Befehls benötigt werden, greift der Decodierer 228 auf den Mikrocode-ROM 232 zu, um dem Befehl nachzukommen. Bei einer Ausführungsform kann ein Befehl für eine Abwicklung zu einer kleiner Anzahl von Mikrooperationen an dem Befehlsdecoder 228 dekodiert werden. In einer weiteren Ausführungsform kann ein Befehl in dem Mikrocode-ROM 232 gespeichert werden, falls eine Anzahl von Mikrooperationen zum Bewältigen der Operation nötig ist. Der Trace-Cache 230 verweist auf ein Eintragspunkt-programmierbares Logik-Array (PLA), um einen korrekten Mikrobefehlzähler zum Lesen der Mikrocodesequenzen zu bestimmen, um einen oder mehrere Befehle gemäß einer Ausführungsform von dem Mikrocode-ROM 232 vollständig auszuführen. Nachdem der Mikrocode-ROM 232 das Einreihen von Mikrooperationen für einen Befehl beendet hat, nimmt das Front-End 201 der Maschine den Abruf von Mikrooperationen aus dem Trace-Cache 230 wieder auf.
  • Die Befehle werden in dem Out-Of-Order-Ausführungssystem (in der OOO-Execution Engine) für die Ausführung vorbereitet. Die OOO-Ausführungslogik weist eine Anzahl von Puffer auf, um den Fluss der Befehle für eine Optimierung der Leistung zu glätten und umzuordnen, während sie durch die Pipeline gehen und für die Ausführung eingeplant werden. Die Allokator-Logik alloziert die Puffer und Ressourcen der Maschine, die jede Mikrooperation benötigt, um ausgeführt zu werden. Die Registerumbenennung-Logik umbenennt logische Register auf Einträge in einem Registerspeicher. Der Allokator alloziert außerdem einen Eintrag für jede Mikrooperation in einer der zwei (eine für Speicheroperationen und eine für Nicht-Speicheroperationen) Mikrobefehls-Warteschlangen vor den Befehls-Schedulern: Speicher-Scheduler, dem schnellen Scheduler 202, dem langsamen/allgemeinen Gleitkommazahl-Scheduler 204 und einfachen Gleitkommazahl-Scheduler 206. Die uop-Scheduler 202, 204, 206 bestimmen die Ausführungsbereitschaft einer UOP auf Basis der Bereitschaft ihrer abhängigen Eingaberegister-Operandquellen und der Verfügbarkeit der Ausführungsressourcen, die von den UOPs zum Durchführen ihrer Operation benötigt werden. Der schnelle Scheduler 202 einer Ausführungsform kann bei jeder Hälfte des Haupttaktzyklus planen, während andere Scheduler nur ein Mal pro Hauptprozessortaktzyklus planen können. Die Scheduler vermitteln zwischen den Dispatch-Ports, um Mikrooperationen für die Ausführung einzuplanen.
  • Registerdateien 208, 210 befinden sich zwischen den Scheduler 202, 204, 206 und den Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 im Ausführungsblock 211. Es gibt eine separate Registerdatei 208, 210 für Ganzzahl- bzw. Gleitkommaoperationen. Jeder Registerspeicher 208, 210 einer Ausführungsform umfasst außerdem ein Bypass-Netzwerk, dass fertige Ergebnisse, die noch nicht in den Registerspeicher geschrieben wurden, an neue abhängige Mikrooperationen umleitet oder weitergibt. Der Integer-Registerspeicher 208 und der Gleitkommaregisterspeicher 210 sind auch in der Lange, Daten aneinander zu übermitteln. Bei einer Ausführungsform ist der Integer-Registerspeicher 208 in zwei getrennte Registerspeicher, einen Registerspeicher für die niederwertigen 32 Datenbits und einen zweiten Registerspeicher für die höherwertigen 32 Datenbits, aufgeteilt. Der Gleitkommaregisterspeicher 210 einer Ausführungsform weist 128 Bit breite Einträge auf, da Gleitkommaoperationen normalerweise Operanden von 64- bis 128-Bit-Breite umfassen.
  • Der Ausführungsblock 211 weist die Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 auf, in denen die Befehle tatsächlich ausgeführt werden. Dieser Abschnitt weist die Registerspeicher 208, 210 auf, die die Werte von Integer- und Gleitkommazahl-Datenoperanden speichern, die von den Mikrobefehlen ausgeführt werden müssen. Der Prozessor 200 einer Ausführungsform weist eine Anzahl von Ausführungseinheiten auf: Address Generation Unit (AGU) 212, AGU 214, schnelle ALU 216, schnelle ALU 218, langsame ALU 220, Gleitkommazahl-ALU 222, Gleitkommazahl-Verschiebungseinheit 224. Bei einer Ausführungsform führen die Gleitkommazahl-Ausführungsblöcke 222, 224 Gleitkommazahl-, MMX-, SIMD- und SSE- oder andere Operationen aus. Die Gleitkommazahl-ALU 222 einer Ausführungsform weist einen 64-Bit/64-Bit-Gleitkommazahl-Divider auf, um Division, Quadratwurzel, und Rest an Mikrooperationen auszuführen. Bei Ausführungsformen der vorliegenden Erfindung können Befehle, die einen Gleitkommazahl-Wert einschließen, mit der Gleitkommazahl-Hardware bearbeitet werden. In einer Ausführungsform gehen die ALU-Operationen an die Ausführungseinheiten 216, 218 der Hochgeschwindigkeits-ALU. Die schnellen ALUs 216, 218 einer Ausführungsform können schelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Bei einer Ausführungsform wandern die komplexesten Integer-Operationen an die langsame ALU 220, da die langsame ALU 220 Integer-Ausführungshardware für Operationen mit einer langen Latenz, wie z. B. Multiplikator, Versetzungen, Flag-Logik, Sprung-Ausführung, umfasst. Load/Store-Speicheroperationen werden durch die AGUs 212, 214 ausgeführt. In einer Ausführungsform sind die Ganzzahl-ALUs 216, 218, 220 im Zusammenhang mit der Durchführung von Ganzzahloperationen bei 64-Bit-Datenoperanden beschrieben. Bei alternativen Ausführungsformen können die ALUs 216, 218, 220 implementiert werden, um eine Vielzahl von Datenbits zu unterstützen, z. B. 16, 32, 128, 256 usw. In ähnlicher Weise können die Gleitkommaeinheiten 222, 224 implementiert werden, um eine Reihe von Operanden mit Bits verschiedener Breite zu unterstützen. In einer Ausführungsform können die Gleitkommaeinheiten 222, 224 bei 128 Bit breiten gepackten Datenoperanden in Verbindung mit SIMD- und Multimedia-Befehlen arbeiten.
  • In einer Ausführungsform senden die uops-Scheduler 202, 204, 206 unabhängige Operationen, bevor eine übergeordnete Last fertig ausgeführt wurde. Da Mikrooperationen in Prozessor 200 spekulativ eingeplant und ausgeführt werden, umfasst der Prozessor 200 eine Logik, um die Speicher-Misses zu behandeln. Bei einem Fehlversuch der Datenlast im Daten-Cache können sich abhängige Operationen im Fluss der Pipeline befinden, die den Scheduler mit temporär falschen Daten verlassen haben. Ein Wiederholungsmechanismus verfolgt und führt erneut Befehle aus, die inkorrekte Daten verwenden. Es müssen nur die abhängigen Operationen wiederholt werden, und die unabhängigen Operationen können fertig gestellt werden. Die Scheduler und Wiederholmechanismen einer Ausführungsform eines Prozessors sind ebenfalls so konzipiert, dass sie Befehle abfangen können, die verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitstellen.
  • Der Begriff ”Register” kann sich auf die Speicherstellen des On-Board-Prozessors beziehen, die als Teile der Befehle zur Identifizierung von Operanden verwendet werden. Mit anderen Worten können es Register sein, die von außerhalb des Prozessor verwendbar sind (aus der Perspektive eines Programmierers). Jedoch sollen die Register einer Ausführungsform nicht in ihrer Bedeutung auf eine bestimmte Art Schaltung beschränkt sein. Vielmehr ist ein Register einer Ausführungsform in der Lage, Daten zu speichern und bereitzustellen, sowie die hier beschriebenen Funktionen auszuführen. Die hier beschriebenen Register können durch eine Schaltungsanordnung innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl von verschiedenen Techniken implementiert sein, wie z. B. dedizierte physikalische Register, dynamisch zugewiesene physikalische Register, die Registerumbenennung verwenden, Kombinationen von dedizierten und dynamisch zugewiesenen physikalischen Registern usw. In einer Ausführungsform speichern Integer-Register 32-Bit-Integer-Daten. Ein Registerspeicher einer Ausführungsform umfasst außerdem acht Multimedia-SIMD-Register für komprimierte Daten. Für die untenstehenden Erörterungen werden die Register als Datenregister aufgefasst, die eingerichtet sind, um gepackte Daten zu enthalten, wie z. B. 64 Bit breite MMXTM-Register (in einigen Fällen auch als ’mm’-Register bezeichnet) in Mikroprozessoren, die mit der MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, befähigt sind. Diese MMX-Register, die sowohl in Integer- als auch Gleitkommazahl-Formen erhältlich sind, können mit komprimierten Datenelementen, die SIMD- und SSE-Befehle begleiten, arbeiten. Gleichermaßen können auch 128 Bit breite XMM-Register im Zusammenhang mit der SSE2-, SSE3-, SSE4-Technologie oder höher (allgemein als „SSEx” bezeichnet) verwendet werden, um solche komprimierten Datenoperanden zu fassen. In einer Ausführungsform brauchen die Register beim Speichern von komprimierten Daten und Integer-Daten nicht zwischen den zwei Datentypen zu unterscheiden. In einer Ausführungsform sind Integer und Gleitkommazahlen entweder in demselben Registerspeicher oder in verschiedenen Registerspeichern enthalten. Außerdem können in einer Ausführungsform Gleitkommazahl- und Integer-Daten in verschiedenen Registern oder denselben Registern gespeichert sein.
  • In den Beispielen der folgenden Figuren ist eine Anzahl von Datenoperanden beschrieben. 3A veranschaulicht verschiedene Darstellungen von Typen gepackter Daten in Multimediaregistern gemäß einer Ausführungsform der vorliegenden Erfindung. 3A veranschaulicht Datentypen für ein gepacktes Byte 310, ein gepacktes Wort 320 und ein gepacktes Doppelwort (dword) 330 für 128 Bit breite Operanden. Das gepackte Byte-Format 310 dieses Beispiels ist 128 Bits lang und enthält sechzehn gepackte Byte-Datenelemente. Ein Byte ist hier als 8 Bits von Daten definiert. Informationen für jedes Byte-Datenelement werden in Bit 7 bis Bit 0 für Byte 0, Bit 15 bis Bit 8 für Byte 1, Bit 23 bis Bit 16 für Byte 2 und schließlich Bit 120 bis Bit 127 für Byte 15 gespeichert. Somit werden alle verfügbaren Bits in dem Register benutzt. Diese Speicheranordnung steigert die Speicherungseffizienz des Prozessors. Ebenso kann mit sechzehn Datenelementen, auf die zugegriffen wird, nun eine Operation parallel an sechzehn Datenelementen durchgeführt werden.
  • Generell ist ein Datenelement ein individuelles Datenstück, das in einem einzelnen Register oder Speicherort mit anderen Datenelementen der gleichen Länge gespeichert ist. In gepackten Datensequenzen in Zusammenhang mit der SSEx-Technologie beträgt die Anzahl von Datenelementen, die in einem XMM-Register gespeichert werden, 128 Bits geteilt durch die Lange in Bits eines individuellen Datenelementes. In ähnlicher Weise beträgt in gepackten Datensequenzen in Zusammenhang mit der MMX-Technologie die Anzahl von Datenelementen, die in einem MMX-Register gespeichert werden, 64 Bits geteilt durch die Länge in Bits eines individuellen Datenelementes. Obwohl die Datentypen, die in 3A veranschaulicht sind, 128 Bit lang sind, können Ausführungsformen der vorliegenden Erfindung auch mit 64 Bit breiten, 256 Bit breiten, 512 Bit breiten oder Operanden anderer Größe operieren. Das gepackte Wortformat 320 dieses Beispiels ist 128 Bits lang und enthält acht gepackte Wort-Datenelemente. Jedes gepackte Wort enthält sechzehn Bit an Informationen. Das gepackte Doppelwortformat 330 von 3A ist 128 Bit lang und enthält vier gepackte Doppelwort-Datenelemente. Jedes gepackte Doppelwort-Datenelement enthält zweiunddreißig Bit an Informationen. Ein gepacktes Quadwort ist 128 Bit lang und enthält zwei gepackte Quadwort-Datenelemente.
  • 3B veranschaulicht alternative registerinnere Datenspeicherformate. Jedes gepackte Datum kann mehr als ein unabhängiges Datenelement beinhalten. Drei gepackte Datenformate sind veranschaulicht: gepacktes halbes 341, gepacktes einzelnes 342 und gepacktes doppeltes 343. Eine Ausführungsform von gepacktem halbem 341, gepacktem einzelnen 342 und gepacktem doppeltem 343 enthält Festkomma-Datenelemente. Bei einer alternativen Ausführungsform können eines oder mehrere von gepacktem halbem 341, gepacktem einzelnen 342 und gepacktem doppeltem 343 Gleitkomma-Datenelemente enthalten. Eine alternative Ausführungsform von gepacktem halbem 341 ist einhundertachtundzwanzig Bit lang und enthält acht 16-Bit-Datenelemente. Eine Ausführungsform von gepacktem einzelnem 342 ist einhundertachtundzwanzig Bit lang und enthält vier 32-Bit-Datenelemente. Eine Ausführungsform von gepacktem doppeltem 343 ist einhundertachtundzwanzig Bit lang und enthält zwei 64-Bit-Datenelemente. Es versteht sich, dass solche gepackten Datenformate ferner auf andere Registerlänge ausgeweitet werden können, beispielsweise auf 96 Bit, 160 Bit, 192 Bit, 224 Bit, 256 Bit, 512 Bit oder mehr.
  • 3C veranschaulicht verschiedene Darstellungen vorzeichenbehafteter und nicht vorzeichenbehafteter gepackter Datentypen in Multimediaregistern gemäß einer Ausführungsform der vorliegenden Erfindung. Die Darstellung nicht vorzeichenbehafteter gepackter Bytes 344 veranschaulicht die Speicherung eines nicht vorzeichenbehafteten gepackten Byte in einem SIMD-Register. Informationen für jedes Byte-Datenelement werden in Bit sieben bis Bit null für Byte null, Bit fünfzehn bis Bit acht für Byte eins, Bit dreiundzwanzig bis Bit sechzehn für Byte zwei usw. und schließlich Bit einhundertzwanzig bis einhundertsiebenundzwanzig für Byte fünfzehn gespeichert. Somit werden alle verfügbaren Bits in dem Register benutzt. Diese Speicheranordnung kann die Speicherungseffizienz des Prozessors steigern. Ebenso kann nun mit sechzehn Datenelementen, auf die zugegriffen wird, eine Operation in paralleler Weise an sechzehn Datenelementen durchgeführt werden. Die Darstellung von vorzeichenbehaftetem gepacktem Byte 345 veranschaulicht die Speicherung eines vorzeichenbehafteten gepackten Byte. Beachte, dass das achte Bit jedes Byte-Datenelementes der Vorzeichenindikator ist. Die Darstellung von nicht vorzeichenbehaftetem gepacktem Wort 346 veranschaulicht, wie Wort sieben bis Wort null in einem SIMD-Register gespeichert werden. Die Darstellung von vorzeichenbehaftetem gepacktem Wort 347 ist der registerinneren Darstellung von nicht vorzeichenbehaftetem gepacktem Wort 346 ähnlich.
  • Beachte, dass das sechzehnte Bit jedes Wort-Datenelementes der Vorzeichenindikator ist. Die Darstellung von nicht vorzeichenbehaftetem gepacktem Doppelwort 348 zeigt, wie Doppelwort-Datenelemente gespeichert werden. Die Darstellung von vorzeichenbehaftetem gepacktem Doppelwort 349 ist der registerinneren Darstellung von nicht vorzeichenbehaftetem gepacktem Doppelwort 348 ähnlich. Beachte, dass das notwendige Vorzeichen-Bit das zweiunddreißigste Bit jedes Doppelwort-Datenelementes ist.
  • 3D ist eine Figur einer Ausführungsform eines Operationscodierungsformates (Opcode-Format) 360, das zweiunddreißig oder mehr Bits aufweist, und von Register/Speicher-Operandenadressiermodi entsprechend einem Typ von Opcode-Format, das im „Intel® 64 and IA-32 Intel Architecture Software Developer's Manual Combined Volumes 2A and 2B: Instruction Set Reference A–Z” beschrieben ist, welches bei der Intel Corporation, Santa Clara, CA im World-Wide-Web (www) unter intel.com/products/processor/manuals/ erhältlich ist. In einer Ausführungsform kann ein Befehl durch ein oder mehrere der Felder 361 und 362 codiert sein. Bis zu zwei Operandenorte je Befehl können identifiziert werden, einschließlich bis zu zwei Quelloperanden-Identifikatoren 364 und 365. Bei einer Ausführungsform ist Zieloperanden-Identifikator 366 gleich dem der Quelloperanden-Identifikator 364, wohingegen sie in anderen Ausführungsformen verschieden sind. Bei einer alternativen Ausführungsform ist der Zieloperanden-Identifikator 366 gleich dem Quelloperanden-Identifikator 365, wohingegen sie in andern Ausführungsformen verschieden sind. In einer Ausführungsform wird einer der Quelloperanden, der durch die Quelloperanden-Identifikatoren 364 und 365 identifiziert wurde, durch die Ergebnisse des Befehls überschrieben, wohingegen in anderen Ausführungsformen der Identifikator 364 einem Quellregisterelement entspricht und der Identifikator 365 einem Zielregisterelement entspricht. Bei einer Ausführungsform können die Operandenidentifikatoren 364 und 365 benutzt werden, um 32-Bit- oder 64-Bit-Quell- und -Zieloperanden zu identifizieren.
  • 3E ist eine Figur eines anderen alternativen Operationscodierungsformates (Opcode-Format) 370, das vierzig oder mehr Bits aufweist. Das Opcode-Format 370 entspricht dem Opcode-Format 360 und umfasst ein optionales Präfix-Byte 378. Ein Befehl kann gemäß einer Ausführungsform durch ein oder mehrere Felder der 378, 371 und 372 codiert sein. Bis zu zwei Operandenorte je Befehl können durch die Quelloperanden-Identifikatoren 374 und 375 und durch das Präfix-Byte 378 identifiziert werden. Bei einer Ausführungsform kann das Präfix-Byte 378 benutzt werden, um 32-Bit- oder 64-Bit-Quell- und -Zieloperanden zu identifizieren. Bei einer Ausführungsform ist der Zieloperanden-Identifikator 376 der gleiche wie der Quelloperanden-Identifikator 374, wohingegen sie in andern Ausführungsformen verschieden sind. Bei einer alternativen Ausführungsform ist der Zieloperanden-Identifikator 376 der gleiche wie der Quelloperanden-Identifikator 375, wohingegen sie in andern Ausführungsformen verschieden sind. In einer Ausführungsform bearbeitet ein Befehl einen oder mehrere der Operanden, die von den Operanden-Identifikatoren 374 und 375 identifiziert wurden, und ein oder mehrere Operanden, die durch die Operanden-Identifikatoren 374 und 375 identifiziert wurden, werden durch die Ergebnisse des Befehls überschrieben, wohingegen in anderen Ausführungsformen Operanden, die durch die Identifikatoren 374 und 375 identifiziert werden, in ein anderes Datenelemente in einem anderen Register geschrieben werden. Die Opcode-Formate 360 und 370 ermöglichen Register-zu-Register-, Speicher-zu-Register-, Register-durch-Speicher-, Register-durch-Register-, Register-durch-Immediate-, Register-zu-Speicher-Adressierung, die teilweise durch die MOD-Felder 363 und 373 und durch optionale Scale-Index-Base- und Verschiebungs-Bytes spezifiziert sind.
  • Als nächstes wird sich der 3F zugewandt, wobei in einigen alternativen Ausführungsformen 64-Bit- (oder 128-Bit- oder 256-Bit- oder 512-Bit- oder mehr) arithmetische SIMD-Operationen (single instruction multiple data operations) durch einen Coprozessor-Datenverarbeitungsbefehl (CDP-Befehl) durchgeführt werden können. Das Operationscodierungsformat (Opcode-Format) 380 bildet einen solchen CDP-Befehl ab, der die CDP-Opcode-Felder 382 und 389 aufweist. Bei dem Typ von CDP-Befehl können bei alternativen Ausführungsformen Operationen durch eines oder mehrere der Felder 383, 384, 387 und 388 codiert werden. Bis zu drei Operandenorte je Befehl können identifiziert werden, einschließlich bis zu zwei Quelloperanden-Identifikatoren 385 und 390 und eines Zieloperanden-Identifikators 386. Eine Ausführungsform des Coprozessors kann 8-, 16-, 32- und 64-Bit-Werte bearbeiten. Bei einer Ausführungsform wird ein Befehl an Ganzzahl-Datenelementen ausgeführt. In einigen Ausführungsformen kann ein Befehl unter Benutzen des Feldes 381 bedingt ausgeführt werden. Bei einigen Ausführungsformen können die Quelldatengrößen durch das Feld 383 codiert werden. In einigen Ausführungsformen kann die Detektion von Null (Z), Negativ (N), Übertragen (C) und Überlauf (V) an SIMD-Feldern erfolgen. Für einige Befehle kann der Typ der Sättigung durch das Feld 384 codiert werden.
  • In der nächsten 3G findet man die Darstellung eines weiteren alternativen Formates 397 zur Verschlüsselung von Operationen (Opcode), zur Bereitstellung von verbesserten Paging-Fähigkeiten für Secure Enclave-Seitencaches gemäß einer weiteren Ausführungsform, die einem Typ des Opcode-Formates entspricht, das im Dokument „Intel® Advanced Vector Extensions Programming Reference,” beschrieben wird, abrufbar von Intel Corp., Santa Clara, CA im Internet (www) unter intel.com/products/processor/manuals/.
  • Der ursprüngliche ×86-Befehlssatz, der für ein 1-Byte-Opcode mit verschiedenen Address-Syllable-Formaten und Immediate-Operanden, die in zusätzlichen Bytes enthalten sind, deren Gegenwart von dem ersten „Opcode”-Byte bekannt war, bereitgestellt wurde. Außerdem gab es bestimmte Byte-Werte, die als Modifizierer zu dem Opcode reserviert wurden (Präfixe genannt, da sie vor dem Befehl angeordnet werden mussten). Wenn die ursprüngliche Palette von 256 Opcode-Bytes (einschließlich dieser speziellen Präfixwerte) aufgebraucht war, wurde ein einzelnes Byte als ein Escape für einen neuen Satz von 256 Opcodes dediziert. Da Vektorbefehle (z. B. SIMD) hinzugefügt wurden, wurde ein Bedarf an weiteren Opcodes erzeugt, und die ”Zwei-Byte”-Opcode-Map war auch nicht ausreichend, selbst wenn sie durch die Benutzung von Präfixen erweitert wurde. Zu diesem Zweck wurden neue Befehle in zusätzlichen Maps hinzugefügt, die 2 Bytes plus ein optionales Präfix als einen Identifikator benutzen.
  • Außerdem kann, um zusätzliche Register in 64-Bit-Modus zu erleichtern, ein zusätzliches Präfix (als ”REX” bezeichnet) zwischen den Präfixen und dem Opcode (und Escape-Bytes, die notwendig sind, um den Opcode zu bestimmen) benutzt werden. In einer Ausführungsform kann das REX 4 ”Payload”-Bits aufweisen, um die Benutzung zusätzlicher Register in 64-Bit-Modus anzuzeigen. In anderen Ausführungsformen kann es weniger oder mehr als 4 Bit aufweisen. Das allgemeine Format mindestens eines Befehlssatzes (das im Allgemeinen dem Format 360 und/oder Format 370 entspricht) wird generisch durch Folgendes veranschaulicht:
    [Präfixe] [REX] Escape [Escape2] Opcode Modrm (usw.)
  • Das Opcode-Format 397 entspricht dem Opcode-Format 370 und umfasst optionale VEX-Präfix-Bytes 391 (beginnend mit C4-Hex in einer Ausführungsform), um die meisten gewöhnlich benutzten Legacy-Befehl-Präfix-Bytes und Escapecodes zu ersetzen. Beispielsweise veranschaulicht das Folgende eine Ausführungsform, in der zwei Felder benutzt werden, um einen Befehl zu codieren, der benutzt werden kann, wenn ein zweiter Escape-Code in dem ursprünglichen Befehl vorhanden ist oder wenn Extra-Bits (z. B. die XB- und W-Felder) in dem REX-Feld benutzt werden müssen. In der unten veranschaulichten Ausführungsform wird Legacy-Escape durch einen neuen Escape-Wert repräsentiert, und Legacy-Präfixe sind als Teil der „Payload”-Bytes vollständig komprimiert, Legacy-Präfixe werden zurückgeholt und sind für zukünftige Erweiterung verfügbar, der zweite Escape-Code ist einem „Map”-Feld komprimiert, mit verfügbarem zukünftigem Map- oder Merkmalraum, und neue Merkmale werden hinzugefügt (z. B. erhöhte Vektorlänge und ein zusätzlicher Quellregisterspezifikator).
  • Figure DE102014004563A1_0002
  • Ein Befehl gemäß einer Ausführungsform kann durch ein oder mehrere der Felder 391 und 392 codiert werden. Bis zu vier Operandenorte je Befehl können durch das Feld 391 in Kombination mit den Quelloperanden-Identifikatoren 374 und 375 und in Kombination mit einem optionalen Scale-Index-Base-Identifikator (SIB-Identifikator) 393, einem optionalen Verschiebungs-Identifikator 394 und einem optionalen Immediate-Byte 395 identifiziert werden. Bei einer Ausführungsform können die VEX-Präfix-Bytes 391 benutzt werden, um 32-Bit- oder 64-Bit-Quell- und -Zieloperanden und/oder 128-Bit- oder 256-Bit-SIMD-Register- oder -Speicheroperanden zu identifizieren. Bei einer Ausführungsform kann die Funktionalität, die durch das Opcode-Format 397 geschaffen wird, mit dem Opcode-Format 370 redundant sein, wohingegen sie in anderen Ausführungsformen unterschiedlich ist. Die Opcode-Formate 370 und 397 ermöglichen Register-zu-Register-, Speicher-zu-Register-, Register-durch-Speicher-, Register-durch-Register-, Register-durch-Immediate-, Register-zu-Speicher-Adressierung, die teilweise durch das MOD-Feld 373 und durch den optionalen (SIB-)Identifikator 393, einen optionalen Verschiebungs-Identifikator 394 und ein optionales Immediate-Byte 395 spezifiziert werden.
  • In der nächsten 3H findet man eine Darstellung eines weiteren alternativen Formates 398 zur Verschlüsselung von Operationen (Opcode), zur Bereitstellung von verbesserten Paging-Fähigkeiten für Secure Enclave-Seitencaches gemäß einer weiteren Ausführungsform. Das Opcode-Format 398 entspricht den Opcode-Formaten 370 und 397 und umfasst die optionalen EVEX-Präfix-Bytes 396 (beginnend mit 62 Hex in einer Ausführungsform), um die meisten anderen gewöhnlich benutzten Legacy-Befehl-Präfix-Bytes und Escapecodes zu ersetzen und zusätzliche Funktionalität zu schaffen. Ein Befehl gemäß einer Ausführungsform kann durch ein oder mehrere der Felder 396 und 392 codiert werden. Bis zu vier Operandenorte pro Befehl und eine Maske können durch das Feld 396 in Kombination mit den Quelloperanden-Identifikatoren 374 und 375 und in Kombination mit einem optionalen Scale-Index-Base-Identifikator (SIB-Identifikator) 393, einem optionalen Verschiebungs-Identifikator 394 und einem optionalen Immediate-Byte 395 identifiziert werden. Bei einer Ausführungsform können die EVEX-Präfix-Bytes 396 benutzt werden, um 32-Bit- oder 64-Bit-Quell- und -Zieloperanden und/oder 128-Bit-, 256-Bit- oder 512-Bit-SIMD-Register- oder -Speicheroperanden zu identifizieren. Bei einer Ausführungsform kann die Funktionalität, die durch das Opcode-Format 398 geschaffen wird, mit den Opcode-Formaten 370 oder 397 redundant sein, wohingegen sie in anderen Ausführungsformen unterschiedlich ist. Das Opcode-Format 398 ermöglicht Register-zu-Register-, Speicher-zu-Register-, Register-durch-Speicher-, Register-durch-Register-, Register-durch-Immediate-, Register-zu-Speicher-Adressierung, mit Masken, die teilweise durch das MOD-Feld 373 und durch den optionalen (SIB-)Identifikator 393, einen optionalen Verschiebungs-Identifikator 394 und ein optionales Immediate-Byte 395 spezifiziert werden.
  • Das allgemeine Format mindestens eines Befehlssatzes (das im Allgemeinen dem Format 360 und/oder Format 370 entspricht) wird generisch durch Folgendes veranschaulicht:
    evex1 RXBmmmmm WvvvLpp evex4 opcode modrm [sib] [disp] [imm]
  • Für eine Ausführungsform kann ein Befehl, der gemäß des EVEX-Formates 398 verschlüsselt ist, über zusätzliche „Payload”-Bits verfügen, die zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches genutzt werden können, mit weiteren neuen Eigenschaften, wie zum Beispiel einem durch den Benutzer konfigurierbaren Maskenregister, oder einem zusätzlichen Operand, oder einer Auswahl zwischen 128-Bit-, 256-Bit-, oder 512-Bit-Vektorregistern, oder mehr Registern, aus denen zu wählen ist, usw.
  • Wenn zum Beispiel ein VEX-Format 397 zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches mit einer impliziten Maske verwendet werden kann, kann das EVEX-Format 398 genutzt werden, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches mit einer expliziten benutzerkonfigurierbaren Maske bereitzustellen. Außerdem kann, wenn das VEX-Format 397 verwendet werden kann, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches auf 128-Bit- oder 256-Bit-Vektorregistern bereitzustellen, das EVEX-Format 398 verwendet werden, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches auf 128-Bit-, 256-Bit-, 512-Bit- oder größeren (oder kleineren) Vektorregistern bereitzustellen.
  • Beispielbefehle zur Bereitstellung von verbesserten Paging-Fähigkeiten für Secure Enclave-Seitencaches werden durch die folgenden Beispiele veranschaulicht:
    Befehl Ziel Beschreibung
    EENTER/ERESUME Addr1 Secure Enclave eingeben, oder weiter auf Secure Enclave-Speicher zugreifen, entsprechend der Secure Enclave-Adresse, Addr1, und die Anzahl der logischen Prozessoren oder Hardware-Threads, die gerade auf die Secure Enclave zugreifen, hochzählen.
    EEXIT/AEX Addr1 Die Secure Enclave verlassen und/oder eine oder mehrere Übersetzungen flushen, um auf den Secure Enclave-Speicher zuzugreifen, entsprechend der Secure Enclave-Adresse, Addr1, und die Anzahl der logischen Prozessoren oder Hardware-Threads, die gleichzeitig auf die Secure Enclave zugreifen, dekrementieren.
    EBLOCK Addr1 Eintrag markieren, entsprechend der gemeinsamen Seite mit Seitenspeicheradresse, Addr1, in einer Secure Enclave-Seitenzuordnung wie blockiert, um die Erstellung neuer Übersetzungen zum Zugreifen auf die gemeinsame Seite zu verhindern.
    ETRACK Addr1 Die logischen Prozessoren oder Hardware-Threads aufzeichnen, die gerade auf den Secure Enclave-Speicher zugreifen, entsprechend der Secure Enclave-Adresse, Addr1, und die Anzahl der logischen Prozessoren oder Hardware-Threads dekrementieren, falls welche die Secure Enclave verlassen.
    EWRITEBACK/EWB Addr1 Die gemeinsame Seite mit Seitenspeicheradresse, Addr1, entfernen, verschlüsseln und zurückschreiben, wenn die Anzahl der logischen Prozessoren oder Hardware-Threads, die zuvor auf die Secure Enclave zugegriffen haben, auf Null dekrementiert wurde.
    EBLOCK&TRACK Addr1 Einen Eintrag markieren, entsprechend der gemeinsamen Seite mit Seitenspeicheradresse, Addr1, in einer Secure Enclave-Seitenzuordnung wie blockiert, um die Erstellung neuer Übersetzungen zum Zugreifen auf die gemeinsame Seite zu verhindern. Die logischen Prozessoren oder Hardware-Threads aufzeichnen, die gerade auf die Secure Enclave zugreifen, entsprechend der Seitenspeicheradresse, Addr1, und die Anzahl der logischen Prozessoren oder Hardware-Threads dekrementieren, falls welche die Secure Enclave verlassen.
    ELOAD Addr1 Die gemeinsame Seite mit Seitenspeicheradresse, Addr1, entschlüsseln und in den Secure Enclave-Seitencache laden.
  • Es ist zu verstehen, dass durch die Verwendung der obigen Enclave-Befehle zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches, der Paging-Prozess (z. B. wenn die Speicherinhalte des Secure Enclave-Seitencaches verschlüsselt und zurückgeschrieben, neue Seiten aus dem Speicher geladen und entschlüsselt, die TLB-Einträge geflusht und ersetzt werden, usw.) in Stufen unterteilt werden kann, in denen die Prozessorkerne oder logischen Prozessoren nur kurz während einer oder mehrerer Stufen unterbrochen werden. Diese Leistungsminderung aufgrund des Paging-Prozesses kann reduziert werden, während die Sicherheit der Secure Enclave-Daten ohne übermäßige Komplexität und Designaufwand gewährleistet werden kann.
  • Einige Ausführungsformen beinhalten mehrere Hardware-Threads, logische Prozessoren oder Prozessorkerne, einen Enclave-Seitencache zum Speichern sicherer Daten für gemeinsame Seitenadressen, die einer Secure Enclave zugeordnet sind, und der für die Hardware-Threads, logischen Prozessoren oder Prozessorkerne zugänglich ist. Eine Ausführungsform eines EBLOCK-Befehls legt die gemeinsame Seitenadresse als einen Operand fest. Eine oder mehrere Ausführungseinheiten markieren einen Eintrag, der einer Enclave-Seitencache-Zuordnung für die gemeinsame Seitenadresse entspricht, um die Erstellung einer neuen TLB-Übersetzung für einen der mehreren Hardware-Threads, logischen Prozessoren oder Prozessorkerne, um auf die gemeinsame Seite zuzugreifen, zu blockieren. Eine Ausführungsform eines ETRACK-Befehls legt die Secure Enclave als Operand fest, und eine oder mehrere Ausführungseinheiten zeichnen die Hardware-Threads auf, die gerade auf die sicheren Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen. Zum Beispiel kann die Enclave in einer Ausführungsform über zwei oder mehr Zähler verfingen, hier als „Epochenzähler” bezeichnet, um eine Anzahl von Hardware-Threads aufzuzeichnen, die gerade auf sichere Daten in der gegenwärtigen Epoche der Secure Enclave zugreifen, diese Anzahl anschließend in einen neuesten letzten Epochenzähler zu kopieren und eine neue Epoche mit keinen Hardware-Threads als die neue gegenwärtige Epoche zu initialisieren. In einer alternativen Ausführungsform eines EBLOCK&TRACK-Befehls wird die gemeinsame Seitenadresse als ein Operand festgelegt. Eine oder mehr Ausführungseinheiten markieren einen Eintrag entsprechend einer Enclave-Seitencache-Zuordnung für die gemeinsame Seitenadresse, um die Erstellung einer neuen TLB-Übersetzung für einen der mehreren Hardware-Threads, logischen Prozessoren oder Prozessorkerne zum Zugreifen auf die gemeinsame Seite zu blockieren, und die logischen Prozessoren oder Hardware-Threads aufzuzeichnen, die gerade auf die Secure Enclave entsprechend der Seitenspeicheradresse, Addr1, zugreifen, und die Anzahl der logischen Prozessoren oder Hardware-Threads dekrementieren, wenn welche die Secure Enclave verlassen. In einer oder mehreren Ausführungsformen verfolgen die Epochenzähler immer die Hardware-Threads, logischen Prozessoren oder Prozessorkerne, die in einer Secure Enclave ausgeführt werden oder auf sichere Daten zugreifen, die mit einer Secure Enclave verknüpft sind.
  • Das OS kann daraufhin einen Inter-Processor-Interrupt (IPI) an einen Hardware-Thread, logischen Prozessor oder Prozessorkern senden, der gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreift. Jeder Hardware-Thread, logische Prozessor oder Prozessorkern, der gerade auf sichere Daten entsprechend der Secure Enclave zugreift, hätte die Secure Enclave mit einem EENTER- oder ERESUME-Befehl betreten, der die Secure Enclave festlegt, und zu diesem Zeitpunkt wäre eine Epochennummer mit dem Hardware-Thread, logischen Prozessor oder Prozessorkern verknüpft worden. Wenn die Hardware-Threads, logischen Prozessoren oder Prozessorkerne die IPI bestätigen und die Secure Enclave verlassen, wird ihre TLB-Übersetzung oder ihre TLB-Übersetzungen geflusht. Immer wenn Hardware-Threads von der neuesten letzten Epoche die Secure Enclave verlassen (z. B. mit einem EEXIT- oder AEX-Befehl), wird die Anzahl der Hardware-Threads in der neuesten letzten Epoche dekrementiert.
  • Wenn die aufgezeichnete Anzahl an Hardware-Threads Null erreicht, ist es für das OS sicher, eine Seite oder Seiten zu entfernen, die Daten zu verschlüsseln, und sie zurück in den Speicher oder permanten Speicher zu schreiben. In einer Ausführungsform kann das OS einen EWRITEBACK- oder EWB-Befehl verwenden, der die gemeinsame Seitenadresse als Operand festlegt, um das Entfernen, Verschlüsseln der gesicherten Daten und Zurückschreiben der Seite in den permanenten Speicher abzuschließen. Da der Enclave-Schutz der sicheren Daten möglicherweise dem OS nicht vertrauen kann, ist es möglich, dass eine Ausführungsform eines EWRITEBACK- oder EWB-Befehls fehlschlägt, wenn die aufgezeichnete Anzahl an Hardware-Threads aus der neuesten letzten Epoche noch nicht Null erreicht hat. In anderen alternativen Ausführungsformen kann ein EWRITEBACK- oder EWB-Befehl mit der Ausführung oder dem Veranlassen einer Ausnahme warten, bis die aufgezeichnete Anzahl an Hardware-Threads Null erreicht hat. Das OS kann den freien Speicher einer neuen Seite der Secure Enclave zuordnen und sichere Daten für die neue Seite laden, die auf eine Ausführungsform des ELOAD-Befehls antwortet, welcher eine neue gemeinsame Seitenadresse als Operand festlegt.
  • Es ist zu verstehen, dass die Verwaltung von Berechtigungen, des physischen Speichers und/oder die Änderung der Zuordnungen immer noch von einem OS übernommen werden kann, aber wenn die Speicherinhalte geschützt sind, wie in einer Secure Enclave, ist das OS nicht berechtigt oder vertrauenswürdig, um auf die eigentlichen geschützten Inhalte des privaten Speichers der Enclave zuzugreifen. Die Gewährleistung der Sicherheit und/oder Integrität von privaten Speicherinhalten und die Verwaltung der technischen Einschränkungen eines beschränkten physischen Speichers zur Unterstützung eines größeren, geschützten, privaten Enclave-Speicherplatzes, ohne einem OS vertrauen zu können, kann stufenweise mithilfe von Befehlen und Verarbeitungslogik erreicht werden, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen, ohne dass es erforderlich ist, Hardwaresupport und/oder Designaufwand zu prüfen.
  • 4A ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbenennungsstufe, Out-of-Order-Issue/Ausführungss-Pipeline gemäß mindestens einer Ausführungsform der Erfindung veranschaulicht. 4B ist ein Blockdiagramm, das einen In-Order-Architektur-Kern und eine Registerumbenennungslogik, Out-of-Order-Issue/Ausführungsslogik veranschaulicht, die in einen Prozessor gemäß mindestens einer Ausführungsform der Erfindung einzubeziehen ist. Die Kästchen mit durchgezogenen Linien in 4A veranschaulichen die In-Order-Pipeline, während die gestrichelt gezeichneten Kästchen die Registerumbenennung, Out-of-Order-Issue/Ausführungss-Pipeline veranschaulichen. In ähnlicher Weise veranschaulichen die Kästchen mit durchgezogenen Linien in 4B die In-Order-Architektur-Logik, während die gestrichelt gezeichneten Kästchen die Registerumbenennungslogik und Out-of-Order-Issue/Ausführungss-Pipeline veranschaulichen.
  • In 4A beinhaltet eine Prozessor-Pipeline 400 eine Abrufstufe 402, eine Längendecodierstufe 404, eine Decodierstufe 406, eine Zuweisungsstufe 408, eine Umbennungsstufe 410, eine Scheduling-Stufe (auch als eine Dispatch- oder Issue-Stufe bekannt) 412, eine Registerlese/Speicherlese-Stufe 414, eine Ausführungsstufe 416, eine Zurückschreib/Speicherschreib-Stufe 418, eine Ausnahmenbehandlungsstufe 422 und eine Übergabestufe 424.
  • In 4B kennzeichnen Pfeile eine Kopplung zwischen zwei oder mehr Einheiten, und die Richtung des Pfeiles zeigt eine Richtung des Datenflusses zwischen diesen Einheiten an. 4B zeigt den Prozessorkern 490 einschließlich einer Front-End-Einheit 430, die mit einer Ausführungs-Engine-Einheit 450 gekoppelt ist, und beide sind mit einer Speichereinheit 470 gekoppelt.
  • Der Kern 490 kann ein RISC-Kern (Reduced Instruction Set Computer), ein CISC-Kern (Complex Instruction Set Computer), ein VLIW-Kern (Very Long Instruction Word), oder ein Kombinations- oder alternativer Kerntyp sein. Als noch eine weitere Möglichkeit kann der Kern 490 ein Zweckkern sein, wie zum Beispiel ein Netzwerk- oder Kommunikationskern, Compression Engine, Grafikkern oder dergleichen.
  • Die Front-End-Einheit 430 umfasst eine Sprungvorhersage-Einheit (Branch Prediction Unit) 432, die an eine Befehls-Cache-Einheit 434 gekoppelt ist, die an einen Befehls-Übersetzungspuffer (TLB) 436 gekoppelt ist, der an eine Befehlsholeeinheit 438 gekoppelt ist, die an eine Dekodiereinheit 440 gekoppelt ist. Die Dekodiereinheit oder der Decoder kann Befehle dekodieren und generiert als Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Einsprungpunkte, Mikrobefehle, andere Befehle oder andere Steuersignale, die eine dekodierte Form der ursprünglichen Befehle darstellen oder diese anderweit widerspiegeln oder davon abgeleitet sind. Der Decoder kann mit verschiedenen Mechanismen implementiert werden. Beispiele für geeignete Mechanismen umfassen (sind aber nicht beschränkt auf): Nachschlagetabellen, Hardware-Implementierungen, programmierbare logische Anordnungen (PLAs), Mikrocode-Festwertspeicher (ROMS) usw. Die Befehls-Cache-Einheit 434 ist ferner an eine L2-Cache-Einheit 476 in der Speichereinheit 470 gekoppelt. Die Dekodiereinheit 440 ist an eine Umbenennungs-/Allozierungseinheit 452 in der Execution Engine-Einheit 450 gekoppelt.
  • Die Execution Engine-Einheit 450 umfasst die Umbenennungs-/A1lozierungseinheit 452, die an eine Rückordnungseinheit (Retirement) 454 und einen Satz von einem oder mehreren Scheduler-Einheit(en) 456 gekoppelt ist. Die Scheduler-Einheit(en) 456 repräsentiert eine beliebige Anzahl von verschiedenen Schedulern, darunter Reservation Stations und Hauptbefehlsfenster usw. Die Scheduler-Einheit(en) 456 ist an die physikalische Registerspeicher-Einheit(en) 458 gekoppelt. Jede der physischen Registerdatei(en)-Einheiten 458 repräsentiert eine oder mehrere physische Registerdateien, von denen verschiedene einen oder mehre unterschiedliche Datentypen, wie z. B. skalare Ganzzahl, skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma usw., Status (z. B. einen Befehlszeiger, d. h. die Adresse des nächsten auszuführenden Befehls) usw. speichern. Die physischen Registerdatei(en)-Einheit(en) 458 wird von der Rückordnungseinheit 454 überlappt, um verschiedene Weisen zu veranschaulichen, in denen die Registerumbenennung und die Out-of-Order-Ausführung implementiert werden können (z. B. unter Benutzen eines Umordnungsspeichers bzw. -speichern und einer Rückordnungsregister-Datei bzw. -Dateien, unter Benutzen einer Future-Datei bzw. -Dateien, eines Historienpuffers bzw. -puffern und einer Rückordnungsregister-Datei bzw. -dateien; unter Benutzen von Register-Maps und eines Pools von Registern; usw.). Im Allgemeinen sind die Architektur-Register von der Außenseite des Prozessors oder aus der Perspektive eines Programmierers sichtbar. Die Register sind auf keinen bekannten, konkreten Schaltungstyp beschränkt. Verschiedene Registertypen sind geeignet, solange sie in der Lage sind, Daten zu speichern und bereitzustellen, wie hierin beschrieben. Zu Beispielen für geeignete Register zählen unter anderem dedizierte physische Register, dynamisch mit Registerumbenennung zugewiesene physische Register, Kombinationen aus dedizierten und dynamisch zugewiesenen physischen Registern usw. Die Rückordnungseinheit 454 und die physikalische Registerspeicher-Einheit(en) 458 sind an den (die) Ausführungscluster 460 gekoppelt. Das (die) Ausführungs-Cluster 460 beinhaltet (-n) einen Satz von einer oder mehreren Ausführungseinheiten 462 und einen Satz von einer oder mehreren Speicherzugriffs-Einheiten 464. Die Ausführungseinheiten 462 können verschiedene Operationen (z. B. Versetzungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen (z. B. skalare Gleitkommazahlen, komprimierte Integer, komprimierte Gleitkommazahlen, Vektor-Integer, Vektor-Gleitkommazahlen) ausführen. Obwohl einige Ausführungsformen eine Reihe von Ausführungseinheiten beinhalten können, die speziellen Funktionen oder Sätzen von Funktionen zugewiesen sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten beinhalten, die alle Funktionen durchführen. Die Scheduler-Einheit(en) 456, die physischen Registerdatei(en)-Einheit(en) 458 und das (die) Ausführungs-Cluster 460 sind als möglicherweise mehrfach gezeigt, weil bestimmte Ausführungsformen separate Pipelines für bestimmte Typen von Daten/Operationen erzeugen (z. B. eine Skalarganzzahl-Pipeline, eine Skalargleitkomma/gepackte Ganzzahl/gepackte Gleitkomma/Vektorganzzahl/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jede ihre eigene Scheduler-Einheit, physische Registerdatei(en)-Einheit und/oder Ausführungs-Cluster aufweisen, und im Fall einer separaten Speicherzugriffs-Pipeline sind bestimmte Ausführungsformen implementiert, in denen nur das Ausführungs-Cluster dieser Pipeline die Speicherzugriffs-Einheit(en) 464 aufweist). Es versteht sich außerdem, dass bei Verwendung von separaten Pipelines eine oder mehrere von diesen Pipelines Out-Of-Order-Issue/Ausführung und der Rest In-Order sein können.
  • Der Satz von Speicherzugriffseinheiten 464 ist an die Speichereinheit 470 gekoppelt, die eine Daten-TLB-Einheit 474 umfasst, die an eine Daten-Cache-Einheit 474 gekoppelt ist, die an eine L2-Cache-Einheit 476 gekoppelt ist. In einem Ausführungsbeispiel kann die Speicherzugriffseinheit 464 eine Last-Einheit, eine Speicheradresseneinheit, eine Speicherdateneinheit umfassen, von denen jede an die Daten-TLB-Einheit 472 in der Speichereinheit 470 gekoppelt ist. Die L2-Cache-Einheit 476 ist an eine oder mehrere andere Cache-Level und möglicherweise an einen Hauptspeicher gekoppelt.
  • Als Beispiel kann die beispielhafte Registerumbenennung, Out-of-Order-Issue/Ausführungsskern-Architektur die Pipeline 400 wie folgt implementieren: 1) Der Befehlsabruf 438 führt die Abruf- und Längendecodierstufen 402 und 404 durch; 2) die Decodiereinheit 440 führt die Decodierstufe 406 durch; 3) die Umbennungs/Zuordner-Einheit 452 führt die Zuordnungsstufe 408 und die Umbennungsstufe 410 durch; 4) Die Scheduler-Einheit(en) 456 führt (-en) die Scheduling-Stufe 412 durch; 5) die physische Registerdatei(en)-Einheit(en) 458 und die Speichereinheit 470 führen die Registerlese/Speicherlesestufe 414 durch; das Ausführungs-Cluster 460 führt die Ausführungsstufe 416 durch; 6) die Speichereinheit 470 und die physische Registerdatei(en)-Einheit(en) 458 (ihren die Zurückschreib/Speicherschreib-Stufe 418 durch; 7) verschiedene Einheiten können auf der Ausnahmebehandlungsstufe 422 beteiligt sein; und 8) die Rückordnungseinheit 454 und die physische Registerdatei(en)-Einheit(en) 458 führen die Übergabestufe 424 durch.
  • Der Kern 490 kann einen oder mehrere Befehlssätze (z. B. den ×86-Befehlssatz (mit einigen Erweiterungen, die neuen Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie z. B. NEON) von ARM Holdings aus Sunnyvale, CA) unterstützen.
  • Es ist selbstverständlich, dass der Kern Multithreading (die Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf eine Vielzahl von Arten tun kann, zum Beispiel zeitlich gesplittetes Multithreading, gleichzeitiges Multithreading (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads liefert, für den der physische Kern ein gleichzeitiges Multithreading durchführt) oder eine Kombination davon (z. B. zeitlich gesplittetes Holen und Dekodieren oder gleichzeitiges Multithreading danach, z. B. bei der Intel® Hyperthreading-Technologie).
  • Obwohl Registerumbenennung im Zusammenhang mit der ungeordneten Ausführung beschrieben ist, ist selbstverständlich, dass Registerumbenennung in einer geordneten Architektur verwendet werden kann. Während das dargestellte Ausführungsbeispiel des Prozessors auch eine separate Anweisung und Daten-Cache-Einheiten 434/474 und eine gemeinsam genutzte L2-Cache-Einheit 476 umfasst, können andere Ausführungsformen einen einzelnen internen Cache für Anweisungen und Daten, wie zum Beispiel einen internen Level 1(L1)-Cache oder mehrere Ebenen an internem Cache-Speicher, aufweisen. In manchen Ausführungsformen kann das System eine Kombination von einem internen Cache und einem externen Cache, der extern in Bezug auf den Kern und/oder den Prozessor ist, umfassen. Alternativ können alle Caches extern in Bezug auf den Kern und/oder den Prozessor sein.
  • 5 ist ein Blockdiagramm eines Einzelkernprozessors und eines Mehrkernprozessors 500 mit integriertem Speicher-Controller und Grafik gemäß Ausführungsformen der Erfindung. Die Kästchen mit durchgezogenen Linien in 5 veranschaulichen einen Prozessor 500 mit einem einzelnen Kern 502A, einem Systemagenten 510, einem Satz von einem oder mehreren Bus-Controller-Einheiten 516, während die optionale Hinzufügung der Kästchen mit gestrichelten Linien einen alternativen Prozessor 500 mit mehreren Kernen 502A–N, einen Satz von einem oder mehreren integrierten Speicher-Controller-Einheiten) 514 in der Systemagent-Einheit 510 und eine integrierte Grafiklogic 508 veranschaulicht.
  • Die Speicherhierarchie beinhaltet ein oder mehrere Cache-Level innerhalb der Kerne, einen Satz von einem oder mehreren gemeinsam genutzten Cache-Einheiten 506 und externen Speicher (nicht abgebildet), der mit dem Satz von integrierten Speicher-Controller-Einheiten 514 gekoppelt ist. Der Satz von gemeinsam genutzten Cache-Einheiten 506 kann einen oder mehrere Caches mittleren Levels, wie z. B. Level-2-(L2)-, Level-3-(L3)-, Level-4-(L4)- oder Caches anderer Levels, einen Last-Level-Cache (LLC) und/oder Kombinationen dieser umfassen. Obwohl in einer Ausführungsform eine ringbasierte Verbindungseinheit 512 die integrierte Grafiklogik 508, den Satz von gemeinsam genutzten Cache-Einheiten 506 und die Systemagent-Einheit 510 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl wohlbekannter Techniken zum Verbinden solcher Einheiten miteinander benutzen.
  • In einigen Ausführungsformen sind ein oder mehrere der Kerne 502A–N zum Multithreading befähigt. Der Systemagent 510 beinhaltet diejenigen Komponenten, die die Kerne 502A–N koordinieren und betreiben. Die Systemagent-Einheit 510 kann beispielsweise eine Energiesteuerungseinheit (PCU) und eine Sichtanzeigeneinheit beinhalten. Die PCU kann Logik und Komponenten, die zum Regulieren des Energiezustandes der Kerne 502A–N und der integrierten Grafiklogik 508 benötigt werden, sein oder beinhalten. Die Anzeigeeinheit treibt ein oder mehrere extern angeschlossene Displays an.
  • Die Kerne 502A–N können in Bezug auf Architektur und/oder Befehlssatz homogen oder heterogen sein. Beispielsweise können einige der Kerne 502A–N In-Order-Kerne sein, während andere Out-of-Order-Kerne sind. Als ein anderes Beispiel können zwei oder mehr der Kerne 502A–N in der Lage sein, denselben Befehlssatz auszuführen, während andere in der Lage sein können, nur einen Teilsatz dieses Befehlssatzes oder einen unterschiedlichen Befehlssatz auszuführen.
  • Der Prozessor kann ein Allzweckprozessor sein, wie z. B. ein CoreTM-i3-, -i5-, -i7-, -2-Duo- und Quad-, XeonTM-, ItaniumTM-, XScaleTM- oder StrongARMTM-Prozessor, die von der Intel Corporation aus Santa Clara, Kalif., erhältlich sind. Alternativ kann der Prozessor von einer anderen Firma sein, wie z. B. ARM Holdings, Ltd, MIPS usw. Der Prozessor kann ein Spezialprozessor sein, wie beispielsweise ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, Coprozessor, eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 500 kann ein Teil eines oder mehrerer Substrate sein oder auf diesem (-n) unter Benutzen beliebiger von einer Anzahl von Prozesstechnologien, wie beispielsweise BiCMOS, CMOS oder NMOS, implementiert sein.
  • 6 bis 8 sind beispielhafte Systeme, die zum Einbeziehen des Prozessors 500 geeignet sind, während 9 ein beispielhaftes System auf einem Chip (system an a chip, SoC) ist, das einen oder mehrere der Kerne 502 beinhalten kann. Weitere im Fachgebiet bekannte System-Designs und Konfigurationen für Laptops, Desktops, Hand-PCs, persönliche digitale Assistenten (PDAs), Engineering-Workstations, Server, Netzwerkgeräte, Netzwerk-Hubs, Schalter, eingebettete Prozessoren, Digitalsignal-Prozessoren (DSPs), Grafikgeräte, Videospielgeräte, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Media-Player, Handgeräte und verschiedene andere elektronische Geräte sind ebenfalls geeignet. Im Allgemeinen ist eine riesige Vielfalt von Systemen oder elektronischen Vorrichtungen, in die ein Prozessor und/oder eine Ausführungslogik, wie sie hierin offenbart sind, eingebunden werden können, generell geeignet.
  • Es wird nun auf 6 Bezug genommen, die ein Blockdiagramm eines Systems 600 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Das System 600 kann einen oder mehrere Prozessoren 610, 615 beinhalten, die mit dem Grafikspeicher-Controller-Hub (GMCH) 620 gekoppelt sind. Die optionale Natur zusätzlicher Prozessoren 615 ist in 6 durch unterbrochene Linien gekennzeichnet.
  • Jeder Prozessor 610, 615 kann eine Variante des Prozessors 500 sein. Es sollte jedoch beachtet werden, dass es unwahrscheinlich ist, dass integrierte Grafiklogik- und integrierte Speichersteuerungs-Einheiten in den Prozessoren 610, 615 vorhanden sind. 6 veranschaulicht, dass der GMCH 620 mit einem Speicher 640 gekoppelt sein kann, der beispielsweise ein dynamischer Direktzugriffsspeicher (DRAM) sein kann. Der DRAM kann zumindest bei einer Ausführungsform mit einem nichtflüchtigen Cache verbunden sein.
  • Der GMCH 620 kann ein Chipsatz oder ein Teil eines Chipsatzes sein. Der GMCH 620 kann mit dem (den) Prozessor(en) 610, 615 kommunizieren und die Interaktion zwischen dem (den) Prozessor(en) 610, 615 und dem Speicher 640 steuern. Der GMCH 620 kann auch als eine beschleunigte Busschnittstelle zwischen dem (den) Prozessor(en) 610, 615 und anderen Elementen des Systems 600 wirken. Bei mindestens einer Ausführungsform kommuniziert der GMCH 620 mit dem (den) Prozessor(en) 610, 615 über einen Multi-Drop-Bus, wie z. B. einen Frontside-Bus (FSB) 695.
  • Zudem ist der GMCH 620 mit einer Sichtanzeige 645 (wie z. B. ein Flachbildschirm) gekoppelt. Der GMCH 620 kann einen integrierten Grafikbeschleuniger beinhalten. Der GMCH 620 ist ferner mit einem Eingabe/Ausgabe-(I/O)-Controller-Hub (ICH) 650 gekoppelt, der benutzt werden kann, um mehrere Peripheriegeräte mit dem System 600 zu koppeln. In der Ausführungsform von 6 ist beispielsweise eine externe Grafikvorrichtung 660, die eine eigenständige Grafikvorrichtung sein kann, die mit dem ICH 650 gekoppelt ist, zusammen mit einer anderen Peripherievorrichtung 670 gezeigt.
  • Alternativ können in dem System 600 auch zusätzliche oder unterschiedliche Prozessoren vorhanden sein. Beispielsweise kann ein zusätzlicher Prozessor bzw. können zusätzliche Prozessoren 615 u. a. ein zusätzlicher Prozessor bzw. zusätzliche Prozessoren, welche Prozessor 610 entsprechen, ein zusätzlicher Prozessor bzw. Prozessoren, die mit dem Prozessor 610 heterogen oder asymmetrisch dazu sind, Beschleuniger (wie z. B. Grafikbeschleuniger oder Digitalsignalverarbeitungseinheiten (digital signal processing units, DSP-Einheiten)) feldprogrammierbare Gatteranordnungen oder ein beliebiger anderer Prozessoren sein. Zwischen den physikalischen Ressourcen 610, 615 kann hinsichtlich eines Spektrums von Leistungsmaßzahlen einschließlich Architektur-, Mikroarchitektur-, thermischer, Energieverbrauchskennzeichen und dergleichen eine Vielzahl an Unterschieden vorhanden sein. Diese Unterschiede können sich wirksam als Asymmetrie und Heterogenität zwischen den Prozessoren 610, 615 äußern. Bei mindestens einer Ausführungsform können sich die verschiedenen Prozessoren 610, 615 in derselben Chipbaugruppe befinden.
  • Es wird nun auf 7 Bezug genommen, die ein Blockdiagramm eines zweiten Systems 700 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie in 7 gezeigt, ist das Mehrprozessorsystem 700 ein System mit einer Punkt-zu-Punkt-Verbindung und beinhaltet einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Verbindung 750 miteinander gekoppelt sind. Jeder der Prozessoren 770 und 780 kann eine Variante des Prozessors 500 als einer oder mehrere der Prozessoren 610, 615 sein.
  • Obwohl nur zwei Prozessoren 770, 780 gezeigt sind, versteht es sich, dass der Umfang der vorliegenden Erfindung nicht derart beschränkt ist. In anderen Ausführungsformen kann ein oder mehrere zusätzliche Prozessoren in einem gegeben Prozessor vorhanden sein.
  • Prozessoren 770 und 780 sind jeweils mit integrierten Speichercontroller-Einheiten 772 und 782 gezeigt. Prozessor 770 umfasst außerdem als Teil seiner Bus-Controller-Einheiten Punkt-zu-Punkt-Schnittstellen (P-P) 776 und 778; gleichermaßen umfasst zweiter Prozessor 780 P-P-Schnittstellen 786 und 788. Prozessoren 770, 780 können Informationen über eine Punkt-zu-Punkt-Schnittstelle 750 unter Verwendung P-P-Schnittstellenschaltungen 778, 778 austauschen. Wie in 7 gezeigt, koppeln die IMC 772 und 782 die Prozessoren mit den jeweiligen Speichern, und zwar mit einem Speicher 732 und einem Speicher 734, die Teile eines Hauptspeichers sein können, der lokal an die jeweiligen Prozessoren angeschlossen ist.
  • Prozessoren 770, 780 können jeweils mit einem Chipsatz 790 über individuelle P-P-Schnittstellen 752, 754 unter Verwendung von Punk-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 Informationen austauschen. Chipsatz 790 kann ebenfalls Informationen mit einer Hochleistungsgrafikschaltung 738 über eine Hochleistungsgrafikschnittstelle 739 austauschen.
  • In jedem Prozessor oder außerhalb der beiden Prozessoren kann ein gemeinsam genutzter Cache (nicht abgebildet) enthalten sein, der jedoch mit den Prozessoren über die P-P-Verbindung derart verbunden ist, dass eine oder beide der lokalen Cache-Informationen der Prozessoren im gemeinsam benutzten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus versetzt wird.
  • Chipsatz 790 kann an einen ersten Bus 716 über eine Schnittstelle 796 gekoppelt sein. In einer Ausführungsform kann erster Bus 716 ein PCI-Bus (Peripheral Component Interconnect) sein, oder ein Bus, wie z. B. PCI Express-Bus oder anderer 3GIO-Interconnect-Bus sein. obwohl der Umfang der vorliegenden Erfindung nicht derart beschränkt ist.
  • Wie in 7 gezeigt, können verschiedene I/O-Geräte 714 mit dem ersten Bus 716 gekoppelt sein, zusammen mit einer Busbrücke 718, welche den ersten Bus 716 mit einem zweiten Bus 720 koppelt. In einer Ausführungsform kann zweiter Bus 720 ein LPC-Bus (Low Pin Count) sein. Verschiedene Geräte, darunter zum Beispiel eine Tastatur und/oder Maus 722, Kommunikationsgeräte 727 und eine Speichereinheit 728, wie z. B. ein Plattenlaufwerk- oder anderes Massenspeichergerät, das Befehle/Code und Daten 730 enthalten kann, können in einer Ausführungsform an zweiten Bus 720 gekoppelt sein. Ferner kann eine Audioein- und Ausgabe 724 an zweiten Bus 720 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur von 7 eine Multi-Drop-Bus- oder eine andere solche Architektur implementieren.
  • Es wird nun auf 8 Bezug genommen, die ein Blockdiagramm eines dritten Systems 800 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Gleiche Elemente in 7 und 8 tragen gleiche Bezugsnummern, und bestimmte Aspekte von 7 sind in 8 weggelassen, um zu verhindern, dass andere Aspekte von 8 unklar werden.
  • 8 veranschaulicht, dass die Prozessoren 870, 880 den integrierten Speicher und I/O-Steuerlogik (”CL”) 872 bzw. 882 beinhalten. Bei mindestens einer Ausführungsform kann die CL 872, 882 integrierte Speichersteuerungs-Einheiten, wie z. B. diejenigen, die oben in Verbindung mit 5 und 7 beschrieben sind, beinhalten. Außerdem kann CL 872, 882 auch I/O-Steuerlogik beinhalten. 8 veranschaulicht, dass nicht nur die Speicher 832, 834 mit der CL 872, 882 gekoppelt sind, sondern dass auch die I/O-Vorrichtungen 814 ebenfalls mit der Steuerlogik 872, 882 gekoppelt sind. Legacy-I/O-Vorrichtungen 815 sind mit dem Chipsatz 890 gekoppelt.
  • Es wird nun auf 9 Bezug genommen, die ein Blockdiagramm eines SoC 900 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Gleiche Elemente in 5 tragen dieselben Bezugsnummern. Auch sind gestrichelt gezeichnete Kästchen optionale Merkmale auf fortschrittlicheren SoC. In 9 ist eine Verbindungseinheit bzw. sind Verbindungseinheiten 902 gekoppelt mit: einem Anwendungsprozessor 910, der einen Satz von einem oder mehreren Kernen 502A–N und gemeinsam genutzte Cache-Einheit(en) 506 beinhaltet; einer Systemagenteneinheit 510; einer Bus-Controller-Einheit bzw. -Einheiten 516; einer integrierten Speicher-Controllereinheit bzw. -einheiten 514; einem Satz von einem oder mehreren Mediaprozessoren 920, die integrierte Grafiklogik 508, einen Bildprozessor 924 zum Schaffen von Standbild- und/oder Videokamera-Funktionalität, einen Audioprozessor 926 zum Schaffen von Hardware-Audiobeschleunigung und einen Videoprozessor 928 zum Schaffen von Video-Kodier/Decodier-Beschleunigung beinhalten können; einer statischen Direktzugriffsspeichereinheit (SRAM) 930; einer Direct-Memory-Acces-Einheit (DMA) 932; und einer Sichtanzeigeneinheit 940 zum Koppeln mit einer oder mehreren externen Sichtanzeigen.
  • 10 veranschaulicht einen Prozessor, der eine zentrale Verarbeitungseinheit (central processing unit, CPU) und eine Grafikverarbeitungseinheit (graphics processing unit, GPU) enthält, die mindestens einen Befehl gemäß einer Ausführungsform ausführen können. In einer Ausführungsform könnte ein Befehl zum Durchführen von Operationen gemäß mindestens einer Ausführungsform von der CPU ausgeführt werden. In einer anderen Ausführungsform könnte der Befehl von der GPU ausgeführt werden. In einer noch anderen Ausführungsform kann der Befehl durch eine Kombination von Operationen ausgeführt werden, die von der GPU und der CPU durchgeführt werden. Beispielsweise kann in einer Ausführungsform ein Befehl gemäß einer Ausführungsform empfangen und zur Ausführung in der GPU decodiert werden. Jedoch können eine oder mehrere Operationen innerhalb des decodierten Befehls durch eine CPU durchgeführt werden und das Ergebnis zur letzten Rückordnung des Befehls an die GPU zurückgegeben werden. Umgekehrt kann in einigen Ausführungsformen die CPU als der primäre Prozessor wirken und die GPU als der Coprozessor.
  • In einigen Ausführungsformen können Befehle, die aus Prozessoren mit hochparallelem Durchsatz Nutzen ziehen, von der GPU ausgeführt werden, während Befehle, die aus der Leistungsfähigkeit von Prozessoren Nutzen ziehen, die aus starken Pipeline-Architekturen Nutzen ziehen, von der CPU ausgeführt werden. Beispielsweise können Grafik-, Wissenschaftsanwendungen, Finanzanwendungen und andere parallele Arbeitslasten aus der Leistungsfähigkeit der GPU Nutzen ziehen und dementsprechend ausgeführt werden, wohingegen stärker sequenzielle Anwendungen, wie z. B. Betriebssystemkernel- oder Anwendungscode besser für die CPU geeignet sein können.
  • In 10 enthält Prozessor 1000 eine CPU 1005, GPU 1010, Bildprozessor 1015, Videoprozessor 1020, USB-Controller 1025, UART-Controller 1030, SPI/SDIO-Controller 1035, Sichtanzeigegerät 1040, High-Definition-Multimedia-Interface-(HDMI)-Controller 1045, MIPI-Controller 1050, Flash-Speicher-Controller 1055, Dual-Data-Rate-(DDR)-Controller 1060, Security-Engine 1065, und I2S/I2C(Integrated-Interchip-Sound/Inter-Integrated-Circuit)-Schnittstelle 1070. Andere Logik und Schaltungen einschließlich mehrerer CPU oder GPU und anderer Peripherieschnittstellen-Controller können in den Prozessor von 10 einbezogen sein.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Daten ausgeführt werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die beim Lesen durch eine Maschine die Maschine veranlassen, die Logik zum Durchführen der hierin beschriebenen Techniken zu erzeugen. Solche Repräsentationen, auch als „IP-Kerne” bekannt, können auf einem konkreten maschinenlesbaren Medium („Band”) gespeichert und an verschiedene Kunden oder Fertigungsanlagen geliefert werden, wo sie in die Fertigungsmaschinen geladen werden, welche die Logik oder den Prozessor herstellen. Beispielsweise können IP-Kerne, wie z. B. die CortexTM-Familie von Prozessoren, die von ARM Holdings Ltd. entwickelt wurde, und Loongson-IP-Kerne, die von dem Institute of Computing Technology (ICT) der Chinese Academy of Sciences entwickelt wurden, an verschiedene Kunden oder Lizenznehmer, wie z. B. Texas Instruments, Qualcomm, Apple oder Samsung, lizenziert oder verkauft werden und in Prozessoren implementiert werden, die von diesen Kunden oder Lizenznehmern hergestellt werden.
  • 11 zeigt ein Blockdiagramm, das die Entwicklung von IP-Kernen gemäß einer Ausführungsform veranschaulicht. Der Speicher 1130 beinhaltet die Simulations-Software 1120 und/oder das Hardware- oder Softwaremodell 1110. In einer Ausführungsform können die Daten, die das IP-Kern-Design darstellen, über Speicher 1140 (z. B. Harddisk), Kabelverbindung (z. B. Internet) 1150 oder drahtlose Verbindung 1160 dem Speicher 1130 zugeführt werden. Die IP-Kern-Informationen, die von dem Simulationswerkzeug und dem Modell erzeugt werden, können anschließend zu einer Fertigungseinrichtung übertragen werden, wo er durch Dritte gefertigt werden kann, um mindestens einen Befehl gemäß mindestens einer Ausführungsform auszuführen.
  • In einigen Ausführungsformen können ein oder mehrere Befehle einem ersten Typ oder Architektur (z. B. ×86) entsprechen und zu einem Prozessor von unterschiedlichem Typ oder Architektur (z. B. ARM) übersetzt oder emuliert werden kann. Ein Befehl gemäß einer Ausführungsform kann deshalb in einem beliebigen Prozessor oder Prozessortyp einschließlich ARM, ×86, MIPS, einer GPU oder einem anderen Prozessortyp oder -architektur ausgeführt werden.
  • 12 veranschaulicht, wie ein Befehl eines ersten Typs durch einen Prozessor eines unterschiedlichen Typs gemäß einer Ausführungsform emuliert wird. In 12 enthält Programm 1205 einige Befehle, welche dieselbe oder eine im Wesentlichen gleiche Funktion wie ein Befehl gemäß einer Ausführungsform ausführen können. Jedoch können die Befehle von Programm 1205 von einem Typ und/oder einem Format sein, der/das sich von Prozessor 1215 unterscheidet bzw. unvereinbar mit ihm ist, was bedeutet, dass die Befehle des Typs in Programm 1205 möglicherweise von dem Prozessor 1215 nicht nativ ausgeführt werden können. Mit Hilfe der Emulationslogik 1210 werden die Befehle von Programm 1205 jedoch zu Befehlen übersetzt, die nativ in der Lage sind, von dem Prozessor 1215 ausgeführt zu werden. In einer Ausführungsform ist die Emulationslogik in Hardware eingebettet. In einer anderen Ausführungsform ist die Emulationslogik in einem konkreten maschinenlesbaren Medium eingebettet, das Software zum Übersetzen von Befehlen des Typs im Programm 1205 in den Typ enthält, der von dem Prozessor 1215 nativ ausführbar ist. In anderen Ausführungsform ist die Emulationslogik eine Kombination von Fixed-Function- oder programmierbarer Hardware und einem Programm, das auf einem konkreten maschinenlesbaren Medium gespeichert ist. In einer Ausführungsform enthält der Prozessor die Emulationslogik, wohingegen sich in anderen Ausführungsformen die Emulationslogik außerhalb des Prozessors befindet und durch Dritte bereitgestellt ist. In einer Ausführungsform ist der Prozessor in der Lage, die Emulationslogik, die in einem konkreten maschinenlesbaren Medium enthalten ist, das Software enthält, durch Ausführen von Mikrocode oder Firmware, die in dem Prozessor enthalten oder mit diesem verbunden ist, zu laden.
  • 13 ist ein Blockdiagramm, das die Benutzung eines Software-Befehlsumwandlers zum Umwandeln von binären Befehlen in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung kontrastiert. In der veranschaulichten Ausführungsform ist der Befehlsumwandler ein Software-Befehlsumwandler, obwohl der Befehlsumwandler alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert sein kann. 13 zeigt ein Programm in einer Hochsprache 1302, das unter Benutzen eines ×86-Compilers 1304 kompiliert werden kann, um ×86-Binärcode 1306 zu erzeugen, der von einem Prozessor mit mindestens einem ×86-Befehlssatzkern 1316 nativ ausgeführt werden kann. Der Prozessor mit mindestens einem ×86-Befehlssatzkern 1316 repräsentiert einen beliebigen Prozessor, der im Wesentlichen dieselben Funktionen wie ein Intel-Prozessor mit mindestens einem ×86-Befehlssatzkern ausführen kann, indem er (1) einen wesentlichen Teil des Befehlssatzes des Intel-×86-Befehlssatzkernes oder (2) Objektcodeversionen von Anwendungen oder anderer Software, die darauf gerichtet sind, auf einem Intel-Prozessor mit mindestens einem ×86-Befehlssatzkern zu laufen, kompatibel ausführen oder auf andere Weise verarbeiten kann, um im Wesentlichen dasselbe Ergebnis wie ein Intel-Prozessor mit mindestens einem ×86-Befehlssatzkern zu erzielen. Der ×86-Compiler 1304 repräsentiert einen Compiler, der operabel ist, um ×86-Binärcode 1306 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung in dem Prozessor mit mindestens einem ×86-Befehlssatzkern 1316 ausgeführt werden kann. In ähnlicher Weise zeigt 13, dass das Programm in der Hochsprache 1302 unter Benutzen eines alternativen Befehlssatz-Compilers 1308 kompiliert werden kann, um den alternativen Befehlssatz-Binärcode 1310 zu erzeugen, der von einem Prozessor ohne mindestens einen ×86-Befehlssatzkern 1314 (z. B. einem Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA und/oder der den ARM-Befehlssatz von ARM Holdings aus Sunnyvale, CA, ausführen) nativ ausgeführt werden kann. Der Befehlsumwandler 1312 wird benutzt, um den ×86-Binärcode 1306 in Code umzuwandeln, der von dem Prozessor ohne einen ×86-Befehlssatzkern 1314 nativ ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht der gleiche wie der alternative Befehlssatz-Binärcode 1310, weil ein Befehlsumwandler, der dazu in der Lage ist, schwierig herzustellen ist; der umgewandelte Code wird jedoch die allgemeine Operation vollziehen und aus Befehlen aus dem alternativen Befehlssatz bestehen. So repräsentiert der Befehlsumwandler 1312 Software, Firmware, Hardware oder eine Kombination dieser, die durch Emulation, Simulation oder ein beliebiges anderes Verfahren einem Prozessor oder anderen elektronischen Vorrichtungen, die keinen ×86-Befehlssatzprozessor oder -kern aufweisen, ermöglichen, den ×86-Binärcode 1306 auszuführen.
  • 14 veranschaulicht eine Ausführungsform eines Verarbeitungssystems 1401 zur Verwendung von Befehlen, um verbesserte Paging-Fähigkeiten für einen Secure Enclave-Seitencache, EPC 1460, bereitzustellen. System 1401 beinhaltet einen Systemspeicher 1490 und einen Prozessor 1402. Prozessor 1402 umfasst einen ersten Hardware-Thread oder logischen Prozessor 1420 und einen zweiten Hardware-Thread oder logischen Prozessor 1430. Es ist zu verstehen, dass, obwohl der Einfachheit halber Prozessor 1402 als bestehend aus zwei logischen Prozessoren, wobei jeder einen einzelnen Hardware-Thread darstellt, veranschaulicht ist, die Erfindung nicht derart begrenzt ist. Es ist beispielsweise typisch für Prozessoren wie dem Prozessor 1402, oder anderen hier dargestellten Prozessoren, über mehrere logische Prozessorkerne zu verfügen, die einige gemeinsame physische Ressourcen (z. B. EPC 1460) und/oder Schaltkreise (z. B. SE-Einheit 1470) haben können oder nicht, wobei jeder logische Prozessor oder Prozessorkern über mehrere Hardware-Threads verfügt, die in der Lage sind, Software-Threads simultan oder gleichzeitig auszuführen.
  • Prozessor 1402 umfasst ebenfalls eine Secure Enclave (SE) Einheit 1470 und einen Enclave-Seitencache, EPC 1460. Bei einigen Ausführungsformen kann EPC 1460 Teil einer Cache-Einheit sein, z. B. ein oder mehrere Level-Eins-Caches 1440 und 1450, oder ein Level-Zwei-Cache (nicht dargestellt). Bei anderen Ausführungsformen kann EPC 1460 eine getrennte Struktur oder eine verteilte Struktur sein (z. B. Cache 1440 und Cache 1450), die von mehreren Hardware-Threads, logischen Prozessoren oder Prozessorkernen geteilt wird, um sichere Daten für die Adressen von gemeinsamen Seiten zu speichern, 1442, 1444 und 1456, die einer Secure Enclave zugeordnet und für die Hardware-Threads, logischen Prozessoren oder Prozessorkerne zugänglich ist.
  • Gleichermaßen kann die SE-Einheit 1470 eine getrennte Struktur oder verteilte Struktur umfassen (z. B. SE-Einheiten 1427 und 1437), die geteilt wird von mehreren Hardware-Threads, logischen Prozessoren oder Prozessorkernen mit Verschlüsselungseinheiten, Einheiten zum Integritätsschutz, Einheiten zur Zugangsbeschränkung, Bereichsregistern, Enclave-Seitencache-Zuordnungen, und zwei oder mehreren Epochenzähler-Speicherorten, um zumindest eine vorhergehende und eine aktuelle Epoche zu speichern. Die SE-Einheit 1470 unterstützt ebenfalls Enclave-Befehle zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches.
  • In diesem Beispiel verfügt der logische Prozessor 1420 über eine Decode-Stufe 1422, eine Lese-Stufe 1424, eine oder mehrere Ausführungseinheiten (z. B. Ausführungseinheit 1426) und eine Schreib-Stufe 1428. Der logische Prozessor 1420 verfügt außerdem über einen TLB 1425, in den Übersetzungen installiert werden können, um auf den EPC 1460 zuzugreifen. Der logische Prozessor 1430 verfügt über eine Decode-Stufe 1432, eine Lese-Stufe 1434, eine oder mehrere Ausführungseinheiten (z. B. Ausführungseinheit 1436) und eine Schreib-Stufe 1438. Der logische Prozessor 1430 verfügt außerdem über einen TLB 1435, in den Übersetzungen installiert werden können, um auf den EPC 1460 zuzugreifen. Ausführungsformen der logischen Prozessoren 1420 und 1430 können zur Ausführung von Enclave-Befehlen zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches, EPC 1460, auch andere Pipeline-Stufen umfassen (z. B. wie in Pipeline 400 dargestellt).
  • Es ist zu verstehen, dass durch die Verwendung von Enclave-Befehlen zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches, der Paging-Prozess (z. B. wenn die Speicherinhalte des Secure Enclave-Seitencaches verschlüsselt und zurückgeschrieben, neue Seiten aus dem Speicher geladen und entschlüsselt, die TLB-Einträge geflusht und ersetzt werden, usw.) in Stufen unterteilt werden kann, in denen die Prozessorkerne oder logischen Prozessoren (z. B. logische Prozessoren 1420 und 1430) nur kurz während einer oder mehrerer Stufen unterbrochen werden. Diese Leistungsminderung aufgrund des Paging-Prozesses kann reduziert werden, während die Sicherheit der Secure Enclave-Daten ohne übermäßige Komplexität und Designaufwand gewährleistet werden kann.
  • In einer Ausführungsform legt ein EBLOCK-Befehl die Adresse einer gemeinsamen Seite (z. B. Seite 1442) als einen Operand fest. Eine oder mehrere Ausführungseinheiten (z. B. Ausführungseinheit 1426) markieren einen Eintrag, der einer Enclave-Seitencache-Zuordnung für die gemeinsame Seitenadresse entspricht, um die Erstellung einer neuen TLB-Übersetzung (z. B. in TLB 1435) für einen der mehrere Hardware-Threads, logische Prozessoren oder Prozessorkerne, zum Zugreifen auf die gemeinsame Seite, zu blockieren. In einer Ausführungsform legt ein ETRACK-Befehl die Secure Enclave als Operand fest, und eine oder mehrere Ausführungseinheiten (z. B. Ausführungseinheit 1426) zeichnen die Hardware-Threads auf, die gerade auf die sicheren Daten im Enclave-Seitencache, EPC 1460, entsprechend der Secure Enclave zugreifen. Zum Beispiel kann die Enclave in einer Ausführungsform über zwei oder mehrere Epochenzähler verfügen, um eine Anzahl von Hardware-Threads aufzuzeichnen, die gerade auf sichere Daten in der gegenwärtigen Epoche der Secure Enclave zugreifen, diese Anzahl anschließend in einen neuesten letzten Epochenzähler (z. B. als Antwort auf den ETRACK-Befehl) kopieren und eine neue Epoche mit keinen Hardware-Threads als die neue gegenwärtige Epoche initialisieren.
  • Das OS kann daraufhin einen IPI an Hardware-Threads, logische Prozessoren oder Prozessorkerne senden, die gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen. In einer Ausführungsform hätte jeder Hardware-Thread, logische Prozessor oder Prozessorkern (z. B. logische Prozessoren 1420 und 1430), der gerade auf sichere Daten entsprechend der Secure Enclave zugreift, die Secure Enclave mit einem EENTER- oder ERESUME-Befehl betreten, der die Secure Enclave festlegt, und zu diesem Zeitpunkt wäre eine Epochennummer mit dem Hardware-Thread, logischen Prozessor oder Prozessorkern verknüpft worden. Wenn die Hardware-Threads, logischen Prozessoren oder Prozessorkerne die IPI bestätigen und die Secure Enclave verlassen, wird ihre TLB-Übersetzung oder ihre TLB-Übersetzungen geflusht (z. B. von TLB 1425 und/oder TLB 1435). Immer wenn Hardware-Threads von der neuesten letzten Epoche die Secure Enclave verlassen (z. B. mit einem EEXIT- oder AEX-Befehl), wird die Anzahl der Hardware-Threads in der neuesten letzten Epoche dekrementiert.
  • Wenn die aufgezeichnete Anzahl an Hardware-Threads Null erreicht, ist es für das OS sicher, eine Seite oder Seiten (z. B. Seite 1442) zu entfernen, die Daten zu verschlüsseln, und sie zurück in den Speicher (z. B. als verschlüsselte Seite 1495) oder permanten Speicher zu schreiben. In einer Ausführungsform kann das OS einen EWRITEBACK- oder EWB-Befehl verwenden, der die Adresse der gemeinsamen Seite (z. B. Seite 1442) als Operand festlegt, um das Entfernen, Verschlüsseln der gesicherten Daten und Zurückschreiben der Seite in den Speicher oder permanenten Speicher abzuschließen. Da der Enclave-Schutz der sicheren Daten möglicherweise dem OS nicht vertrauen kann, ist es möglich, dass eine Ausführungsform eines EWRITEBACK- oder EWB-Befehls fehlschlägt, wenn die aufgezeichnete Anzahl an Hardware-Threads aus der neuesten letzten Epoche noch nicht Null erreicht hat. In anderen alternativen Ausführungsformen kann ein EWRITEBACK- oder EWB-Befehl mit der Ausführung oder dem Veranlassen einer Ausnahme warten, bis die aufgezeichnete Anzahl an Hardware-Threads Null erreicht hat. In einer Ausführungsform kann das OS dann einen ELOAD-Befehl nutzen, um eine neue Seite (z. B. Seite 1410) aus dem Speicher oder permanenten Speicher zu lesen, die Daten zu entschlüsseln und die entschlüsselte Seite in EPC 1460 zu speichern. Dadurch kann der Paging-Prozess (z. B. wenn die Speicherinhalte des Secure Enclave-Seitencaches verschlüsselt und zurückgeschrieben, neue Seiten aus dem Speicher geladen und entschlüsselt, die TLB-Einträge geflusht und ersetzt werden, usw.) in Stufen unterteilt werden, in denen die Prozessorkerne oder logischen Prozessoren (z. B. logische Prozessoren 1420 und 1430) nur kurz während einer oder mehrerer Stufen unterbrochen werden (z. B. durch IPI).
  • 15 veranschaulicht eine Ausführungsform einer Vorrichtung in einem Prozessor 1501 zur Verwendung von Befehlen, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen. Die Vorrichtung umfasst eine Secure Enclave (SE) Einheit 1502 und einen Enclave-Seitencache, EPC 1520. Bei einigen Ausführungsformen kann EPC 1520 Teil einer größeren Cache-Einheit sein, z. B. ein Level-Eins-Cache, L1 1540, oder ein Level-Zwei-Cache (nicht dargestellt). Bei anderen Ausführungsformen kann EPC 1520 eine getrennte Struktur oder eine verteilte Struktur sein, die von mehreren Hardware-Threads, logischen Prozessoren oder Prozessorkernen geteilt wird, um sichere Daten für die Adresse einer gemeinsamen Seite 1542 zu speichern, die einer Secure Enclave zugeordnet und für die Hardware-Threads, logischen Prozessoren oder Prozessorkerne zugänglich ist. Die SE-Einheit 1502 kann eine Verschlüsselungseinheit 1510, eine Einheit zum Integritätsschutz 1512, eine Einheit zur Zugangsbeschränkung 1514, Bereichsregister 1516, Enclave-Seitencache-Zuordnungen EPC 1518, und zwei oder mehrere Epochenzähler-Speicherorte: vorige Epoche, PE 1517, und aktuelle Epoche, CE 1519, umfassen. SE-Einheit 1502 kann ebenfalls Enclave-Befehle 1503 umfassen, darunter: EBLOCK-Befehl 1531, ETRACK-Befehl 1532, EWB-Befehl 1533, ELOAD-Befehl 1534, EEXIT-Befehl 1535, EENTER-Befehl 1536, und andere Enclave-Befehle, nicht dargestellt (z. B. AEX-Befehl, ERESUME-Befehl, usw.).
  • Prozessorkern 1501 umfasst ebenfalls einen TLB 1525, in den Übersetzungen installiert werden können, um auf den EPC 1520 zuzugreifen. Prozessorkern 1501 umfasst ebenfalls eine Decode-Stufe 1522, eine Lese-Stufe 1524, eine oder mehrere Ausführungseinheiten (z. B. Ausführungseinheit 1526) und eine Schreib-Stufe 1528. Ausführungsformen des Prozessorkerns 1501 können zur Ausführung von Enclave-Befehlen 1503 zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches, EPC 1520, auch andere Pipeline-Stufen umfassen (z. B. wie in Pipeline 400 dargestellt).
  • In einer Ausführungsform legt der EBLOCK-Befehl 1531 eine gemeinsame Seitenadresse 1542 als einen Operand fest. Eine oder mehrere Ausführungseinheiten (z. B. Ausführungseinheit 1526) markieren einen Eintrag, der einer Enclave-Seitencache-Zuordnung in EPCM 1518 für die Adresse der gemeinsamen Seite 1542 entspricht, um die Erstellung einer neuen TLB-Übersetzung (z. B. in TLB 1525 oder einem anderen TLB) für Hardware-Threads, logische Prozessoren oder Prozessorkerne, zum Zugreifen auf die gemeinsame Seite, zu blockieren. In einer Ausführungsform legt ein ETRACK-Befehl 1532 die Secure Enclave als Operand fest, und eine oder mehrere Ausführungseinheiten (z. B. Ausführungseinheit 1526, oder Einheit zur Zugangsbeschränkung 1514) zeichnen die Hardware-Threads auf, die gerade auf die sicheren Daten im Enclave-Seitencache EPC 1520 entsprechend der Secure Enclave zugreifen. Zum Beispiel kann die Enclave in einer Ausführungsform über zwei oder mehr Epochenzähler (z. B. in PE 1517 und in CE 1519) verfügen, um eine Anzahl von Hardware-Threads aufzuzeichnen, die gerade auf sichere Daten in der gegenwärtigen Epoche der Secure Enclave (z. B. in CE 1519) zugreifen, diese Anzahl anschließend in einen neuesten letzten Epochenzähler (z. B. in PE 1517) kopieren und eine neue Epoche mit keinen Hardware-Threads als die neue, gegenwärtige Epoche (z. B. in CE 1519) initialisieren.
  • Das OS kann daraufhin einen IPI an Hardware-Threads, logische Prozessoren oder Prozessorkerne senden, die gerade auf sichere Daten im Enclave-Seitencache EPC 1520 entsprechend der Secure Enclave zugreifen. Jeder Hardware-Thread, logische Prozessor oder Prozessorkern, der gerade auf sichere Daten entsprechend der Secure Enclave zugreift, hätte die Secure Enclave mit einem EENTER-(oder ERESUME-)Befehl 1536 betreten, der die Secure Enclave festlegt, und zu diesem Zeitpunkt wäre eine Epochennummer mit dem Hardware-Thread, logischen Prozessor oder Prozessorkern verknüpft worden. Wenn die Hardware-Threads, logischen Prozessoren oder Prozessorkerne die IPI bestätigen und die Secure Enclave verlassen, wird ihre TLB-Übersetzung oder ihre TLB-Übersetzungen geflusht (z. B. von TLB 1525). Immer wenn Hardware-Threads von der neuesten letzten Epoche (z. B. entsprechend PE 1517) die Secure Enclave mit einem EEXIT-(oder AEX-)Befehl 1535 verlassen, wird die aufgezeichnete Anzahl der Hardware-Threads im neuesten letzten Epochenzähler (z. B. in PE 1517) dekrementiert.
  • Wenn die aufgezeichnete Anzahl der Hardware-Threads (z. B. in PE 1517) Null erreicht, ist es für das OS sicher, eine Seiten oder Seiten (z. B. gemeinsame Seite 1542) zu entfernen, die Daten zu verschlüsseln, und sie zurück in den Speicher oder permanenten Speicher zu schreiben. In einer Ausführungsform kann das OS einen EWB-(oder EWRITEBACK-)Befehl 1533 verwenden, der die Adresse der gemeinsame Seite 1542 als Operand festlegt, um das Entfernen, Verschlüsseln der gesicherten Daten und Zurückschreiben der Seite 1542 in den permanenten Speicher abzuschließen. Da der Enclave-Schutz der sicheren Daten möglicherweise dem OS nicht vertrauen kann, ist es möglich, dass eine Ausführungsform eines EWB-Befehls 1533 fehlschlägt, wenn die aufgezeichnete Anzahl an Hardware-Threads aus der neuesten letzten Epoche (z. B. in PE 1517) noch nicht Null erreicht hat. In anderen alternativen Ausführungsformen kann der EWB-Befehl 1533 mit der Ausführung oder dem Veranlassen einer Ausnahme warten, bis die aufgezeichnete Anzahl der Hardware-Threads (z. B. in PE 1517) Null erreicht.
  • Es ist zu verstehen, dass die Verwaltung von Berechtigungen, des physischen Speichers und/oder die Änderung der Zuordnungen immer noch von einem OS übernommen werden kann, aber wenn die Speicherinhalte geschützt sind, wie in einer Secure Enclave, ist das OS nicht berechtigt oder vertrauenswürdig, um auf die eigentlichen geschützten Inhalte des privaten Speichers der Enclave zuzugreifen. Die Gewährleistung der Sicherheit und/oder Integrität von privaten Speicherinhalten und die Verwaltung der technischen Einschränkungen eines beschränkten physischen Speichers (z. B. EPC 1520 oder EPC 1460) zur Unterstützung eines größeren, geschützten, privaten Enclave-Speicherplatzes, ohne einem OS vertrauen zu können, kann stufenweise mithilfe von Befehlen und Verarbeitungslogik erreicht werden, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen, ohne dass es erforderlich ist, Hardwaresupport und/oder Designaufwand zu prüfen.
  • 16 stellt ein Flussdiagramm einer Ausführungsform eines Prozesses 1601 dar, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen. Prozess 1601 und andere in dieser Schrift offen gelegten Prozesse werden durch die Verarbeitung von Blöcken durchgeführt, welche dedizierte Hardware-, Software- oder Firmware-Opcodes umfassen können, die von Allzweckrechnern oder Spezialrechnern oder einer Kombination aus beiden ausgeführt werden.
  • In Verarbeitungsblock 1610 von Prozess 1601 wird eine Secure Enclave erstellt, um private Daten und/oder Befehle zu schützen. In Verarbeitungsblock 1620 EPC werden der Secure Enclave Seiten zugeordnet. In Verarbeitungsblock 1625 wird festgelegt, ob Paging erforderlich ist oder nicht. Wenn nicht, werden die EPC-Seiten weiter der Secure Enclave in Verarbeitungsblock 1620 zugeordnet, in dem sichere Daten in EPC-Linien für gemeinsame Seitenadressen gespeichert werden können, die der Secure Enclave zugeordnet und für eine Vielzahl von Hardware-Threads, die in der Secure Enclave ausgeführt werden, zugänglich sind. Anderenfalls werden in Verarbeitungsblock 1630 ein oder mehrere EBLOCK-Befehle ausgeführt, wobei jeder EBLOCK-Befehl in einer Ausführungsform eine gemeinsame Seitenadresse als einen Operand festlegt. In Verarbeitungsblock 1640 wird ein ETRACK-Befehl ausgeführt, wobei der ETRACK-Befehl in einer Ausführungsform die Secure Enclave festlegt. In Verarbeitungsblock 1650 wird ein IPI an jeden logischen Prozessor gesendet, der in der Secure Enclave ausgeführt wird, damit diese(r) die Secure Enclave verlässt. Bestätigungen der IPIs werden in Verarbeitungsblock 1660 geprüft, und in Verarbeitungsblock 1665 wird festgelegt, ob alle IPIs bestätigt wurden oder nicht. Wenn nicht, läuft die Verarbeitung in Verarbeitungsblock 1660 weiter, aber wenn alle IPIs bestätigt wurden, setzt die Verarbeitung in Verarbeitungsblock 1670 fort. In Verarbeitungsblock 1670 werden ein oder mehrere EWB-Befehle ausgeführt, wobei jeder EWB-Befehl in einer Ausführungsform eine der blockierten gemeinsamen Seitenadressen als Operand festlegt. In Verarbeitungsblock 1680 werden ein oder mehrere ELOAD-Befehle ausgeführt, wobei jeder ELOAD-Befehl in einer Ausführungsform eine neue gemeinsame Seitenadresse als einen Operand festlegt. Die Verarbeitung beginnt dann erneut bei Verarbeitungsblock 1625.
  • 17 stellt ein Flussdiagramm einer alternativen Ausführungsform eines Prozesses 1701 dar, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen. In Verarbeitungsblock 1710 von Prozess 1701 wird ein Eintrag für eine gemeinsame Seite (z. B. als Antwort auf einen EBLOCK-Befehl, der die gemeinsame Seitenadresse als einen Operand festlegt) markiert, um die Erstellung neuer Transformationen in einem der TLB zu blockieren. In Verarbeitungsblock 1720 werden die Hardware-Threads, logischen Prozessoren oder Prozessorkerne, die gerade auf die sicheren Daten in der Secure Enclave zugreifen, aufgezeichnet (z. B. als Antwort auf einen ETRACK-Befehl, der die Secure Enclave als Operand festlegt). In Verarbeitungsblock 1730 wird die Anzahl der aufgezeichneten Threads dekrementiert, sobald ein Thread die Secure Enclave verlässt (z. B. unter Verwendung eines EEXIT- oder AEX-Befehls). In Verarbeitungsblock 1735 wird bestimmt, ob die aufgezeichnete Anzahl der Threads nun bei Null liegt oder nicht. Wenn nicht, läuft die Verarbeitung in Verarbeitungsblock 1730 weiter, aber wenn die aufgezeichnete Anzahl der Threads nun bei Null liegt, setzt die Verarbeitung in Verarbeitungsblock 1740 fort. In Verarbeitungsblock 1740 werden die sicheren Daten für die gemeinsame Seite entfernt, und in Verarbeitungsblock 1750 werden die sicheren Daten für die entfernte Seite verschlüsselt (z. B. als Antwort auf einen EWRITEBACK- oder EWB-Befehl, der die gemeinsame Seite als Operand festlegt). Anschließend werden in Verarbeitungsblock 1760 die verschlüsselten sicheren Daten für die entfernte Seite zurück in den Speicher oder permanenten Speicher geschrieben. In Verarbeitungsblock 1770 wird einer neuen Seite der Secure Enclave freier Speicherplatz zugewiesen. In Verarbeitungsblock 1780 werden die sicheren Daten für die neue Seite entschlüsselt (z. B. als Antwort auf einen ELOAD-Befehl, der eine neue gemeinsame Seitenadresse als Operand festlegt).
  • 18A stellt ein Flussdiagramm einer weiteren Ausführungsform eines Prozesses 1801 dar, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen. In Verarbeitungsblock 1810 von Prozess 1801 wird eine Vielzahl von Hardware-Threads ausgeführt (z. B. in einem Multithread-Prozessor). In Verarbeitungsblock 1820 werden sichere Daten in einem Cache für eine gemeinsame Seite gespeichert, die der Secure Enclave zugewiesen ist, welche für eine Vielzahl von Threads zugänglich ist. In Verarbeitungsblock 1830 von Prozess 1802 wird ein EBLOCK-Befehl dekodiert, wobei der EBLOCK-Befehl in einer Ausführungsform eine gemeinsame Seitenadresse als einen Operand festlegt. In Verarbeitungsblock 1840 wird ein Eintrag für eine gemeinsame Seite markiert, um die Erstellung neuer Transformationen in einem der TLB zu blockieren. In Verarbeitungsblock 1850 werden die Hardware-Threads, logischen Prozessoren oder Prozessorkerne, die gerade auf die sicheren Daten in der Secure Enclave zugreifen, aufgezeichnet. In Verarbeitungsblock 1860 von Prozess 1803 wird ein ETRACK-Befehl dekodiert, wobei der ETRACK-Befehl in einer Ausführungsform die Secure Enclave als einen Operand festlegt. In Verarbeitungsblock 1870 wird die Anzahl der aufgezeichneten Threads dekrementiert, sobald ein Thread die Secure Enclave verlässt (z. B. unter Verwendung eines EEXIT- oder AEX-Befehls). In Verarbeitungsblock 1880 wird bestimmt, ob die aufgezeichnete Anzahl der Threads nun bei Null liegt oder nicht. Wenn nicht, läuft die Verarbeitung in Verarbeitungsblock 1870 weiter, aber wenn die aufgezeichnete Anzahl der Threads nun bei Null liegt, setzt die Verarbeitung in Verarbeitungsblock 1890 fort. In Verarbeitungsblock 1890 werden sichere Daten für die gemeinsame Seite in den Speicher oder permanenten Speicher ausgelesen (z. B. als Antwort auf einen EWRITEBACK- oder EWB-Befehl, der die gemeinsame Seitenadresse als Operand festlegt).
  • Durch die Verwendung von Enclave-Befehlen zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches, der Paging-Prozess (z. B. wenn die Speicherinhalte des Secure Enclave-Seitencaches verschlüsselt und zurückgeschrieben, neue Seiten aus dem Speicher geladen und entschlüsselt, die TLB-Einträge geflusht und ersetzt werden, usw.) in Stufen unterteilt werden kann, in denen die Prozessorkerne oder logischen Prozessoren nur kurz während einer oder mehrerer Stufen unterbrochen werden. Diese Leistungsminderung aufgrund des Paging-Prozesses kann reduziert werden, während die Sicherheit der Secure Enclave-Daten ohne übermäßige Komplexität und Designaufwand gewährleistet werden kann.
  • 18B stellt ein Flussdiagramm einer weiteren Ausführungsform eines Prozesses 1804 dar, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen. In Verarbeitungsblock 1810 von Prozess 1804 wird eine Vielzahl von Hardware-Threads ausgeführt (z. B. in einem Multithread-Prozessor). In Verarbeitungsblock 1820 werden sichere Daten in einem Cache für eine gemeinsame Seite gespeichert, die der Secure Enclave zugewiesen ist, welche für eine Vielzahl von Threads zugänglich ist. In Verarbeitungsblock 1830 von Prozess 1805 wird ein EBLOCK-Befehl dekodiert, wobei der EBLOCK-Befehl in einer Ausführungsform eine gemeinsame Seitenadresse als einen Operand festlegt. In Verarbeitungsblock 1840 wird ein Eintrag für eine gemeinsame Seite markiert, um die Erstellung neuer Transformationen in einem der TLB zu blockieren. In Verarbeitungsblock 1860 von Prozess 1806 wird ein ETRACK-Befehl dekodiert, wobei der ETRACK-Befehl in einer Ausführungsform die Secure Enclave als einen Operand festlegt. In Verarbeitungsblock 1850 werden die Hardware-Threads, logischen Prozessoren oder Prozessorkerne, die gerade auf die sicheren Daten in der Secure Enclave zugreifen, aufgezeichnet. In Verarbeitungsblock 1870 wird die Anzahl der aufgezeichneten Threads dekrementiert, sobald ein Thread die Secure Enclave verlässt (z. B. unter Verwendung eines EEXIT- oder AEX-Befehls). In Verarbeitungsblock 1880 wird bestimmt, ob die aufgezeichnete Anzahl der Threads nun bei Null liegt oder nicht. Wenn nicht, läuft die Verarbeitung in Verarbeitungsblock 1870 weiter, aber wenn die aufgezeichnete Anzahl der Threads nun bei Null liegt, setzt die Verarbeitung in Verarbeitungsblock 1890 fort. In Verarbeitungsblock 1890 werden sichere Daten für die gemeinsame Seite in den Speicher oder permanenten Speicher ausgelesen (z. B. als Antwort auf einen EWRITEBACK- oder EWB-Befehl, der die gemeinsame Seitenadresse als Operand festlegt).
  • Somit kann die Verwaltung von Berechtigungen, des physischen Speichers und/oder die Änderung der Zuordnungen immer noch von einem OS übernommen werden, aber das OS nicht berechtigt oder vertrauenswürdig, um auf die eigentlichen geschützten Inhalte des privaten Speichers der Enclave zuzugreifen. Die Gewährleistung der Sicherheit und/oder Integrität von privaten Speicherinhalten und die Verwaltung der technischen Einschränkungen eines beschränkten physischen Speichers zur Unterstützung eines größeren, geschützten, privaten Enclave-Speicherplatzes kann stufenweise mithilfe von Befehlen und Verarbeitungslogik erreicht werden, um verbesserte Paging-Fähigkeiten für Secure Enclave-Seitencaches bereitzustellen, ohne dass es erforderlich ist, Hardwaresupport und/oder Designaufwand zu prüfen. Es ist zu verstehen, dass Verarbeitungsblöcke, die so dargestellt sind, dass sie in einer bestimmten Reihenfolge ausgeführt werden, auch in einer anderen Reihenfolge, oder gleichzeitig, oder parallel zueinander ausgeführt werden können, wenn in einigen alternativen Ausführungsformen von Prozess 1804 und in anderen in dieser Schrift offenbarten Prozessen möglich.
  • Ausführungsformen der Mechanismen, die hierin offenbart sind, können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode implementiert werden, die auf programmierbaren Systemen ausgeführt werden, die mindestens einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nichtflüchtiger Speicher und/oder Speicherelemente), mindestens ein Eingabegerät und mindestens ein Ausgabegerät umfassen.
  • Programmcode kann auf Eingabebefehle angewendet werden, um die hierin beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in bekannter Weise auf ein oder mehrere Ausgabegeräte angewendet werden. Zu Zwecken dieser Anmeldung beinhaltet ein Verarbeitungssystem ein beliebiges System, das einen Prozessor, wie beispielsweise einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (application specific integrated circuit, ASIC) oder einen Mikroprozessor, aufweist.
  • Der Programmcode kann in einer höheren verfahrensorientierten oder objektorientierten Programmiersprache implementiert werden, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann, wenn gewünscht, auch in Assembler- oder Maschinensprache implementiert werden. Tatsächlich sind die hierin beschriebenen Mechanismen im Umfang auf keine bestimmte Programmiersprache beschränkt. Jedenfalls kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Befehle implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logiken innerhalb des Prozessors repräsentiert, die beim Lesen durch eine Maschine die Maschine veranlassen, Logik zum Ausführen der hierin beschriebenen Techniken zu erzeugen. Solche Repräsentationen, auch als „IP-Kerne” bekannt, können auf einem konkreten maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Fertigungsanlagen geliefert werden, wo sie in Fertigungsmaschinen geladen werden, welche die Logik oder den Prozessor herstellen.
  • Solche maschinenlesbaren Speichermedien können u. a. ohne Einschränkung sein: nichtflüchtige konkrete Anordnungen von Gegenständen, die durch eine Maschine oder Vorrichtung gefertigt werden, einschließlich Speichermedien, wie z. B. Festplatten, jeder anderen Art von Speicherplatten einschließlich Floppy-Disketten, optischer Speicherplatten, Compact-Disk-Nur-Lese-Speichern (CD-ROM), wiederbeschreibbarer Compact-Disks (CD-RW) und magnetoptischer Speicherplatten, Halbleiterbaugruppen wie Nur-Lese-Speichern (ROM), Direktzugriffsspeichern (RAMs) wie dynamischen Direktzugriffsspeichern (DRAM), statischen Direktzugriffsspeichern (SRAM), löschbaren programmierbaren Nur-Lese-Speichern (EPROM), Flash-Speichern, elektrisch löschbaren Nur-Lese-Speichern (EEPROM), magnetischer oder optischer Karten, oder jedes anderen Typs von Medien, der zum Speichern elektronischer Befehle geeignet ist.
  • Demgemäß beinhalten Ausführungsformen der Erfindung auch nichtflüchtige konkrete maschinenlesbare Medien, die Befehle oder Designdaten enthalten, wie z. B. Hardware-Description-Language (HDL), die hierin beschriebene Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • In einigen Fällen kann ein Befehlsumwandler benutzt werden, um einen Befehl von einem Quellbefehlssatz in einen Zielbefehlssatz umzuwandeln. Beispielsweise kann der Befehlsumwandler einen Befehl in einen oder mehrere andere vom Kern zu verarbeitende Befehle übersetzen (z. B. unter Benutzen binärer Übersetzung, dynamischer binärer Übersetzung einschließlich dynamischer Kompilierung), morphen, emulieren oder auf andere Weise umwandeln. Der Befehlsumwandler kann in Software, Hardware, Firmware oder einer Kombination dieser implementiert werden. Der Befehlsumwandler kann prozessorintern, prozessorextern oder teils prozessorintern und teils prozessorextern sein.
  • Somit sind Techniken zur Ausführen eines oder mehrerer Befehle gemäß mindestens einer Ausführungsform offenbart. Obwohl bestimmte beispielhafte Ausführungsformen beschrieben und in den begleitenden Zeichnungen gezeigt wurden, versteht es sich, dass solche Ausführungsformen rein veranschaulichend sind und die weit gefasste Erfindung in keiner Weise einschränken und dass diese Erfindung nicht auf die spezifischen gezeigten und beschriebenen Gestaltungen und Anordnungen beschränkt ist, da dem Durchschnittsfachman beim Studieren dieser Offenbarung verschiedene andere Modifizierungen einfallen können. In einem technologischen Gebiet wie diesem, das von schnellem Wachstum und schwer vorhersehbaren zukünftigen Entwicklungen geprägt ist, können die offenbarten Ausführungsformen in Anordnung und Detail leicht modifiziert werden, wie es durch den Einsatz technologischer Entwicklungen ermöglicht wird, ohne von den Grundsätzen der vorliegenden Offenbarung abzuweichen oder den Umfang der begleitenden Ansprüche zu verlassen.

Claims (38)

  1. Ein Prozessor umfasst: einen ersten Hardware-Thread und einen zweiten Hardware-Thread; einen Enclave-Seitencache, um sichere Daten in einer Cache-Linie für eine gemeinsame Seitenadresse zu speichern, die einer entsprechenden Secure Enclave zugewiesen ist, die für besagte erste und zweite Hardware-Threads zugänglich ist; einer Decode-Stufe, um einen ersten Befehl zur Ausführung durch besagten Prozessor zu dekodieren, wobei der erste Befehl die besagte gemeinsame Seitenadresse als Operand festlegt; und einer oder mehreren Ausführungseinheiten, die auf den dekodierten ersten Befehl antworten, um: einen Eintrag zu markieren, der einer Enclave-Seitencache-Zuordnung für die gemeinsame Seitenadresse entspricht, um die Erstellung einer neuen Übersetzung für entweder die besagten ersten oder zweiten Hardware-Threads zum Zugriff auf sichere Daten entsprechend der gemeinsamen Seitenadresse zu blockieren.
  2. Der Prozessor nach Anspruch 1, wobei der erste Befehl ein EBLOCK-Befehl ist, der besagte gemeinsame Seitenadresse festlegt, um die Erstellung einer neuen Übersetzung entsprechend der gemeinsamen Seitenadresse in einem der Übersetzungspuffer (TLB) zu verhindern.
  3. Der Prozessor nach Anspruch 1 oder 2 umfasst: besagte Decode-Stufe, um einen zweiten Befehl zur Ausführung durch besagten Prozessor zu dekodieren, wobei der zweite Befehl besagte Secure Enclave als einen Operand festlegt; und eine oder mehrere Ausführungseinheiten, die auf den dekodierten zweiten Befehl antworten, um: Hardware-Threads aufzuzeichnen, die gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen.
  4. Der Prozessor nach Anspruch 3, wobei der zweite Befehl ein ETRACK-Befehl ist, der besagte Secure Enclave festlegt, um eine Anzahl von Hardware-Threads aufzuzeichnen, die gerade in der Secure Enclave ausgeführt werden.
  5. Der Prozessor nach einem der Ansprüche 3 bis 4, besagte eine oder mehrere Ausführungseinheiten, die auf den dekodierten zweiten Befehl antworten, um: die aufgezeichnete Anzahl der Hardware-Threads zu dekrementieren, die gerade in der Secure Enclave ausgeführt werden, wenn einer der Hardware-Threads die Secure Enclave verlässt.
  6. Der Prozessor nach einem der Ansprüche 1 bis 4, besagte eine oder mehrere Ausführungseinheiten, die auf den dekodierten ersten Befehl antworten, um: die aufgezeichnete Anzahl der Hardware-Threads zu dekrementieren, die gerade in der Secure Enclave ausgeführt werden, wenn einer der Hardware-Threads die Secure Enclave verlässt.
  7. Ein Prozessor umfasst: einen ersten Hardware-Thread und einen zweiten Hardware-Thread; einen Enclave-Seitencache, um sichere Daten in einer Cache-Linie für eine gemeinsame Seitenadresse zu speichern, die einer entsprechenden Secure Enclave zugewiesen ist, die für besagte erste und zweite Hardware-Threads zugänglich ist; einer Decode-Stufe, um einen ersten Befehl zur Ausführung durch besagten Prozessor zu dekodieren, wobei der erste Befehl die besagte Secure Enclave als Operand festlegt; und eine oder mehrere Ausführungseinheiten, die auf den dekodierten ersten Befehl antworten, um: Hardware-Threads aufzuzeichnen, die gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen.
  8. Der Prozessor nach Anspruch 7, wobei der erste Befehl ein ETRACK-Befehl ist, der besagte Secure Enclave festlegt, um eine Anzahl von Hardware-Threads aufzuzeichnen, die gerade in der Secure Enclave ausgeführt werden.
  9. Der Prozessor nach Anspruch 7 oder 8, besagte eine oder mehrere Ausführungseinheiten, die auf den dekodierten ersten Befehl antworten, um: die aufgezeichnete Anzahl der Hardware-Threads zu dekrementieren, die gerade in der Secure Enclave ausgeführt werden, wenn einer der Hardware-Threads die Secure Enclave verlässt.
  10. Der Prozessor nach einem der vorhergehenden Ansprüche umfasst: besagte Decode-Stufe, um einen zweiten Befehl zur Ausführung durch besagten Prozessor zu dekodieren, wobei der zweite Befehl besagte gemeinsame Seitenadresse als einen Operand festlegt; und eine oder mehrere Ausführungseinheiten, die auf den dekodierten zweiten Befehl antworten, um: einen Eintrag zu markieren, der einer Enclave-Seitencache-Zuordnung für die gemeinsame Seitenadresse entspricht, um die Erstellung einer neuen Übersetzung für entweder die besagten ersten oder zweiten Hardware-Threads zum Zugriff auf sichere Daten entsprechend der gemeinsamen Seitenadresse zu blockieren.
  11. Der Prozessor nach Anspruch 10, wobei der zweite Befehl ein EBLOCK-Befehl ist, der besagte gemeinsame Seitenadresse festlegt, um die Erstellung einer neuen Übersetzung entsprechend der gemeinsamen Seitenadresse in einem der TLB zu verhindern.
  12. Der Prozessor nach Anspruch 10 oder 11, besagte eine oder mehrere Ausführungseinheiten, die auf den dekodierten zweiten Befehl antworten, um: die aufgezeichnete Anzahl der Hardware-Threads zu dekrementieren, die gerade in der Secure Enclave ausgeführt werden, wenn einer der Hardware-Threads die Secure Enclave verlasst.
  13. Der Prozessor nach einem der Ansprüche 7 bis 12 umfasst: besagte Decode-Stufe, um einen zweiten Befehl zur Ausführung durch besagten Prozessor zu dekodieren, wobei der zweite Befehl besagte gemeinsame Seitenadresse als einen Operand festlegt; und eine oder mehrere Ausführungseinheiten, die auf den dekodierten zweiten Befehl antworten, um: sichere Daten im Enclave-Seitencache entsprechend der gemeinsamen Seitenadresse zu entfernen und zurückzuschreiben, wenn die aufgezeichnete Anzahl an Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, Null erreicht.
  14. Der Prozessor nach Anspruch 13, wobei der zweite Befehl ein Enclave-Write-Back-Befehl (EWB) ist, der besagte gemeinsame Seitenadresse festlegt, um die gemeinsame Seite aus dem Enclave-Seitencache zu entfernen, zurückzuschreiben.
  15. Der Prozessor nach Anspruch 13 oder 14, wobei der zweite Befehl fehlschlägt, wenn die Anzahl von Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, noch nicht Null erreicht hat.
  16. Der Prozessor nach Anspruch 14, wobei der zweite Befehl mit der Ausführung wartet bis die Anzahl von Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, Null erreicht hat.
  17. Ein Verfahren, das beinhaltet: Ausführung, in einem Multithread-Prozessor, eines ersten Hardware-Threads und eines zweiten Hardware-Threads; Speicherung von sicheren Daten in einer Cache-Linie für eine gemeinsame Seitenadresse, die einer entsprechenden Secure Enclave zugewiesen ist, die für besagte erste und zweite Hardware-Threads zugänglich ist; Dekodierung eines ersten Befehls zur Ausführung durch besagten Prozessor, wobei der erste Befehl die besagte gemeinsame Seitenadresse als Operand festlegt; und Antwort auf Dekodierung des ersten Befehls, und Markierung eines Eintrags, der einer Enclave-Seitencache-Zuordnung für die gemeinsame Seitenadresse entspricht, um die Erstellung einer neuen Übersetzung für entweder die besagten ersten oder zweiten Hardware-Threads zum Zugriff auf sichere Daten entsprechend der gemeinsamen Seitenadresse zu blockieren.
  18. Das Verfahren nach Anspruch 17, wobei der erste Befehl ein EBLOCK-Befehl ist, der besagte gemeinsame Seitenadresse festlegt, um die Erstellung einer neuen Übersetzung entsprechend der gemeinsamen Seitenadresse in einem der TLB zu verhindern.
  19. Das Verfahren nach Anspruch 17 oder 18, das beinhaltet: Antwort auf Dekodierung des ersten Befehls, sowie Aufzeichnung der Hardware-Threads, die gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen.
  20. Das Verfahren nach Anspruch 19, wobei auf die Dekodierung des ersten Befehls geantwortet wird, der die aufgezeichnete Anzahl der Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, dekrementiert, wenn einer der Hardware-Threads die Secure Enclave verlässt.
  21. Das Verfahren nach einem der Ansprüche 17 bis 20, wobei eine Übersetzung entsprechend der gemeinsamen Seitenadresse in einem TLB entsprechend eines der Hardware-Threads geflusht wird, wenn der jeweilige Hardware-Thread die Secure Enclave verlässt.
  22. Das Verfahren nach Anspruch 17 bis 21 beinhaltet: Dekodierung eines zweiten Befehls zur Ausführung durch besagten Prozessor, wobei der zweite Befehl besagte Secure Enclave als einen Operand festlegt; und Antwort auf die Dekodierung des zweiten Befehls, der die Hardware-Threads aufzeichnet, die gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen.
  23. Das Verfahren nach Anspruch 22, wobei auf die Dekodierung des zweiten Befehls geantwortet wird, der die aufgezeichnete Anzahl der Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, dekrementiert, wenn einer der Hardware-Threads die Secure Enclave verlässt.
  24. Das Verfahren nach Anspruch 22 oder 23 beinhaltet: Dekodierung eines dritten Befehls zur Ausführung durch besagten Prozessor, wobei der dritte Befehl besagte gemeinsame Seitenadresse als einen Operand festlegt; und Antwort auf die Dekodierung des dritten Befehls, der sichere Daten im Enclave-Seitencache entsprechend der gemeinsamen Seitenadresse entfernt und zurückzuschreibt, wenn die aufgezeichnete Anzahl an Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, Null erreicht.
  25. Das Verfahren nach Anspruch 24, wobei auf die Dekodierung des dritten Befehls zur Ausführung durch besagten Prozessor geantwortet wird, der die sicheren Daten im Enclave-Seitencache entsprechend der gemeinsamen Seitenadresse verschlüsselt ehe die sicheren Daten zurück in den Speicher oder permanenten Speicher geschrieben werden.
  26. Das Verfahren nach Anspruch 24 oder 25, wobei der dritte Befehl fehlschlägt, wenn die aufgezeichnete Anzahl von Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, noch nicht Null erreicht hat.
  27. Das Verfahren nach einem der Ansprüche 24 bis 26, wobei der dritte Befehl mit der Ausführung wartet bis die aufgezeichnete Anzahl von Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, Null erreicht hat.
  28. Ein Verfahren, welches beinhaltet: einen Multithread-Prozessor, einen ersten Hardware-Thread und einen zweiten Hardware-Thread; Speicherung von sicheren Daten in einer Cache-Linie für eine gemeinsame Seitenadresse, die einer entsprechenden Secure Enclave zugewiesen ist, die für besagte erste und zweite Hardware-Threads zugänglich ist; Dekodierung eines ersten Befehl zur Ausführung durch besagten Prozessor, wobei der erste Befehl die besagte Secure Enclave als Operand festlegt; und Antwort auf die Dekodierung eines ersten Befehls, der Hardware-Threads aufzeichnet, die gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen.
  29. Das Verfahren nach Anspruch 28, wobei der erste Befehl ein ETRACK-Befehl ist, der besagte Secure Enclave festlegt, um eine Anzahl von Hardware-Threads aufzuzeichnen, die gerade in der Secure Enclave ausgeführt werden.
  30. Das Verfahren nach Anspruch 28 oder 29, wobei auf die Dekodierung des ersten Befehls geantwortet wird, der die aufgezeichnete Anzahl der Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, dekrementiert, wenn einer der Hardware-Threads die Secure Enclave verlässt.
  31. Das Verfahren nach Anspruch 30, wobei auf die Dekodierung des ersten Befehls geantwortet wird, der die Erstellung einer neuen Übersetzung entsprechend der gemeinsamen Seitenadresse in einem der TLB verhindert.
  32. Das Verfahren nach Anspruch 30 oder 31 beinhaltet: Dekodierung eines zweiten Befehls zur Ausführung durch besagten Prozessor, wobei der zweite Befehl besagte gemeinsame Seitenadresse als einen Operand festlegt; und Antwort auf die Dekodierung des zweiten Befehls, der sichere Daten im Enclave-Seitencache entsprechend der gemeinsamen Seitenadresse entfernt und zurückzuschreibt, wenn die aufgezeichnete Anzahl an Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, Null erreicht.
  33. Das Verfahren nach Anspruch 32, wobei auf die Dekodierung des zweiten Befehls zur Ausführung durch besagten Prozessor geantwortet wird, der die sicheren Daten im Enclave-Seitencache entsprechend der gemeinsamen Seitenadresse verschlüsselt ehe die sicheren Daten zurück in den Speicher oder permanenten Speicher geschrieben werden.
  34. Das Verfahren nach Anspruch 32 oder 33, wobei der zweite Befehl fehlschlägt, wenn die aufgezeichnete Anzahl von Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, noch nicht Null erreicht hat.
  35. Ein Verarbeitungssystem, das umfasst: einen Speicher; und ein Prozessor, der umfasst: einen ersten Hardware-Thread und einen zweiten Hardware-Thread, einen Enclave-Seitencache zur Speicherung von sicheren Daten in einer Cache-Linie für eine gemeinsame Seitenadresse, die einer entsprechenden Secure Enclave zugewiesen und für besagte erste und zweite Hardware-Threads zugänglich ist, eine Decode-Stufe zur Dekodierung eines ersten Befehls zur Ausführung durch besagten Prozessor, wobei der erste Befehl besagte gemeinsame Seitenadresse als Operand festlegt, und eine oder mehrere Ausführungseinheiten, die auf den dekodierten ersten Befehl antworten, um einen Eintrag zu markieren, der einer Enclave-Seitencache-Zuordnung für die gemeinsame Seitenadresse entspricht, zur Blockierung der Erstellung einer neuen Übersetzung für entweder den besagten ersten oder zweiten Hardware-Thread zum Zugriff auf sichere Daten entsprechend der gemeinsamen Seitenadresse; besagte Decode-Stufe, um einen zweiten Befehl zur Ausführung durch besagten Prozessor zu dekodieren, wobei der zweite Befehl besagte Secure Enclave als Operand festlegt, und besagte eine oder mehrere Ausführungseinheiten, die auf den dekodierten zweiten Befehl antworten, um Hardware-Threads aufzuzeichnen, die gerade auf sichere Daten im Enclave-Seitencache entsprechend der Secure Enclave zugreifen, die aufgezeichnete Anzahl der Hardware-Threads zu dekrementieren, die gerade in der Secure Enclave ausgeführt werden, wenn einer der Hardware-Threads die Secure Enclave verlässt.
  36. Das Verarbeitungssystem nach Anspruch 35, wobei eine Übersetzung entsprechend der gemeinsamen Seitenadresse in einem TLB entsprechend eines der Hardware-Threads geflusht wird, wenn der jeweilige Hardware-Thread die Secure Enclave verlässt.
  37. Das Verarbeitungssystem nach Anspruch 35 oder 36, besagter Prozessor, welche umfassen: besagte Decode-Stufe, um einen dritten Befehl zur Ausführung durch besagten Prozessor zu dekodieren, wobei der dritte Befehl besagte gemeinsame Seitenadresse als einen Operand festlegt; und eine oder mehrere Ausführungseinheiten, die auf den dekodierten dritten Befehl antworten, um sichere Daten im Enclave-Seitencache entsprechend der gemeinsamen Seitenadresse zu entfernen und zurückzuschreiben, wenn die aufgezeichnete Anzahl an Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, Null erreicht.
  38. Das Verarbeitungssystem nach Anspruch 37, wobei der dritte Befehl fehlschlägt, wenn die aufgezeichnete Anzahl von Hardware-Threads, die gerade in der Secure Enclave ausgeführt werden, noch nicht Null erreicht hat.
DE102014004563.3A 2013-03-31 2014-03-28 Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches Pending DE102014004563A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/854,107 2013-03-31
US13/854,107 US9430384B2 (en) 2013-03-31 2013-03-31 Instructions and logic to provide advanced paging capabilities for secure enclave page caches

Publications (1)

Publication Number Publication Date
DE102014004563A1 true DE102014004563A1 (de) 2014-10-02

Family

ID=50737713

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014004563.3A Pending DE102014004563A1 (de) 2013-03-31 2014-03-28 Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches

Country Status (7)

Country Link
US (2) US9430384B2 (de)
JP (2) JP5802290B2 (de)
KR (1) KR101628886B1 (de)
CN (1) CN104484284B (de)
BR (1) BR102014006806A2 (de)
DE (1) DE102014004563A1 (de)
GB (4) GB2515611B (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430384B2 (en) 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US10867092B2 (en) 2017-12-16 2020-12-15 Intel Corporation Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9705892B2 (en) * 2014-06-27 2017-07-11 Intel Corporation Trusted time service for offline mode
US9684608B2 (en) 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
US9710622B2 (en) * 2015-02-23 2017-07-18 Intel Corporation Instructions and logic to fork processes of secure enclaves and establish child enclaves in a secure enclave page cache
US9870467B2 (en) * 2015-03-27 2018-01-16 Intel Corporation Apparatus and method for implementing a forked system call in a system with a protected region
FR3035241B1 (fr) * 2015-04-16 2017-12-22 Inside Secure Procede de partage d'une memoire entre au moins deux entites fonctionnelles
EP3268866B1 (de) 2015-06-18 2020-08-26 Hewlett-Packard Enterprise Development LP Senden von inhalten eines operationsfeldes an ein mediensteuergerät
US9710401B2 (en) 2015-06-26 2017-07-18 Intel Corporation Processors, methods, systems, and instructions to support live migration of protected containers
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US9460011B1 (en) 2015-12-14 2016-10-04 International Business Machines Corporation Memory reference estimation method and device based on improved cache
US9798641B2 (en) * 2015-12-22 2017-10-24 Intel Corporation Method to increase cloud availability and silicon isolation using secure enclaves
US10534724B2 (en) * 2015-12-24 2020-01-14 Intel Corporation Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache
US10354095B2 (en) 2016-03-31 2019-07-16 Intel Corporation Methods and apparatus to initialize enclaves on target processors
US10346641B2 (en) 2016-09-23 2019-07-09 Intel Corporation Processors, methods, systems, and instructions to determine whether to load encrypted copies of protected container pages into protected container memory
US10180854B2 (en) * 2016-09-28 2019-01-15 Intel Corporation Processor extensions to identify and avoid tracking conflicts between virtual machine monitor and guest virtual machine
US20180095892A1 (en) * 2016-10-01 2018-04-05 Intel Corporation Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
US10120805B2 (en) * 2017-01-18 2018-11-06 Intel Corporation Managing memory for secure enclaves
CN108469986B (zh) * 2017-02-23 2021-04-09 华为技术有限公司 一种数据迁移方法及装置
US10372452B2 (en) * 2017-03-14 2019-08-06 Samsung Electronics Co., Ltd. Memory load to load fusing
US10552153B2 (en) * 2017-03-31 2020-02-04 Intel Corporation Efficient range-based memory writeback to improve host to device communication for optimal power and performance
CN107273138A (zh) * 2017-07-04 2017-10-20 杭州铜板街互联网金融信息服务有限公司 基于Android业务模块间交互的解耦方法和系统
US10534725B2 (en) * 2017-07-25 2020-01-14 International Business Machines Corporation Computer system software/firmware and a processor unit with a security module
CN107392011B (zh) * 2017-08-22 2019-11-22 海光信息技术有限公司 一种内存页转移方法
US10552344B2 (en) * 2017-12-26 2020-02-04 Intel Corporation Unblock instruction to reverse page block during paging
US11126699B2 (en) * 2018-02-07 2021-09-21 Nec Corporation Replica trusted execution environment: enabling seamless replication of trusted execution environment (TEE)-based enclaves in the cloud
US10970390B2 (en) * 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels
US10649911B2 (en) * 2018-03-29 2020-05-12 Intel Corporation Supporting memory paging in virtualized systems using trust domains
US11494485B2 (en) * 2018-04-30 2022-11-08 Google Llc Uniform enclave interface
WO2019212581A1 (en) 2018-04-30 2019-11-07 Google Llc Secure collaboration between processors and processing accelerators in enclaves
US11509643B2 (en) 2018-04-30 2022-11-22 Google Llc Enclave interactions
US10725911B2 (en) * 2018-12-10 2020-07-28 Sap Se Non-Uniform pagination of columnar data
ES2870823T3 (es) * 2019-04-19 2021-10-27 Advanced New Technologies Co Ltd Métodos y dispositivos para ejecutar aplicaciones confiables en un procesador que admite entornos de ejecución protegidos
US11436016B2 (en) * 2019-12-04 2022-09-06 Advanced Micro Devices, Inc. Techniques for improving operand caching

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6185258B1 (en) * 1997-09-16 2001-02-06 At&T Wireless Services Inc. Transmitter diversity technique for wireless communications
US6539470B1 (en) * 1999-11-16 2003-03-25 Advanced Micro Devices, Inc. Instruction decode unit producing instruction operand information in the order in which the operands are identified, and systems including same
JP3866597B2 (ja) * 2002-03-20 2007-01-10 株式会社東芝 内部メモリ型耐タンパプロセッサおよび秘密保護方法
EP1542112A4 (de) * 2002-07-09 2008-04-09 Fujitsu Ltd ATTACKENBESTûNDIGE VIELZWECK-CPU DES OFFENEN TYPS UND ANWENDUNGSSYSTEM DAF R
US7475220B1 (en) * 2003-08-18 2009-01-06 Cray Incorporated Buffer overflow detection
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7657754B2 (en) * 2005-12-08 2010-02-02 Agere Systems Inc Methods and apparatus for the secure handling of data in a microcontroller
US7836320B2 (en) * 2006-07-07 2010-11-16 Arm Limited Power management in a data processing apparatus having a plurality of domains in which devices of the data processing apparatus can operate
US8108659B1 (en) * 2006-11-03 2012-01-31 Nvidia Corporation Controlling access to memory resources shared among parallel synchronizable threads
US7958320B2 (en) * 2006-12-05 2011-06-07 Intel Corporation Protected cache architecture and secure programming paradigm to protect applications
US8909601B2 (en) * 2007-11-13 2014-12-09 Oracle America, Inc. System and method for implementing shared scalable nonzero indicators
US9317708B2 (en) * 2008-08-14 2016-04-19 Teleputers, Llc Hardware trust anchors in SP-enabled processors
JP2012508938A (ja) * 2008-11-14 2012-04-12 インテル・コーポレーション セキュアなアプリケーション実行方法および装置
US9305189B2 (en) * 2009-04-14 2016-04-05 Owl Computing Technologies, Inc. Ruggedized, compact and integrated one-way controlled interface to enforce confidentiality of a secure enclave
DE112009005466T5 (de) * 2009-12-22 2012-10-31 Intel Corporation Verfahren und Vorrichtung zum Bereitstellen einer sicheren Anwendungsausführung
US8677076B2 (en) * 2010-03-30 2014-03-18 Oracle International Corporation System and method for tracking references to shared objects using byte-addressable per-thread reference counters
US8181176B2 (en) * 2010-06-21 2012-05-15 Intel Corporation Uniform storage device access using partial virtual machine executing within a secure enclave session
US8972746B2 (en) * 2010-12-17 2015-03-03 Intel Corporation Technique for supporting multiple secure enclaves
US8832452B2 (en) * 2010-12-22 2014-09-09 Intel Corporation System and method for implementing a trusted dynamic launch and trusted platform module (TPM) using secure enclaves
US8954755B2 (en) * 2012-01-23 2015-02-10 International Business Machines Corporation Memory address translation-based data encryption with integrated encryption engine
US9223709B1 (en) * 2012-03-06 2015-12-29 Marvell International Ltd. Thread-aware cache memory management
US20140181484A1 (en) * 2012-12-21 2014-06-26 James Callister Mechanism to provide high performance and fairness in a multi-threading computer system
US9430384B2 (en) 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430384B2 (en) 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US10592421B2 (en) 2013-03-31 2020-03-17 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US10867092B2 (en) 2017-12-16 2020-12-15 Intel Corporation Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries

Also Published As

Publication number Publication date
GB2522137A (en) 2015-07-15
US10592421B2 (en) 2020-03-17
US9430384B2 (en) 2016-08-30
BR102014006806A2 (pt) 2014-12-02
GB2528796A8 (en) 2018-04-18
US20140297962A1 (en) 2014-10-02
GB2528796B (en) 2016-05-18
GB201405732D0 (en) 2014-05-14
JP5802290B2 (ja) 2015-10-28
JP2014203456A (ja) 2014-10-27
GB2534037B (en) 2016-10-19
GB201601398D0 (en) 2016-03-09
GB2534037A8 (en) 2018-04-18
GB201505638D0 (en) 2015-05-13
CN104484284A (zh) 2015-04-01
GB2528796B8 (en) 2018-04-18
CN104484284B (zh) 2017-11-21
JP6344614B2 (ja) 2018-06-20
GB2528796A (en) 2016-02-03
KR101628886B1 (ko) 2016-06-09
US20160371191A1 (en) 2016-12-22
JP2016006681A (ja) 2016-01-14
GB2534037A (en) 2016-07-13
GB2515611B (en) 2015-06-03
KR20140118862A (ko) 2014-10-08
GB2522137B (en) 2015-12-02
GB201515835D0 (en) 2015-10-21
GB2515611A (en) 2014-12-31
GB2534037B8 (en) 2018-04-18

Similar Documents

Publication Publication Date Title
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102014003795A1 (de) Verfahren und Vorrichtungen für Fusionsbefehle zur Bereitstellung der OR-Test- und AND-Test-Funktionalität auf mehreren Testquellen
DE112013004867T5 (de) Befehl und Logik zum Bereitstellen von Push-Puffer-Kopier- und Speicher-Funktionalität
DE102014003563A1 (de) Fusionierbare befehle und logik zum versehen mit or-test- und and-test-funktionalität unter benutzen von mehrfachtestquellen
DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
DE112013005416T5 (de) Verfahren, Vorrichtungen, Befehle und Logik zum Bereitstellen von Vektoradressenkonflikt-Detektionsfunktionalität
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112011105666T5 (de) Befehl und Logik zum Bereitstellen von Vektor-Lade-OP/Speicher-OP mit Schritt-Funktionalität
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE112011105664T5 (de) Instruktion und Logik zum Bereitstellen einer Vektorstreuungs-Op- und -Hol-Op-Funktionalität
DE102013018238A1 (de) Anweisung und Logik zum Bereitstellen einer Vektorkompressions- und Rotationsfunktionalität
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE112013005428T5 (de) Befehle, Prozessoren, Verfahren und Systeme zum Verarbeiten sicherer Hash-Algorithmen
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE102015006670A1 (de) Befehle und logik zum bereitstellen von kryptographischer allzweck-gf(256)-simd- arithmetikfunktionalität
DE102014003659A1 (de) Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters
DE102018131842A1 (de) Einrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von gepackten Wörtern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication