DE102020208234A1 - Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung - Google Patents

Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung Download PDF

Info

Publication number
DE102020208234A1
DE102020208234A1 DE102020208234.0A DE102020208234A DE102020208234A1 DE 102020208234 A1 DE102020208234 A1 DE 102020208234A1 DE 102020208234 A DE102020208234 A DE 102020208234A DE 102020208234 A1 DE102020208234 A1 DE 102020208234A1
Authority
DE
Germany
Prior art keywords
mac
hpa
request
itt
remote device
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
DE102020208234.0A
Other languages
English (en)
Inventor
Michael Kounavis
David Koufaty
Rupin Vakharwala
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 DE102020208234A1 publication Critical patent/DE102020208234A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/1425Protection 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 physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • 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/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • 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]
    • G06F2212/683Invalidation

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)
  • Mathematical Physics (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Power Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Ausführungsformen sind darauf gerichtet, einen sicheren Adressübersetzungsdienst zu schaffen. Eine Ausführungsform eines Systems enthält einen Speicher zum Speichern von Daten, eine Eingabe-/Ausgabe-Speichermanagementeinheit (IOMMU), die mittels einer Host-Vorrichtungs-Verbindung an den Speicher gekoppelt ist, wobei die IOMMU ausgelegt ist, Operationen auszuführen, die Folgendes umfassen: Empfangen einer Speicherzugriffsanforderung von einer entfernten Vorrichtung mittels einer Host-Vorrichtungs-Verbindung, wobei die Speicherzugriffsanforderung eine physische Host-Adresse (HPA), die eine physische Adresse im Speicher, die die Speicherzugriffsanforderung betrifft, identifiziert, und einen ersten Nachrichtenauthentifizierungscode (MAC) umfasst, Erzeugen eines zweiten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung der physischen Host-Adresse, die mit der Speicherzugriffsanforderung empfangen wurde, und eines privaten Schlüssels, der der entfernten Vorrichtung zugeordnet ist, und Durchführen eines Ermöglichens, dass der Speicherzugriff fortschreitet, wenn der erste MAC und der zweite MAC übereinstimmen und sich die HPA nicht in einer Invalidierungstabelle (ITT), die durch die IOMMU geführt wird, befindet; und/oder eines Blockierens der Speicheroperation, wenn der erste MAC und der zweite MAC nicht übereinstimmen.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen, die hier beschrieben werden, beziehen sich im Allgemeinen auf das Gebiet der Speicheradressübersetzung und des Speicherschutzes und spezieller auf einen Übersetzungsagenten (z. B. eine Eingabe-/Ausgabe-Speichermanagementeinheit (IOMMU)), der einen sicheren Adressübersetzungsdienst auf der Grundlage eines Kontexts einer Anforderungsvorrichtung schafft.
  • HINTERGRUND
  • Die meisten modernen Computersysteme verwenden zur optimalen Speicherverwendung und Speichersicherheit eine Speichervirtualisierung. Herkömmlicherweise würden Peripheriekomponentenexpressverbindungs-Vorrichtungen (PCIe-Vorrichtungen) lediglich nicht übersetzte Adressen anstatt physischer Host-Adressen (HPA) betrachten und würden deshalb eine Lese- oder Schreibanforderung zu einer Host-Vorrichtung mit einer gegebenen nicht übersetzten Adresse senden. Auf der Host-Seite würde die IOMMU des Prozessors eine Lese-/Schreib-Anforderung von einer Vorrichtung empfangen, die angegebene Adresse zu einer HPA übersetzen und die Speicherzugriffsanforderung der Vorrichtung (d. h. Lesen/Schreiben) abschließen. Um Vorrichtungen lediglich zu bestimmten Adressen zu isolieren, würde Software die Vorrichtung und die IOMMU programmieren, nicht übersetzte Adressen zu verwenden, die z. B. eine virtuelle Adresse (VA) oder eine virtuelle Eingabe-/Ausgabe-Adresse (IOVA) sind. Die HPA ist die physische Adresse, die verwendet wird, um auf alle Plattformbetriebsmittel zuzugreifen, nachdem alle Adressübersetzungen erfolgt sind, was jegliche Übersetzung von physischen Gastadressen (GPA) zu HPA in einer virtualisierten Umgebung enthält, und sie wird normalerweise in einer nicht virtualisierten Umgebung einfach als eine physische Adresse (PA) bezeichnet.
  • Adressübersetzungsdienste (ATS) sind eine Erweiterung des PCIe-Protokolls. Die aktuelle Version von ATS ist Teil der PCIe-Spezifikation, aktuell 4.0, die durch die PCI-Interessenvertretung (PCI-SIG) gepflegt wird und auf die durch Mitglieder unter https://pcisig.com/specifications zugegriffen werden kann, und kann hier als die „ATS-Spezifikation“ bezeichnet werden. Unter anderem ermöglichen ATS Vorrichtungen, Adressübersetzungen zwischenzuspeichern und Seitenfehler zu verarbeiten (herkömmliche PCIe-Vorrichtungen erfordern eine Speicherfixierung), was eine Unterstützung für eine Vielzahl von Leistungsmerkmalen, die einen Vorrichtungsübersetzungsnachschlagepuffer (Dev-TLB) und einen gemeinsam verwendeten virtuellen Speicher enthalten, ermöglicht. ATS schaffen außerdem eine Unterstützung für zwischenspeicherkohärente Verbindungen wie z. B. Computerexpressverbindung (CXL), die ausschließlich an einer physischen Adresse arbeiten. ATS ermöglichen einer PCIe-Vorrichtung, Adressübersetzungen von VA zu HPA von einem Übersetzungsagenten (z. B. der IOMMU) anzufordern. Diese Fähigkeit ermöglicht der Vorrichtung, die resultierenden Übersetzungen in einem Dev-TLB, der durch die ATS-Spezifikation auch als ein Adressübersetzungszwischenspeicher (ATC) bezeichnet wird, intern zu speichern und die resultierende HPA direkt zu verwenden, um nachfolgend mittels einer Host-Vorrichtungs-Verbindung (z. B. eine PCIe-Schnittstelle oder eine zwischenspeicherkohärente Schnittstelle (z. B. CXL, NVLink und zwischenspeicherkohärente Verbindung für Beschleuniger (CCIX))) auf einen Hauptspeicher zuzugreifen. Daher teilen ATS einen Alt-PCIe-Speicherzugriff in mehrere Stufen, die (i) eine Übersetzungsanforderung, in der die Vorrichtung eine Übersetzung für eine VA zu einer HPA anfordert; (ii) eine übersetzte Anforderung, in der die Vorrichtung ein Lesen/Schreiben mit einer gegebenen HPA anfordert; und (iii) eine wahlweise Seitenanforderung, in der die Vorrichtung eine Anforderung dafür, dass eine neue Seite für sie zugeordnet wird, nach einer fehlgeschlagenen Übersetzungsanforderung an die IOMMU stellt, enthalten.
  • Gegenwärtig führen ATS in begrenztem Maß Sicherheitsprüfungen an Übersetzungsanforderungen und übersetzten Anforderungen durch, jedoch sind diese Prüfungen unzureichend, um vor einer böswilligen ATS-Vorrichtung zu schützen.
  • Figurenliste
  • Hier beschriebene Ausführungsformen sind in den Figuren der begleitenden Zeichnungen, in denen ähnliche Bezugszeichen sich auf ähnliche Elemente beziehen, beispielhaft und nicht einschränkend dargestellt.
    • 1 ist ein Blockdiagramm, das eine Rechensystemarchitektur, die ein Host-System und zugeordnete integrierte und/oder diskrete Vorrichtungen enthält, gemäß einer Ausführungsform darstellt.
    • 2 ist ein Blockdiagramm, das Komponenten eines Systems, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt.
    • 3 ist ein Ablaufplan, der hochrangige Operationen in einem Verfahren, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt.
    • 4 ist ein Ablaufplan, der Operationen in einem Verfahren, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt.
    • 5A, 5B und 5C stellen Beispiele von Tabelleneinträgen in einer Invalidierungsverfolgungstabelle gemäß einer Ausführungsform dar.
    • 6 ist ein Ablaufplan, der hochrangige Operationen in einem Verfahren, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt.
    • 7 ist ein Ablaufplan, der hochrangige Operationen in einem Verfahren, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt.
    • 8 ist ein Ablaufplan, der hochrangige Operationen in einem Verfahren, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt.
    • 9 ist ein Ablaufplan, der hochrangige Operationen in einem Verfahren, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt.
    • 10 ist ein Blockdiagramm, das einen geänderten Eintrag eines ternären CAM, der eine Adressbereichsinvalidierung unterstützt, gemäß einer Ausführungsform darstellt.
    • 11 ist ein Blockdiagramm, das aktive und invalidierte Bereiche von physischen Host-Adressen, die in einem ternären CAM gespeichert sind und gemäß einer Prioritätenliste geordnet sind, gemäß einer Ausführungsform darstellt.
    • 12 ist ein Ablaufplan, der Operationen in einem Verfahren zum Einfügen eines ungültigen Bereichs in einen ternären CAM gemäß einer Ausführungsform darstellt.
    • 13 ist ein Ablaufplan, der Operationen in einem Verfahren zum Einfügen eines aktiven Bereichs in einen ternären CAM gemäß einer Ausführungsform darstellt.
    • 14 ist ein Blockdiagramm, das eine Rechenarchitektur, die ausgelegt sein kann, sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt.
  • GENAUE BESCHREIBUNG
  • Hier beschriebene Ausführungsformen sind darauf gerichtet, einen sicheren Adressübersetzungsdienst durch einen Übersetzungsagenten auf der Grundlage von Nachrichtenauthentifizierungscodes (MACs) und Invalidierungsverfolgung zu schaffen.
  • Die ATS-Spezifikation stellt Prüfungen an jeder übersetzten ATS-Anforderung mit einer HPA bereit, um zu prüfen, dass (i) die Verwendung von ATS für die Vorrichtung, die die Speicherzugriffsanforderung gesendet hat, durch die System-Software aktiviert ist; und (ii) die HPA nicht Teil eines geschützten Systembereichs (z. B. ein Gebiet eines geschützten Intel@-Software-Schutzerweiterungs-Speicherbereichs (SGX-PRMRR)) ist. Während diese Prüfungen der System-Software ermöglichen, den Vorrichtungshersteller der Vorrichtung zu prüfen, bevor sie eine angeforderte Speicheroperation ermöglicht, und sicherzustellen, dass hochsensible Systembereiche von einer ATS-Vorrichtung geschützt werden, bleibt jeder weitere Speicher (z. B. Code/Daten von Ring -1, Ring 0, Ring 3) ungeschützt und ohne Vorrichtungsauthentifizierung können Vorrichtungsherstellerinformationen durch einen Angreifer einfach gefälscht werden. Zusätzlich kann eine Vorrichtungsauthentifizierung das ordnungsgemäße Verhalten einer Vorrichtung (z. B. eine feldprogrammierbare Gate-Anordnung (FPGA)) mit neukonfigurierbarer Hardware-Logik nicht garantieren. Deshalb werden Fachleute erkennen, dass die aktuelle ATS-Definition eine Sicherheitsschwachstelle besitzt. Speziell kann eine böswillige ATS-Vorrichtung eine übersetzte Anforderung mit einer beliebigen HPA senden und ein Lesen/Schreiben zu dieser HPA durchführen, ohne zunächst nach einer Übersetzung oder Genehmigung vom vertrauenswürdigen System wie z. B. der IOMMU zu fragen.
  • Eine weitere Schutzschicht, die durch moderne Prozessoren bereitgestellt wird, kann eine Architektur und Befehlssatzarchitekturerweiterungen (ISA-Erweiterungen) enthalten, die Verschlüsselungsschlüssel pro Domäne enthalten. Eine Domäne kann eine virtuelle Maschine (VM), die in einer Überwachungseinrichtung für virtuelle Maschinen (VMM) läuft, sein. Allerdings kann, wenn ATS aktiviert sind, eine böswillige ATS-Vorrichtung, der keine Domäne vertraut, immer noch zu jeder HPA mit dem falschen Schlüssel schreiben, was in einer Speicherbeschädigung resultieren kann und/oder als Teil eines Dienstverweigerungsangriffs auf eine Domäne verwendet werden kann. Währenddessen wäre dann, wenn die Domäne wählt, ATS für eine bestimmte Vorrichtung zu deaktivieren, diese bestimmte Vorrichtung mit zwischenspeicherkohärenten Verbindungen unvereinbar und wäre mit weiteren Host-Leistungsmerkmalen wie z. B. gemeinsam verwendetem virtuellen Speicher und VMM-Mehrfachvergabe unvereinbar. Daher würden ohne die hier beschriebenen Verbesserungen Software-Anbieter mit einer Wahl zwischen Leistungsfähigkeit und Sicherheit konfrontiert sein.
  • Beispielrechenumgebung
  • 1 ist ein Blockdiagramm, das eine Rechenumgebung 100, die ein Host-System und zugeordnete integrierte und/oder diskrete Vorrichtungen 141a-c enthält, gemäß einer Ausführungsform darstellt. Im Kontext des vorliegenden Beispiels enthält das Host-System eine oder mehrere Zentraleinheiten (CPUs) 110, einen Wurzelkomplex (RC) 120 und einen Speicher 140. Ähnlich einer Host-Brücke in einem PCI-System erzeugt der RC 120 Transaktionsanfragen im Namen der CPUs 110, die über einen lokalen Bus an den RC 120 gekoppelt sind, und ermöglicht eine Verarbeitung von Anforderungen durch Vorrichtungen 141a-c, die mittels entsprechender Host-Vorrichtungs-Verbindungen 142a-c und einen Wurzelanschluss (RP) 121a oder einen Schalter 140 und einen RP 121b an den RC 120 gekoppelt sind. Abhängig von der bestimmten Implementierung kann eine RC-Funktionalität als eine separate Vorrichtung implementiert sein oder kann in einen Prozessor integriert sein.
  • ATS verwenden ein Anforderungsabschlussprotokoll zwischen Vorrichtungen 141a-c und dem RC 120, um Übersetzungsdienste bereitzustellen. Nicht einschränkende Beispiele von Vorrichtungen 141a-c enthalten eine Netzschnittstellenkarte (NIC), eine Graphikverarbeitungseinheit (GPU), einen Speicher-Controller, eine Audiokarte und ein Laufwerk mit stabilen Zuständen (SSD) in Form einer Peripherievorrichtung (Hilfsvorrichtung) oder einer integrierten Vorrichtung. Der Ablauf einer ATS-Anforderung (z. B. eine Übersetzungsanforderung oder eine übersetzte Anforderung) beginnt damit, dass ein Kontext (z. B. ein Prozess oder eine Funktion) einer Vorrichtung (z. B. eine der Vorrichtungen 141a-c) über ein implementierungsspezifisches Verfahren bestimmt, dass ein Zwischenspeichern einer Übersetzung z. B. im Adressübersetzungszwischenspeicher (ATC) der Vorrichtung (der nicht gezeigt ist) vorteilhaft wäre. Der Kontext (der nicht gezeigt ist) erzeugt eine Übersetzungsanforderung, die stromaufwärts durch die PCIe-Hierarchie (abhängig von der Vorrichtung 141a-c, der der Kontext zugeordnet ist, über die Host-Vorrichtungs-Verbindung 142b oder 142c, den Schalter 140 und den RP 121b oder über die Host-Vorrichtungs-Verbindung 142a und den RP 121a) zum RC 120 gesendet wird, der die Anforderung dann zum Übersetzungsagenten 130 weiterleitet. Nichteinschränkende Beispiele der Host-Vorrichtungs-Verbindung 142a-c enthalten eine PCIe-Verbindung oder eine zwischenspeicherkohärente Verbindung (z. B. CXL), die PCIe-Fähigkeiten enthält. Wenn der Übersetzungsagent 130 die Verarbeitung, die der ATS-Anforderung zugeordnet ist, abgeschlossen hat, kommuniziert der Übersetzungsagent 130 den Erfolg oder den Fehler der Anforderung zum RC 120, der eine ATS-Fertigstellung erzeugt und sie über den zugeordneten RP 121a oder RP 121b zur anfordernden Vorrichtung sendet.
  • Wie oben erwähnt wurde, führen Übersetzungsagenten gemäß der ATS-Spezifikation unter anderem verschiedene Prüfungen durch und bestätigen, dass für die anfordernde Vorrichtung durch System-Software die Verwendung von ATS aktiviert wurde und dass die HPA, die durch eine übersetzte Anforderung angegeben wird, nicht Teil eines geschützten Systembereichs ist. Zusätzlich zu diesen Prüfungen, die unzureichend sind, um gegen eine böswillige ATS-Vorrichtung zu schützen, kann in verschiedenen Ausführungsformen der Übersetzungsagent 130 einen Zugriffssteuermechanismus bereitstellen, der sicherstellt, dass ein Kontext einer Vorrichtung lediglich auf HPAs zugreifen kann, für die ihm passende Genehmigungen ausdrücklich zugewiesen wurden.
  • In einigen Fällen kann Systemsoftware (z. B. das Betriebssystem (das nicht gezeigt ist), ein Manager virtueller Maschinen (VMM) 115 und/oder virtuelle Maschinen 116a-n), die im Host-System läuft, Genehmigungen (z. B. Lese- und/oder Schreibzugriff) für jedes Speicherseite 140 für jede der Vorrichtungen 141a-c einzeln konfigurieren. Diese Genehmigungen (die hier als Seitenzugriffsgenehmigungen, Seitengenehmigungen, HPT-Seitenzugriffsgenehmigungen und/oder HPT-Seitengenehmigungen bezeichnet werden können) können im Namen von System-Software durch den Übersetzungsagenten 130 in einer HPT 135 geführt werden. Die HPT 135 oder Teile davon können an einer Vielzahl von Orten gespeichert werden, die einen chipinternen Speicher (z. B. ein statischer Schreib-/Lese-Speicher (SRAM)), chipexternen Speicher (z. B. DRAM), Register oder eine externe Speichervorrichtung (die nicht gezeigt ist) enthalten, jedoch nicht darauf beschränkt sind.
  • Abhängig von der bestimmten Implementierung könnte die HPT 135 als eine flache Tabelle in einem Speicher 140 repräsentiert werden, in der für jede mit dem Host-System verbundene Vorrichtung, für die eine Verwendung sicherer ATS gewünscht ist, und für jede Seite in einem Hauptspeicher ein entsprechender Genehmigungseintrag erstellt werden kann, der Seitenzugriffsgenehmigungen enthält, die angemessene Lese-/Schreibgenehmigungen festlegen. Alternativ kann die HPT 135 als eine hierarchische Tabelle (ähnlich dazu, wie Adressübersetzungsseitentabellen organisiert sind) organisiert werden, um ein Vorreservieren eines großen Speicherraums zu vermeiden und die kleine Größe der Genehmigungseinträge auszunutzen, wie unten weiter beschrieben wird. In sämtlichen Implementierungen, in denen die HPT 135 chipextern gespeichert ist, können ein oder mehrere optionale fest zugeordnete HPT-Zwischenspeicher 131 verwendet werden, um ein Durchlaufen der mehreren Stufen der HPT 135 zu beschleunigen.
  • Übersicht
  • Hier beschriebene Ausführungsformen streben im Allgemeinen danach, einen Zugriffsteuermechanismus zu schaffen, der sicherstellt, dass eine entfernte Vorrichtung, die mittels eines Protokolls wie z. B. PCIe an eine Host-Vorrichtung kommunikationstechnisch gekoppelt ist, lediglich auf HPAs zugreifen kann, die einem Kontext der entfernten Vorrichtung, die eine fragliche Speicheroperation initiiert, ausdrücklich zugewiesen wurden. Wie hierin verwendet beziehen sich die Wortverbindungen ein „Kontext“ oder ein „Kontext von“ einer Vorrichtung im Allgemeinen auf einen Bus, an den die Vorrichtung gekoppelt ist, einen Prozess, der in der Vorrichtung ausgeführt wird, eine Funktion oder eine virtuelle Funktion, die durch die Vorrichtung ausgeführt wird, oder die Vorrichtung selbst. Diese Technik verwendet ein Erstellen eines neuen Nachrichtenauthentifizierungscodes (MAC) für jede HPA, auf die eine entfernte Vorrichtung zugreifen darf, und ein Erlauben lediglich von Vorrichtungs-Lese-/Schreib-Speicherzugriffen, die die korrekten MACs vorlegen und nicht widerrufen wurden, als Grundlage. Eine Beispieleingabe zur MAC-Erzeugung ist in Tabelle 1 gezeigt. In Tabelle 1 bezeichnen eckige Klammern „[]“ Bitversätze. Abhängig von der Zielseitengröße wird eine Hardware die angemessenen Adressbits verwenden. Tabelle 1
    Seitengröße Eingabe zur MAC-Erzeugung
    4 KB Bus/Vorrichtung/Funktion[15:0], Zähler, R, W, HPA[51:12]
    2 MB Bus/Vorrichtung/Funktion[15:0], Zähler, R, W, HPA[51:21]
    1 GB Bus/Vorrichtung/Funktion[15:0], Zähler, R, W, HPA[51:30]
  • In hier beschriebenen Beispielen wird eine Zugriffssteuerung unter Verwendung von Kryptographietechniken z. B. durch Authentifizieren physischer Adressen unter Verwendung eines Nachrichtenauthentifizierungscodes (MAC) unterstützt. Ferner können „Replay“-Angriffe durch Verfolgen von Adressinvalidierungen in einer Invalidierungstabelle (ITT), die in einem Speicher der Host-Vorrichtung gespeichert werden kann, abgeschwächt werden. Diese Techniken beseitigen die Notwendigkeit, eine Genehmigungstabellenstruktur wie z. B. die HPT 135, die unter Bezugnahme auf 1 beschrieben wurde, zu führen.
  • In einigen Ausführungsformen erzeugt die Host-Vorrichtung dann, wenn eine entfernte Vorrichtung einen Zugriff auf eine Host-Vorrichtung initiiert, einen MAC unter Verwendung eines geheimen Schlüssels und einer HPA und gibt den MAC und die HPA zur entfernten Vorrichtung zurück. In nachfolgenden Speicherzugriffsanforderungen legt die entfernte Vorrichtung der Host-Vorrichtungs-Hardware sowohl die HPA als auch den (MAC) vor. Dann, wenn der MAC, der durch die entfernte Vorrichtung vorgelegt wurde, gleich dem MAC, der durch die vorgelegte HPA und einen zugewiesenen Schlüssel erstellt wird, ist, liegt ein Hinweis vor, dass die HPA mindestens einmal in der Vergangenheit einer Arbeitslast, die in der entfernten Vorrichtung lief, zugewiesen wurde.
  • Allerdings kann die HPA, die durch die entfernte Vorrichtung vorgelegt wird, aus der Arbeitslast der virtuellen Maschine (VM), die in der entfernten Vorrichtung läuft, entfernt worden sein und ihre entsprechende Abbildung von virtuell nach physisch kann invalidiert worden sein. Um zwischen Fällen zu unterscheiden, in denen die entfernte Vorrichtung auf die HPA gültig zugreifen kann und in denen sie es nicht kann, führt die Host-Hardware eine Datenstruktur, die als eine Invalidierungstabelle (ITT) bezeichnet wird und die HPA-Invalidierungen pro Vorrichtung oder Invalidierungsbereiche protokolliert.
  • Wenn die Datenstruktur, die Invalidierungen verfolgt, voll ist, initiiert die Host-Hardware einen Prozess, durch den die Vorrichtung ihre TLBs leert, und ein neuer Schlüssel wird der Vorrichtung zum Erzeugen von MACs pro HPA zugewiesen.
  • Vereinfacht werden hier Zugangssteuermechanismen beschrieben, die sicherstellen, dass entfernte Vorrichtungen (d. h. eine GPU, eine FPGA usw.), die das ATS-Protokoll verwenden, lediglich auf physischen Speicher zugreifen können, der ihnen durch die Host-Vorrichtung ausdrücklich zugewiesen ist. Ein Nachrichtenauthentifizierungscode (MAC) wird für jede HPA, auf die die Vorrichtung zugreifen darf, zugewiesen und die HPA und der zugeordnete MAC werden zur entfernten Vorrichtung gesendet. Die entfernte Vorrichtung muss sowohl die HPA als auch den korrekten MAC der Host-HW vorlegen, um auf einen physischen Speicher zugreifen zu dürfen. Zusätzlich schaffen wir einen „Replay“-Schutz durch Verfolgen ungütig gemachter Seiten. Lediglich wenn der MAC korrekt ist und die vorgelegte HPA nicht invalidiert ist, kann die Vorrichtung auf die HPA zugreifen.
  • 2 ist ein Blockdiagramm, das Komponenten eines Systems, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt. Unter Bezugnahme auf 2 kann ein System 200 in einigen Beispielen ein Host-System-on-Chip (Host-SOC) 210 umfassen, das über eine Host-Vorrichtungs-Verbindung 260 an ein Vorrichtungs-SOC 240 kommunikationstechnisch gekoppelt ist. In einigen Beispielen kann die Host-Vorrichtungs-Verbindung 260 eine PCIe-Kommunikationsverbindung umfassen.
  • In einigen Beispielen umfasst das Host-SOC 210 einen Wurzelanschluss 220, der einem oder mehreren der Wurzelanschlüsse, die unter Bezugnahme auf 1 beschrieben wurden, entsprechen kann. Der Wurzelanschluss 220 kann eine IOMMU 226, ein verschlüsselungsbasiertes Nachrichtenauthentifizierungscodemodul (CMAC-Modul) 224 nach der fortschrittlichen Verschlüsselungsnorm (AES) und eine Invalidierungsverfolgungstabelle 222 umfassen. Das Vorrichtungs-SOC 240 kann ein MAC-Modul 242 und einen Vorrichtungstransaktionsnachschlagepuffer (Dev TLB) 244 umfassen. Wahlweise kann das Vorrichtungs-SOC 242 ein oder mehrere zusätzliche MAC-Module 246 und einen kohärenten Datenzwischenspeicher 248 umfassen. Selbstverständlich ist AES-CMAC lediglich einer der vielen Norm-MAC-Algorithmen, die zum Authentifizieren physischer Host-Adressen eingesetzt werden können. Weitere Norm-MAC-Algorithmen wie z. B. SHA256-HMAC oder SHA3-KMAC könnten zum Erreichen desselben Ziels eingesetzt werden.
  • 3 ist ein Ablaufplan, der hochrangige Operationen in einem Verfahren, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt. In einigen Beispielen können die Operationen, die in 3 dargestellt sind, durch eine Verarbeitungsvorrichtung des Host-SOC 210 wie z. B. die IOMMU 226 implementiert werden.
  • Unter Bezugnahme auf 3 empfängt die IOMMU im Vorgang 310 eine Speicherzugriffsanforderung über eine Host-Vorrichtungs-Verbindung von einer entfernten Vorrichtung, wobei die Speicherzugriffsanforderung eine physische Host-Adresse (HPA), die eine physische Adresse im Speicher, den die Speicherzugriffsanforderung betrifft, identifiziert, und einen ersten Nachrichtenauthentifizierungscode (MAC) umfasst. Im Vorgang 315 erzeugt die IOMMU einen zweiten Nachrichtenauthentifizierungscode (MAC) unter Verwendung der physischen Host-Adresse, die mit der Speicherzugriffsanforderung empfangen wurde, und eines privaten Schlüssels, der der entfernten Vorrichtung zugeordnet ist. Im Vorgang 320 führt die IOMMU ein Ermöglichen, dass der Speicherzugriff fortschreitet, wenn der erste MAC und der zweite MAC übereinstimmen und die HPA sich nicht in einer Invalidierungstabelle (ITT), die durch die IOMMU geführt wird, befindet, und/oder ein Blockieren der Speicheroperation, wenn die erste MAC und die zweite MAC nicht übereinstimmen, durch.
  • 4 ist ein Ablaufplan, der Operationen in einem Verfahren 400, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform genauer darstellt. Unter Bezugnahme auf 4 erzeugt in Operation 405 eine entfernte Vorrichtung 240 eine ATS-Übersetzungsanforderung für eine virtuelle Adresse (z. B. eine virtuelle I/O-Adresse (IOVA), eine virtuelle Gastadresse (GVA) oder eine physische Gastadresse (GPA)), die durch die entfernte Vorrichtung 240 geführt wird, zu einer HPA. In Operation 410 wird die Übersetzungsanforderung durch die Host-Vorrichtung 210 empfangen. In einigen Beispielen kann die Übersetzungsanforderung durch die IOMMU 226 empfangen werden.
  • In Operation 415 initiiert die IOMMU 226 die Übersetzungsanforderung, die von der entfernten Vorrichtung 240 empfangen wird. In Operation 420 initiiert die IOMMU 226 ein Seitendurchlaufen durch die Invalidierungsverfolgungstabelle 222 und in Operation 425 erzeugt die IOMMU 226 einen MAC unter Verwendung eines geheimen Schlüssels, der der entfernten Vorrichtung 240 zugewiesen wurde. In Operation 430 entfernt die IOMMU die HPA, die in 415 erzeugt wurde, aus der Invalidierungsverfolgungstabelle 222, wenn die HPA sich in der Invalidierungsverfolgungstabelle 222 befindet.
  • In Operation 435 gibt die IOMMA die HPA und den MAC z. B. mittels einer Transaktionsabschlussoperation in der Host-Vorrichtungs-Verbindung 260 zurück zur entfernten Vorrichtung. In Operation 440 speichert die entfernte Vorrichtung 240 die HPA und eine zugeordnete virtuelle Adresse in Verbindung mit dem MAC, der von der Host-Vorrichtung 210 empfangen wurde. In einigen Beispielen können diese Daten im Transaktionsnachschlagepuffer 244 gespeichert werden.
  • Anschließend wird dann, wenn die entfernte Vorrichtung 240 in Operation 445 eine Anforderung initiiert, von einer physischen Adresse zu lesen und/oder zu ihr zu schreiben, die entfernte Vorrichtung 240 den entsprechenden MAC in die Anforderung, die zur Host-Vorrichtung 210 z. B. mittels einer übersetzten Anforderung gesendet wurde, aufnehmen. In Operation 450 empfängt die Host-Vorrichtung 210 in einer nachfolgenden Speicheranforderung die HPA und den MAC von der entfernten Vorrichtung 240. In Operation 455 erzeugt die IOMMU 226 den MAC neu und vergleicht ihn in Operation 450 mit dem, der durch die Vorrichtung gesendet worden ist. Wenn in Operation 460 die MACs nicht übereinstimmen, wird die Steuerung zu Operation 475 weitergegeben und der Vorrichtungszugriff wird abgewiesen. Dagegen wird dann, wenn in Operation 460 die MACs übereinstimmen, die Steuerung zu Operation 465 weitergegeben und die IOMMU 226 wird die HPA in der Invalidierungsverfolgungstabelle 222 nachschlagen. Wenn in Operation 465 die HPA nicht in der Invalidierungsverfolgungstabelle 222 vorhanden ist, wird die Steuerung zu einer Operation, in der der Zugriff ermöglicht wird, weitergegeben. Dagegen wird dann, wenn sich in Operation 465 die HP in der Invalidierungsverfolgungstabelle 222 befindet, die Steuerung zu Operation 475 weitergegeben und der Vorrichtungszugriff wird abgewiesen.
  • In einigen Aspekten schaffen die hier beschriebenen Techniken einen „Replay“-Schutz. Zum Beispiel sollte dann, wenn die IOMMU 226 einer entfernten Vorrichtung 240 einmal erlaubt hatte, auf eine HPA zuzugreifen, jedoch der Zugriff anschließend widerrufen wurde (d. h. die HPA von einer VM entfernt und einer verschiedenen VM zur Verwendung zugewiesen wurde), die entfernte Vorrichtung 240 nicht mehr auf diese HPA zugreifen können.
  • In einigen Beispielen kann die IOMMU 226 jedes Mal, wenn eine Speicherseite invalidiert wird, entweder durch Erzeugen eines neuen Schlüssels oder durch Erhöhen des Zählers neue MACs erzeugen und die entfernte Vorrichtung 240 anweisen, ein vollständiges Entleeren ihres Transaktionsnachschlagepuffers Dev-TLB 244 vorzunehmen. Diese Prozedur stellt sicher, dass alte MACs verworfen werden und sämtliche neuen Übersetzungsanforderungen einen neuen MAC empfangen. Allerdings verringert dies die den Leistungsnutzen des Dev-TLBs, da Invalidierungen häufig auftreten können.
  • In einigen Beispielen können Host-Invalidierungen in der Invalidierungsverfolgungstabelle (ITT) 222 gespeichert werden und die IOMMU 226 kann prüfen, dass jeder gültige MAC nicht zuvor widerrufen worden ist. Dieses Dokument beschreibt vier verschiedene Formate zum Implementieren der ITT; (i) eine einfache Tabelle; (ii) eine inhaltsadressierbare Speicherstruktur (CAM-Struktur) ; (iii) eine modifizierte ternäre CAM-Struktur (TCAM-Struktur) und (iv) einen Verzeichnisbaum.
  • Verschiedene Komponenten und Operationen werden unten unter Bezugnahme auf die begleitenden Figuren genauer beschrieben.
  • CAM-Invalidierungsverfolgungstabelle
  • In einer Ausführungsform kann die ITT 222 entweder als ein direkt abgebildeter Zwischenspeicher oder ein satzassoziativer Zwischenspeicher, der in drei Stufen, d. h. eine Stufe für jede der drei verschiedenen Seitengrößen (d. h. 4 KB-, 2 MB- und 1 GB-Seite), die in Tabelle 1 dargestellt sind, unterteilt ist, implementiert sein. 5A, 5B und 5C stellen Beispiele von Tabelleneinträgen 500 in einer Invalidierungsverfolgungstabelle gemäß einer Ausführungsform dar. 1 zeigt ein Beispiel-ITT-Eintragsformat für eine 1 GB-Tabelle. 2 zeigt einen Beispiel-ITT-Eintrag für eine 2 MB-Tabelle. 5C zeigt einen Beispieltabelleneintrag für eine 4 KB-Tabelle. Die Zwischenspeicher liegen pro Vorrichtung vor. In einigen Beispielen kann eine Prüfsummenfunktion verwendet werden, um den Zwischenspeichersatz zu wählen, auf den eine gegebene HPA abgebildet wird.
  • In einigen Beispielen müssen ITT-Tabelleneinträge wie z. B. die, die in 5A, 5B und 5C dargestellt sind, lediglich die HPAs speichern, die die Host-Software vor Kurzem für ungültig erklärt hat, ohne den Bedarf des Speicherns, wer auf diese Seiten Zugriff hatte und ihrer Genehmigungen. Eine Host-Software kann Prozeduren ausführen, um dies zu optimieren oder zumindest zu verbessern und lediglich HPA-Invalidierungen zu senden, die der Vorrichtung zum Zugriff übergeben worden sind.
  • Ein Vorteil dieses Ansatzes ist, dass Hardware ein aufwändiges DevTLB-Leeren aufschieben kann, während sie ATS-Anforderungen ohne zusätzliche Speicherzugriffe verarbeiten kann. Beispiele von ITT-Größen für jede Stufe und ihr maximaler Speicherumfang sind in Tabelle 2 gezeigt. Tabelle 2: Beispiele von ITT-Größen und Speicherumfang
    Invalidierungsverfolgungstabellenstufe Beispiel-ITT-Größe # von Einträgen Maximaler Speicherumfang
    1 GB Seite 256 B 64 64 GB
    2 MB Seite 8 KB 2.048 4 GB
    4 KB Seite 16 KB 2.048 8 MB
  • In einigen Beispielen wird die Hardware dann, wenn eine Host-Software eine Invalidierung durchführt, versuchen, eine neue HPA in die ITT einzufügen. Allerdings erklärt die Hardware dann, wenn kein freier Raum im entsprechenden ITT-Zwischenspeichersatz vorhanden ist, die ITT als voll, führt ein DevTLB-Leeren durch und löscht die ITT. Details dieser Operationen werden in den folgenden Abschnitten genau beschrieben.
  • ATS-Übersetzungsanforderungsverarbeitung
  • 6 ist ein Ablaufplan, der hochrangige Operationen in einem Verfahren 600, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt. Unter Bezugnahme auf 6 wird in einigen Beispielen dann, wenn eine Vorrichtung eine Übersetzungsanforderung für eine gegebene virtuelle Adresse (d. h. GVA, GPA oder IOVA) sendet, die Übersetzungsanforderung im Host empfangen (Operation 605) und wird in Operation 610 Hardware im Host (z. B. die IOMMU 226) anfänglich sicherstellen, dass kein globaler DevTLB angefangen ist. Wenn in Operation 610 eine aktive globale DevTLB-Leerung vorliegt, wird die Steuerung zu Operation 660 weitergegeben und die IOMMU 226 antwortet der anfordernden Vorrichtung mit einem Übersetzungsabschlussfehlschlagfehler. Dagegen wird dann, wenn in Operation 610 keine aktive globale DevTLB-Leerung vorliegt, die Steuerung zu Operation 615 weitergegeben und die IOMMU 226 führt eine virtualisierte Technik zum gerichteten I/O-Seitendurchlauf (VT-d-Seitendurchlauf) aus.
  • Dann, wenn in Operation 620 die Übersetzung nicht in einer physischen Seite resultiert, auf die ein Zugriff durch die anfordernde Vorrichtung erlaubt ist, wird die Steuerung zu Operation 660 weitergegeben und die IOMMU 226 antwortet der anfordernden Vorrichtung mit einem Übersetzungsabschlussfehlschlagfehler. Dagegen wird dann, wenn in Operation 620 der Seitendurchlauf in einer physischen Seite (d. h. einer HPA) resultiert, auf die die Vorrichtung gemäß der ersten und der zweiten Stufenseitengenehmigungen zugreifen darf, die Steuerung zu Operation 625 weitergegeben, in der bestimmt wird, ob die ITT 222 leer ist.
  • Wenn die ITT 222 in Operation 625 leer ist, wird die Steuerung zu Operation 645 direkt weitergegeben. Dagegen wird die Steuerung dann, wenn die ITT 222 in Operation 625 nicht leer ist, zu Operation 630 weitergegeben und die ITT wird nach einer HPA, die diese physische Adresse und die Seitengröße verwendet, durchsucht. Wenn in Operation 635 eine Seite in der ITT 222 gefunden wird, wird die Steuerung zu Operation 640 weitergegeben und die Seite wird aus der ITT 222 entfernt. Dagegen wird dann, wenn in Operation 635 keine Seite in der ITT 222 gefunden wird, die Steuerung direkt zu Operation 645 weitergegeben.
  • In Operation 645 berechnet die IOMMU 222 den MAC für die angeforderten Genehmigungen. In Operation 650 markiert die IOMMU, dass mindestens eine erfolgreiche Übersetzung abgeschlossen worden ist, unter Verwendung eines Zählers des aktuellen MAC-Zyklus (d. h. eines AktiverÜbersetzungszyklus-Merker). Dieser Merker kann in Invalidierungsnachrichten geprüft werden, wie unten beschrieben wird, und wird bestimmen, ob wir eine neue HPA in der ITT 222 hinzufügen müssen. In Operation 655 die IOMMU und sendet eine Übersetzungsfertigstellung mit der MPA und dem MAC zur anfordernden Vorrichtung.
  • ATS-Verarbeitung einer übersetzten Anforderung
  • Gemäß einer Ausführungsform können übersetzte ATS-Anforderungen mit einer gegebenen HPA geprüft werden, um sicherzustellen, dass die Vorrichtung eine Genehmigung besitzt, die bestimmte Lese-/Schreib-Operation durchzuführen. Wenn eine entfernte Vorrichtung eine übersetzte Anforderung einer gegebenen physischen Adresse sendet, muss die entfernte Vorrichtung auch den zugeordneten MAC senden. Auf der Grundlage davon, ob die übersetzte Anforderung für ein Lesen oder ein Schreiben war, muss Host-Hardware (z. B. die IOMMU 226) jede mögliche Kombination von MACs für jede mögliche Seitengröße und jede mögliche Genehmigung berechnen. Insbesondere muss Hardware für eine übersetzte Leseanforderung die MACs für Lese-Genehmigungen und Lese/Schreib-Genehmigungen zu einer 4 KB-, 2 MB- oder 1 GB-Seite (d. h. insgesamt 6 MACs) berechnen. Dies geschieht, weil eine Hardware zum Zeitpunkt der übersetzten Anforderung nicht weiß, was die genauen Genehmigungen, die gewährt wurden, und die genaue Seitengröße, die die HPA benötigt, waren.
  • Dann, wenn keiner der erzeugten MACs mit dem MAC übereinstimmt, den die anfordernde Vorrichtung gesendet hat, wird der Zugriff abgebrochen und eine Unterbrechung wird zur Host-Software gesendet, um sie über den versuchten böswilligen Zugriff zu informieren. Dann, wenn einer der erzeugten MACs mit dem empfangenen MAC übereinstimmt, kann eine Hardware in der ITT nachschlagen, um zu sicherzustellen, dass die HPA nicht für ungültig erklärt worden ist. Der Zugriff wird erlaubt, wenn die HPA in der ITT nicht vorhanden ist.
  • 7 ist ein Ablaufplan, der Operationen in einem Verfahren 700, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt. Unter Bezugnahme auf 7 empfängt die Host-Vorrichtung in Operation 705 eine übersetzte Anforderung, eine HPA und einen MAC zu lesen. Die Operationen 710-735 berechnen den MAC für verschiedene Formate der HPA, wie oben beschrieben wird. Operation 710 berechnet den MAC für HPA (51:12) (4 KB) und Lese-Genehmigungen. Operation 715 berechnet den MAC für HPA (51:21) (2 MB) und Lese-Genehmigungen. Operation 720 berechnet den MAC für HPA (51:30) (1 GB) und Lese-Genehmigungen. Operation 725 berechnet den MAC für HPA (51:12) (4 KB) und Lese/Schreib-Genehmigungen. Operation 730 berechnet den MAC für HPA (51:21) (2 MB) und Lese/Schreib-Genehmigungen. Operation 735 berechnet den MAC für HPA (51:30) (1 GB) und Lese/Schreib-Genehmigungen.
  • In Operation 740 wird bestimmt, ob der MAC, der mit der übersetzten Anforderung mit einem der in den Operationen 710-735 berechneten MACs übereinstimmt. Wenn in Operation 740 keine übereinstimmenden MACs vorliegen, wird die Steuerung zu Operation 765 weitergegeben und die Leseoperation wird abgebrochen und ein Fehler wird erzeugt. Dagegen wird, wenn in Operation 740 ein übereinstimmender MAC, der in den Operationen 710-735 berechnet wurde, vorliegt, die Steuerung zu Operation 745 weitergegeben, wo bestimmt wird, ob die ITT 222 leer ist.
  • Wenn in Operation 745 die ITT 222 leer ist, wird die Steuerung zu Operation 760 weitergegeben und die Leseoperation wird erlaubt. Dagegen wird, wenn in Operation 745 die ITT 222 nicht leer ist, die Steuerung zu Operation 750 weitergegeben und die IOMMU führt eine Nachschlageoperation der HPA in der ITT 222 durch. Wenn in Operation 755 die HPA nicht in der ITT 222 gefunden wird, wird die Steuerung zu Operation 760 weitergegeben und die Leseoperation wird erlaubt. Dagegen wird, wenn in Operation 755 die HPA in der ITT 222 gefunden wird, die Steuerung zu Operation 765 weitergegeben, die Leseoperation wird abgebrochen und ein Fehler wird erzeugt.
  • Invalidieren
  • Gemäß einer Ausführungsform muss dann, wenn eine Host-Software eine physische Seite invalidieren möchte, die Host-Software eine neu Invalidierungsnachricht unter Verwendung der vorhandenen Invalidierungsinfrastruktur zu einer Hardware senden, die die HPA der Seite und ihre Seitengröße angibt. Diese Invalidierungsnachricht kann einer DevTLB-Invalidierungsnachricht unmittelbar folgen müssen, wobei eine Software die Vorrichtung anweisen wird, Seitenadressübersetzungen von virtuell zu physisch zu verwerfen.
  • Nachdem eine Hardware die HPA-Invalidierungsanforderung von einer Software empfangen hat, wird die Hardware warten, bis kein globaler DevTLB angefangen ist. Wenn keine Übersetzungsanforderung und daher keine MAC-Erzeugung vorlag, seit wir den MAC-Zykluszähler zuletzt aktualisiert haben, wird die für ungültig erklärte HPA nicht zur ITT 222 hinzugefügt. Dies stellt sicher, dass dann, wenn eine Host-Software einen Satz Invalidierungsnachrichten, die ein globales DevTLB-Leeren auslösen, sendet, die Hardware nicht fortfahren wird, globale DevTLB-Leerungsvorgänge zu bewirken, sofern die Vorrichtung keine neuen Übersetzungen anfordert.
  • Wenn eine Übersetzungsanforderung aufgetreten ist und ein MAC unter Verwendung des aktuellen MAC-Zykluszählers erzeugt worden ist, wird die Hardware versuchen, die neue HPA in die ITT 222 einzufügen. Wenn die ITT 222 keinen Platz für die neue HPA besitzt, wird die Hardware dem globalen DevTLB-Invalidierungsablauf folgen.
  • 8 ist ein Ablaufplan, der Operationen in einem Verfahren 800, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt. Unter Bezugnahme auf 8 wird in Operation 805 eine Invalidierungsanforderung in einer Host-Hardware, z. B. die IOMMA 226, empfangen. Dann, wenn in Operation 810 der AktivesDevTLBLeeren-Merker zu 1 gesetzt ist, was anzeigt, dass ein globales TLB-Leeren stattfindet, wird die Steuerung zu Operation 815 weitergegeben, die IOMMU 226 bleibt untätig und die Steuerung wird zu Operation 805 zurückgegeben, um auf eine weitere Invalidierungsanforderung zu warten. Dagegen wird dann, wenn in Operation 810 der AktivesDevTLBLeeren-Merker nicht zu 1 gesetzt ist, was anzeigt, dass ein globales TLB-Leeren nicht stattfindet, die Steuerung zu Operation 820 weitergegeben.
  • Dann, wenn in Operation 820 der AktiverÜbersetzungszyklus-Merker nicht zu 1 gesetzt ist, was angibt, dass keine Übersetzungsanforderung und somit keine MAC-Erzeugung vorlag, wird die Steuerung zu Operation 815 weitergegeben, die IOMMU 226 bleibt untätig, die Steuerung wird zu Operation 850 weitergegeben und der der Prozess endet ohne Hinzufügen einer invalidierten HPA zur ITT 222. Dagegen wird dann, wenn in Operation 820 der AktiverÜbersetzungszyklus-Merker zu 1 gesetzt ist, was angibt, dass eine Übersetzungsanforderung empfangen worden ist, die Steuerung zu Operation 825 weitergegeben und die IOMMU 226 wird versuchen, die HPA, die in der Invalidierungsanforderung empfangen wurde, zur ITT 222 hinzuzufügen.
  • Wenn in Operation 830 kein Platz in der ITT 222 ist, wird die Steuerung zu Operation 835 weitergegeben und ein globaler DevTLB-Invalidierungsablauf wird ausgelöst. Dieser Ablauf wird unten und unter Bezugnahme auf 9 beschrieben. Dagegen wird dann, wenn in Operation 830 Platz in der ITT 222 ist, die Steuerung zu Operation 840 weitergegeben und die IOMMU 226 fügt einen neuen Eintrag für die HPA, die mit der Invalidierungsanforderung empfangen wurde, zur ITT 222 hinzu. In Operation 845 markiert die IOMMU 226 die ITT 222 als nicht leer, die Steuerung wird zur Operation 850 weitergegeben und der Prozess endet.
  • Im Falle einer globalen DevTLB-Invalidierungsanforderung, die entweder ausdrücklich durch Software oder implizit, weil die ITT 222 voll ist, ausgelöst wird, wird eine Hardware eine globale DevTLB-Nachricht zur Vorrichtung senden und den neuerMACZyklus-Zähler erhöhen. Sämtliche übersetzte Anforderungen, die empfangen werden, nachdem die Hardware die globale DevTLB-Invalidierung zur Vorrichtung gesendet hat, werden den alterMACZyklus-Zähler verwenden, um ihre MACs zu berechnen und zu bestätigen. Außerdem muss die Anforderung wie normal durch die ITT 222 gehen. Andererseits werden sämtliche Übersetzungsanforderungen, die empfangen werden, nachdem die Hardware die globale DevTLB-Invalidierung zur Vorrichtung gesendet hat, einen Übersetzungsabschlussfehlschlagfehler zur Vorrichtung zurückgeben.
  • Wenn die Vorrichtung eine DevTLB-Invalidierungsabschlussnachricht gesendet hat, muss eine Hardware die ITT 222 löschen, den alterMACZyklus-Zähler mit dem Wert des neuerMACZyklus-Zähler aktualisieren, AktiverÜbersetzungszyklus zu 0 setzen (noch keine Übersetzung hat den neuen Zähler verwendet) und schließlich AktivesDevTLBLeeren zu 0 setzen, um einer Hardware zu ermöglichen, neue Invalidierungen und neue Übersetzungen zu verarbeiten.
  • 9 ist ein Ablaufplan, der Operationen in einem Verfahren 900, um sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und einer Invalidierungsverfolgung zu schaffen, gemäß einer Ausführungsform darstellt. Unter Bezugnahme auf 9 wird in Operation 910 der Merker AktivesDevTLBLeeren zu 1 gesetzt. In Operation 915 wird eine globale DevTLB-Invalidierungsnachricht zur entfernten Vorrichtung gesendet. In Operation 920 wird der NeuerMACZyklus-Zähler erhöht und in Operation 930 wird die ITT 222 gelöscht. In Operation 935 wird die ITT als leer markiert. In Operation 940 wird der Merker AlterMACZyklus-Zähler derart gesetzt, dass er den Wert des Merkers NeuerMACZyklus-Zähler widerspiegelt. In Operation 945 wird der Merker AktivesDevTLBLeeren zu 0 gesetzt, derart, dass Host-Hardware (z. B. IOMMU 226) neue Invalidierungen und neue Übersetzungen verarbeiten kann.
  • Sonderfälle
  • Einige Beispiele dieser Implementierung weisen eine Beschränkung im Verarbeiten von Seitenteilungen (d. h. Teilen einer 1 GB-Seite in mehrere aufeinanderfolgende 4 KB-Seiten) und Seitenzusammenführungen (d. h. Zusammenführen mehrerer aufeinanderfolgender 4 KB-Seiten zu einer 1 GB-Seite) auf. Um dies zu berücksichtigen, kann eine Host-Software ein globales DevTLB-Leeren jedes Mal auslösen, wenn sie eine der beiden Operationen ausführen muss. Allerdings schätzen wir, dass dies seltene Ereignisse sind, derart, dass sie die Gesamtleistungsfähigkeit des Ansatzes nicht beeinflussen würden.
  • Invalidieren von Adressbereichen
  • Gemäß einer Ausführungsform können Bereiche physischer Adressen invalidiert werden. Unter Bezugnahme auf 10 können eine oder mehrere ternäre CAMs 1000 oder geänderte ternäre CAMs in diesem Fall verwendet werden, um das Invalidieren von Bereichen zu verfolgen. Ein Eintrag eines ternären CAM speichert einen Bereich, der als ein binäres Präfix ausgedrückt wird. Für jeden Eintrag prüft ein TCAM, ob die Bits eines Eingabewerts, die gemäß der Präfixmaske, die im TCAM-Eintrag gespeichert ist, als ‚relevant‘ definiert werden, gleich den Bits des Werts, der im Eintrag gespeichert ist, sind. Ein ternärer CAM kann geändert werden, einen Bereichsabgleich unter Verwendung beliebiger Grenzen zu unterstützen, wobei die Eingabe in einen Eintrag mit einer oberen und einer unteren Grenze verglichen werden kann, wie in 10 gezeigt ist.
  • 11 stellt drei verschiedene Bereiche, die in einem TCAM gespeichert sind und in einer Prioritätsliste geordnet sind, dar. Bereich R3 im TCAM-Eintrag 1 1110 ist der breiteste von allen und enthält sowohl R2 als auch R1. Bereich R2 im TCAM-Eintrag 2 1120 ist schmaler, ist in R3 im TCAM-Eintrag 3 1130 enthalten, enthält jedoch R1. Bereich R1 ist der schmalste und ist sowohl in R2 als auch in R3 enthalten. R3 und R1 sind Bereiche von ungültigen HPAs und R2 ist ein Bereich aktiver HPAs. Wie hierin verwendet bezeichnen wir mit dem Begriff ‚aktiv‘ HPAs, die nicht widerrufen worden sind. Die Effizienz des Verwendens des TCAM stammt von der Tatsache, dass jeder Bereich, der beliebig groß sein kann, lediglich einen einzelnen Eintrag benötigt, um repräsentiert zu werden. Darüber hinaus unterstützt eine Prioritätsauflösungs-Hardware das Bestimmen, ob bestimmte HPAs widerrufen sind oder nicht, auf der Grundlage ihrer Einbeziehung in die Bereiche, die im TCAM gespeichert sind, und des Status (d. h. aktiv oder widerrufen) des am besten übereinstimmenden Eintrags. Im Beispiel von 11 sind drei HPAs gezeigt. Der Bereich mit der höchsten Priorität, der HPA 1 abdeckt, ist Bereich R3, der widerrufen ist. Daher ist auch HPA1 widerrufen. Entsprechend ist der Bereich mit der höchsten Priorität, der HPA2 abdeckt, der Bereich R1, der widerrufen ist. Daher ist auch HPA2 widerrufen. Andererseits ist der Bereich mit der höchsten Priorität, der HPA3 abdeckt, der Bereich R2, der aktiv ist. Daher ist HPA3 aktiv.
  • 12 ist ein Ablaufplan, der Operationen in einem Verfahren 1200 zum Einfügen eines ungültigen Bereichs in einen ternären CAM gemäß einer Ausführungsform darstellt. Unter Bezugnahme auf 12 stellt der Ablaufplan der Figur den Prozess des Einsetzens eines Bereichs R widerrufener HPAs in einen TCAM wie z. B. den TCAM 1000 dar. In Operation 1210 bestimmt die TCAM-Hardware-Logik einen Satz aller Bereiche widerrufener HPAs, die als TCAM-Einträge repräsentiert sind, R enthalten und im TCAM gespeichert sind. Dann, wenn in Operation 1215 der Satz nicht leer ist und ein Element oben in der Prioritätenliste besitzt, wird die Steuerung zu Operation 1220 weitergegeben, wird kein Einsetzen vorgenommen und kehrt der Prozess zurück. Somit liegt oben in der Liste bereits ein Bereich vor, der R enthält. Somit wird für sämtliche HPA im Bereich R durch den TCAM als widerrufen bestimmt, derart, dass das Einsetzen von R redundant ist. Dagegen wird dann, wenn in Operation 1215 der Satz nicht vorhanden ist oder wenn er kein Element oben in der Liste enthält, die Steuerung zu Operation 1225 weitergegeben und der Bereich R wird oben zur Prioritätenliste des TCAM hinzugefügt.
  • 13 ist ein Ablaufplan, der Operationen in einem Verfahren 1300 zum Einfügen eines aktiven Bereichs in einen ternären CAM gemäß einer Ausführungsform darstellt. Insbesondere stellt 13 Operationen im Prozess des Einsetzens eines Bereichs R von HPAs, die gültigen Abbildungen in einen TCAM wie z. B. den TCAM 1000 entsprechen, dar. Unter Bezugnahme auf 13 bestimmt in Operation 1310 die TCAM-Hardware-Logik den Satz aller Bereiche widerrufener HPAs, die als TCAM-Einträge repräsentiert werden, R schneiden und im TCAM 1000 gespeichert sind. Wenn in Operation 1315 dieser Satz leer ist, wird die Steuerung zu Operation 1320 weitergegeben, wird kein Einfügen vorgenommen und kehrt der Prozess zurück. Dies ist darauf zurückzuführen, dass der TCAM im Wesentlichen eine Invalidierungsverfolgungsdatenstruktur ist, derart, dass der Fall, dass kein Eintrag im TCAM gefunden wird, der mit einer HPA übereinstimmt, bedeutet, dass die HPA nicht widerrufen worden ist. Dagegen wird dann, wenn in Operation 1315 ein derartiger Satz R vorhanden ist, die Steuerung zu Operation 1325 weitergegeben und der Bereich R wird oben in der Prioritätenlistet des TCAM hinzugefügt.
  • Selbstverständlich deckt der hier beschriebene Gegenstand Ausführungsformen ab, die die Invalidierung sowohl von HPAs als auch von HPA-Bereichen gleichzeitig verfolgen. In derartigen Ausführungsformen führt die Host-Hardware sowohl normale Tabellen von Prüfsummentabellen als auch TCAMs, die Bereichsinvalidierungen verfolgen.
  • Verzeichnisbaumbasierte
  • Invalidierungsverfolgungstabelle
  • Wahlweise kann in einer Ausführungsform eine Invalidierungsverfolgung entsprechend durch einen Verzeichnisbaum unterstützt werden, der durchlaufen werden kann, genau wie Seitentabellen durchlaufen werden.
  • MAC-Größe und Schlüsselerzeugung
  • In einigen Beispielen ergeben ein 32 Bit-MAC und sechs erzeugte MACs für jede Übersetzungsanforderung 6 * 1/ (232) , was in einer MAC-Kollision alle 670 Millionen Versuche resultiert. Dann, wenn die Zeit dafür, dass eine Software die IOMMU-Unterbrechung, die aus einem nicht übereinstimmenden MAC resultiert, beobachtet, etwa 2 Millisekunden ist und die Zeit dafür, dass eine VMM tätig wird (d. h. eine Funktionsrücksetzung oder eine Deaktivierungs-ATS-Operation) etwa 1 Millisekunde ist, kann für einen 1 GHz-PCIe-Bus die böswillige Vorrichtung bis zu 221 böswillige übersetzte Anforderungen senden und kann für einen 2 GHz-CXL-Bus die böswillige Vorrichtung bis zu 222 böswillige übersetzte Anforderungen senden. Somit muss der MAC mindestens 22 Bit umfassen. In einigen Beispielen kann eine böswillige Vorrichtung Fehler hinter weiteren „weniger schwerwiegenden“ Fehlern maskieren, da die IOMMU beschränkte Betriebsmittel besitzt, um Fehler zu protokollieren. Sie kann außerdem die X Millionen Versuche in Chunks unterteilen, bis sie den einen findet.
  • In einigen Beispielen kann ein Schlüssel pro IOMMU vorhanden sein, der während des Startens durch die VMM mittels VT-d-BAR zugewiesen wird. Die IOMMU kann in regelmäßigen Abständen eine Unterbrechung zur IOMMU senden, um sie zu aktualisieren. Dies wird eine globale devTLB-Invalidierung verursachen.
  • Beispielhafte Rechenarchitektur
  • 14 ist ein Blockdiagramm, das eine Rechenarchitektur, die ausgelegt sein kann, sichere Adressübersetzungsdienste unter Verwendung einer Genehmigungstabelle (z. B. HPT 135 oder HPT 260) und auf der Grundlage eines Kontexts einer anfordernden Vorrichtung zu implementieren, gemäß einigen Beispielen darstellt. Die Ausführungsformen können eine Rechenarchitektur enthalten, die Folgendes unterstützt: (i) Prüfen von Zugriffsgenehmigungen für eine übersetzte Anforderung vor dem Ermöglichen, dass eine Speicheroperation fortschreitet; und/oder (ii) Vorabrufen von Seitengenehmigungseinträgen einer HPT in Reaktion auf eine Übersetzungsanforderung und/oder (iii) Ermöglichen eines dynamischen Aufbauens der HPT-Seitengenehmigungen durch Systemsoftware, wie oben beschrieben wird.
  • In verschiedenen Ausführungsformen kann die Rechenarchitektur 1400 einen Teil einer elektronischen Vorrichtung umfassen oder als dieser implementiert sein. In einigen Ausführungsformen kann die Rechenarchitektur 1400 z. B. ein Computersystem repräsentieren, das eine oder mehrere Komponenten der Betriebsumgebungen, die oben beschrieben werden, implementiert. In einigen Ausführungsformen kann die Rechenarchitektur 1400 einen oder mehrere Abschnitte oder Komponenten zur Unterstützung eines sicheren Adressübersetzungsdienstes repräsentieren, die eine oder mehrere hier beschriebene Techniken implementieren.
  • Wie in dieser Anwendung verwendet ist beabsichtigt, dass die Begriffe „System“ und „Komponente“ und „Modul“ sich auf eine computerbezogene Einheit, entweder Hardware, eine Kombination von Hardware und Software, Software oder Software in Ausführung beziehen, wofür Beispiele durch die beispielhafte Rechenarchitektur 1400 bereitgestellt werden. Zum Beispiel kann eine Komponente ein Prozess, der in einem Prozessor läuft, ein Prozessor, ein Festplattenlaufwerk oder ein Laufwerk mit stabilen Zuständen (SDD), mehrere Speicherlaufwerke (eines optischen und/oder eines magnetischen Speichermediums), ein Objekt, ein ausführbares Programm, ein Ausführungs-Thread, ein Programm und/oder ein Computer sein, ist jedoch nicht darauf beschränkt. Veranschaulichend kann sowohl eine Anwendung, die in einem Server läuft, als auch der Server eine Komponente sein. Eine oder mehrere Komponenten können sich in einem Prozess und/oder einem Ausführungs-Thread aufhalten und eine Komponente kann sich in einem Computer befinden und/oder zwischen zwei oder mehr Computern verteilt sein. Ferner können Komponenten durch verschiedene Typen von Kommunikationsmedien kommunikationstechnisch aneinander gekoppelt sein, um den Betrieb zu koordinieren. Die Koordination kann einen unidirektionalen oder einen bidirektionalen Informationsaustausch umfassen. Zum Beispiel können die Komponenten Informationen in Form von Signalen, die über die Kommunikationsmedien kommuniziert werden, kommunizieren. Die Informationen können als Signale implementiert sein, die verschiedenen Signalleitungen zugeordnet sind. In derartigen Zuordnungen ist jede Nachricht ein Signal. Weitere Ausführungsformen können allerdings alternativ Datennachrichten einsetzen. Derartige Datennachrichten können über verschiedene Verbindungen gesendet werden. Beispielhafte Verbindungen enthalten parallele Schnittstellen, serielle Schnittstellen und Busschnittstellen.
  • Die Rechenarchitektur 1400 enthält verschiedene gemeinsame Rechenelemente wie z. B. einen oder mehrere Prozessoren, Mehrfachkernprozessoren, Coprozessoren, Speichereinheiten, Chipsätze, Controller, Peripheriegeräte, Schnittstellen, Oszillatoren, Zeitmessgeräte, Videokarten, Audiokarten, Multimedia-Eingabe-/Ausgabe-Komponenten (Multimedia-I/O-Komponenten), Stromversorgungen usw. Die Ausführungsformen sind allerdings nicht auf eine Implementierung durch die Rechenarchitektur 1400 beschränkt.
  • Wie in 14 gezeigt ist, enthält die Rechenarchitektur 1400 einen oder mehrere Prozessoren 1402 und einen oder mehrere Graphikprozessoren 1408 und kann ein Einzelprozessor-Desktop-System, ein Mehrprozessor-Workstation-System oder ein Server-System, das eine große Anzahl Prozessoren 1402 oder Prozessorkerne 1407 besitzt, sein. In einer Ausführungsform ist das System 1400 eine Verarbeitungsplattform, die in eine integrierte System-on-a-Chip-Schaltung (integrierte SoC-Schaltung oder integrierte SOC-Schaltung) zur Verwendung in mobilen Endgeräten, Handgeräten oder integrierten Geräten aufgenommen ist.
  • Eine Ausführungsform des Systems 1400 kann eine serverbasierte Spielplattform, eine Spielkonsole, die eine Spiel- und Medienkonsole enthält, eine mobile Spielkonsole, eine Handspielkonsole oder eine Online-Spielkonsole enthalten oder darin aufgenommen sein. In einigen Ausführungsformen ist das System 1400 ein Mobiltelefon, ein Smartphone, eine Tablet-Rechenvorrichtung oder ein mobiles Internet-Gerät. Das Datenverarbeitungssystem 1400 kann auch eine tragbare Vorrichtung wie z. B. eine tragbare Smartwatch-Vorrichtung, eine intelligente Brillenvorrichtung, eine Vorrichtung für erweiterte Realität oder eine Vorrichtung für virtuelle Realität enthalten, damit gekoppelt sein oder darin integriert sein. In einigen Ausführungsformen ist das Datenverarbeitungssystem 1400 ein Fernseher oder eine Set-Top-Box-Vorrichtung, der bzw. die einen oder mehrere Prozessoren 1402 und eine graphische Schnittstelle, die durch einen oder mehrere Graphikprozessoren 1408 erzeugt wird, besitzt.
  • In einigen Ausführungsformen enthalten der eine oder die mehreren Prozessoren 1402 jeweils einen oder mehrere Prozessorkerne 1407, um Anweisungen zu verarbeiten, die dann, wenn sie ausgeführt werden, Operationen für System-Software und Anwender-Software durchführen. In einigen Ausführungsformen ist jeder des einen oder der mehreren Prozessorkerne 1407 konfiguriert, einen bestimmten Befehlssatz 14014 zu verarbeiten. In einigen Ausführungsformen kann der Befehlssatz 1409 eine Berechnung mit komplexem Befehlssatz (CISC), eine Berechnung mit verringertem Befehlssatz (RISC) oder eine Berechnung mittels eines sehr langen Befehlsworts (VLIW) ermöglichen. Mehrere Prozessorkerne 1407 können jeweils einen verschiedenen Befehlssatz 1409, der Anweisungen enthalten kann, um die Emulation weiterer Befehlssätze zu ermöglichen, verarbeiten. Der Prozessorkern 1407 kann auch weitere Verarbeitungsvorrichtungen wie z. B. einen digitalen Signalprozessor (DSP) enthalten.
  • In einigen Ausführungsformen enthält der Prozessor 1402 einen Zwischenspeicher 1404. Abhängig von der Architektur kann der Prozessor 1402 einen einzelnen internen Zwischenspeicher oder mehrere Stufen internen Zwischenspeichers besitzen. In einigen Ausführungsformen wird der Zwischenspeicher zwischen verschiedenen Komponenten des Prozessors 1402 gemeinsam verwendet. In einigen Ausführungsformen verwendet der Prozessor 1402 außerdem einen externen Zwischenspeicher (z. B. einen Zwischenspeicher der Stufe-3 (L3-Zwischenspeicher) oder einen Zwischenspeicher der letzten Stufe (LLC-Zwischenspeicher)) (der nicht gezeigt ist), der zwischen Prozessorkernen 1407 unter Verwendung bekannter Zwischenspeicherkohärenztechniken gemeinsam verwendet werden kann. Zusätzlich ist eine Registerdatei 1406 im Prozessor 1402 enthalten, die verschiedene Registertypen zum Speichern verschiedener Datentypen (z. B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Befehlszeigerregister) enthalten kann. Einige Register können allgemein verwendbare Register sein, während weitere Register für den Entwurf des Prozessors 1402 spezifisch sein können.
  • In einigen Ausführungsformen sind ein oder mehrere Prozessoren 1402 an einen oder mehrere Schnittstellenbusse 1410 gekoppelt, um Kommunikationssignal wie z. B eine Adresse, Daten oder Steuersignale zwischen einem Prozessor 1402 und weiteren Komponenten im System zu übertragen. Der Schnittstellenbus 1410 kann in einer Ausführungsform ein Prozessorbus wie z. B. eine Version des direkten Medienschnittstellenbusses (DMI-Bus) sein. Allerdings sind Prozessorbusse nicht auf den DMI-Bus beschränkt und können einen oder mehrere Peripheriekomponentenverbindungsbusse (z. B. PCI, PCI-Express), Speicherbusse oder weitere Typen von Schnittstellenbussen enthalten. In einer Ausführungsform enthalten der eine oder die mehreren Prozessoren 1402 einen integrierten Speicher-Controller 1416 und einen Plattform-Controller-Hub 1430. Der Speicher-Controller 1416 ermöglicht eine Kommunikation zwischen einer Speichervorrichtung und weiteren Komponenten des Systems 1400, während der Plattform-Controller-Hub (PCH) 1430 Verbindungen zu I/O-Vorrichtungen mittels eines lokalen I/O-Busses bereitstellt.
  • Die Speichervorrichtung 1420 kann eine dynamische Schreib-/Lese-Speichervorrichtung (DRAM-Vorrichtung), eine statische Schreib-/Lese-Speichervorrichtung (SRAM-Vorrichtung), eine Flash-Speichervorrichtung, eine Phasenänderungsspeichervorrichtung oder eine beliebige weitere Speichervorrichtung, die eine geeignete Leistung besitzt, um als ein Prozessspeicher zu dienen, sein. In einer Ausführungsform kann die Speichervorrichtung 1420 als Systemspeicher für das System 1400 arbeiten, um Daten 1422 und Anweisungen 1421 zur Verwendung dann, wenn der eine oder die mehreren Prozessoren 1402 eine Anwendung oder einen Prozess ausführen, zu speichern. Der Speicher-Controller-Hub 1416 koppelt auch an einen externen Graphikprozessor 1412, der mit dem einen oder den mehreren Graphikprozessoren 1408 in Prozessoren 1402 kommunizieren kann, um Graphik- und Medienoperationen durchzuführen. In einigen Ausführungsformen kann eine Anzeigevorrichtung 1411 eine Verbindung zu dem einen oder den mehreren Prozessoren 1402 herstellen. Die Anzeigevorrichtung 1411 kann eine oder mehrere einer internen Anzeigevorrichtung wie z. B. in einer mobilen elektronischen Vorrichtung oder einer Laptop-Vorrichtung oder einer externen Anzeigevorrichtung, die mittels einer Anzeigeschnittstelle (z. B. DisplayPort usw.) angebunden ist, sein. In einer Ausführungsform kann die Anzeigevorrichtung 1411 eine am Kopf befestigte Anzeigevorrichtung (HMD) wie z. B. eine stereoskopische Anzeigevorrichtung zur Verwendung in Anwendungen virtueller Realität (VR) oder Anwendungen erweiterter Realität (AR) sein.
  • In einigen Ausführungsformen ermöglicht der Plattform-Controller-Hub 1430, dass Peripheriegeräte mittels eines Hochgeschwindigkeits-I/O-Busses eine Verbindung zu einer Speichervorrichtung 1420 und einem Prozessor 1402 herstellen. Die I/O-Peripheriegeräte enthalten einen Audio-Controller 1446, einen Netz-Controller 1434, eine Firmware-Schnittstelle 1428, eine Drahtlos-Sende-/Empfangseinrichtung 1426, Berührungssensoren 1425, eine Datenspeichervorrichtung 1424 (z. B. ein Festplattenlaufwerk, einen Flash-Speicher usw.), sind jedoch nicht darauf beschränkt. Die Datenspeichervorrichtung 1424 kann mittels einer Speicherschnittstelle (z. B. SATA) oder mittels eines Peripheriebusses wie z. B. ein Peripheriekomponentenverbindungsbus (z. B. PCI, PCI-Express) eine Verbindung herstellen. Die Berührungssensoren 1425 können Berührungssensoren, Drucksensoren oder Fingerabdrucksensoren enthalten. Die Drahtlos-Sende-/Empfangseinrichtung 1426 kann eine Wi-Fi-Sende-/Empfangseinrichtung, eine Bluetooth-Sende-/Empfangseinrichtung oder eine Mobilfunknetz-Sende-/Empfangseinrichtung wie z. B. eine 3G-, 4G-, Langzeitentwicklungs- (LTE-) oder eine 5G-Sende-/Empfangseinrichtung sein. Die Firmware-Schnittstelle 1428 ermöglicht eine Kommunikation mit einer System-Firmware und kann z. B. eine einheitliche erweiterbare Firmware-Schnittstelle (UEFI) sein. Der Netz-Controller 1434 kann eine Netzverbindung zu einem drahtgebundenen Netz ermöglichen. In einigen Ausführungsformen koppelt ein Hochleistungsnetz-Controller (der nicht gezeigt ist) an den Schnittstellenbus 1410. Der Audio-Controller 1446 ist in einer Ausführungsform ein hochauflösender Mehrkanalaudio-Controller. In einer Ausführungsform enthält das System 1400 einen wahlweisen Alt-I/O-Controller 1440, um Alt-Vorrichtungen (z. B. persönliches System 2 (PS/2)) an das System zu koppeln. Der Plattform-Controller-Hub 1430 kann außerdem eine Verbindung zu einer oder mehreren Controller 1442 für den universellen seriellen Bus (USB-Controller) verbinden Eingabevorrichtungen wie z. B. Tastatur/Maus-Kombinationen 1443, eine Kamera 1444 oder weitere USB-Eingabevorrichtungen herstellen.
  • Die folgenden Abschnitte und/oder Beispiele betreffen weitere Ausführungsformen oder Beispiele. Besonderheiten in den Beispielen können überall in einer oder mehreren Ausführungsformen verwendet werden. Die mehreren Merkmale der verschiedenen Ausführungsformen oder Beispiele können mit einigen Merkmalen, die enthalten sind, und weiteren, die ausgeschlossen sind, unterschiedlich kombiniert werden, um zu einer Vielzahl verschiedener Anwendungen zu passen. Beispiele können einen Gegenstand wie z. B. ein Verfahren, Mittel zum Durchführen von Vorgängen des Verfahrens und mindestens ein maschinenlesbares Medium, das Anweisungen enthält, die, wenn sie durch eine Maschine ausgeführt werden, verursachen, dass die Maschine Vorgänge des Verfahrens oder einer Vorrichtung oder eines Systems zum Ermöglichen einer hybriden Kommunikation gemäß Ausführungsformen und Beispielen, die hier beschrieben werden, durchführt, enthalten.
  • Beispiel 1 ist eine Vorrichtung zum Unterstützen sicherer Adressübersetzungsdienste, wobei das System Folgendes umfasst: einen Speicher zum Speichern von Daten und eine Eingabe-/Ausgabe-Speichermanagementeinheit (IOMMU), die mittels einer Host-Vorrichtungs-Verbindung an den Speicher gekoppelt ist, wobei die IOMMU ausgelegt ist, Operationen auszuführen, die Folgendes umfassen: Empfangen einer Speicherzugriffsanforderung von einer entfernten Vorrichtung mittels einer Host-Vorrichtungs-Verbindung, wobei die Speicherzugriffsanforderung eine physische Host-Adresse (HPA), die eine physische Adresse im Speicher, die die Speicherzugriffsanforderung betrifft, identifiziert, und einen ersten Nachrichtenauthentifizierungscode (MAC) umfasst; Erzeugen eines zweiten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung der physischen Host-Adresse, die mit der Speicherzugriffsanforderung empfangen wurde, und eines privaten Schlüssels, der der entfernten Vorrichtung zugeordnet ist; und Durchführen eines Ermöglichens, dass der Speicherzugriff fortschreitet, wenn der erste MAC und der zweite MAC übereinstimmen und sich die HPA nicht in einer Invalidierungstabelle (ITT), die durch die IOMMU geführt wird, befindet; und/oder eines Blockierens der Speicheroperation, wenn der erste MAC und der zweite MAC nicht übereinstimmen.
  • Beispiel 2 enthält den Gegenstand von Beispiel 1, wobei die IOMMU ferner ausgelegt ist, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer anfänglichen Host-Übersetzungsanforderung von der entfernten Vorrichtung; in Reaktion auf die anfängliche Host-Übersetzungsanforderung Erzeugen des ersten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung des geheimen Schlüssels und Zurückgeben der physischen Host-Adresse (HPA) und des ersten Nachrichtenauthentifizierungscodes (MAC) zur entfernten Vorrichtung.
  • Beispiel 3 enthält den Gegenstand der Beispiele 1-2, wobei die IOMMU ferner ausgelegt ist, Operationen durchzuführen, die Folgendes umfassen: in Reaktion auf die anfängliche Host-Übersetzungsanforderung von der entfernten Vorrichtung Durchsuchen der ITT nach einem Eintrag, der mit der HPA und einer Seitengröße der HPA übereinstimmt; und in Reaktion auf ein Finden eines Eintrags in der ITT, der mit der HPA und der Seitengröße übereinstimmt, Entfernen des Eintrags aus der ITT.
  • Beispiel 4 enthält den Gegenstand der Beispiele 1-3, wobei die IOMMU ferner ausgelegt ist, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Anforderung, eine HPA, die der entfernten Vorrichtung zugeordnet ist, zu invalidieren; und in Reaktion auf die Anforderung Hinzufügen der HPA zur ITT.
  • Beispiel 5 enthält den Gegenstand der Beispiele 1-4, wobei die IOMMU ferner ausgelegt ist, Operationen durchzuführen, die Folgendes umfassen: Empfangen von der entfernten Vorrichtung einer nachfolgenden Anforderung, eine HPA zu lesen, wobei die Anforderung die HPA und den MAC, der der entfernten Vorrichtung zugeordnet ist, umfasst; und in Reaktion auf die Anforderung Berechnen eines Satzes von MACs, wobei jeder MAC im Satz von MACs verschieden formatiert ist.
  • Beispiel 6 enthält den Gegenstand der Beispiele 1-5, wobei die ITT als ein direkt abgebildeter Zwischenspeicher und/oder ein satzassoziativer Zwischenspeicher, der in mehrere Stufen unterteilt ist, implementiert ist.
  • Beispiel 7 enthält den Gegenstand der Beispiele 1-6, wobei ein ternärer inhaltsadressierbarer Speicher (TCAM) verwendet wird, einen oder mehrere Bereiche invalidierter HPAs in der ITT zu verfolgen.
  • Beispiel 8 ist ein computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen einer Speicherzugriffsanforderung von einer entfernten Vorrichtung mittels einer Host-Vorrichtungs-Verbindung, wobei die Speicherzugriffsanforderung eine physische Host-Adresse (HPA), die eine physische Adresse im Speicher, die die Speicherzugriffsanforderung betrifft, identifiziert, und einen ersten Nachrichtenauthentifizierungscode (MAC) umfasst; Erzeugen eines zweiten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung der physischen Host-Adresse, die mit der Speicherzugriffsanforderung empfangen wurde, und eines privaten Schlüssels, der der entfernten Vorrichtung zugeordnet ist; und Durchführen eines Ermöglichens, dass der Speicherzugriff fortschreitet, wenn der erste MAC und der zweite MAC übereinstimmen und sich die HPA nicht in einer Invalidierungstabelle (ITT), die durch die IOMMU geführt wird, befindet; und/oder eines Blockierens der Speicheroperation, wenn der erste MAC und der zweite MAC nicht übereinstimmen.
  • Beispiel 9 enthält den Gegenstand von Beispiel 8, der ferner ein Durchführen von Operationen umfasst, die Folgendes umfassen: Empfangen einer anfänglichen Host-Übersetzungsanforderung von der entfernten Vorrichtung; in Reaktion auf die anfängliche Host-Übersetzungsanforderung Erzeugen des ersten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung des geheimen Schlüssels und Zurückgeben der physischen Host-Adresse (HPA) und des ersten Nachrichtenauthentifizierungscodes (MAC) zur entfernten Vorrichtung.
  • Beispiel 10 enthält den Gegenstand der Beispiele 8-9 und enthält ferner in Reaktion auf die anfängliche Host-Übersetzungsanforderung von der entfernten Vorrichtung Durchsuchen der ITT nach einem Eintrag, der mit der HPA und einer Seitengröße der HPA übereinstimmt; und in Reaktion auf ein Finden eines Eintrags in der ITT, der mit der HPA und der Seitengröße übereinstimmt, Entfernen des Eintrags aus der ITT.
  • Beispiel 11 enthält den Gegenstand der Beispiele 8-10, wobei Empfangen einer Anforderung, eine HPA, die der entfernten Vorrichtung zugeordnet ist, zu invalidieren; und in Reaktion auf die Anforderung Hinzufügen der HPA zur ITT.
  • Beispiel 12 enthält den Gegenstand der Beispiele 8-11, der ferner Folgendes umfasst: Empfangen von der entfernten Vorrichtung einer nachfolgenden Anforderung, eine HPA zu lesen, wobei die Anforderung die HPA und den MAC, der der entfernten Vorrichtung zugeordnet ist, umfasst; und in Reaktion auf die Anforderung Berechnen eines Satzes von MACs, wobei jeder MAC im Satz von MACs verschieden formatiert ist.
  • Beispiel 13 enthält den Gegenstand der Beispiele 8-12, wobei die ITT als ein direkt abgebildeter Zwischenspeicher und/oder ein satzassoziativer Zwischenspeicher, der in mehrere Stufen unterteilt ist, implementiert ist.
  • Beispiel 14 enthält den Gegenstand der Beispiele 8-13, wobei ein ternärer inhaltsadressierbarer Speicher (TCAM) verwendet wird, einen oder mehrere Bereiche invalidierter HPAs in der ITT zu verfolgen.
  • Beispiel 15 ist ein nichttransitorisches computerlesbares Medium, das Anweisungen enthält, die, wenn sie durch einen Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Speicherzugriffsanforderung von einer entfernten Vorrichtung mittels einer Host-Vorrichtungs-Verbindung, wobei die Speicherzugriffsanforderung eine physische Host-Adresse (HPA), die eine physische Adresse im Speicher, die die Speicherzugriffsanforderung betrifft, identifiziert, und einen ersten Nachrichtenauthentifizierungscode (MAC) umfasst; Erzeugen eines zweiten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung der physischen Host-Adresse, die mit der Speicherzugriffsanforderung empfangen wurde, und eines privaten Schlüssels, der der entfernten Vorrichtung zugeordnet ist; und Durchführen eines Ermöglichens, dass der Speicherzugriff fortschreitet, wenn der erste MAC und der zweite MAC übereinstimmen und sich die HPA nicht in einer Invalidierungstabelle (ITT), die durch die IOMMU geführt wird, befindet; und/oder eines Blockierens der Speicheroperation, wenn der erste MAC und der zweite MAC nicht übereinstimmen.
  • Beispiel 16 enthält den Gegenstand der Beispiele 13-15, der ferner Anweisungen enthält, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer anfänglichen Host-Übersetzungsanforderung von der entfernten Vorrichtung; in Reaktion auf die anfängliche Host-Übersetzungsanforderung Erzeugen des ersten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung des geheimen Schlüssels und Zurückgeben der physischen Host-Adresse (HPA) und des ersten Nachrichtenauthentifizierungscodes (MAC) zur entfernten Vorrichtung.
  • Beispiel 17 enthält den Gegenstand der Beispiele 15-16, der ferner Anweisungen enthält, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: in Reaktion auf die anfängliche Host-Übersetzungsanforderung von der entfernten Vorrichtung Durchsuchen der ITT nach einem Eintrag, der mit der HPA und einer Seitengröße der HPA übereinstimmt; und in Reaktion auf ein Finden eines Eintrags in der ITT, der mit der HPA und der Seitengröße übereinstimmt, Entfernen des Eintrags aus der ITT.
  • Beispiel 18 enthält den Gegenstand der Beispiele 15-17, der ferner Anweisungen enthält, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Anforderung, eine HPA, die der entfernten Vorrichtung zugeordnet ist, zu invalidieren; und in Reaktion auf die Anforderung Hinzufügen der HPA zur ITT.
  • Beispiel 19 enthält den Gegenstand der Beispiele 15-18, der ferner Anweisungen enthält, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen von der entfernten Vorrichtung einer nachfolgenden Anforderung, eine HPA zu lesen, wobei die Anforderung die HPA und den MAC, der der entfernten Vorrichtung zugeordnet ist, umfasst; und in Reaktion auf die Anforderung Berechnen eines Satzes von MACs, wobei jeder MAC im Satz von MACs verschieden formatiert ist.
  • Beispiel 20 enthält den Gegenstand der Beispiele 15-19, wobei die ITT als ein direkt abgebildeter Zwischenspeicher und/oder ein satzassoziativer Zwischenspeicher, der in mehrere Stufen unterteilt ist, implementiert ist.
  • Beispiel 21 enthält den Gegenstand der Beispiele 15-20, wobei ein ternärer inhaltsadressierbarer Speicher (TCAM) verwendet wird, einen oder mehrere Bereiche invalidierter HPAs in der ITT zu verfolgen.
  • In der Beschreibung oberhalb werden zum Zwecke der Erläuterung zahlreiche konkrete Details angegeben, um ein gründliches Verständnis der beschriebenen Ausführungsformen zu schaffen. Fachleuten wird allerdings deutlich werden, dass Ausführungsformen ohne einige dieser konkreten Details praktiziert werden können. In weiteren Fällen sind bekannte Strukturen und Vorrichtungen in Blockdiagrammform gezeigt. Es kann eine Zwischenstruktur zwischen dargestellten Komponenten vorliegen. Die hier beschriebenen oder dargestellten Komponenten können zusätzliche Eingänge oder Ausgänge aufweisen, die nicht dargestellt oder beschrieben sind.
  • Verschiedene Ausführungsformen können verschiedene Prozesse enthalten. Diese Prozesse können durch Hardware-Komponenten durchgeführt werden oder können in einem Computerprogramm oder maschinenausführbaren Anweisungen verkörpert sein, die verwendet werden können, zu verursachen, dass ein allgemein verwendbarer Prozessor oder ein Prozessor für einen besonderen Zweck oder Logikschaltungen, die mit den Anweisungen programmiert sind, die Prozesse durchführen. Alternativ können die Prozesse durch eine Kombination von Hardware und Software durchgeführt werden.
  • Abschnitte verschiedener Ausführungsformen können als ein Computerprogrammprodukt bereitgestellt werden, das ein computerlesbares Medium enthalten kann, in dem Computerprogrammanweisungen gespeichert sind, die verwendet werden können, einen Computer (oder weitere elektronische Vorrichtungen) zur Ausführung durch einen oder mehrere Prozessoren zu programmieren, einen Prozess gemäß bestimmter Ausführungsformen durchzuführen. Das computerlesbare Medium kann Magnetdatenträger, optische Datenträger, Festwertspeicher (ROM), Schreib-/LeseSpeicher (RAM), löschbaren programmierbaren Festwertspeicher (EPROM), elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder weitere Typen computerlesbarer Medien, die zum Speichern elektronischer Anweisungen geeignet sind, enthalten, ist jedoch nicht darauf beschränkt. Außerdem können Ausführungsformen auch als ein Computerprogrammprodukt heruntergeladen werden, wobei das Programm von einem entfernten Computer zu einem anfordernden Computer übertragen werden kann.
  • Viele der Verfahren werden in ihrer grundlegendsten Form beschrieben, jedoch können Prozesse zu jedem der Verfahren hinzugefügt oder aus ihm entfernt werden und Informationen können zu jeder der beschriebenen Nachrichten hinzugefügt oder von ihr weggenommen werden, ohne vom grundlegenden Umfang der vorliegenden Ausführungsformen abzuweichen. Fachleuten wird deutlich werden, dass viele weitere Änderungen und Anpassungen vorgenommen werden können. Die bestimmten Ausführungsformen sind nicht vorgesehen, um das Konzept einzuschränken, sondern um es zu verdeutlichen. Der Umfang der Ausführungsformen soll nicht durch die bestimmten Beispiele, die oben vorgesehen sind, bestimmt sein, sondern lediglich durch die Ansprüche, die unterhalb vorgesehen sind.
  • Wenn ausgedrückt wird, dass ein Element „A“ an oder mit Element „B“ gekoppelt ist, kann Element A an Element B direkt gekoppelt sein oder kann z. B. über Element C indirekt gekoppelt sein. Wenn die Spezifikation oder die Ansprüche angeben, dass eine Komponente, ein Merkmal, eine Struktur, ein Prozess oder eine Eigenschaft A eine Komponente, ein Merkmal, eine Struktur, einen Prozess oder eine Eigenschaft B „verursacht“, bedeutet dies, dass „A“ mindestens eine Teilursache von „B“ ist, dass jedoch auch mindestens eine weitere Komponente, ein weiteres Merkmal, eine weitere Struktur, ein weiterer Prozess oder eine weitere Eigenschaft vorhanden sein kann, die bzw. das das Verursachen von „B“ unterstützt. Wenn die Spezifikation angibt, dass eine Komponente, ein Merkmal, eine Struktur, ein Prozess oder eine Eigenschaft aufgenommen „kann“, „werden könnte“ oder „würde“, muss diese Komponente, dieses Merkmal, diese Struktur, dieser Prozess oder diese Eigenschaft nicht aufgenommen werden. Wenn die Spezifikation oder der Anspruch sich auf „eines“ oder „ein“ Element bezieht, bedeutet dies nicht, dass lediglich eines der beschriebenen Elemente vorliegt.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel. Bezüge in der Spezifikation auf „Ausführungsform“, „eine Ausführungsform“, „einige Ausführungsformen“ oder „weitere Ausführungsformen“ bedeuten, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder bestimmte Eigenschaften, das bzw. die in Verbindung mit den Ausführungsformen beschrieben wurde, in mindestens einigen Ausführungsformen, jedoch nicht notwendigerweise in allen Ausführungsformen enthalten ist. Die verschiedenen Erscheinungsformen von „Ausführungsform“, „eine Ausführungsform“ oder „einige Ausführungsformen“ beziehen sich nicht notwendigerweise alle auf dieselbe Ausführungsform. Es sollte begrüßt werden, dass in der vorhergehenden Beschreibung beispielhafter Ausführungsformen zum Zwecke des Straffens der Offenbarung und des Unterstützens des Verständnisses eines oder mehrerer der verschiedenen neuen Aspekte verschiedene Merkmale manchmal in einer einzelnen Ausführungsform, Figur oder Beschreibung davon gruppiert sind. Dieses Verfahren der Offenbarung sollte allerdings nicht als eine Absicht widerspiegelnd interpretiert werden, dass die beanspruchten Ausführungsformen mehr Merkmale erfordern, als ausdrücklich in jedem Anspruch rezitiert werden. Vielmehr liegen, wie die folgenden Ansprüche widerspiegeln, neue Aspekte in weniger als allen Merkmalen einer einzelnen vorher offenbarten Ausführungsform. Somit sind die Ansprüche hiermit ausdrücklich in diese Beschreibung aufgenommen, wobei jeder Anspruch als eine einzelne Ausführungsform eigenständig ist.

Claims (21)

  1. Vorrichtung zum Unterstützen sicherer Adressübersetzungsdienste, wobei das System Folgendes umfasst: einen Speicher zum Speichern von Daten und eine Eingabe-/Ausgabe-Speichermanagementeinheit (IOMMU), die mittels einer Host-Vorrichtungs-Verbindung an den Speicher gekoppelt ist, wobei die IOMMU ausgelegt ist, Operationen auszuführen, die Folgendes umfassen: Empfangen einer Speicherzugriffsanforderung von einer entfernten Vorrichtung mittels einer Host-Vorrichtungs-Verbindung, wobei die Speicherzugriffsanforderung eine physische Host-Adresse (HPA), die eine physische Adresse im Speicher, die die Speicherzugriffsanforderung betrifft, identifiziert, und einen ersten Nachrichtenauthentifizierungscode (MAC) umfasst; Erzeugen eines zweiten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung der physischen Host-Adresse, die mit der Speicherzugriffsanforderung empfangen wurde, und eines privaten Schlüssels, der der entfernten Vorrichtung zugeordnet ist; und Durchführen von Folgendem: Ermöglichen, dass der Speicherzugriff fortschreitet, wenn der erste MAC und der zweite MAC übereinstimmen und sich die HPA nicht in einer Invalidierungstabelle (ITT), die durch die IOMMU geführt wird, befindet; und/oder Blockieren der Speicheroperation, wenn der erste MAC und der zweite MAC nicht übereinstimmen.
  2. Vorrichtung nach Anspruch 1, wobei die IOMMU ferner ausgelegt ist, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer anfänglichen Host-Übersetzungsanforderung von der entfernten Vorrichtung; in Reaktion auf die anfängliche Host-Übersetzungsanforderung Erzeugen des ersten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung des geheimen Schlüssels und Zurückgeben der physischen Host-Adresse (HPA) und des ersten Nachrichtenauthentifizierungscodes (MAC) zur entfernten Vorrichtung.
  3. Vorrichtung nach Anspruch 1, wobei die IOMMU ferner ausgelegt ist, Operationen durchzuführen, die Folgendes umfassen: in Reaktion auf die anfängliche Host-Übersetzungsanforderung von der entfernten Vorrichtung Durchsuchen der ITT nach einem Eintrag, der mit der HPA und einer Seitengröße der HPA übereinstimmt; und in Reaktion auf ein Finden eines Eintrags in der ITT, der mit der HPA und der Seitengröße übereinstimmt, Entfernen des Eintrags aus der ITT.
  4. Vorrichtung nach Anspruch 1, wobei die IOMMU ferner ausgelegt ist, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Anforderung, eine HPA, die der entfernten Vorrichtung zugeordnet ist, zu invalidieren; und in Reaktion auf die Anforderung Hinzufügen der HPA zur ITT.
  5. Vorrichtung nach Anspruch 1, wobei die IOMMU ferner ausgelegt ist, Operationen durchzuführen, die Folgendes umfassen: Empfangen von der entfernten Vorrichtung einer nachfolgenden Anforderung, eine HPA zu lesen, wobei die Anforderung die HPA und den MAC, der der entfernten Vorrichtung zugeordnet ist, umfasst; und in Reaktion auf die Anforderung Berechnen eines Satzes von MACs, wobei jeder MAC im Satz von MACs verschieden formatiert ist.
  6. Vorrichtung nach Anspruch 1, wobei die ITT als ein direkt abgebildeter Zwischenspeicher und/oder ein satzassoziativer Zwischenspeicher, der in mehrere Stufen unterteilt ist, implementiert ist.
  7. Vorrichtung nach Anspruch 1, wobei ein ternärer inhaltsadressierbarer Speicher (TCAM) verwendet wird, einen oder mehrere Bereiche invalidierter HPAs in der ITT zu verfolgen.
  8. Computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen einer Speicherzugriffsanforderung von einer entfernten Vorrichtung mittels einer Host-Vorrichtungs-Verbindung, wobei die Speicherzugriffsanforderung eine physische Host-Adresse (HPA), die eine physische Adresse im Speicher, die die Speicherzugriffsanforderung betrifft, identifiziert, und einen ersten Nachrichtenauthentifizierungscode (MAC) umfasst; Erzeugen eines zweiten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung der physischen Host-Adresse, die mit der Speicherzugriffsanforderung empfangen wurde, und eines privaten Schlüssels, der der entfernten Vorrichtung zugeordnet ist; und Durchführen von Folgendem: Ermöglichen, dass der Speicherzugriff fortschreitet, wenn der erste MAC und der zweite MAC übereinstimmen und sich die HPA nicht in einer Invalidierungstabelle (ITT), die durch die IOMMU geführt wird, befindet; und/oder Blockieren der Speicheroperation, wenn der erste MAC und der zweite MAC nicht übereinstimmen.
  9. Verfahren nach Anspruch 8, das ferner Folgendes umfasst: Empfangen einer anfänglichen Host-Übersetzungsanforderung von der entfernten Vorrichtung; in Reaktion auf die anfängliche Host-Übersetzungsanforderung Erzeugen des ersten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung des geheimen Schlüssels und Zurückgeben der physischen Host-Adresse (HPA) und des ersten Nachrichtenauthentifizierungscodes (MAC) zur entfernten Vorrichtung.
  10. Verfahren nach Anspruch 8, das ferner Folgendes umfasst: in Reaktion auf die anfängliche Host-Übersetzungsanforderung von der entfernten Vorrichtung: Durchsuchen der ITT nach einem Eintrag, der mit der HPA und einer Seitengröße der HPA übereinstimmt; und in Reaktion auf ein Finden eines Eintrags in der ITT, der mit der HPA und der Seitengröße übereinstimmt, Entfernen des Eintrags aus der ITT.
  11. Verfahren nach Anspruch 8, das ferner Folgendes umfasst: Empfangen einer Anforderung, eine HPA, die der entfernten Vorrichtung zugeordnet ist, zu invalidieren; und in Reaktion auf die Anforderung Hinzufügen der HPA zur ITT.
  12. Verfahren nach Anspruch 11, das ferner Folgendes umfasst: Empfangen von der entfernten Vorrichtung einer nachfolgenden Anforderung, eine HPA zu lesen, wobei die Anforderung die HPA und den MAC, der der entfernten Vorrichtung zugeordnet ist, umfasst; und in Reaktion auf die Anforderung Berechnen eines Satzes von MACs, wobei jeder MAC im Satz von MACs verschieden formatiert ist.
  13. Verfahren nach Anspruch 8, wobei die ITT als ein direkt abgebildeter Zwischenspeicher und/oder ein satzassoziativer Zwischenspeicher, der in mehrere Stufen unterteilt ist, implementiert ist.
  14. Verfahren nach Anspruch 8, wobei ein ternärer inhaltsadressierbarer Speicher (TCAM) verwendet wird, einen oder mehrere Bereiche invalidierter HPAs in der ITT zu verfolgen.
  15. Nichttransitorisches computerlesbares Medium, das Anweisungen enthält, die, wenn sie durch einen Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Speicherzugriffsanforderung von einer entfernten Vorrichtung mittels einer Host-Vorrichtungs-Verbindung, wobei die Speicherzugriffsanforderung eine physische Host-Adresse (HPA), die eine physische Adresse im Speicher, die die Speicherzugriffsanforderung betrifft, identifiziert, und einen ersten Nachrichtenauthentifizierungscode (MAC) umfasst; Erzeugen eines zweiten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung der physischen Host-Adresse, die mit der Speicherzugriffsanforderung empfangen wurde, und eines privaten Schlüssels, der der entfernten Vorrichtung zugeordnet ist; und Durchführen von Folgendem: Ermöglichen, dass der Speicherzugriff fortschreitet, wenn der erste MAC und der zweite MAC übereinstimmen und sich die HPA nicht in einer Invalidierungstabelle (ITT), die durch die IOMMU geführt wird, befindet; und/oder Blockieren der Speicheroperation, wenn der erste MAC und der zweite MAC nicht übereinstimmen.
  16. Nichttransitorisches computerlesbares Medium nach Anspruch 15, das ferner Anweisungen enthält, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer anfänglichen Host-Übersetzungsanforderung von der entfernten Vorrichtung; in Reaktion auf die anfängliche Host-Übersetzungsanforderung Erzeugen des ersten Nachrichtenauthentifizierungscodes (MAC) unter Verwendung des geheimen Schlüssels und Zurückgeben der physischen Host-Adresse (HPA) und des ersten Nachrichtenauthentifizierungscodes (MAC) zur entfernten Vorrichtung.
  17. Nichttransitorisches computerlesbares Medium nach Anspruch 15, das ferner Anweisungen enthält, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: in Reaktion auf die anfängliche Host-Übersetzungsanforderung von der entfernten Vorrichtung Durchsuchen der ITT nach einem Eintrag, der mit der HPA und einer Seitengröße der HPA übereinstimmt; und in Reaktion auf ein Finden eines Eintrags in der ITT, der mit der HPA und der Seitengröße übereinstimmt, Entfernen des Eintrags aus der ITT.
  18. Nichttransitorisches computerlesbares Medium nach Anspruch 15, das ferner Anweisungen enthält, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen einer Anforderung, eine HPA, die der entfernten Vorrichtung zugeordnet ist, zu invalidieren; und in Reaktion auf die Anforderung Hinzufügen der HPA zur ITT.
  19. Nichttransitorisches computerlesbares Medium nach Anspruch 18, das ferner Anweisungen enthält, die, wenn sie durch den Prozessor ausgeführt werden, den Prozessor konfigurieren, Operationen durchzuführen, die Folgendes umfassen: Empfangen von der entfernten Vorrichtung einer nachfolgenden Anforderung, eine HPA zu lesen, wobei die Anforderung die HPA und den MAC, der der entfernten Vorrichtung zugeordnet ist, umfasst; und in Reaktion auf die Anforderung Berechnen eines Satzes von MACs, wobei jeder MAC im Satz von MACs verschieden formatiert ist.
  20. Nichttransitorisches computerlesbares Medium nach Anspruch 15, wobei die ITT als ein direkt abgebildeter Zwischenspeicher und/oder ein satzassoziativer Zwischenspeicher, der in mehrere Stufen unterteilt ist, implementiert ist.
  21. Nichttransitorisches computerlesbares Medium nach Anspruch 15, wobei ein ternärer inhaltsadressierbarer Speicher (TCAM) verwendet wird, einen oder mehrere Bereiche invalidierter HPAs in der ITT zu verfolgen.
DE102020208234.0A 2019-09-25 2020-07-01 Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung Pending DE102020208234A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/582,919 2019-09-25
US16/582,919 US10949358B2 (en) 2019-09-25 2019-09-25 Secure address translation services using message authentication codes and invalidation tracking

Publications (1)

Publication Number Publication Date
DE102020208234A1 true DE102020208234A1 (de) 2021-03-25

Family

ID=69162969

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020208234.0A Pending DE102020208234A1 (de) 2019-09-25 2020-07-01 Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung

Country Status (4)

Country Link
US (1) US10949358B2 (de)
EP (1) EP3798856B1 (de)
CN (1) CN112564909A (de)
DE (1) DE102020208234A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10694495B2 (en) * 2018-09-26 2020-06-23 Charter Communications Operation, LLC Paging related methods and apparatus
US10764864B2 (en) 2018-09-26 2020-09-01 Charter Communcations Operating, LLC Paging related methods and apparatus
CN116134475A (zh) * 2020-05-29 2023-05-16 奈特力斯股份有限公司 计算机存储器扩展设备及其操作方法
US20210406199A1 (en) * 2020-06-25 2021-12-30 Intel Corporation Secure address translation services using cryptographically protected host physical addresses
US11644980B2 (en) * 2021-06-22 2023-05-09 Intel Corporation Trusted memory sharing mechanism
US11934567B2 (en) * 2021-09-07 2024-03-19 Nvidia Corporation Preventing unauthorized translated access using address signing
US11556482B1 (en) 2021-09-30 2023-01-17 International Business Machines Corporation Security for address translation services
WO2023185764A1 (zh) * 2022-03-30 2023-10-05 华为技术有限公司 内存访问方法及相关设备
WO2023225792A1 (en) * 2022-05-23 2023-11-30 Intel Corporation Techniques to multiply memory access bandwidth using a plurality of links
US12001333B1 (en) * 2022-10-07 2024-06-04 Astera Labs, Inc. Early potential HPA generator

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9749319B2 (en) * 2015-05-20 2017-08-29 Google Inc. Address validation using signatures
US10878134B2 (en) * 2019-03-29 2020-12-29 Intel Corporation Technologies for controlling memory access transactions received from one or more I/O devices

Also Published As

Publication number Publication date
EP3798856A1 (de) 2021-03-31
EP3798856B1 (de) 2022-12-28
US10949358B2 (en) 2021-03-16
CN112564909A (zh) 2021-03-26
US20200026661A1 (en) 2020-01-23

Similar Documents

Publication Publication Date Title
DE102020208234A1 (de) Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
US11494222B2 (en) Process-based multi-key total memory encryption
DE102020134207A1 (de) Sichere Adressübersetzungsdienste unter Verwendung kryptographisch geschützter physischer Hostadressen
DE202016107447U1 (de) Adressvalidierung unter Verwendung von Signaturen
US9753868B2 (en) Memory management device and non-transitory computer readable storage medium
DE102018123710A1 (de) Kryptografische Speicherinhaberschaftstabelle für eine sichere öffentliche Cloud
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE112017004017T5 (de) Sichere öffentliche cloud
DE112010004885T5 (de) Bereitstellen von Integritätsüberprüfung und -bestätigung in einer verborgenen Ausführungsumgebung
DE102020125599A1 (de) Vertrauenswürdige lokale speicherverwaltung in einer virtualisierten gpu
DE102019126125A1 (de) System, vorrichtung und verfahren zum integritätsschutz von kunden-arbeitslasten in einer mehrkunden-datenverarbeitungsumgebung
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE102006015106A1 (de) Bereitstellen eines erweiterten Speicherschutzes
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE102011082184A1 (de) Sicherheitsschutz für Speicherinhalt von Prozessorhauptspeicher
DE112016004476T5 (de) Technologien für einen nur-ausführungs-transaktionsarbeitsspeicher
US20150067296A1 (en) I/o memory management unit providing self invalidated mapping
DE102021128529A1 (de) Sichere adressübersetzungsdienste mit bundle-zugriffskontrolle
US10049048B1 (en) Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor
US10181027B2 (en) Interface between a device and a secure processing environment
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE102022107196A1 (de) Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten