DE102018115504A1 - Techniken zum Bereitstellen von Schutz vor Zugriff auf gemeinsam verwendeten virtuellen Speicher - Google Patents

Techniken zum Bereitstellen von Schutz vor Zugriff auf gemeinsam verwendeten virtuellen Speicher Download PDF

Info

Publication number
DE102018115504A1
DE102018115504A1 DE102018115504.2A DE102018115504A DE102018115504A1 DE 102018115504 A1 DE102018115504 A1 DE 102018115504A1 DE 102018115504 A DE102018115504 A DE 102018115504A DE 102018115504 A1 DE102018115504 A1 DE 102018115504A1
Authority
DE
Germany
Prior art keywords
memory
request
svm
transaction request
iommu
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
DE102018115504.2A
Other languages
English (en)
Inventor
Anna Trikalinou
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 DE102018115504A1 publication Critical patent/DE102018115504A1/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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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/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/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/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/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

Diverse Ausführungsformen betreffen im Allgemeinen Techniken für Zugriffsschutz für gemeinsam verwendeten virtuellen Speicher (Shared Virtual Memory- SVM), wie durch Durchführen einer Sicherheitsprüfung, jedes Mal, wenn eine Schreibanfrage zum Beispiel von einer SVM-Vorrichtung ankommt. Einige Ausführungsformen betreffen insbesondere eine Eingangs-/Ausgangs-Speicherverwaltungseinheit (Input/Output Memory Management Unit-IOMMU), die eine SVM-Vorrichtung daran hindert, eine Zeichenumsetztabelle mit einer Speichertransaktionsanfrage durch Erzeugen eines Zugriffsanfragefehlers und/oder eines Übersetzungsabschlusses mit NurleseZugriff als Reaktion auf die Speichertransaktionsanfrage zu ändern.

Description

  • ALLGEMEINER STAND DER TECHNIK
  • Gemeinsamer Speicher kann auf Speicher verweisen, auf den gleichzeitig mehrere Programme oder Prozesse mit einer Absicht zugreifen, Kommunikation unter ihnen bereitzustellen oder redundante Kopien zu vermeiden. Virtueller Speicher kann auf eine Speicherverwaltungstechnik verweisen, die Speicheradressen, die von einem Programm oder Prozess verwendet werden, die virtuelle Adressen genannt werden, zu physischen Adressen in einem Computerspeicher abbildet. Bei diversen Ausführungsformen kann die Übersetzung zu/von einer virtuellen Adresse von/zu einer physischen Adresse transparent für das Programm oder den Prozess erfolgen. Typischerweise kann ein Betriebssystem (Operating System- OS) die virtuellen Adressräume und das Zuweisen des physischen Speichers zu virtuellem Speicher verwalten.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform einer ersten Betriebsumgebung.
    • 2A veranschaulicht eine Ausführungsform einer zweiten Betriebsumgebung.
    • 2B veranschaulicht eine Ausführungsform einer dritten Betriebsumgebung.
    • 3 veranschaulicht eine Ausführungsform einer vierten Betriebsumgebung.
    • 4 veranschaulicht eine Ausführungsform einer fünften Betriebsumgebung.
    • 5A veranschaulicht eine Ausführungsform eines ersten Logikablaufs.
    • 5B veranschaulicht eine Ausführungsform eines zweiten Logikablaufs.
    • 6A veranschaulicht eine Ausführungsform eines dritten Logikablaufs.
    • 6B veranschaulicht eine Ausführungsform eines vierten Logikablaufs.
    • 7 veranschaulicht eine Ausführungsform eines Speichermediums.
    • 8 veranschaulicht eine Ausführungsform einer Rechenarchitektur.
    • 9 veranschaulicht eine Ausführungsform eine Kommunikationsarchitektur.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Diverse Ausführungsformen betreffen im Allgemeinen Techniken für Zugriffsschutz für gemeinsam verwendeten virtuellen Speicher (Shared Virtual Memory-SVM), wie durch Durchführen einer Sicherheitsprüfung, jedes Mal, wenn eine Schreibanfrage zum Beispiel von einer SVM-Vorrichtung ankommt. Einige Ausführungsformen betreffen insbesondere eine Eingangs-/Ausgangs-Speicherverwaltungseinheit (Input/Output Memory Management Unit- IOMMU), die eine SVM-Vorrichtung daran hindert, eine Zeichenumsetztabelle mit einer Speichertransaktionsanfrage durch Erzeugen eines Zugriffsanfragefehlers und/oder eines Übersetzungsabschlusses mit Nurlese-Zugriff als Reaktion auf die Speichertransaktionsanfrage zu ändern. Bei diversen Ausführungsformen können die Speichertransaktionsanfragen eine oder mehrere einer von Speicherzugriffsanfragen und Speicherübersetzungsanfragen aufweisen. Bei einer Ausführungsform, kann zum Beispiel ein Gerät für Speicherzugriffsschutz einen Speicher und eine Logik für eine IOMMU umfassen, wobei mindestens ein Abschnitt der Logik in Schaltungen mit dem Speicher gekoppelt ist. Bei diversen Ausführungsformen kann die Logik eine Speicherzugriffsanfrage empfangen, einen zwischengespeicherten Übersetzungseintrag, der mit einer Adresse assoziiert ist, die in der Speicherzugriffsanfrageenthalten ist, identifizieren, und bestimmen, ob die Speicherzugriffsanfrage basierend auf einem Typ der Speichertransaktionsanfrage und einem Genehmigungssatz, der in dem zwischengespeicherten Übersetzungseintrag enthalten ist, auszuführen ist. Bei einigen Ausführungsformen kann die Logik eine Speicherübersetzungsanfrage empfangen und bestimmen, ob ein Übersetzungsabschluss mit Lese- und Schreibzugriff oder Nurlese-Zugriff basierend darauf, ob eine Speicherseite, die mit der Übersetzungsanfrage assoziiert ist, ausführbar ist, auszuführen ist. Diese und andere Ausführungsformen sind beschrieben und beansprucht.
  • Einige Herausforderungen angesichts von IOMMUs weisen die Unfähigkeit auf, eine Sicherheitsprüfung auszuführen, um eine SVMVorrichtung daran zu hindern, eine Zeichenumsetztabelle zu ändern. Diese Herausforderungen können aus einer SVM-Vorrichtung resultieren, die impliziten Zugriff zu dem gesamten Prozessspeicherraum hat. In einigen Situationen können diese Herausforderungen einen Angriffsvektor für einen böswilligen Benutzer bereitstellen. Ein böswilliger Benutzer kann zum Beispiel eine Arbeitslast einer SVM-Vorrichtung manipulieren, um den Prozessspeicher einer Zentraleinheit (Central Processing Unit- CPU) zu korrumpieren und ihren Steuerablauf zu hijacken. Weitere Komplexheit fügt hinzu, dass viele Anwendungen die Lese, Schreib- und Ausführungsgenehmigungen ihrer eigenen Speicherseiten auswählen können. Zum Beispiel können sowohl Schreib- als auch Ausführungsgenehmigungen gleichzeitig gewährt werden, wie zum Beispiel bei Just-In-Time (JIT)-Code, Packern, selbstmodifizierendem Code und dem Kern. Diese und andere Faktoren können in einer IOMMU mit dürftiger Sicherheit und beschränkter Funktionalität resultieren. Solche Einschränkungen können die Nutzbarkeit und Anwendbarkeit der IOMMU drastisch verringern, zu ineffektiven Systemen mit Sicherheitsschwachstellen und beschränkten Fähigkeiten beitragen.
  • Diverse Ausführungsformen, die hier beschrieben sind, weisen eine IOMMU auf, die eine SVM-Vorrichtung, wie einen Hardwarebeschleuniger (zum Beispiel, eine Grafikverarbeitungseinheit (Graphics Processing Unit- GPU)), durch Ausführen einer oder mehreren Sicherheitsprüfungen daran hindern können, die Zeichenumsetztabelle einer CPU zu ändern. Bei einer oder mehreren Ausführungsformen können die Sicherheitsprüfungen wirken, um Schreibzugriffe, die von einer SVM-Vorrichtung zu einer CPU-Zeichenumsetztabelle ausgehen, einzuschränken. Diese und andere Merkmale, die hier beschrieben sind, können eine SVM-Vorrichtung daran hindern, dazu verwendet zu werden, das Verhalten der CPU zu attackieren und zu manipulieren. Bei einigen Ausführungsformen kann die IOMMU zum Beispiel eine Sicherheitsprüfung derart ausführen, dass, jedes Mal, wenn eine Schreibanfrage von einerSVM-Vorrichtung ankommt, falls die angefragte Tabelle präsent und ausführbar ist, ein Zugriffsverstoßfehler erzeugt und die Anfrage beendet wird. Bei einem anderen Beispiel kann die IOMMU eine Sicherheitsprüfung derart ausführen, dass, jedes Mal, wenn eine Speicherübersetzungsanfrage, die einem Schreibvorgang entspricht, von einer SVM Vorrichtung ankommt, falls eine Speicherseite, die mit der Übersetzungsanfrage assoziiert ist, ausführbar ist, eine Übersetzungsabschluss mit Nurlese-Zugriff erzeugt wird. Das kann eine bösartige oder verletzbare Vorrichtung daran hindern, den Prozessspeicher der CPU zu korrumpieren und eine willkürliche Codeausführung mit den Privilegien des CPU-Prozesses zu verursachen. Außerdem können bei diversen Ausführungsformen Effizienzen durch Ausführen der Sicherheitsprüfungen basierend auf einem oder mehreren Bits in Zwischenspeichereinträgen, wie in einem Translation Lookaside Buffer (TLB)-Zwischenspeicher verwirklicht werden. Bei diversen solchen Ausführungsformen, kann das Overhead, wie zusätzliche Seitenläufe, verhindern.
  • Auf diese und andere Arten kann die IOMMU zuverlässige und effiziente Sicherheitsprüfungen ermöglichen, um verbesserten Speicherzugriffsschutz für gemeinsam verwendeten virtuellen Speicher von SVM-Vorrichtungen zu erzielen, während Angriffsvektoren für böswillige Benutzer, verringern werden, was in mehreren technischen Effekten und Vorteilen resultiert.
  • Mit allgemeinem Verweis auf Anmerkungen und Nomenklatur, die hier verwendet werden, können ein oder mehrere Abschnitte der folgenden ausführlichen Beschreibung hinsichtlich Programmvorgehensweisen, die auf einem Computer oder einem Netzwerk von Computern ausgeführt werden, präsentiert werden. Diese Verfahrensbeschreibungen und Darlegungen werden vom Fachmann verwendet, um den Gehalt seiner Arbeit anderen Fachleuten so effektiv wie möglich zu vermitteln. Eine Vorgehensweise wird hier und allgemein als eine selbstkonsistente Abfolge von Operationen betrachtet, die zu einem gewünschten Resultat führt. Diese Operationensind diejenigen, die physische Manipulationen und physische Mengen erfordern. Diese Mengen nehmen gewöhnlich aber nicht unbedingt die Form elektrischer, magnetischer oder optischer Signale an, die gespeichert, übertragen, kombiniert, verglichen und anderswie manipuliert werden können. Gelegentlich erweist es sich in der Hauptsache aus Gründen gängiger Verwendung als praktisch, diese Signale Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu nennen. Es muss jedoch berücksichtigt werden, dass alle diese und ähnliche Begriffe mit den zweckdienlichen physischen Mengen zu assoziieren sind und nur praktische Bezeichnungen, die an diese Mengen angewandt werden, sind.
  • Diese Manipulationen werden oft Hinzufügen oder Vergleichen genannt, die gewöhnlich mit geistigen Vorgängen, die von einem menschlichen Bediener ausgeführt werden, assoziiert sind. Es ist jedoch in den meisten Fällen bei beliebigen der Operationen, die hier beschrieben sind, die Teil einer oder mehrerer Ausführungsformen sind, keine solche Fähigkeit eines menschlichen Bedieners erforderlich oder wünschenswert. Diese Operationen sind vielmehr Maschinenoperationen. Nützliche Maschinen zum Ausführen von Operationen diverser Ausführungsformen weisen digitale Allzweckcomputer als selektiv von einem Computerprogramm, das darin gespeichert ist, das in Übereinstimmung mit den Lehren hierin geschrieben ist, aktiviert oder konfiguriert auf, und/oder weisen Geräte, die speziell für den erforderlichen Zweck gebaut sind, auf. Diverse Ausführungsformen betreffen auch Geräte oder Systeme zum Ausführen dieser Operationen. Diese Geräte können speziell für den erforderlichen Zweck gebaut sein oder können einen Allzweckcomputer aufweisen. Die erforderliche Struktur für eine Vielfalt dieser Maschinen ergibt sich aus der gegebenen Beschreibung.
  • Es wird nun auf die Zeichnungen verwiesen, in welchen gleiche Bezugszeichen verwendet werden, um durchgehend auf gleiche Elemente zu verweisen. In der folgenden Beschreibung werden zum Zweck der Erklärung zahlreiche spezifische Details dargelegt, um ein umfassendes Verständnis der vorliegenden Erfindung zu ermöglichen. Es ist jedoch offensichtlich, dass die neuen Ausführungsformen ohne diese spezifischen Details umgesetzt werden können. Bei anderen Fällen sindgut bekannte Strukturen und Vorrichtungen in Blockschaltbildform gezeigt, um ihre Beschreibung zu erleichtern. Es wird beabsichtigt, alle Änderungen, Äquivalente und Alternativen innerhalb des Schutzbereichs der Ansprüche zu decken.
  • 1 veranschaulicht ein Beispiel einer Betriebsumgebung 100, die für diverse Ausführungsformen repräsentativ sein kann. Die Betriebsumgebung 100 kann gemeinsame virtuelle Speicher (SVM)-Vorrichtungen 102-1, 102-2, 102-n, eine Eingangs-/Ausgangs- Speicherverwaltungseinheit (IOMMU) 104, gemeinsam verwendeten virtuellen Speicher (SVM) 106 und eine CPU 108 aufweisen. In der Betriebsumgebung 100, kann die IOMMU 104 Speicheroperationen zwischen den SVM Vorrichtungen 102-1, 102-2, 102-n und dem SVM 106 unterstützen. Die IOMMU 104 kann zum Beispiel Schreibzugriffe, die von einer SVM-Vorrichtung (zum Beispiel SVM-Vorrichtung 102-1, 102-2 oder 102-n) zu der Zeichenumsetztabelle einer CPU (zum Beispiel CPU 108) ausgehen, einschränken, so dass die SVM-Vorrichtung nicht verwendet werden kann, um das Verhalten der CPU zu attackieren und zu manipulieren. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Bei diversen Ausführungsformen kann die IOMMU 104 Speicheroperationen zwischen den SVM-Vorrichtungen 102-1, 102-2, 102-n und dem SVM 106 erleichtern und steuern. Bei diversen solchen Ausführungsformen, kann die IOMMU 104 eine Speicherverwaltungseinheit sein, die einen für Direktspeicherzugriff (Direct Memory Access - DMA) fähigen Eingangs-/Ausgangs (E/A)-Bus mit dem Hauptspeicher verbindet. Bei einer oder mehreren Ausführungsformen können die SVM-Vorrichtungen 102 Speichertransaktionsanfragen zu der IOMMU 104 ausgeben. Bei einer oder mehreren solchen Ausführungsformen, können die Speichertransaktionsanfragen eine oder mehrere einer von Speicherzugriffsanfragen und Speicherübersetzungsanfragen aufweisen. Bei diversen Ausführungsformen können die Speicherzugrffsanfragen Lese- und/oder Schreibvorgänge aufweisen. Bei vielen Ausführungsformen können die Speicherübersetzungsanfragen die Umwandlung einer Speicheradresse zwischen diversen Abbildungen (zum Beispiel virtuell, linear, physisch usw.) aufweisen. Bei vielen solchen Ausführungsformen, können die Speicherübersetzungsanfragen das Adressübersetzungsservice (Address Translation Service- ATS)-Protokoll einsetzen. Bei einigen Ausführungsformen kann der Hauptspeicher ein beliebiger Speicher sein, auf den die CPU 108 direkt zugreifen kann. Der Hauptspeicher kann zum Beispiel Direktzugriffsspeicher (Random Access Memory - RAM) umfassen. Bei diversen Ausführungsformen kann der Hauptspeicher kommunikationsfähig mit der CPU 108 über einen Speicherbus gekoppelt sein. Bei diversen solchen Ausführungsformen, kann die IOMMU 104 eine Speichertransaktionsanfrage empfangen, bevor die Speichertransaktionsanfrage durch den Speicherbus geht. Bei anderen solchen Ausführungsformen, kann die IOMMU 104 eine Speichertransaktionsanfrage empfangen, nachdem die Speichertransaktionsanfrage durch den Speicherbus durchgegangen ist. Auf eine selbe oder eine ähnliche Art, kann die IOMMU 104 eine Speichertransaktionsanfrage von einer SVMVorrichtung empfangen.
  • Bei einer oder mehreren Ausführungsformen, kann die Betriebsumgebung 100 einen Satz aus einer oder mehreren IOMMUs aufweisen. Die SVM-Vorrichtung 102-1 kann zum Beispiel eine dedizierte IOMMU haben, während die SVM-Vorrichtungen 102-2, 102-n eine zweite IOMMU gemeinsam verwenden. Diverse Ausführungsformen, die hier beschrieben sind, können eine oder mehrere IOMMUs aufweisen, die intern Sicherheitsprüfungen ausführen. Bei diversen solchen Ausführungsformen, können die Sicherheitsprüfungen in dedizierter Hardware und/oder Schaltungen umgesetzt werden. Bei einer oder mehreren Ausführungsformen, kann die CPU 108 eine MMU besitzen oder einsetzen. Bei einigen Ausführungsformen können die Sicherheitsprüfungen ohne Modifizieren beliebiger existierender Steuerflüsse (zum Beispiel der CPU 108) ausgeführt werden. Bei diversen Ausführungsformen, können die Sicherheitsprüfungen ohne zusätzliche Seitenläufe ausgeführt werden. Bei einer oder mehreren Ausführungsformen, können die Fähigkeiten einen globalen und High-Impact-Fix für Sicherheitsschwachstellen mit minimalen Hardwareänderungen ermöglichen.
  • Bei einigen Ausführungsformen, kann die IOMMU 104 einen Prozess der CPU 108 zum direkten gemeinsamen Verwenden von Ressourcen des SVM 106 mit einer oder mehreren SVM-Vorrichtungen (zum Beispiel SVM-Vorrichtung 102-1, 102-2, 102-n) ermöglichen. Aus der Sicht der Softwareanwendung, kann dies nahtloses gemeinsames Verwenden einer Zeiger-basierten Datenstruktur erlauben, während es aus der Sicht gemeinsames Verwenden von Prozessspeicher-Seitentabelle und Vorrichtungsseiten-Faulting erlaubt. Durch Verwenden des SVM 106, kann die SVM Vorrichtung jedoch impliziten Zugang zu einem gesamten 64-Bit-Prozessspeicher haben, und ohne dass die IOMMU 104 eine Sicherheitsprüfung ausführt, um Schreibzugriffe, die von einer SVM Vorrichtung zu einer CPU-Zeichenumsetztabelle ausgehen, kann die SVM-Vorrichtung als ein Mittel zum Attackieren und Manipulieren des Verhaltens der CPU verwendet werden.
  • Bei einer oder mehreren Ausführungsformen, die hier beschrieben sind, kann die IOMMU 104 folglich eine Sicherheitsprüfung ausführen, um zu bestimmen, ob oder wie eine Speichertransaktionsanfrage (zum Beispiel eine Speicherübersetzungsanfrage und/oder eine Speicherzugriffsanfrage) basierend auf einem oder mehreren Attributen der Anfrage, wie eine Source oder ein Typ, und einem assoziierten Genehmigungssatz auszuführen ist. Das Bestimmen, ob eine Speichertransaktionsanfrage auszuführen ist, kann zum Beispiel auf einem oder mehreren, ob eine Quelle einer Speichertransaktionsanfrage eine SVM-Vorrichtung ist, ob die Speichertransaktionsanfrage eine Speicherübersetzungsanfrage ist, ob die Speichertransaktionsanfrage eine Schreibanfrage aufweist oder damit assoziiert ist, ob ein assoziierter Genehmigungssatz die Speichertransaktionsanfrage erlaubt oder einschränkt, ob eine Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent ist, und ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist, basieren. Bei einigen Ausführungsformen, kann der assoziierte Genehmigungssatz in einem Übersetzungseintrag, der in einem Zwischenspeicher gespeichert ist, enthalten sein.
  • Wenn die IOMMU 104 bei einigen Ausführungsformen eine Speichertransaktionsanfrage für den SVM 106 empfängt, kam sie bestimmen, ob die Quelle der Speichertransaktionsanfrage eine SVM-Vorrichtung (zum Beispiel SVM-Vorrichtung 102-1, 102-2 oder 102-n) ist. Wenn die IOMMU 104 bei einigen solchen Ausführungsformen, bestimmt, dass eine Speichertransaktionsanfrage von einer SVM-Vorrichtung empfangen wurde, kann sie bestimmen, ob die Speichertransaktionsanfrage eine Schreibanfrage ist. Falls die Speichertransaktionsanfrage jedoch nicht von einer SVM-Vorrichtung stammt und/oder keine Schreibanfrage ist, kann die IOMMU 104 de Speichertransaktionsanfrage bedienen, indem sie Daten von/zu dem SVM 106 zu/von der Quelle der Speichertransaktionsanfrage kommuniziert. Wenn eine Speichertransaktionsanfrage, die eine Leseanfrage umfasst, von einer SVM-Vorrichtung 102-2 empfangen wird, kann die IOMMU 104 zum Beispiel die Leseanfrage bedienen, indem sie Daten von dem SVM 106 zu der SVM-Vorrichtung 102-2 kommuniziert.
  • Wenn die IOMMU 104 eine Speichertransaktionsanfrage von einer SVM-Vorrichtung empfängt, die eine Schreibanfrage aufweist, kann die IOMMU 104 bei diversen Ausführungsformen eine Speicherseite in dem SVM 106 identifizieren, die mit der Schreibanfrage assoziiert ist, und bestimmen, ob die assoziierte Speicherseite präsent und ausführbar ist. Wenn die Speicherseite, die mit der Schreibanfrage assoziiert ist, bei diversen solchen Ausführungsformen, präsent und ausführbar ist, kann die IOMMU 104 einen Zugriffsverstoßfehler erzeugen, und die Anfrage kann beendet werden. Falls die Speicherseite, die mit der Schreibanfrage assoziiert ist, jedoch nicht präsent und/oder ausführbar ist, kann die IOMMU 104 die Schreibanfrage bedienen. Wenn eine Schreibanfrage zum Beispiel mit einer Speicherseite in dem SVM 106, die nicht ausführbar ist, assoziiert ist, kann die IOMMU 104 die Schreibanfragebedienen, indem sie Daten von der anfragenden SVM-Vorrichtung (zum Beispiel SVM-Vorrichtung 102-1, 102-2 oder 102-n) zu dem SVM 106 zum Speichern kommuniziert.
  • Bei einigen Ausführungsformen kann die IOMMU 104 für die Vorrichtung sichtbare virtuelle Adressen zu physischen Adressen gemäß einer Paging-Architektur abbilden. Bei einigen solchen Ausführungsformen, kann die IOMMU 104 ein oder mehrere einer Speichertransaktionsanfrage, eines Zwischenspeichereintrags, einer Seitentabelle, eines Seitenverzeichnisses oder einer Seitenverzeichnis-Zeigertabelle, die von der Paging-Architektur unterstützt wird, einsetzen, um eine für die Vorrichtung sichtbare virtuelle Adresse in eine physische Adresse umzuwandeln, eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, identifizieren, bestimmen, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent ist, und/oder bestimmen, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Die SVM-Vorrichtung 102-1 kann zum Beispiel eine Speichertransaktionsanfrage zu der IOMMU 104 senden, die eine für die Vorrichtung sichtbare virtuelle Adresse aufweist. Die IOMMU 104 kann dann basierend auf der virtuellen Adresse ein oder mehrere eines Zwischenspeichereintrags, eines Seitenverzeichniszeigers, eines Seitenverzeichniseintrags, eines Seiten Tabelleneintrags, einer Speicherseite und einer physischen Adresse, die mit der Speichertransaktionsanfrage assoziiert ist, identifizieren oder bestimmen.
  • Bei diversen Ausführungsformen kann die Paging-Architektur ein oder mehrere Bits an Informationen in einem oder mehreren der Zwischenspeichereinträge, der Seitenverzeichniseinträge, der Seiten-Tabelleneinträge, der Speicherseite, der physischen Adressen oder anderswo unterstützen. Bei diversen solchen Ausführungsformen, können die Bits an Informationen von der IOMMU 104 verwendet werden, um ein oder mehrere Merkmale oder Attribute der Speichertransaktionsanfrage zu bestimmen, wie, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ein oder mehrere von präsent, lesbar, beschreibbar oder ausführbar ist. Ein Seiten-Tabelleneintrag, der mit einer Speichertransaktionsanfrage assoziiert ist, kann zum Beispiel Bits an Informationen aufweisen, die von der IOMMU 104 verwendet werden, um zu bestimmen, ob die Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, präsent ist, und ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Bei einer oder mehreren Ausführungsformen, kann die Paging-Architektur Erweiterung der physischen Adresse (Physical Address Extension - PAE) unterstützen.
  • Bei einigen Ausführungsformen kann eine Paging-Architektur verwendet werden, die ein Bit an Informationen unterstützt, um anzugeben, ob eine Speicherseite in dem Hauptspeicher präsent ist. Bei einigen solchen Ausführungsformen, kann dieses Bit an Informationen ein Präsenzbit genannt werden. Bei diversen Ausführungsformen, kann die IOMMU 104 basierend auf Präsenzbit bestimmen, ob eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent ist. Eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, kann zum Beispiel in dem Hauptspeicher präsent sein, falls das Präsenzbit 1 ist, und in dem Hauptspeicher nicht präsent sein, falls das Präsenzbit 0 ist. Bei diversen Ausführungsformen kann das Präsenzbit ein PAE-Bit sein. Bei einigen Ausführungsformen kann ein Präsenzbit Teil jedes Seitentabelleneintrags sein. Bei einigen solchen Ausführungsformen, kann das Präsenzbit das niedrigstwertige Bit jedes Seitentabelleneintrags sein.
  • Bei diversen Ausführungsformen kann eine Paging-Architektur verwendet werden, die ein Bit an Informationen unterstützt, um anzugeben, ob eine Speicherseite ausführbar ist. Bei diversen solchen Ausführungsformen, kann dieses Bit an Informationen ein Ausführungsbit genannt werden. Bei einigen Ausführungsformen, kann das Ausführungsbit Speicherbereiche für den Gebrauch entweder als Speicher von Prozessoranweisungen (zum Beispiel ausführbarer Code) oder zum Speichern von Daten trennen. Mit anderen Worten kann das Ausführungsbit definieren, ob die assoziierte Speicherseite von einer CPU (zum Beispiel CPU 108) verwendet werden kann, um Code daraus auszuführen. Bei diversen Ausführungsformen, kann das Ausführungsbit von der IOMMU 104 verwendet werden, um zu bestimmen, ob eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, ausführbar ist (das heißt, ob die Speicherseite zum Speichern von Prozessoranweisungen verwendet wird). Eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, kann zum Beispiel ausführbar sein, falls das Ausführungsbit 0 ist, und nicht ausführbar sein, falls das Ausführungsbit 1 ist. Bei einigen Ausführungsformen kann das Ausführungsbit ein PAE-Bit sein. Bei diversen Ausführungsformen kann ein Ausführungsbit Teil jedes Seitentabelleneintrags sein. Bei diversen solchen Ausführungsformen, kann das Ausführungsbit das höchstwertige Bit jedes Seitentabelleneintrags sein. Bei einigen Ausführungsformen kann das Ausführungsbit ein No-eXecute (NX)-Bit von Intel® 64 und Intel® Architecture (IA) 32-Paging-Architekturen sein. Bei einigen solchen Ausführungsformen, kann die IOMMU 104 basierend auf dem NX-Bit bestimmen, ob eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Bei einigen Ausführungsformen kann die IOMMU 104 eingesetzt werden, um auf physischen Speicher oder den SVM 106 zu zugreifen. Die IOMMU 104 kann eine Adresse, die mit einer Speichertransaktionsanfrage von einer virtuellen Gastadresse assoziiert ist, in eine physische Gastadresse über x86-Seitentabellen übersetzen, und von physischer Gastadresse zu physischer Hostadresse über erweiterte Seitentabellen (Extended Page Tables - EPTs). Bei diversen Ausführungsformen, können die Seitentabellenstrukturen aller MMUs dieselben sein, so dass physischer Speicher nahtlos von der CPU 108 und SVM-Vorrichtungen 102-1, 102-2, 102-n gemeinsam verwendet werden kann.
  • Bei einer oder mehreren Ausführungsformen können die Sicherheitsprüfungen die Seitentabellenstrukturen einsetzen. Die Seitentabellenstruktur kann zum Beispiel Informationen (zum Beispiel einen oder mehrere Sätze von Bits) darüber, ob eine bestimmte Seite ausführbar ist, aufweisen. Bei einigen solchen Ausführungsformen, kann diese Information in einem oder mehreren eines NX-Bits, Ausführungsdeaktivierung (XD)-Bit, SLEE-Bit von EPT, X-Bit von EPT oder dergleichen enthalten sein. Bei diversen Ausführungsformen kann die IOMMU 104 eine Sicherheitsprüfung ausführen. Bei diversen solchen Ausführungsformen, kann die Sicherheitsprüfung sicherstellen, dass, jedes Mal, wenn eine Schreibanfrage von einer SVM-Vorrichtung ankommt, falls die angefragte Seite präsent ist (Präsenzbit ist 1) und die Seite ausführbar ist (kumulatives X-Bit ist 1), ein Adressübersetzungsfehler (Address Translation Fault- ATF) erzeugt und die Anfrage beendet wird. Bei einer oder mehreren Ausführungsformen, die hier beschrieben sind, können Zwischenspeichereinträge als Reaktion auf Speichertransaktionsanfragen, die Daten wiedergeben, die die Speichertransaktionsanfrage betreffen, erzeugt werden. Der Zwischenspeichereintrag kann zum Beispiel wiedergeben, dass die Seite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht beschreibbar ist (Schreibzugriffsbit ist 0). Bei einigen solchen Beispielen, kann das von einem Genehmigungssatz, der in dem Zwischenspeichereintrag enthalten ist, wiedergegeben werden. Der Gebrauch dieser Zwischenspeichereinträge kann Leistungs-Overhead durch Verhindern eines Voll-Seitenlaufs minimiert werden.
  • Wie in der veranschaulichten Ausführungsform gezeigt, kann die IOMMU 104 kommunikationsfähig mit SVM-Vorrichtungen 102-1, 102-2, 102-n und SVM 106 gekoppelt sein. Man versteht, dass eine beliebige Anzahl von SVM-Vorrichtungen in diversen Ausführungsformen, wie von der 102-n-Bezeichnung angegeben, enthalten sein kann. Ausführungsformen, die hier beschrieben werden, können daher eine oder mehrere SVM-Vorrichtungen aufweisen. Bei einigen Ausführungsformen, kann eine SVM-Vorrichtung oder ein Bauteil, die gemeinsam verwendeten virtuellen Speicher einsetzt, um einen CPU-Prozess zu befähigen, Ressourcen direkt mit der Verrichtung oder dem Bauteil zu teilen, aufweisen. Eine CPU und eine SVM-Vorrichtung können zum Beispiel Ressourcen über einen Unified Virtual Address-Raum gemeinsam verwenden. Bei diversen Ausführungsformen, kann eine SVM-Vorrichtung ein oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgang (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP), einer anwendungsspezifischen integrierten Schaltung (ASIC) oder dergleichen aufweisen.
  • 2A veranschaulicht ein Beispiel einer Betriebsumgebung 200, die für diverse Ausführungsformen repräsentativ sein kann. Die Betriebsumgebung 200 kann einen Exception-Handler 210 zusätzlich zu der SVM-Vorrichtung 102, der IOMMU 104 und dem SVM 106 aufweisen. In der Betriebsumgebung 200 kann die IOMMU 104 eine Sicherheitsprüfung ausführen, um zu bestimmen, ob eine Speichertransaktionsanfrage, die von der SVM-Vorrichtung 102 empfangen wird, zu bedienen ist. Bei diversen Ausführungsformen, kann die Sicherheitsprüfung ein oder mehrere bestimmen von ob eine Quelle einer Speichertransaktionsanfrage eine SVM-Vorrichtung ist, ob die Speichertransaktionsanfrage eine Schreibanfrage ist, und ob eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent und ausführbar ist, bestimmen. Bei diversen solchen Ausführungsformen, kann die IOMMU 104 bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht und die Speichertransaktionsanfrage bedienen, außer wenn die Quelle der Speichertransaktionsanfrage eine SVM-Vorrichtung ist, die Speichertransaktionsanfrage eine Schreibanfrage ist, und die Speicherseite, die mitder Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent und ausführbar ist. Falls die IOMMU 104 andererseits bestimmt, dass die Speichertransaktionsanfrage die Sicherheitsprüfung nicht besteht und nicht bedient werden sollte, kann ein Zugriffsanfragefehler erzeugt und zu dem Exception-Handler 210 weitergegeben werden. Bei einer oder mehreren Ausführungsformen, kann die Sicherheitsprüfung basierend auf einem oder mehreren Einträgen in dem IOMMU-Zwischenspeicher 206 ausgeführt werden. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Bei den veranschaulichten Ausführungsformen, kann die IOMMU 104 einen Anfragenmanager 202, einen Seitenmanager 204, den IOMMUZwischenspeicher 206 und ein oder mehrere IOMMU-Register 208 aufweisen. Bei einigen Ausführungsformen, können die Bauteile der IOMMU 104 funktionieren, um zu bestimmen, wie Speichertransaktionsanfragen, die von der SVM-Vorrichtung 102 empfangen werden, zu handhaben sind. Die Bauteile der IOMMU 104 können zum Beispiel funktionieren, um Speichertransaktionsanfragen, die Schreibanfragen aufweisen, die von der SVM Vorrichtung 102 stammen, zu einer Zeichenumsetztabelle der CPU 108 einschränken, so dass der SVM-Vorrichtung 102 nicht verwendet werden kann, um das Verhalten der CPU 108 zu attackieren und zu manipulieren. Man versteht, dass, obwohl die Ausführungsform der IOMMU 104, die in 2 veranschaulicht ist, Bauteile aus Anfragenmanager 202, Seitenmanager 204, IOMMUZwischenspeicher 206 und IOMMU-Register(n) 208 aufweist, ein beliebiger Typ, eine beliebige Anzahl oder Kombination von Bauteilen eingesetzt werden kann, um die Funktionalität der IOMMU 104, die hier beschrieben ist, umzusetzen.
  • Wenn die IOMMU 104 bei diversen Ausführungsformen eine Speichertransaktionsanfragen, wie eine Speichertransaktionsanfrage empfängt, kann der Anfragenmanager 202 die Quelle der Speichertransaktionsanfrage bestimmen. Der Anfragenmanager 202 kann zum Beispiel bestimmen, dass die SVM-Vorrichtung 102 die Quelle der Speichertransaktionsanfrage war. Wenn die Quelle der Speichertransaktionsanfrage nicht eine SVM-Vorrichtung (zum Beispiel die SVM-Vorrichtung 102-1) ist, kann der Anfragenmanager 202 bei einigen Ausführungsformen bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht.
  • Falls der Anfragenmanager 202 bei einigen Ausführungsformen bestimmt, dass die Quelle der Speichertransaktionsanfrage eine SVM-Vorrichtung ist, und dass die Speichertransaktionsanfrage eine Schreibanfrage aufweist, kann der Seitenmanager 204 oder der IOMMU-Zwischenspeicher 206 von dem Anfragenmanager 202 eingesetzt werden, um eine Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, zu identifizieren. Bei diversen Ausführungsformen kann der Seitenmanager 204 ein(e) oder mehr der Speichertransaktionsanfragen, einer Seitentabelle, eines Seitenverzeichnisses oder einer Seitenverzeichnis-Zeigertabelle einsetzen, um die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, zu identifizieren. Sobald die Speicherseite, de mit der Speichertransaktionsanfrage assoziiert ist, identifiziert ist, kann der Anfragenmanager 202 den Seitenmanager 204 und/oder den IOMMU-Zwischenspeicher 206 einsetzen, um zu bestimmen, ob die Speicherseite in dem Hauptspeicher präsent ist, und ob die Speicherseite ausführbar ist.
  • Bei diversen Ausführungsformen kann basierend auf einem oder mehreren Bits an Informationen, die in einem Seitentabelleneintrag oder einem Zwischenspeichereintrag bestimmt werden, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, präsent und/oder ausführbar ist. Der Seitenmanager 204 kann zum Beispiel einen Seitentabelleneintrag, der mit der Speichertransaktionsanfrage assoziiert ist, identifizieren. In solchen Fällen kann der Seitenmanager 204 basierend auf einem ersten Bit in dem Seitentabelleneintrag bestimmen, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, präsent ist, und basierend auf einem zweiten Bit in dem Seitentabelleneintrag bestimmen, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Bei einigen Ausführungsformen kann der Seitenmanager 204 einen Hinweis, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent und/oder ausführbar ist, zu dem Anfragenmanager 202 weitergeben. Bei einer oder mehreren Ausführungsformen kann der Anfragenmanager 202 eine oder mehrere dieser Bestimmungen basierend auf einem oder mehreren Einträgen in dem IOMMU-Zwischenspeicher 206 vornehmen. Bei einer oder mehreren solchen Ausführungsformen, kann das den Seitenmanager 204 daran hindern, zusätzliche Seitenläufe auszuführen. Bei einigen Ausführungsformen, kann der CPU-Zwischenspeicher 214 auf eine ähnliche Art wie der IOMMU-Zwischenspeicher 206 oder der Vorrichtungszwischenspeicher 220 verwendet werden (siehe 2B). Bei diversen Ausführungsformen kann der Anfragenmanager 202 basierend auf der Bestimmung, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent und ausführbar ist, bestimmen, ob die Speichertransaktionsanfrage die Sicherheitsprüfung besteht. Falls die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, zum Beispiel entweder in dem Hauptspeicher nicht präsent oder nicht ausführbar ist, kann der Anfragenmanager 202 bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht. Falls die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, jedoch in dem Hauptspeicher präsent und ausführbar ist, kann ein Zugriffsanfragefehler erzeugt werden, wie durch den Anfragenmanager 202 oder den Seitenmanager 204. Bei diversen Ausführungsformen kann der Zugriffsanfragefehler dann zu dem Exception-Handler 210 weitergegeben werden. Bei diversen solchen Ausführungsformen, kann der Exception-Handler 210 die Speichertransaktionsanfrage als Reaktion auf den Zugriffsanfragefehler beenden. Bei einer oder mehreren Ausführungsformen kann der Exception-Handler 210 über die CPU 108 umgesetzt werden. Bei einigen Ausführungsformen kann der Exception-Handler 210 Teil eines Betriebssystems (OS) oder virtuellen Maschinenmonitors (VMM), der von der CPU 108 ausgeführt wird, sein.
  • Bei diversen Ausführungsformen kann die CPU 108 Verarbeitungsschaltungen 212, den CPU-Zwischenspeicher 214 und ein oder mehrere CPU-Register 216 aufweisen. Bei ein oder mehrere Ausführungsformen kann die CPU 108 eines oder mehrere eines Betriebssystems (OS) oder eines virtuellen Maschinenmonitors (VMM) umsetzen. Bei einigen Ausführungsformen können ein oder mehrere Sicherheitsprüfungen, die hier beschrieben sind, über ein oder mehrere Register (zum Beispiel ein oder mehrere IOMMU-Register 208, ein oder mehrere CPU-Register 216 und Vorrichtungsregister 222 (siehe 2B) ermöglicht oder aktiviert werden. Bei diversen Ausführungsformen, können die IOMMU-Register 208 Bits aufweisen, die angeben, ob die besondere Version der IOMMU fähig ist, eine oder mehrere der Sicherheitsprüfungen auszuführen. Ein Bit kann zum Beispiel in einem Extended Capability Register, das in den IOMMU-Registern 208 enthalten ist, zugeordnet werden, um die Fähigkeit der IOMMU 104 anzugeben. Bei einem anderen Fall kann ein Bit in einem globalen Befehlsregister, das in den CPURegistern 216 enthalten ist, zugeordnet werden. Bei solchen anderen Fällen kann das Bit von Software verwendet werden, um eine oder mehrere Sicherheitsprüfungen zu aktivieren oder zu deaktivieren. Bei diversen Ausführungsformen können ein oder mehrere der Register, die hierbeschrieben sind, im Speicher abgebildet werden. Bei diversen solchen Ausführungsformen, können die im Speicher abgebildeten Register von Hardware gesetzt werden, und Software hat eventuell nur Lesezugriff.
  • 2B veranschaulicht ein Beispiel einer Betriebsumgebung 250, die für diverse Ausführungsformen repräsentativ sein kann. Bei einer oder mehreren Ausführungsformen, die hier beschrieben sind, kann die Betriebsumgebung 250 eingerichtet sein, um das ATS-Protokoll einzusetzen. Zu diesem Zweck kann die SVM-Vorrichtung 102 der Betriebsumgebung 250 den Transaktionsmanager 218, den Vorrichtungszwischenspeicher 220 und die Vorrichtungsregister 222 aufweisen. Bei diversen Ausführungsformen, kann das ATS-Protokoll einen Mechanismus bereitstellen, der es der SVM-Vorrichtung 102 erlaubt, an Speicherübersetzungsprozessen teilzunehmen, wie durch Bereitstellen ihres eigenen Zwischenspeichers (zum Beispiel Vorrichtungszwischenspeicher 220) für ihre eigenen Speichertransaktionen. In der Betriebsumgebung 250 kann die IOMMU 104 eine Sicherheitsprüfung ausführen, um zu bestimmen, ob eine Speichertransaktionsanfrage, die von der SVM-Vorrichtung 102 empfangen wird, zu bedienen ist. Bei diversen Ausführungsformen, kann die Sicherheitsprüfung ein oder mehrere bestimmen von ob eine Quelle einer Speichertransaktionsanfrage eine SVM-Vorrichtung ist, ob die Speichertransaktionsanfrage eine Übersetzungsanfrage ist, die Schreibgenehmigungen erfordert, und ob eine Zieladresse, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Bei einigen Ausführungsformen, kann die IOMMU 104 einen Übersetzungsabschluss mit Lese- und Schreibzugriff erzeugen, wenn die Zieladresse nicht ausführbar ist, und einen Übersetzungsabschluss mit NurleseZugriff, wenn die Zieladresse ausführbar ist. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Bei einer oder mehreren Ausführungsformen, kann die Präsenz einer SVM-Vorrichtung 102 mit integriertem Zwischenspeicher übermäßige Abrufe des IOMMU-Zwischenspeichers 206 durch Verteilen von Adress-Übersetzungs-Zwischenspeicherverantwortungen verhindern. Bei einer oder mehreren solchen Ausführungsformen, kann das Verteilen der Adress-Übersetzungs-Zwischenspeicherverantwortungen SVM-Vorrichtungen, die integrierte Zwischenspeicher einsetzen, erlauben, weniger Leistungsabhängigkeit von der Größe des IOMMU-Zwischenspeichers 206 zu haben. Des Weiteren können integrierte Zwischenspeicher optimale Zugriffslatenz sicherstellen, indem sie ermöglichen, dass vorübersetzte Speichertransaktionsanfragen zu der MMU gesendet werden.
  • Bei einigen Ausführungsformen, kann das ATS-Protokoll Speichertransaktionsanfragen in zwei Typen trennen: Speicherzugriffsanfragen und Speicherübersetzungsanfragen. Bei diversen Ausführungsformen, werden Speicherzugriffsanfragen von einer SVM-Vorrichtung verwendet, um eine Speicher-Lese-/Schreibanfrage zu einem Übersetzungsagenten, wie der IOMMU 104 zu senden. Bei diversen solchen Ausführungsformen, können Speicherzugriffsanfragen ein Adresstyp (AT)-Feld aufweisen, das den Typ der Adresse (zum Beispiel übersetzt oder unübersetzt), der präsent ist, wie in einem Anfragen-Header, angibt. Bei einigen Ausführungsformen, werden Übersetzungsanfragen von einer SVM-Vorrichtung verwendet, um zwischen unterschiedlichen Adressabbildungenzu übersetzen, wie von einer virtuellen Adresse in eine physische Adresse.
  • Bei diversen Ausführungsformen, können Speichertransaktionsanfrage in der Betriebsumgebung 250 wie folgt vorgehen. Die ATS- und SVM-Zugriffskontrollmechanismen können initialisiert werden, wie, in Abhängigkeit von der Konfiguration, von dem OS oder VMM. Bei einigen Ausführungsformen, können die ATS- und SVM-Zugriffskontrollmechanismen durch Einstellen einer erweiterten ATS-Fähigkeitsstruktur, einem SVM-Zugriffskontroll-Fähigkeitsregister und Seitentabellen in einer oder mehreren IOMMUs initialisiert werden. Sobald sie initialisiert ist, können, wenn eine Speichertransaktion von der IOMMU 104 empfangen wird, eine oder mehrere Prüfungen ausgeführt werden, um zu bestimmen, ob die Anfrage vom Übersetzungsanfragentyp (zum Beispiel AT-Bit ist 01b) ist, ob die Anfrage von einer SVM-Vorrichtung initiiert wird, oder ob die Vorrichtung Schreibgenehmigungen anfordert (zum Beispiel wenn das No Write (NW)-Bit 0 ist).
  • Wenn bei einer oder mehreren Ausführungsformen eine beliebige dieser Forderungen nicht erfüllt wird, führt die IOMMU 104 einen LegacyMemory-Zugriff aus und wendet den existierenden SVM-Zugriffskontrollmechanismus an. Falls diese Forderungen jedoch erfüllt werden, kann die IOMMU 104 einen Seitenlauf für die angefragte Seite ausführen und prüfen, um die kumulative Ausführungsgenehmigung der Seite eingestellt ist (zum Beispiel anhand von Berücksichtigen eines oder mehrerer der NXE-, SLEE-, EX- und/oder X-Bits). Falls die angefragte Seite ausführbar ist, kann die IOMMU 104 der SVM-Vorrichtung mit einer Übersetzungsabschlussnachricht antworten, die Nurlese-Genehmigungen gewährt (zum Beispiel RW-Bits auf 10b gesetzt), während, falls die angefragte Seite nicht ausführbar ist, mit einer Übersetzungsabschlussnachricht, die Lese- und Schreibgenehmigungen gewährt (zum Beispiel RW-Bits auf 11b gesetzt). Falls die SVM-Vorrichtung Übersetzungen mehrerer Seiten angefragt hat, wird dann die nächste angefragte Seite auf ähnliche Art verarbeitet, bis alle Speicherübersetzungsanfragen bedient sind. Bei diversen Ausführungsformen werden daher Übersetzungsanfragen, die von der SVM-Vorrichtung 102 mit Schreibgenehmigung ausgehen, von der IOMMU 104 verweigert, falls die Zielseite als von der CPU 108 ausführbar gekennzeichnet ist. Bei diversen solchen Ausführungsformen, können existierende Schreibgenehmigungen ignoriert werden. Bei einer oder mehreren Ausführungsformen, wird es der SVM-Vorrichtung 102 eventuell nicht erlaubt, Zeichenumsetztabellen (zum Beispiel Zeichenumsetztabellen der CPU 108) zu modifizieren, um Codeintegrität sicherzustellen.
  • 3 veranschaulicht ein Beispiel einer Betriebsumgebung 300, die für diverse Ausführungsformen repräsentativ sein kann. Bei einer oder mehreren Ausführungsformen, die hier beschrieben sind, kann die Betriebsumgebung 300 einen Zwischenspeicher 302 mit einem oder mehreren Übersetzungseinträgen 3041, 304-2, 304-n aufweisen. Bei diversen Ausführungsformen, die hier beschrieben sind, können die Übersetzungseinträge 304 eingesetzt werden, um eine Sicherheitsprüfung auf einer Speichertransaktionsanfrage durchzuführen. Bei diversen solchen Ausführungsformen, kann die Leistung der Sicherheitsprüfung, die den Zwischenspeicher 302 einsetzt, die Effizienz der Sicherheitsprüfung durch Verringern einer Anzahl von Seitenläufen verbessern. Bei einer oder mehreren Ausführungsformen, kann der Zwischenspeicher 302 derselbe wie der IOMMU-Zwischenspeicher 206, der CPU-Zwischenspeicher 214 und/oder der Vorrichtungszwischenspeicher 220 sein oder ähnlich sein. Bei einigen Ausführungsformen, kann der Zwischenspeicher 302 ein Translation Lookaside Buffer (TLB) sein. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • 4 veranschaulicht ein Beispiel einer Betriebsumgebung 400, die für diverse Ausführungsformen repräsentativ sein kann. Bei einer oder mehreren Ausführungsformen, die hier beschrieben sind, kann die Betriebsumgebung 400 einen Übersetzungseintrag 452 mit Adressübersetzungen 454 und Übersetzungsmetadaten458 aufweisen. Bei diversen Ausführungsformen, kann der Übersetzungseintrag 452 derselbe oder ähnlich dem einen oder mehrere der Übersetzungseinträge 4041, 404-2, 404-n sein. Bei einigen Ausführungsformen, können die Adressübersetzungen 454 eine oder mehrere entsprechende Adressen 456-1, 456-2, 456-n aufweisen. Bei einigen solchen Ausführungsformen, kann jede der Adressen 456 einer unterschiedlichen Adressenabbildungen entsprechen, wodurch Übersetzungen zwischen den unterschiedlichen Adressabbildungen ermöglicht werden. Die Adresse 456-1 kann zum Beispiel einer virtuellen Adresse entsprechen, die Adresse 456-2 kann einer linearen Adresse entsprechen, und die Adresse 456-n kann einer physischen Adresse entsprechen. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Bei einer oder mehreren Ausführungsformen, kann ein Übersetzungseintrag, der mit einer Speichertransaktionsanfrage assoziiert ist, unter Verwenden der Adressübersetzungen 454 identifiziert werden, wie durch den Anfragenmanager 202. Die Speichertransaktionsanfrage kann zum Beispiel die Adresse 456-1 aufweisen. Bei einigen Ausführungsformen, kann der Übersetzungseintrag 452 auch Übersetzungsmetadaten 458 aufweisen. Bei diversen Ausführungsformen, die hier beschrieben sind, können die Übersetzungsmetadaten 458 eingesetzt werden, um eine Sicherheitsprüfung auf einer Speichertransaktionsanfrage durchzuführen. Eine Sicherheitsprüfung kann zum Beispiel eine Bestimmung aufweisen, ob der Genehmigungssatz 460 eine Speichertransaktionsanfrage erlaubt oder genehmigt. Bei einigen Ausführungsformen, kann der Genehmigungssatz 460 darauf verweisen, wie der Inhalt eines assoziierten Speicherplatzes manipuliert werden kann. Bei den veranschaulichten Ausführungsformen, kann der Genehmigungssatz 460 die folgenden Genehmigungen aufweisen: Lesen 464, Schreiben 466, Ausführen 468. Bei einer oder mehreren Ausführungsformen, kann jede Genehmigung ein Bit aufweisen, und falls das Bit gesetzt ist, ist die assoziierte Genehmigung erlaubt, aber falls das Bit nicht gesetzt ist, ist die assoziierte Genehmigung nicht erlaubt. Falls zum Beispiel die Lese-464- und Ausführungs 468-Genehmigungen gesetzt sind, die Schreib-466-Genehmigung jedoch nicht gesetzt ist, kann der assoziierte Speicherplatz gelesen werden (zum Beispiel von der IOMMU 104) und ausgeführt werden (zum Beispiel von der CPU 108), zu dem assoziierten Speicherplatz kann jedoch nicht geschrieben werden. Zusätzlich können die Übersetzungsmetadaten 458 bei einigen Ausführungsformen zusätzliche Daten 462 aufweisen. Bei einigen solchen Ausführungsformen, können die zusätzlichen Daten 462 mehr Informationen in Zusammenhang mit einem Stück Speicher, das mit dem Übersetzungseintrag 452 assoziiert ist, wie eine Länge des Stücks, bereitstellen. Bei einer oder mehreren Ausführungsformen, kann der Übersetzungseintrag 452 einen Satz von Bits aufweisen. Bei einer oder mehreren solchen Ausführungsformen, können die Übersetzungsmetadaten 458 einen oder mehrere Subsätze des Satzes von Bits aufweisen.
  • 5A veranschaulicht eine Ausführungsform eines Logikablaufs 500, der für Operationen repräsentativ sein kann, die bei diversen Ausführungsformen in Zusammenhang mit Bereitstellen von Zugriffsschutz für gemeinsam verwendeten virtuellen Speicher (SVM) ausgeführt werden können. Der Logikablauf 500 kann für einige oder alle der Operationen, die von einem oder mehreren Bauteilen der Betriebsumgebungen 100, 200 oder 250 der 1-2B, wie von der IOMMU 104 ausgeführt werden können, repräsentativ sein. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Bei der veranschaulichten Ausführungsform, die in 5A gezeigt ist, kann der Logikablauf 500 bei Block 502 beginnen. Bei Block 502, „Initialisierung“, kann die IOMMU initialisiert werden. Die Initialisierung kann zumBeispiel Teil eines Basic Input/Output System (BIOS)-Boot-up-Prozesses sein. Bei einigen Ausführungsformen, kann die Initialisierung den BIOS-Boot-up-Prozess sowie zusätzliche Funktionalität, die das BIOS ausführen muss, um die Sicherheitsprüfung zu ermöglichen, aufweisen, wie das Einstellen einer Seitentabelle, eines Seitenverzeichnisses, eines Seitenverzeichnis-Zeigers, eines Bits an Information oder dergleichen. Bei diversen Ausführungsformen, kann die Initialisierung die IOMMU 104 auf das Überwachen eines Speicherwegs den zwischen den SVM-Vorrichtungen 102-1, 102-2, 102-n und dem SVM 106 vorbereiten. Bei einigen Ausführungsformen, kann die Initialisierung eine Mehrzahl von MMUs zum Überwachen jedes einer Mehrzahl von Speicherwegen vorbereiten. Bei eineroder mehreren Ausführungsformen, kann die Initialisierung das Einstellen oder Beurteilen eines oder mehrerer Registerwerte, wie eines oder mehrerer Werte in dem/den IOMMU Register(n) 208, CPU-Register(n) 216 und/oder Vorrichtungsregister(n) 222 aufweisen. Bei einer oder mehreren solchen Ausführungsformen, können die Register ein oder mehrere eines erweiterten Fähigkeitsregisters, eines globalen Befehlsregisters oder eines SVM-Zugriffskontroll-Fähigkeitsregisters aufweisen.
  • Bei Block 504, „Warten auf Zugriffsanfrage“, kann dann auf den Empfang einer Speichertransaktionsanfrage gewartet werden. Bei diversen Ausführungsformen, kann das Überwachen des Speicherwegs zwischen SVM-Vorrichtungen und einem gemeinsam verwendeten virtuellen Speicher das Warten auf denEmpfang einer Speichertransaktionsanfrage aufweisen. Die IOMMU 104 kann zum Beispiel auf eine Speichertransaktionsanfrage warten, indem der Speicherweg zwischen den SVM Vorrichtungen 102-1, 102-2, 102-n und dem SVM 106 überwacht wird. Bei einigen Ausführungsformen kann der Block 504 der erste Block in einer kontinuierlichen Schleife sein, in der eine Vorrichtung eine Zugriffsanfrage zu dem Speicher durch die IOMMU 104 sendet.
  • Bei Block 506, „Zugriffsanfragenempfang“, kann eine Zugriffsanfrage empfangen werden. Die IOMMU 104 kann eine Speichertransaktionsanfrage von der SVM-Vorrichtung 102-1, 102-2 oder 102-n empfangen. Bei diversen Ausführungsformen, kann die Zugriffsanfrage auf das Lesen oder Schreiben von Daten zu oder von dem SVM 106 abzielen. Bei einigen Ausführungsformen, kann der Anfragenmanager 202 die Speichertransaktionsanfrage von der SVM-Vorrichtung 102-1 empfangen.
  • Unter Fortsetzung bei Block 508, „Quelle eine SVMVorrichtung?“, kann bestimmt werden, ob die Quelle der empfangenen Speichertransakionsanfrage eine SVM-Vorrichtung ist. Die IOMMU 104 kann zum Beispiel bestimmen, ob die Quelle einer Speichertransaktionsanfrage die SVM-Vorrichtung 102-1, 102-2 oder 102-n oder eine Nicht-SVM-Vorrichtung ist. Bei einigen Ausführungsformen, kann der Anfragenmanager 202 die Quelle einer Speichertransaktionsanfrage bestimmen. Bei diversen Ausführungsformen, kann die Quelle einer Speichertransaktionsanfrage basierend auf einem oder mehreren Bits in der Speichertransaktionsanfrage bestimmt werden. Die Speichertransaktionsanfrage kann zum Beispiel einen eindeutigen Identifikator aufweisen, der von der IOMMU 104 verwendet wird, um die Quelle der Speichertransaktionsanfrage zu bestimmen.
  • Unter erneuter Bezugnahme auf Block 508, kann der Logikablauf 500 zu Block 510, „Zugriffsanfrage bedienen“, weitergehen, falls die Quelle nicht eine SVM Vorrichtung ist. Die IOMMU 104 kann zum Beispiel Inhalt zu oder von dem SVM 106 als Reaktion darauf, dass die Quelle der Speichertransaktionsanfrage nicht eine SVM Vorrichtung ist (zum Beispiel Nicht-SVM-Vorrichtung 102-1, 102-2 oder 102-n), lesen oder schreiben. Wenn die Quelle der Speichertransaktionsanfrage nicht eine SVM-Vorrichtung ist, kann die IOMMU 104 bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht. Bei diversen Ausführungsformen, kann das Bedienen der Zugriffsanfrage wie bei Legacy-Systemen fortfahren. Bei einigen Ausführungsformen, kann der Logikablauf 500, sobald die Speichertransaktionsanfrage bedient wurde, zu Block 504, „Warten auf Zugriffsanfrage“, als Teil einer kontinuierlichen Schleife zurückkehren. Bei einigen solchen Ausführungsformen, kann die kontinuierliche Schleife nur bei einer Leistungszustandsänderung oder Änderung von Systemeinstellungen angesteuert werden.
  • Bei einigen Ausführungsformen, kann das Bedienen der Speichertransaktionsanfrage das Einsetzen der IOMMU 104 (zum Beispiel Anfragenmanager 202, Seitenmanager 204 und/oder IOMMU-Zwischenspeicher 206) zum Abbilden einer für eine Vorrichtung sichtbaren virtuellen Adresse die in der Speichertransaktionsanfrage enthalten ist, zu einer entsprechenden physischen Adresse gemäß der Paging-Architektur aufweisen. Bei einigen solchen Ausführungsformen, kann die IOMMU 104 ein oder mehrere der Speichertransaktionsanfragen, einer Seitentabelle, eines Seitenverzeichnisses oder einer Seitenverzeichnis-Zeigertabelle einsetzen, um eine für die Vorrichtung sichtbare virtuelle Adresse in eine physische Adresse umzusetzen, und/oder um eine Speicherseite, die mit einer Speichertransaktionsarfrage assoziiert ist, zu identifizieren. Die SVM-Vorrichtung 102-1 kann zum Beispiel eine Speichertransaktionsanfrage zu der IOMMU 104 senden, die eine für die Vorrichtung sichtbare virtuelle Adresse aufweist. Die IOMMU 104 kann dann basierend auf der virtuellen Adresse einen oder mehrere eines Zwischenspeichereintrags (zum Beispiel Übersetzungseintrag 452), eines Seitenverzeichnis-Zeigers, eine Seitenverzeichniseintrags, eines Seitentabelleneintrags, einer Speicherseite und einer physischen Adresse, die mit der Speichertransaktionsanfrage assoziiert ist, identifizieren oder bestimmen. Bei diversen Ausführungsformen, kann die IOMMU 104 Daten in dem SVM 106 als Teil des Bedienens der Speichertransaktionsanfrage abrufen und/oder speichern.
  • Unter erneuter Bezugnahme auf Block 508, kann der Logikablauf 500 zu Block 512, „Schreibanfrage?“ weitergehen, falls die Quelle eine SVM-Vorrichtung ist. Die IOMMU 104 kann zum Beispiel bestimmen, ob die Speichertransaktionsanfrage von der SVM 102-1 eine Schreibanfrage aufweist. Bei diversen Ausführungsformen, kann der Anfragenmanager 202 bestimmen, ob die Speichertransaktionsanfrage eine Schreibanfrage ist. Wenn bei einigen Ausführungsformen die Speichertransaktionsanfrage keine Schreibanfrage ist, kann die IOMMU 104 (zum Beispiel der Anfragenmanager 202) bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht. Wenn bei diversen Ausführungsformen eine Speichertransaktionsanfrage keine Schreibanfrage ist, kann der Logikablauf 500 zu Block 510, „Zugriffsanfrage bedienen“, weitergehen und wie oben beschrieben fortfahren. Falls die Speichertransaktionsanfrage jedoch eine Schreibanfrage ist, kann der Logikablauf 500 zu Block 514 weitergehen.
  • Bei Block 514, „Seite präsent?“, kann bestimmt werden, ob eine Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent ist. Die IOMMU 104 kann zum Beispiel den Seitenmanager 204 oder den Zwischenspeicher 302 einsetzen, um zu bestimmen, ob eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent ist. Bei einigen solchen Beispielen, kann der Zwischenspeicher 302 einen oder mehrere des IOMMU-Zwischenspeichers 206, SPU-Zwischenspeichers 214 oder Vorrichtungszwischenspeichers 220 aufweisen. Bei diversen Ausführungsformen, kann Hauptspeicher auf einen Direktzugriffsspeicher (RAM) verweisen. Bei einigen Ausführungsformen, kann die IOMMU 104 eines oder mehrere einer Speichertransaktionsanfrage, eines Zwischenspeichereintrags (zum Beispiel Übersetzungseintrag 452), einer Seitentabelle, eines Seitenverzeichnisses oder einer Seitenverzeichnis-Zeigertabelle, die von der Paging- und oder Caching-Architektur unterstützt wird, einsetzen, um zu bestimmen, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent ist. Bei diversen Ausführungsformen, kann eine Paging- und/oder Caching-Architektur verwendet werden, die ein Bit an Information (zum Beispiel Präsenzbit) unterstützt, um anzugeben, ob eine Speicherseite in den Hauptspeicher präsent ist. Eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, kann zum Beispiel in dem Hauptspeicher präsent sein, falls das Präsenzbit 1 ist, und in dem Hauptspeicher nicht präsent sein, falls das Präsenzbit 0 ist. Bei einigen Ausführungsformen kann ein Präsenzbit Teil jedes Seitentabelleneintrags sein. Bei einigen solchen Ausführungsformen, kann das Präsenzbit das niedrigstwertige Bit jedes Seitentabelleneintrags sein. Bei diversen Ausführungsformen kann das Präsenzbit ein PAE-Bit sein. Bei einer oder mehreren Ausführungsformen, kann das Präsenzbit in einem Zwischenspeichereintrag, wie einem Übersetzungseintrag 452, enthalten sein.
  • Unter erneuter Bezugnahme auf Block 514, kann der Logikablauf 500 zu Block 510, „Zugriffsanfrage bedienen“, weitergehen und wie oben beschrieben fortfahren, falls die Seite nicht präsent ist. Wenn bei einigen Ausführungsformen die Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher nicht präsent ist, kann Block 510 das Paging der Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher aufweisen. Wenn bei diversen Ausführungsformen eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher nicht präsent ist, kann die IOMMU 104 bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht. Andererseits, falls die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent ist, kann der Logikablauf 500 zu Block 516 weitergehen.
  • Bei Block 516, „Seite ausführbar“, kann bestimmt werden, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Die IOMMU 104 kann zum Beispiel den Seitenmanager 204 oder den Zwischenspeicher 302 einsetzen, um zu bestimmen, ob eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Bei einigen solchen Beispielen, kann der Zwischenspeicher 302 einen oder mehrere des IOMMU-Zwischenspeichers 206, SPU-Zwischenspeichers 214 oder Vorrichtungszwischenspeichers 220 aufweisen. Bei diversen Ausführungsformen, kann die IOMMU 104 eines oder mehrere einer Speichertransaktionsanfrage, eines Zwischenspeichereintrags (zum Beispiel Übersetzungseintrag 452), einer Seitentabelle, eines Seitenverzeichnisses oder einer Seitenverzeichnis-Zeigertabelle, die von der Paging und/oder Caching-Architektur unterstützt wird, einsetzen, um zu bestimmen, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Bei diversen Ausführungsformen, kann eine Paging- und/oder Caching-Architektur verwendet werden, die ein Bit an Information (zum Beispiel Ausführungsbit) unterstützt, um anzugeben, ob eine Speicherseite ausführbar ist. Bei einigen solchen Ausführungsformen, kann das Bit an Information ein oder mehrere Bits in einem Speichereintrag, wie dem Übersetzungseintrag 452, sein. Bei diversen Ausführungsformen, kann das Ausführungsbit definieren, ob die assoziierte Speicherseite von einer CPU (zum Beispiel der CPU 108) zum Ausführen von Code daraus verwendet werden kann. Bei einer oder mehreren Ausführungsformen, kann das Ausführungsbit ein oder mehrere eines NXE-, SLEE,- XD-, oder X-Bits aufweisen.
  • Bei einigen Ausführungsformen, kann das Ausführungsbit von der IOMMU 104 verwendet werden, um zu bestimmen, ob eine Speicherseite, die mit einer Speichertransaktionsanfrage (das heißt, ob die Speicherseite zum Speichern von Prozessoranweisungen verwendet wird) assoziiert ist, ausführbar ist. Eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, kann zum Beispiel ausführbar sein, falls das Ausführungsbit 0 ist, und nicht ausführbar sein, falls das Ausführungsbit 1 ist. Bei diversen Ausführungsformen kann das Ausführungsbit ein PAE-Bit sein. Bei einigen Ausführungsformen kann ein Ausführungsbit Teil jedes Seitentabelleneintrags sein. Bei diversen solchen Ausführungsformen, kann das Ausführungsbit das höchstwertige Bit jedes Seitentabelleneintrags sein. Bei einigen Ausführungsformen kann das Ausführungsbit ein No-eXecute (NX)-Bit von Intel® 64 und IA-32-Paging-Architektur sein.
  • Unter erneuter Bezugnahme auf Block 516, kann der Logikablauf 500 zu Block 510, „Zugriffsanfrage bedienen“, weitergehen und wie oben beschrieben fortfahren, falls die Seite nicht ausführbar ist. Wenn bei diversen Ausführungsformen eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist, kann die IOMMU 104 bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht. Andererseits, falls die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist, kann der Logikablauf 500 zu Block 518 weitergehen.
  • Bei Block 518, „Zugriffsanfragefehler erzeugen“, kann ein Zugriffsanfragefehler erzeugt werden. Die IOMMU 104 kann zum Beispiel einen Zugriffsanfragefehler erzeugen, wenn die Quelle bei Block 508 als eine SVM Vorrichtung identifiziert wird (zum Beispiel SVM-Vorrichtung 102-1, 102-2, 102-n), bei Block 512 bestimmt wird, dass die Speichertransaktionsanfrage eine Schreibanfrage aufweist, bei Block 514 die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, in dem Hauptspeicher präsent ist, und bei Block 516 die Speicherseite, de mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Bei diversen Ausführungsformen, kann das Erzeugen des Zugriffsanfragefehlers als Reaktion darauf erfolgen, dass die IOMMU 104 bestimmt, dass die Speichertransaktionsanfrage die Sicherheitsprüfung nicht besteht. Bei einigen Ausführungsformen, kann der Anfragenmanager 202 den Zugriffsanfragefehler erzeugen. Bei einer oder mehreren Ausführungsformen, kann der Seitenmanager 204 den Zugriffsanfragefehler erzeugen.
  • Bei Block 520, „Signal-Exception-Handle“, kann ein Exception Handler auf den Zugriffsanfragefehler aufmerksam gemacht werden. Die IOMMU 104 (zum Beispiel der Anfragenmanager 202 und/oder der Seitenmanager 204) kann zum Beispiel einen Zugriffsanfragefehler erzeugen, der ein Interruptsignal aufweist, um den Exception Handler 210 auf den Zugriffsanfragefehler aufmerksam zu machen. Bei einigen Ausführungsformen kann der Exception Handler 210 Teil eines OS sein. Bei diversen Ausführungsformen, kann der Exception-Handler 210 die Speichertransaktionsanfrage als Reaktion auf den Zugriffsanfragefehler beenden. Bei einigen Ausführungsformen kann der Logikablauf 500, sobald dem Exception Handler der Zugriffsanfragefehler gemeldet wurde, zu Block 504, „Warten auf Zugriffsanfrage“, als Teil einer kontinuierlichen Schleife zurückkehren.
  • 5B veranschaulicht eine Ausführungsform eines Logikablaufs 550, der für Operationen repräsentativ sein kann, die bei diversen Ausführungsformen in Zusammenhang mit Bereitstellen von Zugriffsschutz für gemeinsamverwendeten virtuellen Speicher (SVM) ausgeführt werden können. Der Logikablauf 550 kann für einige oder alle der Operationen, die von einem oder mehreren Bauteilen der Betriebsumgebungen 100, 200 oder 250 der 1-2B, wie von der IOMMU 104 ausgeführt werden können, repräsentativ sein. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Bei der veranschaulichten Ausführungsform, die in 5B gezeigt ist, kann der Logikablauf 550 bei Block 552 beginnen. Bei Block 552, „Initialisierung“, kanndie IOMMU initialisiert werden. Die Initialisierung kann zum Beispiel Teil eines Basic Input/Output System (BIOS)-Boot-up-Prozesses sein. Bei einigen Ausführungsformen, kann die Initialisierung den BIOS-Boot-up-Prozess sowie zusätzliche Funktionalität, die das BIOS ausführen muss, um die Sicherheitsprüfung zu ermöglichen, aufweisen, wie das Einstellen einer Seitentabelle, eines Seitenverzeichnisses, eines Seitenverzeichnis-Zeigers, eines Bits an Information oder dergleichen. Bei diversen Ausführungsformen, kann die Initialisierung die IOMMU 104 auf das Überwachen eines Speicherwegs den zwischen den SVM-Vorrichtungen 102-1, 102-2, 102-n und dem SVM 106 vorbereiten. Bei einigen Ausführungsformen, kann die Initialisierung eine Mehrzahl von MMUs zum Überwachen jedes einer Mehrzahl von Speicherwegen vorbereiten. Bei einer oder mehreren Ausführungsformen, kann die Initialisierung das Einstellen oder Beurteilen eines oder mehrerer Registerwerte, wie eines oder mehrerer Werte in dem/den IOMMU Register(n) 208, CPU-Register(n) 216 und/oder Vorrichtungsregister(n) 222 aufweisen. Bei einer oder mehreren solchen Ausführungsformen, können die Register ein oder mehrere eines erweiterten Fähigkeitsregisters, eines globalen Befehlsregisters oder eines SVM-Zugriffskontroll-Fähigkeitsregisters aufweisen.
  • Bei Block 554, „Warten auf Transaktionsanfrage“, kann dann auf den Empfang einer Speichertransaktionsanfrage gewartet werden. Bei diversen Ausführungsformen, kann das Überwachen des Speicherwegs zwischen SVM Vorrichtungen und einem gemeinsam verwendeten virtuellen Speicher das Warten auf den Empfang einer Speichertransaktionsanfrage aufweisen. Die IOMMU 104 kann zum Beispiel auf eine Speichertransaktionsanfrage warten, indem der Speicherweg zwischen den SVM-Vorrichtungen 102-1, 102-2, 102-n und dem SVM 106 überwacht wird. Bei einigen Ausführungsformen kann der Block 554 der erste Block in einer kontinuierlichen Schleife sein, in der eine Vorrichtung eine Zugriffsanfrage zu dem Speicher durch die IOMMU 104 sendet.
  • Bei Block 556, „Transaktionsanfrageempfang“, kann eine Transaktionsanfrage empfangen werden. Die IOMMU 104 kann zum Beispiel eine Speichertransaktionsanfrage von der SVM-Vorrichtung 102-1, 102-2 oder 102-n empfangen. Bei diversen Ausführungsformen, kann die Transaktionsanfrage auf das Lesen oder Schreiben von Daten zu oder von dem SVM 106 oder Übersetzen zwischen unterschiedlichen Adressabbildungen abzielen. Bei einer oder mehreren Ausführungsformen, kann die Transaktionsanfrage das ATS-Protokoll befolgen. Bei einigen Ausführungsformen, kann der Anfragenmanager 202 die Speichertransaktionsanfrage von der SVM-Vorrichtung 102-1 empfangen.
  • Unter Fortsetzung bei Block 558, „Quelle eine SVMVorrichtung?“, kann bestimmt werden, ob die Quelle der empfangenen Speichertransaktionsanfrage eine SVM-Vorrichtung ist. Die IOMMU 104 kann zum Beispiel bestimmen, ob die Quelle einer Speichertransaktionsanfrage die SVM-Vorrichtung 102-1, 102-2 oder 102-n oder eine Nicht-SVM-Vorrichtung ist. Bei einigen Ausführungsformen, kann der Anfragenmanager 202 die Quelle einer Speichertransaktionsanfrage bestimmen. Bei diversen Ausführungsformen, kann die Quelle einer Speichertransaktionsanfrage basierend auf einem oder mehreren Bits in der Speichertransaktionsanfrage bestimmt werden. Die Speichertransaktionsanfrage kann zum Beispiel einen eindeutigen Identifikator aufweisen, der von der IOMMU 104 verwendet wird, um die Quelle der Speichertransaktionsanfrage zu bestimmen. Unter erneuter Bezugnahme auf Block 558, kann der Logikablauf 550 zu Block 560, „Transaktionsanfrage bedienen“, weitergehen, falls die Quelle nicht eine SVM-Vorrichtung ist. Die IOMMU 104 kann zum Beispiel Inhalt zu oder von dem SVM 106 als Reaktion darauf, dass die Quelle der Speichertransaktionsanfrage nicht eine SVM-Vorrichtung ist (zum Beispiel Nicht-SVM-Vorrichtung 102-1, 102-2 oder 102-n), lesen oder schreiben. Wenn die Quelle der Speichertransaktionsanfrage nicht eine SVM-Vorrichtung ist, kann die IOMMU 104 bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht. Bei diversen Ausführungsformen, kann das Bedienen der Zugriffsanfrage wie bei Legacy Systemen fortfahren. Bei einigen Ausführungsformen kann der Logikablauf 550, sobald die Speichertransaktionsanfrage bedient wurde, zu Block 554, „Warten auf Transaktionsanfrage“, als Teil einer kontinuierlichen Schleife zurückkehren. Bei einigen solchen Ausführungsformen, kann die kontinuierliche Schleife nur bei einer Leistungszustandsänderung oder Änderung von Systemeinstellungen angesteuert werden.
  • Bei einigen Ausführungsformen, kann das Bedienen der Speichertransaktionsanfrage das Einsetzen der IOMMU 104 (zum Beispiel Anfragenmanager 202, Seitenmanager 204 und/oder IOMMU-Zwischenspeicher 206) zum Abbilden einer für eine Vorrichtung sichtbaren virtudlen Adresse, die in der Speichertransaktionsanfrage enthalten ist, zu einer entsprechenden physischen Adresse gemäß der Paging- und/oder Caching-Architektur aufweisen. Bei einigen solchen Ausführungsformen, kann die IOMMU 104 ein oder mehrere der Speichertransaktionsanfragen, einer Seitentabelle, eines Seitenverzeichnisses oder einer Seitenverzeichnis-Zeigertabelle einsetzen, um eine für die Vorrichtung sichtbare virtuelle Adresse in eine physische Adresse umzusetzen, und/oder um eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, zu identifizieren. Die SVMVorrichtung 102-1 kann zum Beispiel eine Speichertransaktionsanfrage zu der IOMMU 104 senden, die eine für die Vorrichtung sichtbare virtuelle Adresse aufweist. Die IOMMU 104 kam dann basierend auf der virtuellen Adresse einen oder mehrere eines Zwischenspeichereintrags (zum Beispiel Übersetzungseintrag 452), eines Seitenverzeichnis-Zeigers, eine Seitenverzeichniseintrags, eines Seitentabelleneintrags, einer Speicherseite und einer physischen Adresse, die mit der Speichertransaktionsanfrage assoziiert ist, identifizieren oder bestimmen. Bei diversen Ausführungsformen, kann die IOMMU 104 Daten in dem SVM 106 als Teil des Bedienens der Speichertransaktionsanfrage abrufen und/oder speichern.
  • Unter erneuter Bezugnahme auf Block 558, kann der Logikablauf 550 zu Block 562, „Übersetzungsanfrage?“ weitergehen, falls die Quelle eine SVM-Vorrichtung ist. Die IOMMU 104 kann zum Beispiel bestimmen, ob die Speichertransaktionsanfrage von der SVM 102-1 eine Übersetzungsanfrage ist. Bei diversen Ausführungsformen, kann der Anfragenmanager 202 bestimmen, ob die Speichertransaktionsanfrage eine Übersetzungsanfrage ist. Wenn bei einigen Ausführungsformen die Speichertransaktionsanfrage keine Übersetzungsanfrage ist, kann die IOMMU 104 (zum Beispiel der Anfragenmanager 202) bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht. Wenn bei diversen Ausführungsformen eine Speichertransaktionsanfrage keine Übersetzungsanfrage ist, kann der Logikablauf 550 zu Block 560, „Zugriffsanfrage bedienen“, weitergehen und wie oben beschrieben fortfahren. Falls Sie Speichertransaktionsanfrage jedoch eine Übersetzungsanfrage ist, kann der Logikablauf 550 zu Block 564 weitergehen.
  • Bei Block 564, „Schreibgenehmigung erforderlich?“, kann bestimmt werden, ob die Übersetzungsanfrage mit einer Schreibanfrage assoziiert ist oder Schreibgenehmigung erfordert. Die IOMMU 104 kann zum Beispiel bestimmen, ob die Speicherübersetzungsanfrage von der SVM 102-1 eine Schreibgenehmigung erfordert oder mit einer Schreibanfrage assoziiert ist. Bei diversen Ausführungsformen, kann der Anfragenmanager 202 bestimmen, ob die Speicherübersetzungsanfrage eine Schreibgenehmigung erfordert oder mit einer Schreibanfrage assoziiert ist. Wenn bei einigen Ausführungsformen die Speicherübersetzungsanfrage keine Schreibgenehmigung erfordert oder nicht mit einer Schreibanfrage assoziiert ist, kann die IOMMU 104 (zum Beispiel der Anfragenmanager 202) bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht. Wenn bei diversen Ausführungsformen eine Speichertransaktionsanfrage keine Schreibgenehmigung erfordert oder nicht mit einer Schreibanfrage assoziiert ist, kann der Logikablauf 550 zu Block 560, „Zugriffsanfrage bedienen“, weitergehen und wie oben beschrieben fortfahren. Falls die Speichertransaktionsanfrage jedoch eine eine Schreibgenehmigung erfordert oder mit einer Schreibanfrage assoziiert ist, kann der Logikablauf 550 zu Block 566 weitergehen.
  • Bei Block 566, „Assoziierte Seite ausführbar?“, kann bestimmt werden, ob die Speicherseite, die mit der Speicherübersetzungsanfrage assoziiert ist, ausführbar ist. Die IOMMU 104 kann zum Beispiel einen oder mehrere des Anfragenmanagers 202, Seitenmanagers 204 oder des Zwischenspeichers 302 einsetzen, um zu bestimmen, ob eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Bei einigen solchen Beispielen, kann der Zwischenspeicher 302 einen oder mehrere des IOMMU-Zwischenspeichers 206, SPU-Zwischenspeichers 214 oder Vorrichtungszwischenspeichers 220 aufweisen. Bei diversen Ausführungsformen, kann die IOMMU 104 eines oder mehrere einer Speichertransaktionsanfrage, eines Zwischenspeichereintrags (zum Beispiel Übersetzungseintrag 452), einer Seitentabelle, eines Seitenverzeichnisses oder einer Seitenverzeichnis-Zeigertabelle, die von der Paging und/oder Caching-Architektur unterstützt wird, einsetzen, um zu bestimmen, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Bei diversen Ausführungsformen, kann eine Paging- und/oder Caching-Architektur verwendet werden, die ein Bit an Information (zum Beispiel Ausführungsbit) unterstützt, um anzugeben, ob eine Speicherseite ausführbar ist. Bei einigen solchen Ausführungsformen, kann das Bit an Information ein oder mehrere Bits in einem Speichereintrag, wie dem Übersetzungseintrag 452, sein. Bei diversen Ausführungsformen, kann das Ausführungsbit definieren, ob die assoziierte Speicherseite von einer CPU (zum Beispiel der CPU 108) zum Ausführen von Code daraus verwendet werden kann. Bei einer oder mehreren Ausführungsformen, kann das Ausführungsbit ein oder mehrere eines NXE-, SLEE,- XD-, oder X-Bits aufweisen.
  • Bei einigen Ausführungsformen, kann das Ausführungsbit von der IOMMU 104 verwendet werden, um zu bestimmen, ob eine Speicherseite, die mit einer Speichertransaktionsanfrage (das heißt, ob die Speicherseite zum Speichern von Prozessoranweisungen verwendet wird) assoziiert ist, ausführbar ist. Eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, kann zum Beispiel ausführbar sein, falls das Ausführungsbit 0 ist, und nicht ausführbar sein, falls das Ausführungsbit 1 ist. Bei diversen Ausführungsformen kann das Ausführungsbitein PAE-Bit sein. Bei einigen Ausführungsformen kann ein Ausführungsbit Teil jedes Seitentabelleneintrags sein. Bei diversen solchen Ausführungsformen, kann das Ausführungsbit das höchstwertige Bit jedes Seitentabelleneintrags sein. Bei einigen Ausführungsformen kann das Ausführungsbit ein No-eXecute (NX)-Bit von Intel® 64 und IA-32-Paging-Architektur sein.
  • Unter erneuter Bezugnahme auf Block 566, kann der Logikablauf 550 zu Block 568, „Übersetzungsabschluss mit Lese- und Schreibzugriff senden“, weitergehen falls die Seite nicht ausführbar ist. Andererseits, falls die Seite ausführbar ist, kann der Logikablauf 550 zu Block 570, „Übersetzungsabschluss mit Nurlese-Zugriff senden“, weitergehen. Wenn bei diversen Ausführungsformen eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist, kann die IOMMU 104 bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung besteht, was in dem Gewähren von Lese- und Schreibgenehmigungen resultiert. Wenn bei einigen Ausführungsformen eine Speicherseite, die mit einer Speichertransaktionsanfrage assoziiert ist, ausführbar ist, kann die IOMMU 104 bestimmen, dass die Speichertransaktionsanfrage die Sicherheitsprüfung nicht besteht, was in dem Gewähren von Nurlese-Genehmigung resultiert. In beiden Fällen können Genehmigungen, die gewährt werden, in einem Übersetzungsabschluss mitgeteilt werden. Bei einer oder mehreren Ausführungsformen, kann ein Übersetzungsabschluss eine Adresse in einer ersten Abbildung aufweisen, die einer Adresse in einer zweiten Abbildung entspricht, die in der Speicherübersetzungsanfrage enthalten war. Die Adresse in der ersten Abbildung kann zum Beispiel eine physische Adresse aufweisen, und die Adresse in der zweiten Abbildung, kann eine virtuelle Adresse aufweisen.
  • Unter Fortsetzen bei Block 572, „Alle assoziierten Seiten bedient?“, kann bestimmt werden, ob alle Seiten, die mit der Übersetzungsanfrage assoziiert sind, bedient wurden. Falls alle assoziierten Seiten nicht bedient wurden, kann der Logikablauf 550 zu Block 574, „Zur nächsten angefragten Seite weitergehen“, zu Block 566, „Assoziierte Seite ausführbar?“, weitergehen und wie oben beschrieben fortfahren. Falls andererseits die assoziierten Seiten bedient wurden, kann der Logikablauf 550 zu Block 554, „Warten auf Transaktionsanfrage“, weitergehen und wie oben beschrieben fortfahren.
  • 6A veranschaulicht eine Ausführungsform eines Logikablaufs 600, der für Operationen repräsentativ sein kann, die bei diversen Ausführungsformen in Zusammenhang mit Bereitstellen von Zugriffsschutz für gemeinsam verwendeten virtuellen Speicher (SVM) ausgeführt werden können. Der Logikablauf 600 kann für einige oder alle der Operationen, die von einem oder mehreren Bauteilen der Betriebsumgebungen 100, 200 oder 250 der 1-2B, wie von der IOMMU 104 ausgeführt werden können, repräsentativ sein. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Bei der veranschaulichten Ausführungsform, die in 6A gezeigt ist, kann der Logikablauf 600 bei Block 602 beginnen. Bei Block 602, „Empfangen einer Speicherzugriffsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM), wenn die Speicherzugriffsanfrage einen Typ einer Mehrzahl von Typen von Speicherzugriffsanfragen umfasst“, kannvon einer SVM-Vorrichtung eine Speicherzugriffsanfrage von einem oder einer Mehrzahl von Typen empfangen werden. Die IOMMU 104 kann zum Beispiel eine Speicherzugriffsanfrage vom Lese oder Schreibtyp empfangen. Bei einigen Ausführungsformen, kann die Speicherzugriffsanfrage von einer der SVM-Vorrichtungen 102-1, 102-2, 102-n empfangen werden.
  • Unter Fortsetzung bei Block 604, „Identifizieren eines Übersetzungseintrags, der mit der Speicherzugriffsanfrage assoziiert ist, in einem Zwischenspeicher, wobei der Übersetzungseintrag einen Genehmigungssatz umfasst“, kann ein Übersetzungseintrag, der einen Genehmigungssatz, der mit der Speicherzugriffsanfrage assoziiert ist, in einem Zwischenspeicher identifiziert werden. Der Anfragenmanager 202 kann zum Beispiel einen Übersetzungseintrag (zum Beispiel den Übersetzungseintrag 452) mit Genehmigungssatz 460 in dem IOMMU-Zwischenspeicher 206 identifizieren. Bei einigen Ausführungsformen, kann der assoziierte Übersetzungseintrag von der IOMMU 104 basierend auf einer Adresse, die in der Speicherzugriffsanfrage enthalten ist, identifiziert werden. Die Speicherzugriffsanfrage kann zum Beispiel eine virtuelle Adresse aufweisen, die verwendet wird, um den assoziierten Übersetzungseintrag zu identifizieren.
  • Unter Fortsetzen bei Block 606, „Ausführen der Speicherzugriffsanfrage, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage erlaubt“, kann die Speicherzugriffsanfrage ausgeführt werden, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage erlaubt. Falls die Speicherzugriffsanfrage zum Beispiel eine Leseanfrage ist und der Genehmigungssatz 460 Lese-464-Genehmigung aufweist, die gesetzt ist, kann die Speicherzugriffsanfrage ausgeführt werden. Bei Block 608, „Erzeugen eines Fehlers, wenn der Genehmigungssatz den Typ von Speicherzugriffsanfrage einschränkt“, kann ein Fehler erzeugt werden, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt. Falls die Speicherzugriffsanfrage zum Beispiel eine Schreibanfrage ist und der Genehmigungssatz 460 Schreib-468-Genehmigung aufweist, die gesetzt ist, kann die Speicherzugriffsanfrage eventuell nicht ausgeführt werden. Mit anderen Worten, können Speicherzugriffsanfragen, wie hier beschrieben, nicht veranlassen, dass zu einem Speicherplatz, der ausführbar ist, geschrieben wird.
  • 6B veranschaulicht eine Ausführungsform eines Logikablaufs 650, der für Operationen repräsentativ sein kann, die bei diversen Ausführungsformen in Zusammenhang mit Bereitstellen von Zugriffsschutz für gemeinsam verwendeten virtuellen Speicher (SVM) ausgeführt werden können. Der Logikablauf 650 kann für einige oder alle der Operationen, die von einem oder mehreren Bauteilen der Betriebsumgebungen 100, 200 oder 250 der 1-2B, wie von der IOMMU 104 ausgeführt werden können, repräsentativ sein. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Bei der veranschaulichten Ausführungsform, die in 6B gezeigt ist, kann der Logikablauf 650 bei Block 652 beginnen. Bei Block 652, „Eine Speichertransaktionsanfrage von einer Vorrichtung mit gemeinsam verwendetem Speicher (SVM) empfangen, wobei die Speicherzugriffsanfrage eine Adresse umfasst, die mit einer Speicherseite in einem SVM assoziiert ist, der von der SVM-Vorrichtung eingesetzt wird“, kann eine Speichertransaktionsanfrage, die eine Adresse umfasst, die mit einer Speicherseite in einem SVM, der von der SVM Vorrichtung eingesetzt wird, empfangen werden. Die IOMMU kann zum Beispiel eine Speichertransaktionsanfrage von der SVM-Vorrichtung 102-n empfangen. Die SVM-Vorrichtung 102-n kann ferner den SVM 106 einsetzen. Bei einigen Ausführungsformen, kann die Speichertransaktionsanfrage das ATS-Protokoll befolgen. Unter Fortsetzung bei Block 654, „Bestimmen, dass die Speichertransaktionsanfrage eine Übersetzungsanfrage aufweist und mit einer Schreibanfrage assoziiert ist“, kann bestimmt werden, dass die Speichertransaktionsanfrage eine Übersetzungsanfrage aufweist und mit einer Schreibanfrage assoziiert werden. Bei diversen Ausführungsformen, kann eine Speichertransaktionsanfrage eine Speicherzugriffsanfrage oder eine Speicherübersetzungsanfrage aufweisen. Bei einer oder mehreren Ausführungsformen, kann der Logikablauf 650 zu Block 656 weitergehen, falls die Speichertransaktionsanfrage eine Übersetzungsanfrage aufweist und miteiner Schreibanfrage assoziiert ist.
  • Bei Block 656, „Identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist“, kann identifiziert werden, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Das Bestimmen, ob eine Speicherseite ausführbar ist, kann wie oben beschrieben ablaufen, wie unter Bezugnahme auf Block 516 der 5A oder Block 566 der 5B. Unter Fortsetzung bei Block 658, „Erzeugen eines Übersetzungsabschlusses mit Lese- und Schreibzugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist“, kann ein Übersetzungsabschluss mit Lese und Schreibzugriff erzeugt werden, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist. Die IOMMU 104 kann zum Beispiel einen Übersetzungsabschluss mit Lese- und Schreibzugriff für die SVM-Vorrichtung 102-n als Reaktion auf den Empfang einer Speichertransaktionsanfrage von der SVM-Vorrichtung 102-n, die mit einer Speicherseite, die nicht ausführbar ist, assoziiert ist, erzeugen. Bei Block 660, „Erzeugen eines Übersetzungsabschlusses mit Nurlese-Zugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist“, kann ein Übersetzungsabschluss mit NurleseZugriff erzeugt werden, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist. Die IOMMU 104 kann zum Beispiel einen Übersetzungsabschluss mit Nurlese-Zugriff für die SVM-Vorrichtung 102-2 als Reaktion auf den Empfang einer Speichertransaktionsanfrage von der SVM-Vorrichtung 102-2, die mit einer Speicherseite, die ausführbar ist, assoziiert ist, erzeugen.
  • 7 veranschaulicht eine Ausführungsform eines Speichermediums 700. Das Speichermedium 700 kann ein nichtflüchtiges computerlesbares Speichermedium oder maschinenlesbares Speichermedium, wie ein optisches, magnetisches oder Halbleiterspeichermedium umfassen. Bei diversen Ausführungsformen, kann das Speichermedium 700 einen Manufakturartikel umfassen. Bei einigen Ausführungsformen, kann das Speichermedium 700 computerimplementierbare Anweisungen speichern, wie computerimplementierbare Anweisungen zum Umsetzen eines/einer oder mehreren von Logikabläufen oder Operationen, die hier beschrieben sind, wie unter Bezugnahme auf den Logikablauf 500 der 5A, den Logikablauf 550 der 5B, der Logikablauf 600 der 6A und den Logikablauf 650 der 6B. Beispiele für ein computerlesbares Speichermedium oder maschinenlesbares Speichermedium können beliebige konkrete Medien aufweisen, die zum Speichern elektronischer Daten fähig sind, einschließlich flüchtiger Speicher oder nichtflüchtiger Speicher, abnehmbarer oder nicht abnehmbarer Speicher, löschbarer oder nicht löschbarer Speicher, beschreibbarer oder wiederbeschreibbarer Speicher usw. Beispiele für computerimplementierbare Anweisungen können beliebige zweckdienliche Typen von Code aufweisen, wie Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code, objektorientierten Code, visuellen Code und dergleichen. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • 8 veranschaulicht eine Ausführungsform einer beispielhaften Rechenarchitektur 800, die zum Umsetzen diverser Ausführungsformen, wie oben beschrieben, geeignet sein kann. Bei diversen Ausführungsformen, kann die Rechenarchitektur 800 eine elektronische Vorrichtung umfassen oder als Teil dieser umgesetzt werden. Bei einigen Ausführungsformen, kann die Rechenarchitektur 800 repräsentativ sein, zum Beispiel für ein Computersystem, das ein oder mehrere Bauteile der Betriebsumgebung 100 der 1, der Betriebsumgebung 200 der 2A und/oder der Betriebsumgebung 250 der 2B umsetzt oder einsetzt. Bei einigen Ausführungsformen, kann die Rechenarchitektur 800 zum Beispiel für einen oder mehrere Abschnitte der IOMMU 104 oder CPU 108, die eine oder mehrere Ausführungsformen, die hier beschrieben sind, umsetzen oder einsetzen, repräsentativ sein. Die IOMMU 104 kann zum Beispiel eine GPU sein, die gemeinsam mit der Rechenarchitektur 800 arbeitet. Die Ausführungsformen sind in dieser Hinsicht nicht beschränkt.
  • Wie bei dieser Anmeldung verwendet, sollen die Begriffe „System“ und „Bauteil“ sowie „Modul“ auf eine mit einem Computer verwandte Entität, entweder Hardware, eine Kombination von Hardware und Software, Software oder Software in Ausführung verweisen, wofür Beispiele von der beispielhaften Rechenarchitektur 800 bereitgestellt werden. Ein Bauteil kann zum Beispiel, ohne darauf beschränkt zu sein, ein Prozess sein, der auf einem Prozessor läuft, ein Prozessor, ein Festplattenlaufwerk, mehrere Speicherlaufwerke (mit optischem und/oder magnetischem Speichermedium), ein Objekt, ein ausführbares Element, ein Ausführungsthread, ein Programm und/oder ein Computer sein. Zur Veranschaulichung kann sowohl eine Anwendung, die auf einem Server läuft, als auch der Server ein Bauteil sein. Ein oder mehr Bauteile können sich innerhalb eines Prozesses und/oder Ausführungsthreads befinden, und ein Bauteil kann sich auf einem Computer befinden und/oder auf zwei oder mehr Computer verteilt sein. Des Weiteren können Bauteile kommunikationsfähig miteinander durch diverse Typen von Kommunikationsmedien zum Koordinieren von Operationen gekoppelt sein. Die Koordination kann den Einrichtungs- oder bidirektionalen Austausch von Informationen involvieren. Die Bauteile können zum Beispiel Informationen in der Form von Signalen kommunizieren, die über Kommunikationsmedien kommuniziert werden. Die Informationen können als Signale, die diversen Signalleitungen zugeordnet sind, umgesetzt werden. Bei solchen Zuordnungen ist jede Nachricht ein Signal. Weitere Ausführungsformen können jedoch alternativ Datennachrichten einsetzen. Solche Datennachrichten können über diverse Verbindungen gesendet werden. Beispielhafte Verbindungen weisen parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen auf.
  • Die Rechenarchitektur 800 weist diverse übliche Rechenelemente auf, wie einen oder mehrere Prozessoren, Multi-Core-Prozessoren, Co-Prozessoren, Speichereinheiten, Chipsätze, Steuervorrichtungen, Peripheriegeräte, Schnittstellen, Oszillatoren, Zeitmessvorrichtungen, Videokarten, Audiokarten, Multimedia-Eingangs-/Ausgangs (E/A)-Bauteile, Netzteile usw. Die Ausführungsformen sind jedoch nicht auf Umsetzung durch die Rechenarchitektur 800 beschränkt.
  • Wie in 8 gezeigt, umfasst die Rechenarchitektur 800 eine Verarbeitungseinheit 804, einen Systemspeicher 806 und einen Systembus 808. Die Verarbeitungseinheit 804 kann einer von diversen im Handel erhältlichen Prozessoren sein, einschließlich und uneingeschränkt ein AMD®- Athlon®-, Duron®- und Opteron®-Prozessoren; eine ARM®-Anwendung, eingebettete und sichere Prozessoren; IBM®- und Motorola®- DragonBall®-und PowerPC®-Prozessor; IBM- und Sony®-Cell-Prozessoren; Intel® Celeron®-, Core (2) Duo®-, Itanium®-, Pentium®-, Xeon®- und XScale®-Prozessoren und ähnliche Prozessoren. Duale Mikroprozessoren, Multi-Core-Prozessoren und andere Multi-Prozessorarchitekturen können auch als die Verarbeitungseinheit 804 eingesetzt werden.
  • Der Systembus 808 stellt eine Schnittstelle für Systembauteile bereit, einschließlich, ohne darauf beschränkt zu sein, von dem Systemspeicher 806 zu der Verarbeitungseinheit 804. Der Systembus 808 kann ein beliebiger von mehreren Typen von Busstruktur sein, die ferner mit einem Speicherbus (mit oder ohne Speicher-Controller), einem Peripheriebus und einem lokalen Bus unter Verwenden einer beliebigen einer Vielfalt im Handel erhältlicher Busarchitekturen zusammengeschaltet sein können. Schnittstellenadapter können mit dem Systembus 808 über eine Steckplatzarchitektur verbunden sein. Beispielhafte Steckplatzarchitekturen können uneingeschränkt Accelerated Graphics Port (AGP), Card Bus, (Extended) Industry Standard Architecture ((E)ISA), Micro Channel Architecture (MCA), NuBus, Peripheral Component Interconnect (Extended) (PCI(X)), PCI Express, Personal Computer Memory Card International Association (PCMCIA) und dergleichen aufweisen.
  • Der Systemspeicher 806 kann diverse Typen computerlesbarer Speichermedien in der Form einer oder mehreren Hochgeschwindigkeits-Speichereinheiten aufweisen, wie Nurlesespeicher (Read-Only Memory - ROM), Direktzugriffsspeicher (Random-Access Memory - RAM), dynamischer RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchroner DRAM (SDRAM), statischer RAM (SRAM), programmierbarer ROM (PROM), löschbarer programmierbarer ROM (EPROM), elektrischer löschbarer programmierbarer ROM (EEPROM), Flash-Speicher (zum Beispiel eine oder mehrere Flash-Anordnungen), Polymerspeicher, wie ferroelektrischer Polymerspeicher, Ovonic Memory, Phasenwechsel- oder ferroelektrischer Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS)-Speicher, magnetische oder optische Karten, eine Anordnung von Vorrichtungen, wie Redundant Array of Independent Disks (RAID)-Laufwerke, Festkörper-Speichervorrichtungen (zum Beispiel USB-Speicher, Festkörperlaufwerke (Solid State Devices - SSD) und ein beliebiger anderer Typ von Speichermedium, das zum Speichern von Informationen geeignet ist. Bei der veranschaulichten Ausführungsform, die in 8 gezeigt ist, kann der Systemspeicher 806 nichtflüchtigen Speicher 810 und/oder flüchtigen Speicher 812 aufweisen. Bei einigen Ausführungsformen kann der Systemspeicher 806 Hauptspeicher aufweisen. Eine Basic Input/Output System (BIOS) kann in dem nichtflüchtigen Speicher 810 gespeichert sein.
  • Der Computer 802 kann diverse Typen von computerlesbaren Speichermedien in der Form einer oder mehrerer Speichereinheiten mit niedriger Geschwindigkeit aufweisen, einschließlich ein internes (oder externes) Festplattenlaufwerk (HDD) 814, ein magnetisches Diskettenlaufwerk (Floppy Disk Drive- FDD) 816 zum Lesen von oder schreiben zu einer abnehmbaren magnetischen Disk 818, und ein optisches Plattenlaufwerk 820, um zu einer abnehmbaren optischen Disk 822 (zum Beispiel CD ROM oder DVD) zu lesen oder zu schreiben. Das HDD 814, FDD 816 und das optische Plattenlaufwerk 820 können mit dem Systembus 808 jeweils durch eine HDD-Schnittstelle 824, eine FDD-Schnittstelle 826 und eine optische Laufwerkschnittstelle 828 verbunden werden. Die HDD-Schnittstelle 824 für Umsetzungen mit externem Laufwerk kann mindestens einen Universal Serial Bus (USB) und/oder Institute of Electrical and Electronics Engineers (IEEE) 994-Schnittstellentechnologien aufweisen. Bei diversen Ausführungsformen, sind diese Typen von Speicher eventuell nicht in dem Hauptspeicher oder Systemspeicher enthalten.
  • Die Laufwerke und dazugehörenden computerlesbaren Medien stellen flüchtiges und/oder nichtflüchtiges Speichern von Daten, Datenstrukturen, computerausführbaren Anweisungen usw. bereit. Eine Anzahl von Programmmodulen kann zum Beispiel in den Laufwerken und Speichereinheiten 810, 812 gespeichet sein, einschließlich ein Betriebssystem 830, ein oder mehrere Anwendungsprogramme 832, andere Programmmodule 834 und Programmdaten 836. Bei einer Ausführungsform, können das eine oder mehrere Anwendungsprogramme 832, die anderen Programmmodule 834 und die Programmdaten 836 zum Beispiel die diversen Anwendungen und/oder Bauteile der IOMMU 104 aufweisen, wie einen oder mehrere Abschnitte des Anfragenmanagers 202 und/oder des Seitenmanagers 204.
  • Ein Benutzer kann Befehle und Informationen in den Computer 802 über ein oder mehrere verdrahtete/drahtlose Eingabegeräte eingeben, wie zum Beispiel eine Tastatur 838 und eine Zeigevorrichtung, wie eine Maus 840. Andere Eingabevorrichtungen können Mikrofone, Infrarot (IR)-Fernbedienungen, Funkfrequenz (RF)-Fernbedienungen, Gamepads, Stylus-Stifte, Kartenlesevorrichtungen, Dongle, Fingerabdrucklesegeräte, Handschuhe, Grafiktabletts, Joysticks, Tastaturen, Retinalesegeräte, Touchscreens (zum Beispiel kapazitive, resistive usw.), Trackballs, Trackpads, Sensoren, Stylus und dergleichen aufweisen. Diese und andere Eingabegeräte werden häufig mit der Verarbeitungseinheit 804 über eine EingabegerätSchnittstelle 842 angeschlossen, die mit dem Systembus 808 gekoppelt ist, können aber durch andere Schnittstellen angeschlossen werden, wie durch einen parallelen Port, seriellen IEEE Port 994, einen Gameport, einen USB-Port, eine IR-Schnittstelle usw.
  • Ein Monitor 844 oder ein anderer Typ von Anzeigevorrichtung ist auch an den Systembus 808 über eine Schnittstelle, wie einen Videoadapter 846, angeschlossen. Der Monitor 844 kann ein interner oder externer Monitor des Computers 802 sein. Zusätzlich zu dem Monitor 844, weist ein Computer typischerweise andere Peripherieausgabevorrichtungen, wie Lautsprecher, Drucker usw. auf.
  • Der Computer 802 kann in einer vernetzten Umgebung unter Verwenden logischer Verbindungen über verdrahtete und/oder drahtlose Kommunikationen mit einem oder mehreren entfernten Computern, wie einem entfernten Computer 848, arbeiten. Bei diversen Ausführungsformen können eine oder mehrere Migrationen über die vernetzte Umgebung auftreten. Der entfernte Computer 848 kann eine Workstation, ein Server Computer, ein Router, ein Personal Computer, tragbarer Computer, ein Mikroprozessor-basiertes Unterhaltungsgerät, eine Peer-Vorrichtung oder ein anderer gemeinsamer Netzwerkknoten sein, und weist typischerweise viele oder alle der Elemente auf, die in Zusammenhang mit dem Computer 802 beschrieben wurden, obwohl zum Zweck der Kürze nur eine Speichervorrichtung 850 veranschaulicht ist. Die logischen Verbindungen, die abgebildet sind, weisen verdrahtete/drahtlose Anbindung mit einem Local Area Network (LAN) 852 und/oder größeren Netzwerken, zum Beispiel einem Wide Area Network (WAN) 854, auf. Solche LAN- und WAN-Vernetzungsumgebungen sind in Büros und Unternehmen gängig, und erleichtern unternehmensweite Computernetzwerke, wie Intranets, die alle mit einem globalen Kommunikationsnetzwerk, zum Beispiel dem Internet, verbunden sein können.
  • Wenn der Computer 802 in einer LAN-Netzwerkumgebung verwendet wird, ist er mit dem LAN 852 durch eine verdrahtete und/oder drahtlose Kommunikationsnetzwerk Schnittstelle oder einen Adapter 856 verbunden. Der Adapter 856 kann verdrahtete und/oder drahtlose Kommunikationen mit dem LAN 852 erleichtern, dass auch einen drahtlosen Zugangspunkt aufweisen kann, der darauf zum Kommunizieren mit der drahtlosen Funktionalität des Adapters 856 angeordnet ist.
  • Beim Verwenden in einer WAN-Netzwerkumgebung, kann der Computer 802 ein Modem 1358 aufweisen, oder ist mit einem Kommunikationsserver auf dem WAN 854 verbunden sein, oder andere Mittel zum Herstellen von Kommunikationen über das WAN 854, wie über das Internet, haben. Das Modem 858, das intern oder extern und ein verdrahtetes und/oder drahtloses Gerät sein kann, ist mit dem Bussystem 808 über die Eingabegerätschnittstelle 842 verbunden. In einer vernetzten Umgebung können Programmmodule, die in Zusammenhang mit dem Computer 802 abgebildet sind, oder Abschnitte von ihnen, in der entfernten Speichervorrichtung 850 gespeichert werden. Man versteht, dass die gezeigten Netzwerkverbindungen beispielhaft sind, und dass andere Mittel zum Herstellen einer Kommunikationsverbindung zwischen den Computern verwendet werden können.
  • Der Computer 802 kann betätigt werden, um mit verdrahteten und drahtlosen Vorrichtungen oder Entitäten unter Verwenden der Standardfamilie IEEE 802 zu kommunizieren, wie drahtlose Vorrichtungen, die wirkverbunden in drahtloser Kommunikation angeordnet sind (zum Beispiel IEEE 802.16 Over-the-Air Modulations-Techniken). Das schließt unter anderen mindestens Wi-Fi (oder Wireless Fidelity), WiMax und Bluetooth™-Drahtlostechnologien ein. Die Kommunikation kann daher eine vordefinierte Struktur sein, wie ein herkömmliches Netzwerk oder einfach eine AdHoc-Kommunikation zwischen mindestens zwei Vorrichtungen. Wi-Fi-Netzwerke verwenden Funktechnologien, die IEEE 802.11x (a, b, g, n usw.) genannt werden, um sichere, zuverlässige und schnelle drahtlose Anbindung bereitzustellen. Ein Wi-Fi-Netzwerk kann verwendet werden, um Computer miteinander, mit dem Internet und mit verdrahteten Netzwerken (die mit IEEE 802.3 verwandte Medien und Funktionen verwenden) zu verbinden.
  • 9 veranschaulicht ein Blockschaltbild einer beispielhaften Kommunikationsarchitektur 900, die zum Umsetzen diverser Ausführungsformen, wie oben beschrieben, wie einer Migration virtueller Maschinen, geeignet sind. Die Kommunikationsarchitektur 900 weist diverse gemeinsame Kommunikationselemente, wie einen Sender, einen Empfänger, einen Transceiver, Funk, eine Netzwerkschnittstelle, einen Basisband-Prozessor, eine Antenne, Verstärker, Filter, Netzteile usw. auf. Die Ausführungsformen sind jedoch nicht auf Umsetzung durch die Kommunikationsarchitektur 900 beschränkt.
  • Wie in 9 gezeigt, umfasst die Kommunikationsarchitektur 900 einen oder mehrere Clients 902 und Server 904. Die Clients 902 und die Server 904 sind mit einem oder mehreren jeweiligen Client-Datenspeichern 908 und Server-Datenspeichern 910 wirkverbunden, die eingesetzt werden können, um Informationen lokal zu den jeweiligen Clients 902 und Servern 904 zu speichern, wie Cookies und/oder andere assoziierte Kontextinformationen. Bei diversen Ausführungsformen kann ein beliebiger der Server 904 einen oder mehrere der Logikabläufe oder der Operationen, die hier beschrieben sind, und das Speichermedium 700 der 7 verbunden mit Speichern von Daten, die von einem beliebigen der Clients 902 oder einem beliebigen der Server-Datenspeicher 910 empfangen werden, umsetzen. Bei einer oder mehreren Ausführungsformen, können einer oder mehreren des/der Client-Datenspeichers 908 oder Server-Datenspeichers 910 den SVM 106 aufweisen.
  • Die Clients 902 und die Server 904 können Informationen untereinander unter Verwenden eines Kommunikationsframeworks 906 kommunizieren. Das Kommunikationsframework 906 kann beliebige gut bekannte Kommunikationstechniken und -protokolle umsetzen. Das Kommunikationsframework 906 kann als ein paketvermitteltes Netzwerk (zum Beispiel öffentliche Netzwerke, wie das Internet, private Netzwerke, wie ein Unternehmensintranet usw.), ein leitungsvermitteltes Netzwerk (wie das öffentliche Telefonnetzwerk) oder eine Kombination eines paketvermittelten Netzwerks und eines leitungvermittelten Netzwerks (mit zweckdienlichen Gateways und Übersetzern) umgesetzt werden.
  • Das Kommunikationsframework 906 kann diverse Netzwerkschnittstellen umsetzen, die eingerichtet sind, um zu akzeptieren, kommunizieren und mit einem Kommunikationsnetzwerk zu verbinden. Eine Netzwerkschnittstelle kann als eine spezialisierte Form einer Eingabe-/Ausgabeschnittstelle betrachtet werden. Netzwerkschnittstellen können Verbindungsprotokolle einsetzen, einschließlich und uneingeschränkt direkte Verbindung, Ethernet (zum Beispiel Thick, Thin, Twisted Pair 10/100/1900 Base T und dergleichen), Token Ring, drahtlose Netzwerkschnittstellen, zellulare Netzwerkschnittstellen, IEEE 802.11a-x-Netzwerkschnittstellen, IEEE 802.16-Netzwerkschnittstellen, IEEE 802.20-Netzwerkschnittstellen und dergleichen. Des Weiteren können mehrere Netzwerkschnittstellen verwendet werden, um mit diversen Kommunikationsnetzwerktypen verbinden. Mehrere Netzwerkschnittstellen können zum Beispiel eingesetzt werden, um Kommunikation über Broadcast, Multicast- und Unicast-Netzwerke zu erlauben. Sollten Verarbeitungsanforderungen eine höhere Geschwindigkeit und größere Kapazität vorschreiben, können verteilte Netzwerk-Controllerarchitekturen ähnlich eingesetzt werden, um die Kommunikationsbandbreite, die die Clients 902 und die Server 904 benötigen, zusammenzulegen, hinsichtlich der Last auszugleichen und anderswie zu erhöhen. Ein Kommunikationsnetzwerk kann ein beliebiges und die Kombination verdrahteter und/oder drahtloser Netzwerke sein, uneingeschränkt eine direkte Zusammenschaltung, eine gesichertecustomisierte Verbindung, ein privates Netzwerk (zum Beispiel ein Unternehmensintranet), ein öffentliches Netzwerk (zum Beispiel das Internet), ein Personal Area Network (PAN), ein Local Area Network (LAN), ein Metropolitan Area Network (MAN), ein Operating Missions as Nodes on the Internet (OMNI), ein Wide Area Network (WAN), ein drahtloses Netzwerk, ein zellulares Netzwerk und andere Kommunikationsnetzwerke.
  • Diverse Ausführungsformen können unter Verwenden von Hardwareelementen, Softwareelementen oder einer Kombination beider implementiert werden. Beispiele für Hardwareelemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z.B. Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikbausteine (PLD, Programmable Logic Devices), digitale Signalprozessoren (DSP), ein feldprogrammierbares GateArray (FPGA), Logik-Gatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze und so weiter beinhalten. Beispiele für Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API, Application Program Interfaces), Anweisungssätze, Datenverarbeitungscode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination daraus beinhalten. Das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann gemäß einer beliebigen Anzahl von Faktoren variieren, wie zum Beispiel der gewünschten Rechengeschwindigkeit, den Leistungspegeln, den Wärmetoleranzen, dem Verarbeitungszyklusbudget, den Eingangsdatenraten, den Ausgangsdatenraten, den Speicherressourcen, den Datenbusgeschwindigkeiten und anderen Design oder Leistungsvorgaben.
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentative Anweisungen implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, welche, wenn sie durch eine Maschine gelesen werden, die Maschine veranlassen, Logik zu erstellen, um die hierin beschriebenen Techniken auszuführen. Solche Darstellungen, die als „IP-Cores“ bekannt sind, können auf einem konkreten, maschinenlesbaren Medium gespeichert und zu diversen Kunden oder Fertigungsanlagen geliefert werden, um in die Fertigungsmaschinen geladen zu werden, die tatsächlich die Logik oder den Prozessor herstellen. Solche Ausführungsformen können zum Beispiel unter Verwenden eines maschinenlesbaren Mediums oder Artikels, das/der eine Anweisung oder einen Satz von Anweisungen speichert, der, falls er von einer Maschine ausgeführt wird, die Maschine veranlassen kann, ein Verfahren und/oder Operationen in Übereinstimmung mit den Ausführungsformen auszuführen. Eine solche Maschine kann zum Beispiel eine beliebige zweckdienliche Verarbeitungsplattform, Rechenplattform, Rechenvorrichtung, Verarbeitungsvorrichtung, Rechensystem, Verarbeitungssystem, Computer, Prozessor oder dergleichen aufweisen, und kann unter Verwenden einer beliebigen zweckdienlichen Kombination von Hardware und/oder Software umgesetzt werden. Das maschinenlesbare Medium oder der maschinenlesbare Artikel kann zum Beispiel eine beliebige geeignete Art von Speichereinheit, Speichereirrichtung, Speicherartikel, Speichermedium, Speicherungseinrichtung, Speicherungsartikel, Speicherungsmedium und/oder Speicherungseinheit beinhalten, zum Beispiel Speicher, entfernbare oder nicht entfernbare Medien, löschbare oder nicht löschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, Festplatte, Floppy-Disk, CD-ROM (Compact Disk Read Only Memory), CD-R (Compact Disk Recordable), CD-RW (Compact Disk Rewritable), optische Platte, magnetische Medien, magnetooptische Medien, entfernbare Speicherkarten oder Platten, verschiedene Arten von DVD (Digital Versatile Disk), ein Band, eine Kassette oder dergleichen. Die Anweisungen können einen beliebigen zweckdienlichen Typ von Code aufweisen, wie Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code, verschlüsselten Code und dergleichen, die unter Verwenden einer beliebigen zweckdienlichen High-Level-, Low-Level-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache umgesetzt.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen, aus denen zahlreiche Permutationen und Konfigurationen ersichtlich werden.
  • Beispiel 1 ist ein Gerät zum Steuerflussschutz, wobei das Gerät Folgendes umfasst: einen Speicher; und Logik für eine Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), mit mindestens einem Abschnitt der Logik, der in Schaltung umgesetzt ist, die mit dem Speicher gekoppelt ist, Logik zum: Empfangen einer Speicherzugriffsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM), wobei die Speicherzugriffsanfrage einen Typ einer Mehrzahl von Typen von Speicherzugriffsanfragen umfasst; Identifizieren eines Übersetzungseintrags, der mit der Speicherzugriffsanfrage assoziiert ist, in einem Zwischenspeicher, wobei der Übersetzungseintrag einen Genehmigungssatz umfasst; Ausführen der Speicherzugriffsanfrage, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage genehmigt; und Erzeugen eines Zugriffsanfragefehlers, wenn die Genehmigung Einschränkungen des Typs der Speicherzugriffsanfrage setzt.
  • Beispiel 2 weist den Gegenstand des Beispiels 1 auf, wobei jede Genehmigung in dem Genehmigungssatz den Typ der Mehrzahl von Typen von Speicherzugriffsanfragen erlaubt oder einschränkt.
  • Beispiel 3 weist den Gegenstand des Beispiels 1 auf, wobei der Satz von Genehmigungen eine oder mehrere einer Lesegenehmigung, einer Schreibgenehmigung und einer Ausführungsgenehmigung umfasst.
  • Beispiel 4 weist den Gegenstand des Beispiels 1 auf, wobei die IOMMU den Zwischenspeicher umfasst.
  • Beispiel 5 weist den Gegenstand des Beispiels 1 auf, wobei der Zwischenspeicher einen Translation Lookaside Buffer (TLB) umfasst.
  • Beispiel 6 weist den Gegenstand des Beispiels 1 auf, wobei der Übersetzungseintrag einen Satz von Bits umfasst, und jede Genehmigung in dem Genehmigungssatz einen Subsatz des Satzes von Bits umfasst.
  • Beispiel 7 weist den Gegenstand des Beispiels 1 auf, der ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  • Beispiel 8 weist den Gegenstand des Beispiels 1 auf, wobei die SVM Vorrichtung eines oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgang (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  • Beispiel 9 weist den Gegenstand des Beispiels 1 auf, wobei die Speicherzugriffsanfrage eine virtuelle Adresse umfasst.
  • Beispiel 10 weist den Gegenstand des Beispiels 9 auf, wobei die Logik den Übersetzungseintrag, der mit der Speicherzugriffsanfrage assoziiert ist, in dem Zwischenspeicher basierend auf der virtuellen Adresse identifiziert.
  • Beispiel 11 weist den Gegenstand des Beispiels 9 auf, wobei die Logik basierend auf dem Übersetzungseintrag eine lineare Adresse bestimmt, die der virtuellen Adresse entspricht.
  • Beispiel 12 weist den Gegenstand des Beispiels 1 auf, wobei die Logik einem Exception Handler den Zugriffsanfragefehler meldet, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  • Beispiel 13 weist den Gegenstand des Beispiels 12 auf, wobei der Exception Handler in einem Betriebssystem (OS) enthalten ist, wobei der Exception Handler die Speicherzugriffsanfrage beendet.
  • Beispiel 14 ist ein Gerät zum Steuerflussschutz, wobei das Gerät Folgendes umfasst: einen Speicher; und Logik für eine Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), mit mindestens einem Abschnitt der Logik, der in Schaltung umgesetzt ist, die mit dem Speicher gekoppelt ist, Logik zum: Empfangen einer Speichertransakationsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM), wobei die Speichertransakationsanfrage eine Adresse umfasst, die mit einer Speicherseite in einem SVM assoziiert ist, der von der SVM Vorrichtung eingesetzt wird; Bestimmen, dass die Speichertransaktionsanfrage eine Übersetzungsanfrage aufweist und mit einer Schreibanfrage assoziiert ist; Identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist; Erzeugen eines Übersetzungsabschlusses mit Lese- und Schreibzugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist; und Erzeugen eines Übersetzungsabschlusses mit NurleseZugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 15 weist den Gegenstand des Beispiels 14 auf, wobei die Logik den Übersetzungsabschluss mit Lese- und Schreibzugriff zu der SVM-Vorrichtung sendet, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist.
  • Beispiel 16 weist den Gegenstand des Beispiels 14 auf, wobei die Logik den Übersetzungsabschluss mit Nurlese-Zugriff zu der SVM-Vorrichtung sendet, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 17 weist den Gegenstand des Beispiels 14 auf, wobei die IOMMU einen IOMMU-Zwischenspeicher mit mindestens einem Übersetzungseintrag, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM Vorrichtung assoziiert ist, umfasst.
  • Beispiel 18 weist den Gegenstand des Beispiels 17 auf, wobei die Logik basierend auf dem IOMMU-Zwischenspeicher identifiziert, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 19 weist den Gegenstand des Beispiels 14 auf, wobei die Logik basierend auf einem oder mehreren Speichertabellenläufen identifiziert, ob die Speicherseite, die Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 20 weist den Gegenstand des Beispiels 14 auf, der die SVM-Vorrichtung umfasst, wobei die SVM-Vorrichtung einen Vorrichtungszwischenspeicher mit mindestens einem Übersetzungseintrag, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM-Vorrichtung assoziiert ist, umfasst.
  • Beispiel 21 weist den Gegenstand des Beispiels 14 auf, wobei die Speichertransaktionsanfrage einen Adressfeldtyp umfasst, um anzugeben, ob die Adresse, die mit der Speicherseite in dem SVM assoziiert ist, übersetzt oder nicht übersetzt ist.
  • Beispiel 22 weist den Gegenstand des Beispiels 21 auf, wobei die Speichertransaktionsanfrage einen Header umfasst, der das Adresstypfeld aufweist.
  • Beispiel 23 weist den Gegenstand des Beispiels 14 auf, der ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  • Beispiel 24 weist den Gegenstand des Beispiels 14 auf, der eine Zentraleinheit (CPU) umfasst, wobei die CPU und die SVM-Vorrichtung den SVM einsetzen.
  • Beispiel 25 weist den Gegenstand des Beispiels 14 auf, wobei die SVM-Vorrichtung eines oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgang (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  • Beispiel 26 ist mindestens ein nichtflüchtiges computerlesbares Medium, das einen Satz von Anweisungen umfasst, der als Reaktion auf seine Ausführung durch eine Prozessorschaltung die Prozessorschaltung veranlasst zum: Empfangen einer Speicherzugriffsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM) an einer Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei die Speicherzugriffsanfrage einen Typ einer Mehrzahl von Typen von Speicherzugriffsanfragen umfasst; Identifizieren eines Übersetzungseintrags, der mit der Speicherzugriffsanfrage assoziiert ist, in einem Zwischenspeicher, wobei der Übersetzungseintrag einen Genehmigungssatz umfasst; Ausführen der Speicherzugriffsanfrage, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage erlaubt; und Erzeugen eines Zugriffsanfragefehlers, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  • Beispiel 27 weist den Gegenstand des Beispiels 26 auf, wobei jede Genehmigung in dem Genehmigungssatz den Typ der Mehrzahl von Typen von Speicherzugriffsanfragen erlaubt oder einschränkt.
  • Beispiel 28 weist den Gegenstand des Beispiels 26 auf, wobei der Satz von Genehmigungen eine oder mehrere einer Lesegenehmigung, einer Schreibgenehmigung und einer Ausführungsgenehmigung umfasst.
  • Beispiel 29 weist den Gegenstand des Beispiels 26 auf, wobei die IOMMU den Zwischenspeicher umfasst.
  • Beispiel 30 weist den Gegenstand des Beispiels 26 auf, wobei der Zwischenspeicher einen Translation Lookaside Buffer (TLB) umfasst.
  • Beispiel 31 weist den Gegenstand des Beispiels 26 auf, wobei der Übersetzungseintrag einen Satz von Bits umfasst, und jedeGenehmigung in dem Genehmigungssatz einen Subsatz des Satzes von Bits umfasst.
  • Beispiel 32 weist den Gegenstand des Beispiels 26 auf, der ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  • Beispiel 33 weist den Gegenstand des Beispiels 26 auf, wobei die SVM Vorrichtung eines oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgang (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  • Beispiel 34 weist den Gegenstand des Beispiels 26 auf, wobei die Speicherzugriffsanfrage eine virtuelle Adresse umfasst.
  • Beispiel 35 weist den Gegenstand des Beispiels 34 auf, der Anweisungen umfasst, die als Reaktion auf ihr Ausführen durch die Prozessorschaltung die Prozessorschaltung veranlassen, den Übersetzungseintrag, der mit der Speicherzugriffsanfrage assoziiert ist, in dem Zwischenspeicher basierend auf der virtuellen Adresse zu identifizieren.
  • Beispiel 36 weist den Gegenstand des Beispiels 34 auf, der Anweisungen umfasst, die als Reaktion auf ihr Ausführen durch die Prozessorschaltung die Prozessorschaltung veranlassen, basierend auf dem Übersetzungseintrag eine lineare Adresse zu bestimmen, die der virtuellen Adresse entspricht.
  • Beispiel 37 weist den Gegenstand des Beispiels 26 auf, der Anweisungen umfasst, die als Reaktion auf ihr Ausführen durch die Prozessorschaltung die Prozessorschaltung veranlassen, einem Exception Handler den Zugriffsanfragefehler zu melden, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  • Beispiel 38 weist den Gegenstand des Beispiels 37 auf, wobei der Exception Handler in einem Betriebssystem (OS) enthalten ist, wobei der Exception Handler die Speicherzugriffsanfrage beendet.
  • Beispiel 39 ist mindestens ein nichtflüchtiges computerlesbares Medium, das einen Satz von Anweisungen umfasst, die als Reaktion auf ihr Ausführen durch eine Prozessorschaltung die Prozessorschaltung veranlassen zum: Empfangen einer Speichertransaktionsanfrage von einer Vorrichtung mit gemeinsamem virtuellem Speicher (SVM) an einer Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei die Speichertransaktionsanfrage eine Adresse umfasst, die mit einer Speicherseite in einem SVM assoziiert ist, der von der SVM-Vorrichtung eingesetzt wird; Bestimmen, dass die Speichertransaktionsanfrage eine Übersetzungsanfrage aufweist und mit einer Schreibanfrage assoziiert ist; Identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist; Erzeugen eines Übersetzungsabschlusses mit Lese- und Schreibzugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist; und Erzeugen eines Übersetzungsabschlusses mit Nurlese-Zugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 40 weist den Gegenstand des Beispiels 39 auf, der Anweisungen umfasst, die als Reaktion auf ihr Ausführen durch die Prozessorschaltung die Prozessorschaltung veranlassen, den Übersetzungsabschluss mit Lese- und Schreibzugriff zu der SVM-Vorrichtung zu senden, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist.
  • Beispiel 41 weist den Gegenstand des Beispiels 39 auf, der Anweisungen umfasst, die als Reaktion auf ihr Ausführen durch die Prozessorschaltung die Prozessorschaltung veranlassen, den Übersetzungsabschluss mit Nurlese-Zugriff zu der SVM-Vorrichtung zu senden, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 42 weist den Gegenstand des Beispiels 39 auf, wobei die IOMMU einen IOMMU-Zwischenspeicher mit mindestens einem Übersetzungseintrag, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM-Vorrichtung assoziiert ist, umfasst.
  • Beispiel 43 weist den Gegenstand des Beispiels 42 auf, der Anweisungen umfasst, die als Reaktion auf ihr Ausführen durch die Prozessorschaltung die Prozessorschaltung veranlassen, basierend auf dem IOMMU-Zwischenspeicher zu identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 44 weist den Gegenstand des Beispiels 39 auf, der Anweisungen umfasst, die als Reaktion auf ihr Ausführen durch die Prozessorschaltung die Prozessorschaltung veranlassen, basierend auf einem oder mehrereneren Seitentabellenläufen zu identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 45 weist den Gegenstand des Beispiels 39 auf, der die SVM Vorrichtung umfasst, wobei die SVM Vorrichtung einen Vorrichtungszwischenspeicher mit mindestens einem Übersetzungseintrag, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM-Vorrichtung assoziiert ist, umfasst.
  • Beispiel 46 weist den Gegenstand des Beispiels 39 auf, wobei die Speichertransaktionsanfrage einen Adressfeldtyp umfasst, um anzugeben, ob die Adresse, die mit der Speicherseite in dem SVM assoziiert ist, übersetzt oder nicht ibersetzt ist.
  • Beispiel 47 weist den Gegenstand des Beispiels 46 auf, wobei die Speichertransaktionsanfrage einen Header umfasst, der das Adresstypfeld aufweist.
  • Beispiel 48 weist den Gegenstand des Beispiels 39 auf, der ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  • Beispiel 49 weist den Gegenstand des Beispiels 39 auf, der eine Zentraleinheit (CPU) umfasst, wobei die CPU und die SVM-Vorrichtung den SVM einsetzen.
  • Beispiel 50 weist den Gegenstand des Beispiels 39 auf, wobei die SVM-Vorrichtung eines oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgang (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  • Beispiel 51 ist ein computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen eine Speicherzugriffsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM) an einer Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei die Speicherzugriffsanfrage einen Typ einer Mehrzahl von Typen von Speicherzugriffsanfragen umfasst;Identifizieren eines Übersetzungseintrags, der mit der Speicherzugriffsanfrage assoziiert ist, in einem Zwischenspeicher, wobei der Übersetzungseintrag einen Genehmigungssatz umfasst; Ausführen der Speicherzugriffsanfrage, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage erlaubt; und Erzeugen eines Zugriffsanfragefehlers, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  • Beispiel 52 weist den Gegenstand des Beispiels 51 auf, wobei jede Genehmigung in dem Genehmigungssatz den Typ der Mehrzahl von Typen von Speicherzugriffsanfragen erlaubt oder einschränkt.
  • Beispiel 53 weist den Gegenstand des Beispiels 51 auf, wobei der Satz von Genehmigungen eine oder mehrere einer Lesegenehmigung, einer Schreibgenehmigung und einer Ausführungsgenehmigung umfasst.
  • Beispiel 54 weist den Gegenstand des Beispiels 51 auf, wobei die IOMMU den Zwischenspeicher umfasst.
  • Beispiel 55 weist den Gegenstand des Beispiels 51 auf, wobei der Zwischenspeicher einen Translation Lookaside Buffer (TLB) umfasst.
  • Beispiel 56 weist den Gegenstand des Beispiels 51 auf, wobei der Übersetzungseintrag einen Satz von Bits umfasst, und jede Genehmigung in dem Genehmigungssatz einen Subsatz des Satzes von Bits umfasst.
  • Beispiel 57 weist den Gegenstand des Beispiels 51 auf, der ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  • Beispiel 58 weist den Gegenstand des Beispiels 51 auf, wobei die SVM-Vorrichtung eines oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgang (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  • Beispiel 59 weist den Gegenstand des Beispiels 51 auf, wobei die Speicherzugriffsanfrage eine virtuelle Adresse umfasst.
  • Beispiel 60 weist den Gegenstand des Beispiels 59 auf, der das Identifizieren des Übersetzungseintrags, der mit der Speicherzugriffsanfrage assoziiert ist, in dem Zwischenspeicher basierend auf der virtuellen Adresse umfasst.
  • Beispiel 61 weist den Gegenstand des Beispiels 59 auf, der das Bestimmen basierend auf dem Übersetzungseintrag einer linearen Adresse, die der virtuellen Adresse entspricht, umfasst.
  • Beispiel 62 weist den Gegenstand des Beispiels 51 auf, der das Melden eines Zugriffsanfragefehlers zu einem Exception Handler umfasst, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  • Beispiel 63 weist den Gegenstand des Beispiels 62 auf, wobei der Exception Handler in einem Betriebssystem (OS) enthalten ist, wobei der Exception Handler die Speicherzugriffsanfrage beendet.
  • Beispiel 64 ist ein computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen einer Speichertransaktionsanfrage von einer Vorrichtung mit gemeinsamem virtuellem Speicher (SVM) an einer Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei die Speichertransaktionsanfrage eine Adresse umfasst, die mit einer Speicherseite in einem SVM assoziiert ist, der von der SVM-Vorrichtung eingesetzt wird; Bestimmen, dass die Speichertransaktionsanfrage eine Übersetzungsanfrage aufweist und mit einer Schreibanfrage assoziiert ist; Identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist; Erzeugen eines Übersetzungsabschlusses mit Lese- und Schreibzugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausfürhbar ist; und Erzeugen eines Übersetzungsabschlusses mit NurleseZugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 65 weist den Gegenstand des Beispiels 64 auf, der das Senden des Übersetzungsabschlusses mit Lese- und Schreibzugriff zu der SVM-Vorrichtung umfasst, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist.
  • Beispiel 66 weist den Gegenstand des Beispiels 64 auf, der das Senden des Übersetzungsabschlusses mit Nurlese-Zugriff zu der SVM-Vorrichtung umfasst, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 67 weist den Gegenstand des Beispiels 64 auf, wobei die IOMMU einen IOMMU-Zwischenspeicher mit mindestens einem Übersetzungseintrag, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM Vorrichtung assoziiert ist, umfasst.
  • Beispiel 68 weist den Gegenstand des Beispiels 67 auf, der das Identifizieren basierend auf dem IOMMU-Zwischenspeicher umfasst, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 69 weist den Gegenstand des Beispiels 64 auf, der das Identifizieren basierend auf einem oder mehreren Speichertabellenläufen umfasst, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 70 weist den Gegenstand des Beispiels 64 auf, der die SVM-Vorrichtung umfasst, wobei die SVM-Vorrichtung einen Vorrichtungszwischenspeicher mit mindestens einem Übersetzungseintrag, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM-Vorrichtung assoziiert ist, umfasst.
  • Beispiel 71 weist den Gegenstand des Beispiels 64 auf, wobei die Speichertransaktionsanfrage einen Adressfeldtyp umfasst, um anzugeben, ob die Adresse, die mit der Speicherseite in dem SVM assoziiert ist, übersetzt oder nicht übersetzt ist.
  • Beispiel 72 weist den Gegenstand des Beispiels 71 auf, wobei die Speichertransaktionsanfrage einen Header umfasst, der das Adresstypfeld aufweist.
  • Beispiel 73 weist den Gegenstand des Beispiels 64 auf, der ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  • Beispiel 74 weist den Gegenstand des Beispiels 64 auf, der eine Zentraleinheit (CPU) umfasst, wobei die CPU und die SVM-Vorrichtung den SVM einsetzen.
  • Beispiel 75 weist den Gegenstand des Beispiels 64 auf, wobei die SVM-Vorrichtung eines oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgang (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  • Beispiel 76 ist ein Gerät zum Steuerflussschutz, wobei das Gerät Folgendes umfasst: Mittel zum Empfangen einer Speicherzugriffsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM) an einer Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei die Speicherzugriffsanfrage einen Typ einer Mehrzahl von Typen von Speicherzugriffsanfragen umfasst; Mittelzum Identifizieren eines Übersetzungseintrags, der mit der Speicherzugriffsanfrage assoziiert ist, in einem Zwischenspeicher, wobei der Übersetzungseintrag einen Genehmigungssatz umfasst; Mittel zum Ausführen der Speicherzugriffsanfrage, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage erlaubt; und Mittel zum Erzeugen eines Zugriffsanfragefehlers, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  • Beispiel 77 weist den Gegenstand des Beispiels 76 auf, wobei jede Genehmigung in dem Genehmigungssatz den Typ der Mehrzahl von Typen von Speicherzugriffsanfragen erlaubt oder einschränkt.
  • Beispiel 78 weist den Gegenstand des Beispiels 76 auf, wobei der Satz von Genehmigungen eine oder mehrere einer Lesegenehmigung, einer Schrebgenehmigung und einer Ausführungsgenehmigung umfasst.
  • Beispiel 79 weist den Gegenstand des Beispiels 76 auf, wobei die IOMMU den Zwischenspeicher umfasst.
  • Beispiel 80 weist den Gegenstand des Beispiels 76 auf, wobei der Zwischenspeicher einen Translation Lookaside Buffer (TLB) umfasst.
  • Beispiel 81 weist den Gegenstand des Beispiels 76 auf, wobei der Übersetzungseintrag einen Satz von Bits umfasst, und jede Genehmigung in dem Genehmigungssatz einen Subsatz des Satzes von Bits umfasst.
  • Beispiel 82 weist den Gegenstand des Beispiels 76 auf, der ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  • Beispiel 83 weist den Gegenstand des Beispiels 76 auf, wobei die SVM-Vorrichtung eines oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgang (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  • Beispiel 84 weist den Gegenstand des Beispiels 76 auf, wobei die Speicherzugriffsanfrage eine virtuelle Adresse umfasst.
  • Beispiel 85 weist den Gegenstand des Beispiels 84 auf, der Mittel zum Identifizieren des Übersetzungseintrags, der mit der Speicherzugriffsanfrage assoziiert ist, in dem Zwischenspeicher basierend auf der virtuellen Adresse umfasst.
  • Beispiel 86 weist den Gegenstand des Beispiels 84 auf, der Mittel zum Bestimmen basierend auf dem Übersetzungseintrag einer linearen Adresse, die der virtuellen Adresse entspricht, umfasst.
  • Beispiel 87 weist den Gegenstand des Beispiels 76 auf, der Mittel zum Melden eines Zugriffsanfragefehlers zu einem Exception Handler umfasst, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  • Beispiel 88 weist den Gegenstand des Beispiels 87 auf, wobei der Exception Handler in einem Betriebssystem (OS) enthalten ist, wobei der Exception Handler die Speicherzugriffsanfrage beendet.
  • Beispiel 89 ist ein Gerät zum Steuerflussschutz, wobei das Gerät Folgendes umfasst: Mittel zum Empfangen einer Speichertransaktionsanfrage von einer Vorrichtung mit gemeinsamem virtuellem Speicher (SVM) an einer Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei die Speichertransaktionsanfrage eine Adresse umfasst, die mit einer Speicherseite in einem SVM assoziiert ist, der von der SVM-Vorrichtung eingesetzt wird; Mittel zum Bestimmen, dass die Speichertransaktionsanfrage eine Übersetzungsanfrage aufweist und mit einer Schreibanfrage assoziiert ist; Mittel zum Identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist; Mittel zum Erzeugen eines Übersetzungsabschlusses mit Lese- und Schreibzugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist; und Mittel zum Erzeugen eines Übersetzungsabschlusses mit Nurlese-Zugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 90 weist den Gegenstand des Beispiels 89 auf, der Mittel zum Senden des Übersetzungsabschlusses mit Lese- und Schreibzugriff zu der SVM-Vorrichtung umfasst, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist.
  • Beispiel 91 weist den Gegenstand des Beispiels 89 auf, der Mittel zum Senden des Übersetzungsabschlusses mit Nurlese-Zugriff zu der SVM-Vorrichtung umfasst, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 92 weist den Gegenstand des Beispiels 89 auf, wobei die IOMMU einen IOMMU-Zwischenspeicher mit mindestens einem Übersetzungseintrag, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM Vorrichtung assoziiert ist, umfasst.
  • Beispiel 93 weist den Gegenstand des Beispiels 92 auf, der Mittel zum Identifizieren basierend auf dem IOMMU-Zwischenspeicher umfasst, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 94 weist den Gegenstand des Beispiels 89 auf, der Mittel zum Identifizieren basierend auf einem oder mehreren Speichertabellenläufen umfasst, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  • Beispiel 95 weist den Gegenstand des Beispiels 89 auf, der die SVM-Vorrichtung umfasst, wobei die SVM- Vorrichtung einen Vorrichtungszwischenspeicher mit mindestens einem Übersetzungseintrag, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM-Vorrichtung assoziiert ist, umfasst.
  • Beispiel 96 weist den Gegenstand des Beispiels 89 auf, wobei die Speichertransaktionsanfrage einen Adressfeldtyp umfasst, um anzugeben, ob die Adresse, die mit der Speicherseite in dem SVM assoziiert ist, übersetzt oder nicht übersetzt ist.
  • Beispiel 97 weist den Gegenstand des Beispiels 96 auf, wobei die Speichertransaktionsanfrage einen Header umfasst, der das Adresstypfeld aufweist.
  • Beispiel 98 weist den Gegenstand des Beispiels 89 auf, der ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  • Beispiel 99 weist den Gegenstand des Beispiels 89 auf, der eine Zentraleinheit (CPU) umfasst, wobei die CPU und die SVM-Vorrichtung den SVM einsetzen.
  • Beispiel 100 weist den Gegenstand des Beispiels 89 auf, wobei die SVM Vorrichtung eines oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgang (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  • Die vorangehende Beschreibung von Ausführungsbeispielen wurde zum Zwecke der Veranschaulichung und Beschreibung präsentiert. Sie bezweckt nicht, erschöpfend zu sein oder die vorliegende Offenbarung auf die offenbarten präzisen Formen zu beschränken. Viele Modifikationen und Variationen sind angesichts dieser Offenbarung möglich. Es wird bezweckt, dass der Schutzbereich der vorliegenden Offenbarung nicht durch diese ausführliche Beschreibung sondern vielmehr durch die hier anliegenden Ansprüche beschränkt ist. Zukünftige eingereichte Anmeldungen, die Priorität gegenüber dieser Anmeldung beanspruchen, können den offenbarten Gegenstand auf eine unterschiedliche Art und Weise beanspruchen und können allgemein einen beliebigen Satz von einer oder mehreren Einschränkungen, wie vorliegend verschiedenartig offenbart oder anderweitig aufgezeigt, aufweisen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • IEEE 802.11a-x-Netzwerkschnittstellen [0089]
    • IEEE 802.16-Netzwerkschnittstellen [0089]
    • IEEE 802.20-Netzwerkschnittstellen [0089]

Claims (25)

  1. Gerät zum Steuerflussschutz, wobei das Gerät Folgendes umfasst: einen Speicher; und Logik für eine Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei mindestens ein Abschnitt der Logik in Schaltungen umgesetzt ist, die mit dem Speicher gekoppelt sind, wobei die Logik: eine Speicherzugriffsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM) empfängt, wobei die Speicherzugriffsanfrage einen Typ einer Mehrzahl von Typen von Speicherzugriffsanfragen umfasst; einen Übersetzungseintrag, der mit der Speicherzugriffsanfrage assoziiert ist, in einem Zwischenspeicher identifiziert, wobei der Übersetzungseintrag einen Genehmigungssatz umfasst; die Speicherzugriffsanfrage ausführt, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage erlaubt; und eine Zugriffsanfragefehlern erzeugt, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  2. Gerät nach Anspruch 1, wobei jede Genehmigung in dem Genehmigungssatz einen Typ der Mehrzahl von Typen von Speicherzugriffsanfragen erlaubt oder einschränkt.
  3. Gerät nach Anspruch 1, wobei der Satz von Genehmigungen eine oder mehrere einer Lesegenehmigung, einer Schreibgenehmigung und einer Ausführungsgenehmigung umfasst.
  4. Gerät nach Anspruch 1, wobei die IOMMU den Zwischenspeicher umfasst.
  5. Gerät nach Anspruch 1, wobei der Zwischenspeicher einen Translation Lookaside Buffer (TLB) umfasst.
  6. Gerät nach Anspruch 1, wobei der Übersetzungseintrag einen Satz von Bits umfasst und jede Genehmigung in dem Genehmigungssatz einen Subsatz des Satzes von Bits umfasst.
  7. Gerät nach Anspruch 1, das ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  8. Gerät nach Anspruch 1, wobei die SVM-Vorrichtung einen oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgangs (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  9. Gerät nach Anspruch 1, wobei die Speicherzugriffsanfrage eine virtuelle Adresse umfasst.
  10. Gerät nach Anspruch 9, wobei die Logik den Übersetzungseintrag, der mit der Speicherzugriffsanfrage assoziiert ist, in dem Zwischenspeicher basierend auf der virtuellen Adresse identifiziert.
  11. Gerät nach Anspruch 9, wobei die Logik eine lineare Adresse, die der virtuellen Adresse entspricht, basierend auf dem Übersetzungseintrag bestimmt.
  12. Gerät nach Anspruch 1 bis 11, wobei die Logik einem Exception Handler den Zugriffsanfragefehler meldet, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  13. Computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen einer Speichertransaktionsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM) an einer Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei die Speichertransaktionsanfrage eine Adresse umfasst, die mit einer Speicherseite in einem SVM, der von der SVM-Vorrichtung eingesetzt wird, assoziiert ist; Bestimmen, dass die Speichertransaktionsanfrage eine Übersetzungsanfrage aufweist und mit einer Schreibanfrage assoziiert ist; Identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist; Erzeugen eines Übersetzungsabschlusses mit Lese- und Schreibzugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist; und Erzeugen eines Übersetzungsabschlusses mit Nurlese-Zugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  14. Computerimplementiertes Verfahren nach Anspruch 13, das die SVM-Vorrichtung umfasst, wobei die SVM-Vorrichtung einen Vorrichtungszwischenspeicher mit mindestens einem Übersetzungseintrag umfasst, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM-Vorrichtung assoziiert ist.
  15. Computerimplementiertes Verfahren nach Anspruch 13, wobei die Speichertransaktionsanfrage ein Adresstypfeld umfasst, um anzugeben, ob die Adresse, die mit der Speicherseite in dem SVM assoziiert ist, übersetzt oder nicht übersetzt ist.
  16. Computerimplementiertes Verfahren nach Anspruch 13, das ein oder mehrere Register umfasst, wobei Inhalte des einen oder der mehreren Register die Logik aktivieren.
  17. Computerimplementiertes Verfahren nach einem der Ansprüche 13 bis 16, wobei die SVM-Vorrichtung einen oder mehrere eines Hardwarebeschleunigers, einer Grafikverarbeitungseinheit (GPU), eines feldprogrammierbaren Gate-Arrays (FPGA), eines System-on-Chip (SOC), einer Sprachverarbeitungseinheit (SPU), einer Eingangs-/Ausgangs (E/A)-Vorrichtung, eines digitalen Signalprozessors (DSP) oder einer anwendungsspezifischen integrierten Schaltung (ASIC) umfasst.
  18. Gerät für Steuerflussschutz, wobei das Gerät Folgendes umfasst: Mittel zum Empfangen einer Speicherzugriffsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM) an einer Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei die Speicherzugriffsanfrage eine Adresse umfasst, die mit einer Speicherseite in einem SVM, der von der SVM-Vorrichtung eingesetzt wird, umfasst; Mittel zum Bestimmen, dass die Speichertransaktionsanfrage eine Übersetzungsanfrage aufweist und mit einer Schreibanfrageassoziiert ist; Mittel zum Identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist; Mittel zum Erzeugen eines Übersetzungsabschlusses mit Lese- und Schreibzugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist; und Mittel zum Erzeugen eines Übersetzungsabschlusses mit NurleseZugriff, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  19. Gerät nach Anspruch 18, das Mittel zum Senden des Übersetzungsabschlusses mit Lese- und Schreibzugriff auf die SVM-Vorrichtung umfasst, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, nicht ausführbar ist.
  20. Gerät nach Anspruch 18, das Mittel zum Senden des Übersetzungsabschlusses mit Nurlese-Zugriff auf die SVM-Vorrichtung umfasst, wenn die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  21. Gerät nach Anspruch 18, wobei die IOMMU einen IOMMU-Zwischenspeicher mit mindestens einem Übersetzungseintrag umfasst, der mit einer vorhergehenden Speichertransaktion zwischen der IOMMU und der SVM-Vorrichtung assoziiert ist.
  22. Gerät nach Anspruch 21, das Mittel umfasst, um basierend auf dem IOMMU-Zwischenspeicher zu identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  23. Gerät nach einem der Ansprüche 18 bis 22, das Mittel umfasst, um basierend auf einem oder mehreren Seitentabellenläufen zu identifizieren, ob die Speicherseite, die mit der Speichertransaktionsanfrage assoziiert ist, ausführbar ist.
  24. Nichtflüchtiges computerlesbares Medium oder mehrere nichtflüchtige computerlesbare Medien, das einen Satz von Anweisungen umfasst, die, als Reaktion auf seine Ausführung durch eine Prozessorschaltung, die Prozessorschaltung veranlassen zum: Empfangen einer Speicherzugriffsanfrage von einer Vorrichtung mit gemeinsam verwendetem virtuellem Speicher (SVM) an einer Eingangs-/Ausgangs-Speicherverwaltungseinheit (IOMMU), wobei die Speicherzugriffsanfrage einen Typ einer Mehrzahl von Typen von Speicherzugriffsanfragen umfasst; Identifizieren eines Übersetzungseintrags, der mit der Speicherzugriffsanfrage in einem Zwischenspeicher assoziiert ist, wobei der Übersetzungseintrag einen Genehmigungssatz umfasst; Ausführen der Speicherzugriffsanfrage, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage erlaubt; und Erzeugen eines Zugriffsanfragefehlers, wenn der Genehmigungssatz den Typ der Speicherzugriffsanfrage einschränkt.
  25. Nichtflüchtiges computerlesbares Medium oder mehrere nichtflüchtige computerlesbare Medien nach Anspruch 24, wobei jede Genehmigung in dem Genehmigungssatz einen Typ der Mehrzahl von Typen von Speicherzugriffsanfragen erlaubt oder einschränkt.
DE102018115504.2A 2017-09-29 2018-06-27 Techniken zum Bereitstellen von Schutz vor Zugriff auf gemeinsam verwendeten virtuellen Speicher Pending DE102018115504A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/719,977 US20190102321A1 (en) 2017-09-29 2017-09-29 Techniques to provide access protection to shared virtual memory
US15/719,977 2017-09-29

Publications (1)

Publication Number Publication Date
DE102018115504A1 true DE102018115504A1 (de) 2019-04-04

Family

ID=65728133

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018115504.2A Pending DE102018115504A1 (de) 2017-09-29 2018-06-27 Techniken zum Bereitstellen von Schutz vor Zugriff auf gemeinsam verwendeten virtuellen Speicher

Country Status (3)

Country Link
US (1) US20190102321A1 (de)
CN (1) CN109582603A (de)
DE (1) DE102018115504A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11226908B2 (en) * 2019-07-31 2022-01-18 Hewlett Packard Enterprise Development Lp Securing transactions involving protected memory regions having different permission levels
US20220291861A1 (en) * 2021-03-12 2022-09-15 Kioxia Corporation Data exchange between host and storage device using compute functions

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6457098B1 (en) * 1998-12-23 2002-09-24 Lsi Logic Corporation Methods and apparatus for coordinating shared multiple raid controller access to common storage devices
US7171479B2 (en) * 2002-04-26 2007-01-30 International Business Machines Corporation Efficient delivery of boot code images from a network server
US8181020B2 (en) * 2005-02-02 2012-05-15 Insyde Software Corp. System and method for securely storing firmware
US7657710B2 (en) * 2006-11-17 2010-02-02 Sun Microsystems, Inc. Cache coherence protocol with write-only permission
US8028155B1 (en) * 2007-06-06 2011-09-27 American Megatrends, Inc. Initiating an operating system boot from firmware
JP5272414B2 (ja) * 2008-01-18 2013-08-28 富士通セミコンダクター株式会社 情報処理システム及びファームウェア実行方法
US8041793B2 (en) * 2008-09-24 2011-10-18 Dell Products L.P. Boot image discovery and delivery system
CN102177499B (zh) * 2008-10-08 2014-12-17 惠普开发有限公司 具有定制镜像的固件存储介质
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US9256744B2 (en) * 2012-04-10 2016-02-09 Asmedia Technology Inc. System-on-chip and booting method thereof
US9063891B2 (en) * 2012-12-19 2015-06-23 Advanced Micro Devices, Inc. Secure computer system for preventing access requests to portions of system memory by peripheral devices and/or processor cores
WO2015088485A1 (en) * 2013-12-09 2015-06-18 Empire Technology Development, Llc Hardware interconnect based communication between solid state drive controllers
US9354816B2 (en) * 2014-04-08 2016-05-31 Seagate Technology Llc Read policy for system data of solid state drives
US11030117B2 (en) * 2017-07-14 2021-06-08 Advanced Micro Devices, Inc. Protecting host memory from access by untrusted accelerators

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
IEEE 802.11a-x-Netzwerkschnittstellen
IEEE 802.16-Netzwerkschnittstellen
IEEE 802.20-Netzwerkschnittstellen

Also Published As

Publication number Publication date
US20190102321A1 (en) 2019-04-04
CN109582603A (zh) 2019-04-05

Similar Documents

Publication Publication Date Title
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
DE102007062744B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
DE102019108266A1 (de) Techniken zum bereitstellen von isolation auf funktionsebene mit auf fähigkeit basierender sicherheit
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE10195999B3 (de) Computersystem mit einer in einem Chipsatz enthaltenen Speichersteuereinrichtung zum Kontrollieren von Zugriffen auf einen isolierten Speicher für eine isolierte Ausführung
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
US9218302B2 (en) Page table management
DE102018109397A1 (de) Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen
DE102020125599A1 (de) Vertrauenswürdige lokale speicherverwaltung in einer virtualisierten gpu
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112011102822T5 (de) Leistungsoptimierte Interrupt-Abgabe
DE102020208234A1 (de) Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
US9715410B2 (en) Protected virtual machine function access
DE112005002304T5 (de) Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE202020005693U1 (de) Externe berechtigungsnachweisfreie Stufen für Datenbankintegrationen
DE112020000223B4 (de) Gemeinsame speichernutzung zwischen einer sicheren domäne und einer nicht sicheren entität
US10628192B2 (en) Scalable techniques for data transfer between virtual machines
DE112020000303T5 (de) Testen von speicherschutz-hardware in einer umgebung einer sicheren virtuellen maschine
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
DE112020000289T5 (de) Abfrage und überlassung von sicherem speicher