DE202019005666U1 - Vorrichtung und System zum selektiven Bereitstellen einer Datenvalidierungsfunktionalität - Google Patents

Vorrichtung und System zum selektiven Bereitstellen einer Datenvalidierungsfunktionalität Download PDF

Info

Publication number
DE202019005666U1
DE202019005666U1 DE202019005666.1U DE202019005666U DE202019005666U1 DE 202019005666 U1 DE202019005666 U1 DE 202019005666U1 DE 202019005666 U DE202019005666 U DE 202019005666U DE 202019005666 U1 DE202019005666 U1 DE 202019005666U1
Authority
DE
Germany
Prior art keywords
memory
mode
processor
domain
circuit
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.)
Active
Application number
DE202019005666.1U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE202019005666U1 publication Critical patent/DE202019005666U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1433Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a module or a part of a module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

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

Abstract

Integrierte Schaltung, die Folgendes umfasst:
eine erste Schaltungsanordnung zum Koppeln mit einem Prozessor und einem Speicher, wobei die erste Schaltungsanordnung Folgendes umfasst:
eine erste Schaltung zum Berechnen von Integritätsinformationen basierend auf Daten, die mit dem Prozessor und dem Speicher kommuniziert werden; und
eine zweite Schaltung zum Bestimmen der Datengültigkeit basierend auf den Integritätsinformationen; und eine zweite Schaltungsanordnung, die mit der ersten Schaltungsanordnung gekoppelt ist, wobei die zweite Schaltungsanordnung ausgelegt ist zum:
Detektieren einer Anweisung vom Prozessor, wobei die Anweisung eine erste Domäne des Speichers angibt; und
Konfigurieren eines Zustands der ersten Schaltungsanordnung basierend auf der Anweisung, wobei mit Bezug auf das Abarbeiten von Zugriffen auf die erste Domäne durch den Prozessor der Zustand einen Zugriff auf die zweite Schaltung verhindern soll, während ein Zugriff auf die erste Schaltung gestattet wird.

Description

  • HINTERGRUND
  • Technisches Gebiet
  • Die vorliegende Offenbarung betrifft allgemein das Gebiet der Computersicherheit und insbesondere, jedoch nicht ausschließlich, die Datenintegritätsverifizierung.
  • Stand der Technik
  • Die Verschlüsslung von Speicher in einer Vorrichtung, wie etwa einem Personal Computer, einem Smart-Mobiltelefon und so weiter, wird verwendet, um im Speicher gespeicherte Daten zu schützen, wenn sich die Vorrichtung im Betrieb befindet, verloren geht, gestohlen wird und so weiter. Verschlüsselter Speicher bleibt jedoch gegenüber Korruption durch einen Widersacher über verschiedene anfängliche und/oder wiederholte Speicherkorruptionsattacken anfällig. Somit ist ein Prozessor gegenüber der Ausführung korrupter Daten anfällig, was eine Reihe unerwünschter Effekte verursacht, wie etwa zum Beispiel einen fehlgeschlagenen Passwortanmeldeversuch, ein Fehlverhalten einer Anwendung, einen Absturz einer Vorrichtung und so weiter. Herkömmliche Techniken implementieren verschiedene Strategien zum Beibehalten der Integrität des Speichers in einem Versuch, böswillige Änderungen an verschlüsselten Daten (z. B. gespeicherten Daten) zu minimieren.
  • Es treten jedoch verschiedene Ineffizienzen und/oder andere Probleme in gewissen Kontexten auf, bei denen ein Server oder eine andere Computerplattform dazu ausgelegt ist, sowohl Verschlüsselung/Entschlüsselung-Schutzmechanismen als auch Datenvalidierungsmechanismen zu implementieren. Während sich Hacking, Malware und andere Gefahren für Computerplattformen in Anzahl und Verschiedenartigkeit weiter ausbreiten, gibt es einen zunehmenden Bedarf, dass beispielsweise Cloud-Dienstanbieter (CSPs: Cloud Service Providers) und andere Online-Dienste einen robusteren Schutz für auf ihren Plattformen ausgeführten Arbeitslasten bereitstellen.
  • Figurenliste
  • Die verschiedenen Ausführungsformen der vorliegenden Erfindung sind beispielshalber und nicht beschränkend in den Figuren der begleitenden Zeichnungen veranschaulicht, in denen gilt:
    • 1 veranschaulicht ein schematisches Diagramm eines beispielhaften Rechensystems gemäß gewissen Ausführungsformen.
    • 2A, 2B veranschaulichen verschiedenartig eine beispielhafte Ausführungsform eines Speicherschutzsystems gemäß gewissen Ausführungsformen.
    • 2C veranschaulicht ein Format von Schlüsselkennungsinformationen, die durch eine Speicherschutzschaltungsanordnung verwendet werden, gemäß gewissen Ausführungsformen.
    • 3 und 4 veranschaulichen Flussdiagramme, jeweils für ein jeweiliges Verfahren zum Konfigurieren einer Datenschutzfunktionalität einer Schaltungsanordnung.
    • 5A veranschaulicht ein Flussdiagramm für ein Verfahren zum selektiven Bereitstellen einer Datenvalidierungsfunktionalität.
    • 5B veranschaulicht ein Flussdiagramm für ein Verfahren zum Durchführen einer Schreiboperation basierend auf einem Schutzmodus, der gemäß einer Ausführungsform konfiguriert ist.
    • 6A ist ein Blockdiagramm, das sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Registerumbenennungs-, Out-of-Order-Erstellungs-/Ausführungspipeline veranschaulicht, gemäß Ausführungsformen der Erfindung.
    • 6B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines In-Order-Architekturkerns als auch einen beispielhaften Registerumbenennungs-, Out-of-Order-Erstellungs-/Ausführungsarchitekturkern veranschaulicht, die in einen Prozessor einzuschließen sind, gemäß Ausführungsformen der Erfindung.
    • 7 ist ein Blockdiagramm eines Prozessors, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung.
    • 8 bis 10 sind Blockdiagramme beispielhafter Computerarchitekturen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Hierin besprochene Ausführungsformen stellen verschiedenartig Techniken und/oder Mechanismen zum Konfigurieren des Zugriffs auf eine Schaltungsanordnung bereit, um einen selektiven Schutz von Daten und/oder Software, die an Daten arbeiten oder diese anderweitig verwenden soll, zu ermöglichen. In einer Ausführungsform ist die Schaltungsanordnung mit einem Prozessor und einem Speicher gekoppelt, wobei die Schaltungsanordnung dahingehend konfigurierbar ist, selektiv eine Funktionalität (hierin als eine „Schutzfunktionalität“ oder ein „Schutzdienst“ bezeichnet) zum Ermöglichen von Daten- und/oder Softwareschutz basierend zumindest auf einigen Zugriffen auf den Speicher durch den Prozessor zu verwenden - oder auf deren Verwendung zu verzichten. Eine solche Schaltungsanordnung ist in der Lage, beliebige mehrerer Schutzdienste bereitzustellen, einschließlich beispielsweise eines ersten Dienstes zum Berechnen von Integritätsinformationen und eines zweiten Dienstes zum Evaluieren einer Gültigkeit (oder Ungültigkeit) von Daten basierend auf zuvor berechneten Integritätsinformationen. In manchen Ausführungsformen umfassen die mehreren Schutzdienste ferner einen oder mehrere Verschlüsselungs- und/oder Entschlüsselungsdienste (hierin „Verschlüsselung/Entschlüsselung‟-Dienste) - z. B. zum Verschlüsseln von Daten, die in einen Speicher geschrieben werden, und/oder zum Entschlüsseln von Daten, die aus einem Speicher gelesen werden.
  • Wie hierin verwendet, bezieht sich „Integritätsinformationen“ auf einen oder mehrere Werte, die als ein Bezug (d. h. eine Referenz) zur Verwendung bei der Bestimmung fungieren sollen, ob eine zeitlich spätere Version von Daten - z. B. unabsichtlich oder ohne Autorisierung - von einer zeitlich früheren Version der Daten modifiziert wurde. Solche Integritätsinformationen beinhalten ein Hash, eine Prüfsumme, einen Nachrichtenauthentifizierungscode (MAC: Message Authentication Code) oder beliebige einer Vielfalt anderer solcher Werte.
  • In manchen Ausführungsformen ist eine Schutzdienstschaltungsanordnung dahingehend konfigurierbar - z. B. rekonfiguierbar, basierend auf einer Korrespondenz einer gegebenen Domäne eines Speichers mit einem oder mehreren speziellen Schutzdiensten bereitzustellen oder anderweitig zu arbeiten. Basierend auf einer Konfiguration einer solchen Schaltungsanordnung werden ein oder mehrere Schutzdienste an Daten angewendet, die mit dem Prozessor und dem Speicher kommuniziert werden. In manchen Ausführungsformen verhindert eine solche Konfiguration, dass ein oder mehrere andere Schutzdienste an den Daten angewendet werden. Beispielsweise kann die Konfiguration, mit Bezug auf Zugriffen auf eine gegebene Speicherdomäne, einen Dienst deaktivieren oder anderweitig verhindern, der ansonsten eine Gültigkeit/Ungültigkeit von Daten basierend auf zuvor berechneten Integritätsinformationen evaluieren würde. In einer solchen Ausführungsform aktiviert oder anderweitig gestattet die Konfiguration gleichzeitig einen Dienst, der Integritätsinformationen für Daten berechnet, die zu dieser selben Speicherdomäne geschrieben werden.
  • Der Kürze halber bezieht sich „erzeugen, aber nicht validieren“ (oder „GNV“ („generate, but not validate“)) hierin auf eine Verfügbarkeit einer Kombination eines oder mehrerer Schutzdienste, die die Erzeugung von Integritätsinformationen für Daten ermöglicht oder gestattet, die in eine Speicherdomäne geschrieben werden, die aber auch daran gehindert werden, eine Datenvalidierung - basierend auf solchen Integritätsinformationen - für Daten durchzuführen, die aus dieser Speicherdomäne gelesen werden. Im Gegensatz dazu bezieht sich „erzeugen und validieren“ (oder „GV“ („generate and validate“)) hierin auf eine Verfügbarkeit einer Kombination eines oder mehrerer Schutzdienste, die sowohl die Erzeugung von Integritätsinformationen für eine Datenschreiboperation in eine Domäne als auch die Durchführung einer Datenvalidierung für eine Datenleseoperation aus dieser Domäne ermöglicht oder gestattet. Dementsprechend kann eine Konfiguration einer Schaltungsanordnung einen „GNV-Modus“, der eine GNV-Kombination von Diensten verfügbar machen soll, und/oder einen „GV-Modus“, der eine GV-Kombination von Diensten verfügbar machen soll, beinhalten. Durch die Verfügbarmachung unterschiedlicher Schutzmodi - z. B. einschließlich eines GNV-Modus und eines GV-Modus - ermöglichen manche Ausführungsformen unterschiedlicher Software, verschiedene jeweilige Typen von Schutzmechanismen zu nützen.
  • Gegenwärtig ist manche Software in der Lage, gewisse Datenintegritätsfehlernachrichten zu vermeiden, die mit älterer Software zumindest teilweise durch den Betrieb von Verschlüsselung/Entschlüsselung-Schutzmechanismen verursacht werden. Beispielsweise ist ein Verschlüsselung/Entschlüsselung-Schutz und/oder Datenintegritätsschutz auf Schlüsselkennungen (Schlüssel-IDs) angewiesen, die jeweils eine jeweilige Domäne eines Speichers identifizieren. Typischerweise befindet sich eine Plattform-Schlüssel-ID (Schlüssel-ID 0) unter Steuerung eines BIOS, wohingegen andere Schlüssel-IDs - z. B. Schlüssel-ID 1, ..., Schlüssel-ID N - zur Steuerung durch ein Betriebssystem und/oder andere Systemsoftware verfügbar gemacht werden. In diesen Schemen wird häufig erfordert, dass Software einer speziellen Sequenz von Operationen folgt, um einen mit einer gegebenen Domäne assoziierten Schlüssel neu zuzuweisen (z. B. um eine Seite im Speicher von der Unterstützung einer Arbeitslast zur Unterstützung einer anderen Arbeitslast neu zuzuordnen). Solch eine Sequenz erfordert auch eine ordnungsgemäße Initialisierung des Speichers, um zu gewährleisten, dass es keine falschen Datenintegritätsfehlschläge gibt.
  • In manchen Fällen ist Legacy-Software, die Verschlüsselung/Entschlüsselung-Schutzmaßnahmen unterstützt - wie etwa MKTME (Multi-Key Total Memory Encryption), älter als gewisse Techniken zum Datenintegritätsschutz. Infolgedessen führt die Legacy-Software Schlüsselneuzuweisung und/oder andere Operationen auf eine Weise durch, die zu falschen Datenintegritätsfehlern beiträgt. Der Kürze halber wird diese Art von Software hierin als „nicht-aufgeklärte“ Software bezeichnet - z. B. im Gegensatz zu „aufgeklärter“ Software, die in der Lage ist, solche falschen Datenintegritätsfehler zu vermeiden.
  • Die Konfiguration eines GNV-Modus oder eines GV-Modus beinhaltet das selektive Gestatten oder Verhindern - z. B. durch ein BIOS oder alternativ durch ein Betriebssystem oder andere Software, die nach einem System-Booten startet, dass ein erster Dienst Integritätsinformationen berechnet und der zweite Dienst eine Gültigkeit (oder Ungültigkeit) von Daten basierend auf zuvor berechneten Integritätsinformationen evaluiert. Beispielsweise kann ein BIOS anfänglich einen „globalen“ GNV-Modus konfigurieren, der für Zugriffe auf eine beliebige Domäne eines Speichers gelten soll. Solch ein Modus ermöglicht oder anderweitig gestattet ferner einen Verschlüsselung/Entschlüsselung-Schutz für solche Zugriffe - wobei z. B. Verschlüsselung für Datenschreiboperationen in eine beliebige Domäne konfiguriert ist und Entschlüsselung für Datenleseoperationen aus einer beliebigen Domäne konfiguriert ist. Eine Datenschreiboperation während eines solchen globalen GNV-Modus beinhaltet Integritätsinformationen (z. B. einen MAC-Wert), der unter Verwendung eines Schlüssels erzeugt wird, der mit der Plattformschlüsselkennung assoziiert ist - z. B. ungeachtet davon, ob die Datenschreiboperation auf einen Speicherort zugreift, der mit einem anderen Schlüssel assoziiert ist. Eine Datenvalidierung basierend auf diesen Integritätsinformationen wird für eine anschließende Datenleseoperation (während des globalen GNV-Modus) aus dem Speicherort weggelassen. Durch das Verzichten auf eine solche Datenvalidierung ermöglichen manche Ausführungsformen verschiedenartig den Betrieb von Legacy-Software, die keine Datenvalidierungsmechanismen unterstützen kann (und/oder sich diesen nicht bewusst ist) - z. B. wenn die Legacy-Software weiterhin Verschlüsselung/Entschlüsselung-Schutzmaßnahmen nützen kann.
  • In einer solchen Ausführungsform kommuniziert ein Betriebssystem (oder eine Systemsoftware) anschließend eine Anweisung zum Rekonfigurieren von Schutzdiensten - z. B. um Integritätsschutzmaßnahmen zumindest bezüglich einer oder mehrerer Speicherdomänen zu ermöglichen. Veranschaulichend und nicht beschränkend kann eine Plattformkonfigurationsanweisung (PCONFIG) einen „globalen“ GV-Modus konfigurieren, der für Zugriffe auf eine beliebige Domäne eines Speichers gelten soll. Solch ein globaler GV-Modus macht sowohl den ersten Dienst zum Berechnen von Integritätsinformationen als auch den zweiten Dienst zum Evaluieren einer Gültigkeit (oder Ungültigkeit) von Daten basierend auf zuvor berechneten Integritätsinformationen verfügbar.
  • Während eines globalen GV-Modus ist Software in der Lage, die Schutzdienste selektiv zu steuern, die für Zugriffe auf eine oder mehrere gegebene Speicherdomänen verschiedenartig zu gestatten oder zu verhindern sind. In einem beispielhaften Szenario werden Speicherzugriffe auf eine Domäne entsprechend einer Schlüssel-ID 1 mit sowohl Verschlüsselung/Entschlüsselung-Schutz als auch den Integritätsschutzmaßnahmen des ersten Dienstes und des zweiten Dienstes versehen. Alternativ oder zusätzlich können Speicherzugriffe auf eine andere Domäne entsprechend einer Schlüssel-ID 2 mit nur Verschlüsselung/Entschlüsselung-Schutz versehen werden. Beispielsweise kann ein aufgeklärtes Betriebssystem sowohl den ersten Dienst als auch den zweiten Dienst für Speicherzugriffe auf diese andere Domäne verhindern - z. B. trotz des Aktivierens solcher Dienste durch das BIOS. Solch eine Konfiguration ist ein domänenspezifischer „lokaler nicht-erzeugen, nicht-validieren“ Modus, der einige Schutzmaßnahmen einschränkt, die ansonsten innerhalb eines globalen GV-Modus aktiviert sind.
  • Ausführungsformen aktivieren verschiedenartig einen GV-Modus (beispielsweise) zum Schützen von Daten, die durch aufgeklärte Software verwendet werden - während z. B. zusätzlich oder alternativ ein GNV-Modus zum Schützen von Daten aktiviert wird, die durch nicht-aufgeklärte Software verwendet werden. Dementsprechend ist aufgeklärte Software in der Lage, sowohl Verschlüsselung/Entschlüsselung-Schutzmaßnahmen als auch Datenvalidierungsschutzmaßnahmen zu nützen, und nicht-aufgeklärte Software ist in der Lage, Verschlüsselung/Entschlüsselung-Schutzmaßnahmen zu nützen. In manchen Ausführungsformen ist eine solche nicht-aufgeklärte Software auch in der Lage, einen Dienst zum Erzeugen von Integritätsinformationen zu nützen, die beispielsweise anschließend zur Validierung von Daten ausgenutzt werden können, wenn sie durch andere (aufgeklärte) Software verwendet werden. Im Gegensatz dazu behalten gegenwärtige Lösungen verschiedenartig Rückwärtskompatibilität für Legacy-Software bei, indem einfach auf den Datenvalidierungsschutz für eine Plattformschlüsselkennung (z. B. Schlüssel-ID 0) verzichtet wird. Insbesondere beinhalten herkömmliche Maschinen verschiedenartig eine Verschlüsselung/Entschlüsselung-Schaltungsanordnung und eine Datenvalidierungsschaltungsanordnung, aber um Legacy-Software zu gestatten, Verschlüsselung/Entschlüsselung auf solchen Maschinen zu nützen (ohne falsche Datenintegritätsfehler zu erfahren), muss ein BIOS der Maschine Datenvalidierung für die Plattformschlüsselkennung ausschalten. Infolgedessen steht der Datenintegritätsschutz selbst für aufgeklärte Software nicht zur Verfügung.
  • In der folgenden Beschreibung werden zahlreiche Einzelheiten besprochen, um eine umfassendere Erläuterung der Ausführungsformen der vorliegenden Offenbarung bereitzustellen. Einem Fachmann wird jedoch ersichtlich werden, dass Ausführungsformen der vorliegenden Offenbarung ohne diese spezifischen Einzelheiten umgesetzt werden können. In anderen Fällen sind wohlbekannte Strukturen und Vorrichtungen in Blockdiagrammform anstelle von im Detail gezeigt, um eine Verundeutlichung von Ausführungsformen der vorliegenden Offenbarung zu vermeiden.
  • Es ist zu beachten, dass in den entsprechenden Zeichnungen der Ausführungsformen Signale mit Linien repräsentiert werden. Manche Linien können dicker sein, um eine größere Anzahl von konstituierenden Signalpfaden anzugeben, und/oder weisen Pfeile an einem oder mehreren Enden auf, um eine Richtung des Informationsflusses anzugeben. Solche Angaben sollen nicht beschränkend sein. Stattdessen werden die Linien in Verbindung mit einer oder mehreren beispielhaften Ausführungsformen verwendet, um ein leichteres Verständnis einer Schaltung oder einer Logikeinheit zu ermöglichen. Ein jegliches repräsentiertes Signal, wie durch Designbedürfnisse oder -präferenzen vorgegeben, kann tatsächlich ein oder mehrere Signale umfassen, die in jede Richtung laufen können, und können mit einem beliebigen geeigneten Typ von Signalschema implementiert werden.
  • Durchweg durch diese Beschreibung und in den Ansprüchen bedeutet der Begriff „verbunden“ eine direkte Verbindung, wie etwa eine elektrische, mechanische oder magnetische Verbindung zwischen den verbundenen Dingen, ohne irgendwelche zwischenliegende Vorrichtungen. Der Begriff „gekoppelt“ bedeutet eine direkte oder indirekte Verbindung, wie etwa eine direkte elektrische, mechanische oder magnetische Verbindung zwischen den verbundenen Dingen, oder eine indirekte Verbindung über eine oder mehrere passive oder aktive zwischenliegende Vorrichtungen. Der Begriff „Schaltung“ oder „Modul“ kann sich auf eine oder mehrere passive und/oder aktive Komponenten beziehen, die derart angeordnet sind, dass sie miteinander kooperieren, um eine gewünschte Funktion bereitzustellen. Der Begriff „Signal“ kann sich auf mindestens ein Stromsignal, Spannungssignal, magnetisches Signal oder Daten-/Taktsignal beziehen. Die Bedeutung von „ein“, „eine“ und „der/die/das“ beinhaltet Pluralbezüge. Die Bedeutung von „in“ beinhaltet „in“ und „an“.
  • Der Begriff „Vorrichtung“ kann sich allgemein auf eine Einrichtung gemäß dem Kontext der Nutzung dieses Begriffs beziehen. Beispielsweise kann sich eine Vorrichtung auf einen Stapel von Schichten oder Strukturen, eine einzelne Struktur oder Schicht, eine Verbindung verschiedener Strukturen mit aktiven und/oder passiven Elementen usw. beziehen. Im Allgemeinen ist eine Vorrichtung eine dreidimensionale Struktur mit einer Ebene entlang der x-y-Richtung und einer Höhe entlang der z-Richtung eines kartesischen x-y-z-Koordinatensystems. Die Ebene der Vorrichtung kann auch die Ebene einer Einrichtung sein, die die Vorrichtung umfasst.
  • Der Begriff „Skalieren“ bezieht sich allgemein auf das Umwandeln eines Designs (schematische Darstellung oder Layout) von einer Prozesstechnologie zu einer anderen Prozesstechnologie und anschließendes Reduzieren des Layoutbereichs. Der Begriff „Skalieren“ bezieht sich allgemein auch auf das Verkleinern eines Layouts und von Vorrichtungen innerhalb desselben Technologieknotens. Der Begriff „Skalieren“ kann sich außerdem auf das Anpassen (z. B. Verlangsamen oder Beschleunigen - d. h. Herabskalieren bzw. Heraufskalieren) einer Signalfrequenz relativ zu einem anderen Parameter, zum Beispiel Leistungsversorgungsniveau, beziehen.
  • Die Begriffe „im Wesentlichen“, „nahe“, „ungefähr“, „in der Nähe“ und „etwa“ beziehen sich allgemein darauf, dass sie innerhalb +/- 10 % eines Zielwerts liegen. Beispielsweise, insofern nicht anders im expliziten Kontext ihrer Verwendung spezifiziert, bedeuten die Begriffe „im Wesentlichen gleich“, „etwa gleich“ und „ungefähr gleich“, dass es nicht mehr als eine nebensächliche Variation zwischen so beschriebenen Dingen gibt. In der Technik beträgt eine solche Variation typischerweise nicht mehr als +/- 10 % eines vorbestimmten Zielwerts.
  • Es soll verstanden werden, dass die so verwendeten Begriffe unter geeigneten Umständen austauschbar sind, sodass die hierin beschriebenen Ausführungsformen der Erfindung beispielsweise für einen Betrieb in anderen Orientierungen als jene in der Lage sind, die hierin veranschaulicht oder anderweitig beschrieben sind.
  • Insofern nicht anderweitig spezifiziert, gibt die Verwendung der ordinalen Adjektive „erster“, „zweiter“ und „dritter“ usw. zum Beschreiben eines gemeinsamen Objekts lediglich an, dass sich auf unterschiedliche Instanzen gleichartiger Objekte bezogen wird, und soll nicht andeuten, dass die so beschriebenen Objekte in einer gegebenen Abfolge, entweder zeitlich, räumlich, im Rang oder auf eine jegliche andere Art und Weise, vorliegen müssen.
  • Für den Zweck der vorliegenden Offenbarung bedeuten die Ausdrücke „A und/oder B“ und „A oder B“ (A), (B) oder (A und B). Für den Zweck der vorliegenden Offenbarung bedeutet der Ausdruck „A, B und/oder C“ (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • Die Begriffe „links“, „rechts“, „vorne“, „hinten“, „oben‟ „unten“, „über“, „unter“ und dergleichen in der Beschreibung und in den Ansprüchen, falls vorhanden, werden für Beschreibungszwecke und nicht notwendigerweise zum Beschreiben permanenter relativer Positionen verwendet. Beispielsweise beziehen sich die Begriffe „über“, „unter“, „Vorderseite‟, „Hinterseite“, „oben‟, „unten‟, „über“, „unter“ und „auf‟, wie hierin verwendet, auf eine relative Position einer Komponente, einer Struktur oder eines Materials bezüglich anderer referenzierter Komponenten, Strukturen oder Materialien innerhalb einer Vorrichtung, wenn solche physischen Beziehungen nennenswert sind. Diese Begriffe werden hierin nur für Beschreibungszwecke und hauptsächlich innerhalb des Kontexts einer z-Achse der Vorrichtung eingesetzt, und können daher relativ zu einer Orientierung einer Vorrichtung sein. Daher kann ein erstes Material „über“ einem zweiten Material im Kontext einer hierin bereitgestellten Figur auch „unter‟ dem zweiten Material sein, falls die Vorrichtung relativ zu dem Kontext der bereitgestellten Figur umgedreht orientiert ist. Im Kontext von Materialien kann ein Material, das über oder unter einem anderen angeordnet ist, direkt in Kontakt stehen oder kann ein oder mehrere zwischenliegende Materialien aufweisen. Darüber hinaus kann ein Material, das zwischen zwei Materialien angeordnet ist, direkt mit den beiden Schichten in Kontakt stehen oder kann eine oder mehrere zwischenliegende Schichten aufweisen. Im Gegensatz dazu ist ein erstes Material „auf‟ einem zweiten Material in direktem Kontakt mit diesem zweiten Material. Ähnliche Unterscheidungen sollen im Kontext von Komponentenbaugruppen vorgenommen werden.
  • Der Begriff „zwischen“ kann im Kontext der z-Achse, x-Achse oder y-Achse einer Vorrichtung eingesetzt werden. Ein Material, das sich zwischen zwei anderen Materialien befindet, kann in Kontakt mit einem oder beiden dieser Materialien stehen, oder es kann durch ein oder mehrere zwischenliegende Materialien von beiden der anderen beiden Materialien getrennt sein. Ein Material „zwischen“ zwei anderen Materialien kann daher mit einem der beiden anderen Materialien in Kontakt stehen, oder es kann über ein zwischenliegendes Material mit den beiden anderen Materialien gekoppelt sein. Eine Vorrichtung, die zwischen zwei anderen Vorrichtungen liegt, kann direkt mit einer oder beiden dieser Vorrichtungen verbunden sein, oder sie kann durch eine oder mehrere zwischenliegende Vorrichtungen von beiden der anderen beiden Vorrichtungen getrennt sein.
  • Wie durchweg in dieser Beschreibung und in den Ansprüchen verwendet, kann eine Liste von Elementen, die durch den Begriff „mindestens eines von“ oder „eines oder mehrere von“ verknüpft sind, eine beliebige Kombination der aufgelisteten Begriffe bedeuten. Beispielsweise kann der Ausdruck „mindestens eines von A, B oder C“ A; B; C; A und B; A und C; B und C oder A, B und C bedeuten. Es wird darauf hingewiesen, dass diese Elemente einer Figur, die dieselben Bezugsziffern (oder Namen) wie die Elemente einer beliebigen anderen Figur aufweisen, auf eine ähnliche Weise zu der beschriebenen arbeiten oder fungieren können, aber nicht darauf beschränkt sind.
  • Zusätzlich können sich die verschiedenen Elemente von kombinatorischer Logik und sequenzieller Logik, die in der vorliegenden Offenbarung besprochen sind, auf sowohl physische Strukturen (wie etwa AND-Gatter, OR-Gatter oder XOR-Gatter) oder synthetisierte oder anderweitig optimierte Sammlungen von Vorrichtungen beziehen, die die logischen Strukturen implementieren, die boolesche Äquivalente der besprochenen Logik sind.
  • Es wird darauf hingewiesen, dass diese Elemente der Figuren, die dieselben Bezugsziffern (oder Namen) wie die Elemente einer beliebigen anderen Figur aufweisen, auf eine beliebige Weise ähnlich wie die beschriebene arbeiten oder fungieren können, aber nicht darauf beschränkt sind.
  • 1 zeigt Merkmale eines Rechensystems 100 gemäß einer Ausführungsform zum selektiven Bereitstellen (oder Verzichten auf die Bereitstellung) eines Schutzdienstes, wie etwa eines zum Evaluieren der Gültigkeit/Ungültigkeit von Daten, die aus einem Speicher gelesen werden. Das Rechensystem 100 ist ein Beispiel einer Ausführungsform, bei der Schaltungslogik - z. B. einschließlich eines Prozessors und/oder einer Speicherschutzschaltungsanordnung zum Kommunizieren mit einem Prozessor - eine Befehlssatzarchitektur (ISA: Instruction Set Architecture) unterstützt, wobei eine Anweisung aus dieser einen GNV-Modus aktivieren oder deaktivieren soll.
  • In verschiedenen Ausführungsformen liefern das Rechensystem 100 und/oder seine zugrundeliegenden Komponenten eine Datenvalidierungsfunktionalität und Steuerfunktionalität, um selektiv einen Teil oder die Gesamtheit einer solchen Datenvalidierungsfunktionalität zu aktivieren oder zu deaktivieren. Das System 100 liefert ferner beispielsweise eine Verschlüsselung/Entschlüsselung-Speicherschutzfunktionalität. In der gezeigten beispielhaften Ausführungsform hosten ein oder mehrere Server 120 (beispielsweise eines Cloud-Dienstanbieters) des Systems 100 eine oder mehrere Arbeitslasten 130 (z. B. Daten und/oder Anwendungen) jeweils für eine(n) jeweilige(n) Kunden, Drittpartei und/oder anderen solchen Client. Dementsprechend implementieren in manchen Ausführungsformen ein oder mehrere Server 120 verschiedenartig Datenintegrität und/oder Verschlüsselung/Entschlüsselung-Speicherschutz (z. B. Multi-Schlüssel oder andere) zum Bereitstellen von Speicherschutz auf einer Pro-Client-Basis - z. B. um zu gewährleisten, dass zumindest manche der veranschaulichten Arbeitslasten 130a, 130b, 130c jeweils unter Verwendung eines jeweiligen eindeutigen Verschlüsselungsschlüssels separat geschützt und isoliert sind. Verschlüsselung/Entschlüsselung- und/oder Datenvalidierungsspeicherschutz wird in manchen Ausführungsformen auch verschiedenartig durch andere Komponenten des Systems 100, wie etwa Edge-Vorrichtungen 110, implementiert.
  • Die verschiedenen Komponenten in dem veranschaulichten Beispiel des Rechensystems 100 werden nun nachstehend zusätzlich beschrieben.
  • Die Edge-Vorrichtungen 110 beinhalten beliebige Geräte und/oder Vorrichtungen, die in der Nähe des „Rands“ (Edge) eines Kommunikationssystems 100 eingesetzt werden oder verbunden sind. In der veranschaulichten Ausführungsform beinhalten die Edge-Vorrichtungen 100 Endbenutzervorrichtungen 112 (z.B. Desktops, Laptops, Mobilvorrichtungen), Internet-der-Dinge(IoT)-Vorrichtungen 114 und Gateways und/oder Router 116 unter anderen Beispielen. Die Edge-Vorrichtungen 110 kommunizieren miteinander und/oder mit anderen Fernnetzwerken und Diensten (z. B. einem oder mehreren Servern 120) über ein oder mehrere Netzwerke und/oder Kommunikationsprotokolle, wie etwa das Kommunikationsnetzwerk 150. Darüber hinaus beinhalten gewisse Edge-Vorrichtungen 110 in manchen Ausführungsformen Speicherschutzfunktionalität, wie durchweg durch diese Offenbarung beschrieben.
  • Die Endbenutzervorrichtungen 112 beinhalten eine jegliche Vorrichtung, die eine Benutzerinteraktion mit dem Rechensystem 100 ermöglicht oder erleichtert, einschließlich beispielsweise Desktop Computer, Laptops, Tablets, Mobiltelefone und andere Mobilvorrichtungen und Wearable-Vorrichtungen (z. B. Smartwatches, Smart-Brillen, Headsets), unter anderen Beispielen.
  • Die IoT-Vorrichtungen 114 beinhalten eine jegliche Vorrichtung, die in der Lage ist, in einem Internet-der-Dinge(IoT)-System oder -Netzwerk zu kommunizieren und/oder daran teilzunehmen. IoT-Systeme beinhalten mehrere Vorrichtungen (z. B. IoT-Vorrichtungen 114), die für eine spezielle Anwendung oder einen speziellen Verwendungsfall interagieren und zusammenwirken. Solche Ad-hoc-Systeme kommen zum Vorschein, während mehr und mehr Produkte und Geräte als „smart“ entwickelt werden, was bedeutet, dass sie durch Computerprozessoren gesteuert und überwacht werden und in der Lage sind, mit anderen Vorrichtungen zu kommunizieren. Beispielsweise kann eine IoT-Vorrichtung 114 einen Computerprozessor und/oder eine Kommunikationsschnittstelle beinhalten, um ein Zusammenwirken mit anderen Komponenten des Systems 100 zu ermöglichen, wie etwa mit dem einen oder den mehreren Servern 120 und/oder anderen Edge-Vorrichtungen 110. Die IoT-Vorrichtungen 114 können „Greenfield“-Vorrichtungen sein, die von Anfang an mit IoT-Fähigkeiten entwickelt werden, oder können „Brownfield“-Vorrichtungen sein, die durch das Integrieren von IoT-Fähigkeiten in bestehende Legacy-Vorrichtungen, die anfänglich ohne IoT-Fähigkeiten entwickelt wurden, erzeugt werden. Beispielsweise werden in manchen Fällen die IoT-Vorrichtungen 114 aus Sensoren und Kommunikationsmodulen gebaut, die in „Dingen“ integriert oder an diesen angebracht sind, wie etwa Geräten, Spielzeuge, Werkzeuge, Fahrzeuge, lebenden Dingen (z. B. Pflanzen, Tiere, Menschen) und so weiter. Alternativ oder zusätzlich sind gewisse IoT-Vorrichtungen 114 auf zwischenliegende Komponenten angewiesen, wie etwa Edge-Gateways oder Router 116, um mit den verschiedenen Komponenten des Systems 100 zu kommunizieren.
  • Die IoT-Vorrichtungen 114 beinhalten verschiedene Arten von Sensoren zum Überwachen, Detektieren, Messen und Erzeugen von Sensordaten und Signalen, die mit Charakteristiken ihrer Umgebung assoziiert sind. Beispielsweise kann ein gegebener Sensor dazu ausgelegt sein, eine oder mehrere jeweilige Charakteristiken wie etwa Bewegung, Gewicht, physischer Kontakt, biometrische Eigenschaften, Temperatur, Wind, Geräusche, Licht, Position, Luftfeuchtigkeit, Strahlung, Flüssigkeit, spezifische chemische Verbindungen, Batterielebensdauer, Drahtlossignale, Computerkommunikationen und Bandbreite unter anderen Beispielen zu detektieren. Sensoren können physische Sensoren (z. B. physische Überwachungskomponenten) und virtuelle Sensoren (z. B. softwarebasierte Überwachungskomponenten) beinhalten. Die IoT-Vorrichtungen 114 beinhalten außerdem Aktoren zum Durchführen verschiedener Handlungen in ihren jeweiligen Umgebungen. Beispielsweise kann ein Aktor verwendet werden, um selektiv eine gewisse Funktionalität zu aktivieren, wie etwa Umschalten der Leistung oder des Betriebs eines Sicherheitssystems (z. B. Alarm, Kamera, Schlösser) oder Haushaltgeräts (z. B. Audiosystem, Beleuchtung, HLK-Geräte, Garagentüren) unter anderen Beispielen.
  • In der Tat zieht diese Offenbarung die Verwendung eines potenziell unbegrenzten Universums von IoT-Vorrichtungen 114 und assoziierter Sensoren/Aktoren in Betracht. Die IoT-Vorrichtungen 114 beinhalten zum Beispiel eine beliebige Art von Gerät und/oder Vorrichtung, die mit einem beliebigen Typ des Systems 100 und/oder der Industrie assoziiert sind, einschließlich unter anderem Transport (z. B. Kraftfahrzeug, Luftfahrtunternehmen), industrielle Herstellung, Energie (z. B. Kraftwerke), Telekommunikationen (z. B. Internet-, Zellular- und Fernsehdienstanbieter), Medizin (z. B. Gesundheitswesen, Pharmaunternehmen), Lebensmittelverarbeitung und/oder Einzelhandel. In der Transportindustrie beinhalten die IoT-Vorrichtungen 114 beispielsweise Geräte und Vorrichtungen, die mit Flugzeugen, Kraftfahrzeugen oder Schiffen assoziiert sind, wie etwa Navigationssysteme, autonome Flug- oder Fahrsysteme, Verkehrssensoren und -kontrollen und/oder beliebige interne mechanische oder elektrische Komponenten, die durch Sensoren (z. B. Engines) überwacht werden. Darüber hinaus kann eine IoT-Vorrichtung auch eine beliebige Art von Edge-Vorrichtung 110 sein, einschließlich der Endbenutzervorrichtungen 112 und der Edge-Gateways und Router 116.
  • Die Edge-Gateways und/oder Router 116 werden verwendet, um eine Kommunikation zu und von den Edge-Vorrichtungen 110 zu ermöglichen. Beispielsweise stellen die Gateways 116 bestehenden Legacy-Vorrichtungen, die anfänglich ohne solche Fähigkeiten entwickelt wurden (z. B. „Brownfield“-IoT-Vorrichtungen), Kommunikationsfähigkeiten bereit. Die Gateways 116 können auch genutzt werden, um die geografische Reichweite der Edge-Vorrichtungen 110 mit Kurzstrecken-, proprietären oder anderweitig beschränkten Kommunikationsfähigkeiten, wie etwa IoT-Vorrichtungen 114 mit Bluetooth- oder ZigBee-Kommunikationsfähigkeiten, zu erweitern. Beispielsweise können die Gateways 116 als Vermittler zwischen den IoT-Vorrichtungen 114 und Fernnetzwerken oder -diensten dienen, indem sie den IoT-Vorrichtungen 114 ein Fronthaul unter Verwendung ihrer nativen Kommunikationsfähigkeiten (z. B. Bluetooth, ZigBee) bereitstellen und anderen Netzwerken 150 und/oder dem einen oder den mehreren Servern 120 ein Backhaul unter Verwendung eines anderen drahtgebundenen oder drahtlosen Kommunikationsmediums (z. B. Ethernet, WiFi, Zellular) bereitstellen. In manchen Ausführungsformen wird ein Gateway 116 durch eine dedizierte Gateway-Vorrichtung oder durch eine Allzweck-Vorrichtung, wie etwa eine andere IoT-Vorrichtung 114, die Endbenutzervorrichtung 112 oder eine andere Art von Edge-Vorrichtung 110, implementiert.
  • In manchen Fällen implementieren die Gateways 116 auch eine gewisse Netzwerkverwaltungs- und/oder Anwendungsfunktionalität (z. B. IoT-Verwaltungs- und/oder IoT-Anwendungsfunktionalität für die IoT-Vorrichtungen 114), entweder separat von oder in Verbindung mit anderen Komponenten, wie etwa dem einen oder den mehreren Servern 120 und/oder anderen Edge-Vorrichtungen 110. Beispielsweise werden in manchen Ausführungsformen Konfigurationsparameter und/oder Anwendungslogik zu oder von einer Gateway-Vorrichtung 116 gepusht oder gepullt, was ermöglicht, dass die IoT-Vorrichtungen 114 (oder andere Edge-Vorrichtungen 110) innerhalb des Bereichs oder der Nähe des Gateways 116 für eine spezielle IoT-Anwendung oder einen speziellen Verwendungsfall konfiguriert werden.
  • Der eine oder die mehreren Server 120 beinhalten Dienste, die entfernt über ein Netzwerk 150 gehostet werden - z. B. in einer „Cloud“. In manchen Ausführungsformen werden beispielsweise ein oder mehrere Server 120 (z. B. einschließlich eines oder mehrerer Anwendungsserver und/oder Datenbankserver) entfernt in einem Datenzentrum gehostet. Der eine oder die mehreren Server 120 beinhalten beliebige verschiedener Dienste, die durch oder für die Edge-Vorrichtungen 110 genutzt werden können, einschließlich unter anderem Daten- und Anwendungs-Hosting, Rechendienste (z. B. Datenanalyse, Suche, Diagnose und Fehlermanagement), Sicherheitsdienste (z. B. Überwachung, Alarme, Benutzerauthentifizierung), Kartenerstellung und Navigation, Geolokalisierungsdienste, Netzwerk- oder Infrastrukturmanagement, IoT-Anwendungs- und -Managementdienste, Bezahlungsverarbeitung, Audio- und Video-Streaming, Messaging, Social Networking, Nachrichten und Wetter, unter anderen Beispielen. Darüber hinaus beinhalten in manchen Ausführungsformen gewisse des einen oder der mehreren Server 120 jeweils Speicherschutzfunktionalität, die in dieser Offenbarung beschrieben ist.
  • Das Netzwerk 150 wird verwendet, um eine Kommunikation zwischen den Komponenten des Rechensystems 100 zu ermöglichen. Beispielsweise verwenden die Edge-Vorrichtungen 110, wie etwa die Endbenutzervorrichtungen 112 und die IoT-Vorrichtungen 114, das Netzwerk 150, um miteinander zu kommunizieren und/oder auf einen oder mehrere Server 120 zuzugreifen. Das Netzwerk 150 beinhaltet eine beliebige Anzahl oder Art von Kommunikationsnetzwerken, einschließlich beispielsweise lokalen Netzwerken, großflächigen Netzwerken, öffentlichen Netzwerken, das Internet, zellularen Netzwerken, WiFi-Netzwerken, Kurzstreckennetzwerken (z. B. Bluetooth oder ZigBee) und/oder beliebige andere drahtgebundene oder drahtlose Netzwerke oder Kommunikationsmedien.
  • In manchen Ausführungsformen beinhaltet eine Computerplattform des Systems 100 - z. B. ein Server des einen oder der mehreren Server 120 - Funktionalität zum Unterstützen der Datenintegritätsvalidierung. Eine solche Funktionalität unterstützt die Erzeugung von Integritätsinformationen basierend auf einigen Daten, und/oder kann basierend auf solchen Integritätsinformationen eine anschließende Evaluierung darüber unterstützen, ob eine nicht autorisierte (z. B. unbeabsichtigte oder böswillige) Modifizierung der Daten stattgefunden hat. In einer solchen Ausführungsform umfasst die Computerplattform ferner Steuerfunktionalität zum selektiven Deaktivieren, zumindest teilweise, der Bereitstellung einer solchen Funktionalität.
  • In einer Ausführungsform ist eine Speicherschutzschaltungsanordnung der Computerplattform verschiedenartig (re)konfigurierbar, zu unterschiedlichen Zeiten, um entweder einen GNV-Modus oder einen GV-Modus zu unterstützen. In einem GV-Modus werden sowohl eine Funktionalität zum Erzeugen von Integritätsinformationen als auch eine Datenvalidierungsfunktionalität (zum Evaluieren der Datenintegrität basierend auf solchen Integritätsinformationen) für zumindest eine Domäne im Speicher, auf die der GV-Modus angewendet wird, aktiviert. In einem GNV-Modus wird die Datenvalidierungsfunktionalität für zumindest eine Speicherdomäne deaktiviert, auf die der GNV-Modus angewendet wird - z. B. während Funktionalität zum Erzeugen von Integritätsinformationen für dieselbe Speicherdomäne aktiviert bleibt. In der Praxis wird ein GNV-Modus wahrscheinlich nur auf einer globalen Ebene für alle Speicherdomänen implementiert - z. B. insofern aufgeklärte (Nicht-BIOS) Software typischerweise keinen Grund haben würde, auf eine Datenvalidierung zu verzichten, aber die Erzeugung von Integritätsinformationen erfordert.
  • In manchen Ausführungsformen unterstützt ein Prozessor eine ISA, wobei eine Anweisung aus dieser veranlassen soll, dass Speicherschutzlogik zu und von einem GNV-Modus (z. B. zwischen einem GNV-Modus und einem GV-Modus) übergeht. In anderen Ausführungsformen umfasst Speicherschutzlogik eine Schaltungsanordnung zum Veranlassen des Übergangs zu oder von einem GNV-Modus - z. B. als Reaktion auf eine solche Anweisung einer ISA. Alternativ oder zusätzlich soll eine solche Speicherschutzlogik basierend auf einem aktuellen Betriebsmodus davon - z. B. basierend auf entweder einem GNV-Modus oder einem GV-Modus - die Datengültigkeit evaluieren oder (alternativ) auf eine solche Evaluierung verzichten. In anderen Ausführungsformen sind auf einem oder mehreren nichtflüchtigen computerlesbaren Speicherungsmedien Anweisungen gespeichert, die bei Ausführung durch einen oder mehrere Prozessoren bewirken, dass der eine oder die mehreren Prozessoren ein Verfahren durchführen, das Veranlassen eines Übergangs einer Speicherschutzlogik zu oder von einem GNV-Modus umfasst. Wie oben angegeben, würde aufgeklärte (Nicht-BIOS) Software einen GNV-Modus in der üblichen Praxis nicht rekonfigurieren, insofern eine solche aufgeklärte Software typischerweise keinen Grund haben würde, auf eine Datenvalidierung zu verzichten, während sie auch die Erzeugung von Integritätsinformationen erfordert.
  • Beliebige, alle oder einige der Rechenvorrichtungen des Systems 100 sind dazu ausgebildet, eines verschiedener Betriebssysteme auszuführen, einschließlich Linux oder anderer UNIX-basierter Betriebssysteme, Microsoft Windows, Windows Server, MacOS, Apple iOS, Google Android oder ein beliebiges benutzerspezifisches und/oder proprietäres Betriebssystem, zusammen mit virtuellen Maschinen, die dazu ausgebildet sind, die Ausführung eines speziellen Betriebssystems zu virtualisieren.
  • Während 1 als mehrere Elemente enthaltend oder mit diesen assoziiert beschrieben ist, werden nicht alle innerhalb des Systems 100 von 1 veranschaulichten Elemente in jeder alternativen Implementierung der vorliegenden Offenbarung genutzt. Zusätzlich können sich eines oder mehrere der in Verbindung mit den Beispielen von 1 beschriebenen Elemente extern zu dem System 100 befinden, während in anderen Fällen gewisse Elemente innerhalb oder als ein Teil eines oder mehrerer der anderen beschriebenen Elemente enthalten sind, sowie anderen Elementen, die nicht in der veranschaulichten Implementierung beschrieben sind. Ferner können gewisse in 1 veranschaulichte Elemente mit anderen Komponenten kombiniert sowie für alternative oder zusätzliche Zwecke zusätzlich zu diesen hierin beschriebenen Zwecken verwendet werden.
  • Die 2A, 2B zeigen verschiedenartig Merkmale einer Computervorrichtung 200 zum selektiven Bereitstellen einer Datenvalidierungsfunktionalität gemäß einer Ausführungsform. Die Computervorrichtung 200 ist ein Beispiel einer Ausführungsform, die eine Funktionalität zum Veranlassen des Übergangs einer Speicherschutzschaltungsanordnung zu oder von einem GNV-Modus unterstützt - wobei z. B. der GNV-Modus einer vieler verfügbarer Betriebsmodi ist, die jeweils einen jeweiligen Typ von Schutz an einer entsprechenden Domäne eines Speichers anwenden sollen. Die Computervorrichtung 200 beinhaltet beispielsweise Merkmale des einen oder der mehreren Server 120.
  • Wie in den 2A, 2B gezeigt, beinhaltet die Computervorrichtung 200 einen Prozessor 202, einen Systemagenten 204 und einen Speicher 211, der über den Systemagenten 204 mit dem Prozessor 202 gekoppelt ist. Wie ferner nachstehend beschrieben, stellt die Computervorrichtung 200 einen Validierungsschutz (und in manchen Ausführungsformen Verschlüsselung/Entschlüsselung-Schutz) von im Speicher 211 gespeicherten Daten bereit. Der Prozessor 202 wird zum Ausführen von Anweisungen, Code und/oder einer beliebigen anderen Form von Logik oder Software verwendet, wie etwa Anweisungen, die mit einer Softwareanwendung assoziiert sind. Der Prozessor 202 beinhaltet beliebige verschiedener Kombinationen von Logik oder Verarbeitungselementen, die funktionsfähig sind, Anweisungen auszuführen, egal ob aus einem Speicher geladen oder direkt in Hardware implementiert, wie etwa ein Mikroprozessor, ein Digitalsignalprozessor, ein feldprogrammierbares Gate-Array (FPGA), eine Grafikverarbeitungseinheit (GPU), ein programmierbares Logikarray (PLA) oder eine anwendungsspezifische integrierte Schaltung (ASIC), und anderen Beispielen.
  • Der Prozessor 202 beinhaltet beliebige einer Vielfalt von zentralen (oder anderen) Verarbeitungseinheiten einer beliebigen geeigneten Architektur, wie etwa der eines CISC (Complex Instruction Set Computer - Computer mit komplexem Befehlssatz), eines RISC (Reduced Instruction Set Computer - Computer mit reduziertem Befehlssatz), eines VLIW (Very Long Instruction Word - sehr langes Anweisungswort), einer Multi-Threaded- oder Hybridarchitektur. In der gezeigten beispielhaften Ausführungsform beinhaltet der Prozessor 202 einen Befehlssatzcodierer und/oder -decodierer (IS-Codec) 222 und eine damit gekoppelte Ausführungseinheit 220 zum Ausführen von Anweisungen. Natürlich umfasst der Prozessor 202 zusätzliche Schaltungsanordnungen, die für das Verständnis gewisser Ausführungsformen nicht notwendig sind. Der IS-Codec 222 arbeitet als Reaktion auf die Ausführungseinheit 220 dahingehend, Anweisungen, die vom Prozessor 202 ausgegeben werden, die Anweisungen für eine andere Schaltungsanordnung (z. B. einschließlich einer Schutzsteuerung 205 der Computervorrichtung 200) zu codieren, um zweckmäßige Operationen durchzuführen. Der IS-Codec 222 kann unter Verwendung einer beliebigen Anzahl unterschiedlicher Mechanismen implementiert werden (z. B. einer Nachschlagetabelle, einer Hardwareimplementierung, eines PLA usw.). In manchen Ausführungsformen wird der IS-Codec 222 ferner zum Decodieren von Anweisungen, die durch den Prozessor 202 empfangen werden, in Steuersignale und/oder Mikrocodeeintragspunkte verwendet. Als Reaktion auf solche Steuersignale und/oder Mikrocode-Eintrittspunkte führt die Ausführungseinheit 220 die zweckmäßigen Operationen durch. Wie hierin beschrieben, unterstützt der IS-Codec 222 einen Befehlssatz, wobei eine Plattformkonfigurationsanweisung 224 von diesem den Prozessor 202 veranlassen soll, zu signalisieren, dass die Schutzsteuerung 205, zumindest mit Bezug auf eine Domäne des Speichers 211, einen speziellen eines GV-Modus oder eines GNV-Modus implementieren soll.
  • Der Speicher 211 wird zum Speichern von Informationen verwendet, wie etwa Code und/oder Daten, die durch den Prozessor 202 während der Ausführung verwendet werden, und/oder persistente Daten, die mit einer Anwendung oder einem Benutzer der Computervorrichtung 200 assoziiert sind. Der Speicher 211 beinhaltet beliebige verschiedener Arten oder Kombinationen von Komponenten, die in der Lage sind, Informationen zu speichern, einschließlich unbeständigen Speichers (z. B. Direktzugriffsspeicher (RAM), wie etwa dynamischer RAM (DRAM), synchroner dynamischer RAM (SDRAM) und statischer RAM (SRAM)) und/oder beständigen Speichers (z. B. Speicherungsklassenspeicher (SCM: Storage Class Memory), Direktzugriffsspeicherung(DAS)-Speicher, NVDIMM (Non-Volatile Dual-Inline-Memory-Modules) und/oder andere Formen von Flash- oder Solid-State-Speicherung).
  • Der Systemagent 204 wird zum Bereitstellen verschiedener Funktionen für den Prozessor 202 verwendet, wie etwa Verwalten des Zugriffs auf den Speicher 211 und/oder andere Ressourcen der Computervorrichtung 200. In der veranschaulichten Ausführungsform beinhaltet der Systemagent 204 beispielsweise eine Speichersteuerung 210 zum Steuern und/oder Verwalten des Zugriffs auf den Speicher 211 der Computervorrichtung 200. Darüber hinaus, wie nachstehend zusätzlich beschrieben, beinhaltet der Systemagent 204 auch eine Schutzsteuerung 205 zum Schützen von im Speicher 211 gespeicherten Daten. In manchen Ausführungsformen stellt der Systemagent 204 auch eine Schnittstelle zwischen dem Prozessor 202 und anderen Komponenten der Computervorrichtung 200 bereit (z. B. unter Verwendung einer direkten Medienschnittstelle (DMI) und/oder PCI-Express-Bridge). In verschiedenen Ausführungsformen beinhaltet der Systemagent 204 eine beliebige Kombination von Logikelementen, die dazu ausgelegt sind, hierin beschriebene Funktionalität des Systemagenten 204 durchzuführen, egal ob aus dem Speicher oder einem anderen nichtflüchtigen computerlesbaren Medium geladen oder direkt in Hardware implementiert, einschließlich durch die folgenden nicht beschränkenden Beispiele: einen Mikroprozessor, einen Digitalsignalprozessor (DSP), ein feldprogrammierbares Gate-Array (FPGA), eine Grafikverarbeitungseinheit (GPU), ein programmierbares Logikarray (PLA), eine anwendungsspezifische integrierte Schaltung (ASIC) und/oder einen Virtuelle-Maschine(VM)-Prozessor. Ein Teil oder der gesamte Systemagent 204 kann mit dem Prozessor 202 integriert sein, oder alternativ kann der Systemagent 204 separat implementiert werden - z. B. auf einem anderen Integrierte-Schaltung(IC)-Chip, der kommunikativ mit dem Prozessor 202 gekoppelt oder verbunden ist.
  • Die Speichersteuerung 210 wird zum Steuern und/oder Verwalten des Zugriffs auf den Speicher 211 der Computervorrichtung 200 verwendet. In verschiedenen Ausführungsformen wird die Speichersteuerung 210 unter Verwendung einer beliebigen Kombination von Hardware- und/oder Softwarelogik implementiert, einschließlich eines Mikroprozessors, einer anwendungsspezifischen integrierten Schaltung (ASIC), eines feldprogrammierbaren Gate-Arrays (FPGA), eines programmierbaren Logikarrays (PLA), einer virtuellen Maschine (VM) und/oder einer beliebigen anderen Art von Schaltungsanordnung oder Logik.
  • In der veranschaulichten Ausführungsform stellt die Computervorrichtung 200 einen Datenvalidierungsschutz (und in manchen Ausführungsformen Verschlüsselung/Entschlüsselung-Schutz) basierend auf Zugriffen auf den Speicher 211 bereit. In manchen Ausführungsformen werden beispielsweise der Datenvalidierungsschutz und der Verschlüsselung/Entschlüsselung-Schutz durch Erweitern und/oder Modifizieren einer speziellen Computerarchitektur implementiert. Beispielsweise wird Speicherschutz in manchen Ausführungsformen durch Erweitern der Funktionalität eines Prozessors 202 und/oder Einführen einer Schutzsteuerung 205 implementiert. In der veranschaulichten Ausführungsform wird beispielsweise der Prozessor 202 dahingehend erweitert, Steuerregister 226 und Prozessoranweisung(en) zu unterstützen, die verwendet werden können, um zumindest manche Schutzfunktionalität selektiv zu aktivieren oder zu deaktivieren - z. B. wenn die Schutzsteuerung 205 implementiert wird, um eine Datenvalidierung dementsprechend bereitzustellen (oder auf die Bereitstellung zu verzichten). Obwohl das veranschaulichte Beispiel separate Logikblöcke zum Darstellen der Schutzsteuerung 205 und des Prozessors 202 verwendet, sind in tatsächlichen Ausführungsformen die Schutzsteuerung 205 und der Prozessor 202 zusammen integriert, oder werden alternativ als separate Komponenten implementiert. In verschiedenen Ausführungsformen wird beispielsweise die Schutzsteuerung 205 unter Verwendung einer beliebigen Kombination von Hardware- und/oder Softwarelogik implementiert, einschließlich eines Mikroprozessors, einer anwendungsspezifischen integrierten Schaltung (ASIC), eines feldprogrammierbaren Gate-Arrays (FPGA), eines programmierbaren Logikarrays (PLA), einer virtuellen Maschine (VM) und/oder einer beliebigen anderen Art von Schaltungsanordnung oder Logik.
  • In der gezeigten beispielhaften Ausführungsform ist eine Integritäts-Engine 207, die in der Schutzsteuerung 205 enthalten ist (oder alternativ mit dieser gekoppelt ist), funktionsfähig, Datenvalidierungsfunktionalität für Daten, die in den Speicher 211 geschrieben werden - und/oder Daten, die aus dem Speicher 211 gelesen werden - bereitzustellen. Die Integritäts-Engine 207 wird beispielsweise auf dem Speicherpfad oder Speicherbus implementiert, um eine Validierung von Daten zu ermöglichen, die zu und von dem Speicher 211 übertragen und/oder in diesem gespeichert werden. In manchen Ausführungsformen führt die Integritäts-Engine 207 beispielsweise Berechnungen basierend auf Daten durch, die in den Speicher 211 geschrieben wurden (oder in diesen geschrieben werden sollen), um Integritätsinformationen entsprechend den Daten zu erzeugen. Die Integritätsinformationen - die z. B. ein Hash, eine Prüfsumme oder einen anderen derartigen Wert basierend auf den Daten umfassen - werden für eine spätere Verwendung als eine Referenz bei der Bestimmung, ob die Daten ohne Autorisierung modifiziert wurden, gespeichert. Veranschaulichend und nicht beschränkend werden die Integritätsinformationen in manchen Ausführungsformen in derselben Zeile im Speicher wie die Daten, denen die Integritätsinformationen entsprechen, gespeichert - z. B. in Metadatenbits, die mit der Datenzeile assoziiert sind.
  • Basierend (zum Beispiel) auf einem gegenwärtig konfigurierten Modus der Schutzsteuerung 205, ist die Integritäts-Engine 207 in der Lage, ferner eine Evaluierung von Daten durchzuführen, die aus dem Speicher 211 gelesen werden - z. B. die Evaluierung basierend auf Integritätsinformationen, die mit den Daten assoziiert sind. In manchen Ausführungsformen werden die Integritätsinformationen beispielsweise an einem Speicherort, aus dem die entsprechenden Daten abgerufen werden, gespeichert oder sind anderweitig mit diesem assoziiert. Die Integritätsinformationen basieren auf einer zeitlich früheren Version der Daten und stehen zur Verwendung zum Detektieren einer nicht autorisierten Modifizierung (falls vorhanden) der Daten zur Verfügung. Beispielsweise werden andere Integritätsinformationen (z. B. ein Hash, eine Prüfsumme oder ein anderer derartiger Wert) in manchen Ausführungsformen basierend auf den Daten berechnet, die aus dem Speicher 211 gelesen wurden - wobei z. B. solche anderen Integritätsinformationen dann mit den zuvor bestimmten Integritätsinformationen verglichen werden, die auch aus dem Speicher 211 gelesen wurden, um eine nicht autorisierte Datenmodifizierung zu detektieren. In manchen Ausführungsformen beinhalten die Berechnungen durch die Integritäts-Engine 207 zum Erzeugen von Integritätsinformationen und/oder Evaluieren der Gültigkeit von Daten basierend auf solchen Integritätsinformationen eine oder mehrere Operationen, die aus beliebigen einer Vielfalt herkömmlicher Datenvalidierungstechniken angepasst sind, die hierin nicht ausführlich beschrieben werden, um eine Verundeutlichung gewisser Merkmale verschiedener Ausführungsformen zu vermeiden.
  • In manchen Ausführungsformen wird die Integritäts-Engine 207 verschiedenartig dahingehend konfiguriert, programmiert und anderweitig betrieben, beliebige mehrerer Betriebsmodi einschließlich eines GV-Modus und eines GNV-Modus zu unterstützen. Beispielsweise wird eine Steuerschaltungsanordnung, die zum Betreiben der Integritäts-Engine 207 gekoppelt oder in dieser enthalten ist, dahingehend konfiguriert oder programmiert (z. B. durch Software), für unterschiedliche Seiten und/oder andere Domänen des Speichers 211 beliebige verschiedener Kombinationen von Datenvalidierungsfunktionalität selektiv bereitzustellen. Auf diese Art und Weise kann Datenvalidierung selektiv separat für verschiedene Benutzer, Mandanten, Kunden, Anwendungen und/oder Arbeitslasten aktiviert/deaktiviert werden.
  • Veranschaulichend und nicht beschränkend werden Referenzinformationen und/oder ein anderer Konfigurationszustand der Schutzsteuerung 205 - z. B. einschließlich der gezeigten veranschaulichenden Schlüsseltabelle 208 - zum Definieren verschiedener Domänen des Speichers 211 verwendet, die jeweils separat so konfiguriert sind, dass sie einen jeweiligen Grad und/oder eine jeweilige Art von Schutz unter Verwendung einer Datenvalidierungsfunktionalität aufweisen. In manchen Ausführungsformen wird eine „Domäne“ beispielsweise als eine Sammlung von mit einer speziellen Arbeitslast (z. B. einer Arbeitslast eines speziellen Benutzers oder einer speziellen Anwendung) assoziierten Ressourcen betrachtet und können beliebige Gebiete des Speichers beinhalten, die mit der Arbeitslast assoziierte Daten enthalten. Beispielsweise beinhaltet eine geschützte Domäne für eine Arbeitslast eines Cloud- (oder anderen) Dienstanbieters Ressourcen (z. B. Speicher), die mit einem Betriebssystem (O/S), einer virtuellen Maschine (VM) (z. B. einer VM, die auf einem Virtuelle-Maschine-Manager (VMM) ausgeführt wird) und/oder beliebigen Ring-3-Anwendungen, die auf dem O/S oder der VM ausgeführt werden, assoziiert sind.
  • Die Schutzsteuerung 205 kann die Schlüsseltabelle 208 (oder einen anderen solchen Konfigurationszustand) bewahren, um für jede einer oder mehrerer Domänen des Speichers 211 einen jeweiligen gegenwärtig konfigurierten Betriebsmodus mehrerer möglicher Betriebsmodi zu identifizieren, die beispielsweise nach einer Verfügbarkeit verschiedener Dienste vorhergesagt werden, die mit Bezug auf eine gegebene Speicherdomäne selektiv gestattet oder verhindert werden sollen. Beispielsweise werden solche Dienste - einschließlich eines ersten Dienstes zum Berechnen von Integritätsinformationen und eines zweiten Dienstes zum Evaluieren einer Gültigkeit (oder Ungültigkeit) von Daten basierend auf solchen Integritätsinformationen - aufgrund eines globalen GV-Modus, der nach einem globalen GNV-Modus konfiguriert wurde, verfügbar gemacht. In einer Ausführungsform ist ein solcher globaler GNV-Modus ein Standardmodus, der beispielsweise durch ein BIOS während einer Booting-Sequenz konfiguriert wird. Die mehreren möglichen Betriebsmodi beinhalten einen GV-Modus - wobei z. B. basierend auf der Schlüsseltabelle 208 die Integritäts-Engine 207 dahingehend betrieben wird, selektiv Funktionalität zum Evaluieren einer Integrität von Daten bereitzustellen. In manchen Ausführungsformen verhindert ein anderer Modus sowohl die Erzeugung von Integritätsinformationen als auch die Evaluierung der Datengültigkeit basierend auf solchen Integritätsinformationen.
  • Eine Steuerschaltungsanordnung der Schutzsteuerung 205 - z. B. einschließlich des gezeigten veranschaulichenden Mikrocontrollers |iC 209 - ist zum Zugreifen auf die Schlüsseltabelle 208 und zum Konfigurieren der Integritäts-Engine 207 gekoppelt, um einen angegebenen Betriebsmodus zu implementieren. Eine solche Konfiguration kann die Integritäts-Engine 207 zwischen einem GNV-Modus und einem GV-Modus übergehen lassen (wenn z. B. die Modi jeweils mit Bezug auf den Datenvalidierungsschutz für mindestens eine Domäne des Speichers 211 vorliegen). In manchen Ausführungsformen aktualisiert der µC 209 (oder eine andere derartige Logik der Schutzsteuerung 205) die Schlüsseltabelle 208 - z. B. als Reaktion auf Kommunikationen vom Prozessor 202, die im Laufe der Zeit verschiedenartig Betriebsmodi jeweils zum Schutz einer jeweiligen Speicherdomäne rekonfigurieren. Beispielsweise stellt der µC 209 Funktionalität zum Abarbeiten eines Konfigurationsbefehls vom Prozessor 202 bereit, wobei der Konfigurationsbefehl die Plattformkonfigurationsanweisung 224 beinhaltet oder anderweitig auf dieser basiert.
  • Beispielsweise können in manchen Ausführungsformen geschützte Domänen unter Verwendung einer durch den Prozessor 202 implementierten Prozessoranweisung definiert und/oder konfiguriert werden, wie etwa eine hierin beschriebene „Plattformkonfiguration‟(PCONFIG)-Anweisung. Die PCONFIG-Anweisung ermöglicht zum Beispiel das Definieren und/oder Konfigurieren einer geschützten Domäne durch Programmieren eines neuen Eintrags - oder durch Modifizieren eines bestehenden Eintrags - in der Schlüsseltabelle 208 der Schutzsteuerung 205. Auf diese Art und Weise können geschützte Domänen programmatisch (z. B. durch Managementsoftware) unter Verwendung der PCONFIG-Anweisung definiert und konfiguriert werden. In manchen Ausführungsformen unterstützt eine PCONFIG-Anweisung verschiedene Leaf-Funktionen zum Konfigurieren und Verwalten geschützter Domänen. Wenn die PCONFIG-Anweisung ausgeführt wird, kann beispielsweise die spezielle aufzurufende Leaf-Funktion in einem Hardwareregister (z. B. dem EAX-Register) spezifiziert werden. In manchen Ausführungsformen können die durch eine spezielle Leaf-Funktion verwendeten Parameter auch in Hardwareregistern (z. B. den RBX/RCX/RDX-Registern) spezifiziert werden.
  • In manchen Ausführungsformen werden Datenvalidierungsschutzmaßnahmen der Computervorrichtung 200 unter Verwendung von Prozessoranweisungen und/oder Hardwareregistern entdeckt und konfiguriert. In manchen Ausführungsformen wird beispielsweise eine Prozessoranweisung zum Bestimmen verwendet, ob gewisse Speicherschutzmaßnahmen durch die Computervorrichtung 200 unterstützt werden - wenn z. B. eine CPU-Identifikation(CPUID)-Anweisung durch Software zum Identifizieren der Fähigkeiten eines speziellen Prozessors verwendet wird.
  • Nach dem Bestimmen, dass Datenvalidierungsspeicherschutz durch die Computervorrichtung 200 unterstützt wird, wird dann eine Zugänglichkeit der Datenvalidierung aktiviert, deaktiviert oder anderweitig unter Verwendung von Hardwareregistern, wie etwa Steuerregistern 226 des Prozessors 202, konfiguriert. In manchen Ausführungsformen beinhalten die Steuerregister 226 beispielsweise verschiedene modellspezifische Register (MSRs), die Software ermöglichen, die Datenvalidierungsfunktionalität der Computervorrichtung 200 zu entdecken, zu aktivieren, zu deaktivieren oder anderweitig zu konfigurieren. In manchen Ausführungsformen beinhalten die Steuerregister 226 ein Datenvalidierungsfähigkeitsregister, ein Datenvalidierungsaktivierungsregister und/oder ein oder mehrere Datenvalidierungsausschlussregister, wie hierin ferner beschrieben. Die Steuerregister 226 definieren einen aktuellen Zustand der Datenvalidierungsfunktionalität, die durch die Schutzsteuerung 205 gemäß der Schlüsseltabelle 208 aktiviert (oder deaktiviert) wird, oder geben diese anderweitig an.
  • Durch das selektive Bereitstellen der Funktionalität der Integritäts-Engine 207 basierend auf der Schlüsseltabelle 208 gestattet oder verhindert die Schutzsteuerung 205 verschiedenartig (und unabhängig) die Datenvalidierung für verschiedene Domänen des Speichers 211. Auf diese Weise nützt eine Arbeitslast, die mit nicht aufgeklärter Software (z. B. Legacy-Software) abzuarbeiten ist, die Verschlüsselung/Entschlüsselung-Schutzmaßnahmen, ohne gewisse Datenvalidierungsfehler zu erfahren. Solche Fehler könnten ansonsten auftreten, zum Beispiel infolge verschiedener Konflikte zwischen Legacy-Verschlüsselung/Entschlüsselung-Speicherschutzmaßnahmen und Datenintegritätsmechanismen, die in den letzten Jahren entwickelt wurden. Alternativ oder zusätzlich kann dieselbe Arbeitslast (oder eine andere Arbeitslast) die Fähigkeit einer aufgeklärten Software, sowohl Datenvalidierungsschutzmaßnahmen als auch Verschlüsselung/Entschlüsselung-Schutzmaßnahmen effektiv zu implementieren, nützen.
  • Obwohl manche Ausführungsformen nicht in dieser Hinsicht beschränkt sind, sind Daten, die mit der Integritäts-Engine 207 validiert werden, eine verschlüsselte Version von Daten, die zwischen dem Prozessor 202 und dem Systemagenten 204 kommuniziert wurden (oder kommuniziert werden sollen) - wobei z.B. der Speicher 211 die verschlüsselte Version der Daten speichert. Beispielsweise umfasst in manchen Ausführungsformen die Schutzsteuerung 205 ferner eine kryptografische Engine 206 (oder ist alternativ mit dieser gekoppelt) zum Bereitstellen von Speicherverschlüsselung zum Schützen von Daten, die im Speicher 211 gespeichert sind. In manchen Ausführungsformen wird die kryptografische Engine 206 beispielsweise auf dem Speicherpfad oder Speicherbus implementiert, um eine Verschlüsselung von Daten zu ermöglichen, die zu und von dem Speicher 211 übertragen werden und/oder auf diesem gespeichert sind. Darüber hinaus stellt die kryptografische Engine 206 eine Unterstützung für mehrere Verschlüsselungsschlüssel bereit und ist in manchen Ausführungsformen konfigurierbar oder programmierbar. Beispielsweise ist die kryptografische Engine 206 in der Lage, (z. B. durch Software) zum Verschlüsseln verschiedener Gebiete oder Seiten des Speichers 211 unter Verwendung unterschiedlicher Verschlüsselungsschlüssel und/oder -algorithmen konfiguriert oder programmiert zu werden. Auf diese Weise kann Speicherverschlüsselung separat für unterschiedliche Benutzer, Mandanten, Kunden, Anwendungen und/oder Arbeitslasten bereitgestellt und konfiguriert werden.
  • Die kryptografische Engine 206 und/oder die Integritäts-Engine 207 werden mit Schaltungslogik implementiert, die beliebige einer Vielfalt geeignet konfigurierter Hardware, Firmware und/oder Ausführungssoftware umfasst. In manchen Ausführungsformen ist die kryptografische Engine 206 und/oder die Integritäts-Engine 207 mit Schaltungslogik des µC 209 integriert - wobei z. B. eine Schaltungsanordnung des µC 209 Funktionalität der kryptografischen Engine 206 und der Integritäts-Engine 207 auf einer Pro-Domänen-Basis basierend auf einer Konfiguration, die zumindest teilweise mit der Schlüsseltabelle 208 definiert wird, selektiv aktivieren oder deaktivieren soll. In manchen Ausführungsformen wird die Schutzsteuerung 205 beispielsweise zum Definieren verschiedener gesicherter oder geschützter Domänen verwendet, die unter Verwendung von Speicherverschlüsselung separat konfiguriert und geschützt werden können. Unter Verwendung der kryptografischen Engine 206 ermöglicht die Schutzsteuerung 205, dass die geschützten Domänen separat konfiguriert und geschützt werden, wodurch ermöglicht wird, dass jede geschützte Domäne im Speicher kryptografisch isoliert wird, indem ihr assoziierter Code und/oder ihre assoziierten Daten mit einem eindeutigen Verschlüsselungsschlüssel verschlüsselt werden. Auf diese Weise können die Arbeitslasten verschiedener Benutzer, Kunden und/oder Mandanten kryptografisch isoliert werden, indem verschiedene Schutzdomänen für die verschiedenen Arbeitslasten definiert werden.
  • In manchen Ausführungsformen wird der Verschlüsselung/Entschlüsselung-Speicherschutz der Computervorrichtung 200 unter Verwendung von Prozessoranweisungen und/oder Hardwareregistern entdeckt und konfiguriert. Beispielsweise wird in manchen Ausführungsformen eine Prozessoranweisung zum Bestimmen verwendet, ob der Verschlüsselung/Entschlüsselung-Speicherschutz durch die Computervorrichtung 200 unterstützt wird, wie etwa eine CPU-Identifikation(CPUID)-Anweisung, die durch Software zum Identifizieren der Fähigkeiten eines speziellen Prozessors verwendet wird. Nach der Bestimmung, dass der Verschlüsselung/Entschlüsselung-Speicherschutz durch die Computervorrichtung 200 unterstützt wird, wird dann die Zugänglichkeit des Verschlüsselung/Entschlüsselung-Speicherschutzes aktiviert, deaktiviert oder anderweitig unter Verwendung von Hardwareregistern, wie etwa den Steuerregistern 226 des Prozessors 202, konfiguriert. In einer beispielhaften Ausführungsform beinhalten Register des Prozessors 202 (z. B. einschließlich eines oder mehrerer der Steuerregister 226) verschiedene modellspezifische Register (MSRs), die Software ermöglichen, die Verschlüsselung/Entschlüsselung-Speicherschutzfähigkeiten der Computervorrichtung 200 zu entdecken, zu aktivieren und/oder zu konfigurieren.
  • In der veranschaulichten Ausführungsform bewahrt die Schutzsteuerung 205 eine interne Domänenschlüsseltabelle 208 zum Identifizieren von Schutzmaßnahmen für jeweilige Domänen, die im System 200 konfiguriert wurden. Die Schlüsseltabelle 208 wird unter Verwendung beliebiger verschiedener Formen von Speicher oder Speicherung (z. B. RAM) implementiert - z. B. direkt auf der Schutzsteuerung 205, im Speicher 211 und/oder unter Verwendung einer anderen Speicherkomponente. Wie in 2B gezeigt, entsprechen Einträge der Domänenschlüsseltabelle 208 (z. B. einschließlich der gezeigten veranschaulichenden Einträge 208a-d) jeweils einer anderen jeweiligen Speicherdomäne. Beispielsweise beinhaltet jeder Eintrag 208a-d eine Kennung (Schlüssel-ID) einer entsprechenden Domäne und einen jeweiligen Schutzmodus für die Domäne. In einem Schlüssel-ID-Feld der Schlüsseltabelle 208 wird eine spezielle Domäne beispielsweise durch eine Kennung eines Schlüssels angegeben, der zum Bestimmen, zumindest teilweise, eines Speicherortes der Domäne verwendet wird.
  • Beispielsweise zeigt 2C ein Beispiel eines Formats 230 physischer Adressinformationen für eine gegebene Datenzeile in einem Speicher wie etwa dem Speicher 211. In manchen Ausführungsformen repräsentiert eine Schlüssel-ID die Bits höherer Ordnung der Speicheradressen, die innerhalb der assoziierten geschützten Domäne liegen. Beispielsweise beinhalten im Format 230 obere 3 Bits von 39-Bit-Adressinformationen einen Schlüssel-ID-Wert, der eine Domäne spezifiziert, zu der die entsprechende Datenzeile gehört. In einer solchen Ausführungsform spezifizieren untere 36 Bits solcher 39-Bit-Adressinformationen eine Adresse der entsprechenden Datenzeile innerhalb der Speicherdomäne. Dementsprechend deckt die mit einer solchen Schlüssel-ID assoziierte geschützte Domäne alle Speicheradressen ab, deren 3 Bits höchster Ordnung mit der Schlüssel-ID übereinstimmen. Die spezielle Größe und Anordnung der Domänenkennungs- und Adressfelder im Format 230 sind lediglich veranschaulichend, und andere Ausführungsformen beinhalten andere Größen und/oder Anordnungen der Felder oder beinhalten zusätzliche Felder. In der veranschaulichten Ausführungsform wird die Schlüssel-ID als ein Feld in der Schlüsseltabelle 208 gespeichert, aber in alternativen Ausführungsformen wird die Schlüssel-ID als ein Index in die Schlüsseltabelle 208 verwendet, anstatt direkt in der Schlüsseltabelle 208 gespeichert zu sein.
  • Unter Verwendung der Schlüsseltabelle 208 werden mehrere Schutzmodi unterstützt und Speicherdomänen werden verschiedenartig geschützt (oder alternativ zumindest teilweise nicht geschützt), jeweils basierend auf einem jeweiligen der mehreren Schutzmodi. Die unterstützten Schutzmodi beinhalten in manchen Ausführungsformen einen GV-Modus. Beispielsweise definiert ein Modus-Feld eines Eintrags in der Schlüsseltabelle 208 eine Art der Datenvalidierungsfunktionalität oder gibt diese anderweitig an, die für die Speicherdomäne entsprechend dem Eintrag zu aktivieren (oder zu deaktivieren) ist.
  • Beispielsweise beinhaltet in dem veranschaulichten Beispiel die Domänenschlüsseltabelle 208 vier Einträge. Für jeden der Einträge 208a bis 208d identifiziert ein Modus-Feld des Eintrags einen domänenspezifischen (oder „lokalen“) Modus von Schutzdiensten für Zugriffe auf die Speicherdomäne entsprechend dem Eintrag. Dieser lokale Modus wird beispielsweise durch ein jeweiliges Betriebssystem oder einen anderen Nicht-BIOS-Prozess konfiguriert - z. B. nachdem ein BIOS einen globalen Modus konfiguriert, der einen Datenvalidierungsdienst zur Verwendung in einer beliebigen Speicherdomäne verfügbar macht. In manchen Ausführungsformen beinhaltet beispielsweise ein System-Booting, dass ein BIOS einen globalen GNV-Modus konfiguriert, der einen Datenvalidierungsdienst für Zugriffe auf eine jegliche Domäne eines Speichers verhindert. Die Identifizierung eines globalen Schutzmodus wird durch die Schlüsseltabelle 208 oder alternativ durch ein anderes Register, eine andere Tabelle oder eine andere derartige Datenstruktur bereitgestellt.
  • Anschließend ist aufgeklärte Software (z. B. einschließlich eines Betriebssystems) in der Lage, eine Plattformkonfigurationsanweisung zum Konfigurieren eines globalen GV-Modus zu kommunizieren, der den Datenvalidierungsdienst für Speicherzugriffe verfügbar macht. Die Anwendbarkeit dieses globalen GV-Modus auf eine spezielle Speicherdomäne unterliegt jedoch einer selektiven Beschränkung auf einer lokalen (domänenspezifischen) Ebene - z. B. gemäß dem durch ein gegebenes Modus-Feld der Einträge 208a bis 208d angegebenen Modus. Beispielsweise spezifiziert das Modus-Feld einen domänenspezifischen Modus zum Bereitstellen beliebiger einer Vielfalt von Kombinationen von Schutzdiensten einschließlich eines Verschlüsselung/Entschlüsselung-Dienstes, eines Dienstes zum Erzeugen von Integritätsinformationen und eines Dienstes zum Evaluieren der Datengültigkeit basierend auf Integritätsinformationen, oder gibt diesen anderweitig an.
  • In der gezeigten beispielhaften Ausführungsform identifiziert der erste Eintrag 208a der Schlüsseltabelle 208, dass einer ersten Speicherdomäne entsprechend der Schlüssel-ID 000 (und somit alle Speicheradressen abdeckend, die 000 in den 3 Bits höchster Ordnung enthalten) Speicherschutzfunktionalität eines lokalen GV-Modus bereitgestellt wird, der auch einen Verschlüsselung/Entschlüsselung-Schutz unterstützt. Ein zweiter Eintrag 208b identifiziert, dass einer zweiten Speicherdomäne entsprechend Schlüssel-ID 001 (und somit alle Speicheradressen abdeckend, die 001 in den 3 Bits höchster Ordnung enthalten) eine Verschlüsselung/Entschlüsselung-Schutzfunktionalität, jedoch kein(e) Dienst(e) zum Erzeugen von Integritätsinformationen oder Evaluieren der Datengültigkeit bereitgestellt wird. Ein dritter Eintrag 208c identifiziert, dass einer dritten Speicherdomäne entsprechend einer Schlüssel-ID 010 (und somit alle Speicheradressen abdeckend, die 010 in den 3 Bits höchster Ordnung enthalten) eine Speicherschutzfunktionalität eines lokalen GV-Modus bereitgestellt wird, der auch einen Verschlüsselung/Entschlüsselung-Schutz unterstützt. Ein vierter Eintrag 208d identifiziert, dass einer vierten Speicherdomäne entsprechend einer Schlüssel-ID 011 (und somit alle Speicheradressen abdeckend, die 011 in den 3 Bits höchster Ordnung enthalten) eine Verschlüsselung/Entschlüsselung-Schutzfunktionalität, jedoch kein(e) Dienst(e) zum Erzeugen von Integritätsinformationen oder Evaluieren der Datengültigkeit bereitgestellt wird. Die spezielle Anzahl von in der Schlüsseltabelle 208 gezeigten Speicherdomänen und die den Domänen verschiedenartig zugewiesenen speziellen Speicherschutzmodi sind lediglich veranschaulichend und nicht auf manche Ausführungsformen beschränkend.
  • Obwohl manche Ausführungsformen nicht in dieser Hinsicht beschränkt sind, ist die Schlüsseltabelle 208 (oder ein anderer Konfigurationszustand der Schutzsteuerung 205) in der Lage, ferner eine Korrespondenz kryptografischer Schlüssel jeweils mit einer jeweiligen Speicherdomäne zu identifizieren. Veranschaulichend und nicht beschränkend identifiziert der Eintrag 208a ferner, dass der ersten Speicherdomäne (entsprechend Schlüssel-ID 000) ein Verschlüsselung/Entschlüsselung-Schutz unter Verwendung eines Verschlüsselungsschlüssels ABC bereitgestellt wird. Ferner identifiziert der Eintrag 208b, dass der zweiten Speicherdomäne (entsprechend Schlüssel-ID 001) ein Verschlüsselung/Entschlüsselung-Schutz unter Verwendung eines Verschlüsselungsschlüssels LMN bereitgestellt wird - wobei z. B. der Eintrag 208c ferner identifiziert, dass der dritten Speicherdomäne (entsprechend Schlüssel-ID 010) ein Verschlüsselung/Entschlüsselung-Schutz unter Verwendung eines Verschlüsselungsschlüssels XYZ bereitgestellt wird. Weiterhin identifiziert der Eintrag 208d, dass der vierten Speicherdomäne (entsprechend Schlüssel-ID 011) ein Verschlüsselung/Entschlüsselung-Schutz unter Verwendung eines Verschlüsselungsschlüssels PQR bereitgestellt wird. In anderen Ausführungsformen lässt die Schlüsseltabelle 208 jegliche solche kryptografischen Schlüsselinformationen weg.
  • 3 zeigt Merkmale eines Verfahrens 300 zum Konfigurieren eines oder mehrerer Speicherschutzmechanismen. In manchen Ausführungsformen wird das Verfahren 300 mit einem oder mehreren Servern 120 oder mit einer Schaltungsanordnung der Computervorrichtung 200 (z. B. an der Schutzsteuerung 205) durchgeführt. In einer Ausführungsform wird das Verfahren 300 mit einer Schaltungsanordnung durchgeführt, die mit einem Prozessor und einem Speicher gekoppelt ist und eine erste Schaltung beinhaltet, die Integritätsinformationen - z. B. einschließlich eines Hash, einer Prüfsumme oder eines oder mehrerer anderer geeigneter Bezugswerte - basierend auf Daten, die mit dem Prozessor und dem Speicher kommuniziert werden, berechnen soll. Eine solche Schaltungsanordnung umfasst ferner eine zweite Schaltung, die eine Gültigkeit einiger Daten basierend auf solchen Integritätsinformationen bestimmen soll. Beispielsweise stellt die Schaltungsanordnung Funktionalität der Integritäts-Engine 207 und in manchen Ausführungsformen Schaltungslogik (wie etwa den µC 209) bereit, die funktionsfähig ist, eine solche Funktionalität verschiedenartig zu konfigurieren. Die Schaltungsanordnung stellt in manchen Ausführungsformen ferner Funktionalität der kryptografischen Engine 206 bereit.
  • Wie in 3 gezeigt, kann das Verfahren 300 (bei 301) Detektieren, an der Schaltungsanordnung, einer Anweisung (z. B. einer Plattformkonfigurationsanweisung PCONFIG) vom Prozessor beinhalten, die eine erste Domäne des Speichers angibt. In manchen Ausführungsformen beinhalten der Prozessor und/oder die Schaltungsanordnung jeweilige Referenzinformationen (oder einen anderen derartigen Konfigurationszustand) oder haben Zugriff zu diese, die mehrere Domänen des Speichers beschreiben. Solche Referenzinformationen spezifizieren ferner für jede Domäne der mehreren Domänen einen oder mehrere jeweilige Dienste oder geben diese anderweitig an, die an Daten anzuwenden sind, die aus der Domäne gelesen werden oder in diese geschrieben werden sollen. Dementsprechend werden die Referenzinformationen (die z. B. mit der Schlüsseltabelle 208 und/oder den Steuerregistern 226 bereitgestellt werden) zum Bestimmen einer aktuellen Konfiguration der Schaltungsanordnung verwendet und/oder werden zum Ändern der Konfiguration aktualisiert.
  • Beispielsweise spezifiziert die bei 301 detektierte Anweisung - z. B. durch die definierte Anweisung 224 - eine spezielle Kombination von Speicherschutzmechanismen, oder gibt diese anderweitig an, die verschiedenartig bezüglich Speicherzugriffen auf die erste Domäne anzuwenden oder nicht anzuwenden sind. In einer beispielhaften Ausführungsform wird die Anweisung durch den IS-Codec 222 (oder eine andere derartige Logik) als Reaktion auf einen Softwareprozess, der mit der Ausführungseinheit 220 ausgeführt wird, erzeugt. Basierend auf der bei 301 detektierten Anweisung konfiguriert das Verfahren 300 (bei 302) einen Zustand der Schaltungsanordnung. Der Zustand beinhaltet einen GNV-Modus bezüglich der ersten Domäne - wobei z. B. mit Bezug auf das Abarbeiten von Zugriffen auf die erste Domäne durch den Prozessor der Zustand einen Zugriff auf die zweite Schaltung (die einen Dienst zum Validieren von Daten basierend auf Integritätsinformationen bereitstellt) verhindern soll, während ein Zugriff auf die erste Schaltung (die einen Dienst zum Berechnen von Integritätsdaten bereitstellt) gestattet wird.
  • In manchen Ausführungsformen korrespondiert der bei 302 konfigurierte Zustand mehrere Domänen des Speichers jeweils mit einem jeweiligen eines ersten Betriebsmodus der Schaltungsanordnung oder eines zweiten Betriebsmodus der Schaltungsanordnung. Der erste Modus und der zweite Modus sind ein GNV-Modus bzw. ein GV-Modus. In manchen Ausführungsformen sind die Modi jeweils domänenspezifisch - wenn z. B. die Anwendbarkeit eines gegebenen Modus mit Bezug auf Zugriffe auf eine jeweilige Domäne (falls vorhanden) vorliegt, die - zu einer gegebenen Zeit - dem Modus entspricht. Beispielsweise mit Bezug auf das Abarbeiten von Zugriffen auf eine Domäne, der der erste Modus entspricht, beinhaltet der erste Modus, dass ein Zugriff auf die zweite Schaltung verhindert wird, während ein Zugriff auf die erste Schaltung gestattet wird. Im Gegensatz dazu, mit Bezug auf das Abarbeiten von Zugriffen auf eine Domäne, der der zweite Modus entspricht, beinhaltet der zweite Modus, dass jeweilige Zugriffe sowohl auf die erste Schaltung als auch die zweite Schaltung gestattet sind - um z. B. sowohl einen ersten Dienst, der Integritätsinformationen erzeugen soll, als auch einen zweiten Dienst, der eine Datenvalidierung basierend auf solchen Integritätsinformationen durchführen soll, bereitzustellen. In einer solchen Ausführungsform korrespondiert der bei 302 konfigurierte Zustand die erste Domäne mit dem ersten Modus und korrespondiert eine andere Domäne der mehreren Domänen mit dem zweiten Modus.
  • In manchen Beispielen beinhaltet das Verfahren 300 zusätzliche Operationen (nicht gezeigt) zum Ändern eines Modus, durch den Zugriffe auf eine spezielle Domäne mit Datenvalidierungsdiensten zu versorgen oder nicht zu versorgen sind. In einer Ausführungsform ist der bei 302 konfigurierte Zustand ein erster Zustand, der die erste Domäne mit einem ersten (GNV) Modus korrespondiert. In einer solchen Ausführungsform umfasst das Verfahren 300 ferner, dass die Schaltungsanordnung ferner eine zweite Anweisung vom Prozessor empfängt, wobei die zweite Anweisung einen zweiten Zustand der Schaltungsanordnung einstellen soll, wobei der zweite Zustand die erste Domäne mit einem zweiten Modus korrespondiert. Basierend auf einer solchen zweiten Anweisung geht die Schaltungsanordnung zwischen dem ersten Zustand und einem zweiten Zustand über, der stattdessen die erste Domäne mit einem zweiten (GV) Modus korrespondiert. Dementsprechend werden verschiedene Speicherdomänen verschiedenartig jeweils mit einer jeweiligen Kombination eines oder mehrerer Datenvalidierungsdienste versorgt.
  • In manchen Ausführungsformen korrespondiert ein Standardzustand der Schaltungsanordnung - z. B. mit einem BIOS oder einer anderen derartigen Logik bei einem System-Booting konfiguriert - mehrere Domänen des Speichers jeweils mit dem ersten Modus. Ein solcher Standardzustand ermöglicht aufgeklärter Software, einem Datenvalidierungsdienst „zuzustimmen“, während nicht aufgeklärter Software gestattet wird, falsche Datenintegritätsfehler zu vermeiden. Beispielsweise ist aufgeklärte Software in der Lage, eine explizite Anforderung (unter Verwendung einer Anweisung einer durch den Prozessor unterstützten ISA) für einen GV-Modus zu erstellen, der für eine durch die aufgeklärte Software verwendete Speicherdomäne konfiguriert werden soll.
  • In manchen Ausführungsformen umfasst das Verfahren 300 zusätzlich oder alternativ Operationen, bei denen die Schaltungsanordnung einen oder mehrere Schutzdienste gemäß einem wie dem bei 302 konfigurierten Zustand durchführt. Beispielsweise umfasst das Verfahren 300 (bei 303) Detektieren, mit der Schaltungsanordnung, einer Anforderung durch den Prozessor zum Zugreifen auf die erste Domäne und (bei 304) Abarbeiten von Daten, die mit dem Prozessor und dem Speicher kommuniziert werden - wobei z. B. das Abarbeiten auf dem Zustand und der Anforderung basiert. Veranschaulichend und nicht beschränkend kann die bei 303 detektierte Anforderung lauten, Daten in die erste Domäne zu schreiben - wobei z. B. das Abarbeiten bei 304 Berechnen eines Hash, einer Prüfsumme oder anderer Integritätsinformationen basierend auf solchen Daten beinhaltet. Ein solches Berechnen von Integritätsinformationen ist gestattet (z. B. nicht deaktiviert oder anderweitig verhindert), während entweder ein GNV-Modus oder ein GV-Modus der Schaltungsanordnung bezüglich der ersten Domäne konfiguriert ist. Alternativ kann die bei 303 detektierte Anforderung lauten, Daten aus der ersten Domäne zu lesen. In einem solchen Szenario kann das Abarbeiten nur andere Operationen als eine Evaluierung (basierend auf zuvor berechneten Integritätsinformationen) der Gültigkeit solcher Daten beinhalten. Beispielsweise beinhaltet in manchen Ausführungsformen das Abarbeiten eine kryptografische Operation (wie etwa eine Entschlüsselung) der Daten - wobei z. B. die kryptografische Operation eine kryptografische Multi-Schlüssel-Operation umfasst.
  • In manchen Ausführungsformen wird ein entsprechendes Verfahren an einem Prozessor - z. B. an dem Prozessor 202 - zum Ermöglichen eines Zustands wie etwa dem bei 302 konfigurierten durchgeführt. Ein solches Verfahren beinhaltet, dass der Prozessor auf einen Speicher zugreift, während eine integrierte Schaltung (die z. B. Funktionalität der Schutzsteuerung 205 bereitstellt) sowohl mit dem Prozessor als auch mit dem Speicher gekoppelt ist. Eine solche integrierte Schaltung unterstützt Dienste wie etwa den ersten Dienst und den zweiten Dienst, die hierin mit Bezug auf das Verfahren 300 beschrieben sind. In einer solchen Ausführungsform umfasst das Verfahren ferner, dass der Prozessor eine Anweisung (wie etwa die bei 301 detektierte) zu der integrierten Schaltung kommuniziert, die eine erste Domäne des Speichers angibt, wobei die Anweisung eine Konfiguration der integrierten Schaltung einstellt. Die Konfiguration beinhaltet beispielsweise einen GNV-Modus für Zugriffe auf die erste Domäne - wobei z. B. mit Bezug auf das Abarbeiten von Zugriffen auf die erste Domäne durch den Prozessor die Konfiguration den zweiten Dienst verhindert, während der erste Dienst gestattet ist.
  • 4 zeigt Merkmale eines Verfahrens 400 zum Ermöglichen eines Abarbeitens von Daten mit einer oder mehreren Schutzfunktionalitäten gemäß einer Ausführungsform. Das Verfahren 400 beinhaltet beispielsweise einen Teil oder alle der Merkmale des Verfahrens 300. Das Verfahren 400 wird mit einer Schaltungsanordnung durchgeführt, die Funktionalität des einen oder der mehreren Server 120 oder der Computervorrichtung 200 bereitstellt. In manchen Ausführungsformen beinhaltet eine Computerplattform einen Prozessor, einen Speicher und eine Schaltungsanordnung, die verschiedenartig mit dem Prozessor und dem Speicher gekoppelt ist - wobei z. B. eine solche Schaltungsanordnung das Verfahren 400 zum Konfigurieren einer selektiven Bereitstellung von Speicherschutzdiensten durchführt. Die Schaltungsanordnung und/oder der Prozessor beinhalten jeweilige Referenzinformationen (oder einen anderen derartigen Konfigurationszustand) oder weisen anderweitig einen Zugriff auf diese auf, die verschiedene Domänen des Speichers definieren. Operationen des Verfahrens 400 korrespondieren verschiedenartig solche Domänen jeweils mit einem jeweiligen Modus zur Bereitstellung eines oder mehrerer Speicherschutzdienste.
  • Beispielsweise umfasst das Verfahren 400 (bei 401), dass die Schaltungsanordnung für jede Domäne mehrerer Domänen des Speichers einen jeweiligen Anfangsmodus der Schaltungsanordnung konfiguriert. Die jeweiligen Modi beinhalten einen GNV-Modus oder einen GV-Modus (wie etwa den ersten Modus bzw. den zweiten Modus, die hierin mit Bezug auf das Verfahren 300 beschrieben sind). In einer solchen Ausführungsform beinhaltet das Bereitstellen bei 401, oder basiert anderweitig darauf, dass ein BIOS (oder eine andere geeignete Systemstartlogik der Computerplattform) eine Standardkonfiguration der Schaltungsanordnung implementiert, wobei ein GNV-Modus mit jeder Speicherdomäne assoziiert ist - z. B. basierend auf einer Signalisierung zum Booten der Computerplattform. Diese Standardkonfiguration ermöglicht Legacy-Software, einen Verschlüsselung/Entschlüsselung-Dienst zu nützen, ohne gewisse mit einem Datenvalidierungsdienst assoziierte Fehler auszulösen. Alternativ oder zusätzlich ist aufgeklärte Software in der Lage, die Kommunikation einer Anweisung zum Konfigurieren eines Datenvalidierungsdienstes für Zugriffe auf eine Speicherdomäne, die der aufgeklärten Software zugewiesen ist, zu erzeugen oder anderweitig zu bewirken.
  • In manchen Beispielen beinhaltet das Verfahren 400 zusätzlich oder alternativ Operationen 410 zum Konfigurieren (z. B. Rekonfigurieren) eines oder mehrerer Modi, die jeweils Speicherschutzfunktionalität für Zugriffe auf eine entsprechende Speicherdomäne verwenden oder auf die Verwendung dieser verzichten sollen. Die Operationen 410 beinhalten in manchen Ausführungsformen einen Teil oder die Gesamtheit des Verfahrens 300. Die Operationen 410 beinhalten (bei 402) Bestimmen einer Zuweisung einer Speicherdomäne zu einer Arbeitslast - z. B. einschließlich Durchführen der Zuweisung in Vorbereitung auf einen Softwareprozess, der unter Verwendung der Speicherdomäne ausgeführt wird. In manchen Ausführungsformen wird der Prozessor 202 als Reaktion auf einen Verwaltungsprozess (z. B. einen Virtuelle-Maschine-Manager), der die Speicherdomäne zur Verwendung durch einen speziellen Softwareprozess auswählt, ausgeführt oder betrieben. Der Prozessor 202 greift auf Informationen - beispielsweise in Steuerregistern 226 - zu, die verschiedene Domänen des Speichers 211 spezifizieren oder anderweitig angeben. Alternativ oder zusätzlich ist Steuerlogik der Schutzsteuerung 205 (z. B. einschließlich des µC 209) in der Lage, auf Informationen in der Schlüsseltabelle 208 zuzugreifen, um solche Domänen zu spezifizieren oder anderweitig zu bestimmen.
  • In einer Ausführungsform umfassen die Operationen 410 ferner (bei 403) Bestimmen eines Modus, der der Speicherdomäne entspricht, die der Arbeitslast zugewiesen ist. Das Bestimmen bei 403 beinhaltet Bereitstellen (oder Detektieren) einer Anweisung vom Prozessor, wobei die Anweisung die Speicherdomäne und einen Speicherschutzmodus angibt, der mit der Domäne korrespondiert werden soll. Eine solche Anweisung gibt an, dass die Speicherdomäne mit einem anderen Speicherschutzmodus als einem, der gegenwärtig der Speicherdomäne entspricht, korrespondiert werden soll. Beispielsweise beinhaltet in manchen Ausführungsformen das Bestimmen bei 403, dass die Anweisung veranlasst, dass die Schaltungsanordnung zwischen einer ersten Konfiguration, bei der ein GNV-Modus zum Abarbeiten von Zugriffen auf die Domäne verwendet werden soll, und einer zweiten Konfiguration, bei der ein GV-Modus zum Abarbeiten von Zugriffen auf die Domäne verwendet werden soll, übergeht.
  • Ein solcher Übergang beinhaltet eine Rekonfiguration der Integritäts-Engine 207 (oder einer anderen derartigen Logik) zum Abarbeiten der Domäne gemäß einem GV- oder anderen Modus. Referenzinformationen werden aktualisiert, um diese Rekonfiguration widerzuspiegeln - wobei z. B. solche Referenzinformationen (zum Beispiel) die Steuerregister 226 und/oder die Schlüsseltabelle 208 beinhalten.
  • Anschließend arbeitet das Verfahren 400 (bei 404) Daten der Arbeitslast basierend auf dem Modus ab, der bei 403 bestimmt wird. Beispielsweise ist die Schaltungsanordnung in der Lage, eine Anforderung vom Prozessor für den Zugriff auf den Speicher zu detektieren - wenn z. B. Daten, die von entweder dem Prozessor oder dem Speicher kommuniziert werden, in der Zugriffsanforderung enthalten sind oder als Reaktion auf die Zugriffsanforderung bereitgestellt werden. Das Abarbeiten bei 404 beinhaltet beispielsweise Durchführen eines kryptografischen Prozesses (z. B. einer Multi-Schlüssel-Verschlüsselung oder -Entschlüsselung) basierend auf den Daten. Wenn der bei 403 bestimmte Modus ein GNV-Modus ist, verzichtet das Verfahren 400 auf das Kommunizieren einer Fehlernachricht zu dem Prozessor basierend auf der Detektion (falls vorhanden) einer Ungültigkeit der Daten.
  • Während der oder nach den Operationen 410 detektiert das Verfahren 400 (bei 405), ob eine andere Arbeitslast unter Verwendung von Ressourcen des Speichers und/oder des Prozessors abgearbeitet werden soll. Wenn kein zusätzliches Abarbeiten einer anderen Arbeitslast benötigt wird, endet das Verfahren 400 (oder fährt alternativ mit dem Abarbeiten 404 einer oder mehrerer gegenwärtig ausgeführter Arbeitslasten fort). Wenn jedoch das Evaluieren bei 405 bestimmt, dass eine andere Arbeitslast abgearbeitet werden soll, führt das Verfahren 400 eine andere Sequenz der Operationen 410 durch - um z. B. eine entsprechende Speicherdomäne zuzuweisen, einen Schutzmodus für die Speicherdomäne zu bestimmen und Daten der Arbeitslast gemäß dem Schutzmodus abzuarbeiten.
  • 5A veranschaulicht Merkmale eines Verfahrens 500 zum Abarbeiten eines Speicherzugriffs gemäß einem vorkonfigurierten Modus. Das Verfahren 500 wird in manchen Ausführungsformen unter Verwendung der durchweg in der Offenbarung beschriebenen Ausführungsformen und Funktionalität implementiert. In einer Ausführungsform wird das Verfahren 500 an einer Schaltungsanordnung durchgeführt, die Funktionalität der Schutzsteuerung 205 bereitstellt - z. B. basierend auf dem bei 302 des Verfahrens 300 konfigurierten Zustand oder basierend auf dem bei 403 des Verfahrens 400 bestimmten Modus.
  • Das Verfahren 500 beginnt (bei 501) damit, dass die Schaltungsanordnung eine Leseanforderung detektiert, die einen Ort in einem Speicher anzielt. Die Leseanforderung wird durch einen Prozessor bereitgestellt - wobei z. B. die Schaltungsanordnung, die das Detektieren bei 501 durchführt, mit sowohl dem Speicher als auch dem Prozessor gekoppelt ist. Mit Bezug auf Zugriffe auf eine Speicherdomäne, die den angezielten Ort beinhaltet, ist eine solche Schaltungsanordnung dazu ausgelegt, einen oder mehrere spezielle Schutzdienste bereitzustellen (und z. B. auf das Bereitstellen eines oder mehrerer anderer verfügbarer Schutzdienste zu verzichten).
  • Beispielsweise als Reaktion auf das Detektieren bei 501 greift das Verfahren 500 (bei 502) auf Daten vom angezielten Speicherort zu, wobei das Zugreifen mit der Schaltungsanordnung stattfindet, die mit dem Prozessor und dem Speicher gekoppelt ist. In manchen Ausführungsformen umfasst das Zugreifen bei 502 ferner Zugreifen auf zuvor berechnete Integritätsinformationen (z. B. ein Hash oder eine Prüfsumme), die an dem angezielten Speicherort gespeichert sind oder anderweitig diesem entsprechen. Solche Integritätsinformationen stehen zur Verfügung, um (bedingt durch einen gegenwärtig konfigurierten Schutzmodus) zum Evaluieren einer Gültigkeit der Daten, auf die bei 502 zugegriffen wird, verwendet zu werden. Alternativ kann ein gegenwärtig konfigurierter Schutzmodus den Abruf solcher Integritätsinformationen verhindern - wenn z. B. der Schutzmodus auf eine jegliche Datenvalidierungsevaluierung verzichten soll.
  • Veranschaulichend und nicht beschränkend umfasst das Verfahren 500 ferner Bestimmen (bei 503), ob ein GNV-Modus gegenwärtig für eine Speicherdomäne konfiguriert ist, die durch die bei 501 detektierte Leseanforderung angezielt wird. Wenn bei 503 bestimmt wird, dass ein GNV-Modus gegenwärtig der angezielten Speicherdomäne entspricht, gibt das Verfahren 500 (bei 507) eine entschlüsselte Version der Daten zu dem Prozessor zurück - z. B. unabhängig von irgendeiner Evaluierung einer Gültigkeit der Daten. Wenn jedoch stattdessen bei 503 bestimmt wird, dass kein solcher GNV-Modus gegenwärtig der angezielten Speicherdomäne entspricht, führt das Verfahren 500 (bei 504) eine Evaluierung der Daten basierend auf zuvor bestimmten Integritätsinformationen entsprechend den Daten durch. Das Evaluieren bei 504 beinhaltet Operationen, die beispielsweise von beliebigen einer Vielfalt von Datenvalidierungstechniken (z. B. Fehlerprüfungstechniken) angepasst werden, die hierin nicht ausführlich beschrieben sind, um eine Verundeutlichung gewisser Merkmale verschiedener Ausführungsformen zu vermeiden.
  • Das Verfahren 500 umfasst ferner Bestimmen (bei 505), ob das Evaluieren bei 504 eine Gültigkeit der Daten, auf die bei 502 zugegriffen wird, angibt. Wenn bei 505 bestimmt wird, dass solche Daten gültig sind, gibt das Verfahren 500 (bei 507) eine entschlüsselte Version der Daten zu dem Prozessor zurück. Wenn jedoch stattdessen bei 505 bestimmt wird, dass solche Daten ungültig sind, signalisiert das Verfahren 500 (bei 506) dem Prozessor eine Datengültigkeitsfehlernachricht, die einen Fehlschlag der Integritätsevaluierung bei 504 angibt.
  • 5B veranschaulicht Merkmale eines Verfahrens 550 zum Abarbeiten eines Speicherzugriffs gemäß einem vorkonfigurierten Modus. Das Verfahren 550 wird in manchen Ausführungsformen unter Verwendung der durchweg durch diese Offenbarung beschriebenen Ausführungsformen und Funktionalität implementiert. Das Verfahren 550 wird durch eine Schaltungsanordnung durchgeführt, die beispielsweise Funktionalität der Schutzsteuerung 205 bereitstellt.
  • Das Verfahren 550 beginnt (bei 551) mit dem Detektieren einer Schreibanforderung, die einen Ort in einem Speicher anzielt. Die Schreibanforderung beinhaltet Daten, die durch einen Prozessor bereitgestellt werden, oder ist anderweitig mit diesen assoziiert - wobei z. B. eine Schaltungsanordnung, die das Detektieren bei 551 durchführt, mit sowohl dem Speicher als auch dem Prozessor gekoppelt ist. Eine solche Schaltungsanordnung ist dazu ausgelegt, einen oder mehrere Schutzdienste mit Bezug auf Zugriffe auf den Speicher bereitzustellen. In einer Ausführungsform ist beispielsweise ein GV-Modus konfiguriert, der sowohl einen ersten Dienst zum Berechnen von Integritätsinformationen als auch einen zweiten Dienst zum Evaluieren einer Gültigkeit (oder Ungültigkeit) von Daten basierend auf zuvor berechneten Integritätsinformationen verfügbar macht. Alternativ kann ein GNV-Modus konfiguriert sein, der den ersten Dienst verfügbar macht, aber eine Verfügbarkeit des zweiten Dienstes verhindert.
  • Als Reaktion auf das Detektieren bei 551 bestimmt das Verfahren 550 (bei 552), ob ein GNV-Modus gegenwärtig konfiguriert ist - wenn z. B. der GNV-Modus global ist und für alle Domänen des Speichers gilt, einschließlich einer durch die Schreibanforderung angezielten. Wenn bei 552 bestimmt wird, dass ein GNV-Modus gegenwärtig für Zugriffe auf die angezielte Speicherdomäne gilt, verschlüsselt das Verfahren 550 (bei 553) die Daten der Schreibanforderung und erzeugt Integritätsinformationen - z. B. einschließlich eines Nachrichtenauthentifizierungscodes - für die Daten. Basierend auf der Konfiguration eines GNV-Modus basieren die bei 553 erzeugten Integritätsinformationen ferner auf einem Schlüssel, der mit einer Plattformschlüsselkennung assoziiert ist - d. h. ungeachtet dessen, welche spezielle Speicherdomäne durch die Schreibanforderung angezielt wird. Die Erzeugung solcher Integritätsinformationen basierend auf einer Plattformschlüsselkennung hilft dabei, Integritätsfehlernachrichten zu vermeiden, wenn zum Beispiel Software eine Seite von Daten während eines GNV-Modus von einer ersten Speicherdomäne (z. B. entsprechend der Plattformschlüsselkennung) zu einer anderen Speicherdomäne und dann zurück zu der ersten Domäne verschiebt.
  • Wenn bei 552 stattdessen bestimmt wird, dass kein GNV-Modus konfiguriert ist (wenn z. B. ein globaler GV-Modus konfiguriert ist), verschlüsselt das Verfahren 550 (bei 554) die Daten der Schreibanforderung und erzeugt Integritätsinformationen für die Daten. Basierend auf dem Nichtvorhandensein eines konfigurierten GNV-Modus basieren die bei 554 erzeugten Integritätsinformationen ferner auf einem Schlüssel, der mit einer anderen Schlüsselkennung für eine durch die Schreibanforderung angezielte Speicherdomäne assoziiert ist. Nach dem Verschlüsseln und Erzeugen von Integritätsinformationen (bei 553 oder 554) kann das Verfahren 500 bei 555 die verschlüsselten Daten und Integritätsinformationen in den Speicher schreiben.
  • 6A ist ein Blockdiagramm, das sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Registerumbenennungs-, Out-of-Order-Erstellungs-/Ausführungs-Pipeline gemäß Ausführungsformen der Erfindung veranschaulicht. 6B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines In-Order-Architekturkerns als auch eines beispielhaften Registerumbenennungs-, Out-of-Order-Erstellungs-/Ausführungs-Architekturkerns veranschaulicht, die in einen Prozessor eingeschlossen werden sollen, gemäß Ausführungsformen der Erfindung. Die Kästchen mit durchgezogener Linie in den 6A-6B veranschaulichen die In-Order-Pipeline und den In-Order-Kern, während die optionale Hinzufügung der Kästchen mit gestrichelter Linie die/den Registerumbenennungs-, Out-of-Order-Erstellungs-/Ausführungs-Pipeline und -Kern veranschaulicht. Unter der Annahme, dass der In-Order-Aspekt ein Teilsatz des Out-of-Order-Aspekts ist, wird der Out-of-Order-Aspekt beschrieben.
  • In 6A beinhaltet die Prozessorpipeline 600 eine Abholstufe 602, eine Längendecodierungsstufe 604, eine Decodierungsstufe 606, eine Zuweisungsstufe 608, eine Umbenennungsstufe 610, eine Scheduling-Stufe (auch als eine Entsende- oder Erstellungsstufe bekannt) 612, eine Registerlese-/Speicherlesestufe 614, eine Ausführungsstufe 616, eine Zurückschreibe-/Speicherschreibstufe 618, eine Ausnahmebehandlungsstufe 622 und eine Übergabestufe 624.
  • 6B zeigt einen Prozessorkern 690, der eine Frontend-Einheit 630 beinhaltet, die mit einer Ausführungs-Engine-Einheit 650 gekoppelt ist, die beide mit einer Speichereinheit 670 gekoppelt sind. Der Kern 690 kann ein RISC(Reduced Instruction Set Computing)-Kern, ein CISC(Complex Instruction Set Computing)-Kern, ein VLIW(Very Long Instruction Word)-Kern oder ein hybrider oder alternativer Kerntyp sein. Als noch eine andere Option kann der Kern 690 ein Spezialzweck-Kern sein, wie etwa zum Beispiel ein Netzwerk- oder Kommunikationskern, eine Komprimierungs-Engine, ein Coprozessor-Kern, ein Allzweck-Computing-Grafikverarbeitungseinheit(GPGPU)-Kern, ein Grafik-Kern oder dergleichen.
  • Die Frontend-Einheit 630 beinhaltet eine Zweigvorhersageeinheit 632, die mit einer Anweisungscacheeinheit 634 gekoppelt ist, die mit einem Anweisungsübersetzungspuffer (Anweisungs-Translation-Lookaside-Buffer (Anweisungs-TLB)) 636 gekoppelt ist, der mit einer Anweisungsabholeinheit 638 gekoppelt ist, die mit einer Decodierungseinheit 640 gekoppelt ist. Die Decodierungseinheit 640 (oder der Decodierer) kann Anweisungen decodieren und eine(n) oder mehrere Mikrooperationen, Mikrocode-Eintrittspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale als eine Ausgabe erzeugen, die von den ursprünglichen Anweisungen decodiert werden, diese anderweitig widerspiegeln oder aus diesen abgeleitet werden. Die Decodierungseinheit 640 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen beinhalten unter anderem Nachschlagetabellen, Hardwareimplementierungen, programmierbare Logikarrays (PLAs), Mikrocode-Nur-Lese-Speicher (Mikrocode-ROMs) usw. In einer Ausführungsform beinhaltet der Kern 690 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für gewisse Makroanweisungen (z. B. in der Decodierungseinheit 640 oder anderweitig in der Frontend-Einheit 630) speichert. Die Decodierungseinheit 640 ist mit einer Umbenennungs-/Zuweisereinheit 652 in der Ausführungs-Engine-Einheit 650 gekoppelt.
  • Die Ausführungs-Engine-Einheit 650 beinhaltet die Umbenennungs-/Zuweisereinheit 652, die mit einer Rückzugseinheit 654 und einem Satz einer oder mehrerer Scheduler-Einheiten 656 gekoppelt ist. Die Scheduler-Einheit(en) 656 repräsentiert (repräsentieren) eine beliebige Anzahl unterschiedlicher Scheduler, einschließlich Reservierungsstationen, eines zentralen Anweisungsfensters usw. Die Scheduler-Einheit(en) 656 ist (sind) mit der (den) physischen Registerdateieinheit(en) 658 gekoppelt. Jede der physischen Registerdateieinheiten 658 repräsentiert eine oder mehrere physische Registerdateien, wobei unterschiedliche von diesen einen oder mehrere unterschiedliche Datentypen speichern, wie etwa Skalar-Ganzzahl, Skalar-Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma, Status (z. B. einen Anweisungszeiger, der die Adresse der nächsten auszuführenden Anweisung ist) usw. In einer Ausführungsform umfasst (umfassen) die physische(n) Registerdateieinheit(en) 658 eine Vektor-Registereinheit, eine Schreibmasken-Registereinheit und eine Skalar-Registereinheit. Diese Registereinheiten können Architektur-Vektor-Register, Vektor-Masken-Register und Allzweck-Register bereitstellen. Die physische(n) Registerdateieinheit(en) 658 wird (werden) durch die Rückzugseinheit 654 überlappt, um verschiedene Weisen zu veranschaulichen, auf die Registerumbenennung und Out-of-Order-Ausführung implementiert werden können (z. B. unter Verwendung eines oder mehrerer Umordnungspuffer und einer oder mehrerer Rückzugsregisterdateien; unter Verwendung einer oder mehrerer zukünftiger Dateien, eines oder mehrerer historischer Puffer und einer oder mehrerer Rückzugsregisterdateien; unter Verwendung einer Registerabbildung und eines Pools von Registern usw.). Die Rückzugseinheit 654 und die physische(n) Registerdateieinheit(en) 658 sind mit dem (den) Ausführungscluster(n) 660 gekoppelt. Das (die) Ausführungscluster 660 beinhaltet (beinhalten) einen Satz einer oder mehrerer Ausführungseinheiten 662 und einen Satz einer oder mehrerer Speicherzugriffseinheiten 664. Die Ausführungseinheiten 662 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) an verschiedenen Datentypen (z. B. Skalar-Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektor-Ganzzahl, Vektor-Gleitkomma) durchführen. Während manche Ausführungsformen eine Anzahl von für spezifische Funktionen oder Sätze von Funktionen dedizierten Ausführungseinheiten beinhalten können, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die alle sämtliche Funktionen durchführen, beinhalten. Die Scheduler-Einheit(en) 656, die physische(n) Registerdateieinheit(en) 658 und das (die) Ausführungscluster 660 sind so gezeigt, dass sie möglicherweise mehrzahlig sind, da gewisse Ausführungsformen separate Pipelines für gewisse Datentypen/Operationen erzeugen (z. B. eine Skalar-Ganzzahl-Pipeline, eine Skalar-Gleitkomma-/Gepackte-Ganzzahl-/Gepacktes-Gleitkomma-/Vektor-Ganzzahl-/Vektor-Gleitkomma-Pipeline und/oder eine Speicherzugriffspipeline, die jeweils ihre eigene Scheduler-Einheit, physische Registerdateieinheit und/oder ihr eigenes Ausführungscluster aufweisen - und im Fall einer separaten Speicherzugriffspipeline gewisse Ausführungsformen implementiert werden, bei denen nur das Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 664 aufweist). Es sollte auch verstanden werden, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order-Erstellung/Ausführung und der Rest In-Order sein können.
  • Der Satz von Speicherzugriffseinheiten 664 ist mit der Speichereinheit 670 gekoppelt, die eine Daten-TLB-Einheit 672 beinhaltet, die mit einer Datencacheeinheit 674 gekoppelt ist, die mit einer Level-2(L2)-Cacheeinheit 676 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 664 eine Ladeeinheit, eine Adressenspeicherungseinheit und eine Datenspeicherungseinheit beinhalten, die jeweils mit der Daten-TLB-Einheit 672 in der Speichereinheit 670 gekoppelt sind. Die Anweisungscacheeinheit 634 ist ferner mit einer Level-2(L2)-Cacheeinheit 676 in der Speichereinheit 670 gekoppelt. Die L2-Cacheeinheit 676 ist mit einem oder mehreren anderen Cache-Levels und letztendlich mit einem Hauptspeicher gekoppelt.
  • Beispielhalber kann die beispielhafte Registerumbenennungs-, Out-of-Order-Erstellungs-/Ausführungs-Kernarchitektur die Pipeline 600 wie folgt implementieren: 1) die Anweisungsabholung 638 führt die Abhol- und Längendecodierungsstufen 602 und 604 durch; 2) die Decodierungseinheit 640 führt die Decodierungsstufe 606 durch; 3) die Umbenennungs-/Zuweisereinheit 652 führt die Zuweisungsstufe 608 und die Umbenennungsstufe 610 durch; 4) die Scheduler-Einheit(en) 656 führt (führen) die Schedule-Stufe 612 durch; 5) die physische(n) Registerdateieinheit(en) 658 und die Speichereinheit 670 führen die Registerlese-/Speicherlesestufe 614 durch; das Ausführungscluster 660 führt die Ausführungsstufe 616 durch; 6) die Speichereinheit 670 und die physische(n) Registerdateieinheit(en) 658 führen die Zurückschreib-/Speicherschreibstufe 618 durch; 7) verschiedene Einheiten können an der Ausnahmebehandlungsstufe 622 beteiligt sein; und 8) die Rückzugseinheit 654 und die physische(n) Registerdateieinheit(en) 658 führen die Übergabestufe 624 durch.
  • Der Kern 690 kann einen oder mehrere Befehlssätze (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies in Sunnyvale, Kalifornien; den ARM-Befehlssatz (mit optional zusätzlichen Erweiterungen wie etwa NEON) von ARM Holdings in Sunnyvale, Kalifornien, einschließlich der hierin beschriebenen Anweisung(en) unterstützen. In einer Ausführungsform beinhaltet der Kern 690 Logik zum Unterstützen einer Gepackte-Daten-Befehlssatzerweiterung (z. B. AVX1, AVX2), wodurch ermöglicht wird, dass die durch viele Multimedia-Anwendungen verwendeten Operationen unter Verwendung gepackter Daten durchgeführt werden.
  • Es sollte verstanden werden, dass der Kern Multithreading (Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies in einer Vielfalt von Weisen durchführen kann, einschließlich zeitlich unterteiltem Multithreading, simultanem Multithreading (bei dem ein einzelner physischer Kern einen Logikkern für jeden der Threads bereitstellt, die der physische Kern simultan dem Multithreading unterzieht) oder einer Kombination davon (z. B. zeitlich unterteiltes Abholen und Decodieren und simultanes Multithreading danach wie etwa in der Intel® Hyperthreading-Technologie).
  • Während Registerumbenennung im Kontext einer Out-of-Order-Ausführung beschrieben ist, sollte verstanden werden, dass Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Obwohl die veranschaulichte Ausführungsform des Prozessors auch separate Anweisungs- und Datencacheeinheiten 634/674 und eine gemeinsam genutzte L2-Cacheeinheit 676 beinhaltet, können alternative Ausführungsformen einen einzigen internen Cache für sowohl Anweisungen als auch Daten aufweisen, wie etwa zum Beispiel einen internen Level-1(L1)-Cache oder mehrere Levels eines internen Cache. In manchen Ausführungsformen kann das System eine Kombination eines internen Cache und eines externen Cache beinhalten, der sich extern zu dem Kern und/oder dem Prozessor befindet. Alternativ kann sich der gesamte Cache extern zu dem Kern und/oder dem Prozessor befinden.
  • 7 ist ein Blockdiagramm eines Prozessors 700, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung. Die Kästchen mit durchgezogenen Linien in 7 veranschaulichen einen Prozessor 700 mit einem einzelnen Kern 702A, einem Systemagenten 710, einem Satz einer oder mehrerer Bussteuerungseinheiten 716, während die optionale Hinzufügung der Kästchen mit gestrichelten Linien einen alternativen Prozessor 700 mit mehreren Kernen 702A-N, einem Satz einer oder mehrerer integrierter Speichersteuerungseinheiten 714 in der Systemagenteneinheit 710 und einer Spezialzweck-Logik 708 veranschaulicht.
  • Somit können unterschiedliche Implementierungen des Prozessors 700 beinhalten: 1) eine CPU, bei der die Spezialzweck-Logik 708, die integrierte Grafik und/oder wissenschaftliche (Durchsatz-)Logik ist (die einen oder mehrere Kerne beinhalten kann) und die Kerne 702A-N, die ein oder mehrere Allzweck-Kerne sind (z. B. Allzweck-In-Order-Kerne, Allzweck-Out-of-Order-Kerne, eine Kombination der beiden); 2) einen Coprozessor, bei dem die Kerne 702A-N eine große Anzahl von Spezialzweck-Kernen sind, die hauptsächlich für Grafik und/oder Wissenschaft (Durchsatz) beabsichtigt sind; und 3) ein Coprozessor, bei dem die Kerne 702A-N eine große Anzahl von Allzweck-In-Order-Kernen sind. Somit kann der Prozessor 700 ein Allzweck-Prozessor, ein Coprozessor oder ein Spezialzweck-Prozessor sein, wie etwa zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU (Allzweck-Grafikverarbeitungseinheit), ein MIC(Many Integrated Core)-Coprozessor mit hohem Durchsatz (der 30 oder mehr Kerne beinhaltet), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert werden. Der Prozessor 700 kann Teil eines oder mehrerer Substrate sein und/oder kann auf diesen implementiert werden, die beliebige einer Anzahl von Prozesstechnologien verwenden, wie etwa zum Beispiel BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie beinhaltet einen oder mehrere Cachelevel innerhalb der Kerne, einen Satz einer oder mehrerer gemeinsam genutzter Cacheeinheiten 706 und externen Speicher (nicht gezeigt), der mit dem Satz integrierter Speichersteuerungseinheiten 714 gekoppelt ist. Der Satz gemeinsam genutzter Cacheeinheiten 706 kann einen oder mehrere Mid-Level-Caches, wie etwa Level-2 (L2), Level-3 (L3), Level-4 (L4) oder andere Cachelevels, einen Last-Level-Cache (LLC) und/oder Kombinationen davon beinhalten. Obwohl in einer Ausführungsform eine ringbasierte Interconnect-Einheit 712 die integrierte Grafiklogik 708, den Satz gemeinsam genutzter Cacheeinheiten 706 und die Systemagenteneinheit 710/die integrierte(n) Speichersteuerungseinheit(en) 714 miteinander verbinden, können alternative Ausführungsformen eine beliebige Anzahl wohlbekannter Techniken zum Miteinanderverbinden solcher Einheiten verwenden. In einer Ausführungsform wird Kohärenz zwischen einer oder mehreren Cacheeinheiten 706 und den Kernen 702A-N beibehalten.
  • In manchen Ausführungsformen sind einer oder mehrere der Kerne 7102A-N zum Multithreading fähig. Der Systemagent 710 beinhaltet jene Komponenten, die die Kerne 702A-N koordinieren und betreiben. Die Systemagenteneinheit 710 kann beispielsweise eine Leistungssteuereinheit (PCU: Power Control Unit) und eine Anzeigeeinheit beinhalten. Die PCU kann Logik und Komponenten sein oder beinhalten, die zum Regeln des Leistungszustands der Kerne 702A-N und der integrierten Grafiklogik 708 benötigt werden. Die Anzeigeeinheit wird zum Ansteuern einer oder mehrerer extern verbundener Anzeigen genutzt.
  • Die Kerne 702A-N können hinsichtlich eines Architekturbefehlssatzes homogen oder heterogen sein; das heißt, zwei oder mehr der Kerne 702A-N können zur Ausführung desselben Befehlssatzes fähig sein, während andere zur Ausführung von nur einem Teilsatz dieses Befehlssatzes oder eines anderen Befehlssatzes fähig sein können.
  • Die 8-10 sind Blockdiagramme beispielhafter Computerarchitekturen. Andere in der Technik bekannte Systemdesigns und -konfigurationen für Laptops, Desktops, handgehaltene PCs, Personal Digital Assistants, Engineering Workstations, Server, Netzwerkvorrichtungen, Netzwerkhubs, Switches, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxes, Mikrocontroller, Mobiltelefone, tragbare Mediaplayer, handgehaltene Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind auch geeignet. Im Allgemeinen ist eine große Vielfalt von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder andere Ausführungslogik einzuschließen, wie hierin offenbart, allgemein geeignet.
  • Jetzt mit Bezug auf 8 ist ein Blockdiagramm eines Systems 800 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 800 kann einen oder mehrere Prozessoren 810, 815 beinhalten, die mit einem Steuerungshub 820 gekoppelt sind. In einer Ausführungsform beinhaltet der Steuerungshub 820 einen Grafikspeichersteuerungshub (GMCH) 890 und einen Eingabe/Ausgabe-Hub (IOH) 850 (die sich auf separaten Chips befinden können); der GMCH 890 beinhaltet Speicher- und Grafiksteuerungen, mit denen ein Speicher 840 und ein Coprozessor 845 gekoppelt sind; der IOH 850 koppelt Eingabe/Ausgabe(E/A)-Vorrichtungen 860 mit dem GMCH 890. Alternativ sind die Speicher- und/oder Grafiksteuerungen innerhalb des Prozessors integriert (wie hierin beschrieben), der Speicher 840 und der Coprozessor 845 sind direkt mit dem Prozessor 810 gekoppelt und der Steuerungshub 820 befindet sich in einem einzelnen Chip mit dem IOH 850.
  • Die optionale Art zusätzlicher Prozessoren 815 ist in 8 mit gestrichelten Linien gekennzeichnet. Jeder Prozessor 810, 815 kann einen oder mehrere der hierin beschriebenen Verarbeitungskerne beinhalten und kann eine Version des Prozessors 700 sein.
  • Der Speicher 840 kann beispielsweise dynamischer Direktzugriffsspeicher (DRAM), Phasenwechselspeicher (PCM: Phase Change Memory) oder eine Kombination der beiden sein. Für mindestens eine Ausführungsform kommuniziert der Steuerungshub 820 mit dem (den) Prozessor(en) 810, 815 über einen Multi-Drop-Bus, wie etwa einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle wie etwa QuickPath Interconnect (QPI) oder eine ähnliche Verbindung 895.
  • In einer Ausführungsform ist der Coprozessor 845 ein Spezialzweck-Prozessor, wie etwa zum Beispiel ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Steuerungshub 820 einen integrierten Grafikbeschleuniger beinhalten.
  • Es kann eine Vielfalt von Unterschieden zwischen den physischen Ressourcen 810, 815 hinsichtlich eines Spektrums von Gütemetriken geben, einschließlich Architektur-, Mikroarchitektur-, Wärme-, Leistungsverbrauchscharakteristiken und dergleichen.
  • In einer Ausführungsform führt der Prozessor 810 Anweisungen aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. In den Anweisungen können Coprozessor-Anweisungen eingebettet sein. Der Prozessor 810 erkennt diese Coprozessor-Anweisungen als von einem Typ, der durch den angebrachten Coprozessor 845 ausgeführt werden sollte. Dementsprechend erstellt der Prozessor 810 diese Coprozessor-Anweisungen (oder Steuersignale, die Coprozessor-Anweisungen repräsentieren) auf einem Coprozessor-Bus oder einem anderen Interconnect für den Coprozessor 845. Der eine oder die mehreren Coprozessoren 845 nehmen die empfangenen Coprozessor-Anweisungen an und führen sie aus.
  • Jetzt mit Bezug auf 9 ist ein Blockdiagramm eines ersten spezifischeren beispielhaften Systems 900 gezeigt, gemäß einer Ausführungsform der vorliegenden Erfindung. Wie in 9 gezeigt, ist das Mehrprozessorsystem 900 ein Punkt-zu-Punkt-Interconnect-System und beinhaltet einen ersten Prozessor 970 und einen zweiten Prozessor 980, die über ein Punkt-zu-Punkt-Interconnect 950 gekoppelt sind. Jeder der Prozessoren 970 und 980 kann eine Version des Prozessors 700 sein. In einer Ausführungsform der Erfindung sind der Prozessor 970 und 980 der Prozessor 810 bzw. 815, während der Coprozessor 938 der Coprozessor 845 ist. In einer anderen Ausführungsform sind der Prozessor 970 und 980 der Prozessor 810 bzw. der Coprozessor 845.
  • Die Prozessoren 970 und 980 sind als Integrierte-Speichersteuerung(IMC)-Einheiten 972 bzw. 982 beinhaltend gezeigt. Der Prozessor 970 beinhaltet außerdem als Teil seiner Bussteuerungseinheit Punkt-zu-Punkt(P-P)-Schnittstellen 976 und 978; gleichermaßen beinhaltet der zweite Prozessor 980 P-P-Schnittstellen 986 und 988. Die Prozessoren 970, 980 können Informationen über eine Punkt-zu-Punkt(P-P)-Schnittstelle 950 unter Verwendung von P-P-Schnittstellenschaltungen 978, 988 austauschen. Wie in 9 gezeigt, koppeln die IMCs 972 und 982 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 932 und einem Speicher 934, die Teile des Hauptspeichers sein können, der lokal an den jeweiligen Prozessoren angebracht ist.
  • Die Prozessoren 970, 980 können jeweils Informationen mit einem Chipsatz 990 über individuelle P-P-Schnittstellen 952, 954 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 976, 994, 986, 998 austauschen. Der Chipsatz 990 kann optional Informationen mit dem Coprozessor 938 über ein Interconnect 939 und eine Hochleistungsschnittstelle 992 austauschen. In einer Ausführungsform ist der Coprozessor 938 ein Spezialzweck-Prozessor, wie etwa zum Beispiel ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in jedem der Prozessoren oder außerhalb beider Prozessoren, dennoch über ein P-P-Interconnect mit den Prozessoren verbunden, enthalten sein, sodass lokale Cacheinformationen eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, falls ein Prozessor in einen Niederleistungsmodus gelegt wird.
  • Der Chipsatz 990 kann über eine Schnittstelle 996 mit einem ersten Bus 916 gekoppelt sein. In einer Ausführungsform kann der erste Bus 916 ein PCI(Peripheral Component Interconnect)-Bus oder ein Bus wie etwa ein PCI-Express-Bus oder ein anderer Drittgeneration-E/A-Interconnect-Bus sein, obwohl der Schutzumfang der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie in 9 gezeigt, können verschiedene E/A-Vorrichtungen 914 mit dem ersten Bus 916 gekoppelt sein, zusammen mit einer Bus-Bridge 918, die den ersten Bus 916 mit einem zweiten Bus 920 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 915, wie etwa Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie etwa z. B. Grafikbeschleuniger oder Digitalsignalverarbeitungseinheiten (DSP)-Einheiten), feldprogrammierbare Gate-Arrays oder ein beliebiger anderer Prozessor, mit dem ersten Bus 916 gekoppelt. In einer Ausführungsform kann der zweite Bus 920 ein LPC(Low Pin Count)-Bus sein. Verschiedene Vorrichtungen können in einer Ausführungseinheit mit einem zweiten Bus 920 gekoppelt sein, einschließlich zum Beispiel eine Tastatur und/oder Maus 922, Kommunikationsvorrichtungen 927 und eine Speicherungseinheit 928 wie etwa eine Festplatte oder andere Massenspeicherungsvorrichtung, die Anweisungen/Code und Daten 930 beinhalten kann. Ferner kann eine Audio-E/A 924 mit dem zweiten Bus 920 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur von 9 einen Multidrop-Bus oder eine andere derartige Architektur implementieren.
  • Jetzt mit Bezug auf 10 ist ein Blockdiagramm eines SoC 1000 gezeigt, gemäß einer Ausführungsform der vorliegenden Erfindung. Ähnliche Elemente in 7 besitzen gleiche Bezugsziffern. Außerdem sind Kästchen mit gestrichelten Linien optionale Merkmale auf fortschrittlicheren SoCs. In 10 sind eine oder mehrere Interconnect-Einheiten 1002 mit Folgendem gekoppelt: einem Anwendungsprozessor 1010, der einen Satz eines oder mehrerer Kerne 202A-N und eine oder mehrere gemeinsam genutzte Cacheeinheiten 706 beinhaltet; einer Systemagenteneinheit 710; einer oder mehreren Bussteuerungseinheiten 716; einer oder mehreren Integrierte-Speicherungssteuerung-Einheiten 714; einem Satz eines oder mehrerer Coprozessoren 1020, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor beinhalten können; einer SRAM(statischer Direktzugriffsspeicher)-Einheit 1030; einer DMA(Direktspeicherzugriff)-Einheit 1032; und einer Anzeigeeinheit 1040 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform beinhaltet (beinhalten) der (die) Coprozessor(en) 1020 einen Spezialzweck-Prozessor, wie etwa zum Beispiel einen Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode implementiert werden, die auf programmierbaren Systemen ausgeführt werden, die mindestens einen Prozessor, ein Speicherungssystem (einschließlich flüchtigen oder nichtflüchtigen Speicher- und/oder Speicherungselementen), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung umfassen.
  • Programmcode, wie etwa der in 9 veranschaulichte Code 930, kann an Eingabeanweisungen zum Durchführen der hierin beschriebenen Funktionen und Erzeugen von Ausgabeinformationen angewendet werden. Die Ausgabeinformationen können bei einer oder mehreren Ausgabevorrichtungen in bekannter Weise angewendet werden. Für Zwecke dieser Anmeldung beinhaltet ein Verarbeitungssystem ein beliebiges System, das einen Prozessor aufweist, wie etwa zum Beispiel: einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer prozeduralen oder objektorientierten Programmiersprache hoher Ebene implementiert werden, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann nach Bedarf auch in Assembler- oder Maschinensprache implementiert werden. In der Tat sind die hierin beschriebenen Mechanismen nicht im Umfang auf irgendeine spezielle Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Anweisungen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, und die, wenn sie durch eine Maschine gelesen werden, bewirken, dass die Maschine Logik zum Durchführen der hierin beschriebenen Techniken herstellt. Solche Repräsentationen, als „IP-Kerne“ bekannt, können auf einem greifbaren maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Fertigungsanlagen zum Laden in die Fertigungsmaschinen, die die Logik oder den Prozessor tatsächlich herstellen, geliefert werden.
  • Solche maschinenlesbaren Speicherungsmedien können unter anderem nichtflüchtige greifbare Anordnungen von Gegenständen beinhalten, die durch eine Maschine oder Vorrichtung gefertigt oder gebildet werden, einschließlich Speicherungsmedien wie etwa Festplatten, eine beliebige andere Art von Platte einschließlich Disketten, optischen Platten, CD-ROMs (Compact Disk Read-Only Memory), CD-RWs (Compact Disk Rewritables) und magnetooptischen Platten, Halbleitervorrichtungen wie etwa Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs) wie etwa dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder eine beliebige andere Art von Medien, die sich zum Speichern elektronischer Anweisungen eignen.
  • Dementsprechend beinhalten Ausführungsformen der Erfindung auch nichtflüchtige greifbare maschinenlesbare Medien, die Anweisungen enthalten oder Designdaten enthalten, wie etwa Hardwarebeschreibungssprache (HDL: Hardware Description Language), die hierin beschriebene Strukturen, Schaltungen, Einrichtungen, Prozessoren und/oder Systemmerkmale definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Techniken und Architekturen zum Bereitstellen von Datenschutzmechanismen sind hierin beschrieben. In der obigen Beschreibung sind für Erläuterungszwecke zahlreiche spezifische Einzelheiten dargelegt, um ein durchgehendes Verständnis gewisser Ausführungsformen bereitzustellen. Es wird einem Fachmann jedoch ersichtlich sein, dass gewisse Ausführungsformen ohne diese spezifischen Einzelheiten umgesetzt werden können. In anderen Fällen sind Strukturen und Vorrichtungen in Blockdiagrammform gezeigt, um die Verundeutlichung der Beschreibung zu vermeiden.
  • Ein Bezug in der Beschreibung auf „eine Ausführungsform“ bedeutet, dass ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Charakteristik, die in Verbindung mit der Ausführungsform beschrieben sind, in mindestens einer Ausführungsform der Erfindung enthalten ist. Das Auftreten des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in der Beschreibung bezieht sich nicht notwendigerweise alle auf dieselbe Ausführungsform.
  • Manche Abschnitte der ausführlichen Beschreibung hierin sind hinsichtlich Algorithmen und symbolischen Repräsentationen von Operationen an Datenbits innerhalb eines Computerspeichers präsentiert. Diese algorithmischen Beschreibungen und Repräsentationen sind die durch die Fachleute im Gebiet der Computertechnik verwendeten Mittel, um anderen Fachleuten den Inhalt ihrer Arbeit am effektivsten zu übermitteln. Ein Algorithmus wird hier und allgemein als eine selbstkonsistente Abfolge von Schritten aufgefasst, die zu einem gewünschten Ziel führen. Diese Schritte sind jene, die physische Manipulationen physikalischer Größen erfordern. Gewöhnlich, obwohl nicht notwendigerweise, nehmen diese Größen die Form elektrischer oder magnetischer Signale an, die gespeichert, transferiert, kombiniert, verglichen und anderweitig manipuliert werden können. Zu Zeiten hat es sich als praktisch erwiesen, hauptsächlich aus Gründen der allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch beachtet werden, dass alle dieser oder ähnlicher Begriffe mit den zweckmäßigen physikalischen Größen assoziiert werden sollen und lediglich zweckdienliche Bezeichnungen sind, die bei diesen Größen angewendet werden. Insofern nicht anderweitig angegeben, wie aus der Besprechung hierin ersichtlich, wird gewürdigt werden, dass sich durchweg in dieser Beschreibung Besprechungen, die Begriffe wie etwa „Verarbeiten“ oder „Rechnen“ oder „Berechnen“ oder „Bestimmen“ oder „Anzeigen“ oder dergleichen nutzen, auf die Handlung und die Prozesse eines Computersystems oder eine ähnliche elektronische Rechenvorrichtung beziehen, das/die Daten, die als physikalische (elektronische) Größen innerhalb der Register und Speicher des Computersystems repräsentiert sind, in andere Daten, die gleichermaßen als physikalische Größen innerhalb der Speicher oder Register des Computersystems oder anderen derartigen Informationsspeicherungs-, Übertragungs- oder Anzeigevorrichtungen repräsentiert sind, manipuliert und transformiert.
  • Gewisse Ausführungsformen beziehen sich auch auf eine Einrichtung zum Durchführen der Operationen hierin. Diese Einrichtung kann spezifisch für den erforderlichen Zweck konstruiert sein oder kann einen Allzweck-Computer umfassen, der selektiv durch ein im Computer gespeichertes Computerprogramm aktiviert oder rekonfiguriert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speicherungsmedium gespeichert sein, wie etwa unter anderem einer beliebigen Art von Platte einschließlich Diskette, optischen Platten, CD-ROMs und magnetooptischen Platten, Nur-Lese-Speichern (ROMs), Direktzugriffsspeichern (RAMs) wie etwa dynamischen RAM (DRAM), EPROMs, EEPROMs, magnetischen oder optischen Karten oder eine beliebige Art von Medien, die sich zum Speichern elektronischer Anweisungen eignen und mit einem Computersystembus gekoppelt sind.
  • Die hierin präsentierten Algorithmen und Anzeigen beziehen sich nicht inhärent auf einen beliebigen speziellen Computer oder eine andere Einrichtung. Verschiedene Allzweck-Systeme können mit Programmen gemäß den Lehren hierin verwendet werden, oder es kann sich als zweckdienlich erweisen, eine spezialisiertere Einrichtung zu konstruieren, um die erforderlichen Verfahrensschritte durchzuführen. Die erforderliche Struktur für eine Vielfalt dieser Systeme wird aus der Beschreibung hierin ersichtlich. Zusätzlich sind gewisse Ausführungsformen nicht mit Bezug auf irgendeine spezielle Programmiersprache beschrieben. Es versteht sich, dass eine Vielfalt von Programmiersprachen zum Implementieren der Lehren solcher wie hierin beschriebener Ausführungsformen verwendet werden kann.
  • Neben dem hierin Beschriebenen können verschiedene Modifikationen an den offenbarten Ausführungsformen und Implementierungen davon vorgenommen werden, ohne von ihrem Schutzumfang abzuweichen. Daher sollten die Veranschaulichungen und Beispiele hierin in einem veranschaulichenden und nicht beschränkenden Sinn konstruiert werden. Der Schutzumfang der Erfindung sollte alleinig durch den Bezug auf die folgenden Ansprüche bemessen werden.

Claims (15)

  1. Integrierte Schaltung, die Folgendes umfasst: eine erste Schaltungsanordnung zum Koppeln mit einem Prozessor und einem Speicher, wobei die erste Schaltungsanordnung Folgendes umfasst: eine erste Schaltung zum Berechnen von Integritätsinformationen basierend auf Daten, die mit dem Prozessor und dem Speicher kommuniziert werden; und eine zweite Schaltung zum Bestimmen der Datengültigkeit basierend auf den Integritätsinformationen; und eine zweite Schaltungsanordnung, die mit der ersten Schaltungsanordnung gekoppelt ist, wobei die zweite Schaltungsanordnung ausgelegt ist zum: Detektieren einer Anweisung vom Prozessor, wobei die Anweisung eine erste Domäne des Speichers angibt; und Konfigurieren eines Zustands der ersten Schaltungsanordnung basierend auf der Anweisung, wobei mit Bezug auf das Abarbeiten von Zugriffen auf die erste Domäne durch den Prozessor der Zustand einen Zugriff auf die zweite Schaltung verhindern soll, während ein Zugriff auf die erste Schaltung gestattet wird.
  2. Integrierte Schaltung nach Anspruch 1, wobei der Zustand mehreren Domänen des Speichers entspricht, jeweils mit einem jeweiligen von Folgendem: einem ersten Modus, wobei, mit Bezug auf das Abarbeiten von Zugriffen auf eine Domäne, der der Modus entspricht, der Zugriff auf die zweite Schaltung verhindert wird, während der Zugriff auf die erste Schaltung gestattet wird; oder einem zweiten Modus, wobei, mit Bezug auf das Abarbeiten von Zugriffen auf eine Domäne, der der Modus entspricht, sowohl der Zugriff auf die erste Schaltung als auch der Zugriff auf die zweite Schaltung gestattet werden.
  3. Integrierte Schaltung nach Anspruch 2, wobei der Zustand die erste Domäne mit dem ersten Modus korrespondiert und eine zweite Domäne der mehreren Domänen mit dem zweiten Modus korrespondiert.
  4. Integrierte Schaltung nach Anspruch 2, wobei der Zustand ein erster Zustand ist, der die erste Domäne mit dem ersten Modus korrespondiert, wobei die zweite Schaltungsanordnung ferner ausgelegt ist zum: Empfangen einer anderen Anweisung vom Prozessor; und Veranlassen des Übergangs der ersten Schaltungsanordnung zwischen dem ersten Zustand und einem zweiten Zustand basierend auf der anderen Anweisung, wobei der zweite Zustand die erste Domäne mit dem zweiten Modus korrespondiert.
  5. Integrierte Schaltung nach Anspruch 2, wobei ein Standardzustand der integrierten Schaltung mehrere Domänen des Speichers jeweils mit dem ersten Modus korrespondiert.
  6. Integrierte Schaltung nach einem der Ansprüche 1 und 2, ferner umfassend eine dritte Schaltungsanordnung zum Durchführen einer kryptografischen Operation an Daten, die mit dem Prozessor und dem Speicher kommuniziert werden.
  7. Integrierte Schaltung nach Anspruch 6, wobei die kryptografische Operation eine kryptografische Multi-Schlüssel-Operation umfasst.
  8. Prozessor, der Folgendes umfasst: eine erste Schaltungsanordnung zum Ausführen eines Softwareprozesses, während eine integrierte Schaltungsanordnung zwischen dem Prozessor und einem Speicher gekoppelt ist, wobei die integrierte Schaltungsanordnung sowohl eine erste Schaltung zum Berechnen von Integritätsinformationen basierend auf Daten, die mit dem Prozessor und dem Speicher kommuniziert werden, als auch eine zweite Schaltung zum Bestimmen der Datengültigkeit basierend auf den Integritätsinformationen umfasst; und eine zweite Schaltungsanordnung zum, als Reaktion auf den Softwareprozess, Kommunizieren, zu der integrierten Schaltungsanordnung, einer Anweisung, die eine erste Domäne des Speichers angibt, wobei die Anweisung einen Zustand der integrierten Schaltungsanordnung konfigurieren soll, wobei, mit Bezug auf das Abarbeiten von Zugriffen auf die erste Domäne durch den Prozessor, der Zustand einen Zugriff auf die zweite Schaltung verhindern soll, während ein Zugriff auf die erste Schaltung gestattet wird.
  9. Prozessor nach Anspruch 8, wobei der Zustand mehrere Domänen des Speichers jeweils mit einem jeweiligen von Folgendem korrespondiert: einem ersten Modus, wobei, mit Bezug auf das Abarbeiten von Zugriffen auf eine Domäne, der der Modus entspricht, der Zugriff auf die zweite Schaltung verhindert wird, während der Zugriff auf die erste Schaltung gestattet wird; oder einem zweiten Modus, wobei, mit Bezug auf das Abarbeiten von Zugriffen auf eine Domäne, der der Modus entspricht, sowohl der Zugriff auf die erste Schaltung als auch der Zugriff auf die zweite Schaltung gestattet werden.
  10. Prozessor nach Anspruch 9, wobei der Zustand die erste Domäne mit dem ersten Modus korrespondiert und eine zweite Domäne der mehreren Domänen mit dem zweiten Modus korrespondiert.
  11. Prozessor nach Anspruch 9, wobei der Zustand ein erster Zustand ist, der eine erste Domäne der mehreren Domänen mit dem ersten Modus korrespondiert, und wobei: die erste Schaltungsanordnung ferner einen anderen Softwareprozess ausführen soll; und die zweite Schaltungsanordnung, als Reaktion auf den anderen Softwareprozess, ferner, zu der integrierten Schaltungsanordnung, eine zweite Anweisung zum Einstellen eines zweiten Zustands der integrierten Schaltungsanordnung kommunizieren soll, wobei der zweite Zustand die erste Domäne mit dem zweiten Modus korrespondiert.
  12. Prozessor nach Anspruch 9, wobei ein Standardzustand der integrierten Schaltungsanordnung mehrere Domänen des Speichers jeweils mit dem ersten Modus korrespondiert.
  13. Prozessor nach einem der Ansprüche 8 und 9, wobei der Prozessor auf die erste Domäne zugreifen soll, um einen Prozess einer virtuellen Maschine durchzuführen.
  14. Nichtflüchtiges computerlesbares Speicherungsmedium bzw. nichtflüchtige computerlesbare Speicherungsmedien mit darauf gespeicherten Anweisungen, die bei Ausführung durch eine oder mehrere Verarbeitungseinheiten bewirken, dass die eine oder die mehreren Verarbeitungseinheiten ein Verfahren durchführen, das Folgendes umfasst: Zugreifen auf einen Speicher, der mit der einen oder den mehreren Verarbeitungseinheiten gekoppelt ist, wobei eine integrierte Schaltung mit der einen oder den mehreren Verarbeitungseinheiten und dem Speicher gekoppelt ist, wobei die integrierte Schaltung sowohl eine erste Schaltung zum Berechnen von Integritätsinformationen basierend auf Daten, die mit der einen oder den mehreren Verarbeitungseinheiten und dem Speicher kommuniziert werden, als auch eine zweite Schaltung zum Bestimmen der Datengültigkeit basierend auf den Integritätsinformationen umfasst; und Kommunizieren, von der einen oder den mehreren Verarbeitungseinheiten zu der integrierten Schaltung, einer Anweisung, die eine erste Domäne des Speichers angibt, wobei die Anweisung einen Zustand der integrierten Schaltung konfiguriert, wobei, mit Bezug auf das Abarbeiten von Zugriffen auf die erste Domäne durch die eine oder die mehreren Verarbeitungseinheiten, der Zustand einen Zugriff auf die zweite Schaltung verhindern soll, während ein Zugriff auf die erste Schaltung gestattet wird.
  15. Nichtflüchtiges computerlesbares Speicherungsmedium bzw. nichtflüchtige computerlesbare Speicherungsmedien nach Anspruch 14, wobei der Zustand mehrere Domänen des Speichers jeweils mit einem jeweiligen von Folgendem korrespondiert: einem ersten Modus, wobei, mit Bezug auf das Abarbeiten von Zugriffen auf eine Domäne, der der Modus entspricht, der Zugriff auf die zweite Schaltung verhindert wird, während der Zugriff auf die erste Schaltung gestattet wird; oder einem zweiten Modus, wobei, mit Bezug auf das Abarbeiten von Zugriffen auf eine Domäne, der der Modus entspricht, sowohl der Zugriff auf die erste Schaltung als auch der Zugriff auf die zweite Schaltung gestattet werden.
DE202019005666.1U 2018-09-28 2019-09-06 Vorrichtung und System zum selektiven Bereitstellen einer Datenvalidierungsfunktionalität Active DE202019005666U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/145,942 2018-09-28
US16/145,942 US10795829B2 (en) 2018-09-28 2018-09-28 Device, method and system to selectively provide data validation functionality

Publications (1)

Publication Number Publication Date
DE202019005666U1 true DE202019005666U1 (de) 2021-06-16

Family

ID=67211505

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202019005666.1U Active DE202019005666U1 (de) 2018-09-28 2019-09-06 Vorrichtung und System zum selektiven Bereitstellen einer Datenvalidierungsfunktionalität

Country Status (4)

Country Link
US (1) US10795829B2 (de)
EP (1) EP3629213A1 (de)
CN (1) CN110968898A (de)
DE (1) DE202019005666U1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7018864B2 (ja) * 2018-10-15 2022-02-14 ルネサスエレクトロニクス株式会社 半導体装置及びその制御方法
US11748475B1 (en) * 2020-02-05 2023-09-05 Riverbed Technology, LLC Detection and recovery from ransomware infections

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US6651171B1 (en) * 1999-04-06 2003-11-18 Microsoft Corporation Secure execution of program code
US8738932B2 (en) 2009-01-16 2014-05-27 Teleputers, Llc System and method for processor-based security
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US9959418B2 (en) * 2015-07-20 2018-05-01 Intel Corporation Supporting configurable security levels for memory address ranges
US10303899B2 (en) 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
US10810321B2 (en) 2016-08-11 2020-10-20 Intel Corporation Secure public cloud

Also Published As

Publication number Publication date
CN110968898A (zh) 2020-04-07
US10795829B2 (en) 2020-10-06
EP3629213A1 (de) 2020-04-01
US20200104266A1 (en) 2020-04-02

Similar Documents

Publication Publication Date Title
DE102018004290A1 (de) Kryptographischer Speicherschutz mit Mehrfachschlüssel
DE102021122880A1 (de) Infrastrukturverarbeitungseinheit
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
DE112013005431T5 (de) Sichere Schlüsselableitungs- und Kryptografielogik für integrierte Schaltungen
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE102015002124A1 (de) Rücksprungzielbeschränkte Prozedurrücksprungbefehle, Prozessoren, Verfahren und Systeme
DE112017004017T5 (de) Sichere öffentliche cloud
DE102018004786A1 (de) Verfahren und Vorrichtung zum sicheren Binden eines ersten Prozessors an einen zweiten Prozessor
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102019128261A1 (de) Datenfreigabesteuerung auf der Basis von Authentifizierung und Verbindungsstreckenschutz
DE102018129420A1 (de) Indirektionsverzeichnis für den kryptografischen speicherschutz
DE102013200161A1 (de) Datenverschlüsselung/-Komprimierung auf der Grundlage einer Speicheradressübersetzung
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102019109845A1 (de) Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE112017005005T5 (de) Systeme, vorrichtungen, und verfahren zur plattformsicherheit
DE112020000303T5 (de) Testen von speicherschutz-hardware in einer umgebung einer sicheren virtuellen maschine
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE112020000289T5 (de) Abfrage und überlassung von sicherem speicher

Legal Events

Date Code Title Description
R207 Utility model specification
R150 Utility model maintained after payment of first maintenance fee after three years