DE102015002254A1 - Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen - Google Patents

Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen Download PDF

Info

Publication number
DE102015002254A1
DE102015002254A1 DE102015002254.7A DE102015002254A DE102015002254A1 DE 102015002254 A1 DE102015002254 A1 DE 102015002254A1 DE 102015002254 A DE102015002254 A DE 102015002254A DE 102015002254 A1 DE102015002254 A1 DE 102015002254A1
Authority
DE
Germany
Prior art keywords
state values
rounds
hash function
processor
storage location
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
DE102015002254.7A
Other languages
English (en)
Inventor
Kirk S. Yap
Vinodh Gopal
Wajdi K. Feghali
Gilbert M. Wolrich
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 DE102015002254A1 publication Critical patent/DE102015002254A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Engineering (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Es wird eine Einrichtung und ein Verfahren zum Ausführen von Hash-Funktionen auf einem Prozessor beschrieben. Zum Beispiel umfasst eine Ausführungsform eines Prozessors: einen Registersatz mit einer ersten Speicherstelle und einer zweiten Speicherstelle, in der Zustandsvariablen für eine Hash-Funktion zu speichern sind; eine Ausführungseinheit zum Ausführen der Hash-Funktion und zum anfänglichen Bezeichnen der ersten Speicherstelle als einen ersten Satz von Zustandswerten benutzt zum Berechnen von Runden der Hash-Funktion speichernd, und zum anfänglichen Bezeichnen einer zweiten Speicherstelle als einen zweiten Satz von Zustandswerten ebenfalls benutzt zum Berechnen der Runden der Hash-Funktion speichernd; und die Ausführungseinheit zum Ausführen einer Vielzahl von Runden der Hash-Funktion unter Verwendung des ersten und zweiten Satzes von Zustandsdaten, wobei Ausführen Austauschen der Bezeichnungen der ersten Speicherstelle und der zweiten Speicherstelle umfasst, so dass die erste Speicherstelle zum Speichern des ersten Satzes von Zustandswerten für einen ersten Satz von Runden und des zweiten Satzes von Zustandswerten für einen zweiten Satz von Runden bezeichnet ist und wobei die zweite Speicherstelle zum Speichern des zweiten Satzes von Zustandswerten für den ersten Satz von Runden und des ersten Satzes von Zustandswerten für den zweiten Satz von Runden bezeichnet ist.

Description

  • HINTERGRUND
  • Erfindungsgebiet
  • Die vorliegende Erfindung betrifft allgemein das Gebiet von Computerprozessoren. Insbesondere betrifft die Erfindung ein Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen.
  • Beschreibung der verwandten Technik
  • Die SM-3-Hash-Funktion (SM = Secure Message) ist eine neue, zum Nutzen der IETF- und IRTF-Gemeinschaften (IETF = Internet Engineering Task Force, IRTF = Internet Research Task Force) durch die Chinese Commercial Cryptography Administration veröffentlichte kryptografische Funktion. SM3 ist gegenwärtig durch die China Information Security Standardization Technical Committee-Initiative (kurz TC260) als der Hash-Algorithmus für das TCM (Trusted Computing Module – verlässliches Rechenmodul) angegeben. Die Konstruktion von SM3 ist auf der Konstruktion des Secure Hash Algorithm(SHA)-2 (sicheren Hash-Algorithmus) durch Zufügen zusätzlicher Merkmale zum Stärken der Hash-Funktion wie beispielsweise Einspeisen von zwei von Nachrichten abgeleiteten Worten in jeder Runde gegenüber nur einem im Fall von SHA-2 aufgebaut.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Ein besseres Verständnis der vorliegenden Erfindung lässt sich aus der nachfolgenden ausführlichen Beschreibung in Verbindung mit den folgenden Zeichnungen erhalten, in denen:
  • 1A ein Blockschaltbild ist, das sowohl eine beispielhafte geordnete Abhol-, Decodier-, Zurücksende-Pipeline als auch eine beispielhafte Registerumbenennung, ungeordnete Ausgabe-/Ausführungspipeline nach Ausführungsformen der Erfindung darstellt;
  • 1B ein Blockschaltbild ist, das sowohl eine beispielhafte Ausführungsform eines geordneten Abhol-, Decodier-, Zurücksendekerns als auch eines beispielhaften Registerumbenennungskerns einer Architektur zur ungeordneten Ausgabe/Ausführung darstellt, der in einem Prozessor gemäß Ausführungsformen der Erfindung aufzunehmen ist;
  • 2 ein Blockschaltbild eines Einzelkernprozessors und eines Mehrkernprozessors mit integrierter Speichersteuerung und Grafik gemäß Ausführungsformen der Erfindung ist;
  • 3 ein Blockschaltbild eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 4 ein Blockschaltbild eines zweiten Systems gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 5 ein Blockschaltbild eines dritten Systems gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 6 ein Blockschaltbild eines Systems auf einem Chip (SoC) gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 7 ein Blockschaltbild darstellt, das die Verwendung eines Softwareanweisungswandlers zum Umwandeln von binären Anweisungen in einem Quellenanweisungssatz in binäre Anweisungen in einem Zielanweisungssatz gemäß Ausführungsformen der Erfindung vergleicht;
  • 8 eine Ausführungsform einer Prozessorarchitektur darstellt, auf der Ausführungsformen der Erfindung ausgeführt werden können;
  • 9 in einer Runde zur Ausführung der SM-3-Hash-Funktion (SM = Secure Message – sichere Nachricht) durchgeführte Operationen darstellt;
  • 10 eine Ausführungsform einer Architektur und zugehörige Verfahren zum Durchführen verschiedener Runden einer Hash-Operation darstellt; und
  • 11 ein Verfahren zum Durchführen von Runden einer Hash-Funktion gemäß einer Ausführungsform der Erfindung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der nachfolgenden Beschreibung sind für Erläuterungszwecke zahlreiche bestimmte Einzelheiten aufgeführt, um ein durchgehendes Verständnis der unten beschriebenen Ausführungsformen der Erfindung bereitzustellen. Dem Fachmann wird jedoch offenbar sein, dass die Ausführungsformen der Erfindung ohne einige dieser bestimmten Einzelheiten ausgeführt werden können. In anderen Fällen sind wohlbekannte Strukturen und Vorrichtungen in Blockschaltbildform dargestellt, um Verdecken der grundliegenden Grundsätze der Ausführungsformen der Erfindung zu vermeiden.
  • Beispielhafte Prozessorarchitekturen und Datenarten
  • 1A ist ein Blockschaltbild, das sowohl eine beispielhafte geordnete Abhol-, Decodier-, Zurücksende-Pipeline als auch eine beispielhafte Registerumbenennung, ungeordnete Ausgabe-/Ausführungspipeline nach Ausführungsformen der Erfindung darstellt. 1B ist ein Blockschaltbild, das sowohl eine beispielhafte Ausführungsform eines geordneten Abhol-, Decodier-, Zurücksendekerns als auch eines beispielhaften Registerumbenennungskerns einer Architektur zur ungeordneten Ausgabe/Ausführung darstellt, der in einem Prozessor gemäß Ausführungsformen der Erfindung aufzunehmen ist. Die durchgezogenen Kästen in 1A–B zeigen die geordneten Teile der Pipeline und des Kerns während die wahlweise Zufügung der gestrichelten Kästen die Registerumbenennungs-Pipeline und den Registerumbenennungskern zu ungeordneten Ausgabe/Ausführung darstellt.
  • In 1A umfasst eine Prozessor-Pipeline 100 eine Abrufstufe 102, eine Längendecodierstufe 104, eine Decodierstufe 106, eine Zuteilungsstufe 108, eine Umbenennungsstufe 110, eine Planungsstufe 112 (auch als Absende- oder Ausgabestufe bekannt), eine Registerlese-/Speicherlesestufe 114, eine Ausführungsstufe 116, eine Zurückschreibungs-/Speichereinschreibestufe 118, eine Ausnahmebearbeitungsstufe 122 und eine Übergabestufe 124.
  • 1B zeigt Prozessorkern 190 mit einer an eine Ausführungsmaschineneinheit 150 angekoppelten Vorstufeneinheit 130, und beide sind an eine Speichereinheit 170 angekoppelt. Der Kern 190 kann ein RISC-Kern (RISC = Reduced Instruction Set Computing – Rechenkern mit verringertem Befehlsvorrat), ein CISC-Kern (CISC = Complex Instruction Set Computing – Rechenkern mit komplexem Befehlsvorrat), ein VLIW-Kern (VLIW = Very Long Instruction Word – Kern mit sehr langem Befehlswort) oder eine hybride oder alternative Kernart sein. Als weitere Wahlmöglichkeit kann der Kern 190 ein Spezialkern wie beispielsweise ein Netz- oder Kommunikationskern, eine Kompressionsmaschine, ein Coprozessorkern, GPGPU-Kern (GPGPU = General Purpose Computing Graphics Processing Unit – Universal-Rechengrafikverarbeitungseinheit), Grafikkern oder dergleichen sein.
  • Die Vorstufeneinheit 130 umfasst eine an eine Anweisungs-Cache-Einheit 134 angekoppelte Zweigvorhersageeinheit 132, wobei die Anweisungs-Cache-Einheit 134 an einen Anweisungs-Adressenumsetzungspuffer TLB 136 (TLB = Translation Lookaside Buffer) angekoppelt ist, der an eine Anweisungsabrufeinheit 138 angekoppelt ist, die an eine Decodiereinheit 140 angekoppelt ist. Die Decodiereinheit 140 (oder der Decodierer) kann Anweisungen decodieren und als Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Eingangspunkte, Mikroanweisungen, andere Anweisungen oder sonstige Steuersignale erzeugen, die aus den ursprünglichen Anweisungen decodiert oder abgeleitet sind oder diese sonstwie widerspiegeln. Die Decodiereinheit 140 kann unter Verwendung verschiedener unterschiedlicher Mechanismen ausgeführt sein. Beispiele geeigneter Mechanismen umfassen, sind aber nicht begrenzt auf Nachschlagetabellen, Hardware-Ausführungen, programmierbare Logikgruppen (PLA = Programmable Logic Arrays), Mikrocode-Nurlesespeicher (ROM = Read Only Memories) usw. In einer Ausführungsform umfasst der Kern 190 einen Mikrocode-ROM oder sonstiges Medium, das Mikrocode für gewisse Makroanweisungen speichert (z. B. in der Decodiereinheit 140 oder sonstwie in der Vorstufeneinheit 130). Die Decodiereinheit 140 ist an eine Umbenennungs-/Zuteilereinheit 152 in der Ausführungsmaschineneinheit 150 angekoppelt.
  • Die Ausführungsmaschineneinheit 150 umfasst die an eine Zurücksendungseinheit 154 und an einen Satz von einer oder mehreren Planereinheit(en) 156 angekoppelte Umbenennungs-/Zuteilereinheit 152. Die Planereinheit(en) 156 stellen eine beliebige Anzahl verschiedener Planer dar, einschließlich von Reservierungsstationen, zentralem Anweisungsfenster usw. Die Planereinheit(en) 156 ist (sind) an die physikalische Registerdatei(en)-Einheit(en) 158 angekoppelt. Jede der physikalischen Registerdatei(en) Einheiten 158 stellt eine oder mehrere physikalische Registerdateien dar, von denen verschiedene eine oder mehrere unterschiedliche Datenarten speichern, wie beispielsweise skalare Ganzzahl, skalarer Gleitpunkt, gepackte Ganzzahl, gepackte Gleitzahl, Vektor-Ganzzahl, Vektor-Gleitpunkt, Zustand (z. B. einen Anweisungszeiger, der die Adresse der nächsten auszuführenden Anweisung ist) usw. In einer Ausführungsform umfasst die physikalische Registerdatei(en) Einheit 158 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit, und eine Skalarregistereinheit. Diese Registereinheiten können architektonische Vektorregister, Vektormaskenregister und Universalregister bereitstellen. Die physikalischen Registerdatei(en) Einheit(en) 158 ist (sind) durch die Zurücksendungseinheit 154 überlappt, um verschiedene Weisen darzustellen, auf die Registerumbenennung und umgeordnete Ausführung ausgeführt werden können (z. B. unter Verwendung von Umordnungsppuffer(en) und Datei(en) eines Zurücksendungsregisters; unter Verwendung einer zukünftigen Datei(en), eines geschichtlichen Puffer(s) und Datei(en) eines Zurücksendungsregisters; unter Verwendung von Karten eines Registers und eines Zusammenschlusses von Registern; usw.). Die Zurückzugseinheit 154 und die physikalische Registerdatei(en) Einheit(en) 158 sind and die Ausführungsgruppe(n) 160 angekoppelt. Die Ausführungsgruppe(n) 160 umfassen einen Satz von einer oder mehreren Ausführungseinheiten 162 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 164. Die Ausführungseinheiten 162 können verschiedene Operationen durchführen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datenarten (z. B. skalarer Gleitpunkt, gepackte Ganzzahl, gepackter Gleitpunkt, Vektor-Ganzzahl, Vektor-Gleitpunkt). Während einige Ausführungsformen eine Anzahl von bestimmten Funktionen oder Funktionssätzen zugeordneten Ausführungseinheiten umfassen können, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, die alle alle Funktionen durchführen. Die Planereinheit(en) 156, physikalische Registerdatei(en)-Einheit(en) 158 und Ausführungsgruppe(n) 160 sind als möglicherweise mehrfach dargestellt, da gewisse Ausführungsformen getrennte Pipelines für gewisse Arten von Daten/Operationen erstellen (z. B. eine Skalarganzzahl-Pipeline, eine Skalar-Gleitpunkt/gepackte Ganzzahl/gepackter Gleitpunkt/Vektorganzzahl/Vektor-Gleitpunkt-Pipeline und/oder eine Speicherzugriffspipeline, die jeweils ihre eigene Planereinheit, physikalische Registerdatei(en)-Einheit und/oder Ausführungsgruppe aufweisen – und im Fall einer getrennten Speicherzugriffs-Pipeline sind gewisse Ausführungsformen ausgeführt, bei denen nur die Ausführungsgruppe dieser Pipeline die Speicherzugriffseinheit(en) 164 aufweist). Auch versteht es sich, dass, wo getrennte Pipelines benutzt werden, eine oder mehrere dieser Pipelines ungeordneter Ausgabe/Ausführung sein können und die übrigen geordnet.
  • Der Satz Speicherzugriffseinheiten 164 ist an die Speichereinheit 170 angekoppelt, die eine Daten-TLB-Einheit 172 umfasst, angekoppelt an eine Daten-Cache-Einheit 174, die an eine L2-Cache-Einheit 176 angekoppelt ist (L2 = Level 2). In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 164 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit umfassen, von denen jede an die Daten-TLB-Einheit 172 in der Speichereinheit 170 angekoppelt ist. Die Anweisungs-Cache-Einheit 134 ist weiterhin an eine L2-Cache-Einheit 176 in der Speichereinheit 170 angekoppelt. Die L2-Cache-Einheit 176 ist an eine oder mehrere andere Cache-Höhen und schließlich an einen Hauptspeicher angekoppelt.
  • Beispielsweise kann die beispielhafte Registerumbenennungs-, ungeordnete Ausgabe/Ausführungs-Kernarchitektur die Pipeline 100 wie folgt ausführen: 1) der Anweisungsabruf 138 führt die Abruf- und Längendecodierungsstufen 102 und 104 durch; 2) die Decodiereinheit 140 führt die Decodierstufe 106 durch; 3) die Umbenennungs/Zuteilereinheit 152 führt die Zuteilungsstufe 108 und Umbenennungsstufe 110 durch; 4) die Planereinheit(en) 156 führen-die Planungsstufe 112 durch; 5) die physikalisch Registerdatei(en)-Einheit(en) 158 und die Speichereinheit 170 führen die Registerlese-/Speicherlesestufe 114 durch; die Ausführungsgruppe 160 führt die Ausführungsstufe 116 durch; 6) die Speichereinheit 170 und die physikalische Registerdatei(en)-Einheit(en) 158 führen die Rückschreibe-/Speicherschreibestufe 118 durch; 7) verschiedene Einheiten können an der Ausnahmebearbeitungsstufe 122 beteiligt sein; und 8) die Zurückzugseinheit 154 und die physikalische Registerdatei(en)-Einheit(en) 158 führen Übergabestufe 124 durch.
  • Der Kern 190 kann einen oder mehrere Anweisungssätze unterstützen (z. B. den x86-Anweisungssatz (mit einigen Erweiterungen, die bei neueren Fassungen zugefügt worden sind); den MIPS-Anweisungssatz von MIPS Technologies of Sunnyvale, CA; den ARM-Anweisungssatz (mit wahlweisen zusätzlichen Erweiterungen wie beispielsweise NEON) von ARM Holdings of Sunnyvale, CA) einschließlich der hier beschriebenen Anweisung(en). In einer Ausführungsform umfasst der Kern 190 Logik zum Unterstützen einer gepackten Datenanweisungssatzerweiterung (z. B. AVX1, AVX2 und/oder irgendeiner Form des generischen vektorfreundlichen Anweisungsformats (U = 0 und/oder U = 1) unten beschrieben), wodurch die von vielen Multemedienanwendungen benutzten Operationen unter Verwendung gepackter Daten durchgeführt werden können.
  • Es versteht sich, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann und dies auf verschiedene Weisen einschließlich Zeitscheiben-Multithreading, gleichzeitiges Multithreading (wo ein einzelner physikalischer Kern einen logischen Kern für jeden der Threads bereitstellt, die dieser physikalische Kern gleichzeitig bearbeitet), oder eine Kombination derselben (z. B. Zeitscheiben-Abruf und -Decodierung und gleichzeitiges Multithreading danach wie bei der Hyperthreading-Technik von Intel®) machen kann.
  • Während Registerumbenennung im Zusammenhang von ungeordneter Ausführung beschrieben wird, versteht es sich, dass Registerumbenennung in einer geordneten Architektur benutzt werden kann. Während die dargestellte Ausführungsform des Prozessors auch getrennte Anweisungs- und Daten-Cache-Einheiten 134/174 und eine geteilte L2-Cache-Einheit 176 umfasst, können alternative Ausführungsformen einen einzelnen internen Cache für sowohl Anweisungen als auch Daten besitzen, wie beispielsweise einen internen L1-Cache (L1 = Level 1 – Stufe 1), oder mehrere Stufen von internem Cache. In einigen Ausführungsformen kann das System eine Kombination eines internen Caches und eines externen Caches umfassen, die für den Kern und/oder den Prozessor extern liegt. Alternativ kann der gesamte Cache dem Kern und/oder dem Prozessor extern liegen.
  • 2 ist ein Blockschaltbild eines Prozessors 200, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik gemäß Ausführungsformen der Erfindung aufweisen kann. Die durchgezogenen Kästen in der 2 zeigen einen Prozessor 200 mit Einzelkern 202A, einen Systemagenten 210, einen Satz von einer oder mehreren Bussteuerungseinheiten 216, während die wahlweise Zufügung der gestrichelten Kästen einen alternativen Prozessor 200 mit mehreren Kernen 202A–N, einen Satz einer oder mehrerer integrierter Speichersteuerungseinheit(en) 214 in der Systemagenteneinheit 210 und Sonderlogik 208 darstellt.
  • So können verschiedene Ausführungen des Prozessors 200 umfassen: (1) eine CPU, wobei die Sonderlogik 208 Logik integrierter Grafik und/oder wissenschaftlichen Durchsatz (die einen oder mehrere Kerne umfassen kann) ist und die Kerne 202A–N ein oder mehrere Universalkerne sind (z. B. geordnete Universalkerne, ungeordnete Universalkerne, eine Kombination der zwei); 2) einen Coprozessor, wobei die Kerne 202A–N eine Anzahl von Sonderkernen sind, die hauptsächlich für Grafik und/oder wissenschaftlichen (Durchsatz) bestimmt sind; und 3) einen Coprozessor, wobei die Kerne 202A–N eine große Anzahl von geordneten Universalkernen sind. So kann der Prozessor 200 ein Universalprozessor, Coprozessor oder Sonderprozessor sein, wie beispielsweise ein Netz- oder Kommunikationsprozessor, Komprimierungsmaschine, Grafikprozessor, GPGPU (General Purpose Graphics Processing Unit – Universal-Grafikverarbeitungseinheit), ein MIC-Coprozessor mit hohem Durchsatz (MIC – Many Integrated Core – viele integrierte Kerne) (mit 30 oder mehr Kernen), eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips ausgeführt sein. Der Prozessor 200 kann ein Teil von einem oder mehreren Substraten sein und/oder kann auf einem oder mehreren Substraten ausgeführt sein unter Verwendung einer beliebigen Anzahl von Prozesstechniken, wie beispielsweise BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst eine oder mehrere Stufen von Cache in den Kernen, einen Satz oder eine oder mehrere geteilte Cache-Einheiten 206 und (nicht gezeigten) Außenspeicher angekoppelt an den Satz integrierter Speichersteuerungseinheiten 214. Der Satz geteilter Cache-Einheiten 206 kann einen oder mehrere Cache mittlerer Stufe wie beispielsweise Level 2 (L2), Level 3 (L3), Level 4 (L4) oder sonstige Cache-Stufen, einen Cache letzter Stufe (LLC – Last Level Cache) und/oder Kombinationen derselben umfassen. Während in einer Ausführungsform eine ringbasierende Verbindungseinheit 212 die integrierte Grafiklogik 208, den Satz geteilter Cacheeinheiten 206 und die Systemagenteneinheit 210/integrierte Speichersteuerungseinheit(en) 214 miteinander verbindet, können alternative Ausführungsformen eine beliebige Anzahl wohlbekannter Techniken zum Verbinden solcher Einheiten benutzen. In einer Ausführungsform wird Kohärenz zwischen einer oder mehreren Cache-Einheiten 206 und Kernen 202-A–N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 202A–N Multithreading-fähig. Der Systemagent 210 umfasst diese Komponenten durch Koordinieren und Betreiben der Kerne 202A–N. Die Systemagenteneinheit 210 kann beispielsweise eine Leistungssteuereinheit (PCU – Power Control Unit) und eine Anzeigeeinheit umfassen. Die PCU kann zum Regeln des Leistungszustandes der Kerne 202A–N und der integrierten Grafiklogik 208 benötigte Logik und Komponenten sein oder diese enthalten. Die Anzeigeeinheit besteht zum Ansteuern einer oder mehrerer äußerlich angeschlossener Anzeigen.
  • Die Kerne 202A–N können als Architektur-Anweisungssatz homogen oder heterogen sein; das heißt zwei oder mehr der Kerne 202A–N können zur Ausführung des gleichen Anweisungssatzes fähig sein, während andere nur zur Ausführung einer Teilmenge dieses Anweisungssatzes oder eines anderen Anweisungssatzes fähig sein können. In einer Ausführungsform sind die Kerne 202A–N heterogen und umfassen sowohl die unten beschriebenen „kleinen” Kerne als auch „großen” Kerne.
  • 36 sind Blockschaltbilder beispielhafter Computerarchitekturen. Andere Systemauslegungen und in der Technik bekannte Konfigurationen für Laptops, Desktops, Hand-PC, persönliche Digitalassistenten, technische Arbeitsplätze, Server, Netzgeräte, Netzhubs, Schalter, eingebettete Prozessoren, Digitalsignalprozessoren (DSP), Grafikgeräte, Videospielgeräte, Set-Top-Kästen, Mikrosteuerungen, Zellulartelefone, tragbare Medienspieler, Handgeräte und verschiedene andere Elektronikvorrichtungen sind ebenfalls geeignet. Im Allgemeinen ist eine enorme Vielzahl von Systemen oder Elektronikvorrichtungen, die einen Prozessor und/oder andere Ausführungslogik aufnehmen können wie hier offenbart, allgemein geeignet.
  • Nunmehr bezugnehmend auf 3 ist ein Blockschaltbild eines Systems 300 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Das System 300 kann einen oder mehrere Prozessoren 310, 315 umfassen, die an ein Steuerungs-Hub 320 angekoppelt sind. In einer Ausführungsform umfasst das Steuerungs-Hub 320 ein Grafikspeichersteuerungshub (GMCH – Graphics Memory Controller Hub) 390 und ein Eingabe-/Ausgabe-Hub (IOH – Input/Output Hub) 350 (das sich auf getrennten Chips befinden kann); das GMCH 390 umfasst Speicher- und Grafiksteuerungen an die Speicher 340 und ein Coprozessor 345 angekoppelt sind; das IOH 350 koppelt Eingabe-/Ausgabe-(E-/A-)Vorrichtung 360 an das GMCH 390. Alternativ sind eine oder beide der Speicher- und Grafiksteuerungen (wie hier beschrieben) in den Prozessor integriert, der Speicher 340 und der Coprozessor 345 sind direkt an den Prozessor 310 angekoppelt und das Steuerungs-Hub 320 ist auf einem Einzelchip mit dem IOH 350.
  • Die wahlweise Beschaffenheit zusätzlicher Prozessoren 315 ist in 3 mit gestrichelten Linien angedeutet. Jeder Prozessor 310, 315 kann einen oder mehrere der hier beschriebenen Verarbeitungskerne umfassen und kann eine Fassung des Prozessors 200 bilden.
  • Der Speicher 340 kann beispielsweise ein dynamischer Direktzugriffsspeicher (DRAM – Dynamic Random Access Memory), Phasenwechselspeicher (PCM – Phase Change Memory) oder eine Kombination der beiden sein. Für wenigstens eine Ausführungsform kommuniziert das Steuerungs-Hub 320 mit den Prozessor(en) 310, 315 über einen Mehrpunktverbindungsbus (Multi-Drop Bus) wie einen vorderseitigen Bus (FSB – Frontside Bus), eine Punkt-zu-Punkt-Schnittstelle wie beispielsweise QPI (QuickPath Interconnect) oder ähnliche Verbindung 395.
  • In einer Ausführungsform ist der Coprozessor 345 ein Spezialprozessor wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, GPGPU, eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann das Steuerungs-Hub 320 einen integrierten Grafik-Beschleuniger umfassen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physikalischen Ressourcen 310, 315 hinsichtlich eines Spektrums von Gütemetriken einschließlich architektonischer, mikroarchitektonischer, thermischer, Stromverbrauchs-Eigenschaften und dergleichen geben.
  • In einer Ausführungsform führt der Prozessor 310 Anweisungen aus, die Datenverarbeitungsoperationen einer allgemeinen Art steuern. In den Anweisungen können Coprozessoranweisungen eingebettet sein. Vom Prozessor 310 werden diese Coprozessoranweisungen als solche einer Art erkannt, die durch den angeschlossenen Coprozessor 345 ausgeführt werden sollten. Dementsprechend werden vom Prozessor 310 diese Coprozessoranweisungen (oder Coprozessoranweisungen darstellenden Steuersignale) auf einem Coprozessorbus oder sonstigen Verbindung an den Coprozessor 345 ausgegeben. Von Coprozessor(en) 345 werden diese empfangenen Coprozessoranweisungen angenommen und ausgeführt.
  • Nunmehr auf 4 bezugnehmend ist ein Blockschaltbild eines ersten spezifischeren beispielhaften Systems 400 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Wie in der 4 gezeigt, ist das Multiprozessorsystem 400 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 470 und einen zweiten über eine Punkt-zu-Punkt-Verbindung 450 angekoppelten zweiten Prozessor 480. Jeder der Prozessoren 470 und 480 kann eine Fassung des Prozessors 200 sein. In einer Ausführungsform der Erfindung sind Prozessoren 470 und 480 jeweils Prozessoren 310 und 315, während Coprozessor 438 Coprozessor 345 ist. In einer weiteren Ausführungsform sind Prozessoren 470 und 480 Prozessor 310 bzw. Coprozessor 345.
  • Prozessoren 470 und 480 sind mit integrierten Speichersteuerungs-(IMC – Integrated Memory Controller)Einheiten 472 bzw. 482 dargestellt. Prozessor 470 umfasst auch als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt-(P-P-)Schnittstellen 476 und 478; auf ähnliche Weise umfasst der zweite Prozessor 480 P-P-Schnittstellen 486 und 488. Prozessoren 470, 480 können Informationen über eine Punkt-zu-Punkt-(P-P-)Schnittstelle 450 unter Verwendung von P-P-Schnittstellenschaltungen 478, 488 austauschen. Wie in 4 gezeigt koppeln IMC 472 und 482 die Prozessoren an jeweilige Speicher an, nämlich einen Speicher 432 und einen Speicher 434, die an die jeweiligen Prozessoren lokal angeschaltete Teile des Hauptspeichers sein könen.
  • Prozessoren 470, 480 können jeweils Informationen mit einem Chipsatz 490 über einzele P-P-Schnittstellen 452, 454 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 476, 494, 486, 498 austauschen. Chipsatz 490 kann wahlweise Informationen mit dem Coprozessor 438 über eine Hochleistungsschnittstelle 439 austauschen. In einer Ausführungsform ist der Coprozessor 438 ein Spezialprozessor wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, GPGPU, eingebetteter Prozessor oder dergleichen.
  • Ein (nichtgezeigter) gemeinsamer Cache kann in einem der beiden Prozessoren oder außerhalb beider Prozessoren enthalten sein, aber wird mit den Prozessoren über P-P-Verbindung verbunden sein, so dass lokale Cacheinformationen eines oder beider Prozessoren im gemeinsamen Cache gespeichert werden können, wenn ein Prozessor in einen Niederleistungsmodus versetzt wird.
  • Der Chipsatz 490 kann über eine Schnittstelle 496 an einen ersten Bus 416 angekoppelt sein. In einer Ausführungsform kann der erste Bus 416 ein PCI-Bus (PCI = Peripheral Component Interconnect – Peripheriekomponentenverbindungsbus) oder ein Bus wie beispielsweise ein PCI-Expressbus oder ein sonstiger E-/A-Verbindungsbus dritter Generation sein, obwohl der Umfang der vorliegenden Erfindung dadurch nicht begrenzt wird.
  • Wie in 4 gezeigt, können verschiedene E-/A-Vorrichtungen 414 an den ersten Bus 416 angekoppelt sein, zusammen mit einer Busbrücke 418, die den ersten Bus 416 an einen zweiten Bus 420 ankoppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessor(en) 415 wie beispielsweise Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPU, Beschleuniger (wie beispielsweise Grafikbeschleuniger oder DSP-Einheiten (DSP = Digital Signal Processing), feldprogrammierbare Gattergruppen oder ein beliebiger sonstiger Prozessor an den ersten Bus 416 angekoppelt. In einer Ausführungsform kann der zweite Bus 420 ein LPC-Bus (Low Pin Count – mit geringer Anzahl von Anschlüssen) sein. Verschiedene Geräte können an einen zweiten Bus 420 angekoppelt sein, einschließlich von, zum Beispiel, einer Tastatur und/oder Maus 422, Kommunikationsvorrichtungen 427 und eine Speichereinheit 428 wie beispielsweise ein Plattenlaufwerk oder sonstiges Massenspeichergerät, das Anweisungen/Code und Daten 430 in einer Ausführungsform umfassen kann. Weiterhin kann ein Ton-E/A 424 an den zweiten Bus 420 angekoppelt sein. Man beachte, dass andere Architekturen möglich sind. Beispielsweise kann anstatt der Punkt-zu-Punkt-Architektur der 4 ein System einen Bus mit mehreren Anschlüssen oder eine sonstige derartige Architektur implementieren.
  • Nunmehr bezugnehmend auf 5 ist dargestellt ein Blockschaltbild eines zweiten spezifischeren beispielhaften Systems 500 gemäß einer Ausführungsform der vorliegenden Erfindung. Gleiche Elemente in 4 und 5 tragen gleiche Bezugsziffern und gewisse Aspekte der 4 sind aus der 5 weggelassen worden, um Verdecken sonstiger Aspekte der 5 zu vermeiden.
  • 5 zeigt, dass Prozessoren 470, 480 integrierte Speicher- und E/A-Steuerlogik („CL” – Control Logic) 472 bzw. 482 umfassen können. So enthalten die CL 472, 482 integrierte Speichersteuerungseinheiten und enthalten E/A-Steuerlogik. 5 zeigt, dass nicht nur die Speicher 432, 434 an die CL 472, 482 angekoppelt sind, sondern auch das E/A-Vorrichtungen 514 ebenfalls an die Steuerlogik 472, 482 angekoppelt sind. An den Chipsatz 490 sind Vorläufer-E/A-Geräte 515 angekoppelt.
  • Nunmehr bezugnehmend auf 6 ist ein Blockschaltbild eines SoC 600 gemäß einer Ausführungsform der vorliegenden Erfindung dargestellt. Ähnliche Elemente in 2 tragen gleiche Bezugsziffern. Auch sind gestrichelte Kästen wahlweise Merkmale an fortgeschritteneren SoC. In der 6 sind Verbindungseinheit(en) 602 angekoppelt an: einen Anwendungsprozessor 610, der einen Satz von einem oder mehreren Kernen 202A–N und geteilte Cache-Einheit(en) 206 umfasst; eine Systemagenteneinheit 210; Bussteuerungseinheit(en) 216; Steuereinheit(en) 214 integrierte Speichersteuereinheit(en); einen Satz von einem oder mehreren Coprozessoren 620, der integrierte Grafiklogik, einen Bildprozessor, einen Tonprozessor und einen Videoprozessor umfassen kann; eine SRAM-Einheit 630 (SRAM = Static Random Access Memory – statischer Direktzugriffsspeicher); eine DMA-Einheit 632 (DMA = Direktspeicherzugriffseinheit); und eine Anzeigeeinheit 640 zum Ankoppeln an eine oder mehrere externe Anzeigen. In einer Ausführungsform umfassen Coprozessor(en) 620 einen Spezialprozessor wie beispielsweise einen Netz- oder Kommunikationsprozessor, Kompressionsmaschine, GPGPU, einen MIC-Prozessor mit hohem Durchsatz, eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hier offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Ausführungsansätze implementiert sein. Ausführungsformen der Erfindung können als Computerprogramme oder als auf programmierbaren Systemen umfassend wenigstens einen Prozessor, ein Speichersystem (mit flüchtigen und nichtflüchtigen Speicher- und/oder Speicherungselementen), wenigstens einer Eingangsvorrichtung und wenigstens einer Ausgangsvorrichtung ablaufender Programmcode implementiert sein.
  • Programmcode wie der in 4 dargestellte Code 430 kann zum Durchführen der hier beschriebenen Funktionen und Erzeugen von Ausgangsinformationen auf Eingangsanweisungen angewandt werden. Die Ausgangsinformationen können auf bekannte Weise an eine oder mehrere Ausgangsvorrichtungen angelegt werden. Für Zwecke der vorliegenden Anmeldung umfasst ein Verarbeitungssystem ein beliebiges System, das einen Prozessor wie beispielsweise einen Digitalsignalprozessor (DSP), eine Mikrosteuerung, eine anwendungsspezifische integrierte Schaltung (ASIC – Application Specific Integrated Circuit) oder einen Mikroprozessor aufweist.
  • Der Programmcode kann in einer hohen Prozedur- oder Objekt-orientierten Programmierungssprache zum Kommunizieren mit einem Verarbeitungssystem implementiert sein. Der Programmcode kann auch wenn gewünscht in Assembler- oder Maschinensprache implementiert sein. In der Tat sind die hier beschriebenen Mechanismen im Umfang nicht auf irgendeine bestimmte Programmiersprache begrenzt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte von wenigstens einer Ausführungsform können durch auf einem maschinenlesbaren Medium gespeicherte repräsentative Anweisungen implementiert sein, das eine verschiedene Logik innerhalb des Prozessors darstellt, die, wenn sie durch eine Maschine gelesen wird, die Maschine veranlasst, Logik zum Durchführen der hier beschriebenen Verfahren zu fabrizieren. Solche als „IP-Kerne” bekannten Darstellungen können auf einem fassbaren maschinenlesbaren Medium gespeichert sein und verschiedenen Kunden oder Herstellungseinrichtungen zum Einladen in die Herstellungsmaschinen zugeführt werden, die die Logik oder den Prozessor eigentlich bilden.
  • Solche maschinenlesbaren Speichermedien können ohne Begrenzung nicht kurzzeitige fassbare Anordnungen von durch eine Maschine oder Vorrichtung hergestellten oder gebildeten Artikeln einschließlich von Speichermedien wie beispielsweise Festplatten, jeder anderen Art Platte einschließlich von Floppy-Disks, optischen Platten, kompakten Nurlesespeichern (CD-ROM – Compact Disk Read Only Memories), wiederbeschreibbaren Kompakt-Disks und magnetooptischen Platten, Halbleitervorrichtungen wie beispielsweise Nurlesespeicher (ROM – Read Only Memories), Direktzugriffsspeichern (RAM – Random Access Memories), wie beispielsweise dynamische Direktzugriffsspeicher (DRAM – Dynamic Random Access Memories), statische Direktzugriffsspeicher (SRAM – Static Random Access Memories), löschbare programmierbare Nurlesespeicher (EPROM – Erasable Programmable Read-Only Memories), Flash-Memories, elektrisch löschbare programmierbare Nurlesespeicher (EEPROMs – Electrically Erasable Programmable Read-Only Memories), Phasenwechselspeicher (PCM – Phase Change Memory), magnetische oder optische Karten oder jede sonstige Art von zum Speichern von elektronischen Anweisungen geeigneten Medien umfassen.
  • Dementsprechend umfassen Ausführungsformen der Erfindung auch nichtkurzzeitige, fassbare maschinenlesbare Medien, die Anweisungen enthalten oder Auslegungsdaten enthalten wie beispielsweise Hardware-Beschreibungssprache (HDL – Hardware Description Language), die Strukturen, Schaltungen, Einrichtungen, Prozessoren und/oder hier beschriebene Systemmerkmale definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • In einigen Fällen kann ein Anweisungswandler zum Umwandeln einer Anweisung aus einem Quellenanweisungssatz in einen Zielanweisungssatz benutzt werden. Zum Beispiel kann der Anweisungswandler (z. B. unter Verwendung statischer Binärumsetzung, dynamischer Binärumsetzung einschließlich dynamischer Zusammenstellung) eine Anweisung in eine oder mehrere andere, durch den Kern zu verarbeitende Anweisungen verwandeln, nachbilden oder sonstwie umwandeln. Der Anweisungswandler kann in Software, Hardware, Firmware oder einer Kombination derselben ausgeführt sein. Der Anweisungswandler kann sich auf dem Prozessor, abseits des Prozessors oder teilweise auf dem und teilweise abseits des Prozessors befinden.
  • 7 ist ein Blockschaltbild, das die Verwendung eines Software-Anweisungswandlers zum Umwandeln von binären Anweisungen in einem Quellenanweisungssatz in binäre Anweisungen in einem Zielanweisungssatz gemäß Ausführungsformen der Erfindung vergleicht. In der dargestellten Ausführungsform ist der Anweisungswandler ein Software-Anweisungswandler, obwohl alternativ der Anweisungswandler in Software, Firmware, Hardware oder verschiedenen Kombinationen derselben ausgeführt sein kann. 7 zeigt ein Programm in einer hohen Sprache 702 kann unter Verwendung eines x86-Kompilierers 704 zusammengestellt werden, um einen x86-Binärcode 706 zu erzeugen, der von sich aus durch einen Prozessor mit wenigstens einem x86-Anweisungssatzkern 716 ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Anweisungssatzkern 716 stellt jeden Prozessor dar, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit wenigstens einem x86-Anweisungssatzkern durch kompatibles Ausführen oder sonstiges Verarbeiten (1) eines wesentlichen Teils des Anweisungssatzes des Intel x86-Anweisungssatzkerns oder (2) von Objektcodefassungen von Anwendungen oder sonstiger Software bestimmt zum Ablaufen auf einem Intel-Prozessor mit wenigstens einem x86-Anweisungssatzkern durchführen kann, um im Wesentlichen das gleiche Ergebnis wie ein Intel-Prozessor mit wenigstens einem x86-Anweisungssatzkern zu erzielen. Der x86-Kompilierer 704 stellt einen Kompilierer dar, der zum Erzeugen von x86-Binärcode 706 (z. B. Objektcode) betreibbar ist, der mit oder ohne zusätzliche Verbindungsverarbeitung auf dem Prozessor mit wenigstens einem x86-Anweisungssatzkern 716 ausgeführt werden kann. Ähnlich zeigt 7 das Programm in der hohen Sprache 702 kann unter Verwendung eines alternativen Anweisungssatzkompilierers 708 zum Erzeugen von alternativen Anweisungssatzbinärcode 710 zusammengestellt werden, der von sich aus durch einen Prozessor ohne wenigstens einen x86-Anweisungssatzkern 714 ausgeführt werden kann (z. B. einen Prozessor mit Kernen, die den MIPS-Anweisungssatz von MIPS Technologies von Sunnyvale, CA ausführen und/oder die den ARM-Anweisungssatz von ARM Holdings von Sunnyvale, CA ausführen). Der Anweisungswandler 712 wird zum Umwandeln des x86-Binärcodes 706 in Code benutzt, der von sich aus durch den Prozessor ohne einen x86-Anweisungssatzkern 714 ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht der gleiche wie der alternative Anweisungssatzbinärcode 710, da ein dessen fähiger Anweisungswandler schwierig herzustellen ist; der umgewandelte Code wird jedoch die allgemeine Operation bewirken und aus Anweisungen aus dem alternativen Anweisungssatz bestehen. So stellt der Anweisungswandler 712 Software, Firmware, Hardware oder eine Kombination derselben dar, die durch Nachbildung, Nachahmung oder irgendein sonstiges Verfahren einem Prozessor oder einem sonstigen Elektronikvorrichtung, die keinen x86-Anweisungssatzprozessor oder -kern aufweist, erlaubt, den x86-Binärcode 706 auszuführen.
  • VERFAHREN UND EINRICHTUNG ZUM WIRKUNGSVOLLEN AUSFÜHREN VON HASH-OPERATIONEN
  • Eine Ausführungsform der Erfindung umfasst eine neue Anweisungs- und Unterstützungshardware zum wirkungsvollen Durchführen einer Hash-Operation. Während der Schwerpunkt der unten beschriebenen Ausführungsformen der SM3-Hash-Algorithmus ist, sind die eigentlichen Grundsätze der Erfindung nicht auf die für SM3 bereitgestellte bestimmte Ausführung begrenzt. Beispielsweise können die unten zum Ausführen von SM3 beschriebenen Verfahren zum wirkungsvollen Ausführen anderer Hash-Algorithmen und/oder anderer Arten von Verarbeitungsfunktionen benutzt werden. Während weiterhin eine Ausführungsform als eine Erweiterung der Intel Architecture (IA) implementiert ist, sind die eigentlichen Grundsätze der Erfindung nicht auf irgendeine bestimmte ISA begrenzt.
  • Wie in 8 dargestellt umfasst ein beispielhafter Prozessor 855, auf dem Ausführungsformen der Erfindung ausgeführt werden können, eine Ausführungseinheit 840 mit Hash-Funktionsausführungslogik 841 zum Ausführen der hier beschriebenen wirkungsvollen Hash-Verfahren. Ein Registersatz 805 stellt Registerspeicherung für Operanden, Steuerdaten und sonstige Arten von Daten bereit, wenn die Ausführungseinheit 840 den Anweisungsstrom ausführt. In einer Ausführungsform umfasst der Registersatz 805 128-Bit-Register wie beispielsweise die als Teil der IA-SSE-Architektur (SSE = Streaming SIMD Extensions) angegebenen XMM-SIMD-Register (SIMD = Single Instruction Multiple Data). Alternativ oder zusätzlich können die Register 256-Bit-Register wie beispielsweise die als Teil der IA-AVX-2-Architektur (AVX = Advanced Vektor Extensions) angegebenen YMM-SIMD-Register umfassen. Jedoch sind die eigentlichen Grundsätze der Erfindung nicht auf eine bestimmte Registerart oder Registergröße begrenzt.
  • Die Einzelheiten eines Einzelprozessorkerns („Kern 0”) sind der Einfachheit halber in 8 dargestellt. Es versteht sich jedoch, dass jeder in 8 gezeigte Kern den gleichen Satz Logik wie Kern 0 aufweisen kann. Wie dargestellt kann jeder Kern auch einen dedizierten L1-Cache 812 (L1 = Level 1) und L2-Cache 811 (L2 = Level 2) zum Zwischenspeichern von Anweisungen und Daten gemäß einer angegebenen Cache-Verwaltungsrichtlinie umfassen. Der L1-Cache 811 umfasst einen getrennten Anweisungs-Cache 120 zum Speichern von Anweisungen und einen getrennten Daten-Cache 121 zum Speichern von Daten. Die in den verschiedenen Prozessor-Caches gespeicherten Anweisungen und Daten werden mit der Körnigkeit von Cache-Leitungen verwaltet, die eine feste Größe aufweisen können (z. B. 64, 128, 512 Byte Länge). Jeder Kern dieser beispielhaften Ausführungsform besitzt eine Anweisungsabrufeinheit 810 zum Abrufen von Anweisungen aus dem Hauptspeicher 800 und/oder einen geteilten L3-Cache 816 (L3 = Level 3); eine Decodiereinheit 820 zum Decodieren der Anweisungen (z. B. Decodieren von Programmanweisungen in Mikrooperationen oder „uops”); eine Ausführungseinheit 840 zum Ausführen der Anweisungen (z. B. der Prädikatenanweisungen wie hier beschrieben); und eine Rückschreibeeinheit 850 zum Zurücksenden der Anweisungen und Rückschreiben der Ergebnisse.
  • Die Anweisungsabrufeinheit 810 umfasst verschiedene wohlbekannte Komponenten einschließlich eines Zeigers zur nächsten Anweisung 803 zum Speichern der Adresse der nächsten aus dem Speicher 800 (oder einem der Caches) abzurufenden Anweisung; einen Anweisungsadressenumsetzpuffer (ITLB – Instruction Translation Look-Aside Buffer) 804 zum Speichern einer Abbildung jüngst benutzter virtuell-zu-physikalischer Anweisungsadressen zum Verbessern der Geschwindigkeit von Adressenumsetzung; eine Zweigvorhersageeinheit 802 zum spekulativen Vorhersagen von Anweisungszweigadressen; und Zweigzielpuffer (BTB – Branch Target Buffers) 801 zum Speichern von Zweigadressen und Zieladressen. Sobald sie abgerufen sind, werden Anweisungen dann zu den übrigen Stufen der Anweisungspipeline einschließlich der Decodiereinheit 830, der Ausführungseinheit 840 und der Rückschreibeeinheit 850 gestreamt. Die Struktur und Funktion jeder dieser Einheiten wird von dem gewöhnlichen Fachmann gut verstanden und wird hier nicht im Einzelnen beschrieben, um Verdecken der einschlägigen Aspekte der verschiedenen Ausführungsformen der Erfindung zu vermeiden.
  • Wie oben erwähnt werden in einer Ausführungsform von der Hash-Funktionslogik 841 in der Ausführungseinheit 840 verschiedene Verfahren durchgeführt, um den SM3-Hash-Algorithmus wirkungsvoller zu bearbeiten. Infolgedessen wird zuerst eine kurze Beschreibung der Grundsätze des SM3-Hash-Algorithmus bereitgestellt, gefolgt von einer ausführlichen Beschreibung der Ausführungsformen der Erfindung.
  • Wie hier benutzt bezieht sich die „Nachricht” auf den Binärcode, an dem der SM3-Hash durchgeführt wird. Der „Nachrichtenauszug” oder „Auszug” ist das Endergebnis der Hash-Operation. Der SM3-Algorithmus gibt ein „Stopf”-Verfahren zum Aufteilen von Nachrichten in volle 512-Bit-Blöcke an. Der SM3-Komprimierungsalgorithmus wird an der Folge von 512-Bit-Blöcken durchgeführt, wobei der Ausgangszustand der Zwischenblöcke als Eingangszustand für die nächste 512-Bit-Blockkomprimierung dient. Der Zustand jeder Blockkomprimierung und der Endauszug ist ein 256-Bit-Wert. Der 256-Bit-Zustandswert wird in acht 32-Bit-„Worte” eingeteilt, bezeichnet als Worte A, B, C, D, E, F, G und H, angegeben im Format „Big Endian” (A dann B ... usw.). 9 stellt grafisch die während der Verarbeitungsrunde durchgeführten Operationen dar, in der ein erster Satz Zustandswerte 901 in einem zweiten Satz von Zustandswerten 902 umgewandelt wird. Der Anfangszustandswert ist eine im SM3-Standard definierte Konstante. Insbesondere wird die Komprimierungsfunktion für die 512-Bit-Blöcke wie folgt definiert:
    Figure DE102015002254A1_0002
  • Die Variablen SS1, SS2, TT1 und TT2 sind für jede Iteration benutzte interne Zwischenwerte. Tj wird angegeben als 79cc4519 für 0 ≤ j ≤ 15 und 7a879d8a für 16 ≤ j ≤ 63. Die Eingabe (Tj <<< j) für jede Runde kann aus einer Tabelle bezeichnet durch den Runden-Wert j vorbestimmt und geladen werden. Die Funktion P0 ist eine lineare Umsetzungspermutationsfunktion angegeben als P0(X) = X xor (X <<< 9) xor (X <<< 17).
  • Der komprimierte 512-Bit-Block wird in sechszehn 32-Bit-Worte, bezeichnet in Big Endian-Form als W0 bis W15, aufgeteilt. Die Eingabe W' ist angegeben als W ' / j = Wj xor Wj+4 , so können W'0 bis W'11 mit einer einzelnen xor-Funktion aus den anfänglichen Blockdaten bestimmt werden.
  • Die Eingabe Wj für Runden 16 bis 63 und W ' / j für Runden 12 bis 63 sind gemäß der „Nachrichtenerweiterung” (Message Expansion) (Nachrichtenplaner) entwickelt angegeben als: Wj = P1(Wj-16 xor Wj-9 xor (Wj-3 <<< 15)) xor (Wj-13 <<< 7) xor Wj-6 wobei P1 eine weitere Permutationsfunktion ist, angegeben als: P1(X) = X xor (X <<< 15) xor (X <<< 23).
  • Zusätzlich werden Wj für j = 64 bis j = 67 zum Unterstützen des Gliedes Wj+4 in der Entwicklung von W ' / j für Runden 60 bis 63 berechnet.
  • Eine Ausführungsform der Erfindung umfasst neue Anweisungen zum Steigern der Leistung des SM3-Hash-Algorithmus auf einem Prozessor mit einer 128-Bit-Registerdatei wie beispielsweise XMM-SIMD-Register (SIMD = Single Instruction Multiple Data) angegeben als Teil der IA-SSE-Architektur (SSE = Streaming SIMD Extensions) oder mit einer 256-Bit-Registerdatei wie beispielsweise die YMM-SIMD-Register angegeben als Teil der IA-AVX-2-Architektur (AVX = Advanced Vector Extensions). Die für die 128-Bit-SSE-Architektur angegebene Anweisung erfordert die Verwendung eines impliziten Operandenregisters, besitzt aber den Vorteil, SM3-Beschleunigung in einem breiteren Bereich von leistungseffizienten Hochleistungskernen unter Verwendung der gleichen XXM-basierenden Anweisung zu ermöglichen.
  • Eine Ausführungsform der Erfindung nutzt die Tatsache, dass, während der SM3-Zustand acht Zustandsvariablen A bis H enthält, die Variablen B, D, F und H durch einfaches Wiederverwenden der Variablen A, C, E bzw. G der vorherigen Runde aktualisiert werden und daher keine Berechnung erfordern. Insbesondere beträgt wie oben besprochen für die aktuelle Runde:
    B (aktuelle Runde) ← A (vorherige Runde),
    D (aktuelle Runde) ← C (vorherige Runde),
    F (aktuelle Runde) ← E (vorherige Runde) und
    H (aktuelle Runde) ← G (vorherige Runde).
  • Damit berechnet eine Ausführungsform der Erfindung nur die Zustandsvariablen A, C, E, G für jede Runde als:
    Variable A aktualisiert durch TT1 und
    Variable E aktualisiert durch P0(TT2)
    Variable C aktualisiert durch Variable B <<< 9 der letzten Runde und
    Variable G aktualisiert durch Variable F <<< 19 der letzten Runde.
  • Die übrigen Zustandswerte, B, D, F und H werden durch einfaches Ändern der Registerbezeichnungen auf jeder Verarbeitungsrunde wie unten beschrieben bestimmt.
  • Insbesondere erfordert der gesamte SM3-Zustand von 256 Bit zwei 228-Bit-XMM-Register (z. B. xmm1 und xmm2), aber die verbleibende Frage ist, wie die acht Variablen A–H im Idealfall aufzuteilen sind. Unter Verwendung der obigen Betrachtungen benutzt eine Ausführungsform der Erfindung die folgende wirkungsvolle Registeraufteilung. Wie in 10 dargestellt werden die SM3-Zustandsvariablen in zwei XMM-Registern bewahrt, XMM1 1002 und XMM2 1010, wobei XMM1 1002A, C, E und G für ungerade Runden und B, D, F und H für gerade Runden enthält und XMM2 1010B, D, F, H für ungerade Runden und A, C, E, G für gerade Runden enthält. 10 stellt die Einzelheiten für Runde 0 dar (wie durch die Bezeichnungen A0–G0 angezeigt), die Zyklen 1–3 benutzt, um die in XMM2 1010 für Runde 1 gespeicherten Werte A1, C1, E1 und G1 zu erzielen.
  • Man beachte, dass 10 die am Berechnen von Werten in jedem Zyklus beteiligte Logik darstellt, aber Pipelining-Verfahren oder sonstige Ausführungseinzelheiten nicht besonders kennzeichnet, die in einer Pipeline-Prozessorarchitektur eingesetzt werden können. Diese Einzelheiten werden vom Fachmann wohl verstanden und sind in der 10 nicht dargestellt, um Verdecken der eigentlichen Grundsätze der Erfindung zu vermeiden.
  • Für 128-Bit-Datenweg und Registerdatei wird eine Ausführungsform einer Anweisung zum Aktualisieren einer einzelnen Runde von SM3-Hash angegeben als:
    SM3RND XMMsrcdst, XMMsrc, IMM
    wobei XMMsrcdst XMM1 1002 für ungerade Runden und XMM2 1010 für gerade Runden ist und XMMsrc XMM1 1002 für gerade Runden und XMM2 1010 für ungerade Runden ist. In einer Ausführungsform ist der unmittelbare Wert IMM für j = 0 bis 15 auf 0 gesetzt und für j = 16 bis 63 auf 1 gesetzt.
  • Uns den in 10 gezeigten bestimmten Einzelheiten zuwendend ist XMM0 1001 in einer Ausführungsform eine implizite Quelle enthaltend (Tj <<< j), Wj und W ' / j für Zyklus 1 der Runde 0. Diese Werte, zusammen mit A0, C0, E0 und G0 aus XMM1 1002 werden zum Berechnen von Werten für Zyklus 2 benutzt. Ein interner zeitweiliger Speicher 1008 (z. B. ein nichtarchitektonisches Register oder Puffer) speichert die neuen Werte für SS2, SS1, Wj' und Wj wie dargestellt. SS1 wird wie folgt berechnet. Der Wert A mit dem Operator 1003 zwölfmal nach links rotiert; ein Carry-Save-Addierer 1004 (Carry Save = Übertrag sichern) in Kombination mit dem Addierer 1005 kombiniert das Ergebnis von A <<< 12 mit E und Tj <<< J; das kombinierte Ergebnis wird dann mit dem Operator 1006 siebenmal nach links rotiert. SS2 wird durch XORing A <<< 12 mit SS1 unter Verwendung von XOR-Operator 1007 berechnet. Die Werte für Wj' und Wj werden wie dargestellt von XMM0 1001 durchgeführt.
  • Zyklus 2 beginnt mit den obigen Werten, Anfangswerten für A0, C0, E0 und G0 gespeichert in XMM1 1002 und Anfangswerten für B0, D0, F0 und H0 gespeichert in XMM2 1010. Neue Werte für A, C, E und G (identifiziert als A1, C1, E1 und G1 zum Bezeichnen von Runde 1) werden in Zyklen 2–3 berechnet und in XMM2 1010 wie folgt gespeichert. Operator 1011 erzeugt FFj (A, B, C) unter Verwendung von A0, B0 und C0 als Eingaben (siehe Gleichung für FFj oben) und Operator 1013 erzeugt GGj (E, F, G) unter Verwendung von E0, F0 und G0 als Eingaben (siehe Gleichung für GGj oben). Der Wert für A1 wird dann berechnet unter Verwendung von FFj(A0, B0, C0) + D0 + SS2 + Wj' unter Verwendung von Carry-Save-Addierern 1012 und 1015 und Addierer 1017. Der Wert von C1 wird berechnet unter Verwendung des Wertes von B0 rotiert nach links 9 über Operator 1018. Der Wert von E1 wird berechnet durch Multiplizieren von P0 mal GGj(E0, F0, G0) + H0 + SS1 + Wj, was mit Carry-Save-Addierern 1014 und 1016 und Addierer 1019 berechnet wird. Die Funktion P0 ist eine lineare Umsetzungs-Permutationsfunktion angegeben als P0(X) = (X <<< 9) xor (X <<< 17). So wird E1 durch Durchführen der linearen Umsetzungspermutation P0 an GGj(E0, F0, G0) + H0 + SS1 + Wj berechnet. Der Wert von G1 wird berechnet, indem der Operator 1020 F0 um 9 nach links rotiert.
  • Bedeutsamerweise werden nur die Werte für A1, C1, E1 und G1 in Zyklen 2–3 berechnet. Die Werte für B1, D1, F1 und H1 nehmen die vorigen Werte von A0, C0, E0 und G0 an. Wie oben erwähnt ist XMMsrcdst XMM1 1002 für ungerade Runden und XMM2 1010 für gerade Runden und XMMsrc XMM1 1002 für gerade Runden und XMM2 1010 für ungerade Runden. So werden die Werte von A, C, E und G aus einer Runde nicht unabhängig berechnet oder physikalisch zu neuen Registern verlegt, wenn diese Werte B, D, F und H in der nächsten Runde werden. Stattdessen werden diese Werte einfach B, D, F und H durch das Vertauschen der Registerbezeichnungen XMM1/XMM2, wodurch Verarbeitungsressourcen bewahrt werden.
  • In einer alternativen Ausführungsform (z. B. unter Verwendung von AVX2 oder einer sonstigen Architektur mit 256-Bit-Registern) kann eine Anweisung mit 256-Bit-YMM-Registern, die die vollständige Zustandsaktualisierung für eine Runde von SM3 in einem einzelnen YMM-SIMD-Register durchführt, als SM3RND YMM1, YMM2 angegeben werden, wobei YMM1 ein Quellen-/Zielregister für den 8 × 32-Bit-SM3-Zustand ist und YMM2 ein Quellenregister enthaltend (Tj <<< j), Wj und Wj' für die gegenwärtige Runde ist.
  • Eine zweite alternative Definition höherer Leistung kann zwei vollständige Runden von SM3-Hash in einer 5-Zyklus-SIMD-Pipeline durchführen und wird angegeben als:
    SM3RNDS2 YMM1, YMM2, YMM3
    wobei YMM1 ein Quellen-/Zielregister mit SM3-Zustand für Runde j als Quelle ist und der sich ergebende SM3-Zustand für Runde j + 2 als das Ziel zurückgeschrieben wird. In dieser Ausführungsform ist YMM2 ein Quellenregister für Wj, W j / ' , Wj+1 und W j+1 / ' , und YMM3 ist ein Quellenregister für Tj und Tj+1. Man beachte, dass in einer Ausführungsform dies mit nur zwei Registern angegeben wird, wobei YMM2 Wj, W j / ' , Wj+1 und W j+1 / ' Tj und Tj+1 bewahrt.
  • Für beide, die einzelnen und doppelten SM3-Rundenanweisungsalternativen kann die Entwicklung von Wj für Runden 16 bis 63 und W j+1 / ' vor den Rundenanweisungen berechnet werden, die die Parameter als Angaben benutzen, und parallel zu den Rundenanweisungen früherer Runden, so dass SM3-Leistung nicht durch Nachrichtenerweiterung beeinflusst wird.
  • 11 zeigt ein Verfahren gemäß einer Ausführungsform der Erfindung. Bei 1101 wird eine Hash-Operation wie SM3 im Prozessor initialisiert. Beispielsweise kann eine der hier beschriebenen SM3-Anweisungen decodiert werden und die sich ergebenden uops einem oder mehreren Ausführungsanschlüssen der Ausführungseinheit zugeführt werden. Zusätzlich werden die zum Durchführen der Hash-Operationen benötigten Anfangswerte an den zutreffenden Speicherstellen gesetzt. Beispielsweise kann, wie oben beschrieben, XMM0 aktualisiert werden, um (Tj <<< j), Wj und W j / ' für die erste Runde der Verarbeitung zu enthalten. Auf ähnliche Weise kann der in 10 gezeigte zeitweilige Speicher 1008 mit den Werten für SS2, SS1, Wj' und Wj aktualisiert werden.
  • Bei 1102 wird der erste Satz Zustandswerte (z. B. A0, C0, E0 und G0) an einem ersten Satz logischer Speicherstellen (z. B. XMM1) gespeichert und der zweite Satz von Zustandswerten (z. B. B0, D0, F0 und H0) wird an einem zweiten Satz logischer Speicherstellen gespeichert (z. B. XMM2). Bei 1103 wird eine „ungerade” Runde Verarbeitung unter Verwendung des ersten und zweiten Satzes von Zustandswerten zum Erzeugen eines aktualisierten ersten Satzes von Zustandswerten durchgeführt (z. B. es werden neue Werte A1, C1, E1 und G1 berechnet).
  • Bei 1104 werden die Bezeichnungen für die ersten logischen Speicherstellen und zweiten logischen Speicherstellen ausgetauscht, so dass der zweite Satz von Zustandswerten automatisch dem nichtaktualisierten Satz erster Zustandswerte gleichgesetzt wird. Beispielsweise werden in der in 10 gezeigten Ausführungsform die SM3-Zustandsvariablen in zwei XMM-Registern bewahrt, XMM1 1002 und XMM2 1010, wobei XMM1 1002 A, C, E und G für ungerade Runden und B, D, F und H für gerade Runden enthält und XMM2 1010 B, D, F und H für ungerade Runden und A, C, E und G für gerade Runden enthält. So werden die Werte von B, D, F und H automatisch auf die vorigen Werte von A, C, E bzw. G in jeder Runde durch einfaches Austauschen der Registerbezeichnungen eingestellt (d. h. die Anzeige welche Zustandsvariablen in welchen Registern gespeichert sind). Wie hier benutzt bedeutet damit Austauschen der „Bezeichnungen” der Speicherstellen Ändern einer Anzeige der an den Speicherstellen gespeicherten Daten.
  • Bei 1105 werden die neuberechneten Werte A, C, E und G an den neu bezeichneten zweiten logischen Speicherstellen gespeichert (z. B. A1, C1, E1 und G1 gespeichert in XMM2 in dem in 10 gezeigten Beispiel) und bei 1106 wird eine gerade Runde von Berechnungen unter Verwendung der ersten und zweiten Sätze von Zustandsvariablen zum Wiederaktualisieren des ersten Satzes von Zustandsvariablen (z. B. A, C, E und G) durchgeführt.
  • Bei 1107 werden die Bezeichnungen der ersten logischen Speicherstellen und zweiten logischen Speicherstellen wieder ausgetauscht, so dass der zweite Satz von Zustandswerten automatisch dem nichtaktualisierten Satz erster Zustandswerte gleichgesetzt wird. Wie erwähnt werden in einer Ausführungsform die A, C, E und G und B, D, F und H enthaltenden bezeichneten Register für gerade und ungerade Runden ausgetauscht. So werden die Werte von B, D, F und H wieder automatisch durch Austauschen der Registerbezeichnungen auf vorige Werte von A, C, E bzw. G gesetzt. Bei 1108 wird der aktualisierte erste Satz von Zustandswerten an den ersten logischen Speicherstellen gespeichert (z. B. in XMM1 in 10). Das Verfahren wird dann durch 1103 bis 1108 wiederholt, bis die Hash-Operation vollendet ist, bestimmt bei 1108.
  • Die optimalen SM3-Ausführungen sind gegenwärtig dedizierte FPGA- oder ASIC-Hardware. Die Leistung von SM3 in Software ist schlecht aufgrund der Anzahl abhängiger Operationen, die in der Berechnung jeder SM3-Runde und Nachrichtenerweiterung erfordert sind. Die Zufügung der hier beschriebenen SM3RND-Anweisungen ermöglicht die Durchführung von entweder zwei Runden der SM3-Hash-Komprimierungsfunktion in fünf Prozessorzyklen oder Vollendung einer Einzelrunde von SM3 in drei Prozessorzyklen. Es wird geschätzt, dass dies eine größer als vierfache Verbesserung gegenüber den besten Software-Ausführungen bereitstellt.
  • In anderen Ausführungsformen wird ein unmittelbares Byte zum Angeben von j benutzt (anstatt eines I) enthaltenden YMM-Registers). In diesen Ausführungsformen kann YMM2 die W-Werte enthalten, während YMM3 W' enthalten kann. Weiterhin kann YMM2 auf die gleiche Weise wie oben beschrieben definiert werden und auch die kombinierten Werte W & W' umfassen (ohne YMM3 zu erfordern).
  • In der vorangehenden Spezifikation ist die Erfindung unter Bezugnahme auf bestimmte beispielhafte Ausführungsformen derselben beschrieben worden. Es wird jedoch offenbar sein, dass daran verschiedene Abänderungen und Änderungen durchgeführt werden können, ohne aus dem weiteren Wesen und Schutzumfang der Erfindung wie in den beiliegenden Ansprüchen aufgeführt zu weichen. Die Spezifikation und Zeichnungen sind dementsprechend in einem erläuternden anstatt einem einschränkenden Sinn anzusehen.
  • Ausführungsformen der Erfindung können verschiedene Schritte umfassen, die oben beschrieben worden sind. Die Schritte können in maschinenausführbaren Anweisungen ausgeführt sein, die dazu benutzt werden können, einen Universal- oder Spezialprozessor zum Durchführen der Schritte zu veranlassen. Alternativ können diese Schritte durch bestimmte Hardwarekomponenten durchgeführt werden, die fest verdrahtete Logik zum Durchführen der Schritte enthalten, oder durch eine beliebige Kombination programmierter Computerkomponenten und kundenspezifischer Hardwarekomponenten.
  • Wie hier beschrieben können sich Anweisungen auf bestimmte Konfigurationen von Hardware beziehen wie beispielsweise anwendungsspezifische integrierte Schaltungen (ASIC – Application Specific Integrated Circuits) eingerichtet zum Durchführen gewisser Operationen oder mit einer vorbestimmten Funktionalität oder in in einem nichtkurzzeitigen computerlesbaren Medium ausgeführten Speicher gespeicherten Softwareanweisungen. So können die in den Figuren gezeigten Verfahren unter Verwendung von auf einer oder mehreren Elektronikvorrichtungen gespeicherten und ausgeführten Code und Daten (z. B. einer Endstation, einem Netzelement usw.) ausgeführt werden. Solche Elektronikvorrichtungen speichern und übermitteln (intern und/oder mit anderen Elektronikvorrichtungen über ein Netz) Code und Daten unter Verwendung von von Computer-maschinenlesbaren Medien wie beispielsweise nichtkurzzeitigen Computer-maschinenlesbaren Speichermedien (z. B. Magnetplatten; optischen Platten; Direktzugriffsspeicher, Nurlesespeicher, Flash-Speichervorrichtungen; Phasenwechsel-Speicher) und kurzzeitigen Computer-maschinenlesbaren Kommunikationsmedien (z. B. elektrischen, optischen, akustischen oder sonstigen Formen ausgebreiteter Signale – wie beispielsweise Trägerwellen, Infrarotsignale, Digitalsignale usw.). Zusätzlich umfassen solche Elektronikvorrichtungen typischerweise einen Satz von einem oder mehreren an eine oder mehrere andere Komponenten angekoppelten Prozessoren wie beispielsweise eine oder mehrere Speichervorrichtungen (nichtkurzzeitige maschinenlesbare Speichermedien), Benutzer-Eingabe/Ausgabevorrichtungen (z. B. eine Tastatur, ein Tastbildschirm und/oder eine Anzeige) und Netzverbindungen. Das Ankoppeln des Satzes Prozessoren und anderer Komponenten geschieht typischerweise über einen oder mehrere Busse und Brücken (auch als Bussteuerungen bezeichnet). Die Speichervorrichtung und den Netzverkehr führende Signale stellen jeweils ein oder mehrere maschinenlesbare Speichermedien und maschinenlesbare Kommunikationsmedien dar. So speichert die Speichervorrichtung einer gegebenen Elektronikvorrichtung typischerweise Code und/oder Daten zur Ausführung auf dem Satz von einem oder mehreren Prozessoren dieser Elektronikvorrichtung. Natürlich können ein oder mehrere Teile einer Ausführungsform der Erfindung unter Verwendung unterschiedlicher Kombinationen von Software, Firmware und/oder Hardware ausgeführt werden. Insgesamt wurden in dieser ausführlichen Beschreibung für die Zwecke der Erläuterung zahlreiche bestimmte Einzelheiten aufgeführt, um ein durchgehendes Verständnis der vorliegenden Erfindung bereitzustellen. Dem Fachmann wird jedoch offenbar sein, dass die Erfindung ohne einige dieser bestimmten Einzelheiten aufgeführt werden kann. In gewissen Fällen wurden wohlbekannte Strukturen und Funktionen nicht im ausführlichen Detail beschrieben, um Verdecken des Gegenstandes der vorliegenden Erfindung zu vermeiden. Dementsprechend sollte der Schutzumfang und das Wesen der Erfindung im Sinne der nachfolgenden Ansprüche beurteilt werden.

Claims (25)

  1. Verfahren zum Ausführen einer Hash-Funktion umfassend: anfängliches Bezeichnen einer ersten Speicherstelle als einen ersten Satz von Zustandswerten benutzt zum Berechnen von Runden der Hash-Funktion speichernd; anfängliches Bezeichnen einer zweiten Speicherstelle als einen zweiten Satz von Zustandswerten speichernd ebenfalls benutzt zum Berechnen von Runden der Hash-Funktion; und Ausführen einer Vielzahl von Runden der Hash-Funktion unter Verwendung des ersten und zweiten Satzes von Zustandsdaten, wobei Ausführen Austauschen der Bezeichnungen der ersten Speicherstelle und der zweiten Speicherstelle umfasst, so dass die erste Speicherstelle zum Speichern des ersten Satzes von Zustandswerten für einen ersten Satz von Runden und des zweiten Satzes von Zustandswerten für einen zweiten Satz von Runden bezeichnet ist, und wobei die zweite Speicherstelle zum Speichern des zweiten Satzes von Zustandswerten für den ersten Satz von Runden und des ersten Satzes von Zustandswerten für den zweiten Satz von Runden bezeichnet ist.
  2. Verfahren nach Anspruch 1, wobei der erste Satz von Runden gerade Runden umfasst und der zweite Satz von Runden ungerade Runden umfasst.
  3. Verfahren nach Anspruch 1 oder 2, wobei Ausführen weiterhin umfasst: Berechnen eines ersten Satzes von Zustandswerten in jeder Runde unter Verwendung eines bestehenden ersten Satzes und zweiten Satzes von Zustandswerten; und Setzen des zweiten Satzes von Zustandswerten gleich den bestehenden ersten Satz von Zustandswerten.
  4. Verfahren nach Anspruch 3, wobei die Operation des Setzens des zweiten Satzes von Zustandswerten gleich dem bestehenden ersten Satz von Zustandswerten automatisch durch Austauschen der Bezeichnungen der ersten Speicherstelle und der zweiten Speicherstelle durchgeführt wird.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei die erste Speicherstelle und die zweite Speicherstelle jeweils ein 128-Bit-gepacktes Register umfassen.
  6. Verfahren nach einem der Ansprüche 1 bis 4, wobei die erste Speicherstelle und zweite Speicherstelle jeweils ein 256-Bit-gepacktes Register umfassen.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Hash-Funktion eine SM3-(SM – Secure Message – sichere Nachricht)Hash-Funktion umfasst und wobei der erste Satz von Zustandswerten Variablen A, C, E und G der SM3-Hash-Funktion umfasst und der zweite Satz von Zustandswerten Variablen B, D, F und H der SM3-Hash-Funktion umfasst.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei jeder Wert des ersten und zweiten Satzes einen 32-Bit-Wert umfasst.
  9. Verfahren nach Anspruch 8, wobei der erste Satz von Zustandswerten vier 32-Bit-Werte umfasst und der zweite Satz von Zustandswerten weitere vier 32-Bit-Werte umfasst.
  10. Prozessor umfassend: einen Registersatz mit einer ersten Speicherstelle und einer zweiten Speicherstelle, in denen Zustandsvariablen für eine Hash-Funktion zu speichern sind; eine Ausführungseinheit zum Ausführen der Hash-Funktion und zum anfänglichen Bezeichnen der ersten Speicherstelle als einen ersten Satz von Zustandswerten benutzt zum Berechnen von Runden der Hash-Funktion speichernd und zum anfänglichen Bezeichnen einer zweiten Speicherstelle als einen zweiten Satz von Zustandswerten, ebenfalls zum Berechnen der Runden der Hash-Funktion benutzt, speichernd; und die Ausführungseinheit zum Ausführen einer Vielzahl von Runden der Hash-Funktion unter Verwendung des ersten und zweiten Satzes von Zustandsdaten, wobei Ausführen Austauschen der Bezeichnungen der ersten Speicherstelle und zweiten Speicherstelle umfasst, so dass die erste Speicherstelle zum Speichern des ersten Satzes von Zustandswerten für einen ersten Satz von Runden und des zweiten Satzes von Zustandswerten für einen zweiten Satz von Runden bezeichnet ist, und wobei die zweite Speicherstelle zum Speichern des zweiten Satzes von Zustandswerten f r den ersten Satz von Runden und des ersten Satzes von Zustandswerten für den zweiten Satz von Runden bezeichnet ist.
  11. Prozessor nach Anspruch 10, wobei der erste Satz von Runden gerade Runden umfasst und der zweite Satz von Runden ungerade Runden umfasst.
  12. Prozessor nach Anspruch 10 oder 11, wobei Ausführen weiterhin umfasst: Berechnen eines neuen ersten Satzes von Zustandswerten in jeder Runde unter Verwendung eines bestehenden ersten Satzes und zweiten Satzes von Zustandswerten; und Setzen des zweiten Satzes von Zustandswerten gleich dem bestehenden ersten Satz von Zustandswerten.
  13. Prozessor nach Anspruch 12, wobei die Operation des Setzens des zweiten Satzes von Zustandswerten gleich dem bestehenden ersten Satz von Zustandswerten automatisch durch das Austauschen der Bezeichnungen der ersten Speicherstelle und der zweiten Speicherstelle durchgeführt wird.
  14. Prozessor nach einem der Ansprüche 10 bis 13, wobei die erste Speicherstelle und die zweite Speicherstelle jeweils ein 128-Bit-gepacktes Register umfassen.
  15. Prozessor nach einem der Ansprüche 10 bis 13, wobei die erste Speicherstelle und zweite Speicherstelle jeweils ein 256-Bit-gepacktes Register umfassen.
  16. Prozessor nach einem der Ansprüche 10 bis 15, wobei die Hash-Funktion eine SM3-Hash-Funktion (SM = Secure Message – sichere Nachricht) umfasst und wobei der erste Satz von Zustandswerten Variablen A, C, E und G der SM3-Hash-Funktion umfasst und der zweite Satz von Zustandswerten Variablen B, D, F und H der SM3-Hash-Funktion umfasst.
  17. Prozessor nach einem der Ansprüche 10 bis 16, wobei jeder Wert des ersten und zweiten Satzes einen 32-Bit-Wert umfasst.
  18. Prozessor nach Anspruch 17, wobei der erste Satz von Zustandswerten vier 32-Bit-Werte umfasst und der zweite Satz von Zustandswerten weitere vier 32-Bit-Werte umfasst.
  19. System umfassend: einen Speicher zum Speichern von Anweisungen und Daten; ein Cache-Untersystem mit einer Vielzahl von Cache-Stufen zum Speichern der Anweisungen und Daten aufweist; eine Netzschnittstelle zum kommunikationstechnischen Ankoppeln des Systems über ein Netz; wenigstens eine Eingangs-/Ausgangseinheit zum Empfangen von Befehlen von einer oder mehreren Peripherievorrichtungen; und einen Prozessor umfassend: einen Registersatz umfassend eine erste Speicherstelle und eine zweite Speicherstelle, in denen Zustandsvariablen für eine Hash-Funktion zu speichern sind; eine Ausführungseinheit zum Ausführen der Hash-Funktion und zum anfänglichen Bezeichnen der ersten Speicherstelle als einen ersten Satz von Zustandswerten benutzt zum Berechnen von Runden der Hash-Funktion speichernd, und zum anfänglichen Bezeichnen einer zweiten Speicherstelle als einen zweiten Satz von Zustandswerten ebenfalls benutzt zum Berechnen der Runden der Hash-Funktion speichernd; und die Ausführungseinheit zum Ausführen einer Vielzahl von Runden der Hash-Funktion unter Verwendung des ersten und zweiten Satzes von Zustandsdaten, wobei Ausführen Austauschen der Bezeichnungen der ersten Speicherstelle und zweiten Speicherstelle umfasst, so dass die erste Speicherstelle zum Speichern des ersten Satzes von Zustandswerten für einen ersten Satz von Runden und des zweiten Satzes von Zustandswerten für einen zweiten Satz von Runden bezeichnet ist und wobei die zweite Speicherstelle zum Speichern des zweiten Satzes von Zustandswerten für einen ersten Satz von Runden und des ersten Satzes von Zustandswerten für den zweiten Satz von Runden bezeichnet ist.
  20. System nach Anspruch 19, wobei der erste Satz von Runden gerade Runden umfasst und der zweite Satz von Runden ungerade Runden umfasst.
  21. System nach Anspruch 19 oder 20, wobei Ausführen weiterhin umfasst: Berechnen eines neuen ersten Satzes von Zustandswerten in jeder Runde unter Verwendung eines bestehenden ersten Satzes und zweiten Satzes von Zustandswerten; und Setzen des zweiten Satzes von Zustandswerten gleich dem bestehenden ersten Satz von Zustandswerten.
  22. System nach Anspruch 21, wobei die Operation des Setzens des zweiten Satzes von Zustandswerten gleich dem bestehenden ersten Satz von Zustandswerten automatisch durch Austauschen der Bezeichnungen der ersten Speicherstelle und der zweiten Speicherstelle durchgeführt wird.
  23. System nach einem der Ansprüche 19 bis 22, wobei die erste Speicherstelle und zweite Speicherstelle jeweils ein 128-Bit-gepacktes Register umfassen.
  24. System nach einem der Ansprüche 19 bis 22, wobei die erste Speicherstelle und zweite Speicherstelle jeweils ein 256-Bit-gepacktes Register umfassen.
  25. System nach einem der Ansprüche 19 bis 22, wobei die Hash-Funktion eine SM3-Hash-Funktion (SM = Secure Message – sichere Nachricht) umfasst und wobei der erste Satz von Zustandswerten Variablen A, C, E und G der SM3-Hash-Funktion umfasst und der zweite Satz von Zustandswerten Variablen B, D, F und H der SM3-Hash-Funktion umfasst.
DE102015002254.7A 2014-03-27 2015-02-23 Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen Pending DE102015002254A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/228,056 US9912481B2 (en) 2014-03-27 2014-03-27 Method and apparatus for efficiently executing hash operations
US14/228,056 2014-03-27

Publications (1)

Publication Number Publication Date
DE102015002254A1 true DE102015002254A1 (de) 2015-10-01

Family

ID=52822172

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015002254.7A Pending DE102015002254A1 (de) 2014-03-27 2015-02-23 Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen

Country Status (7)

Country Link
US (1) US9912481B2 (de)
JP (1) JP6051458B2 (de)
KR (1) KR101732046B1 (de)
CN (1) CN104951702B (de)
DE (1) DE102015002254A1 (de)
GB (1) GB2528343B (de)
TW (2) TWI575388B (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality
US10020934B2 (en) 2015-11-05 2018-07-10 Intel Corporation Hardware accelerator for cryptographic hash operations
CN106452769B (zh) * 2016-09-13 2019-11-29 杭州华为数字技术有限公司 一种数据处理方法、数据处理装置以及处理器
US10824428B2 (en) * 2019-03-29 2020-11-03 Intel Corporation Apparatuses, methods, and systems for hashing instructions
CN114499465A (zh) * 2020-10-23 2022-05-13 北京京东方技术开发有限公司 散列算法及电路、电子设备
US11275726B1 (en) * 2020-12-06 2022-03-15 Kamu Data Inc. Distributed data processing method with complete provenance and reproducibility
CN113721986B (zh) * 2021-07-23 2024-02-09 浪潮电子信息产业股份有限公司 一种数据压缩方法、装置及电子设备和存储介质

Family Cites Families (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2458331A1 (de) 1973-12-13 1975-06-19 Honeywell Inf Systems Datenverarbeitungssystem zur adressierung eines in einem sekundaerspeicher abgelegten datensatzes
US4250483A (en) 1978-01-30 1981-02-10 Rubner Anthony C System for signalized intersection control
DE68926200T2 (de) 1988-08-11 1996-10-17 Ibm Geheime Datenübertragung mittels Steuervektoren
US5339398A (en) 1989-07-31 1994-08-16 North American Philips Corporation Memory architecture and method of data organization optimized for hashing
US5349642A (en) 1992-11-03 1994-09-20 Novell, Inc. Method and apparatus for authentication of client server communication
US5649179A (en) 1995-05-19 1997-07-15 Motorola, Inc. Dynamic instruction allocation for a SIMD processor
US5608801A (en) 1995-11-16 1997-03-04 Bell Communications Research, Inc. Efficient cryptographic hash functions and methods for amplifying the security of hash functions and pseudo-random functions
US5920900A (en) 1996-12-30 1999-07-06 Cabletron Systems, Inc. Hash-based translation method and apparatus with multiple level collision resolution
US5897637A (en) 1997-03-07 1999-04-27 Apple Computer, Inc. System and method for rapidly identifying the existence and location of an item in a file
US6067547A (en) 1997-08-12 2000-05-23 Microsoft Corporation Hash table expansion and contraction for use with internal searching
US5960434A (en) 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables
US6260055B1 (en) 1997-10-15 2001-07-10 Kabushiki Kaisha Toshiba Data split parallel shifter and parallel adder/subtractor
US6226710B1 (en) 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US6360218B1 (en) 1998-10-26 2002-03-19 Microsoft Corporation Compact record format for low-overhead databases
US6307955B1 (en) 1998-12-18 2001-10-23 Topaz Systems, Inc. Electronic signature management system
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6578131B1 (en) 1999-04-27 2003-06-10 Microsoft Corporation Scaleable hash table for shared-memory multiprocessor system
US6983350B1 (en) 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US6631419B1 (en) 1999-09-22 2003-10-07 Juniper Networks, Inc. Method and apparatus for high-speed longest prefix and masked prefix table search
US6594665B1 (en) 2000-02-18 2003-07-15 Intel Corporation Storing hashed values of data in media to allow faster searches and comparison of data
US6952770B1 (en) 2000-03-14 2005-10-04 Intel Corporation Method and apparatus for hardware platform identification with privacy protection
US6470329B1 (en) 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US20020032551A1 (en) 2000-08-07 2002-03-14 Jabari Zakiya Systems and methods for implementing hash algorithms
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7299355B2 (en) 2001-01-12 2007-11-20 Broadcom Corporation Fast SHA1 implementation
US7073059B2 (en) 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US7249255B2 (en) * 2001-06-13 2007-07-24 Corrent Corporation Apparatus and method for a hash processing system using multiple hash storage areas
US7240203B2 (en) 2001-07-24 2007-07-03 Cavium Networks, Inc. Method and apparatus for establishing secure sessions
KR100423811B1 (ko) 2001-12-12 2004-03-22 한국전자통신연구원 카스미 암호화 알고리즘을 응용한 암호화 장치
US7395412B2 (en) 2002-03-08 2008-07-01 Ip-First, Llc Apparatus and method for extending data modes in a microprocessor
US7400722B2 (en) 2002-03-28 2008-07-15 Broadcom Corporation Methods and apparatus for performing hash operations in a cryptography accelerator
US7069442B2 (en) 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7165135B1 (en) 2002-04-18 2007-01-16 Advanced Micro Devices, Inc. Method and apparatus for controlling interrupts in a secure execution mode-capable processor
AU2003221972A1 (en) 2002-04-18 2003-11-03 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
JP2004109420A (ja) 2002-09-18 2004-04-08 Sony Corp 乱数生成装置及び乱数生成方法
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
US7921300B2 (en) 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
US7684563B1 (en) 2003-12-12 2010-03-23 Sun Microsystems, Inc. Apparatus and method for implementing a unified hash algorithm pipeline
US7599489B1 (en) 2004-02-09 2009-10-06 Sun Microsystems Inc. Accelerating cryptographic hash computations
US7602905B2 (en) * 2004-09-01 2009-10-13 Texas Instruments Incorporated Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making
CN101044535B (zh) 2005-03-16 2011-06-15 三菱电机株式会社 数据变换装置以及数据变换方法
US7725624B2 (en) 2005-12-30 2010-05-25 Intel Corporation System and method for cryptography processing units and multiplier
US8073892B2 (en) 2005-12-30 2011-12-06 Intel Corporation Cryptographic system, method and multiplier
US8020142B2 (en) 2006-12-14 2011-09-13 Intel Corporation Hardware accelerator
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
US8923510B2 (en) 2007-12-28 2014-12-30 Intel Corporation Method and apparatus for efficiently implementing the advanced encryption standard
US8340280B2 (en) 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
US8711159B2 (en) 2009-02-23 2014-04-29 Microsoft Corporation VGPU: a real time GPU emulator
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US20100250965A1 (en) 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8995663B2 (en) 2010-03-31 2015-03-31 Feitian Technologies Co., Ltd. Method for implementing an encryption engine by smart key device
US8583902B2 (en) 2010-05-07 2013-11-12 Oracle International Corporation Instruction support for performing montgomery multiplication
US8712039B2 (en) 2011-04-06 2014-04-29 Certicom Corp. Efficient implementation of hash algorithm on a processor
JP2012252281A (ja) 2011-06-06 2012-12-20 Canon Inc 演算処理装置およびその方法、並びに、情報処理装置
US8855302B2 (en) 2011-06-21 2014-10-07 Intel Corporation Apparatus and method for Skein hashing
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions
WO2013095503A1 (en) 2011-12-22 2013-06-27 Intel Corporation Method and apparatus to process sha-1 secure hashing algorithm
US9632782B2 (en) 2012-03-30 2017-04-25 Intel Corporation Method and apparatus to process SHA-2 secure hashing algorithm
US10203934B2 (en) * 2012-07-11 2019-02-12 Intel Corporation Parallell processing of a single data buffer
GB2496934B (en) 2012-08-07 2014-06-11 Imagination Tech Ltd Multi-stage register renaming using dependency removal
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US20140362098A1 (en) 2013-06-10 2014-12-11 Sharp Laboratories Of America, Inc. Display stream compression
CN103457719B (zh) 2013-07-23 2016-06-08 国家密码管理局商用密码检测中心 一种对sm3密码算法hmac模式的侧信道能量分析方法
US10038550B2 (en) * 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
CN103490895B (zh) 2013-09-12 2016-09-14 电小虎能源科技(北京)有限公司 一种应用国密算法的工业控制身份认证方法及装置
US9424209B2 (en) * 2013-09-19 2016-08-23 Intel Corporation Dynamic heterogeneous hashing functions in ranges of system memory addressing space
US9390246B2 (en) * 2013-09-25 2016-07-12 Intel Corporation Creating secure original equipment manufacturer (OEM) identification
US9250914B2 (en) * 2013-12-20 2016-02-02 Intel Corporation Method and apparatus for selecting cache locality for atomic operations
US9361106B2 (en) 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
US10503510B2 (en) 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9317719B2 (en) 2014-09-04 2016-04-19 Intel Corporation SM3 hash algorithm acceleration processors, methods, systems, and instructions
US9658854B2 (en) 2014-09-26 2017-05-23 Intel Corporation Instructions and logic to provide SIMD SM3 cryptographic hashing functionality

Also Published As

Publication number Publication date
JP6051458B2 (ja) 2016-12-27
TWI610184B (zh) 2018-01-01
CN104951702A (zh) 2015-09-30
JP2015212804A (ja) 2015-11-26
US9912481B2 (en) 2018-03-06
KR20150112782A (ko) 2015-10-07
TWI575388B (zh) 2017-03-21
GB201503156D0 (en) 2015-04-08
TW201546628A (zh) 2015-12-16
KR101732046B1 (ko) 2017-05-02
TW201738773A (zh) 2017-11-01
US20150280917A1 (en) 2015-10-01
GB2528343B (en) 2016-12-14
GB2528343A (en) 2016-01-20
CN104951702B (zh) 2018-11-09

Similar Documents

Publication Publication Date Title
DE102015002254A1 (de) Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112013005239B4 (de) Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus
DE112017001804T5 (de) Vorrichtung und Verfahren für träge synchrone Seitentabellenaktualisierungen mit geringem Aufwand
DE112013004867T5 (de) Befehl und Logik zum Bereitstellen von Push-Puffer-Kopier- und Speicher-Funktionalität
DE102016006400A1 (de) Hardware-prozessoren und verfahren für eng-gekoppelte heterogene datenverarbeitung
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE102014003790A1 (de) Parallelvorrichtung für hochkomprimierte Hochgeschwindigkeits-LZ77-Tokenisierung und Huffman-Codierung für Deflate-Komprimierung
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE112013004770T5 (de) Lese- und -Schreibmaskenaktualisierungsbefehl zur Vektorisierung rekursiver Berechnungen über unabhängige Daten
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE102015002253A1 (de) Verfahren und Vorrichtung zum Ausführen mehrerer Multiplikationsoperationen
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung
DE102018128939A1 (de) Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication