DE102023107000A1 - Vertrauliches computing unter verwendung von parallelprozessoren mit code- und datenschutz - Google Patents

Vertrauliches computing unter verwendung von parallelprozessoren mit code- und datenschutz Download PDF

Info

Publication number
DE102023107000A1
DE102023107000A1 DE102023107000.2A DE102023107000A DE102023107000A1 DE 102023107000 A1 DE102023107000 A1 DE 102023107000A1 DE 102023107000 A DE102023107000 A DE 102023107000A DE 102023107000 A1 DE102023107000 A1 DE 102023107000A1
Authority
DE
Germany
Prior art keywords
gpu
data
tee
memory
ppus
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
DE102023107000.2A
Other languages
English (en)
Inventor
Philip Rogers
Mark Overby
Vyas Venkataraman
Naveen Cherukuri
James Leroy Deming
Gobikrishna Dhanuskodi
Dwayne Swoboda
Lucien DUNNING
Aruna Manjunatha
Aaron Jiricek
Mark HAIRGROVE
Michael Woodmansee
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102023107000A1 publication Critical patent/DE102023107000A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

In Beispielen arbeitet eine parallele Verarbeitungseinheit (PPU) innerhalb einer vertrauenswürdigen Ausführungsumgebung (TEE), die unter Verwendung einer Zentraleinheit (CPU) implementiert ist. Eine virtuelle Maschine (VM), die innerhalb der TEE ausgeführt wird, erhält über einen Hypervisor Zugriff auf die PPU. Die Daten einer Anwendung, die von der VM ausgeführt wird, sind jedoch für den Hypervisor und andere nicht vertrauenswürdige Einheiten außerhalb der TEE unzugänglich. Um die Daten während der Übertragung zu schützen, können die VM und die PPU die Daten für eine sichere Kommunikation zwischen den Vorrichtungen verschlüsseln oder entschlüsseln. Um die Daten innerhalb der PPU zu schützen, kann ein geschützter Speicherbereich in dem PPU-Speicher erstellt werden, in dem die Recheneinheiten der PPU am Schreiben außerhalb des geschützten Speicherbereichs gehindert werden. Es wird ein schreibgeschützter Speicherbereich angelegt, in dem Zugriff auf den PPU-Speicher von anderen Computing-Vorrichtungen und/oder Vorrichtungsinstanzen blockiert wird.

Description

  • STAND DER TECHNIK
  • Virtualisierung ermöglicht es Umgebungen mit mehreren Mandanten, Dienste für mehrere Mandanten, die Zentraleinheiten (CPUs) und parallele Verarbeitungseinheiten (PPUs), wie (GPUs), verwenden, bereitzustellen. Organisationen, die mit sensiblen Daten, wie personenbezogenen Daten (Personally Identifiable Information - PII), Finanzdaten oder Gesundheitsinformationen umgehen, müssen Bedrohungen mindern, die auf die Vertraulichkeit und Integrität von Anwendungen und Daten im Speicher abzielen. Das Sichern von Verarbeitungseinheiten kann jedoch äußerst schwierig sein, insbesondere wenn mehrere Mandanten dieselben physischen Computing-Ressourcen verwenden. Während beispielsweise verschlüsselte Speicherung und Netzwerkverschlüsselung Daten im Ruhezustand und Daten während der Übertragung geschützt haben, ist die Fähigkeit, Daten und Code während der Verwendung zu schützen, in herkömmlichen Computing-Infrastrukturen begrenzt. Vor kurzem wurde eine Klasse von Techniken, die als vertrauliches Computing bekannt ist, um Daten bei Verwendung zu schützen, indem Berechnungen in einer CPU-basierten vertrauenswürdigen Ausführungsumgebung (Trusted Execution Environment - TEE) durchgeführt werden, die unbefugten Zugriff oder Modifikation von Anwendungen und Daten während der Verwendung verhindert.
  • Die Ansätze des vertraulichen Computings beruhen in der Regel auf Hardware- und Firmware-Techniken, um Benutzeranwendungen zu isolieren, die auf einer vertraulichen virtuellen Maschine (VM) laufen, indem Zugriff von Einheiten mit höheren Rechten, wie einem Hypervisor, einem Verwalter für virtuelle Maschinen und Computeradministratoren blockiert wird. Die Benutzeranwendungen werden in der CPU-TEE ausgeführt, die die Vertraulichkeit und Integrität von Code und Daten vor dem Zugriff von außen durch privilegierte Software oder physische Angriffe schützt. Moderne Anwendungen und Arbeitslasten wie die, die auf maschinellem Lernen (ML) und künstlicher Intelligenz (Kl) aufbauen, sind auf beschleunigtes Computing angewiesen, um ihre Leistungsanforderungen zu erfüllen. Herkömmliches vertrauliches Computing ist jedoch nicht in der Lage, Daten zu schützen, die von PPUs verwendet werden. Daher wurde auf die Leistungsvorteile, die von Hardwarebeschleunigern angeboten werden, verzichtet, um Sicherheitsanforderungen zu erfüllen.
  • KURZDARSTELLUNG
  • Ausführungsformen der vorliegenden Offenbarung betreffen vertrauliches Computing unter Verwendung paralleler Prozessoren. Insbesondere betrifft die Offenbarung Ansätze, die sichere Ausführungsumgebungen ermöglichen, die parallele Verarbeitungseinheiten (PPUs), wie Grafikverarbeitungseinheiten (GPUs), verwenden, um Benutzercode auszuführen oder andere Operationen in einer virtualisierten Umgebung durchzuführen.
  • Im Gegensatz zu herkömmlichen Systemen kann eine vertrauenswürdige Ausführungsumgebung (TEE) einer Zentraleinheit (CPU) um eine PPU erweitert werden, um ein beschleunigtes vertrauliches Computing zu ermöglichen. In mindestens einer Ausführungsform arbeitet eine PPU innerhalb einerTEE, die mit einer CPU und der PPU implementiert ist. Eine verschlüsselte virtuelle Maschine (VM), die innerhalb der TEE ausgeführt wird, erhält über einen Hypervisor Zugriff auf die PPU. Die Daten einer Anwendung, die von der verschlüsselten VM ausgeführt wird, sind jedoch für den Hypervisor und andere nicht vertrauenswürdige Einheiten außerhalb der TEE unzugänglich, einschließlich des direkten Speicherzugriffs (DMA) durch die PPU. Um die Daten während der Übertragung zu schützen, können die VM und die PPU die Daten für eine sichere Kommunikation zwischen den Vorrichtungen verschlüsseln oder entschlüsseln. Zum Schutz der Daten innerhalb der PPU kann im PPU-Speicher ein geschützter Rechenbereich (Compute Protected Region - CPR) eingerichtet werden. In einer oder mehreren Ausführungsformen werden die CPU und andere Geräte daran gehindert, den CPR zu lesen oder zu beschreiben, und die Recheneinheiten der PPU werden daran gehindert, außerhalb des CPR zu schreiben.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegenden Systeme und Verfahren zum vertraulichen Computing, die parallele Prozessoren verwenden, sind unten ausführlich unter Bezugnahme auf die beigefügten Zeichnungsfiguren beschrieben, wobei:
    • 1 ein Beispiel eines Systems abbildet, das eine vertrauenswürdige Ausführungsumgebung (TEE) beinhaltet, die eine parallele Verarbeitungseinheit (PPU) aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung;
    • 2 Beispiele von Konfigurationen in einem Multi-PPU-System gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung abbildet;
    • 3 ein Beispiel eines Systems, das eine TEE mit einer PPU beinhaltet, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung abbildet;
    • 4 ein Beispiel von Kopieroperationen innerhalb einer TEE, die eine PPU aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 5 ein Beispiel von Kopieroperationen innerhalb einer TEE, die eine PPU aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 6 ein Beispiel eines Speicherlayouts zum Blockieren von Schnittstellen für den Zugriff auf GPU-Speicher innerhalb einer TEE, die eine PPU aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 7 ein Beispiel dafür, wie eine Kopier-Engine Daten basierend auf einer Quelle oder einem Zielort verschlüsseln oder entschlüsseln kann, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 8 ein Beispiel einer Zertifikatkette, die verwendet werden kann, um eine PPU zu authentifizieren, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 9 ein Ablaufdiagramm ist, das ein Verfahren zeigt, das eine PPU verwenden kann, um Daten innerhalb einer TEE zu verarbeiten, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung;
    • 10 ein Ablaufdiagramm ist, das ein Verfahren zeigt, das eine CPU verwenden kann, um Daten unter Verwendung einer PPU innerhalb einer TEE zu verarbeiten, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung;
    • 11 ein Ablaufdiagramm ist, das ein Verfahren zum Kopieren von Daten aus dem CPU-Speicher in den GPU-Speicher innerhalb einer TEE zeigt, die eine PPU beinhaltet, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung;
    • 12 ein Ablaufdiagramm ist, das ein Verfahren zum Kopieren von Daten aus dem GPU-Speicher in den CPU-Speicher innerhalb einer TEE zeigt, die eine PPU beinhaltet, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung;
    • 13 ein Beispiel eines Systems abbildet, das eine vertrauenswürdige Ausführungsumgebung (TEE) beinhaltet, die mindestens eine Instanz einer PPU aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung;
    • 14 Beispiele von Konfigurationen in einem Multi-Instanz-PPU-System gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung abbildet;
    • 15 ein Beispiel einer PPU, die isolierte PPU-Instanzen aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung veranschaulicht;
    • 16 ein Ablaufdiagramm ist, das ein Verfahren zeigt, das eine PPU verwenden kann, um Daten innerhalb einer TEE unter Verwendung einer PPU-Instanz zu verarbeiten, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung;
    • 17 ein Blockdiagramm einer beispielhaften Computing-Vorrichtung ist, die zur Verwendung beim Umsetzen einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist; und
    • 18 ein Blockdiagramm eines beispielhaften Rechenzentrums ist, das zur Verwendung bei der Umsetzung einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
  • AUSRÜHRLICHE BESCHREIBUNG
  • Die vorliegende Offenbarung betrifft vertrauliches Computing unter Verwendung paralleler Prozessoren. Insbesondere betrifft die Offenbarung Ansätze, die sichere Ausführungsumgebungen erlauben, die parallele Verarbeitungseinheiten (PPUs) verwenden, wie Grafikverarbeitungseinheiten (GPUs), um Benutzercode auszuführen oder um andere Operationen in einer virtualisierten Umgebung durchzuführen.
  • In einer oder mehreren Ausführungsformen kann eine vertrauenswürdige Ausführungsumgebung (TEE) einer Zentraleinheit (CPU) erweitert werden, um eine oder mehrere PPUs zu beinhalten, um beschleunigtes vertrauliches Computing bereitzustellen. Die vorliegende Offenbarung konzentriert sich auf Beispiele, bei denen die eine oder die mehreren PPUs eine oder mehrere GPUs beinhalten, ist aber nicht auf Ausführungsformen beschränkt, bei denen die eine oder die mehreren PPUs eine oder mehrere GPUs beinhalten. Ferner konzentriert sich die vorliegende Offenbarung auf Beispiele, bei denen CPUs PPUs verwenden, aber verschiedene Aspekte gelten allgemeiner für Prozessoren, die PPUs verwenden.
  • In mindestens einer Ausführungsform arbeitet eine PPU innerhalb einer TEE, die mindestens zum Teil unter Verwendung von einer oder mehreren Zentraleinheiten (CPUs) oder anderer Vorrichtungen implementiert ist. Wie hier verwendet, kann eine Vorrichtung eine physische Vorrichtung oder eine virtuelle Vorrichtung (z. B. eine virtuelle Instanz einer Vorrichtung) betreffen. In mindestens einer Ausführungsform wird einer verschlüsselten virtuellen Maschine, die innerhalb der TEE ausgeführt wird, von einem Hypervisor Zugriff auf die PPU gewährt. Daten einer Anwendung, die von der verschlüsselten virtuellen Maschine ausgeführt wird, können jedoch für den Hypervisor und/oder nicht vertrauenswürdige Entitäten außerhalb der TEE unzugänglich sein. Um die Daten während der Übertragung zu schützen, können die VM und die PPU die Daten für eine sichere Kommunikation zwischen den Vorrichtungen verschlüsseln oder entschlüsseln. Um die Daten innerhalb der PPU zu schützen, kann der PPU-Speicher unter Verwendung verschiedener Techniken geschützt werden. In mindestens einer Ausführungsform wird ein geschützter Speicherbereich angelegt, wo Rechen-Engines der PPU blockiert oder anderweitig daran gehindert werden, außerhalb des geschützten Speicherbereichs zu schreiben, sobald die Rechen-Engines auf einen oder mehrere Speicherbereiche innerhalb des geschützten Speicherbereichs zugegriffen haben. In einer oder mehreren Ausführungsformen wird mindestens ein geschützter Speicherbereich generiert, in dem Zugriff auf den PPU-Speicher von anderen Computing-Vorrichtungen und/oder Vorrichtungsinstanzen blockiert wird (z. B. von einer CPU, die über einen Systembus oder einen anderen Kommunikationskanal auf den PPU-Speicher zugreift). In einer oder mehreren Ausführungsformen können die zwei geschützten Speicherbereiche denselben Speicheradressbereich überlappen oder abdecken. Hierin beschriebene geschützte Speicherbereiche können in verschiedenen Ausführungsformen verschlüsselt oder unverschlüsselt sein.
  • In mindestens einer Ausführungsform kann die TEE eine CPU-TEE und eine GPU-TEE, die jeweils hardwarebasiert sein können, beinhalten. Anwendungen, die in der CPU-TEE laufen, können entsprechende Arbeitslasten auf einer GPU beschleunigen, die der GPU-TEE entspricht, ohne die Sicherheit oder Vertraulichkeit zu kompromittieren. In einer oder mehreren Ausführungsformen können Anwendungen auf GPUs in einer vertraulichen VM laufen. Die Anwendungen (z. B. Anwendungscode) brauchen nicht modifiziert zu werden, um beschleunigtes vertrauliches Computing zu unterstützen, und brauchen nicht refaktoriert zu werden, um zu bestimmen, welche Daten geschützt und welche ungeschützt bleiben sollen. Stattdessen können alle Daten der Anwendungen automatisch geschützt werden.
  • In der Regel kann der Hypervisor einer CPU GPU-Speicher über eine Vorrichtungsschnittstelle abbilden und den GPU-Speicher lesen. Alle Daten, die die Geräteschnittstelle passieren, sind im Klartext und können beispielsweise unter Verwendung eines Interposer-Angriffs oder von einem Hypervisor, der möglicherweise nicht vertrauenswürdig ist, gelesen werden. In einer oder mehreren Ausführungsformen kann die Fähigkeit nicht vertrauenswürdiger Entitäten, wie des Hypervisors, eines Cloud-Dienstanbieter-Eigentümers (CSP-Eigentümers), eines CSP-Betreibers, eines CSP-Administrators und/oder eines Unternehmens-IT-Administrators, daran gehindert werden, auf Daten und Code innerhalb der GPU-TEE zuzugreifen, um die Vertraulichkeit von Benutzerdaten zu wahren. In einer oder mehreren Ausführungsformen kann der GPU-Speicher vor Software-Angriffen, grundlegenden physischen Angriffen, Software-Rollback-Angriffen, kryptografischen Angriffen, Daten-Rollback-Angriffen und Replay-Angriffen geschützt werden.
  • In mindestens einer Ausführungsform kann die TEE unter Verwendung von beispielsweise und ohne Einschränkung mindestens eines der Folgendem implementiert werden: eine oder mehrere Hardware-Firewalls einer GPU, die ein Eintreten oder Austreten unter Verwendung eines Vorrichtungsschnittstellenbusses verhindern (z. B. mit Ausnahme von Engines mit aktivierter Verschlüsselungsfähigkeit); eine oder mehrere Hardware-Firewalls der GPU, die Eintreten oder Austreten unter Verwendung eines Vorrichtung-zu-Vorrichtung-Schnittstellenbusses verhindern (z. B. mit Ausnahme von Engines mit aktivierter Verschlüsselungsfähigkeit); eine oder mehrere Engines der GPU (z. B. eine Kopier-Engine) mit Verschlüsselungshardware für Inline-Verschlüsselungs-/Entschlüsselungsoperationen; eine oder mehrere Maschinen der GPU (z. B. eine Kopier-Engine) zum Entschlüsseln eingehender Befehlspuffer (auch als Push-Puffer bezeichnet) von der VM der CPU; eine oder mehrere Engines (z. B. eine Kopier-Engine) der GPU zum Entschlüsseln eingehender Kernel von der VM der CPU; oder eine oder mehrere Engines der GPU (z. B. eine Kopier-Engine), um Synchronisationssignale an die VM der CPU zu verschlüsseln. Beispielhafte Engines können (beispielsweise und ohne Einschränkung) eine oder mehrere Hardware-Engines beinhalten, wie eine oder mehrere Kopier-Engines. Wo Engines hierin in Bezug auf unterschiedliche Funktionalitäten beschrieben sind, können die verschiedenen Funktionalitäten ferner unter Verwendung derselben oder unterschiedlicher Engines implementiert werden. Beispielsweise können eine oder mehrere Engines verwendet werden, um mehrere Sätze von Funktionalitäten zu implementieren, oder mehrere Engines können verwendet werden, um einen jeweiligen der Sätze von Funktionalitäten zu implementieren (z. B. eine oder mehrere dedizierte Engines für jeden Satz von Funktionalitäten).
  • Die TEE kann ferner unter Verwendung eines internen Hardware-Root-Of-Trust (ROT) und eines sicheren Prozessors implementiert werden. Die TEE kann unter Verwendung einer automatischen Deaktivierung von hochfrequenten Inband- und Außerbandmetrikzählern implementiert werden, wenn sie sich in einem vertraulichen Rechenmodus befindet, um vor Seitenkanalangriffen zu schützen. Die GPU kann die Fähigkeit aufweisen, mit deaktivierten vertraulichen Rechenschutzmaßnahmen (z. B. regulärer Betrieb) auszuführen, wenn ein vertraulicher Rechenmodus eingeschaltet ist (z. B. aktivierter vertraulicher Schutz) und wenn ein vertraulicher Entwicklerrechenmodus aktiviert ist. In einem vertraulichen Rechenmodus des Entwicklers können vertrauliche Schutzmaßnahmen deaktiviert werden, aber Firmware und Software können dieselben Pfade wie der vertrauliche Rechenmodus verwenden, um das Debuggen und Profiling von Problemen zu ermöglichen, die auftauchen können, wenn der vertrauliche Rechenmodus aktiviert ist, aber nicht, wenn der vertrauliche Rechenmodus deaktiviert ist.
  • In mindestens einer Ausführungsform wird die TEE beispielsweise und ohne Einschränkung unter Verwendung eines eindeutigen Schlüsselpaars pro GPU (oder GPU-Instanz in mindestens einigen Ausführungsformen) mit einem privaten Schlüssel implementiert, der in Sicherungen der GPU eingebrannt ist, eines Sicherheitsmikrocontrollers, der verwendet wird, um Daten zu verschlüsseln/entschlüsseln, um eine sichere Enklave im Speicher der GPU einzurichten, und/oder einer Kombination aus Hardware, Firmware und Mikrocode, um den Zustand der GPU zu bestätigen, um einen vertraulichen Rechenmodus zu aktivieren oder zu deaktivieren und/oder um einen sicheren Kommunikationskanal (z. B. unter Verwendung eines gemeinsam genutzten symmetrischen Sitzungsschlüssels) einzurichten.
  • In mindestens einer Ausführungsform wird die TEE beispielsweise unter Verwendung der VM (z. B. einschließlich eines oder mehrerer Treiber) implementiert, um zu bestimmen, wann sich eine GPU in einem vertraulichen Rechenmodus befindet, um Bounce-Puffer außerhalb der CPU-TEE zur Verwendung in verschlüsselter Kommunikation mit der GPU zu konfigurieren, den gesamten Systemspeicher zu verschlüsseln und zu signieren, der der CPU-TEE für GPU-Speicherübertragungen über die Bounce-Puffer entspricht, eine Kopier-Engine der GPU-TEE zu programmieren, um übertragene Daten in den GPU-geschützten Speicher abzurufen und zu entschlüsseln, GPU-Speicher zu Systemspeicherübertragungen mindestens basierend auf dem Programmieren einer Kopier-Engine der GPU-TEE zu verschlüsseln und zu signieren, um Übertragungsdaten zu den Bounce-Puffern zu kopieren/verschlüsseln, GPU-Speicher zu den GPU-Speicherübertragungen über eine Vorrichtung-zu-Vorrichtung-Schnittstelle zu verschlüsseln und zu signieren, mindestens zum Teil basierend auf Programmieren einer Kopier-Engine der GPU-TEE auf einer Source-GPU, um Übertragungsdaten einem GPU-Speicher-Bounce-Puffer außerhalb der GPU-TEE der Quell-GPU zu verschlüsseln und eine Kopier-Engine einer Ziel-GPU, um Übertragungsdaten in geschützten GPU-Speicher zu kopieren/entschlüsseln, GPU-Pushpuffer und Kernel zu verschlüsseln, die an die GPU gesendet werden, die dann von der Kopier-Engine-Hardware entschlüsselt werden, bevor sie ausgeführt werden, und/oder GPU-Synchronisationssignale, die von der GPU gesendet werden, zu verschlüsseln und zu signieren.
  • Die hierin beschriebenen Systeme und Verfahren können für eine Vielfalt von Zwecken verwendet werden, beispielhaft und ohne Einschränkung können diese Zwecke Systeme oder Anwendungen für Online-Multiplayer-Gaming, Maschinensteuerung, Maschinenfortbewegung, Maschinenantreiben, Generierung synthetischer Daten, Modelltraining, Wahrnehmung, Augmented Reality, Virtual Reality, Mixed Reality, Robotik, Sicherheit und Überwachung, autonome oder halbautonome Maschinenanwendungen, Deep Learning, Umgebungssimulation, Rechenzentrumverarbeitung, Konversations-KI, Lichttransportsimulation (z. B. Raytracing, Pathtracing, usw.), kollaborative Anlegung von Inhalten für 3D-Assets, digitale Zwillingssysteme, Cloud-Computing und/oder andere geeignete Anwendungen beinhalten.
  • Offenbarte Ausführungsformen können in einer Vielfalt unterschiedlicher Systeme umfasst sein, wie in Systemen zur Teilnahme an Online-Gaming, Automobilsystemen (z. B. einem Steuersystem für eine autonome oder halbautonome Maschine, einem Wahrnehmungssystem für eine autonome oder halbautonome Maschine), Systemen, die unter Verwendung eines Roboters implementiert sind, Antennensystemen, medialen Systemen, Bootsystemen, intelligenten Bereichsüberwachungssystemen, Systemen zur Durchführung von Deep-Learning-Operationen, Systemen zur Durchführung von Simulationsoperationen, Systemen, die unter Verwendung einer Edge-Vorrichtung implementiert sind, Systemen, die eine oder mehrere virtuelle Maschinen (VMs) enthalten, Systemen, die mindestens teilweise in einem Rechenzentrum implementiert sind, Systeme zum Durchführen von konversationellen KI-Operationen, Systemen zum Durchführen von Lichttransportsimulation, Systemen zum Durchführen von kollaborativer Inhaltsanlegung für 3D-Assets, Systemen zum Generieren oder Aufrechterhalten digitaler Twin-Darstellungen physischer Objekte, Systemen, die mindestens teilweise unter Verwendung von Cloud-Computing-Ressourcen und/oder anderen Typen von Systemen implementiert werden.
  • 1 bildet ein Beispiel eines Systems 100 ab, das eine TEE mit einer PPU beinhaltet, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. Es versteht sich, dass diese und andere hierin beschriebene Anordnungen nur als Beispiele aufgeführt sind. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen usw.) können zusätzlich oder an Stelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Ferner sind viele der hierin beschriebenen Elemente funktionale Einheiten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und Position implementiert werden können. Verschiedene Funktionen, die hierin als von Entitäten durchgeführt beschrieben sind, können von Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der Anweisungen, die im Speicher gespeichert sind, ausführt.
  • Das System 100 kann unter Verwendung von zusätzlichen oder alternativen Komponenten, einer oder mehreren Verarbeitungseinheiten, wie CPU(s) 102, einer oder mehrerer PPUs, wie von GPU(s) 104, einem oder mehreren Netzwerken, wie von Netzwerk(en) 106, einem oder mehreren Plattformverwaltern, wie einem oder mehreren Plattformverwaltern 152, einem oder mehreren Vorrichtungszertifikaten, wie einem oder mehreren Vorrichtungszertifikaten 154, und einer oder mehreren Vorrichtungs-Boot-Konfigurationen, wie von Vorrichtungs-Boot-Konfiguration(en) 156, implementiert werden.
  • Die CPU(s) 102 kann/können ein oder mehrere Host-Betriebssysteme ausführen, wie ein oder mehrere Host-Betriebssysteme 114, eine oder mehrere virtuelle Maschinen, wie eine oder mehrere virtuelle Maschinen 116, und einen oder mehrere Hypervisoren, wie einen oder mehrere Hypervisor(en) 118. Die GPU(s) 104 kann/können eine oder mehrere Schnittstellen beinhalten, wie (eine) Schnittstelle(n) 124, einen oder mehrere Arbeitsstarter, wie einen Arbeitsstarter 126, eine oder mehrere Rechen-Engines, wie eine oder mehrere Rechen-Engine(s) 128, eine oder mehrere Speicherzugriffseinheiten, wie eine oder mehrere Speicherzugriffseinheiten 130 (z. B. eine oder mehrere Kopier-Engines), einen oder mehrere Videoprozessoren (z. B. Videodecodierer), wie einen oder mehrere Videoprozessoren 132, einen oder mehrere Caches, wie einen oder mehrere Caches 134, einen oder mehrere RAMs, wie einen oder mehrere RAMs 136, eine oder mehrere Schlüsselsicherungen, wie eine oder mehrere Schlüsselsicherungen 138, einen oder mehrere sichere Prozessoren, wie einen oder mehrere sichere Prozessoren 146, und einen oder mehrere Systemprozessoren, wie einen oder mehrere Systemprozessoren 144 beinhalten.
  • Die VM 116 kann einen oder mehrere Bescheinigungsverwalter, wie einen oder mehrere Bescheinigungsverwalter 140, eine oder mehrere Anwendungen, wie eine oder mehrere Anwendungen 108, ein oder mehrere Gast-Betriebssysteme, wie ein oder mehrere Gast-Betriebssysteme 120 und einen oder mehrere Treiber, wie einen oder mehrere Treiber 122 beinhalten.
  • Der/die Bescheinigungsverwalter 140 (der/die z. B. auf der VM 116 ausgeführt werden) können einen oder mehrere Bescheinigungsberichte von der CPU 102 und/oder der GPU 104 empfangen. Beispielsweise kann die CPU 102 mindestens einen Bescheinigungsbericht generieren und den/die Bescheinigungsbericht(e) dem Bescheinigungsverwalter 140 bereitstellen. Beispielsweise kann die GPU 104 mindestens einen Bescheinigungsbericht generieren und den/die Bescheinigungsbericht(e) dem Bescheinigungsverwalter 140 bereitstellen. Der/die Bescheinigungsverwalter 140 kann/können unter Verwendung des Netzwerks/der Netzwerke(s) 106 Daten, die dem einen oder den mehreren Bescheinigungsberichten entsprechen, einem oder mehreren Bescheinigungsdiensten 112 bereitstellen. Der Bescheinigungsdienst 112 kann verifizieren, dass die Daten eine oder mehrere Eigenschaften einer zusammengesetzten TEE 150 angeben. Der Bescheinigungsdienst 112 kann unter Verwendung des Netzwerks bzw. der Netzwerke 106 Daten bereitstellen, die angeben, dass die zusammengesetzte TEE 150 verifiziert wurde. Die Daten können die VM 116 und/oder eine oder mehrere Anwendungen oder Dienste außerhalb der VM 116 veranlassen, eine oder mehrere Operationen durchzuführen (z. B. unter Verwendung der GPU 104).
  • Komponenten des Systems 100 können über das/die Netzwerk(e) 106 kommunizieren. Das/die Netzwerk(e) 106 können beispielsweise ein Wide Area Network (WAN) (z. B. das Internet, ein öffentliches Telefonnetz (PSTN) usw.), ein Local Area Network (LAN) (z. B. Wi-Fi, ZigBee, Z-Wave, Bluetooth, Bluetooth Low Energy (BLE), Ethernet usw.), ein Low-Power Wide Area Network (LPWAN) (z. B. LoRaWAN, Sigfox usw.), ein globales Navigationssatellitensystem-Netzwerk (GNSS-Netzwerk) (z. B. das Global Positioning System (GPS)) und/oder einen anderen Netzwerktyp beinhalten.
  • Die CPU(s) 102 und die GPU(s) 104 können auf einem oder mehreren Host-Systemen implementiert werden, wie einer oder mehreren Host-Vorrichtungen. Beispiele eines Host-Systems beinhalten einen oder mehrere eines Personal Computers (PC), eines Smartphones, Laptop-Computers, Tablet-Computers, eines Desktop-Computers, einer tragbaren Vorrichtung, einer Smartwatch, einer mobilen Vorrichtungen, einer Touchscreen-Vorrichtung, einer Spielkonsole, eines Virtual-Reality-Systems (z. B. ein Headset, einen Computer, eine Spielkonsole, Fernsteuerung(en) und/oder andere Komponenten), einer Streaming-Vorrichtung (z. B. ein NVIDIA SHIELD) einer Smart-Home-Vorrichtung, die einen intelligenten Personal Digital Assistant (PDA), einen MP3-Player, ein Virtual-Reality-Headset, ein System oder eine Vorrichtung zur globalen Positionsbestimmung (GPS), einen Videoplayer, eine Videokamera, eine/ein Überwachungsvorrichtung oder -system, ein Fahrzeug, ein Boot, ein Flugschiff, eine Drohne, einen Roboter, eine tragbare Kommunikationsvorrichtung, eine Vorrichtung in einem Krankenhaus, ein Spielgerät oder -system, ein Unterhaltungssystem, ein Fahrzeugcomputersystem, einen eingebetteten Systemcontroller, eine Fernbedienung, ein Haushaltsgerät, ein Unterhaltungselektronikgerät, eine Workstation, eine Edge-Vorrichtung, eine beliebige Kombination dieser umrissenen Vorrichtungen oder jede andere geeignete Vorrichtung beinhalten. In mindestens einer Ausführungsform können die CPU 102 und die GPU 104 in einer oder mehreren der Computing-Vorrichtung(en) 1700 der 17 beinhaltet sein. In mindestens einer Ausführungsform können die CPU 102 und/oder die GPU 104 in dem Rechenzentrum 1800 der 18 beinhaltet sein.
  • Das System 100, wie die CPU(s) 102, kann den Hypervisor 118 ausführen, um Virtualisierung zu ermöglichen und Zugriff auf die zugrunde liegende Hardware des Systems 100 bereitzustellen, wie auf die CPU(s) 102, die GPU(s) 104, den Systemspeicher, und/oder andere Komponenten, wie Netzwerkschnittstellen, Speichergeräte oder andere physische Hardware. Der Hypervisor 118 kann Zugriff auf verschiedene Vorrichtungen bereitstellen, die beinhaltet oder anderweitig für einen oder mehrere Server zugänglich sind. In mindestens einer Ausführungsform stellt der Hypervisor 118 der VM 116 mindestens Zugriff auf die GPU 104 mindestens zum Teil durch Bereitstellen von Virtualisierung der GPU 104 bereit.
  • Wie in 1 gezeigt, kann der Bescheinigungsverwalter 140 in der/den VM(s) 116 beinhaltet sein. Als weitere Beispiele kann der Bescheinigungsverwalter 140 mindestens zum Teil in einer oder mehreren anderen VMs, Softwarekomponenten und/oder Geräten beinhaltet (z. B. implementiert) sein, wie in einer unterschiedlichen VM oder vertrauenswürdigen Software oder Komponente (z. B. in der GPU 104, in einer anderen VM usw.). In einer oder mehreren Ausführungsformen kann der Bescheinigungsverwalter 140 mindestens zum Teil in einer oder mehreren Anwendungen eines unabhängigen Softwareanbieters (ISV) enthalten sein, die dazu programmiert sein können, ihre Ausführung zu verweigern, es sei denn, eine oder mehrere Eigenschaften der zusammengesetzten TEE 150 sind verifiziert (um z. B. eine vertrauliche Umgebung anzugeben). Um die Richtliniendurchsetzung und/oder Fernüberprüfung zu ermöglichen, können die VM(s) 116 und/oder andere Komponenten des Systems 100 beispielhaft und nicht einschränkend eines oder mehrere der Folgenden verwenden: einen Systemwächter-Laufzeitmonitor (SGRM), Secure Boot, Measured Boot, Virtualization-Based Security (VBS), Dynamic Root of Trust for Measurement (DRTM) oder einen Device Guard.
  • Der Bescheinigungsdienst 112 kann in denselben, ähnlichen oder unterschiedlichen Computing-Systemen wie die CPU(s) 102 und die GPU(s) 104 implementiert werden. Während der Bescheinigungsdienst 112 als über das Netzwerk 106 mit der VM 116 kommunizierend gezeigt ist, kann der Bescheinigungsdienst 112 in mindestens einer Ausführungsform in einem oder mehreren Hostsystemen oder - vorrichtungen implementiert werden, die die CPU(s) 102 und die GPU(s) 104 beinhalten. Obwohl der Bescheinigungsdienst 112 in 1 als mit der VM 116 und/oder dem Bescheinigungsverwalter 140 über das/die Netzwerk(e) 106 kommunizierend gezeigt ist, können in mindestens einer Ausführungsform unterschiedliche Kommunikationsmedien und/oder Schnittstellen verwendet werden. In mindestens einer Ausführungsform ist der Bescheinigungsdienst 112 in einem oder mehreren Servern beinhaltet.
  • Wie hierin beschrieben, kann die VM 116 die GPU 104 verwenden, um eine oder mehrere Operationen durchzuführen. Beispielsweise kann die VM 116 mit der GPU 104 über die Schnittstelle(n) 124 kommunizieren, um eine oder mehrere Operationen durchzuführen. Die eine oder die mehreren Operationen können unter Verwendung von GPU-Zustandsdaten, die mit der VM 116 und/oder der Anwendung 108 auf der GPU 104 assoziiert sind, durchgeführt werden. GPU-Zustandsdaten können auf Daten verweisen, die eine oder mehrere Variablen, Bedingungen, Parameter, Ressourcen, Vorrichtungscode und/oder andere Daten darstellen, die verwendet werden, um eine oder mehrere Aufgaben unter Verwendung der GPU(s) 104, wie eine oder mehrere parallele Verarbeitungsaufgaben, durchzuführen. Treiberdatenstrukturen, Kernel und Benutzerdaten in 4 und 5 sind Beispiele für GPU-Zustandsdaten. Beispiele der parallelen Verarbeitungsaufgaben beinhalten Aufgaben zum Implementieren eines oder mehrerer Teile der einen oder der mehreren Operationen, wie eine oder mehrere Operationen für Spiele, Maschinensteuerung, Maschinenbewegung, Maschinenantreiben, Generierung synthetischer Daten, Modelltraining, Wahrnehmung, Augmented Reality, Virtual Reality, Mixed Reality, Robotik, Sicherheit und Überwachung, autonome oder halbautonome Maschinenanwendungen, Deep Learning, generative Kl, (große) Sprachmodelle, Umgebungssimulation, Rechenzentrumverarbeitung, Konversations-KI, Lichttransportsimulation (z. B. Ray-Tracing, Pfadverfolgung usw.), kollaborative Anlegung von Inhalten für 3D-Assets, digitale Zwillingssysteme, Cloud-Computing und/oder andere geeignete Anwendungen.
  • Beispiele für die Ressourcen beinhalten Objekte, wie Module und Textur- oder Oberflächenreferenzen. Ein Modul kann auf ein dynamisch ladbares Paket von Vorrichtungscode und/oder Daten verweisen. Gerätecodesymbole können Funktionen, globale Variablen und/oder Textur-, Oberflächen- und/oder Ressourcenreferenzen beinhalten. In mindestens einer Ausführungsform kann jeder Satz von GPU-Zustandsdaten seinen eigenen eindeutigen Adressraum aufweisen, und Werte aus dem Satz von GPU-Zustandsdaten können entsprechende Speicherstellen referenzieren. In einer oder mehreren Ausführungsformen kann ein Satz von GPU-Zustandsdaten einen GPU-Kontext beinhalten, wie einen Kontext einer Compute Unified Device Architecture (CUDA).
  • In einer oder mehreren Ausführungsformen können die eine oder die mehreren Operationen mindestens zum Teil unter Verwendung von einer oder mehreren Anwendungen, die auf der VM 116 laufen, wie der Anwendung(en) 108, durchgeführt werden. Die Anwendung 108 kann ein Spiel, eine Video-Streaming-Anwendung, eine Maschinensteueranwendung, eine Maschinenfortbewegungsanwendung, eine Maschinenantriebsanwendung, eine Anwendung zur Generierung synthetischer Daten, eine Modelltrainingsanwendung, eine Wahrnehmungsanwendung, eine Augmented-Reality-Anwendung, eine virtuelle Reality-Anwendung, eine Mixed-Reality-Anwendung, eine Robotikanwendung, eine Sicherheits- und Überwachungsanwendung, eine autonome oder halbautonome Maschinenanwendung, eine Deep-Learning-Anwendung, eine Umgebungssimulationsanwendung, eine Rechenzentrumverarbeitungsanwendung, eine generative Kl-Anwendung, eine Anwendung unter Verwendung von (großen) Sprachmodellen, eine Konversations-Kl-Anwendung, eine Lichttransportsimulationsanwendung (z. B. Raytracing, Pfadverfolgung usw.), eine kollaborative Inhaltsanlegungsanwendung für 3D-Assets, eine Systemanwendung für digitale Zwillinge, eine Cloud-Computing-Anwendung und/oder eine andere Art von Anwendung oder Dienst, beinhalten.
  • Die Anwendung 108 kann eine mobile Anwendung, eine Computeranwendung, eine Konsolenanwendung, eine Tablet-Anwendung und/oder eine andere Art von Anwendung beinhalten. Die Anwendung 108 kann Anweisungen beinhalten, die, wenn sie von einem oder mehreren Prozessoren (z. B. der CPU 102 und/oder der GPU 104) ausgeführt werden, veranlassen, dass der (die) Prozessor(en) ohne Einschränkung konfigurieren, modifizieren, aktualisieren, übertragen, verarbeiten und/oder an den GPU-Zustandsdaten arbeiten, Eingabedaten empfangen, die Benutzereingaben an einem oder mehreren Eingabegeräten darstellen, mindestens einen Teil der Anwendungsdaten aus dem Speicher abrufen, mindestens einen Teil der Anwendungsdaten von (einem) Servern empfangen und/oder die Anzeige von Daten (z. B. Bild- und/oder Videodaten), die den GPU-Zustandsdaten entsprechen, auf einem oder mehreren Displays veranlassen. In einer oder mehreren Ausführungsformen kann/können die Anwendung(en) 108 als Vermittler zum Ermöglichen der Interaktion mit und Anzeigen von Ausgaben aus einer Anwendungsinstanz, die auf einem Anwendungsserver gehostet wird, unter Verwendung einer oder mehrerer Client-Vorrichtungen arbeiten.
  • Wie er hierin beschrieben ist, kann der Bescheinigungsdienst 112 verifizieren, dass die Daten eine oder mehrere Eigenschaften einer zusammengesetzten TEE 150 angeben. Beispielsweise kann der Bescheinigungsdienst 112 gültige Software- und/oder Hardwarekonfigurationen für die zusammengesetzte TEE 150, die die eine oder die mehreren Eigenschaften beinhalten, verfolgen. Durch Verifizieren der Eigenschaften der zusammengesetzten TEE 150, können die VM 116, die Anwendung 108, ein Anwendungsserver und/oder andere Vorrichtungen, Komponenten oder Entitäten bestimmen, ob die zusammengesetzte TEE 150 in Übereinstimmung mit Sicherheitsrichtlinien arbeiten und/oder diese Sicherheitsrichtlinien durchsetzen soll. Beispielsweise können eine oder mehrere Entitäten bestimmen, dass die VM 116 in einer Umgebung arbeitet, die Daten und Code, die mit der VM 116 assoziiert sind, schützen soll, während sie verwendet wird, einschließlich Daten, wie GPU-Zustandsdaten, die unter Verwendung der GPU 104 verarbeitet werden. Somit wird in mindestens einer Ausführungsform der Bescheinigungsdienst 112 verwendet, um sicherzustellen, dass die CPU 102, die GPU 104 und/oder andere Vorrichtungen des Systems 100 in Übereinstimmung mit vertraulichem Computing arbeiten.
  • Wie hierin beschrieben, kann die zusammengesetzte TEE 150 eine TEE der CPU(s) 102 (eine CPU-TEE 170) und eine TEE der GPU(s) 104 (eine GPU-TEE 172) beinhalten. Die TEE der CPU 102 kann beispielsweise die virtuelle Maschine 116 beinhalten. Die TEE der GPU 104 kann beispielsweise die Schnittstelle 124, den Arbeitsstarter 126, die Rechen-Engine 128, die Speicherzugriffseinheit 130, den Videoprozessor 132, den Cache 134, den RAM 136, die Schlüsselsicherungen 138, den Sicherheitsprozessor 146 und den Systemprozessor 144 beinhalten. In anderen Beispielen kann die TEE der CPU(s) 102 und/oder die TEE der GPU(s) 104 mehr, weniger und/oder unterschiedliche Komponenten beinhalten, wie diejenigen, die in Bezug auf die 3-5 und/oder 13-15 beschrieben sind. In mindestens einer Ausführungsform kann die zusammengesetzte TEE 150 unter Verwendung von einer oder mehreren kryptographischer Techniken, wie Advanced Encryption Standard-Verschlüsselung (AES-Verschlüsselung), gesichert werden. In mindestens einer Ausführungsform sind der sichere Prozessor 146 (der z. B. Standards für effiziente Kryptografie2 (SEC2) implementiert), der Systemprozessor 144 und/oder die Speicherzugriffseinheit 130 dazu konfiguriert, Verschlüsselung und Entschlüsselung zu handhaben, und können jeweilige kryptografische Hardware (z. B. AES-Hardware) beinhalten. In mindestens einer Ausführungsform sind die Speicherzugriffseinheit 130 und der sichere Prozessor 146 einem Benutzermodus-Client ausgesetzt, und der Systemprozessor 144 wird ausschließlich von einem oder mehreren Kernelmodelltreiber(n) 122 verwendet, um mit der/den GPU(s) 104 zu kommunizieren.
  • In einer oder mehreren Ausführungsformen ist das System 100 dazu konfiguriert, unbefugte Zugriffe von außerhalb der zusammengesetzten TEE 150 zu blockieren. Um vertrauliche Computing-Lasten zu unterstützen, haben möglicherweise nur die VM 116 und die GPU 104, die in einem vertraulichen Computing-Modus gebootet wurden, Zugriff auf sensible Daten. Allen anderen Entitäten, einschließlich aller Interconnects, kann nicht vertraut werden, dass sie Zugriff auf die sensiblen Daten haben.
  • Die Schnittstelle(n) 124 kann/können einen oder mehrere Kommunikationskanäle 160 und 162 zur Kommunikation zwischen der/den CPU(s) 102 und der/den GPU(s) 104 bereitstellen. Beispielsweise kann/können der/die Kommunikationskanal (Kommunikationskanäle) 162 zur Kommunikation zwischen dem/den Host-Betriebssystem(en) 114 und/oder dem Hypervisor 118 und der/den GPU(s) 104 dienen. Wie in 1 angegeben, können die Kommunikationskanäle 160 einen oder mehrere Kommunikationskanäle zwischen der/den Anwendung(en) 108 und der/den GPU(s) 104 und einem oder mehreren Kommunikationskanälen zwischen dem/den Treiber(n) 122 und der/den GPU(s) 104 beinhalten.
  • Die Schnittstellen 124 beinhalten eine oder mehrere physische Schnittstellen und/oder eine oder mehrere virtuelle Schnittstellen. In mindestens einer Ausführungsform beinhalten die Schnittstellen 124 eine oder mehrere Netzwerkschnittstellen, wie PCIe-Schnittstellen (Peripheral Component Interconnect Express-Schnittstellen). Beispielhaft und nicht einschränkend kann/können die physische(n) Schnittstelle(n) eine oder mehrere physische Funktionen beinhalten, und die virtuelle(n) Schnittstelle(n) kann/können eine oder mehrere virtuelle Funktionen beinhalten.
  • In mindestens einer Ausführungsform können der/die Kommunikationskanal (Kommunikationskanäle) 162 von dem Hypervisor 118 verwendet werden, um anzugeben, dass die GPU 104 nach einem Zurücksetzen der GPU 104 in einem sicheren Ausführungsmodus und/oder einem vertraulichen Rechenmodus arbeiten soll, was eine GPU-TEE 172 erstellt, die in der zusammengesetzten TEE 150 beinhaltet sein soll. Beispielsweise kann der Hypervisor 118 Daten durch einen Außerband-Kanal (OOB-Kanal) an eine Speicherstelle(n) in einem programmierbaren Nur-Lese-Speicher (PROM) schreiben, wie einem elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), der an die GPU 104 (z. B. nichtflüchtiger Speicher) angeschlossen ist. In mindestens einer Ausführungsform entsprechen die Daten der Vorrichtungs-Boot-Konfiguration 156 in 1. In mindestens einer Ausführungsform sind die Vorrichtungs-Boot-Konfiguration 156 und das Vorrichtungszertifikat 154 in dem EEPROM beinhaltet.
  • Zusätzlich oder alternativ kann der Hypervisor 118, wenn die virtuelle Maschine 116, die die GPU 104 in der zusammengesetzten TEE 150 verwendet, beendet wird, erneut den Kommunikationskanal bzw. die Kommunikationskanäle 162 verwenden, um der GPU 104 anzugeben, den sicheren Ausführungsmodus und/oder den vertraulichen Rechenmodus beim nächsten Zurücksetzen (z. B. durch Schreiben von Daten in das PROM) zu verlassen. In verschiedenen Ausführungsformen beinhaltet die GPU 104 einen nichtflüchtigen Speicher zum Speichern von Daten, um anzugeben, dass die GPU 104 in der Lage ist, die GPU-TEE 172 zu generieren, dass die GPU 104 innerhalb der GPU-TEE 172 arbeitet, dass die GPU 104 die GPU-TEE 172 beendet und/oder andere Informationen, die mit der GPU 104 assoziiert sind. Jede Kombination dieser Informationen kann verwendet werden, um einen Bescheinigungsbericht (der z. B. von der GPU 104 bereitgestellt wird) an den Bescheinigungsverwalter 140 zu generieren.
  • In mindestens einer Ausführungsform kann mindestens ein Teil des Kommunikationskanals/der Kommunikationskanäle 160 für Interposer-Angriffe anfällig sein, beispielsweise wenn die Schnittstelle(n) 124 mit einem exponierten Bus verbunden ist (z. B. außerhalb eines Chipgehäuses/von Chipgehäusen der Host-Vorrichtung(en)). Ein exponierter Bus kann beispielsweise verwendet werden, wenn die GPU(s) 104 eine diskrete GPU beinhaltet (z. B. für CPU-GPU-Kommunikation). In einer oder mehreren Ausführungsformen können zum Verbessern von Angriffsvektoren, die mit dem/den Kommunikationskanäle(n) 160 und/oder anderen Angriffsvektoren assoziiert sind, mindestens einer der Kommunikationskanäle 160 und/oder andere Kommunikationskanäle verschlüsselt sein. Ferner können die eine oder die mehreren Eigenschaften der zusammengesetzten TEE 150, die unter Verwendung des Bescheinigungsverwalters 140 verifiziert werden, beinhalten, dass der Kommunikationskanal/die Kommunikationskanäle verschlüsselt ist/sind und/oder dass unverschlüsselte/authentifizierte Daten blockiert werden sollen.
  • Der/die Treiber 122 kann/können einen oder mehrere Benutzermodustreiber und/oder einen oder mehrere Kernelmodustreiber beinhalten.
  • Bei Bezugnahme auf Beispiele, bei denen ein Treiber 122 ein Kernelmodustreiber ist, können der/die Treiber 122 als ein Kernelmodustreiber 122 bezeichnet werden. Bei Bezugnahme auf Beispiele, bei denen ein Treiber 122 ein Kernelmodustreiber ist, können der/die Treiber 122 als Kernelmodustreiber 122 bezeichnet werden. In mindestens einer Ausführungsform kann die Funktionalität eines Treibers 122, wie eines Benutzermodustreibers 122 und/oder eines Kernelmodustreibers 122, mindestens zum Teil in eine oder mehrere Komponenten der VM 116 integriert sein. Beispielsweise kann ein Benutzermodustreiber 122 in eine Anwendung 108 integriert sein. Komponenten innerhalb der CPU-TEE 170 (z. B. die Anwendung(en) 108, das/die Gast-Betriebssystem(e) 120 und/oder andere Komponenten) können mit der/den GPU(s) 104 über die Schnittstelle(n) 124 unter Verwendung des/der Treiber(s) 122 kommunizieren. In mindestens einer Ausführungsform beinhalten der/die Treiber 122 Code oder andere ausführbare Logik, die als ein Ergebnis der Ausführung durch die CPU(s) 102 veranlassen, dass das System 100 verschiedene Operationen durchführt, die die Anwendung(en) 108 und/oder andere Komponenten der CPU-TEE 170 aktivieren, um Computing-Ressourcen der GPU(s) 104 zu verwenden.
  • In einer oder mehreren Ausführungsformen erlaubt/erlauben es der/die Treiber 122 einer oder mehreren maschinellen Lernanwendungen, die in der CPU-TEE 170 ausgeführt werden, die GPU(s) 104 zu verwenden, um Inferenzoperationen durchzuführen. In mindestens einer Ausführungsform kann/können die Anwendung(en) 108 GPU-Daten (z. B. Grafikdaten) einer GPU-Anwendungsprogrammierschnittstelle (API) präsentieren, wie OpenGL oder DirectX, die unter Verwendung eines Benutzermodustreibers 122 implementiert werden können. Der Benutzermodustreiber 122 kann die GPU-Daten durch einen Kernelmodustreiber 122 kommunizieren, der die GPU-Daten zur Verarbeitung an der GPU 104 unter Verwendung der Schnittstelle(n) 124 bereitstellen kann.
  • In mindestens einer Ausführungsform kann die VM 116 (z. B. der Treiber 122) unter Verwendung der Schnittstelle(n) 124 einen oder mehrere sichere Kommunikationskanäle (z. B. bidirektionale verschlüsselte Kommunikationskanäle), wie den Kommunikationskanal/die Kommunikationskanäle 160, einrichten. In einer oder mehreren Ausführungsformen verschlüsselt die VM 116 (z. B. der Treiber 122) alle Datenübertragungen über die Kommunikationskanäle 160. In mindestens einer Ausführungsform verschlüsselt und signiert die VM 116 (z. B. der Treiber 122) alle Kernel- und GPU-Befehle, bevor sie über die Schnittstelle(n) 124 übertragen werden. An der GPU 104 werden diese Kernel und Befehle zur Ausführung in die GPU-TEE 172 entschlüsselt. In ähnlicher Weise können an die CPU 102 zurückgesendete Synchronisierungsprimitive von Hardware verschlüsselt und von der VM 116 (z. B. unter Verwendung des Treibers 122) entschlüsselt werden kann.
  • Das Erstellen des einen oder der mehreren sicheren Kommunikationskanäle kann beispielsweise einen Handshake und/oder eine Initialisierung 164 beinhalten. In mindestens einer Ausführungsform kann der Handshake 164 beinhalten, dass der Treiber 122 und die GPU 104 einen Sicherheitsprotokoll- und Datenmodell-Schlüsselaustausch (SPDM-Schlüsselaustausch) (z. B. einen Diffie-Hellman-Schlüsselaustausch) durchführen, um einen oder mehrere gemeinsam genutzte symmetrische Sitzungsschlüssel 168A und/oder 168B (der als ein oder mehrere symmetrische Sitzungsschlüssel 168 bezeichnet werden kann) zu generieren, die von der (den) VM(s) 116 und der (den) GPU(s) 104 verwendet werden, um Daten für die sicheren Kanäle, die den Kommunikationskanälen 160 entsprechen, zu verschlüsseln und zu entschlüsseln. Beispielsweise kann während der Initialisierung der zusammengesetzten TEE 150 ein symmetrischer Sitzungsschlüssel 168 in dem Treiber 122 und der GPU 104 angelegt werden. Der kryptografische Algorithmus (z. B. AES-GCM-256) kann einen symmetrischen Schlüssel (z. B. ein oder mehrere gemeinsame Geheimnisse 168) und einen Initialisierungsvektor (IV) (z. B. einen 96b IV) als eine Eingabe entweder zum Verschlüsseln oder zum Entschlüsseln von Daten verwenden. Die Verschlüsselung kann Ausgaben erzeugen, die Chiffrierdaten und ein Authentifizierungs-Tag (z. B. einen MAC-Wert der Eingabedaten) beinhalten. Die Chiffrierdaten können zu Vertraulichkeit führen, und das Authentifizierungs-Tag kann zur Integritätsprüfung verwendet werden.
  • Während der Entschlüsselung kann das Authentifizierungs-Tag neu berechnet und mit der Eingabe verglichen werden. Eine Nichtübereinstimmung in dem Authentifizierungs-Tag kann zu einem Entschlüsselungsversagen und/oder zu einer Beendigung der GPU-TEE 172 führen.
  • In mindestens einer Ausführungsform können Daten, die unter Verwendung eines Schlüssels, IV-Paares, verschlüsselt wurden, nur mit demselben Schlüssel, IV-Paar entschlüsselt werden. Jede Änderung in dem Paar kann zu einer Nichtübereinstimmung des Authentifizierungs-Tags führen. Beide Endpunkte in einem verschlüsselten Kanal können dasselbe Schlüssel, IV-Paar für eine erfolgreiche Kommunikation verwenden.
  • In mindestens einer Ausführungsform kann die unbefugte Wiederverwendung von IVs basierend mindestens auf dem Verhindern der Wiederverwendung eines Schlüssels, IV-Paares zum Verschlüsseln von mindestens zwei unterschiedlichen Datenblöcken verhindert werden. In mindestens einer Ausführungsform kann der Schlüssel eines Paars über die Lebensdauer eines oder mehrerer sicherer Kanäle hinweg konstant sein (eine sichere Sitzung kann mehrmals zwischen Kanälen umschalten), und IV-Wiederverwendung kann in allen verschlüsselten Kanälen verhindert werden. In mindestens einer Ausführungsform wird die IV-Wiederverwendung mindestens basierend auf der Verfolgung aller verwendeten IVs verhindert, um sicherzustellen, dass ein aktueller IV in der Vergangenheit nicht verwendet wurde. Das Verfolgen der IVs kann von dem verwendeten IV-Generierungsverfahren abhängen. In mindestens einer Ausführungsform werden die IVs zufällig generiert. In mindestens einer Ausführungsform werden die IVs deterministisch aufgebaut.
  • In mindestens einer Ausführungsform können die IVs deterministisch aufgebaut sein, so dass ein IV für jede Verschlüsselung inkrementiert oder anderweitig berechnet wird. In mindestens einer Ausführungsform beginnt der IV immer mit 0 oder einem anderen vorbestimmten Wert. Ein Bereich oder Satz von IVs, der deterministisch für einen Schlüssel aufgebaut werden kann, kann als ein IV-Raum bezeichnet werden. Für ein 96b IV kann der IV-Raum von 0 -> (2^96) sein. In mindestens einer Ausführungsform verfolgt die Entität, die die Verschlüsselung durchführt, den letzten IV, der für die Verschlüsselung verwendet wird, und inkrementiert (oder berechnet anderweitig deterministisch) den letzten IV-Wert vor der Verschlüsselung, wodurch eine IV-Wiederverwendung vermieden wird. Vor dem Überlaufen des IV-Raums (z. B. sobald der IV-Raum überzulaufen droht), kann der Schlüssel geändert werden (z. B. mindestens basierend auf der Feststellung, dass der IV einen Schwellenwert überschreitet), und der IV für den neuen Schlüssel kann an dem Anfangswert (z. B. 0) oder einem anderen deterministischen Wert beginnen. Der zur Verschlüsselung verwendete inkrementierte IV kann an das andere Ende, das die Entschlüsselung vornimmt, kommuniziert werden.
  • Die Verschlüsselung kann unter Verwendung von hardwarebeschleunigter Verschlüsselung, nativer Hardwareverschlüsselung und/oder Softwareverschlüsselung implementiert werden. In mindestens einer Ausführungsform sollen die VM 116 und die GPU 104 den gesamten Netzwerkverkehr, der an die Schnittstelle(n) 124 gesendet wird, verschlüsseln. In mindestens einer Ausführungsform werden der Anwendungszustand und zugehörige Befehls- und Konfigurationsdaten auf allen Bussen außerhalb der Chip-Package(s) verschlüsselt. Zusätzlich oder alternativ können Daten auf Integrität verifiziert werden, nachdem sie mit einem beliebigen Bus außerhalb eines oder mehrerer Chip-Packages exponiert wurden. In mindestens einer Ausführungsform können die eine oder die mehreren verifizierten Eigenschaften der zusammengesetzten TEE 150 eine beliebige Kombination dieser Eigenschaften beinhalten.
  • In mindestens einer Ausführungsform kann das System 100 mehrere unabhängige sichere Kommunikationskanäle unterstützen. Beispielsweise kann es mehr als eine Anwendung (z. B. in derselben oder einer unterschiedlichen VM 116) geben, die die GPU(s) 104 gleichzeitig verwendet. Jede Anwendung muss möglicherweise unabhängig mit der GPU 104 (und/oder einer Instanz davon) kommunizieren, sodass eine Anwendung eine andere nicht beeinflusst.
  • In einer oder mehreren Ausführungsformen können unabhängige sichere Kommunikationskanäle unter Verwendung eines eindeutigen Schlüssels pro Kanal bereitgestellt werden, wobei jeder Kanal einen entsprechenden IV-Raum verwaltet. Um die Schlüsselspeicherung zu reduzieren, können alle Benutzermodusanwendungen innerhalb einer VM 116 und/oder die mit demselben Benutzer assoziiert sind, denselben Schlüssel gemeinsam verwenden.
  • In mindestens einer Ausführungsform kann jeder Kanal, der einer Anwendung 108 (z. B. einem Benutzermodustreiber 122) zugeordnet ist, mindestens einen eindeutigen Kanalzähler oder -verfolger empfangen. Der Benutzermodustreiber 122 kann den Nachrichtenzähler für die Verschlüsselung inkrementieren und kann einen oder mehrere neue Kanäle (und/oder mindestens einen neuen IV) anfordern, um einen Überlauf des Nachrichtenzählers, zu verhindern, wie hierin beschrieben. Ein Kernelmodustreiber 122 kann den/die Kanalzähler verwalten und für jede Kanalzuordnung inkrementieren. Ein oder mehrere eindeutige Kanalzähler kombiniert mit dem Inkrementieren der Nachrichtenzähler können es den Kanälen erlauben, unabhängig zu arbeiten, während die Wiederverwendung von Schlüssel, IV-Paaren verhindert wird.
  • Um die Wiederverwendung von Schlüssel, IV-Paaren zu verhindern, kann der IV in mehrere (z. B. zwei) Teile aufgeteilt werden. Als ein Beispiel kann das Aufteilen eines IV in zwei Teile für einen Schlüssel das Anlegen von 2 ^ 64 unabhängigen Kanälen erlauben, wobei jeder Kanal in der Lage ist, bis zu 2 ^ 32 Nachrichten zu senden. In mindestens einer Ausführungsform kann der Schlüssel geändert werden, sobald alle Kanäle für einen Schlüssel verwendet wurden. Die Schlüsselrotation kann involvieren, dass jeder Benutzermodustreiber 122 und/oder jede Anwendung 108, der/die mit dem Kernelmodustreiber 122 koordiniert, auf einen neuen Schlüssel umschaltet.
  • In mindestens einer Ausführungsform kann eine Anwendung 108, die die Verschlüsselung durchführt, einen Satz der Chiffrierdaten, das Authentifizierungs-Tag und den IV an den Endpunkt senden, der die Daten entschlüsseln und verbrauchen soll. Der Endpunkt kann die bereitgestellten Eingaben verwenden, um die Daten zu entschlüsseln, zu authentifizieren und zu verbrauchen. Um einen Gegner oder eine böswillige Entität daran zu hindern, die Daten für einen Wiederholungsangriff wiederzuverwenden, kann der IV, der zur Verschlüsselung und seiner entsprechenden Entschlüsselung verwendet werden soll, an beiden Enden des/der sicheren Kommunikationskanals/-kanäle verfolgt werden. Statt dass der Endpunkt die Entschlüsselung unter Verwendung des IV, der von der Verschlüsselungsanwendung 108 gesendet wird, durchführt, kann der Endpunkt eine Version des IV, die am Endpunkt verwaltet und/oder erzeugt wird, verwenden. Beispielsweise kann der Endpunkt, ähnlich wie beim Inkrementieren des IV nach der Verschlüsselung, einen lokalen IV nach der Entschlüsselung inkrementieren. Falls somit ein Gegner oder eine böswillige Entität einen Wiederholungsangriff versucht, schlägt die Entschlüsselungsauthentifizierung fehl, da sich der lokale IV bereits geändert hat.
  • In mindestens einer Ausführungsform können ein oder mehrere der sicheren Kanäle von der VM 116 verwendet werden, um einen oder mehrere Bescheinigungsberichte von der/den GPU(s) 104 zu empfangen. In mindestens einer Ausführungsform generiert der sichere Prozessor 146 einen oder mehrere der Bescheinigungsberichte, die angeben, dass die GPU(s) 104 in einem sicheren Ausführungsmodus und/oder einem vertraulichen Rechenmodus arbeitet/arbeiten. Beispielsweise kann der sichere Prozessor 146 Daten erhalten, die mit der GPU 104 assoziiert sind, und die Daten mit dem/den in der GPU 104 gespeicherten privaten Schlüssel(n) signieren. In einer oder mehreren Ausführungsformen generiert der sichere Prozessor 146 Informationen, die von der CPU-TEE 170 oder einer Entität davon verwendet werden können, um die GPU 104 zu authentifizieren (z. B. unter Verwendung des Bescheinigungsverwalters 140) und die Sicherheitseigenschaften für die CPU-TEE 170 sicherzustellen, wenn die GPU 104 zu der CPU-TEE 170 hinzugefügt wird, um die zusammengesetzte TEE 150 zu bilden. In mindestens einer Ausführungsform stellt ein Dienstanbieter (z. B. ein Computing-Ressourcen-Dienstanbieter, der die Computing-Ressourcen zum Ausführen der CPU-TEE 170 bereitstellt) und/oder ein Hersteller der GPU 104 zusätzliche Informationen zum Authentifizieren und/oder Bestätigen der GPU 104 bereit. Beispielsweise kann der Dienstanbieter eine Liste von GPUs bereitstellen, die mit einem Server verbunden sind, der die CPU-TEE 170 ausführt.
  • Wie hierin beschrieben, kann das kryptografische Material (z. B. ein öffentlicher und privater Schlüssel, der mit der GPU 104 assoziiert ist) in einer Nur-Lese-Speichervorrichtung, wie einem Sicherungsblock, innerhalb der GPU 236, gespeichert werden, der der (den) Schlüsselsicherung(en) 138 entsprechen kann. In verschiedenen Ausführungsformen wird das kryptografische Material in einen sicheren Einmalschreibspeicher (z. B. einen Sicherungsblock) derart geschrieben, dass die Daten nicht neu geschrieben oder anderweitig modifiziert werden können, sobald sie einmal in den sicheren Einmalschreibspeicher geschrieben wurden. In einer oder mehreren Ausführungsformen wird das kryptografische Material in der GPU 104 derart gespeichert, dass der (die) öffentliche(n) Schlüssel für verschiedene Komponenten des Servers (z. B. die CPU) zugänglich ist (sind), aber der (die) private(n) Schlüssel 178 nur für den sicheren Prozessor 146 zugänglich ist (sind). In derartigen Beispielen kann der Zugriff auf den/die privaten Schlüssel, der/die mit der GPU 104 assoziiert sind, für alle Entitäten mit Ausnahme des sicheren Prozessors 146 der GPU 104 blockiert werden.
  • In mindestens einer Ausführungsform läuft die Anwendung 108 als eine Anwendungsinstanz in der VM 116. In einer oder mehreren Ausführungsformen kann das Host-Betriebssystem 114 einen Fensterverwalter beinhalten, der verwendet wird, um die Platzierung und/oder das Erscheinungsbild von Fenstern zu steuern. Beispielsweise kann das Host-Betriebssystem 114 die VM 116 starten, was den Hypervisor 118 veranlasst, eine oder mehrere der Schnittstellen 124 (z. B. physische und/oder virtuelle Schnittstellen) der VM 116 zuzuweisen, und/oder veranlasst, dass die Anwendung 108 ausgeführt wird und (z. B. als Reaktion auf das Starten der VM 116) in einem Fenster-, Vollbildschirm- oder Hintergrundmodus präsentiert wird. In mindestens einer Ausführungsform kann die VM 116 als Reaktion auf eine oder mehrere Benutzereingaben an eine Eingabevorrichtung gestartet werden. In mindestens einer Ausführungsform kann die VM 116 eine abgespeckte und/oder leichtgewichtige Betriebsumgebung, wie Windows Sandbox, umfassen. In mindestens einer Ausführungsform kann die Betriebsumgebung jedes Mal in einem gleichen Zustand geladen werden. Beispielsweise können Daten zwischen Starts der VM 116 nicht bestehen bleiben, und die VM 116 kann aus unveränderlichen Zustandsdaten geladen werden. In einer oder mehreren Ausführungsformen kann die VM 116 unveränderlichen und veränderlichen Zustandsdaten entsprechen. Beispielsweise können Virtualisierungskomponenten unveränderlichen Zustandsdaten entsprechen. Veränderliche Zustandsdaten für die VM 116 können Sicherungsdateien, temporäre Dateien usw. beinhalten. Die Betriebsumgebung kann Hardware-basierte Virtualisierung zur Kernel-Isolierung mit einem integrierten Kernel-Scheduler und Speicherverwalter verwenden.
  • Unter Bezugnahme auf 2, bildet 2 Beispiele von Konfigurationen in einem Multi-PPU-System 200 gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung ab. In dem Beispiel der 2 können die CPU(s) 102 verwendet werden, um mehrere VMs zu implementieren, von denen jede eine oder mehrere PPUs zur Hardwarebeschleunigung verwenden kann. Die PPUs können beispielsweise eine oder mehrere GPUs 104A, eine oder mehrere GPUs 104B und/oder eine oder mehrere GPUs 104C beinhalten, von denen jede der (den) GPU(s) 104 der 1 entsprechen kann Die PPUs des Systems 200 können beispielsweise eine oder mehrere GPUs 204 beinhalten, die der (den) GPU(s) 104 der 1 entsprechen können oder nicht. In mindestens einer Ausführungsform kann 2 kann einem Multi-GPU-Server entsprechen. Einige der GPUs können in einem nicht vertraulichen Rechenmodus laufen, während andere in einem vertraulichen Rechenmodus laufen können (z. B. in einer Konfiguration mit einer einzigen GPU oder in einer Multi-GPU-Konfiguration).
  • In mindestens einer Ausführungsform wird eine GPU 104 oder eine Gruppe von GPUs 104 exklusiv einer VM 116(s) zugewiesen. In einer oder mehreren Ausführungsformen können GPU-Verarbeitungskernel und Benutzermodustreiber (die z. B. einem oder mehreren Treibern 122 entsprechen) als ein GPU-Passthrough-Gast ohne Beteiligung des Hypervisors 118 ausgeführt werden, nachdem der GPU-Passthrough eingerichtet wurde. Daten über die Schnittstelle(n) 124 können unter Verwendung sicherer Sitzungen, die zwischen den VMs 116 und den GPUs 104 wie hierin beschrieben eingerichtet werden, verschlüsselt werden. In einer oder mehreren Ausführungsformen können der Hypervisor 118 und/oder das Host-Betriebssystem 114 auf eine reduzierte Teilmenge des Verwaltungszugriffs auf die GPU(s) 104 über Out-of-Band-Schnittstellen (OOB-Schnittstellen) beschränkt sein.
  • Eine TEE 150A, die einer oder mehreren TEEs 150 der 1 entsprechen kann, beinhaltet eine VM 116A, die der/den VM(s) 116 der 1 entsprechen kann und kann die GPU 104A zur Hardwarebeschleunigung innerhalb der zusammengesetzten TEE 150A verwenden. Beispielsweise können ein oder mehrere Treiber 122A, die einem oder mehreren Treibern 122 der 1 entsprechen können, ein oder mehrere Kommunikationskanäle 160A, die einem oder mehreren Kommunikationskanälen 160 der 1 entsprechen können, und eine Schnittstelle 124A, die einer oder mehreren Schnittstellen 124 der 1 entsprechend kann, verwendet werden, um eine Hardwarebeschleunigung unter Verwendung der GPU 104A zu implementieren.
  • Eine TEE 150B, die einer oder mehreren TEEs 150 der 1 entsprechen kann, beinhaltet eine VM 116B, die der/den VM(s) 116 der 1 entsprechen kann und kann die GPU(s) 104B und die GPU(s) 104C zur Hardwarebeschleunigung innerhalb der zusammengesetzten TEE 150B verwenden. Beispielsweise können ein oder mehrere Treiber 122B, die einem oder mehreren Treibern 122 der 1 entsprechen können, ein oder mehrere Kommunikationskanäle 160B, und ein oder mehrere Kommunikationskanäle 160C, die einem oder mehreren Kommunikationskanälen 160 der 1 entsprechen können, und eine Schnittstelle 124B und eine Schnittstelle 124C, die einer oder mehreren Schnittstellen 124 der 1 entsprechen können, verwendet werden, um eine Hardwarebeschleunigung unter Verwendung der GPU 104B und der GPU 104C zu implementieren.
  • In mindestens einer Ausführungsform können die GPU 104B und die GPU 104C unter Verwendung des/der Kommunikationskanals (-kanäle) 260 miteinander kommunizieren, die dem/den Kommunikationskanal(-kanälen) 160 der 1 ähnlich oder davon unterschiedlich sein können. Beispielsweise kann/können der/die Kommunikationskanal/-kanäle 260 einen oder mehrere sichere Kommunikationskanäle für verschlüsselte Kommunikationen zwischen der GPU 104B und der GPU 104C beinhalten. In mindestens einer Ausführungsform kann/können der/die Kommunikationskanal/-kanäle 260 einer oder mehreren direkten PPU-zu-PPU-Verbindungen, wie NVLink-Verbindungen, entsprechen.
  • In mindestens einer Ausführungsform kann eine VM 210 die GPU 204 zur Hardwarebeschleunigung verwenden. Beispielsweise können ein oder mehrere Treiber 212, ein oder mehrere Kommunikationskanäle 260 und eine Schnittstelle 224 verwendet werden, um eine Hardwarebeschleunigung unter Verwendung der GPU 204 zu implementieren. In mindestens einer Ausführungsform kann der Hypervisor 118 Übertragungen über den/die Kommunikationskanal/-kanäle 260, die verschlüsselt oder unverschlüsselt sein können, erleichtern. Während beispielsweise die VM 116A und die VM 116B entsprechende PPUs für vertrauliches Computing verwenden können, kann die VM 210 die GPU 204 ohne vertrauliches Computing verwenden.
  • Wie hierin beschrieben, beinhaltet in einer oder mehreren Ausführungsformen eine PPU, wie eine GPU 104, einen integrierten Speicher, einen oder mehrere sichere Mikrocontroller und einen privaten Schlüssel (z. B. einen Schlüssel 178) eines öffentlich-privaten Schlüsselpaars. Der öffentliche Schlüssel des öffentlich-privaten Schlüsselpaars kann von einem Hersteller der PPU bereitgestellt werden und kann verwendet werden, um die PPU zu authentifizieren und/oder Informationen, die mit der PPU assoziiert sind, zu bescheinigen. Darüber hinaus können diese PPUs als Hardware in Server-Computersystemen in Rechenzentren beinhaltet sein, die Benutzern Computing-Ressourcen über ein oder mehrere Netzwerke bereitstellen. In derartigen Umgebungen können Optimierungen von einem Compiler durchgeführt werden, um Ausführungsströme und Computing-Ressourcen der PPUs zu verwenden. Beispielsweise kann ein Ausführungsstrom eine Folge von Operationen beinhalten, die der Reihe nach ausgeführt werden, wobei unterschiedliche Ausführungsströme gleichzeitig ausgeführt werden und in Bezug auf andere Ausführungsströme außerhalb der Reihenfolge ausgeführt werden können. Die Verwendung dieser Ausführungsströme kann die Leistung verbessern, indem mindestens Speicherkopien und Kernel-Ausführungen überlappt werden. In verschiedenen Beispielen führen die PPUs, die einer VM 116 in einer Multi Mandanten-Umgebung zur Verfügung stehen, eine parallele Ausführung mehrerer Ausführungsströme durch. Darüber hinaus können die Ausführungsströme in derartigen Beispielen einem Ausführungsstrom einer Compute Unified Device Architecture (CUDA) oder einem Ausführungsstrom von OpenCL (Open Computing Language) entsprechen.
  • Unter Rückkehr zu 1, kann die VM 116, wie der/die Treiber 122, ein oder mehrere gemeinsame Geheimnisse 168 (z. B. einen oder mehrere kryptografische Schlüssel) mit der GPU 104 anlegen. In mindestens einer Ausführungsform beinhaltet die GPU 104 den/die privaten Schlüssel 178, der/die in eine oder mehrere Sicherungen eingebrannt oder anderweitig in der Vorrichtungshardware (z. B. vom Hersteller) gespeichert sind. Beispielsweise können die eine oder die mehreren Sicherungen der/den Schlüsselsicherung(en) 138 in 1 entsprechen. Wie hierin beschrieben, können ein oder mehrere öffentliche Schlüssel, die einem oder mehreren privaten Schlüsseln 178 entsprechen, veröffentlicht werden (z. B. von dem Hersteller).
  • In mindestens einer Ausführungsform führt die VM 116, wie der/die Treiber 122, (z. B. über die CPU(s) 102) den SPDM-Schlüsselaustausch mit der GPU 104 durch, um das/die gemeinsame(n) Geheimnis(se) 168 (z. B., einen oder mehrere kryptografische Schlüssel) zu generieren. Außerdem kann die VM 116 (z. B. der/die Treiber 122) den Benutzer des Systems 100 veranlassen, den öffentlichen Schlüssel zu erhalten (z. B. den öffentlichen Schlüssel von der GPU 104 oder einer anderen Entität, wie einem Server, der von dem Hersteller betrieben wird, anfordern) und den öffentlichen Schlüssel verwenden, um das/die gemeinsame(n) Geheimnis(se) 168 zu generieren (z. B. unter Verwendung des Diffie-Hellman-Schlüsselaustauschalgorithmus). In mindestens einer Ausführungsform beinhaltet/beinhalten das/die gemeinsame(n) Geheimnis(se) 168 einen oder mehrere symmetrische kryptografische Schlüssel. Darüber hinaus werden in mindestens einer Ausführungsform das/die gemeinsame(n) Geheimnis(se) 168 in der VM 116 und dem sicheren Prozessor 146 verwaltet. Wie hierin beschrieben, können Daten, die zwischen der CPU 102 und der GPU 104 ausgetauscht werden (z. B. unter Verwendung eines Puffers 110A und/oder eines Puffers 110B), verschlüsselt oder auf andere Weise unter Verwendung des/der gemeinsamen Geheimnisse(s) 168 geschützt werden. Beispielsweise können Daten, die unter Verwendung der Anwendung(en) 108 ausgetauscht werden, den Puffer 110A und ein oder mehrere erste(s) gemeinsame(s) Geheimnis(se) 168 verwenden, und Daten, die unter Verwendung des Treibers bzw. der Treiber 122 ausgetauscht werden, können den Puffer 110B und ein oder mehrere zweite(s) gemeinsame(s) Geheimnis(se) 168 verwenden.
  • Wie hierin beschrieben, können die VM 116 und der sichere Prozessor 146 der GPU 104 einen gemeinsam genutzten Schlüssel aushandeln, um die zusammengesetzte TEE 150 einschließlich der GPU 104 zu sichern. In derartigen Beispielen kann der sichere Prozessor 146 als Root of Trust für die GPU 104 innerhalb der zusammengesetzten TEE 150 fungieren. Darüber hinaus kann ein direkter Speicherzugriff zwischen der CPU 102 (z. B. der VM 116) und der GPU 104 unter Verwendung des gemeinsam genutzten Schlüssels und eines Bounce-Puffers 110A, 110B oder eines ähnlichen unsicheren Speicherbereich zum Übertragen von Daten gesichert werden. In einer oder mehreren Ausführungsformen, in denen Daten von der VM 116 an die GPU 104 übertragen werden, verschlüsselt die VM 116 Daten unter Verwendung des gemeinsam genutzten Schlüssels, sobald der gemeinsam genutzte Schlüssel ausgehandelt ist, und speichert die verschlüsselten Daten in einem Speicherbereich, auf den die GPU 104 zugreifen kann. Der sichere Prozessor 146 kann dann die verschlüsselten Daten erhalten, die verschlüsselten Daten mit dem gemeinsam genutzten Schlüssel entschlüsseln und die Ergebnisse im geschützten Speicherbereich der GPU 104 speichern. In ähnlicher Weise kann der sichere Prozessor 146 in Beispielen, in denen Daten von der GPU 104 an die VM 116 übertragen werden, Daten aus dem geschützten Speicherbereich der GPU 104 verschlüsseln und die Daten in einem Speicherbereich speichern, auf den die CPU 102 zugreifen kann. Die VM 116 kann dann die verschlüsselten Daten erhalten, die verschlüsselten Daten mit dem gemeinsam genutzten Schlüssel entschlüsseln und die entschlüsselten Daten (z. B. Daten in Klartextform) innerhalb der CPU-TEE 170 speichern.
  • Unter Bezugnahme auf 3, bildet 3 ein Beispiel eines Systems 300, das eine TEE, die eine PPU aufweist, beinhaltet, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung ab. Das System 300 kann dem System 100 der 1 entsprechen. In mindestens einer Ausführungsform ist das System 300 in einem Rechenzentrum beinhaltet und wird verwendet, um Benutzern eines Computing-Ressourcen-Dienstanbieters, wie einem oder mehreren GPU-Mandanten 322, Computing-Ressourcen bereitzustellen.
  • Der Speicher 342 (z. B. CPU-Speicher) kann verschiedene Arten von Speicher, wie flüchtige oder nichtflüchtige Speicher, beinhalten. In mindestens einer Ausführungsform beinhaltet der Speicher 342 einen Halbleiterspeicher oder separate Hardware, wie einen Direktzugriffsspeicher (RAM).
  • In mindestens einer Ausführungsform wird/werden die CPU(s) 102 verwendet, um die CPU-TEE 170 zu implementieren, in der ein oder mehrere Benutzer verschiedene Anwendungen ausführen kann, wie die Anwendung(en) 108, die auf der/den VM(s) 116 läuft/laufen. Wie hierin beschrieben, kann die VM 116 unter Verwendung einer Verschlüsselungstechnik, wie einer sicheren verschlüsselten Virtualisierung (SEV), verschlüsselt und gesichert werden. In mindestens einer Ausführungsform wird kryptografisches Material (z. B. ein oder mehrere kryptografische Schlüssel) verwendet, um die CPU-TEE 170 und Daten innerhalb eines oder mehrerer sicherer Bereiche 316 des Speichers 342 (z. B. Systemspeicher) zu verschlüsseln. Daten, die nicht mit dem kryptografischen Material verschlüsselt sind, können in einem oder mehreren unsicheren Bereichen 318 des Speichers 342 gespeichert werden. In einer oder mehreren Ausführungsformen können die Daten in dem unsicheren Bereich 318 für den Hypervisor 118 und/oder andere nicht vertrauenswürdige Komponenten des Systems 300 zugänglich sein. In einer oder mehreren Ausführungsformen können der (die) kryptografische(n) Schlüssel verwendet werden, um das (die) Gast-Betriebssystem(e) 120 und/oder andere Komponenten der VM 116 von dem Hypervisor 118 zu isolieren. In mindestens einer Ausführungsform wird/werden der/die kryptografische(n) Schlüssel von der/den CPU(s) 102 verwaltet und dem Hypervisor 118 nicht exponiert oder anderweitig zugänglich gemacht.
  • Mindestens einige Speicherübertragungen in dem System 300 können unter Verwendung eines oder mehrerer Systembusse 320 implementiert werden. In mindestens einer Ausführungsform beinhaltet der Systembus 320 Computerhardware, die einen oder mehrere Kommunikationskanäle zwischen Komponenten des Systems verbindet oder anderweitig bereitstellt, wie die, die unter Bezugnahme auf 1 beschrieben sind. Beispielsweise kann/können der/die Systembus(e) 320 einer oder mehreren der Schnittstelle(n) 124 der 1 entsprechen. In einer oder mehreren Ausführungsformen beinhaltet der Systembus 320 mindestens einen PCle-bus.
  • Um in mindestens einer Ausführungsform eine GPU 104 in einer TEE 150 der 1 zu beinhalten (um es z. B. der VM 116 zu erlauben, auf die GPU 104 zuzugreifen), kann die GPU 104 in einen sicheren Modus (z. B. einen Enklavenmodus und/oder einen vertraulichen Rechenmodus) versetzt werden. In einer oder mehreren Ausführungsformen muss die GPU 104 möglicherweise zurückgesetzt werden, um die GPU 104 von dem nicht sicheren in den sicheren Modus oder von dem sicheren Modus in den nicht sicheren Modus umzuschalten. Beispielsweise kann das System 100 den Zugriff auf die GPU 104 blockieren, um zu erlauben, dass die GPU 104 zurückgesetzt wird, um in den sicheren Modus einzutreten. In einer oder mehreren Ausführungsformen blockiert/blockieren der/die sichere(n) Prozessor(en) 146 den Zugriff auf die GPU 104 oder verhindert/verhindern ihn anderweitig. Der sichere Prozessor 146 kann ein oder mehrere Mikrocontroller sein und/oder beinhalten, einschließlich Mikrocode, und kann in die GPU(s) 104 integriert sein. In einer oder mehreren Ausführungsformen initialisiert der sichere Prozessor 146 die GPU(s) 104 in dem sicheren Modus. Beispielsweise kann der sichere Prozessor 146 einen geschützte(n) Bereich(e) 336 des Speichers 334 und/oder eine GPU-Vertrauensgrenze 326 anlegen oder anlegen lassen. In einer oder mehreren Ausführungsformen beinhaltet die GPU-Vertrauensgrenze 326 eine logische Darstellung sicherer Komponenten (z. B. mit dem/den kryptografischen Schlüssel(n) geschützte Daten, vor unbefugtem Zugriff geschützte Komponenten usw.), die in der/den GPU(s) 104 beinhaltet sind.
  • In einer oder mehreren Ausführungsformen beinhaltet der geschützte Speicherbereich 336 einen Großteil des Speichers der GPU 104, wodurch ein kleinerer Teil des Speichers 334 ungeschützt bleibt (ein oder mehrere ungeschützte(r) Bereich(e) 332). Beispielhaft und nicht einschränkend können fünfundneunzig Prozent des Speichers der GPU 104 als der geschützte Speicherbereich 336 initialisiert werden, wenn die GPU 104 in den sicheren Modus eintritt. In mindestens einer Ausführungsform können die verbleibenden fünf Prozent des Speichers 334 ungeschützt bleiben. In verschiedenen Ausführungsformen wird der geschützte Speicherbereich 336 verwendet, um Modellgewichte für maschinelle Lernalgorithmen, Ergebnisse von Inferenzen, Quelldaten, Benutzerdaten und/oder andere zu schützende Daten zu speichern. In verschiedenen Ausführungsformen wird der ungeschützte Speicherbereich 332 verwendet, um verschlüsselte GPU-Zustandsdaten wie CUDA-Kernel, Befehlspuffer oder Bounce-Puffer, für GPU-zu-GPU-Kommunikation über NVLINK oder eine andere Art von Vorrichtung-zu-Vorrichtung-Interconnect zu speichern.
  • In einer oder mehreren Ausführungsformen wird der Speicher 334 verwendet, um interne Datenstrukturen, Semaphore und/oder andere Daten zu speichern, die von dem System 300 verwendet werden, um beliebige der verschiedenen Operationen, die in der vorliegenden Offenbarung beschrieben sind, durchzuführen. Darüber hinaus beinhalten der/die Treiber 122 in verschiedenen Ausführungsformen ausführbaren Code, der als ein Ergebnis seiner Ausführung (z. B. durch einen virtuellen Prozessor innerhalb der CPU-TEE 170) veranlasst, dass Daten in dem geschützten Speicherbereich 336 der GPU 104 gespeichert werden. Beispielsweise können als ein Ergebnis des Aufrufens einer bestimmten Funktion des/der Treiber(s) 122 durch die Anwendung 108 verschlüsselter Daten unter Verwendung eines Puffers 310 über den Systembus 320 an den sicheren Prozessor 146 übertragen, entschlüsselt und in dem/den geschützten Bereich(en) 336 gespeichert werden. Der Puffer 310 in 3 kann einem oder mehreren der Puffer 110A oder der Puffer 110B der 1 entsprechen.
  • In dem gezeigten Beispiel beinhaltet der Systembus 320 einen oder mehrere virtuelle Busse 338. In einer oder mehreren Ausführungsformen beinhaltet der virtuelle Bus 338 einen PF des Systembusses 320. In einer oder mehreren Ausführungsformen kann der PF einer Funktion einer GPU entsprechen, die eine Single-Root-E/A-Virtualisierungsschnittstelle (SR-IOV) unterstützt. In mindestens einer Ausführungsform beinhaltet der PF die erweiterte SR-IOV-Fähigkeit in dem PCIe-Konfigurationsraum, der verwendet wird, um die SR-IOV-Funktionalität der GPU 104 zu konfigurieren und zu verwalten, wie das Aktivieren der Virtualisierung und das Exponieren von virtuellen PCIe-Funktionen (VFs). In mindestens einer Ausführungsform wird der PF als eine virtuelle GPU in dem Verwaltungsbetriebssystem der übergeordneten Hypervisorpartition bereitgestellt.
  • In einer oder mehreren Ausführungsformen beinhaltet die Speicherzugriffseinheit 130 eine oder mehrere der hierin beschriebenen Kopier-Engines und/oder implementierte Funktionalität, die in Bezug auf die Kopier-Engine(s) beschrieben sind. Die Speicherzugriffseinheit 130 beinhaltet einen Hardwareblock der GPU 104, der den/die geschützte(n) Bereich(e) 336 verwaltet. Beispielsweise kann die Speicherzugriffseinheit 130 mit einer Speicherverwaltungseinheit (MMU) der GPU 104 arbeiten, um den Zugriff auf den/die geschützte(n) Bereich(e) 336 zu steuern. In mindestens einer Ausführungsform verwaltet die Speicherzugriffseinheit 130 den Zugriff auf den/die geschützte(n) Bereich(e) 336 derart, dass, sobald eine Rechen-Engine (z. B. die Rechen-Engine(s) 128) auf den/die geschützte(n) Bereich(e) 336 zugreift (z. B. schreibt und/oder aus einen Speicherbereich liest, die mit dem/den geschützten Bereich(en) 336 assoziiert ist/sind), die Rechen-Engine nicht in der Lage ist und/oder daran gehindert wird, auf andere Speicherbereiche außerhalb des/der geschützten Bereichs (Bereiche) 336, wie den Speicher 342 oder andere Teile des Speichers 334 zuzugreifen. Sobald beispielsweise eine bestimmte Rechen-Engine 128 Zugriff auf den/die geschützten Bereich(e) 336 hat, können die Speicherzugriffseinheit 130 und/oder die Speicherverwaltungseinheit Speicheranforderungen von der bestimmten Rechen-Engine 128 auswerten und einen Fehler ausgeben, falls die Rechen-Engine 128 versucht, auf Speicher außerhalb des/der geschützten Bereichs/Bereiche 336 zuzugreifen. In mindestens einer Ausführungsform ist die Speicherzugriffseinheit 130 dafür verantwortlich, einen direkten Speicherzugriff (DMA) des Speichers 334 zu veranlassen.
  • In mindestens einer Ausführungsform beinhaltet die Speicherzugriffseinheit 130 eine oder mehrere Kopier-Engines zum Implementieren der GPU-TEE 172. Wie bei anderen hierin beschriebenen Engines, werden bestimmte Arten von Engines als Beispiele bereitgestellt, und Ausführungsformen können Hardware- und/oder Software-Engines beinhalten. Die Kopier-Engine(s) können eine oder mehrere logische Kopier-Engines (LCEs) und physische Kopier-Engines (PCEs), die AES-fähig sind, verwenden. Die LCEs und PCEs können unter Verwendung von Hardwareblöcken der GPU 104 implementiert werden. Die PCEs können eine Datenbewegung durchführen, und die LCEs können eine Steuerlogik implementieren, um die PCEs zu verwalten. Die Kopier-Engine(s) kann/können konfiguriert sein, um Daten in den/die geschützten Bereich(e) 336 zu holen und zu entschlüsseln, Übertragungen von dem Speicher 334 zu dem Speicher 342 unter Verwendung des Bounce-Puffers 310 zu verschlüsseln und zu signieren, Daten von der VM 116 in den Speicher 334 zu entschlüsseln, Übertragungen von dem Speicher 334 zu einem anderen PPU-Speicher zu entschlüsseln und signieren, um zu einem GPU-Speicher-Bounce-Puffer außerhalb des/der geschützten Bereichs (Bereiche) 336 zu verschlüsseln, GPU-Push-Puffer und CUDA-Kernels, die an die GPU 104 gesendet werden, zu verschlüsseln, die dann von der Kopier-Engine entschlüsselt werden, bevor sie ausgeführt werden, und/oder GPU-Synchronisationssignale, die von der GPU 104 gesendet werden, entschlüsseln.
  • In mindestens einer Ausführungsform verwendet die Speicherzugriffseinheit 130 einen oder mehrere Sätze von Schlüsseln (z. B. in Schlüssel-Slots eines LCE gespeichert), wobei ein Satz (einen) Schlüssel zum Verschlüsseln und (einen) Schlüssel zum Entschlüsseln aufweist. In mindestens einer Ausführungsform kann ein Satz von Schlüsseln für Übertragungen mit Kernelmodus-Clients, wie einem Kernelmodustreiber 122, verwendet werden. In mindestens einer Ausführungsform kann ein anderer Satz von Schlüsseln für Übertragungen mit Benutzermodus-Clients, wie einem oder mehreren Benutzermodustreibern 122, verwendet werden. In mindestens einer Ausführungsform kann ein anderer Satz von Schlüsseln für Übertragungen mit anderen PPUs in Multi-GPU-Konfigurationen verwendet werden.
  • Beim Kopieren von Daten (z. B. in dem/den sicheren Bereich(en) 316 gespeicherte Daten), kann die VM 116 (z. B. der/die Treiber 122) das System 300 veranlassen, die Daten aus dem/den sicheren Bereichen(en) 316 zu erhalten, die Daten mit dem gemeinsamen Geheimnis 168 zu verschlüsseln und die verschlüsselten Daten in dem/den Puffer(n) 310 zu speichern. In verschiedenen Ausführungsformen beinhaltet der Puffer 310 den unsicheren Bereich 318. Beispielsweise kann der Puffer 310 mindestens einen Speicherbereich beinhalten, auf den der sichere Prozessor 146 durch den Systembus 320 und/oder eine Komponente davon zugreifen kann.
  • In mindestens einer Ausführungsform werden Daten in dem/den sicheren Bereichen(en) 316 verschlüsselt und/oder vor Zugriff durch nicht vertrauenswürdige Entitäten geschützt, die mit der/den CPU(s) 102 (z. B. dem Hypervisor 118 und dem Host-Betriebssystem 114) assoziiert sind. Somit können der/die Treiber 122 und/oder andere Komponenten innerhalb der CPU-TEE 170 die Daten verschlüsseln oder anderweitig schützen, bevor die Daten außerhalb der CPU-TEE 170 übertragen werden (z. B. über den Systembus 320 unter Verwendung des Puffers 310). Sobald die CPU-TEE 170 die Daten verschlüsselt und die verschlüsselten Daten im Puffer 310 speichert, kann die Speicherzugriffseinheit 130 die verschlüsselten Daten erhalten (z. B. die verschlüsselten Daten über den Systembus 320 kopieren) und die Daten unter Verwendung des gemeinsamen Geheimnisses 168 entschlüsseln, und die Klartextdaten in dem/den geschützten Bereich(en) 336 speichern. Da die über den Systembus 320 übertragenen Daten verschlüsselt sind, können sie vor Angriffen, wie Interposer-Angriffen, geschützt werden.
  • Beim Übertragen von Daten von dem/den geschützten Bereich(en) 336 der GPU(s) 104 an die CPU-TEE 170, verschlüsselt die Speicherzugriffseinheit 130 in ähnlicher Weise in verschiedenen Ausführungsformen die Daten, um verschlüsselte Daten zu generieren, und kopiert die verschlüsselten Daten (überträgt z. B. die Daten über den Systembus 320) unter Verwendung des Puffers 310, zu dem unsicheren Bereich 318 des Speichers 342. Als Reaktion darauf kann die CPU-TEE 170 (z. B. der/die Treiber 122) die verschlüsselten Daten aus dem Puffer 310 erhalten und die verschlüsselten Daten unter Verwendung des gemeinsam genutzten Schlüssels 168 derart entschlüsseln, dass die Daten im Klartext vorliegen und für eine oder mehrere Komponenten innerhalb der CPU-TEE 170 zugänglich sind.
  • In einer oder mehreren Ausführungsformen verhindern die Speicherzugriffseinheit 130 und/oder andere Komponenten der GPU(s) 104 (wie die Speicherverwaltungseinheit) den Zugriff durch die CPU(s) 102, andere GPUs oder Vorrichtungen, die mit der/den GPU(s) 104 und/oder einer oder mehrere Komponenten davon verbunden sind, auf den/die geschützten Bereich(en) 336 (die z. B. dem/den sicheren Bereichen(en) 420 der 4 entsprechen). Im Gegensatz dazu können in mindestens einer Ausführungsform die CPU(s) 102, andere GPUs oder Vorrichtungen, die mit der/den GPU(s) 104 verbunden sind, und/oder eine oder mehrere Komponenten davon in der Lage sein, auf einen oder mehrere ungeschützte Bereiche des Speichers zuzugreifen 334 (z. B. entsprechend der/den unsicheren Bereich(en) 414 der 4). Im Gegensatz dazu kopieren in mindestens einer Ausführungsform die CPU(s) 102 und/oder die CPU-TEE 170 (z. B. der/die Treiber 122) verschlüsselte Daten (z. B. ausführbaren Code, Kernel, Datenstrukturen usw.) in ungeschützte oder nicht gesicherte Bereiche des Speichers 334, wofür Beispiele in Bezug auf 4 bereitgestellt werden.
  • Unter Bezugnahme auf 4, zeigt 4 ein Beispiel von Kopieroperationen innerhalb einer TEE, die eine PPU aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. In mindestens einer Ausführungsform werden Daten aus einem GPU-Speicher 404 (der z. B. dem Speicher 334 entspricht) zu einem CPU-Speicher 402 (der z. B. dem Speicher 344 entspricht) in einer CPU-TEE, wie der CPU-TEE 170, kopiert. In einer oder mehreren Ausführungsformen wird der GPU-Speicher 404 von der/den GPU(s) 104 verwendet, um Daten zu speichern, die von der/den GPU(s) 104 während der Ausführung von Quellcode oder anderen ausführbaren Anweisungen verwendet werden. Beispielsweise kann der GPU-Speicher 404 in die GPU(s) 104 integriert sein, die in einem sicheren Ausführungsmodus (z. B. Enklavenmodus) arbeiten. In verschiedenen Ausführungsformen beinhaltet der GPU-Speicher 404 einen oder mehrere unsichere Bereich(e) 414 und einen sicheren Bereich 420. Der unsichere Bereich 414 kann für die CPU 102 oder einen anderen Hardwarebeschleuniger zugänglich sein. Der sichere Bereich 420 kann für die CPU 102 oder einen anderen Beschleuniger unzugänglich oder anderweitig geschützt sein (kann z. B. dem CPR-Speicher entsprechen).
  • In einer oder mehreren Ausführungsformen werden ein oder mehrere Verfahren verwendet, um den sicheren Bereich 420 des GPU-Speichers 404 zu sichern. In mindestens einer Ausführungsform kann der Zugriff auf den sicheren Bereich 420 des GPU-Speichers 404 derart beschränkt sein, dass, sobald die Rechen-Engine 128 auf den sicheren Bereich 420 des GPU-Speichers 404 zugreift, die Rechen-Engine 128 daran gehindert wird, Daten außerhalb des sicheren Bereichs 420 des GPU-Speichers 404 zu schreiben. In mindestens einer Ausführungsform kann der Lese- und Schreibzugriff auf den sicheren Bereich 420 des GPU-Speichers 404 von einer oder mehreren Vorrichtungen (z. B. CPUs, GPUs und/oder PPUs) blockiert oder anderweitig verhindert werden (z. B., wie hierin beschrieben, unter Verwendung von einer oder mehreren Hardware-Firewalls). Beispielsweise kann, wie hierin beschrieben, eine MMU der GPU 104 den Zugriff auf den sicheren Bereich 420 des GPU-Speichers 404 mindestens basierend auf dem Verhindern des Zugriffs über den Systembus 320 verhindern. In derartigen Beispielen kann die MMU den Zugriff auf den sicheren Bereich 420 des GPU-Speichers 404 basierend mindestens auf einer Hardwarekennung oder einer anderen Kennung der Entität, die versucht, auf den sicheren Bereich 420 des GPU-Speichers 404 zuzugreifen, verhindern. In einer oder mehreren Ausführungsformen gibt die MMU einen Mangel oder anderen Fehler zurück, falls eine unbefugte Entität versucht, auf den sicheren Bereich 420 des GPU-Speichers 404 zuzugreifen. In mindestens einer Ausführungsform beinhalten unbefugte Entitäten jede Entität, die nicht der sichere Prozessor 146, die Speicherzugriffseinheit 130 und/oder eine bestimmte Rechen-Engine 128 ist, die Zugriff auf den sicheren Bereich 420 des GPU-Speichers 404 hat. Wenn die bestimmte Rechen-Engine 128 versucht, auf einen oder mehrere Speicherbereiche, die sich nicht innerhalb des sicheren Bereichs 420 des GPU-Speichers 404 befinden, zuzugreifen, kann die Speicherverwaltungseinheit einen oder mehrere Fehler ausgeben und den Zugriff blockieren.
  • In einer oder mehreren Ausführungsformen werden Speicherkopien, wie eine Speicherkopie 438, zwischen dem sicheren Bereich 420 des GPU-Speichers 404 und dem CPU-Speicher 402 und/oder anderem Systemspeicher verschlüsselt und über einen Bus (z. B. den Systembus 320) durch einen Bounce-Puffer (z. B. die verschlüsselten Ergebnisse 410) übertragen. In mindestens einer Ausführungsform kann die Speicherkopie 438 Daten aus einem Ausgabepuffer 426 innerhalb des sicheren Bereichs 420 des GPU-Speichers 404 beinhalten, nachdem sie von der Speicherzugriffseinheit 130 verschlüsselt wurden. Wie hierin beschrieben, erhält in verschiedenen Ausführungsformen eine Entität (z. B. Treiber, Anwendung(en), Gastbetriebssystem(e) usw.) innerhalb der CPU-TEE 170 (der Einfachheit halber in 4 nicht gezeigt) die verschlüsselten Ergebnisse 410 aus einem oder mehreren unsicheren Bereichen 406 des CPU-Speichers 402, entschlüsselt die verschlüsselten Ergebnisse 410 und kopiert die Ergebnisse 412 (z. B. die Daten in Klartextform) in einen oder mehrere sichere Bereichen 408 des CPU-Speichers 402. In mindestens einer Ausführungsform enthält der sichere Bereich 408 des CPU-Speichers 402 einen oder mehrere Speicherbereiche, in denen Daten verschlüsselt werden, bevor sie in dem/den Speicherbereich(en) gespeichert werden.
  • In mindestens einer Ausführungsform beinhaltet der unsichere Bereich 414 des GPU-Speichers 404 eine oder mehrere verschlüsselte Treiberdatenstruktur(en) 416 und einen oder mehrere verschlüsselte Kernel 418. Beispielsweise kann die verschlüsselte Treiberdatenstruktur 416 Daten beinhalten, die von dem/den Treiber(n) 122 verwendet werden, um Anwendungen, die innerhalb der CPU-TEE 170 ausgeführt werden (z. B. die Anwendung 108) zu ermöglichen, die GPU(s) 104 zu verwenden. Die verschlüsselten Kernel 418 können CUDA- oder Heterogeneous-Computing Interface for Portability-Kernel (HIP-Kernel) beinhalten, die während Verarbeitungsoperationen verwendet werden, die von der/den GPU(s) 104 durchgeführt werden.
  • Wie hierin beschrieben, generiert die Speicherzugriffseinheit 130 in verschiedenen Ausführungsformen einen oder mehrere kryptografische Schlüssel, die verwendet werden, um die Daten in dem Ausgabepuffer 426 zu verschlüsseln und die verschlüsselten Ergebnisse 410 zu generieren. In mindestens einer Ausführungsform generiert/generieren die Rechen-Engine(s) 128 die Daten, die in dem Ausgangspuffer 426 gespeichert werden. Beispielsweise kann die Rechen-Engine 128 Quellcode oder andere Anweisungen ausführen und kann mindestens einige der Ergebnisse in dem Ausgabepuffer 426 platzieren.
  • In mindestens einer Ausführungsform haben, sobald kryptografisches Material, das von der GPU 104 verwendet wird, um Daten zu verschlüsseln, um die verschlüsselten Ergebnisse 410 zu generieren (z. B. den/die hierin beschriebenen kryptografischen Schlüssel), generiert ist, nur der sichere Prozessor 146 und/oder die Speicherzugriffseinheit 130 Zugriff. Beispielsweise kann eine Speicherverwaltungseinheit der GPU 104 den Zugriff auf einen oder mehrere Schlüsselbereiche, in denen der/die kryptografischen Schlüssel gespeichert sind, für jede Entität verhindern, die nicht der sichere Prozessor 146 und/oder die Speicherzugriffseinheit 130 ist. In mindestens einer Ausführungsform beinhaltet der sichere Prozessor 146 Speicher, auf den nur der sichere Prozessor 146 zugreifen kann. Darüber hinaus kann der sichere Prozessor 146 in verschiedenen Ausführungsformen das Versetzen der GPU 104 in den sicheren Ausführungsmodus und/oder den vertraulichen Rechenmodus verwalten, wobei das Generieren des gemeinsam genutzten kryptografischen Schlüssels Teil des Prozesses zum Integrieren der GPU 104 in die zusammengesetzte TEE 150 sein kann.
  • Unter Bezugnahme auf 5, zeigt 5 ein Beispiel von Kopieroperationen innerhalb einer TEE, die eine PPU aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. In mindestens einer Ausführungsform werden Speicherkopien, wie eine Speicherkopie 538, zwischen dem sicheren Bereich 408 des CPU-Speichers 402 und dem GPU-Speicher 404 verschlüsselt und über einen Bus (z. B. den Systembus 320 von 3) durch einen Bounce-Puffer (z. B. einen Bounce-Puffer 310 der 3) übertragen.
  • In dem Beispiel der 5 beinhaltet die Speicherkopie 538 verschlüsselte Benutzerdaten 542, die den Benutzerdaten 422 aus dem sicheren Bereich 408 des CPU-Speichers 402 und einer Entität innerhalb der CPU-TEE 170 (z. B. der VM 116 oder einer Komponente davon) entsprechen. Die Benutzerdaten 422 können für einen oder mehrere maschinelle Lernalgorithmen oder andere künstliche Intelligenz (KI) bestimmt sein. Die Benutzerdaten 422 können jedoch allgemeiner beliebigen Daten entsprechen, die zwischen dem CPU-Speicher 402 und dem GPU-Speicher 404 übertragen werden können.
  • Wie hierin beschrieben, verschlüsselt in verschiedenen Ausführungsformen eine Entität (z. B. ein oder mehrere Treiber, eine oder mehrere Anwendungen, ein oder mehrere Gastbetriebssysteme usw.) innerhalb der CPU-TEE 170 (der Einfachheit halber in 5 nicht gezeigt) die aus dem sicheren Bereich 408 des CPU-Speichers 402 erhaltenen Benutzerdaten 422 und speichert die verschlüsselten Benutzerdaten 542 in dem unsicheren Bereich 406 des CPU-Speichers 402 (z. B. einem nicht verschlüsselten Speicherbereich, auf den die GPU 104 zugreifen kann). Ferner umfasst in verschiedenen Ausführungsformen der unsichere Bereich 406 des CPU-Speichers 402 den Bounce-Puffer 310 zum Übertragen von Daten über den Systembus 320 zwischen der CPU-TEE 170 und der GPU 104.
  • In 5 beinhaltet der unsichere Bereich 406 des CPU-Speichers 402 eine Treiberdatenstruktur 516, die der verschlüsselten Treiberdatenstruktur 416 entspricht, und den Kernel 518, der dem verschlüsselten Kernel 418 entspricht. Die Datenstruktur 516 (z. B. eine Treiberdatenstruktur) kann Daten beinhalten, die von der Rechen-Engine 128 verwendet werden, um Inferenzieren unter Verwendung der Benutzerdaten 422 durchzuführen. Allgemeiner kann die Datenstruktur 516 Daten beinhalten, die von der Rechen-Engine 128 verwendet werden, um eine oder mehrere parallele Verarbeitungsoperationen unter Verwendung von Daten aus dem CPU-Speicher 402, wie den Benutzerdaten 422, durchzuführen. Die Kernel 518 können während der parallelen Verarbeitungsoperationen verwendet werden, die von der Rechen-Engine 128 der GPU 104 durchgeführt werden. In mindestens einer Ausführungsform werden die Datenstruktur 516 und der Kernel 518 verschlüsselt und dann über den Systembus 320 an den GPU-Speicher 404 als die verschlüsselte Datenstruktur 416 und der verschlüsselte Kernel 418 übertragen.
  • In verschiedenen Ausführungsformen erhält der sichere Prozessor 146 und/oder die Speicherzugriffseinheit 130 die verschlüsselten Benutzerdaten 542 aus dem unsicheren Bereich 406 des CPU-Speichers 402 und führt mindestens teilweise die Speicherkopie 538 basierend mindestens auf dem Kopieren der verschlüsselten Benutzerdaten 542 über den Systembus 320, Entschlüsseln der verschlüsselten Benutzerdaten 542 und Speichern des Ergebnisses (z. B. der Benutzerdaten 422 im Klartext) in dem sicheren Bereich 420 des GPU-Speichers 404 durch.
  • In mindestens einer Ausführungsform können eine oder mehrere Anforderungen gestellt werden, um es der GPU 104 zu ermöglichen, innerhalb der zusammengesetzten TEE 150 und/oder der GPU-TEE 172 zu arbeiten. In mindestens einer Ausführungsform werden die eine oder die mehreren Anforderungen unter Verwendung des Plattformverwalters 152 gestellt. In mindestens einer Ausführungsform beinhaltet der Plattformverwalter 152 einen Baseboard-Verwaltungscontroller (BMC), der die eine oder die mehreren Anforderungen ausgibt. In mindestens einer Ausführungsform sollen die eine oder die mehreren Anforderungen dauerhaft einen vertraulichen Rechenmodus der GPU 104 aktivieren.
  • Damit die GPU 104 in der zusammengesetzten TEE 150 beinhaltet ist, kann die GPU 104 in verschiedenen Ausführungsformen in einem sicheren Ausführungsmodus (z. B. einem Enklavenmodus und/oder einem vertraulichen Rechenmodus) arbeiten, wie hierin beschrieben. Beispielsweise kann der sichere Ausführungsmodus der GPU 104 verschiedene Datenschutzfunktionen der GPU 104 basierend mindestens auf dem Einschränken und/oder Blockieren des Zugriffs auf einen oder mehrere Speicherbereiche und/oder Bereiche des GPU-Speichers (z. B. den Speicher 334) aktivieren. In mindestens einer Ausführungsform wird (werden) die Rechen-Engine(s) 128, die auf einen geschützten Speicherumfang oder -bereich des GPU-Speichers zugreift/zugreifen, daran gehindert, in irgendeinen anderen Speicherumfang oder -bereich zu schreiben. In mindestens einer Ausführungsform verhindert eine Speicherverwaltungseinheit der GPU 104 den Zugriff auf die geschützten Speicherumfänge oder -bereiche der GPU 104 von einer oder mehreren Entitäten (z. B. CPU oder anderen Beschleunigern) über den Systembus 320.
  • Um einen vertraulichen Rechenmodus zu aktivieren, schreiben in mindestens einer Ausführungsform eine oder mehrere Komponenten des Systems 100 Daten in den nichtflüchtigen Speicher der GPU 104, die angeben, dass die GPU 104 beim Zurücksetzen in den vertraulichen Rechenmodus eintreten soll.
  • In mindestens einer Ausführungsform veranlassen eine oder mehrere Komponenten des Systems 100, dass die GPU 104 zurückgesetzt wird. In mindestens einer Ausführungsform wird das Zurücksetzen von dem Host-Betriebssystem 114 und/oder dem Hypervisor 118 ausgelöst, beispielsweise über den Kommunikationskanal 162. In mindestens einer Ausführungsform kann das Auslösen ein Funktionsebenenrücksetzen (FLR), wie ein PF-FLR, beinhalten, beinhalten.
  • Das Zurücksetzen der GPU 104 kann Operationen initiieren, um die GPU 104 in den vertraulichen Rechenmodus zu versetzen (oder allgemeiner die GPU-TEE 172 zu instanziieren und/oder zu konfigurieren) und die GPU 104 an die CPU-TEE 170 weiterzuleiten. Beim Zurücksetzen kann der Speicher der GPU 104 bereinigt werden (z. B. von dem sicheren Prozessor 146 und/oder der GPU-Firmware), bevor der Speicher auf dem Systembus 320 sichtbar gemacht wird.
  • In einer oder mehreren Ausführungsformen kann die GPU 104, sobald die GPU 104 zurückgesetzt wurde, den (die) geschützte(n) Bereich(e) 336 implementieren, aktivieren und/oder konfigurieren. In mindestens einer Ausführungsform veranlasst der sichere Prozessor 146 der GPU 104, dass der/die geschützte(n) Bereich(e) 336 implementiert, aktiviert und/oder konfiguriert werden. In einer oder mehreren Ausführungsformen wird/werden der/die geschützte(n) Bereich(e) 336 von einer Speicherverwaltungseinheit derart verwaltet, dass beispielsweise die Rechen-Engine 128 der GPU 104 auf den/die geschützte(n) Bereich(e) 336 zugreifen darf, aber nicht in der Lage ist (zum Beispiel blockiert ist), zu den anderen Speicherbereichen mindestens nach dem Zugreifen auf den/die geschützten Bereich(e) 336 zu schreiben.
  • In mindestens einer Ausführungsform kann das Implementieren, Aktivieren und/oder Konfigurieren des/der geschützten Bereichs/Bereiche 336 das Implementieren, Aktivieren und/oder Konfigurieren eines oder mehrerer rechengeschützter Speicherbereiche beinhalten. Beispielsweise kann die Speicherverwaltungseinheit bestimmte Entitäten daran hindern, Daten aus dem/den geschützten Bereich(en) 336 zu lesen oder Daten in diese zu schreiben. In mindestens einer Ausführungsform können alle Lese- oder Schreibvorgänge in den einen oder die mehreren geschützten Speicherbereiche über den Systembus 320 blockiert werden.
  • In mindestens einer Ausführungsform kann/können der/die geschützte(n) Bereich(e) 336 unter Verwendung von einer oder mehreren Firewalls implementiert werden, wie hierin beschrieben. In mindestens einer Ausführungsform aktiviert der sichere Prozessor 146 und/oder die GPU-Firmware die Schnittstelle(n) 124 mindestens basierend darauf, dass die Firewall(s) aktiviert ist/sind. In mindestens einer Ausführungsform können die eine oder die mehreren Firewalls konfiguriert sein, um (z. B. unter Verwendung der Speicherverwaltungseinheit) unbefugte Zugriffe von außerhalb der GPU 104 zu blockieren, Code oder Daten daran zu hindern, die Grenze der GPU-TEE 172 zu verlassen, und/oder mehrere Mandanten jeweils in ihre eigene GPU-TEE 172 zu isolieren.
  • In mindestens einer Ausführungsform blockiert die GPU 104 (z. B. unter Verwendung der einen oder der mehreren Firewalls) Pfade der Schnittstelle(n) 124 vom Zugriff auf den GPU-Speicher, der dem/den Cache(s) 134 und/oder dem RAM(s) 136 entspricht (z. B. dem Speicher 334 der 3). Das Blockieren des Zugriffs kann den GPU-Speicher vor der CPU 102 und anderen Vorrichtungen mit Zugriff auf die Schnittstelle(n) 124 schützen. Zusätzlich kann die GPU 104 eine oder mehrere Hardware-Firewalls aktivieren, die verhindern, dass Software, die in der GPU-TEE 172 ausgeführt wird, außerhalb der GPU-TEE 172 ausgeführt wird. Beispielsweise können GPU-Engines, wie die Rechen-Engine(s) 128, daran gehindert werden, außerhalb des geschützten Speicherbereichs des GPU-Speichers unverschlüsselt zu schreiben.
  • Unter Bezugnahme auf 6, veranschaulicht 6 ein beispielhaftes Layout 600 zum Blockieren des Zugreifens von Schnittstellen auf GPU-Speicher innerhalb einer TEE, die eine PPU aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. In einer oder mehreren Ausführungsformen können externe Schnittstellen, wie die Schnittstelle(n) 124, die auf einen oder mehrere Frame-Puffer der GPU 104 abzielen, daran gehindert werden, auf Teile des Speichers zuzugreifen, der zu der zusammengesetzten TEE 150 und einer TCB 610, die der zusammengesetzten TEE 150 entspricht, gehört. Beispiele der externen Schnittstellen beinhalten PPU-zu-PPU-Schnittstellen (z. B. NVLink), Chip-zu-Chip-Schnittstellen (C2C-Schnittstellen), Speicherabbildungsschnittstellen (z. B. PCIE-Basisadressregister (BAR)1 und/oder BAR2) und/oder PPU-Instanz-RAM-Schnittstellen (z. B. PRAMIN). Beispiele für die Teile des Speichers beinhalten geschützte(n) Bereich(e) 636A und 636B, die auch als geschützte Bereiche 636 bezeichnet werden können. In mindestens einer Ausführungsform entsprechen die geschützten Bereiche 636 dem (den) geschützten Bereich(en) 336 der 3.
  • In mindestens einer Ausführungsform verweist die TCB 610 auf Hardware, Software und/oder Firmware, die die GPU-TEE 172 anlegt, wartet und/oder sicher zerstört. Beispielhaft und nicht einschränkend kann die TCB 610 einen oder mehrere Mikrocontroller der GPU 104, die Speicherzugriffseinheit 130 (z. B. Kopier-Engines und/oder Verschlüsselungshardware), den sicheren Prozessor 146, einen oder mehrere Teile des Frame-Puffers und/oder GPU-Speichers, (eine) Speicherverwaltungseinheit(en) der GPU(s) 104, ein Basic Input/Output System (BIOS), wie ein Video-BIOS (VBIOS) der GPU(s) 104, und/oder den/die Systemprozessor(en) 144 beinhalten.
  • In mindestens einer Ausführungsform können Entitäten in der TCB 610 vollen Zugriff auf Daten der GPU-TEE 172 und in mindestens einer Ausführungsform der gesamten GPU(s) 104 und/oder Zugriff auf Daten einer oder mehrerer Vorrichtungsinstanzen haben. In 6 können der/die geschützte(n) Bereich(e) 636A den Daten der GPU-TEE 172 entsprechen. In einer oder mehreren Ausführungsformen können ein oder mehrere geschützte Bereiche 636A, die zu der GPU-TEE 172 gehören, als rechengeschützte Bereiche (CPR) bezeichnet werden. In mindestens einer Ausführungsform können Entitäten in einer GPU-TEE 172 darauf beschränkt sein, auf die Daten innerhalb der Grenzen der GPU-TEE 172 zuzugreifen, und sind möglicherweise nicht in der Lage, auf Daten der TCB 610 oder Ressourcen zuzugreifen, die mit nicht vertrauenswürdigen Entitäten assoziiert sind (z. B. Schnittstelle(n) 124, unsichere und/oder ungeschützte Bereiche des Speichers 334 usw.). In 6 können der/die geschützte(n) Bereich(e) 636B den Daten der TCB 610 entsprechen. In einer oder mehreren Ausführungsformen können ein oder mehrere geschützte Bereiche 636B, die zu der TCB 610 gehören, als ein zugriffskontrollierter Bereich (ACR) bezeichnet werden. In mindestens einer Ausführungsform beinhaltet/beinhalten der/die geschützte(n) Bereich(e) 636B die hierin beschriebenen CPR(s).
  • In mindestens einer Ausführungsform können ein oder mehrere Teile des Speichers 334, die nicht geschützt sind, als ungeschützte Bereiche (UPR) oder Nicht-CPR bezeichnet werden, wofür ein Beispiel einen ungeschützte(n) Bereich(e) 640 beinhaltet. In mindestens einer Ausführungsform hat keine der externen Schnittstellen, die der/den Schnittstelle(n) 124 entsprechen, Zugriff auf CPR und ACR, dürfen aber auf Nicht-CPR zugreifen, wie den/die ungeschützte(n) Bereich(e) 640. Beispielsweise kann auf den/die ungeschützte(n) Bereich(e) 640 zugegriffen werden, um videospeicherbasierte Bounce-Puffer, wie für eine Multi-GPU-Konfiguration, zu verwenden.
  • In einer oder mehreren Ausführungsformen hat mindestens einige Software, die innerhalb der GPU-TEE 172 läuft, die authentifizierte Firmware und GPU-Verarbeitungskernel beinhalten kann (z. B. von der CPU-TEE 170 bezogen), nur Zugriff auf CPR-Speicher und geschützte Register. Damit Fehler in der Software nicht genutzt werden können, um Daten außerhalb dieser Grenze durchsickern zu lassen, können die eine oder die mehreren Hardware-Firewalls den Zugriff auf Nicht-CPR- und ungeschützte Register blockieren, um ein Durchsickern aufgrund von Fehlern zu verhindern. Beispielsweise können die GPU-Engines daran gehindert werden, auf Nicht-CPR-Speicher zuzugreifen. Zum Übertragen von Daten in und aus der GPU-TEE 172, kann die Speicherzugriffseinheit 130 eine Verschlüsselungs-/Entschlüsselungsunterstützung aufweisen, um verschlüsselte Daten zwischen der GPU-TEE 172 und der CPU-TEE 170 zu übertragen (z. B. wie unter Bezugnahme auf die 3-5 beschrieben).
  • In mindestens einer Ausführungsform sind Kopier-Engines, die der Speicherzugriffseinheit 130 entsprechen, Teil der GPU-TEE 172 und dürfen Daten zwischen CPR- und Nicht-CPR-Bereichen des Speichers 334 nach Verschlüsselung und Entschlüsselung übertragen. Die Kopier-Engines können Hardwarelogik beinhalten, die sicherstellt, dass Daten, die von CPR zu Nicht-CPR kopiert werden, immer verschlüsselt werden, und Daten, die von Nicht-CPR zu CPR kopiert werden, immer entschlüsselt und unter Verwendung des Authentifizierungs-Tags verglichen werden. Die Kopier-Engines können auch CPR-zu-CPR- und Nicht-CPR-zu-Nicht-CPR-Kopien im Klartext unterstützen.
  • Während der Entschlüsselung kann eine Kopier-Engine das Authentifizierungs-Tag für den gesamten Puffer berechnen und ganz am Ende des letzten Kopieblocks vergleichen. In einer oder mehreren Ausführungsformen besteht eventuell nicht genügend Platz, um die Daten zwischenzuspeichern, bis das vollständige Authentifizierungs-Tag verfügbar ist. Somit kann die Kopier-Engine die Inhalte entschlüsseln und in den CPR-Speicher schreiben, bevor das Authentifizierungs-Tag vollständig validiert ist. Falls sich am Ende herausstellt, dass das Authentifizierungs-Tag ungültig ist, werden alle Inhalte, die sich bereits im CPR-Speicher befinden, von der Kopier-Engine nicht bereinigt. In mindestens einer Ausführungsform stellen der/die Kernelmodustreiber 122 und der/die Benutzermodustreiber 122 sicher, dass die ungültigen Daten in dem CPR-Speicher nicht verwendet und bereinigt werden.
  • Während der Verschlüsselung kann eine Kopier-Engine die Chiffrierdaten verschlüsseln und in einen Nicht-CPR-Speicher schreiben, während das Authentifizierungs-Tag im Back-End berechnet wird. Sobald das Authentifizierungs-Tag ganz am Ende des Kopierens berechnet wird, kann die Rechen-Engine das Authentifizierungs-Tag in die von dem Benutzermodustreiber 122 bereitgestellte Adresse schreiben.
  • Unter Bezugnahme auf 7, veranschaulicht 7 ein Beispiel dafür, wie eine Kopier-Engine basierend auf einer Quelle oder einem Ziel Daten verschlüsseln oder entschlüsseln kann, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. EncryptH2D() 702 kann Daten aus dem Nicht-CPR-Speicher in den CPR-Speicher entschlüsseln und einen Vergleich unter Verwendung des Authentifizierungs-Tags durchführen. EncryptD2H() 704 kann Daten aus dem CPR-Speicher in den Nicht-CPR-Speicher verschlüsseln und ein berechnetes Authentifizierungs-Tag ausschreiben. Die nicht authentifizierte Kopie 710 kann eine Klartextkopie von Daten beinhalten.
  • In mindestens einer Ausführungsform wird/werden die Kopier-Engine(s) verwendet, um Replay-Angriffe zu verhindern, wie hierin beschrieben. In mindestens einer Ausführungsform behält die Kopier-Engine den IV zur Entschlüsselung bei und inkrementiert den IV nach der Entschlüsselung. Somit kann eine Verschlüsselung, die unter Verwendung der Kopier-Engine durchgeführt wird, derart konfiguriert werden, dass sie beim Entschlüsseln von Chiffrierdaten, die bereits unter Verwendung der Kopier-Engine entschlüsselt wurden, fehlschlägt. Die Arbeit an der Kopier-Engine kann über Hostkanäle geplant werden, und jeder Kanal kann seinen eigenen zugeordneten Speicher im CPR-Speicher aufweisen. Der Kernelmodustreiber 122 kann, während er einen Hostkanal anlegt, der zum sicheren Kopieren verwendet wird, den IV initialisieren, der zur Beschreibung in den zugeordneten Speicher des Kanals verwendet wird. Die Kopier-Engine kann den IV aus dem zugeordneten Speicher lesen, den IV zur Entschlüsselung verwenden, den IV inkrementieren und den IV zur nachfolgenden Entschlüsselung (z. B. an denselben Ort zurück) schreiben. Da die Kopier-Engine den IV unabhängig in dem zugeordneten Speicher verfolgen kann, können Versuche, Chiffrierdaten wiederzugeben, aufgrund eines Scheiterns bei einem Vergleich unter Verwendung des Authentifizierungs-Tags fehlschlagen.
  • In mindestens einer Ausführungsform kann die Kopier-Engine-Vorbelegung mit sicheren Kopien unterstützt werden. Während der Verschlüsselung und Entschlüsselung, kann eine Kopier-Engine (z. B. Kopier-Engine-Hardware) das Authentifizierungs-Tag kontinuierlich berechnen und am Ende des Kopierens entweder das Authentifizierungs-Tag ausschreiben oder das Authentifizierungs-Tag mit der Eingabe vergleichen, um eine Nichtübereinstimmung zu erfassen. Während eine Kopie vorweggenommen wird, kann ein teilweise berechnetes Authentifizierungs-Tag gespeichert und wiederhergestellt werden, wenn die Kopie später wieder aufgenommen wird. Statt getrennte Kanäle für Übertragungen von CPR-Speicher zu Nicht-CPR-Speicher und Nicht-CPR-Speicher zu CPR-Speicher anzulegen, können eine oder mehrere Ausführungsformen Kanäle verwenden, die beide Richtungen unterstützen können (bi-direktionale Kanäle). Dies kann eine effiziente Verwendung von Speicher-Slots erlauben, die zum Speichern von IVs verwendet werden, indem ein Slot für beide Richtungen zugewiesen wird, statt zwei zuzuweisen, falls stattdessen zwei unidirektionale Kanäle verwendet werden.
  • In einer oder mehreren Ausführungsformen werden Speicher-Slots, die zum Speichern von IVs verwendet werden, von dem Kernelmodustreiber 122 zugeordnet, wenn ein Hostkanal für sicheres Kopieren zugeordnet wird und ein einem Kanal zugeordneter Slot-Index in den CPR-Speicher programmiert wird (gemeinsam mit dem IV, der für die Entschlüsselung verwendeten wird). Während der Entschlüsselung oder Verschlüsselung kann die Kopier-Engine den Slot-Index aus dem CPR-Speicher lesen. Der Kernelmodustreiber 122 kann sicherstellen, dass derselbe Slot nicht mehreren Kanälen zugeordnet wird.
  • In Konfigurationen mit mehreren GPUs, wie einer Konfiguration mit mehreren GPUs, die der zusammengesetzten TEE 150B der 2 (oder Konfigurationen mit mehreren PPU-Instanzen) entspricht, kann eine GPU (z. B. die GPU 104B) möglicherweise nicht in der Lage sein, auf den CPR-Speicher einer anderen GPU (z. B. der GPU 104C) zuzugreifen, da die Schnittstelle(n) 124 zwischen den Vorrichtungen nicht vertrauenswürdig sein können. Stattdessen können Daten verschlüsselt und durch einen Nicht-CPR-Speicher geleitet werden, beispielsweise unter Verwendung von hierin beschriebenen Ansätzen. In mindestens einer Ausführungsform können Kopier-Engines für die Multi-GPU-Kommunikation verwendet werden, und der sichere Prozessor 146 und der Systemprozessor 144 sind nicht beteiligt. In einer oder mehreren Ausführungsformen verschlüsselt eine Kopier-Engine beispielsweise in der GPU 104B Inhalte aus dem CPR-Speicher und kopiert die verschlüsselten Daten in den Nicht-CPR-Speicher beispielsweise der GPU 104C, über eine oder mehrere der Schnittstellen 124. Eine Kopier-Engine in der GPU 104C kann die Daten aus dem Nicht-CPR-Speicher in den CPR-Speicher der GPU 104C entschlüsseln. In mindestens einer Ausführungsform kann die Kopie von einem Benutzermodustreiber 122 koordiniert werden, der Peer-2-Peer(P2P)-Kommunikationen verwaltet. In einer oder mehreren Ausführungsformen verschlüsselt eine Kopier-Engine beispielsweise in der GPU 104B Inhalte aus dem CPR-Speicher und kopiert die verschlüsselten Daten in den Nicht-CPR-Speicher derselben GPU. Eine Kopier-Engine in der GPU 104C kann die verschlüsselten Daten aus dem Nicht-CPR-Speicher der GPU 104B über die Schnittstellen 124 abrufen, die Daten entschlüsseln und sie in den CPR-Speicher der GPU 104C schreiben. In mindestens einer Ausführungsform kann die Kopie von einem Benutzermodustreiber 122 koordiniert werden, der Peer-2-Peer(P2P)-Kommunikationen verwaltet.
  • In Einzel-GPU-Konfigurationen, wie einer Einzel-GPU-Konfiguration, die der zusammengesetzten TEE 150A der 2 entspricht, kann ein Benutzermodustreiber 122 einen sicheren Kommunikationskanal zuordnen, um sicher mit der Kopier-Engine der GPU (z. B. der GPU 104A) oder dem sicheren Prozessor 146 der GPU 104A zu kommunizieren. Jeder Kanal kann einen Satz kryptografischer Informationen (z. B. Schlüssel usw.) empfangen, die zur Verschlüsselung und Entschlüsselung in beiden Richtungen (z. B. von einem Kernelmodustreiber 122) verwendet werden.
  • In mindestens einer Ausführungsform sind das Implementieren, Aktivieren und/oder Konfigurieren des/der geschützten Bereich(e) 336 Teil einer sicheren und/oder gemessenen Boot-Sequenz der GPU 104, die das Konfigurieren und/oder Aktivieren einer der Eigenschaften der GPU-TEE 172 unter Verwendung von GPU-Hardware und -Firmware beinhalten kann. Bei einem sicheren Booten kann in jeder Phase des Bootprozesses die gesamte geladene Firmware vor der Ausführung derart authentifiziert werden, dass nur signierter und nicht widerrufener Code zum Booten jedes Prozessors verwendet wird. Bei einem gemessenen Bootvorgang können eine oder mehrere kryptografisch signierte Aufzeichnung(en) der Firmware-Versionen, die auf der GPU 104 ausgeführt werden, in einem oder mehreren Bescheinigungsberichten generiert werden, die von einem Benutzer und/oder der VM 116 angefordert und validiert werden können (z. B. unter Verwendung des Bescheinigungsverwalters 140).
  • In mindestens einer Ausführungsform kann ein sicheres und gemessenes Booten der GPU 104 mindestens zum Teil unter Verwendung des Systemprozessors bzw. der Systemprozessoren 144, wie eines GPU-Systemprozessors (GSP), implementiert werden. Beispiele eines GSP beinhalten einen Computer mit reduziertem Anweisungssatz (RISC) GSP, wie einen RISC-V GSP. In mindestens einer Ausführungsform wird der Systemprozessor 144 verwendet, um eine oder mehrere GPU-Initialisierungs- und/oder Verwaltungsaufgaben der GPU 104 auszulagern. In mindestens einer Ausführungsform wird das sichere und gemessene Booten unter Verwendung einer Public-Key-Confirmation-Firmware-Authentifizierung (PKC-Firmware-Authentifizierung) implementiert. In mindestens einer Ausführungsform wird das sichere und gemessene Booten unter Verwendung verschlüsselter Firmware implementiert. In mindestens einer Ausführungsform wird das sichere und gemessene Booten unter Verwendung von Firmware-Widerruf implementiert. In mindestens einer Ausführungsform wird das sichere und gemessene Booten unter Verwendung von Hardware- und Software-Fehlerinjektions-Gegenmaßnahmen implementiert. In mindestens einer Ausführungsform wird das sichere und gemessene Booten unter Verwendung eines internen Root-Of-Trust (ROT) der GPU 104 implementiert.
  • In mindestens einer Ausführungsform veranlasst das Booten der GPU 104 in dem vertraulichen Rechenmodus, dass die GPU 104 den gesamten Speicher 334, der der GPU 104 entspricht, und/oder einen oder mehrere Teile, die einer GPU-Instanz entsprechen, schützt und den geschützten Speicher als CPR markiert. In einer oder mehreren Ausführungsformen können die VM 116 und/oder der Treiber 122 (z. B. ein Kernelmodustreiber 122) beim Booten bestimmen, ob Nicht-CPR-Speicher benötigt und/oder gewünscht wird. Falls Nicht-CPR-Speicher benötigt und/oder gewünscht wird, kann der Treiber 122 einen zusammenhängenden Bereich des Speichers 334, der als ungeschützt markiert ist, herausschneiden. Die Größe eines Nicht-CPR-Carve-Outs kann als ein Prozentsatz des gesamten zur Verwendung verfügbaren Speichers festgelegt werden, und der gesamte zur Verwendung verfügbare Speicher kann vorbestimmt werden oder konfigurierbar sein. Der Kernelmodustreiber 122 kann auch eine API für den Benutzer der VM 116 exponieren, um die Größe des Nicht-CPR-Speichers zu ändern. Falls eine Client-Zuordnung vorgenommen wurde, kann die Client-Zuordnung eine Fragmentierung anlegen, die verhindern könnte, dass die Größenänderung erfolgreich abgeschlossen wird. Somit kann die Größenänderung zugelassen werden, nachdem das Booten abgeschlossen ist, aber darauf beschränkt sein, bevor irgendwelche Client-Zuweisungen auf der GPU 104 vorgenommen werden.
  • In mindestens einer Ausführungsform kann das System 100 die GPU 104 an die virtuelle Maschine 116 weitergeben. Beispielsweise kann der Hypervisor 118 der VM 116 Zugriff auf die GPU 104 unter Verwendung einer Vielfalt von Virtualisierungstechniken bereitstellen. In verschiedenen Ausführungsformen führt die VM 116 und/oder eine Komponente davon (z. B. Anwendungssoftware, Gastbetriebssystem, Treiber usw.) eine oder mehrere Überprüfungen durch, um zu bestimmen, dass die GPU 104 in dem vertraulichen Rechenmodus arbeitet, und authentifiziert die GPU 104. Beispielsweise kann der Bescheinigungsverwalter 140 der VM 116 den Bescheinigungsdienst 112 verwenden, um die GPU 104 zu authentifizieren (z. B. unter Verwendung von einem oder mehreren Bescheinigungsberichten, die unter Verwendung der GPU 104 generiert werden).
  • In mindestens einer Ausführungsform können ein oder mehrere sichere Kommunikationskanäle 160 zwischen der VM 116 und der GPU 104 eingerichtet werden, was das Durchführen von Operationen zur Generierung gemeinsam genutzter Schlüssel beinhalten kann. In verschiedenen Ausführungsformen generiert der sichere Prozessor 146 der GPU 104 einen oder mehrere gemeinsam genutzte kryptografische Schlüssel 168 mit der CPU-TEE 170 (z. B. mit dem Treiber 122, wie einem GPU-PF-Treiber). Das Einrichten eines sicheren Kommunikationskanals kann das Durchführen einer Generierung eines gemeinsam genutzten Diffie-Hellmann-Schlüssels derart beinhalten, dass die VM 116 und die GPU 104 jeweils eine Kopie des/der gemeinsamen kryptografischen Schlüssel(s) 168 (z. B. eines symmetrischen Sitzungsschlüssels) aufweisen. Wie hierin beschrieben, kann/können der/die gemeinsam genutzte(n) kryptografische(n) Schlüssel 168 verwendet werden, um Daten zur Übertragung zwischen der CPU 102 und der GPU 104 zu verschlüsseln. Der eine oder die mehreren sicheren Kommunikationskanäle können unter Verwendung des Kommunikationskanals 162 eingerichtet werden (z. B. unter Verwendung von SPDM implementiert werden).
  • In mindestens einer Ausführungsform kann die GPU 104 der VM 116 (z. B. mit dem Treiber 122, wie einem GPU-PF-Treiber) einen oder mehrere Bescheinigungsberichte bereitstellen, die unter Verwendung der GPU 104 (z. B. unter Verwendung eines GPU-ROT) generiert werden. Beispielsweise können der eine oder die mehreren Bescheinigungsberichte unter Verwendung des Kommunikationskanals 160 (der z. B. unter Verwendung von SPDM implementiert wird) bereitgestellt werden. In mindestens einer Ausführungsform wird mindestens ein Bescheinigungsbericht unter Verwendung mindestens einer Vertrauenskette generiert und bereitgestellt, die in der/den GPU(s) 104 verwurzelt ist (ein Hardware-Root-Of-Trust, der von einem Hardware-Root-Of-Trust der CPU(s) 102 getrennt ist).
  • In mindestens einer Ausführungsform empfängt der Bescheinigungsverwalter 140 einen oder mehrere Bescheinigungsberichte, die unter Verwendung der CPU 102 (z. B. unter Verwendung einer CPU-ROT) generiert werden. Der Bescheinigungsverwalter 140 kann einen oder mehrere Bescheinigungsberichte verwenden, die unter Verwendung der CPU 102 und/oder der GPU 104 generiert werden, um die eine oder die mehreren Eigenschaften für die zusammengesetzte TEE 150 zu verifizieren. Wie hierin beschrieben, kann die Verifizierung lokal unter Verwendung des Bescheinigungsdienstes 112 (der z. B. in der VM 116 liegt) und/oder entfernt unter Verwendung des Bescheinigungsdienstes 112 (der z. B. auf einem entfernten Server liegt) durchgeführt werden. In mindestens einer Ausführungsform wird mindestens ein Bescheinigungsbericht unter Verwendung mindestens einer Vertrauenskette, die in der/den CPU(s) 102 (einer Hardware-Root-Of-Trust) verwurzelt ist, generiert und bereitgestellt.
  • Unter Bezugnahme auf 8, veranschaulicht 8 ein Beispiel einer Zertifikatkette 800, die verwendet werden kann, um eine GPU 104 zu authentifizieren, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. In mindestens einer Ausführungsform kann das Authentifizieren der GPU(s) 104 eine Authentifikation beinhalten, dass die GPU 104 eine legitime Vorrichtung ist und nicht widerrufen wird. Beispielsweise kann eine GPU 104 widerrufen werden, falls ein privater Schlüssel durchgesickert ist, falls bestimmt oder erfasst wird, dass die GPU 104 physisch manipuliert wurde usw.
  • In mindestens einer Ausführungsform kann die Authentifizierung der GPU 104 die Public-Key-Infrastruktur-Authentifizierung (PKI-Authentifizierung) verwenden. In einer oder mehreren Ausführungsformen beinhaltet die Zertifikatkette 800 mehrere Ebenen, Beispiele, die ein Stammzertifikat 802, ein Klassenzertifikat bzw. Klassenzertifikate 804, (ein) Anbieterzertifikat(e) 806, das/die Vorrichtungszertifikat(e) 154 und das/die Bescheinigungszertifikate 808 beinhalten. In mindestens einer Ausführungsform generiert und/oder speichert die GPU 104 das/die Vorrichtungszertifikat(e) 154 und das/die Bescheinigungszertifikat(e) 808. Das/die Vorrichtungszertifikat(e) 154 kann/können ein eindeutiges öffentliches Vorrichtungszertifikat beinhalten, das ein Blatt in der Zertifikatkette 800 bildet.
  • In der Zertifikatkette 800 kann jedes Zertifikat von der Entität signiert werden, die von dem unmittelbar übergeordneten Zertifikat entlang der Zertifikatkette 800 identifiziert wird. Ein vertrauenswürdiges Blattzertifikat kann bis zu einem Stammzertifikat 802 in der Zertifikatkette 800 zurückverfolgt werden. In dem gezeigten Beispiel kann die GPU 104 den ersten Satz von Ebenen (z. B. drei Ebenen) gemeinsam nutzen, und daher braucht der erste Satz von Ebenen nicht auf der GPU 104 gespeichert zu werden. In mindestens einer Ausführungsform werden zur Laufzeit nur die Blattzertifikate abgerufen, die von der GPU 104 kommen (z. B. das Vorrichtungszertifikat 154 und das Bescheinigungszertifikat 808). Die verbleibenden Zertifikate können von der CPU 102 gespeichert werden (z. B. in Software, wie dem Treiber 122, zwischengespeichert werden).
  • In einer oder mehreren Ausführungsformen führt ein Kernelmodustreiber 122 die Authentifizierung der GPU 104 durch, bevor er Zugriff auf GPU-Ressourcen gewährt. Sobald die GPU 104 vollständig authentifiziert wurde, kann der Kernelmodustreiber 122 eine Schlüsselaustauschsequenz initiieren, um eine sichere Sitzung(en) mit der GPU 104 (wie hierin beschrieben) aufzubauen, wie unter Verwendung des SPDM-Protokolls. Am Ende des Sitzungsaufbaus können sowohl der Kernelmodustreiber 122 als auch die GPU 104 symmetrische Stammschlüssel beinhalten, die verwendet werden, um Transportschlüssel für die weitere Kommunikation zu generieren.
  • In einer oder mehreren Ausführungsformen verwendet der Kernelmodustreiber 122 die zwischengespeicherten Zertifikate der Zertifikatkette 800, um alle Ebenen mit Ausnahme des Stammzertifikats 802 zu verifizieren, das fest codiert sein kann und keine unabhängige Authentifizierung erfordert. Der Kernelmodustreiber 122 kann die Zertifikatsignaturen verifizieren. In mindestens einer Ausführungsform prüft der Kernelmodustreiber 122 nicht auf Widerruf. Das Prüfen auf Widerruf ist möglicherweise nicht erforderlich, da, falls die Zertifikatwiderruflisten (CRLs) in dem Kernelmodustreiber 122 zwischengespeichert werden, die CRLs ablaufen können. Stattdessen können CRLs zur Laufzeit abgerufen werden, oder es können Dienste, wie OCSP-Dienste (Online Certificate Service Protocol-Dienste), verwendet werden, um den Widerrufstatus von Zertifikaten zu überprüfen. Der Kernelmodus-Treiber 122 ist möglicherweise nicht in der Lage, mit externen Diensten zu kommunizieren, da er im Kernelmodus läuft. Somit kann die Aufgabe des Prüfens auf Widerruf an einen Client in dem privilegierten Benutzermodus delegiert werden, der nach dem Prüfen auf Widerruf den Kernelmodustreiber 122 mit dem Widerrufstatus aktualisiert. In einer oder mehreren Ausführungsformen verwendet der Kernelmodustreiber 122 den Status, um für Clients die Verwendung der GPU 104 entweder zu erlauben oder zu blockieren.
  • Messungen, die unter Verwendung eines oder mehrerer Bescheinigungsberichte aufgezeichnet wurden, können Code, Daten, Hardware- und/oder Softwarestatus und/oder -konfigurationen, Sicherungseinstellungen, Vorrichtungsmodi, Versionsinformationen und/oder Anweisungen (z. B. zum Laden, Starten und/oder Booten eines oder mehrerer Elemente für die zusammengesetzte TEE 150) entsprechen. In einer oder mehreren Ausführungsformen können der/die dem Bescheinigungsverwalter 140 bereitgestellte(n) und/oder von dem/den Bescheinigungsdienst(en) 112 zum Verifizieren der zusammengesetzten TEE 150 verwendete(n) Bescheinigungsbericht(e) Messungen jeglicher Software erfassen, die in der zusammengesetzten TEE 150 (z. B. während einer Anwendungssitzung) läuft und/oder laufen soll. Die Software kann Firmware und/oder Mikrocode auf jeder Vorrichtung beinhalten, die verwendet wird, um die zusammengesetzte TEE 150 zu implementieren. Softwarekonfigurationen, die sich auf die Vollständigkeit oder Genauigkeit der Messungen auswirken können, können in dem/den Bescheinigungsbericht(en) aufgezeichnet werden (z. B. getesteter Modus, sicherer Boot-Zustand). Ferner können Hardwarekonfigurationen für alle Vorrichtungen, die sich auf den Anwendungszustand auswirken können, in dem/den Bescheinigungsbericht(en) aufgezeichnet werden.
  • Messungen, die zum Generieren eines oder mehrerer Bescheinigungsberichte verwendet werden, können auf eine deterministische Weise generiert werden. In einer oder mehreren Ausführungsformen kann die Bescheinigung ein gemessenes Booten beinhalten, wo Messungen von Boot-Komponenten gespeichert werden und eine Bescheinigung bezüglich der Gültigkeit von Messungen von einem Bescheiniger (z. B. dem/den Bescheinigungsdienst(en) 112) erfolgt. In einer oder mehreren Ausführungsformen kann ein sicheres oder vertrauenswürdiges Booten verwendet werden, das eine Authentifizierung von Komponenten über eine kryptografische Verifizierung beinhalten kann.
  • In mindestens einer Ausführungsform kann die Anwendung 108 mindestens zum Teil unter Verwendung der GPU 104 basierend mindestens auf dem Übertragen von Daten unter Verwendung des einen oder der mehreren sicheren Kommunikationskanäle 160 ausgeführt werden. In mindestens einer Ausführungsform wird es der Anwendung 108 möglicherweise nicht gestattet, in der VM 116 zu starten und/oder mit der GPU 104 zu kommunizieren, bis der eine oder die mehreren sicheren Kommunikationskanäle 160 eingerichtet sind und die Eigenschaften für die zusammengesetzte TEE 150 verifiziert sind. Während die GPU 104 weiterhin im vertraulichen Rechenmodus bleibt, kann der Hypervisor 118 daran gehindert werden, den Speicher 334 zu lesen, und alle Anwendungscodes und Anwendungsdaten, die den Systembus 320 überqueren, können verschlüsselt werden
  • In mindestens einer Ausführungsform kann das Entfernen der GPU 104 aus der zusammengesetzten TEE 150 beinhalten, dass eine oder mehrere Anforderungen geschrieben werden, um den vertraulichen Rechenmodus und/oder die GPU-TEE 172 zu deaktivieren. In einer oder mehreren Ausführungsformen veranlassen die eine oder die mehreren Anforderungen die GPU 104, den sicheren Ausführungsmodus und/oder den vertraulichen Rechenmodus bei einem nächsten Zurücksetzen der GPU 104 zu verlassen. In mindestens einer Ausführungsform wird/werden die Anforderung(en) (z. B. Daten, die einen Betriebsmodus an die GPU 104 angeben) in dem Speicher der GPU 104 aufgezeichnet (z. B. nichtflüchtiger Speicher, wie ein PROM, der an der GPU 104 angebracht ist).
  • In mindestens einer Ausführungsform setzt das System 100 die GPU 104 basierend mindestens auf der Anforderung zurück. Beispielsweise kann der sichere Prozessor 146 die GPU 104 veranlassen, ein Zurücksetzen durchzuführen. Nachdem die GPU 104 zurückgesetzt wurde, kann das System 100 Daten aus dem GPU-Speicher, wie dem Speicher 334 und/oder GPU-Zustandsdaten (wie hierin beschrieben) löschen, reinigen und/oder bereinigen. In mindestens einer Ausführungsform werden alle Inhalte des GPU-Speichers gelöscht. In mindestens einer Ausführungsform bereinigt und/oder löscht der sichere Prozessor 146 und/oder die GPU-Firmware (z. B. nach dem Zurücksetzen) die Inhalte des GPU-Speichers und eine GPU-Kopie des/der gemeinsam genutzten kryptografischen Schlüssel(s) 168, um sicherzustellen, dass Daten, die in der zusammengesetzten TEE 150 generiert werden, nicht exponiert werden. In mindestens einer Ausführungsform kann das Bereinigen und/oder Löschen der Inhalte des GPU-Speichers das Löschen der Inhalte eines oder mehrerer geschützter Bereiche 336 beinhalten. In mindestens einer Ausführungsform wird die Bereinigung abgeschlossen, bevor der Speicher 334 auf dem Systembus 320 sichtbar gemacht wird. In mindestens einer Ausführungsform können während der sicheren Boot-Sequenz der GPU 104 alle Schutzmaßnahmen, die für den vertraulichen Rechenmodus spezifisch sind, unter Verwendung der GPU-Hardware und -Firmware deaktiviert werden.
  • In mindestens einer Ausführungsform kann die Anwendung 108 in einer TEE der GPU 104 basierend mindestens darauf konfiguriert, gestartet und ausgeführt werden, dass ein Benutzer ein Virtual Machine Image (VMI) auswählt, das der VM 116 entspricht. Das VMI kann beispielsweise einen oder mehrere der Treiber 122 beinhalten, wie einen GPU-Treiber für die GPU 104 und andere Komponenten, wie andere Toolkits und Bibliotheken (z. B. ein Container-Toolkit, eine Bescheinigungsbibliothek usw.). In mindestens einer Ausführungsform kann der Benutzer selektiv eine oder mehrere Anwendungen, wie die Anwendung 108, zu dem VMI hinzufügen. In mindestens einer Ausführungsform kann der Benutzer selektiv eine oder mehrere Instanzen des VMI (z. B. in einer Cloud), wie die VM 116, starten.
  • In mindestens einer Ausführungsform kann sich der Benutzer mit der VM 116 verbinden und den/die Bescheinigungsverwalter 140, CPU-Bescheinigungsbibliotheken und/oder GPU-Bescheinigungsbibliotheken ausführen, um zu prüfen, ob die zusammengesetzte TEE 150 eingerichtet und korrekt konfiguriert ist. In mindestens einer Ausführungsform kann der Benutzer die Anwendung 108 starten (z. B. den vertraulichen Anwendungscontainer, der dem VMI hinzugefügt wurde). In einer oder mehreren Ausführungsformen kann die Anwendung 108 den/die Bescheinigungsverwalter 140 verwenden und/oder die CPU- und GPU-Bescheinigungsbibliotheken als Teil eines Startvorgangs der Anwendung 108 aufrufen.
  • In mindestens einer Ausführungsform zieht die Anwendung 108 verschlüsselte Daten aus dem Netzwerkspeicher oder von anderen Netzwerkstellen in die VM 116. Während die Anwendung 108 die aufgenommenen Daten entschlüsselt, können die Daten unter Verwendung eines privaten Schlüssels der VM 116 (z. B. eines privaten Schlüssels einer Mandanten-VM) automatisch in den Systemspeicher der VM 116 verschlüsselt werden.
  • In mindestens einer Ausführungsform legt die Anwendung 108 Kontexte (z. B. CUDA-Kontexte) an, die Eingabedaten von dem Systemspeicher der VM 116 zu dem GPU-Speicher der GPU 104 senden (z. B. unter Verwendung von cudaMemcpyHostToDevice()). Beispielsweise kann der Treiber 122 die Daten an den Bounce-Puffer 110A verschlüsseln, und die Speicherzugriffseinheit 130 kann die verschlüsselten Daten über die Schnittstelle(n) 124 in den GPU-Speicher (z. B. Speicher mit hoher Bandbreite (high bandwidth memory - HBM)) in der GPU-TEE 172 ziehen.
  • In mindestens einer Ausführungsform kann die Anwendung 108 den Treiber 122 verwenden, um verschlüsselte Kernel und Befehle an die GPU 104 zu senden. Die GPU 104 kann die Kernel verarbeiten, dann die Daten in der GPU-TEE 172 ausführen, um Ergebnisdaten zu generieren. In mindestens einer Ausführungsform werden Ergebnisdaten in dem GPU-Speicher abgerufen (z. B. unter Verwendung von cudaMemcpyDeviceToHost()-Aufrufen), was dazu führt, dass die Speicherzugriffseinheit 130 die Daten verschlüsselt, bevor sie die Schnittstelle(n) 124 überqueren. Die verschlüsselten Daten können dann von dem Treiber 122 in den Systemspeicher der VM 116 entschlüsselt werden. In mindestens einer Ausführungsform können die entschlüsselten Ergebnisse dann anwendungsverschlüsselt werden, bevor sie aus der VM 116 über das/die Netzwerk(e) 106 und/oder zu einem Netzwerkspeicher gesendet werden.
  • In mindestens einer Ausführungsform kann die Anwendung 108 (und/oder eine andere Komponente, die der VM 116 und/oder dem Mandanten entspricht) während der Lebensdauer der VM 116 periodisch eine Bestätigung für die CPU-TEE 170 und die GPU-TEE 172 ausführen, um zu bestimmen, ob die Bescheinigung immer noch einen vertraulichen Zustand angibt. Wenn in mindestens einer Ausführungsform die Anwendung 108 verlässt und der Benutzer die VM 116 beendet, wird die GPU zurückgesetzt, was ergibt, dass die Sitzungsschlüssel (z. B. das/die gemeinsame(n) Geheimnis(se) 168) gelöscht werden, und der GPU-Speicher und -Zustand bereinigt werden, bevor die GPU 104 für einen neuen Mandanten bereitgestellt wird (z. B. wie hierin beschrieben).
  • Unter Bezugnahme auf die 9-12, umfasst nun jeder Block von Verfahren 900, 1000, 1100, 1200 und von anderen hierin beschriebenen Verfahren (z. B. das Verfahren 1600) einen Computing-Prozess, der unter Verwendung einer Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der Anweisungen, die im Speicher gespeichert sind, ausführt. Die Verfahren können auch als computerverwendbare Anweisungen verkörpert sein, die auf Computerspeichermedien gespeichert sind. Die Verfahren können von einer eigenständigen Anwendung, einem Dienst oder einem gehosteten Dienst (alleinstehend oder in Kombination mit einem anderen gehosteten Dienst) oder einem Plug-In für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Zusätzlich werden Verfahren beispielhaft unter Bezugnahme auf bestimmte Figuren beschrieben. Die Verfahren können jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, jedoch nicht beschränkt auf die hierin beschriebenen.
  • 9 ist ein Ablaufdiagramm, das ein Verfahren 900 zeigt, das eine PPU, wie eine oder mehrere GPU(s) 104 verwenden kann, um Daten innerhalb einer TEE zu verarbeiten, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. Das Verfahren 900 beinhaltet bei Block B902 das Konfigurieren einer TEE einer oder mehreren PPUs. Beispielsweise kann die GPU 104 die GPU-TEE 172 konfigurieren (z. B. unter Verwendung eines sicheren und gemessenen Bootens).
  • Bei Block B904 beinhaltet das Verfahren 900 das Einrichten eines oder mehrerer sicherer Kommunikationskanäle zwischen einer TEE eines oder mehrerer Prozessoren und der TEE der einen oder der mehreren PPUs. Beispielsweise kann der sichere Prozessor 146 den/die Kommunikationskanal/-kanäle 160 zwischen der/den VM(s) 116 innerhalb der CPU-TEE 170 und der GPU-TEE 172 einrichten.
  • Bei Block B906 beinhaltet das Verfahren 900 das Empfangen von Daten von einer oder mehreren virtuellen Maschinen (VMs) innerhalb der TEE des einen oder der mehreren Prozessoren unter Verwendung des einen oder der mehreren sicheren Kommunikationskanäle. Beispielsweise kann der sichere Prozessor 146 unter Verwendung des Kommunikationskanals/der Kommunikationskanäle 160 Daten von der/den VM(s) 116 empfangen.
  • Bei Block B908 beinhaltet das Verfahren 900 das Verarbeiten der Daten innerhalb der TEE der einen oder der mehreren PPUs unter Verwendung der einen oder der mehreren PPUs. Beispielsweise können die Rechen-Engine(s) 128 die Daten innerhalb der GPU-TEE 172 verarbeiten.
  • Unter Bezugnahme auf 10, ist 10 ein Ablaufdiagramm, das ein Verfahren 1000 zeigt, das die CPU(s) 102 verwenden können, um Daten unter Verwendung einer PPU, wie der GPU(s) 104, innerhalb einer TEE gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung zu verarbeiten. Das Verfahren 1000 beinhaltet bei Block B1002 das Empfangen durch eine oder mehrere virtuelle Maschinen (VMs) in einer vertrauenswürdigen Ausführungsumgebung (TEE) des einen oder der mehreren Prozessoren, von Zugriff auf eine oder mehrere parallele Verarbeitungseinheiten (PPUs) über eine oder mehrere Schnittstellen. Beispielsweise können die VM(s) 116 in der CPU-TEE 170 über die Schnittstelle(n) 124 (z. B. über den Hypervisor 118) Zugriff auf die GPU(s) 104 erhalten.
  • Bei Block B1004 beinhaltet das Verfahren 1000 das Verschlüsseln von Daten in der TEE des einen oder der mehreren Prozessoren, um verschlüsselte Daten zu generieren. Beispielsweise kann die VM 116 in der CPU-TEE 170 Daten verschlüsseln, die mit der/den VM(s) 116 assoziiert sind (die z. B. unter Verwendung der Anwendung 108 generiert werden), um verschlüsselte Daten zu erzeugen.
  • Bei Block B1006 beinhaltet das Verfahren 1000 das Bereitstellen der verschlüsselten Daten an der einen oder den mehreren Schnittstellen, um eine Entschlüsselung der verschlüsselten Daten in einer TEE der einen oder der mehreren PPUs zu veranlassen, um entschlüsselte Daten zu generieren, und die entschlüsselten Daten in der TEE der einen oder der mehreren PPUs, die die eine oder die mehreren PPUs verwenden, zu verarbeiten. Beispielsweise kann die VM 116 die verschlüsselten Daten über die Schnittstelle(n) 124 bereitstellen, um eine Entschlüsselung der verschlüsselten Daten in der GPU-TEE 172 zu veranlassen, entschlüsselte Daten zu generieren, und um eine Verarbeitung der entschlüsselten Daten in der GPU-TEE 172 zu veranlassen.
  • Unter Bezugnahme auf 11, ist 11 ein Ablaufdiagramm, das ein Verfahren zum Kopieren von Daten aus dem CPU-Speicher in den GPU-Speicher innerhalb einer TEE zeigt, die eine PPU beinhaltet, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. Das Verfahren 1100 beinhaltet bei Block B1102 das Verschlüsseln von Daten. In verschiedenen Ausführungsformen stellt die Anwendung 108, die von der VM 116 ausgeführt wird, der GPU 104 Daten zur Verarbeitung (z. B. Inferenzieren, Videoverarbeitung, Audioverarbeitung, Wiedergabe oder andere von einer GPU ausführbare Operationen) bereit. Darüber hinaus kann der sichere Prozessor 146 in derartigen Ausführungsformen einen gemeinsam genutzten Schlüssel mit der VM 116 aushandeln, um Daten während der Übertragung zwischen der VM 116 und der GPU 104 zu verschlüsseln. Beispielsweise kann die VM 116 (z. B. ein oder mehrere Treiber 122) Daten, die in den Speicher 334 der GPU 104 kopiert werden sollen, verschlüsseln.
  • Bei Block B1104 beinhaltet das Verfahren 1100 das Speichern der verschlüsselten Daten in einem unsicheren Speicher, der für eine oder mehrere PPUs zugänglich ist. Beispielsweise können die verschlüsselten Daten in dem Bounce-Puffer 310 innerhalb des Arbeitsspeichers eines Servers, der die VM 116 ausführt, gespeichert werden. In derartigen Beispielen kann von der GPU 104 auf den unsicheren Speicher durch den Systembus 320, die Netzwerkschnittstelle und/oder einen anderen Kommunikationskanal zugegriffen werden.
  • Bei Block B1106 beinhaltet das Verfahren 1100 das Übertragen der verschlüsselten Daten aus dem unsicheren Speicher. Beispielsweise kann das System 300 die verschlüsselten Daten an die Speicherzugriffseinheit 130 der GPU 104 übertragen. In mindestens einer Ausführungsform kopiert die Speicherzugriffseinheit 130 die verschlüsselten Daten aus dem unsicheren Speicher. In mindestens einer Ausführungsform veranlasst die VM 116, dass die verschlüsselten Daten über den Systembus 320 zu der Speicherzugriffseinheit 130 kopiert werden.
  • Bei Block B1108 beinhaltet das Verfahren 1100 das Entschlüsseln der verschlüsselten Daten unter Verwendung der Speicherzugriffseinheit 130. Beispielsweise kann die Speicherzugriffseinheit 130 eine Kopie des gemeinsam genutzten kryptografischen Schlüssels führen und die Daten unter Verwendung des gemeinsam genutzten kryptografischen Schlüssels entschlüsseln.
  • Bei Block B1110 beinhaltet das Verfahren 1100 das Speichern von Klartextdaten in einem oder mehreren geschützten Speicherbereichen der einen oder der mehreren PPUs. Beispielsweise kann die GPU 104, wenn sie in dem sicheren Ausführungsmodus und/oder in dem vertraulichen Rechenmodus arbeitet, den geschützten Speicherbereich 336 derart anlegen, dass Klartextdaten innerhalb des geschützten Speicherbereichs 336 für unbefugte Entitäten nicht zugänglich sind.
  • Unter Bezugnahme auf 12, ist 12 ein Ablaufdiagramm, das ein Verfahren 1200 zum Kopieren von Daten aus dem GPU-Speicher in den CPU-Speicher innerhalb einer TEE, die eine PPU beinhaltet, zeigt, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. Das Verfahren 1200 beinhaltet bei Block B1202 das Verschlüsseln von Daten. Beispielsweise kann der sichere Prozessor 146 der GPU 104 während des Prozesses des Einbeziehens der GPU 104 in die zusammengesetzte TEE 150 einen gemeinsam genutzten kryptografischen Schlüssel mit dem/den Treiber(n) 122 generieren, der/die in der CPU-TEE 170 enthalten ist/sind. Der gemeinsam genutzte kryptografische Schlüssel kann verwendet werden, um Daten vor der Übertragung über den Systembus 320 zu verschlüsseln, ansonsten die Daten während der Übertragung zwischen der GPU-TEE 172 und der CPU-TEE 170 zu schützen. In mindestens einer Ausführungsform werden die Daten in einem geschützten Speicherbereich des GPU-Speichers gespeichert.
  • Bei Block B1204, beinhaltet das Verfahren 1200 das Speichern verschlüsselter Daten in unsicheren Speicher, auf den ein oder mehrere Prozessoren zugreifen können. Beispielsweise kann das System 300 die verschlüsselten Daten in einem unsicheren Bereich des Speichers, auf den die CPU 102 zugreifen kann, speichern. In mindestens einer Ausführungsform überträgt die Speicherzugriffseinheit 130 nach dem Verschlüsseln der Daten die Daten über den Systembus 320 und veranlasst, dass die Daten in einem unsicheren Speicherbereich, wie dem oben in Verbindung mit 3 beschriebenen unsicheren Speicherbereich 318, gespeichert werden.
  • Bei Block B1206 beinhaltet das Verfahren 1200 das Entschlüsseln der verschlüsselten Daten, um entschlüsselte Daten zu generieren. Beispielsweise kann das System 300 die verschlüsselten Daten mit dem gemeinsam genutzten kryptografischen Schlüssel entschlüsseln. In mindestens einer Ausführungsform speichert/speichern der/die Treiber 122 innerhalb der CPU-TEE 170 den kryptografischen Schlüssel und veranlassen ein Gastbetriebssystem, Treiber und/oder andere Komponenten der zusammengesetzten TEE 150, die verschlüsselten Daten aus dem unsicheren Bereich zu öffnen und die verschlüsselten Daten basierend mindestens auf dem gemeinsamen kryptografischen Schlüssel zu entschlüsseln.
  • Bei Block B1208 beinhaltet das Verfahren 1100 das Bereitstellen der entschlüsselten Daten an eine TEE. Beispielsweise können die verschlüsselten Daten ein Ergebnis einer von der GPU 104 durchgeführten Operation beinhalten. Außerdem beinhaltet das Bereitstellen der entschlüsselten Daten für die zusammengesetzte TEE 150 in verschiedenen Ausführungsformen das Veranlassen, dass die Daten im Klartext in einem sicheren Speicherbereich des CPU-Speichers, der von der zusammengesetzten TEE 150 geschützt wird, gespeichert werden.
  • VERTRAULICHES COMPUTING UNTER VERWENDUNG VON SICHEREN MULTI-INSTANZ-PPUS
  • Gemäß Aspekten der vorliegenden Offenbarung kann/können eine PPU(s) mehrere PPU-Instanzen unterstützen, wobei unterschiedliche PPU-Instanzen zu unterschiedlichen TEEs gehören können und beschleunigtes vertrauliches Computing für eine entsprechende TEE bereitstellen. Eine Instanz einer PPU (oder PPU-Instanz) kann auf eine Partition einer PPU oder eine virtuelle PPU derart verweisen, dass die Partition der PPU für externe Vorrichtungen als eine PPU erscheint. Ein Beispiel einer Instanz einer PPU beinhaltet eine Multi-Instanz-GPU (MIG). In mindestens einer Ausführungsform kann eine PPU sicher in eine beliebige Anzahl von PPU-Instanzen partitioniert werden (wobei die Anzahl hardwarebegrenzt sein kann), wobei jede PPU-Instanz (z. B. für unterschiedliche Benutzer, VMs und/oder Vorrichtungen) getrennte PPU-Ressourcen bereitstellt, die unter den PPU-Instanzen parallel arbeiten können.
  • In mindestens einer Ausführungsform weisen die Prozessoren jeder PPU-Instanz getrennte und isolierte Pfade durch das Speichersystem der PPU auf, wie On-Chip-Crossbar-Ports, L2-Cache-Bänke, Speichercontroller und DRAM-Adressbusse, die alle eindeutig einer einzelnen PPU-Instanz zugewiesen sind. Auf diese Weise kann eine Arbeitslast auf einer PPU-Instanz mit vorhersagbarem Durchsatz und vorhersagbarer Latenz mit derselben L2-Cache-Zuordnung und DRAM-Bandbreite ausgeführt werden, selbst falls andere Aufgaben, die von anderen PPU-Instanzen ausgeführt werden, ihre eigenen Caches verwenden oder ihre DRAM-Schnittstellen sättigen. In mindestens einer Ausführungsform beinhaltet eine PPU-Instanz eine Partition von Rechenressourcen der PPU, wie eine oder mehrere Recheneinheiten, und PPU-Engines, wie Kopier-Engines oder Decoder.
  • Unter Bezugnahme auf 13, bildet 13 ein Beispiel eines Systems 1300 ab, das eine TEE beinhaltet, die eine Instanz einer PPU aufweist, in Übereinstimmung mit mindestens einigen Ausführungsformen der vorliegenden Offenbarung. Beispielsweise beinhaltet das System 1300 eine TEE 1372, die eine oder mehrere Instanz(en) der GPU(s) 104 beinhaltet. Eine zusammengesetzte TEE 1350 beinhaltet eine CPU-TEE 1370, die der/den CPU(s) 102 entspricht, und eine GPU-Instanz-TEE 1372, die der/den Instanz(en) der GPU(s) 104 entspricht.
  • In mindestens einer Ausführungsform kann/können die CPU(s) 102 eine beliebige Anzahl von CPU-TEEs 1370, die Teil einer beliebigen Anzahl zusammengesetzter TEEs 1350 sein können, unterstützen. Jede CPU-TEE 1370 kann beispielsweise entsprechende Instanzen eines Bescheinigungsverwalters 140, einer oder mehrerer Anwendungen 108, eines oder mehrerer Gast-Betriebssysteme 120 und eines oder mehrerer Treiber 122 beinhalten, wie hierin beschrieben. Ferner kann/können die GPU(s) 104 eine beliebige Anzahl von GPU-Instanz-TEEs 1372, die Teil einer beliebigen Anzahl zusammengesetzter TEEs 1350 sein können, unterstützen. Jede GPU-Instanz-TEE 1372 kann beispielsweise entsprechende Instanzen einer oder mehrerer virtueller Schnittstellen 1324, eines oder mehrerer Arbeitsstarter 126, einer oder mehrerer Rechen-Engine(s) 128, einer oder mehrerer Speicherzugriffseinheit(en) 130, eines Videoprozessors/von Videoprozessoren 132, einer/von Cache-Partition(en) 1334 und einer/von RAM-Partition(en) 1336 beinhalten.
  • Unter Bezugnahme auf 14, bildet 14 Beispiele von Konfigurationen in einem Multi-Instanz-PPU-System 1400, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung ab. In dem Beispiel der 14, kann/können die CPU(s) 102 verwendet werden, um mehrere VMs zu implementieren, die jeweils eine oder mehrere PPU-Instanzen einer oder mehrerer PPUs zur Hardwarebeschleunigung verwenden können. Die GPU(s) 104 können in eine beliebige Anzahl von PPU-Instanzen partitioniert werden, die beispielsweise die GPU-Instanzen 1404A bis 1404N beinhalten können, von denen jede der GPU-Instanz-TEE 1372 der 13 entsprechen kann.
  • In mindestens einer Ausführungsform kann 14 einem Multi-Instanz-GPU-Server und/oder einem Multi-GPU-Server entsprechen. Einige der GPUs und/oder GPU-Instanzen können in einem nicht vertraulichen Rechenmodus laufen, während andere in einem vertraulichen Rechenmodus laufen können (z. B. in einer einzigen GPU-Konfiguration oder einer Multi-GPU-Konfiguration).
  • Eine zusammengesetzte TEE 1450A, die dem/den zusammengesetzten TEE(s) 1350 der 13 entsprechen kann, beinhaltet eine VM 1416A, die einer oder mehreren VMs 116 der 13 entsprechen kann, und kann die GPU-Instanz 1404A zur Hardwarebeschleunigung innerhalb der zusammengesetzten TEE 1450A verwenden. Beispielsweise kann/können Treiber 1422A, die einem oder mehreren Treibern 122 der 13 entsprechen können, ein oder mehrere Kommunikationskanäle 1460A, die einem oder mehreren Kommunikationskanälen 160 der 13 entsprechen können, und eine oder mehrere virtuelle Schnittstelle(n) 1424A, die einer oder mehreren virtuellen Schnittstelle(n) 1324 der 13 entsprechen können, verwendet werden, um Hardwarebeschleunigung unter Verwendung der GPU(s) 104 zu implementieren.
  • Eine zusammengesetzte TEE 1450N, die der/den zusammengesetzten TEE(s) 1350 der 13 entspricht, beinhaltet eine VM 1416N, die einer oder mehreren VM(s) 116 der 13 entsprechen kann, und kann die GPU-Instanz 1404N zur Hardwarebeschleunigung innerhalb der zusammengesetzten TEE 1450N verwenden. Beispielsweise können ein oder mehrere Treiber 1422N, die einem oder mehreren Treibern 122 der 13 entsprechen können, ein oder mehrere Kommunikationskanäle 1460N, die einem oder mehreren Kanälen 160 der 13 entsprechen können, und eine oder mehrere virtuelle Schnittstellen 1424N, die einer oder mehreren virtuellen Schnittstellen 1324 der 13 entsprechen können, verwendet werden, um Hardwarebeschleunigung unter Verwendung der GPU(104) umzusetzen.
  • In mindestens einer Ausführungsform weisen der Hypervisor 118 und/oder das/die Host-Betriebssystem(e) 114 bandinternen Zugriff auf die GPU 104 unter Verwendung der physischen Schnittstelle(n) 1326 (z. B. einer physischen Funktion) für Verwaltungs-/Mandanten-Lebenszyklusfunktionen für eine beliebige Anzahl der VM(s) 116 auf. Die Verwaltungs-/Mandantenlebenszyklusfunktionen können unter Verwendung eines oder mehrerer Treiber 1322 ausgeführt werden, die möglicherweise nicht die Fähigkeit aufweisen, Grafik- und Rechenanwendungen auszuführen, denen jedoch die physische Schnittstelle 1326 (z. B. eine physische Funktion) zugewiesen werden kann. Beispielsweise kann/können der/die Treiber 1322 den Mikrocode des Systemprozessors während des Bootens der GPU 104 über einen oder mehrere Kommunikationskanäle 1380 laden und die GPU 104, wie hierin beschrieben, zurücksetzen. Sichere Software, die in dem/den Systemprozessor(en) 144 läuft, kann alle Eingänge/Ausgänge bereinigen, um sicherzustellen, dass der Hypervisor 118 und/oder das/die Host-Betriebssystem(e) 114 keinen Zugriff auf potenziell sensible und vertrauliche Daten der GPU-Instanzen haben oder diese nicht manipulieren können. Ein Beispiel der sicheren Software beinhaltet einen Instanzverwalter 1510 und/oder einen GPU-Hypervisor 1520 der 15.
  • In 13 kann/können die virtuelle(n) Schnittstelle(n) 1324 der/den Schnittstelle(n) 124 der 1 entsprechen, in der die physische(n) Schnittstelle(n) 1326 (z. B. eine PCIe-Schnittstelle) virtualisiert wurde(n), um die virtuelle(n) Schnittstelle(n) 1324 bereitzustellen. In mindestens einer Ausführungsform kann/können eine oder mehrere virtuelle Schnittstellen 1324, wie die virtuelle Schnittstelle 1424A, von einer oder mehreren virtuellen Schnittstelle(n) 1324, die einer anderen zusammengesetzten TEE 1350, wie der virtuellen Schnittstelle 1424B, zugewiesen sind, unter Verwendung von Single-Root-E/A-Virtualisierung (SR-IOV) und/oder einer anderen Virtualisierungstechnologie isoliert werden. In einer oder mehreren Ausführungsformen kann jeder Schnittstelle 1424 und/oder VM 116 eine eindeutige Anfordererkennung (RID) zugewiesen werden, die es einer MMU, wie einer IOMMU der GPU 104, ermöglicht, zwischen unterschiedlichen Verkehrsströmen zu unterscheiden und Speicher anzuwenden und Übersetzungen zwischen den Schnittstellen 1424 zu unterbrechen. Dies kann erlauben, dass Verkehrsströme direkt an die entsprechende Partition geliefert werden und dass der Verkehr unter Verwendung von einer oder mehreren hierin beschriebenen Hardware-Firewalls überwacht wird, wie zum Identifizieren und Blockieren externer Entitäten und/oder zum Blockieren von Anforderungen, die einer nicht zugewiesenen Partition entsprechen.
  • In einer oder mehreren Ausführungsformen kann jede VM 116(s) für jede zusammengesetzte TEE 1350 eine oder mehrere separate sichere Sitzung(en) mit der GPU 104 einrichten, die eine kryptografische und zeitliche Isolierung voneinander bereitstellt, indem beispielsweise eine oder mehrere gemeinsam genutzte symmetrische Sitzungsschlüssel 1368A und/oder 1368B verwendet werden, die dem einen oder den mehreren gemeinsam genutzten symmetrischen Sitzungsschlüsseln 168A und/oder 168B der 1 entsprechen können und als symmetrische Sitzungsschlüssel 1368 bezeichnet werden können. Daten im Vorrichtungsspeicher der GPU 104 können, wie hierin beschrieben, verschlüsselt bleiben, können aber isoliert und zugriffsgesteuert sein, indem eine oder mehrere Hardware-Firewalls verwendet werden, wie hierin beschrieben. In mindestens einer Ausführungsform kann, wenn PPU-Instanzen mit mehreren Mandanten verwendet werden, jedem Mandanten entsprechender CPR-Speicher zugeordnet werden und kann angeben, ob einen Nicht-CPR-Carve-Out nach Bedarf angelegt werden soll oder nicht. Wie CPR-Speicher, können Nicht-CPR-Speicherbereiche nicht über mehrere Mandanten hinweg abgebildet und daher von einer Gast-VM 116, die sie anlegt, isoliert werden.
  • Unter Bezugnahme auf 15, veranschaulicht 15 ein Beispiel einer GPU 104, die isolierte PPU-Instanzen aufweist, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. Wie in 15 angegeben, kann jede GPU-Instanz-TEE 1372 unabhängige Einheiten in Bezug auf andere GPU-TEEs (falls vorhanden) aufweisen, von denen nicht einschränkende Beispiele einen Arbeitsstarter 126, eine Rechen-Engine 128, eine Speicherzugriffseinheit 130, einen Videoprozessor 132, Cache-Partitionen 1334, RAM-Partitionen 1336, einen oder mehrere Übersetzungs-Lookaside-Puffer und/oder eine oder mehrere Kopier-Engines beinhalten. Ferner kann jede GPU-Instanz-TEE 1372 unabhängige Kanäle in einem Interconnect 1522 (zu entsprechenden RAM-Partitionen 1336) in Bezug auf andere GPU-Instanz-TEEs (falls vorhanden) aufweisen. Die Speicherisolierung kann unter Verwendung von einer oder mehreren Hardware-Firewalls bereitgestellt werden, wie hierin beschrieben. Beispielsweise können eine oder mehrere Hardware-Firewalls für Übersetzungspfade der ersten und zweiten Ebene außerhalb der TCB einer GPU-Instanz-TEE 1372 verwendet werden.
  • Wie hierin beschrieben, kann sichere Software, wie der Instanzverwalter 1510 und der GPU-Hypervisor 1520, verwendet werden, um alle Eingaben/Ausgaben zu Schnittstellen 1524 zu bereinigen, um sicherzustellen, dass der Hypervisor 118 und/oder Host-Betriebssysteme 114 keinen Zugriff auf potenziell sensible und vertrauliche Daten der GPU-Instanzen 1404A bis 1404N aufweisen und diese nicht manipulieren können. Die sichere Software kann verwendet werden, um unabhängige Ausführungspartitionen für eine Laufzeit 1502A, die der GPU-Instanz 1404A entspricht, eine Laufzeit 1502B, die der GPU-Instanz 140B, dem Instanzverwalter 1510 und dem GPU-Hypervisor 1520 entspricht, einzurichten. In mindestens einer Ausführungsform kann jede Laufzeit 1502 verwendet werden, um die hierin beschriebene Funktionalität in Bezug auf den Systemprozessor 144 für eine entsprechende GPU-Instanz 1404 zu implementieren. Zu diesem Zweck kann jede Laufzeit 1502 einen oder mehrere entsprechende kryptografische Schlüssel 1368A (z. B. den von dem/den Kernelmodustreiber(n) 122 verwendeten Schlüssel) beinhalten und/oder Zugriff darauf haben. Beispielsweise können LCEs einer VM 116 basierend mindestens auf einer Größe der GPU-Instanz 1404 zugewiesen werden, die der VM 116 zugeordnet wird, wobei jedes LCE seine eigenen Schlüssel-Slots aufweist.
  • Die sichere Software ist als in dem/den Systemprozessor(en) 144 beinhaltet gezeigt. In mindestens einer Ausführungsform ist die sichere Software in einem oder mehreren anderen Prozessoren und/oder in mehreren Systemprozessoren (von denen z. B. jeder einer oder mehreren GPU-Instanzen entsprechen kann) beinhaltet. Beispielsweise kann in mindestens einer Ausführungsform ein Systemprozessor 144 für jede GPU-Instanz 1404 bereitgestellt werden. In einer oder mehreren Ausführungsformen kann der Systemprozessor 144 für eine beliebige Anzahl von GPU-Instanzen 1404 der GPU 104 (z. B. alle GPU-Instanzen 1404) bereitgestellt werden. In mindestens einer Ausführungsform kann der Systemprozessor 144 für mehrere GPU-Instanzen 1404 unter Verwendung von Time-Slicing und/oder anderen Hardware-Sharing-Techniken für unterschiedliche Laufzeiten 1502 bereitgestellt werden. In mindestens einer Ausführungsform können sich die Laufzeit 1502a, die Laufzeit 1502B, der Instanzverwalter 1510 und der GPU-Hypervisor 1520 auf separaten Partitionen oder Vertrauensdomänen befinden, die unter Verwendung eines Trennungskernels implementiert sein können.
  • In einer oder mehreren Ausführungsformen konfiguriert der Instanzverwalter 1510 den vertraulichen Rechenmodus oder einen nicht vertraulichen Rechenmodus der GPU 104 und konfiguriert die GPU-Instanzen 1404. In mindestens einer Ausführungsform ist der Instanzverwalter 1510 dazu konfiguriert, Anforderungen von dem/den Treiber(n) 122 und/oder der/den VM(s) 116 über die Schnittstelle(n) 1524, wie die virtuellen Schnittstellen 1424A und 1424N, zu akzeptieren. Die Anforderungen können in Form eines oder mehrerer Anforderungspakete empfangen werden, die unter Verwendung des Instanzverwalters 1510 decodiert werden und zu Registerschreib- und -lesevorgängen führen können, die verwendet werden, um Operationen auf dem/den Systemprozessor(en) 144 einzurichten. In einer oder mehreren Ausführungsformen kann der Instanzverwalter 1510 das Booten der GPU 104, Engine-Verwaltung, Überwachung und Bereitstellung durch eine Verwaltungsschnittstelle bereitstellen. Dazu kann der Instanzverwalter 1510 unter Verwendung von einer oder mehreren APIs mit dem GPU-Hypervisor 1520 kommunizieren. In mindestens einer Ausführungsform generiert der Instanzverwalter 1510 den einen oder die mehreren Bescheinigungsberichte, die einer VM 116 bereitgestellt werden. In einer oder mehreren Ausführungsformen kann eine separate Bescheinigungspartition den einen oder die mehreren Bescheinigungsberichte generieren.
  • Der Instanzverwalter 1510 kann unter Verwendung der GPU-Instanzen 1404 inaktiv und/oder an der Ausführung von Arbeitslasten unbeteiligt bleiben. Beim Ausführen von Arbeitslasten unter Verwendung der GPU-Instanzen 1404, können die GPU-Instanzen 1404 gleichzeitig und periodisch unter Verwendung des Kommunikationskanals/der Kommunikationskanäle 1380 betrieben werden. Beispielsweise können neue Befehle über eine RPC-Schnittstelle (Remote Procedure Call) des Servers und über die virtuellen Schnittstellen 1324 empfangen werden, um unter Verwendung von Datenpfaden 1550 bedient zu werden.
  • Der GPU-Hypervisor 1520 kann dazu konfiguriert sein, eine Kontextumschaltung durchzuführen, wenn er Arbeitslastanforderungen von den Laufzeiten 1502 bedient, und die Anforderungen an die entsprechende GPU-Instanz 1404 weiterzuleiten. Der GPU-Hypervisor 1520 kann dazu konfiguriert sein, die Laufzeiten 1502 voneinander zu isolieren und sicherzustellen, dass eine Laufzeit 1502 nur mit einer GPU-Instanz 1404 kommunizieren kann, der die Laufzeit 1502 zum Verwalten zugewiesen ist. Der GPU-Hypervisor 1520 kann ferner Time-Slicing und/oder andere Hardware-Sharing-Techniken verwenden, um die Anforderungen von den Laufzeiten 1502 zu bedienen. Der GPU-Hypervisor 1520 kann Hardwareressourcen der GPU 104 besitzen und Zugriff (z. B. vollständiger Zugriff) auf die Hardware der GPU 104 kann von dem GPU-Hypervisor 1520 basierend mindestens auf Zuweisungen gewährt werden, die von dem GPU-Hypervisor 1520 der Hardwareressourcen zu den Partitionen und/oder Laufzeiten 1502 vorgenommen werden. Im Gegensatz zu einem herkömmlichen Hypervisor, der Zugriffssteuerung und Virtualisierung von Hardware durchführt, kann der GPU-Hypervisor 1520 als eine zustandsbehaftete Firewall fungieren. Beispielsweise kann der GPU-Hypervisor 1520 bestimmen, welche Entität wann auf welche Hardwareressourcen zugreifen kann. In einer oder mehreren Ausführungsformen, wenn der GPU-Hypervisor 1520 den Laufzeiten 1502 Hardwareressourcen zuweist. Die Laufzeiten 1502 können direkt auf zugewiesene Hardwareressourcen zugreifen, aber diese Hardwareressourcen werden für den Instanzverwalter 1510 unzugänglich.
  • Wie in 15 angegeben, verbinden sich die physische(n) Schnittstelle(n) 1326 (z. B. eine physische Funktion) mit dem Systemprozessor 144 gemeinsam mit einer virtuellen Schnittstelle 1424A oder 1424N (z. B. virtuellen Funktionen) für jede der GPU-Instanzen 1404A oder 1404N. Wie hierin beschrieben, können die virtuellen Schnittstellen 1424A oder 1424N unter Verwendung von SR-IOV implementiert werden. Die virtuellen Schnittstellen 1424A und 1424N können den gesamten Speicher für eine entsprechende GPU-Instanz exponieren, der für den Zugriff durch eine entsprechende VM 116 über entsprechende Datenpfade 1550 verfügbar ist.
  • Wie von den Datenpfaden 1550 angegeben, kann ein Arbeitsstart von dem Arbeitsstarter 126 der GPU-Instanz 1404A von der virtuellen Schnittstelle 1424A empfangen werden, was beispielsweise den Betrieb der Rechen-Engine 128 (oder der Speicherzugriffseinheit 130, oder des Videoprozessors 132) veranlasst. Infolgedessen kann die Rechen-Engine 128 über den/die Cache(s) 134 aus Slices der RAM-Partition(en) 1336 lesen und/oder in diese schreiben und dann beispielsweise an eine andere Adresse oder einen anderen RAM(s) 136 zurückschreiben. In diesem Prozess kann eine MMU 1540 eine virtuelle MMU (VMMU) 1530 verwenden, um eine Adressübersetzung 1554 durchzuführen, um physische Systemadressen aus virtuellen Adressen zu bestimmen, die mit der GPU-Instanz 1404A assoziiert sind.
  • In mindestens einer Ausführungsform hat eine virtuelle Schnittstelle für jede GPU-Instanz 1404 Zugriff auf einen begrenzten Registerraum, der für die GPU-Instanz 1404 spezifisch ist, und Speicher-Slices, die der GPU-Instanz 1404 zugewiesen werden (z. B. von dem Instanzverwalter 1510 während des Bootens). Wenn beispielsweise jede GPU-Instanz 1404 während des Bootens konfiguriert wird (z. B. das hierin beschriebene sichere und gemessene Booten), kann jeder GPU-Instanz 1404 die exklusive Nutzung von Ressourcen der GPU 104 zugeordnet werden, wie der GPU-Ressourcen, die als einer bestimmten GPU-Instanz-TEE 1372 in 13 entsprechend angegeben sind.
  • Wenn die GPU-Instanz 1404A beispielsweise Daten aus dem RAM 136 abruft, kann die GPU-Instanz 1404A daher nur auf die Cache-Partition(en) 1334 und/oder die RAM-Partition(en) 1336, die der TCB der GPU-TEE 1370 entsprechen, zugreifen. Aliasing des Cache 134 darf nicht über Speichersegmente hinweg verwendet werden.
  • Initialisierung/Schutz 1552 in 15 kann das Konfigurieren von Speicherverwaltung und Hardware-Firewalls (z. B. während des Bootens), das Abbilden der virtuellen Schnittstellen 1324 zu entsprechenden Laufzeiten 1502, das Zuordnen beliebiger der verschiedenen IDs zu bestimmten GPU-Instanzen 1404 und/oder Speicherpartitionen und/oder das Verwenden beliebiger der verschiedenen IDs beinhalten, um eine Speicherzugriffsanforderung zu verifizieren. Die Initialisierung/der Schutz 1552 kann auch das Senden des/der kryptografischen Schlüssel(s) 1368 an die entsprechende GPU-Instanz 1404 zur Verwendung durch die Speicherzugriffseinheit 130 der GPU-Instanz 1404 (z. B. während der Laufzeit nach dem Booten) beinhalten.
  • Beim Konfigurieren der Speicherverwaltung für die GPU-Instanzen 1404 kann die VMMU 1530 (eine MMU zum Verwalten von virtuellem Speicher) Seitentabellen der ersten Ebene mindestens basierend darauf konfigurieren, welche GPU-Instanzen 1404 Zugriff auf welche physischen Speicherseiten aufweisen. Ferner kann die MMU 1540 (z. B. die hierin beschriebene MMU) von dem Treiber 122 für den Mandanten und/oder die zusammengesetzte TEE 1350 konfiguriert werden, um die Seitentabellenabbildungen innerhalb der GPU-Instanz 1404 zu konfigurieren. Beim Verarbeiten von Speicheranforderungen von einer GPU-Instanz 1404, kann die MMU 1540 dann die VMMU 1530 für die Adressübersetzung 1554 verwenden.
  • Für den Fall, dass die VMMU 1530 kompromittiert (z. B. falsch programmiert) ist, kann eine GPU-Instanz 1404 in der Lage sein, auf den Speicher einer anderen GPU-Instanz 1404 zuzugreifen. In mindestens einer Ausführungsform können eine oder mehrere Firewalls (die z. B. in der MMU 1540 implementiert sind) verwendet werden, um die Fähigkeit der VMMU 1530, auf diese Weise verwendet zu werden, abzuschwächen. Beispielsweise können die eine oder die mehreren Firewalls Segment- und/oder Partitionskennungen (IDs), wie Swizzle-IDs, von Speicherzugriffsanforderungen prüfen und einen Fehler erzeugen oder anderweitig den Zugriff auf den entsprechenden Speicher blockieren, falls eine Zugriffsanforderung außerhalb einer partitionierten Speichergrenze liegt, die der/den Segment-ID(s) entspricht.
  • In mindestens einer Ausführungsform kann eine Segment-ID auswählen, auf welche Partition (z. B. die Cache-Partition 1334) eine GPU-Instanz 1404, die eine Speicheranforderung stellt, zugreifen kann. Wenn beispielsweise eine GPU-Instanz 1404 versucht, auf lokalen Speicher zuzugreifen, kann die Segment-ID einen oder mehrere Bereiche definieren, die mit der physischen Systemadresse verglichen werden, um die entsprechende Partition zu bestimmen. Jeder GPU-Instanz 1404 können eine oder mehrere Segment-IDs zugewiesen werden, und Speicheranforderungen von der GPU-Instanz 1404, die eine Segment-ID angeben, die nicht mit der/den Segment-ID(s), die der GPU-Instanz 1404 zugewiesen sind, übereinstimmt, können mindestens basierend auf einem Vergleich der IDs blockiert werden. In einer oder mehreren Ausführungsformen kann eine Speicheranforderung eine oder mehrere Engine-IDs (z. B. Kopier-Engine-IDs), Gast-IDs (die z. B. einer VM 116 entsprechen) und/oder GPU-Instanz-IDs angeben, die von der Entität abhängen, die die Anforderung initiiert. Jede Kombination dieser IDs kann auf eine Segment-ID abgebildet werden. In einer oder mehreren Ausführungsformen kann, wenn eine Entität eine Anforderung stellt, eine entsprechende Entitäts-ID auf eine Segment-ID abgebildet werden, die mit einer zugewiesenen Segment-ID verglichen wird, um zu bestimmen, ob die Speicheranforderung blockiert oder zugelassen werden soll.
  • In weiterer Hinsicht können die eine oder die mehreren Firewalls, die (z. B. von der MMU 1540) verwendet werden, um Daten in dem Vorrichtungsspeicher der GPU 104 zu isolieren, eine oder mehrere Segmentmasken verwenden. In mindestens einer Ausführungsform kann die VMMU 1530 eine oder mehrere Bitmasken implementieren, wobei jedes Bit bzw. alle Bits einem Segment bzw. Segmenten des Speichers entspricht/entsprechen. In mindestens einer Ausführungsform kann jedes Segment eine feste Größe haben, wie jeweils 32 Megabyte, die unter Verwendung von einem oder mehreren Registern konfigurierbar sein kann. In einer oder mehreren Ausführungsformen kann/können die Segmentmaske(n) in einer Datenstruktur, wie einer Tabelle, gespeichert und von einer der verschiedenen hierin beschriebenen IDs, wie einer Gast-ID, die eine oder mehrere Entitäten angibt, die der/den Segmentmaske(n) zugewiesen sind, assoziiert werden.
  • In einer oder mehreren Ausführungsformen können, wenn eine Entität eine Anforderung stellt, eine entsprechende Entitäts-ID und Segmentmaske, die von der Anforderung angegeben werden, verwendet werden, um die Segmentmaske(n) nachzuschlagen, die mit der von der Anforderung angegebenen Segmentmaske verglichen wird, um zu bestimmen, ob die Speicheranforderung blockiert oder zugelassen werden soll. Wenn beispielsweise eine Anforderung von einer Entität von der MMU 1540 empfangen wird, kann die Anforderung eine Client-ID und eine Engine-ID beinhalten. Die Client-ID kann eine GPU-Instanz-ID angeben (z. B. darauf abgebildet werden), und die Engine-ID kann die Seitentabellen angeben (z. B. darauf abgebildet werden), die zum Übersetzen der Anforderung verwendet werden sollen, sowie die Gast-ID angeben (z. B. darauf abgebildet werden), die mit der Anforderung assoziiert ist, (z. B. die Gast-ID des Gasts, dem die Kopier-Engine, der die mit der Maschinen-ID zugewiesen oder an die sie gebunden ist).
  • Unter Bezugnahme auf 16, ist 16 ein Ablaufdiagramm, das ein Verfahren 1600 einer PPU, wie einer oder mehrerer GPU(s) 104 zeigt, das verwendet werden kann, um Daten innerhalb einer TEE, die eine PPU-Instanz verwendet, zu verarbeiten, gemäß mindestens einigen Ausführungsformen der vorliegenden Offenbarung. Das Verfahren 1600 beinhaltet bei Block B1602 das Konfigurieren mindestens eines Teils einer TEE, die einer oder mehreren PPU-Instanzen entspricht. Beispielsweise kann die GPU 104 die GPU-Instanz-TEE 1372 konfigurieren (z. B. unter Verwendung eines sicheren und gemessenen Bootens), die der GPU-Instanz 1404A der GPU 104 entspricht.
  • Bei Block B1604 beinhaltet das Verfahren 1600 das Bereitstellen von Zugriff auf die eine oder die mehreren PPU-Instanzen über eine oder mehrere virtuelle Schnittstellen, die einer oder mehreren physischen Schnittstellen entsprechen. Beispielsweise kann der Systemprozessor 144 der VM 116 in der CPU-TEE 1370, die der CPU 102 entspricht, Zugriff auf die GPU-Instanz 1404A über die virtuelle Schnittstelle 1424A, die der physischen Schnittstelle 1326 entspricht, bereitstellen.
  • Bei Block B1606 beinhaltet das Verfahren 1600 das Verarbeiten von Daten, die über die eine oder die mehreren virtuellen Schnittstellen empfangen werden, innerhalb der TEE, die der einen oder den mehreren PPU-Instanzen entspricht, und unter Verwendung der einen oder der mehreren PPU-Instanzen. Beispielsweise kann die GPU-Instanz 1404A innerhalb der GPU-Instanz-TEE 1372 Daten verarbeiten, die von der VM 116 über die virtuelle Schnittstelle 1424A empfangen werden.
  • BEISPIELHAFTE COMPUTING-VORRICHTUNG
  • 17 ist ein Blockdiagramm einer/mehrerer beispielhafter Computing-Vorrichtung(en) 1700, die zur Verwendung bei der Umsetzung einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist/sind. Die Computing-Vorrichtung 1700 kann ein Interconnect-System 1702 beinhalten, das die folgenden Vorrichtungen direkt oder indirekt koppelt: Speicher 1704, eine oder mehrere Zentraleinheiten (CPUs) 1706, eine oder mehrere Grafikverarbeitungseinheiten (GPUs) 1708, eine Kommunikationsschnittstelle 1710, Eingabe-/Ausgabe-(E/A)-Ports 1712, Eingabe-/Ausgabekomponenten 1714, eine Stromversorgung 1716, eine oder mehrere Präsentationskomponenten 1718 (z. B. Anzeige(n)) und eine oder mehrere Logikeinheiten 1720. In mindestens einer Ausführungsform kann/können die Computing-Vorrichtung(en) 1700 eine oder mehrere virtuelle Maschinen (VM) umfassen, und/oder jede ihrer Komponenten kann aus virtuellen Komponenten (z. B. aus virtuellen Hardwarekomponenten) bestehen. Als nicht einschränkende Beispiele können eine oder mehrere GPUs 1708 eine oder mehrere vGPUs umfassen, eine oder mehrere CPUs 1706 können eine oder mehrere vCPUs umfassen und/oder eine oder mehrere Logikeinheiten 1720 können eine oder mehrere virtuelle Logikeinheiten umfassen. Die Computing-Vorrichtung(en) 1700 kann (können) somit diskrete Komponenten (z. B. eine vollständige, der Computing-Vorrichtung 1700 zugeordnete GPU), virtuelle Komponenten (z. B. einen Teil einer der Computing-Vorrichtung 1700 zugeordneten GPU) oder eine Kombination davon beinhalten.
  • Auch wenn die verschiedenen Blöcke der 17 als über das Verschaltungssystem 1702 mit Linien verbunden gezeigt sind, soll dies nicht einschränkend sein und dient nur der Klarheit. Beispielsweise kann in einigen Ausführungsformen eine Präsentationskomponente 1718, wie eine Anzeigevorrichtung, als E/A-Komponente 1714 betrachtet werden (z. B. wenn die Anzeige ein Touchscreen ist). Als ein anderes Beispiel können die CPUs 1706 und/oder GPUs 1708 Speicher beinhalten (z. B. kann der Speicher 1704 repräsentativ für eine Speichervorrichtung zusätzlich zu dem Speicher der GPUs 1708, der CPUs 1706 und/oder anderen Komponenten sein). Mit Worten ist die Computing-Vorrichtung der 17 lediglich veranschaulichend. Es wird nicht zwischen Kategorien wie „Workstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Vorrichtung“, „Mobilgerät“, „Handheld-Vorrichtung“, „Spielkonsole“, „elektronische Steuereinheit (Electronic Control Unit - ECU)“, „Virtual-Reality-System“ und/oder anderen Vorrichtungs- oder Systemtypen unterschieden, da alle innerhalb des Geltungsbereichs der Computing-Vorrichtung der 17 betrachtet werden.
  • Das Interconnect-System 1702 kann eine oder mehrere Verbindungen oder Busse darstellen, wie einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Das Interconnect-System 1702 kann einen oder mehrere Bus- oder Verbindungstypen beinhalten, wie einen Bus mit Industriestandardarchitektur (Industry Standard Architecture - ISA), einen Bus mit erweiterter Industriestandardarchitektur (Extended Industry Standard Architecture - EISA), einen Bus der Video Electronic Standards Association (VESA), einen Bus für Interconnect einer Peripheriekomponente (PCI), einen Bus für Express-Interconnect einer Peripheriekomponente (PCIe) und/oder eine andere Art von Bus oder Verbindung. In einigen Ausführungsformen gibt es direkte Verbindungen zwischen Komponenten. Als ein Beispiel kann die CPU 1706 direkt mit dem Speicher 1704 verbunden sein. Ferner kann die CPU 1706 direkt mit der GPU 1708 verbunden sein. Wo eine direkte oder Punkt-zu-Punkt-Verbindung zwischen Komponenten besteht, kann das Interconnect-System 1702 einen PCIe-Link beinhalten, um die Verbindung auszuführen. In diesen Beispielen braucht kein PCI-Bus in der Computing-Vorrichtung 1700 beinhaltet zu sein.
  • Der Speicher 1704 kann eine beliebige Vielfalt computerlesbarer Medien beinhalten. Die computerlesbaren Medien können beliebige verfügbare Medien sein, auf welche die Computing-Vorrichtung 1700 zugreifen kann. Die computerlesbaren Medien können sowohl flüchtige als auch nichtflüchtige Medien sowie entfernbare und nicht entfernbare Medien beinhalten. Beispielhaft und nicht einschränkend können die computerlesbaren Medien Computerspeichermedien und Kommunikationsmedien umfassen.
  • Die Computerspeichermedien können sowohl flüchtige als auch nichtflüchtige und/oder entfernbare und nicht entfernbare Medien beinhalten, die in jedem beliebigen Verfahren oder jeder beliebigen Technologie zum Speichern von Informationen, wie computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder anderen Daten, implementiert werden. Beispielsweise kann der Speicher 1704 computerlesbare Anweisungen speichern (die z. B. ein Programm oder Programme und/oder ein oder mehrere Programmelemente, wie ein Betriebssystem, darstellen). Die Speichermedien für Computer können RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologien, CD-ROM, Digital Versatile Disks (DVD) oder andere optische Datenträger, Magnetkassetten, Magnetband, Magnetplattenspeicher oder andere magnetische Speichervorrichtung, oder jedes andere Medium, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das die Computing-Vorrichtung 1700 zugreifen kann, beinhalten, sind darauf aber nicht beschränkt. Im hierin verwendeten Sinne umfassen Computerspeichermedien keine Signale an sich.
  • Die Computerspeichermedien können computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen in einem modulierten Datensignal, wie einer Trägerwelle oder einem anderen Transportmechanismus, verkörpern und beinhalten beliebige Informationsliefermedien. Der Begriff „moduliertes Datensignal“ kann auf ein Signal verweisen, das eine oder mehrere seiner Eigenschaften auf eine derartige Weise verändert aufweist, dass Informationen in dem Signal codiert werden. Beispielsweise und nicht einschränkend, können Computerspeichermedien verkabelte Medien beinhalten, wie ein verkabeltes Netzwerk oder eine drahtgebundene Verbindung, und drahtlose Medien, wie akustische, HF, Infrarot- und andere drahtlose Medien. Kombinationen aller Vorstehenden sollten ebenfalls im Umfang computerlesbarer Medien beinhaltet sein.
  • Die CPU(s) 1706 kann/können konfiguriert sein, um mindestens einige der computerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten der Computing-Vorrichtung 1700 zu steuern, um eines/einen oder mehrere der Verfahren und/oder Prozesse, die hierin beschrieben sind, durchzuführen. Die CPU(s) 1706 können jeweils einen oder mehrere Kerne (z. B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.) beinhalten, die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu handhaben. Die CPU(s) 1706 können eine beliebige Art von Prozessor beinhalten und können unterschiedliche Arten von Prozessoren, abhängig von der Art der Computing-Vorrichtung 1700 beinhalten (z. B. Prozessoren mit weniger Kernen für mobile Vorrichtungen und Prozessoren mit mehr Kernen für Server). Beispielsweise kann der Prozessor in Abhängigkeit von der Art der Computing-Vorrichtung 1700 ein Advanced-RISC-Machines-Prozessor (ARM-Prozessor) sein, der unter Verwendung von Reduced Instruction Set Computing (RISC) implementiert wird, oder ein x86-Prozessor, der unter Verwendung von Complex Instruction Set Computing (CISC) implementiert wird. Die Computing-Vorrichtung 1700 kann eine oder mehrere CPUs 1706 zusätzlich zu einem oder mehreren Mikroprozessoren oder zusätzlichen Coprozessoren, wie mathematischen Coprozessoren, beinhalten.
  • Zusätzlich oder alternativ zu den CPU(s) 1706 kann/können die GPU(s) 1708 dazu konfiguriert sein, mindestens einige der computerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten der Computing-Vorrichtung 1700 zu steuern, um eines/einen oder mehrere der Verfahren und/oder Prozesse, die hierin beschrieben sind, durchzuführen. Eine oder mehrere der GPU(s) 1708 können eine integrierte GPU sein (z. B. mit einer oder mehreren der CPU(s) 1706), und/oder eine oder mehrere der GPU(s) 1708 können eine diskrete GPU sein. In Ausführungsformen können eine oder mehrere der GPU(s) 1708 ein Coprozessor einer oder mehrerer CPU(s) 1706 sein. Die GPU(s) 1708 können von der Computing-Vorrichtung 1700 verwendet werden, um Grafiken (z. B. 3D-Grafiken) zu rendern oder Universalberechnungen durchzuführen. Beispielsweise können die GPU(s) 1708 für Universalberechnungen auf GPUs (GPGPU) verwendet werden. Die GPU(s) 1708 können Hunderte oder Tausende von Kernen beinhalten, die Hunderte oder Tausende von Softwarethreads gleichzeitig handhaben können Die GPU(s) 1708 kann/können Pixeldaten für Ausgabebilder als Reaktion auf Renderbefehle generieren (z. B. Renderbefehlen aus der/den CPU(s) 1706, die über eine Host-Schnittstelle empfangen werden). Die GPU(s) 1708 kann/können Grafikspeicher beinhalten, wie Anzeigespeicher, von Pixeldaten oder anderer geeigneter Daten, wie GPGPU-Daten, zu speichern. Der Anzeigespeicher kann als Teil des Speichers 1704 beinhaltet sein. Die GPU(s) 1708 kann/können zwei oder mehrere GPUs, die parallel arbeiten (z. B. über einen Link), beinhalten. Der Link kann die GPUs direkt verbinden (z. B. unter Verwendung von NVLINK) oder kann die GPUs über einen Switch verbinden (z. B. unter Verwendung von NVSwitch). Wenn sie miteinander kombiniert werden, kann jede GPU 1708 Pixeldaten oder GPGPU-Daten für unterschiedliche Teile einer Ausgabe oder für unterschiedliche Ausgaben generieren (z. B. eine erste GPU für ein erstes Bild und eine zweite GPU für ein zweites Bild). Jede GPU kann ihren eigenen Speicher beinhalten oder kann Speicher mit anderen GPUs gemeinsam nutzen.
  • Zusätzlich oder alternativ zu den CPU(s) 1706 und/oder der/den GPU(s) 1708 kann/können die Logikeinheit(en) 1720 dazu konfiguriert sein, mindestens einige der computerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten der Computing-Vorrichtung 1700 zu steuern, um eines/einen oder mehrere der Verfahren und/oder Prozesse, die hierin beschrieben sind, durchzuführen. In Ausführungsformen kann/können die CPU(s) 1706, die GPU(s) 1708 und/oder die Logikeinheit(en) 1720 einzeln oder gemeinsam eine beliebige Kombination der Verfahren, Prozesse und/oder Teile davon durchführen. Eine oder mehrere der Logikeinheiten 1720 kann/können Teil von und/oder integriert in eine oder mehrere der CPU(s) 1706 und/oder der GPU(s) 1708 sein, und/oder eine oder mehrere der Logikeinheiten 1720 kann/können diskrete Komponenten oder anderweitig extern zu der/den CPU(s) 1706 und/oder der/den GPU(s) 1708 sein. In Ausführungsformen können eine oder mehrere der logischen Einheiten 1720 ein Coprozessor einer oder mehrerer der CPU(s) 1706 und/oder einer oder mehrerer der GPU(s) 1708 sein.
  • Beispiele der Logikeinheit(en) 1720 beinhalten einen oder mehrere Verarbeitungskerne und/oder Komponenten davon, wie Datenverarbeitungseinheiten (Data Processing Units - DPUs), Tensorkerne (Tensor Cores - TCs), Tensor-Verarbeitungseinheiten (Tensor Processing Units - TPUs), visuelle Pixelkerne (Pixel Visual Cores - PVC), Bildverarbeitungseinheiten (Vision Processing Units - VPUs), Grafikverarbeitungscluster (Graphics Processing Cluster - GPC), Texturverarbeitungscluster (Texture Processing Cluster - TPCs), Streaming-Multiprozessoren (SMs), Baumdurchquerungseinheiten (Tree Traversal Units - TTUs), Beschleuniger für künstliche Intelligenz (Artificial Intelligence Accelerators - AlAs), Deep-Learning-Beschleuniger (Deep Learning Accelerators - DLAs), arithmetische Logikeinheiten (ALUs), anwendungsspezifische integrierte Schaltungen (ASICs), Gleitkommaeinheiten (Floating Point Units - FPUs), Eingabe/Ausgabe-Elemente (E/A-Elemente), Elemente für das Interconnect von Peripheriekomponenten (PCI) oder Express-Interconnect von Peripheriekomponenten (Peripheral Component Interconnect Rxpress - PCIe) und/oder dergleichen.
  • Die Kommunikationsschnittstelle 1710 kann einen oder mehrere Empfänger, Sender und/oder Transceiver beinhalten, die es der Computing-Vorrichtung 1700 ermöglichen, mit anderen Computing-Vorrichtungen über ein elektronisches Kommunikationsnetz, das drahtgebundene und/oder drahtlose Kommunikation beinhaltet, zu kommunizieren. Die Kommunikationsschnittstelle 1710 kann Komponenten und Funktionalität beinhalten, um Kommunikation über eine Anzahl unterschiedlicher Netzwerke zu ermöglichen, wie drahtlose Netzwerke (z. B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), drahtgebundene Netzwerke (z. B. Kommunikation über Ethernet oder InfiniBand), Weiterverkehrsnetzwerke mit geringer Leistung (z. B. LoRaWAN, SigFox usw.) und/oder das Internet. In einer oder mehreren Ausführungsformen können die Logikeinheit(en) 1720 und/oder die Kommunikationsschnittstelle 1710 eine oder mehrere Datenverarbeitungseinheiten (DPUs) beinhalten, um über ein Netzwerk und/oder durch das Interconnect-System 1702 empfangene Daten direkt an eine oder mehrere GPU(s) 1708 (z. B. einen Speicher davon) zu übertragen.
  • Die E/A-Ports 1712 können die Computing-Vorrichtung 1700 dazu befähigen, logisch an andere Vorrichtungen gekoppelt zu werden, einschließlich der E/A-Komponenten 1714, der Präsentationskomponente(n) 1718 und/oder anderer Komponenten, von denen einige in der Computing-Vorrichtung 1700 eingebaut (z. B. darin integriert) sein können. Veranschaulichende E/A-Komponenten 1714 beinhalten ein Mikrofon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, einen Gamecontroller, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Vorrichtung usw. Die E/A-Komponenten 1714 können eine natürliche Benutzerschnittstelle (Natural User Interface - NUI) bereitstellen, die Luftgesten, Spracheingabe oder andere von einem Benutzer erzeugte physiologische Eingaben verarbeitet . In einigen Fällen können Eingaben zur weiteren Verarbeitung an ein geeignetes Netzwerkelement übertragen werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Styluserkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als auch in der Nähe des Bildschirms, Luftgesten, Kopf- und Augenverfolgung und Touch-Erkennung (wie unten näher beschrieben), die mit einer Anzeige der Computing-Vorrichtung 1700 assoziiert ist, implementieren. Die Computing-Vorrichtung 1700 kann Tiefenkameras, wie stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, Touchscreen-Technologie und Kombinationen davon, zur Gestenerfassung und - erkennung, beinhalten. Zusätzlich kann die Computing-Vorrichtung 1700 Beschleunigungsmesser oder Gyroskope (z. B. als Teil einer Trägheitsmesseinheit (IMU)), die eine Bewegungserfassung ermöglichen, beinhalten. In einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope von der Computing-Vorrichtung 1700 verwendet werden, um immersive erweiterte Realität oder virtuelle Realität zu rendern.
  • Die Stromversorgung 1716 kann eine fest verdrahtete Stromversorgung, eine Batteriestromversorgung oder eine Kombination davon beinhalten. Die Stromversorgung 1716 kann der Computing-Vorrichtung 1700 Strom bereitstellen, um den Komponenten der Computing-Vorrichtung 1700 den Betrieb zu ermöglichen.
  • Die Darstellungskomponente(n) 1718 kann/können eine Anzeige (z. B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, ein Heads-Up-Display (HUD), andere Anzeigetypen oder eine Kombination davon), Lautsprecher und/oder andere Darstellungskomponenten beinhalten. Die Präsentationskomponent(en) 1718 können Daten von anderen Komponenten (z. B. den GPU(s) 1708, den CPU(s) 1706, DPU(s), usw.) empfangen und die Daten (z. B. als Bild, Video, Ton usw.) ausgeben.
  • BEISPIELHAFTES RECHENZENTRUM
  • 18 veranschaulicht ein beispielhaftes Rechenzentrum 1800, das in mindestens einer Ausführungsform der vorliegenden Offenbarung verwendet werden kann. Das Rechenzentrum 1800 kann eine Rechenzentrum-Infrastrukturschicht 1810, eine Framework-Schicht 1820, eine Softwareschicht 1830 und/oder eine Anwendungsschicht 1840 beinhalten.
  • Wie in 18 gezeigt, kann die Rechenzentrum-Infrastrukturschicht 1810 einen Ressourcen-Orchestrator 1812, gruppierte Computing-Ressourcen 1814 und Knoten-Computing-Ressourcen („Knoten-C.R.s“) 1816(1)-1816(N) beinhalten, wobei „N“ eine beliebige positive Ganzzahl darstellt. In mindestens einer Ausführungsform können die Knoten-C. R.s 1816(1)-1816(N) eine beliebige Anzahl von Zentraleinheiten (CPUs) oder andere Prozessoren (einschließlich DPUs, Beschleuniger, feldprogrammierbare Gate-Arrays (FPGAs), Grafikprozessoren oder Grafikverarbeitungseinheiten (GPUs) usw.), Speichervorrichtungen (z. B. dynamischer Nur-Lese-Speicher), Datenspeichervorrichtungen (z. B. Festkörper- oder Festplattenlaufwerke), Netzwerk-Ein-/Ausgabevorrichtungen (NW E/A), Netzwerk-Switches, virtuelle Maschinen (VMs), Leistungsmodule und/oder Kühlmodule usw. beinhalten, ohne darauf beschränkt zu sein. In mindestens einer Ausführungsform können ein oder mehrere Knoten-C.R.s unter den Knoten-C.R.s 1816(1)-1816(N) einem Server entsprechen, der eine oder mehrere der oben genannten Computing-Ressourcen aufweist. Darüber hinaus können die Knoten-C.R.s 1816(1)-18161(N) in einigen Ausführungsformen eine oder mehrere virtuelle Komponenten beinhalten, wie vGPUs, vCPUs und/oder dergleichen, und/oder können einer oder mehrere der Knoten-C. R.s 1816(1)-1816(N) einer virtuellen Maschine (VM) entsprechen.
  • In mindestens einer Ausführungsform können die gruppierten Computing-Ressourcen 1814 separate Gruppierungen von Knoten-C.R.s 1816 beinhalten, die in einem oder mehreren Racks (nicht gezeigt) oder vielen Racks untergebracht sind, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Getrennte Gruppierungen von Knoten-C.R.s 1816 innerhalb von gruppierten Computing-Ressourcen 1814 können gruppierte Rechen-, Netzwerk-, Speicher- oder Speicherungsressourcen beinhalten, die dazu konfiguriert oder zugeordnet werden können, eine oder mehrere Arbeitslasten zu unterstützen. In mindestens einer Ausführungsform können mehrere Knoten-C.R.s 1816, die CPUs, GPUs, DPUs und/oder Prozessoren beinhalten, in einem oder mehreren Racks gruppiert sein, um Rechenressourcen bereitzustellen, um eine oder mehrere Arbeitslasten zu unterstützen. Das eine oder die mehreren Racks können auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und/oder Netzwerk-Switches in beliebiger Kombination beinhalten.
  • Der Ressourcen-Orchestrator 1812 kann einen oder mehrere Knoten-C.R.s 1816(1)-1816(N) und/oder gruppierte Computing-Ressourcen 1814 konfigurieren oder anderweitig steuern. In mindestens einer Ausführungsform kann der Ressourcen-Orchestrator 1812 eine Verwaltungseinheit für Software-Design-Infrastruktur (SDI) für das Rechenzentrum 1800 beinhalten. Der Ressourcen-Orchestrator 1812 kann Hardware, Software oder eine Kombination davon beinhalten.
  • In mindestens einer Ausführungsform, wie in 18 gezeigt, kann die Framework-Schicht 1820 einen Aufgabenplaner 1828, einen Konfigurationsverwalter 1834, einen Ressourcenverwalter 1836 und/oder ein verteiltes Dateisystem 1838 beinhalten. Die Framework-Schicht 1820 kann ein Framework zum Unterstützen von Software 1832 der Softwareschicht 1830 und/oder einer oder mehreren Anwendung(en) 1842 der Anwendungsschicht 1840 beinhalten. Die Software 1832 oder die Anwendung(en) 1842 können jeweils webbasierte Dienstsoftware oder - anwendungen beinhalten, wie diejenigen, die von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. Die Framework-Schicht 1820 kann eine Art von freiem und Open-Source-Software-Webanwendungs-Framework sein, ohne darauf beschränkt zu sein, wie Apache Spark™ (im Folgenden „Spark“), das das verteilte Dateisystem 1838 für umfangreiche Datenverarbeitungen (z. B. „Big Data“) nutzen kann. In mindestens einer Ausführungsform kann der Aufgabenplaner 1828 einen Spark-Treiber beinhalten, um das Einplanen von Arbeitslasten, die von verschiedenen Schichten des Rechenzentrums 1800 unterstützt werden, zu erleichtern. Der Konfigurationsverwalter 1834 kann in der Lage sein, unterschiedliche Schichten zu konfigurieren, wie die Softwareschicht 1830 und die Framework-Schicht 1820, einschließlich Spark und das verteilte Dateisystem 1838 zum Unterstützen einer umfangreicher Datenverarbeitung. Der Ressourcenverwalter 1836 kann in der Lage sein, geclusterte oder gruppierte Computing-Ressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 1838 und des Aufgabenplaners 1828 gebildet oder zugeordnet sind. In mindestens einer Ausführungsform können geclusterte oder gruppierte Computing-Ressourcen die gruppierte Computing-Ressource 1814 auf der Rechenzentruminfrastrukturschicht 1810 beinhalten. Der Ressourcenverwalter 1836 kann mit dem Ressourcen-Orchestrator 1812 koordinieren, um diese abgebildeten oder zugeordneten Computing-Ressourcen zu verwalten.
  • In mindestens einer Ausführungsform kann die Software 1832, die in der Software-Schicht 1830 beinhaltet ist, Software beinhalten, die mindestens von Teilen von Knoten-C.R.s 1816(1)-1816(N), gruppierten Computing-Ressourcen 1814 und/oder dem verteilten Dateisystem 1838 der Framework-Schicht 1820 verwendet wird. Ein oder mehrere Typen von Software können Software zum Durchsuchen von Internet-Webseiten, Software zum Scannen von E-Mails auf Viren, Datenbank-Software und Software für Streaming-Videoinhalte beinhalten, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform können die in der Anwendungsschicht 1840 enthaltenen Anwendung(en) 1842 einen oder mehrere Typen von Anwendungen beinhalten, die mindestens von Teilen der Knoten-C.R.s 1816(1)-1816(N), der gruppierten Computing-Ressourcen 1814 und/oder des verteilten Dateisystems 1838 der Framework-Schicht 1820 verwendet werden. Eine oder mehrere Arten von Anwendungen können eine beliebige Anzahl einer Genomikanwendung, einer kognitiven Rechenanwendung und einer maschinellen Lernanwendung beinhalten, die Trainings- oder Inferenzierungssoftware beinhaltet, Framework-Software des maschinellen Lernens (z. B. PyTorch, TensorFlow, Caffe usw.) und/oder andere maschinelle Lernanwendungen beinhalten, ohne darauf beschränkt zu sein, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden.
  • In mindestens einer Ausführungsform können beliebige des Konfigurationsverwalters 1834, des Ressourcenverwalters 1836 und des Ressourcen-Orchestrators 1812 eine beliebige Anzahl und Art von selbstmodifizierenden Handlungen implementieren, die auf einer beliebigen Menge und Art von Daten basieren, die auf eine beliebige technisch machbare Weise erhoben werden. Selbstmodifizierende Handlungen können einen Rechenzentrumbetreiber des Rechenzentrums 1800 dahingehend entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder schlecht funktionierende Teile eines Rechenzentrums zu vermeiden.
  • Das Rechenzentrum 1800 kann Werkzeuge, Dienste, Software oder andere Ressourcen beinhalten, um ein oder mehrere Maschinenlernmodelle zu trainieren oder Informationen unter Verwendung von einem oder mehreren Maschinenlernmodellen gemäß einer oder mehreren der hierin beschriebenen Ausführungsformen vorherzusagen oder zu inferenzieren. Beispielsweise kann/können ein Maschinenlernmodell(e) trainiert werden, indem Gewichtungsparameter gemäß einer Architektur eines neuronalen Netzes unter Verwendung von Software und/oder Computing-Ressourcen berechnet werden, die vorstehend in Bezug auf das Rechenzentrum 1800 beschrieben sind. In mindestens einer Ausführungsform können trainierte oder eingesetzte Maschinenlernmodelle, die einem oder mehreren neuronalen Netzen entsprechen, verwendet werden, um Informationen unter Verwendung der oben in Bezug auf das Rechenzentrum 1800 beschriebenen Ressourcen zu inferenzieren oder vorherzusagen, indem Gewichtungsparameter verwendet werden, die durch eine oder mehrere Trainingstechniken berechnet werden, wie die hierin beschriebenen, ohne darauf beschränkt zu sein.
  • In mindestens einer Ausführungsform kann das Rechenzentrum 1800 CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs und/oder andere Hardware (oder entsprechende virtuelle Rechenressourcen) verwenden, um Training und/oder Inferenzierung unter Verwendung der oben beschriebenen Ressourcen durchzuführen. Darüber hinaus können eine oder mehrere der oben beschriebenen Software- und/oder Hardware-Ressourcen als Dienst konfiguriert sein, um Benutzern das Trainieren oder Durchführen des Inferenzierens von Informationen zu ermöglichen, wie Bilderkennung, Spracherkennung oder andere Dienste der künstlichen Intelligenz.
  • BEISPIELHAFTE NETZWERKUMGEBUNGEN
  • Netzwerkumgebungen, die für die Verwendung beim Implementieren von Ausführungsformen der Offenbarung geeignet sind, können ein oder mehrere Client-Vorrichtungen, Server, netzwerkverbundene Speicherung (Network Attached Storage - NAS), andere Backend-Vorrichtungen und/oder andere Vorrichtungstypen beinhalten. Die Client-Vorrichtungen, Server und/oder andere Vorrichtungstypen (z. B. jede Vorrichtung) können auf einer oder mehreren Instanzen der Computing-Vorrichtung(en) 1700 der 17 implementiert sein - z. B. kann jede Vorrichtung ähnliche Komponenten, Merkmale und/oder Funktionalität der Computing-Vorrichtung(en) 1700 beinhalten. Zusätzlich, wenn Backend-Vorrichtungen (z. B. Server, NAS usw.) implementiert werden, können die Backend-Vorrichtungen auch Teil eines Rechenzentrums 1800 sein, für das Beispiel in 18 näher beschrieben ist.
  • Komponenten einer Netzwerkumgebung können miteinander über ein oder mehrere Netzwerke, die drahtgebunden, drahtlos oder beides sein können, kommunizieren. Das Netzwerk kann mehrere Netzwerke oder ein Netzwerk von Netzwerken beinhalten. Beispielsweise kann das Netzwerk ein oder mehrere Weitverkehrsnetzwerke (WANs), ein oder mehrere lokale Netzwerke (LANs), ein oder mehrere öffentliche Netzwerke wie das Internet und/oder ein öffentliches Telefonvermittlungsnetz (PSTN) und/oder ein oder mehrere private Netzwerke beinhalten. Wenn das Netzwerk ein drahtloses Telekommunikationsnetz beinhaltet, können Komponenten, wie eine Basisstation, ein Kommunikationsturm oder sogar Zugangspunkte (sowie andere Komponenten) eine drahtlose Konnektivität bereitstellen.
  • Kompatible Netzwerkumgebungen können eine oder mehrere Peer-to-Peer-Netzwerkumgebungen beinhalten, wobei in diesem Fall ein Server möglicherweise nicht in einer Netzwerkumgebung beinhaltet ist, und eine oder mehrere Client-Server-Netzwerkumgebungen, wobei in diesem Fall möglicherweise ein oder mehrere Server in einer Netzwerkumgebung beinhaltet sein können. In Peer-to-Peer-Netzwerkumgebungen kann die hierin in Bezug auf einen oder mehrere Server beschriebene Funktionalität auf einer beliebigen Anzahl von Client-Vorrichtungen implementiert sein.
  • In mindestens einer Ausführungsform kann eine Netzwerkumgebung eine oder mehrere Cloud-basierte Netzwerkumgebungen, eine verteilte Computing-Umgebung, eine Kombination davon usw. beinhalten. Eine Cloud-basierte Netzwerkumgebung kann eine Framework-Schicht, einen Jobplaner, einen Ressourcenverwalter und ein verteiltes Dateisystem beinhalten, die auf einem oder mehreren Servern implementiert sind, die einen oder mehrere Kernnetzwerkserver und/oder Edge-Server beinhalten können. Eine Framework-Schicht kann ein Framework zur Unterstützung von Software einer Software-Schicht und/oder einer oder mehrerer Anwendungen einer Anwendungsschicht beinhalten. Die Software oder Anwendung(en) können jeweils Web-basierte Dienstsoftware oder Anwendungen beinhalten. In Ausführungsformen können eine oder mehrere der Client-Vorrichtungen die Web-basierte Dienstsoftware oder Anwendungen verwenden (z. B. durch Zugreifen auf die Dienstsoftware und/oder Anwendungen über eine oder mehrere Anwendungsprogrammierschnittstellen (API)). Bei der Framework-Schicht kann es sich um eine Art freies und Open-Source-Software-Webanwendungs-Framework handeln, das etwa ein verteiltes Dateisystem für die Verarbeitung großer Datenmengen (z. B. „Big Data“) verwenden kann, ist aber nicht darauf beschränkt.
  • Eine Cloud-basierte Netzwerkumgebung kann Cloud-Computing und/oder Cloud-Speicherung bereitstellen, die eine beliebige Kombination von hierin beschriebenen Computing- und/oder Datenspeicherfunktionen (oder einen oder mehrere Teile davon) ausführen. Jede dieser verschiedenen Funktionen kann über mehrere Standorte von zentralen oder Kernservern (z. B. von einem oder mehreren Rechenzentren, die über einen Staat, eine Region, ein Land, den Globus usw. verteilt sein). Falls eine Verbindung zu einem Benutzer (z. B. einer Client-Vorrichtung) relativ nahe bei einem oder mehreren Edge-Servern ist, können ein oder mehrere Kernserver dem oder den Edge-Servern mindestens einen Teil der Funktionalität zuweisen. Eine Cloud-basierte Netzwerkumgebung kann privat sein (z. B. auf eine einzelne Organisation beschränkt), kann öffentlich sein (z. B. für viele Organisationen verfügbar) und/oder eine Kombination davon sein (z. B. eine hybride Cloud-Umgebung).
  • Die Client-Vorrichtung(en) kann/können mindestens einige der Komponenten, Merkmale und Funktionalitäten der hierin unter Bezugnahme auf 17 beschriebenen beispielhaften Computing-Vorrichtung(en) 1700 beinhalten. Als ein Beispiel und nicht einschränkend kann eine Client-Vorrichtung als Personal Computer (PC), Laptop-Computer, mobile Vorrichtung, Smartphone, Tablet-Computer, Smartwatch, tragbarer Computer, Personal Digital Assistant (PDA), MP3-Player, Virtual-Reality-Headset, System oder Vorrichtung zur globalen Positionsbestimmung (GPS), Videoplayer, Videokamera, Überwachungsvorrichtung oder -system, Fahrzeug, Boot, Flugschiff, virtuelle Maschine, Drohne, Roboter, tragbare Kommunikationsvorrichtung, Vorrichtung in einem Krankenhaus, Spielvorrichtung oder -system, Unterhaltungssystem, Fahrzeugcomputersystem, eingebetteter Systemcontroller, Fernbedienung, Haushaltsgerät, Unterhaltungselektronikgerät, Workstation, Edge-Vorrichtung, eine beliebige Kombination dieser umrissenen Vorrichtungen oder jede andere geeignete Vorrichtung verkörpert sein.
  • Die Offenbarung kann im allgemeinen Kontext von Computercode- oder maschinenverwendbaren Anweisungen, einschließlich computerausführbarer Anweisungen, wie Programmmodulen, die von einem Computer oder einer anderen Maschine, wie einem Personal Data Assistent oder einem anderen Handheld-Gerät, ausgeführt werden, beschrieben werden. Im Allgemeinen verweisen Programmmodule, einschließlich Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw. auf Code, der bestimmte Aufgaben ausführt oder bestimmte abstrakte Datentypen implementiert. Die Offenbarung kann in einer Vielfalt von Systemkonfigurationen praktiziert werden, einschließlich handgehaltenen Vorrichtungen, Unterhaltungselektronik, Allzweckcomputern, spezielleren Computing-Vorrichtungen usw. Die Offenbarung kann auch in verteilten Computing-Umgebungen praktiziert werden, in denen Aufgaben von entfernten Verarbeitungsvorrichtungen, die über ein Kommunikationsnetz verbunden sind, durchgeführt werden.
  • Wie hierin verwendet, sollte eine Aufzählung von „und/oder“ in Bezug auf zwei oder mehr Elemente derart ausgelegt werden, dass sie nur ein Element oder eine Kombination von Elementen bedeutet. Beispielsweise kann „Element A, Element B und/oder Element C“ nur Element A, nur Element B, nur Element C, Element A und Element B, Element A und Element C, Element B und Element C oder Elemente A, B und C beinhalten. Außerdem kann „mindestens eines von Element A oder Element B“ mindestens eines von Element A, mindestens eines von Element B oder mindestens eines von Element A und mindestens eines von Element B beinhalten. Ferner kann „mindestens eines von Element A und Element B“ mindestens eines von Element A, mindestens eines von Element B oder mindestens eines von Element A und mindestens eines von Element B beinhalten.
  • Der Gegenstand der vorliegenden Offenbarung wird hierin spezifisch beschrieben, um gesetzliche Anforderungen zu erfüllen. Die Beschreibung selbst soll jedoch den Umfang dieser Offenbarung nicht einschränken. Vielmehr haben die Erfinder in Betracht gezogen, dass der beanspruchte Gegenstand auch auf andere Weise verkörpert werden könnte, um unterschiedliche Schritte oder Kombinationen von Schritten ähnlich den in diesem Dokument beschriebenen in Verbindung mit anderen gegenwärtigen oder zukünftigen Technologien zu beinhalten. Obwohl die Begriffe „Schritt“ und/oder „Block“ hierin verwendet werden können, um unterschiedliche Elemente der eingesetzten Verfahren zu bezeichnen, sollten die Begriffe darüber hinaus nicht dahingehend ausgelegt werden, dass sie eine bestimmte Reihenfolge unter oder zwischen verschiedenen hierin offenbarten Schritten implizieren, es sei denn, die Reihenfolge der einzelnen Schritte ist explizit beschrieben.

Claims (20)

  1. Verfahren, umfassend: Erstellen eines oder mehrerer sicherer Kommunikationskanäle zwischen einer oder mehreren virtuellen Maschinen (VMs), die innerhalb einer vertrauenswürdigen Ausführungsumgebung (TEE) ausgeführt werden, die einem oder mehreren Prozessoren entspricht, und einer TEE, die einer oder mehreren parallelen Verarbeitungseinheiten (PPUs) entspricht; Empfangen, unter Verwendung des einen oder der mehreren sicheren Kommunikationskanäle, von Daten von der einen oder den mehreren virtuellen Maschinen (VMs), die innerhalb der TEE ausgeführt werden und dem einen oder den mehreren Prozessoren entsprechen; und Verarbeiten der Daten innerhalb der TEE, die der einen oder den mehreren PPUs entsprechen, unter Verwendung der einen oder der mehreren PPUs.
  2. Verfahren nach Anspruch 1, ferner umfassend: Entschlüsseln der unter Verwendung des einen oder der mehreren sicheren Kommunikationskanäle empfangenen Daten innerhalb der TEE, die der einen oder den mehreren PPUs entspricht, um entschlüsselte Daten zu generieren; und Speichern der entschlüsselten Daten in einem oder mehreren geschützten Speicherbereichen der TEE, die der einen oder den mehreren PPUs entsprechen, wobei das Verarbeiten der Daten Zugreifen auf die entschlüsselten Daten aus dem einen oder den mehreren geschützten Speicherbereichen beinhaltet.
  3. Verfahren nach Anspruch 2, wobei das Entschlüsseln unter Verwendung eines oder mehrerer sicherer Prozessoren durchgeführt wird, die der einen oder den mehreren PPUs entsprechen.
  4. Verfahren nach einem der Ansprüche 1 bis 3, ferner umfassend Bereinigen eines oder mehrerer Speicherbereiche, die zum Speichern der unter Verwendung des einen oder der mehreren sicheren Kommunikationskanäle empfangenen Daten verwendet werden.
  5. Verfahren nach einem der Ansprüche 1 bis 4, ferner umfassend Konfigurieren der TEE unter Verwendung einer sicheren Boot-Sequenz, die der einen oder den mehreren PPUs entspricht.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei das Empfangen der Daten von einem oder mehreren Bounce-Puffern außerhalb der TEE, die der einen oder den mehreren PPUs entspricht, und der TEE, die dem einen oder den mehreren Prozessoren entspricht, erfolgt.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei der eine oder die mehreren sicheren Kommunikationskanäle einer oder mehreren Schnittstellen entsprechen, wobei die eine oder die mehreren Schnittstellen der einen oder den mehreren VMs unter Verwendung eines oder mehrerer Hypervisoren außerhalb der TEE, die dem einen oder den mehreren Prozessoren entspricht, und der TEE, die der einen oder den mehreren PPUs entspricht, bereitgestellt werden.
  8. Verfahren nach einem der Ansprüche 1 bis 7, ferner umfassend: Generieren eines oder mehrerer verschlüsselter Bescheinigungsberichte, die eine oder mehrere Eigenschaften der TEE anzeigen, die dem einen oder den mehreren Prozessoren entsprechen; und Bereitstellen des einen oder der mehreren verschlüsselten Bescheinigungsberichte an die eine oder die mehreren VMs, wobei das Empfangen der Daten mindestens auf der einen oder den mehreren Eigenschaften der TEE basiert, die unter Verwendung der einen oder der mehreren VMs verifiziert werden.
  9. Verfahren nach einem der Ansprüche 1 bis 8, ferner umfassend: Empfangen einer oder mehrerer Anforderungen an die eine oder mehrere PPUs, in einen sicheren Ausführungsmodus einzutreten; und als Reaktion auf die eine oder die mehreren Anforderungen, Zurücksetzen der einen oder der mehreren PPUs und Konfigurieren der TEE, die der einen oder den mehreren PPUs entspricht.
  10. Verfahren nach einem der Ansprüche 1 bis 9, wobei die eine oder die mehreren PPUs eine oder mehrere Grafikverarbeitungseinheiten (GPUs) und der eine oder die mehreren Prozessoren eine oder mehrere Zentraleinheiten (CPUs) beinhalten.
  11. System, umfassend: einen oder mehrere Prozessoren zum Durchführen von Operationen, einschließlich: Empfangen, durch eine oder mehrere virtuelle Maschinen (VMs) in einer vertrauenswürdigen Ausführungsumgebung (TEE), die dem einen oder den mehreren Prozessoren entspricht, von Zugriff auf eine oder mehrere parallele Verarbeitungseinheiten (PPUs) über eine oder mehrere Schnittstellen; Verschlüsseln von Daten, die mit der einen oder den mehreren virtuellen Maschinen (VMs) verbunden sind, in der TEE, die dem einen oder den mehreren Prozessoren entspricht, um verschlüsselte Daten zu generieren; Bereitstellen der verschlüsselten Daten über die eine oder die mehreren Schnittstellen, um Folgendes zu veranlassen: Entschlüsselung der verschlüsselten Daten in einer TEE, die der einen oder den mehreren PPUs entspricht, um entschlüsselte Daten zu generieren; und Verarbeitung der entschlüsselten Daten in der TEE, die der einen oder den mehreren PPUs entspricht, unter Verwendung der einen oder der mehreren PPUs.
  12. System nach Anspruch 11, wobei der Zugriff unter Verwendung eines oder mehrerer Hypervisoren außerhalb der TEE bereitgestellt wird, die dem einen oder den mehreren Prozessoren entspricht, und die Verschlüsselung unter Verwendung eines oder mehrerer kryptographischer Schlüssel durchgeführt wird, die für den einen oder die mehreren Hypervisoren unzugänglich sind.
  13. System nach Anspruch 11 oder 12, wobei die Operationen ferner Folgendes beinhalten: Empfangen eines oder mehrerer verschlüsselter Ergebnisse, die der Verarbeitung der entschlüsselten Daten unter Verwendung der einen oder der mehreren PPUs entsprechen, in der TEE, die dem einen oder den mehreren Prozessoren entspricht, und über die eine oder die mehreren Schnittstellen; Entschlüsseln des einen oder der mehreren verschlüsselten Ergebnisse in der TEE, die dem einen oder den mehreren Prozessoren entspricht, um ein oder mehrere unverschlüsselte Ergebnisse zu generieren; und Verarbeiten der einen oder der mehreren unverschlüsselten Ergebnisse unter Verwendung der einen oder der mehreren VMs in der TEE, die dem einen oder den mehreren Prozessoren entspricht.
  14. System nach einem der Ansprüche 11 bis 13, wobei das System in mindestens einem der Folgenden umfasst ist: einem Steuersystem für eine autonome oder halbautonome Maschine; einem Wahrnehmungssystem für eine autonome oder halbautonome Maschine; einem System zum Durchführen von Simulationsoperationen; einem System zum Durchführen von digitalen Zwillingsoperationen; einem System zum Durchführen von Lichttransportsimulation; einem System zum Durchführen von einer kollaborativen Inhaltsanlegung für 3D-Assets; einem System zum Durchführen von generativen KI-Operationen; einem System zum Durchführen von Operationen unter Verwendung eines großen Sprachmodells; einem System zum Durchführen von Deep-Learning-Operationen; einem System, das unter Verwendung einer Edge-Vorrichtung implementiert wurde; einem System, das unter Verwendung eines Roboters implementiert wurde; einem System zum Durchführen von Konversations-KI-Operationen; einem System zum Generieren von synthetischen Daten; einem System zum Präsentieren mindestens eines von Virtual-Reality-Inhalten, Augmented-Reality-Inhalten oder Mixed-Reality-Inhalten; einem System, das mindestens teilweise in einem Rechenzentrum implementiert ist; oder einem System, das mindestens teilweise unter Verwendung von Cloud-Computing-Ressourcen implementiert ist.
  15. Prozessor, umfassend: eine oder mehrere Schaltungen, um Daten unter Verwendung einer oder mehrerer paralleler Verarbeitungseinheiten (PPUs) in einer vertrauenswürdigen Ausführungsumgebung (TEE) zu verarbeiten, die der einen oder den mehreren PPUs entspricht, mindestens basierend auf dem Empfangen von Daten von der einen oder den mehreren virtuellen Maschinen (VMs) unter Verwendung eines oder mehrerer sicherer Kommunikationskanäle zwischen einer oder mehreren virtuellen Maschinen (VMs), die innerhalb einer TEE ausgeführt werden, die einem oder mehreren Prozessoren entspricht, und der TEE, die der einen oder den mehreren PPUs entspricht.
  16. Prozessor nach Anspruch 15, wobei für das Verarbeiten auf die Daten aus einem oder mehreren geschützten Speicherbereichen der TEE zugegriffen wird, die der einen oder den mehreren PPUs entspricht.
  17. Prozessor nach Anspruch 15 oder 16, wobei die Daten unter Verwendung eines oder mehrerer sicherer Prozessoren, die der einen oder den mehreren PPUs entsprechen, empfangen werden.
  18. Prozessor nach einem der Ansprüche 15 bis 17, wobei der eine oder die mehreren sicheren Kommunikationskanäle einer oder mehreren Schnittstellen entsprechen, wobei die eine oder die mehreren Schnittstellen der einen oder den mehreren VMs unter Verwendung eines oder mehrerer Hypervisoren außerhalb der TEE, die dem einen oder den mehreren Prozessoren entspricht, und der TEE, die der einen oder den mehreren PPUs entspricht, bereitgestellt werden.
  19. Prozessor nach einem der Ansprüche 15 bis 18, ferner umfassend Bereitstellen eines oder mehrerer Ergebnisse der Verarbeitung an die eine oder die mehreren virtuellen Maschinen (VMs) unter Verwendung des einen oder der mehreren sicheren Kommunikationskanäle.
  20. Prozessor nach einem der Ansprüche 15 bis 19, wobei der Prozessor in mindestens einem der Folgenden umfasst ist: einem Steuersystem für eine autonome oder halbautonome Maschine; einem Wahrnehmungssystem für eine autonome oder halbautonome Maschine; einem System zum Durchführen von Simulationsoperationen; einem System zum Durchführen von digitalen Zwillingsoperationen; einem System zum Durchführen von Lichttransportsimulation; einem System zum Durchführen von einer kollaborativen Inhaltsanlegung für 3D-Assets; einem System zum Durchführen von generativen KI-Operationen; einem System zum Durchführen von Operationen unter Verwendung eines großen Sprachmodells; einem System zum Durchführen von Deep-Learning-Operationen; einem System, das unter Verwendung einer Edge-Vorrichtung implementiert wurde; einem System, das unter Verwendung eines Roboters implementiert wurde; einem System zum Durchführen von Konversations-KI-Operationen; einem System zum Generieren von synthetischen Daten; einem System zum Präsentieren mindestens eines von Virtual-Reality-Inhalten, Augmented-Reality-Inhalten oder Mixed-Reality-Inhalten; einem System, das eine oder mehrere virtuelle Maschinen (VMs) enthält; einem System, das mindestens teilweise in einem Rechenzentrum implementiert ist; oder einem System, das mindestens teilweise unter Verwendung von Cloud-Computing-Ressourcen implementiert ist.
DE102023107000.2A 2022-03-21 2023-03-21 Vertrauliches computing unter verwendung von parallelprozessoren mit code- und datenschutz Pending DE102023107000A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263322187P 2022-03-21 2022-03-21
US63/322,187 2022-03-21
US18/185,654 2023-03-17
US18/185,654 US20230297696A1 (en) 2022-03-21 2023-03-17 Confidential computing using parallel processors with code and data protection

Publications (1)

Publication Number Publication Date
DE102023107000A1 true DE102023107000A1 (de) 2023-09-21

Family

ID=87849249

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023107000.2A Pending DE102023107000A1 (de) 2022-03-21 2023-03-21 Vertrauliches computing unter verwendung von parallelprozessoren mit code- und datenschutz

Country Status (2)

Country Link
US (1) US20230297696A1 (de)
DE (1) DE102023107000A1 (de)

Also Published As

Publication number Publication date
US20230297696A1 (en) 2023-09-21

Similar Documents

Publication Publication Date Title
DE102021207514A1 (de) Disaggregiertes berechnen für distribuierte vertrauliche rechenumgebung
DE102018005180A1 (de) Flexible Bescheinigung von Containern
US20190147160A1 (en) Virtual machine manager facilitated selective code integrity enforcement
US11061710B2 (en) Virtual machine exit support by a virtual machine function
CN109565444A (zh) 安全公共云
DE112016005833T5 (de) Datenverarbeitungsgeräte
DE102019110309A1 (de) Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
US9954950B2 (en) Attestable information flow control in computer systems
CN102667803B (zh) 用于根据所分配的权限信息运行虚拟机的方法和设备
US10192067B2 (en) Self-described security model for resource access
DE112015004555T5 (de) Verarbeiten eines Gast-Ereignisses in einem von einem Hypervisor gesteuerten System
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE112020000792T5 (de) Durch grafikverarbeitungseinheit beschleunigte vertrauenswürdige ausführungsumgebung
DE10292364T5 (de) Sichere Maschinenplattform, die mit Betriebssystemen und awendungsspezifischen Steuerprogrammen eine Schnittstelle bildet
DE102023202297A1 (de) Wahrung der vertraulichkeit von mandanten in einer cloud-umgebung beim einsatz von sicherheitsdiensten
WO2016182704A1 (en) Integrity protection of a mandatory access control policy in an operating system using virtual machine extension root operations
CN114721768A (zh) 用于在虚拟化环境中利用检查点认证进行虚拟机迁移的方法
DE112021002099T5 (de) Hypervisor-geschützter schlüssel
DE102022121371A1 (de) Verhindern des unautorisierten übertragenen zugriffs durch adressensignierung
US20220245255A1 (en) Systems and methods for processor virtualization
US20230236870A1 (en) Safe entropy source for encrypted virtual machines
DE102023201819A1 (de) Vertrauliches auslagern von dauerspeicheroperationen in vertraulichen rechenumgebungen
DE102023107000A1 (de) Vertrauliches computing unter verwendung von parallelprozessoren mit code- und datenschutz
DE102023107060A1 (de) Vertrauliches computing unter verwendung von multi-instanziieren von parallelprozessoren

Legal Events

Date Code Title Description
R012 Request for examination validly filed