DE112013000381T5 - Datenverschlüsselung auf der Grundlage einer Speicheradressumsetzung - Google Patents

Datenverschlüsselung auf der Grundlage einer Speicheradressumsetzung Download PDF

Info

Publication number
DE112013000381T5
DE112013000381T5 DE112013000381.3T DE112013000381T DE112013000381T5 DE 112013000381 T5 DE112013000381 T5 DE 112013000381T5 DE 112013000381 T DE112013000381 T DE 112013000381T DE 112013000381 T5 DE112013000381 T5 DE 112013000381T5
Authority
DE
Germany
Prior art keywords
memory
data
cache
processing core
secure data
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.)
Granted
Application number
DE112013000381.3T
Other languages
English (en)
Other versions
DE112013000381B4 (de
Inventor
Robert A. Shearer
Matthew Tubbs
Adam Muff
Paul Schardt
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013000381T5 publication Critical patent/DE112013000381T5/de
Application granted granted Critical
Publication of DE112013000381B4 publication Critical patent/DE112013000381B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

Landscapes

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

Abstract

Ein Verfahren und eine Schaltungsanordnung verwenden ein integriertes Verschlüsselungsmodul innerhalb eines Verarbeitungskerns eines Mehrfachkern-Prozessors, um Verschlüsselungsoperationen, d. h. Verschlüsseln und Entschlüsseln sicherer Daten, in Verbindung mit auf solche Daten zugreifenden Speicherzugriffsanfragen durchzuführen. Das integrierte Verschlüsselungsmodul wird in Kombination mit einer Speicheradressumsetzungs-Datenstruktur als Effective-To-Real-Translation (ERAT) oder Translation Lookaside Buffer (TLB) verwendet, die um verschlüsselungsbezogene Seitenattribute erweitert wurde, um anzuzeigen, welche in der Datenstruktur gekennzeichneten Speicherseiten verschlüsselt sind, so dass mit einer Speicherzugriffsanfrage verbundene sichere Daten im Verarbeitungskern auf der Grundlage des verschlüsselungsbezogenen Seitenattributs für die mit der Speicherzugriffsanfrage verbundene Speicherseite selektiv an das integrierte Verschlüsselungsmodul gestreamt werden können.

Description

  • Technisches Gebiet
  • Die Erfindung bezieht sich im Allgemeinen auf die Datenverarbeitung und insbesondere auf das Verschlüsseln und/oder Komprimieren von Daten, die auf Datenverarbeitungssystemen und Prozessoren gespeichert sind und/oder von diesen verwendet werden.
  • Hintergrund
  • Das Schützen von sicheren Daten, die auf den Prozessoren eines Datenverarbeitungssystems gespeichert sind oder von diesen verwendet werden, ist bei vielen Datenverarbeitungsanwendungen von höchster Wichtigkeit. Verschlüsselungsalgorithmen werden für gewöhnlich auf sichere Daten angewandt, so dass diese ohne Anwenden eines Entschlüsselungsalgorithmus nicht verständlich sind, und sichere Daten werden für gewöhnlich in Massenspeicher- und anderen nichtflüchtigen Speichermedien in einem verschlüsselten Format gespeichert, wobei eine Entschlüsselung durchgeführt werden muss, bevor die sicheren Daten von einem Prozessor in einem Datenverarbeitungssystem gelesen und/oder bearbeitet werden können. In vielen Fällen führt das Entschlüsseln verschlüsselter sicherer Daten jedoch dazu, dass sichere Daten in unverschlüsselter Form in diversen Typen flüchtiger Speicher in einem Datenverarbeitungssystem gespeichert werden, z. B. innerhalb eines Hauptspeichers oder innerhalb diverser Ebenen von Cachespeichern, die verwendet werden, um den Zugriff auf häufig verwendete Daten zu beschleunigen. Jedes Mal, wenn Daten in ungesicherter Form in einem beliebigen Speicher eines Datenverarbeitungssystems gespeichert werden, werden diese Daten allerdings ggf. einem nichtberechtigten Zugriff ausgesetzt, der die Vertraulichkeit der Daten potenziell gefährdet.
  • Das Verschlüssen und Entschlüsseln von Daten erfordert für gewöhnlich jedoch eine gewisse Menge an Verarbeitungsaufwand, und demzufolge ist es sogar bei Anwendungen, bei denen sichere Daten verarbeitet werden, wünschenswert, andere, nicht sichere Daten in einem Datenverarbeitungssystem zu halten, so dass für ein Verarbeiten dieser anderen Daten nicht der gleiche Verarbeitungsaufwand erforderlich ist, der mit der Ver- und Entschlüsselung verbunden ist.
  • Da sich die Halbleitertechnologie immer mehr praktischen Einschränkungen in Bezug auf noch höhere Taktgeschwindigkeiten nähert, konzentrieren sich Architekten verstärkt auf Parallelität in Prozessorarchitekturen, um die Leistung zu verbessern. Auf Chipebene werden häufig mehrere Verarbeitungschips auf dem gleichen Chip angeordnet, die in etwa wie separate Prozessorchips funktionieren oder in einem gewissen Maße als vollständig separate Computer. Darüber hinaus wird sogar innerhalb von Kernen auf Parallelität zurückgegriffen, indem mehrere Ausführungseinheiten verwendet werden, die auf das Abwickeln gewisser Operationstypen spezialisiert sind. In vielen Fällen wird auch Pipelining angewandt, so dass gewisse Operationen, die ggf. das Durchführen mehrerer Taktzyklen erfordern, in Stufen unterteilt werden, wodurch das Starten anderer Operationen vor Abschluss früherer Operationen möglich wird. Multithreading wird ebenfalls herangezogen, um das parallele Bearbeiten mehrerer Anweisungsströme zu ermöglichen, wodurch die in einem bestimmten Taktzyklus ausgeführte Gesamtarbeit zunehmen kann.
  • Aufgrund dieser erhöhten Parallelität ergeben sich durch das Halten von sicheren Daten in einem Datenverarbeitungssystem größere Probleme als bei bisherigen, nichtparallelen Datenverarbeitungssystemen. Bei einem Datenverarbeitungssystem, das nur einen einzelnen Prozessor mit einem einzelnen Thread enthält, können sichere Daten z. B. in einer verschlüsselten Form außerhalb des Prozessors gespeichert werden und bei Bedarf von diesem einzelnen Thread entschlüsselt werden, wenn die Daten in den Prozessor geladen werden. Wenn zusätzliche Threads und oder gar zusätzliche Verarbeitungskerne auf dem gleichen Prozessorchip angeordnet sind, kann es jedoch erforderlich sein, den Zugriff auf sichere Daten auf nur gewisse Threads oder Verarbeitungskerne auf dem Chip zu beschränken. Wenn beispielsweise mehrere Threads oder Verarbeitungskerne einen gemeinsamen Cachespeicher nutzen, kann das Speichern sicherer Daten in einer unverschlüsselten Form in diesem Cachespeicher somit mit dem Risiko verbunden sein, dass eine nichtberechtigte Partei über einen anderen Thread oder einen anderen Verarbeitungskern als jenen, der zu einem Zugriff auf die sicheren Daten berechtigt ist, auf diese Daten zugreift. Da moderne System-auf dem-Chip-(SOC, System an Chip)-Prozessorkonstruktionen auf Hunderte von Verarbeitungskerne auf einem Prozessorchip heranwachsen, wird es außerdem zunehmend wichtiger, unverschlüsselte Daten sogar vor anderen Prozessen auf dem gleichen Prozessorchip zu schützen.
  • Für gewöhnlich wird das Ver- und Entschlüsseln von einer Software abgewickelt, die auf einem Prozessor ausgeführt wird. Das Ver- und Entschlüsseln sind jedoch prozessorintensive Aufgaben und folglich wurden zweckbestimmte Verschlüsselungsmodule auf der Grundlage von Hardware entwickelt, um ein Verschlüsseln/Entschlüsseln sicherer Daten schneller und effizienter durchzuführen, als es eine Software für gewöhnlich kann, wodurch der mit solchen Operationen verbundene Aufwand verringert wird. Herkömmliche Verschlüsselungsmodule sind für gewöhnlich außerhalb eines Verarbeitungskerns angeordnet, z. B. zwischen dem Verarbeitungskern und einer Speichersteuereinheit oder anderweitig mit einem Speicherbus verbunden, der außerhalb eines beliebigen Prozessorkerns vorgesehen ist. Um leichter ermitteln zu können, welche Daten verschlüsselt sind und welche nicht, können sichere Daten außerdem in spezifischen Speicheradressbereichen gespeichert werden, so dass ein Verschlüsselungsmodul durch Filtern so gesteuert werden kann, dass es nur Daten verschlüsselt/entschlüsselt, die in gekennzeichneten Bereichen von Speicheradressen gespeichert sind.
  • Eine solche Architektur kann jedoch zu unverschlüsselten Daten führen, die sich in Cachespeichern befinden und für andere Threads und/oder Verarbeitungskerne in einem Chip zugänglich sind. Außerdem muss eine Speichersteuereinheit, die außerhalb eines Prozessorchips angeordnet ist, für gewöhnlich Bereiche von Speicheradressen erstellen und verwalten, in denen sichere Daten gespeichert werden, so dass das Verschlüsseln für Speichertransaktionen, die sichere Daten umfassen, selektiv aktiviert werden kann, was zu einem nichteffizienten Durchsatz für sichere Daten führt.
  • Ähnliche Probleme bestehen in Bezug auf Datenkomprimierung. Die Datenkomprimierung kann verwendet werden, um die für das Speichern von Daten benötigte Speichermenge zu verringern; komprimierte Daten müssen vor Verwendung durch einen Verarbeitungskern oder Thread jedoch dekomprimiert werden. Das Komprimieren und Dekomprimieren von Daten ist mit Verarbeitungsaufwand verbunden, und das Implementieren solcher Funktionen in Software geht demzufolge häufig mit Leistungseinbußen einher. Außerdem wurden zweckbestimmte Komprimierungsmodule entwickelt, um den Verarbeitungsaufwand in Zusammenhang mit dem Komprimieren und Dekomprimieren von Daten zu verringern; solche Module sind für gewöhnlich jedoch außerhalb eines Verarbeitungskerns angeordnet, z. B. innerhalb einer Speichersteuereinheit, und folglich müssen komprimierte Daten ggf. in diversen Cachespeicherebenen in dekomprimiertem Format gespeichert werden, wodurch der Platz zum Speichern anderer Daten in solchen Cachespeichern beschränkt und dadurch die Speichersystemleistung verringert wird. Wie bei verschlüsselten Daten muss eine Speichersteuereinheit darüber hinaus ggf. Bereiche von Speicheradressen erstellen und verwalten, in denen komprimierte Daten gespeichert werden, so dass ein Komprimierungsmodul für Speichertransaktionen, die komprimierte Daten umfassen, selektiv aktiviert werden kann, was zu einem nichteffizienten Durchsatz für komprimierte Daten führt.
  • Aus diesem Grund besteht auf dem Gebiet weiterhin ein erheblicher Bedarf für eine Methode, mit der der Aufwand in Zusammenhang mit dem Zugreifen auf und Verwalten von verschlüsselten und/oder komprimierten Daten in einem Datenverarbeitungssystem minimiert wird und ein zusätzlicher Schutz für verschlüsselte Daten innerhalb eines Multithread- und/oder Mehrfachkern-Prozessorchips und eines diesen enthaltenden Datenverarbeitungssystems bereitgestellt wird.
  • Kurzfassung
  • Die Erfindung behandelt ein oder mehrere Probleme im Stand der Technik durch Bereitstellen eines Verfahrens und einer Schaltungsanordnung, die ein integriertes Verschlüsselungsmodul (encryption engine) innerhalb eines Verarbeitungskerns eines Mehrfachkern-Prozessors nutzen, um Verschlüsselungsoperationen, d. h. Ver- und Entschlüsseln sicherer Daten, in Verbindung mit Speicherzugriffsanfragen durchführen, die auf solche Daten zugreifen. Das integrierte Verschlüsselungsmodul wird in Kombination mit einer Speicheradressumsetzungs-Datenstruktur als Effective-To-Real-Translation (ERAT) oder Translation Lookaside Buffet (TLB) verwendet, die um verschlüsselungsbezogene Seitenattribute erweitert wurde, um anzuzeigen, welche in der Datenstruktur gekennzeichnete Speicherseiten verschlüsselt sind, so dass mit einer Speicherzugriffsanfrage verbundene sichere Daten im Verarbeitungskern auf der Grundlage des verschlüsselungsbezogenen Seitenattributs für die mit der Speicherzugriffsanfrage verbundene Speicherseite selektiv an das integrierte Verschlüsselungsmodul gestreamt werden können.
  • Gemäß einem Aspekt der Erfindung wird als Reaktion auf eine Speicherzugriffsanfrage, die von einem Thread in einem Verarbeitungskern eingeleitet wurde, der sich in einem Mehrkernprozessor befindet, auf ein verschlüsselungsbezogenes Seitenattribut in einer Speicheradressumsetzungs-Datenstruktur zugegriffen, um zu ermitteln, ob ein mit der Speicherzugriffsanfrage verbundene Speicherseite verschlüsselt ist, und sichere Daten auf der Speicherseite werden als Reaktion darauf, dass festgestellt wurde, dass die mit der Speicherzugriffsanfrage verbundene Speicherseite verschlüsselt ist, durch ein in den Verarbeitungskern integriertes Verschlüsselungsmodul gestreamt.
  • Diese und andere Vorteile und Merkmale, die die Erfindung kennzeichnen, sind in den Ansprüchen ausgeführt, die hier angefügt sind und einen weiteren Teil hiervon bilden. Für ein besseres Verständnis der Erfindung und der durch deren Verwendung erreichten Vorteile und Ziele sollte allerdings auf die Zeichnungen und die beiliegende Beschreibung Bezug genommen werden, in denen bzw. der beispielhafte Ausführungsformen der Erfindung beschrieben sind.
  • Kurze Beschreibung der Zeichnungen
  • Es werden nun Ausführungsformen der Erfindung lediglich beispielhaft unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, in denen:
  • 1 ein Blockschaltbild einer beispielhaften automatisierten Datenverarbeitungsmaschinerie, die einen beispielhaften Computer enthält und bei der Datenverarbeitung gemäß Ausführungsformen der vorliegenden Erfindung nützlich ist.
  • 2 ein Blockschaubild eines beispielhaften Netzwerks auf dem Chip (NOC, Network-on-Chip) ist, das im Computer von 1 implementiert ist.
  • 3 ein Blockschaltbild ist, das eine beispielhafte Implementierung eines Knotens aus dem NOC von 2 ausführlicher zeigt.
  • 4 ein Blockschaubild ist, das eine beispielhafte Implementierung eines IP-Blocks aus dem NOC von 2 zeigt.
  • 5 ein Blockschaltbild eines beispielhaften Datenverarbeitungssystems, das eine Datenverschlüsselung/-komprimierung auf der Grundlage von Speicheradressumsetzung beinhaltet, gemäß der Erfindung ist.
  • 6 ein Blockschaubild eines beispielhaben ERAT-Eingabeformats für die ERAT aus 5 ist.
  • 7 ein Blockschaubild ist, das einen beispielhaften Speicherzugriff unter Verwendung eines Datenverarbeitungssystems, das ein Datenverschlüsseln/-komprimieren auf der Grundlage von Speicheradressumsetzung unterstützt, gemäß der Erfindung zeigt.
  • 8 ein Ablaufplan ist, der eine beispielhafte Abfolge von Operationen für das Zugreifen auf Daten im Datenverarbeitungssystem von 7 zeigt.
  • 9 ein Ablaufplan ist, der eine beispielhafte Abfolge von Operationen zum Durchführen einer Lesebus-Transaktion im Datenverarbeitungssystem von 7 zeigt.
  • 10 ein Ablaufplan ist, der eine beispielhafte Abfolge von Operationen zum Durchführen einer Schreibbus-Transaktion im Datenverarbeitungssystem von 7 zeigt.
  • 11 ein Ablaufplan ist, der eine alternative Abfolge von Operationen zum Durchführen einer Lesebus-Transaktion im Datenverarbeitungssystem von 7 in Verbindung mit ebenenselektiver Verschlüsselung/Komprimierung zeigt.
  • 12 ein Ablaufplan ist, der eine alternative Abfolge von Operationen zum Durchführen einer Schreibbus-Transaktion im Datenverarbeitungssystem von 7 in Verbindung mit ebenenselektiver Verschlüsselung/Komprimierung zeigt.
  • 13 ein Blockschaubild ist, das einen beispielhaften Speicherzugriff unter Verwendung eines weiteren Datenverarbeitungssystems, das ein integriertes Verschlüsselungsmodul beinhaltet, gemäß der Erfindung gezeigt ist.
  • 14 ein Blockschaubild eines weiteren Datenverarbeitungssystem, das ein integriertes Verschlüsselungsmodul enthält, gemäß der Erfindung ist und das darüber hinaus einen sicheren Cachespeicher zur Verwendung beim Speichern sicherer Daten beinhaltet.
  • Ausführliche Beschreibung
  • Bei Ausführungsformen gemäß der Erfindung streamen Daten auf der Grundlage einer Verschlüsselung und/oder von komprimierungsbezogenen Seitenattributen, die in einer Speicheradressumsetzungs-Datenstruktur wie eine Effective-To-Real-Translation (ERAT) oder ein Translation Lookaside Buffet (TLB) gespeichert sind, selektiv an ein Verschlüsselungs- oder Komprimierungsmodul. Auf eine Speicheradressumsetzungs-Datenstruktur kann z. B. in Verbindung mit einer Speicherzugriffsanfrage für Daten auf einer Speicherseite zugegriffen werden, so dass der Speicherseite in der Datenstruktur zugehörige Attribute verwendet werden können, um zu steuern, ob Daten in Zusammenhang mit dem Abwickeln der Speicherzugriffsanfrage verschlüsselt/entschlüsselt und/oder komprimiert/dekomprimiert werden.
  • Darüber hinaus kann bei einigen Ausführungsformen gemäß der Erfindung ein integriertes Verschlüsselungsmodul innerhalb eines Verarbeitungskerns eines Mehrfachkern-Prozessors verwendet werden, um Verschlüsselungsoperationen, d. h. das Verschlüsseln und Entschlüsseln von sicheren Daten, in Verbindung mit auf solche Daten zugreifende Speicherzugriffsanfragen durchzuführen. Wenn mit einer Speicheradressumsetzungs-Datenstruktur als Effective-To-Real-Translation (ERAT) oder Translation Lookaside Buffet (TLB) kombiniert, die um verschlüsselungsbezogene Seitenattribute erweitert wurde, um anzuzeigen, welche in der Datenstruktur gekennzeichneten Speicherseiten verschlüsselt sind, so dass mit einer Speicherzugriffsanfrage verbundene sichere Daten im Verarbeitungskern auf der Grundlage des verschlüsselungsbezogenen Seitenattributs für die mit der Speicherzugriffsanfrage verbundene Speicherseite selektiv an das integrierte Verschlüsselungsmodul gestreamt werden können. Darüber hinaus kann ein integriertes Verschlüsselungsmodul bei einigen Ausführungsformen mit einem L1-Cachespeicher im Verarbeitungskern verbunden sein, der unter dem Gesichtspunkt, dass er sichere Daten speichert, effektiv sicher ist. Der L1-Cachespeicher kann so konfiguriert sein, dass er sowohl sichere als auch nichtsichere Daten speichert, oder alternativ kann der L1-Cachespeicher für sichere Daten konzipiert sein und ein zweiter nichtsicherer L1-Cachespeicher kann verwendet werden, um nichtsichere Daten zwischenzuspeichern. In jedem Fall können sichere Daten nur innerhalb des Verarbeitungskern entschlüsselt und nur dann verschlüsselt werden, wenn sich die sicheren Daten außerhalb des Verarbeitungskerns befinden, wodurch eine gegenüber herkömmlichen Konstruktionen verbesserte Sicherheit bereitgestellt wird.
  • Andere Variationen und Abänderungen sind für den Fachmann ersichtlich. Aus diesem Grund ist die Erfindung nicht auf die spezifischen, hier erörterten Implementierungen beschränkt.
  • Unter Bezugnahme auf die Zeichnungen, in denen gleiche Zahlen gleiche Teile in sämtlichen Ansichten bezeichnen, zeigt, 1 eine beispielhafte automatisierte Datenverarbeitungsmaschinerie, die einen beispielhaften Computer 10 enthält und bei der Datenverarbeitung gemäß Ausführungsformen der vorliegenden Erfindung nützlich ist. Der Computer 10 von 1 enthält zumindest einen Computerprozessor bzw. eine CPU 12 sowie einen Direktzugriffsspeicher 14 (RAM), der über einen Hochgeschwindigkeits-Speicherbus 16 und einen Busadapter 18 mit dem Prozessor 12 und anderen Komponenten des Computers 10 verbunden ist.
  • Im RAM 14 ist ein Anwendungsprogramm 20 gespeichert, ein Modul mit Computerprogrammanweisungen auf Benutzerebene zum Durchführen bestimmter Datenverarbeitungsaufgaben, wie z. B. Textverarbeitung, Tabellenkalkulationen, Datenbankoperationen, Videospiele, Aktienmarktsimulationen, Simulationen atomarer Quantenprozesse oder andere Anwendungen auf Benutzerebene. Im RAM 14 ist darüber hinaus ein Betriebssystem 22 gespeichert. Zu Betriebssystemen, die in Verbindung mit Ausführungsformen der Erfindung nützlich sind, gehören UNIXTM LinuxTM, Microsoft Windows XPTM, AIXTM, i5/OSTM von IBM und andere, wie für den Fachmann ersichtlich. Das Betriebssystem 22 und die Anwendung 20 sind im Beispiel von 1 im RAM 14 gezeigt, viele Komponenten einer solchen Software sind für gewöhnlich jedoch auch in nichtflüchtigen Speichern gespeichert, z. B. auf einem Plattenlaufwerk 24.
  • Wie aus dem Nachstehenden besser hervorgeht, können Ausführungsformen gemäß der Erfindung innerhalb integrierter Netzwerk-auf-dem-Chip-(NOC-)Schaltungseinheiten oder -Chips implementiert sein, und der Computer 10 demzufolge ist als zwei beispielhafte NOCs enthaltend gezeigt: einen Videoadapter 26 und einen Coprozessor 28. Der NOC-Videoadapter 26, der alternativ als Graphikadapter bezeichnet werden kann, ist ein Beispiel für einen E/A-Adapter, die speziell für die grafische Ausgabe an eine Anzeigeeinheit 30, z. B. einen Anzeigebildschirm oder einen Computermonitor, konzipiert ist. Der NOC-Videoadapter 26 ist über einen Hochgeschwindigkeits-Videobus 32, den Busadapter 18 und den Front-Side-Bus 34, bei dem es sich ebenfalls um einen Hochgeschwindigkeitsbus handelt, mit dem Prozessor 12 verbunden. Der NOC-Coprozessor 28 ist über den Busadapter 18 und die Front-Side-Busse 34 und 36, die ebenfalls Hochgeschwindigkeitsbusse sind, mit dem Prozessor 12 verbunden. Der NOC-Coprozessor von 1 kann optimiert werden, beispielsweise so, dass er die bestimmten Datenverarbeitungsaufgaben auf Anweisung vom Hauptprozessor 12 beschleunigt.
  • Der beispielhafte NOC-Videoadapter 26 und NOC-Coprozessor 28 von 1 enthalten jeweils ein NOC, das Blöcke integrierten Prozessors (IP-Blöcke), Router, Speicher-Datenübertragungs-Steuereinheiten und Netzwerkschnittstellen-Steuereinheiten beinhaltet, auf deren Details nachstehend in Verbindung mit den 2 bis 3 ausführlicher eingegangen wird. Der NOC-Videoadapter und NOC-Coprozessor sind jeweils für Programme optimiert, die eine parallele Verarbeitung verwenden und darüber hinaus einen schnellen wahlfreien Zugriff auf gemeinsam genutzte Speicher erfordern. Der Fachmann wird verstehen, dass die Erfindung angesichts der vorliegenden Offenbarung in Einheiten und Einheitenarchitekturen implementiert werden kann, bei denen es sich nicht um NOC-Einheiten und -Einheitenarchitekturen handelt. Die Erfindung ist daher nicht auf eine Implementierung innerhalb einer NOC-Einheit beschränkt.
  • Der Computer 10 von 1 enthält einen Plattenlaufwerkadapter 38, der über einen Erweiterungsbus 40 und den Busadapter 18 mit dem Prozessor 12 und anderen Komponenten des Computers 10 verbunden ist. Der Plattenlaufwerkadapter 38 verbindet einen nichtflüchtigen Datenspeicher mit dem Computer 10 in Form eines Plattenlaufwerks 24 und kann z. B. unter Verwendung von Adaptern mit integrierter Laufwerkelektronik (IDE, Integrated Drive Electronics), Adaptern mit kleiner Computersystemschnittstelle (SCSI, Small Computer Interface) und anderen implementiert sein, wie für den Fachmann ersichtlich. Der nichtflüchtige Computerspeicher kann auch als optisches Plattenlaufwerk, elektrisch löschbarer programmierbarer Nur-Lese-Speicher (so genannter EEPROM oder Flash-Speicher), RAM-Laufwerken und so weiter implementiert sein, wie für den Fachmann ersichtlich.
  • Der Computer 10 enthält darüber hinaus einen oder mehrere Eingabe/Ausgabe-(E/A-)Adapter 42, die benutzerorientierte Eingaben/Ausgaben implementieren, beispielsweise durch Software-Treiber und Computer-Hardware, um eine Ausgabe an Anzeigeeinheiten wie Computer-Anzeigebildschirme sowie eine Benutzereingabe von Eingabeeinheiten 44 wie Tastatur und Maus zu steuern. Darüber hinaus enthält der Computer 10 einen Datenübertragungsadapter 46 für einen Austausch von Daten mit anderen Computern 48 und für einen Austausch von Daten mit einem Datenübertragungsnetzwerk 50. Solche Datenübertragungen können über RS-232-Verbindungen, über externe Busse wie einen Universal Serial Bus (USB), über Datenübertragungs-Datenübertragungsnetzwerke wie IP-Datenübertragungsnetzwerke und auf andere Weise seriell durchgeführt werden, wie für den Fachmann ersichtlich. Datenübertragungsadapter implementieren die Hardware-Ebene von Datenübertragungen, über die ein Computer Datenübertragungen an einen anderen Computer direkt oder über ein Datenübertragungsnetzwerk sendet. Zu Beispielen für Datenübertragungsadapter, die sich für eine Verwendung im Computer 10 eignen, gehören Modems für eine drahtgebundene Datenübertragung über Wählverbindung, Ethernet-(IEEE-802.3-)Adapter für drahtgebundene Datenübertragungsnetzwerk-Datenübertragungen und 802.11-Adapter für drahtlose Datenübertragungsnetzwerk-Datenübertragungen.
  • Zur weiteren Erläuterung zeigt 2 ein Funktionsschaubild eines beispielhaften NOC 102 gemäß Ausführungsformen der vorliegenden Erfindung. Das NOC in 2 ist als ”Chip” 100 implementiert, d. h. als integrierte Schaltung. Das NOC 102 enthält integrierte Prozessorblöcke (IP-Blöcke) 104, Router 110, Speicher-Datenübertragungs-Steuereinheiten 106 und Netzwerkschnittstellen-Steuereinheiten 108, die in untereinander verbundene Knoten gruppiert sind. Jeder IP-Block 104 ist über eine Speicher-Datenübertragungs-Steuereinheit 106 und eine Netzwerkschnittstellen-Steuereinheit 108 an einen Router 110 angeschlossen. Jede Speicher-Datenübertragungs-Steuereinheit steuert den Austausch von Daten zwischen einem IP-Block und einem Speicher, und jede Netzwerkschnittstellen-Steuereinheit 108 steuert den Austausch von Daten zwischen IP-Blöcken über die Router 110.
  • Beim NOC 102 stellt jeder IP-Block eine wiederverwendbare Einheit mit synchroner oder asynchroner Logikkonstruktion dar, die als Baustein für eine Datenverarbeitung innerhalb des NOC verwendet wird. Der Ausdruck ”IP-Block” wird manchmal auch zu Intellectual-Property-Block (Block geistigen Eigentums) umgedeutet, der einen IP-Block effektiv als Konstruktion bezeichnet, die im Eigentum einer Partei steht, d. h. das geistige Eigentum einer Partei ist, für die andere Benutzer oder Entwickler von Halbleiterschaltungen eine Lizenz erwerben müssen. Im Rahmen der vorliegenden Erfindung ist es jedoch nicht erforderlich, dass IP-Blöcke einem bestimmten Eigentum unterliegen, so dass der Ausdruck in dieser Schrift stets als ”Integrierter Prozessorblock” zu lesen ist. IP-Blöcke, wie hier spezifiziert, sind wiederverwendbare Einheiten mit Logik-, Zell- oder Chip-Layout-Konstruktion, die geistigem Eigentum unterliegen können. IP-Blöcke sind Logikkerne, die als Chipkonstruktionen mit anwendungsspezifischer integrierter Schaltung (ASIC, Application-Specific Integrated Circuit) oder Logikkonstruktionen mit feldprogrammierbarem Gate-Array (FPGA, Field-Programmable Gate Array) gebildet sein können.
  • Ein Weg, IP-Blöcke durch Analogie zu beschreiben, besteht darin, dass IP-Blöcke für die Entwicklung eines NOC das darstellen, was eine Bibliothek für eine Computerprogrammierung oder eine diskrete integrierte Schaltung für die Entwicklung einer gedruckten Schaltung ist. Bei NOCs gemäß Ausführungsformen der vorliegenden Erfindung können IP-Blöcke als generische Gate-Netzliste, als gänzlich spezielle oder universelle Mikroprozessoren oder anderweitig implementiert sein, wie für den Fachmann ersichtlich. Eine Netzliste ist eine Boolesche-Algebra-Darstellung (Gates, Standardzellen) einer logischen Funktion eines IP-Blocks analog zu einer Assembler-Code-Auflistung für eine Programmanwendung hoher Ebene. NOCs können darüber hinaus z. B. in synthetisierbarer Form implementiert werden, in einer Hardware-Beschreibungssprache wie Verilog oder VHDL beschrieben werden. Neben der Netzliste und einer synthetisierbaren Implementierung können NOCs auch in physischen Beschreibungen niedrigerer Ebene bereitgestellt werden. Analoge IP-Blockelemente wie Parallel-Seriell- und Seriell-Parallel-Umsetzer (SERDES, Serializer/Deserializer), Phasenregelkreis (PLL), Digital-Analog-Umsetzer (DAC), Analog-Digital-Umsetzer (ADC) und so weiter können in einem Transistor-Layout-Format wie GSDII verteilt sein. Digitale Elemente von IP-Blöcken werden manchmal auch in einem Layout-Format angeboten. Es ist darüber hinaus klar, dass IP-Blöcke sowie andere Logikschaltkreise, die im Einklang mit der Erfindung implementiert sind, in Form von Computerdatendateien, z. B. eines Logikdefinitions-Programmcodes, verteilt werden können, die die Funktionalität und/oder das Layout der eine solche Logik implementierenden Schaltungsanordnungen auf diversen Detailebenen definieren. Auch wenn die Erfindung vor- und nachstehend im Kontext von Schaltungsanordnungen beschrieben ist, die in voll funktionsfähigen integrierten Schaltkreiseinheiten, Datenverarbeitungssystemen, die solche Einheiten verwenden, und anderen materiellen, physischen Hardware-Schaltungen implementiert sind, wird der Fachmann angesichts der vorliegenden Offenbarung verstehen, dass die Erfindung somit auch innerhalb eines Programmprodukts implementiert sein kann und die Erfindung gleichermaßen zum Tragen kommt, unabhängig vom bestimmten Typ eines computerlesbaren Speichermediums, das zum Verteilen des Programmprodukts verwendet wird. Zu Beispielen für computerlesbare Speichermedien zählen physische Medien vom aufzeichenbaren Typ, z. B. unter anderem flüchtige und nichtflüchtige Speichereinheiten, Disketten, Festplattenlaufwerke, CD-ROMs und DVDs, ohne jedoch darauf beschränkt zu sein.
  • Jeder IP-Block 104 im Beispiel von 2 ist über eine Speicher-Datenübertragungs-Steuereinheit 106 an einem Router 110 angeschlossen. Jede Speicher-Datenübertragungs-Steuereinheit ist eine Gruppierung von synchronen und asynchronen Logikschaltkreisen, die so ausgelegt ist, dass sie einen Austausch von Daten zwischen einem IP-Block und einem Speicher bereitstellt. Zu Beispielen für einen solchen Datenausrausch zwischen IP-Blöcken und Speicher gehören Speicher-Ladeanweisungen und Speicher-Speicherungsanweisungen. Die Speicher-Datenübertragungs-Steuereinheiten 106 sind nachstehend unter Bezugnahme auf 3 ausführlicher beschrieben. Jeder IP-Block 104 ist über eine Netzwerkschnittstellen-Steuereinheit 108, die die Datenübertragung über Router 110 zwischen IP-Blöcken 104 steuert, darüber hinaus an einem Router 110 angeschlossen. Zu Beispielen für eine Datenübertragung zwischen IP-Blöcken gehören Nachrichten, die Daten und Anweisungen für eine Verarbeitung der Daten unter IP-Blöcken in parallelen Anwendungen und in die Pipeline gestellte Anwendungen enthalten. Die Netzwerkschnittstellen-Steuereinheiten 108 sind nachstehend unter Bezugnahme auf 3 ebenfalls ausführlicher beschrieben.
  • Die Router 110 und die entsprechenden Links 118 zwischen diesen implementieren die Netzwerkoperationen des NOC. Bei den Links 118 kann es sich um Paketstrukturen handeln, die auf physischen Parallelleitungs-Bussen implementiert sind, die alle Router verbinden. Das heißt, dass jeder Link auf einem Drahtbus implementiert sein kann, der breit genug ist, dass er gleichzeitig ein gesamtes Datenschaltungspaket aufnehmen kann, das alle Kopfzeileninformationen und Nutzlastdaten enthält. Wenn eine Paketstruktur 64 Bytes enthält, z. B. eine 8-Byte-Kopfzeile und 56 Bytes Nutzlastdaten enthält, ist der Drahtbus, der jeden Link schneidet, 64 Bytes breit mit 512 Drähten. Darüber hinaus kann jeder Link bidirektional sein, so dass der Drahtbus, wenn die Link-Paketstruktur 64 Bytes enthält, tatsächlich 1024 Drähte zwischen jedem Router und jedem von seinen Nachbarn im Netzwerk enthält. Bei einer solchen Implementierung könnte eine Nachricht mehr als ein Paket enthalten, aber jedes Paket würde genau auf die Breite des Drahtbusses passen. Alternativ kann ein Link auf einem Drahtbus implementiert sein, der gerade breit genug ist, um einen Teil eines Pakets aufzunehmen, so dass ein Paket in mehrere Beats untergeteilt wird, so dass z. B. ein 64-Byte-Paket, wenn ein Link mit einer Breite von 16 Byte oder 128 Drähten implementiert ist, in vier Beats untergeteilt werden könnte. Es ist klar, dass unterschiedliche Implementierungen unterschiedliche Busbreiten auf der Grundlage von praktischen physischen Einschränkungen sowie gewünschten Leistungsmerkmalen verwenden können. Wenn die Verbindung zwischen dem Router und jedem Abschnitt des Drahtbusses als Anschluss bezeichnet wird, enthält jeder Router fünf Anschlüsse, einen für jede von vier Richtungen der Datenübertragung im Netzwerk und einen fünften Anschluss zum Anschließen des Routers an einem bestimmten IP-Block über eine Speicher-Datenübertragungs-Steuereinheit und eine Netzwerkschnittstellen-Steuereinheit.
  • Jede Speicher-Datenübertragungs-Steuereinheit 106 steuert den Austausch von Daten zwischen einem IP-Block und einem Speicher. Ein Speicher kann einen Haupt-RAM 112 außerhalb des Chips, einen Speicher 114, der über eine Speicher-Datenübertragungs-Steuereinheit 106 mit einem IP-Block verbunden ist, einen als IP-Block 116 realisierten Speicher auf dem Chip und Zwischenspeicher auf dem Chip beinhalten. Im NOC 102 kann z. B. jeder der Speicher 114, 116 auf dem Chip als Cachespeicher auf dem Chip implementiert sein. All diese Speicherformen können im gleichen Adressraum, unter den gleichen physischen Adressen oder unter den gleichen virtuellen Adressen vorgesehen sein, wobei dies sogar für den direkt an einem IP-Block angebrachten Speicher gilt. Speicheradressierte Nachrichten können daher in Bezug auf IP-Blöcke gänzlich bidirektional sein, da ein solcher Speicher direkt von einem beliebigen IP-Block an einer beliebigen Stelle im Netzwerk adressiert werden kann. Der Speicher 116 auf einem IP-Block kann von diesem IP-Block oder einem anderen beliebigen IP-Block im NOC adressiert werden. Der direkt an einer Speicher-Datenübertragungs-Steuereinheit angebrachte Speicher 114 kann vom IP-Block, der an das Netzwerk angeschlossen ist, durch diese Speicher-Datenübertragungs-Steuereinheit adressiert werden – und kann auch von einem anderen beliebigen IP-Block an einer beliebigen Stelle im NOC adressiert werden.
  • Der NOC 102 enthält zwei Speicherverwaltungseinheiten (MMUs, Memory Management Units) 120, 122, wobei zwei alternative Speicherarchitekturen für NOCs gemäß Ausführungsformen der vorliegenden Erfindung gezeigt sind. Die MMU 120 ist innerhalb eines IP-Blocks implementiert, wodurch ein Prozessor innerhalb des IP-Blocks in einem virtuellen Speicher arbeiten kann und es gleichzeitig möglich ist, dass die gesamte restliche Architektur des NOC in einem physischen Speicheradressraum arbeitet. Die MMU 122 ist außerhalb des Chips implementiert und über einen Datenübertragungsanschluss 124 mit dem NOC verbunden. Der Anschluss 124 enthält die Stifte und andere Zwischenverbindungen, die erforderlich sind, um Signale zwischen dem NOC und der MMU zu leiten, sowie ausreichend Intelligenz, um Nachrichtenpakete aus dem NOC-Paketformat in das für die externe MMU 122 erforderliche Busformat umzuwandeln. Die externe Position der MMU bedeutet, dass alle Prozessoren in allen IP-Blöcken des NOC in einem virtuellen Speicheradressraum arbeiten können, wobei alle Umwandlungen zu physischen Adressen des Speichers außerhalb des Chips von der MMU 122 außerhalb des Chips abgewickelt werden.
  • Neben den beiden Speicherarchitekturen, die durch Verwendung der MMUs 120, 122 gezeigt sind, veranschaulicht ein Datenübertragungsanschluss 126 eine dritte Speicherarchitektur, die in NOCs nützlich ist, die bei Ausführungsformen der vorliegenden Erfindung verwendet werden können. Der Anschluss 126 stellt eine direkte Verbindung zwischen einem IP-Block 104 des NOC 102 und dem Speicher 112 außerhalb des Chips bereit. Ohne MMU im Verarbeitungspfad stellt diese Architektur eine Nutzung eines physischen Adressraums durch alle IP-Blöcke des NOC bereit. Im Rahmen der gemeinsamen bidirektionalen Nutzung des Adressraums können alle IP-Blöcke des NOC durch speicheradressierte Nachrichten, darunter Ladevorgänge und Speichervorgänge, die über den direkt mit dem Port 126 verbundenen IP-Block geleitet werden, auf Speicher im Adressraum zugreifen. Der Anschluss 126 enthält die Stifte und andere Zwischenverbindungen, die erforderlich sind, um Signale zwischen dem NOC und dem Speicher 112 außerhalb des Chips zu leiten, sowie ausreichend Intelligenz, um Nachrichtenpakete aus dem NOC-Paketformat in das für den Speicher 112 außerhalb des Chips erforderliche Busformat umzuwandeln.
  • Beim Beispiel von 2 ist einer der IP-Blöcke aus Host-Schnittstellenprozessor 128 ausgewiesen. Ein Host-Schnittstellenprozessor 128 stellt eine Schnittstelle zwischen dem NOC und einem Host-Computer 10 bereit, in dem der NOC installiert sein kann, und stellt darüber hinaus Datenverarbeitungsdienste für die anderen IP-Blöcke am NOC bereit, darunter z. B. ein Empfangen und Zuteilen von Datenverarbeitungsanfragen vom Host-Computer unter den IP-Blöcken des NOC. Ein NOC kann z. B. einen Videographikadapter 26 oder einen Coprozessor 28 auf einem größeren Computer 10 implementieren, wie oben in Bezug auf 1 beschrieben wurde. Beim Beispiel von 2 ist der Host-Schnittstellenprozessor 128 über einen Datenübertragungsanschluss 130 mit dem größeren Host-Computer verbunden. Der Anschluss 130 enthält die Stifte und andere Zwischenverbindungen, die erforderlich sind, um Signale zwischen dem NOC und dem Host-Computer zu leiten, sowie ausreichend Intelligenz, um Nachrichtenpakete aus dem NOC-Paketformat in das für den Host-Computer 10 erforderliche Busformat umzuwandeln. Beim Beispiel des NOC-Coprozessors von 1 würde ein solcher Anschluss eine Datenübertragungsformat-Umsetzung zwischen der Link-Struktur des NOC-Coprozessors 28 und dem für den Front-Side-Bus 36 zwischen dem NOC-Coprozessor 28 und dem Busadapter 18 erforderlichen Protokoll bereitstellen.
  • 3 zeigt nun ein Funktionsschaubild, das die Komponenten, die innerhalb eines IP-Blocks 104 implementierten Komponenten, eine Speicher-Datenübertragungs-Steuereinheit 106, eine Netzwerkschnittstellen-Steuereinheit 108 und einen Router 110 in einem NOC 102 veranschaulicht, die gesammelt bei 132 dargestellt sind. Der IP-Block 104 enthält einen Computerprozessor 134 und eine E/A-Funktionalität 136. Bei diesem Beispiel ist der Computerspeicher durch ein Segment eines Direktzugriffsspeichers (RAM) 138 im IP-Block 104 dargestellt. Wie oben in Bezug auf 2 beschrieben kann der Speicher Segmente eines physischen Adressraums belegen, dessen Inhalte auf jedem IP-Block von einem beliebigen IP-Block im NOC adressierbar und zugänglich sind. Die Prozessoren 134, die E/A-Funktionen 136 und der Speicher 138 in jedem IP-Block implementieren die IP-Blöcke effektiv als allgemein programmierbare Mikrocomputer. Wie oben erläutert, stellen IP-Blöcke im Rahmen der vorliegenden Erfindung jedoch im Allgemeinen wiederverwendbare Einheiten synchroner oder asynchroner Logik dar, die als Bausteine für die Datenverarbeitung innerhalb eines NOC verwendet werden. Ein Implementieren von IP-Blöcken als allgemein programmierbare Mikrocomputer ist daher zwar eine übliche Ausführungsform, die für Erläuterungszwecke nützlich ist, aber dennoch keine Einschränkung der vorliegenden Erfindung.
  • Im NOC 102 von 3 enthält jede Speicher-Datenübertragungs-Steuereinheit 106 eine Vielzahl von Speicher-Datenübertragungs-Steuereinheit-Modulen 140. Jedes Speicher-Datenübertragungs-Ausführungsmodul 140 kann Speicher-Datenübertragungsanweisungen von einem IP-Block 104 ausführen, darunter ein bidirektionaler Speicher-Datenübertragungs-Anweisungsfluss 141, 142, 144 zwischen dem Netzwerk und dem IP-Block 104. Die von der Speicher-Datenübertragungs-Steuereinheit ausgeführten Speicher-Datenübertragungsanweisungen können nicht nur aus dem IP-Block stammen, der über eine bestimmte Speicher-Datenübertragungs-Steuereinheit an einem Router angeschlossen ist, sondern auch aus einem beliebigen IP-Block 104 an einer beliebigen Stelle im NOC 102. Das heißt, dass ein beliebiger IP-Block im NOC eine Speicher-Datenübertragungsanweisung erzeugen und diese Speicher-Datenübertragungsanweisung über die Router des NOC an eine weitere Speicher-Datenübertragungs-Steuereinheit senden kann, die mit einem weiteren IP-Block verbunden ist, um diese Speicher-Datenübertragungsanweisung auszuführen. Zu solchen Speicher-Datenübertragungsanweisungen können z. B. Translation-Lookaside-Buffer-Steueranweisungen, Cachespeicher-Steueranweisungen, Barriereanweisungen und Speicher-Lade- und Speicher-Speicherungsanweisungen gehören.
  • Jedes Speicher-Datenübertragungs-Ausführungsmodul 140 kann eine gesamte Speicher-Datenübertragungsanweisung separat und parallel mit anderen Speicher-Datenübertragungs-Ausführungsmodulen ausführen. Die Speicher-Datenübertragungs-Ausführungsmodule implementieren einen skalierbaren Speichertransaktionsprozessor, der für einen gleichzeitigen Durchsatz von Speicher-Datenübertragungsanweisungen optimiert ist. Die Speicher-Datenübertragungs-Steuereinheit 106 unterstützt mehrere Speicher-Datenübertragungs-Ausführungsmodule 140, die für ein gleichzeitiges Ausführen mehrerer Speicher-Datenübertragungs-Anweisungen allesamt gleichzeitig laufen. Eine neue Speicher-Datenübertragungs-Anweisung wird von der Speicher-Datenübertragungs-Steuereinheit 106 einem Speicher-Datenübertragungs-Modul 140 zugeordnet, und die Speicher-Datenübertragungs-Ausführungsmodule 140 können mehrere Antwortereignisse gleichzeitig annehmen. Bei diesem Beispiel sind alle Speicher-Datenübertragungs-Ausführungsmodule 140 identisch. Das Skalieren der Anzahl von Speicher-Datenübertragungsanweisungen, die von einer Speicher-Datenübertragungs-Steuereinheit 106 gleichzeitig abgewickelt werden können, ist deshalb durch Skalieren der Anzahl von Speicher-Datenübertragungs-Ausführungsmodulen 140 implementiert.
  • Im NOC 102 von 3 kann jede Netzwerkschnittstellen-Steuereinheit 108 Datenübertragungsanweisungen von einem Befehlsformat in eine Netzwerkpaketform umwandeln, um diese über Router 110 unter die IP-Blöcke verteilt 104 zu übertragen. Die Datenübertragungsanweisungen können vom IP-Block 104 oder von der Speicher-Datenübertragungs-Steuereinheit 106 in einem Befehlsformat formuliert werden und der Netzwerkschnittstellen-Steuereinheit 108 im Befehlsformat bereitgestellt werden. Das Befehlsformat kann ein natives Format sein, das mit den architekturbezogenen Registerdateien des IP-Blocks 104 und der Speicher-Datenübertragungs-Steuereinheit 106 übereinstimmt. Das Netzwerkpaketformat ist für gewöhnlich das Format, das für eine Übertragung durch Router 110 des Netzwerks erforderlich ist. Eine jede solche Nachricht ist aus einem oder mehreren Netzwerkpaketen zusammengesetzt. Zu Beispielen für solche Datenübertragungsanweisungen, die in der Netzwerkschnittstellen-Steuereinheit vom Befehlsformat in Paketformat umgewandelt werden, zählen Speicher-Ladeanweisungen und Speicher-Speicherungsanweisungen zwischen IP-Blöcken und Speicher. Solche Datenübertragungsanweisungen können auch Datenübertragungsanweisungen beinhalten, die Nachrichten unter IP-Blöcken senden und Daten sowie Anweisungen für die Verarbeitung der Daten unter IP-Blöcken in parallelen Anwendungen und in die Pipeline gestellten Anwendungen enthalten.
  • Im NOC 102 von 3 kann jeder IP-Block Datenübertragungen auf der Grundlage der Speicheradresse über die Speicher-Datenübertragungs-Steuereinheit des IP-Blocks an den Speicher und aus diesem und danach auch über seine Netzwerkschnittstellen-Steuereinheit an das Netzwerk senden. Eine Datenübertragung auf der Grundlage der Speicheradresse ist eine Speicherzugriffsanweisung, z. B. eine Ladeanweisung oder eine Speicherungsanweisung, die von einem Speicher-Datenübertragungs-Ausführungsmodul einer Speicher-Datenübertragungs-Steuereinheit eines IP-Blocks ausgeführt wird. Solche Datenübertragungen auf der Grundlage der Speicheradresse stammen für gewöhnlich aus einem IP-Block, der im Befehlsformat formuliert ist, und werden zur Ausführung an eine Speicher-Datenübertragungs-Steuereinheit weitergeleitet.
  • Viele Datenübertragungen auf der Grundlage der Speicheradresse werden mit Nachrichtenverkehr ausgeführt, da sich ein beliebiger Speicher, auf den zugegriffen wird, an einer beliebigen Stelle im physischen Speicheradressraum befinden kann, d. h. auf dem Chip oder außerhalb des Chips, direkt an einer beliebigen Speicher-Datenübertragungs-Steuereinheit im NOC angebracht oder schließlich mit Zugriff durch einen beliebigen IP-Block des NOC – unabhängig davon, welcher IP-Block eine bestimmte Datenübertragung auf der Grundlage der Speicheradresse ursprünglich ausgegeben hat. Somit werden im NOC 102 alle Datenübertragungen auf der Grundlage der Speicheradresse, die mit Nachrichtenverkehr ausgeführt werden, von einer Speicher-Datenübertragungs-Steuereinheit an eine zugeführte Netzwerkschnittstellen-Steuereinheit weitergeleitet, um eine Umwandlung von Befehlsformat zu Paketformat und eine Übertragung durch das Netzwerk in einer Nachricht zu bewirken. Beim Umwandeln in das Paketformat identifiziert die Netzwerkschnittstellen-Steuereinheit darüber hinaus eine Netzwerkadresse für das Paket, abhängig von der einen oder den mehreren Speicheradressen, auf die von einer Datenübertragung auf der Grundlage der Speicheradresse zugegriffen wird. Nachrichten auf der Grundlage der Speicheradresse werden mit Speicheradressen adressiert. Jede Speicheradresse wird von den Netzwerkschnittstellen-Steuereinheiten einer Netzwerkadresse zugewiesen, für gewöhnlich der Netzwerkspeicherort einer Speicher-Datenübertragungs-Steuereinheit, die für einen gewissen Bereich physischer Speicheradressen zuständig ist. Der Netzwerkspeicherort einer Speicher-Datenübertragungs-Steuereinheit 106 ist natürlich auch der Netzwerkspeicherort des Routers 110, der Netzwerkschnittstellen-Steuereinheit 108 und des IP-Blocks 104, die dieser Speicher-Datenübertragungs-Steuereinheit zugehörig sind. Die Anweisungsumwandlungslogik 150 innerhalb jeder Netzwerkschnittstellen-Steuereinheit ist in der Lage, Speicheradressen in Netzwerkadressen umzuwandeln, um Datenübertragungen auf der Grundlage der Speicheradresse über Router eines NOC zu senden.
  • Bei Empfang von Nachrichtverkehr von Routern 110 des Netzwerks prüft jede Netzwerkschnittstellen-Steuereinheit 108 jedes Paket auf Speicheranweisungen. Jedes Paket, das eine Speicheranweisung enthält, wird an die der empfangenden Netzwerkschnittstellen-Steuereinheit zugehörige Speicher-Datenübertragungs-Steuereinheit 106 weitergeleitet, die die Speicheranweisung ausführt, bevor sie die restliche Nutzlast des Pakets für eine weitere Verarbeitung an den IP-Block sendet. Auf diese Weise werden Speicherinhalte stets so vorbereitet, dass sie die Datenverarbeitung durch einen IP-Block unterstützen, bevor der IP-Block mit dem Ausführen von Anweisungen aus einer Nachricht beginnt, die vom bestimmten Speicherinhalt abhängt.
  • Im NOC 102 von 3 kann jeder IP-Block 104 seine Speicher-Datenübertragungs-Steuereinheit 106 umgehen und netzwerkadressierte Datenübertragungen 146 zwischen IP-Blöcken über die Netzwerkschnittstellen-Steuereinheit 108 des IP-Blocks direkt an das Netzwerk senden. Netzwerkadressierte Datenübertragungen sind Nachrichten, die von einer Netzwerkadresse an einen anderen IP-Block geleitet werden. Solche Nachrichten übertragen Arbeitsdaten in in die Pipeline gestellten Anwendungen, mehrere Daten für eine einzelne Programmverarbeitung unter IP-Blöcken in einer Anwendung mit einfachem Befehlsstrom/mehrfachen Datenstrom (SIMD, Single Instruction Stream Multiple Instruction Stream) und so weiter, wie für den Fachmann ersichtlich. Solche Nachrichten unterscheiden sich von Datenübertragungen auf der Grundlage der Speicheradresse dahingehend, dass sie von Beginn an vom Ausgangs-IP-Block netzwerkadressiert werden, der die Netzwerkadresse kennt, an die die Nachricht über die Router des NOC zu leiten ist. Solche netzwerkadressierten Datenübertragungen werden vom IP-Block über E/A-Funktionen 136 in Befehlsformat direkt an die Netzwerkschnittstellen-Steuereinheit des IP-Blocks weitergeleitet, danach von der Netzwerkschnittstellen-Steuereinheit in Paketformat umgewandelt und über Router des NOC an einen anderen IP-Block gesendet. Solche netzwerkadressierten Datenübertragungen 146 sind bidirektional und bewegen sich potenziell zu und von jedem IP-Block des NOC, je nach ihrer Verwendung in einer bestimmten Anwendung. Jede Netzwerkschnittstellen-Steuereinheit kann solche Datenübertragungen jedoch sowohl an einen zugehörigen Router senden als auch von einem zugehörigen Router empfangen, und jede Netzwerkschnittstellen-Steuereinheit kann eine zugehörige Speicher-Datenübertragungs-Steuereinheit 106 umgehen und solche Datenübertragungen direkt an einen zugehörigen IP-Block senden und von diesem direkt empfangen.
  • Jede Netzwerkschnittstellen-Steuereinheit 108 im Beispiel von 3 kann darüber hinaus virtuelle Kanäle im Netzwerk implementieren, die Netzwerkpakete nach Typ charakterisieren. Jede Netzwerkschnittstellen-Steuereinheit 108 enthält eine Implementierungslogik für virtuelle Kanäle 148, die jede Datenübertragungsanweisung nach Typ klassifiziert und den Typ einer Anweisung in einem Feld des Netzwerkpaketformats verzeichnet, bevor sie die Anweisung in Paketform für eine Übertragung am NOC an einen Router 110 weiterleitet. Zu Beispielen für Typen von Datenübertragungsweisungen gehören Nachrichten auf der Grundlage der Netzwerkadresse zwischen IP-Blöcken, Anfragenachrichten, Antworten auf Anfragenachrichten, an Cachespeicher gerichtete Invalidierungsnachrichten; Speicher-Lade- und Speicher-Speicherungsnachrichten; und Antworten auf Speicher-Ladenachrichten usw.
  • Jeder Router 110 im Beispiel von 3 enthält eine Weiterleitungslogik 152, eine Steuerlogik 154 für virtuelle Kanäle und Puffer 156 für virtuelle Kanäle. Die Weiterleitungslogik ist üblicherweise als Netzwerk synchroner und asynchroner Logik implementiert, das einen Datenübertragungs-Protokollstapel für eine Datenübertragung im Netzwerk implementiert, das unter anderen durch die Router 110, die Links 118 und Busdrähte gebildet ist. Die Weiterleitungslogik 152 beinhaltet die Funktionalität, die der Fachmann Netzwerken außerhalb des Chips mit Weiterleitungstabellen zuordnen könnte, wobei Weiterleitungstabellen zumindest bei gewissen Ausführungsformen zu langsam und umständlich für eine Verwendung in einem NOC angesehen werden. Eine als Netzwerk synchroner und asynchroner Logik implementierte Weiterleitungslogik kann so konfiguriert sein, dass sie Weiterleitungsentscheidungen so schnell wie ein einzelner Taktzyklus trifft. In diesem Beispiel leitet die Weiterleitungslogik Pakete durch Auswählen eines Anschlusses für eine Weiterleitung jedes in einem Router empfangenen Pakets weiter. Jedes Paket enthält eine Netzwerkadresse, an die das Paket zu leiten ist.
  • In der obigen Beschreibung von Datenübertragungen auf der Grundlage der Speicheradresse wurde jede Speicheradresse dahingehend beschrieben, dass sie von Netzwerkschnittstellen-Steuereinheiten an eine Netzwerkadresse, einen Netzwerkspeicherort einer Speicher-Datenübertragungs-Steuereinheit, zugewiesen wird. Der Netzwerkspeicherort einer Speicher-Datenübertragungs-Steuereinheit 106 ist natürlich auch der Netzwerkspeicherort des Routers 110, der Netzwerkschnittstellen-Steuereinheit 108 und des IP-Blocks 104, die dieser Speicher-Datenübertragungs-Steuereinheit zugehörig sind. Beim Austausch von Daten zwischen IP-Blöcken oder auf der Grundlage der Netzwerkadresse ist es deshalb darüber hinaus typisch, dass eine Datenverarbeitung auf Anwendungsebene Netzwerkadressen als Speicherort eines IP-Blocks innerhalb des durch die Router, Links und Busdrähte des NOC gebildeten Netzwerks ansieht. 2 zeigt, dass eine Organisation eines solchen Netzwerks ein Netz aus Zeilen und Spalten ist, in dem jede Netzwerkadresse entweder als eindeutige Kennung für jeden Satz von zugehörigem Router, zugehörigem IP-Block, zugehöriger Speicher-Datenübertragungs-Steuereinheit und zugehöriger Netzwerkschnittstellen-Steuereinheit des Netzes oder als x- bzw. y-Koordinaten jedes solchen Satzes im Netz implementiert sein.
  • Im NOC 102 von 3 implementiert jeder Router 110 zwei oder mehr virtuelle Datenübertragungskanäle, wobei jeder virtuelle Datenübertragungskanal durch einen Datenübertragungstyp gekennzeichnet ist. Typen von Datenübertragungsanweisungen und somit Typen von virtuellen Kanälen beinhalten die oben erwähnten: Nachrichten zwischen IP-Blöcken auf der Grundlage der Netzwerkadresse, Anfragennachrichten, Antworten auf Anfragenachrichten, an Cachespeicher gerichtete Invalidierungsnachrichten; Speicher-Lade- und Speicher-Speicherungsnachrichten; und Antworten auf Speicher-Ladenachrichten und so weiter. Um virtuelle Kanäle zu unterstützen, enthält jeder Router 110 im Beispiel von 3 darüber hinaus eine Steuerlogik 152 für virtuelle Kanäle und Puffer 156 für virtuelle Kanäle. Die Steuerlogik 154 für virtuelle Kanäle prüft jedes empfangene Paket auf dessen zugehörigen Datenübertragungstyp und platziert jedes Paket in einem ausgehenden Puffer für virtuelle Kanäle für diesen Datenübertragungstyp, um es über einen Anschluss an einen benachbarten Router am NOC zu übertragen.
  • Jeder Puffer 156 für virtuelle Kanäle hat einen begrenzten Speicherplatz. Wenn viele Pakete innerhalb eines kurzen Zeitraums empfangen werden, kann sich ein Puffer für virtuelle Kanäle anfüllen – so dass keine weiteren Pakete mehr in den Puffer gepackt werden können. Bei anderen Protokollen werden Pakete, die auf einem virtuellen Kanal eingehen, dessen Puffer voll ist, gelöscht. Jeder Kanal 156 für virtuelle Kanäle verfügt in diesem Beispiel jedoch über Steuersignale der Busdrähte, um umliegende Router über die Steuerlogik für virtuelle Kanäle anzuweisen, die Übertragung in einem virtuellen Kanal auszusetzen, d. h., die Übertragung von Paketen eines bestimmten Datenübertragungstyps auszusetzen. Wenn ein virtueller Kanal auf diese Weise ausgesetzt wird, sind alle anderen virtuellen Kanäle davon nicht betroffen – und können mit voller Kapazität weiterarbeiten. Die Steuersignale werden durch jeden Router zurück bis hin zur zugehörigen Netzwerkschnittstellen-Steuereinheit 108 jeden Routers geleitet. Jede Netzwerkschnittstellen-Steuereinheit ist so konfiguriert, dass sie bei Empfang eines solchen Signals die Annahme von Datenübertragungsanweisungen für den ausgesetzten virtuellen Kanal von ihrer zugehörigen Speicher-Datenübertragungs-Steuereinheit 106 oder ihrem zugehörigen IP-Block 104 verweigert. Auf diese Weise betrifft eine Aussetzung eines virtuellen Kanals die Hardware, die den virtuellen Kanal implementiert, zurück bis hin zu den Ausgangs-IP-Blöcken.
  • Ein Effekt beim Aussetzen von Paketübertragungen in einem virtuellen Kanal besteht darin, dass Pakete niemals gelöscht werden. Wenn ein Router in eine Situation gelangt, in der ein Paket in einem unzuverlässigen Protokoll wie dem Internet Protocol gelöscht werden könnte, können die Router im Beispiel von 3 alle Paketübertragungen in einem virtuellen Kanal durch ihre Puffer 156 für virtuelle Kanäle und ihre Steuerlogik 154 für virtuelle Kanäle aussetzen, bis wieder Pufferspeicher verfügbar ist, wodurch die Notwendigkeit des Löschens von Paketen umgangen wird. Der NOC von 3 kann aus diesem Grund äußerst zuverlässige Netzwerkdatenübertragungsprotokolle mit einer äußerst dünnen Hardware-Schicht implementieren.
  • Der beispielhafte NOC von 3 kann auch so konfiguriert sein, dass er eine Cachespeicherkohärenz zwischen Cachespeichern eines Speichers auf dem Chip und eines Speichers außerhalb des Chips aufrechterhält. Jeder NOC kann mehrere Cachespeicher unterstützen, wobei jeder davon mit dem gleichen zugrunde liegenden Speicheradressraum arbeitet. Beispielsweise können Zwischenspeicher durch IP-Blöcke, durch Speicher-Datenübertragungs-Steuereinheiten oder durch Cachespeicher-Steuereinheiten außerhalb des NOC gesteuert werden. Jeder Speicher 114, 116 auf dem Chip im Beispiel von 2 kann auch als Cachespeicher auf dem Chip implementiert werden, und der Cachespeicher kann innerhalb des Umfangs der Erfindung auch außerhalb des Chips implementiert werden.
  • Jeder in 3 gezeigte Router 110 enthält fünf Anschlüsse, vier Anschlüsse 158A bis 158D, die über die Busdrähte 118 mit anderen Routern verbunden sind, und einen fünften Anschluss 160, der jeden Router über eine Netzwerkschnittstellen-Steuereinheit 108 und eine Speicher-Datenübertragungs-Steuereinheit 106 mit dessen zugehörigen IP-Block 104 verbindet. Wie aus den Veranschaulichungen der 2 und 3 ersichtlich, bilden die Router 110 und die Links 118 des NOC 102 ein Netz mit vertikalen und horizontalen Links, die vertikale und horizontale Anschlüsse in jedem Router verbinden. In der Veranschaulichung von 3 beispielsweise sind die Anschlüsse 158A, 158C und 160 als vertikale Anschlüsse bezeichnet und die Anschlüsse 158B und 158D als horizontale Anschlüsse.
  • 4 zeigt nun eine beispielhafte Implementierung eines IP-Blocks 104 im Einklang mit der Erfindung auf andere Weise, der als Verarbeitungselement implementiert ist, das in eine Ausgabe- oder Anweisungseinheit (IU, Issue/Instruction Unit) 162, eine Ausführungseinheit (XU, Execution Unit) 164 und eine Hilfsausführungseinheit (AXU, Auxiliary Execution Unit) 166 untergliedert ist. Bei der gezeigten Implementierung enthält die IU 162 eine Vielzahl von Anweisungspuffer 168, die Anweisungen von einem L1-Anweisungscachespeicher (iCACHE, Instruction Cache) 170 empfangen. Jeder Anweisungspuffer 168 ist einem einer Vielzahl – z. B. vier – von Hardware-Threads mit symmetrischen Multithreads (SMT) zugeordnet. Eine Effective-To-Real-Translation-Unit (iERAT) 172 ist mit dem iCACHE 170 verbunden und wird verwendet, um Anweisungsabrufanfragen von einer Vielzahl von Thread-Abruffolgesteuerungen 174 in reale Adressen umzusetzen, so dass Anweisungen aus einem Speicher niedrigerer Ordnung abgerufen werden. Jede Thread-Abruffolgesteuerung 174 ist einem bestimmten Hardware-Thread zugeordnet und wird verwendet, um sicherzustellen, dass von dem zugehörigen Thread auszuführende Anweisungen in den iCACHE abgerufen werden, so dass diese der entsprechenden Ausführungseinheit zugeteilt werden. Wie auch in 4 gezeigt, können in den Anweisungspuffer 168 abgerufene Anweisungen durch eine Sprungvorhersagelogik 176 überwacht werden, die jede Thread-Abruffolgesteuerung 174 mit Hinweisen versorgt, so dass Anweisungscachespeicher-Fehltreffer minimiert werden, die aus Sprüngen in ausführenden Threads resultieren.
  • Die IU 162 enthält darüber hinaus einen Abhängigkeits/Ausgabe-Logikblock 178, der jedem Hardware-Thread zugeordnet und so konfiguriert ist, dass er Abhängigkeiten auflöst und die Ausgabe von Anweisungen aus dem Anweisungspuffer 168 an die XU 164 steuert. Bei der gezeigten Ausführungsform ist darüber hinaus eine separate Abhängigkeits/Ausgabe-Logik 180 in der AXU 166 bereitgestellt, wodurch möglich wird, dass unterschiedliche Threads gleichzeitig separate Anweisungen an die XU 164 und die AXU 166 ausgeben. Bei einer alternativen Ausführungsform kann die Logik 180 in der IU 162 angeordnet oder überhaupt weggelassen werden, so dass die Logik 178 Anweisungen an die AXU 166 ausgibt.
  • Die XU 164 ist als Festkomma-Ausführungseinheit implementiert, die einen Satz von Mehrzweckregistern (GPRs, General Purpose Registers) 182 enthält, die mit einer Festkommalogik 184, einer Sprunglogik 186 und einer Lade/Speicherungs-Logik 188 verbunden sind. Die Lade/Speicherungs-Logik 188 ist mit einem L1-Datencachespeicher (dCACHE) 190 verbunden, wobei eine Effective-To-Real-Translation von einer dERAT-Logik 192 bereitgestellt wird. Die XU 164 kann so konfiguriert sein, dass sie praktisch jeden Anweisungssatz implementiert, z. B. 32-Bit- oder 64-Bit-PowerPC-Anweisungssatz in seiner Gesamtheit oder einen Teil davon.
  • Die AXU 166 arbeitet als Hilfsausführungseinheit, die neben einem oder mehreren Ausführungsblöcken 194 eine zugeordnete Abhängigkeits/Ausgabe-Logik 180 enthält. Die AXU 166 kann eine beliebige Anzahl an Ausführungsblöcken enthalten und kann praktisch jeden beliebigen Typ einer Ausführungseinheit implementieren, z. B. eine Gleitkommaeinheit oder spezifischere Ausführungseinheiten wie Verschlüsselungs/Entschlüsselungs-Einheiten, Coprozessoren, Vektorverarbeitungseinheiten, Graphikverarbeitungseinheiten, XML-Verarbeitungseinheiten usw. Bei der gezeigten Ausführungsform enthält die AXU 166 eine Hochgeschwindigkeits-Hilfsschnittstelle zur XU 164, beispielsweise um direkte Bewegungen zwischen einem Status mit AXU-Architektur und einem Status mit XU-Architektur zu unterstützen.
  • Die Datenübertragung mit dem IP-Block 104 kann wie oben in Verbindung mit 2 besprochen über eine Netzwerkschnittstellen-Steuereinheit 108 verwaltet werden, die mit dem NOC 102 verbunden ist. Es kann eine Datenübertragung auf der Grundlage von Adressen, beispielsweise um auf einen L2-Cachespeicher zuzugreifen, bereitgestellt werden, wie auch eine Datenübertragung auf der Grundlage von Nachrichten. Beispielsweise kann jeder IP-Block 104 einen zugeordneten Eingang und/oder Ausgang enthalten, um Datenübertragungen zwischen Knoten zwischen IP-Blöcken zu abzuwickeln.
  • Ausführungsformen der vorliegenden Erfindung können innerhalb der oben in Verbindung mit den 1 bis 4 beschriebenen Hardware- und Software-Umgebung implementiert werden. Der Fachmann wird angesichts der vorliegenden Offenbarung jedoch verstehen, dass die Erfindung in einer Vielzahl unterschiedlicher Umgebungen implementiert werden kann und weitere Änderungen an der oben genannten Hardware- und Software-Ausführungsform vorgenommen werden können, ohne sich um Umfang der Erfindung zu entfernen. Demzufolge ist die Erfindung nicht auf die bestimmte, hier offenbarte Hardware- und Software-Umgebung beschränkt.
  • Der Schutz von unverschlüsselten sicheren Daten vor einem Zugriff außerhalb eines sicheren Thread ist bei vielen Datenverarbeitungsanwendungen von größter Wichtigkeit. Im Allgemeinen werden diese Daten nur außerhalb eines Chips sicher gespeichert, da SOCs auf Hunderte von Prozessoren auf einem Chip heranwachsen, ist es zunehmend wichtiger, unverschlüsselte Daten sogar vor anderen Prozessen auf dem gleichen Chip zu schützen. Für gewöhnlich werden gewisse für eine Verschlüsselung identifizierte Adressbereiche gefiltert und verschlüsselt/entschlüsselt, wenn die Daten an eine Speichersteuereinheit oder von dieser weitergeleitet werden. Dies kann jedoch dazu führen, dass unverschlüsselte Daten in Cachespeichern vorhanden und für andere Threads zugänglich sind.
  • Verschlüsselungsbezogene Ausführungsformen im Einklang mit der Erfindung ermöglichen andererseits den Schutz von Speicherseiten nur auf berechtigte Threads, indem ein oder mehrere verschlüsselungsbezogene Seitenattribute zu den Speicheradressumsetzungs-Datenstrukturen hinzugefügt werden, die verwendet werden, um eine Speicheradressumsetzung zwischen virtuellen und realen Speicheradressen durchzuführen. Bei einer Ausführungsform beispielsweise können ein oder mehrere verschlüsselungsbezogene Seitenattribute zu Seitentabelleneinträgen (PTEs, Page Table Entries) eines Effective-To-Real-Translation-(ERAT-)Tabelle eines Verarbeitungskerns hinzugefügt werden, so dass nur gesicherten Threads, die gemäß PTE für eine Seite eine Berechtigung für einen Zugriff auf diese Speicherseite besitzen, der Zugriff auf die Seite gewährt wird. Wenn ein anderer Thread versucht, auf diese Seite zuzugreifen, wird eine Sicherheitsunterbrechung von einem Hypervisor oder einer anderen Software mit Supervisor-Ebene erhoben und entsprechend abgewickelt. Außerdem wird das Seitenattribut darüber hinaus verwendet, um die Hardware-Verschlüsselung/Entschlüsselung durch Identifizieren der an ein Verschlüsselungsmodul zu sendenden Speicherzugriffe zu vereinfachen. Dieses Seitenattribut beispielsweise kann als Reaktion auf einen L1-Cachespeicherfehler als Hinweis darauf, dass die neu geladenen Daten bei Lade- oder Speichervorgängen durch das Verschlüsselungsmodul gestreamt werden müssen, an einen L2-Cachespeicher oder einen Speicher niedrigerer Ebene gesendet werden, um die Daten entsprechend zu entschlüsseln/verschlüsseln.
  • Durch Integrieren eines verschlüsselungsbezogenen Seitenattributs in die Speicheradressumsetzungs-Funktionalität eines Prozessors wird die Sicherheit von sicheren Daten in einem gesamten Datenverarbeitungssystem bei gleichzeitig verringerter Auswirkung auf die Leistung verbessert, insbesondere in einem SOC mit vielen SMT-Verarbeitungskernen. Darüber hinaus sind PTEs in vielen Fällen nicht an bestimmte Prozesskennungen gebunden, so dass unterschiedlichen Prozessen bei einigen Ausführungsformen der Erfindung der Zugriff auf die gleichen verschlüsselten Daten gewährt werden kann.
  • In Bezug auf Daten, die in einem Datenverarbeitungssystem komprimiert werden, steuern herkömmlichen Datenverarbeitungssysteme komprimierte Speicherbereiche gleichermaßen unter Verwendung einer Anzahl von Registern, um Speicherbereiche zu konfigurieren, die häufig zusätzliche Hardware und eine komplexe Software-Konfiguration erfordern – beides kann sich negativ auf die Systemleistung auswirken.
  • Komprimierungsbezogene Ausführungsformen im Einklang mit der Erfindung fügen andererseits ein oder mehrere komprimierungsbezogene Seitenattribute zu den Speicheradressumsetzungs-Datenstrukturen hinzu, die verwendet werden, um eine Speicheradressumsetzung zwischen virtuellen und realen Speicheradressen durchzuführen, so dass der Komprimierungs-/Dekomprimierungsprozess vereinfacht und die Latenz in Zusammenhang mit dem Zugriff auf komprimierte Daten verringert wird. Bei einer Ausführungsform beispielsweise können ein oder mehrere komprimierungsbezogene Seitenattribute zu den Seitentabelleneinträgen (PTEs) einer Effective-To-Real-Translation-(ERAT-)Tabelle eines Verarbeitungskern hinzugefügt werden, so dass bei Einleitung eines PTE für eine Speicherseite, die komprimierte Daten enthält, ein entsprechendes komprimierungsbezogenes Seitenattribut an das Speicheruntersystem weitergeleitet werden kann, wenn ein Ladevorgang ausgeführt wird, so dass die Daten aus dem Speicher oder dem Cachespeicher höherer Ebene direkt durch ein zu entschlüsselnde Hardware-Komprimierungsmodul streamen. Dasselbe gilt umgekehrt: Speicherungsdaten streamen durch das Komprimierungsmodul, bevor sie an die erste Ebene eines komprimierten Speichers gesendet werden. Dadurch wird der Verwaltungsprozess für komprimierte Daten vereinfacht und werden die Menge der unterstützenden Hardware und die Höhe des Leistungsaufwands in Zusammenhang mit dem Verwalten der komprimierten Daten verringert.
  • Darüber hinaus können Seitenattribute bei einigen Ausführungsformen im Einklang mit der Erfindung Ebenenattribute enthalten, die verwendet werden können, um selektiv zu verschlüsselnde und/oder komprimierende Seiten in diversen Ebenen eines Speichersystems, z. B. in einem Hauptspeicher oder in Zwischenspeichern höherer Ebene wie L1-, L2- oder L3-Cachespeichern, zu konfigurieren. Somit können einige Seiten beispielsweise in L2- oder L3-Cachespeichern verschlüsselt/komprimiert werden, während andere Seiten im Speicher verschlüsselt/entschlüsselt, in L2- oder L3-Cachespeichern hingegen entschlüsselt/dekomprimiert werden können. Dadurch wird eine größere Flexibilität bereitgestellt und kann die Leistung erhöht werden, insbesondere wenn das Beschleunigen der Speicherzugriffsleistung für häufig zugegriffene Daten erwünscht ist, die in höheren Ebenen eines Speichersystems gespeichert werden. Neben anderen Vorteilen kann das Komprimieren, wie es hier implementiert ist, die Größe eines Cachespeichers erhöhen, ohne dass ein entsprechendes Erhöhen der Speicherbandbreite erforderlich ist.
  • 5 beispielsweise zeigt ein beispielhaftes Datenverarbeitungssystem 200, das sich für das Implementieren einer Daten-Verschlüsselung/Dekomprimierung auf der Grundlage einer Speicheradressumsetzung im Einklang mit der Erfindung eignet. Das System 200 ist mit einem Speicherbus 202 gezeigt, der eine Vielzahl von Verarbeitungskernen 204 gemeinsam mit einer Speicherverwaltungseinheit (MMU) 206 verbindet. Auch wenn in 5 nur zwei Verarbeitungskerne 204 gezeigt sind, ist klar, dass bei verschiedenen Ausführungsformen der Erfindung eine beliebige Anzahl von Verarbeitungskernen verwendet werden kann.
  • Jeder Verarbeitungskern 204 ist ein SMT-Kern, der eine Vielzahl (N) von Hardware-Threads 208 sowie eine Effective-To-Real-Translation-(ERAT-)Tabelle 210 und einen integrierten L1-Cachespeicher 212 enthält. Die ERAT-Tabelle 210 dient, wie es auf dem technischen Gebiet bekannt ist, als Cachespeicher für Speicheradressumsetzungs-Daten, z. B. PTEs, und ist für gewöhnlich mit einer Datenstruktur niedrigerer Ebene verbunden, z. B. einem Translation Lookaside Buffer (TLB) 214, der in der MMU 226 angeordnet oder anderweitig für diese zugänglich ist. Der TLB 214 kann auch als Cachespeicher für eine größere Seitentabelle dienen, die für gewöhnlich in einem Speicher 216 gespeichert wird.
  • Das Speichersystem kann mehrere Ebenen von Speichern und Cachespeichern enthalten, und demzufolge ist das Datenverarbeitungssystem 200 mit einem L2-Cachespeicher 218 gezeigt, der mit der MMU 206 verbunden und von Verarbeitungskernen 204 gemeinsam genutzt wird. Es ist jedoch klar, dass bei anderen Ausführungsformen der Erfindung diverse alternative Speicherarchitekturen verwendet werden können. Beispielsweise können zusätzliche Cachespeicherebenen, z. B. L3-Cachespeicher, verwendet werden, und der Speicher 216 kann bei einigen Ausführungsformen untergliedert sein, z. B. bei Datenverarbeitungssystemen auf der Grundlage von nichteinheitlichem Speicherzugriff (NUMA, Non-Uniform Memory Access). Außerdem können zusätzliche Cachespeicherebenen bestimmten Verarbeitungskernen zugeordnet werden, so dass z. B. jeder Verarbeitungskern einen zugeordneten L2-Cachespeicher enthält, der in den Verarbeitungskern integriert oder zwischen den Verarbeitungskern und dem Speicherbus geschaltet sein kann. Bei einigen Ausführungsformen kann ein L2- oder L3-Cachespeicher direkt mit dem Speicherbus und nicht über eine zugeordnete Schnittstelle mit einer MMU verbunden sein.
  • Darüber hinaus ist klar dass die in 5 gezeigten Komponenten auf der gleichen integrierten Schaltungseinheit oder auf dem gleichen Chip integriert oder in mehreren solcher Chips angeordnet sein können. Bei einer Ausführungsform beispielsweise ist jeder Verarbeitungskern als ein IP-Block in einer NOC-Anordnung implementiert, und der Bus 202, die MMU 206 und der L2-Cachespeicher 218 sind auf dem gleichen Chip wie die Verarbeitungskerne in einer SOC-Anordnung integriert. Bei weiteren Ausführungsformen können der Bus 202, die MMU 206, der L2-Cachespeicher 218 und/oder der Speicher 216 jeweils auf dem gleichen Chip oder auf anderen Chips wie die Verarbeitungskerne integriert sein, und in manchen Fällen können Verarbeitungskerne auf separaten Chips angeordnet sein.
  • Angesichts der großen Vielfalt bekannter Prozessor- und Speicherarchitekturen, bei denen die Erfindung verwendet werden kann, ist es demzufolge klar dass die Erfindung nicht auf die bestimmte, hier gezeigte Speicherarchitektur beschränkt ist.
  • Um eine Daten-Verschlüsselung/Komprimierung auf der Grundlage einer Speicheradressumsetzung im Einklang mit der Erfindung zu implementieren, enthält das Datenverarbeitungssystem 200 ein Verschlüsselungsmodul 220 und ein Komprimierungsmodul 222, die mit dem Bus 202 verbunden und somit für ein Verschlüsseln/Entschlüsseln und Komprimieren/Dekomprimieren von über den Bus 202 übertragenen Daten zugänglich sind. Auch wenn die Module 220 und 222 als Verschlüsselungs- bzw. Komprimierungsmodule bezeichnet werden, ist klar, dass das Modul 220 für gewöhnlich sowohl eine Verschlüsselungs- als auch eine Entschlüsselungslogik enthält, und dass das Modul 222 für gewöhnlich sowohl eine Komprimierungs- als auch Dekomprimierungslogik enthält, unabhängig von den hier verwendeten Bezeichnungen dafür. Es ist klar, dass die Ver- und Entschlüsselungslogik bei einigen Ausführungsformen in separaten ”Modulen” angeordnet sein kann, wie dies auch bei der Komprimierungs- und Dekomprimierungslogik der Fall sein kann. Für die Zwecke der Erfindung kann ein Verschlüsselungsmodul jedoch als eine beliebige Sammlung von Hardware-Logik angesehen werden, die in der Lage ist, eine Verschlüsselung und/oder Entschlüsselung von Daten durchzuführen, und ein Komprimierungsmodul kann als eine beliebige Sammlung von Hardware-Logik angesehen werden, die in der Lage ist, ein Komprimieren und/oder Dekomprimieren von Daten durchzuführen.
  • Um die Erörterung der Erfindung zu erleichtern, ist das Datenverarbeitungssystem 200 als sowohl eine Verschlüsselungs- als auch Komprimierungsfunktionalität enthaltend beschrieben. Bei vielen Ausführungsformen kann es jedoch wünschenswert sein, nur eine Verschlüsselungs- oder nur eine Komprimierungsfunktionalität zu unterstützen, und demzufolge müssen Ausführungsformen im Einklang mit der Erfindung nicht unbedingt sowohl eine Datenverschlüsselung als auch eine Datenkomprimierung unterstützen. Somit können die Module 220, 222 bei einigen Ausführungsformen jeweils weggelassen werden, und die Seitenattribute, die verwendet werden, um anzuzeigen, ob eine Speicherseite verschlüsselt oder komprimiert ist, können bei einigen Ausführungsformen ggf. nur verschlüsselungsbezogene Attribute oder komprimierungsbezogene Attribute enthalten. Auch wenn die Module 220, 222 als an einem Bus 202 angebracht gezeigt sind, können ein oder beide der Module 220, 222 mit der MMU 206 verbunden oder in diese integriert sein.
  • Wie oben angemerkt, kann eine Daten-Verschlüsselung/Komprimierung auf der Grundlage einer Speicheradressumsetzung durch Hinzufügen eines oder mehrerer Seitenattribute zu einer Speicheradressumsetzungs-Datenstruktur, z. B. einem Seitentabelleneintrag (PTE), implementiert werden. 6 beispielsweise zeigt einen beispielhaften PTE 230, der in einer ERAT 210 gehalten und dahingehend erweitert werden kann, dass er diverse Seitenattribute 232 bis 238 enthält, um eine Daten-Verschlüsselung/Komprimierung auf der Grundlage einer Speicheradressumsetzung zu unterstützen. Für eine Verschlüsselung kann ein verschlüsseltes Attribut 232, z. B. eine 1-Bit-Markierung, verwendet werden, um anzuzeigen, ob die Daten auf der Seite verschlüsselt sind. Für ein Komprimieren kann gleichermaßen ein komprimiertes Attribut 234, z. B. eine 1-Bit-Markierung, verwendet werden, um anzuzeigen, ob die Daten auf der Seite komprimiert sind.
  • Außerdem kann es bei einigen Ausführungsformen wünschenswert sein, optional eine Ebene festzulegen, auf der die Daten auf einer Seite verschlüsselt und/oder komprimiert sind, so dass die Daten auf einer beliebigen höheren Ebene in der Speicherarchitektur (oder optional auf der festgelegten Ebene) entschlüsselt/dekomprimiert werden und die Daten auf der festgelegten Ebene und beliebigen niedrigeren Ebenen in der Speicherarchitektur verschlüsselt/komprimiert werden. Beispielsweise kann ein 2-Bit-Ebenenattribut, z. B. ein Ebenenattribut 236 für ein Verschlüsseln und ein Ebenenattribut 238 für ein Komprimieren, bereitgestellt werden, um bis zu vier Speicherebenen zu codieren, z. B. L1 = 100, L2 = 01, L3 = 10 und Speicher = 11. Alternativ kann jeder Speicherebene eine separate 1-Bit-Markierung zugehörig sein. Darüber hinaus können die verschlüsselten und/oder komprimierten Attribute 232, 234 bei einigen Ausführungsformen mit den zugehörigen Ebenenattributen verschmolzen sein. Wenn beispielsweise kein L3-Cachespeicher unterstützt wird, kann einer der vier Zustände, die in einem 2-Bit-Ebenenattribut codiert sind (z. B. 00) bedeuten, dass die Seite unverschlüsselt oder nichtkomprimiert ist.
  • Der PTE 230 speichert darüber hinaus weitere Daten, ähnlich herkömmlichen PTEs. Beispielsweise können weitere Seitenattribute 240 wie Attribute, die anzeigen, ob eine Seite zwischenspeicherbar, geschützt oder nur lesbar ist, ob eine Speicherkohärenz oder ein Durchschreiben erforderlich ist, ein Endian-Modusbit usw., in einem PTE enthalten sein, wie auch ein oder mehrere Bits, die Benutzermodusdaten 242 zugeordnet sein können, z. B. für eine Software-Kohärenz oder eine Steuerung der Cachespeicher-Sperroptionen. Ein Zugriffssteuerungs-Seitenattribut 244 wird bereitgestellt, um zu steuern, welchen Prozessen Zugriff auf eine Speicherseite gewährt wird, z. B. durch Festlegen einer Prozesskennung (PID, Process Identifier), die dem Prozess zugehörig ist, der für einen Zugriff auf die Seite berechtigt ist, oder optional eine Kombination aus Übereinstimmungs- und/oder Maskendaten oder anderen Daten, die sich für das Festlegen eines Satzes von Prozessen eignen, die für einen Zugriff auf eine Speicherseite berechtigt sind. Beispielsweise kann das Zugriffssteuerungsattribut ein oder mehrere LSBs (Least Significant Bits, Niederwertigste Bits) vor einer PID maskieren, so dass jeder PID, die mit den MSBs (Most Significant Bits, Höchstwertige Bits) im Speicherzugriffsattribut übereinstimmt, Zugriff auf die entsprechende Speicherseite gewährt wird. Ein ERAT-Seitenattribut 246 speichert die Daten der Effective-To-Real-Translation für den PTE, die für gewöhnlich die reale Adresse, die der effektiven/virtuellen Adresse entspricht, die für einen Zugriff auf den PTE verwendet wird, sowie die effektive/virtuelle Adresse enthalten, die auch zum Indexieren der ERAT über eine Funktion einer computergestützten Fertigung (CAM, Computer-aided Manufacturing) verwendet werden.
  • Es ist klar, dass das Format des PTE 230 auch im TLB 214 und einer beliebigen anderen Seitentabelle verwendet werden kann, die sich in der Speicherarchitektur befindet. Alternativ können die auf unterschiedlichen Ebenen der Speicherarchitektur gespeicherten PTEs weitere Daten enthalten oder einige Daten auf der Grundlage der Bedürfnisse dieser bestimmten Ebene der Speicherarchitektur weglassen. Außerdem ist klar, dass, auch wenn bei hier erörterten Ausführungsformen die Ausdrücke ERAT und TLB verwendet werden, um diverse Hardware-Logiken zu beschreiben, die Speicheradressumsetzungs-Informationen in einem Prozessor oder Verarbeitungskern speichern oder zwischenspeichern, eine solche Hardware-Logik auch anders bezeichnet werden kann, so dass die Erfindung nicht auf die Verwendung mit ERATs und TLBs beschränkt ist. Darüber hinaus können andere PTE-Formate verwendet werden, und daher ist die Erfindung nicht auf das bestimmte in 6 gezeigte PTE-Format beschränkt.
  • Werden verschlüsselungsbezogene und komprimierungsbezogene Attribute in einem PTE gespeichert, ist das Ermitteln, ob eine Seite verschlüsselt und/oder komprimiert ist, und das Ermitteln der tatsächlichen Entschlüsselung und Dekomprimierung solcher Daten nicht auf diese Prozesse und im Namen dieser ausgeführte Hardware-Threads beschränkt, die durch die Funktionalität im Datenverarbeitungssystem berechtigt sind, das ansonsten den Zugriff auf die Seiten selbst steuert. Eine Zugriffskontrolle auf der Grundlage von Seiten, die für gewöhnlich verwendet wird, um zu verhindern, dass in einem Datenverarbeitungssystem ausgeführte Prozesse auf den Speicher anderer Prozesse in dem Datenverarbeitungssystem zugreifen oder diesen manipulieren, kann deshalb dahingehend erweitert werden, dass sie das Verwalten von verschlüsselten und/oder komprimierten, darin gespeicherten Daten unterstützt.
  • Wie auf dem Gebiet hinlänglich bekannt, wird ein Hypervisor oder eine andere Software mit Supervisor-Ebene, die z. B. in Firmware, einem Kernel, einer Partitionsverwaltungseinheit oder einem Betriebssystem ausgeführt wird, für gewöhnlich verwendet, um Speicherseiten bestimmten Prozessen zuzuordnen und auf Zugriffsverletzungen zu reagieren, die auftreten könnten, wenn ein Prozess versucht, auf eine Speicherseite zuzugreifen, für die er keine Zugriffsberechtigung besitzt. Eine solche Software mit Supervisor-Ebene kann z. B. eine gesamte Seitentabelle für das Datenverarbeitungssystem verwalten, wobei zugeordnete Hardware im Datenverarbeitungssystem verwendet wird, um PTEs aus einer Seitentabelle im TLB 214 und den ERATs 210 zwischenzuspeichern. Ausführungsformen im Einklang mit der Erfindung sind daher in der Lage, die bestehenden Zugriffssteuerungen mit Supervisor-Ebene zu nutzen, um den Zugriff auf verschlüsselte und/oder komprimierte Daten einzuschränken. In vielen Fällen beispielsweise ist ein Prozess ggf. nicht einmal in der Lage, zu ermitteln, ob eine Speicherseite verschlüsselt oder komprimiert ist, da der Zugriff auf den PTE durch die Software mit Supervisor-Ebene eingeschränkt wird. Wenn beispielsweise kein auf einem Verarbeitungskern ausgeführter Prozess für einen Zugriff auf eine Speicherseite berechtigt ist, die einem Prozess auf einem anderen Verarbeitungskern zugeordnet wurde, wird somit einem Prozess in ersterem Verarbeitungskern nicht einmal das Abrufen von Daten aus dieser Speicherseite gewährt, nicht einmal in verschlüsselter oder komprimierter Form.
  • 7 beispielsweise zeigt ein beispielhaftes Datenverarbeitungssystem 250 und insbesondere einen darin angeordneten beispielhaften Verarbeitungskern, um einen beispielhaften Speicherzugriff zu veranschaulichen, der eine Daten-Verschlüsselung/Komprimierung auf der Grundlage einer Speicheradressumsetzung im Einklang mit der Erfindung verwendet. Eine Adresserzeugungslogik 252, wie sie z. B. in einer Lade/Speicherungs-Einheit eines Verarbeitungskerns bereitgestellt wird, kann eine Speicherzugriffsanfrage für einen Zugriff auf Daten (z. B. eine Cachespeicherzeile) aus einer bestimmten Speicherseite erzeugen, z. B. als Reaktion auf eine Anweisung, die von einem im Verarbeitungskern ausgeführten Hardware-Thread (nicht gezeigt) ausgeführt wird. Die Speicherzugriffsanfrage wird sowohl an eine ERAT 253 als auch an einen L1-Cachespeicher 254 parallel ausgegeben, wobei Erstere eine Adressumsetzungsoperation durchführt und ermittelt, ob die Speicherzugriffsanfrage für die PID berechtigt ist, die dem anfragenden Hardware-Thread zugehörig ist, und wobei Letzterer ermittelt, ob die von der Speicherzugriffsanfrage festgelegte Cachespeicherzeile derzeit im L1-Cachespeicher zwischengespeichert ist. Bei der in 7 gezeigten Ausführungsform ist die ERAT 253 als ”dERAT” bezeichnet und der L1-Cachespeicher 254 als ”dCache”, um anzuzeigen, dass diese Komponenten Datenzugriffen zugeordnet sind und dass die entsprechenden iERAT- und iCache-Komponenten bereitgestellt werden können, um Anweisungszugriffe (nicht gezeigt) zu handeln.
  • Die ERAT 253 greift als Reaktion auf die Speicherzugriffsanfrage auf einen PTE 256 für die von der Speicherzugriffsanfrage festgelegte Speicherseite zu. Eine Hypervisor-Schutzausnahmen-Abwicklungs-Logik 258 vergleicht eine PID für die Speicherzugriffsanfrage mit den Zugriffssteuerungs-Bits im PTE, und wenn eine Zugriffsverletzung auftritt, weil die PID nicht für einen Zugriff auf diese Speicherseite berechtigt ist, signalisiert die Logik 258 eine Unterbrechung, indem sie bei der Software mit Supervisor-Ebene eine Software-Ausnahme auslöst, wie bei 260 veranschaulicht. Für den Fall, dass eine Speicherzugriffsanfrage berechtigt ist, aber ein L1-Cachespeicher-Fehltreffer auftritt, wird die Speicherzugriffsanfrage in eine Lade/Fehltreffer-Warteschlange 262 weitergeleitet, die die Anfrage an einen Speicher niedrigerer Ebene ausgibt, z. B. einen L2-Cachespeicher 264.
  • 8 zeigte eine Abfolge von Operationen 270 ausführlicher, die als Reaktion auf eine Speicherzugriffsanfrage durchgeführt werden kann, die von einem Hardware-Thread im Namen eines Prozesses im Datenverarbeitungssystem 250 ausgegeben wurde. Eine Schutzlogik, z. B. die Abwicklungs-Logik 258, greift auf die ERAT 253 zu, um zu ermitteln, ob der PTE 256 anzeigt, dass der anfragende Thread die Berechtigung für einen Zugriff auf die der Speicherzugriffsanfrage zugehörige Seite besitzt (Block 272). Wenn er berechtigt ist (Block 274), wird ermittelt, ob die Anfrage von L1-Cachespeicher 254 erfüllt werden kann (Block 276). Wenn die Speicherzugriffsanfrage keinen Fehltreffer im L1-Cachespeicher 254 ergibt, wird die Anfrage vom L1-Cachespeicher 254 erfüllt (Block 278) und die Abwicklung der Speicherzugriffsanfrage ist abgeschlossen.
  • Wenn die Anfrage jedoch einen Fehltreffer im L1-Cachespeicher 254 ergibt, wird die Anfrage in die Lade/Fehltreffer-Warteschlange 262 weitergeleitet, um einen Eintrag zur Warteschlange hinzuzufügen, der der Anfrage entspricht. Darüber hinaus kann es wünschenswert sein, einen Indikator im Eintrag zu platzieren, um anzuzeigen, dass die Anfrage mit Daten verbunden ist, die verschlüsselt und/oder komprimiert sind. Vor dem Ausgeben der Anfrage an einen Speicher niedrigerer Ebene, z. B. über einen Speicherbus an einen L2-Cachespeicher oder einen Speicher niedrigerer Ebene, wird danach in Block 282 ermittelt, ob die Seite als verschlüsselt und/oder komprimiert angezeigt ist, wie anhand der Seitenattribute im PTE 256 ermittelt wurde. Ist dies nicht der Fall, wird eine Bustransaktion für die Speicherzugriffsanfrage in Block 284 ausgegeben. Wenn die Seite verschlüsselt und/oder komprimiert ist, wird in Block 286 hingegen eine Bustransaktion mit zusätzlichen verschlüsselungs/komprimierungsbezogenen Seitenbanddaten aus dem PTE 256 ausgegeben.
  • Die verschlüsselungs/komprimierungsbezogenen Seitenbanddaten können über einen Speicherbus auf diverse Arten im Einklang mit der Erfindung übertragen werden. Beispielsweise können zusätzliche Steuerleitungen in einer Busarchitektur bereitgestellt werden, um festzulegen, ob eine Bustransaktion mit verschlüsselten und/oder komprimierten Daten verbunden ist, so dass auf der Grundlage des Status einer oder mehrerer Steuerleitungen ermittelt werden kann, ob die Daten verschlüsselt oder komprimiert sind. Alternativ können verschlüsselten und/oder komprimierten Daten Transaktionstypen zugeordnet werden, so dass ein Ermitteln lediglich auf der Grundlage des Transaktionstyps der Bustransaktion erfolgen kann. Insbesondere im letzteren Fall müsste ein Verschlüsselungsmodul oder ein Komprimierungsmodul nicht nach bestimmten Speicherbereichen suchen, sondern könnte stattdessen lediglich nach gewissen Transaktionstypen suchen.
  • Unter erneuter Bezugnahme auf Block 274 geht die Steuerung, wenn der anfragende Thread keine Berechtigung für einen Zugriff auf die angefragte Seite besitzt, zu Block 288 über, um auf die Zugriffsverletzung zu reagieren. Im Gegensatz zur herkömmlichen Reaktionen auf von Zugriffsverletzungen kann es bei einigen Ausführungsformen wünschenswert sein, alternative oder verbesserte Operationen für Zugriffsverletzungen in Zusammenhang mit verschlüsselten Daten durchzuführen, so dass den zusätzlichen Bedenken hinsichtlich unberechtigter Zugriffsversuche auf sichere Daten Rechnung getragen wird. Bei Ermittlung einer Zugriffsverletzung bestimmt somit der Block 288, ob die Seite verschlüsselt ist, indem er auf das verschlüsselungsbezogene Seitenattribut für diese Seite zugreift. Ist die Seite nicht verschlüsselt, wird eine Software-Ausnahme bestätigt und auf herkömmliche Weise abgewickelt. Wenn die Seite verschlüsselt ist, geht die Steuerung hingegen zu Block 292 über, um zu ermitteln, ob das Datenverarbeitungssystem abgeschaltet werden soll. Bei einigen Hochsicherheits-Ausführungsformen, z. B. wenn hochvertrauliche Informationen potenziell in einem Datenverarbeitungssystem gehalten werden, kann es wünschenswert sein, ein System im Fall eines potenziellen Angriffs sofort abzuschalten. Somit kann es wünschenswert sein, einen konfigurierbaren Modus bereitzustellen, in dem eine Zugriffsverletzung zu einer sofortigen Systemabschaltung führt. Wenn der konfigurierbare Modus eingestellt ist, übergibt der Block 292 die Steuerung somit an den Block 294, um das System abzuschalten. Andernfalls übergibt der Block 292 die Steuerung an den Block 296, um eine Software-Ausnahme zu bestätigen, ähnlich einer herkömmlichen Ausnahme, wobei allerdings ein Indikator vorhanden ist, der anzeigt, dass die Seite, für die eine Ausnahme signalisiert wird, verschlüsselt wurde. Danach kann eine Software, z. B. ein Kernel oder ein anderes Programm mit Supervisor-Ebene, eine erweiterte Ausnahmenabwicklung durchführen, z. B. Protokollieren eines Zugriffsversuchs auf eine verschlüsselte Seite, Benachrichtigen eines Zentralprozessors, Senden von Nachrichten über ein Netzwerk an eine externe Einrichtung, Bereinigen von Speicher- und Statusinhalten oder beliebige andere Operationen, die auf der Grundlage der Sicherheitsanforderungen für die Daten und/oder das Datenverarbeitungssystem wünschenswert sein könnten.
  • Die 9 und 10 zeigen nun jeweils Abfolgen von Operationen in Zusammenhang mit einem Durchführen von Lese- und Schreibbustransaktionen, die als Reaktion auf die oben in Verbindung mit 8 erörterte Speicherzugriffsanfrage ausgegeben werden. 9 beispielsweise zeigt eine Abfolge von Operationen 300 zum Abwickeln einer Lesebustransaktion. Die Lesebustransaktion führt anfänglich dazu, dass die Anfrage vom Bus erfüllt wird (Block 302), z. B. von einem L2- oder L3-Cachespeicher, wenn die Daten bereits zwischengespeichert sind, oder aus dem Speicher, wenn dies nicht der Fall ist. Danach wird ermittelt, ob die Transaktion anzeigt, dass die Daten verschlüsselt (Block 304) oder komprimiert (Block 306) sind, z. B. indem Verschlüsselungs- und Komprimierungsmodule den Bus jeweils nach einem den verschlüsselten oder komprimierten Transaktionen zugehörigen Transaktionstyp oder nach bestätigten Steuerleitungen am Bus durchsuchen.
  • Wenn die Daten nicht verschlüsselt oder komprimiert sind, werden die Daten auf herkömmliche Weise zurückgegeben (Block 308). Wenn die Daten jedoch verschlüsselt sind, werden die zurückzugebenden Daten durch ein Verschlüsselungsmodul (z. B. das Verschlüsselungsmodul 220 von 5) gestreamt, um die Daten zu entschlüsseln, bevor die Daten an den anfragenden Verarbeitungskern zurückgegeben werden (Block 310). Wenn die Daten komprimiert sind, werden die zurückzugebenden Daten gleichermaßen durch ein Komprimierungsmodul (z. B. das Komprimierungsmodul 222 von 5) gestreamt, bevor die Daten an den anfragenden Verarbeitungskern zurückgegeben werden (Block 312).
  • Wie in 10 gezeigt, wird eine Schreibbustransaktion auf ähnliche Weise wie eine Lesebustransaktion über eine Abfolge von Operationen 320 abgewickelt. Die Schreibbustransaktion enthält eine Cachespeicherzeile, die es in einen Speicher niedrigerer Ebene zu schreiben gilt; bevor die Daten an ein entsprechendes Ziel geleitet werden, z. B. durch einen L2- oder L3-Cachespeicher oder den Hauptspeicher, wird jedoch ermittelt, ob die Transaktion anzeigt, dass die Daten verschlüsselt (Block 322) oder komprimiert (Block 324) sind, z. B. indem Verschlüsselungs- und Komprimierungsmodule den Bus jeweils nach einem den verschlüsselten oder komprimierten Transaktionen zugehörigen Transaktionstyp oder nach Steuerleitungen am Bus durchsuchen.
  • Wenn die Daten nicht verschlüsselt oder komprimiert sind, werden die Daten auf herkömmliche Weise in das entsprechende Ziel geschrieben (Block 326). Wenn die Daten jedoch verschlüsselt sind, werden die zu schreibenden Daten zunächst durch ein Verschlüsselungsmodul (z. B. das Verschlüsselungsmodul 220 von 5) gestreamt, um die Daten zu verschlüsseln, bevor die Daten geschrieben werden (Block 328). Wenn die Daten komprimiert sind, werden die zu schreibenden Daten gleichermaßen zunächst durch ein Komprimierungsmodul (z. B. das Komprimierungsmodul 222 von 5) gestreamt, bevor die Daten geschrieben werden (Block 330).
  • Die 11 und 12 zeigen nun jeweils Abfolgen von Operationen in Zusammenhang mit dem Durchführen von Lese- und Schreibbustransaktionen, die als Reaktion auf die oben in Verbindung mit 8 erörterte Speicherzugriffsanfrage ausgegeben werden, allerdings für eine Implementierung, bei der Ebenenattribute in einem PTE unterstützt werden, um zu steuern, auf welchen Ebenen in einer mehrebenigen Speicherarchitektur eine Speicherseite verschlüsselt/komprimiert wird.
  • 11 beispielsweise zeigt eine Abfolge von Operationen 350 zum Abwickeln einer Lesebustransaktion. Die Lesebustransaktion führt anfänglich dazu, dass die Anfrage vom Bus erfüllt wird (Block 352), z. B. von einem L2- oder L3-Cachespeicher, wenn die Daten bereits zwischengespeichert sind, oder aus dem Speicher, wenn dies nicht der Fall ist. Danach wird ermittelt, ob die Transaktion anzeigt, dass die Daten auf der Ebene der Speicherarchitektur, aus der die Daten ursprünglich bezogen wurden, verschlüsselt (Block 354) oder komprimiert (Block 356) sind, z. B. indem Verschlüsselungs- und Komprimierungsmodule den Bus jeweils nach einem den verschlüsselten oder komprimierten Transaktionen zugehörigen Transaktionstyp oder nach bestätigten Steuerleitungen am Bus durchsuchen. Bei der gezeigten Ausführungsform werden die angefragten Daten verschlüsselten oder komprimiert, wenn das diesen zugehörige Ebenenattribut gleich oder höher als eine Speicherebene ist, aus der die Daten ursprünglich bezogen werden (z. B. wenn das Ebenenattribut den L2-Cachespeicher anzeigt, werden die Daten im L2-Cachespeicher, in einem beliebigen L3-Cachespeicher oder Cachespeicher niedrigerer Ebene und im Hauptspeicher verschlüsselt/komprimiert).
  • Wenn die Daten auf einer Ebene, aus der die Daten ursprünglich bezogen werden, nicht verschlüsselt oder komprimiert sind, werden die Daten auf herkömmliche Weise zurückgegeben (Block 358). Wenn die Daten jedoch auf der Ursprungsebene verschlüsselt sind, werden die zurückzugebenden Daten durch ein Verschlüsselungsmodul (z. B. das Verschlüsselungsmodul 220 von 5) gestreamt, um die Daten zu entschlüsseln, bevor die Daten an den anfragenden Verarbeitungskern zurückgegeben werden (Block 360). Wenn die Daten auf der Ursprungsebene komprimiert sind, werden die zurückzugebenden Daten gleichermaßen durch ein Komprimierungsmodul (z. B. das Komprimierungsmodul 222 von 5) gestreamt, bevor die Daten an den anfragenden Verarbeitungskern zurückgegeben werden (Block 362).
  • Wie in 12 gezeigt, wird eine Schreibbustransaktion auf ähnliche Weise wie eine Lesebustransaktion über eine Abfolge von Operationen 370 abgewickelt. Die Schreibbustransaktion enthält eine Cachespeicherzeile, die es in einen Speicher niedrigerer Ebene zu schreiben gilt; bevor die Daten an ein entsprechendes Ziel geleitet werden, z. B. durch einen L2- oder L3-Cachespeicher oder den Hauptspeicher, wird jedoch ermittelt, ob die Transaktion anzeigt, dass die Daten verschlüsselt (Block 372) oder komprimiert (Block 374) sind, z. B. indem Verschlüsselungs- und Komprimierungsmodule den Bus jeweils nach einem den verschlüsselten oder komprimierten Transaktionen zugehörigen Transaktionstyp oder nach Steuerleitungen am Bus durchsuchen.
  • Wenn die Daten auf der Zielebene nicht verschlüsselt oder komprimiert sind, werden die Daten auf herkömmliche Weise in das entsprechende Ziel geschrieben (Block 376). Wenn die Daten jedoch auf der Zielebene verschlüsselt sind, werden die zu schreibenden Daten zunächst durch ein Verschlüsselungsmodul (z. B. das Verschlüsselungsmodul 220 von 5) gestreamt, um die Daten zu verschlüsseln, bevor die Daten geschrieben werden (Block 378). Wenn die Daten auf der Zielebene komprimiert sind, werden die zu schreibenden Daten gleichermaßen zunächst durch ein Komprimierungsmodul (z. B. das Komprimierungsmodul 222 von 5) gestreamt, bevor die Daten geschrieben werden (Block 380).
  • Bei den in den 11 bis 12 gezeigten Ausführungsformen werden die Daten somit nur auf ausgewählten Ebenen in der Speicherhierarchie verschlüsselt und/oder komprimiert, wobei unterschiedliche ausgewählte Ebenen potenziell für unterschiedliche Speicherseiten festgelegt werden. Demzufolge kann für unterschiedliche Anwendungen eine erhebliche Flexibilitätshöhe bereitgestellt werden. Es ist jedoch klar, dass Ebenenattribute nicht bei allen Implementierungen implementiert sein müssen, und dass Ebenenattribute darüber hinaus nicht sowohl für eine Verschlüsselung als auch für eine Komprimierung unterstützt werden müssen, wenn es sich um Implementierungen handelt, die beide Funktionalität unterstützen.
  • Bei einigen Ausführungsformen im Einklang mit der Erfindung können weitere Speichertransaktionen unterstützt werden. Beispielsweise können Lesen-Ändern-Schreiben-Transaktionen verwendet werden, um eine gesamte Cachespeicherzeile zu verschlüsseln und/oder erneut zu komprimieren, wenn Daten in einer verschlüsselten oder komprimierten Cachespeicherzeile aktualisiert werden.
  • Wie oben angemerkt, kann bei einigen Ausführungsformen ein Verschlüsselungsmodul in einen Verarbeitungskern integriert werden, um einen sicheren Cachespeicher innerhalb des Verarbeitungskerns bereitzustellen, wodurch ein zusätzlicher Schutz von sicheren Daten im gesamten Speichersystem erzielt wird. Die oben genannten verschlüsselungsbezogenen Seitenattribute können verwendet werden, um auf diesen sicheren Cachespeicher zuzugreifen, so dass verhindert wird, dass sichere Daten den Verarbeitungskern jeweils in unverschlüsselter Form verlassen, damit die sicheren Daten außerhalb des Verarbeitungskerns stets verschlüsselt sind. Das integrierte Verschlüsselungsmodul ist für gewöhnlich so konfiguriert, dass es Verschlüsselungsoperationen wie Verschlüssel und Entschlüsseln durchführt.
  • Bei einer Ausführungsform beispielsweise kann ein separater sicherer L1-Cachespeicher gemeinsam mit einem standardmäßigen (nichtsicheren) L1-Cachespeicher bereitgestellt werden, so dass auf den sicheren L1-Cachespeicher parallel zum standardmäßigen Cachespeicher zugegriffen und der sichere L1-Cachespeicher nach Zugriff in die Pipeline gemultiplext werden kann. Bei einem Fehltreffer im sicheren Cachespeicher kann ein Ladevorgang an die nächste Ebene des Speichersystems, z. B. einen L2-Cachespeicher, gesendet werden. Ein verschlüsselungsbezogenes Seitenattribut kann in der Lade/Fehltreffer-Warteschlange gehalten werden, so dass die verschlüsselten Daten bei Rückgabe für eine Entschlüsselung durch das integrierte Verschlüsselungsmodul und in den sicheren Cachespeicher geleitet werden, wodurch sichergestellt wird, dass stets nur ein berechtigter sicherer Thread Zugriff auf die unverschlüsselten Daten hat. Bei einer weiteren Ausführungsform kann ggf. jedoch kein separater sicherer L1-Cachespeicher verwendet werden, wobei das integrierte Verschlüsselungsmodul verwendet werden kann, um im L1-Cachespeicher gespeicherte Daten auf der Grundlage der diesen Daten zugehörigen verschlüsselungsbezogenen Seitenattribute selektiv zu ver- und entschlüsseln.
  • 13 beispielsweise zeigt ein beispielhaftes Datenverarbeitungssystem 400 und insbesondere einen darin angeordneten beispielhaften Verarbeitungskern, um einen beispielhaften Speicherzugriff zu veranschaulichen, der ein integriertes Verschlüsselungsmodul im Einklang mit der Erfindung verwendet. Eine Adresserzeugungslogik 402, wie sie z. B. in einer Lade/Speicherungs-Einheit eines Verarbeitungskerns bereitgestellt wird, kann eine Speicherzugriffsanfrage für einen Zugriff auf Daten (z. B. eine Cachespeicherzeile) aus einer bestimmten Speicherseite erzeugen, z. B. als Reaktion auf eine Anweisung, die von einem im Verarbeitungskern ausgeführten Hardware-Thread (nicht gezeigt) ausgeführt wird. Die Speicherzugriffsanfrage wird sowohl an eine ERAT 406 als auch an einen L1-Cachespeicher 404 parallel ausgegeben, wobei Erstere ermittelt, ob die Speicherzugriffsanfrage für die PID berechtigt ist, die dem anfragenden Hardware-Thread zugehörig ist, und wobei Letzterer ermittelt, ob die von der Speicherzugriffsanfrage festgelegte Cachespeicherzeile aktuell im L1-Cachespeicher zwischengespeichert ist. Bei der in 13 gezeigten Ausführungsform ist die ERAT 406 als ”dERAT” bezeichnet und der L1-Cachespeicher 404 als ”dCache”, um anzuzeigen, dass diese Komponenten Datenzugriffen zugeordnet sind, und dass die entsprechenden iERAT- und iCache-Komponenten bereitgestellt werden können, um Anweisungszugriffe (nicht gezeigt) abzuwickeln.
  • Die ERAT 406 greift als Reaktion auf die Speicherzugriffsanfrage auf einen PTE 408 für die von der Speicherzugriffsanfrage festgelegte Speicherseite zu. Eine Hypervisor-Schutzausnahmen-Abwicklungs-Logik 410 vergleicht eine PID für die Speicherzugriffsanfrage mit den Zugriffssteuerungs-Bits im PTE, und wenn eine Zugriffsverletzung auftritt, weil die PID nicht für einen Zugriff auf diese Speicherseite berechtigt ist, signalisiert die Logik 410 eine Unterbrechung, indem sie bei der Software mit Supervisor-Ebene eine Software-Ausnahme auslöst, wie bei 412 veranschaulicht. Für den Fall, dass eine Speicherzugriffsanfrage berechtigt ist, aber ein L1-Cachespeicher-Fehltreffer auftritt, wird die Speicherzugriffsanfrage in eine LadeFehltreffer-Warteschlange 414 weitergeleitet, die die Anfrage an einen Speicher niedrigerer Ebene ausgibt, z. B. einen L2-Cachespeicher 416.
  • Darüber hinaus enthält ein L1-Cachespeicher 404 ein Verschlüsselungsmodul 418, das damit verbunden und in den Verarbeitungskern integriert ist. Das Verschlüsselungsmodul 418 kann z. B. verwendet werden, um Daten zu verschlüsseln, die aus dem Verarbeitungskern, z. B. aus dem L1-Cachespeicher 404, geschrieben werden, oder um Daten zu entschlüsseln, die vom Verarbeitungskern verwendet und von einem Speicher niedrigerer Ebene oder vom L1-Cachespeicher empfangen werden. Beispielsweise kann das Verschlüsselungsmodul 418 so konfiguriert sein, dass es entschlüsselte Daten an eine Registerdatei 420 streamt oder entschlüsselte Daten über einen Bus 422 zurück an den L1-Cachespeicher 404 streamt. Darüber hinaus kann das Verschlüsselungsmodul 418 mit einem Umgehungsnetzwerk 424 verbunden sein, um die Registerdatei 420 zu umgehen und entschlüsselte Daten direkt an eine Ausführungseinheit (nicht gezeigt) bereitzustellen.
  • Mit der in 13 gezeigten Konfiguration kann eine Anzahl von Szenarien implementiert werden. Beispielsweise kann der L1-Cachespeicher 404 verwendet werden, um sowohl verschlüsselte als auch unverschlüsselte Daten zu speichern. Alternativ kann es sich bei dem L1-Cachespeicher 404 um einen sicheren Cachespeicher handeln, wobei ein separater L1-Cachespeicher (nicht gezeigt) zum Speichern von nichtsicheren Daten verwendet wird. Bei einigen Implementierungen kann der L1-Cachespeicher 404 darüber hinaus entschlüsselte Daten speichern, so dass das Verschlüsselungsmodul 418 verwendet wird, um Daten zu entschlüsseln, die von einem Speicher niedrigerer Ebene empfangen werden, und um Daten zu verschlüsseln, die in Speicher niedrigerer Ebene geschrieben werden. Alternativ kann es bei besonders sicherheitsempfindlichen Anwendungen wünschenswert sein, alle sicheren Daten in verschlüsselter Form im L1-Cachespeicher 404 zu halten, wobei das Verschlüsselungsmodul 418 verwendet werden kann, um Daten zu entschlüsseln, die aus dem L1-Cachespeicher 404 in die Registerdatei 420 abgerufen werden, und um Daten zu verschlüsseln, die aus der Registerdatei 420 zurück in den L1-Cachespeicher 404 geschrieben werden.
  • Bei einigen Ausführungsformen in Assoziation kann es wünschenswert sein, einen Indikator oder ein Attribut in einem Eintrag in einer Lade/Fehltreffer-Warteschlange zu setzen, der bzw. das einer Speicherzugriffsanfrage für eine sichere Speicherseite zugehörig ist. Wenn die angeforderten Daten zurückgegeben werden, kann dadurch auf den Indikator zugegriffen werden, um festzustellen, dass die Daten verschlüsselt sind. Wenn beispielsweise zwei separate sichere und nichtsichere L1-Cachespeicher in einem Verarbeitungskern bereitgestellt sind, kann der Indikator somit verwendet werden, um die Daten an den entsprechenden L1-Cachespeicher zurückzugeben. Wenn sichere Daten in unverschlüsseltem Format in einem L1-Cachespeicher gespeichert sind, kann der Indikator alternativ verwendet werden, um zu bewirken, dass die zurückzugebenden Daten durch das Verschlüsselungsmodul gestreamt werden, bevor sie im L1-Cachespeicher gespeichert werden.
  • Es wird nun auf 14 Bezug genommen, bei der es, wie oben angemerkt, in einigen Fällen wünschenswert sein kann, separate sichere und nichtsichere L1-Cachespeicher in einem Verarbeitungskern zu verwenden, so dass z. B. für nichtsichere Daten nicht der Aufwand erforderlich ist, der mit dem Verschlüsseln und Entschlüsseln von Daten in Zusammenhang steht. Ein Verarbeitungskern 450 beispielsweise enthält ein Verschlüsselungsmodul 452, das mit einer Lade/Speicherungs-Einheit 454 verbunden ist. Eine ERAT 456 in der Lade/Speicherungs-Einheit 454 stellt verschlüsselungsbezogene und andere Seitenattribute an sowohl einen nichtsicheren L1-Cachespeicher 458 als auch einen sicheren L1-Cachespeicher 460 bereit. Die L1-Cachespeicher 458, 460 können jeweils eine separate Lade/Fehltreffer-Warteschlange 462, 464 und separate Busverbindungen 466, 468 mit einem Speicherbus 470 aufweisen und alternativ die gleiche Lade/Fehltreffer-Warteschlange und die gleiche Busverbindung gemeinsam verwenden.
  • Implementierungen eines integrierten Verschlüsselungsmoduls können bei unterschiedlichen Ausführungsformen variieren. Beispielsweise kann ein integriertes Verschlüsselungsmodul bei einigen Ausführungsformen als AXU implementiert werden, wie oben in Verbindung mit 4 erörtert. Die Erfindung ist jedoch nicht auf eine solche Implementierung beschränkt.
  • Ausführungsformen im Einklang mit der Erfindung stellen zahlreiche Vorteile gegenüber herkömmlichen Konstruktionen bereit. Beispielsweise wird durch ein Verwenden von Seitenattributen häufig der Arbeitsaufwand umgangen, der andernfalls für eine Speicherverwaltungseinheit anfällt, um Speicherbereiche oder Bereiche verschlüsselter oder komprimierter Daten einzurichten und zu verwalten. Wenn mehrere Verarbeitungskerne mit dem gleichen Bus verbunden sind, sind andere Verarbeitungskerne für gewöhnlich darüber hinaus nicht in der Lage, auf verschlüsselte oder komprimierte Daten für einen anderen Verarbeitungskern zuzugreifen, da die Seitenattribute dafür innerhalb jedes Verarbeitungskerns gehalten werden und nur für berechtigte Prozesse zugänglich sind.
  • Es können außerdem diverse Modifikationen im Einklang mit der Erfindung durchgeführt werden. Wie bei einem integrierten Verschlüsselungsmodul kann es beispielsweise wünschenswert sein, ein integriertes Komprimierungsmodul innerhalb eines Verarbeitungskerns oder andere Typen von Beschleunigungsmodulen bereitzustellen, die in der Lage sind, Seitenattribute für eine selektive Verarbeitung von Daten auf deren Grundlage zu nutzen.
  • Es können weitere Änderungen an den offenbarten Ausführungsformen vorgenommen werden, ohne sich vom Umfang der Erfindung, wie er in den hier nachfolgend angehängten Ansprüchen definiert ist, zu entfernen.

Claims (26)

  1. Verfahren zum Zugreifen auf Daten in einem Datenverarbeitungssystem, wobei das Verfahren aufweist: als Reaktion auf eine Speicherzugriffsanfrage, die von einem Thread in einem Verarbeitungskern eingeleitet wurde, der sich in einem Mehrkernprozessor befindet, Zugreifen auf ein verschlüsselungsbezogenes Seitenattribut in einer Speicheradressumsetzungs-Datenstruktur, um zu ermitteln, ob ein mit der Speicherzugriffsanfrage verbundene Speicherseite verschlüsselt ist; und Streamen sicherer Daten auf der Speicherseite durch ein in den Verarbeitungskern integriertes Verschlüsselungsmodul als Reaktion darauf, dass festgestellt wurde, dass die mit der Speicherzugriffsanfrage verbundene Speicherseite verschlüsselt ist.
  2. Verfahren nach Anspruch 1, wobei das Streamen sicherer Daten auf der Speicherseite durch das Verschlüsselungsmodul das Verschlüsseln der sicheren Daten und das Übertragen der verschlüsselten sicheren Daten aus dem Verarbeitungskern für eine Speicherung außerhalb des Verarbeitungskerns beinhaltet, wobei die sicheren Daten nur entschlüsselt werden, wenn sie sich innerhalb des Verarbeitungskerns befinden.
  3. Verfahren nach Anspruch 1, wobei das Streamen sicherer Daten auf der Speicherseite durch das Verschlüsselungsmodul das Entschlüsseln von sicheren Daten beinhaltet, die von außerhalb des Verarbeitungskerns abgerufen wurden.
  4. Verfahren nach Anspruch 4, das darüber hinaus das Speichern der entschlüsselten sicheren Daten in einem im Verarbeitungskern angeordneten Cachespeicher aufweist, wobei die sicheren Daten in einem entschlüsselten Format im Cachespeicher gespeichert werden.
  5. Verfahren nach Anspruch 1, wobei das Streamen sicherer Daten auf der Speicherseite durch das Verschlüsselungsmodul das Entschlüsseln sicherer Daten beinhaltet, die aus einem im Verarbeitungskern angeordneten Cachespeicher abgerufen wurden, wobei die sicheren Daten in einem verschlüsselten Format im Cachespeicher gespeichert werden.
  6. Verfahren nach Anspruch 1, wobei das Streamen sicherer Daten auf der Speicherseite durch das Verschlüsselungsmodul das Entschlüsseln der sicheren Daten und das Übertragen der entschlüsselten sicheren Daten aus dem Verschlüsselungsmodul in eine Registerdatei im Verarbeitungskern beinhaltet.
  7. Verfahren nach Anspruch 1, wobei das Streamen sicherer Daten auf der Speicherseite durch das Verschlüsselungsmodul das Entschlüsseln der sicheren Daten und das Übertragen der entschlüsselten sicheren Daten aus dem Verschlüsselungsmodul in ein Umgehungsnetzwerk im Verarbeitungskern beinhaltet, so dass die entschlüsselten sicheren Daten eine Registerdatei im Verarbeitungskern umgehen.
  8. Verfahren nach Anspruch 1, wobei das Verschlüsselungsmodul mit einem L1-Cachespeicher im Verarbeitungskern verbunden ist.
  9. Verfahren nach Anspruch 8, wobei der L1-Cachespeicher ein sicherer L1-Cachespeicher ist, und wobei der Verarbeitungskern darüber hinaus einen nichtsicheren L1-Cachespeicher enthält, der vom sicheren L1-Cachespeicher getrennt ist.
  10. Verfahren nach Anspruch 8, wobei der L1-Cachespeicher so konfiguriert ist, dass er sichere und nichtsichere Daten speichert.
  11. Verfahren nach Anspruch 8, das darüber hinaus als Reaktion auf einen Fehltreffer im L1-Cachespeicher auf eine Speicherzugriffsanfrage das Hinzufügen eines Eintrags in eine Lade/Fehltreffer-Warteschlange für die Speicherzugriffsanfrage und das Anzeigen, dass die der Speicherzugriffsanfrage zugehörige Speicherseite verschlüsselt ist, im Eintrag aufweist, wobei das Streamen der sicheren Daten auf der Speicherseite durch das Verschlüsselungsmodul als Reaktion darauf durchgeführt wird, dass festgestellt wird, dass die der Speicherzugriffsanfrage zugehörige Speicherseite verschlüsselt ist, aus dem Eintrag in der Lade/Fehltreffer-Warteschlange während des Zurückgebens der sicheren Daten von außerhalb des Verarbeitungskerns.
  12. Verfahren nach Anspruch 1, wobei es sich bei dem Verarbeitungskern um einen ersten Verarbeitungskern einer Vielzahl von Verarbeitungskernen im Mehrfachkern-Prozessor handelt, und wobei die sicheren Daten nur entschlüsselt werden, wenn sie sich innerhalb des ersten Verarbeitungskern befinden.
  13. Verfahren nach Anspruch 1, das darüber hinaus das Durchführen einer Speicheradressumsetzung für die Speicherzugriffsanfrage durch Zugreifen auf die Speicheradressumsetzungs-Datenstruktur aufweist.
  14. Schaltungsanordnung, die aufweist: einen Mehrfachkern-Prozessor, der eine Vielzahl von Verarbeitungskernen enthält; eine Speicheradressumsetzungs-Datenstruktur, die in einem ersten Verarbeitungskern unter der Vielzahl von Verarbeitungskernen angeordnet ist, wobei die Speicheradressumsetzungs-Datenstruktur so konfiguriert ist, dass sie Adressumsetzungsdaten für eine Speicherseite speichert, wobei die Speicheradressumsetzung-Datenstruktur darüber hinaus so konfiguriert ist, dass sie ein verschlüsselungsbezogenes Seitenattribut für die Speicherseite speichert; und ein Verschlüsselungsmodul, das in den ersten Verarbeitungskern integriert ist, wobei das Verschlüsselungsmodul so konfiguriert ist, dass es als Reaktion auf eine Speicherzugriffsanfrage, die durch einen Thread im ersten Verarbeitungskern eingeleitet wurde und der Speicherseite zugehörig ist, eine Verschlüsselungsoperation an sicheren Daten aus der Speicherseite durchführt, wenn das verschlüsselungsbezogene Seitenattribut in der Speicheradressumsetzungs-Datenstruktur anzeigt, dass die der Speicherzugriffsanfrage zugehörige Speicherseite verschlüsselt ist.
  15. Schaltungsanordnung nach Anspruch 14, wobei das Verschlüsselungsmodul so konfiguriert ist, dass es die sicheren Daten vor Übertragen der verschlüsselten sicheren Daten aus dem ersten Verarbeitungskern für eine Speicherung außerhalb des ersten Verarbeitungskerns verschlüsselt, wobei die sicheren Daten nur entschlüsselt werden, wenn sie sich innerhalb des ersten Verarbeitungskerns befinden.
  16. Schaltungsanordnung nach Anspruch 14, wobei das Verschlüsselungsmodul so konfiguriert ist, dass es sichere Daten entschlüsselt, die von außerhalb des ersten Verarbeitungskerns abgerufen wurden.
  17. Schaltungsanordnung nach Anspruch 16, wobei das Verschlüsselungsmodul so konfiguriert ist, dass es die entschlüsselten sicheren Daten an einen im ersten Verarbeitungskern angeordneten Cachespeicher überträgt, wobei die sicheren Daten in einem entschlüsselten Format im Cachespeicher gespeichert werden.
  18. Schaltungsanordnung nach Anspruch 14, wobei das Verschlüsselungsmodul so konfiguriert ist, dass es sichere Daten entschlüsselt, die von einen im ersten Verarbeitungskern angeordneten Cachespeicher abgerufen wurden, wobei die sicheren Daten in einem verschlüsselten Format im Cachespeicher gespeichert werden.
  19. Schaltungsanordnung nach Anspruch 14, wobei das Verschlüsselungsmodul so konfiguriert ist, dass es die sicheren Daten entschlüsselt und die entschlüsselten sicheren Daten an eine Registerdatei im ersten Verarbeitungskern überträgt.
  20. Schaltungsanordnung nach Anspruch 14, wobei das Verschlüsselungsmodul so konfiguriert ist, dass es die sicheren Daten entschlüsselt und die entschlüsselten sicheren Daten an ein Umgehungsnetzwerk im ersten Verarbeitungskern überträgt, so dass die entschlüsselten sicheren Daten eine Registerdatei im ersten Verarbeitungskern umgehen.
  21. Schaltungsanordnung nach Anspruch 14, wobei das Verschlüsselungsmodul mit einem L1-Cachespeicher im ersten Verarbeitungskern verbunden ist, wobei der L1-Cachespeicher ein sicherer L1-Cachespeicher ist, und wobei der erste Verarbeitungskern darüber hinaus einen nichtsicheren L1-Cachespeicher enthält, der vom sicheren L1-Cachespeicher getrennt ist.
  22. Schaltungsanordnung nach Anspruch 14, wobei das Verschlüsselungsmodul mit einem L1-Cachespeicher im ersten Verarbeitungskern verbunden ist, wobei der L1-Cachespeicher so konfiguriert ist, dass er sichere und nichtsichere Daten speichert.
  23. Schaltungsanordnung nach Anspruch 14, wobei das Verschlüsselungsmodul mit einem L1-Cachespeicher im ersten Verarbeitungskern verbunden ist, wobei die Lade/Fehltreffer-Warteschlange einen Eintrag enthält, der als Reaktion auf einen Fehltreffer im L1-Cachespeicher auf die Speicherzugriffsanfrage zu dieser hinzugefügt wurde, wobei der Eintrag anzeigt, dass die der Speicherzugriffsanfrage zugehörige Speicherseite verschlüsselt ist, wobei das Verschlüsselungsmodul so konfiguriert ist, dass es die Verschlüsselungsoperation als Reaktion darauf durchgeführt, dass festgestellt wird, dass die der Speicherzugriffsanfrage zugehörige Speicherseite verschlüsselt ist, aus dem Eintrag in der Lade/Fehltreffer-Warteschlänge während des Zurückgebens der sicheren Daten von außerhalb des ersten Verarbeitungskerns.
  24. Integrierte Schaltungseinheit, die die Schaltungsanordnung nach Anspruch 14 enthält.
  25. Programmprodukt, das ein computerlesbares Speichermedium und einen Logikdefinitions-Programmcode aufweist, der auf dem computerlesbaren Medium gespeichert ist und die Schaltungsanordnung nach Anspruch 14 definiert.
  26. Programmprodukt, das ein computerlesbares Medium und einen Programmcode aufweist, der auf dem computerlesbaren Speichermedium gespeichert ist, wobei der Programmcode so konfiguriert ist, dass er von einem Verarbeitungskern ausgeführt wird, um das Verfahren nach einem der Ansprüche 1 bis 13 durchzuführen.
DE112013000381.3T 2012-01-23 2013-01-02 Datenverschlüsselung auf der Grundlage einer Speicheradressumsetzung Active DE112013000381B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/355,827 US8954755B2 (en) 2012-01-23 2012-01-23 Memory address translation-based data encryption with integrated encryption engine
US13/355,827 2012-01-23
PCT/EP2013/050022 WO2013110477A1 (en) 2012-01-23 2013-01-02 Memory address translation-based data encryption

Publications (2)

Publication Number Publication Date
DE112013000381T5 true DE112013000381T5 (de) 2014-08-28
DE112013000381B4 DE112013000381B4 (de) 2018-07-26

Family

ID=47553046

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013000381.3T Active DE112013000381B4 (de) 2012-01-23 2013-01-02 Datenverschlüsselung auf der Grundlage einer Speicheradressumsetzung

Country Status (4)

Country Link
US (1) US8954755B2 (de)
DE (1) DE112013000381B4 (de)
GB (1) GB2513496B (de)
WO (1) WO2013110477A1 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9164924B2 (en) * 2011-09-13 2015-10-20 Facebook, Inc. Software cryptoprocessor
JP2013196167A (ja) * 2012-03-16 2013-09-30 Toshiba Corp 情報処理装置
US9280479B1 (en) * 2012-05-22 2016-03-08 Applied Micro Circuits Corporation Multi-level store merging in a cache and memory hierarchy
US9430384B2 (en) * 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
DE102013216699A1 (de) * 2013-08-22 2015-02-26 Siemens Ag Österreich Verfahren und Schaltungsanordnung zur Absicherung gegen Scannen eines Adressraums
US9477603B2 (en) 2013-09-05 2016-10-25 Facebook, Inc. System and method for partitioning of memory units into non-conflicting sets
US9983894B2 (en) 2013-09-25 2018-05-29 Facebook, Inc. Method and system for providing secure system execution on hardware supporting secure application execution
US10049048B1 (en) * 2013-10-01 2018-08-14 Facebook, Inc. Method and system for using processor enclaves and cache partitioning to assist a software cryptoprocessor
US9747450B2 (en) 2014-02-10 2017-08-29 Facebook, Inc. Attestation using a combined measurement and its constituent measurements
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9734092B2 (en) 2014-03-19 2017-08-15 Facebook, Inc. Secure support for I/O in software cryptoprocessor
WO2016027121A1 (en) * 2014-08-20 2016-02-25 Intel Corporation Encrypted code execution
US9742630B2 (en) * 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US9684608B2 (en) * 2014-10-28 2017-06-20 Intel Corporation Maintaining a secure processing environment across power cycles
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US9678894B2 (en) 2015-03-27 2017-06-13 Intel Corporation Cache-less split tracker architecture for replay protection trees
US10311229B1 (en) * 2015-05-18 2019-06-04 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring alternatives in code
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US20170109526A1 (en) * 2015-10-20 2017-04-20 Intel Corporation Systems and methods for providing anti-malware protection and malware forensics on storage devices
US9952861B2 (en) * 2015-12-15 2018-04-24 International Business Machines Corporation Operation of a multi-slice processor with selective producer instruction types
US10261919B2 (en) * 2016-07-08 2019-04-16 Hewlett Packard Enterprise Development Lp Selective memory encryption
US20180024944A1 (en) * 2016-07-22 2018-01-25 Qualcomm Incorporated Methods and apparatus for access control in shared virtual memory configurations
US10721067B2 (en) * 2016-08-10 2020-07-21 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Secure processor for multi-tenant cloud workloads
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10417433B2 (en) 2017-01-24 2019-09-17 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Encryption and decryption of data owned by a guest operating system
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US10324855B2 (en) * 2017-06-23 2019-06-18 International Business Machines Corporation Associating a processing thread and memory section to a memory device
US10963295B2 (en) * 2017-09-08 2021-03-30 Oracle International Corporation Hardware accelerated data processing operations for storage data
US10657071B2 (en) * 2017-09-25 2020-05-19 Intel Corporation System, apparatus and method for page granular, software controlled multiple key memory encryption
US10768993B2 (en) * 2017-09-29 2020-09-08 Nicira, Inc. Adaptive, performance-oriented, and compression-assisted encryption scheme
US10867092B2 (en) 2017-12-16 2020-12-15 Intel Corporation Avoiding asynchronous enclave exits based on requests to invalidate translation lookaside buffer entries
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
US11221957B2 (en) 2018-08-31 2022-01-11 International Business Machines Corporation Promotion of ERAT cache entries
US10901918B2 (en) * 2018-11-29 2021-01-26 International Business Machines Corporation Constructing flexibly-secure systems in a disaggregated environment
US11507519B2 (en) * 2019-01-24 2022-11-22 Advanced Micro Devices, Inc. Data compression and encryption based on translation lookaside buffer evictions
US11550917B2 (en) * 2019-06-28 2023-01-10 Intel Corporation Standardized interface for intellectual property blocks
US11645428B1 (en) 2020-02-11 2023-05-09 Wells Fargo Bank, N.A. Quantum phenomenon-based obfuscation of memory

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1084005C (zh) 1994-06-27 2002-05-01 国际商业机器公司 用于动态控制地址空间分配的方法和设备
US7190284B1 (en) 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
US6983374B2 (en) 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
GB2385951A (en) 2001-09-21 2003-09-03 Sun Microsystems Inc Data encryption and decryption
EP1296237A1 (de) 2001-09-25 2003-03-26 Texas Instruments Incorporated Durch Taskattribute gesteuerte Datenübertragung
US8135962B2 (en) 2002-03-27 2012-03-13 Globalfoundries Inc. System and method providing region-granular, hardware-controlled memory encryption
US7380039B2 (en) 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
JP2005202523A (ja) 2004-01-13 2005-07-28 Sony Corp コンピュータ装置及びプロセス制御方法
US7444523B2 (en) 2004-08-27 2008-10-28 Microsoft Corporation System and method for using address bits to signal security attributes of data in the address space
US7653802B2 (en) 2004-08-27 2010-01-26 Microsoft Corporation System and method for using address lines to control memory usage
US7822993B2 (en) 2004-08-27 2010-10-26 Microsoft Corporation System and method for using address bits to affect encryption
US8954751B2 (en) * 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
GB0516474D0 (en) 2005-08-10 2005-09-14 Symbian Software Ltd Pre-emptible context switching in a computing device
US7681047B2 (en) 2006-04-18 2010-03-16 International Business Machines Corporation Decryption of data in storage systems
US7752417B2 (en) 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US7594104B2 (en) * 2006-06-09 2009-09-22 International Business Machines Corporation System and method for masking a hardware boot sequence
US7725687B2 (en) * 2006-06-27 2010-05-25 Texas Instruments Incorporated Register file bypass with optional results storage and separate predication register file in a VLIW processor
US8407704B2 (en) 2006-09-26 2013-03-26 International Business Machines Corporation Multi-level memory architecture using data structures for storing access rights and performing address translation
US20080155273A1 (en) * 2006-12-21 2008-06-26 Texas Instruments, Inc. Automatic Bus Encryption And Decryption
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US7681020B2 (en) 2007-04-18 2010-03-16 International Business Machines Corporation Context switching and synchronization
US20090031142A1 (en) 2007-07-25 2009-01-29 Shai Halevi System, Method and Computer Program Product for Processing a Memory Page
US8248422B2 (en) 2008-01-18 2012-08-21 International Business Machines Corporation Efficient texture processing of pixel groups with SIMD execution unit
US8353026B2 (en) * 2008-10-23 2013-01-08 Dell Products L.P. Credential security system
US8397219B2 (en) 2009-03-31 2013-03-12 Oracle America, Inc. Method and apparatus for tracking enregistered memory locations
US8108650B2 (en) 2009-05-29 2012-01-31 Apple Inc. Translation lookaside buffer (TLB) with reserved areas for specific sources
US9298894B2 (en) 2009-06-26 2016-03-29 International Business Machines Corporation Cache structure for a computer system providing support for secure objects
US8412911B2 (en) 2009-06-29 2013-04-02 Oracle America, Inc. System and method to invalidate obsolete address translations
US8627041B2 (en) 2009-10-09 2014-01-07 Nvidia Corporation Efficient line and page organization for compression status bit caching
US8386748B2 (en) 2009-10-29 2013-02-26 Apple Inc. Address translation unit with multiple virtual queues
US8751745B2 (en) * 2010-08-11 2014-06-10 Advanced Micro Devices, Inc. Method for concurrent flush of L1 and L2 caches

Also Published As

Publication number Publication date
US20130191651A1 (en) 2013-07-25
GB2513496B (en) 2020-02-19
GB201413200D0 (en) 2014-09-10
GB2513496A (en) 2014-10-29
DE112013000381B4 (de) 2018-07-26
US8954755B2 (en) 2015-02-10
WO2013110477A1 (en) 2013-08-01

Similar Documents

Publication Publication Date Title
DE112013000381B4 (de) Datenverschlüsselung auf der Grundlage einer Speicheradressumsetzung
DE102013200161A1 (de) Datenverschlüsselung/-Komprimierung auf der Grundlage einer Speicheradressübersetzung
US9183399B2 (en) Instruction set architecture with secure clear instructions for protecting processing unit architected state information
US9864712B2 (en) Shared receive queue allocation for network on a chip communication
US9239791B2 (en) Cache swizzle with inline transposition
US9678885B2 (en) Regular expression memory region with integrated regular expression engine
DE102019113352A1 (de) Technologien für sichere e/a mit speicherverschlüsselungs-engines
US9176885B2 (en) Combined cache inject and lock operation
DE102013200503A1 (de) Virtualisierungs-Support zum Speichern und Wiederherstellen von Zuständen einer Sprungvorhersage-Logik
DE112013000654T5 (de) Verzweigungsvorhersagelogik
DE112010001467B4 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE112012005700T5 (de) Externe Hilfsausführungseinheiten-Schnittstelle zur ausserhalb des Chips angeordneten Hilfsausführungseinheit
DE102012213631A1 (de) Zwischenspeichern von Kontextdatenstrukturen in einer Vektorregisterdatei zum Beibehalten von Zustandsdaten in einer Multithread-Bildverarbeitungs-Pipeline
DE112005002364T5 (de) Heterogene Prozessoren mit gemeinsamem Cache
DE112013002155T5 (de) Befehl zur Art des Zugriffs auf den nächsten Befehl
DE202019005682U1 (de) Hardwaregestützte Paging-Mechanismen
DE102020122311A1 (de) Sicheres-netzwerken-protokoll-optimierung über nic-hardware-auslagern
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE102017124078A1 (de) Ordinale modifikation der dienstgüte
DE102020134207A1 (de) Sichere Adressübersetzungsdienste unter Verwendung kryptographisch geschützter physischer Hostadressen
DE102022107196A1 (de) Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final