DE112016006318T5 - Verfahren für beschleunigte sichere Datenspeicherfähigkeiten - Google Patents

Verfahren für beschleunigte sichere Datenspeicherfähigkeiten Download PDF

Info

Publication number
DE112016006318T5
DE112016006318T5 DE112016006318.0T DE112016006318T DE112016006318T5 DE 112016006318 T5 DE112016006318 T5 DE 112016006318T5 DE 112016006318 T DE112016006318 T DE 112016006318T DE 112016006318 T5 DE112016006318 T5 DE 112016006318T5
Authority
DE
Germany
Prior art keywords
data
cpu
data storage
relocation
operations
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.)
Withdrawn
Application number
DE112016006318.0T
Other languages
English (en)
Inventor
Junyuan Wang
Ziye Yang
SongWu Shen
Ned M. Smith
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 DE112016006318T5 publication Critical patent/DE112016006318T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Retry When Errors Occur (AREA)

Abstract

Bereitstellt werden Verfahren für beschleunigte sichere Datenspeicherfähigkeiten. Insbesondere kann ein Verlagerungsplaner dafür ausgelegt sein, eine Datenanforderung zur Komprimierung, Dekomprimierung, Verschlüsselung oder Entschlüsselung von Daten zu empfangen. Der Verlagerungsplaner kann eine oder mehrere Eigenschaften der empfangenen Datenanforderung bestimmen, beispielsweise ob diese Komprimierungsoperationen, Dekomprimierungsoperationen oder geografisch-spezifische Kryptografieoperationen beinhaltet. Basierend auf den bestimmten Eigenschaften kann der Verlagerungsplaner eine oder mehrere Datenaufgaben für eines von mehreren Verarbeitungselementen planen.

Description

  • Technisches Gebiet
  • Hier beschriebene Ausführungsformen betreffen allgemein Verfahren für beschleunigte sichere Datenspeicherfähigkeiten in verteilten Umgebungen oder Cloud-Computing-Umgebungen.
  • Hintergrund der Erfindung
  • Öffentliche und private Rechenzentren werden zunehmend für sichere Kommunikation, Datenoperationen und Datenspeicherung genutzt. Da sich immer mehr öffentliche oder private Beteiligte auf diese Rechenzentren stützen, hat die Datenmenge, die sicher verwaltet werden muss, rapide zugenommen. Datenkomprimierungs- und Verschlüsselungsmaßnahmen kommen zur Anwendung, um Daten effizient und sicher zu speichern; allerdings können sich Komprimierungs- und Verschlüsselungsoperationen negativ auf die Leistung von Rechenzentren auswirken, insbesondere bei Einsatz in Verbindung mit einer schnellen Datenzunahme. Mehrere Verfahren sind entwickelt worden, um die Leistung der Datenkomprimierung und Datenverschlüsselung zu verbessern, aber in einer Rechenzentrumsumgebung können nicht immer die effizientesten Verfahren genutzt werden. Dementsprechend kann durch geeignete Auswahl der effizientesten Komprimierungs- und Verschlüsselungsverfahren eine verbesserte Leistung und Skalierbarkeit in schnell wachsenden öffentlichen und privaten Rechenzentren erzielt werden.
  • Figurenliste
    • 1 zeigt ein Blockschaltbild eines Systems gemäß einer Ausführungsform.
    • 2 zeigt ein Blockschaltbild eines Systems gemäß einer Ausführungsform.
    • 3 zeigt ein Blockschaltbild eines Systems gemäß einer Ausführungsform.
    • 4 zeigt ein Blockschaltbild eines Systems gemäß einer Ausführungsform.
    • 5 zeigt ein Blockschaltbild eines Systems gemäß einer Ausführungsform.
    • 6 zeigt einen Logikfluss gemäß einer Ausführungsform.
    • 7 zeigt einen Logikfluss gemäß einer Ausführungsform.
    • 8 zeigt einen Logikfluss gemäß einer Ausführungsform.
    • 9 zeigt einen Logikfluss gemäß einer Ausführungsform.
    • 10 veranschaulicht eine Ausführungsform eines computerlesbaren Datenspeichermediums.
    • 11 veranschaulicht eine Ausführungsform einer Verarbeitungsarchitektur.
    • 12 veranschaulicht eine Ausführungsform eines Computersystems.
  • Ausführliche Beschreibung
  • Verschiedene Ausführungsformen richten sich allgemein auf Verfahren für beschleunigte sichere Datenspeicherfähigkeiten. Insbesondere richten sich einige Ausführungsformen auf die dynamische Planung von Komprimierungs- und Verschlüsselungsoperationen basierend auf verschiedenen Kriterien, so dass die Operationen auf eine effiziente Weise durchgeführt werden. In einer cloudbasierten Datenspeicherumgebung können Daten komprimiert und durch Verschlüsselung geschützt sein, während sie auf virtuellen Maschinen, nicht-virtuellen Hosts oder auf Backend-Speichersystemen gespeichert sind. Jedes Datenspeicherverfahren kann Kompromisse hinsichtlich Leistung und Sicherheit aufweisen.
  • In einem Beispiel kann das Schützen von Daten auf einer virtuellen Maschine unter Verwendung von leistungsoptimierten Komprimierungs- und Verschlüsselungsmodulen erfolgen. Solche Module können für ein Gastbetriebssystem oder einen virtuellen Host zugänglich sein. Allerdings können Rechenaufgaben in cloudbasierten Systemen auf viele verschiedene zentrale Verarbeitungseinheiten (Central Processing Units, CPUs), Speicher und Datenspeichervorrichtungen verteilt sein. Somit kann, in cloudbasierten Systemen, eine Leistungsoptimierungsstrategie basierend auf der Verfügbarkeit von Beschleunigungshardware auf dem jeweiligen Knoten, auf dem die Durchführung einer Arbeitslastaufgabe geplant ist, differieren.
  • In hier beschriebenen Ausführungsformen können Komprimierungs- und Verschlüsselungsoperationen auf verschiedene Art und Weise optimiert sein. In einem ersten Beispiel können CPUs insbesondere optimiert sein, um die Leistung für einen bestimmten Verschlüsselungsalgorithmus, beispielsweise AES (Advanced Encryption Standard) oder AES-NI (Advanced Encryption Standard New Instructions), zu erhöhen. Die Verwendung von CPUs, die für diese Anweisungssätze optimiert sind, kann die Leistung bei Operationen verbessern, die eine AES-basierte Verschlüsselung verwenden; allerdings können, in einigen Fällen, andere Verschlüsselungsstandards bevorzugt oder erforderlich sein, bei denen keine Leistungssteigerung festzustellen sein wird. An bestimmten geografischen Standorten, beispielsweise in China, sind unter Umständen andere Verschlüsselungsstandards als AES bevorzugt oder erforderlich. In diesen Fällen bieten CPUs, die speziell für bestimmte Verschlüsselungsarten optimiert sind, unter Umständen keine Leistungssteigerung. Somit werden andere Verfahren zur Steigerung der Leistung von Komprimierungs- und Verschlüsselungsoperationen bevorzugt.
  • In einem zweiten Beispiel eines optimierten Komprimierungs- und Verschlüsselungsverfahrens können Komprimierungs- und Verschlüsselungsoperationen an einen dedizierten, für bestimmte Zwecke gebauten Computerknoten verlagert werden, beispielsweise auf einer Cluster-Rückwandplatine. Dieses Verfahren wird manchmal als Quick Assist Technology (QAT) bezeichnet. In einem dritten Beispiel können Komprimierungs- und Verschlüsselungsoperationen an einen IP-Block einer E/A-Steuerung verlagert werden. In einem vierten Beispiel können Datenspeichervorrichtungen, beispielsweise Festkörperlaufwerke (Solid-State Drives, SSDs), integrierte Komprimierungs- und Verschlüsselungsmodule bieten. Netzgebundene Datenspeicher (Network-Attached Storage, NAS), die derartige SSDs verwenden, können aus SSD-Bausteinen aufgebaut sein, die eine Datenspeicherverschlüsselung für Rechenzentren unterstützen, aber die Daten während der Verwendung unverschlüsselt lassen. In einem fünften Beispiel können Spezialklassen von Servern mit integrierten feldprogrammierbaren Gatteranordnungen (Field-Programmable Gate Arrays, FPGAs) verwendet werden, um Komprimierungs- und Verschlüsselungsoperationen zu verlagern, und können für geografisch-spezifische Einschränkungen, beispielsweise innerhalb Chinas, angepasst werden. Auch wenn diese Beispiele bereitgestellt worden sind, um einen Kontext für die beschriebenen Ausführungsformen bereitzustellen, sollten sie nicht in einschränkender Weise ausgelegt werden, und andere Verfahren für das Optimieren von Komprimierungs- und Verschlüsselungsoperationen können von den hier beschriebenen Ausführungsformen verwendet werden.
  • Bei dem geografisch-spezifischen Beispiel China sind einige der vorstehend beschriebenen Verlagerungsoptionen unter Umständen nicht dafür ausgelegt, die bevorzugten oder erforderlichen Verschlüsselungsstandards zu optimieren. Auch wenn China als Beispiel verwendet worden ist, können bevorzugte oder erforderliche Verschlüsselungsverfahren basierend auf verschiedenen Faktoren wie Geografie, Datentyp, Anforderer oder Besitzer von Daten oder Unternehmenspräferenzen vorhanden sein, um einige Beispiele zu nennen. Wenn ein Verschlüsselungsverfahren bevorzugt oder erforderlich ist, können die hier beschriebenen Ausführungsformen die effizienteste Option für Komprimierungs- und Verschlüsselungsoperationen dynamisch bestimmen und die Aufgaben entsprechend planen. Die Bestimmung der Komprimierungs- und Verschlüsselungserfordernisse kann auf einer Anforderung zum Zugreifen, Speichern oder anderweitigen Modifizieren von Daten basieren und kann dynamisch durchgeführt werden, und im Wesentlichen in Echtzeit, um sicherzustellen, dass jede Komprimierungs- und Verschlüsselungsoperation auf eine effiziente Weise abgewickelt wird. Das dynamische Planen der Komprimierungs- und Verschlüsselungsoperationen kann die Leistung von cloudbasierten Rechenzentrumsumgebungen deutlich erhöhen und, insbesondere bei Einsatz in einem globalen Maßstab, eine erhöhte Skalierbarkeit ermöglichen.
  • Allgemein Bezug nehmend auf die hier verwendeten Bezeichnungen und die hier verwendete Nomenklatur können Teile der nachstehenden ausführlichen Beschreibung in Bezug auf Programmprozeduren präsentiert werden, die auf einem Computer oder einem Netz von Computern ausgeführt werden. Diese prozeduralen Beschreibungen und Darstellungen werden von Fachleuten auf dem Gebiet verwendet, um die Substanz ihrer Arbeit möglichst effektiv an andere Fachleute zu vermitteln. Unter einer Prozedur versteht man hier und allgemein eine in sich konsistente Folge von Operationen, die zu einem gewünschten Ergebnis führt. Bei diesen Operationen handelt es sich um Operationen, die physische Manipulationen von physischen Mengen erfordern. Üblicherweise, wenn auch nicht notwendigerweise, nehmen derartige Größen die Form von elektrischen, magnetischen oder optischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen oder sonstwie manipuliert werden können. Es erweist sich gelegentlich, hauptsächlich aus Gründen des allgemeinen Gebrauchs, als zweckmäßig, derartige Signale als Bits, Werte, Elemente, Symbole, Zeichen, Ausdrücke, Zahlen oder dergleichen zu bezeichnen. Es sollte jedoch beachtet werden, dass alle diese und ähnliche Begriffe mit den entsprechenden physikalischen Größen in Verbindung zu bringen sind und es sich hierbei nur um zweckmäßige Kennzeichnungen handelt, die auf diese Größen angewendet werden.
  • Ferner wird auf diese Manipulationen oft Bezug genommen in Begriffen, beispielsweise dem Hinzufügen oder Vergleichen, die gemeinhin mit mentalen Operationen verknüpft sind, die von einem menschlichen Bediener durchgeführt werden. Allerdings ist eine solche Fähigkeit eines menschlichen Bedieners bei den hier beschriebenen Operationen, die Teil einer oder mehrerer Ausführungsformen bilden, nicht erforderlich oder in den meisten Fällen nicht wünschenswert. Stattdessen handelt es sich bei diesen Operationen um Maschinenoperationen. Nützliche Maschinen zum Durchführen von Operationen verschiedener Ausführungsformen beinhalten digitale Universalcomputer, die selektiv von einem darin gespeicherten Computerprogramm aktiviert oder konfiguriert werden, das gemäß den Lehren hierin geschrieben wurde, und/oder beinhalten Einrichtungen, die speziell für den erforderlichen Zweck konstruiert sind. Verschiedene Ausführungsformen betreffen auch Einrichtungen oder Systeme zum Durchführen dieser Operationen. Diese Einrichtungen können speziell für den erforderlichen Zweck konstruiert sein oder können eine allgemeine Computervorrichtung einbeziehen. Die für eine Vielzahl dieser Maschinen erforderliche Struktur wird aus der gegebenen Beschreibung ersichtlich.
  • Es wird nun Bezug genommen auf die Zeichnungen, wobei in der Regel gleiche Referenznummern zur Bezugnahme auf gleiche Elemente verwendet werden. Zu Erläuterungszwecken werden in der nachstehenden Beschreibung zahlreiche spezifische Einzelheiten dargelegt, um ein gründliches Verständnis davon zu erzielen. Es lässt sich jedoch erkennen, dass die neuartigen Ausführungsformen ohne diese spezifischen Einzelheiten verwirklicht werden können. In anderen Fällen sind bekannte Strukturen und Vorrichtungen in Form von Blockschaltbildern dargestellt, um ihre Beschreibung zu erleichtern. Es ist beabsichtigt, eine umfassende Beschreibung bereitzustellen, so dass alle Modifikationen, Entsprechungen und Alternativen, die in den Schutzbereich der Ansprüche fallen, ausreichend beschrieben werden.
  • Zusätzlich kann auf Variablen Bezug genommen werden, beispielsweise „a“, „b“, „c“, die verwendet werden, um Komponenten zu kennzeichnen, wobei mehr als eine Komponente implementiert sein kann. Außerdem sei dringend darauf hingewiesen, dass es nicht notwendigerweise mehrere Komponenten geben muss, und dass ferner, wenn mehrere Komponenten implementiert sind, diese nicht alle identisch sein müssen. Stattdessen erfolgt die Verwendung von Variablen, um auf Komponenten in den Figuren zu verweisen, aus Gründen der Einfachheit und Klarheit der Darstellung.
  • 1 zeigt ein Blockschaltbild eines Systems 100 gemäß einer Ausführungsform. Das System 100 kann dafür ausgelegt sein, Komprimierungsoperationen und kryptografische Operationen basierend auf dem bestverfügbaren Durchsatz zu einem gegebenen Zeitpunkt dynamisch durchzuleiten. Der bestverfügbare Durchsatz kann basierend auf der Verfügbarkeit von Speicher- und Verarbeitungsfähigkeiten bestimmt werden. In einigen Ausführungsformen können ein oder mehrere kryptografische Verarbeitungsverfahren für spezifische Arten von Datenanforderungen optimiert sein, beispielsweise bestimmte Komprimierungs- und Verschlüsselungsoperationen.
  • Das System 100 weist einen virtuellen Maschinenmonitor (VMM) 104 auf, manchmal als Hypervisor bezeichnet, der dafür ausgelegt sein kann, die Operationen einer oder mehrerer virtueller Gastmaschinen (Gast-VMs) 102-a-n über ein Netz 122 zu überwachen. Eine Gast-VM 102 kann eine oder mehrere Emulationen eines bestimmten Computersystems und/oder Betriebssystems (Operating System, OS) aufweisen, beispielsweise eine Linux-Distribution, Windows, Mac OSX oder Unix, um nur einige nichteinschränkende Beispiele zu nennen. Eine VM 102 kann basierend auf den Funktionen und der Computerarchitektur einer physischen Maschine betrieben werden. Eine VM 102 kann System-VMs oder Prozess-VMs beinhalten. Eine System-VM kann eine vollständige Systemplattform aufweisen, die, wie vorstehend dargelegt, die Ausführung eines OS unterstützt. Eine System-VM kann beispielsweise verwendet werden, um mehrere Instanzen desselben OS oder Instanzen unterschiedlicher OS auf einer cloudbasierten Plattform effizient auszuführen. Eine Prozess-VM kann verwendet werden, um eine einzelne Instanz einer Anwendung oder eines Programms auszuführen, und kann die Fähigkeit bereitstellen, Software auf eine effiziente Weise und plattformübergreifend auszuführen. Auch wenn einige Ausführungsformen eine oder mehrere Prozess-VMs aufweisen können, werden die hier beschriebenen Ausführungsformen zum Zwecke der Veranschaulichung System-VMs verwenden.
  • Der VMM 104 kann in Hardware und/oder Software implementiert sein und dafür ausgelegt sein, eine oder mehrere VMs 102 zu erzeugen und auszuführen. Der VMM 104 kann auf einer Hostmaschine betrieben werden, während eine VM 102 als Gastmaschine betrieben werden kann. Mit anderen Worten kann eine VM 102 als virtualisierte Hardware betrieben werden und der VMM 104 kann die VM 102 auf physischer Hardware verwalten, indem direkt mit der physischen Hardware im Namen der VM 102 kommuniziert wird, einschließlich, jedoch nicht beschränkt auf Verarbeitung, Vernetzung, Speicherverwaltung und Kryptografieoperationen. Die VM 102 und der VMM 104 können dafür ausgelegt sein, unter Verwendung eines oder mehrerer Verarbeitungselemente der Datenverarbeitungsmaschine 114 betrieben zu werden, einschließlich des Hardware-Sicherheitsmoduls (HSM) 116, der CPU 118 und/oder eines dedizierten Systems auf einem Chip (System-on-a-Chip, SOC) 120, die nachstehend jeweils ausführlicher beschrieben werden. Insbesondere kryptografische Operationen wie etwa Verschlüsselung und Entschlüsselung und Komprimierungsoperationen können, wie hier beschrieben, unter Verwendung von einem von Hardware-HSM 116, CPU 118 oder einem dedizierten SOC 120, basierend auf einer Bestimmung, die von einer HSM-Beschleunigungsmaschine (HSM Acceleration Engine, HAE) 106 vorgenommen wird, und einer nachfolgenden Planung verarbeitet werden.
  • In einer Ausführungsform kann der VMM 104, neben anderen Komponenten, die aus Gründen der Übersichtlichkeit weggelassen wurden, eine HAE 106 aufweisen. Die HAE 106 kann in Hardware und/oder Software implementiert sein und kann wenigstens einen Verlagerungsplaner 108, einen Ringpuffer-Pool 110 und einen Schlüsselmanager 112 enthalten. Der Verlagerungsplaner 108 kann dafür ausgelegt sein, Datenanforderungen zu analysieren und Datenanforderungen für das Verarbeiten durch die entsprechende Komponente der Datenverarbeitungsmaschine 114 zeitlich zu planen, basierend auf einem oder mehreren von verschiedenen Kriterien, die unter Bezugnahme auf 2 ausführlicher besprochen werden. Im Allgemeinen kann der Verlagerungsplaner 112 bestimmen, ob eine Datenanforderung für eine Komprimierung/Dekomprimierung, eine geografisch-spezifische kryptografische Operation oder eine andere Art von Operation, beispielsweise eine AES-basierte Verschlüsselung, bestimmt ist. Im Fall von Komprimierungs-/Dekomprimierungsoperationen oder geografisch-spezifischen kryptografischen Operationen kann der Verlagerungsplaner 112 eine entsprechende Datenverarbeitungsaufgabe für das HSM 116 planen. Im Fall von anderen Operationen, einschließlich einer AES-basierten Verschlüsselung, kann der Verlagerungsplaner eine entsprechende Datenverarbeitungsaufgabe für die CPU 118 planen. In einigen Situationen, wenn die CPU 118 einer höheren Arbeitslast als normal ausgesetzt ist, kann der Verlagerungsplaner 112 dafür ausgelegt sein, Operationen unter Verwendung eines dedizierten SOCs 120 zu planen oder Operationen bis zu einem Zeitpunkt, wenn die CPU 118 verfügbar ist, zu verzögern. Der Logikfluss für den Verlagerungsplaner 112 wird nachstehend unter Bezugnahme auf 7-8 ausführlicher beschrieben.
  • In einer Ausführungsform kann die HAE 106 einen Ringpuffer-Pool 110 aufweisen, der Datenpufferungs- und Vorrichtungsvirtualisierungsfähigkeiten bereitstellen kann. Der Ringpuffer-Pool 110 kann physischen Speicherplatz unter Verwendung von DRAM oder anderen Arten von hier beschriebenem Speicher umfassen, der sich auf einem physischen Server befindet, auf dem der VMM 104 ausgeführt wird. Der Ringpuffer-Pool 110 kann so organisiert sein, dass er ein oder mehrere DRAM-Bündel aufweist, die zu Ringpuffer-Paaren angeordnet sind. Jedes Ringpuffer-Paar kann einen Ringpuffer für Anforderungen und einen weiteren Ringpuffer für Antworten aufweisen, und jedes Paar kann jeder VM 102 zugewiesen sein. In einigen Ausführungsformen kann jedem Ringpuffer ein eindeutiger physischer DRAM-Platz zugewiesen sein und jeder Ringpuffer kann einem virtuellen Plattenbus jeder VM 102 zugewiesen sein. Der Ringpuffer-Pool 110 wird nachstehend unter Bezugnahme auf 3 ausführlicher beschrieben.
  • In einer Ausführungsform kann die HAE 106 einen dedizierten Schlüsselmanager 112 aufweisen. Der Schlüsselmanager 112 kann Schlüsselverwaltungskapazitäten bereitstellen, die es dem Verlagerungsplaner 108 erlauben, schlüsselbezogene Operationen durchzuführen, einschließlich, jedoch nicht beschränkt auf das Hinzufügen, Löschen und Nachschlagen sowie die Schlüsselgenerierung über eine (nicht in 1 gezeigte, aber unter Bezugnahme auf 4 ausführlich beschriebene) Schnittstelle. Der Schlüsselmanager 112 kann aus einem oder mehreren physischen Speicherorten bestehen, beispielsweise Datenregistern, und kann eine interne Datenbank aufweisen, die mit jedem Ringpuffer-Paar in dem Ringpuffer-Pool 110 verknüpft ist, das wiederum mit einer VM 102 verknüpft sein kann. Die Datenbank kann verwendet werden, um einen oder mehrere mit einer VM 102 verknüpfte Schlüssel zu speichern. Der Schlüsselmanager 112 kann in einigen Ausführungsformen unter Verwendung einer sicheren Enklave implementiert sein, und Komponenten von einer Datenverarbeitungsmaschine 114 können Zugang zu den Inhalten des Schlüsselmanagers 112 erhalten, wenn geplante Datenaufgaben durchgeführt werden.
  • Die Datenverarbeitungsmaschine 114 kann eine Sammlung von einem oder mehreren Verarbeitungselementen aufweisen, die eine optimierte Unterstützung für verschiedene Arten von Komprimierungs- und Verschlüsselungsoperationen bereitstellen können. Die Datenverarbeitungsmaschine 114 kann ein oder mehrere Verarbeitungselemente aufweisen, die jeweils bestimmte Vorteile oder Nachteile bereitstellen können, wenn Komprimierungs- oder Verschlüsselungsoperationen verarbeitet werden. Die Datenverarbeitungsmaschine 114 kann dafür ausgelegt sein, verschiedene Hardwarefähigkeiten zu nutzen, um Komprimierungs- und Verschlüsselungsoperationen auf eine effiziente und beschleunigte Weise durchzuführen. Jede Komponente der Datenverarbeitungsmaschine 114 kann eine oder mehrere Eigenschaften aufweisen, die von dem Verlagerungsplaner 108 beim Planen von Datenoperationen berücksichtigt werden können. Nicht einschränkende Beispiele für Eigenschaften können eine Art von Betriebsoptimierung, Geschwindigkeit und/oder Verfügbarkeit beinhalten. Beispielsweise kann eine Komponente wie etwa das Hardware-Sicherheitsmodul (Hardware Security Module, HSM) 116 dafür ausgelegt und optimiert sein, Datenoperationen unter Verwendung von einem oder mehreren Komprimierungs- oder Verschlüsselungsstandards durchzuführen. Wenn der Verlagerungsplaner 108 anhand einer Anforderung bestimmt, dass beispielsweise ein geografisch-spezifischer Verschlüsselungsalgorithmus erforderlich ist, kann der Planer solche Operationen unter Verwendung eines entsprechenden HSM 116 planen, um eine Leistungssteigerung zu erzielen. Wenn der Verlagerungsplaner 108 anhand einer Anforderung bestimmt, dass eine Datenoperation, beispielsweise eine AES-basierte Verschlüsselung, erforderlich ist, kann der Planer solche Operationen unter Verwendung der CPU 118 planen, die für solche Operationen optimiert sein kann. Falls festgestellt wird, dass die CPU 118 bis zu einem oder über einen vorgegebenen Schwellwert hinaus beschäftigt ist, kann der Verlagerungsplaner 108 eine Datenaufgabe unter Verwendung eines dedizierten SOC 120 planen. Die Beispiele sind in diesem Zusammenhang nicht beschränkt.
  • Die Datenverarbeitungsmaschine 114 kann ein HSM 116 aufweisen, bei dem es sich um eine physische Rechenvorrichtung handeln kann, die dafür optimiert ist, kryptografische Operationen oder Komprimierungsoperationen durchzuführen. Das HSM 116 kann einen oder mehrere sichere Kryptoprozessoren aufweisen. Das HSM 116 kann in Form einer Steckkarte oder einer externen Vorrichtung vorliegen, die in einen Server eingesteckt werden kann. Auf diese Weise kann das HSM 116 den Vorteil eine späteren Erweiterbarkeit bereitstellen, wenn neue Komprimierungs- und Verschlüsselungsstandards entwickelt, erforderlich und/oder bevorzugt werden. In einigen Ausführungsformen kann die Datenverarbeitungsmaschine 114 mehrere HSMs aufweisen, die jeweils optimiert sind, um eine oder mehrere kryptografische Operationen oder Komprimierungsoperationen durchzuführen. Alternativ kann ein einzelnes HSM ein oder mehrere Module aufweisen, wobei jedes Modul für bestimmte Operationen spezialisiert ist. In einem Beispiel kann das HSM 116 dafür optimiert sein, eine geografisch-spezifische Verschlüsselung durchzuführen, beispielsweise in Bezug auf Verschlüsselungsstandards für China, einschließlich SMS4 oder ZUC. Die Datenverarbeitungsmaschine 114 kann ein HSM für jede von mehreren bestimmten geografischen Regionen oder basierend auf bestimmten Kryptografie- und Komprimierungsstandards oder beides aufweisen. In gleicher Weise kann, anstelle von mehreren HSMs, ein einzelnes HSM mehrere spezialisierte Module aufweisen. Durch Planen von kryptografischen Operationen und Komprimierungsoperationen unter Verwendung des HSM 116 kann der Verlagerungsplaner eine Leistungssteigerung bei der Durchführung von verlagerten Operationen realisieren, während gleichzeitig die CPU 118 entlastet wird, um andere Aufgaben durchzuführen, was zu einer signifikanten Gesamtsteigerung der Systemleistung führen kann.
  • In einigen Ausführungsformen kann das HSM 116 unter Verwendung von SSD-basierten Lösungen ersetzt oder ergänzt werden, die integrierte Komprimierungs- und Verschlüsselungsmodule bieten können. Ferner können, in einigen Ausführungsformen, NAS-Systeme, die derartige SSDs verwenden, aus SSD-Bausteinen aufgebaut sein, die eine Datenspeicherverschlüsselung für Rechenzentren unterstützen, wodurch in einigen Implementierungen die Daten während der Verwendung unverschlüsselt bleiben können. Es lässt sich verstehen, dass solche SSD- und/oder NAS-basierten Lösungen, oder andere Module, die für bestimmte Verarbeitungsfunktionen spezialisiert sind, zusätzlich zu oder anstelle von den hier beschriebenen HSM-basierten Lösungen verwendet werden können. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Die Datenverarbeitungsmaschine 114 kann auch eine CPU 118 aufweisen. Die CPU 118 kann eine der hier beschriebenen Verarbeitungselemente sein und kann in einigen Ausführungsformen QAT aufweisen, um einige Komprimierungs- und Kryptografieoperationen zu beschleunigen. Beispielsweise können AES- oder AES-NIbasierte Verschlüsselungsoperationen von der CPU 118 in einer optimierten Weise durchgeführt werden, und effizienter als unter Verwendung des HSM 116. Somit kann der Verlagerungsplaner 108 beim Bestimmen anhand einer Anforderung, dass eine AES-Verschlüsselung erforderlich ist, solche Datenaufgaben für die CPU 118 planen. In einigen Ausführungsformen kann der Verlagerungsplaner 108 vor dem Planen eine Arbeitslast für die CPU 118 bestimmen und kann, falls die Arbeitslast einen vorgegebenen Schwellwert erreicht oder überschreitet, sei es im Hinblick auf Verarbeitungsleistung oder Zeit, Aufgaben mit einem dedizierten SOC 120 planen, was ein oder mehrere SOCs beinhalten kann, die nach dem Stand der Technik verwendet werden.
  • 2 zeigt ein Blockschaltbild eines Verlagerungsplaners 200, der dem unter Bezug auf 1 beschriebenen Verlagerungsplaner 108 entsprechen kann. Der Verlagerungsplaner 200 kann dafür ausgelegt sein, eine Datenanforderung 202 zu analysieren und eine oder mehrere Datenaufgaben, die mit der Datenanforderung 202 verknüpft sind, zur Verarbeitung durch die entsprechende Komponente der Datenverarbeitungsmaschine 114 basierend auf einem oder mehreren von verschiedenen Kriterien zu planen. Die Datenanforderung 202 kann Informationen zu den Daten, auf die zugegriffen werden soll, beinhalten, beispielsweise eine Adresse im virtuellen oder physischen Speicher, und andere Informationen in Bezug auf eine Art von Anforderung. Beispielsweise kann eine Datenanforderung 202 angeben, dass die Daten mit einer bestimmten Geografie, einem bestimmten Verschlüsselungsstandard oder einem bestimmten Komprimierungsstandard verknüpft sind, die ausdrücklich identifiziert sein können oder unter Verwendung von Informationen wie etwa einer Speicheradresse bestimmt sein können.
  • Im Allgemeinen kann der Verlagerungsplaner 112 eine Echtzeit-Leistungsbeurteilung 204 durchführen und bestimmen, ob eine Datenanforderung 202 für eine Komprimierung/Dekomprimierung, eine geografisch-spezifische kryptografische Operation oder eine andere Art von Operation, beispielsweise eine AES-basierte Verschlüsselung, bestimmt ist. Darüber hinaus kann die Echtzeit-Leistungsbeurteilung 204 die Arbeitslast eines oder mehrerer Verarbeitungselemente der Datenverarbeitungsmaschine 114 bestimmen. Beispielsweise können Datenaufgaben, falls ein Verarbeitungselement eine Arbeitslast aufweist, die (basierend auf Zeit und/oder Effizienz) höher als ein vorgegebener Schwellwert ist, für ein anderes Verarbeitungselement geplant werden, das die Aufgabe schneller und/oder effizienter durchführen kann. Die Echtzeit-Leistungsbeurteilung kann unter Verwendung einer oder mehrerer Informationsanforderungen von dem Prozessor oder von Modulen, die in der Lage sind, die Prozessorleistung zu verfolgen, bestimmt werden.
  • In einigen Ausführungsformen kann der Verlagerungsplaner 112 einen oder mehrere Prozesse verwenden, um Leistungsstatistiken für bestimmte Verarbeitungselemente und für bestimmte Verarbeitungselemente in Relation zu bestimmten Datenaufgaben zu bestimmen und/oder zu erhalten. In einem ersten Beispiel kann eine Einrichtungs- oder Konfigurationsbenutzerschnittstelle von einem Administrator oder einem anderen Benutzer verwendet werden, um erwartete Leistungsparameter einzugeben. Diese Leistungsparameter können in Bezug auf eine durchschnittliche oder höchste Verschlüsselungsrate, eine durchschnittliche oder höchste Entschlüsselungsrate, eine durchschnittliche oder höchste Datenkomprimierungsrate und/oder eine durchschnittliche oder höchste Datendekomprimierungsrate ausgedrückt werden. Solche Leistungsparameter können in einer (nicht gezeigten) Datenbank gespeichert werden, die für den Verlagerungsplaner 112 zugänglich ist. In einem zweiten Beispiel kann eine Treiberschnittstelle Leistungseinstellungen freilegen, die von einem Anbieter von Prozessoren zur Verschlüsselungsverlagerung vorkonfiguriert worden sind. In einem dritten Beispiel kann eine Treiber-/Verwaltungsschnittstelle Benchmarks ausführen, um dynamisch und, in einigen Ausführungsformen, periodisch die Basisleistung verschiedener Verarbeitungselemente in Relation zu verschiedenen hier beschriebenen Datenaufgaben zu bewerten. Die Ergebnisse können in einer Datenbank gespeichert und für den Verlagerungsplaner 112 zugänglich sein. Der Verlagerungsplaner 112 kann gespeicherte Basiswerte, die unter Verwendung eines oder mehrerer der vorstehenden Beispiele erhalten worden sind, verwenden, um Leistungsminderungsschätzungen bei gegebener aktueller Systemlast zu berechnen.
  • Ein Ausführungsplan 206 kann durch den Verlagerungsplaner 200 bestimmt werden, in dem eine Datenaufgabe im Zusammenhang mit einer Datenanforderung 202 basierend auf der Echtzeit-Leistungsbeurteilung 204 geplant wird. Im Fall von Komprimierungs-/Dekomprimierungsoperationen oder geografisch-spezifischen kryptografischen Operationen kann der Verlagerungsplaner 200 eine entsprechende Datenverarbeitungsaufgabe für das HSM 116 planen. Im Fall von anderen Operationen, einschließlich einer AES-basierten Verschlüsselung, kann der Verlagerungsplaner eine entsprechende Datenverarbeitungsaufgabe für die CPU 118 planen. In einigen Situationen, wenn die CPU 118 einer höheren Arbeitslast als normal ausgesetzt ist, kann der Verlagerungsplaner 200 dafür ausgelegt sein, andere Operationen unter Verwendung eines dedizierten SOCs 120 zu planen oder Operationen bis zu einem Zeitpunkt, wenn die CPU 118 verfügbar ist, zu verzögern. Der Logikfluss für den Verlagerungsplaner 112 wird nachstehend unter Bezugnahme auf 7-8 ausführlicher beschrieben.
  • 3 veranschaulicht einen Ringpuffer-Pool 300, der dem Ringpuffer-Pool 110 entsprechen kann. Der Ringpuffer-Pool 300 kann Datenpufferungs- und Vorrichtungsvirtualisierungsfähigkeiten bereitstellen. Der Ringpuffer-Pool 300 kann physischen Speicherplatz unter Verwendung von DRAM oder anderen Arten von hier beschriebenem Speicher umfassen, der sich auf einem physischen Server befindet, auf dem ein VMM ausgeführt wird. Der Ringpuffer-Pool 300 kann so organisiert sein, dass er ein oder mehrere DRAM-Bündel aufweist, die zu Ringpuffer-Paaren angeordnet sind, die auch als Zirkularpuffer, zirkuläre Warteschlangen oder zyklische Puffer bezeichnet werden. Jedes Ringpuffer-Paar kann einen Ringpuffer für Anforderungen und einen weiteren Ringpuffer für Antworten aufweisen, und jedes Paar kann einer VM, beispielsweise der vorstehend beschriebenen VM 102 zugewiesen sein. In einigen Ausführungsformen kann jedem Ringpuffer ein eindeutiger physischer DRAM-Platz zugewiesen sein und jeder Ringpuffer kann einem virtuellen Plattenbus einer VM zugewiesen sein.
  • Der Ringpuffer-Pool 300 kann mehrere Bündel aufweisen, denen eindeutige DRAM-Teile zugewiesen sein können. Auch wenn nur zwei Bündel (302, 312) gezeigt werden, können mehr oder weniger Bündel erstellt werden. Jedes der Bündel 302, 312 kann ein Paar von Ringpuffern (304, 306) und (314, 316) aufweisen. Jedes Paar kann einen Anforderungsring (301, 314) und einen Antwortring (306, 316) aufweisen. Anforderungsringe können verwendet werden, um Klartextanforderungen für die Komprimierung und/oder Verschlüsselung/Entschlüsselung von Daten zu puffern. Antwortringe können verwendet werden, um Geheimtext, der das Ergebnis von abgeschlossenen Komprimierungs- und/oder Verschlüsselungs-/Entschlüsselungsoperationen ist, zu puffern. Auch wenn Ausführungsformen die Verwendung eines Ringpuffer-Pools offenbaren, lässt sich verstehen, dass in anderen Ausführungsformen andere Datenstrukturen, die in der Lage sind, Daten zu puffern, basierend auf Entwurfs- und Leistungsgesichtspunkten eines bestimmten Systems verwendet werden können.
  • 4 veranschaulicht ein System 400 gemäß einer Ausführungsform. Insbesondere veranschaulicht 4 die Interaktionen zwischen einem Schlüsselmanager 404, der dem Schlüsselmanager 112 aus 1 entsprechen kann, einem Verlagerungsplaner 402 und einer kryptografischen Maschine 418. Der Schlüsselmanager 404 kann Schlüsselverwaltungskapazitäten bereitstellen, die es dem Verlagerungsplaner 402 erlauben, schlüsselbezogene Operationen durchzuführen, einschließlich, jedoch nicht beschränkt auf das Hinzufügen, Löschen und Nachschlagen sowie die Schlüsselgenerierung über eine Schnittstelle 406. Bei der Schnittstelle 406 kann es sich um eine sichere Schnittstelle handeln, die den Transfer von Daten und Schlüsseln zwischen dem Schlüsselmanager 404 und dem Verlagerungsplaner 402 und der kryptografischen Maschine 418 ermöglicht. Bei der Zugriffsschnittstelle 406 und der Zugriffssteuerung 408 kann es sich um Komponenten handeln, die in Hardware und/oder Software implementiert sind und die das Abgleichen mit den und den Zugriff auf die in der Datenbank 410 gespeicherten Schlüssel(n) bereitstellen können.
  • Die Schlüsseldatenbank 410 kann einen oder mehrere kryptografische Schlüssel, die mit von einem VMM verwalteten Gast-VMs verknüpft sind, speichern. Die Schlüsseldatenbank kann unter Verwendung eines computerlesbaren Datenspeichermediums implementiert sein und kann, in einigen Fällen, unter Verwendung einer sicheren Enklave und von sicheren Ausführungsumgebungen, beispielsweise INTEL® Secure Guard Extensions (SGX), implementiert sein. Die Schlüssel können Zugriffsrichtlinien unterliegen, die von der Zugriffssteuerung 408 gespeichert und verwaltet werden, und die Schlüsseldatenbank 410 kann jeden Schlüssel mit einer oder mehreren Zugriffsebenen verknüpfen. Beispielsweise kann die Zugriffssteuerung 408 den Zugriff auf Schlüssel basierend auf einer Zugriffsebene beschränken, die bestimmten Gast-VMs zugewiesen ist. In einem Beispiel kann ein bestimmter Schlüssel, der in der Schlüsseldatenbank 410 gespeichert ist, mit einer klassifizierten Zugriffsebene verknüpft sein. In einer Ausführungsform kann die Zugriffsschnittstelle 406 eine Anforderung für den Zugriff auf Daten unter Verwendung des Schlüssels empfangen, und nur bei Verifizierung durch die Zugriffssteuerung 408, dass die anfordernde Gast-VM die ordnungsgemäße Zugriffsebene für den Schlüssel aufweist, wird der Schlüssel aus der Schlüsseldatenbank 410 für diese VM verfügbar sein.
  • In einigen Ausführungsformen kann der Schlüsselmanager 404 einen Zufallszahlengenerator TRNG 412 aufweisen. Bei dem TRNG 412 kann es sich um einen echten Zufallszahlengenerator handeln, der die INTEL®-Technologie Digital Random Number Generator (DRNG) nutzen kann. Der TRNG 412 kann in dem Schlüsselmanager 404 enthalten sein, um einen schnellen und sicheren Zugriff auf Zufallszahlen für kryptografische Funktionen sowie die Schlüsselverwaltung und -generierung bereitzustellen.
  • Der Schlüsselmanager 404 kann mit der kryptografischen Maschine 418 über einen Bus 414 kommunizieren. Bei dem Bus 414 kann es sich um einen sicheren Kanal oder eine sichere Schnittstelle handeln, der/die den Transfer von Schlüsseln zwischen dem Schlüsselmanager 404 und der kryptografischen Maschine 418 ermöglicht. Die kryptografische Maschine 418 kann eines oder mehrere der hier beschriebenen Verarbeitungselemente aufweisen, beispielsweise ein HSM oder eine CPU, und kann einen Ringpuffer 416 nutzen, um verschlüsselte Schlüssel oder Daten zu speichern, während von dem Verlagerungsplaner 402 zugewiesene Komprimierungsoperationen oder kryptografische Operationen durchgeführt werden.
  • 5 zeigt ein Blockschaltbild eines Systems 500 gemäß einer Ausführungsform. Das System 500 kann eine Anwendung 502 aufweisen, die mit einem OS-Treiber 506 über eine API 504 interagieren kann. Bei der Anwendung 502 kann es sich um eine von verschiedenen Softwareanwendungen handeln, die für die Ausführung auf einer oder mehreren VMs verfügbar sind, und bei dem OS-Treiber 506 kann es sich um einen von verschiedenen OS-Treibern handeln, die für die Kommunikation zwischen Anwendungen und Betriebssystemen (Operating Systems, OSs) verfügbar sind. Der OS-Treiber 506 kann mit einer Daten-/Steuerschnittstelle 510 des HSM 530 über eine EA/Speicherzugriffsschnittstelle 508 kommunizieren, bei der es sich um eine von verschiedenen hier beschriebenen Schnittstellen handeln kann.
  • In einer Ausführungsform kann das HSM 530 eine Steuerung 522, Speicher 524 und nichtflüchtigen Datenspeicher 526 aufweisen, die jeweils mit einem oder mehreren hier beschriebenen Steuerungen und Speichern übereinstimmen. Eine Richtlinienkomponente 528 kann den Zugriff auf das HSM 530 basierend auf einer oder mehreren, mit VMs verknüpften Zugriffsrichtlinien beschränken. Beispielsweise können bestimmte VMs in der Lage sein, auf das HSM 530 zuzugreifen, und andere unter Umständen nicht. Die Richtlinienkomponente 528 kann in Hardware und/oder Software implementiert sein und auf gespeicherte Beziehungen zwischen verschiedenen VMs zugreifen und kann auf Zugriffsrichtlinien, die den Zugriff auf das HSM 530 beschränken, zugreifen.
  • In einer Ausführungsform kann das HSM 530 einen spezialisierten Kryptografieprozessor 512 aufweisen, der für das Durchführen von Verschlüsselungs-/Entschlüsselungsoperationen für einen bestimmten Standard oder einen Satz von Standards, beispielsweise geografisch-spezifische Standards wie SMS4 und/oder ZUC, optimiert sein kann. In einigen Ausführungsformen können ein oder mehrere Kryptografieprozessoren in dem HSM 530 enthalten sein; zum Zwecke der Veranschaulichung wird jedoch nur einer in dem HSM 530 gezeigt. Ein Komprimierungsprozessor 514 kann ebenfalls in dem HSM 530 enthalten sein, wobei dieser für das Durchführen bestimmter Komprimierungsoperationen optimiert sein kann. Es lässt sich verstehen, dass mehr als ein Komprimierungsprozessor 514 in dem HSM 530 enthalten sein kann, oder überhaupt keiner. In verschiedenen Ausführungsformen können die Kryptografieverarbeitung und die Komprimierungsverarbeitung unter Verwendung von getrennten HSMs durchgeführt werden oder können in einem einzelnen HSM, beispielsweise HSM 530, kombiniert sein. Der Kryptografieprozessor 512 und der Komprimierungsprozessor 514 können Zugriff auf die Verschlüsselungs-/Entschlüsselungsmaschine 518 und die Schlüsselgenerierungskomponente 518 haben, die während bestimmter Operationen verwendet werden können, um Kryptografie- und Schlüsseloperationen durchzuführen.
  • Bei den hier beschriebenen Vorrichtungen kann es sich um eine von verschiedenen Arten von Computervorrichtungen handeln, einschließlich, jedoch nicht beschränkt auf Server, Arbeitsstation, Rechenzentrum, Laptop-Computer, Ultrabook®-Computer, Tablet-Computer, Smartphone oder dergleichen.
  • In verschiedenen Ausführungsformen können die vorgenannten Prozessoren eine breite Vielfalt von handelsüblichen Prozessoren beinhalten, einschließlich, jedoch nicht beschränkt auf einen Prozessor des Typs AMD® Athlon®, Duron® oder Opteron®; eine ARM®-Anwendung, einen eingebetteten oder sicheren Prozessor; einen IBM®- und/oder einen Motorola® DragonBall®- oder einen PowerPC®-Prozessor; einen IBM- und/oder einen Sony® Cell-Prozessor; oder einen Prozessor des Typs Intel® Celeron®, Core (2) Duo®, Core (2) Quad®, Core i3®, Core i5®, Core i7®, Atom®, Itanium®, Pentium®, Xeon® oder XScale®. Ferner können ein oder mehrere dieser Prozessorelemente einen Mehrkernprozessor aufweisen (wobei die mehreren Kerne auf ein und derselben oder auf getrennten Halbleiterplättchen vorliegen können) und/oder können eine Mehrprozessor-Architektur in einer anderen Ausführung aufweisen, bei der mehrere physisch getrennte Prozessoren auf eine gewisse Weise verbunden sind. Des Weiteren kann, in verschiedenen Ausführungsformen, eine beliebige Anzahl der Prozessorelemente 110, 210 und/oder 410 eine vertrauenswürdige Ausführungsumgebung (z. B. Intel CSE®, Intel ME®, Intel VT®, Intel SGX®, ARM TrustedZone® oder dergleichen) aufweisen, um das Verarbeiten und/oder das Speichern sensibler Informationen zu ermöglichen. Die vertrauenswürdige Ausführungsumgebung kann für verschiedene hier beschriebene Ausführungsformen verwendet werden, unter anderem für die Schlüsselverwaltung und die Datenspeicherung und den Transfer von kryptografisch geschützten Daten.
  • In verschiedenen Ausführungsformen können die vorgenannten Datenspeicher auf einer von einer breiten Vielfalt von Informationsspeichertechnologien basieren, möglicherweise flüchtige Technologien beinhaltend, die die ununterbrochene Bereitstellung von elektrischer Leistung erfordern und die möglicherweise Technologien beinhalten, die die Verwendung von maschinenlesbaren Datenspeichermedien nach sich ziehen, die wechselbar oder nicht wechselbar sein können. Somit kann jeder dieser Datenspeicher eine von einer breiten Vielfalt von Arten (oder eine Kombination von Arten) von Datenspeichervorrichtungen beinhalten, einschließlich, aber nicht beschränkt auf Festwertspeicher (Read-Only Memory, ROM), Direktzugriffsspeicher (Random Access Memory, RAM), dynamischen RAM (Dynamic RAM, DRAM), DRAM mit doppelter Datenrate (Double-Data-Rate DRAM, DDR-DRAM), synchronen DRAM (Synchronous DRAM, SDRAM), statischen RAM (Static RAM, SRAM), programmierbaren ROM (Programmable ROM, PROM), löschbaren programmierbaren ROM (Erasable Programmable ROM, EPROM), elektrisch löschbaren programmierbaren ROM (Electrically Erasable Programmable ROM, EEPROM), Flash-Speicher, Polymerspeicher (z. B. ferroelektrischen Polymerspeicher), Ovonic-Speicher, Phasenwechselspeicher oder ferroelektrischen Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium (SONOS)-Speicher, magnetische oder optische Karten, ein oder mehrere einzelne ferromagnetische Plattenlaufwerke oder mehrere Datenspeichervorrichtungen, die in einer oder mehreren Anordnungen angeordnet sind (z. B. mehrere ferromagnetische Plattenlaufwerke, die in einer redundanten Anordnung von unabhängigen Platten (Redundant Array of Independent Disks, RAID) angeordnet sind). Es sei darauf hingewiesen, dass, auch wenn jeder dieser Datenspeicher als ein einzelner Block dargestellt ist, ein oder mehrere dieser Blöcke mehrere Datenspeichervorrichtungen aufweisen kann, die auf verschiedenen Datenspeichertechnologien basieren können. Somit können beispielsweise ein oder mehrere dieser dargestellten Datenspeicher für folgendes stehen: eine Kombination aus einem optischen Laufwerk oder einem Flash-Speicherkartenleser, durch die Programme und/oder Daten auf einer Form von maschinenlesbaren Datenspeichermedien gespeichert und transportiert werden können, ein ferromagnetisches Plattenlaufwerk zum lokalen Speichern von Programmen und/oder Daten für eine relativ langen Zeitraum und eine oder mehrere flüchtige Festkörperspeichervorrichtungen, die einen relativ schnellen Zugriff auf Programme und/oder Daten ermöglichen (z. B. SRAM oder DRAM). Es sei ferner darauf hingewiesen, dass jeder dieser Datenspeicher aus mehreren Datenspeicherkomponenten bestehen kann, die auf einer identischen Datenspeichertechnologie basieren, aber die als Ergebnis einer spezialisierten Nutzung separat unterhalten werden (z. B. können einige DRAM-Vorrichtungen als Hauptdatenspeicher eingesetzt werden, während andere DRAM-Vorrichtungen als getrennter Rahmenpuffer einer Grafiksteuerung eingesetzt werden).
  • In verschiedenen Ausführungsformen kann es sich bei Netzen um ein Einzelnetz, das möglicherweise darauf beschränkt ist, sich innerhalb eines einzelnen Gebäudes oder eines anderen relativ begrenzten Bereichs zu erstrecken, um eine Kombination aus verbundenen Netzen, die sich möglicherweise über eine beträchtliche Entfernung erstrecken, und/oder um ein das Internet umfassendes Netz handeln. Somit können Netze auf irgendeiner von verschiedenen (oder einer Kombination von) Kommunikationstechnologien basieren, durch die Signale ausgetauscht werden können, einschließlich, jedoch nicht beschränkt auf drahtgebundene Technologien, die elektrisch und/oder optisch leitfähige Kabel nutzen, und drahtlose Technologien, die Infrarot-, Funkfrequenz- oder andere Formen von drahtlosen Übertragungsverfahren nutzen. Dementsprechend können die vorgenannten Schnittstellen Schaltungen aufweisen, die wenigstens einen Teil der erforderlichen Funktionalität bereitstellen, um eine solche Kopplung zu ermöglichen. Allerdings können die vorgenannten Schnittstellen auch wenigstens teilweise mit Sequenzen von Anweisungen implementiert sein, die von den Prozessorelementen ausgeführt werden (z. B. um einen Protokollstapel oder andere Merkmale zu implementieren). In Fällen, in denen ein oder mehrere Teile der Netze elektrisch und/oder optisch leitfähige Kabel nutzen, kann die Schnittstelle eine Signalisierung und/oder Protokolle nutzen, die einem von verschiedenen Industriestandards entsprechen, einschließlich, jedoch nicht beschränkt auf RS-232C, RS-422, USB, Ethernet (IEEE-802.3) oder IEEE-1394. Alternativ oder zusätzlich können, in den Fällen, in denen ein oder mehrere Teile der Netze die Verwendung einer drahtlosen Signalübertragung nach sich ziehen, entsprechende dieser Schnittstellen eine Signalisierung und/oder Protokolle einsetzen, die einem von mehreren Industriestandards entsprechen, einschließlich, jedoch nicht beschränkt auf IEEE 802.11a, 802.11b, 802.11g, 802.16, 802.20 (gemeinhin als „Mobile Blattfedern Zirkulare Access“ bezeichnet); Bluetooth; ZigBee; oder zellulare Funktelefondienste wie etwa GSM mit General Packet Radio Service (GSM/GPRS), CDMA/1xRTT, Enhanced Data Rates for Global Evolution (EDGE), Evolution Data Only/Optimized (EV-DO), Evolution For Data and Voice (EV-DV), High Speed Downlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA), 4G LTE, etc. Es sei darauf hingewiesen, dass auch wenn die Schnittstelle als ein einzelner Block dargestellt ist, dieser mehrere Schnittstellen aufweisen kann, die auf verschiedenen Signalisierungstechnologien basieren können. Dies kann insbesondere dann der Fall sein, wenn eine oder mehrere dieser Schnittstellen die Komponenten an mehr als ein Netz koppelt, die jeweils verschiedene Kommunikationstechnologien einsetzen.
  • Einige der nachstehenden Figuren können einen Logikfluss beinhalten. Auch wenn solche hier vorgestellte Figuren einen bestimmten Logikfluss aufweisen können, lässt sich verstehen, dass der Logikfluss lediglich ein Beispiel dafür bereitstellt, wie die allgemeine Funktionalität wie hier beschrieben implementiert sein kann. Ferner muss der gegebene Logikfluss nicht notwendigerweise in der vorgestellten Reihenfolge ausgeführt werden, soweit nicht anders angegeben. Darüber hinaus kann der gegebene Logikfluss durch ein Hardwareelement, ein von einem Prozessor ausgeführtes Softwareelement oder eine Kombination davon implementiert sein. Beispielsweise kann ein Logikfluss durch eine Prozessorkomponente implementiert sein, die auf einem Erzeugnis, beispielsweise einem Datenspeichermedium, gespeicherte Anweisungen ausführt. Ein Datenspeichermedium kann ein nicht-transitorisches, computerlesbares Medium oder ein maschinenlesbares Medium umfassen, beispielsweise einen optischen Datenspeicher, einen magnetischen Datenspeicher oder einen Halbleiterdatenspeicher. Das Datenspeichermedium kann verschiedene Arten von computerausführbaren Anweisungen speichern, beispielsweise Anweisungen zum Implementieren von einem oder mehreren offenbarten Logikflüssen 200, 300, 400 und/oder 500. Beispiele für ein computerlesbares oder maschinenlesbares Datenspeichermedium können physische Medien beinhalten, die elektronische Daten speichern können; dies schließt flüchtigen oder nichtflüchtigen Speicher, Wechsel- oder Nichtwechselspeicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter ein. Beispiele für computerausführbare Anweisungen können jede geeignete Art von Code beinhalten, beispielsweise Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code, objektorientierten Code, visuellen Code und dergleichen. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • 6 zeigt einen Logikfluss 600 gemäß einer Ausführungsform. Der Logikfluss 600 legt einen Initialisierungsprozess gemäß einer Ausführungsform dar. Die Initialisierung kann vor dem Hochfahren einer VM erfolgen, und der Initialisierungsprozess kann ein oder mehrere Module initialisieren. Bei Block 602 fährt ein Host gemäß hinlänglich bekannten Prozeduren für das Hochfahren von Hosts hoch.
  • Bei Block 604 können mehrere Initialisierungsschritte für hier beschriebene Module oder Komponenten erfolgen. Beispielsweise kann bei Block 604-a eine Datenverarbeitungsmaschine geladen und initialisiert werden, die ein oder mehrere Verarbeitungselemente für den Host und nachfolgend erstellte VMs über einen VMM verfügbar machen kann. Bei Block 604-b kann ein Schlüsselverwaltungsmodul initialisiert werden, was das Vorbereiten einer Schlüsseldatenbank für den Zugriff auf etwaigen und die Initialisierung von etwaigem sicheren Speicher oder Schnittstellen beinhalten kann, so dass auf diese bei Komprimierungs- und/oder Kryptografieoperationen zugegriffen werden kann. Wie vorstehend beschrieben, kann bei Block 604-c ein Ringpuffer-Pool erstellt werden, der initialisiert werden kann, um Ringpuffer-Paare für jede VM aufzunehmen.
  • Bei Block 606 kann eine virtuelle Maschine erstellt werden, die von einem VMM dergestalt verwaltet werden kann, dass für die VM ein Zugriff auf den Host bereitgestellt wird. Bei Block 608 kann ein Ringbündel von dem Ringpuffer-Pool einer VM zugewiesen werden, und jeder Ringpuffer von dem Ringbündel (jedes Ringbündel beinhaltet ein Paar von Ringpuffern, wie vorstehend beschrieben) kann von einem VMM auf einen virtuellen Plattenbus abgebildet werden.
  • Bei Block 610 können ein Chiffrierschlüssel und eine Schlüsselzuordnung (Key Map) in einem Schlüsselverwaltungsmodul generiert werden. Der Chiffrierschlüssel und die Schlüsselzuordnung können verwendet werden, um eine VM mit einem oder mehreren Schlüsseln in dem Schlüsselverwaltungsmodul zu verknüpfen, und können, basierend auf einer oder mehreren Zugriffsrichtlinien, den Zugriff auf bestimmte Schlüssel erlauben.
  • 7-8 veranschaulichen die Logikflüsse 700 und 800 gemäß einer Ausführungsform. Der Logikfluss 700 veranschaulicht ein Ausgangs- oder Verschlüsselungsszenario, und der Logikfluss 800 veranschaulicht ein Eingangs- oder Entschlüsselungsszenario. Beide Szenarien können wie hier beschrieben unter Verwendung einer Verlagerungsplaners durchgeführt werden. Bei Block 702/802 kann eine Datenanforderung für eine Verschlüsselung (702) oder eine Entschlüsselung (802) erfolgen. Die Anforderung kann eine oder mehrere Eigenschaften für die Anforderung darlegen; dies beinhaltet die Daten, auf die zugegriffen werden soll, den Standort der Daten unter Verwendung einer Speicheradresse, einen zu verwendenden Kryptografiestandard, die Angabe, ob eine Komprimierung erforderlich ist, oder andere Informationen, die die Art der Anforderung identifizieren.
  • Bei Block 704/804 kann bestimmt werden, ob die Anforderung eine Komprimierung oder eine geografisch-spezifische Verschlüsselung/Entschlüsselung beinhaltete. Auch wenn diese Beispiele zum Zwecke der Veranschaulichung verwendet werden, lässt sich verstehen, dass die Verschlüsselung/Entschlüsselung nicht geografischspezifisch sein muss und dass die Identifikation eines bestimmten Komprimierungs- oder Kryptografiestandards ungeachtet der Geografie bestimmt werden kann. Bei Block 706/806 kann bestimmt werden, dass eine Komprimierungs- oder eine geografisch-spezifische Verschlüsselungs-/Entschlüsselungsoperation angefordert worden ist und dass die Anforderung unter Verwendung eines HSMs geplant werden kann, wodurch eine höhere Optimierung und Leistung bereitgestellt wird.
  • Bei Block 708/808 kann bestimmt werden, dass ein nicht geografisch-spezifischer Kryptografiestandard angefordert worden ist, beispielsweise eine AES- oder AES-NI-Verschlüsselungs-/ Entschlüsselungsoperation. In diesem Fall kann eine CPU bereits dafür optimiert sein, solche Operationen durchzuführen, und die Verwendung eines HSM ist unter Umständen nicht erwünscht. Allerdings kann, in einigen Fällen, eine CPU beschäftigt sein und es kann eine Verzögerung beim Zuweisen solcher Operationen an die CPU geben. Somit kann bei Block 708/808 bestimmt werden, ob eine CPU eine Arbeitslast über einem vorgegebenen Schwellwert aufweist, wobei es sich um Leistungs- oder Zeiteinheiten handeln kann, die bestimmt werden können, indem eine oder mehrere Datenanforderungen direkt von der CPU, leistungsbestimmenden Modulen oder einem zugrundeliegenden System gestellt werden. Falls die CPU nicht zu beschäftigt ist, kann die Anforderung mit der CPU bei 712/812 geplant werden. Falls die CPU beschäftigt ist, kann ein SOC mit der Anforderung bei 710/810 geplant werden. In gleicher Weise kann bestimmt werden, ob eine Verzögerung im Zusammenhang mit dem Verwenden der CPU für eine Aufgabe über einem Schwellwert liegt, und ein dediziertes SOC kann für eine oder mehrere Aufgaben verwendet werden, falls dies der Fall ist. Ferner können eine oder mehrere Datenaufgaben für das dedizierte SOC geplant werden, wenn eine geschätzte Zeit für die Durchführung unter Verwendung des dedizierten SOC kürzer ist als eine geschätzte Zeit für die Durchführung unter Verwendung der CPU. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • 9 zeigt einen Logikfluss 900 gemäß einer Ausführungsform. Der Logikfluss 900 kann wie hier beschrieben von einem Verlagerungsplaner durchgeführt werden. Bei Block 902 kann eine Verlagerungsplanungskomponente eine Datenanforderung für die Komprimierung oder Verschlüsselung von Daten empfangen. In einigen Ausführungsformen kann die Datenanforderung auch eine Entschlüsselung beinhalten. Die Datenanforderung kann Informationen zu den Daten, auf die zugegriffen werden soll, beinhalten, beispielsweise eine Adresse im virtuellen oder physischen Speicher, und andere Informationen in Bezug auf eine Art von Anforderung. Beispielsweise kann eine Datenanforderung 202 angeben, dass die Daten mit einer bestimmten Geografie, einem bestimmen Verschlüsselungsstandard oder einem bestimmten Komprimierungsstandard verknüpft sind.
  • Bei Block 904 kann eine Verlagerungsplanungskomponente eine oder mehrere Eigenschaften der empfangenen Datenanforderung bestimmen, beispielsweise ob die Datenanforderung eine Komprimierung oder einen bestimmten Kryptografiestandard beinhaltet. Die Eigenschaft kann basierend auf Informationen in der Datenanforderung bestimmt werden und kann von Informationen abgeleitet werden, die darauf Bezug nehmen, wo bestimmte Daten gespeichert sind oder wo eine Anforderung ihren Ursprung hat. Beispielsweise kann, falls eine Anforderung von einer VM gestellt wird, die ihren Ursprung in einer Geografie hat, die mit einem bestimmten Verschlüsselungskanal verknüpft ist, zum Beispiel China, bestimmt werden, dass die Datenanforderung mit einem chinesischen Verschlüsselungsstandard verknüpft ist. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Bei Block 906 kann eine Verlagerungsplanungskomponente eine oder mehrere Datenaufgaben für eines von mehreren Verarbeitungselementen basierend auf der bestimmten ein oder mehreren Eigenschaften planen. Im Allgemeinen kann ein Verlagerungsplaner eine Echtzeit-Leistungsbeurteilung durchführen und bestimmen, ob eine Datenanforderung für eine Komprimierung/Dekomprimierung, eine geografisch-spezifische kryptografische Operation oder eine andere Art von Operation, beispielsweise eine AES-basierte Verschlüsselung, bestimmt ist. Darüber hinaus kann eine Echtzeit-Leistungsbeurteilung die Arbeitslast eines oder mehrerer Verarbeitungselemente einer Datenverarbeitungsmaschine bestimmen. Beispielsweise können Datenaufgaben, falls ein Verarbeitungselement eine Arbeitslast aufweist, die (basierend auf Zeit und/oder Effizienz) höher als ein vorgegebener Schwellwert ist, für ein anderes Verarbeitungselement geplant werden, das die Aufgabe schneller und/oder effizienter durchführen kann.
  • Ein Ausführungsplan kann durch den Verlagerungsplaner bestimmt werden, in dem eine Datenaufgabe im Zusammenhang mit der Datenanforderung basierend auf der Echtzeit-Leistungsbeurteilung geplant wird. Im Fall von Komprimierungs-/Dekomprimierungsoperationen oder geografisch-spezifischen kryptografischen Operationen kann der Verlagerungsplaner eine entsprechende Datenverarbeitungsaufgabe beispielsweise für ein HSM planen. Im Fall von anderen Operationen, einschließlich einer AES-basierten Verschlüsselung, kann ein Verlagerungsplaner eine entsprechende Datenverarbeitungsaufgabe für eine CPU planen. In einigen Situationen, wenn eine CPU einer höheren Arbeitslast als normal ausgesetzt ist, kann der Verlagerungsplaner dafür ausgelegt sein, andere Operationen unter Verwendung eines dedizierten SOCs zu planen oder Operationen bis zu einem Zeitpunkt, wenn die CPU verfügbar ist, zu verzögern.
  • 10 veranschaulicht eine Ausführungsform eines Datenspeichermediums 1000. Das Datenspeichermedium 1000 kann ein Erzeugnis umfassen. In einigen Fällen kann das Datenspeichermedium 1000 ein beliebiges nicht-transitorisches, computerlesbares Medium oder ein maschinenlesbares Medium beinhalten, beispielsweise einen optischen Datenspeicher, einen magnetischen Datenspeicher oder einen Halbleiterdatenspeicher. Das Datenspeichermedium 1000 kann verschiedene Arten von computerausführbaren Anweisungen (z. B. 1002) speichern. Beispielsweise kann das Datenspeichermedium 1000 verschiedene Arten von computerausführbaren Anweisungen speichern, um Logikflüsse 600/700/800/900 unter Verwendung von einem oder mehreren der hier beschriebenen Prozessoren und Komponenten zu implementieren.
  • Beispiele für ein computerlesbares oder maschinenlesbares Datenspeichermedium können physische Medien beinhalten, die elektronische Daten speichern können; dies schließt flüchtigen oder nichtflüchtigen Speicher, Wechsel- oder Nichtwechselspeicher, löschbaren oder nicht löschbaren Speicher, beschreibbaren oder wiederbeschreibbaren Speicher und so weiter ein. Beispiele für computerausführbare Anweisungen können jede geeignete Art von Code beinhalten, beispielsweise Quellcode, kompilierten Code, interpretierten Code, ausführbaren Code, statischen Code, dynamischen Code, objektorientierten Code, visuellen Code und dergleichen. Die Beispiele sind in diesem Zusammenhang nicht beschränkt.
  • 11 veranschaulicht eine Ausführungsform einer beispielhaften Verarbeitungsarchitektur 1100, die für das Implementieren verschiedener Ausführungsformen wie vorstehend beschrieben geeignet ist. Insbesondere kann (können) die Verarbeitungsarchitektur 1100 (oder Varianten davon) als Teil des Systems und/oder der Vorrichtungen implementiert sein, die hier unter Bezugnahme auf 1-5 beschrieben werden.
  • Die Verarbeitungsarchitektur 1100 weist verschiedene Elemente auf, die gemeinhin in der Digitalverarbeitung eingesetzt werden, einschließlich, jedoch nicht beschränkt auf einen oder mehrere Prozessoren, Mehrkernprozessoren, Coprozessoren, Speichereinheiten, Chipsätze, Steuerungen, Peripheriegeräte, Schnittstellen, Oszillatoren, Zeitgebervorrichtungen, Video-Karten, Audio-Karten, Multimedia-Eingabe/Ausgabe (E/A)-Komponenten, Stromversorgungen etc. Wie in dieser Anmeldung verwendet, sind die Begriffe „System“ und „Komponente“ so zu verstehen, dass sie sich auf eine Entität einer Computervorrichtung beziehen, in der eine digitale Verarbeitung ausgeführt wird, wobei es sich bei dieser Entität um Hardware, eine Kombination aus Hardware und Software, Software oder ausgeführte Software handelt; Beispiele hierfür werden durch diese dargestellte beispielhafte Verarbeitungsarchitektur bereitgestellt. Beispielsweise kann es sich bei einer Komponente, ohne hierauf beschränkt zu sein, um einen Prozess, der auf einem Prozessorelement ausgeführt wird, das Prozessorelement selbst, eine Datenspeichervorrichtung (z. B. ein Festplattenlaufwerk, mehrere Datenspeicherlaufwerke in einer Anordnung etc.), die ein optisches und/oder ein magnetisches Datenspeichermedium nutzen können, ein Softwareobjekt, eine ausführbare Sequenz von Anweisungen, einen Ausführungsstrang, ein Programm und/oder eine gesamte Computervorrichtung (z. B. einen gesamten Computer) handeln. Zur Veranschaulichung kann es sich bei einer Anwendung, die auf einem Server ausgeführt wird, und bei dem Server um eine Komponente handeln Eine oder mehrere Komponenten können in einem Prozess und/oder einem Ausführungsstrang vorliegen, und eine Komponente kann sich auf einer Computervorrichtung befinden und/oder auf zwei oder mehr Computervorrichtungen verteilt sein. Ferner können Komponenten durch verschiedene Arten von Kommunikationsmedien kommunikativ miteinander gekoppelt sein, um Operationen zu koordinieren. Die Koordination kann den unidirektionalen oder bidirektionalen Austausch von Informationen beinhalten. Zum Beispiel können die Komponenten Informationen in Form von Signalen übermitteln, die über die Kommunikationsmedien übermittelt werden. Die Informationen können als Signale implementiert sein, die einer oder mehreren Signalleitungen zugewiesen sind. Jede Nachricht kann ein Signal oder mehrere Signale sein, die entweder seriell oder im Wesentlichen parallel übertragen werden.
  • Wie dargestellt beinhaltet eine Computervorrichtung beim Implementieren der Verarbeitungsarchitektur 1100 wenigstens ein Prozessorelement 1110, einen Datenspeicher 1130, eine Schnittstelle 1190 zu anderen Vorrichtungen und eine Kopplung 1115. In Abhängigkeit von verschiedenen Aspekten einer Computervorrichtung zur Implementierung der Verarbeitungsarchitektur 1100, einschließlich deren beabsichtigter Verwendung und/oder der Verwendungsbedingungen, kann eine solche Computervorrichtung ferner zusätzliche Komponenten beinhalten, beispielsweise, jedoch ohne hierauf beschränkt zu sein, ein Zählerelement 1115.
  • Die Kopplung 1115 beinhaltet einen oder mehrere Busse, Punkt-zu-Punkt-Interconnects, Sendeempfänger, Puffer, Koppelpunktschalter und/oder andere Leiter und/oder Logik, die wenigstens das Prozessorelement 1110 kommunikativ mit dem Datenspeicher 1130 koppelt. Die Kopplung 1115 kann ferner das Prozessorelement 1110 mit einem oder mehreren von der Schnittstelle 1190 und der Anzeigeschnittstelle 1155 koppeln (abhängig davon, welche dieser und/oder anderer Komponenten ebenfalls vorhanden sind). Wenn das Prozessorelement 1110 durch Kopplungen 1115 so gekoppelt ist, ist das Prozessorelement 1110 in der Lage, die verschiedenen, vorstehend ausführlich beschriebenen Aufgaben für die Verarbeitungsarchitektur 1100 durchzuführen. Die Kopplung 1115 kann mit einer von verschiedenen Technologien oder Kombinationen von Technologien implementiert sein, durch die Signale optisch und/oder elektrisch transportiert werden. Ferner können wenigstens Teile von Kopplungen 1115 Zeitsteuerungen und/oder Protokolle nutzen, die einem von einer breiten Vielfalt von Industriestandards entsprechen, einschließlich, jedoch nicht beschränkt auf AGP (Accelerated Graphics Port), CardBus, E-ISA (Extended Industry Standard Architecture), MCA (Micro Channel Architecture), NuBus, PCI-X (Peripheral Component Interconnect (Extended)), PCI-E (PCI Express), PCMCIA-Bus (Personal Computer Memory Card International Association Bus), Hyper Transport™, QuickPath und dergleichen.
  • Wie vorstehend erörtert, kann das Prozessorelement 1110 einen von einer breiten Vielfalt von handelsüblichen Prozessoren aufweisen, der eine von einer breiten Vielfalt von Technologien nutzt und mit einem oder mehreren Kernen implementiert ist, die physisch in einer von mehreren Weisen kombiniert sind.
  • Wie vorstehend erörtert, kann der Datenspeicher 1130 eine oder mehrere unterschiedliche Datenspeichervorrichtungen aufweisen, basierend auf einer von einer breiten Vielfalt von Technologien oder Kombinationen von Technologien. Insbesondere kann der Datenspeicher 1130 wie dargestellt eines oder mehrere von einem flüchtigen Datenspeicher 1131 (z. B. Festkörperdatenspeicher basierend auf einer oder mehreren Formen von RAM-Technologie), einem nichtflüchtigen Datenspeicher 1132 (z. B. Festkörperdatenspeicher, ferromagnetische Datenspeicher oder andere Datenspeicher, die nicht auf eine konstante Bereitstellung elektrischer Leistung angewiesen sind, um Inhalte zu speichern) und einem wechselbaren Mediendatenspeicher 1133 (z. B. eine Wechselplatte oder ein Festkörperspeicher-Kartendatenspeicher, durch den Informationen zwischen Computervorrichtungen transportiert werden können) aufweisen. Diese Darstellung des Datenspeichers 1130 als möglicherweise mehrere unterschiedliche Datenspeicherarten umfassend geschieht in Anerkennung der gängigen Verwendung von mehr als einer Art von Datenspeichervorrichtung in Computervorrichtungen, in denen eine Art relativ schnelle Lese- und Schreibfähigkeiten bereitstellt, wodurch eine schneller Datenmanipulation durch das Prozessorelement 1110 ermöglicht wird (wobei jedoch möglicherweise eine „flüchtige“ Technologie verwendet wird, die ständig elektrische Leistung erfordert), während eine andere Art eine relativ hohe Dichte von nichtflüchtigem Datenspeicher bereitstellt (aber wahrscheinlich relativ langsame Lese- und Schreibfähigkeiten bereitstellt).
  • Angesichts der oft unterschiedlichen Eigenschaften von unterschiedlichen Datenspeichervorrichtungen, die unterschiedliche Technologien nutzen, ist es außerdem gängig, dass solche unterschiedlichen Datenspeichervorrichtungen mit anderen Teilen einer Computervorrichtung gekoppelt sind, was durch unterschiedliche Datenspeichersteuerungen erfolgt, die mit den jeweiligen unterschiedlichen Datenspeichervorrichtungen durch unterschiedliche Schnittstellen gekoppelt sind. Beispielsweise kann in Fällen, in denen der flüchtige Datenspeicher 1131 vorhanden ist und auf RAM-Technologie basiert, der flüchtige Datenspeicher 1131 durch eine Datenspeichersteuerung 1135a kommunikativ mit der Kopplung 1115 gekoppelt sein, wodurch eine entsprechende Schnittstelle zu dem flüchtigen Datenspeicher 1131 bereitstellt wird, die vielleicht eine Reihen-und-Spalten-Adressierung nutzt, und wobei die Datenspeichersteuerung 1135a eine Reihenauffrischung und/oder andere Wartungsaufgaben durchführen kann, um das Erhalten von Informationen, die in dem flüchtigen Datenspeicher 1131 gespeichert sind, zu unterstützen. In einem anderen Beispiel, in dem der nichtflüchtige Datenspeicher 1132 vorhanden ist und ein oder mehrere ferromagnetische und/oder Festkörperplattenlaufwerke aufweist, kann der nichtflüchtige Datenspeicher 1132 durch eine Datenspeichersteuerung 1135b kommunikativ mit der Kopplung 1115 gekoppelt sein, wodurch eine entsprechende Schnittstelle zu dem nichtflüchtigen Datenspeicher 1132 bereitgestellt wird, die vielleicht das Adressieren von Informationsblöcken und/oder von Zylindern und Sektoren nutzt. In noch einem anderen Beispiel, in dem der wechselbare Mediendatenspeicher 1133 vorhanden ist und ein oder mehrere optische und/oder Festkörperplattenlaufwerke aufweist, die ein oder mehrere Einheiten von wechselbaren maschinenlesbaren Datenspeichermedien 1139 nutzen, kann der wechselbare Mediendatenspeicher 1133 durch eine Datenspeichersteuerung 1135c kommunikativ mit der Kopplung 1115 gekoppelt sein, wodurch eine entsprechende Schnittstelle zu dem wechselbaren Mediendatenspeicher 1133 bereitgestellt wird, die vielleicht die Adressierung von Informationsblöcken nutzt, und wobei die Datenspeichersteuerung 1135c Lese-, Lösch- und Schreiboperationen in einer Weise, die spezifisch für das Verlängern der Lebensdauer der maschinenlesbaren Datenspeichermedien 1139 ist, koordinieren kann.
  • Das eine oder das andere von dem flüchtigen Speicher 1131 oder dem nichtflüchtigen Datenspeicher 1132 kann ein Erzeugnis in Form eines maschinenlesbaren Datenspeichermediums aufweisen, auf dem eine Routine mit einer Sequenz von Anweisungen, die von dem Prozessorelement 1110 ausgeführt werden können, gespeichert sein kann, abhängig von der jeweils zugrundeliegenden Technologie. Beispielsweise nutzt in Fällen, in denen der nichtflüchtige Datenspeicher 1132 auf Ferromagnetismus basierende Plattenlaufwerke (z. B. sogenannte „Festplattenlaufwerke“) aufweist, jedes dieser Plattenlaufwerke typischerweise eine oder mehrere sich drehende Platten, auf denen eine Beschichtung aus magnetisch reagierenden Partikeln angeordnet ist und magnetisch in verschiedenen Mustern ausgerichtet ist, um Informationen, beispielsweise eine Sequenz von Anweisungen, in einer Weise, die wechselbaren Datenspeichermedien wie etwa einer Floppy-Diskette ähnelt, zu speichern. In einem anderen Beispiel kann der nichtflüchtige Datenspeicher 1132 aus Bänken von Festkörper-Datenspeichervorrichtungen bestehen, um Informationen, beispielsweise Sequenzen von Anweisungen, in ähnlicher Weise wie eine CompactFlash-Karte zu speichern.
  • Wieder ist es gängig, zu unterschiedlichen Zeiten unterschiedliche Arten von Datenspeichervorrichtungen in einer Computervorrichtung zu nutzen, um ausführbare Routinen und/oder Daten zu speichern. Somit kann eine Routine, die eine Sequenz von Anweisungen umfasst, die von dem Prozessorelement 1110 ausgeführt werden sollen, anfänglich auf dem maschinenlesbaren Datenspeichermedium 1139 gespeichert sein, und der wechselbare Mediendatenspeicher 1133 kann anschließend verwendet werden, um diese Routine in den nichtflüchtigen Datenspeicher 1132 zur längerfristigen Speicherung zu kopieren, so dass ein ständiges Vorhandensein des maschinenlesbaren Datenspeichermediums 1139 und/oder des flüchtigen Datenspeichers 1131 nicht erforderlich ist, um einen schnellen Zugriff durch das Prozessorelement 1110 zu ermöglichen, wenn diese Routine ausgeführt wird.
  • Wie vorstehend erörtert, kann die Schnittstelle 1190 eine von verschiedenen Signalisierungstechnologien nutzen, die einer von verschiedenen Kommunikationstechnologien entspricht, die genutzt werden können, um eine Computervorrichtung kommunikativ mit einer oder mehreren anderen Vorrichtungen zu koppeln. Wieder können eine oder beide von verschiedenen Formen der drahtgebundenen oder drahtlosen Signalisierung genutzt werden, um dem Prozessorelement 1110 zu ermöglichen, mit Eingabe-/Ausgabevorrichtungen (z. B. der dargestellten beispielhaften Tastatur 1140 oder dem dargestellten beispielhaften Drucker 1145) und/oder anderen Computervorrichtungen, möglicherweise durch ein Netz (z. B. das Netz 1199) oder einen miteinander verbundenen Satz von Netzen, zu interagieren. In Anbetracht der oft stark differierenden Eigenschaften von mehreren Arten von Signalisierungen und/oder Protokollen, die oft von irgendeiner Computervorrichtung unterstützt werden müssen, ist die Schnittstelle 1190 als mehrere unterschiedliche Schnittstellensteuerungen 1195a, 1195b und 1195c umfassend dargestellt. Die Schnittstellensteuerung 1195a kann eine von verschiedenen Arten von drahtgebundenen digitalen seriellen Schnittstellen oder Funkfrequenz-Drahtlosschnittstellen nutzen, um seriell übertragene Nachrichten von Benutzereingabevorrichtungen, beispielsweise der dargestellten Tastatur 1140, zu empfangen. Die Schnittstellensteuerung 1195b kann eine(s) von verschiedenen kabelbasierten oder drahtlosen Signalisierungen, Zeitsteuerungen und/oder Protokollen nutzen, um durch das dargestellte Netz 1199 (vielleicht ein Netz, das ein oder mehrere Verbindungen (Links), kleinere Netze oder vielleicht das Internet umfasst) auf andere Computervorrichtungen zuzugreifen. Die Schnittstelle 1195c kann eines von verschiedenen elektrisch leitenden Kabeln nutzen, das die Verwendung einer seriellen oder parallelen Signalübertragung ermöglicht, um Daten zu dem dargestellten Drucker 1145 zu transportieren. Andere Beispiele von Vorrichtungen, die durch eine oder mehrere Schnittstellensteuerungen der Schnittstelle 1190 kommunikativ gekoppelt sein können, beinhalten, ohne hierauf beschränkt zu sein, Mikrofone, Fernsteuerungen, Eingabestifte, Kartenleser, Fingerabdruckleser, interaktive Virtual-Reality-Handschuhe, Grafikeingabe-Tablets, Steuerhebel (Joysticks) andere Tastaturen, Netzhautscanner, die Berührungseingabe-Komponente von Berührungsbildschirmen, Rollkugeln (Trackballs), verschiedene Sensoren, Laserdrucker, Tintenstrahldrucker, mechanische Roboter, Fräsmaschinen etc.
  • Ist eine Computervorrichtung kommunikativ mit einer Anzeige (z. B. der dargestellten beispielhaften Anzeige 1150) gekoppelt (oder beinhaltet diese vielmehr), kann eine solche die Verarbeitungsarchitektur 1100 implementierende Computervorrichtung auch die Anzeigeschnittstelle 1155 beinhalten. Auch wenn allgemeinere Arten von Schnittstellen beim kommunikativen Koppeln mit einer Anzeige verwendet werden können, machen die in gewisser Weise spezielle zusätzliche Verarbeitung, die oft bei der visuellen Anzeige verschiedener Formen von Inhalt auf einer Anzeige erforderlich ist, sowie die in gewisser Weise speziellen Eigenschaften der verwendeten kabelgebundenen Schnittstellen oft die Bereitstellung einer getrennten Anzeigeschnittstelle wünschenswert. Drahtgebundene und/oder drahtlose Signalisierungstechnologien, die von der Anzeigeschnittstelle 1155 beim kommunikativen Koppeln der Anzeige 1150 verwendet werden können, können Signalisierungen und/oder Protokolle nutzen, die einem von verschiedenen Industriestandards entsprechen, einschließlich, jedoch nicht beschränkt auf eine von verschiedenen analogen Videoschnittstellen, eine DVI-Schnittstelle (Digital Video Interface), DisplayPort etc.
  • 12 veranschaulicht eine Ausführungsform eines Systems 1200. In verschiedenen Ausführungsformen kann das System 1200 für ein System oder eine Architektur stehen, die sich zur Verwendung mit einer oder mehreren hier beschriebenen Ausführungsformen eignet.
  • Wie in 12 gezeigt, kann das System 1200 mehrere Elemente aufweisen. Ein oder mehrere Elemente können unter Verwendung von einer/einem oder mehreren Schaltungen, Komponenten, Registern, Prozessoren, Software-Subroutinen, Modulen oder einer beliebigen Kombination davon implementiert sein, wenn dies für einen gegebenen Satz von Konstruktions- oder Leistungsbeschränkungen gewünscht ist. Auch wenn 12 beispielhaft eine begrenzte Anzahl von Elementen in einer bestimmten Topologie zeigt, lässt sich verstehen, dass mehr oder weniger Elemente in jeder geeigneten Topologie in dem System 1200 verwendet werden können, wenn dies für eine gegebene Implementierung gewünscht ist. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • In verschiedenen Ausführungsformen kann das System 1200 eine Computervorrichtung 1205 aufweisen, bei der es sich um eine beliebige Art von Computer oder Verarbeitungsvorrichtung handeln kann, einschließlich Personalcomputer, Desktop-Computer, Tablet-Computer, Netbook-Computer, Notebook-Computer, Laptop-Computer, Server, Serverfarmen, Blade-Server oder irgendeine andere Art von Server und so weiter.
  • Beispiele einer mobilen Computervorrichtung können außerdem Computer umfassen, die dafür ausgelegt sind, von einer Person getragen zu werden, wie etwa Handgelenk-Computer, Finger-Computer, Ring-Computer, Brillen-Computer, Gürtelclip-Computer, Armband-Computer, Schuh-Computer, Kleidungs-Computer und andere tragbare Computer. In Ausführungsformen kann eine mobile Datenverarbeitungsvorrichtung zum Beispiel als ein Smartphone implementiert sein, das zum Ausführen von Computeranwendungen sowie Sprachkommunikationen und/oder Datenkommunikationen in der Lage ist. Auch wenn einige Ausführungsformen beispielhaft anhand einer mobilen Datenverarbeitungsvorrichtung beschrieben werden können, die als ein Smartphone implementiert ist, versteht es sich, dass andere Ausführungsformen auch unter Verwendung anderer drahtloser mobiler Datenverarbeitungsvorrichtungen implementiert sein können. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • In verschiedenen Ausführungsformen kann die Computervorrichtung 1205 eine Prozessorschaltung 1202 aufweisen. Die Prozessorschaltung 1202 kann unter Verwendung eines beliebigen Prozessors oder einer beliebigen Logikvorrichtung implementiert sein. Bei der Verarbeitungsschaltung 1202 kann es sich um eines oder mehrere von einer beliebigen Art von Rechenelementen handeln, beispielsweise, jedoch nicht beschränkt auf einen Mikroprozessor, einen Prozessor, eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU), eine digitale Signalverarbeitungseinheit, einen Zweikernprozessor, einen Mobilvorrichtungsprozessor, einen Desktop-Prozessor, einen Einkernprozessor, ein Ein-Chip-System (System-on-Chip, SOC)-Vorrichtung, einen CISC (Complex Instruction Set Computing, Rechnen mit komplexem Befehlssatz)-Mikroprozessor, einen RISC (Reduced Instruction Set Computing, Rechnen mit reduziertem Befehlssatz)-Mikroprozessor, einen VLIE (Very Long Instruction Word, langes Befehlswort)-Mikroprozessor oder irgendeine andere Art von Prozessor oder Verarbeitungsschaltung auf einem einzelnen Chip oder einer integrierten Schaltung. Die Verarbeitungsschaltung 1202 kann über eine Zwischenverbindung 1253, beispielsweise eine(n) oder mehrere Busse, Steuerleitungen und Datenleitungen, mit den anderen Elementen des Computersystems verbunden sein und kommunizieren.
  • In einer Ausführungsform kann die Computervorrichtung 1205 eine Speichereinheit 1204 zum Koppeln an die Prozessorschaltung 1202 aufweisen. Die Speichereinheit 1204 kann über einen Kommunikationsbus 1253 oder durch einen dedizierten Kommunikationsbus zwischen der Prozessorschaltung 1202 und der Speichereinheit 1204 mit der Prozessorschaltung 1202 gekoppelt sein, wenn dies für eine gegebene Implementierung gewünscht ist. Die Speichereinheit 1204 kann unter Verwendung beliebiger maschinenlesbarer oder computerlesbarer Medien, die in der Lage sind, Daten zu speichern, implementiert sein, was sowohl flüchtigen als auch nichtflüchtigen Speicher einschließt. In einigen Ausführungsform kann das maschinenlesbare oder computerlesbare Medium ein nicht-transitorisches Medium aufweisen. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Die Computervorrichtung 1205 kann in verschiedenen Ausführungsformen eine Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) 1206 aufweisen. Die GPU 1206 kann eine beliebige Verarbeitungseinheit, Logik oder Schaltungen, die dafür optimiert sind, grafikbezogene Operationen durchzuführen, sowie Videodekodiermaschinen und die Rahmenkorrelationsmaschinen aufweisen. Die GPU 906 kann verwendet werden, um zweidimensionale (2-D) und/oder dreidimensionale (3-D) Bilder für verschiedene Anwendungen wie etwa Videospiele, Grafiken, CAD (Computer-Aided Design), Simulations- und Visualisierungstools, Bildgebung etc. zu rendern. Verschiedene Ausführungsformen sind nicht in dieser Weise beschränkt; die GPU 1206 kann jede Art von Grafikdaten verarbeiten, beispielsweise Bilder, Videos, Programme, Animationen, 3D, 2D, Objektbilder und so weiter.
  • In einigen Ausführungsformen kann die Computervorrichtung 1205 eine Anzeigesteuerung 1208 aufweisen. Bei der Anzeigesteuerung 1208 kann es sich um eine beliebige Art von Prozessor, Steuerung, Schaltung, Logik und so weiter für das Verarbeiten von Grafikinformationen und das Anzeigen der Grafikinformationen handeln. Die Anzeigesteuerung 1208 kann Grafikinformationen von/aus einem oder mehreren Puffern empfangen oder abrufen. Nach dem Verarbeiten der Informationen kann die Anzeigesteuerung 1208 die Grafikinformationen an eine Anzeige senden, die mit einer Computervorrichtung 1205 gekoppelt sein kann, sei es drahtgebunden wie etwa die Anzeige 1245 oder drahtlos unter Verwendung eines Sendeempfängers wie nachstehend beschrieben.
  • In verschiedenen Ausführungsformen kann das System 1200 einen Sendeempfänger 1244 aufweisen. Der Sendeempfänger 1244 kann eine oder mehrere Funkvorrichtungen umfassen, die zum Senden und Empfangen von Signalen unter Verwendung von verschiedenen geeigneten Drahtloskommunikationstechniken in der Lage sind. Solche Techniken können Kommunikationen über ein oder mehrere drahtlose Netze umfassen. Beispielhafte drahtlose Netze umfassen (ohne darauf beschränkt zu sein) drahtlose lokale Netze (Zirkulare Local Area Networks, WLANs), drahtlose Netze für den persönlichen Bereich (Zirkulare Personal Area Networks, WPANs), drahtlose Stadtnetze (Zirkulare Metropolitan Area Networks, WMANs), zellulare Mobilfunknetze und Satellitennetze. Beim Kommunizieren über solche Netze kann der Sendeempfänger 1244 gemäß einem oder mehreren anwendbaren Standards einer beliebigen Version arbeiten. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • In verschiedenen Ausführungsformen kann die Computervorrichtung 1205 eine Anzeige 1245 aufweisen. Die Anzeige 1245 kann eine beliebige Anzeigevorrichtung bilden, die in der Lage ist, von der Prozessorschaltung 1202, der Grafikverarbeitungseinheit 1206 und der Anzeigesteuerung 1208 empfangene Informationen anzuzeigen.
  • In verschiedenen Ausführungsformen kann die Computervorrichtung 1205 einen Datenspeicher 1246 aufweisen. Der Datenspeicher 1246 kann als eine nichtflüchtige Datenspeichervorrichtung implementiert sein, beispielsweise, jedoch nicht darauf beschränkt, als magnetisches Plattenlaufwerk, als optisches Plattenlaufwerk, als Bandlaufwerk, als interne Speichervorrichtung, als angeschlossene Speichervorrichtung, als Flash-Speicher, als batteriegepufferter SDRAM (synchroner DRAM) und/oder als eine Speichervorrichtung mit Netzzugang. In Ausführungsformen kann der Datenspeicher 1246 Technologie aufweisen, um den erweiterten Speicherleistungsschutz für wertvolle digitale Medien zu erhöhen, wenn zum Beispiel mehrere Festplattenlaufwerke enthalten sind. Weitere Beispiele für Datenspeicher 1246 können eine Festplatte, eine Diskette, eine CD-ROM (Compact Disk Read Only Memory), eine CD-R (Compact Disk Recordable), eine CD-RW (Compact Disk Rewriteable), eine optische Platte, magnetische Medien, magnetooptische Medien, Wechselspeicherkarten oder -platten, verschiedene Arten von DVD-Vorrichtungen, eine Bandvorrichtung, eine Kassettenvorrichtung oder dergleichen umfassen. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • In verschiedenen Ausführungsformen kann die Computervorrichtung 1205 einen oder mehrere E/A-Adapter 1247 aufweisen. Beispiele für E/A-Adapter 1247 können USB-Anschlüsse/Adapter (Universal Serial Bus), IEEE 1394 Firewire-Anschlüsse/Adapter und so weiter beinhalten. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt
  • Allgemeiner können die verschiedenen Elemente der hier beschriebenen Vorrichtungen verschiedene Hardwareelemente, Softwareelemente oder eine Kombination von beiden aufweisen. Beispiele für Hardwareelemente können Bauelemente, Logikbauelemente, Komponenten, Prozessoren, Mikroprozessoren, Schaltungen, Prozessorelemente, Schaltelemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktivitäten und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (Application Specific Integrated Circuits, ASICs), programmierbare Logikbauelemente (Programmable Logic Devices, PLDs), digitale Signalprozessoren (DSPs), feldprogrammierbare Gatteranordnungen (FPGAs), Speichereinheiten, Logikgatter, Register, Halbleiterbauelemente, Chips, Mikrochips, Chipsätze und so weiter beinhalten. Beispiele für Softwareelemente können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Softwareentwicklungsprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterprogramme, Funktionen, Methoden, Prozeduren, Softwareschnittstellen, Anwendungsprogramm-Schnittstellen (Application Program Interfaces, APIs), Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder jede beliebige Kombination davon einschließen. Allerdings kann das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, gemäß jeder beliebigen Anzahl von Faktoren variieren, etwa je nach gewünschter Rechengeschwindigkeit, Leistung, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenrate, Ausgangsdatenrate, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Konstruktions- oder Leistungsbeschränkungen, wenn dies für eine gegebene Ausführungsform gewünscht ist.
  • Einige Ausführungsformen können unter Verwendung des Ausdrucks „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ und Ableitungen davon beschrieben sein. Diese Begriffe bedeuten, dass ein(e) besondere(s) Merkmal, Struktur oder Charakteristik, das/die im Zusammenhang mit der Ausführungsform beschrieben wird, in wenigstens einer Ausführungsform der Erfindung vorkommt. Der Ausdruck „bei einer Ausführungsform“ an diversen Stellen in der Beschreibung bezieht sich nicht notwendigerweise immer auf dieselbe Ausführungsform. Ferner können einige Beispiele unter Verwendung des Ausdrucks „gekoppelt“ oder „verbunden“ und Ableitungen davon beschrieben sein. Diese Begriffe sind nicht notwendigerweise als Synonyme gedacht. Beispielsweise können einige Ausführungsformen unter Verwendung der Begriffe „verbunden“ und/oder „gekoppelt“ beschrieben sein, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt miteinander stehen. Der Begriff „gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber dennoch zusammenwirken oder miteinander interagieren.
  • Es wird hervorgehoben, dass die Zusammenfassung des Offenbarungsgehalts beigefügt wird, um einem Leser zu ermöglichen, sich schnell über die Art der technischen Offenbarung zu informieren. Sie wird in dem Bewusstsein vorgelegt, dass sie nicht verwendet werden wird, um den Schutzumfang oder die Bedeutung der Patentansprüche zu interpretieren oder einzuschränken. Darüber hinaus wird der Fachmann anhand der vorstehenden ausführlichen Beschreibung erkennen, dass verschiedene Merkmale in einer einzelnen Ausführungsform mit der Absicht gruppiert sind, die Offenbarung zu vereinfachen. Dieses Offenbarungsverfahren ist nicht dahingehend zu interpretieren, dass beabsichtigt ist, dass die beanspruchten Ausführungsformen mehr Merkmale benötigen als ausdrücklich in jedem Anspruch angegeben. Stattdessen ist, wie sich in den nachfolgenden Ansprüchen widerspiegelt, der Erfindungsgegenstand in weniger als allen Merkmalen einer einzelnen offenbarten Ausführungsform anzutreffen. Somit werden die folgenden Ansprüche hierdurch in die vorliegende ausführliche Beschreibung aufgenommen, wobei jeder Anspruch für sich als gesonderte Ausführungsform steht. In den beigefügten Patentansprüchen werden die Begriffe „einschließlich“ und „in welcher/welchem/welchen“ als einfach verständliche Äquivalente für die entsprechenden Begriffe „umfassen“ und „wobei“ verwendet. Darüber hinaus werden die Begriffe „erster/erste/erstes“, „zweiter/zweite/zweites“, „dritter/dritte/drittes“ und so weiter nur als Kennzeichnungen verwendet und sind nicht dazu bestimmt, den zugehörigen Objekten numerische Anforderungen aufzuerlegen.
  • Die vorstehende Beschreibung enthält Beispiele der offenbarten Architektur. Natürlich ist es nicht möglich, jedwede vorstellbare Kombination von Komponenten und/oder Methoden zu beschreiben, jedoch wird der Durchschnittsfachmann auf diesem Gebiet erkennen, dass zahlreiche weitere Kombinationen und Permutationen möglich sind. Dementsprechend sollen mit der neuartigen Architektur alle derartigen Veränderungen, Abwandlungen und Variationen abgedeckt sein, die in das Wesen und den Schutzbereich der beigefügten Ansprüche fallen. Die Offenbarung wendet sich nun dem Bereitstellen verschiedener beispielhafter Implementierungen zu.
  • Beispiel 1. Eine Einrichtung, umfassend Logik, die teilweise als Hardware implementiert ist, wobei die Logik eine Verlagerungsplanungskomponente umfassen soll, um: eine Datenanforderung zu empfangen, die eine Angabe zum Komprimieren, Dekomprimieren, Verschlüsseln oder Entschlüsseln von Daten aufweist; eine oder mehrere Eigenschaften der empfangenen Datenanforderung zu bestimmen; und eine oder mehrere Datenaufgaben für eines von mehreren Verarbeitungselementen basierend auf der bestimmten ein oder mehreren Eigenschaften zu planen.
  • Beispiel 2. Die Einrichtung aus Beispiel 1, wobei es sich bei den mehreren Verarbeitungselementen um Komponenten einer Datenverarbeitungsmaschine handelt, wobei die Datenverarbeitungsmaschine eines oder mehrere von einem Hardware-Sicherheitsmodul, einer CPU oder einem SOC umfasst.
  • Beispiel 3. Die Einrichtung aus Beispiel 1, wobei die ein oder mehreren Eigenschaften beinhalten, ob es sich bei der Datenanforderung um eine Datenanforderung zur Komprimierung, Dekomprimierung oder für eine geografisch-spezifische Kryptografieoperation handelt.
  • Beispiel 4. Die Einrichtung aus Beispiel 3, wobei die Verlagerungsplanungskomponente Komprimierungsoperationen, Dekomprimierungsoperationen oder geografisch-spezifische Kryptografieoperationen für ein Hardware-Sicherheitsmodul planen soll.
  • Beispiel 5. Die Einrichtung aus Beispiel 2, wobei die ein oder mehreren Eigenschaften beinhalten, ob die Datenanforderung für AES- oder AES-NI-Operationen vorgesehen ist.
  • Beispiel 6. Die Einrichtung aus Beispiel 5, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Arbeitslast der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Arbeitslast der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Arbeitslast der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  • Beispiel 7. Die Einrichtung aus Beispiel 5, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  • Beispiel 8. Die Einrichtung aus Beispiel 5, wobei die Verlagerungsplanungskomponente die ein oder mehreren Datenaufgaben des SOC basierend auf einer Bestimmung, dass eine geschätzte Durchführungszeit unter Verwendung des SOC kürzer ist als eine geschätzte Durchführungszeit unter Verwendung der CPU, planen soll.
  • Beispiel 9. Die Einrichtung aus Beispiel 1, wobei die Verlagerungsplanungskomponente die Datenanforderung von einer oder mehreren virtuellen Maschinen empfangen soll.
  • Beispiel 10. Die Einrichtung aus Beispiel 1, wobei die Verlagerungsplanungskomponente auf einem virtuellen Maschinenmonitor betrieben werden soll.
  • Beispiel 11. Die Einrichtung aus Beispiel 1, wobei die Verlagerungsplanungskomponente Daten von einem Ringpuffer-Pool speichern und empfangen soll.
  • Beispiel 12. Die Einrichtung aus Beispiel 11, wobei der Ringpuffer-Pool ein oder mehrere Ringpuffer-Paare umfassen soll, wobei jedes Ringpuffer-Paar einem von mehreren virtuellen Maschinen entspricht.
  • Beispiel 13. Die Einrichtung aus Beispiel 1, wobei die mehreren Verarbeitungselemente auf einen Schlüsselmanager zugreifen sollen, um mit der einen oder den mehreren Datenaufgaben verknüpfte kryptografische Operationen durchzuführen.
  • Beispiel 14. Die Einrichtung aus Beispiel 13, wobei der Schlüsselmanager einen dedizierten Zufallszahlengenerator aufweist.
  • Beispiel 15. Die Einrichtung aus Beispiel 13, wobei der Schlüsselmanager eine Schlüsseldatenbank aufweist, die in einer sicheren Enklave gespeichert ist.
  • Beispiel 16. Die Einrichtung aus Beispiel 13, wobei der Schlüsselmanager eine Zugriffssteuerungskomponente aufweist, um zu bestimmen, ob der Zugriff auf einen angeforderten Schlüssel einer oder mehreren Zugriffsrichtlinien entspricht.
  • Beispiel 17. Wenigstens ein maschinenlesbares Datenspeichermedium, umfassend Anweisungen, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen zum: Empfangen, durch eine Verlagerungsplanungskomponente, einer Datenanforderung, die eine Angabe zum Komprimieren, Dekomprimieren, Verschlüsseln oder Entschlüsseln von Daten aufweist; Bestimmen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Eigenschaften der empfangenen Datenanforderung; und Planen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Datenaufgaben für eines von mehreren Verarbeitungselementen basierend auf der bestimmten ein oder mehreren Eigenschaften.
  • Beispiel 18. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 17, wobei es sich bei den mehreren Verarbeitungselementen um Komponenten einer Datenverarbeitungsmaschine handelt, wobei die Datenverarbeitungsmaschine eines oder mehrere von einem Hardware-Sicherheitsmodul, einer CPU oder einem SOC umfasst.
  • Beispiel 19. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 17, wobei die ein oder mehreren Eigenschaften beinhalten, ob es sich bei der Datenanforderung um eine Datenanforderung zur Komprimierung, Dekomprimierung oder für eine geografisch-spezifische Kryptografieoperation handelt.
  • Beispiel 20. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 19, wobei die Verlagerungsplanungskomponente Komprimierungsoperationen, Dekomprimierungsoperationen oder geografisch-spezifische Kryptografieoperationen für ein Hardware-Sicherheitsmodul planen soll.
  • Beispiel 21. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 18, wobei die ein oder mehreren Eigenschaften beinhalten, ob die Datenanforderung für AES- oder AES-NI-Operationen vorgesehen ist.
  • Beispiel 22. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 20, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Arbeitslast der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Arbeitslast der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Arbeitslast der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  • Beispiel 23. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 20, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  • Beispiel 24. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 20, wobei die Verlagerungsplanungskomponente die ein oder mehreren Datenaufgaben des SOC basierend auf einer Bestimmung, dass eine geschätzte Durchführungszeit unter Verwendung des SOC kürzer ist als eine geschätzte Durchführungszeit unter Verwendung der CPU, planen soll.
  • Beispiel 25. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel x, wobei die Verlagerungsplanungskomponente eine Datenanforderung von einer oder mehreren virtuellen Maschinen empfangen soll.
  • Beispiel 26. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 17, wobei die Verlagerungsplanungskomponente auf einem virtuellen Maschinenmonitor betrieben werden soll.
  • Beispiel 27. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel x, wobei die Verlagerungsplanungskomponente Daten von einem Ringpuffer-Pool speichern und empfangen soll.
  • Beispiel 28. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 27, wobei der Ringpuffer-Pool ein oder mehrere Ringpuffer-Paare aufweisen soll, wobei jedes Ringpuffer-Paar einem von mehreren virtuellen Maschinen entspricht.
  • Beispiel 29. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 17, wobei die mehreren Verarbeitungselemente auf einen Schlüsselmanager zugreifen sollen, um mit der einen oder den mehreren Datenaufgaben verknüpfte kryptografische Operationen durchzuführen.
  • Beispiel 30. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 29, wobei der Schlüsselmanager einen dedizierten Zufallszahlengenerator aufweist.
  • Beispiel 31. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 29, wobei der Schlüsselmanager eine Schlüsseldatenbank aufweist, die in einer sicheren Enklave gespeichert ist.
  • Beispiel 32. Das wenigstens eine maschinenlesbare Datenspeichermedium aus Beispiel 29, wobei der Schlüsselmanager eine Zugriffssteuerungskomponente aufweist, um zu bestimmen, ob der Zugriff auf einen angeforderten Schlüssel einer oder mehreren Zugriffsrichtlinien entspricht.
  • Beispiel 33. Ein computerimplementiertes Verfahren, umfassend: Empfangen, durch eine Verlagerungsplanungskomponente, einer Datenanforderung, die eine Angabe zum Komprimieren, Dekomprimieren, Verschlüsseln oder Entschlüsseln von Daten aufweist; Bestimmen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Eigenschaften der empfangenen Datenanforderung; und Planen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Datenaufgaben für eines von mehreren Verarbeitungselementen basierend auf der bestimmten ein oder mehreren Eigenschaften.
  • Beispiel 34. Das computerimplementierte Verfahren aus Beispiel 33, wobei es sich bei den mehreren Verarbeitungselementen um Komponenten einer Datenverarbeitungsmaschine handelt, die eines oder mehrere von einem Hardware-Sicherheitsmodul, einer CPU und einem SOC umfassen soll.
  • Beispiel 35. Das computerimplementierte Verfahren aus Beispiel 33, wobei die ein oder mehreren Eigenschaften beinhalten, ob es sich bei der Datenanforderung um eine Datenanforderung zur Komprimierung, Dekomprimierung oder für eine geografisch-spezifische Kryptografieoperation handelt.
  • Beispiel 36. Das computerimplementierte Verfahren aus Beispiel 35, wobei die Verlagerungsplanungskomponente Komprimierungsoperationen, Dekomprimierungsoperationen und geografisch-spezifische Kryptografieoperationen für ein Hardware-Sicherheitsmodul planen soll.
  • Beispiel 37. Das computerimplementierte Verfahren aus Beispiel 34, wobei die ein oder mehreren Eigenschaften beinhalten, ob die Datenanforderung für AES- oder AES-NI-Operationen vorgesehen ist.
  • Beispiel 38. Das computerimplementierte Verfahren aus Beispiel 36, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Arbeitslast der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Arbeitslast der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Arbeitslast der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  • Beispiel 39. Das computerimplementierte Verfahren aus Beispiel 36, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  • Beispiel 40. Das computerimplementierte Verfahren aus Beispiel 36, wobei die Verlagerungsplanungskomponente die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass eine geschätzte Durchführungszeit unter Verwendung des SOC kürzer ist als eine geschätzte Durchführungszeit unter Verwendung der CPU, planen soll.
  • Beispiel 41. Das computerimplementierte Verfahren aus Beispiel x, wobei die Verlagerungsplanungskomponente eine Datenanforderung von einer oder mehreren virtuellen Maschinen empfängt.
  • Beispiel 42. Das computerimplementierte Verfahren aus Beispiel 33, wobei die Verlagerungsplanungskomponente auf einem virtuellen Maschinenmonitor arbeitet.
  • Beispiel 43. Das computerimplementierte Verfahren aus Beispiel 33, wobei die Verlagerungsplanungskomponente Daten von einem Ringpuffer-Pool speichern und empfangen soll.
  • Beispiel 44. Das computerimplementierte Verfahren aus Beispiel 43, wobei der Ringpuffer-Pool ein oder mehrere Ringpuffer-Paare aufweisen soll, wobei jedes Ringpuffer-Paar einem von mehreren virtuellen Maschinen entspricht.
  • Beispiel 45. Das computerimplementierte Verfahren aus Beispiel 33, wobei die mehreren Verarbeitungselemente auf einen Schlüsselmanager zugreifen sollen, um mit der einen oder den mehreren Datenaufgaben verknüpfte kryptografische Operationen durchzuführen.
  • Beispiel 46. Das computerimplementierte Verfahren aus Beispiel 45, wobei der Schlüsselmanager einen dedizierten Zufallszahlengenerator aufweist.
  • Beispiel 47. Das computerimplementierte Verfahren aus Beispiel 45, wobei der Schlüsselmanager eine Schlüsseldatenbank aufweist, die in einer sicheren Enklave gespeichert ist.
  • Beispiel 48. Das computerimplementierte Verfahren aus Beispiel 45, wobei der Schlüsselmanager eine Zugriffssteuerungskomponente aufweist, um zu bestimmen, ob der Zugriff auf einen angeforderten Schlüssel einer oder mehreren Zugriffsrichtlinien entspricht.
  • Beispiel 49. Eine Einrichtung für eine Vorrichtung, wobei die Einrichtung Mittel für das Durchführen des Verfahrens aus einem der Beispiele 33-48 umfasst.
  • Beispiel 50. Eine Einrichtung, umfassend: Mittel zum Empfangen, durch eine Verlagerungsplanungskomponente, einer Datenanforderung, die eine Angabe zum Komprimieren, Dekomprimieren, Verschlüsseln oder Entschlüsseln von Daten aufweisen soll; Mittel zum Bestimmen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Eigenschaften der empfangenen Datenanforderung; und Mittel zum Planen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Datenaufgaben für eines von mehreren Verarbeitungselementen basierend auf der bestimmten ein oder mehreren Eigenschaften.

Claims (25)

  1. Einrichtung, umfassend: Logik, die teilweise als Hardware implementiert ist, wobei die Logik eine Verlagerungsplanungskomponente umfassen soll, um: eine Datenanforderung zu empfangen, die eine Angabe zum Komprimieren, Dekomprimieren, Verschlüsseln oder Entschlüsseln von Daten aufweist; eine oder mehrere Eigenschaften der empfangenen Datenanforderung zu bestimmen; und eine oder mehrere Datenaufgaben für eines von mehreren Verarbeitungselementen basierend auf der bestimmten ein oder mehreren Eigenschaften zu planen.
  2. Einrichtung nach Anspruch 1, wobei es sich bei den mehreren Verarbeitungselementen um Komponenten einer Datenverarbeitungsmaschine handelt, wobei die Datenverarbeitungsmaschine eines oder mehrere von einem Hardware-Sicherheitsmodul, einer CPU oder einem SOC umfasst.
  3. Einrichtung nach Anspruch 1, wobei die ein oder mehreren Eigenschaften beinhalten, ob es sich bei der Datenanforderung um eine Datenanforderung zur Komprimierung, zur Dekomprimierung oder für eine geografisch-spezifische Kryptografieoperation handelt.
  4. Einrichtung nach Anspruch 3, wobei die Verlagerungsplanungskomponente Komprimierungsoperationen, Dekomprimierungsoperationen oder geografisch-spezifische Kryptografieoperationen für ein Hardware-Sicherheitsmodul planen soll.
  5. Einrichtung nach Anspruch 2, wobei die ein oder mehreren Eigenschaften beinhalten, ob die Datenanforderung für AES- oder AES-NI-Operationen vorgesehen ist.
  6. Einrichtung nach Anspruch 5, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Arbeitslast der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Arbeitslast der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Arbeitslast der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  7. Einrichtung nach Anspruch 5, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  8. Einrichtung nach Anspruch 5, wobei die Verlagerungsplanungskomponente die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass eine geschätzte Durchführungszeit unter Verwendung des SOC kürzer ist als eine geschätzte Durchführungszeit unter Verwendung der CPU, planen soll.
  9. Einrichtung nach Anspruch 1, wobei die Verlagerungsplanungskomponente die Datenanforderung von einer oder mehreren virtuellen Maschinen empfangen soll.
  10. Einrichtung nach Anspruch 1, wobei die Verlagerungsplanungskomponente auf einem virtuellen Maschinenmonitor betrieben werden soll.
  11. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien, umfassend Anweisungen, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen zum: Empfangen, durch eine Verlagerungsplanungskomponente, einer Datenanforderung, die eine Angabe zum Komprimieren, Dekomprimieren, Verschlüsseln oder Entschlüsseln von Daten aufweisen soll; Bestimmen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Eigenschaften der empfangenen Datenanforderung; und Planen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Datenaufgaben für eines von mehreren Verarbeitungselementen basierend auf den bestimmten ein oder mehreren Eigenschaften.
  12. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien nach Anspruch 11, wobei es sich bei den mehreren Verarbeitungselementen um Komponenten einer Datenverarbeitungsmaschine handelt, wobei die Datenverarbeitungsmaschine eines oder mehrere von einem Hardware-Sicherheitsmodul, einer CPU oder einem SOC umfasst.
  13. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien nach Anspruch 11, wobei die ein oder mehreren Eigenschaften beinhalten, ob es sich bei der Datenanforderung um eine Datenanforderung zur Komprimierung, zur Dekomprimierung oder für eine geografisch-spezifische Kryptografieoperation handelt.
  14. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien nach Anspruch 13, wobei die Verlagerungsplanungskomponente Komprimierungsoperationen, Dekomprimierungsoperationen oder geografisch-spezifische Kryptografieoperationen für ein Hardware-Sicherheitsmodul planen soll.
  15. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien nach Anspruch 12, wobei die ein oder mehreren Eigenschaften beinhalten, ob die Datenanforderung für AES- oder AES-NI-Operationen vorgesehen ist.
  16. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien nach Anspruch 15, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Arbeitslast der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Arbeitslast der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Arbeitslast der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  17. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien nach Anspruch 15, wobei die Verlagerungsplanungskomponente: bestimmen soll, ob eine Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt; und die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU bei oder über einem Schwellwert liegt, planen soll; oder die ein oder mehreren Datenaufgaben für die CPU basierend auf einer Bestimmung, dass die Verzögerung in Verbindung mit der CPU nicht bei oder über einem Schwellwert liegt, planen soll.
  18. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien nach Anspruch 15, wobei die Verlagerungsplanungskomponente die ein oder mehreren Datenaufgaben für das SOC basierend auf einer Bestimmung, dass eine geschätzte Durchführungszeit unter Verwendung des SOC kürzer ist als eine geschätzte Durchführungszeit unter Verwendung der CPU, planen soll.
  19. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien nach Anspruch 1, wobei die Verlagerungsplanungskomponente eine Datenanforderung von einer oder mehreren virtuellen Maschinen empfangen soll.
  20. Maschinenlesbares Datenspeichermedium oder maschinenlesbare Datenspeichermedien nach Anspruch 1, wobei die Verlagerungsplanungskomponente auf einem virtuellen Maschinenmonitor betrieben werden soll.
  21. Computerimplementiertes Verfahren, umfassend: Empfangen, durch eine Verlagerungsplanungskomponente, einer Datenanforderung, die eine Angabe zum Komprimieren, Dekomprimieren, Verschlüsseln oder Entschlüsseln von Daten aufweisen soll; Bestimmen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Eigenschaften der empfangenen Datenanforderung; und Planen, durch die Verlagerungsplanungskomponente, von einer oder mehreren Datenaufgaben für eines von mehreren Verarbeitungselementen basierend auf den bestimmten ein oder mehreren Eigenschaften.
  22. Computerimplementiertes Verfahren nach Anspruch 21, wobei es sich bei den mehreren Verarbeitungselementen um Komponenten einer Datenverarbeitungsmaschine handelt, die eines oder mehrere von einem Hardware-Sicherheitsmodul, einer CPU und einem SOC umfassen soll.
  23. Computerimplementiertes Verfahren nach Anspruch 22, wobei die ein oder mehreren Eigenschaften beinhalten, ob es sich bei der Datenanforderung um eine Datenanforderung zur Komprimierung, zur Dekomprimierung oder für eine geografisch-spezifische Kryptografieoperation handelt.
  24. Computerimplementiertes Verfahren nach Anspruch 23, wobei die Verlagerungsplanungskomponente Komprimierungsoperationen, Dekomprimierungsoperationen oder geografisch-spezifische Kryptografieoperationen für ein Hardware-Sicherheitsmodul planen soll.
  25. Computerimplementiertes Verfahren nach Anspruch 22, wobei die ein oder mehreren Eigenschaften beinhalten, ob die Datenanforderung für AES- oder AES-NI-Operationen vorgesehen ist.
DE112016006318.0T 2016-03-31 2016-03-31 Verfahren für beschleunigte sichere Datenspeicherfähigkeiten Withdrawn DE112016006318T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/078136 WO2017166206A1 (en) 2016-03-31 2016-03-31 Techniques for accelerated secure storage capabilities

Publications (1)

Publication Number Publication Date
DE112016006318T5 true DE112016006318T5 (de) 2018-11-15

Family

ID=59962446

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016006318.0T Withdrawn DE112016006318T5 (de) 2016-03-31 2016-03-31 Verfahren für beschleunigte sichere Datenspeicherfähigkeiten

Country Status (3)

Country Link
CN (1) CN108713190B (de)
DE (1) DE112016006318T5 (de)
WO (1) WO2017166206A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110176988B (zh) * 2019-04-25 2022-04-08 中国人民解放军战略支援部队信息工程大学 保证冗余执行体加密行为一致的装置及方法
CN111190733B (zh) * 2019-12-27 2023-11-17 华为技术有限公司 用于进行rsa计算的计算资源调度方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1895331A2 (de) * 2006-08-30 2008-03-05 Angel Ramiro Mur Güerri Gerät zur Untersuchung von Schnee, Verfahren zum Messen der Schneedecke, Verfahren zum Wiederaufladen von Batterien und Verfahren zur Umwandlung eines flexiblen Körpers in einen vertikalen festen Körper
JP2008084009A (ja) * 2006-09-27 2008-04-10 Toshiba Corp マルチプロセッサシステム
US8675875B2 (en) * 2010-05-18 2014-03-18 International Business Machines Corporation Optimizing use of hardware security modules
US8799554B1 (en) * 2010-10-27 2014-08-05 Amazon Technologies, Inc. Methods and system for swapping memory in a virtual machine environment
CN103019856A (zh) * 2012-11-23 2013-04-03 上海寰创通信科技股份有限公司 一种多核处理器的非对称调度方法
US9569233B2 (en) * 2012-12-31 2017-02-14 F5 Networks, Inc. Elastic offload of prebuilt traffic management system component virtual machines
US9215067B2 (en) * 2013-04-05 2015-12-15 International Business Machines Corporation Achieving storage efficiency in presence of end-to-end encryption using downstream decrypters
CN103645954B (zh) * 2013-11-21 2018-12-14 华为技术有限公司 一种基于异构多核体系的cpu调度方法、装置和系统
KR20150084098A (ko) * 2014-01-13 2015-07-22 한국전자통신연구원 스트림 데이터 분산 처리 시스템 및 그 방법
US20150317176A1 (en) * 2014-05-02 2015-11-05 Cavium, Inc. Systems and methods for enabling value added services for extensible storage devices over a network via nvme controller
US9571279B2 (en) * 2014-06-05 2017-02-14 Cavium, Inc. Systems and methods for secured backup of hardware security modules for cloud-based web services

Also Published As

Publication number Publication date
WO2017166206A1 (en) 2017-10-05
CN108713190B (zh) 2024-03-01
CN108713190A (zh) 2018-10-26

Similar Documents

Publication Publication Date Title
DE102021207514A1 (de) Disaggregiertes berechnen für distribuierte vertrauliche rechenumgebung
DE102018005180A1 (de) Flexible Bescheinigung von Containern
US10534929B2 (en) System and method for automatically securing sensitive data in public cloud using a serverless architecture
CN111898137A (zh) 一种联邦学习的隐私数据处理方法、设备及系统
CA3081374A1 (en) Data protection via aggregation-based obfuscation
DE112014000965T5 (de) Verarbeiten eines Gastereignisses in einem hypervisorgesteuerten System
DE102013108394A1 (de) Verfahren zum Verwalten eines Schlüssels für sicheres Speichern von Daten und Vorrichtung dafür
DE112014000584T5 (de) Erreichen von Speichereffizienz bei durchgängiger Verschlüsselung unter Verwendung von nachgelagerten (Downstream-)Decryptern
DE102018115683A1 (de) Domänenübergreifende sicherheit in kryptographisch partionierter cloud
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE202019005682U1 (de) Hardwaregestützte Paging-Mechanismen
DE112016004342T5 (de) Hardware-Beschleuniger mit doppelt affiner abgebildeter S-Box
DE112012006148B4 (de) Verfahren, Vorrichtung und Maschinenlesbares Medium zur gemeinsamen Benutzung von Puffern für Verarbeitungselemente bei einem Netzwerkgerät
DE102023103633A1 (de) Zustandsüberwachung in sicheren rechenzentren
EP3553689B1 (de) System und verfahren zum automatischen sichern von sensiblen daten in einer öffentlichen cloud unter verwendung einer serverlosen architektur
DE112016006318T5 (de) Verfahren für beschleunigte sichere Datenspeicherfähigkeiten
DE102023107060A1 (de) Vertrauliches computing unter verwendung von multi-instanziieren von parallelprozessoren
DE102023201819A1 (de) Vertrauliches auslagern von dauerspeicheroperationen in vertraulichen rechenumgebungen
US11546141B1 (en) Cryptographic protection for portions of media
KR20160072851A (ko) 대용량 고해상도 위성영상 분석 시스템 및 방법
DE102022110979A1 (de) Modularer thermischer testträger
DE102022100816A1 (de) Thermisches testfahrzeug
CN107408127A (zh) 用于索引队列的动态阈值门
US20240169270A1 (en) Model training method and apparatus, electronic device and storage medium
DE102023107000A1 (de) Vertrauliches computing unter verwendung von parallelprozessoren mit code- und datenschutz

Legal Events

Date Code Title Description
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee