DE102019109845A1 - Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia - Google Patents

Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia Download PDF

Info

Publication number
DE102019109845A1
DE102019109845A1 DE102019109845.9A DE102019109845A DE102019109845A1 DE 102019109845 A1 DE102019109845 A1 DE 102019109845A1 DE 102019109845 A DE102019109845 A DE 102019109845A DE 102019109845 A1 DE102019109845 A1 DE 102019109845A1
Authority
DE
Germany
Prior art keywords
secret code
unified
data path
boxes
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019109845.9A
Other languages
English (en)
Inventor
Sudhir Satpathy
Vikram Suresh
Sanu Mathew
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102019109845A1 publication Critical patent/DE102019109845A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7209Calculation via subfield, i.e. the subfield being GF(q) with q a prime power, e.g. GF ((2**m)**n) via GF(2**m)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

Offenbarte Ausführungsformen beziehen sich auf einen vereinheitlichten Beschleuniger für die fortschrittliche Verschlüsselungsnorm (AES), SMS4 und Camellia (CML). In einem Beispiel umfasst ein Prozessor eine Abrufschaltungsanordnung, um einen Geheimcodebefehl abzurufen, der einen Operationscode, ein Datenelement und einen Schlüssel festlegt, wobei der Operationscode einen von drei kryptographischen Modi und eine Operation festlegen soll, eine Decodierschaltungsanordnung, um den abgerufenen Geheimcodebefehl zu decodieren, und eine Ausführungsschaltungsanordnung, um auf den decodierten Geheimcodebefehl durch Durchführen der Operation unter Verwendung eines ausgewählten von drei Blockgeheimcodes, die dem festgelegten kryptographischen Modus entsprechen, und eines vereinheitlichten Geheimcodedatenpfades, der durch die drei Blockgeheimcodes gemeinsam genutzt wird, zu reagieren, wobei der vereinheitlichte Geheimcodedatenpfad mehrere Hybrid-Substitutionsboxen (S-Boxen) umfasst, um Galois-Feld-Multiplikationen (GF-Multiplikationen) und inverse Berechnungen durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad ein Polynom achter Ordnung isomorph äquivalent zu jedem Polynom, das durch die drei Blockgeheimcodes verwendet wird, durch Berechnen und dann Kombinieren von zwei Polynomen vierter Ordnung implementieren soll.

Description

  • GEBIET DER ERFINDUNG
  • Das Gebiet der Erfindung bezieht sich im Allgemeinen auf eine Computerprozessorarchitektur und insbesondere auf einen Beschleuniger für die vereinheitlichte fortschrittliche Verschlüsselungsnorm (AES), SMS4 und Camellia (CML).
  • HINTERGRUND
  • Blockgeheimcodes eines symmetrischen Schlüssels bilden eine kritische Komponente aller Inhaltsschutz-, Authentifizierungs- und Schlüsselmanagementprotokolle. Obwohl die AES (fortschrittliche Verschlüsselungsnorm) eine normierte und häufig tatsächliche Norm für die meisten Sicherheitsanwendungen ist, werden äquivalente geospezielle Geheimcodes wie normiertes SMS4 (China) und normiertes Camellia (Japan) zunehmend in IPsec, WAPI, TLS usw. gemäß den OSCCA-, ISO/IEC- und NESSIE-Empfehlungen und Aufträgen für die Verwendung in verschiedenen Gebieten verwendet.
  • AES ist eine Blockgeheimcodeverschlüsselungsnorm eines symmetrischen Schlüssels, die durch die US-Regierung beginnend in 2001 übernommen wurde. Sie wird über das Software-Ökosystem umfangreich verwendet, um den Netzverkehr, persönliche Daten und eine Unternehmens-IT-Infrastruktur zu schützen.
  • SMS4 (nun SM4) ist ein Blockgeheimcode eines symmetrischen Schlüssels, der in der chinesischen nationalen Norm für drahtlose LAN-WAPI (verdrahtete Authentifizierungs- und Datenschutzinfrastruktur) verwendet wird. SMS4 war ein vorgeschlagener Geheimcode, der in der Norm I8 802.11i verwendet werden sollte, wurde jedoch bisher durch die ISO abgelehnt.
  • Camellia (CML) ist ein Blockgeheimcode eines symmetrischen Schlüssels, der für die Verwendung durch die ISO/IEC, das NESSIE-Projekt der europäischen Union und das japanische CRYPTREC-Projekt bewilligt ist. Camellia ist ein Teil des kryptographischen Transportschichtsicherheitsprotokolls (TLS-Protokolls), das dazu ausgelegt ist, Kommunikationssicherheit über ein Computernetz wie z. B. das Internet zu schaffen.
  • AES, SMS4 und CML verschlüsseln 128b-Daten mit einem 128b-Geheimschlüssel mit 10/32/18 Berechnungsrunden, wobei jede Runde eine unterschiedliche Substitutionsbox (S-Box) beinhaltet, sowie Rotations-, Skalierungs- und Mischschritten, die separate Hardware-Implementierungen oder einen Firmware-Code erfordern.
  • Figurenliste
  • Die vorliegende Erfindung wird beispielhaft und nicht zur Begrenzung in den Figuren der begleitenden Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente angeben und in denen:
    • 1 ein Blockdiagramm ist, das Verarbeitungskomponenten zum Ausführen eines Geheimcodebefehls gemäß einer Ausführungsform darstellt;
    • 2A ein Blockdiagramm darstellt, das einen Geheimcodebeschleuniger gemäß einigen Ausführungsformen darstellt;
    • 2B ein Blockdiagramm darstellt, das eine vereinheitlichte Rundenkonstantengeneratorschaltung gemäß einigen Ausführungsformen darstellt;
    • 3 eine Rundenberechnungs- und Schlüsselerweiterungszeitsteuerung von AES/SMS/CML-Abläufen gemäß einigen Ausführungsformen darstellt;
    • 4A optimale Reduktionspolynome für eine AES-SMS4-Camellia-Hybrid-S-Box gemäß einigen Ausführungsformen darstellt;
    • 4B ein Graph ist, der eine simulierte Schaltungsfläche für verschiedene Hybrid-Substitutionsbox- (S-Box) Polynom/Wurzel-Kombinationen gemäß einigen Ausführungsformen darstellt;
    • 4C ein Blockablaufdiagramm ist, das einen Prozess zum Auswählen eines optimalen Polynoms für eine vereinheitlichte S-Box gemäß einigen Ausführungsformen darstellt;
    • 5 ein Blockdiagramm ist, das eine Hybrid-GF(24)2-Substitutionsbox (S-Box) mit abgebildeten affinen und gemeinsam genutzten Inversionsschaltungen gemäß einigen Ausführungsformen darstellt;
    • 6 eine multiplikationslose Mischspaltenschaltung der fortschrittlichen Verschlüsselungsnorm (AES) gemäß einigen Ausführungsformen ist;
    • 7 ein Blockdiagramm ist, das eine P-Funktion zur Verwendung beim Durchführen eines Camellia-Algorithmus gemäß einigen Ausführungsformen darstellt;
    • 8 ein Ablaufdiagramm ist, das eine Recheneinrichtung, die einen Geheimcodebefehl ausführt, gemäß einigen Ausführungsformen darstellt;
    • 9 ein Format eines Geheimcodebefehls gemäß einigen Ausführungsformen ist;
    • 10A-10B Blockdiagramme sind, die ein allgemeines vektorfreundliches Befehlsformat und Befehlsvorlagen davon gemäß einigen Ausführungsformen der Erfindung darstellen;
    • 10A ein Blockdiagramm ist, das ein allgemeines vektorfreundliches Befehlsformat und Befehlsvorlagen der Klasse A davon gemäß einigen Ausführungsformen der Erfindung darstellt;
    • 10B ein Blockdiagramm ist, das das allgemeine vektorfreundliche Befehlsformat und Befehlsvorlagen der Klasse B davon gemäß einigen Ausführungsformen der Erfindung darstellt;
    • 11A ein Blockdiagramm ist, das ein beispielhaftes spezielles vektorfreundliches Befehlsformat gemäß einigen Ausführungsformen der Erfindung darstellt;
    • 11B ein Blockdiagramm ist, das die Felder des speziellen vektorfreundlichen Befehlsformats, die das Feld des vollen Operationscodes bilden, gemäß einer Ausführungsform darstellt;
    • 11C ein Blockdiagramm ist, das die Felder des speziellen vektorfreundlichen Befehlsformats, die das Registerindexfeld bilden, gemäß einer Ausführungsform darstellt;
    • 11D ein Blockdiagramm ist, das die Felder des speziellen vektorfreundlichen Befehlsformats, die das Steigerungsoperationsfeld bilden, gemäß einer Ausführungsform darstellt;
    • 12 ein Blockdiagramm einer Registerarchitektur gemäß einer Ausführungsform ist;
    • 13A ein Blockdiagramm ist, das eine beispielhafte geordnete Pipeline, eine beispielhafte Registerumbenennungs- und eine ungeordnete Ausgabe/Ausführungs-Pipeline gemäß einigen Ausführungsformen darstellt;
    • 13B ein Blockdiagramm ist, das sowohl eine beispielhafte Ausführungsform eines geordneten Architekturkerns als auch eines beispielhaften ungeordneten Registerumbenennungs-Ausgabe/Ausführungs-Architekturkerns, der in einem Prozessor enthalten sein soll, gemäß einigen Ausführungsformen darstellt;
    • 14A-B ein Blockdiagramm einer spezielleren beispielhaften geordneten Kernarchitektur darstellen, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne desselben Typs und/oder verschiedener Typen) in einem Chip wäre;
    • 14A ein Blockdiagramm eines einzelnen Prozessorkerns zusammen mit seiner Verbindung mit dem Verschaltungsnetz auf dem Chip und mit seiner lokalen Teilmenge des Cache der Ebene 2 (L2) gemäß einigen Ausführungsformen ist;
    • 14B eine erweiterte Ansicht eines Teils des Prozessorkerns in 14A gemäß einigen Ausführungsformen ist;
    • 15 ein Blockdiagramm eines Prozessors, der mehr als einen Kern aufweisen kann, eine integrierte Arbeitsspeichersteuereinheit aufweisen kann und eine integrierte Graphik aufweisen kann, gemäß einigen Ausführungsformen ist;
    • 16-19 Blockdiagramme von beispielhaften Computerarchitekturen sind;
    • 16 ein Blockdiagramm eines Systems gemäß einigen Ausführungsformen zeigt;
    • 17 ein Blockdiagramm eines ersten spezielleren beispielhaften Systems gemäß einer gewissen Ausführungsform ist;
    • 18 ein Blockdiagramm eines zweiten spezielleren beispielhaften Systems gemäß einigen Ausführungsformen ist;
    • 19 ein Blockdiagramm eines Systems auf einem Chip (SoC) gemäß einigen Ausführungsformen ist; und
    • 20 ein Blockdiagramm ist, das die Verwendung eines Software-Befehlsumsetzers, um binäre Befehle in einem Quellenbefehlssatz in binäre Befehle in einem Zielbefehlssatz umzusetzen, gemäß einigen Ausführungsformen gegenüberstellt.
  • AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • In der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt. Selbstverständlich können jedoch einige Ausführungsformen ohne diese speziellen Details ausgeführt werden. In anderen Fällen wurden gut bekannte Schaltungen, Strukturen und Techniken nicht im Einzelnen gezeigt, um das Verständnis dieser Beschreibung nicht unklar zu machen.
  • Bezugnahmen in der Patentbeschreibung auf „eine einzelne Ausführungsform“, „eine Ausführungsform“, „eine Beispielausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein Merkmal, eine Struktur oder eine Eigenschaft umfassen kann, aber jede Ausführungsform nicht notwendigerweise das Merkmal, die Struktur oder die Eigenschaft umfassen kann. Überdies beziehen sich solche Ausdrücke nicht notwendigerweise auf dieselbe Ausführungsform. Wenn ein Merkmal, eine Struktur oder eine Eigenschaft über eine Ausführungsform beschrieben ist, wird ferner unterbreitet, dass es innerhalb der Kenntnis eines Fachmanns auf dem Gebiet liegt, ein solches Merkmal, eine solche Struktur oder eine solche Eigenschaft über andere Ausführungsformen, falls explizit beschrieben, zu beeinflussen.
  • Offenbarte Ausführungsformen beschreiben eine vereinheitlichte Maschine, die den Polynomisomorphismus ausnutzt, um die AES (fortschrittliche Verschlüsselungsnorm), SMS4 und Camellia (CML) in einem gemeinsamen optimalen GF(24)2-Datenpfad mit einer Inline-Schlüsselerweiterung zu beschleunigen. Offenbarte Ausführungsformen vermeiden die Verwendung von Nachschlagetabellen, die Kosten und Fläche hinzufügen können. Es wird erwartet, dass der offenbarte vereinheitlichte AES/SMS4/CML-Verschlüsselungs/Entschlüsselungs-Hardware-Beschleuniger eine signifikante Flächenverbesserung gegenüber der Verwendung von separaten AES/SMS4/CML-Datenpfadimplementierungen schafft.
  • Obwohl AES-, SMS4- und CML-Geheimcodes ähnliche Substitutionsbox-Operationen (S-Box-Operationen) durchführen können, verwenden sie verschiedene Galois-Feld-Reduktionspolynome ((GF)GF(28)-Reduktionspolynome).
  • Eine Substitutionsbox (S-Box) ist eine Basiskomponente von Algorithmen eines symmetrischen Schlüssels, die eine Substitution durchführen. Im Allgemeinen kann eine S-Box eine gewisse Anzahl von Eingangsbits m nehmen und sie in eine gewisse Anzahl von Ausgangsbits n transformieren, wobei n nicht notwendigerweise gleich m ist. In der Mathematik wird der endliche Körper mit pn Elementen als GF(pn) bezeichnet und wird Galois-Feld genannt (wobei p eine Primzahl ist). Das Galois-Feld wird manchmal hier als vereinheitlichtes Feld oder vereinheitlichtes Galois-Feld bezeichnet.
  • AES kann das GF (28) -Reduktionspolynom x8+x4+x3+x+1 verwenden, während SMS4 das GF(28)-Reduktionspolynom x8+x7+x6+x5+x4+x2+1 verwenden kann und CML X2 + x + 1, x2 + x + 9 verwenden kann. Die Wahl des Reduktionspolynoms unterscheidet die Logik für Galois-Feld-Multiplikationen und inverse Berechnungen, was folglich die Verwendung von separaten Schaltungen für die AES- und SMS4-Hardware-Implementierungen erfordert. Das Implementieren von separaten zweckgebundenen Hardware-Beschleunigern für AES und SMS4 ist schwerfällig und ineffizient und kann zu einem signifikanten Flächen- und Leistungsaufwand führen.
  • Die hier beschriebenen Ausführungsformen verringern die Schaltungsfläche durch Vermeiden von separater Hardware für jede von AES, SMS und CML. Stattdessen gehen die offenbarten Ausführungsformen die AES/SMS/CML-Verschlüsselung und Entschlüsselung unter Verwendung eines einzelnen Hybrid-Hardware-Beschleunigers an, der umkonfiguriert werden kann, um AES-, SMS4- und CML-Verschlüsselung und/oder Entschlüsselung zu unterstützen. AES-, SMS4- und CML-Geheimcodes bestehen aus drei Hauptkomponenten: (1) der Addition eines Rundenschlüssels zu Zwischenrundendaten; (2) Substitutboxoperationen (S-Box-Operationen); und (3) Mischen an Bytegrenzen unter Verwendung von EXKLUSIV-ODER- oder Mischspaltenoperationen. Von diesen kann die S-Box die meiste Fläche und für die Leistungsfähigkeit kritische Operationen umfassen.
  • In einer Ausführungsform umfasst ein 128-Bit-Verschlüsselungs/Entschlüsselungs-Datenpfad, der für AES konfiguriert ist, 8 S-Box-Module, die für die Rundenberechnung und Schlüsselerweiterung mit einer Rate von 2,5 Taktzyklen pro Runde verwendet werden sollen. In anderen Ausführungsformen kann der 128-Bit-Verschlüsselungs/Entschlüsselungs-Datenpfad für SMS4 konfiguriert sein, in welchem Fall vier der 8 S-Box-Module für die Rundenberechnung und die anderen vier der 8 S-Box-Module für die Schlüsselerweiterung verwendet werden, um eine Gesamtrate von einer Runde pro Zyklus zu erreichen. Hinsichtlich CML erfordern die Rundenberechnung und Schlüsselerweiterung jeweils 8 S-Boxen, so dass ein Hilfsschlüssel in den anfänglichen 4 Zyklen berechnet wird, gefolgt von 20 Zyklen der Rundenberechnung, was einen Durchsatz von 20 Runden über 25 Zyklen oder 1,2 Taktzyklen pro Runde für 24 Zyklen ergibt.
  • Der hier beschriebene Hybrid-Verschlüsselungs/Entschlüsselungs-Hardware-Beschleuniger kann zu einer signifikanten Flächenverbesserung gegenüber separaten AES/SMS4-Datenpfadimplementierungen führen. Die Flächeneinsparungen können unter Verwendung von gemeinsamen Galois-Feld-Inversionsschaltungen erreicht werden, von denen erwartet wird, dass sie viel weniger Schaltungsfläche erfordern als separate AES/SMS4-S-Box-Implementierungen. Um den Bedarf zu vermeiden, separate Implementierungen zu haben, wählen offenbarte Ausführungsformen Grund- und Erweiterungsfeldpolynome aus, die für AES-, SMS4- und CML-Berechnungen arbeiten. Der hier beschriebene Hybrid-AES-SMS4-CML-Hardware-Beschleuniger kann in irgendeiner Logikvorrichtung implementiert werden, einschließlich jedoch nicht begrenzt auf einen Prozessor, einen Prozessorkern, einen Netzprozessor, einen mobilen Prozessor, ein anwenderprogrammierbares Verknüpfungsfeld (FPGA) und einen Web-Server.
  • Offenbarte Ausführungsformen umfassen mehrere Aspekte, Merkmale und Vorteile, wie zumindest in Bezug auf 1-8 beschrieben und dargestellt, einschließlich, jedoch nicht begrenzt auf:
    • - Die Kosten- und Energieeffizienz wird unter Verwendung eines gemeinsam genutzten vereinheitlichten AES-SMS4-CML-Datenpfades mit einer Inline-Schlüsselerweiterung, die um 8 S-Boxen organisiert ist, um 100 % für AES und SMS4 und 92 % für Camellia verbessert. Die Camellia-Verschlüsselung beinhaltet 18 Zyklen von Rundenverarbeitung plus 4 Zyklen von Schlüsselerweiterung, die alle 100 % von S-Boxen verwenden. Der Camellia-Geheimcodeblock führt jedoch 2 spezielle Operationen nach Runde 6 und Runde 12 durch, für die 2 zusätzliche Zyklen aufgewendet werden. Diese 2 speziellen Operationen verwenden keine S-Boxen, so dass die CML-Nutzung 92 % ist, was S-Boxen entspricht, die in 22 der 24 Zyklen verwendet werden.
    • - Zusätzlich zur S-Box-Optimierung werden andere rechenintensive Operationen wie AES-Mischspalten mit multiplikationslosen Schaltungen implementiert, um die Verzögerung des kritischen Pfades über alle Geheimcodemodi für höhere Leistung anzupassen.
    • - Eine 2,5-Zyklus/AES-Rundenarchitektur nutzt die Anwesenheit des Hilfsschlüsselregisters von Camellia aus, um vorberechnete Schlüssel anschließender Runden zu halten und folglich Stillstände zwischen aufeinander folgenden Runden zu beseitigen.
    • - AES, SMS4 und Camellia erfordern eine unterschiedliche Anzahl von S-Boxen in verschiedenen Stufen der Rundenberechnung und Schlüsselerweiterung. Von hier offenbarten Ausführungsformen wird erwartet, dass sie die Flächeneffizienz der Implementierung zum Beschleunigen von AES-, SMS4-, Camellia-Geheimcodes und anstelle der Implementierung von Blockgeheimcodes mit separaten Geheimcodebeschleunigern Teilen eines einzelnen, vereinheitlichten Beschleunigers unter den mehreren Blockgeheimcodes optimieren, wodurch Fläche eingespart wird.
  • 1 ist ein Blockdiagramm, das Verarbeitungskomponenten zum Ausführen eines Geheimcodebefehls gemäß einigen Ausführungsformen darstellt. Wie dargestellt, speichert ein Speicher 101 (einen) auszuführende(n) Geheimcodebefehl(e) 103. Wie nachstehend weiter beschrieben, ist in einigen Ausführungsformen das Rechensystem 100 ein SIMD-Prozessor, um gleichzeitig mehrere Elemente von Vektoren von gepackten Daten zu verarbeiten.
  • Im Betrieb wird (werden) der (die) Geheimcodebefehl(e) 103 aus dem Speicher 101 durch eine Abrufschaltungsanordnung 105 abgerufen. Der abgerufene Geheimcodebefehl 107 wird durch eine Decodierschaltungsanordnung 109 decodiert. Das Geheimcodebefehlsformat, das mit Bezug auf 9, 10A-B und 11A-D weiter dargestellt und beschrieben wird, weist Felder (hier nicht gezeigt) auf, um einen Operationscode, einen kryptographischen Modus, eine Operation, ein Datenelement und einen Schlüssel festzulegen. Der Operationscode soll beschreiben, welcher Blockgeheimcodemodus anzuwenden ist, und ob verschlüsselt oder entschlüsselt werden soll. Die Decodierschaltungsanordnung 109 decodiert den abgerufenen Geheimcodebefehl 107 in eine oder mehrere Operationen. In einigen Ausführungsformen umfasst diese Decodierung das Erzeugen von mehreren durch die Ausführungsschaltungsanordnung (wie z. B. die Ausführungsschaltungsanordnung 119) durchzuführenden Mikrooperationen. Die Decodierschaltungsanordnung 109 decodiert auch Befehlssuffixe und Befehlspräfixe (falls verwendet).
  • In einigen Ausführungsformen schafft eine Registerumbenennungs-, Registerzuweisungs- und/oder Zeitplanungsschaltung 113 eine Funktionalität für ein oder mehrere von: 1) Umbenennung von logischen Operandenwerten in physikalische Operandenwerte (z. B. in einigen Ausführungsformen eine Registeraliastabelle), 2) Zuweisen von Statusbits und Flags zum decodierten Befehl, und 3) Zeitplanung des decodierten Geheimcodebefehls 111 für die Ausführung an der Ausführungsschaltungsanordnung 119 aus einer Befehlssammlung (z. B. unter Verwendung einer Reservierungsstation in einigen Ausführungsformen). Die Registerumbenennungs-, Registerzuweisungs- und/oder Zeitplanungsschaltung 113 ist insofern optional, wie durch ihren gestrichelten Rand angegeben, als sie zu einer anderen Zeit in der Pipeline oder überhaupt nicht vorkommen kann.
  • Das Rechensystem 100 umfasst auch einen Geheimcodebeschleuniger 117, der eine Verschlüsselung und Entschlüsselung gemäß einer fortschrittlichen Verschlüsselungsnorm (AES), SMS4 oder Camellia (CML) in Abhängigkeit davon durchführen soll, welcher Modus durch den Operationscode ausgewählt wird. Der Geheimcodebeschleuniger 117 ist als in die Ausführungsschaltungsanordnung 119 integriert dargestellt, aber in einigen Ausführungsformen befindet sich der Geheimcodebeschleuniger 117 außerhalb der Ausführungsschaltungsanordnung. Der Geheimcodebeschleuniger 117 wird nachstehend mit Bezug auf 2A-8 weiter dargestellt und beschrieben.
  • Die Ausführungsschaltungsanordnung 119 soll den decodierten Befehl durchführen. Wenn der Operationscode des decodierten Befehls einen gemäß einem der hier offenbarten Modi durchzuführenden Blockgeheimcode aufruft, konfiguriert die Ausführungsschaltungsanordnung 119 den Geheimcodebeschleuniger 117, um die Kryptographie durchzuführen, sei es Codierung oder Decodierung. In einigen Ausführungsformen, wie mit Bezug auf 8 weiter beschrieben und dargestellt, führt der Geheimcodebeschleuniger 117 eine Runde (Vorgabewert) oder mehrere Runden (wie durch einen Befehlsoperanden festgelegt) des festgelegten Algorithmus durch. Die Ausführungsschaltungsanordnung 119 wird nachstehend zumindest mit Bezug auf 2A-8, 13A-B und 14A-B weiter beschrieben und dargestellt.
  • Register (Registerdatei) und/oder ein Arbeitsspeicher 115 speichern Daten als Operanden des durch die Ausführungsschaltungsanordnung 119 zu bearbeitenden decodierten Geheimcodebefehls 111. Beispielhafte Registertypen umfassen Schreibmaskenregister, Register für gepackte Daten, Universalregister und Gleitkommaregister, wie nachstehend zumindest mit Bezug auf 12 weiter beschrieben und dargestellt.
  • In einigen Ausführungsformen, übergibt eine Rückschreibschaltung 121 das Ergebnis der Ausführung des decodierten Geheimcodebefehls 111. Die Ausführungsschaltungsanordnung 119 und das System 100 werden mit Bezug auf 2A-8, 13A-B, 14A-B und 15-19 weiter dargestellt und beschrieben.
  • 2A ist ein Blockdiagramm, das einen Geheimcodebeschleuniger gemäß einigen Ausführungsformen darstellt. Der Geheimcodebeschleuniger 200 unterstützt eine AES/SMS4/CML-Rundenberechnung und Schlüsselerweiterung, die 16/4/8 bzw. 4/4/8 S-Boxen erfordern. Wie gezeigt, umfasst der Geheimcodebeschleuniger 200 ein 128-Bit-Klar /Geheimcode-Text-Register 202, zwei Schlüsselregister 204 und 205 (wobei das letztere zur Verwendung durch CML bestimmt ist, aber durch AES ausgenutzt wird, wie nachstehend beschrieben), Geheimcodekonstantengeneratoreinheiten 206, 208 und 210, eine Inversmischspalteneinheit 211 (für die Verwendung durch AES), einen Multiplexer 214, um Eingangsdaten in die S-Boxen 216 auszuwählen (die FL- und FL-1-Funktionen für die Verwendung durch Camellia umfassen können), eine Modussteuereinheit 212, um Steuersignale für den Multiplexer 214 zu erzeugen, zusätzliche Operationseinheiten 218, 220 und 222 für die Verwendung durch AES, SMS4 und Camellia und eine Mischspalteneinheit 223 für die Verwendung durch AES. Der Geheimcodebeschleuniger 200 umfasst ferner Multiplexer 224 und 226, um eine Datenpfadausgabe auszuwählen, die entweder in die Eingangsdatenregister 202 oder Schlüsselregister 204 und 205 geschrieben werden soll.
  • Der Geheimcodebeschleuniger 200, wie dargestellt, verbessert den Prozessorgeheimcodedurchsatz und die S-Box-Effizienz. Um 8 Hybrid-S-Boxen 216 (und zwei zusätzliche FL- und FL-1-Funktionen zur Verwendung durch Camellia) organisiert maximiert der Geheimcodebeschleuniger 200 die S-Box-Nutzung, wobei eine Nutzung von 100 % in AES- und SMS4-Modi und eine Nutzung von 92 % im CM-Modus erreicht wird, wie vorstehend beschrieben.
  • Im Betrieb verbraucht der Geheimcodebeschleuniger 200, der in einem von drei Modi, AES, SMS4 und CML, arbeitet, 128-Bit-Klar/Geheimcode-Text 202 (d15:0) (verbraucht Klartext, wenn er verschlüsselt/verbraucht Geheimcodetext, wenn er entschlüsselt) und einen Schlüssel (KL15:0) von zwei 128b-Registern 202 und 204 und führt verarbeitete Daten in einer Reihenverschiebungs/Wortpermutations/DWort-Permutations-Reihenfolge jeweils in AES/SMS4/CML-Modi zurück.
  • Wenn er im CML-Modus arbeitet, erfordert der CML-Blockgeheimcode, der den CML-Algorithmus betreibt, einen gleichzeitigen Zugriff auf den Basisschlüssel, der im Basisschlüsselregister 204 gespeichert ist, und den erweiterten Schlüssel, der in einem zusätzlichen Hilfsregister (KA15:0) 205 gespeichert ist (das Register 205 wird opportunistisch für AES-Schlüsselvorberechnung verwendet, um einen Schlüssel für die Verwendung in einem anschließenden Taktzyklus zu speichern (später genauer erläutert)) .
  • Im Betrieb werden die Operandenumsetzung und alle GF(24)2-Berechnungen innerhalb die S-Box und Mischspalten/Inversmischspalteneinheiten eingeschränkt. Dies beseitigt den Bedarf an irgendeiner Abbildungslogik im Schlüsselerweiterungsdatenpfad, da Daten immer zum Pipelineregister in ihrer jeweiligen nativen GF(28)-Domäne zurückgeführt werden. Diese Methode vereinfacht auch die Rundenkonstantenerzeugungsschaltung, die unter Verwendung von einfachen 1b-Rotations- und 8b-Addiererschaltungen implementiert werden kann.
  • 2B stellt eine vereinheitlichte Rundenkonstantengeneratorschaltung gemäß einigen Ausführungsformen dar. Wie gezeigt, umfasst die vereinheitlichte Rundenkonstantengeneratorschaltung 250 eine 32-Bit-Konstante 252, Keimregister α1 - α4 254, 256, 258 und 260, 1-Bit-Rotatoren 262 und 264, einen Multiplexer 266 und vier 8-Bit-Addierer 268, um ein 32-Bit-Ergebnis 270 in einem der CML- AES- oder SMS4-Modi zu erzeugen. Die offenbarten Ausführungsformen und Ansprüche hier sollen nicht auf irgendeine spezielle Konstantengeneratorschaltung begrenzt sein; mehrere verschiedene solche Schaltungen können bei den offenbarten Ausführungsformen ohne Begrenzung verwendet werden.
  • 3 stellt eine Rundenberechnungs- und Schlüsselerweiterungszeitsteuerung von AES/SMS/CML-Abläufen gemäß einigen Ausführungsformen dar. Im Betrieb vollendet der Geheimcodebeschleuniger 200 10 AES-Verschlüsselungsrunden mit verschachtelter Schlüsselerweiterung in 25 Zyklen. Im SMS4-Modus werden die 32 SMS4-Runden gleichzeitig mit einer Schlüsselerweiterung berechnet, was zu einer Latenz von 32 Zyklen führt.
  • Im CML-Modus erstreckt sich die Hilfsschlüsselberechnung über anfängliche 4 Zyklen, gefolgt von 20 Zyklen von Rundenberechnung für eine Latenz von 24 Zyklen. Wie gezeigt, werden im CML-Modus die ersten vier Taktzyklen (Zyklus 0 bis 3) für die Schlüsselerweiterung verwendet. Anschließend werden der Zyklus 4 bis 23 (wobei die Zyklen 5-23 nicht gezeigt sind) verwendet, um Runden zu berechnen. Obwohl die Camellia-Norm 18 Runden festlegt, verarbeitet die offenbarte Ausführungsform Camellia in 20 Zyklen, da eine spezielle FL- und FL-1-Funktion nach der Runde 6 und Runde 12 vorhanden ist, die 2 zusätzliche Zyklen erfordert. Somit wenden im CML-Modus die offenbarten Ausführungsformen vier Taktzyklen für die Schlüsselerweiterung, zwei Taktzyklen für die spezielle FL- und FL-1-Funktion und 18 Zyklen für die Rundenberechnung auf. Da die offenbarten Ausführungsformen 18 Runden in 24 Zyklen verarbeiten, ist der CML-Durchsatz ungefähr 1,3 Zyklen pro Runde.
  • In einigen Ausführungsformen soll der Geheimcodebeschleuniger 200, wenn er im CML-Modus arbeitet, die zwei Intra-Feistel-CML-Umstellungsfunktionen 217 (FL/FL-1) von der regulären S-Box-Operation trennen, was die Verzögerung des kritischen Pfades verbessert.
  • AES-OPTIMIERUNG (AUSLEIHEN VON CML-RESSOURCEN)
  • Die AES-Schlüsselerweiterung erfordert nur 4 von 8 S-Boxen. Daher würde das explizite Berechnen des Schlüssels der nächsten Runde in einem Taktzyklus zu einer S-Box-Nutzung von 50 % führen. Anstelle der Einschränkung der Runden- und Schlüsselberechnung auf separate Zyklen erweitert in einigen Ausführungsformen der Geheimcodebeschleuniger die Schlüssel für die nächsten 2 Runden gleichzeitig mit der Geheimcodeverarbeitung. Wie gezeigt, läuft der AES-Ablauf in einer Runde auf der Basis von 16 Bytes und erzeugt die Schlüsselerweiterung auf der Basis von 8 Bytes während der Takte 0-2. Die auf der Basis dieser acht Bytes erzeugten Schlüssel sollen als Schlüssel sowohl in der aktuellen Runde als auch der nächsten Runde dienen. Die 128b-Daten werden in 2 Zyklen in 64b-Stücken verarbeitet, indem von dem Schlüssel Gebrauch gemacht wird, der in der vorherigen Runde vorberechnet wurde. Das CML-Hilfsregister speichert den zusätzlichen vorberechneten Schlüssel, was eine 2,5-Zyklus/AES-Runde und S-Box-Nutzung von 100 % ermöglicht.
  • POLYNOMOPTIMIERUNG
  • 4A stellt optimale Reduktionspolynome für eine AES-SMS4-Camellia-Hybrid-S-Box gemäß einigen Ausführungsformen dar. AES- und SMS4-Normen sind in GF(28) durch das AES-GF (2)8-Polynom x8+x4+x3+x+1, das als 402 bezeichnet ist, und SMS4-GF(2)8-Polynom x8+x7+x6+x5+x4+x2+1, das als 404 bezeichnet ist, definiert. Das CML-Polynom ist als Camellia-GF(24)2-Polynom x4+x+1, x2+x+9 definiert, das als 406 bezeichnet ist (das Komma bedeutet, dass 8-Bit-Daten in einem neuen Format von zwei 4-Bit-Größen dargestellt werden, was die Kosten und die Fläche der erforderlichen Schaltungsanordnung vereinfacht und verringert, da zwei 4-Bit-Berechnungen durchgeführt werden und später kombiniert werden, um ein 80-Bit-Ergebnis zu bilden, anstatt das Ergebnis im 8-Bit-Format zu berechnen. Im Betrieb soll der vereinheitlichte Geheimcodedatenpfad ein Polynom achter Ordnung isomorph äquivalent zu jedem Polynom berechnen, das durch drei Blockgeheimcodes verwendet wird, wobei das Polynom achter Ordnung durch Berechnung implementiert wird. Als Kostenverringerungsoptimierung wird das Polynom achter Ordnung durch Berechnen und dann Kombinieren von zwei Polynomen vierter Ordnung implantiert. In einigen Ausführungsformen findet die Umsetzung von 4-Bit-Werten in ein 8-Bit-Ergebnis statisch statt.
  • Jede Wahl des vereinheitlichten Feldes führt zu einer eindeutigen Datenpfad-Hardware-Implementierung. Eine zweistufige Optimierungsmethode bewertet erschöpfend den isomorphen Raum unter Verwendung eines parametrisierten Registerübertragungsebenenmodells (RTL-Modells) der Hardware-Implementierung, das eine Abschätzung der Schaltungsfläche für die Implementierung der gewählten Polynome der Hybrid-S-Box und abgebildeten affinen Transformationen schafft (4B). Der erste Schritt bewertet 23040 Entwürfe für eine AES-SMS4-S-Box, was x4+x+1, x2+x+8 für die optimale Abbildung ergibt, was Flächeneinsparungen von 1,8x bereitstellt. Der zweite Schritt bewertet 128 mögliche Weisen, um CML in dieses optimale Feld durch AES- und SMS4-Polynome zu übersetzen. Obwohl dieses Optimierungskonzept im Zusammenhang mit dem Minimieren von Fläche erläutert wurde, kann es auch angewendet werden, um die S-Box auszuwählen, um die Leistungsfähigkeit zu maximieren.
  • 4B ist ein Graph, der eine simulierte Schaltungsfläche für verschiedene Hybrid-Substitutionsbox- (S-Box) Polynom/Wurzel-Kombinationen gemäß einigen Ausführungsformen darstellt. Die Abbildungsmatrix für die Umsetzung von GF(28) auf GF(24)2 und umgekehrt kann durch Darstellen der Wurzel Δ eines Reduktionspolynoms f(x) hinsichtlich der Wurzeln eines Grundfeldpolynoms g(x) und Erweiterungsfeldpolynoms p(x) erhalten werden. In einer Ausführungsform werden das Grundfeldpolynom und das Erweiterungsfeldpolynom zu gemeinsamen Berechnungen durch die S-Box für den ersten, den zweiten und den dritten Blockgeheimcode 402, 404 und 406 im zusammengesetzten Feld GF(24)2 optimiert.
  • Der Graph 425 zeigt die Flächenausbreitung für die Polynomuntersuchung über zehntausende Kombinationen, die den isomorphen AES-SMS4-CML-Raum darstellen. Gemäß einigen Ausführungsformen wird AES-SMS4-CML erschöpfend durchsucht, um ein optimales zusammengesetztes Feld, zusammengesetztes GF(24)2-Feld zu identifizieren, das zur kleinsten vereinheitlichten S-Box und zum kleinsten Geheimcodebeschleuniger führt. Für eine leichte Darstellung ist nur eine kleine Teilmenge der Polynome aufgetragen. In einer beispielhaften Implementierung wurde eine S-Box-Fläche von 72 µm2 für die Polynome x4+x+1 (Grundfeld) und x2+x+1 (Erweiterungsfeld) erhalten, die am Punkt 430 des Graphen bezeichnet sind. Dies ist eine signifikante Flächenverbesserung im Vergleich zur separaten S-Box-Implementierung für die drei Blockgeheimcodes. In verschiedenen anderen Ausführungsformen können andere Grundfeld- und Erweiterungsfeldpolynome verwendet werden. Die tatsächliche Fläche der optimierten S-Box kann ohne Begrenzung variieren.
  • 4C ist ein Blockablaufdiagramm, das einen Prozess zum Auswählen eines optimalen Polynoms für eine vereinheitlichte S-Box gemäß einigen Ausführungsformen darstellt. Wie gezeigt, soll der Prozess 450 bei der Operation 452 das Polynom 1: X4 + a3 X3 + a2 X2 + a1X + a0 auswählen und soll bei der Operation 454 das Polynom 2: X2 + αX + β auswählen. Bei 454 werden nicht reduzierbare Instanzen des Polynoms 1 ausgewählt und bei 458 werden nicht reduzierbare Instanzen des Polynoms 2 ausgewählt. Bei 460 wird ein isomorphes GF(24)2-Feld ausgewählt. Bei 462 werden 2880 MA/MA -1 berechnet. Bei 464 werden für jedes MA 8 MS/MS -1 berechnet. Bei 466 werden optimale MA und MS aus 23040 Wahlen ausgewählt. Bei 468 werden 128 MC/MC -1 berechnet. Bei 470 wird das optimale MC ausgewählt und der Prozess endet.
  • 5 ist ein Blockdiagramm, das eine Hybrid-GF(24)2-Substitution-Box (S-Box) mit abgebildeten affinen und gemeinsam genutzten Inversionsschaltungen gemäß einigen Ausführungsformen darstellt. Wie gezeigt, umfasst die Hybrid-S-Box 510 eine Inversionsschaltung 514, von der eine aufgeblasene Version bei 502 gezeigt ist, und acht Abbildungsschaltungen 512, 514, 518, 520, 522, 524, 526 und 526, wobei eine beispielhafte aufgeblasene Version der Schaltung 520 bei 550 gezeigt ist.
  • AES/SMS4/CML-S-Box-Implementierungen beinhalten affine Transformationen und eine GF(28)-Inversion, die für eine Mehrheit der gesamten S-Box-Fläche verantwortlich sind. Die spezielle inverse Standardberechnung auf Reduktionspolynombasis verringert jedoch das Potential für die Logikwiederverwendung in herkömmlichen Konstruktionen. Dagegen nutzt die Hybrid-S-Box den Isomorphismus von GF(28) zu GF(24)2 aus, um Operanden von AES/SMS4/CML-spezifischen Feldern in ein eindeutiges zusammengesetztes Feld zu übersetzen, was eine Inversionsteilung ermöglicht (siehe 4A). Die Fusion der Matrizen der Abbildung (MA,MS,MC) und der inversen Abbildung (MA -1, MS -1, MC -1) für die Feldumsetzung mit existierenden affinen AES/SMS4/CML-Transformationen ergibt neue abgebildete Transformationen mit einer ähnlichen Logikkomplexität, ohne sich auf die Verzögerung des kritischen Pfades auszuwirken, während die S-Box-Fläche durch Ersetzen der 8b-Multiplikations- und Inversionseinheiten durch 4b-Schaltungen verringert wird.
  • Die Hybrid-S-Box 510 umfasst eine inverse Operation 514, von der eine aufgeblasene Version bei 502 dargestellt ist. wie gezeigt, umfasst die 8-Bit-Inversoperationsschaltung 502 Addierer 503A und 503CX, Multiplizierer 503B, 503D und 503E, eine Quadrierungsschaltung 504 und eine 4-Bit-Inversionsoperationsschaltung 506. Die Quadrierungsschaltung 504 soll das Quadrat von 4 Bits der 8-Bit-Eingabe nehmen und acht addieren. Die 4-Bit-Inversoperationsschaltung 506 ist kleiner und weniger komplex als eine 8-Bit-Inversoperation wäre. In einigen Ausführungsformen wird die 4-Bit-Inversoperation mit einer Nachschlagetabelle (LUT) implementiert und in anderen Ausführungsformen wird sie mit einer Schaltungsanordnung berechnet. Die Hybrid-Inversoperationsschaltung 502 ist viel leichter zu implementieren und erfordert weniger Schaltung als ein 8-Bit-Inverter würde. Wie zu sehen ist, soll die Inversoperationsschaltung 502 eine Eingabe von einer 8-Bit-Domäne in zwei 4-Bit-Domänen aufbrechen. Durch Übersetzen von Eingangsoperanden von ihrem ursprünglichen 8-Bit-Format in zwei 4-Bit-Operanden, werden sie viel preisgünstiger zu verarbeiten gemacht. Um das Inverse zu berechnen, muss nur mit einer 4-BitZahl gerechnet werden. Nach den relativ einfachen 4-Bit-Multiplikationen 504 und 506 werden zwei 4-Bit-Ausgaben erzeugt und werden miteinander kombiniert, um eine 8-Bit-Ausgabe zu bilden.
  • Die Hybrid-S-Box 510 umfasst auch acht Abbildungsschaltungen 512, 514, 518, 520, 522, 524, 526 und 526, von denen eine beispielhafte aufgeblasene Version bei 550 gezeigt ist. Wie gezeigt, soll die Abbildungsschaltung 550 auch die Eingabe X mit A multiplizieren und mit C addieren. Es sollte beachtet werden, dass Hybrid-S-Box 510 sowohl So als auch 2 x S0 ausgibt, was ermöglicht, dass der AES-Geheimcodeblock die Verwendung eines Multiplizierers, um die Skalierung durchzuführen, vermeidet, wie nachstehend weiter beschrieben wird.
  • 6 ist eine multiplikationslose Mischspaltenschaltung der fortschrittlichen Verschlüsselungsnorm (AES) gemäß einigen Ausführungsformen. Gemäß einigen offenbarten Ausführungsformen ist eine Multiplikationsoperation aus dem AES-Datenfluss entfernt. Ohne die Optimierung führen AES-Datenpfade Mischspaltenoperationen durch Skalieren von S-Box-Ausgangsbytes mit (1,2,2,3) durch. Solche Skalierungsschaltungen erfordern eine 8b-Multiplikation, gefolgt von Reduktion, was einen signifikanten Nachteil umfassen kann.
  • Da SMS4 und CML keine Multiplikation in ihren Abläufen umfassen, beseitigen stattdessen die offenbarten Ausführungsformen die Multiplikationsoperation, die zum Durchführen von komplexen Skalierungsfaktoren (B,D,E,9) erforderlich ist. Im Gegensatz zu einer herkömmlichen seriellen S-Box, gefolgt von Mischspaltenverarbeitung berechnet der vereinheitlichte Datenpfad S-Box-Ausgaben und ihre entsprechenden skalierten Ausgaben (x2) gleichzeitig unter Verwendung von skalierten affinen Matrizen, wie in 6 dargestellt.
  • Mit Bezug auf 2 und 5 liefern die S-Boxen, die im offenbarten Geheimcodebeschleuniger enthalten sind, jeweils eine S-Box-Ausgabe (1x) und eine skalierte S-Box-Ausgabe (2x), die in einigen Ausführungsformen addiert werden, um die erforderliche skalierte Ausgabe (x3) zu erzeugen. Dies beseitigt die Multiplikation vom kritischen AES-Mischspaltenpfad und gleicht die Verzögerung des kritischen Pfades über alle drei Geheimcodemodi aus. Für Inversmischspalten werden Eingangsbytes einer affinen Skalierung unterzogen, die gleichzeitig sie mit geeigneten Faktoren entlang einer Translation von GF(28) zu GF(24)2 vor der S-Box-Operation (4A) multipliziert. Die Abwesenheit einer expliziten Multiplikation im AES-Mischspalten/Inversmischspalten-Schritt verbessert die Datenpfadverzögerung.
  • 7 ist ein Blockdiagramm, das eine P-Funktion für die Verwendung beim Durchführen eines Camellia-Algorithmus gemäß einigen Ausführungsformen darstellt. Das Trennen der zwei Intra-Feistel-CML-Umstellungsfunktionen (FL/FL-1) von der regulären S-Box-Operation und die parallele Ausführung von Schritten von AES-Inversmischspalten/Mischspalten mit SMS4-Mischung/CML-P (siehe 2) verbessert weiter die Verzögerung des kritischen Pfades.
  • 8 ist ein Blockablaufdiagramm, das darstellt, dass ein Prozessor einen Geheimcodebefehl ausführt, gemäß einigen Ausführungsformen. Wie gezeigt, beginnt der Ablauf 800 bei 802, wo eine Recheneinrichtung wie z. B. ein Prozessor unter Verwendung einer Abrufschaltungsanordnung einen Geheicodebefehl abrufen soll, der ein Datenelement, einen Schlüssel und einen Operationscode festlegt, um einen von drei Modi und eine Operation festzulegen. In offenbarten Ausführungsformen sind die drei Modi AES, SMS4 und CML. Bei 804 soll die Rechenvorrichtung unter Verwendung der Decodierschaltungsanordnung den abgerufenen Geheimcodebefehl decodieren. Bei 806 soll die Recheneinrichtung auf den decodierten Geheimcodebefehl unter Verwendung eines ausgewählten von drei Blockgeheimcodes, die dem festgelegten kryptographischen Modus entsprechen, und eines vereinheitlichten Geheimcodedatenpfades, der durch die drei Blockgeheimcodes gemeinsam genutzt wird, reagieren, wobei der vereinheitlichte Geheimcodedatenpfad mehrere Hybrid-Substitutionsboxen (S-Boxen) umfasst, um Galois-Feld-Multiplikationen (GF-Multiplikationen) und inverse Berechnungen durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad ein Polynom achter Ordnung isomorph äquivalent zu jedem Polynom berechnen soll, das durch die drei Blockgeheimcodes verwendet wird, wobei das Polynom achter Ordnung durch Berechnen und dann Kombinieren von zwei Polynomen vierter Ordnung implementiert wird. In einigen Ausführungsformen soll der Prozessor bei 808 Ausführungsergebnisse zurückschreiben und den Geheimcodebefehl zurückziehen. Die Operation 808 ist insofern optional, wie durch ihre gestrichelten Ränder angegeben, als sie zu einer anderen Zeit oder überhaupt nicht stattfinden kann.
  • 9 ist ein Format eines Geheimcodebefehls gemäß einigen Ausführungsformen. Wie gezeigt, umfasst der Geheimcodebefehl 900 den Operationscode 902 (AES/SMS4/CML-ENC/DEC*) und Felder, um die Quelle 1 906 (Datenelement) und Quelle 2 908 (Schlüssel) festzulegen. Der Geheimcodebefehl 900 umfasst ferner optionale Felder, um eine Anzahl von Runden 910 ([1], 10, 12, 14, 18, 24 und 32) und eine Schlüssellänge 912 hinsichtlich einer Anzahl von Bits festzulegen. In einigen Ausführungsformen legt der Geheimcodebefehl 900 auch ein Ziel 904 fest. Wenn das Ziel 904 nicht enthalten ist, soll der Prozessor ein Ergebnis der Operation in die Quelle 1 906 schreiben. Wie durch ihre gestrichelten Ränder angegeben, sind das Ziel 904, das Datenformat 910 und die Schlüssellänge 912 insofern optional, als sie weggelassen werden können, in welchem Fall die Quelle 1 906 als Ziel dient, eine Vorgabeanzahl von Runden (1) und eine Vorgabeschlüssellänge (128) verwendet werden. Der Operationscode 902 ist als einen Stern umfassend gezeigt, um anzugeben, dass er optional zusätzliche Präfixe oder Suffixe umfassen kann, um Befehlsverhaltensweisen festzulegen. Wenn der Geheimcodebefehl 900 keinen der optionalen Parameter festlegt, werden vorbestimmte Vorgabewerte angewendet, wie erforderlich. Das Format des Geheimcodebefehls 900 wird mit Bezug auf 10A-B, 11A-D weiter dargestellt und beschrieben.
  • BEFEHLSSÄTZE
  • Ein Befehlssatz kann ein oder mehrere Befehlsformate umfassen. Ein gegebenes Befehlsformat kann verschiedene Felder (z. B. Anzahl von Bits, Ort von Bits) definieren, um unter anderem die durchzuführende Operation (z. B. Operationscode) und den (die) Operanden, an denen diese Operation durchgeführt werden soll, und/oder (ein) andere(s) Datenfeld(er) (z. B. Maske) festzulegen. Einige Befehlsformate sind ferner durch die Definition von Befehlsvorlagen (oder Unterformaten) weiter aufgegliedert. Die Befehlsvorlagen eines gegebenen Befehlsformats können beispielsweise so definiert sein, dass sie verschiedene Teilmengen der Felder des Befehlsformats aufweisen (die enthaltenen Felder liegen typischerweise in derselben Reihenfolge vor, aber zumindest einige weisen verschiedene Bitpositionen auf, da weniger Felder enthalten sind), und/oder so definiert sein, dass ein gegebenes Feld unterschiedlich interpretiert wird. Folglich wird jeder Befehl einer ISA unter Verwendung eines gegebenen Befehlsformats (und falls definiert, in einer gegebenen der Befehlsvorlagen dieses Befehlsformats) ausgedrückt und umfasst Felder zum Festlegen der Operation und der Operanden. Ein beispielhafter ADDIEREN-Befehl weist beispielsweise einen speziellen Operationscode und ein Befehlsformat auf, das ein Operationscodefeld, um diesen Operationscode festzulegen, und Operandenfelder, um Operanden (Quelle 1/Ziel und Quelle 2) auszuwählen, umfasst; und ein Auftreten dieses ADDIEREN-Befehls in einem Befehlsstrom weist spezielle Inhalte in den Operandenfeldern auf, die spezielle Operanden auswählen. Ein Satz von SIMD-Erweiterungen, die als fortschrittliche Vektorerweiterungen (AVX) (AVX1 und AVX2) bezeichnet werden und das Codierschema der Vektorerweiterungen (VEX) verwenden, wurde ausgegeben und/oder veröffentlicht (z. B. siehe Intel® 64 und IA-32 Architectures Software Developer's Manual, September 2014; und siehe Intel® Advanced Vector Extensions Programming Reference, Oktober 2014).
  • BEISPIELHAFTE BEFEHLSFORMATE
  • Ausführungsformen des (der) hier beschriebenen Befehls (Befehle) können in verschiedenen Formaten verkörpert sein. Außerdem werden beispielhafte Systeme, Architekturen und Pipelines nachstehend ausführlich beschrieben. Ausführungsformen des Befehls (der Befehle) können an solchen Systemen, Architekturen und Pipelines ausgeführt werden, sind jedoch nicht auf die ausführlich beschriebenen begrenzt.
  • ALLGEMEINES VEKTORFREUNDLICHES BEFEHLSFORMAT
  • Ein vektorfreundliches Befehlsformat ist ein Befehlsformat, das für Vektorbefehle geeignet ist (z. B. sind bestimmte Felder vorhanden, die für Vektoroperationen spezifisch sind). Obwohl Ausführungsformen beschrieben werden, in denen sowohl Vektor- als auch Skalaroperationen durch das vektorfreundliche Befehlsformat unterstützt werden, verwenden alternative Ausführungsformen nur Vektoroperationen im vektorfreundlichen Befehlsformat.
  • 10A-10B sind Blockdiagramme, die ein allgemeines vektorfreundliches Befehlsformat und Befehlsvorlagen davon gemäß einigen Ausführungsformen der Erfindung darstellen. 10A ist ein Blockdiagramm, das ein allgemeines vektorfreundliches Befehlsformat und Befehlsvorlagen der Klasse A davon gemäß einigen Ausführungsformen der Erfindung darstellt; während 10B ein Blockdiagramm ist, das das allgemeine vektorfreundliche Befehlsformat und Befehlsvorlagen der Klasse B davon gemäß Ausführungsformen der Erfindung darstellt. Insbesondere ein allgemeines vektorfreundliches Befehlsformat 1000, für das Befehlsvorlagen der Klasse A und Klasse B definiert sind, die beide Befehlsvorlagen für einen Nicht-Arbeitsspeicherzugriff 1005 und Befehlsvorlagen für einen Arbeitsspeicherzugriff 1020 umfassen. Der Begriff allgemein im Zusammenhang mit dem vektorfreundlichen Befehlsformat bezieht sich auf das Befehlsformat, das nicht an irgendeinen speziellen Befehlssatz gebunden ist.
  • Obwohl Ausführungsformen der Erfindung beschrieben werden, in denen das vektorfreundliche Befehlsformat Folgendes unterstützt: eine 64-Byte-Vektoroperandenlänge (oder Vektoroperandengröße) mit Datenelementbreiten (oder Datenelementgrößen) mit 32 Bits (4 Bytes) oder 64 Bits (8 Bytes) (und folglich besteht ein 64-Byte-Vektor aus entweder 16 Elementen mit Doppelwortgröße oder alternativ 8 Elementen mit Viererwortgröße); eine 64-Byte-Vektoroperandenlänge (oder Vektoroperandengröße) mit Datenelementbreiten (oder Datenelementgrößen) von 16 Bits (2 Bytes) oder 8 Bits (1 Byte); eine 32-Byte-Vektoroperandenlänge (oder Vektoroperandengröße) mit Datenelementbreiten (oder Datenelementgrößen) mit 32 Bits (4 Bytes), 64 Bits (8 Bytes), 16 Bits (2 Bytes) oder 8 Bits (1 Byte); und eine 16-Byte-Vektoroperandenlänge (oder Vektoroperandengröße) mit Datenelementbreiten (oder Datenelementgrößen) mit 32 Bits (4 Bytes), 64 Bits (8 Bytes), 16 Bits (2 Bytes) oder 8 Bits (1 Byte); können alternative Ausführungsformen mehr, weniger und/oder andere Vektoroperandengrößen (z. B. 256-Byte-Vektoroperanden) mit mehr, weniger oder anderen Datenelementbreiten (z. B. Datenelementbreiten mit 128 Bits (16 Bytes)) unterstützen.
  • Die Befehlsvorlagen der Klasse A in 10A umfassen: 1) innerhalb der Befehlsvorlagen für den Nicht-Arbeitsspeicherzugriff 1005 sind eine Befehlsvorlage für eine Nicht-Arbeitsspeicherzugriffs-Vollrundungssteuertyp-Operation 1010 und eine Befehlsvorlage für eine Nicht-Arbeitsspeicherzugriffs-Datentransformationstyp-Operation 1015 gezeigt; und 2) innerhalb der Befehlsvorlagen für den Arbeitsspeicherzugriff 1020 sind eine Befehlsvorlage für einen zeitlichen Arbeitsspeicherzugriff 1025 und eine Befehlsvorlage für einen nicht zeitlichen Arbeitsspeicherzugriff 1030 gezeigt. Die Befehlsvorlagen der Klasse B in 10B umfassen: 1) innerhalb der Befehlsvorlagen für den Nicht-Arbeitsspeicherzugriff 1005 sind eine Befehlsvorlage für eine Nicht-Arbeitsspeicherzugriffs-Schreibmaskensteuerungs-Teilrundungssteuertyp-Operation 1012 und eine Befehlsvorlage für eine Nicht-Arbeitsspeicherzugriffs-Schreibmaskensteuerung-Vsize-Typ-Operation 1017 gezeigt; und 2) innerhalb der Befehlsvorlagen für den Arbeitsspeicherzugriff 1020 ist eine Befehlsvorlage für eine Arbeitsspeicherzugriffs-Schreibmaskensteuerung 1027 gezeigt.
  • Das allgemeine vektorfreundliche Befehlsformat 1000 umfasst die folgenden Felder, die nachstehend in der in 10A-10B dargestellten Reihenfolge aufgelistet sind.
  • Formatfeld 1040 - ein spezieller Wert (ein Befehlsformatidentifiziererwert) in diesem Feld identifiziert eindeutig das vektorfreundliche Befehlsformat und folglich Vorkommnisse von Befehlen im vektorfreundlichen Befehlsformat in Befehlsströmen. An sich ist dieses Feld in der Hinsicht optional, als es für einen Befehlssatz nicht erforderlich ist, der nur das allgemeine vektorfreundliche Befehlsformat aufweist.
  • Basisoperationsfeld 1042 - sein Inhalt unterscheidet verschiedene Basisoperationen.
  • Registerindexfeld 1044 - sein Inhalt legt direkt oder durch Adressenerzeugung die Orte der Quellen- und Zieloperanden fest, ob sie sich in Registern oder im Arbeitsspeicher befinden. Diese umfassen eine ausreichende Anzahl von Bits, um N Register aus einer PxQ- (z. B. 32x512, 16x128, 32x1024, 64x1024) Registerdatei auszuwählen. Obwohl in einer Ausführungsform N bis zu drei Quellen und ein Zielregister sein kann, können alternative Ausführungsformen mehr oder weniger Quellen- und Zielregister unterstützen (z. B. können sie bis zu zwei Quellen unterstützen, wobei eine dieser Quellen auch als Ziel wirkt, können bis zu drei Quellen unterstützen, wobei eine dieser Quellen auch als Ziel wirkt, können bis zu zwei Quellen und ein Ziel unterstützen).
  • Modifiziererfeld 1046 - sein Inhalt unterscheidet Vorkommnisse von Befehlen im allgemeinen Vektorbefehlsformat, die einen Arbeitsspeicherzugriff festlegen, von jenen, die dies nicht tun; das heißt zwischen zwei Befehlsvorlagen für den Nicht-Arbeitsspeicherzugriff 1005 und Befehlsvorlagen für den Arbeitsspeicherzugriff 1020. Arbeitsspeicherzugriffsoperationen lesen und/oder schreiben in die Arbeitsspeicherhierarchie (in einigen Fällen Festlegen der Quellen- und/oder Zieladressen unter Verwendung von Werten in Registern), während Operationen für den Nicht-Arbeitsspeicherzugriff dies nicht tun (z. B. sind die Quelle und die Ziele Register). Obwohl in einer Ausführungsform dieses Feld auch zwischen drei verschiedenen Weisen auswählt, um Arbeitsspeicheradressenberechnungen durchzuführen, können alternative Ausführungsformen mehr, weniger oder andere Weisen unterstützen, um Arbeitsspeicheradressenberechnungen durchzuführen.
  • Steigerungsoperationsfeld 1050 - sein Inhalt unterscheidet, welche von einer Vielfalt von verschiedenen Operationen zusätzlich zur Basisoperation durchgeführt werden soll. Dieses Feld ist kontextspezifisch. In einigen Ausführungsformen ist dieses Feld in ein Klassenfeld 1068, ein Alpha-Feld 1052 und ein Beta-Feld 1054 unterteilt. Das Steigerungsoperationsfeld 1050 ermöglicht, dass gemeinsame Gruppen von Operationen vielmehr in einem einzelnen Befehl als 2, 3 oder 4 Befehlen durchgeführt werden.
  • Skalierungsfeld 1060 - sein Inhalt ermöglicht die Skalierung des Inhalts des Indexfeldes für die Arbeitsspeicheradressenerzeugung (z. B. für die Adressenerzeugung, die 2Skalierung * Index + Basis verwendet).
  • Verlagerungsfeld 1062A - sein Inhalt wird als Teil der Arbeitsspeicheradressenerzeugung verwendet (z. B. für die Adressenerzeugung, die 2Skalierung * Index + Basis + Verlagerung verwendet).
  • Verlagerungsfaktorfeld 1062B (es ist zu beachten, dass die Nebeneinanderstellung des Verlagerungsfeldes 1062A direkt über dem Verlagerungsfaktorfeld 1062B angibt, dass eines oder das andere verwendet wird) - sein Inhalt wird als Teil der Adressenerzeugung verwendet; es legt einen Verlagerungsfaktor fest, der durch die Größe eines Arbeitsspeicherzugriffs (N) skaliert werden soll - wobei N die Anzahl von Bytes im Arbeitsspeicherzugriff ist (z. B. für die Adressenerzeugung, die 2Skalierung * Index + Basis + skalierte Verlagerung verwendet). Redundante Bits niedriger Ordnung werden ignoriert und daher wird der Inhalt des Verlagerungsfaktorfeldes mit der Arbeitsspeicheroperandengesamtgröße (N) multipliziert, um die Endverlagerung zu erzeugen, die beim Berechnen einer effektiven Adresse verwendet werden soll. Der Wert von N wird durch die Prozessor-Hardware zur Laufzeit auf der Basis des Feldes 1074 für den vollen Operationscode (später hier beschrieben) und des Datenbearbeitungsfeldes 1054C bestimmt. Das Verlagerungsfeld 1062A und das Verlagerungsfaktorfeld 1062B sind in der Hinsicht optional, als sie nicht für die Befehlsvorlagen für den Nicht-Arbeitsspeicherzugriff 1005 verwendet werden und/oder verschiedene Ausführungsformen nur eines oder keines der beiden implementieren können.
  • Datenelementbreitenfeld 1064 - sein Inhalt unterscheidet, welche von einer Anzahl von Datenelementbreiten verwendet werden soll (in einigen Ausführungsformen für alle Befehle; in anderen Ausführungsformen für nur einige der Befehle). Dieses Feld ist in der Hinsicht optional, als es nicht erforderlich ist, wenn nur eine Datenelementbreite unterstützt wird und/oder Datenelementbreiten unter Verwendung eines gewissen Aspekts der Operationscodes unterstützt werden.
  • Schreibmaskenfeld 1070 - sein Inhalt steuert auf einer Basis pro Datenelementposition, ob diese Datenelementposition im Zielvektoroperanden das Ergebnis der Basisoperation und der Steigerungsoperation widerspiegelt. Befehlsvorlagen der Klasse A unterstützen Mischschreibmaskierung, während Befehlsvorlagen der Klasse B sowohl Misch- als auch Nullsetzungsschreibmaskierung unterstützen. Beim Mischen ermöglichen Vektormasken, dass irgendein Satz von Elementen im Ziel vor Aktualisierungen während der Ausführung irgendeiner Operation geschützt wird (durch die Basisoperation und die Steigerungsoperation festgelegt); in einer anderen Ausführungsform Bewahren des alten Werts jedes Elements des Ziels, wo das entsprechende Maskenbit eine 0 aufweist. Dagegen ermöglichen beim Nullsetzen Vektormasken, dass irgendein Satz von Elementen im Ziel während der Ausführung irgendeiner Operation nullgesetzt wird (durch die Basisoperation und die Steigerungsoperation festgelegt); in einer Ausführungsform wird ein Element des Ziels auf 0 gesetzt, wenn das entsprechende Maskenbit einen 0-Wert aufweist. Eine Teilmenge dieser Funktionalität ist die Fähigkeit, die Vektorlänge der durchgeführten Operation zu steuern (das heißt die Spanne von modifizierten Elementen vom ersten bis zum letzten); es ist jedoch nicht erforderlich, dass die Elemente, die modifiziert werden, aufeinander folgend sind. Folglich ermöglicht das Schreibmaskenfeld 1070 teilweise Vektoroperationen, einschließlich Ladevorgängen, Speichervorgängen, arithmetisch, logisch usw. Obwohl Ausführungsformen der Erfindung beschrieben werden, in denen der Inhalt des Schreibmaskenfeldes 1070 eines von einer Anzahl von Schreibmaskenregistern auswählt, das die zu verwendende Schreibmaske enthält (und folglich der Inhalt des Schreibmaskenfeldes 1070 indirekt identifiziert, dass eine Maskierung durchgeführt wird), ermöglichen alternative Ausführungsformen stattdessen oder zusätzlich, dass der Inhalt des Schreibmaskenfeldes 1070 direkt die durchzuführende Maskierung festlegt.
  • Direkt-Feld 1072 - sein Inhalt ermöglicht die Festlegung von direkt. Dieses Feld ist in der Hinsicht optional, als es in einer Implementierung des allgemeinen vektorfreundlichen Formats nicht vorhanden ist, die direkt nicht unterstützt, und in Befehlen nicht vorhanden ist, die direkt nicht verwenden.
  • Klassenfeld 1068 - sein Inhalt unterscheidet zwischen verschiedenen Klassen von Befehlen. Mit Bezug auf 10A-B wählen die Inhalte dieses Feldes zwischen Befehlen der Klasse A und Klasse B aus. In 10A-B werden Quadrate mit abgerundeten Ecken verwendet, um anzugeben, dass ein spezieller Wert in einem Feld vorhanden ist (z. B. Klasse A 1068A bzw. Klasse B 1068B für das Klassenfeld 1068 in 10A-B).
  • BEFEHLSVORLAGEN DER KLASSE A
  • Im Fall der Befehlsvorlagen für den Nicht-Arbeitsspeicherzugriff 1005 der Klasse A wird das Alpha-Feld 1052 als RS-Feld 1052A interpretiert, dessen Inhalt unterscheidet, welche der verschiedenen Steigerungsoperationstypen durchgeführt werden sollen (z. B. sind Runden 1052A.1 und Datentransformation 1052A.2 jeweils für die Befehlsvorlagen für die Nicht-Arbeitsspeicherzugriffs-Rundungstyp-Operation 1010 und die Nicht-Arbeitsspeicherzugriffs-Datentransformationstyp-Operation 1015 festgelegt), während das Beta-Feld 1054 unterscheidet, welche der Operationen des festgelegten Typs durchgeführt werden soll. In den Befehlsvorlagen für den Nicht-Arbeitsspeicherzugriff 1005 sind das Skalierungsfeld 1060, das Verlagerungsfeld 1062A und das Verlagerungsskalierungsfeld 1062B nicht vorhanden.
  • NICHT-ARBEITSSPEICHERZUGRIFFS-BEFEHLSVORLAGEN-VOLLRUNDUNGSSTEUERTYP-OPERATION
  • In der Befehlsvorlage für die Nicht-Arbeitsspeicherzugriffs-Vollrundungssteuertyp-Operation 1010 wird das Beta-Feld 1054 als Rundungssteuerfeld 1054A interpretiert, dessen Inhalt(e) eine statische Rundung vorsehen. Obwohl in den beschriebenen Ausführungsformen der Erfindung das Rundungssteuerfeld 1054A ein Feld 1056 zum Unterdrücken aller Gleitkommaausnahmen (SAE) und ein Rundungsoperationssteuerfeld 1058 umfasst, können alternative Ausführungsformen beide dieser Konzepte im gleichen Feld unterstützen oder codieren und nur eines oder das andere dieser Konzepte/Felder aufweisen (können z. B. nur das Rundungsoperationssteuerfeld 1058 aufweisen).
  • SAE-Feld 1056 - sein Inhalt unterscheidet, ob die Ausnahmeereignismeldung deaktiviert werden soll oder nicht; wenn der Inhalt des SAE-Feldes 1056 angibt, dass die Unterdrückung aktiviert ist, meldet ein gegebener Befehl keine Art von Gleitkommaausnahme-Flag und zieht kein Gleitkommaausnahmesteuerprogramm heran.
  • Rundungsoperationssteuerfeld 1058 - sein Inhalt unterscheidet, welche von einer Gruppe von Rundungsoperationen durchzuführen ist (z. B. Aufrunden, Abrunden, Runden in Richtung von null und Runden auf das Nächste). Folglich ermöglicht das Rundungsoperationssteuerfeld 1058 die Änderung des Rundungsmodus auf einer Basis pro Befehl. In einigen Ausführungsformen, in denen ein Prozessor ein Steuerregister zum Festlegen von Rundungsmodi umfasst, übersteuert der Inhalt des Rundungsoperationssteuerfeldes 1050 diesen Registerwert.
  • NICHT-ARBEITSSPEICHERZUGRIFFS-BEFEHLSVORLAGEN-DATENTRANSFORMATIONSTYP-OPERATION
  • In der Befehlsvorlage für die Nicht-Arbeitsspeicherzugriffs-Datentransformationstyp-Operation 1015 wird das Beta-Feld 1054 als Datentransformationsfeld 1054B interpretiert, dessen Inhalt unterscheidet, welche einer Anzahl von Datentransformationen durchgeführt werden soll (z. B. keine Datentransformation, Austausch, Rundsendung).
  • Im Fall einer Befehlsvorlage für einen Arbeitsspeicherzugriff 1020 der Klasse A wird das Alpha-Feld 1052 als Räumungshinweisfeld 1052B interpretiert, dessen Inhalt unterscheidet, welcher der Räumungshinweise verwendet werden soll (in 10A sind zeitlich 1052B.1 und nicht zeitlich 1052B.2 jeweils für die Befehlsvorlage für den zeitlichen Arbeitsspeicherzugriff 1025 und die Befehlsvorlage für den nicht zeitlichen Arbeitsspeicherzugriff 1030 festgelegt), während das Beta-Feld 1054 als Datenbearbeitungsfeld 1054C interpretiert wird, dessen Inhalt unterscheidet, welche einer Anzahl von Datenbearbeitungsoperationen (auch als Grundelemente bekannt) durchgeführt werden soll (z. B. keine Bearbeitung; Rundsendung; Aufwärtsumsetzung einer Quelle; und Abwärtsumsetzung eines Ziels). Die Befehlsvorlagen für den Arbeitsspeicherzugriff 1020 umfassen das Skalierungsfeld 1060 und wahlweise das Verlagerungsfeld 1062A oder das Verlagerungsskalierungsfeld 1062B.
  • Vektorarbeitsspeicherbefehle führen Vektorladevorgänge von und Vektorspeichervorgänge in den Arbeitsspeicher mit Umsetzungsunterstützung durch. Wie bei regulären Vektorbefehlen übertragen Vektorarbeitsspeicherbefehle Daten vom/zum Arbeitsspeicher in einer datenelementweisen Weise, wobei die Elemente, die tatsächlich übertragen werden, durch die Inhalte der Vektormaske vorgegeben werden, die als Schreibmaske ausgewählt wird.
  • ARBEITSSPEICHERZUGRIFFSBEFEHLSVORLAGEN - ZEITLICH
  • Zeitliche Daten sind Daten, die wahrscheinlich bald genug wiederverwendet werden, um vom Caching zu profitieren. Dies ist jedoch ein Hinweis und verschiedene Prozessoren können ihn in verschiedenen Weisen implementieren, einschließlich vollständigen Ignorierens des Hinweises.
  • ARBEITSSPEICHERZUGRIFFSBEFEHLSVORLAGEN - NICHT ZEITLICH
  • Nicht zeitliche Daten sind Daten, die unwahrscheinlich bald genug wiederverwenden werden, um vom Caching im Cache der 1. Ebene zu profitieren, und denen für die Räumung Priorität gegeben werden sollte. Dies ist jedoch ein Hinweis und verschiedene Prozessoren können ihn in verschiedenen Weisen implementieren, einschließlich vollständigen Ignorierens des Hinweises.
  • BEFEHLSVORLAGEN DER KLASSE B
  • Im Fall der Befehlsvorlagen der Klasse B wird das Alpha-Feld 1052 als Feld 1052C für eine Schreibmaskensteuerung (Z) interpretiert, dessen Inhalt unterscheidet, ob die durch das Schreibmaskenfeld 1070 gesteuerte Schreibmaskierung eine Mischung oder eine Nullsetzung sein sollte.
  • Im Fall der Befehlsvorlage für den Nicht-Arbeitsspeicherzugriff 1005 der Klasse B wird ein Teil des Beta-Feldes 1054 als RL-Feld 1057A interpretiert, dessen Inhalt unterscheidet, welcher der verschiedenen Steigerungsoperationstypen durchgeführt werden soll (z. B. sind Runden 1057A.1 und Vektorlänge (VSIZE) 1057A.2 jeweils für die Befehlsvorlage für die Nicht-Arbeitsspeicherzugriffs-Schreibmaskensteuerungs-Teilrundungssteuertyp-Operation 1012 und die Befehlsvorlage für die Nicht-Arbeitsspeicherzugriffs-Schreibmaskensteuerungs-VSIZE-Typ-Operation 1017 festgelegt), während der Rest des Beta-Feldes 1054 unterscheidet, welche der Operationen des festgelegten Typs durchgeführt werden soll. In den Befehlsvorlagen für den Nicht-Arbeitsspeicherzugriff 1005 sind das Skalierungsfeld 1060, das Verlagerungsfeld 1062A und das Verlagerungsskalierungsfeld 1062B nicht vorhanden.
  • In der Befehlsvorlage für die Nicht-Arbeitsspeicherzugriffs-Schreibmaskensteuerungs-Teilrundungssteuertyp-Operation 1010 wird der Rest des Beta-Feldes 1054 als Rundungsoperationsfeld 1059A interpretiert und die Ausnahmeergebnismeldung wird deaktiviert (ein gegebener Befehl meldet keine Art von Gleitkommaausnahme-Flag und zieht kein Gleitkommaausnahmesteuerprogramm heran).
  • Rundungsoperationssteuerfeld 1059A - genau wie das Rundungsoperationssteuerfeld 1058 unterscheidet sein Inhalt, welche von einer Gruppe von Rundungsoperationen durchzuführen ist (z. B. Aufrunden, Abrunden, Runden in Richtung von null und Runden auf das Nächste). Folglich ermöglicht das Rundungsoperationssteuerfeld 1059A die Änderung des Rundungsmodus auf einer Basis pro Befehl. In einigen Ausführungsformen, in denen ein Prozessor ein Steuerregister zum Festlegen von Rundungsmodi umfasst, übersteuert der Inhalt des Rundungsoperationssteuerfeldes 1050 diesen Registerwert.
  • In der Befehlsvorlage für die Nicht-Arbeitsspeicherzugriffs-Schreibmaskensteuerungs-VSIZE-Typ-Operation 1017 wird der Rest des Beta-Feldes 1054 als Vektorlängenfeld 1059B interpretiert, dessen Inhalt unterscheidet, an welcher von einer Anzahl von Datenvektorlängen durchgeführt werden soll (z. B. 128, 256 oder 512 Bytes).
  • Im Fall einer Befehlsvorlage für den Arbeitsspeicherzugriff 1020 der Klasse B wird ein Teil des Beta-Feldes 1054 als Rundsendefeld 1057B interpretiert, dessen Inhalt unterscheidet, ob die Rundsendetyp-Datenbearbeitungsoperation durchgeführt werden soll oder nicht, während der Rest des Beta-Feldes 1054 als Vektorlängenfeld 1059B interpretiert wird. Die Befehlsvorlagen für den Arbeitsspeicherzugriff 1020 umfassen das Skalierungsfeld 1060 und wahlweise das Verlagerungsfeld 1062A oder das Verlagerungsskalierungsfeld 1062B.
  • Im Hinblick auf das allgemeine vektorfreundliche Befehlsformat 1000 ist ein Feld 1074 für den vollen Operationscode mit dem Formatfeld 1040, dem Basisoperationsfeld 1042 und dem Datenelementbreitenfeld 1064 gezeigt. Obwohl eine Ausführungsform gezeigt ist, in der das Feld 1074 für den vollen Operationscode alle diese Felder umfasst, umfasst das Feld 1074 für den vollen Operationscode weniger als alle dieser Felder in Ausführungsformen, die nicht alle von ihnen unterstützen. Das Feld 1074 für den vollen Operationscode stellt den Operationscode (Opcode) bereit.
  • Das Steigerungsoperationsfeld 1050, das Datenelementbreitenfeld 1064 und das Schreibmaskenfeld 1070 ermöglichen, dass diese Merkmale auf einer Basis pro Befehl im allgemeinen vektorfreundlichen Befehlsformat festgelegt werden.
  • Die Kombination des Schreibmaskenfeldes und des Datenelementbreitenfeldes erzeugt insofern typisierte Befehle, als sie ermöglichen, dass die Maske auf der Basis von verschiedenen Datenelementbreiten angewendet wird.
  • Die innerhalb der Klasse A und Klasse B gefundenen verschiedenen Befehlsvorlagen sind in verschiedenen Situationen vorteilhaft. In einigen Ausführungsformen der Erfindung können verschiedene Prozessoren oder verschiedene Kerne innerhalb eines Prozessors nur Klasse A, nur Klasse B oder beide Klassen unterstützen. Ein ungeordneter Universalkern mit hoher Leistung, der für die Universalberechnung bestimmt ist, kann beispielsweise nur Klasse B unterstützen, ein Kern, der hauptsächlich für Graphik- und/oder wissenschaftliche (Durchsatz) Berechnung bestimmt ist, kann nur Klasse A unterstützen, und ein Kern, der für beide bestimmt ist, kann beide unterstützen (natürlich liegt ein Kern, der eine gewisse Mischung von Vorlagen und Befehlen von beiden Klassen, aber nicht alle Vorlagen und Befehle von beiden Klassen aufweist, innerhalb der Reichweite der Erfindung). Ein einzelner Prozessor kann auch mehrere Kerne umfassen, die alle dieselbe Klasse unterstützen oder in denen verschiedene Kerne eine unterschiedliche Klasse unterstützen. In einem Prozessor mit separaten Graphik- und Universalkernen kann beispielsweise einer der Graphikkerne, die hauptsächlich für die Graphik- und/oder wissenschaftliche Berechnung bestimmt sind, nur Klasse A unterstützen, während einer oder mehrere der Universalkerne Universalkerne mit hoher Leistung mit einer ungeordneten Ausführung und Registerumbenennung sein können, die für eine Universalberechnung bestimmt ist, die nur die Klasse B unterstützt. Ein anderer Prozessor, der keinen separaten Graphikkern aufweist, kann einen oder mehrere geordnete oder ungeordnete Universalkerne umfassen, die sowohl Klasse A als auch Klasse B unterstützen. Merkmale von einer Klasse können natürlich in verschiedenen Ausführungsformen der Erfindung auch in der anderen Klasse implementiert werden. Programme, die in einer Sprache hoher Ebene geschrieben sind, würden in eine Vielfalt von verschiedenen ausführbaren Formen gesetzt werden (z. B. gerade rechtzeitig kompiliert oder statisch kompiliert), einschließlich: 1) einer Form mit nur Befehlen der Klasse(n), die durch den Zielprozessor für die Ausführung unterstützt wird (werden); oder 2) einer Form mit alternativen Routinen, die unter Verwendung von verschiedenen Kombinationen der Befehle aller Klassen geschrieben sind und einen Steuerablaufcode aufweisen, der die Routinen zur Ausführung auf der Basis der durch den Prozessor unterstützten Befehle auswählt, der gegenwärtig den Code ausführt.
  • BEISPIELHAFTES SPEZIELLES VEKTORFREUNDLICHES BEFEHLSFORMAT
  • 11A ist ein Blockdiagramm, das ein beispielhaftes spezielles vektorfreundliches Befehlsformat gemäß einigen Ausführungsformen der Erfindung darstellt. 11A zeigt ein spezielles vektorfreundliches Befehlsformat 1100, das in der Hinsicht speziell ist, als es den Ort, die Größe, die Interpretation und die Reihenfolge der Felder sowie Werte für einige von diesen Feldern festlegt. Das spezielle vektorfreundliche Befehlsformat 1110 kann verwendet werden, um den x86-Befehlssatz zu erweitern, und folglich sind einige der Felder ähnlich oder dieselben wie jene, die im existierenden x86-Befehlssatz und der Erweiterung davon (z. B. AVX) verwendet werden. Dieses Format bleibt mit dem Präfixcodierungsfeld, dem Feld für das reale Operationscode-Byte, das MOD-R/M-Feld, das SIB-Feld, Verlagerungsfeld und die Direkt-Felder des existierenden x86-Befehlssatzes mit Erweiterungen konsistent. Die Felder von 10, in die die Felder von 11A abbilden, sind dargestellt.
  • Es sollte selbstverständlich sein, dass, obwohl Ausführungsformen der Erfindung mit Bezug auf das spezielle vektorfreundliche Befehlsformat 1100 im Zusammenhang mit dem allgemeinen vektorfreundlichen Befehlsformat 1000 für Erläuterungszwecke beschrieben werden, die Erfindung nicht auf das spezielle vektorfreundliche Befehlsformat 1100 begrenzt ist, außer wenn beansprucht. Das allgemeine vektorfreundliche Befehlsformat 1000 zieht beispielsweise eine Vielfalt von möglichen Größen für die verschiedenen Felder in Betracht, während das spezielle vektorfreundliche Befehlsformat 1100 als Felder mit speziellen Größen aufweisend gezeigt ist. Als spezielles Beispiel ist, obwohl das Datenelementbreitenfeld 1064 als Ein-Bit-Feld im speziellen vektorfreundlichen Befehlsformat 1100 dargestellt ist, die Erfindung nicht so begrenzt (das heißt das allgemeine vektorfreundliche Befehlsformat 1000 zieht andere Größen des Datenelementbreitenfeldes 1064 in Betracht).
  • Das allgemeine vektorfreundliche Befehlsformat 1000 umfasst die folgenden Felder, die nachstehend in der in 11A dargestellten Reihenfolge aufgelistet sind.
  • EVEX-Präfix (Bytes 0-3) 1102 - ist in einer Vier-Byte-Form codiert.
  • Formatfeld 1040 (EVEX-Byte 0, Bits [7:0]) - das erste Byte (EVEX-Byte 0) ist das Formatfeld 1040 und es enthält 0x62 (der eindeutige Wert, der zum Unterscheiden des vektorfreundlichen Befehlsformats in einigen Ausführungsformen verwendet wird).
  • Das zweite-vierte Byte (EVEX-Bytes 1-3) umfasst eine Anzahl von Bitfeldern, die eine spezielle Fähigkeit bereitstellen.
  • REX-Feld 1105 (EVEX-Byte 1, Bits [7-5]) - besteht aus einem EVEX.R-Bit-Feld (EVEX-Byte 1, Bit [7] - R), EVEX.X-Bit-Feld (EVEX-Byte 1, Bit [6] - X) und 1057BEX-Byte 1, Bit [5] - B). Die EVEX.R-, EVEX.X- und EVEX.B-Bit-Felder sehen dieselbe Funktionalität wie die entsprechenden VEX-Bit-Felder vor und werden unter Verwendung einer 1-er-Komplementform codiert, d. h. ZMM0 wird als 1111B codiert, ZMM15 wird als 0000B codiert. Andere Felder des Befehls codieren die unteren drei Bits der Registerindizes, wie auf dem Fachgebiet bekannt ist (rrr, xxx und bbb), so dass Rrrr, Xxxx und Bbbb durch Addieren von EVEX.R, EVEX.X und EVEX.B gebildet werden können.
  • REX' 1110A - dies ist der erste Teil des REX'-Feldes 1110 und ist das EVEX.R'-Bit-Feld (EVEX-Byte 1, Bit [4] - R'), das verwendet wird, um entweder die oberen 16 oder unteren 16 des erweiterten 32-Registersatzes zu codieren. In einigen Ausführungsformen wird dieses Bit zusammen mit anderen, wie nachstehend angegeben, im bitinvertierten Format gespeichert, um vom SCHRANKEN-Befehl zu unterscheiden (im gut bekannten x86-32-Bit-Modus), dessen reales Operationscode-Byte 62 ist, aber im MOD-R/M-Feld (nachstehend beschrieben) den Wert von 11 im MOD-Feld nicht annimmt; alternative Ausführungsformen der Erfindung speichern dies und die anderen angegebenen Bits darunter im invertierten Format nicht. Ein Wert von 1 wird verwendet, um die unteren 16 Register zu codieren. Mit anderen Worten, R'Rrrr wird durch Kombinieren von EVEX.R', EVEX.R und des anderen RRR von anderen Feldern gebildet.
  • Operationscodeabbildungsfeld 1115 (EVEX-Byte 1, Bits [3:0] - mmmm) - sein Inhalt codiert ein impliziertes führendes Operationscodebyte (0F, 0F 38 oder 0F 3).
  • Datenelementbreitenfeld 1064 (EVEX-Byte 2, Bit [7] - W) - ist durch die Schreibweise EVEX.W dargestellt. EVEX.W wird verwendet, um die Granularität (Größe) des Datentyps zu definieren (entweder 32-Bit-Datenelemente oder 64-Bit-Datenelemente) .
  • EVEX.vvvv 1120 (EVEX-Byte 2, Bits [6:3]-vvvv) - die Rolle von EVEX.vvvv kann Folgendes umfassen: 1) EVEX.vvvv codiert den ersten Quellenregisteroperanden, in invertierter (1-er-Komplement) Form festgelegt, und ist für Befehle mit 2 oder mehr Quellenoperanden gültig; 2) EVEX.vvvv codiert den Zielregisteroperanden, in 1-er-Komplement-Form für bestimmte Vektorverschiebungen festgelegt; oder 3) EVEX.vvvv codiert keinen Operanden, das Feld ist reserviert und sollte 1111b enthalten. Folglich codiert das EVEX.vvvv-Feld 1120 die 4 Bits niedriger Ordnung des ersten Quellenregisterspezifikators, der in invertierter (1-er-Komplement) Form gespeichert wird. In Abhängigkeit vom Befehl wird ein zusätzliches anderes EVEX-Bit-Feld verwendet, um die Spezifikatorgröße auf 32 Register zu erweitern.
  • Klassenfeld von EVEX.U 1068 (EVEX-Byte 2, Bit [2]-U) - Falls EVEX.U = 0, gibt es Klasse A oder EVEX.U0 an; falls EVEX.U = 1, gibt es Klasse B oder EVEX.U1 an.
  • Präfixcodierungsfeld 1125 (EVEX-Byte 2, Bits [1:0]-pp) - sieht zusätzliche Bits für das Basisoperationsfeld vor. Zusätzlich zum Vorsehen einer Unterstützung für die veralteten SSE-Befehle im EVEX-Präfixformat hat dies auch den Vorteil der Verdichtung des SIMD-Präfixes (anstatt ein Byte zu erfordern, um das SIMD-Präfix auszudrücken, erfordert das EVEX-Präfix nur 2 Bits). In einer Ausführungsform werden, um veraltete SSE-Befehle zu unterstützen, die sowohl im veralteten Format als auch im EVEX-Präfixformat ein SIMD-Präfix verwenden (66H, F2H, F3H), diese veralteten SIMD-Präfixe im SIMD-Präfixcodierfeld codiert; und zur Laufzeit werden sie in das veraltete SIMD-Präfix erweitert, bevor sie zum PLA des Decodierers geliefert werden (so dass der PLA sowohl das veraltete als auch das EVEX-Format dieser veralteten Befehle ohne Modifikation ausführen kann). Obwohl neuere Befehle den Inhalt des EVEX-Präfixcodierfeldes direkt als Operationscodeerweiterung verwenden könnten, erweitern bestimmte Ausführungsformen in einer ähnlichen Weise für Konsistenz, ermöglichen jedoch, dass verschiedene Bedeutungen durch diese veralteten SIMD-Präfixe festgelegt werden. Eine alternative Ausführungsform kann den PLA umkonstruieren, um die 2-Bit-SIMD-Präfixcodierungen zu unterstützen, und folglich nicht die Erweiterung zu erfordern.
  • Alpha-Feld 1052 (EVEX-Byte 3, Bit [7] - EH; auch als EVEX.EH, EVEX.rs, EVEX.RL, EVEX.-Schreibmaskensteuerung und EVEX.N bekannt; auch mit α dargestellt) - wie vorher beschrieben, ist dieses Feld kontextspezifisch.
  • Beta-Feld 1054 (EVEX-Byte 3, Bits [6:4]-SSS, auch als EVEX. S2-0, EVEX.r2-0, EVEX.rr1, EVEX.LL0, EVEX.LLB bekannt, auch mit βββ dargestellt) - wie vorher beschrieben, ist dieses Feld kontextspezifisch.
  • REX'-Feld 1110B - dies ist der Rest des REX'-Feldes 1110 und ist das EVEX.V'-Bit-Feld (EVEX-Byte 3, Bit [3] - V'), das verwendet werden kann, um entweder die oberen 16 oder unteren 16 des erweiterten 32-Registersatzes zu codieren. Dieses Bit wird in einem bitinvertierten Format gespeichert. Ein Wert von 1 wird verwendet, um die unteren 16 Register zu codieren. Mit anderen Worten, V'VVVV wird durch Kombinieren von EVEX.V', EVEX.vvvv gebildet.
  • Schreibmaskenfeld 1070 (EVEX-Byte 3, Bits [2:0]-kkk) - sein Inhalt legt den Index eines Registers in den Schreibmaskenregistern fest, wie vorher beschrieben. In einigen Ausführungsformen weist der spezielle Wert EVEX.kkk=000 ein spezielles Verhalten auf, das impliziert, dass keine Schreibmaske für den speziellen Befehl verwendet wird (dies kann in einer Vielfalt von Weisen implementiert werden, einschließlich der Verwendung einer Schreibmaske, die mit allen festverdrahtet ist, oder einer Hardware, die die Maskierungs-Hardware umgeht).
  • Das Feld 1130 für den realen Operationscode (Byte 4) ist auch als Operationscode-Byte bekannt. Ein Teil des Operationscodes ist in diesem Feld festgelegt.
  • Das MOD-R/M-Feld 1140 (Byte 5) umfasst das MOD-Feld 1142, Reg-Feld 1144 und R/M-Feld 1146. Wie vorher beschrieben, unterscheidet der Inhalt des MOD-Feldes 1142 zwischen Arbeitsspeicherzugriffs- und Nicht-Arbeitsspeicherzugriffs-Operationen. Die Rolle des Reg-Feldes 1144 kann zu zwei Situationen zusammengefasst werden: Codieren entweder des Zielregisteroperanden oder eines Quellenregisteroperanden oder als Operationscodeerweiterung behandelt und nicht verwendet, um irgendeinen Befehlsoperanden zu codieren. Die Rolle des R/M-Feldes 1146 kann Folgendes umfassen: Codieren des Befehlsoperanden, der auf eine Arbeitsspeicheradresse Bezug nimmt, oder Codieren entweder des Zielregisteroperanden oder eines Quellenregisteroperanden.
  • Byte der Skalierung, des Index, der Basis (SIB) (Byte 6) - Wie vorher beschrieben, wird der Inhalt des Skalierungsfeldes 1050 für die Arbeitsspeicheradressenerzeugung verwendet. SIB.xxx 1154 und SIB.bbb 1156 - auf die Inhalte dieser Felder wurde vorher im Hinblick auf die Registerindizes Xxxx und Bbbb Bezug genommen.
  • Verlagerungsfeld 1062A (Bytes 7-10) - wenn das MOD-Feld 1142 10 enthält, sind die Bytes 7-10 das Verlagerungsfeld 1062A und es arbeitet gleich wie die veraltete 32-Bit-Verlagerung (disp32) und arbeitet mit Bytegranularität.
  • Verlagerungsfaktorfeld 1062B (Byte 7) - wenn das MOD-Feld 1142 01 enthält, ist das Byte 7 das Verlagerungsfaktorfeld 1062B. Der Ort dieses Feldes ist derselbe wie jener der 8-Bit-Verlagerung des veralteten x86-Befehlssatzes (disp8), die mit Bytegranularität arbeitet. Da disp8 vorzeichenerweitert ist, kann es nur Versätze zwischen -128 und 127 Bytes adressieren; hinsichtlich 64-Byte-Cache-Leitungen verwendet disp8 8 Bits, die auf nur vier real nützliche Werte -128, -64, 0 und 64 gesetzt werden können; da ein größerer Bereich häufig erforderlich ist, wird disp32 verwendet; disp32 erfordert jedoch 4 Bytes. Im Gegensatz zu disp8 und disp32 ist das Verlagerungsfaktorfeld 1062B eine Neuinterpretation von disp8; wenn das Verlagerungsfaktorfeld 1062B verwendet wird, wird die tatsächliche Verlagerung durch den Inhalt des Verlagerungsfaktorfeldes multipliziert mit der Größe des Arbeitsspeicheroperandenzugriffs (N) bestimmt. Dieser Typ von Verlagerung wird als disp8*N bezeichnet. Dies verringert die mittlere Befehlslänge (ein einzelnes Byte wird für die Verlagerung verwendet, aber mit einem viel größeren Bereich). Eine solche komprimierte Verlagerung basiert auf der Annahme, dass die effektive Verlagerung ein Vielfaches der Granularität des Arbeitsspeicherzugriffs ist, und daher müssen die redundanten Bits niedriger Ordnung des Adressenversatzes nicht codiert werden. Mit anderen Worten, das Verlagerungsfaktorfeld 1062B ersetzt die 8-Bit-Verlagerung des veralteten x86-Befehlssatzes. Folglich wird das Verlagerungsfaktorfeld 1062B gleich wie eine 8-Bit-Verlagerung des x86-Befehlssatzes codiert (somit keine Änderungen in den ModRM/SIB-Codierregeln) mit der einzigen Ausnahme, dass disp8 auf disp8*N überladen wird.
  • Mit anderen Worten, es bestehen keine Änderungen in den Codierregeln oder Codierlängen, sondern nur in der Interpretation des Verlagerungswerts durch Hardware (die die Verlagerung durch die Größe des Arbeitsspeicheroperanden skalieren muss, um einen byteweisen Adressenversatz zu erhalten). Das Direkt-Feld 1072 arbeitet wie vorher beschrieben.
  • FELD FÜR DEN VOLLEN OPERATIONSCODE
  • 11B ist ein Blockdiagramm, das die Felder des speziellen vektorfreundlichen Befehlsformats, die das Feld für den vollen Operationscode bilden, gemäß einigen Ausführungsformen darstellt. Insbesondere umfasst das Feld 1074 für den vollen Operationscode das Formatfeld 1040, das Basisoperationsfeld 1042 und das Feld 1064 für die Datenelementbreite (W). Das Basisoperationsfeld 1042 umfasst das Präfixcodierfeld 1125, das Operationscodeabbildungsfeld 1115 und das Feld 1130 für den realen Operationscode.
  • REGISTERINDEXFELD
  • 11C ist ein Blockdiagramm, das die Felder des speziellen vektorfreundlichen Befehlsformats, die das Registerindexfeld bilden, gemäß einigen Ausführungsformen darstellt. Insbesondere umfasst das Registerindexfeld 1044 das REX-Feld 1105, das REX'-Feld 1110, das MODR/M.reg-Feld 1144, das MODR/M.r/m-Feld 1146, das VVVV-Feld 1120, das xxx-Feld 1154 und das bbb-Feld 1156.
  • STEIGERUNGSOPERATIONSFELD
  • 11D ist ein Blockdiagramm, das die Felder des speziellen vektorfreundlichen Befehlsformats, die das Steigerungsoperationsfeld bilden, gemäß einigen Ausführungsformen darstellt. Wenn das Feld 1068 für die Klasse (U) 0 enthält, bedeutet es EVEX.U0 (Klasse A 1068A); wenn es 1 enthält, bedeutet es EVEX.U1 (Klasse B 1068B). Wenn U=0 und das MOD-Feld 1142 11 enthält (was eine Nicht-Arbeitsspeicherzugriffs-Operation bedeutet), wird das Alpha-Feld 1052 (EVEX-Byte 3, Bit [7]-EH) als rs-Feld 1052A interpretiert. Wenn das rs-Feld 1052A eine 1 enthält (Rundung 1052A.1), wird das Beta-Feld 1054 (EVEX-Byte 3, Bits [6:4]-SSS) als Rundungssteuerfeld 1054A interpretiert. Das Rundungssteuerfeld 1054A umfasst ein Ein-Bit-SAE-Feld 1056 und ein Zwei-Bit-Rundungsoperationsfeld 1058. Wenn das rs-Feld 1052A eine 0 enthält (Datentransformation 1052A.2), wird das Beta-Feld 1054 (EVEX-Byte 3, Bits [6:4]-SSS) als Drei-Bit-Datentransformationsfeld 1054B interpretiert. Wenn U=0 und das MOD-Feld 1142 00, 01 oder 10 enthält (was eine Arbeitsspeicherzugriffsoperation bedeutet), wird das Alpha-Feld 1052 (EVEX-Byte 3, Bit [7]-EH) als Räumungshinweisfeld (EH-Feld) 1052B interpretiert und das Beta-Feld 1054 (EVEX-Byte 3, Bits [6:4]-SSS) wird als Drei-Bit-Datenbearbeitungsfeld 1054C interpretiert.
  • Wenn U = 1, wird das Alpha-Feld 1052 (EVEX-Byte 3, Bit [7]-EH) als Feld 1052C für die Schreibmaskensteuerung (Z) interpretiert. Wenn U=1 und das MOD-Feld 1142 11 enthält (was eine Nicht-Arbeitsspeicherzugriffs-Operation bedeutet), wird ein Teil des Beta-Feldes 1054 (EVEX-Byte 3, Bit [4]-S0) als RL-Feld 1057A interpretiert; wenn es eine 1 enthält (Rundung 1057A.1), wird der Rest des Beta-Feldes 1054 (EVEX-Byte 3, Bit [6-5]-S2-1) als Rundungsoperationsfeld 1059A interpretiert, während, wenn das RL-Feld 1057A eine 0 enthält (VSIZE 1057.A2), der Rest des Beta-Feldes 1054 (EVEX-Byte 3, Bit [6-5]-S2-1) als Vektorlängenfeld 1059B interpretiert wird (EVEX-Byte 3, Bit [6-5]-L1-0). Wenn U=1 und das MOD-Feld 1142 00, 01 oder 10 enthält (was eine Arbeitsspeicherzugriffsoperation bedeutet), wird das Beta-Feld 1054 (EVEX-Byte 3, Bits [6:4]-SSS) als Vektorlängenfeld 1059B (EVEX-Byte 3, Bit [6-5]-L1-0) und Rundsendungsfeld 1057B (EVEX-Byte 3, Bit [4]-B) interpretiert.
  • BEISPIELHAFTE REGISTERARCHITEKTUR
  • 12 ist ein Blockdiagramm einer Registerarchitektur gemäß einigen Ausführungsformen. In der dargestellten Ausführungsform sind 32 Vektorregister 1210 vorhanden, die 512 Bits breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die 256 Bits niedrigerer Ordnung der unteren 16 zmm-Register sind auf die Register ymm0-16 überlagert. Die 128 Bits niedrigerer Ordnung der unteren 16 zmm-Register (die 128 Bits niedrigerer Ordnung der ymm-Register) sind auf die Register xmm0-15 überlagert. Das spezielle vektorfreundliche Befehlsformat 1100 arbeitet an dieser überlagerten Registerdatei, wie in der nachstehenden Tabelle dargestellt.
    Einstellbare Vektorlänge Klasse Operationen Register
    Befehlsvorlagen, die nicht das Vektorlängenfeld 1059B umfassen A (10A; U=0) 1010, 1015, 1025, 1030 zmm-Register (die Vektorlänge ist 64 Bytes)
    B (10B; U=1) 1012 zmm-Register (die Vektorlänge ist 64 Bytes)
    Befehlsvorlagen, die das Vektorlängenfeld 1059B umfassen B (10B; U=1) 1017, 1027 zmm-, ymm- oder xmm-Register (die Vektorlänge ist 64-Byte, 32-Byte oder 16-Byte) in Abhängigkeit vom Vektorlängenfeld 1059B
  • Mit anderen Worten, das Vektorlängenfeld 1059B wählt zwischen einer maximalen Länge und einer oder mehreren anderen kürzeren Längen aus, wobei jede solche kürzere Länge die Hälfte der Länge der vorangehenden Länge ist; und Befehlsvorlagen ohne das Vektorlängenfeld 1059B arbeiten an der maximalen Vektorlänge. Ferner arbeiten in einer Ausführungsform die Befehlsvorlagen der Klasse B des speziellen vektorfreundlichen Befehlsformats 1100 an gepackten oder skalaren Gleitkommadaten mit einzelner/doppelter Genauigkeit und gepackten oder skalaren ganzzahligen Daten. Skalaroperationen sind Operationen, die an der Datenelementposition niedrigster Ordnung in einem zmm/ymm/xmm-Register durchgeführt werden; die Datenelementpositionen höherer Ordnung werden in Abhängigkeit von der Ausführungsform entweder gleich belassen, wie sie vor dem Befehl waren, oder auf null gesetzt.
  • Schreibmaskenregister 1215 - in der dargestellten Ausführungsform sind 8 Schreibmaskenregister (k0 bis k7), die jeweils 64 Bits groß sind, vorhanden. In einer alternativen Ausführungsform sind die Schreibmaskenregister 1215 16 Bits groß. Wie vorher beschrieben, kann in einigen Ausführungsformen das Vektormaskenregister k0 nicht als Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 angeben würde, für eine Schreibmaske verwendet wird, wählt sie eine festverdrahtete Schreibmaske von 0xffff aus, was effektiv die Schreibmaskierung für diesen Befehl sperrt.
  • Universalregister 1225 - in der dargestellten Ausführungsform sind sechzehn 64-Bit-Universalregister vorhanden, die zusammen mit den existierenden x86-Adressierungsmodi verwendet werden, um Arbeitsspeicheroperanden zu adressieren. Diese Register werden durch die Namen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 bezeichnet.
  • Skalargleitkommastapelregisterdatei (x87-Stapel) 1245, an der die gepackte MMX-Ganzzahlenflachregisterdatei 1250 parallel bezeichnet ist - in der dargestellten Ausführungsform ist der x87-Stapel ein Stapel mit acht Elementen, der verwendet wird, um Skalargleitkommaoperationen an 32/64/80-Bit-Gleitkommadaten unter Verwendung der x87-Befehlssatzerweiterung durchzuführen; während die MMX-Register verwendet werden, um Operationen an gepackten ganzzahligen 64-Bit-Daten durchzuführen, sowie um Operanden für einige Operationen zu halten, die zwischen den MMX- und XMM-Registern durchgeführt werden.
  • Alternative Ausführungsformen können breitere oder schmälere Register verwenden. Außerdem können alternative Ausführungsformen mehr, weniger oder andere Registerdateien und Register verwenden.
  • BEISPIELHAFTE KERNARCHITEKTUREN, PROZESSOREN UND COMPUTERARCHITEKTUREN
  • Prozessorkerne können in verschiedenen Weisen, für verschiedene Zwecke und in verschiedenen Prozessoren implementiert werden. Implementierungen solcher Kerne können beispielsweise umfassen: 1) einen geordneten Universalkern, der für die Universalberechnung bestimmt ist; 2) einen ungeordneten Universalkern mit hoher Leistung, der für die Universalberechnung bestimmt ist; 3) einen Spezialkern, der hauptsächlich für die Graphik- und/oder wissenschaftliche (Durchsatz) Berechnung bestimmt ist. Implementierungen von verschiedenen Prozessoren können umfassen: 1) eine CPU mit einem oder mehreren geordneten Universalkernen, die für die Universalberechnung bestimmt sind, und/oder einem oder mehreren ungeordneten Universalkernen, die für die Universalberechnung bestimmt sind; und 2) einen Coprozessor mit einem oder mehreren Spezialkernen, die hauptsächlich für Graphik und/oder Wissenschaft (Durchsatz) bestimmt sind. Solche verschiedenen Prozessoren führen zu verschiedenen Computersystemarchitekturen, die umfassen können: 1) den Coprozessor an einem separaten Chip von der CPU; 2) den Coprozessor auf einem separaten Chip im gleichen Baustein wie eine CPU; 3) den Coprozessor auf demselben Chip wie eine CPU (in welchem Fall ein solcher Coprozessor manchmal als Speziallogik wie z. B. eine integrierte Graphik- und/oder wissenschaftliche (Durchsatz) Logik oder als Spezialkerne bezeichnet wird); und 4) ein System auf einem Chip, das auf demselben Chip die beschriebene CPU (manchmal als Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den vorstehend beschriebenen Coprozessor und eine zusätzliche Funktionalität umfassen kann. Beispielhafte Kernarchitekturen werden als nächstes beschrieben, gefolgt von Beschreibungen von beispielhaften Prozessoren und Computerarchitekturen.
  • BEISPIELHAFTE KERNARCHITEKTUREN
  • BLOCKDIAGRAMM DES GEORDNETEN UND UNGEORDNETEN KERNS
  • 13A ist ein Blockdiagramm, das sowohl eine beispielhafte geordnete Pipeline als auch eine beispielhafte ungeordnete Registerumbenennungs-Ausgabe/Ausführungs-Pipeline gemäß Ausführungsformen der Erfindung darstellt. 13B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines geordneten Architekturkerns als auch eines beispielhaften ungeordneten Registerumbenennungs-Ausgabe/Ausführungs-Architekturkerns, die in einem Prozessor enthalten sein sollen, gemäß einigen Ausführungsformen der Erfindung darstellt. Die Kästen in durchgezogenen Linien in 13A-B stellen die geordnete Pipeline und den geordneten Kern dar, während der optionale Zusatz der Kästen in gestrichelten Linien die ungeordnete Registerumbenennungs-Ausgabe/Ausführungs-Pipeline und den ungeordneten Registerumbenennungs-Ausgabe/Ausführungs-Kern darstellt. In Anbetracht dessen, dass der geordnete Aspekt eine Teilmenge des ungeordneten Aspekts ist, wird der ungeordnete Aspekt beschrieben.
  • In 13A umfasst eine Prozessorpipeline 1300 eine Abrufstufe 1302, eine Längendecodierstufe 1304, eine Decodierstufe 1306, eine Zuteilungsstufe 1308, eine Umbenennungsstufe 1310, eine Zeitplanungsstufe (auch als Versand- oder Ausgabestufe bekannt) 1312, eine Registerlese/Arbeitsspeicherlese-Stufe 1314, eine Ausführungsstufe 1316, eine Rückschreib/Arbeitsspeicherschreib-Stufe 1318, eine Ausnahmebehandlungsstufe 1322 und eine Übergabestufe 1324.
  • 13B zeigt einen Prozessorkern 1390 mit einer Frontend-Einheit 1330, die mit einer Ausführungsmaschineneinheit 1350 gekoppelt ist, und beide sind mit einer Arbeitsspeichereinheit 1370 gekoppelt. Der Kern 1390 kann ein Rechenkern mit verringertem Befehlssatz (RISC-Kern), ein Rechenkern mit komplexem Befehlssatz (CISC-Kern), ein Kern mit sehr langem Befehlswort (VLIW) oder ein Hybrid- oder alternativer Kerntyp sein. Als noch andere Option kann der Kern 1390 ein Spezialkern, wie beispielsweise ein Netz- oder Kommunikationskern, eine Kompressionsmaschine, ein Coprozessorkern, ein Kern einer Universalrechengraphikverarbeitungseinheit (GPGPU), ein Graphikkern oder dergleichen sein.
  • Die Frontend-Einheit 1330 umfasst eine Verzweigungsvorhersageeinheit 1332, die mit einer Befehls-Cache-Einheit 1334 gekoppelt ist, die mit einem Befehlsadressenübersetzungspuffer (TLB) 1336 gekoppelt ist, der mit einer Befehlsabrufeinheit 1338 gekoppelt ist, die mit einer Decodiereinheit 1340 gekoppelt ist. Die Decodiereinheit 1340 (oder der Decodierer) kann Befehle decodieren und als Ausgabe eine oder mehrere Mikrooperationen, Mikrocodeeintrittspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale erzeugen, die von den ursprünglichen Befehlen decodiert werden oder die diese anderweitig widerspiegeln oder davon abgeleitet sind. Die Decodiereinheit 1340 kann unter Verwendung von verschiedenen unterschiedlichen Mechanismen implementiert werden. Beispiele von geeigneten Mechanismen umfassen, sind jedoch nicht begrenzt auf Nachschlagetabellen, Hardware-Implementierungen, programmierbare Logikanordnungen (PLAs), Mikrocodefestwertarbeitsspeicher (ROMs) usw. In einer Ausführungsform umfasst der Kern 1390 einen Mikrocode-ROM oder ein anderes Medium, das einen Mikrocode für bestimmte Makrobefehle speichert (z. B. in der Decodiereinheit 1340 oder ansonsten innerhalb der Frontend-Einheit 1330). Die Decodiereinheit 1340 ist mit einer Umbenennungs/Zuteiler-Einheit 1352 in der Ausführungsmaschineneinheit 1350 gekoppelt.
  • Die Ausführungsmaschineneinheit 1350 umfasst die Umbenennungs/Zuteiler-Einheit 1352, die mit einer Rückzugseinheit 1354 gekoppelt ist, und einen Satz von einer oder mehreren Zeitplaneinheiten 1356. Die Zeitplaneinheit(en) 1356 stellen irgendeine Anzahl von verschiedenen Zeitplanern dar, einschließlich Reservierungsstationen, eines zentralen Befehlsfensters usw. Die Zeitplaneinheit(en) 1356 sind mit der (den) Einheit(en) 1358 von physikalischen Registerdatei(en) gekoppelt. Jede der Einheiten 1358 von physikalischen Registerdatei(en) stellt eine oder mehrere physikalische Registerdateien dar, von denen verschiedene einen oder mehrere verschiedene Datentypen speichern, wie z. B. eine skalare ganze Zahl, skalares Gleitkomma, eine gepackte ganze Zahl, gepacktes Gleitkomma, eine Vektorganzzahl, Vektorgleitkomma, Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. In einer Ausführungsform umfasst die Einheit 1358 von physikalischen Registerdatei(en) eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können architektonische Vektorregister, Vektormaskenregister und Universalregister bereitstellen. Die Einheit(en) 1358 von physikalischen Registerdatei(en) sind mit der Rückzugseinheit 1354 überlappt, um verschiedene Weisen darzustellen, in denen eine Registerumbenennung und ungeordnete Ausführung implementiert werden können (z. B. unter Verwendung von Umordnungspuffer(n) und (einer) Rückzugsregisterdatei(en); unter Verwendung von (einer) zukünftigen Datei(en), von (einem) Geschichtspuffer(n) und (einer) Rückzugsregisterdatei(en); unter Verwendung von Registerabbildungen und einer Vereinigung von Registern; usw.). Die Rückzugseinheit 1354 und die Einheit(en) 1358 von physikalischen Registerdatei(en) sind mit dem (den) Ausführungscluster(n) 1360 gekoppelt. Der (die) Ausführungscluster 1360 umfassen einen Satz von einer oder mehreren Ausführungseinheiten 1362 und einen Satz von einer oder mehreren Arbeitsspeicherzugriffseinheiten 1364. Die Ausführungseinheiten 1362 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Typen von Daten (z. B. Skalargleitkomma, gepackte ganze Zahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma) durchführen. Obwohl einige Ausführungsformen eine Anzahl von Ausführungseinheiten umfassen können, die für spezielle Funktionen oder Sätze von Funktionen zweckgebunden sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, die alle jegliche Funktionen durchführen. Die Zeitplaneinheit(en) 1356, die Einheit(en) 1358 von physikalischen Registerdatei(en) und der (die) Ausführungscluster 1360 sind als möglicherweise mehrere gezeigt, da bestimmte Ausführungsformen separate Pipelines für bestimmte Typen von Daten/Operationen erzeugen (z. B. eine Skalarganzzahlen-Pipeline, eine Pipeline für Skalargleitkomma/gepackte ganze Zahl/gepacktes Gleitkomma/Vektorganzzahl/Vektorgleitkomma, und/oder eine Arbeitsspeicherzugriffs-Pipeline, die jeweils ihre eigene Zeitplaneinheit, Einheit von physikalischen Registerdatei(en) und/oder Ausführungs-Cluster aufweisen - und im Fall einer separaten Arbeitsspeicherzugriffs-Pipeline werden bestimmte Ausführungsformen implementiert, in denen nur der Ausführungs-Cluster dieser Pipeline die Arbeitsspeicherzugriffseinheit(en) 1364 aufweist. Es sollte auch selbstverständlich sein, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines ungeordnete Ausgabe/Ausführung und der Rest geordnet sein können.
  • Der Satz von Arbeitsspeicherzugriffseinheiten 1364 ist mit der Arbeitsspeichereinheit 1370 gekoppelt, die eine Daten-TLB-Einheit 1372 umfasst, die mit einer Daten-Cache-Einheit 1374 gekoppelt ist, die mit einer Cache-Einheit 1376 der Ebene 2 (L2) gekoppelt ist. In einer beispielhaften Ausführungsform können die Arbeitsspeicherzugriffseinheiten 1364 eine Ladeeinheit, eine Adressenspeichereinheit und eine Datenspeichereinheit umfassen, von denen jede mit der Daten-TLB-Einheit 1372 in der Arbeitsspeichereinheit 1370 gekoppelt ist. Die Befehls-Cache-Einheit 1334 ist ferner mit einer Cache-Einheit 1376 der Ebene 2 (L2) in der Arbeitsspeichereinheit 1370 gekoppelt. Die L2-Cache-Einheit 1376 ist mit einer oder mehreren anderen Ebenen des Cache und schließlich mit einem Hauptarbeitsspeicher gekoppelt.
  • Als Beispiel kann die beispielhafte ungeordnete Registerumbenennungs-Ausgabe/Ausführungs-Kernarchitektur die Pipeline 1300 wie folgt implementieren: 1) der Befehlsabruf 1338 führt die Abruf- und Längendecodierstufen 1302 und 1304 durch; 2) die Decodiereinheit 1340 führt die Decodierstufe 1306 durch; 3) die Umbenennungs/Zuteiler-Einheit 1352 führt die Zuteilungsstufe 1308 und die Umbenennungsstufe 1310 durch; 4) die Zeitplaneinheit(en) 1356 führen die Zeitplanungsstufe 1312 durch; 5) die Einheit(en) 1358 von physikalischen Registerdatei(en) und die Arbeitsspeichereinheit 1370 führen die Registerlese/Arbeitsspeicherlese-Stufe 1314 durch; der Ausführungs-Cluster 1360 führt die Ausführungsstufe 1316 durch; 6) die Arbeitsspeichereinheit 1370 und die Einheit(en) 1358 von physikalischen Registerdatei(en) führen die Rückschreib/Arbeitsspeicherschreib-Stufe 1318 durch; 7) verschiedene Einheiten können an der Ausnahmebehandlungsstufe 1322 beteiligt sein; und 8) die Rückzugseinheit 1354 und die Einheit(en) 1358 von physikalischen Registerdatei(en) führen die Übergabestufe 1324 durch.
  • Der Kern 1390 kann einen oder mehrere Befehlssätze (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies in Sunnyvale, CA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie z. B. NEON) von ARM Holdings in Sunnyvale, CA), einschließlich des (der) hier beschriebenen Befehls (Befehle), unterstützen. In einer Ausführungsform umfasst der Kern 1390 eine Logik, um eine Befehlssatzerweiterung für gepackte Daten (z. B. AVX1, AVX2) zu unterstützen, wodurch ermöglicht wird, dass die von vielen Multimedia-Anwendungen verwendeten Operationen unter Verwendung von gepackten Daten durchgeführt werden.
  • Es sollte selbstverständlich sein, dass der Kern Multithreading (Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies in einer Vielfalt von Weisen tun kann, einschließlich Zeitscheiben-Multithreading, simultanes Multithreading (wobei ein einzelner physikalischer Kern einen logischen Kern für jeden der Threads bereitstellt, an denen der physikalische Kern simultanes Multithreading durchführt) oder eine Kombination davon (z. B. Zeitscheibenabruf und Decodieren und simultanes Multithreading danach, wie z. B. in der Intel®-Hyperthreading-Technologie).
  • Obwohl die Registerumbenennung im Zusammenhang mit einer ungeordneten Ausführung beschrieben wird, sollte selbstverständlich sein, dass die Registerumbenennung in einer geordneten Architektur verwendet werden kann. Obwohl die dargestellte Ausführungsform des Prozessors auch separate Befehls- und Daten-Cache-Einheiten 1334/1374 und eine gemeinsam genutzte L2-Cache-Einheit 1376 umfasst, können alternative Ausführungsformen einen einzelnen internen Cache für sowohl Befehle als auch Daten aufweisen, wie beispielsweise einen internen Cache der Ebene 1 (L1) oder mehrere Ebenen eines internen Cache. In einigen Ausführungsformen kann das System eine Kombination eines internen Cache und eines externen Cache umfassen, der für den Kern und/oder den Prozessor extern ist. Alternativ kann der ganze Cache für den Kern und/oder den Prozessor extern sein.
  • SPEZIELLE BEISPIELHAFTE GEORDNETE KERNARCHITEKTUR
  • 14A-B stellen ein Blockdiagramm einer spezielleren beispielhaften geordneten Kernarchitektur dar, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne desselben Typs und/oder verschiedener Typen) in einem Chip wäre. Die Logikblöcke kommunizieren durch ein Verschaltungsnetz mit hoher Bandbreite (z. B. ein Ringnetz) mit einer gewissen festen Funktionslogik, Arbeitsspeicher-E/A-Schnittstellen und einer anderen erforderlichen E/A-Logik in Abhängigkeit von der Anwendung.
  • 14A ist ein Blockdiagramm eines einzelnen Prozessorkerns zusammen mit seiner Verbindung mit dem Verschaltungsnetz auf dem Chip und mit seiner lokalen Teilmenge des Cache der Ebene 2 (L2) gemäß einigen Ausführungsformen der Erfindung. In einer Ausführungsform unterstützt ein Befehlsdecodierer 1400 den x86-Befehlssatz mit einer Befehlssatzerweiterung für gepackte Daten. Ein L1-Cache 1406 ermöglicht Zugriffe auf den Cache-Arbeitsspeicher mit geringer Latenz in die Skalar- und Vektoreinheiten. Obwohl in einer Ausführungsform (um die Konstruktion zu vereinfachen) eine Skalareinheit 1408 und eine Vektoreinheit 1410 separate Registersätze (jeweils Skalarregister 1412 und Vektorregister 1414) verwenden und Daten, die zwischen ihnen übertragen werden, in den Arbeitsspeicher geschrieben und dann von einem Cache 1406 der Ebene 1 (L1) zurückgelesen werden, können alternative Ausführungsformen der Erfindung eine andere Methode verwenden (z. B. einen einzelnen Registersatz verwenden oder einen Kommunikationspfad umfassen, der ermöglicht, dass Daten zwischen den zwei Registerdateien übertragen werden, ohne geschrieben und zurückgelesen zu werden).
  • Die lokale Teilmenge des L2-Cache 1404 ist ein Teil eines globalen L2-Cache, der in separate lokale Teilmengen unterteilt ist, eine pro Prozessorkern. Jeder Prozessorkern weist einen direkten Zugriffspfad zu seiner eigenen lokalen Teilmenge des L2-Cache 1404 auf. Daten, die durch einen Prozessorkern gelesen werden, werden in seiner L2-Cache-Teilmenge 1404 gespeichert und auf diese kann schnell zugegriffen werden parallel mit anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Teilmengen zugreifen. Daten, die durch einen Prozessorkern geschrieben werden, werden in seiner eigenen L2-Cache-Teilmenge 1404 gespeichert und werden von anderen Teilmengen gespült, falls erforderlich. Das Ringnetz stellt Kohärenz für gemeinsam genutzte Daten sicher. Das Ringnetz ist bidirektional, um zu ermöglichen, dass Agenten wie z. B. Prozessorkerne, L2-Caches und andere Logikblöcke innerhalb des Chips miteinander kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1012 Bits breit.
  • 14B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 14A gemäß einigen Ausführungsformen der Erfindung. 14B umfasst einen L1-Daten-Cache 1406A als Teil des L1-Cache 1404 sowie mehr Detail hinsichtlich der Vektoreinheit 1410 und der Vektorregister 1414. Insbesondere ist die Vektoreinheit 1410 eine 16 breite Vektorverarbeitungseinheit (VPU) (siehe die 16 breite ALU 1428), die einen oder mehrere von Ganzzahlen-, Einzelgenauigkeitsgleit-, und Doppelgenauigkeitsgleitbefehlen ausführt. Die VPU unterstützt das Austauschen der Registereingaben mit der Austauscheinheit 1420, die numerische Umsetzung mit numerischen Umsetzungseinheiten 1422A-B und die Replikation mit der Replikationseinheit 1424 am Arbeitsspeichereingang. Schreibmaskenregister 1426 ermöglichen das Vorhersagen von resultierenden Vektorschreibvorgängen.
  • 15 ist ein Blockdiagramm eines Prozessors, der mehr als einen Kern aufweisen kann, einen integrierten Arbeitsspeicher-Controller aufweisen kann und eine integrierte Graphik aufweisen kann, gemäß einigen Ausführungsformen der Erfindung. Die Kästen in durchgezogenen Linien in 15 stellen einen Prozessor 1500 mit einem einzelnen Kern 1502A, einem Systemagenten 1510, einem Satz von einer oder mehreren Bus-Controller-Einheiten 1516 dar, während der optionale Zusatz der Kästen in gestrichelten Linien einen alternativen Prozessor 1500 mit mehreren Kernen 1502A-N, einem Satz von einer oder mehreren integrierten Arbeitsspeicher-Controller-Einheiten 1514 in der Systemagenteneinheit 1510 und einer Speziallogik 1508 darstellt.
  • Folglich können verschiedene Implementierungen des Prozessors 1500 umfassen: 1) eine CPU, wobei die Speziallogik 1508 eine integrierte Graphik- und/oder wissenschaftliche (Durchsatz) Logik ist (die einen oder mehrere Kerne umfassen kann) und die Kerne 1502A-N ein oder mehrere Universalkerne sind (z. B. geordnete Universalkerne, ungeordnete Universalkerne, eine Kombination der beiden); 2) einen Coprozessor, wobei die Kerne 1502A-N eine große Anzahl von Spezialkernen sind, die hauptsächlich für Graphik und/oder wissenschaftlich (Durchsatz) bestimmt sind; und 3) einen Coprozessor, wobei die Kerne 1502A-N eine große Anzahl von geordneten Universalkernen sind. Folglich kann der Prozessor 1500 ein Universalprozessor, ein Coprozessor oder Spezialprozessor sein, wie beispielsweise ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU (Universalgraphikverarbeitungseinheit), ein Coprozessor mit vielen integrierten Kernen mit hohem Durchsatz (MIC) (einschließlich 30 oder mehr Kernen), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert werden. Der Prozessor 1500 kann ein Teil sein von und/oder kann implementiert werden auf einem oder mehreren Substraten unter Verwendung irgendeiner von einer Anzahl von Prozesstechnologien, wie beispielsweise BiCMOS, CMOS oder NMOS.
  • Die Arbeitsspeicherhierarchie umfasst eine oder mehrere Ebenen eines Cache innerhalb der Kerne, einen Satz von einer oder mehreren gemeinsam genutzten Cache-Einheiten 1506 und einen externen Arbeitsspeicher (nicht gezeigt), der mit dem Satz von integrierten Arbeitsspeicher-Controller-Einheiten 1514 gekoppelt ist. Der Satz von gemeinsam genutzten Cache-Einheiten 1506 kann einen oder mehrere Caches mittlerer Ebene, wie z. B. Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder andere Ebenen von Cache, einen Cache letzter Ebene (LLC) und/oder Kombinationen davon umfassen. Obwohl in einer Ausführungsform eine Verschaltungseinheit 1512 auf Ringbasis die integrierte Graphiklogik 1508 (die integrierte Graphiklogik 1508 ist ein Beispiel einer Speziallogik und wird hier auch als solche bezeichnet), den Satz von gemeinsam genutzten Cache-Einheiten 1506 und die Systemagenteneinheit 1510/die integrierte(n) Arbeitsspeicher-Controller-Einheit(en) 1514 verschaltet, können alternative Ausführungsformen irgendeine Anzahl von gut bekannten Techniken zum Verschalten solcher Einheiten umfassen. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 1506 und Kernen 1502A-N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1502A-N zum Multithreading in der Lage. Der Systemagent 1510 umfasst jene Komponenten, die die Kerne 1502A-N koordinieren und betreiben. Die Systemagenteneinheit 1510 kann beispielsweise eine Leistungssteuereinheit (PCU) und eine Anzeigeeinheit umfassen. Die PCU kann eine Logik und Komponenten sein oder umfassen, die zum Regulieren des Leistungszustandes der Kerne 1502A-N und der integrierten Graphiklogik 1508 erforderlich sind. Die Anzeigeeinheit dient zum Ansteuern von einer oder mehreren extern verbundenen Anzeigen.
  • Die Kerne 1502A-N können hinsichtlich des Architekturbefehlssatzes homogen oder heterogen sein; das heißt zwei oder mehr der Kerne 1502A-N können zur Ausführung desselben Befehlssatzes in der Lage sein, während andere zur Ausführung nur einer Teilmenge dieses Befehlssatzes oder eines anderen Befehlssatzes in der Lage sein können.
  • BEISPIELHAFTE COMPUTERARCHITEKTUREN
  • 16-19 sind Blockdiagramme von beispielhaften Computerarchitekturen. Andere Systemkonstruktionen und Konfigurationen, die auf dem Fachgebiet für Laptops, Desktops, in der Hand gehaltene PCs, persönliche digitale Assistenten, Konstruktionsarbeitsplatzrechner, Server, Netzvorrichtungen, Netzknoten, Koppler, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Graphikvorrichtungen, Videospielvorrichtungen, Digitalempfänger, Mikrocontroller, Mobiltelefone, tragbare Medienabspielgeräte, in der Hand gehaltene Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind auch geeignet. Im Allgemeinen ist eine ungeheure Vielfalt von Systemen oder elektronischen Vorrichtungen, die einen Prozessor und/oder andere Ausführungslogik beinhalten können, wie hier offenbart, im Allgemeinen geeignet.
  • Mit Bezug auf 16 ist ein Blockdiagramm eines Systems 1600 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1600 kann einen oder mehrere Prozessoren 1610, 1615 umfassen, die mit einem Controller-Netzknoten 1620 gekoppelt sind. In einer Ausführungsform umfasst der Controller-Netzknoten 1620 einen Graphikarbeitsspeicher-Controller-Netzknoten (GMCH) 1690 und einen Eingabe/Ausgabe-Netzknoten (IOH) 1650 (die sich auf separaten Chips befinden können); der GMCH 1690 umfasst Arbeitsspeicher- und Graphik-Controller, mit denen der Arbeitsspeicher 1640 und ein Coprozessor 1645 gekoppelt sind; der IOH 1650 koppelt Eingabe/Ausgabe-Vorrichtungen (E/A-Vorrichtungen) 1660 mit dem GMCH 1690. Alternativ sind einer oder beide der Arbeitsspeicher- und Graphik-Controller in den Prozessor integriert (wie hier beschrieben), der Arbeitsspeicher 1640 und der Coprozessor 1645 sind direkt mit dem Prozessor 1610 und dem Controller-Netzknoten 1620 in einem einzelnen Chip mit dem IOH 1650 gekoppelt.
  • Die optionale Art der zusätzlichen Prozessoren 1615 ist in 16 mit gestrichelten Linien angegeben. Jeder Prozessor 1610, 1615 kann einen oder mehrere der hier beschriebenen Verarbeitungskerne umfassen und kann eine gewisse Version des Prozessors 1500 sein.
  • Der Arbeitsspeicher 1640 kann beispielsweise ein dynamischer Direktzugriffsarbeitsspeicher (DRAM), ein Phasenänderungsarbeitsspeicher (PCM) oder eine Kombination der beiden sein. Für mindestens eine Ausführungsform kommuniziert der Controller-Netzknoten 1620 mit dem Prozessor (den Prozessoren) 1610, 1615 über einen Multidrop-Bus wie z. B. einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle wie z. B. eine QuickPath-Verschaltung (QPI) oder eine ähnliche Verbindung 1695.
  • In einer Ausführungsform ist der Coprozessor 1645 ein Spezialprozessor wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Netzknoten 1620 einen integrierten Graphikbeschleuniger umfassen.
  • Es kann eine Vielfalt von Unterschieden zwischen den physikalischen Ressourcen 1610, 1615 hinsichtlich eines Spektrums von Gütemetriken, einschließlich architektonischer, mikroarchitektonischer, thermischer, Leistungsverbrauchseigenschaften und dergleichen bestehen.
  • In einer Ausführungsform führt der Prozessor 1610 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. In die Befehle können Coprozessorbefehle eingebettet sein. Der Prozessor 1610 erkennt diese Coprozessorbefehle als von einem Typ, der durch den beigefügten Coprozessor 1645 ausgeführt werden sollten. Folglich gibt der Prozessor 1610 diese Coprozessorbefehle (oder Steuersignale, die Coprozessorbefehle darstellen) auf einem Coprozessorbus oder einer anderen Verschaltung an den Coprozessor 1645 aus. Der (die) Coprozessor (en) 1645 nehmen die empfangenen Coprozessorbefehle an und führen sie aus.
  • Mit Bezug nun auf 17 ist ein Blockdiagramm eines ersten spezielleren beispielhaften Systems 1700 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 17 gezeigt, ist das Multiprozessorsystem 1700 ein Punkt-zu-Punkt-Verschaltungssystem und umfasst einen ersten Prozessor 1770 und einen zweiten Prozessor 1780, die über eine Punkt-zu-Punkt-Verschaltung 1750 gekoppelt sind. Jeder der Prozessoren 1770 und 1780 kann eine gewisse Version des Prozessors 1500 sein. In einigen Ausführungsformen sind die Prozessoren 1770 und 1780 jeweils Prozessoren 1610 und 1615, während der Coprozessor 1738 ein Coprozessor 1645 ist. In einer anderen Ausführungsform sind die Prozessoren 1770 und 1780 jeweils ein Prozessor 1610 und Coprozessor 1645.
  • Die Prozessoren 1770 und 1780 sind jeweils mit integrierten Arbeitsspeicher-Controller-Einheiten (IMC-Einheiten) 1772 und 1782 gezeigt. Der Prozessor 1770 umfasst auch als Teil seiner Bus-Controller-Einheit Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1776 und 1778; ebenso umfasst der zweite Prozessor 1780 P-P-Schnittstellen 1786 und 1788. Die Prozessoren 1770, 1780 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 1750 unter Verwendung von P-P-Schnittstellenschaltungen 1778, 1788 austauschen. Wie in 17 gezeigt, koppeln IMCs 1772 und 1782 die Prozessoren mit jeweiligen Arbeitsspeichern, nämlich einem Arbeitsspeicher 1732 und einem Arbeitsspeicher 1734, die Abschnitte eines Hauptarbeitsspeichers sein können, der lokal an den jeweiligen Prozessoren angebracht ist.
  • Die Prozessoren 1770, 1780 können jeweils Informationen mit einem Chipsatz 1790 über individuelle P-P-Schnittstellen 1752, 1754 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1776, 1794, 1786, 1798 austauschen. Der Chipsatz 1790 kann wahlweise Informationen mit dem Coprozessor 1738 über eine Hochleistungsschnittstelle 1792 austauschen. In einer Ausführungsform ist der Coprozessor 1738 ein Spezialprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Graphikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann entweder im Prozessor oder außerhalb beider Prozessoren enthalten sein, dennoch mit den Prozessoren über eine P-P-Verschaltung verbunden sein, so dass Informationen des lokalen Cache von einem oder beiden Prozessoren im gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen leistungsarmen Modus gesetzt ist.
  • Der Chipsatz 1790 kann mit einem ersten Bus 1716 über eine Schnittstelle 1796 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1716 ein Peripheriekomponentenverschaltungsbus (PCI-Bus) oder ein Bus wie z. B. ein PCI-Expressbus oder ein anderer E/A-Verschaltungsbus der dritten Generation sein, obwohl der Schutzbereich der vorliegenden Erfindung nicht so begrenzt ist.
  • Wie in 17 gezeigt, können verschiedene E/A-Vorrichtungen 1714 mit dem ersten Bus 1716 zusammen mit einer Busbrücke 1718 gekoppelt sein, die den ersten Bus 1716 mit einem zweiten Bus 1720 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1715 wie z. B. Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, Beschleuniger einer GPGPU (wie z. B. Graphikbeschleuniger oder Digitalsignalverarbeitungseinheiten (DSP-Einheiten)), anwenderprogrammierbare Verknüpfungsfelder, oder irgendein anderer Prozessor, mit dem ersten Bus 1716 gekoppelt. In einer Ausführungsform kann der zweite Bus 1720 ein Bus mit geringer Stiftanzahl (LPC) sein. Verschiedene Vorrichtungen können mit einem zweiten Bus 1720 gekoppelt sein, einschließlich in einer Ausführungsform beispielsweise einer Tastatur und/oder einer Maus 1722, Kommunikationsvorrichtungen 1727 und einer Speichereinheit 1728, wie z. B. eines Plattenlaufwerks oder einer anderen Massenspeichervorrichtung, die Befehle/Code und Daten 1730 umfassen kann. Ferner kann ein Audio-E/A 1724 mit dem zweiten Bus 1720 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Anstelle der Punkt-zu-Punkt-Architektur von 17 kann ein System beispielsweise einen Multidrop-Bus oder eine andere solche Architektur implementieren.
  • Mit Bezug nun auf 18 ist ein Blockdiagramm eines zweiten spezielleren beispielhaften Systems 1800 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 17 und 18 tragen gleiche Bezugszeichen und bestimmte Aspekte von 17 wurden aus 18 weggelassen, um eine Verschleierung von anderen Aspekten von 18 zu vermeiden.
  • 18 stellt dar, dass die Prozessoren 1770, 1780 eine integrierte Arbeitsspeicher- und E/A-Steuerlogik („CL“) 1772 bzw. 1782 umfassen können. Folglich kann die CL 1772, 1782 integrierte Arbeitsspeicher-Controller-Einheiten umfassen und eine E/A-Steuerlogik umfassen. 18 stellt dar, dass nicht nur die Arbeitsspeicher 1732, 1734 mit der CL 1772, 1782 gekoppelt sind, sondern auch dass E/A-Vorrichtungen 1814 auch mit der Steuerlogik 1772, 1782 gekoppelt sind. Veraltete E/A-Vorrichtungen 1815 sind mit dem Chipsatz 1790 gekoppelt.
  • Mit Bezug nun auf 19 ist ein Blockdiagramm eines SoC 1900 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 15 tragen gleiche Bezugszeichen. Kästen in gestrichelten Linien sind auch optionale Merkmale an fortschrittlicheren SOCs. In 19 ist (sind) (eine) Verschaltungseinheit(en) 1902 gekoppelt mit: einem Anwendungsprozessor 1910, der einen Satz von einem oder mehreren Kernen 1502A-N umfasst, die Cache-Einheiten 1504A-N und (eine) gemeinsam genutzte Cache-Einheit(en) 1506 umfassen; einer Systemagenteneinheit 1510; (einer) Bus-Controller-Einheit(en) 1516; (einer) integrierten Arbeitsspeicher-Controller-Einheit(en) 1514; einem Satz von einem oder mehreren Coprozessoren 1920, die eine integrierte Graphiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen können; einer Einheit 1930 eines statischen Direktzugriffsarbeitsspeichers (SRAM); einer Einheit 1932 eines Direktarbeitsspeicherzugriffs (DMA); und einer Anzeigeeinheit 1940 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst (umfassen) der (die) Coprozessor(en) 1920 einen Spezialprozessor wie beispielsweise einen Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hier offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination von solchen Implementierungsmethoden implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode implementiert werden, die an programmierbaren Systemen mit mindestens einem Prozessor, einem Speichersystem (einschließlich eines flüchtigen und nichtflüchtigen Arbeitsspeichers und/oder Speicherelementen), mindestens einer Eingabevorrichtung und mindestens einer Ausgabevorrichtung ausführen.
  • Der Programmcode wie z. B. der Code 1730, der in 17 dargestellt ist, kann auf Eingangsbefehle angewendet werden, um die hier beschriebenen Funktionen durchzuführen und Ausgangsinformationen zu erzeugen. Die Ausgangsinformationen können auf eine oder mehrere Ausgabevorrichtungen in bekannter Weise angewendet werden. Für Zwecke dieser Anmeldung umfasst ein Verarbeitungssystem irgendein System, das einen Prozessor aufweist, wie beispielsweise einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezielle integrierte Schaltung (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer Prozedur- oder objektorientierten Programmiersprache hoher Ebene implementiert werden, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch in Assembler- oder Maschinensprache implementiert werden, falls erwünscht. Tatsächlich sind die hier beschriebenen Mechanismen im Schutzbereich nicht auf irgendeine spezielle Programmiersprache begrenzt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Befehle implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das eine verschiedene Logik innerhalb des Prozessors darstellt, die, wenn sie durch eine Maschine gelesen wird, bewirkt, dass die Maschine eine Logik herstellt, um die hier beschriebenen Techniken durchzuführen. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, können auf einem konkreten, maschinenlesbaren Medium gespeichert sein und zu verschiedenen Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Herstellungsmaschinen zu laden, die tatsächlich die Logik oder den Prozessor herstellen.
  • Solche maschinenlesbare Speichermedien können ohne Begrenzung nichttransitorische, konkrete Anordnungen von Gegenständen umfassen, die durch eine Maschine oder Vorrichtung hergestellt oder gebildet werden, einschließlich Speichermedien wie z. B. Festplatten, irgendeines anderen Typs von Platte, einschließlich Disketten, optischer Platten, Kompaktdiskfestwertarbeitsspeichern (CD-ROMs), wiederbeschreibbaren Kompaktdisks (CD-RWs) und magnetooptischen Platten, Halbleitervorrichtungen wie z. B. Festwertarbeitsspeichern (ROMs), Direktzugriffsarbeitsspeichern (RAMs) wie z. B. dynamischen Direktzugriffsarbeitsspeichern (DRAMs), statischen Direktzugriffsarbeitsspeichern (SRAMs), löschbaren programmierbaren Festwertarbeitsspeichern (EPROMs), Flash-Arbeitsspeichern, elektrisch löschbaren programmierbaren Festwertarbeitsspeichern (EEPROMs), eines Phasenänderungsarbeitsspeichers (PCM), magnetischer oder optischer Karten oder irgendeines anderen Typs von Medien, die zum Speichern von elektronischen Befehlen geeignet sind.
  • Folglich umfassen Ausführungsformen der Erfindung auch nichttransitorische, konkrete maschinenlesbare Medien, die Befehle enthalten oder Entwurfsdaten enthalten, wie z. B. Hardware-Beschreibungssprache (HDL), die Strukturen, Schaltungen, Einrichtungen, Prozessoren und/oder Systemmerkmale, die hier beschrieben sind, definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • EMULATION (EINSCHLIESSLICH BINÄRER ÜBERSETZUNG, CODEVERWANDLUNG USW.)
  • In einigen Fällen kann ein Befehlsumsetzer verwendet werden, um einen Befehl von einem Quellenbefehlssatz in einen Zielbefehlssatz umzusetzen. Der Befehlsumsetzer kann beispielsweise einen Befehl in einen oder mehrere andere Befehle übersetzen (z. B. unter Verwendung einer statischen binären Übersetzung, dynamischen binären Übersetzung, einschließlich dynamischer Kompilierung), verwandeln, emulieren oder anderweitig umsetzen, die durch den Kern verarbeitet werden sollen. Der Befehlsumsetzer kann in Software, Hardware, Firmware oder einer Kombination davon implementiert werden. Der Befehlsumsetzer kann sich im Prozessor, außerhalb des Prozessors oder teilweise in und teilweise außerhalb des Prozessors befinden.
  • 20 ist ein Blockdiagramm, das die Verwendung eines Software-Befehlsumsetzers, um binäre Befehle in einem Quellenbefehlssatz in binäre Befehle in einem Zielbefehlssatz umzusetzen, gemäß einigen Ausführungsformen der Erfindung gegenüberstellt. In der dargestellten Ausführungsform ist der Befehlsumsetzer ein Software-Befehlsumsetzer, obwohl der Befehlsumsetzer alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert werden kann. 20 zeigt, dass ein Programm in einer Sprache 2002 hoher Ebene unter Verwendung eines x86-Kompilierers 2004 kompiliert werden kann, um einen binären x86-Code 2006 zu erzeugen, der durch einen Prozessor mit mindestens einem x86-Befehlssatzkern 2016 nativ ausgeführt werden kann. Der Prozessor mit mindestens einem x86-Befehlssatzkern 2016 stellt irgendeinen Prozessor dar, der im Wesentlichen dieselben Funktionen wie ein Intel-Prozessor mit mindestens einem x86-Befehlssatzkern durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Teils des Befehlssatzes des Intel-x86-Befehlssatzkerns oder (2) Objektcodeversionen von Anwendungen oder anderer Software, die dazu abgezielt ist, auf einem Intel-Prozessor mit mindestens einem x86-Befehlssatzkern zu laufen, durchführen kann, um im Wesentlichen dasselbe Ergebnis wie ein Intel-Prozessor mit mindestens einem x86-Befehlssatzkern zu erreichen. Der x86-Kompilierer 2004 stellt einen Kompilierer dar, der betriebsfähig ist, um einen binären x86-Code 2006 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung am Prozessor mit mindestens einem x86-Befehlssatzkern 2016 ausgeführt werden kann. Ebenso zeigt 20, dass das Programm in der Sprache 2002 hoher Ebene unter Verwendung eines Kompilierers 2008 für einen alternativen Befehlssatz kompiliert werden kann, um einen binären Code 2010 eines alternativen Befehlssatzes zu erzeugen, der durch einen Prozessor ohne mindestens einen x86-Befehlssatzkern 2014 nativ ausgeführt werden kann (z. B. einen Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technologies in Sunnyvale, CA, ausführen, und/oder die den ARM-Befehlssatz von ARM Holdings in Sunnyvale, CA, ausführen). Der Befehlsumsetzer 2012 wird verwendet, um den binären x86-Code 2006 in einen Code umzusetzen, der durch den Prozessor ohne einen x86-Befehlssatzkern 2014 nativ ausgeführt werden kann. Dieser umgesetzte Code ist wahrscheinlich nicht derselbe wie der binäre Code 2010 des alternativen Befehlssatzes, da ein Befehlsumsetzer, der dazu in der Lage ist, schwierig herzustellen ist; der umgesetzte Code führt jedoch die allgemeine Operation durch und besteht aus Befehlen vom alternativen Befehlssatz. Folglich stellt der Befehlsumsetzer 2012 Software, Firmware, Hardware oder eine Kombination davon dar, die durch Emulation, Simulation oder irgendeinen anderen Prozess ermöglicht, dass ein Prozessor oder eine andere elektronische Vorrichtung, die keinen x86-Befehlssatzprozessor oder Kern aufweist, den binären x86-Code 2006 ausführt.
  • WEITERE BEISPIELE
  • Beispiel 1 schafft eine beispielhafte Einrichtung, die Folgendes umfasst: eine Abrufschaltungsanordnung, um einen Geheimcodebefehl abzurufen, der einen Operationscode, ein Datenelement und einen Schlüssel festlegt, wobei der Operationscode einen von drei kryptographischen Modi und eine Operation festlegen soll, eine Decodierschaltungsanordnung, um den abgerufenen Geheimcodebefehl zu decodieren; und eine Ausführungsschaltungsanordnung, die auf den decodierten Geheimcodebefehl reagiert, um die Operation unter Verwendung eines ausgewählten von drei Blockgeheimcodes, die dem festgelegten kryptographischen Modus entsprechen, und eines vereinheitlichten Geheimcodedatenpfades, der durch die drei Blockgeheimcodes gemeinsam genutzt wird, durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad mehrere Hybrid-Substitutionsboxen (S-Boxen) umfasst, um Galois-Feld-Multiplikationen (GF-Multiplikationen) und inverse Berechnungen durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad ein Polynom achter Ordnung isomorph äquivalent zu jedem Polynom berechnen soll, das durch die drei Blockgeheimcodes verwendet wird, wobei das Polynom achter Ordnung durch Berechnen und dann Kombinieren von zwei Polynomen vierter Ordnung implementiert wird.
  • Beispiel 2 umfasst die Substanz der beispielhaften Einrichtung von Beispiel 1, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht Hybrid-S-Boxen umfasst, und wobei der Geheimcodebeschleuniger ferner ein 128-Bit-Register, um das festgelegte Datenelement zu halten, und zwei 128-Bit-Register umfasst, wobei eines der zwei 128-Bit-Register verwendet werden soll, um den festgelegten Schlüssel zu halten, und das andere 128-Bit-Register verwendet werden soll, um einen Hilfsschlüssel im Camellia-Modus und einen Schlüssel der nächsten Runde im AES-Modus zu halten.
  • Beispiel 3 umfasst die Substanz der beispielhaften Einrichtung von Beispiel 1, wobei der erste kryptographische Modus einen Algorithmus einer fortschrittlichen Verschlüsselungsnorm (AES) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst und wobei der erste Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 2,5 Zyklen pro Runde zu arbeiten.
  • Beispiel 4 umfasst die Substanz der beispielhaften Einrichtung von Beispiel 1, wobei der zweite kryptographische Modus einen SMS4-Algorithmus verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der zweite Blockgeheimcode vier der acht S-Boxen des vereinheitlichten Geheimcodedatenpfades für die Rundenberechnung und die anderen vier S-Boxen für die Schlüsselerweiterung verwenden soll, wobei der zweite Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von einem Zyklus pro Runde zu arbeiten.
  • Beispiel 5 umfasst die Substanz der beispielhaften Einrichtung von Beispiel 1, wobei der dritte kryptographische Modus einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der dritte Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 1,3 Zyklen pro Runde zu arbeiten.
  • Beispiel 6 umfasst die Substanz der beispielhaften Einrichtung von Beispiel 1, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, von denen jede eine S-Box-Ausgabe (1x) und eine skalierte S-Box-Ausgabe (2x) liefert, wobei der erste, der zweite und der dritte kryptographische Modus Algorithmen einer fortschrittlichen Verschlüsselungsnorm (AES), von SMS4 bzw. Camellia (CML) verwenden, und wobei der Geheimcodebeschleuniger versucht, eine Verzögerung des kritischen Pfades über alle drei kryptographischen Modi durch Beseitigen einer Multiplikation aus dem AES-Modus, wenn eine Skalierung im ersten Block durchgeführt wird, und stattdessen Addieren der S-Box-Ausgabe (1x) und der skalierten S-Box-Ausgabe (2x), um eine erforderliche skalierte Ausgabe (3x) zu erzeugen, auszugleichen.
  • Beispiel 7 umfasst die Substanz der beispielhaften Einrichtung von Beispiel 1, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der erste, der zweite und der dritte kryptographische Modus Algorithmen einer fortschrittlichen Verschlüsselungsnorm (AES), von SMS4 bzw. Camellia (CML) verwenden, und wobei der Geheimcodebeschleuniger ferner eine Inversionsteilung durch Übersetzen von Operanden von für AES-spezifischen, SMS4-spezifischen und CML-spezifischen Reduktionspolynomen auf ein eindeutiges zusammengesetztes Feld ermöglichen soll.
  • Beispiel 8 umfasst die Substanz der beispielhaften Einrichtung von Beispiel 1, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der dritte kryptographische Modus einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der Geheimcodebeschleuniger ferner eine separate Schaltungsanordnung umfassen soll, um zwei Intra-Feistel-CML-Umstellungsfunktionen (FL/FL-1) durchzuführen, und wobei der dritte Geheimcodeblock die separate Schaltungsanordnung verwenden soll, wenn er arbeitet.
  • Beispiel 9 umfasst die Substanz der beispielhaften Einrichtung von Beispiel 1, wobei der Operationscode den kryptographischen Modus auswählen und angeben soll, ob verschlüsselt oder entschlüsselt werden soll, und wobei der Geheimcodebefehl ferner eine Schlüssellänge und eine Anzahl von Runden festlegen soll, wobei die Schlüssellänge eine von 128, 192 und 256 Bits ist und die Anzahl von Runden eine von 1, 10, 12, 14, 18, 24 und 32 ist.
  • Beispiel 10 umfasst die Substanz der beispielhaften Einrichtung von Beispiel 1, wobei die Einrichtung eine von einem Prozessor, einem Prozessorkern, einem Netzprozessor, einem mobilen Prozessor und einem Web-Server ist.
  • Beispiel 11 schafft ein beispielhaftes Verfahren, das durch eine Recheneinrichtung durchgeführt wird, wobei das Verfahren Folgendes umfasst: Abrufen eines Geheimcodebefehls, der ein Datenelement, einen Schlüssel und einen Operationscode festlegt, um einen von drei kryptographischen Modi und eine Operation festzulegen, unter Verwendung einer Abrufschaltungsanordnung, Decodieren des abgerufenen Geheimcodebefehls unter Verwendung einer Decodierschaltungsanordnung; und in Reaktion auf den decodierten Geheimcodebefehl Durchführen der festgelegten Operation mit einer Ausführungsschaltungsanordnung unter Verwendung eines ausgewählten von drei Blockgeheimcodes, die dem festgelegten kryptographischen Modus entsprechen, und eines vereinheitlichten Geheimcodedatenpfades, der durch die drei Blockgeheimcodes gemeinsam genutzt wird, wobei der vereinheitlichte Geheimcodedatenpfad mehrere Hybrid-Substitutionsboxen (S-Boxen) umfasst, um Galois-Feld-Multiplikationen (GF-Multiplikationen) und inverse Berechnungen durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad ein Polynom achter Ordnung isomorph äquivalent zu jedem Polynom berechnen soll, das durch die drei Blockgeheimcodes verwendet wird, wobei das Polynom achter Ordnung durch Berechnen und dann Kombinieren von zwei Polynomen vierter Ordnung implementiert wird.
  • Beispiel 12 umfasst die Substanz des beispielhaften Verfahrens von Beispiel 11, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht Hybrid-S-Boxen umfasst, und wobei der Geheimcodebeschleuniger ferner ein 128-Bit-Register, um das festgelegte Datenelement zu halten, und zwei 128-Bit-Register umfasst, wobei eines der zwei 128-Bit-Register verwendet werden soll, um den festgelegten Schlüssel zu halten, und das andere 128-Bit-Register verwendet werden soll, um einen Hilfsschlüssel im Camellia-Modus und einen Schlüssel der nächsten Runde im AES-Modus zu halten.
  • Beispiel 13 umfasst die Substanz des beispielhaften Verfahrens von Beispiel 11, wobei ein erster kryptographischer Modus der drei festgelegten kryptographischen Modi einen Algorithmus einer fortschrittlichen Verschlüsselungsnorm (AES) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst und wobei der erste Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 2,5 Zyklen pro Runde zu arbeiten.
  • Beispiel 14 umfasst die Substanz des beispielhaften Verfahrens von Beispiel 11, wobei ein zweiter kryptographischer Modus der drei festgelegten kryptographischen Modi einen SMS4-Algorithmus verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der zweite Blockgeheimcode vier der acht S-Boxen des vereinheitlichten Geheimcodedatenpfades für die Rundenberechnung und die anderen vier S-Boxen für die Schlüsselerweiterung verwenden soll, wobei der zweite Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von einem Zyklus pro Runde zu arbeiten.
  • Beispiel 15 umfasst die Substanz des beispielhaften Verfahrens von Beispiel 11, wobei ein dritter kryptographischer Modus der drei festgelegten kryptographischen Modi einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der dritte Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 1,3 Zyklen pro Runde zu arbeiten.
  • Beispiel 16 umfasst die Substanz des beispielhaften Verfahrens von Beispiel 11, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, von denen jede eine S-Box-Ausgabe (1x) und eine skalierte S-Box-Ausgabe (2x) liefert, wobei der erste, der zweite und der dritte kryptographische Modus Algorithmen einer fortschrittlichen Verschlüsselungsnorm (AES), von SMS4 bzw. Camellia (CML) verwenden, und wobei der Geheimcodebeschleuniger versucht, eine Verzögerung des kritischen Pfades über alle drei kryptographischen Modi durch Beseitigen einer Multiplikation aus dem AES-Modus, wenn eine Skalierung im ersten Block durchgeführt wird, und stattdessen Addieren der S-Box-Ausgabe (1x) und der skalierten S-Box-Ausgabe (2x), um eine erforderliche skalierte Ausgabe (3x) zu erzeugen, auszugleichen.
  • Beispiel 17 umfasst die Substanz des beispielhaften Verfahrens von Beispiel 11, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der erste, der zweite und der dritte kryptographische Modus Algorithmen einer fortschrittlichen Verschlüsselungsnorm (AES), von SMS4 bzw. Camellia (CML) verwenden, und wobei der Geheimcodebeschleuniger ferner eine Inversionsteilung durch Übersetzen von Operanden von für AES-spezifischen, SMS4-spezifischen und CML-spezifischen Reduktionspolynomen auf ein eindeutiges zusammengesetztes Feld ermöglichen soll.
  • Beispiel 18 umfasst die Substanz des beispielhaften Verfahrens von Beispiel 11, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der dritte kryptographische Modus einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der Geheimcodebeschleuniger ferner eine separate Schaltungsanordnung umfassen soll, um zwei Intra-Feistel-CML-Umstellungsfunktionen (FL/FL-1) durchzuführen, und wobei der dritte Geheimcodeblock die separate Schaltungsanordnung verwenden soll, wenn er arbeitet.
  • Beispiel 19 umfasst die Substanz des beispielhaften Verfahrens von Beispiel 11, wobei der Operationscode den kryptographischen Modus auswählen und angeben soll, ob verschlüsselt oder entschlüsselt werden soll, und wobei der Geheimcodebefehl ferner eine Schlüssellänge und eine Anzahl von Runden festlegen soll, wobei die Schlüssellänge eine von 128, 192 und 256 Bits ist und die Anzahl von Runden eine von 1, 10, 12, 14, 18, 24 und 32 ist.
  • Beispiel 20 umfasst die Substanz des beispielhaften Verfahrens von Beispiel 11, wobei die Recheneinrichtung eine von einem Prozessor, einem Prozessorkern, einem Netzprozessor, einem mobilen Prozessor und einem Web-Server ist.
  • Beispiel 21 schafft ein beispielhaftes nichttransitorisches, maschinenlesbares Medium, das Befehle enthält, um, wenn sie durch einen Prozessor ausgeführt werden, zu bewirken, dass der Prozessor auf einen Befehl reagiert durch: Abrufen eines Geheimcodebefehls, der ein Datenelement, einen Schlüssel und einen Operationscode festlegt, um einen von drei kryptographischen Modi und eine Operation festzulegen, unter Verwendung einer Abrufschaltungsanordnung, Decodieren des abgerufenen Geheimcodebefehls unter Verwendung einer Decodierschaltungsanordnung; und in Reaktion auf den decodierten Geheimcodebefehl Durchführen der festgelegten Operation mit einer Ausführungsschaltungsanordnung unter Verwendung eines ausgewählten von drei Blockgeheimcodes, die dem festgelegten kryptographischen Modus entsprechen, und eines vereinheitlichten Geheimcodedatenpfades, der durch die drei Blockgeheimcodes gemeinsam genutzt wird, wobei der vereinheitlichte Geheimcodedatenpfad mehrere Hybrid-Substitutionsboxen (S-Boxen) umfasst, um Galois-Feld-Multiplikationen (GF-Multiplikationen) und inverse Berechnungen durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad ein Polynom achter Ordnung isomorph äquivalent zu jedem Polynom berechnen soll, das durch die drei Blockgeheimcodes verwendet wird, wobei das Polynom achter Ordnung durch Berechnen und dann Kombinieren von zwei Polynomen vierter Ordnung implementiert wird.
  • Beispiel 22 umfasst die Substanz des beispielhaften nichttransitorischen maschinenlesbaren Mediums von Beispiel 21, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht Hybrid-S-Boxen umfasst, und wobei der Geheimcodebeschleuniger ferner ein 128-Bit-Register, um das festgelegte Datenelement zu halten, und zwei 128-Bit-Register umfasst, wobei eines der zwei 128-Bit-Register verwendet werden soll, um den festgelegten Schlüssel zu halten, und das andere 128-Bit-Register verwendet werden soll, um einen Hilfsschlüssel im Camellia-Modus und einen Schlüssel der nächsten Runde im AES-Modus zu halten.
  • Beispiel 23 umfasst die Substanz des beispielhaften nichttransitorischen maschinenlesbaren Mediums von Beispiel 21, wobei ein erster kryptographischer Modus der drei festgelegten kryptographischen Modi einen Algorithmus einer fortschrittlichen Verschlüsselungsnorm (AES) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst und wobei der erste Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 2,5 Zyklen pro Runde zu arbeiten.
  • Beispiel 24 umfasst die Substanz des beispielhaften nichttransitorischen maschinenlesbaren Mediums von Beispiel 21, wobei ein zweiter kryptographischer Modus der drei festgelegten kryptographischen Modi einen SMS4-Algorithmus verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der zweite Blockgeheimcode vier der acht S-Boxen des vereinheitlichten Geheimcodedatenpfades für die Rundenberechnung und die anderen vier S-Boxen für die Schlüsselerweiterung verwenden soll, wobei der zweite Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von einem Zyklus pro Runde zu arbeiten.
  • Beispiel 25 umfasst die Substanz des beispielhaften nichttransitorischen maschinenlesbaren Mediums von Beispiel 21, wobei ein dritter kryptographischer Modus der drei festgelegten kryptographischen Modi einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der dritte Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 1,3 Zyklen pro Runde zu arbeiten.

Claims (26)

  1. Beansprucht wird:
  2. Einrichtung, die Folgendes umfasst: eine Abrufschaltungsanordnung, um einen Geheimcodebefehl abzurufen, der einen Operationscode, ein Datenelement und einen Schlüssel festlegt, wobei der Operationscode einen von drei kryptographischen Modi und eine Operation festlegen soll; eine Decodierschaltungsanordnung, um den abgerufenen Geheimcodebefehl zu decodieren; und eine Ausführungsschaltungsanordnung, die auf den decodierten Geheimcodebefehl reagiert, um die Operation unter Verwendung eines ausgewählten von drei Blockgeheimcodes, die dem kryptographischen Modus entsprechen, und eines vereinheitlichten Geheimcodedatenpfades, der durch die drei Blockgeheimcodes gemeinsam genutzt wird, durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad mehrere Hybrid-Substitutionsboxen (S-Boxen) umfasst, um Galois-Feld-Multiplikationen (GF-Multiplikationen) und inverse Berechnungen durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad ein Polynom achter Ordnung isomorph äquivalent zu jedem Polynom berechnen soll, das durch die drei Blockgeheimcodes verwendet wird, wobei das Polynom achter Ordnung durch Berechnen und dann Kombinieren von zwei Polynomen vierter Ordnung implementiert wird.
  3. Einrichtung nach Anspruch 1, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht Hybrid-S-Boxen umfasst, und wobei der Geheimcodebeschleuniger ferner ein 128-Bit-Register, um das festgelegte Datenelement zu halten, und zwei 128-Bit-Register umfasst, wobei eines der zwei 128-Bit-Register verwendet werden soll, um den Schlüssel zu halten, und das andere 128-Bit-Register verwendet werden soll, um einen Hilfsschlüssel im Camellia-Modus und einen Schlüssel der nächsten Runde im AES-Modus zu halten.
  4. Einrichtung nach Anspruch 1, wobei der erste kryptographische Modus einen Algorithmus einer fortschrittlichen Verschlüsselungsnorm (AES) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst und wobei der erste Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 2,5 Zyklen pro Runde zu arbeiten.
  5. Einrichtung nach einem der Ansprüche 1-3, wobei der zweite kryptographische Modus einen SMS4-Algorithmus verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der zweite Blockgeheimcode vier der acht S-Boxen des vereinheitlichten Geheimcodedatenpfades für die Rundenberechnung und die anderen vier S-Boxen für die Schlüsselerweiterung verwenden soll, wobei der zweite Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von einem Zyklus pro Runde zu arbeiten.
  6. Einrichtung nach einem der Ansprüche 1-3, wobei der dritte kryptographische Modus einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der dritte Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 1,3 Zyklen pro Runde zu arbeiten.
  7. Einrichtung nach einem der Ansprüche 1-3, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, von denen jede eine S-Box-Ausgabe (1x) und eine skalierte S-Box-Ausgabe (2x) liefert, wobei der erste, der zweite und der dritte kryptographische Modus Algorithmen einer fortschrittlichen Verschlüsselungsnorm (AES), von SMS4 bzw. Camellia (CML) verwenden, und wobei der Geheimcodebeschleuniger versucht, eine Verzögerung des kritischen Pfades über alle drei kryptographischen Modi durch Beseitigen einer Multiplikation aus dem AES-Modus, wenn eine Skalierung im ersten Block durchgeführt wird, und stattdessen Addieren der S-Box-Ausgabe (1x) und der skalierten S-Box-Ausgabe (2x), um eine erforderliche skalierte Ausgabe (3x) zu erzeugen, auszugleichen.
  8. Einrichtung nach einem der Ansprüche 1-3, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der erste, der zweite und der dritte kryptographische Modus Algorithmen einer fortschrittlichen Verschlüsselungsnorm (AES), von SMS4 bzw. Camellia (CML) verwenden, und wobei der Geheimcodebeschleuniger ferner eine Inversionsteilung durch Übersetzen von Operanden von für AES-spezifischen, SMS4-spezifischen und CML-spezifischen Reduktionspolynomen auf ein eindeutiges zusammengesetztes Feld ermöglichen soll.
  9. Einrichtung nach einem der Ansprüche 1-3, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der dritte kryptographische Modus einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der Geheimcodebeschleuniger ferner eine separate Schaltungsanordnung umfassen soll, um zwei Intra-Feistel-CML-Umstellungsfunktionen (FL/FL-1) durchzuführen, und wobei der dritte Geheimcodeblock die separate Schaltungsanordnung verwenden soll, wenn er arbeitet.
  10. Einrichtung nach einem der Ansprüche 1-3, wobei der Operationscode den kryptographischen Modus auswählen und angeben soll, ob verschlüsselt oder entschlüsselt werden soll, und wobei der Geheimcodebefehl ferner eine Schlüssellänge und eine Anzahl von Runden festlegen soll, wobei die Schlüssellänge eine von 128, 192 und 256 Bits ist und die Anzahl von Runden eine von 1, 10, 12, 14, 18, 24 und 32 ist.
  11. Einrichtung nach einem der Ansprüche 1-3, wobei die Einrichtung eine von einem Prozessor, einem Prozessorkern, einem Netzprozessor, einem mobilen Prozessor und einem Web-Server ist.
  12. Verfahren, das durch eine Recheneinrichtung durchgeführt wird, wobei das Verfahren Folgendes umfasst: Abrufen eines Geheimcodebefehls, der ein Datenelement, einen Schlüssel und einen Operationscode festlegt, um einen von drei kryptographischen Modi und eine Operation festzulegen, unter Verwendung einer Abrufschaltungsanordnung; Decodieren des abgerufenen Geheimcodebefehls unter Verwendung einer Decodierschaltungsanordnung; und in Reaktion auf den decodierten Geheimcodebefehl Durchführen der Operation mit einer Ausführungsschaltungsanordnung unter Verwendung eines ausgewählten von drei Blockgeheimcodes, die dem kryptographischen Modus entsprechen, und eines vereinheitlichten Geheimcodedatenpfades, der durch die drei Blockgeheimcodes gemeinsam genutzt wird, wobei der vereinheitlichte Geheimcodedatenpfad mehrere Hybrid-Substitutionsboxen (S-Boxen) umfasst, um Galois-Feld-Multiplikationen (GF-Multiplikationen) und inverse Berechnungen durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad ein Polynom achter Ordnung isomorph äquivalent zu jedem Polynom berechnen soll, das durch die drei Blockgeheimcodes verwendet wird, wobei das Polynom achter Ordnung durch Berechnen und dann Kombinieren von zwei Polynomen vierter Ordnung implementiert wird.
  13. Verfahren nach Anspruch 11, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht Hybrid-S-Boxen umfasst, und wobei der Geheimcodebeschleuniger ferner ein 128-Bit-Register, um das Datenelement zu halten, und zwei 128-Bit-Register umfasst, wobei eines der zwei 128-Bit-Register verwendet werden soll, um den Schlüssel zu halten, und das andere 128-Bit-Register verwendet werden soll, um einen Hilfsschlüssel im Camellia-Modus und einen Schlüssel der nächsten Runde im AES-Modus zu halten.
  14. Verfahren nach Anspruch 11, wobei ein erster kryptographischer Modus der drei kryptographischen Modi einen Algorithmus einer fortschrittlichen Verschlüsselungsnorm (AES) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst und wobei der erste Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 2,5 Zyklen pro Runde zu arbeiten.
  15. Verfahren nach einem der Ansprüche 11-13, wobei ein zweiter kryptographischer Modus der drei kryptographischen Modi einen SMS4-Algorithmus verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der zweite Blockgeheimcode vier der acht S-Boxen des vereinheitlichten Geheimcodedatenpfades für die Rundenberechnung und die anderen vier S-Boxen für die Schlüsselerweiterung verwenden soll, wobei der zweite Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von einem Zyklus pro Runde zu arbeiten.
  16. Verfahren nach einem der Ansprüche 11-13, wobei ein dritter kryptographischer Modus der drei kryptographischen Modi einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der dritte Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 1,3 Zyklen pro Runde zu arbeiten.
  17. Verfahren nach einem der Ansprüche 11-13, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, von denen jede eine S-Box-Ausgabe (1x) und eine skalierte S-Box-Ausgabe (2x) liefert, wobei der erste, der zweite und der dritte kryptographische Modus Algorithmen einer fortschrittlichen Verschlüsselungsnorm (AES), von SMS4 bzw. Camellia (CML) verwenden, und wobei der Geheimcodebeschleuniger versucht, eine Verzögerung des kritischen Pfades über alle drei kryptographischen Modi durch Beseitigen einer Multiplikation aus dem AES-Modus, wenn eine Skalierung im ersten Block durchgeführt wird, und stattdessen Addieren der S-Box-Ausgabe (1x) und der skalierten S-Box-Ausgabe (2x), um eine erforderliche skalierte Ausgabe (3x) zu erzeugen, auszugleichen.
  18. Verfahren nach einem der Ansprüche 11-13, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der erste, der zweite und der dritte kryptographische Modus Algorithmen einer fortschrittlichen Verschlüsselungsnorm (AES), von SMS4 bzw. Camellia (CML) verwenden, und wobei der Geheimcodebeschleuniger ferner eine Inversionsteilung durch Übersetzen von Operanden von für AES-spezifischen, SMS4-spezifischen und CML-spezifischen Reduktionspolynomen auf ein eindeutiges zusammengesetztes Feld ermöglichen soll.
  19. Verfahren nach einem der Ansprüche 11-13, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der dritte kryptographische Modus einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der Geheimcodebeschleuniger ferner eine separate Schaltungsanordnung umfassen soll, um zwei Intra-Feistel-CML-Umstellungsfunktionen (FL/FL-1) durchzuführen, und wobei der dritte Geheimcodeblock die separate Schaltungsanordnung verwenden soll, wenn er arbeitet.
  20. Verfahren nach einem der Ansprüche 11-13, wobei der Operationscode den kryptographischen Modus auswählen und angeben soll, ob verschlüsselt oder entschlüsselt werden soll, und wobei der Geheimcodebefehl ferner eine Schlüssellänge und eine Anzahl von Runden festlegen soll, wobei die Schlüssellänge eine von 128, 192 und 256 Bits ist und die Anzahl von Runden eine von 1, 10, 12, 14, 18, 24 und 32 ist.
  21. Verfahren nach einem der Ansprüche 11-13, wobei die Recheneinrichtung eine von einem Prozessor, einem Prozessorkern, einem Netzprozessor, einem mobilen Prozessor und einem Web-Server ist.
  22. Nicht-transitorisches maschinenlesbares Medium, das Befehle enthält, auf die ein Prozessor reagieren soll, durch: Abrufen eines Geheimcodebefehls, der ein Datenelement, einen Schlüssel und einen Operationscode festlegt, um einen von drei kryptographischen Modi und eine Operation festzulegen, unter Verwendung einer Abrufschaltungsanordnung; Decodieren des abgerufenen Geheimcodebefehls unter Verwendung einer Decodierschaltungsanordnung; und in Reaktion auf den decodierten Geheimcodebefehl Durchführen der Operation mit einer Ausführungsschaltungsanordnung unter Verwendung eines ausgewählten von drei Blockgeheimcodes, die dem kryptographischen Modus entsprechen, und eines vereinheitlichten Geheimcodedatenpfades, der durch die drei Blockgeheimcodes gemeinsam genutzt wird, wobei der vereinheitlichte Geheimcodedatenpfad mehrere Hybrid-Substitutionsboxen (S-Boxen) umfasst, um Galois-Feld-Multiplikationen (GF-Multiplikationen) und inverse Berechnungen durchzuführen, wobei der vereinheitlichte Geheimcodedatenpfad ein Polynom achter Ordnung isomorph äquivalent zu jedem Polynom berechnen soll, das durch die drei Blockgeheimcodes verwendet wird, wobei das Polynom achter Ordnung durch Berechnen und dann Kombinieren von zwei Polynomen vierter Ordnung implementiert wird.
  23. Nicht-transitorisches maschinenlesbares Medium nach Anspruch 21, wobei die Ausführungsschaltungsanordnung einen Geheimcodebeschleuniger umfasst, wobei der vereinheitlichte Geheimcodedatenpfad acht Hybrid-S-Boxen umfasst, und wobei der Geheimcodebeschleuniger ferner ein 128-Bit-Register, um das Datenelement zu halten, und zwei 128-Bit-Register umfasst, wobei eines der zwei 128-Bit-Register verwendet werden soll, um den Schlüssel zu halten, und das andere 128-Bit-Register verwendet werden soll, um einen Hilfsschlüssel im Camellia-Modus und einen Schlüssel der nächsten Runde im AES-Modus zu halten.
  24. Nicht-transitorisches maschinenlesbares Medium nach Anspruch 21, wobei ein erster kryptographischer Modus der drei kryptographischen Modi einen Algorithmus einer fortschrittlichen Verschlüsselungsnorm (AES) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst und wobei der erste Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 2,5 Zyklen pro Runde zu arbeiten.
  25. Nicht-transitorisches maschinenlesbares Medium nach einem der Ansprüche 21-23, wobei ein zweiter kryptographischer Modus der drei kryptographischen Modi einen SMS4-Algorithmus verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der zweite Blockgeheimcode vier der acht S-Boxen des vereinheitlichten Geheimcodedatenpfades für die Rundenberechnung und die anderen vier S-Boxen für die Schlüsselerweiterung verwenden soll, wobei der zweite Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von einem Zyklus pro Runde zu arbeiten.
  26. Nicht-transitorisches maschinenlesbares Medium nach einem der Ansprüche 21-23, wobei ein dritter kryptographischer Modus der drei kryptographischen Modi einen Camellia-Algorithmus (CML-Algorithmus) verwendet, wobei der vereinheitlichte Geheimcodedatenpfad acht S-Boxen umfasst, und wobei der dritte Blockgeheimcode den vereinheitlichten Geheimcodedatenpfad verwenden soll, um mit einem Durchsatz von 1,3 Zyklen pro Runde zu arbeiten.
DE102019109845.9A 2018-06-15 2019-04-15 Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia Pending DE102019109845A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/010,206 US11121856B2 (en) 2018-06-15 2018-06-15 Unified AES-SMS4—Camellia symmetric key block cipher acceleration
US16/010,206 2018-06-15

Publications (1)

Publication Number Publication Date
DE102019109845A1 true DE102019109845A1 (de) 2019-12-19

Family

ID=68724792

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019109845.9A Pending DE102019109845A1 (de) 2018-06-15 2019-04-15 Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia

Country Status (2)

Country Link
US (1) US11121856B2 (de)
DE (1) DE102019109845A1 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3957023B1 (de) * 2019-04-15 2022-10-19 Telefonaktiebolaget Lm Ericsson (Publ) Sbox-architektur mit aes mit niedriger tiefe für bereichseinschränkungshardware
US11456877B2 (en) * 2019-06-28 2022-09-27 Intel Corporation Unified accelerator for classical and post-quantum digital signature schemes in computing environments
US11263353B2 (en) * 2019-12-11 2022-03-01 Facebook Technologies, Llc Mixed sequencing of polynomial-diverse encryption and decryption operations for side channel attack protection
US11436342B2 (en) 2019-12-26 2022-09-06 Intel Corporation TDX islands with self-contained scope enabling TDX KeyID scaling
US20210200880A1 (en) * 2019-12-27 2021-07-01 Intel Corporation Method and apparatus for multi-key total memory encryption based on dynamic key derivation
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
KR20220048225A (ko) 2020-10-12 2022-04-19 삼성전자주식회사 동형 연산 가속기 및 이를 포함하는 동형 연산 수행 장치
CN112989391B (zh) * 2021-04-15 2024-01-16 广州蚁比特区块链科技有限公司 混合加密方法、混合解密方法、系统、设备及存储介质
CN114244510A (zh) * 2021-12-20 2022-03-25 深圳忆联信息系统有限公司 硬件加速装置、方法、设备及存储介质
TWI785952B (zh) * 2021-12-30 2022-12-01 新唐科技股份有限公司 密碼加速器以及加解密運算的差分故障分析方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257718B2 (en) * 2003-05-12 2007-08-14 International Business Machines Corporation Cipher message assist instructions
US8155308B1 (en) * 2006-10-10 2012-04-10 Marvell International Ltd. Advanced encryption system hardware architecture
US8346839B2 (en) * 2007-03-30 2013-01-01 Intel Corporation Efficient advanced encryption standard (AES) datapath using hybrid rijndael S-box
GB2453367A (en) * 2007-10-04 2009-04-08 Univ Newcastle Cryptographic processing using isomorphic mappings of Galois fields
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
EP2715544B1 (de) * 2011-06-03 2022-12-21 Exelis Inc. Verfahren und system für eine eingebettete und rekonfigurierbare hochleistungs-firmware-verschlüsselung
US9800406B2 (en) * 2014-05-21 2017-10-24 Intel Corporation Technologies for modifying a first cryptographic cipher with operations of a second cryptographic cipher
US9513913B2 (en) * 2014-07-22 2016-12-06 Intel Corporation SM4 acceleration processors, methods, systems, and instructions
US20190044699A1 (en) * 2018-06-28 2019-02-07 Intel Corporation Reconfigurable galois field sbox unit for camellia, aes, and sm4 hardware accelerator

Also Published As

Publication number Publication date
US11121856B2 (en) 2021-09-14
US20190386815A1 (en) 2019-12-19

Similar Documents

Publication Publication Date Title
DE102019109845A1 (de) Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia
DE112012007063B4 (de) Zusammenfügen von benachbarten Sammel-/Streuoperationen
DE102019109847A1 (de) Beschleunigung der matrixmultplikation dünnbesetzter matrizen unter verwendung einer spaltenfaltung und -verdichtung
DE112013005188B4 (de) Prozessor und vefrahren zur vektorisierung von zusammengeführten, mehrfach geschachtelten schleifen
DE112017001804T5 (de) Vorrichtung und Verfahren für träge synchrone Seitentabellenaktualisierungen mit geringem Aufwand
DE102019100009A1 (de) Vereinheitlichter Hardwarebeschleuniger für Verschlüsselungssysteme mit symmetrischen Schlüsseln
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE112013005239B4 (de) Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus
DE102015002215A1 (de) Sortierbeschleunigungsprozessor, -Verfahren, -Systeme und -Befehle
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE112014006508T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden
DE112013004798T5 (de) Befehlssatz zur Nachrichtenplanung des SHA256-Algorithmus
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE112013004796T5 (de) Befehlssatz für die SHA1-Rundenverarbeitung in 128 Bit-Datenwegen
DE112013005428T5 (de) Befehle, Prozessoren, Verfahren und Systeme zum Verarbeiten sicherer Hash-Algorithmen
DE112011105122T5 (de) Systeme, Vorrichtungen und Verfahren zum Vermischen zweier Quelloperanden in einem einzigen Ziel unter Verwendung einer Schreibmaske
DE102014003706A1 (de) BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME
DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
DE202019005682U1 (de) Hardwaregestützte Paging-Mechanismen
DE112012001542T5 (de) System, Vorrichtung und Verfahren zum Ausrichten von Registern
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE102018006744A1 (de) Bitmatrixmultiplikation
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung