DE112016004476T5 - Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher - Google Patents

Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher Download PDF

Info

Publication number
DE112016004476T5
DE112016004476T5 DE112016004476.3T DE112016004476T DE112016004476T5 DE 112016004476 T5 DE112016004476 T5 DE 112016004476T5 DE 112016004476 T DE112016004476 T DE 112016004476T DE 112016004476 T5 DE112016004476 T5 DE 112016004476T5
Authority
DE
Germany
Prior art keywords
processor
computing device
address
transaction
execution
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
DE112016004476.3T
Other languages
English (en)
Inventor
David M. Durham
Men Long
Michael LeMay
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 DE112016004476T5 publication Critical patent/DE112016004476T5/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/10Address translation
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • 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
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

Technologien für einen Nur-Ausführungs-Transaktionsarbeitsspeicher umfassen eine Rechenvorrichtung mit einem Prozessor und einem Arbeitsspeicher. Der Prozessor umfasst einen Befehlsadressenübersetzungspuffer (iTLB) und einen Datenadressenübersetzungspuffer (dTLB). In Reaktion auf ein Seitenverfehlen bestimmt der Prozessor, ob eine physikalische Seitenadresse innerhalb eines Nur-Ausführungs-Transaktionsbereichs (XOT-Bereichs) des Arbeitsspeichers liegt. Wenn sie innerhalb des XOT-Bereichs liegt, kann der Prozessor den iTLB mit der physikalischen Seitenadresse belegen und verhindern, dass der dTLB mit der physikalischen Seitenadresse belegt wird. In Reaktion auf eine asynchrone Änderung des Steuerablaufs wie z. B. eine Unterbrechung bestimmt der Prozessor, ob eine letzte iTLB-Übersetzung innerhalb des XOT-Bereichs liegt. Wenn sie innerhalb des XOT-Bereichs liegt, löscht der Prozessor oder sichert anderweitig den Prozessorregisterzustand. Der Prozessor stellt sicher, dass ein XOT-Bereich die Ausführung an einem autorisierten Eintrittspunkt startet. Andere Ausführungsformen werden beschrieben und beansprucht.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Die vorliegende Anmeldung beansprucht die Priorität der US-Gebrauchsmusteranmeldung lfd. Nr. 13/974 972 mit dem Titel „TECHNOLOGIES FOR EXECUTE ONLY TRANSACTIONAL MEMORY“, die am 18. Dezember 2015 eingereicht wurde und die die Priorität unter 35 USC § 119(e) der vorläufigen US-Patentanmeldung lfd. Nr. 62/236 405 mit dem Titel „TECHNOLOGIES FOR EXECUTE ONLY TRANSACTIONAL MEMORY“ beansprucht, die am 2. Oktober 2015 eingereicht wurde.
  • HINTERGRUND
  • Computerprozessoren wurden historisch als Rechenvorrichtungen mit komplexem Befehlssatz (CISC-Vorrichtungen) oder Rechenvorrichtungen mit verringertem Befehlssatz (RISC-Vorrichtungen) klassifiziert. Ein CISC-Prozessor wie z. B. ein Prozessor, der einen Intel®-Befehlssatz (z. B. Intel® 64, IA-32, usw.) unterstützt, kann einen komplexen Befehlssatz mit Befehlen mit variabler Länge bereitstellen, die große eingebettete Daten umfassen können. Ein typischer RISC-Prozessor wie z. B. ein Prozessor, der einen ARM®-Befehlssatz unterstützt, kann einen verringerten Befehlssatz bereitstellen, der Befehle mit fester Größe umfasst.
  • Bestimmte Prozessoren können einen Nur-Ausführungs-Arbeitsspeicher unterstützen. In jenen Prozessoren können die Inhalte des Nur-Ausführungs-Arbeitsspeichers durch den Prozessor ausgeführt werden, können jedoch nicht gelesen oder in diesen geschrieben werden. Bestimmte Prozessoren können sichere Ausführungsumgebungen unterstützen. Der Eintritt in eine sichere Ausführungsumgebung kann jedoch einen oder mehrere teure Kontextschalter wie z. B. einen Weltschalter von der normalen Welt und zurück erfordern, der Tausende von Prozessorzyklen kosten kann.
  • Figurenliste
  • Die hier beschriebenen Konzepte werden als Beispiel und nicht zur Begrenzung in den begleitenden Figuren dargestellt. Der Einfachheit und Deutlichkeit der Darstellung halber sind Elemente, die in den Figuren dargestellt sind, nicht notwendigerweise maßstäblich gezeichnet. Wenn sie als geeignet betrachtet werden, wurden Bezugsbezeichnungen unter den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben.
    • 1 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Rechenvorrichtung für einen Nur-Ausführungs-Transaktionsarbeitsspeicher (XOT-Arbeitsspeicher);
    • 2 ist ein vereinfachtes Blockdiagramm mindestens einer Ausführungsform einer Umgebung, die durch die Rechenvorrichtung von 1 erstellt werden kann;
    • 3 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens für die Bootzeit-XOT-Konfiguration, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann;
    • 4 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens für ein Seitenverfehlungssteuerprogramm, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann;
    • 5 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens für die Unterbrechungsbehandlung, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann;
    • 6 ist ein schematisches Diagramm, das ein Trefferregister eines Befehlsadressenübersetzungspuffers (iTLB) darstellt, das durch die Rechenvorrichtung von 1-2 unterhalten werden kann;
    • 7 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens zum Verschlüsseln eines Prozessorregisterzustandes, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann;
    • 8 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens für die Eintrittspunktüberprüfung, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann;
    • 9 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens für ein iTLB-Abbildungsänderungssteuerprogramm, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann;
    • 10 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens für ein iTLB-Treffer- oder iTLB-Verfehlungssteuerprogramm, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann;
    • 11 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens zum Verarbeiten einer iTLB-Verfehlung, das in Verbindung mit dem Verfahren von 10 ausgeführt werden kann;
    • 12 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens für ein iTLB-Verfehlungssteuerprogramm, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann;
    • 13 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens für ein iTLB-Treffersteuerprogramm, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann; und
    • 14 ist ein vereinfachtes Ablaufdiagramm mindestens einer Ausführungsform eines Verfahrens für einen Nur-Ausführungs-Transaktionsarbeitsspeicher auf Softwarebasis, das durch die Rechenvorrichtung von 1-2 ausgeführt werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Obwohl die Konzepte der vorliegenden Offenbarung für verschiedene Modifikationen und alternative Formen empfänglich sind, wurden spezielle Ausführungsformen davon als Beispiel in den Zeichnungen gezeigt und werden hier im Einzelnen beschrieben. Selbstverständlich besteht jedoch keine Absicht, die Konzepte der vorliegenden Offenbarung auf die offenbarten speziellen Formen zu begrenzen, sondern im Gegenteil besteht die Absicht, alle Modifikationen, Äquivalente und Alternativen, die mit der vorliegenden Offenbarung und den beigefügten Ansprüchen konsistent sind, abzudecken.
  • Bezugnahmen in der Patentbeschreibung auf „eine einzelne Ausführungsform“, „eine Ausführungsform“, „eine erläuternde Ausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Eigenschaft umfassen kann, aber jede Ausführungsform dieses spezielle Merkmal, diese spezielle Struktur oder diese spezielle Eigenschaft umfassen kann oder nicht notwendigerweise umfassen kann. Überdies beziehen sich solche Ausdrücke nicht notwendigerweise auf dieselbe Ausführungsform. Wenn ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird, wird ferner unterbreitet, dass es innerhalb der Kenntnis eines Fachmanns auf dem Gebiet liegt, ein solches Merkmal, eine solche Struktur oder eine solche Eigenschaft in Verbindung mit anderen Ausführungsformen zu bewirken, ob explizit beschrieben oder nicht. Außerdem sollte erkannt werden, dass Elemente, die in einer Liste in Form von „A, B und/oder C“ enthalten sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten können. Ebenso können Elemente, die in Form von „mindestens eines von A, B oder C“ aufgelistet sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten.
  • Die offenbarten Ausführungsformen können in einigen Fällen in Hardware, Firmware, Software oder irgendeiner Kombination davon implementiert werden. Die offenbarten Ausführungsformen können auch als Befehle implementiert werden, die durch ein oder mehrere flüchtige oder nichtflüchtige maschinenlesbare (z. B. computerlesbare) Speichermedien getragen oder darauf gespeichert sind, die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Speichermedium kann als irgendeine Speichervorrichtung, irgendein Mechanismus oder eine andere physikalische Struktur zum Speichern oder Übertragen von Informationen in einer durch eine Maschine lesbaren Form (z. B. flüchtiger oder nichtflüchtiger Arbeitsspeicher, eine Medienplatte oder eine andere Medienvorrichtung) verkörpert sein.
  • Mit Bezug nun auf 1 unterstützt in einer erläuternden Ausführungsform eine Rechenvorrichtung 100 die Ausführung von Codepfaden unter Verwendung eines Nur-Ausführungs-Transaktionsarbeitsspeichertyps (XOT-Arbeitsspeichertyps). Die Rechenvorrichtung 100 kann eine oder mehrere Seiten, Segmente oder andere Regionen eines Arbeitsspeichers als XOT-Bereich festlegen und XOT-Codepfade in den XOT-Bereich früh im Bootprozess laden. XOT-Codepfade können nur ausgeführt werden und können nicht gelesen oder in diese geschrieben werden. Folglich ermöglichen bestimmte Prozessorbefehle an den XOT-Seiten, dass Geheimnisse als Teil des Befehls (z. B. als unmittelbare Werte im Befehl) eingebettet werden. Beim Empfangen einer Unterbrechung, einer Ausnahme oder einer anderen Änderung des Steuerablaufs als einer Verzweigung, während ein XOT-Codepfad ausgeführt wird, löscht die Rechenvorrichtung 100 alternativ den Prozessorzustand oder sichert diesen anderweitig, wobei die Integrität des Befehlsablaufs und der zugehörigen Daten geschützt wird. Die Rechenvorrichtung 100 kann auch sicherstellen, dass in einen XOT-Codebereich nur an einem vordefinierten Eintrittspunkt eingetreten werden kann, was die Integrität des XOT-Codes und der zugehörigen Daten weiter schützt.
  • Folglich können XOT-Arbeitsspeicherbereiche einen äußerst effizienten Schutzmechanismus für Befehle und unmittelbare Daten, die in die Befehle eingebettet sind, schaffen. Da der XOT-Schutz als Arbeitsspeichererlaubnis verkörpert sein kann, kann der Schutzmechanismus inline ohne Modus/Welt-Schalter oder anderen potentiell teuren Kontextschalter, und ohne sich auf die Prozessorparallelverarbeitung, den TLB oder den Cache-Zustand auszuwirken, ausgeführt werden. Folglich kann der Prozessor 120 der Rechenvorrichtung 100 einen im Wesentlichen unverzüglichen, freien Schutzmechanismus mit null Mehraufwand schaffen, der den XOT-Arbeitsspeicher vor Malware, Ausbeutungen und Beobachtung abschirmt. Diese Kombination von Sicherheit ohne Mehraufwand kann die Leistungseffizienz und Skalierbarkeit verbessern, was ermöglicht, dass derselbe geschützte CISC-Code an einer breiten Vielfalt von Vorrichtungen von kleinen, einfachen, leistungseffizienten Vorrichtungen (z. B. eingebetteten Steuereinheiten, Vorrichtungen mit Internet von Dingen (IoT) oder anderen kleinen Vorrichtungen) bis zu Hochleistungscomputern und Hochleistungsservern ausführt. Im Gegensatz zur Privilegientrennung oder Prozesstrennung kann der XOT ferner sich nicht auf eine Ausführungsüberwachungseinrichtung, ein Betriebssystem (OS) oder eine andere steuernde Softwareentität verlassen. Folglich können das Betriebssystem und die Plattformfirmware aus der vertrauenswürdigen Codebasis (TCB) der Rechenvorrichtung 100 beseitigt werden, da die Hardware und/oder der Mikrocode des Prozessors den XOT-Arbeitsspeichertyp durchsetzt. Ebenso werden Vorrichtungen aus der TCB ausgeschlossen, da die Hardware einen Vorrichtungszugriff auf die XOT-Arbeitsspeicherregionen verhindert. Ferner ist jeder XOT-Codepfad grundsätzlich von jedem anderen XOT-Codepfad getrennt und unterschiedlich. Da XOT als neue Arbeitsspeichererlaubnis und/oder Arbeitsspeichertyp verkörpert sein kann, kann der XOT-Arbeitsspeicher außerdem keine neuen Prozessorbefehle erfordern und folglich können die XOT-Codepfade abwärtskompatibel sein. Folglich können Computerprogramme, die so geschrieben, kompiliert oder anderweitig gezielt sind, dass sie in einem XOT-Arbeitsspeicherbereich laufen, auch auf veralteten Systemen laufen, natürlich ohne den zusätzlichen Sicherheitsschutz, der durch den XOT-Arbeitsspeicherbereich gewährt wird. Ebenso kann derselbe Codepfad ohne XOT-Schutz ausführen, um die Fehlersuche zu erleichtern.
  • Der XOT-Code kann auf irgendeinem Privilegienniveau in der Rechenvorrichtung 100 laufen, kann jedoch immer noch durch ein Betriebssystem (OS) hinsichtlich des Zugriffs gesteuert und gemanagt werden, um zu verhindern, dass nicht autorisierte XOT-Programme auf Systemressourcen zugreifen. XOT-Codepfade, die durch die Rechenvorrichtung 100 geschützt sind, können Geheimnisse aufrechterhalten, diese Geheimnisse bearbeiten (z. B. unter Verwendung von AES-NI-Befehlen, die durch bestimmte Intel®-Prozessoren bereitgestellt werden) oder diese Geheimnisse verwenden, um auf andere Plattformressourcen transaktionsmäßig (z. B. unter Verwendung von E/A-Befehlen wie z. B. den x86-EIN/AUS-Befehlen) zuzugreifen. Der XOT-Code kann beispielsweise verwendet werden, um ein ganzes System auf einem Chip (SoC), Verriegelungs- und Entriegelungsvorrichtungen, IP-Blöcke und andere Funktionsblöcke für den ausschließlichen Zugriff durch autorisierte Codepfade zu organisieren. Daher können in einigen Ausführungsformen XOT-Codeseiten der ausschließliche Zugriffsmechanismus für Hardwarevorrichtungen wie z. B. SoC-Vorrichtungen oder IP-Blöcke sein, die verhindern, dass Malware oder Ausbeutungen den Vorrichtungszustand verfälschen.
  • Die Rechenvorrichtung 100 kann als irgendein Typ von Rechen- oder Computervorrichtung verkörpert sein, die in der Lage ist, die hier beschriebenen Funktionen durchzuführen, einschließlich ohne Begrenzung eines Servers, eines Arbeitsplatzrechners, eines Computers, eines Desktop-Computers, eines Laptop-Computers, eines Notebook-Computers, eines Tablet-Computers, einer mobilen Rechenvorrichtung, einer tragbaren Rechenvorrichtung, eines Netzgeräts, eines Web-Geräts, einer eingebetteten Rechenvorrichtung, eines verteilten Rechensystems, eines Systems auf Prozessorbasis und/oder einer elektronischen Verbrauchervorrichtung. Wie in 1 gezeigt, umfasst die Rechenvorrichtung 100 erläuternd einen Prozessor 120, ein Eingabe/Ausgabe-Untersystem 126, einen Arbeitsspeicher 128, eine Datenspeichervorrichtung 130 und eine Kommunikationsschaltungsanordnung 132. Die Rechenvorrichtung 100 kann in anderen Ausführungsformen natürlich andere oder zusätzliche Komponenten umfassen, wie z. B. jene, die üblicherweise in einem Servercomputer zu finden sind (z. B. verschiedene Eingabe/Ausgabe-Vorrichtungen). Außerdem können in einigen Ausführungsformen eine oder mehrere der erläuternden Komponenten in eine andere Komponente eingegliedert sein oder anderweitig einen Abschnitt davon bilden. Der Arbeitsspeicher 128 oder Abschnitte davon können beispielsweise in einigen Ausführungsformen in den Prozessor 120 eingegliedert sein.
  • Der Prozessor 120 kann als irgendein Typ von Prozessor verkörpert sein, der in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Der Prozessor 120 kann als Einzel- oder Mehrkern-Prozessor(en), Digitalsignalprozessor, Mikrocontroller oder anderer Prozessor oder Verarbeitungs-/Steuerschaltung verkörpert sein. Der Prozessor 120 umfasst eine Unterstützung für einen komplexen Befehlssatz und kann folglich als Rechenprozessor mit komplexem Befehlssatz (CISC-Prozessor) bezeichnet werden. Insbesondere kann der Prozessor 120 einen Befehlssatz unterstützen, wie z. B. Intel® 64 oder IA-32, der eine reiche Codierung von Daten als Teil der Befehle selbst ermöglicht, beispielsweise durch Unterstützen von unmittelbaren Daten mit variabler Größe. Da allen der Daten auf einer XOT-Seite als Teil eines authentifizierten Steuerablaufs vertraut werden kann, kann allen unmittelbaren Daten vertraut werden, ebenso wie sie unzugänglich und unmodifizierbar sind durch Malware, das OS, Vorrichtungen oder sogar einen anderen XOT-Code.
  • Der Prozessor 120 umfasst ferner einen Befehlsadressenübersetzungspuffer (iTLB) 122 und einen Datenadressenübersetzungspuffer (dTLB) 124. Jeder des iTLB 122 und des dTLB 124 kann als Cache oder andere Arbeitsspeicherstruktur verkörpert sein, die Seitentabellenabbildungen zwischen virtuellen Arbeitsspeicheradressen und physikalischen Arbeitsspeicheradressen unterhält. Der iTLB 122 wird zum Ausführen von Befehlen (z. B. Abrufen und Ausführen von Befehlen von dem Ort des aktuellen Befehlszeigers des Prozessors 120) verwendet und der dTLB 124 wird zum Zugreifen auf Daten (z. B. Zugreifen auf den Arbeitsspeicher 128 unter Verwendung von Lade/Speicher-Befehlen) verwendet. Wie nachstehend weiter beschrieben, unterstützt der Prozessor 120 einen Nur-Ausführungs-Transaktionsarbeitsspeichertyp (XOT-Arbeitsspeichertyp) zum Ausführen von bestimmten Codepfaden. Wie nachstehend beschrieben, kann der Prozessor 120 den XOT-Arbeitsspeichertyp unter Verwendung von einem oder mehreren XOT-Bereichsregistern sowie irgendeiner Kombination von Hardware, Firmware und/oder Mikrocodeereignissteuerprogrammen, einschließlich eines Seitenverfehlungssteuerprogramms, eines Unterbrechungssteuerprogramms und/oder eines Seitenabbildungsänderungssteuerprogramms, durchsetzen.
  • Der Arbeitsspeicher 128 kann als irgendein Typ von flüchtigem oder nichtflüchtigem Arbeitsspeicher oder Datenspeicher verkörpert sein, der in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Im Betrieb kann der Arbeitsspeicher 128 verschiedene Daten und Software speichern, die während des Betriebs der Rechenvorrichtung 100 verwendet werden, wie z. B. Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber. Wie nachstehend weiter beschrieben, können ein oder mehrere Teile des Arbeitsspeichers 128 als XOT-Bereiche festgelegt sein und können XOT-Codepfade umfassen. Der Arbeitsspeicher 128 ist mit dem Prozessor 120 über das E/A-Untersystem 126 kommunikativ gekoppelt, das als Schaltungsanordnung und/oder Komponenten verkörpert sein kann, um die Eingabe/Ausgabe-Operationen mit dem Prozessor 120, dem Arbeitsspeicher 128 und anderen Komponenten der Rechenvorrichtung 100 zu erleichtern. Das E/A-Untersystem 126 kann beispielsweise als Arbeitsspeichersteuereinheitsnetzknoten, Eingabe/Ausgabe-Steuernetzknoten, Plattformsteuereinheitsnetzknoten, integrierte Steuerschaltungsanordnung, Firmware-Vorrichtungen, Kommunikationsverbindungen (d. h. Punkt-Punkt-Verbindungen, Busverbindungen, Drähte, Kabel, Lichtleiter, Leiterbahnen auf gedruckten Leiterplatten usw.) und/oder andere Komponenten und Untersysteme verkörpert sein, um die Eingabe/Ausgabe-Operationen zu erleichtern. In einigen Ausführungsformen kann das E/A-Untersystem 126 einen Abschnitt eines Systems auf einem Chip (SoC) bilden und zusammen mit dem Prozessor 120, dem Arbeitsspeicher 128 und anderen Komponenten der Rechenvorrichtung 100 auf einem einzelnen integrierten Schaltungschip eingegliedert sein.
  • Die Datenspeichervorrichtung 130 kann als beliebiger Typ von Vorrichtung oder Vorrichtungen verkörpert sein, die für die Kurzzeit- oder Langzeitspeicherung von Daten konfiguriert sind, wie beispielsweise Arbeitsspeichervorrichtungen und Arbeitsspeicherschaltungen, Arbeitsspeicherkarten, Festplattenlaufwerke, Halbleiterlaufwerke oder andere Datenspeichervorrichtungen. Die Datenspeichervorrichtung 130 kann beispielsweise Bilder von XOT-Codepfaden speichern, die in den Arbeitsspeicher 128 geladen werden können. Die Kommunikationsschaltungsanordnung 132 der Rechenvorrichtung 100 kann als irgendeine Kommunikationsschaltung, Kommunikationsvorrichtung oder Sammlung davon verkörpert sein, die in der Lage ist, Kommunikationen zwischen der Rechenvorrichtung 100 und anderen entfernten Vorrichtungen über ein Netz zu ermöglichen. Die Kommunikationsschaltungsanordnung 132 kann dazu konfiguriert sein, irgendeine oder mehrere Kommunikationstechnologie (z. B. verdrahtete oder drahtlose Kommunikationen) und zugehörige Protokolle (z. B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX usw.) zu verwenden, um eine solche Kommunikation zu bewirken.
  • In einigen Ausführungsformen kann die Rechenvorrichtung 100 auch eine oder mehrere Peripherievorrichtungen 134 umfassen. Die Peripherievorrichtungen 134 können irgendeine Anzahl von zusätzlichen Eingabe/Ausgabe-Vorrichtungen, Schnittstellenvorrichtungen und/oder anderen Peripherievorrichtungen umfassen. In einigen Ausführungsformen können die Peripherievorrichtungen 134 beispielsweise eine Anzeige, einen Berührungsbildschirm, eine Graphikschaltungsanordnung, eine Tastatur, eine Maus, ein Lautsprechersystem, ein Mikrophon, eine Netzschnittstelle und/oder andere Eingabe/AusgabeVorrichtungen, Schnittstellenvorrichtungen und/oder Peripherievorrichtungen umfassen.
  • Mit Bezug nun auf 2 stellt in einer erläuternden Ausführungsform die Rechenvorrichtung 100 eine Umgebung 200 während des Betriebs her. Die erläuternde Umgebung 200 umfasst ein Nur-Ausführungs-Modul 202, ein Codemanagementmodul 204, ein Eintrittspunktmodul 206 und ein Transaktionsmodul 208. Die verschiedenen Module der Umgebung 200 können als Hardware, Firmware, Mikrocode, Software oder Kombination davon verkörpert sein. An sich können in einigen Ausführungsformen ein oder mehrere Module der Umgebung 200 als Schaltungsanordnung oder Sammlung von elektrischen Vorrichtungen (z. B. Nur-Ausführungs-Schaltungsanordnung 202, Codemanagementschaltungsanordnung 204, Eintrittspunktschaltungsanordnung 206 und/oder Transaktionsschaltungsanordnung 208) verkörpert sein. Es sollte erkannt werden, dass in solchen Ausführungsformen eine oder mehrere der Nur-Ausführungs-Schaltungsanordnung 202, der Codemanagementschaltungsanordnung 204, der Eintrittspunktschaltungsanordnung 206 und/oder der Transaktionsschaltungsanordnung 208 einen Abschnitt von einem oder mehreren des Prozessors 120, des E/A-Untersystems 126 und/oder anderer Komponenten der Rechenvorrichtung 100 bilden können. Außerdem können in einigen Ausführungsformen ein oder mehrere der erläuternden Module einen Abschnitt eines anderen Moduls bilden und/oder ein oder mehrere der erläuternden Module können voneinander unabhängig sein.
  • Das Nur-Ausführungs-Modul 202 ist dazu konfiguriert, XOT-Bereiche zu bezeichnen oder anderweitig zu konfigurieren und sicherzustellen, dass XOT-Bereiche durch den Prozessor 120 ausgeführt werden können, aber nicht gelesen oder in diese geschrieben werden kann. Insbesondere kann das Nur-Ausführungs-Modul 202 dazu konfiguriert sein, ein Seitenverfehlungssteuerprogramm 210 des Prozessors 120 in Reaktion auf ein Seitenverfehlen auszuführen. Das Seitenverfehlungssteuerprogramm 210 ist dazu konfiguriert, eine Abbildung von einer virtuellen auf eine physikalische Adresse zu bestimmen und zu bestimmen, ob die physikalische Arbeitsspeicheradresse innerhalb eines XOT-Bereichs des Arbeitsspeichers 128 liegt. Wenn ja, ist das Seitenverfehlungssteuerprogramm 210 dazu konfiguriert, den iTLB 122 mit der Abbildung der virtuellen auf die physikalische Adresse zu belegen und zu verhindern, dass der dTLB 124 mit der Abbildung der virtuellen auf die physikalische Adresse belegt wird. Das Seitenverfehlungssteuerprogramm 210 kann ferner dazu konfiguriert sein zu bestimmen, ob eine Seitengröße, die dem XOT-Bereich zugeordnet ist, einer Seitengröße entspricht, die durch eine Seitentabelle der Rechenvorrichtung 100 angegeben wird, und wenn nicht, eine Seitengrößenfehlanpassungsstörung zu erzeugen. Zusätzlich oder alternativ kann das Nur-Ausführungs-Modul 202 in einigen Ausführungsformen ein Seitentabellen-Nur-Ausführungs-Modul 212 umfassen, das dazu konfiguriert sein kann, die Nur-Ausführungs-Eigenschaft eines XOT-Bereichs unter Verwendung einer Unterstützung von Betriebssystemseitentabellen und/oder erweiterten Seitentabellen (EPT) des Prozessors 120 durchzusetzen. Jeder Seitentabelleneintrag (und/oder EPT-Eintrag) kann beispielsweise einen XOT-Arbeitsspeichertyp oder eine XOT-Arbeitsspeichererlaubnis unterstützen.
  • Das Codemanagementmodul 204 ist dazu konfiguriert, XOT-Codepfade innerhalb XOT-Bereichen im Arbeitsspeicher 128 sicher zu laden, zu messen und auszuführen. Insbesondere kann das Codemanagementmodul 204 dazu konfiguriert sein, einen Rücksetzvektor auszuführen, ein XOT-Codebild in einen XOT-Bereich vom Rücksetzvektor zu laden und den XOT-Bereich nach dem Laden des XOT-Codebildes zu verriegeln oder anderweitig zu konfigurieren. Das Codemanagementmodul 204 kann auch dazu konfiguriert sein, das XOT-Codebild zu messen. Wenn es ausgeführt wird, kann das XOT-Codebild dazu konfiguriert sein, eine oder mehrere Port-E/A-Vorrichtungen der Rechenvorrichtung 100 mit (einem) Geheimnis(sen) zu konfigurieren, die als unmittelbare Werte in Befehlen des XOT-Codebildes gespeichert sind (z. B. in einem oder mehreren Bewegungsbefehlen). Wenn es ausgeführt wird, kann das XOT-Codebild zusätzliche XOT-Codebilder sicher laden und messen und zusätzliche XOT-Bereiche konfigurieren. Das XOT-Codebild kann beispielsweise einen geheimen Wert umfassen, der im XOT-Arbeitsspeicher codiert ist, der zusätzliche XOT-Arbeitsspeicherbereiche öffnen kann oder auf E/A-Vorrichtungen zugreifen kann unter Verwendung des Geheimnisses, das durch die Port-E/A-Befehle erstellt wird. Zusätzlich oder alternativ kann das XOT-Codebild auf Spezialprozessorregister zugreifen, die mit einem Geheimnis vom XOT-Code programmiert sein können, und dann verwendet werden, um auf zusätzliche Plattformressourcen, E/A-Vorrichtungen, Arbeitsspeicherregionen, Speicherregionen oder andere Ressourcen zuzugreifen. Wenn die Transaktion abgebrochen wird, dann wird das Geheimnis gelöscht und der Vorrichtungs-/Arbeitsspeicherzugriff stoppt. In einigen Ausführungsformen können diese Funktionen durch ein oder mehrere Untermodule wie z. B. ein Boot-Konfigurationsmodul 214, ein Vorrichtungskonfigurationsmodul 216 und/oder ein Codemessmodul 218 durchgeführt werden.
  • Das Eintrittspunktmodul 206 ist dazu konfiguriert sicherzustellen, dass XOT-Codepfade in XOT-Bereichen die Ausführung nur an autorisierten Eintrittspunkten beginnen. Insbesondere kann das Eintrittspunktmodul 206 dazu konfiguriert sein, ein Abbildungsänderungssteuerprogramm 220 des Prozessors 120 in Reaktion auf eine Änderung eines Werts der letzten Übersetzung des iTLB 122 auszuführen. Das Abbildungsänderungssteuerprogramm 220 kann beispielsweise in Reaktion auf eine Änderung in einem iTLB-Trefferpuffer ausgeführt werden, der durch den Prozessor 120 unterhalten wird. Das Abbildungsänderungssteuerprogramm 220 ist dazu konfiguriert, die physikalische Arbeitsspeicheradresse des letzten Übersetzungs-iTLB 122 zu bestimmen und zu bestimmen, ob diese physikalische Arbeitsspeicheradresse innerhalb eines XOT-Bereichs liegt. Wenn ja, ist das Abbildungsänderungssteuerprogramm 220 dazu konfiguriert zu bestimmen, ob ein Versatzteil der physikalischen Arbeitsspeicheradresse (z. B. eine vordefinierte Anzahl von Bits niedrigerer Ordnung) einem vordefinierten Eintrittspunkt entspricht, und wenn nicht, eine Störung zu erzeugen.
  • In einigen Ausführungsformen kann das Eintrittspunktmodul 206 dazu konfiguriert sein, ein oder mehrere Zugriffssteuerprogramme 222 des iTLB 122 auszuführen, wie z. B. ein iTLB-Verfehlungssteuerprogramm, ein iTLB-Treffersteuerprogramm oder ein iTLB-Zugriffssteuerprogramm, das entweder bei einem iTLB-Treffer oder einer iTLB-Verfehlung aufgerufen wird. Ein iTLB-Verfehlungssteuerprogramm 222 kann beispielsweise dazu konfiguriert sein zu bestimmen, ob eine physikalische Arbeitsspeicheradresse, die die Verfehlung des iTLB 122 erfüllt, innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt. Wenn ja, ist das iTLB-Verfehlungssteuerprogramm 222 dazu konfiguriert zu bestimmen, ob die physikalische Arbeitsspeicheradresse an einem autorisierten Eintrittspunkt liegt, und wenn nicht, eine Störung zu erzeugen.
  • In einigen Ausführungsformen kann das iTLB-Verfehlungssteuerprogramm 222 dazu konfiguriert sein, einen XOT-Index der Abbildung der virtuellen auf die physikalische Adresse aufzuzeichnen, die in den iTLB 122 eingefügt wird. In diesen Ausführungsformen kann ein iTLB-Treffersteuerprogramm 222 dazu konfiguriert sein zu bestimmen, ob ein vorheriger Befehl, der durch den Prozessor 120 ausgeführt wird, innerhalb eines XOT-Bereichs ausgeführt wurde. Wenn ja, ist das iTLB-Treffersteuerprogramm 222 dazu konfiguriert zu bestimmen, ob ein Index einer Abbildung der virtuellen auf die physikalische Adresse, die dem Treffer des iTLB 122 zugeordnet ist, dem aufgezeichneten XOT-Index entspricht, und wenn nicht, den Eintrag des iTLB 122 beim aufgezeichneten XOT-Index zu exmittieren.
  • Zusätzlich oder alternativ kann das iTLB-Verfehlungssteuerprogramm 222 dazu konfiguriert sein, einen Index der Abbildung der virtuellen auf die physikalische Adresse, die in den iTLB 122 eingefügt wird, als zuletzt verwendeten Befehlsübersetzungspuffereintrag aufzuzeichnen und ein XOT-Bit am entsprechenden Eintrag im iTLB 122 zu setzen. In diesen Ausführungsformen kann ein iTLB-Treffersteuerprogramm 222 dazu konfiguriert sein zu bestimmen, ob ein Index einer Abbildung der virtuellen auf die physikalische Adresse, die dem iTLB-Treffer zugeordnet ist, dem Index des zuletzt verwendeten iTLB-Eintrags entspricht. Wenn nicht, ist das iTLB-Treffersteuerprogramm 222 dazu konfiguriert zu bestimmen, ob das XOT-Bit der Abbildung der virtuellen auf die physikalische Adresse, die dem iTLB-Treffer zugeordnet ist, gesetzt ist. Wenn ja, ist das iTLB-Steuerprogramm 222 dazu konfiguriert zu bestimmen, ob eine physikalische Arbeitsspeicheradresse, die dem iTLB-Treffer zugeordnet ist, an einem autorisierten Eintrittspunkt liegt, und wenn nicht, eine Störung zu erzeugen. Nach einem erfolgreichen iTLB-Treffer kann das iTLB-Treffersteuerprogramm 222 dazu konfiguriert sein, den Index des zuletzt verwendeten iTLB-Eintrags zu aktualisieren.
  • Das Transaktionsmodul 208 ist dazu konfiguriert, den internen Zustand des XOT-Codepfades, der Geheimnisse umfassen kann, davor zu schützen, dass auf diesen durch andere Entitäten der Rechenvorrichtung 100 zugegriffen wird. Insbesondere kann das Transaktionsmodul 208 dazu konfiguriert sein, ein Unterbrechungssteuerprogramm 224 des Prozessors 120 in Reaktion auf eine Änderung des Steuerablaufs auszuführen, die keine Verzweigung ist (wie z. B. eine Unterbrechung, eine Störung und/oder eine Ausnahme). Das Unterbrechungssteuerprogramm 224 ist dazu konfiguriert zu bestimmen, ob eine letzte physikalische Befehlszeigeradresse innerhalb eines XOT-Bereichs liegt, und wenn ja, den Zustand des Prozessors 120 zu sichern. Das Sichern des Zustandes des Prozessors 120 kann das Löschen oder Rückgängigmachen von einem oder mehreren Registern des Prozessors 120, das Löschen von einem oder mehreren Thread-lokalen Speicherbereichen im Arbeitsspeicher 128, das Löschen von veränderten Einträgen in einem lokalen Cache-Arbeitsspeicher des Prozessors 120 und/oder das Verschlüsseln des Zustandes des Prozessors 120 und das Speichern des verschlüsselten Prozessorzustandes umfassen.
  • Mit Bezug nun auf 3 kann bei der Verwendung die Rechenvorrichtung 100 ein Verfahren 300 für die Bootzeit-XOT-Konfiguration ausführen. Das Verfahren 300 beginnt mit einem Block 302, in dem die Rechenvorrichtung 100 einen Rücksetzvektor zur Bootzeit ausführt. Nach einem Plattformrücksetzen oder anderen Leistungszyklus können beispielsweise die Hardware und/oder Firmware der Rechenvorrichtung 100 zu einer vordefinierten Adresse in der Plattform-Firmware springen, um die Ausführung zu beginnen. Der Rücksetzvektor kann auf eine Stelle in der Firmware, eine Stelle im Plattform-Flash-Arbeitsspeicher oder eine andere Stelle zeigen, die nicht durch ein Betriebssystem oder andere Software-Entitäten, die durch die Rechenvorrichtung 100 ausgeführt werden, verfälscht werden kann.
  • Im Block 304 lädt die Rechenvorrichtung 100 ein XOT-Codebild (z. B. ein Codebild mit einem oder mehreren XOT-Codepfaden) in einen speziellen Arbeitsspeicherbereich des Arbeitsspeichers 128. Im Block 306 misst die Rechenvorrichtung 100 das XOT-Codebild. Die Rechenvorrichtung 100 kann beispielsweise ein kryptographisches Hash oder eine andere kryptographische Messung der Inhalte des XOT-Codebildes im Arbeitsspeicher 128 erzeugen. Die Messung kann verwendet werden, um die Authentizität des XOT-Codebildes zu attestieren. Da das XOT-Codebild durch die Boot-Firmware der Rechenvorrichtung 100 geladen und gemessen wird, kann der Messung des XOT-Codebildes durch andere Entitäten vertraut werden, die durch die Rechenvorrichtung 100 ausgeführt werden.
  • Im Block 308 verriegelt die Rechenvorrichtung 100 den XOT-Bereich, der das XOT-Codebild umfasst, durch Schreiben in ein oder mehrere Einmal-Setz-XOT-Bereichsregister des Prozessors 120. Wie nachstehend weiter beschrieben, kann (können) das (die) XOT-Bereichsregister verwendet werden, um Software-, Firmware-, SMM- und andere Zugriffe auf den XOT-Arbeitsspeicher zu blockieren. In einigen Ausführungsformen kann die Rechenvorrichtung 100 im Block 310 ein Bereichsregister verwenden, das für die Seitengröße des XOT-Arbeitsspeicherbereichs spezifisch ist. Der Prozessor 120 der Rechenvorrichtung 100 kann beispielsweise verschiedene Bereichsregister für einen XOT-Bereich unterstützen, der auf große und/oder riesige Seiten (z. B. 4 MB) abbildet, im Vergleich zu einem XOT-Bereich, der auf kleine Seiten (z. B. 4 kB) abbildet.
  • Im Block 312 bestimmt die Rechenvorrichtung 100, ob zusätzliche XOT-Codepfade geladen werden sollten. Wenn nicht, verzweigt das Verfahren 300 vorwärts zum Block 322, der nachstehend beschrieben wird. Wenn zusätzliche Codepfade geladen werden sollten, geht das Verfahren 300 zum Block 314 weiter.
  • Im Block 314 lädt die Rechenvorrichtung 100 von einem existierenden XOT-Codepfad ein anderes XOT-Codebild in einen Arbeitsspeicherbereich des Arbeitsspeichers 128. Im Block 316 misst die Rechenvorrichtung 100 das neu geladene XOT-Codebild vom vorher existierenden XOT-Codepfad. Die Rechenvorrichtung 100 kann beispielsweise ein kryptographisches Hash oder eine andere kryptographische Messung der Inhalte des neu geladenen XOT-Codebildes im Arbeitsspeicher 128 erzeugen. Die Messung kann verwendet werden, um die Authentizität des neu geladenen XOT-Codebildes zu attestieren. Da das XOT-Codebild durch einen anderen XOT-Codepfad der Rechenvorrichtung 100 geladen und gemessen wird, kann der Messung des XOT-Codebildes durch andere Entitäten vertraut werden, die durch die Rechenvorrichtung 100 ausgeführt werden.
  • Im Block 318 verriegelt die Rechenvorrichtung 100 vom existierenden XOT-Codepfad den XOT-Bereich, der das neu geladene XOT-Codebild umfasst, durch Schreiben in ein oder mehrere Einmal-Setz-XOT-Bereichsregister des Prozessors 120. Wie nachstehend weiter beschrieben, können das (die) XOT-Bereichsregister verwendet werden, um Software-, Firmware-, SMM- und andere Zugriffe auf den XOT-Arbeitsspeicher zu blockieren. In einigen Ausführungsformen kann die Rechenvorrichtung 100 die XOT-Bereichsregister unter Verwendung einer modellspezifischen Registerschnittstelle (MSR-Schnittstelle) des Prozessors 120 konfigurieren. Wie vorstehend beschrieben, kann die Rechenvorrichtung 100 ein Bereichsregister verwenden, das für die Seitengröße des XOT-Arbeitsspeicherbereichs spezifisch ist. Der Prozessor 120 der Rechenvorrichtung 100 kann beispielsweise verschiedene Bereichsregister für einen XOT-Bereich unterstützen, der auf große und/oder riesige Seiten (z. B. 4 MB) abbildet, im Vergleich zu einem XOT-Bereich, der auf kleine Seiten (z. B. 4 kB) abbildet. In einigen Ausführungsformen kann die Rechenvorrichtung 100 im Block 320 den XOT-Codebereich in dem (den) XOT-Bereichsregister(n) unter Verwendung von einem oder mehreren Port-E/A-Befehlen (PIO) des Prozessors 120, wie z. B. des AUS-Befehls, speichern. Nach dem Verriegeln des XOT-Bereichs läuft das Verfahren 300 in einer Schleife zum Block 312 zurück, um zu bestimmen, ob zusätzliche XOT-Codebilder geladen werden sollten.
  • Mit Rückbezug auf den Block 312, wenn keine zusätzlichen XOT-Codepfade geladen werden sollten, verzweigt das Verfahren 300 vorwärts zum Block 322. Im Block 322 kann die Rechenvorrichtung 100 eine oder mehrere Port-E/A-Vorrichtungen der Rechenvorrichtung 100 konfigurieren. Die Rechenvorrichtung 100 kann einen oder mehrere Port-E/A-Befehle des Prozessors 120 ausführen, wie z. B. EIN und/oder AUS, um eine oder mehrere Komponenten der Rechenvorrichtung 100 zu aktivieren, zu deaktivieren oder anderweitig zu konfigurieren. Die Rechenvorrichtung 100 kann beispielsweise einen oder mehrere Funktionsblöcke des Prozessors 120, des E/A-Untersystems 126 oder eines Systems auf einem Chip (SoC) der Rechenvorrichtung 100 aktivieren. Folglich kann ein XOT-Codepfad seine Geheimnisse verwenden, um die Vorrichtungsfunktionalität zu entriegeln und Ressourcen über dem SoC zu steuern.
  • In einigen Ausführungsformen kann die Rechenvorrichtung 100 im Block 324 ein oder mehrere Geheimnisse, die als unmittelbarer Wert eines Befehls gespeichert sind, zur PIO-Vorrichtung übertragen. Die Rechenvorrichtung 100 kann beispielsweise einen unmittelbaren Wert, der in einem MOV-Befehl gespeichert ist, in ein Register laden und diesen Wert dann unter Verwendung eines PIO-Befehls übertragen. Die als unmittelbare Werte gespeicherten Geheimnisse (z. B. Verschlüsselungsschlüssel, Zertifikate oder andere Geheimnisse) sind im XOT-Codepfad enthalten und sind folglich vor einem nicht autorisierten Zugriff geschützt. Da die PIO-Befehle sich nicht auf Arbeitsspeicherabbildungen verlassen, die durch ein Betriebssystem konfiguriert werden (im Vergleich zu einer Arbeitsspeicher-abgebildeten E/A (MMIO)), kann den Transaktionen unter Verwendung von PIO vertraut werden. Wenn PIO-Transaktionen durch Software (z. B. das OS) abgefangen werden, werden diese Steuerablaufänderungen effektiv als unterbrochener XOT-Ablauf gesehen und verursachen, dass der Registerzustand des Prozessors gelöscht wird, wie nachstehend in Verbindung mit 5 beschrieben. In einigen Ausführungsformen kann im Block 326 die Rechenvorrichtung 100 die Zugriffssteuerung auf die PIO-Vorrichtung vom XOT-Codepfad durchsetzen. Die Rechenvorrichtung 100 kann irgendeine Authentifizierung, Überprüfung oder andere Zugriffssteuerprozedur durchführen. Die Rechenvorrichtung 100 kann die Zugriffssteuerung durch Aktivieren und/oder Deaktivieren der PIO-Vorrichtungen durchsetzen, wie vorstehend beschrieben. Folglich können korrekt autorisierte XOT-Codepfade sicher die Zugriffssteuerung auf Vorrichtungen und/oder Funktionsblöcke innerhalb des SoC durchsetzen, die als sicherer Gateway zu Vorrichtungen wirken und einen nicht autorisierten Software- und/oder Malware-Zugriff verhindern.
  • Im Block 328 startet die Rechenvorrichtung 100 die Software wie z. B. ein Betriebssystem oder andere Software-Komponenten. Nach dem Starten der zusätzlichen Software wird das Verfahren 300 vollendet. Obwohl es als im Verfahren 300 vor dem Starten der zusätzlichen Software wie z. B. eines Betriebssystems ausgeführt dargestellt ist, sollte selbstverständlich sein, dass in einigen Ausführungsformen die Rechenvorrichtung 100 nach dem Starten der zusätzlichen Software zusätzliche XOT-Codepfade laden kann und/oder zusätzliche PIO-Vorrichtungen konfigurieren kann. Ein Betriebssystem, ein Treiber und/oder eine Anwendung der Rechenvorrichtung 100 können beispielsweise einen vorgeladenen XOT-Codepfad ausführen, um zusätzliche XOT-Codepfade zu laden, PIO-Vorrichtungen zu konfigurieren und/oder auf PIO-Vorrichtungen zuzugreifen.
  • Mit Bezug nun auf 4 kann die Rechenvorrichtung 100 bei der Verwendung ein Verfahren 400 für ein Seitenverfehlungssteuerprogramm 210 ausführen. Das Verfahren 400 beginnt mit einen Block 402, in dem die Rechenvorrichtung 100 das Seitenverfehlungssteuerprogramm 210 des Prozessors 120 ausführt. Die Rechenvorrichtung 100 führt das Seitenverfehlungssteuerprogramm 210 in Reaktion auf einen Versuch aus, auf eine virtuelle Arbeitsspeicheradresse zuzugreifen, die nicht im iTLB 122 oder dTLB 124 enthalten ist. Das Seitenverfehlungssteuerprogramm 210 kann als Hardware, Firmware und/oder Mikrocode des Prozessors 120 verkörpert sein und ist folglich für die durch die Rechenvorrichtung 100 ausgeführte Software transparent.
  • Im Block 404 durchläuft das Seitenverfehlungssteuerprogramm 210 (PMH) der Rechenvorrichtung 100 eine Seitentabelle, die im Arbeitsspeicher 128 erstellt ist, um eine Abbildung einer virtuellen auf eine physikalische Adresse zu finden. Ein Betriebssystem (OS) oder eine andere Steuer-Software der Rechenvorrichtung 100 kann die Seitentabelle im Arbeitsspeicher 128 erstellen, um Abbildungen zwischen virtuellen Arbeitsspeicherseiten und physikalischen Arbeitsspeicherseiten zu definieren. Die Adressenabbildung übersetzt eine virtuelle Adresse (auch als lineare Adresse bekannt), die der Seitenverfehlung zugeordnet ist, in eine physikalische Adresse im Arbeitsspeicher 128. Die Abbildung der virtuellen auf die physikalische Adresse kann zwischen Arbeitsspeicheradressen auf Byteebene, Arbeitsspeicherseiten, Arbeitsspeichersegmente oder andere Regionen im Arbeitsspeicher abbilden.
  • Im Block 406 bestimmt die Rechenvorrichtung 100, ob die physikalische Adresse der Abbildung der virtuellen auf die physikalische Adresse in einen XOT-Arbeitsspeicherbereich fällt. Die Rechenvorrichtung 100 kann beispielsweise die physikalische Adresse mit einem oder mehreren XOT-Bereichsregistern vergleichen, die durch vertrauenswürdige Firmware und/oder durch vertrauenswürdige XOT-Codepfade gesetzt wurden, wie vorstehend in Verbindung mit 3 beschrieben. Zusätzlich oder alternativ kann die Rechenvorrichtung 100 in einigen Ausführungsformen einen anderen Mechanismus verwenden, um zu bestimmen, ob die physikalische Adresse innerhalb eines XOT-Arbeitsspeicherbereichs liegt. In einigen Ausführungsformen kann beispielsweise eine Seitentabelle zweiter Ebene, die durch die Rechenvorrichtung 100 erstellt wird, wie z. B. erweiterte Seitentabellen (EPT), Nur-Ausführungs-Arbeitsspeichererlaubnisse ermöglichen, die mit der Transaktionsbezeichnung durch Hinzufügen eines PAT-Arbeitsspeichertyps oder eines zusätzlichen Erlaubnisbits erweitert sind. In diesen Ausführungsformen kann ein VMM der Rechenvorrichtung 100 das Laden und die Messung des XOT-Codes in den Arbeitsspeicher 128 flexibel zuweisen und steuern.
  • Im Block 408 prüft die Rechenvorrichtung 100, ob die physikalische Adresse innerhalb eines XOT-Arbeitsspeicherbereichs liegt. Wenn ja, verzweigt das Verfahren 400 vorwärts zum Block 412, der nachstehend beschrieben wird. Wenn die physikalische Adresse nicht innerhalb des XOT-Arbeitsspeicherbereichs liegt, geht das Verfahren 400 zum Block 410 weiter, in dem die Rechenvorrichtung 100 den iTLB 122 und/oder den dTLB 124 mit der Abbildung der virtuellen auf die physikalische Adresse füllt, wie normal. Nach dem Füllen des iTLB 122 und/oder des dTLB 124 geht das Verfahren 400 zum Block 422 weiter, in dem das Seitenverfehlungssteuerprogramm 210 vollendet wird. Die Rechenvorrichtung 100 kann natürlich auch beliebige zusätzliche Operationen durchführen, die typischerweise durch ein Seitenverfehlungssteuerprogramm durchgeführt werden. Nach der Vollendung kann die Rechenvorrichtung 100 die Ausführung des Codes, der die Seitenverfehlung erzeugt hat, fortsetzen, was ermöglicht, dass der Code auf Daten an der physikalischen Arbeitsspeicheradresse zugreift. Da die physikalische Adresse nicht innerhalb eines XOT-Codebereichs liegt, kann die Rechenvorrichtung 100 den Code an der physikalischen Adresse durch Zugreifen auf den iTLB 122 ausführen und die Rechenvorrichtung 100 kann auf Daten an der physikalischen Adresse durch Zugreifen auf den dTLB 124 zugreifen.
  • Mit Rückbezug auf den Block 408, wenn die physikalische Adresse innerhalb eines XOT-Bereichs liegt, geht das Verfahren 400 zum Block 412 weiter, in dem die Rechenvorrichtung 100 bestimmt, ob eine Seitengröße für die physikalische Adresse, die in der Seitentabelle gespeichert ist, einer Seitengröße für den XOT-Arbeitsspeicherbereich entspricht. Der iTLB 122 kann beispielsweise eine Seitengröße (z. B. riesige, große (4 MB) und/oder kleine (4 kB) Seitengrößen) für jede Adressenabbildung angeben. Große und kleine XOT-Seiten können in separaten XOT-Arbeitsspeicherbereichen gehalten werden und das Seitenverfehlungssteuerprogramm 210 stellt sicher, dass der XOT-Code von der Region für große Seiten nur in große Seiten im iTLB 122 abgebildet wird, dass der XOT-Code von der Region für kleine Seiten nur in kleine Seiten im iTLB 122 abgebildet wird, und so weiter.
  • Im Block 414 prüft die Rechenvorrichtung 100, ob die Seitengröße der Seitentabelle der Seitengröße des XOT-Arbeitsspeicherbereichs entspricht. Wenn ja, verzweigt das Verfahren 400 vorwärts zum Block 418, wie nachstehend beschrieben. Wenn die Seitengrößen nicht entsprechen, geht das Verfahren 400 zum Block 416 weiter, in dem die Rechenvorrichtung 100 eine Störung erzeugt, die auf eine falsche XOT-Seitengrößenabbildung hinweist. Die Rechenvorrichtung 100 kann irgendeine geeignete Fehlerbehandlungsroutine in Reaktion auf die Störung durchführen, einschließlich Beenden der Prozesse, Anhalten der Ausführung oder Durchführen von anderen Fehlerbehandlungsaufgaben.
  • Mit Rückbezug auf den Block 414, wenn die Seitengrößen entsprechen, geht das Verfahren 400 zum Block 418 weiter, in dem die Rechenvorrichtung 100 den iTLB 122 für die korrekte Seitengröße mit der Abbildung der virtuellen auf die physikalische Adresse füllt. Im Block 420 sperrt oder verhindert die Rechenvorrichtung 100 anderweitig, dass der dTLB 124 mit der Abbildung der virtuellen auf die physikalische Adresse gefüllt wird. Nach dem Ermöglichen, dass der iTLB 122 füllt, und Verhindern, dass der dTLB 124 füllt, geht das Verfahren 400 zum Block 422 weiter, in dem das Seitenverfehlungssteuerprogramm 210 vollendet wird. Die Rechenvorrichtung 100 kann natürlich auch beliebige zusätzliche Operationen durchführen, die für das Seitenverfehlungssteuerprogramm 210 geeignet sind. Nach der Vollendung kann die Rechenvorrichtung 100 die Ausführung des Codes fortsetzen, der die Seitenverfehlung erzeugt hat, wobei ermöglicht wird, dass der Code von der physikalischen Arbeitsspeicheradresse durch Zugreifen auf den iTLB 122 ausführt. Da der dTLB 124 keine Abbildung auf die physikalische Arbeitsspeicheradresse umfasst, kann der Code nicht auf Daten an dieser physikalischen Adresse durch den dTLB 124 zugreifen. Durch Aufnehmen der Adressenabbildung nur in den iTLB 122 und nicht den dTLB 124 setzt folglich die Rechenvorrichtung 100 die Nur-Ausführungs-Eigenschaft (XO-Eigenschaft) des XOT-Arbeitsspeicherbereichs durch. Zusätzlich oder alternativ kann der Prozessor 120 auch zusätzliche Prüfungen durchführen, beispielsweise Sicherstellen, dass der XOT-Arbeitsspeicherbereich nur abgebildet wird, wenn der Prozessor 120 im erwarteten Modus (z. B. 32 Bit, 64 Bit usw.) läuft, Sicherstellen, dass der Prozessor 120 auf dem erwarteten Privilegienniveau (z. B. einem erwarteten Ringniveau) läuft, Verhindern eines Systemmanagementmodus- (SMM) und/oder Vorrichtungszugriffs auf den XOT-Arbeitsspeicher über direkten Vorrichtungsarbeitsspeicherzugriff (Vorrichtungs-DMA), einschließlich Graphikprozessorzugriffs, oder andere Prozessorprüfungen.
  • Mit Bezug nun auf 5 kann bei der Verwendung die Rechenvorrichtung 100 ein Verfahren 500 zum Behandeln von Unterbrechungen oder anderen Änderungen am Steuerablauf als Verzweigungen ausführen. Das Verfahren 500 beginnt mit einem Block 502, in dem die Rechenvorrichtung 100 ein Steuerprogramm für eine Unterbrechung, eine Störung, eine Ausnahme oder eine andere Änderung am Steuerablauf als eine Verzweigung ausführt. Das Unterbrechungssteuerprogramm 224 (oder ein anderes geeignetes Steuerprogramm) kann als Hardware, Firmware und/oder Mikrocode des Prozessors 120 verkörpert sein und ist somit für die durch die Rechenvorrichtung 100 ausgeführte Software transparent.
  • Im Block 504 bestimmt die Rechenvorrichtung 100 die physikalische Arbeitsspeicheradresse für den Befehlszeiger (z. B. das RIP-, EIP- oder ein anderes Befehlszeigerregister des Prozessors 120) zum Zeitpunkt der Unterbrechung. In einigen Ausführungsformen kann die Rechenvorrichtung 100 einfach das Befehlszeigerregister lesen. Zusätzlich oder alternativ kann die Rechenvorrichtung 100 in einigen Ausführungsformen die physikalische Arbeitsspeicheradresse beispielsweise durch Bestimmen der physikalischen Adresse der letzten Adressenübersetzung, die durch den iTLB 122 durchgeführt wird, bestimmen. In einigen Ausführungsformen kann die Rechenvorrichtung 100 im Block 506 den Wert der physikalischen Adresse, der der letzten Übersetzung zugeordnet ist, die durch den iTLB 122 durchgeführt wird, von einem iTLB-Trefferregister des Prozessors 120 abrufen. Das iTLB-Trefferregister kann mit einer physikalischen Adresse, einer Rahmennummer, einer physikalischen Seitennummer oder einem anderen Teil der physikalischen Arbeitsspeicheradresse nach jedem erfolgreichen Treffer auf den iTLB 122 aktualisiert werden.
  • Mit Bezug nun auf 6 stellt ein Diagramm 600 eine potentielle Technik zum Bestimmen der physikalischen Adresse des Befehlszeigers dar. Das Diagramm 600 stellt eine virtuelle Adresse 602 mit einer Seitennummer p und einem Versatz d dar. Wie gezeigt, kann die Seitennummer p verwendet werden, um den iTLB 122 zu indizieren, um eine Rahmennummer f abzurufen. Wenn die Seitennummer p nicht im iTLB 122 gefunden wird, kann die Rechenvorrichtung 100 eine Seitenverfehlung erzeugen und das Seitenverfehlungssteuerprogramm 210 kann eine Seitentabelle 606 durchlaufen, die im Arbeitsspeicher 128 gespeichert ist, um die Rahmennummer f abzurufen, wie vorstehend weiter in Verbindung mit 4 beschrieben. Wie gezeigt, können die Rahmennummer f und der Versatz d kombiniert werden, um eine physikalische Arbeitsspeicheradresse 604 zu erzeugen, die verwendet werden kann, um einen Befehl vom physikalischen Arbeitsspeicher 128 abzurufen. Wenn die Rahmennummer f durch einen Treffer vom iTLB 122 erzeugt wird, wird die Rahmennummer f in einem iTLB-Trefferregister 608 gespeichert. Das iTLB-Trefferregister 608 ist durch Hardware, Firmware und/oder einen Mikrocode des Prozessors 120 lesbar und auf dieses kann bei einer asynchronen Änderung des Steuerablaufs durch den Prozessor 120 zugegriffen werden, um zu bestimmen, ob der unterbrochene Steuerablauf vom XOT-Arbeitsspeicher ausgeführt hat. Wenn ja, wie nachstehend weiter beschrieben, kann der Prozessor 120 den ganzen Universal- und erweiterten Registerzustand löschen oder den Prozessorzustand mit einem Integritätsprüfwert verschlüsseln und den Zustand für die spätere Fortsetzung durch Software speichern.
  • Mit Rückbezug auf 5 bestimmt die Rechenvorrichtung 100 im Block 508, ob die physikalische Adresse der letzten Übersetzung, die durch den iTLB 122 durchgeführt wurde, in einen XOT-Bereich fällt. Die Rechenvorrichtung 100 kann beispielsweise die physikalische Adresse mit einem oder mehreren XOT-Bereichsregistern vergleichen, wie vorstehend in Verbindung mit 4 beschrieben. Im Block 510 prüft die Rechenvorrichtung 100, ob die physikalische Adresse in einen XOT-Arbeitsspeicherbereich fällt. Wenn nicht, verzweigt das Verfahren 500 zum Block 522, in dem die Rechenvorrichtung 100 die Verarbeitung der Unterbrechung oder einer anderen asynchronen Änderung im Steuerablauf fortsetzt. Mit Rückbezug auf den Block 510, wenn die physikalische Adresse in einen XOT-Arbeitsspeicherbereich fällt, geht das Verfahren 500 zum Block 512 weiter.
  • Im Block 512 sichert die Rechenvorrichtung 100 den Prozessorzustand des Prozessors 120. Die Rechenvorrichtung 100 kann den Zustand löschen, verschlüsseln, in einer unzugänglichen Arbeitsspeicherregion speichern oder anderweitig ein oder mehrere Register oder einen anderen Zustand des Prozessors 120 sichern, um die Ausführung des XOT-Codepfades zu schützen. Das Sichern des Prozessorzustandes verhindert, dass der Unterbrechungscode auf den internen Zustand des XOT-Codepfades zugreift, und verhindert insbesondere, dass ein Betriebssystem oder privilegierte Malware einen XOT-Codepfad unterbricht, um seine empfindlichen Daten zu lesen. In einigen Ausführungsformen kann der Prozessor 120 im Block 514 die Prozessorregister beispielsweise durch Setzen von einem oder mehreren Registerwerten auf null löschen. In jenen Ausführungsformen sind folglich beliebige Verschlüsselungsschlüssel, Geheimnisse oder andere empfindliche Daten, die durch den XOT-Codepfad erzeugt und in den Prozessorregistern gespeichert sind, für den Unterbrechungscode nicht zugänglich. Ebenso kann in einigen Ausführungsformen der Prozessor 120 im Block 516 veränderte Einträge aus einem Cache-Arbeitsspeicher des Prozessors wie z. B. einem L1-Cache löschen. Das Löschen des Cache-Arbeitsspeichers kann verhindern, dass auf Geheimnisse, die vorübergehend im Cache-Arbeitsspeicher gespeichert werden, von anderen Prozessoren, Kernen und/oder Hardware-Threads der Rechenvorrichtung 100 zugegriffen wird.
  • In einigen Ausführungsformen kann der Prozessor 120 im Block 518 eine oder mehrere Thread-lokale Speicherstellen im Arbeitsspeicher 128 löschen. In einigen Ausführungsformen kann ein Zwischenregisterarbeitsspeicher definiert werden, der als Thread-lokaler Arbeitsspeicher verkörpert sein kann, der von Software zuverlässig verwendet werden kann, ohne sich um benachbarte Prozessorkern-, Hardware-Thread- oder andere Vorrichtungszugriffe zu kümmern. Der Thread-lokale Speicher kann beispielsweise als Bereiche des physikalischen Arbeitsspeichers 128 implementiert werden, die einem speziellen Prozessor 120 und/oder Hardware-Thread zugeordnet sind. Das Seitenverfehlungssteuerprogramm 210 (PMH) würde verhindern, dass andere Thread-lokale Daten für andere Prozessoren 120 und/oder Hardware-Threads verwendet werden und durch den dTLB 124 übersetzt werden. Außerdem kann das PMH den Thread-lokalen Speicher auf einen bekannten virtuellen Adressenbereich abbilden oder ansonsten kann der Prozessor 120 einen Befehl liefern, der die Stelle der Thread-lokalen virtuellen Speicheradressen identifiziert. Durch Löschen des Thread-lokalen Speichers, wenn ein XOT-Codepfad unterbrochen wird, kann der Thread-lokale Speicher zum vorübergehenden Halten von geheimen Daten verwendet werden. Zusätzlich oder alternativ kann der Zwischenregisterarbeitsspeicher oder ein anderer Thread-lokaler Speicher in einigen Ausführungsformen nicht gelöscht werden und kann folglich nicht zum Halten von Geheimnissen verwendet werden. Stattdessen kann der Thread-lokale Speicher nicht geheime vorübergehende Daten halten und kann zum Halten des Zustandes innerhalb einer Transaktion verwendet werden. Zusätzlich oder alternativ kann auf den Zwischenregisterarbeitsspeicher oder einen anderen Thread-lokalen Speicher in einigen Ausführungsformen unter Verwendung von neuen Befehlen oder über Nicht-Arbeitsspeicher-Adressenräume wie z. B. den Port-E/A-Adressenraum zugegriffen werden.
  • In einigen Ausführungsformen kann die Rechenvorrichtung 100 ein XOT-Geheimnis (z. B. eine einmalige Zufallszahl, einen unmittelbaren XOT-Wert oder ein anderes Geheimnis des XOT-Codepfades) unter Verwendung eines sicheren Pfades in eine Thread-lokale Arbeitsspeicherstelle schreiben. Die Rechenvorrichtung 100 kann beispielsweise das XOT-Geheimnis unter Verwendung eines speziellen Registers oder EIN-Befehls schreiben, der ausschließlich in den Thread-lokalen Arbeitsspeicher schreibt. Der XOT-Codepfad kann dann den Arbeitsspeicher 128 an einer angenommenen virtuellen Adresse in diese gleiche Stelle auslesen, um das Geheimnis zu überprüfen, und folglich dass die virtuelle Arbeitsspeicherseitenabbildung (d. h. die Adressenabbildung des dTLB 124) korrekt ist. Dadurch kann die Rechenvorrichtung 100 sicherstellen, dass der dTLB 124 mit der korrekten Arbeitsspeicherabbildung für die Dauer der Transaktion belegt wird. Diese Durchschreib- und Rücklese-Geheimtechnik kann folglich bestätigen, dass die Gültigkeit der Adressenabbildung des dTLB 124 für den Rest der Datenseite Thread-lokal ist (und folglich verhindern, dass das Betriebssystem oder eine andere Software, die die virtuelle Arbeitsspeicherabbildung steuert, das XOT-Programm unterwandert). Dieser gleiche Mechanismus ermöglicht auch die Überprüfung von auf den Arbeitsspeicher abgebildeten Vorrichtungsarbeitsspeicherstellen, wobei die virtuelle Arbeitsspeicheradresse, die auf einen Vorrichtungsregisterraum zugreift, überprüft werden kann. In diesem Beispiel kann die Rechenvorrichtung 100 das Geheimnis in die Vorrichtung mit Port-E/A-Befehlen (z. B. EIN- oder AUS-Befehlen) schreiben und dann den Arbeitsspeicher durch MMIO zurücklesen, um zu bestätigen, dass die Adressenübersetzung den auf den Arbeitsspeicher abgebildeten Registern der Vorrichtung entspricht, die dieselbe Seite belegen.
  • In einigen Ausführungsformen kann der Prozessor 120 im Block 520 seine Register und zugehörigen Metadaten verschlüsseln, wie z. B. die physikalische Befehlszeigeradresse (IP-Adresse) oder das letzte Verzweigungsziel. Der Prozessor 120 kann auch einen Integritätsprüfwert (ICV) über die Register und Metadaten berechnen. Bei der Wiederherstellung kann die Software (z. B. das OS) den verschlüsselten Registerzustand im Prozessor 120 erneut laden und die Ausführung fortsetzen. In diesen Ausführungsformen verwendet der Prozessor 120 ein Geheimnis, um den Registerzustand zu entschlüsseln, die Metadaten zu prüfen und den Integritätsprüfwert zu überprüfen, bevor fortgefahren wird. Eine potentielle Ausführungsform eines Verfahrens zum Verschlüsseln und Speichern des Registerzustandes wird nachstehend weiter in Verbindung mit 7 beschrieben.
  • Nach dem Sichern des Prozessorregisterzustandes verarbeitet die Rechenvorrichtung 100 im Block 522 die Unterbrechung oder andere Änderung am Steuerablauf. Nach dem Verarbeiten des Unterbrechungsablaufs wird das Verfahren 500 vollendet.
  • Mit Bezug nun auf 7 kann die Rechenvorrichtung 100 bei der Verwendung ein Verfahren 700 zum Verschlüsseln des Prozessorregisterzustandes ausführen. Das Verfahren 700 kann beispielsweise ausgeführt werden, um den Registerzustand des Prozessors 120 zu sichern, während eine Unterbrechung oder eine andere asynchrone Änderung des Steuerablaufs behandelt wird, wie vorstehend in Verbindung mit dem Block 520 von 5 beschrieben. Das Verfahren 700 beginnt mit einem Block 702, in dem die Rechenvorrichtung 100 bestimmt, ob in den aktuellen XOT-Codepfad korrekt eingetreten wurde. Der Prozessor 120 kann beispielsweise bestimmen, ob in den XOT-Codepfad an einem erwarteten XOT-Versatz auf der XOT-Codeseite korrekt eingetreten wurde. In einigen Ausführungsformen können letzte Verzweigungsdatensätze (LBRs) oder ein neuer Befehl des Prozessors 120, der das letzte Verzweigungsziel (Adresse) liefert, verwendet werden, um sicherzustellen, dass in den XOT-Codepfad am korrekten/erwarteten Versatz korrekt eingetreten wurde, bevor fortgefahren wird und geheime Daten verwendet werden. Zusätzlich oder alternativ, wie in 6 gezeigt, kann das iTLB-Trefferregister 608 direkt Änderungen von einer vorherigen Abbildung des iTLB 122 detektieren. Ein Verfahren zum Behandeln von detektierten Änderungen der vorherigen Abbildung des ITLB 122 wird nachstehend weiter in Verbindung mit 9 beschrieben.
  • Im Block 704 prüft die Rechenvorrichtung 100, ob in den XOT-Codepfad korrekt eingetreten wurde. Wenn nicht, wird das Verfahren 700 vollendet. Wie vorstehend in Verbindung mit 5 beschrieben, kann der Prozessorzustand des Prozessors 120 gelöscht werden, um die Integrität des XOT-Codepfades zu schützen, beispielsweise durch Setzen von einem oder mehreren Registerwerten auf null. Außerdem kann die Rechenvorrichtung 100 in einigen Ausführungsformen eine oder mehrere Störungen, Ausnahmen oder andere Angaben erzeugen, dass in den XOT-Codepfad nicht korrekt eingetreten wurde.
  • Mit Rückbezug auf den Block 704, wenn in den XOT-Codepfad korrekt eingetreten wurde, geht das Verfahren 700 zum Block 706 weiter, in dem die Rechenvorrichtung 100 den Prozessorzustand des Prozessors 120 und/oder zugehörige Metadaten verschlüsselt. Im Block 708 berechnet die Rechenvorrichtung 100 einen Integritätsprüfwert (ICV) über den Prozessorzustand und/oder Metadaten. Der Prozessor 120 kann beispielsweise die Inhalte von einem oder mehreren Registern verschlüsseln, den Befehlszeiger auf eine physikalische XOT-Adresse übersetzen und diese Informationen als Metadaten mit einem Integritätsprüfwert (z. B. einem HMAC/authentifizierten sicheren Hash) speichern, der über das Register und die Metadaten berechnet wird, um ein Verfälschen der Inhalte durch Software zu verhindern. Im Block 710 speichert die Rechenvorrichtung 100 den verschlüsselten Prozessorregisterzustand und die Metadaten im Arbeitsspeicher 128. Folglich kann der verschlüsselte Registerzustand zur Software zurückgeführt werden, wenn der XOT-Codepfad unterbrochen wird, und die Software kann die Ausführung des XOT-Codepfades zu einem späteren Zeitpunkt fortführen. Nach dem Verschlüsseln des Prozessorregisterzustandes wird das Verfahren 700 vollendet. Wie vorstehend in Verbindung mit 5 beschrieben, kann der Prozessorzustand des Prozessors 120 gelöscht werden, um die Integrität des XOT-Codepfades zu schützen, beispielsweise durch Setzen von einem oder mehreren Registerwerten auf null.
  • Mit Bezug nun auf 8 kann die Rechenvorrichtung 100 bei der Verwendung ein Verfahren 800 für die Eintrittspunktüberprüfung ausführen. Das Verfahren 800 beginnt mit einem Block 802, in dem die Rechenvorrichtung 100 die Ausführung des Verfahrens 800 in Reaktion auf eine Änderung in einem Befehlszeigeradressenregister (IP-Adressenregister) des Prozessors 120 beginnt. Eine solche Änderung kann beispielsweise in Reaktion auf eine Änderung des Steuerablaufs (z. B. einen Aufruf- oder Sprungbefehl) oder in Reaktion darauf, dass sich die Ausführung des Prozessors 120 zu einer neuen Adresse im Arbeitsspeicher 128 bewegt, auftreten. Die Operationen des Verfahrens 800 können als Hardware, Firmware und/oder Mikrocode des Prozessors 120 verkörpert sein und können folglich für die durch die Rechenvorrichtung 100 ausgeführte Software transparent sein. In einigen Ausführungsformen kann das Verfahren 800 in Verbindung mit einem Abbildungsänderungssteuerprogramm 220 und/oder einem oder mehreren iTLB-Zugriffssteuerprogrammen 222 ausgeführt werden, wie nachstehend in Verbindung mit 9-13 weiter beschrieben.
  • Im Block 804 bestimmt die Rechenvorrichtung 100, ob die neue Adresse des Befehlszeigerregisters innerhalb eines XOT-Arbeitsspeicherbereichs liegt. Die Rechenvorrichtung 100 kann beispielsweise die physikalische Adresse mit einem oder mehreren XOT-Bereichsregistern vergleichen, wie vorstehend in Verbindung mit 4 und 5 beschrieben. Mit Fortsetzung des in 6 gezeigten Beispiels kann die Rechenvorrichtung bestimmen, ob die Rahmennummer f innerhalb eines XOT-Bereichs liegt. Im Block 806 prüft die Rechenvorrichtung 100, ob die physikalische Adresse innerhalb eines XOT-Arbeitsspeicherbereichs liegt. Wenn die physikalische Adresse nicht innerhalb eines XOT-Arbeitsspeicherbereichs liegt, verzweigt das Verfahren 800 vorwärts zum Block 822, der nachstehend weiter beschrieben wird. Wenn die physikalische Adresse innerhalb eines XOT-Bereichs liegt, geht das Verfahren zum Block 808 weiter.
  • Im Block 808 bestimmt die Rechenvorrichtung 100, ob die neue Befehlszeigerregisteradresse innerhalb desselben XOT-Arbeitsspeicherbereichs wie die letzte IP-Adresse liegt. Mit anderen Worten, die Rechenvorrichtung 100 bestimmt, ob die Ausführung zu einem neuen XOT-Arbeitsspeicherbereich gesprungen ist. Die Rechenvorrichtung 100 kann beispielsweise bestimmen, ob der aktuelle XOT-Bereich einem vorher aufgezeichneten XOT-Bereich entspricht. Im Block 810 prüft die Rechenvorrichtung 100, ob die neue Befehlszeigerregisteradresse innerhalb desselben XOT-Arbeitsspeicherbereichs wie die letzte IP-Adresse liegt. Wenn ja, verzweigt das Verfahren 800 vorwärts zum Block 820, in dem die Rechenvorrichtung 100 den aktuellen XOT-Arbeitsspeicherbereich als Bereich der letzten Befehlszeigerregisteradresse aufzeichnet. Bei anschließenden Befehlszeigeradressenänderungen kann folglich der neue XOT-Arbeitsspeicherbereich mit dem aufgezeichneten XOT-Arbeitsspeicherbereich verglichen werden. Nach dem Aufzeichnen des XOT-Arbeitsspeicherbereichs geht das Verfahren 800 zum Block 818 weiter, in dem die Rechenvorrichtung 100 die Ausführung fortsetzt. Folglich kann die Rechenvorrichtung 100 die Ausführung eines XOT-Codepfades innerhalb desselben XOT-Arbeitsspeicherbereichs fortsetzen. Mit Rückbezug auf den Block 810, wenn der neue XOT-Arbeitsspeicherbereich nicht innerhalb desselben XOT-Arbeitsspeicherbereichs wie die letzte IP-Adresse liegt (oder wenn die letzte IP-Adresse nicht innerhalb eines XOT-Arbeitsspeicherbereichs lag), geht das Verfahren 800 zum Block 812 weiter.
  • Im Block 812 bestimmt die Rechenvorrichtung 100, ob die niedrigen Adressenbits des Befehlszeigers (z. B. des RIP-, EIP- oder eines anderen Befehlszeigerregisters des Prozessors 120) einem vordefinierten Eintrittspunkt entspricht. Wenn sich die Ausführung zu einer XOT-Bereichsabbildung bewegt, erwartet die Rechenvorrichtung 100, dass in den XOT-Bereich an einem speziellen Eintrittspunkt oder Versatz eingetreten wird. Wie in 6 gezeigt, können beispielsweise die Bits des Versatzes d der Adresse 604 als 16 Bytes vom neuen Start einer Seite erwartet werden, sobald die Rahmennummer f der physikalischen Adresse 604 sich auf einen neuen Wert innerhalb des XOT-Bereichs ändert. Im Block 814 prüft die Rechenvorrichtung 100, ob die niedrigen Adressenbits dem vordefinierten Eintrittspunkt entsprechen. Wenn ja, verzweigt das Verfahren 800 zum Block 820, in dem die Rechenvorrichtung 100 die Ausführung fortsetzt, wie vorstehend beschrieben. Folglich ermöglicht die Rechenvorrichtung 100 die Ausführung eines XOT-Codepfades, der an einem vordefinierten Versatz beginnt.
  • Mit Rückbezug auf den Block 814, wenn die niedrigen Adressenbits nicht dem vordefinierten Eintrittspunkt entsprechen, geht das Verfahren 800 zum Block 816 weiter, in dem der Prozessor 120 eine Störung erzeugt. Das Erzeugen einer Störung, wenn die Ausführung nicht am vordefinierten Eintrittspunkt startet, erzwingt folglich, dass ein XOT-Codepfad die Ausführung am Eintrittspunkt (z. B. 16 Bytes in die Seite) startet. Ein Gegner kann die Ausführung einer XOT-Seite nicht an irgendeinem anderen Versatz beginnen, was den XOT-Codepfad weiter schützen kann. Nach dem Erzeugen der Störung kann in einigen Ausführungsformen die Ausführung des Verfahrens 800 mit dem Block 818 fortfahren, in dem die Rechenvorrichtung 100 die Ausführung fortsetzt. Die Rechenvorrichtung 100 kann beispielsweise eine Fehlersteuerprogrammroutine oder andere Prozedur in Reaktion auf die Störung ausführen.
  • Mit Rückbezug auf den Block 806, wenn die neue Befehlszeigerregisteradresse nicht innerhalb eines XOT-Arbeitsspeicherbereichs liegt, verzweigt das Verfahren 800 vorwärts zum Block 822, in dem die Rechenvorrichtung 100 den aufgezeichneten XOT-Arbeitsspeicherbereich löscht. Bei der nächsten IP-Adressenänderung, die in eine XOT-Region eintritt, stellt folglich die Rechenvorrichtung 100 sicher, dass die Ausführung an einem vordefinierten Eintrittspunkt beginnt. Nach dem Löschen des aufgezeichneten XOT-Arbeitsspeicherbereichs geht das Verfahren 100 zum Block 818 weiter, in dem die Rechenvorrichtung 100 die Ausführung fortführt. Nach dem Erzeugen einer Störung und/oder Fortsetzen der Ausführung wird das Verfahren 800 vollendet.
  • Mit Bezug nun auf 9 kann die Rechenvorrichtung 100 bei der Verwendung ein Verfahren 900 für ein iTLB-Abbildungsänderungssteuerprogramm 220 ausführen. Das Verfahren 900 beginnt mit einem Block 902, in dem die Rechenvorrichtung 100 das Abbildungsänderungssteuerprogramm 220 des Prozessors 120 ausführt. Die Rechenvorrichtung 100 kann das Abbildungsänderungssteuerprogramm 220 in Reaktion auf eine Änderung des Werts, der im iTLB-Trefferregister 608 gespeichert ist, ausführen. Eine solche Änderung kann beispielsweise in Reaktion auf eine Änderung des Steuerablaufs (z. B. einen Aufruf- oder Sprungbefehl) oder in Reaktion darauf, dass die Ausführung sich zu einer neuen physikalischen Seite oder einer anderen Region im Arbeitsspeicher 128 bewegt, auftreten. Das Abbildungsänderungssteuerprogramm 220 kann als Hardware, Firmware und/oder Mikrocode des Prozessors 120 verkörpert sein und ist folglich für die durch die Rechenvorrichtung 100 ausgeführte Software transparent.
  • Im Block 904 bestimmt die Rechenvorrichtung 100 die physikalische Adresse für die letzte Übersetzung des iTLB 122. Die Rechenvorrichtung 100 kann eine ganze physikalische Adresse oder einen Teil der physikalischen Adresse wie z. B. eine physikalische Seitennummer, Rahmennummer, Segmentnummer oder einen anderen Teil der Adresse bestimmen. Wie in 6 gezeigt, kann die Rechenvorrichtung 100 beispielsweise das iTLB-Trefferregister 608 abfragen, um die Rahmennummer f der letzten Übersetzung des iTLB 122 zu bestimmen.
  • Im Block 906 bestimmt die Rechenvorrichtung 100, ob die physikalische Adresse der letzten Übersetzung des iTLB 122 innerhalb eines XOT-Arbeitsspeicherbereichs liegt. Die Rechenvorrichtung 100 kann beispielsweise die physikalische Adresse mit einem oder mehreren XOT-Bereichsregistern vergleichen, wie vorstehend in Verbindung mit 4 und 5 beschrieben. Mit Fortsetzung des in 6 gezeigten Beispiels kann die Rechenvorrichtung bestimmen, ob die Rahmennummer f innerhalb eines XOT-Bereichs liegt. Im Block 908 prüft die Rechenvorrichtung 100, ob die physikalische Adresse innerhalb eines XOT-Arbeitsspeicherbereichs liegt. Wenn die physikalische Adresse nicht innerhalb eines XOT-Arbeitsspeicherbereichs liegt, verzweigt das Verfahren 900 vorwärts zum Block 916, in dem die Rechenvorrichtung 100 die Ausführung fortsetzt. Wenn die physikalische Adresse innerhalb eines XOT-Bereichs liegt, geht das Verfahren 900 zum Block 910 weiter.
  • Im Block 910 bestimmt die Rechenvorrichtung 100, ob die niedrigen Adressenbits des Befehlszeigers (z. B. des RIP-, EIP- oder eines anderen Befehlszeigerregisters des Prozessors 120) einem vordefinierten Eintrittspunkt entsprechen. Wenn die Ausführung sich zu einer XOT-Bereichsabbildung bewegt, erwartet die Rechenvorrichtung 100, dass in den XOT-Bereich an einem speziellen Eintrittspunkt oder Versatz eingetreten wird. Wie in 6 gezeigt, können beispielsweise die Bits des Versatzes d der Adresse 604 als 16 Bytes vom Start einer Seite erwartet werden, sobald die Rahmennummer f der physikalischen Adresse 604 sich auf einen neuen Wert innerhalb des XOT-Bereichs ändert.
  • Im Block 912 prüft die Rechenvorrichtung 100, ob die niedrigen Adressenbits dem vordefinierten Eintrittspunkt entsprechen. Wenn ja, verzweigt das Verfahren 900 zum Block 916, in dem die Rechenvorrichtung 100 die Ausführung fortführt. Folglich ermöglicht die Rechenvorrichtung 100 die Ausführung eines XOT-Codepfades, der an einem vordefinierten Versatz beginnt. Das iTLB-Abbildungsänderungssteuerprogramm 220 wird nicht ausgeführt bis zur nächsten Änderung am ITLB-Trefferregister 608, und folglich kann der Rest der Arbeitsspeicherseite die Ausführung gemäß dem durch das XOT-Programm definierten Steuerablauf innerhalb der Seite fortsetzen (solange es an derselben Seite ausführt). Wie in 6 gezeigt, wenn die Rahmennummer f der physikalischen Adresse 604 sich beispielsweise seit dem letzten Treffer des iTLB 122 nicht ändert, dann ist keine Eintrittspunktprüfung an den Bits des Versatzes d erforderlich.
  • Mit Rückbezug auf den Block 912, wenn die niedrigen Adressenbits nicht dem vordefinierten Eintrittspunkt entsprechen, geht das Verfahren 900 zum Block 914 weiter, in dem der Prozessor 120 eine Störung erzeugt. Das Erzeugen einer Störung, wenn die Ausführung nicht am vordefinierten Eintrittspunkt startet, erzwingt folglich, dass ein XOT-Codepfad die Ausführung am Eintrittspunkt (z. B. 16 Bytes in die Seite) startet. Ein Gegner kann die Ausführung einer XOT-Seite nicht an irgendeinem anderen Versatz beginnen, was den XOT-Codepfad weiter schützen kann. Nach dem Erzeugen der Störung kann in einigen Ausführungsformen die Ausführung des Verfahrens 900 mit dem Block 916 fortfahren, in dem die Rechenvorrichtung 100 die Ausführung fortsetzt. Die Rechenvorrichtung 100 kann beispielsweise eine Fehlersteuerprogrammroutine oder andere Prozedur in Reaktion auf die Störung ausführen. Nach dem Erzeugen einer Störung und/oder Fortsetzen der Ausführung wird das Verfahren 900 vollendet.
  • Mit Bezug nun auf 10 kann die Rechenvorrichtung 100 bei der Verwendung ein Verfahren 1000 für ein iTLB-Treffer- oder iTLB-Verfehlungssteuerprogramm 222 ausführen. Das Verfahren 1000 beginnt mit einem Block 1002, in dem die Rechenvorrichtung 100 ein iTLB-Treffer- oder iTLB-Verfehlungssteuerprogramm 222 des Prozessors 120 ausführt. Die Rechenvorrichtung 100 führt das iTLB-Treffer- oder iTLB-Verfehlungssteuerprogramm 222 in Reaktion auf einen Versuch aus, auf eine virtuelle Arbeitsspeicheradresse durch den iTLB 122 zuzugreifen. Das iTLB-Treffer- oder iTLB-Verfehlungssteuerprogramm 222 wird sowohl ausgeführt, wenn die virtuelle Arbeitsspeicheradresse im iTLB 122 enthalten ist (ein Treffer), als auch wenn die virtuelle Arbeitsspeicheradresse nicht im iTLB 122 enthalten ist (ein Verfehlen). Das iTLB-Treffer- oder iTLB-Verfehlungssteuerprogramm 222 kann als Hardware, Firmware und/oder Mikrocode des Prozessors 120 verkörpert sein und ist folglich für die durch die Rechenvorrichtung 100 ausgeführte Software transparent.
  • Im Block 1004 bestimmt die Rechenvorrichtung 100, ob ein vorheriger Befehl durch den Prozessor 120 aus dem Inneren eines Nur-Ausführungs-Transaktionsarbeitsspeicherbereichs (XOT-Arbeitsspeicherbereichs) ausgeführt wurde. Die Rechenvorrichtung 100 kann irgendeine geeignete Technik verwenden, um zu bestimmen, ob der vorherige Befehl von einem XOT-Arbeitsspeicherbereich ausgeführt wurde. In einigen Ausführungsformen prüft die Rechenvorrichtung 100 im Block 1006 einen aufgezeichneten XOT-Index, der dem iTLB 122 zugeordnet ist. Wie nachstehend in Verbindung mit 11 weiter beschrieben, wenn eine Abbildung einer virtuellen auf eine physikalische Adresse innerhalb eines XOT-Bereichs zum iTLB 122 hinzugefügt wird, kann der Prozessor 120 den Index des neu hinzugefügten Eintrags im ITLB 122 als XOT-Index aufzeichnen. Die Rechenvorrichtung 100 kann prüfen, ob der Eintrag im iTLB 122 am XOT-Index gültig ist (z. B. nicht exmittiert wurde), um zu bestimmen, ob der letzte Befehl aus dem Inneren eines XOT-Bereichs ausgeführt wurde. Im Block 1008 prüft die Rechenvorrichtung 100, ob der vorherige Befehl durch den Prozessor 120 aus dem Inneren eines XOT-Arbeitsspeicherbereichs ausgeführt wurde. Wenn nicht, verzweigt das Verfahren 1000 vorwärts zum Block 1018, um die Verarbeitung des iTLB-Treffers oder der iTLB-Verfehlung fortzusetzen, wie nachstehend weiter beschrieben. Wenn der vorherige Befehl aus einem XOT-Arbeitsspeicherbereich ausgeführt wurde, geht das Verfahren 1000 zum Block 1010 weiter.
  • Im Block 1010 bestimmt die Rechenvorrichtung 100, ob ein iTLB-Verfehlen oder ein iTLB-Treffer bearbeitet wird. Wenn ein iTLB-Treffer bearbeitet wird, verzweigt das Verfahren 1000 zum Block 1014, der nachstehend beschrieben wird. Wenn ein iTLB-Verfehlen bearbeitet wird, verzweigt das Verfahren 1000 zum Block 1012. Im Block 1012 exmittiert die Rechenvorrichtung 100 den Eintrag im iTLB 122 am aufgezeichneten XOT-Index. Folglich exmittiert die Rechenvorrichtung 100 den Eintrag im iTLB 122 entsprechend dem XOT-Bereich des vorher ausgeführten Befehls, was verursacht, dass zukünftige Versuche, auf diesen XOT-Bereich zuzugreifen, ein iTLB-Verfehlen verursachen. Nach dem Exmittieren des Eintrags des iTLB 122 geht das Verfahren 1000 zum Block 1018 weiter, um die Verarbeitung des iTLB-Verfehlens fortzusetzen, wie nachstehend weiter beschrieben.
  • Mit Rückbezug auf den Block 1010, wenn ein iTLB-Treffer bearbeitet wird, verzweigt das Verfahren 1000 zum Block 1014, in dem die Rechenvorrichtung 100 bestimmt, ob der Index im iTLB 122 des iTLB-Treffers dem aufgezeichneten XOT-Index entspricht. Mit anderen Worten, die Rechenvorrichtung 100 bestimmt, ob der Befehl, der gegenwärtig ausgeführt wird, vom gleichen XOT-Bereich wie der vorher ausgeführte Befehl stammt. Im Block 1016 prüft die Rechenvorrichtung 100, ob der Index des iTLB-Treffers dem aufgezeichneten XOT-Index entspricht. Wenn ja, geht das Verfahren 1000 zum Block 1018 weiter, um die Verarbeitung des iTLB-Treffers fortzusetzen, wie nachstehend weiter beschrieben. Wenn der Index des iTLB-Treffers nicht dem aufgezeichneten XOT-Index entspricht, verzweigt das Verfahren 1000 zum Block 1012, in dem die Rechenvorrichtung 100 den iTLB-Eintrag für den aufgezeichneten XOT-Index exmittiert. Nachdem die Rechenvorrichtung 100 die Ausführung eines neuen XOT-Bereichs beginnt, verursachen folglich irgendwelche Versuche, auf den vorherigen XOT-Bereich zuzugreifen, ein iTLB-Verfehlen. Nach dem Exmittieren des Eintrags des iTLB 122 geht das Verfahren 1000 zum Block 1018 weiter, um die Verarbeitung des iTLB-Treffers fortzusetzen.
  • Im Block 1018 führt die Rechenvorrichtung 100 die Verarbeitung des iTLB-Treffers oder der iTLB-Verfehlung fort. Die Rechenvorrichtung 100 kann beispielsweise den iTLB 122 füllen, auf einen Eintrag einer Abbildung der virtuellen auf die physikalische Adresse im iTLB 122 zugreifen oder andere Operationen durchführen, die für einen Treffer des iTLB 122 oder ein Verfehlen des iTLB 122 geeignet sind. Insbesondere in Reaktion auf ein Verfehlen des iTLB 122 kann die Rechenvorrichtung 100 überprüfen, dass in irgendeinem XOT-Bereich, der zum iTLB 122 hinzugefügt ist, an einem gültigen Eintrittspunkt eingetreten wird. Eine potentielle Ausführungsform eines Verfahren, um zu überprüfen, dass in den XOT-Bereich an einem gültigen Eintrittspunkt eingetreten wird, wird nachstehend in Verbindung mit 11 beschrieben. Im Block 1020 wird das iTLB-Treffer- oder iTLB-Verfehlungssteuerprogramm 222 vollendet. Die Rechenvorrichtung 100 kann natürlich auch beliebige zusätzliche Operationen durchführen, die für ein iTLB-Treffer- oder iTLB-Verfehlungssteuerprogramm 222 geeignet sind, einschließlich des Durchsetzens der Nur-Ausführungs-Eigenschaft der XOT-Arbeitsspeicherbereiche.
  • Mit Bezug nun auf 11 kann die Rechenvorrichtung 100 bei der Verwendung ein Verfahren 1100 zum Verarbeiten eines iTLB-Verfehlens ausführen. Das Verfahren 1100 kann beispielsweise durch das iTLB-Treffer- oder iTLB-Verfehlungssteuerprogramm 222 des Prozessors 120 in Verbindung mit dem Block 1018 von 10 ausgeführt werden. Das Verfahren 1100 beginnt mit einem Block 1102, in dem die Rechenvorrichtung 100 bestimmt, ob die physikalische Adresse der Abbildung der virtuellen auf die physikalische Adresse in einen XOT-Arbeitsspeicherbereich fällt. Die Rechenvorrichtung 100 kann beispielsweise die physikalische Adresse mit einem oder mehreren XOT-Bereichsregistern vergleichen, die durch vertrauenswürdige Firmware und/oder durch vertrauenswürdige XOT-Codepfade gesetzt wurden, wie vorstehend in Verbindung mit 3 beschrieben. Die Rechenvorrichtung 100 kann die Abbildung der virtuellen auf die physikalische Adresse durch Durchlaufen von einer oder mehreren Seitentabellen bestimmen, wie vorstehend in Verbindung mit dem Block 404 von 4 beschrieben. Im Block 1104 prüft die Rechenvorrichtung 100, ob die physikalische Adresse innerhalb eines XOT-Arbeitsspeicherbereichs liegt. Wenn nicht, verzweigt das Verfahren 1100 vorwärts zum Block 1114, der nachstehend beschrieben wird. Wenn die physikalische Adresse innerhalb eines XOT-Arbeitsspeicherbereichs liegt, geht das Verfahren 1100 zum Block 1106 weiter.
  • Im Block 1106 bestimmt die Rechenvorrichtung 100, ob die physikalische Adresse an einem autorisierten Eintrittspunkt innerhalb des XOT-Bereichs liegt. Die Rechenvorrichtung 100 kann beispielsweise bestimmen, ob die niedrigen Adressenbits des Befehlszeigers (z. B. des RIP-, EIP- oder eines anderen Befehlszeigerregisters des Prozessors 120) einem vordefinierten Eintrittspunkt oder Versatz entsprechen. Im Block 1108 prüft die Rechenvorrichtung 100, ob die physikalische Adresse an einem vordefinierten Eintrittspunkt liegt. Wenn nicht, verzweigt das Verfahren 1100 zum Block 1110, in dem der Prozessor 120 eine Störung erzeugt. Das Erzeugen einer Störung, wenn der Befehlszeiger nicht am vordefinierten Eintrittspunkt startet, erzwingt folglich, dass ein XOT-Codepfad die Ausführung am Eintrittspunkt startet (z. B. 16 Bytes in die Seite). Ein Gegner kann die Ausführung einer XOT-Seite nicht an irgendeinem anderen Versatz beginnen, was den XOT-Codepfad weiter schützen kann.
  • Mit Rückbezug auf den Block 1108, wenn die physikalische Adresse an einem vordefinierten Eintrittspunkt liegt, geht das Verfahren 1100 zum Block 1112 weiter, in dem die Rechenvorrichtung 100 den Index im iTLB 122 aufzeichnet, an dem eine neue Abbildung der virtuellen auf die physikalische Adresse eingefügt wird. Wie vorstehend in Verbindung mit 10 beschrieben, kann der XOT-Index verwendet werden, um zu bestimmen, ob ein vorheriger Befehl von einem XOT-Bereich ausgeführt hat.
  • Im Block 1114 füllt die Rechenvorrichtung 100 den iTLB 122 mit der Abbildung der virtuellen auf die physikalische Adresse. Insbesondere, wie vorstehend in Verbindung mit dem Block 1112 beschrieben, kann die Rechenvorrichtung 100 für einen XOT-Bereich einen neuen Eintrag mit der Abbildung der virtuellen auf die physikalische Adresse in den iTLB 122 am aufgezeichneten XOT-Index einfügen. Nach dem Füllen des iTLB 122 kann die Rechenvorrichtung folglich Befehle von der zugehörigen physikalischen Adresse ausführen. Nach dem Füllen des iTLB 122 wird das Verfahren 1100 vollendet.
  • Mit Bezug nun auf 12 kann die Rechenvorrichtung 100 bei der Verwendung ein Verfahren 1200 für ein iTLB-Verfehlungssteuerprogramm 222 ausführen. Das Verfahren 1200 kann durch eine Rechenvorrichtung 100 ausgeführt werden, die auch ein iTLB-Treffersteuerprogramm 222 ausführt, wie nachstehend in Verbindung mit 13 beschrieben. Das Verfahren 1200 beginnt mit einem Block 1202, in dem die Rechenvorrichtung 100 ein iTLB-Verfehlungssteuerprogramm 222 des Prozessors 120 ausführt. Die Rechenvorrichtung 100 führt das iTLB-Verfehlungssteuerprogramm 222 in Reaktion auf einen Versuch aus, auf eine virtuelle Arbeitsspeicheradresse zuzugreifen, die nicht im iTLB 122 enthalten ist (ein Verfehlen). Das iTLB-Verfehlungssteuerprogramm 222 kann als Hardware, Firmware und/oder Mikrocode des Prozessors 120 verkörpert sein und ist folglich für die durch die Rechenvorrichtung 100 ausgeführte Software transparent.
  • Im Block 1204 bestimmt die Rechenvorrichtung 100, ob die physikalische Adresse der Abbildung der virtuellen auf die physikalische Adresse in einen XOT-Arbeitsspeicherbereich fällt. Die Rechenvorrichtung 100 kann beispielsweise die physikalische Adresse mit einem oder mehreren XOT-Bereichsregistern vergleichen, die durch vertrauenswürdige Firmware und/oder durch vertrauenswürdige XOT-Codepfade gesetzt wurden, wie vorstehend in Verbindung mit 3 beschrieben. Die Rechenvorrichtung 100 kann die Abbildung der virtuellen auf die physikalische Adresse durch Durchlaufen von einer oder mehreren Seitentabellen bestimmen, wie vorstehend in Verbindung mit dem Block 404 von 4 beschrieben. Im Block 1206 prüft die Rechenvorrichtung 100, ob die physikalische Adresse innerhalb eines XOT-Arbeitsspeicherbereichs liegt. Wenn nicht, verzweigt das Verfahren 1200 vorwärts zum Block 1216, der nachstehend beschrieben wird. Wenn die physikalische Adresse innerhalb eines XOT-Arbeitsspeicherbereichs liegt, geht das Verfahren 1200 zum Block 1208 weiter.
  • Im Block 1208 bestimmt die Rechenvorrichtung 100, ob die physikalische Adresse an einem autorisierten Eintrittspunkt innerhalb des XOT-Bereichs liegt. Die Rechenvorrichtung 100 kann beispielsweise bestimmen, ob die niedrigen Adressenbits des Befehlszeigers (z. B. des RIP-, EIP- oder eines anderen Befehlszeigerregisters des Prozessors 120) einem vordefinierten Eintrittspunkt oder Versatz entsprechen. Im Block 1210 prüft die Rechenvorrichtung 100, ob die physikalische Adresse an einem vordefinierten Eintrittspunkt liegt. Wenn nicht, verzweigt das Verfahren 1200 zum Block 1212, in dem der Prozessor 120 eine Störung erzeugt. Das Erzeugen einer Störung, wenn der Befehlszeiger nicht am vordefinierten Eintrittspunkt startet, erzwingt folglich, dass ein XOT-Codepfad die Ausführung am Eintrittspunkt startet (z. B. 16 Bytes in die Seite). Ein Gegner kann die Ausführung einer XOT-Seite nicht an irgendeinem anderen Versatz beginnen, was den XOT-Codepfad weiter schützen kann.
  • Mit Rückbezug auf den Block 1210, wenn die physikalische Adresse an einem vordefinierten Eintrittspunkt liegt, geht das Verfahren 1200 zum Block 1214 weiter, in dem die Rechenvorrichtung 100 ein XOT-Bit im Eintrag des iTLB 122 setzt, der für die aktuelle Abbildung von virtuell auf physikalisch eingefügt werden soll. Wie nachstehend weiter beschrieben, kann das XOT-Bit verwendet werden, um zu bestimmen, ob ein Eintrag des iTLB 122 einem XOT-Arbeitsspeicherbereich zugeordnet ist.
  • Im Block 1216 füllt die Rechenvorrichtung 100 den iTLB 122 mit der Abbildung der virtuellen auf die physikalische Adresse. Nach dem Füllen des iTLB 122 kann die Rechenvorrichtung 100 folglich Befehle von der zugehörigen physikalischen Adresse ausführen. Im Block 1218 zeichnet die Rechenvorrichtung 100 den Index der eingefügten Abbildung von virtuell auf physikalisch als zuletzt verwendeten iTLB-Eintrag auf. Die Rechenvorrichtung 100 kann den Index beispielsweise in einem oder mehreren modellspezifischen Registern oder anderen Speicherstellen des Prozessors 120 aufzeichnen. Im Block 1220 wird das iTLB-Verfehlungssteuerprogramm 222 vollendet. Die Rechenvorrichtung 100 kann die Ausführung des Codes unter Verwendung der Abbildung von virtuell auf physikalisch, die neu zum iTLB 122 hinzugefügt wird, fortsetzen.
  • Mit Bezug nun auf 13 kann die Rechenvorrichtung 100 bei der Verwendung ein Verfahren 1300 für ein iTLB-Treffersteuerprogramm 222 ausführen. Das Verfahren 1300 kann durch eine Rechenvorrichtung 100 ausgeführt werden, die auch ein iTLB-Verfehlungssteuerprogramm 222 ausführt, wie vorstehend in Verbindung mit 12 beschrieben. Das Verfahren 1300 beginnt mit einem Block 1302, in dem die Rechenvorrichtung 100 ein iTLB-Treffersteuerprogramm 222 des Prozessors 120 ausführt. Die Rechenvorrichtung 100 führt das iTLB-Treffersteuerprogramm 222 in Reaktion auf einen Versuch aus, auf eine virtuelle Arbeitsspeicheradresse zuzugreifen, die im iTLB 122 enthalten ist (ein Treffer). Das iTLB-Treffersteuerprogramm 222 kann als Hardware, Firmware und/oder Mikrocode des Prozessors 120 verkörpert sein und ist folglich für die durch die Rechenvorrichtung 100 ausgeführte Software transparent.
  • Im Block 1304 bestimmt die Rechenvorrichtung 100, ob der Index des Treffers des iTLB 122 dem Index des zuletzt verwendeten iTLB-Eintrags entspricht. Wie vorstehend in Verbindung mit 12 beschrieben, kann die Rechenvorrichtung 100 den Index des zuletzt verwendeten iTLB-Eintrags aufzeichnen, wenn der iTLB 122 in Reaktion auf ein iTLB-Verfehlen gefüllt wird. Die Rechenvorrichtung 100 kann den Index beispielsweise in einem oder mehreren modellspezifischen Registern oder anderen Speicherstellen des Prozessors 120 aufzeichnen. Im Block 1306 prüft die Rechenvorrichtung 100, ob der Index des iTLB-Treffers dem Index des zuletzt verwendeten iTLB-Eintrags entspricht. Wenn ja, verzweigt das Verfahren 1300 vorwärts zum Block 1318, der nachstehend beschrieben wird. Wenn der Index des iTLB-Treffers nicht dem Index des zuletzt verwendeten iTLB-Eintrags entspricht, geht das Verfahren 1300 zum Block 1308 weiter.
  • Im Block 1308 bestimmt die Rechenvorrichtung 100, ob das XOT-Bit im Eintrag des iTLB 122 des iTLB-Treffers gesetzt ist. Mit anderen Worten, die Rechenvorrichtung 100 bestimmt, ob der iTLB-Eintrag des iTLB-Treffers auf einen XOT-Arbeitsspeicherbereich Bezug nimmt. Im Block 1310 prüft die Rechenvorrichtung 100, ob der iTLB-Treffer ein XOT-Eintrag ist (das heißt ob das XOT-Bit für den iTLB-Eintrag des iTLB-Treffers gesetzt ist). Wenn nicht, verzweigt das Verfahren 1300 vorwärts zum Block 1318, der nachstehend beschrieben wird. Wenn der iTLB-Treffer auf einen XOT-Eintrag im iTLB 122 Bezug nimmt, geht das Verfahren 1300 zum Block 1312 weiter.
  • Im Block 1312 bestimmt die Berechnung, ob die physikalische Adresse an einem autorisierten Eintrittspunkt innerhalb des XOT-Bereichs liegt. Die Rechenvorrichtung 100 kann beispielsweise bestimmen, ob die niedrigen Adressenbits des Befehlszeigers (z. B. des RIP-, EIP- oder eines anderen Befehlszeigerregisters des Prozessors 120) einem vordefinierten Eintrittspunkt oder Versatz entsprechen. Im Block 1314 prüft die Rechenvorrichtung 100, ob sich die physikalische Adresse an einem vordefinierten Eintrittspunkt befindet. Wenn nicht, verzweigt das Verfahren 1300 zum Block 1316, in dem der Prozessor 120 eine Störung erzeugt. Das Erzeugen einer Störung, wenn der Befehlszeiger nicht am vordefinierten Eintrittspunkt startet, erzwingt folglich, dass ein XOT-Codepfad die Ausführung am Eintrittspunkt (z. B. 16 Bytes in die Seite) startet. Ein Gegner kann die Ausführung einer XOT-Seite nicht an irgendeinem anderen Versatz beginnen, was den XOT-Codepfad weiter schützen kann. Mit Rückbezug auf den Block 1314, wenn die physikalische Adresse an einem vordefinierten Eintrittspunkt liegt, geht das Verfahren 1300 zum Block 1318 weiter.
  • Im Block 1318 aktualisiert die Rechenvorrichtung 100 den zuletzt verwendeten iTLB-Eintrag mit einem Index des aktuellen iTLB-Treffers. Nach dem Aktualisieren des zuletzt verwendeten iTLB-Eintrags geht das Verfahren 1300 zum Block 1320 weiter, in dem das iTLB-Treffersteuerprogramm 222 vollendet wird. Die Rechenvorrichtung 100 kann die Ausführung des Codes unter Verwendung der Abbildung von virtuell auf physikalisch des iTLB-Treffers fortführen.
  • Mit Bezug nun auf 14 kann die Rechenvorrichtung 100 bei der Verwendung ein Verfahren 1400 für eine Nur-Ausführungs-Transaktionsarbeitsspeicherausführung auf Softwarebasis ausführen. Das Verfahren 1400 kann durch eine Software-Sicherheitsüberwachungseinrichtung der Rechenvorrichtung 100, die als Teil oder alles eines Betriebssystems verkörpert sein kann, eine Überwachungseinrichtung einer virtuellen Maschine oder eine andere Aufsichts-Software der Rechenvorrichtung 100 ausgeführt werden. Das Verfahren 1400 beginnt mit einem Block 1402, in dem die Rechenvorrichtung 100 eine Region eines Codes als Nur-Ausführung markiert. Die Region des Codes umfasst einen oder mehrere geheime Werte sowie einen zugehörigen Code, um die Geheimnisse zu verarbeiten. Eine Sicherheitsüberwachungseinrichtung unter Verwendung von Intel IA-32 Segmentierung kann beispielsweise irgendein Codesegment, das die Coderegion abdeckt, als Nur-Ausführung markieren und die Coderegion aus allen Datensegmenten ausschließen.
  • Im Block 1404 markiert die Rechenvorrichtung 100 die Nur-Ausführungs-Coderegion als Transaktionsregion. Die Rechenvorrichtung 100 kann irgendeine geeignete Technik verwenden, um die Coderegion als transaktionsmäßig zu markieren. Im Block 1406 kann die Rechenvorrichtung 100 einen oder mehrere Bereiche des Arbeitsspeichers 128 als Zwischenregisterarbeitsspeicher bezeichnen. Wie vorstehend beschrieben, kann der Zwischenregisterarbeitsspeicher als Thread-lokaler Arbeitsspeicher verkörpert sein, der durch Software zuverlässig verwendet werden kann, ohne sich um benachbarte Prozessorkern-, Hardware-Thread- oder andere Vorrichtungszugriffe zu kümmern. Wie nachstehend beschrieben, kann durch Löschen des Thread-lokalen Speichers, wenn ein XOT-Codepfad unterbrochen wird, der Thread-lokale Speicher für das vorübergehende Halten von geheimen Daten verwendet werden. Im Block 1408 bezeichnet die Rechenvorrichtung 100 eine Abbruchsteuerprogrammadresse. Wie nachstehend beschrieben, kann das Abbruchsteuerprogramm in Reaktion auf eine Unterbrechung, Ausnahme oder eine andere asynchrone Änderung im Steuerablauf aufgerufen werden. Nach dem Bezeichnen der Abbruchsteuerprogrammadresse kann die Initialisierung vollendet werden und die Rechenvorrichtung 100 kann die Transaktionsausführung der XOT-Codebereiche beginnen. Es sollte natürlich selbstverständlich sein, dass die Initialisierungsfunktionen der Blöcke 1402, 1404, 1406, 1408 zu anderen Zeiten und in irgendeiner geeigneten Reihenfolge durchgeführt werden können.
  • Im Block 1410 beginnt die Rechenvorrichtung 100 die Transaktionsausführung. Die Rechenvorrichtung 100 kann in einer Transaktion auf Softwarebasis ohne Aufrufen einer Hardware-Transaktionsarbeitsspeicherunterstützung des Prozessors 120 ausführen. Im Block 1412 springt die Rechenvorrichtung 100 zum Beginn des XOT-Codebereichs.
  • Im Block 1414 lädt die Rechenvorrichtung 100 ein oder mehrere Geheimnisse vom XOT-Codebereich in Register und/oder den Zwischenregisterarbeitsspeicher. Die Rechenvorrichtung 100 kann beispielsweise einen oder mehrere Befehle ausführen, die die geheimen Werte als unmittelbare Werte umfassen. Die Rechenvorrichtung 100 kann auch einen zugehörigen Steuerablauf und Modusprüfungen durchführen. Die Rechenvorrichtung 100 kann beispielsweise ein zufälliges Geheimnis in den dynamischen Speicher unter Verwendung eines MOV-Befehls laden, der beim Begehen der Transaktion geprüft wird, um zu überprüfen, dass der XOT-Bereich nicht an einer anderen Startadresse aufgerufen wurde, oder ansonsten mit Steuerablaufgefahren zurechtzukommen.
  • Im Block 1416 führt die Rechenvorrichtung 100 die Verarbeitung unter Verwendung der geladenen Geheimnisse durch. Die Rechenvorrichtung 100 kann beispielsweise den XOT-Codepfad ausführen, um die Geheimnisse zu verarbeiten. Im Block 1418 begeht die Rechenvorrichtung 100 die Transaktion. Während der Ausführung sind Zwischenwerte, die durch die Transaktion verarbeitet werden (z. B. Geheimnisse), für andere Threads nicht sichtbar. Das Durchführen der Transaktion kann die Ergebnisse der Transaktion für andere Threads sichtbar machen und kann ermöglichen, dass die Transaktion einen nicht autorisierten Zugriff auf Geheimnisse verhindert.
  • Wie in 14 gezeigt, wenn eine Unterbrechung, eine Störung, eine Ausnahme oder eine andere asynchrone Änderung im Steuerablauf auftritt, kann die Ausführung des Verfahrens 1400 zum Block 1420 springen, in dem die Rechenvorrichtung 100 ein Steuerprogramm für die Unterbrechung, Störung, Ausnahme oder andere asynchrone Änderung am Steuerablauf ausführt. Das Unterbrechungssteuerprogramm des Verfahrens 1400 kann als Teil der Sicherheitsüberwachungseinrichtung der Rechenvorrichtung 100 verkörpert sein. Im Block 1422 bestimmt die Rechenvorrichtung 100, ob der unterbrochene Code innerhalb eines XOT-Bereichs ausgeführt hat. Wenn nicht, verzweigt das Verfahren 1400 vorwärts zum Block 1428, in dem die Rechenvorrichtung 100 die Verarbeitung der Unterbrechung oder anderen asynchronen Änderung im Steuerablauf fortsetzt. Wenn der unterbrochene Code innerhalb eines XOT-Bereichs ausgeführt hat, geht das Verfahren 1400 zum Block 1424 weiter.
  • Im Block 1424 löscht die Rechenvorrichtung 100 die Prozessorregister und den Zwischenregisterarbeitsspeicher, die Geheimnisse enthalten können. Das Löschen der Register und des Zwischenregisterarbeitsspeichers verhindert, dass der Unterbrechungscode auf den internen Zustand des XOT-Codepfades zugreift. Im Block 1426 ersetzt die Rechenvorrichtung 100 den unterbrochenen Befehlszeiger am Stapel durch die Abbruchsteuerprogrammadresse. Nach der Vollendung des Unterbrechungssteuerprogramms kann der Prozessor 120 folglich zum Abbruchsteuerprogramm zurückkehren, das Operationen durchführt, die erforderlich sind, nachdem die aktuelle Transaktion abgebrochen wird, wie z. B. erneutes Versuchen der Transaktion. Nach dem Ersetzen des unterbrochenen Befehlszeigers geht das Verfahren 1400 zum Block 1428 weiter, in dem die Rechenvorrichtung 100 die Verarbeitung der Unterbrechung oder anderen asynchronen Änderung im Steuerablauf fortsetzt.
  • Es sollte erkannt werden, dass in einigen Ausführungsformen die Verfahren 300, 400, 500, 700, 800, 900, 1000, 1100, 1200 und/oder 1300 als verschiedene Befehle verkörpert sein können, die auf computerlesbaren Medien gespeichert sind, die durch den Prozessor 120, eine Peripherievorrichtung 134 und/oder andere Komponenten der Rechenvorrichtung 100 ausgeführt werden können, um zu bewirken, dass die Rechenvorrichtung 100 das entsprechende Verfahren 300, 400, 500, 700, 800, 900, 1000, 1100, 1200 und/oder 1300 durchführt. Die computerlesbaren Medien können als beliebiger Typ von Medien verkörpert sein, die durch die Rechenvorrichtung 100 gelesen werden können, einschließlich, jedoch nicht begrenzt auf den Arbeitsspeicher 128, die Datenspeichervorrichtung 130, einen lokalen Arbeitsspeicher des Prozessors 120, Firmware oder Mikrocode des Prozessors 120, einen anderen Arbeitsspeicher oder Datenspeichervorrichtungen der Rechenvorrichtung 100, tragbare Medien, die durch eine Peripherievorrichtung 134 der Rechenvorrichtung 100 lesbar sind, und/oder andere Medien.
  • BEISPIELE
  • Erläuternde Beispiele der hier offenbarten Technologien werden nachstehend bereitgestellt. Eine Ausführungsform der Technologien kann irgendeines oder mehrere und irgendeine Kombination der nachstehend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst eine Rechenvorrichtung für die sichere Codeausführung, wobei die Rechenvorrichtung Folgendes umfasst: ein Nur-Ausführungs-Modul, um einen Nur-Ausführungs-Transaktionsbereich eines Arbeitsspeichers der Rechenvorrichtung zu konfigurieren, wobei der Nur-Ausführungs-Transaktionsbereich nicht als Daten gelesen oder beschrieben werden kann; und ein Transaktionsmodul, um (i) in Reaktion auf eine andere Änderung des Steuerablaufs als eine Verzweigung zu bestimmen, ob eine letzte physikalische Befehlszeigeradresse eines Prozessors der Rechenvorrichtung innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, und (ii) einen Prozessorzustand des Prozessors in Reaktion auf die Bestimmung, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, zu sichern.
  • Beispiel 2 umfasst den Gegenstand von Beispiel 1, und umfasst ferner Folgendes: ein Codemanagementmodul, um (i) einen Rücksetzvektor auszuführen, und (ii) ein Nur-Ausführungs-Transaktionscodebild in den Nur-Ausführungs-Transaktionsbereich des Arbeitsspeichers in Reaktion auf die Ausführung des Rücksetzvektors zu laden; wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs in Reaktion auf ein Laden des Nur-Ausführungs-Transaktionscodebildes umfasst.
  • Beispiel 3 umfasst den Gegenstand von irgendeinem der Beispiele 1 und 2, und wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Schreiben in ein Einmal-Setz-Bereichsregisters des Prozessors umfasst.
  • Beispiel 4 umfasst den Gegenstand von irgendeinem der Beispiele 1-3, und wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers ferner das Bestimmen des Einmal-Setz-Bereichsregisters auf der Basis einer Seitengröße des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers umfasst.
  • Beispiel 5 umfasst den Gegenstand von irgendeinem der Beispiele 1-4, und wobei: das Codemanagementmodul ferner das Nur-Ausführungs-Transaktionscodebild in Reaktion auf das Laden des Nur-Ausführungs-Transaktionscodebildes messen soll; wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers in Reaktion auf die Messung des Nur-Ausführungs-Transaktionscodebildes umfasst.
  • Beispiel 6 umfasst den Gegenstand von irgendeinem der Beispiele 1-5, und wobei das Codemanagementmodul ferner das Nur-Ausführungs-Transaktionscodebild in Reaktion auf die Konfiguration des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers ausführen soll.
  • Beispiel 7 umfasst den Gegenstand von irgendeinem der Beispiele 1-6, und wobei das Ausführen des Nur-Ausführungs-Transaktionscodebildes das Konfigurieren einer Port-E/A-Vorrichtung der Rechenvorrichtung mit einem Geheimnis, das als unmittelbarer Wert eines Befehls des Nur-Ausführungs-Transaktionscodebildes gespeichert ist, umfasst.
  • Beispiel 8 umfasst den Gegenstand von irgendeinem der Beispiele 1-7, und wobei das Ausführen des Nur-Ausführungs-Transaktionscodebildes ferner das Durchsetzen einer Zugriffssteuerung auf die Port-E/A-Vorrichtung umfasst.
  • Beispiel 9 umfasst den Gegenstand von irgendeinem der Beispiele 1-8, und wobei das Ausführen des Nur-Ausführungs-Transaktionscodebildes Folgendes umfasst: Laden eines zweiten Nur-Ausführungs-Transaktionscodebildes in einen zweiten Nur-Ausführungs-Transaktionsbereich des Arbeitsspeichers durch das Nur-Ausführungs-Transaktionscodebild; und Konfigurieren des zweiten Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers durch das Nur-Ausführungs-Transaktionscodebild als Nur-Ausführungs-Transaktionsarbeitsspeicher in Reaktion auf ein Laden des zweiten Nur-Ausführungs-Transaktionscodebildes.
  • Beispiel 10 umfasst den Gegenstand von irgendeinem der Beispiele 1-9, und wobei: das Ausführen des Nur-Ausführungs-Transaktionscodebildes ferner das Messen des zweiten Nur-Ausführungs-Transaktionscodebildes durch das Nur-Ausführungs-Transaktionscodebild in Reaktion auf das Laden des zweiten Nur-Ausführungs-Transaktionscodebildes umfasst; wobei das Konfigurieren des zweiten Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Konfigurieren des zweiten Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers in Reaktion auf die Messung des zweiten Nur-Ausführungs-Transaktionscodebildes umfasst.
  • Beispiel 11 umfasst den Gegenstand von irgendeinem der Beispiele 1-10, und wobei: der Prozessor ferner einen Befehlsadressenübersetzungspuffer und einen Datenadressenübersetzungspuffer umfasst; das Nur-Ausführungs-Modul ferner ein Seitenverfehlungssteuerprogramm des Prozessors in Reaktion auf ein Seitenverfehlen ausführen soll, wobei das Seitenverfehlungssteuerprogramm: (i) eine Abbildung einer virtuellen auf eine physikalische Adresse in Reaktion auf das Seitenverfehlen bestimmen soll, wobei die Abbildung der virtuellen auf die physikalische Adresse eine virtuelle Arbeitsspeicheradresse einer physikalischen Arbeitsspeicheradresse zuordnet, (ii) bestimmen soll, ob die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, (iii) den Befehlsadressenübersetzungspuffer mit der Abbildung der virtuellen auf die physikalische Adresse in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, belegen soll, und (iv) verhindern soll, dass der Datenadressenübersetzungspuffer mit der Abbildung der virtuellen auf die physikalische Adresse belegt wird, in Reaktion auf die Bestimmung, dass die physikalische Seitenadresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  • Beispiel 12 umfasst den Gegenstand von irgendeinem der Beispiele 1-11, und wobei: das Seitenverfehlungssteuerprogramm ferner: (i) bestimmen soll, ob eine Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, einer Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch eine Seitentabelle der Rechenvorrichtung zugeordnet ist, und (ii) eine Seitengrößenfehlanpassungsstörung in Reaktion auf eine Bestimmung erzeugen soll, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, nicht der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist; wobei das Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse ferner das Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung von der virtuellen auf die physikalische Adresse in Reaktion auf eine Bestimmung umfasst, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist.
  • Beispiel 13 umfasst den Gegenstand von irgendeinem der Beispiele 1-12, und wobei das Bestimmen, ob die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, das Bestimmen eines letzten Übersetzungswerts des Befehlsadressenübersetzungspuffers des Prozessors umfasst.
  • Beispiel 14 umfasst den Gegenstand von irgendeinem der Beispiele 1-13, und wobei das Bestimmen des letzten Übersetzungswerts des Befehlsadressenübersetzungspuffers des Prozessors das Lesen eines letzten Befehlsadressenübersetzungspuffer-Trefferregisters des Prozessors umfasst.
  • Beispiel 15 umfasst den Gegenstand von irgendeinem der Beispiele 1-14, und umfasst ferner ein Eintrittspunktmodul, um ein Abbildungsänderungssteuerprogramm des Prozessors in Reaktion auf eine Änderung des Werts des letzten Befehlsadressenübersetzungspuffer-Trefferregisters auszuführen, wobei das Abbildungsänderungssteuerprogramm: eine zweite physikalische Arbeitsspeicheradresse bestimmen soll, wobei die zweite physikalische Arbeitsspeicheradresse einen letzten Übersetzungswert des Befehlsadressenübersetzungspuffers des Prozessors umfasst; bestimmen soll, ob die zweite physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; bestimmen soll, ob ein Versatzteil der zweiten physikalischen Arbeitsspeicheradresse einem vordefinierten Eintrittspunktversatz entspricht, in Reaktion auf die Bestimmung, dass die zweite physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und eine Störung in Reaktion auf eine Bestimmung erzeugen soll, dass der Versatzteil der zweiten physikalischen Arbeitsspeicheradresse nicht dem vordefinierten Eintrittspunktversatz entspricht.
  • Beispiel 16 umfasst den Gegenstand von irgendeinem der Beispiele 1-15, und umfasst ferner ein Eintrittspunktmodul, um ein Verfehlungssteuerprogramm des Prozessors in Reaktion auf eine Befehlsadressenübersetzungspufferverfehlung auszuführen, wobei das Verfehlungssteuerprogramm: bestimmen soll, ob eine physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb eines Nur-Ausführungs-Transaktionsbereichs liegt; bestimmen soll, ob die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt, in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und eine Störung, in Reaktion auf die Bestimmung erzeugen soll, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, nicht an einem autorisierten Eintrittspunkt liegt.
  • Beispiel 17 umfasst den Gegenstand von irgendeinem der Beispiele 1-16, und wobei: das Verfehlungssteuerprogramm ferner einen Nur-Ausfiihrungs-Transaktionsindex einer Abbildung einer virtuellen auf eine physikalische Adresse aufzeichnen soll, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt; und das Eintrittspunktmodul ferner ein Treffersteuerprogramm des Prozessors in Reaktion auf einen Befehlsadressenübersetzungspuffertreffer ausführen soll, wobei das Treffersteuerprogramm: (i) bestimmen soll, ob ein vorheriger Befehl, der durch den Prozessor ausgeführt wurde, innerhalb eines Nur-Ausführungs-Transaktionsbereichs ausgeführt wurde, (ii) bestimmen soll, ob ein Index einer Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, dem aufgezeichneten Nur-Ausführungs-Transaktionsindex entspricht, in Reaktion auf die Bestimmung, dass der vorherige Befehl, der durch den Prozessor ausgeführt wurde, innerhalb eines Nur-Ausführungs-Transaktionsbereichs ausgeführt wurde, und (iii) einen Eintrag des Befehlsadressenübersetzungspuffers am aufgezeichneten Nur-Ausführungs-Transaktionsindex in Reaktion auf die Bestimmung, dass der Index der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, nicht dem aufgezeichneten Nur-Ausführungs-Transaktionsindex entspricht, exmittieren soll.
  • Beispiel 18 umfasst den Gegenstand von irgendeinem der Beispiele 1-17 und wobei: das Verfehlungssteuerprogramm ferner: (i) einen Index der Abbildung der virtuellen auf die physikalische Adresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, als zuletzt verwendeten Befehlsübersetzungspuffereintrag in Reaktion auf die Bestimmung aufzeichnen soll, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, ein autorisierter Eintrittspunkt ist, und (ii) ein Nur-Ausführungs-Transaktionsbit der Abbildung der virtuellen auf die physikalische Adresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, in Reaktion auf die Bestimmung setzen soll, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt; und das Eintrittspunktmodul ferner ein Treffersteuerprogramm des Prozessors in Reaktion auf einen Befehlsadressenübersetzungspuffertreffer ausführen soll, wobei das Treffersteuerprogramm: (i) bestimmen soll, ob ein Index einer Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, einem Index des zuletzt verwendeten Befehlsübersetzungspuffereintrags entspricht, (ii) bestimmen soll, ob ein Nur-Ausführungs-Transaktionsbit der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, gesetzt ist, in Reaktion auf die Bestimmung, dass der Index der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, nicht dem Index des zuletzt verwendeten Befehlsübersetzungspuffereintrags entspricht, (iii) bestimmen soll, ob eine physikalische Arbeitsspeicheradresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, an einem autorisierten Eintrittspunkt liegt, in Reaktion auf die Bestimmung, dass das Nur-Ausführungs-Transaktionsbit der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, gesetzt ist, und (iv) eine Störung in Reaktion auf eine Bestimmung erzeugen soll, dass die physikalische Arbeitsspeicheradresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, nicht an einem autorisierten Eintrittspunkt liegt.
  • Beispiel 19 umfasst den Gegenstand von irgendeinem der Beispiele 1-18, und wobei das Transaktionsmodul ferner ein Unterbrechungssteuerprogramm des Prozessors in Reaktion auf die Änderung des Steuerablaufs ausführen soll, wobei das Unterbrechungssteuerprogramm: bestimmen soll, ob eine letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und den Prozessorzustand des Prozessors in Reaktion auf eine Bestimmung sichern soll, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  • Beispiel 20 umfasst den Gegenstand von irgendeinem der Beispiele 1-19, und wobei das Sichern des Prozessorzustandes des Prozessors das Löschen von einem oder mehreren Registern des Prozessors umfasst.
  • Beispiel 21 umfasst den Gegenstand von irgendeinem der Beispiele 1-20, und wobei das Sichern des Prozessorzustandes umfasst: Bestimmen, ob in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; Verschlüsseln des Prozessorzustandes des Prozessors, um einen verschlüsselten Prozessorzustand zu erzeugen, in Reaktion auf die Bestimmung, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; Berechnen eines Integritätsprüfwerts über den Prozessorzustand in Reaktion auf die Bestimmung, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; und Speichern des verschlüsselten Prozessorzustandes und des Integritätsprüfwerts.
  • Beispiel 22 umfasst den Gegenstand von irgendeinem der Beispiele 1-21, und wobei das Sichern des Prozessorzustandes das Löschen eines Thread-lokalen Speicherarbeitsspeicherbereichs der Rechenvorrichtung umfasst.
  • Beispiel 23 umfasst den Gegenstand von irgendeinem der Beispiele 1-22, und wobei das Sichern des Prozessorzustandes das Löschen von veränderten Einträgen in einem lokalen Cache-Arbeitsspeicher des Prozessors der Rechenvorrichtung umfasst.
  • Beispiel 24 umfasst ein Verfahren zum Sichern der Codeausführung, wobei das Verfahren Folgendes umfasst: Konfigurieren eines Nur-Ausführungs-Transaktionsbereichs eines Arbeitsspeichers der Rechenvorrichtung durch eine Rechenvorrichtung, wobei der Nur-Ausführungs-Transaktionsbereich nicht als Daten gelesen oder beschrieben werden kann; und Bestimmen durch die Rechenvorrichtung in Reaktion auf eine andere Änderung des Steuerablaufs als eine Verzweigung, ob eine letzte physikalische Befehlszeigeradresse eines Prozessors der Rechenvorrichtung innerhalb eines Nur-Ausführungs-Transaktionsbereichs liegt; und durch den Prozessor Sichern eines Prozessorzustandes des Prozessors in Reaktion auf die Bestimmung, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  • Beispiel 25 umfasst den Gegenstand von Beispiel 24, und umfasst ferner Folgendes: Ausführen eines Rücksetzvektors durch die Rechenvorrichtung; und Laden eines Nur-Ausführungs-Transaktionscodebildes in den Nur-Ausführungs-Transaktionsbereich des Arbeitsspeichers durch die Rechenvorrichtung in Reaktion auf die Ausführung des Rücksetzvektors; wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs in Reaktion auf das Laden des Nur-Ausführungs-Transaktionscodebildes umfasst.
  • Beispiel 26 umfasst den Gegenstand von irgendeinem der Beispiele 24 und 25, und wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Schreiben in ein Einmal-Setz-Bereichsregister des Prozessors umfasst.
  • Beispiel 27 umfasst den Gegenstand von irgendeinem der Beispiele 24-26, und wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers ferner das Bestimmen des Einmal-Setz-Bereichsregisters auf der Basis einer Seitengröße des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers umfasst.
  • Beispiel 28 umfasst den Gegenstand von irgendeinem der Beispiele 24-27 und umfasst ferner Folgendes: Messen des Nur-Ausführungs-Transaktionscodebildes in Reaktion auf das Laden des Nur-Ausführungs-Transaktionscodebildes durch die Rechenvorrichtung; wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers in Reaktion auf das Messen des Nur-Ausführungs-Transaktionscodebildes umfasst.
  • Beispiel 29 umfasst den Gegenstand von irgendeinem der Beispiele 24-28 und umfasst ferner das Ausführen des Nur-Ausführungs-Transaktionscodebildes durch die Rechenvorrichtung in Reaktion auf das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers.
  • Beispiel 30 umfasst den Gegenstand von irgendeinem der Beispiele 24-29, und wobei das Ausführen des Nur-Ausführungs-Transaktionscodebildes das Konfigurieren einer Port-E/A-Vorrichtung der Rechenvorrichtung mit einem Geheimnis, das als unmittelbarer Wert eines Befehls des Nur-Ausführungs-Transaktionscodebildes gespeichert ist, umfasst.
  • Beispiel 31 umfasst den Gegenstand von irgendeinem der Beispiele 24-30, und wobei das Ausführen des Nur-Ausführungs-Transaktionscodebildes ferner das Durchsetzen einer Zugriffssteuerung auf die Port-E/A-Vorrichtung umfasst.
  • Beispiel 32 umfasst den Gegenstand von irgendeinem der Beispiele 24-31, und wobei das Ausführen des Nur-Ausführungs-Transaktionscodebildes Folgendes umfasst: Laden eines zweiten Nur-Ausführungs-Transaktionscodebildes in einen zweiten Nur-Ausführungs-Transaktionsbereich des Arbeitsspeichers durch das Nur-Ausführungs-Transaktionscodebild; und Konfigurieren des zweiten Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers als Nur-Ausführungs-Transaktionsarbeitsspeicher durch das Nur-Ausführungs-Transaktionscodebild in Reaktion auf das Laden des zweiten Nur-Ausführungs-Transaktionscodebildes.
  • Beispiel 33 umfasst den Gegenstand von irgendeinem der Beispiele 24-32, und wobei das Ausführen des Nur-Ausführungs-Transaktionscodebildes ferner Folgendes umfasst: Messen des zweiten Nur-Ausführungs-Transaktionscodebildes durch das Nur-Ausführungs-Transaktionscodebild in Reaktion auf das Laden des zweiten Nur-Ausführungs-Transaktionscodebildes; wobei das Konfigurieren des zweiten Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Konfigurieren des zweiten Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers in Reaktion auf das Messen des zweiten Nur-Ausführungs-Transaktionscodebildes umfasst.
  • Beispiel 34 umfasst den Gegenstand von irgendeinem der Beispiele 24-33, und wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers Folgendes umfasst: Ausführen eines Seitenverfehlungssteuerprogramms des Prozessors durch den Prozessor der Rechenvorrichtung in Reaktion auf das Seitenverfehlen; Bestimmen einer Abbildung einer virtuellen auf eine physikalische Adresse durch das Seitenverfehlungssteuerprogramm in Reaktion auf das Seitenverfehlen, wobei die Abbildung der virtuellen die eine physikalische Adresse eine virtuelle Arbeitsspeicheradresse einer physikalischen Arbeitsspeicheradresse zuordnet; Bestimmen durch das Seitenverfehlungssteuerprogramm, ob die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; Belegen eines Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse durch das Seitenverfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und Verhindern durch das Seitenverfehlungssteuerprogramm, dass ein Datenadressenübersetzungspuffer des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse belegt wird, in Reaktion auf die Bestimmung, dass die physikalische Seitenadresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  • Beispiel 35 umfasst den Gegenstand von irgendeinem der Beispiele 24-34, und umfasst ferner Folgendes: Bestimmen durch das Seitenverfehlungssteuerprogramm, ob eine Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, einer Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch eine Seitentabelle der Rechenvorrichtung zugeordnet ist; und Erzeugen einer Seitengrößenfehlanpassungsstörung durch das Seitenverfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, nicht der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist; wobei das Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse ferner das Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse in Reaktion auf eine Bestimmung umfasst, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist.
  • Beispiel 36 umfasst den Gegenstand von irgendeinem der Beispiele 24-35, und wobei das Bestimmen, ob die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, das Bestimmen eines letzten Übersetzungswerts des Befehlsadressenübersetzungspuffers des Prozessors umfasst.
  • Beispiel 37 umfasst den Gegenstand von irgendeinem der Beispiele 24-36, und wobei das Bestimmen des letzten Übersetzungswerts des Befehlsadressenübersetzungspuffers des Prozessors das Lesen eines letzten Befehlsadressenübersetzungspuffer-Trefferregisters des Prozessors umfasst.
  • Beispiel 38 umfasst den Gegenstand von irgendeinem der Beispiele 24-37, und umfasst ferner Folgendes: Ausführen eines Abbildungsänderungssteuerprograms des Prozessors durch den Prozessor in Reaktion auf eine Änderung des Werts des letzten Befehlsadressenübersetzungspuffer-Trefferregisters; Bestimmen einer zweiten physikalischen Arbeitsspeicheradresse durch das Abbildungsänderungssteuerprogramm, wobei die zweite physikalische Arbeitsspeicheradresse einen letzten Übersetzungswert des Befehlsadressenübersetzungspuffers des Prozessors umfasst; Bestimmen durch das Abbildungsänderungssteuerprogramm, ob die zweite physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; Bestimmen durch das Abbildungsänderungssteuerprogramm, ob ein Versatzteil der zweiten physikalischen Arbeitsspeicheradresse einem vordefinierten Eintrittspunktversatz entspricht, in Reaktion auf die Bestimmung, dass die zweite physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und Erzeugen einer Störung durch das Abbildungsänderungssteuerprogramm in Reaktion auf die Bestimmung, dass der Versatzteil der zweiten physikalischen Arbeitsspeicheradresse nicht dem vordefinierten Eintrittspunktversatz entspricht.
  • Beispiel 39 umfasst den Gegenstand von irgendeinem der Beispiele 24-38, und umfasst ferner Folgendes: Ausführen eines Verfehlungssteuerprogramms des Prozessors durch den Prozessor in Reaktion auf eine Befehlsadressenübersetzungspufferverfehlung; Bestimmen durch das Verfehlungssteuerprogramm, ob eine physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb eines Nur-Ausführungs-Transaktionsbereichs liegt; Bestimmen durch das Verfehlungssteuerprogramm, ob die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt, in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und Erzeugen einer Störung durch das Verfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, nicht an einem autorisierten Eintrittspunkt liegt.
  • Beispiel 40 umfasst den Gegenstand von irgendeinem der Beispiele 24-39, und umfasst ferner Folgendes: Aufzeichnen eines Nur-Ausführungs-Transaktionsindex einer Abbildung einer virtuellen auf eine physikalische Adresse durch das Verfehlungssteuerprogramm, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt; Ausführen eines Treffersteuerprogramms des Prozessors durch den Prozessor in Reaktion auf einen Befehlsadressenübersetzungspuffertreffer; Bestimmen durch das Treffersteuerprogramm, ob ein vorheriger Befehl, der durch den Prozessor ausgeführt wurde, innerhalb eines Nur-Ausführungs-Transaktionsbereichs ausgeführt wurde; Bestimmen durch das Treffersteuerprogramm, ob ein Index einer Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, dem aufgezeichneten Nur-Ausführungs-Transaktionsindex entspricht, in Reaktion auf die Bestimmung, dass der vorherige Befehl, der durch den Prozessor ausgeführt wurde, innerhalb eines Nur-Ausführungs-Transaktionsbereichs ausgeführt wurde; und Exmittieren eines Eintrags des Befehlsadressenübersetzungspuffers am aufgezeichneten Nur-Ausführungs-Transaktionsindex durch das Treffersteuerprogramm in Reaktion auf die Bestimmung, dass der Index der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, nicht dem aufgezeichneten Nur-Ausführungs-Transaktionsindex entspricht.
  • Beispiel 41 umfasst den Gegenstand von irgendeinem der Beispiele 24-40 und umfasst ferner Folgendes: Aufzeichnen eines Index der Abbildung der virtuellen auf die physikalische Adresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, als zuletzt verwendeten Befehlsübersetzungspuffereintrag durch das Verfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt; Setzen eines Nur-Ausführungs-Transaktionsbits der Abbildung der virtuellen auf die physikalische Adresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, durch das Verfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsaderessenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt; und Ausführen eines Treffersteuerprogramms des Prozessors durch den Prozessor in Reaktion auf einen Befehlsadressenübersetzungspuffertreffer; Bestimmen durch das Treffersteuerprogramm, ob ein Index einer Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, einem Index des zuletzt verwendeten Befehlsübersetzungspuffereintrag entspricht; Bestimmen durch das Treffersteuerprogramm, ob ein Nur-Ausführungs-Transaktionsbit der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, gesetzt ist, in Reaktion auf die Bestimmung, dass der Index der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, nicht dem Index des zuletzt verwendeten Befehlsübersetzungspuffereintrags entspricht; Bestimmen durch das Treffersteuerprogramm, ob eine physikalische Arbeitsspeicheradresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, an einem autorisierten Eintrittspunkt liegt, in Reaktion auf die Bestimmung, dass das Nur-Ausführungs-Transaktionsbit der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, gesetzt ist; und Erzeugen durch das Treffersteuerprogramm einer Störung in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, nicht an einem autorisierten Eintrittspunkt liegt.
  • Beispiel 42 umfasst den Gegenstand von irgendeinem der Beispiele 24-41, und wobei: das Bestimmen in Reaktion auf die Änderung des Steuerablaufs, ob die letzte physikalische Befehlszeigeradresse des Prozesses innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, umfasst: Ausführen eines Unterbrechungssteuerprogramms des Prozessors durch den Prozessor der Rechenvorrichtung in Reaktion auf die Änderung des Steuerablaufs; und Bestimmen durch das Unterbrechungssteuerprogramm, ob die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und wobei das Sichern des Prozessorzustandes das Sichern des Prozessorzustandes des Prozessors durch das Unterbrechungssteuerprogramm in Reaktion auf die Bestimmung, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, umfasst.
  • Beispiel 43 umfasst den Gegenstand von irgendeinem der Beispiele 24-42, und wobei das Sichern des Prozessorzustandes des Prozessors das Löschen von einem oder mehreren Registern des Prozessors umfasst.
  • Beispiel 44 umfasst den Gegenstand von irgendeinem der Beispiele 24-43, und wobei das Sichern des Prozessorzustandes Folgendes umfasst: Bestimmen, ob in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; Verschlüsseln des Prozessorzustandes des Prozessors, um einen verschlüsselten Prozessorzustand zu erzeugen, in Reaktion auf die Bestimmung, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; Berechnen eines Integritätsprüfwerts über den Prozessorzustand in Reaktion auf die Bestimmung, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; und Speichern des verschlüsselten Prozessorzustandes und des Integritätsprüfwerts.
  • Beispiel 45 umfasst den Gegenstand von irgendeinem der Beispiele 24-44, und wobei das Sichern des Prozessorzustandes das Löschen eines Thread-lokalen Speicherarbeitsspeicherbereichs der Rechenvorrichtung umfasst.
  • Beispiel 46 umfasst den Gegenstand von irgendeinem der Beispiele 24-45, und wobei das Sichern des Prozessorzustandes das Löschen von veränderten Einträgen in einem lokalen Cache-Arbeitsspeicher des Prozessors der Rechenvorrichtung umfasst.
  • Beispiel 47 umfasst eine Rechenvorrichtung, die Folgendes umfasst: einen Prozessor; und einen Arbeitsspeicher, in dem mehrere Befehle gespeichert sind, die, wenn sie durch den Prozessor ausgeführt werden, bewirken, dass die Rechenvorrichtung das Verfahren von irgendeinem der Beispiele 24-46 durchführt.
  • Beispiel 48 umfasst ein oder mehrere maschinenlesbare Speichermedien mit mehreren Befehlen, die darauf gespeichert sind, die, in Reaktion darauf, dass sie ausgeführt werden, dazu führen, dass eine Rechenvorrichtung das Verfahren von irgendeinem der Beispiele 24-46 durchführt.
  • Beispiel 49 umfasst eine Rechenvorrichtung mit Mitteln zum Durchführen des Verfahrens von irgendeinem der Beispiele 24-46.
  • Beispiel 50 umfasst eine Rechenvorrichtung für die sichere Codeausführung, wobei die Rechenvorrichtung Folgendes umfasst: ein Mittel zum Konfigurieren eines Nur-Ausführungs-Transaktionsbereichs eines Arbeitsspeichers der Rechenvorrichtung, wobei der Nur-Ausführungs-Transaktionsbereich nicht als Daten gelesen oder beschrieben werden kann; und ein Mittel zum Bestimmen in Reaktion auf eine andere Änderung des Steuerablaufs als eine Verzweigung, ob eine letzte physikalische Befehlszeigeradresse eines Prozessors der Rechenvorrichtung innerhalb eines Nur-Ausführungs-Transaktionsbereichs liegt; und ein Mittel zum Sichern eines Prozessorzustandes des Prozessors durch den Prozessor in Reaktion auf die Bestimmung, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  • Beispiel 51 umfasst den Gegenstand von Beispiel 50, und umfasst ferner Folgendes: ein Mittel zum Ausführen eines Rücksetzvektors; und ein Mittel zum Laden eines Nur-Ausführungs-Transaktionscodebildes in den Nur-Ausführungs-Transaktionsbereich des Arbeitsspeichers in Reaktion auf die Ausführung des Rücksetzvektors; wobei das Mittel zum Konfigurieren des Nur-Ausführungs-Transaktionsbereichs ein Mittel zum Konfigurieren des Nur-Ausführungs-Transaktionsbereichs in Reaktion auf das Laden des Nur-Ausführungs-Transaktionscodebildes umfasst.
  • Beispiel 52 umfasst den Gegenstand von irgendeinem der Beispiele 50 und 51, und wobei das Mittel zum Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers ein Mittel zum Schreiben in ein Einmal-Setz-Bereichsregister des Prozessors umfasst.
  • Beispiel 53 umfasst den Gegenstand von irgendeinem der Beispiele 50-52, und wobei das Mittel zum Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers ferner ein Mittel zum Bestimmen des Einmal-Setz-Bereichsregisters auf der Basis einer Seitengröße des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers umfasst.
  • Beispiel 54 umfasst den Gegenstand von irgendeinem der Beispiele 50-53, und umfasst ferner Folgendes: ein Mittel zum Messen des Nur-Ausführungs-Transaktionscodebildes in Reaktion auf das Laden des Nur-Ausführungs-Transaktionscodebildes; wobei das Mittel zum Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers ein Mittel zum Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers in Reaktion auf die Messung des Nur-Ausführungs-Transaktionscodebildes umfasst.
  • Beispiel 55 umfasst den Gegenstand von irgendeinem der Beispiele 50-54 und umfasst ferner ein Mittel zum Ausführen des Nur-Ausführungs-Transaktionscodebildes in Reaktion auf das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers.
  • Beispiel 56 umfasst den Gegenstand von irgendeinem der Beispiele 50-55, und wobei das Mittel zum Ausführen des Nur-Ausführungs-Transaktionscodebildes ein Mittel zum Konfigurieren einer Port-E/A-Vorrichtung der Rechenvorrichtung mit einem Geheimnis, das als unmittelbarer Wert eines Befehls des Nur-Ausführungs-Transaktionscodebildes gespeichert ist, umfasst.
  • Beispiel 57 umfasst den Gegenstand von irgendeinem der Beispiele 50-56, und wobei das Mittel zum Ausführen des Nur-Ausführungs-Transaktionscodebildes ferner ein Mittel zum Durchsetzen einer Zugriffssteuerung auf die Port-E/A-Vorrichtung umfasst.
  • Beispiel 58 umfasst den Gegenstand von irgendeinem der Beispiele 50-57, und wobei das Mittel zum Ausführen des Nur-Ausführungs-Transaktionscodebildes Folgendes umfasst: ein Mittel zum Laden eines zweiten Nur-Ausführungs-Transaktionscodebildes in einen zweiten Nur-Ausführungs-Transaktionsbereich des Arbeitsspeichers durch das Nur-Ausführungs-Transaktionscodebild; und ein Mittel zum Konfigurieren des zweiten Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers als Nur-Ausführungs-Transaktionsarbeitsspeicher durch das Nur-Ausführungs-Transaktionscodebild in Reaktion auf das Laden des zweiten Nur-Ausführungs-Transaktionscodebildes.
  • Beispiel 59 umfasst den Gegenstand von irgendeinem der Beispiele 50-58, und wobei das Mittel zum Ausführen des Nur-Ausfiihrungs-Transaktionscodebildes ferner Folgendes umfasst: ein Mittel zum Messen des zweiten Nur-Ausführungs-Transaktionscodebildes durch das Nur-Ausführungs-Transaktionscodebild in Reaktion auf das Laden des zweiten Nur-Ausführungs-Transaktionscodebildes; wobei das Mittel zum Konfigurieren des zweiten Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers ein Mittel zum Konfigurieren des zweiten Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers in Reaktion auf die Messung des zweiten Nur-Ausführungs-Transaktionscodebildes umfasst.
  • Beispiel 60 umfasst den Gegenstand von irgendeinem der Beispiele 50-59, und wobei das Mittel zum Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers Folgendes umfasst: ein Mittel zum Ausführen eines Seitenverfehlungssteuerprogramms des Prozessors durch den Prozessor in Reaktion auf ein Seitenverfehlen; ein Mittel zum Bestimmen einer Abbildung einer virtuellen auf eine physikalische Adresse durch das Seitenverfehlungssteuerprogramm in Reaktion auf das Seitenverfehlen, wobei die Abbildung der virtuellen auf die physikalische Adresse eine virtuelle Arbeitsspeicheradresse einer physikalischen Arbeitsspeicheradresse zuordnet; ein Mittel zum Bestimmen durch das Seitenverfehlungssteuerprogramm, ob die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausfiihrungs-Transaktionsbereichs liegt; ein Mittel zum Belegen eines Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse durch das Seitenverfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und ein Mittel zum Verhindern durch das Seitenverfehlungssteuerprogramm, dass ein Datenadressenübersetzungspuffer des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse belegt wird, in Reaktion auf die Bestimmung, dass die physikalische Adresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  • Beispiel 61 umfasst den Gegenstand von irgendeinem der Beispiele 50-60, und umfasst ferner Folgendes: ein Mittel zum Bestimmen durch das Seitenverfehlungssteuerprogramm, ob eine Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, einer Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch eine Seitentabelle der Rechenvorrichtung zugeordnet ist; und ein Mittel zum Erzeugen einer Seitengrößenfehlanpassungsstörung durch das Seitenverfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, nicht der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist; wobei das Mittel zum Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse ferner das Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung von der virtuellen auf die physikalische Adresse in Reaktion auf die Bestimmung umfasst, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist.
  • Beispiel 62 umfasst den Gegenstand von irgendeinem der Beispiele 50-61, und wobei das Mittel zum Bestimmen, ob die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, ein Mittel zum Bestimmen eines letzten Übersetzungswerts des Befehlsadressenübersetzungspuffers des Prozessors umfasst.
  • Beispiel 63 umfasst den Gegenstand von irgendeinem der Beispiele 50-62, und wobei das Mittel zum Bestimmen des letzten Übersetzungswerts des Befehlsadressenübersetzungspuffers des Prozessors ein Mittel zum Lesen eines letzten Befehlsadressenübersetzungspuffer-Trefferregisters des Prozessors umfasst.
  • Beispiel 64 umfasst den Gegenstand von irgendeinem der Beispiele 50-63, und umfasst ferner Folgendes: ein Mittel zum Ausführen eines Abbildungsänderungssteuerprograms des Prozessors durch den Prozessor in Reaktion auf eine Änderung des Werts des letzten Befehlsadressenübersetzungspuffer-Trefferregisters; ein Mittel zum Bestimmen einer zweiten physikalischen Arbeitsspeicheradresse durch das Abbildungsänderungssteuerprogramm, wobei die zweite physikalische Arbeitsspeicheradresse einen letzten Übersetzungswert des Befehlsadressenübersetzungspuffers des Prozessors umfasst; ein Mittel zum Bestimmen durch das Abbildungsänderungssteuerprogramm, ob die zweite physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; ein Mittel zum Bestimmen durch das Abbildungsänderungssteuerprogramm, ob ein Versatzteil der zweiten physikalischen Arbeitsspeicheradresse einem vordefinierten Eintrittspunktversatz entspricht, in Reaktion auf die Bestimmung, dass die zweite physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und ein Mittel zum Erzeugen einer Störung durch das Abbildungsänderungssteuerprogramm in Reaktion auf die Bestimmung, dass der Versatzteil der zweiten physikalischen Arbeitsspeicheradresse nicht dem vordefinierten Eintrittspunktversatz entspricht.
  • Beispiel 65 umfasst den Gegenstand von irgendeinem der Beispiele 50-64, und umfasst ferner Folgendes: ein Mittel zum Ausführen eines Verfehlungssteuerprogramms des Prozessors durch den Prozessor in Reaktion auf eine Befehlsadressenübersetzungspufferverfehlung; ein Mittel zum Bestimmen durch das Verfehlungssteuerprogramm, ob eine physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb eines Nur-Ausführungs-Transaktionsbereichs liegt; ein Mittel zum Bestimmen durch das Verfehlungssteuerprogramm, ob die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt, in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und ein Mittel zum Erzeugen einer Störung durch das Verfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, nicht an einem autorisierten Eintrittspunkt liegt.
  • Beispiel 66 umfasst den Gegenstand von irgendeinem der Beispiele 50-65, und umfasst ferner Folgendes: ein Mittel zum Aufzeichnen eines Nur-Ausführungs-Transaktionsindex einer Abbildung einer virtuellen auf eine physikalische Adresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, durch das Verfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt; ein Mittel zum Ausführen eines Treffersteuerprogramms des Prozessors durch den Prozessor in Reaktion auf einen Befehlsadressenübersetzungspuffertreffer; ein Mittel zum Bestimmen durch das Treffersteuerprogramm, ob ein vorheriger Befehl, der durch den Prozessor ausgeführt wurde, innerhalb eines Nur-Ausführungs-Transaktionsbereichs ausgeführt wurde; ein Mittel zum Bestimmen durch das Treffersteuerprogramm, ob ein Index einer Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, dem aufgezeichneten Nur-Ausführungs-Transaktionsindex entspricht, in Reaktion auf die Bestimmung, dass der vorherige Befehl, der durch den Prozessor ausgeführt wurde, innerhalb eines Nur-Ausführungs-Transaktionsbereichs ausgeführt wurde; und ein Mittel zum Exmittieren eines Eintrags des Befehlsadressenübersetzungspuffers am aufgezeichneten Nur-Ausführungs-Transaktionsindex durch das Treffersteuerprogramm in Reaktion auf die Bestimmung, dass der Index der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, nicht dem aufgezeichneten Nur-Ausführungs-Transaktionsindex entspricht.
  • Beispiel 67 umfasst den Gegenstand von irgendeinem der Beispiele 50-66, und umfasst ferner Folgendes: ein Mittel zum Aufzeichnen eines Index einer Abbildung der virtuellen auf die physikalische Adresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, als zuletzt verwendeten Befehlsübersetzungspuffereintrag durch das Verfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt; ein Mittel zum Setzen eines Nur-Ausführungs-Transaktionsbits der Abbildung der virtuellen auf die physikalische Adresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, durch das Verfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt; ein Mittel zum Ausführen eines Treffersteuerprogramms des Prozessors durch den Prozessor in Reaktion auf einen Befehlsadressenübersetzungspuffertreffer; ein Mittel zum Bestimmen durch das Treffersteuerprogramm, ob ein Index einer Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, einem Index des zuletzt verwendeten Befehlsübersetzungspuffereintrags entspricht; ein Mittel zum Bestimmen durch das Treffersteuerprogramm, ob ein Nur-Ausführungs-Transaktionsbit der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, gesetzt ist, in Reaktion auf die Bestimmung, dass der Index der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, nicht dem Index des zuletzt verwendeten Befehlsübersetzungspuffereintrags entspricht; ein Mittel zum Bestimmen durch das Treffersteuerprogramm, ob eine physikalische Arbeitsspeicheradresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, an einem autorisierten Eintrittspunkt liegt, in Reaktion auf die Bestimmung, dass das Nur-Ausführungs-Transaktionsbit der Abbildung der virtuellen auf die physikalische Adresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, gesetzt ist; und ein Mittel zum Erzeugen einer Störung durch das Treffersteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die dem Befehlsadressenübersetzungspuffertreffer zugeordnet ist, nicht an einem autorisierten Eintrittspunkt liegt.
  • Beispiel 68 umfasst den Gegenstand von irgendeinem der Beispiele 50-67, und wobei: das Mittel zum Bestimmen in Reaktion auf die Änderung des Steuerablaufs, ob die letzte physikalische Befehlszeigeradresse des Prozesses innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, Folgendes umfasst: ein Mittel zum Ausführen eines Unterbrechungssteuerprogramms des Prozessors durch den Prozessor der Rechenvorrichtung in Reaktion auf die Änderung des Steuerablaufs; und ein Mittel zum Bestimmen durch das Unterbrechungssteuerprogramm, ob die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und wobei das Mittel zum Sichern des Prozessorzustandes ein Mittel zum Sichern des Prozessorzustandes des Prozessors durch das Unterbrechungssteuerprogramm in Reaktion auf die Bestimmung, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, umfasst.
  • Beispiel 69 umfasst den Gegenstand von irgendeinem der Beispiele 50-68, und wobei das Mittel zum Sichern des Prozessorzustandes des Prozessors ein Mittel zum Löschen von einem oder mehreren Registern des Prozessors umfasst.
  • Beispiel 70 umfasst den Gegenstand von irgendeinem der Beispiele 50-69, und wobei das Mittel zum Sichern des Prozessorzustandes Folgendes umfasst: ein Mittel zum Bestimmen, ob in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; ein Mittel zum Verschlüsseln des Prozessorzustandes des Prozessors, um einen verschlüsselten Prozessorzustand zu erzeugen, in Reaktion auf die Bestimmung, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; ein Mittel zum Berechnen eines Integritätsprüfwerts über den Prozessorzustand in Reaktion auf die Bestimmung, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; und ein Mittel zum Speichern des verschlüsselten Prozessorzustandes und des Integritätsprüfwerts.
  • Beispiel 71 umfasst den Gegenstand von irgendeinem der Beispiele 50-70, und wobei das Mittel zum Sichern des Prozessorzustandes ein Mittel zum Löschen eines Thread-lokalen Speicherarbeitsspeicherbereichs der Rechenvorrichtung umfasst.
  • Beispiel 72 umfasst den Gegenstand von irgendeinem der Beispiele 50-71, und wobei das Mittel zum Sichern des Prozessorzustandes ein Mittel zum Löschen von veränderten Einträgen in einem lokalen Cache-Arbeitsspeicher des Prozessors der Rechenvorrichtung umfasst.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 13/974972 [0001]
    • US 62/236405 [0001]

Claims (25)

  1. Rechenvorrichtung für die sichere Codeausführung, wobei die Rechenvorrichtung Folgendes umfasst: ein Nur-Ausführungs-Modul, um einen Nur-Ausführungs-Transaktionsbereich eines Arbeitsspeichers der Rechenvorrichtung zu konfigurieren, wobei der Nur-Ausführungs-Transaktionsbereich nicht als Daten gelesen oder beschrieben werden kann; und ein Transaktionsmodul, um (i) in Reaktion auf eine andere Änderung des Steuerablaufs als eine Verzweigung zu bestimmen, ob eine letzte physikalische Befehlszeigeradresse eines Prozessors der Rechenvorrichtung innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, und (ii) einen Prozessorzustand des Prozessors in Reaktion auf eine Bestimmung, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, zu sichern.
  2. Rechenvorrichtung nach Anspruch 1, die ferner Folgendes umfasst: ein Codemanagementmodul, um (i) einen Rücksetzvektor auszuführen, und (ii) ein Nur-Ausführungs-Transaktionscodebild in den Nur-Ausführungs-Transaktionsbereich des Arbeitsspeichers in Reaktion auf die Ausführung des Rücksetzvektors zu laden; wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs in Reaktion auf ein Laden des Nur-Ausführungs-Transaktionscodebildes umfasst.
  3. Rechenvorrichtung nach Anspruch 2, wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Schreiben in ein Einmal-Setz-Bereichsregister des Prozessors umfasst.
  4. Rechenvorrichtung nach Anspruch 2, wobei: das Codemanagementmodul ferner das Nur-Ausführungs-Transaktionscodebild in Reaktion auf das Laden des Nur-Ausführungs-Transaktionscodebildes messen soll; wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers in Reaktion auf die Messung des Nur-Ausführungs-Transaktionscodebildes umfasst.
  5. Rechenvorrichtung nach Anspruch 2, wobei das Codemanagementmodul ferner das Nur-Ausführungs-Transaktionscodebild in Reaktion auf die Konfiguration des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers ausführen soll, wobei das Ausführen des Nur-Ausführungs-Transaktionscodebildes das Konfigurieren einer Port-E/A-Vorrichtung der Rechenvorrichtung mit einem Geheimnis, das als unmittelbarer Wert eines Befehls des Nur-Ausführungs-Transaktionscodebildes gespeichert ist, umfasst.
  6. Rechenvorrichtung nach Anspruch 1, wobei: der Prozessor ferner einen Befehlsadressenübersetzungspuffer und einen Datenadressenübersetzungspuffer umfasst; das Nur-Ausführungs-Modul ferner ein Seitenverfehlungssteuerprogramm des Prozessors in Reaktion auf ein Seitenverfehlen ausführen soll, wobei das Seitenverfehlungssteuerprogramm: (i) eine Abbildung einer virtuellen auf eine physikalische Adresse in Reaktion auf das Seitenverfehlen bestimmen soll, wobei die Abbildung der virtuellen auf die physikalische Adresse eine virtuelle Arbeitsspeicheradresse einer physikalischen Arbeitsspeicheradresse zuordnet, (ii) bestimmen soll, ob die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, (iii) den Befehlsadressenübersetzungspuffer mit der Abbildung der virtuellen auf die physikalische Adresse in Reaktion auf eine Bestimmung, dass die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, belegen soll, und (iv) verhindern soll, dass der Datenadressenübersetzungspuffer mit der Abbildung der virtuellen auf die physikalische Adresse belegt wird, in Reaktion auf die Bestimmung, dass die physikalische Seitenadresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  7. Rechenvorrichtung nach Anspruch 6, wobei: das Seitenverfehlungssteuerprogramm ferner: (i) bestimmen soll, ob eine Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, einer Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch eine Seitentabelle der Rechenvorrichtung zugeordnet ist, und (ii) eine Seitengrößenfehlanpassungsstörung in Reaktion auf eine Bestimmung erzeugen soll, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, nicht der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist; wobei das Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse ferner das Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse in Reaktion auf eine Bestimmung umfasst, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist.
  8. Rechenvorrichtung nach Anspruch 6, wobei das Bestimmen, ob die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, das Bestimmen eines letzten Übersetzungswerts des Befehlsadressenübersetzungspuffers des Prozessors umfasst, wobei das Bestimmen des letzten Übersetzungswerts des Befehlsadressenübersetzungspuffers des Prozessors das Lesen eines letzten Befehlsadressenübersetzungspuffer-Trefferregisters des Prozessors umfasst, wobei die Rechenvorrichtung ferner ein Eintrittspunktmodul umfasst, um ein Abbildungsänderungssteuerprogramm des Prozessors in Reaktion auf eine Änderung des Werts des letzten Befehlsadressenübersetzungspuffer-Trefferregisters auszuführen, wobei das Abbildungsänderungssteuerprogramm: eine zweite physikalische Arbeitsspeicheradresse bestimmen soll, wobei die zweite physikalische Arbeitsspeicheradresse einen letzten Übersetzungswert des Befehlsadressenübersetzungspuffers des Prozessors umfasst; bestimmen soll, ob die zweite physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; bestimmen soll, ob ein Versatzteil der zweiten physikalischen Arbeitsspeicheradresse einem vordefinierten Eintrittspunktversatz entspricht, in Reaktion auf eine Bestimmung, dass die zweite physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und eine Störung in Reaktion auf eine Bestimmung erzeugen soll, dass der Versatzteil der zweiten physikalischen Arbeitsspeicheradresse nicht dem vordefinierten Eintrittspunktversatz entspricht.
  9. Rechenvorrichtung nach Anspruch 6, die ferner ein Eintrittspunktmodul umfasst, um ein Verfehlungssteuerprogramm des Prozessors in Reaktion auf eine Befehlsadressenübersetzungspufferverfehlung auszuführen, wobei das Verfehlungssteuerprogramm: bestimmen soll, ob eine physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb eines Nur-Ausführungs-Transaktionsbereichs liegt; bestimmen soll, ob die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt, in Reaktion auf eine Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und eine Störung in Reaktion auf eine Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, nicht an einem autorisierten Eintrittspunkt liegt, erzeugen soll.
  10. Rechenvorrichtung nach einem der Ansprüche 1-9, wobei das Transaktionsmodul ferner ein Unterbrechungssteuerprogramm des Prozessors in Reaktion auf die Änderung des Steuerablaufs ausführen soll, wobei das Unterbrechungssteuerprogramm: bestimmen soll, ob eine letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und den Prozessorzustand des Prozessors in Reaktion auf eine Bestimmung sichern soll, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  11. Rechenvorrichtung nach einem der Ansprüche 1-9, wobei das Sichern des Prozessorzustandes des Prozessors das Löschen von einem oder mehreren Registern des Prozessors, das Löschen eines Thread-lokalen Speicherarbeitsspeicherbereichs der Rechenvorrichtung oder das Löschen von veränderten Einträgen in einem lokalen Cache-Arbeitsspeicher des Prozessors der Rechenvorrichtung umfasst.
  12. Rechenvorrichtung nach einem der Ansprüche 1-9, wobei das Sichern des Prozessorzustandes Folgendes umfasst: Bestimmen, ob in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; Verschlüsseln des Prozessorzustandes des Prozessors, um einen verschlüsselten Prozessorzustand zu erzeugen, in Reaktion auf eine Bestimmung, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; Berechnen eines Integritätsprüfwerts über den Prozessorzustand in Reaktion auf die Bestimmung, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; und Speichern des verschlüsselten Prozessorzustandes und des Integritätsprüfwerts.
  13. Verfahren für die sichere Codeausführung, wobei das Verfahren Folgendes umfasst: Konfigurieren eines Nur-Ausführungs-Transaktionsbereichs eines Arbeitsspeichers der Rechenvorrichtung durch eine Rechenvorrichtung, wobei der Nur-Ausführungs-Transaktionsbereich nicht als Daten gelesen oder beschrieben werden kann; und Bestimmen in Reaktion auf eine andere Änderung des Steuerablaufs als eine Verzweigung durch die Rechenvorrichtung, ob eine letzte physikalische Befehlszeigeradresse eines Prozessors der Rechenvorrichtung innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und Sichern eines Prozessorzustandes des Prozessors durch den Prozessor in Reaktion auf die Bestimmung, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  14. Verfahren nach Anspruch 13, wobei das Verfahren ferner Folgendes umfasst: Ausführen eines Rücksetzvektors durch die Rechenvorrichtung; und Laden eines Nur-Ausführungs-Transaktionscodebildes durch die Rechenvorrichtung in den Nur-Ausführungs-Transaktionsbereich des Arbeitsspeichers in Reaktion auf die Ausführung des Rücksetzvektors; wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs in Reaktion auf das Laden des Nur-Ausführungs-Transaktionscodebildes umfasst.
  15. Verfahren nach Anspruch 14, das ferner das Ausführen des Nur-Ausführungs-Transaktionscodebildes durch die Rechenvorrichtung in Reaktion auf das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers umfasst, wobei das Ausführen des Nur-Ausführungs-Transaktionscodebildes das Konfigurieren einer Port-E/A-Vorrichtung der Rechenvorrichtung mit einem Geheimnis, das als unmittelbarer Wert eines Befehls des Nur-Ausführungs-Transaktionscodebildes gespeichert ist, umfasst.
  16. Verfahren nach Anspruch 13, wobei das Konfigurieren des Nur-Ausführungs-Transaktionsbereichs des Arbeitsspeichers Folgendes umfasst: Ausführen eines Seitenverfehlungssteuerprogramms des Prozessors durch den Prozessor der Rechenvorrichtung in Reaktion auf ein Seitenverfehlen; Bestimmen einer Abbildung einer virtuellen auf eine physikalische Adresse durch das Seitenverfehlungssteuerprogramm in Reaktion auf das Seitenverfehlen, wobei die Abbildung der virtuellen auf die physikalische Adresse eine virtuelle Arbeitsspeicheradresse einer physikalischen Arbeitsspeicheradresse zuordnet; Bestimmen durch das Seitenverfehlungssteuerprogramm, ob die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; Belegen eines Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse durch das Seitenverfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und Verhindern durch das Seitenverfehlungssteuerprogramm, dass ein Datenadressenübersetzungspuffer des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse belegt wird, in Reaktion auf die Bestimmung, dass die physikalische Seitenadresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt.
  17. Verfahren nach Anspruch 16, das ferner Folgendes umfasst: Bestimmen durch das Seitenverfehlungssteuerprogramm, ob eine Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, einer Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch eine Seitentabelle der Rechenvorrichtung zugeordnet ist; und Erzeugen einer Seitengrößenfehlanpassungsstörung durch das Seitenverfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, nicht der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist; wobei das Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse ferner das Belegen des Befehlsadressenübersetzungspuffers des Prozessors mit der Abbildung der virtuellen auf die physikalische Adresse in Reaktion auf die Bestimmung, dass die Seitengröße, die dem Nur-Ausführungs-Transaktionsbereich zugeordnet ist, der Seitengröße entspricht, die der physikalischen Arbeitsspeicheradresse durch die Seitentabelle zugeordnet ist, umfasst.
  18. Verfahren nach Anspruch 16, wobei das Bestimmen, ob die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, das Bestimmen eines letzten Übersetzungswerts des Befehlsadressenübersetzungspuffers des Prozessors umfasst.
  19. Verfahren nach Anspruch 16, das ferner Folgendes umfasst: Ausführen eines Verfehlungssteuerprogramms des Prozessors durch den Prozessor in Reaktion auf eine Befehlsadressenübersetzungspufferverfehlung; Bestimmen durch das Verfehlungssteuerprogramm, ob eine physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb eines Nur-Ausführungs-Transaktionsbereichs liegt; Bestimmen durch das Verfehlungssteuerprogramm, ob die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, an einem autorisierten Eintrittspunkt liegt, in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und Erzeugen einer Störung durch das Verfehlungssteuerprogramm in Reaktion auf die Bestimmung, dass die physikalische Arbeitsspeicheradresse, die der Befehlsadressenübersetzungspufferverfehlung zugeordnet ist, nicht an einem autorisierten Eintrittspunkt liegt.
  20. Verfahren nach Anspruch 13, wobei: das Bestimmen in Reaktion auf die Änderung des Steuerablaufs, ob die letzte physikalische Befehlszeigeradresse des Prozesses innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, Folgendes umfasst: Ausführen eines Unterbrechungssteuerprogramms des Prozessors durch den Prozessor der Rechenvorrichtung in Reaktion auf die Änderung des Steuerablaufs; und Bestimmen durch das Unterbrechungssteuerprogramm, ob die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt; und wobei das Sichern des Prozessorzustandes das Sichern des Prozessorzustandes des Prozessors durch das Unterbrechungssteuerprogramm in Reaktion auf die Bestimmung, dass die letzte physikalische Befehlszeigeradresse innerhalb des Nur-Ausführungs-Transaktionsbereichs liegt, umfasst.
  21. Verfahren nach Anspruch 13, wobei das Sichern des Prozessorzustandes des Prozessors das Löschen von einem oder mehreren Registern des Prozessors, das Löschen eines Thread-lokalen Speicherarbeitsspeicherbereichs der Rechenvorrichtung oder das Löschen von veränderten Einträgen in einem lokalen Cache-Arbeitsspeicher des Prozessors der Rechenvorrichtung umfasst.
  22. Verfahren nach Anspruch 13, wobei das Sichern des Prozessorzustandes Folgendes umfasst: Bestimmen, ob in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; Verschlüsseln des Prozessorzustandes des Prozessors, um einen verschlüsselten Prozessorzustand zu erzeugen, in Reaktion auf das Bestimmen, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; Berechnen eines Integritätsprüfwerts über den Prozessorzustand in Reaktion auf die Bestimmung, dass in den Nur-Ausführungs-Transaktionsbereich korrekt eingetreten wurde; und Speichern des verschlüsselten Prozessorzustandes und des Integritätsprüfwerts.
  23. Rechenvorrichtung, die Folgendes umfasst: einen Prozessor; und einen Arbeitsspeicher, in dem mehrere Befehle gespeichert sind, die, wenn sie durch den Prozessor ausgeführt werden, bewirken, dass die Rechenvorrichtung das Verfahren nach einem der Ansprüche 13-22 durchführt.
  24. Maschinenlesbares Speichermedium oder mehrere maschinenlesbare Speichermedien mit mehreren darauf gespeicherten Befehlen, die in Reaktion darauf, dass sie ausgeführt werden, dazu führen, dass eine Rechenvorrichtung das Verfahren nach einem der Ansprüche 13-22 durchführt.
  25. Rechenvorrichtung mit Mitteln zum Durchführen des Verfahrens nach einem der Ansprüche 13-22.
DE112016004476.3T 2015-10-02 2016-09-02 Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher Pending DE112016004476T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562236405P 2015-10-02 2015-10-02
US62/236,405 2015-10-02
US14/974,972 2015-12-18
US14/974,972 US10558582B2 (en) 2015-10-02 2015-12-18 Technologies for execute only transactional memory
PCT/US2016/050093 WO2017058463A1 (en) 2015-10-02 2016-09-02 Technologies for execute only transactional memory

Publications (1)

Publication Number Publication Date
DE112016004476T5 true DE112016004476T5 (de) 2018-06-14

Family

ID=58427352

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016004476.3T Pending DE112016004476T5 (de) 2015-10-02 2016-09-02 Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher

Country Status (4)

Country Link
US (3) US10558582B2 (de)
CN (2) CN115357527A (de)
DE (1) DE112016004476T5 (de)
WO (1) WO2017058463A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416414B2 (en) 2015-10-02 2022-08-16 Intel Corporation Technologies for execute only transactional memory

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180004946A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Regulating control transfers for execute-only code execution
US10083126B2 (en) * 2016-12-06 2018-09-25 Arm Limited Apparatus and method for avoiding conflicting entries in a storage structure
GB2562102B (en) 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities
US11055401B2 (en) * 2017-09-29 2021-07-06 Intel Corporation Technologies for untrusted code execution with processor sandbox support
US10706150B2 (en) * 2017-12-13 2020-07-07 Paypal, Inc. Detecting malicious software by inspecting table look-aside buffers
US10635445B2 (en) * 2018-05-29 2020-04-28 Arm Limited Handling modifications to permitted program counter ranges in a data processing apparatus
US11954026B1 (en) * 2018-09-18 2024-04-09 Advanced Micro Devices, Inc. Paging hierarchies for extended page tables and extended page attributes
US20210182390A1 (en) * 2019-03-27 2021-06-17 Mark Winterrowd Memory management to reduce risk of malicious third-party attacks
CN111722878A (zh) * 2020-06-19 2020-09-29 北京集创北方科技股份有限公司 芯片启动控制方法、芯片、显示面板及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097497A1 (en) 2011-10-14 2013-04-18 Autodesk, Inc. In-product questions, answers, and tips

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114687A1 (en) * 2003-11-21 2005-05-26 Zimmer Vincent J. Methods and apparatus to provide protection for firmware resources
US20090204969A1 (en) 2008-02-11 2009-08-13 Microsoft Corporation Transactional memory with dynamic separation
US7895404B2 (en) * 2008-02-14 2011-02-22 Atmel Rousset S.A.S. Access rights on a memory map
GB2460393B (en) * 2008-02-29 2012-03-28 Advanced Risc Mach Ltd A data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuitry
CN102144218A (zh) 2008-07-28 2011-08-03 超威半导体公司 可虚拟化的先进同步设备
US8327188B2 (en) 2009-11-13 2012-12-04 Oracle America, Inc. Hardware transactional memory acceleration through multiple failure recovery
US9256552B2 (en) * 2011-11-21 2016-02-09 Cisco Technology, Inc. Selective access to executable memory
US8914586B2 (en) 2012-07-31 2014-12-16 Advanced Micro Devices, Inc. TLB-walk controlled abort policy for hardware transactional memory
US8943278B2 (en) 2012-07-31 2015-01-27 Advanced Micro Devices, Inc. Protecting large regions without operating-system support
US9720843B2 (en) * 2012-12-28 2017-08-01 Intel Corporation Access type protection of memory reserved for use by processor logic
US9489316B2 (en) 2013-03-15 2016-11-08 Freescale Semiconductor, Inc. Method and device implementing execute-only memory protection
US10007784B2 (en) 2015-03-27 2018-06-26 Intel Corporation Technologies for control flow exploit mitigation using processor trace
US10558582B2 (en) 2015-10-02 2020-02-11 Intel Corporation Technologies for execute only transactional memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097497A1 (en) 2011-10-14 2013-04-18 Autodesk, Inc. In-product questions, answers, and tips

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416414B2 (en) 2015-10-02 2022-08-16 Intel Corporation Technologies for execute only transactional memory
US11829299B2 (en) 2015-10-02 2023-11-28 Intel Corporation Technologies for execute only transactional memory

Also Published As

Publication number Publication date
US11416414B2 (en) 2022-08-16
CN115357527A (zh) 2022-11-18
US10558582B2 (en) 2020-02-11
CN107949832A (zh) 2018-04-20
CN107949832B (zh) 2022-09-13
WO2017058463A1 (en) 2017-04-06
US20200142837A1 (en) 2020-05-07
US11829299B2 (en) 2023-11-28
US20170097898A1 (en) 2017-04-06
US20220382684A1 (en) 2022-12-01

Similar Documents

Publication Publication Date Title
DE112016004476T5 (de) Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher
US11734199B2 (en) Enforcing memory operand types using protection keys
DE102006015106B4 (de) Bereitstellen eines erweiterten Speicherschutzes
CN109002706B (zh) 一种基于用户级页表的进程内数据隔离保护方法和系统
DE102007062744B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
DE102020125599A1 (de) Vertrauenswürdige lokale speicherverwaltung in einer virtualisierten gpu
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
DE10297433B4 (de) Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor
DE10195999B3 (de) Computersystem mit einer in einem Chipsatz enthaltenen Speichersteuereinrichtung zum Kontrollieren von Zugriffen auf einen isolierten Speicher für eine isolierte Ausführung
DE102018123710A1 (de) Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE102011082184A1 (de) Sicherheitsschutz für Speicherinhalt von Prozessorhauptspeicher
DE102020208234A1 (de) Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE102018115670A1 (de) Technologien für die Ausführung von nicht vertrauenswürdigem Code mit Prozessor-Sandbox-Unterstützung
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE102013111339A1 (de) Sicherheitsverwaltungseinheit, Hostcontrollerschnittstelle mit derselben, Verfahren zum Betreiben einer Hostcontrollerschnittstelle und Vorrichtungen mit einer Hostcontrollerschnittstelle
DE102009017496B4 (de) Speicherzugriff in einem System mit Speicherschutz
DE102019108266A1 (de) Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit
DE102020122311A1 (de) Sicheres-netzwerken-protokoll-optimierung über nic-hardware-auslagern
CN110928737B (zh) 监控样本进程的内存访问行为的方法和装置
DE112019000594T5 (de) Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen
KR20210075064A (ko) 신뢰 중재자 영역
DE102017104080A1 (de) Generalisiertes verifizierungsschema für sichere metadaten-modifizierung
Chen et al. Pd-dm: An efficient locality-preserving block device mapper with plausible deniability

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MAIWALD GMBH, DE

Representative=s name: MAIWALD PATENTANWALTS- UND RECHTSANWALTSGESELL, DE

R012 Request for examination validly filed