DE112013005239T5 - Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus - Google Patents

Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus Download PDF

Info

Publication number
DE112013005239T5
DE112013005239T5 DE112013005239.3T DE112013005239T DE112013005239T5 DE 112013005239 T5 DE112013005239 T5 DE 112013005239T5 DE 112013005239 T DE112013005239 T DE 112013005239T DE 112013005239 T5 DE112013005239 T5 DE 112013005239T5
Authority
DE
Germany
Prior art keywords
instruction
fsm
lfsr
operand
receiving
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112013005239.3T
Other languages
English (en)
Other versions
DE112013005239B4 (de
Inventor
Gilbert M. Wolrich
Vinodh Gopal
Kirk S. Yap
Wajdi K. Feghali
Erdinc Ozturk
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 DE112013005239T5 publication Critical patent/DE112013005239T5/de
Application granted granted Critical
Publication of DE112013005239B4 publication Critical patent/DE112013005239B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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
    • 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • H04L9/0668Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator producing a non-linear pseudorandom sequence
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/045Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply hybrid encryption, i.e. combination of symmetric and asymmetric encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0457Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply dynamic encryption, e.g. stream encryption
    • 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/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/03Protecting confidentiality, e.g. by encryption
    • H04W12/033Protecting confidentiality, e.g. by encryption of the user plane, e.g. user's traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/04Key management, e.g. using generic bootstrapping architecture [GBA]
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/02Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

Vektoranweisungen zum Durchführen von drahtlosen SNOW 3G-Sicherheitsoperationen werden empfangen und von den Ausführungsschaltungen eines Prozessors ausgeführt. Die Ausführungsschaltungen empfangen einen ersten Operanden der ersten Anweisung, welcher ein erstes Vektorregister spezifiziert, das einen aktuellen Zustand einer finiten Zustandsmaschine (Finite State Machine, FSM) speichert. Die Ausführungsschaltungen empfangen auch einen zweiten Operanden der ersten Anweisung, welcher ein zweites Vektorregister spezifiziert, das Datenelemente eines Linearrückkopplungsschieberegisters (Linear Feedback Shift Register, LFSR) speichert, die zum Aktualisieren der FSM erforderlich sind. Die Ausführungsschaltungen führen die erste Anweisung aus, um einen aktualisierten Zustand der FSM und eine Ausgabe der FSM in einem Zieloperanden der ersten Anweisung zu erzeugen.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft Mikroprozessoren und zugehörige Anweisungssatzarchitektur, welche effiziente drahtlose Sicherheitsoperationen ermöglichen.
  • Stand der Technik
  • In der Kryptographie ist eine Stromchiffre eine symmetrische Schlüsselchiffre, wobei Klartextzeichen mit einem pseudozufälligen Chiffrezeichenstrom (Schlüsselstrom) kombiniert werden. In einer Stromchiffre wird jedes Klartextzeichen eines nach dem anderen mit dem entsprechenden Zeichen des Schlüsselstroms verschlüsselt, um ein Zeichen des Chiffretextstroms zu erzeugen. Ein Zeichen ist typischerweise ein Bit und die Kombinationsoperation kann ein Exklusiv-Oder (XOR) sein. Der pseudozufällige Schlüsselstrom wird typischerweise seriell von einem zufälligen Startwert unter Verwendung von digitalen Schieberegistern erzeugt. Der Startwert dient als kryptographischer Schlüssel zum Entschlüsseln des Chiffretextstroms.
  • Stromchiffren können in Software implementiert werden. Jedoch kann eine komplizierte Stromchiffre über hundert Zeilen C-Code verwenden. Selbst bei optimiertem Assemblercode kann eine große Anzahl von Zyklen erforderlich sein, um ein Byte Schlüsselstrom für eine komplizierte Stromchiffre zu erzeugen. Überdies involvieren Softwareimplementierungen im Allgemeinen einen großen Speicherzugriff. Somit stellen Softwareimplementierungen nicht ausreichend Geschwindigkeit und Energieeffizienz für eine Vielzahl von Anwendungen bereit.
  • Kurze Beschreibung der Zeichnungen
  • Ausführungsformen sind beispielhaft und nicht einschränkend in den Figuren der beigefügten Zeichnungen veranschaulicht:
  • 1A veranschaulicht eine Darstellung für die SNOW 3G-Operation in einem Initialisierungsmodus.
  • 1B veranschaulicht eine Darstellung für die SNOW 3G-Operation in einem Schlüsselstrommodus.
  • 2A2C veranschaulichen drei Vektoranweisungen zur Durchführung von SNOW 3G-Operationen gemäß einer Ausführungsform.
  • 3 ist ein Flussdiagramm, welches Operationen veranschaulicht, die in Reaktion auf eine erste Vektoranweisung gemäß einer Ausführungsform durchgeführt werden sollen.
  • 4 ist ein Flussdiagramm, welches Operationen veranschaulicht, die in Reaktion auf eine zweite Vektoranweisung gemäß einer Ausführungsform durchgeführt werden sollen.
  • 5 ist ein Flussdiagramm, welches Operationen veranschaulicht, die in Reaktion auf eine dritte Vektoranweisung gemäß einer Ausführungsform durchgeführt werden sollen.
  • 6 ist ein Blockschaltbild, welches die Verwendung eines Softwarebefehlswandlers zum Umwandeln von binären Anweisungen in einem Quellanweisungssatz in binäre Anweisungen in einem Zielanweisungssatz gemäß einer Ausführungsform veranschaulicht.
  • 7A ist ein Blockschaltbild einer In-Order- und Out-of-Order-Pipeline gemäß einer Ausführungsform.
  • 7B ist ein Blockschaltbild eines In-Order- und Out-of-Order-Kerns gemäß einer Ausführungsform.
  • 8A–B sind Blockschaltbilder von einer spezielleren beispielhaften In-Order-Kernarchitektur gemäß einer Ausführungsform.
  • 9 ist ein Blockschaltbild eines Prozessors gemäß einer Ausführungsform.
  • 10 ist ein Blockschaltbild eines Systems gemäß einer Ausführungsform.
  • 11 ist ein Blockschaltbild eines zweiten Systems gemäß einer Ausführungsform.
  • 12 ist ein Blockschaltbild eines dritten Systems gemäß einer Ausführungsform der Erfindung.
  • 13 ist ein Blockschaltbild eines System-on-a-Chip (SoC) gemäß einer Ausführungsform.
  • Beschreibung der Ausführungsformen
  • In der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt. Es wird jedoch verstanden, dass Ausführungsformen der Erfindung ohne diese speziellen Details praktiziert werden können. In anderen Beispielen sind wohl bekannte Schaltungen, Strukturen und Techniken nicht im Detail gezeigt, um nicht das Verständnis dieser Beschreibung zu verschleiern.
  • SNOW 3G ist durch hohen Rechenaufwand und lange Ausführungszeiten gekennzeichnet. Um drahtlose Hochgeschwindigkeitskommunikation zu ermöglichen, muss die Chiffrierungsoperation zeiteffizient sein. Zusätzlich zur zeitlichen Randbedingung muss die Chiffrierungsoperation auch energieeffizient sein, da mobile Vorrichtungen im Allgemeinen eine begrenzte Batterie aufweisen.
  • SNOW 3G ist ein Algorithmus basierend auf einem Linearrückkopplungsschieberegister (Linear Feedback Shift Register, LFSR) mit 608 Zustands-Bits. Die 608 Bit umfassen drei 32-Bit-FSM-Zustandsregister (FSM = Finite State Machine, finite Zustandsmaschine) und ein LFSR mit sechzehn Doppelwörtern (dwords) (d. h. 512 Bit im LFSR). Die Mathematik für das Aktualisieren des Zustands und Erzeugen von Ausgangswörtern umfasst mehrere Substitutionsbox(S-Box)-Übersetzungen und Galois-Feld-Multiplikation und Potenzieren.
  • SNOW 3G kann durch Software implementiert werden, was einen großen Rechen- und Speicherzugriff involviert. Folglich sind Softwareimplementierungen für SNOW 3G in der Regel langsam und energieaufwendig.
  • Ausführungsformen, welche hierin beschrieben sind, stellen neue Prozessoranweisungen bereit, um die drahtlose SNOW 3G-Sicherheitsoperation bei deutlich verbesserter Leistung im Vergleich zu bestehenden Softwarelösungen durchzuführen. In einer Ausführungsform umfassen die neuen Prozessoranweisungen eine SNOW_FSMZ-Anweisung für das Aktualisieren einer finiten Zustandsmaschine (Finite Stat Machine, FSM) und SNOW_LFSRV- und SNOW_LFSR1-Anweisungen für das Aktualisieren eines Linearrückkopplungsschieberegisters (Linear Feedback Shift Register, LFSR). Jede dieser Anweisungen nutzt Vektorregister, um effiziente vektorisierte Berechnungen durchzuführen.
  • Vor der Beschreibung der neuen Anweisungen ist es hilfreich, die grundlegenden Konzepte des drahtlosen SNOW 3G-Sicherheitsalgorithmus zu erklären. Der SNOW 3G-Algorithmus verwendet ein LFSR mit sechzehn 32-Bit-Datenelementen (wobei jedes Datenelement ein Doppelwort (dword) ist) und eine FSM mit drei 32-Bit-Zustandsregistern R1, R2 und R3. Beim Start werden die sechzehn dwords des LFSR mit Kombinationen von Bits von einem 128-Bit-Schlüssel und einer 128-Bit-Initialisierungsvariablen geladen. Der 128-Bit-Schlüssel umfasst vier 32-Bit-Wörter k0, k1, k2 und k3. Die 128-Bit-Initialisierungsvariable umfasst vier 32-Bit-Wörter IV0, IV1, IV2 und IV3. Im Folgenden repräsentiert die Zahl 1 ein nur aus 1 bestehendes dword (0xffffffff). Die sechzehn dwords im LFSR sind wie folgt:
    s15 = k3 ⊕ IV0 s14 = k2 s13 = k1 s12 = k0 ⊕ IV1
    s11 = k3 ⊕ 1 s10 = k2 ⊕ 1 ⊕ IV2 s9 = k1 ⊕ 1 ⊕ IV3 s9 = k0 ⊕ 1
    s7 = k3 s6 = k2 s5 = k1 s4 = k0
    s3 = k3 ⊕ 1 s2 = k2 ⊕ 1 s1 = k1 ⊕ 1 s0 = k0 ⊕ 1
  • Beim Start wird die FSM mit R1 = R2 = R3 = 0 initialisiert. Als Nächstes werden die FSM und das LFSR 32-mal in einem Initialisierungsmodus ausgeführt, wobei die Ausgabe der FSM als Eingabe für die LFSR-Aktualisierung verwendet wird.
  • Nach den ersten 32 Aktualisierungen der FSM und des LFSR wird die FSM ein weiteres Mal aktualisiert, wobei die FSM-Ausgabe verworfen wird. Das LFSR wird dann in einem Schlüsselstrommodus aktualisiert, gefolgt von einer Aktualisierung der FSM, um eine 32-Bit-Ausgabe F zu erzeugen. Die FSM-Ausgabe F ist mit dem dword s0 des LFSR XOR-verknüpft, um eine 32-Bit-Schlüsselstromausgabe Z zu erzeugen, und das LFSR wird wieder im Schlüsselstrommodus aktualisiert. Die FSM-Aktualisierung, Z-Ausgabe und LFSR-Aktualisierung werden weiterhin eine bestimmte Anzahl von Iterationen in einer Schleife fortgesetzt, bis die erforderlichen n dwords von Schlüsselstromausgaben erzeugt sind.
  • 1A veranschaulicht ein Beispiel eines LFSR 120 und einer FSM 100 im Initialisierungsmodus. Im Initialisierungsmodus wird jede der 32 LFSR-Startaktualisierungen durch Bestimmen eines 32-Bit-dword V durchgeführt, welches aus S11, S2, S0 und der FSM-Ausgabe F erzeugt wird. Dwords S15 bis S1 des LFSR 120 werden vor der Aktualiserung „nach rechts verschoben” zu S14 bis S0, und S15 wird mit V aktualisiert. Im Folgenden wird ∥ als Verkettungsoperator verwendet, und ⊕ ist ein bitweiser Exklusiv-Oder(XOR)-Operator. Ferner repräsentieren s0.0 ∥ s0.1 ∥ s0.2 ∥ s0.3 die vier Byte von s0, wobei s0.0 das höchstwertige Byte von s0 ist; und s11.0 ∥ s11.1 ∥ s11.2 ∥ s11.3 repräsentieren die vier Byte von s11, wobei s11.0 das höchstwertige Byte von s11 ist. Insbesondere ist im Initialisierungsmodus V = (s0,1 ∥ s0,2 ∥ s0,3 ∥ 0x00) ⊕ MULα(s0,0) ⊕ s2 ⊕ (0x00 ∥ s11,0 ∥ s11,1 ∥ s11,2) ⊕ DIVα(s11,3) ⊕ F.
  • Im Ausdruck von V sind MULα und DIVα Funktionen, welche in SNOW 3G basierend auf mathematischen MULx- und MULxPOW-Funktionen definiert sind. MULα und DIVα ordnen jeweils 8 Bit 32 Bit zu. Obgleich sowohl MULα als auch DIVα komplex sind, um von der mathematischen Definition der Funktionen aufgrund der rekursiven Anforderungen der MULxPOW-Operation zu implementieren, kann eine Ausgabetabelle von 256 Einträgen mal 32 Bit für jede der MULα- und DIVα-Funktionen verwendet werden (d. h. 1 KByte für jede Funktion).
  • 1B veranschaulicht ein Beispiel des LFSR und der FSM im Schlüsselstrommodus. Im Schlüsselstrommodus wird das 32-Bit-dword V von s11, s2 und s0 erzeugt. Insbesondere ist V = (s0,1 ∥ s0,2 ∥ s0,3 ∥ 0x00) ⊕ MULα(s0,0) ⊕ s2 ⊕ (0x00) ∥ s11,0 ∥ s11,1 ∥ s11,2) ⊕ DIVα(s11,3). Wie oben beschrieben, können die MULα- and DIVα-Ergebnisse mittels Tabellen-Lookups erhalten werden.
  • Sowohl im Initialisierungsmodus als auch im Schlüsselstrommodus verwendet jede FSM-Aktualiserung zwei 32-Bit-LFSR-dwords. Dword S15 wird verwendet, um ein 32-Bit-Ausgangswort F zu erzeugen, und S5 wird verwendet, um die FSM-Zustandsregister R1, R2 und R3 zu aktualisieren, wobei jedes der R1, R2 und R3 ein 32-Bit-dword ist. In 1A und 1B repräsentiert ⊞ ganzzahlige Addition modulo 232. Die FSM-Ausgabe ist F = (s15 ⊞ R1) ⊕ R2. Anschließend werden die Zustandsregister wie folgt aktualisiert: Zuerst wird ein Zwischenwert r als r = R2 ⊞ (R3 ⊕ s5) berechnet. Dann werden R3 = S2(R2), R2 = S1(R1) und R1 = r festgelegt.
  • In der obigen Berechnung sind S1 und S2 32×32-Bit-S-Box-Funktionen. S1 ist das in der Advanced Encryption Standard(AES)-Chiffre verwendete Rijndael S-Box SR. Bei einer 32-Bit-Eingabe ist w = w0 ∥ w1 ∥ w2 ∥ w3, wobei w0 das höchstwertige Byte ist, SR(w) = r0 ∥ r1 ∥ r2 ∥ r3, wobei r0 das höchstwertige und r3 das niedrigstwertige Byte sind. Byte r0, r1, r2 und r3 in der Ausgabe sind wie folgt definiert: r0 = MULx(SR(w0), 0x1B) ⊕ SR(w1) ⊕ SR(w2) ⊕ MULx(SR(w3), 0x1B) ⊕ SR(w3), r1 = MULx(SR(w0), 0x1B) ⊕ SR(w0) ⊕ MULx(SR(w1), 0x1B) ⊕ SR(w2) ⊕ SR(w3), r2 = SR(w0) ⊕ MULx(SR(w1), 0x1B) ⊕ SR(w1) ⊕ MULx(SR(w2), 0x1B) ⊕ SR(w3), r3 = SR(w0) ⊕ SR(w1) ⊕ MULx(SR(w2), 0x1B) ⊕ SR(w2) ⊕ MULx(SR(w3), 0x1B).
  • Die MULx-Funktion ist wie folgt definiert: Falls das linkeste (höchstwertige) Bit des ersten Operanden (v1) eins ist, dann ist MULx(v1, v2) = v1 <<8 1 ⊕ v2; sonst ist MULx(v1, v2) = v1 <<8 1 (wobei <<8 eine Linksverschiebung um 8 Bit ist).
  • Die S2-S-Box führt auch eine 32-Bit-zu-32-Bit-Zuordnung basierend auf vier 8-Bit-zu 8-Bit-Übersetzungen durch. Die S-Box, welche für S2 verwendet wird, ist die SQ-S-Box, welche in SNOW 3G definiert ist. Ähnlich zur Definition von S1 ist bei einer 32-Bit-Eingabe w = w0 ∥ w1 ∥ w2 ∥ w3, wobei w0 das höchstwertige Byte ist, SQ(w) = r0 ∥ r1 ∥ r2 ∥ r3, wobei r0 das höchstwertige und r3 das niedrigstwertige Byte sind. Byte r0, r1, r2 und r3 in der Ausgabe sind wie folgt definiert: r0 = MULx(SQ(w0), 0x69) ⊕ SQ(w1) ⊕ SQ(w2) ⊕ MULx(SQ(w3), 0x69) ⊕ SQ(w3), r1 = MULx(SQ(w0), 0x69) ⊕ SQ(w0) ⊕ MULx(SQ(w1), 0x69) ⊕ SQ(w2) ⊕ SQ(w3), r2 = SQ(w0) ⊕ MULx(SQ(w1), 0x69) ⊕ SQ(w1) ⊕ MULx(SQ(w2), 0x69) ⊕ SQ(w3), r3 = SQ(w0) ⊕ SQ(w1) ⊕ MULx(SQ(w2), 0x69) ⊕ SQ(w2) ⊕ MULx(SQ(w3), 0x69).
  • Die obige Beschreibung erläutert die Berechnungen des drahtlosen SNOW 3G-Sicherheitsalgorithmus. Ausführungsformen der Erfindung stellen neue Anweisungen zu einer Anweisungssatzarchitektur (Instruction Set Architecture, ISA) bereit, um eine effiziente Berechnung des SNOW 3G-Algorithmus zu ermöglichen. Die hierin beschriebene ISA unterstützt Single Instruction Multiple Data(SIMD)-Operationen. Statt einer Skalaranweisung, welche nur auf einem Datenelement oder Paar von Datenelementen operiert, kann eine SIMD-Anweisung (auch als gepackte Datenanweisung oder Vektoranweisung bezeichnet) auf mehreren Datenelementen bzw. mehreren Paaren von Datenelementen gleichzeitig oder parallel betrieben werden. Der Prozessor kann parallele Ausführungshardware aufweisen, welche auf die Vektoranweisung reagiert, um mehrere Operationen gleichzeitig oder parallel durchzuführen.
  • Die neuen Anweisungen und der entsprechende Datenpfad ermöglichen einem Prozessor, welcher 256-Bit- oder 512-Bit-Architekturvektorregister unterstützt, SNOW 3G bei einem 3-Zyklus-pro-32-Bit-dword-Durchsatz auszuführen. In der folgenden Beschreibung bezieht sich der Begriff YMM auf ein 256-Bit-Vektorregister. Obwohl YMM-Register in der folgenden Beschreibung verwendet werden, versteht es sich, dass auch andere Vektorregister (z. B. 512-Bit-ZMM-Register) in alternativen Ausführungsformen verwendet werden können.
  • In einer Ausführungsform wird der LFSR-Zustand von sechzehn 32-Bit-Datenelementen, s15 bis s0, in zwei Vektorregistern (z. B. zwei YMM-Registern) gespeichert. Da die FSM s15 und s5 verwendet und eine XOR von s0 und F (die 32-Bit-Ausgabe der FSM) erforderlich ist, um Z (die 32-Bit-Schlüsselstromausgabe) zu erzeugen, werden die LFSR-Datenelemente innerhalb der zwei YMM-Register mit s15, s5 und s0 im gleichen YMM-Register organisiert. Das heißt, dass die LFSR-Datenelemente, welche von der FSM benötigt werden, im gleichen Vektorregister gespeichert werden.
  • In einer Ausführungsform kann das SNOW 3G-LFSR derart organisiert sein, dass seine sechzehn Datenelemente wie folgt in zwei Vektorregistern YMM1 und YMM2 gespeichert sind:
    dword 0 1 2 3 4 5 6 7
    YMM1 s15 s6 s5 s4 s3 s2 s1 s0
    YMM2 s14 s13 s12 s11 s10 s9 s8 s7
  • 2A veranschaulicht eine Anweisung SNOW_LFSR1 YMM0, YMM1, YMM2 gemäß einer Ausführungsform. Das erste Quellregister YMM1 weist voraktualisierte dwords s15, s6, s5, s4, s3, s2, s1 und s0 auf. Das zweite Quellregister YMM2 weist voraktualisierte dwords s14, s13, s12, s11, s10, s9, s8 und s7 auf. Das Zielregister YMM0 weist aktualisierte dwords s14, s13, s12, s11, s10, s9, s8 und s7 auf (die aktualisierten dwords sind in 2A mit Unterstreichungen gezeigt). Die Anweisung wird von einem Prozessor durch folgende Festlegung ausgeführt: YMM0-dword 0 zum voraktualisierten YMM1-dword 0 und YMM0-dwords 1–7 zu den voraktualisierten YMM2-dwords 0–6. Das heißt, dass die Anweisung s15 aus YMM1 zu s14 von YMM0 verschiebt und s14–s8 aus YMM2 zu s13–s7 von YMM0 verschiebt, wie in 2A gezeigt.
  • 2B veranschaulicht eine weitere Anweisung SNOW_LFSRV YMM0, YMM1, YMM2 gemäß einer Ausführungsform. Das erste Quellregister YMM1 weist voraktualisierte dwords s15, s6, s5, s4, s3, s2, s1 und s0 auf. Das zweite Quellregister YMM2 weist voraktualisierte dwords s14, s13, s12, s11, s10, s9, s8 und s7 auf. Die Anweisung wird von einem Prozessor ausgeführt, indem zuerst V (die LFSR-Ausgabe) bestimmt wird. Der mathematische Ausdruck für V ist oben unter Bezugnahme auf 1A und 1B beschrieben und wird nachfolgend wiederholt.
  • Im Initialisierungsmodus ist V = (s0,1 ∥ s0,2 ∥ s0,3 ∥ 0x00) ⊕ MULα(s0,0) ⊕ s2 ⊕ (0x00 ∥ s11,0 ∥ s11,1 ∥ s11,2) ⊕ DIVα(s11,3) ⊕ F. In einer Ausführungsform wird die LFSR-Ausgabe F mit dword 5 (s2) der Quelle YMM1 vor der Ausführung der SNOW_LFSRV-Anweisung XOR-verknüpft, um den V-Wert zu erzeugen.
  • Im Schlüsselstrommodus ist V = (s0,1 ∥ s0,2 ∥ s0,3 ∥ 0x00) ⊕ MULα(s0,0) ⊕ s2 ⊕ (0x00 ∥ s11,0 ∥ s11,1 ∥ s11,2) ⊕ DIVα(s11,3). Sowohl im Initialisierungsmodus als auch Schlüsselstrommodus können die Ergebnisse von MULα(s0,0) und DIVα(s11,3) durch zwei Tabellen-Lookups erhalten werden, welche parallel ausgeführt werden. In einer Ausführungsform wird jede der Funktionen MULα und DIVα durch eine Tabelle mit 256 Einträgen mit 32-Bit-Ausgabe im Nur-Lese-Speicher (Read-Only Memory, ROM) unterstützt, welche sich im Ausführungsdatenpfad der Anweisung befindet, die durch den Prozessor zugänglich ist. In alternativen Ausführungsformen können auch andere Speicherformen verwendet werden.
  • Nach der Bestimmung von V wird das Zielregister-YMM0-dword 0 auf V festgelegt, das YMM0-dword 1 wird auf das YMM2-dword 7 festgelegt und die YMM0-dwords 2–7 werden auf die YMM1-dwords 1–6 festgelegt. Das heißt, dass die Anweisung s7 aus YMM2 zu s6 von YMM0 verschiebt und s6–s1 aus YMM1 zu s5–s0 von YMM0 verschiebt, wie in 2B gezeigt. Die SNOW_LFSRV-Anweisung kann in einer 3-Zyklus-Pipeline ausgeführt werden.
  • 2C veranschaulicht eine noch weitere Anweisung SNOW_FSMZ YMM0, YMM1, YMM2. Diese Anweisung wird verwendet, um den FSM-Zustand zu aktualisieren und die nächste FSM-Ausgabe F zu generieren. Das erste Quellregister YMM1 speichert die voraktualisierten R1-, R2- und R3-Zustände, das zweite Quellregister YMM2 speichert die LFSR-dwords s15, s6, s5, s4, s3, s2, s1 und s0. Das Zielregister YMM0 wird mit aktualisierten R1, R2, R3 und Ausgabe F geschrieben. Somit wird YMM0 logisch in vier 32-Bit-Spuren aufgeteilt. Da die aktualisierten R1, R2, R3 und F von voraktualisierten R1, R2 und R3 berechnet werden, können die R1-, R2-, R3- und F-Aktualisierungen parallel berechnet werden, und die Ergebnisse können in den vier Spuren YMM0 gespeichert werden.
  • Wie oben unter Bezugnahme auf 1A und 1B beschrieben ist, werden die Aktualisierungen von R2 und R3 durch Auswertung der SR- und SQ-S-Box-Funktionen berechnet. Für eine 32-Bit-Eingabe w = w0 ∥ w1 ∥ w2 ∥ w3 kann das Ergebnis von SR(w) durch vier parallele Tabellen-Lookups (SR(w0), SR(w1), SR(w2), SR(w3)) erhalten werden; ähnlich kann das Ergebnis von SQ(w) durch vier parallele Tabellen-Lookups (SQ(w0), SQ(w1), SQ(w2), SQ(w3)) erhalten werden. In einer Ausführungsform können insgesamt acht Tabellen in einem Nur-Lese-Speicher gespeichert werden, um acht parallele Tabellen-Lookups zu aktivieren. Jede der SR- und SQ-Funktionen ordnet 8 Bit 8 Bit zu; somit kann jede Funktion durch ein Tabelle mit 256 Einträgen mit 8-Bit-Ausgabe im Nur-Lese-Speicher (Read-Only Memory, ROM) unterstützt werden, welche sich im Ausführungsdatenpfad der Anweisung befindet, die durch den Prozessor zugänglich ist. In alternativen Ausführungsformen können auch andere Speicherformen verwendet werden.
  • Die SNOW_FSMZ-Anweisung ermöglicht einem Prozessor, die vier parallelen Aktualisierungen von R1, R2, R3 und F, einschließlich der acht parallelen Tabellen-Lookups für die SR- und SQ-Funktionen, in einer SIMD-Pipeline auszuführen. In einer Ausführungsform kann die SIMD-Pipeline eine 3-Zyklus-SIMD-Pipeline sein. Die Anweisung liest aus zwei Vektorregistern und schreibt in ein Vektorregister. Im Vergleich würde ein Softwareprogramm, welches die gleichen FSM-Updates durchführt, viele weitere Anweisungen umfassen und viele weitere Lese- und Schreibzugriffe verursachen. Die Datenelemente des LFSR sind organisiert, dass der Satz von LFSR-dwords, welche von den FSM-Aktualisierungen benötigt werden, in ein Vektorregister geladen werden (d. h. zweiter Quelloperand von SNOW_FSMZ). Dieses Vektorregister kann auch als Quelloperanden von SNOW_LFSR1 und SNOW_LFSRV für LFSR-Aktualisierungen verwendet werden. Die Berechnung des SNOW 3G-Algorithmus ist partitioniert, um die Ausführungseffizienz zu maximieren. Der Durchsatz von SNOW 3G mit den neuen Anweisungen hängt von den Ausführungs-Ports ab, welche sowohl den Anweisungen als auch der Anweisungslatenz zugeordnet sind.
  • Nachfolgend ist ein beispielhaftes Codesegment zur Durchführung von drahtlosen SNOW 3G-Sicherheitsoperationen unter Verwendung der drei neuen Anweisungen SNOW_LFSR1, SNOW_LFSRV und SNOW_FSMZ aufgeführt. Die Operationen starten mit den FSM-Zustanden R1, R2 und R3 in YMM4, LFSR-dwords s15 und s6–s0 in YMM0 und LFSR-dwords s14–s7 in YMM1.
    SNOW_FSMZ YMM5, YMM4, YMM0 /* erste Aktualisierung */
    SNOW_LFSRV YMM2, YMM0, YMM1
    SNOW_LFSR1 YMM3, YMM0, YMM1
    MOVD_YMM5, mem /* 32 Bit vom YMM-Register zur Ausgabe bewegen */
    SNOW_FSMZ YMM4, YMM5, YMM2 /* zweite Aktualisierung */
    SNOW_LFSRV YMM0, YMM2, YMM3
    SNOW_LFSR1 YMM1, YMM2, YMM3
    MOVD_YMM4, mem /* 32 Bit vom YMM-Register zur Ausgabe bewegen */
  • In der ersten Aktualisierung weist YMM0 die LFSR-dwords auf, welche von der FSM-Aktualisierung erforderlich sind. Der aktualisierte FSM-Zustand ist in YMM5 und der aktualisierte LFSR-Zustand ist in YMM2 und YMM3, wobei YMM2 die LFSR-dwords aufweist, welche von der nächsten FSM-Aktualisierung erforderlich sind. In der zweiten Aktualisierung ist der aktualisierte FSM-Zustand in YMM4 und der aktualisierte LFSR-Zustand ist in YMM0 und YMM1, wobei YMM0 die LFSR-dwords aufweist, welche von der nächsten FSM-Aktualisierung erforderlich sind. Somit können die SNOW 3G-Operationen in einer Schleife mit alternierenden ersten und zweiten Aktualisierungen durchgeführt werden.
  • 3 ist ein Flussdiagramm eines Verfahrens 300 zum Durchführen von drahtlosen SNOW 3G-Sicherheitsoperationen gemäß einer Ausführungsform. Das Verfahren 300 beginnt mit einem Prozessor (insbesondere Ausführungsschaltungen, wie beispielsweise die Ausführungsmaschineneinheit 750 aus 7B), welcher eine erste Anweisung zum Durchführen von drahtlosen SNOW 3G-Sicherheitsoperationen erhält (Block 310). Die Ausführungsschaltungen empfangen einen ersten Operanden der ersten Anweisung, welcher ein erstes Vektorregister spezifiziert, das einen aktuellen Zustand einer finiten Zustandsmaschine (Finite State Machine, FSM) (z. B. FSM 100 aus 1A und 1B) (Block 320) speichert. Die Ausführungsschaltungen empfangen auch einen zweiten Operanden der ersten Anweisung, welcher ein zweites Vektorregister spezifiziert, das Datenelemente eines LFSR (z. B. LFSR 120 aus 1A und 1B) speichert, die zum Aktualisieren der FSM (Block 330) erforderlich sind. Die Ausführungsschaltungen führen dann die erste Anweisung aus, um einen aktualisierten Zustand der FSM und eine Ausgabe der FSM in einem Zieloperanden (Block 340) zu erzeugen.
  • 4 ist ein Flussdiagramm eines Verfahrens 400 zum Durchführen einer Aktualisierung vom LFSR gemäß einer Ausführungsform. Das Verfahren 400 beginnt mit einem Prozessor (insbesondere Ausführungsschaltungen, wie beispielsweise die Ausführungsmaschineneinheit 750 aus 7B), welcher eine zweite Anweisung zum Durchführen einer Aktualisierung vom LFSR erhält (Block 410). Die Ausführungsschaltungen empfangen einen ersten Operanden der zweiten Anweisung, welcher das zweite Vektorregister spezifiziert, das Datenelemente des LFSR speichert, die zum Aktualisieren der FSM (Block 420) erforderlich sind. Die Ausführungsschaltungen empfangen auch einen zweiten Operanden der zweiten Anweisung, welcher ein drittes Vektorregister spezifiziert, das die Hälfte der Datenelemente im LFSR speichert, die nicht im zweiten Vektorregister enthalten sind (Block 430). Die Ausführungsschaltungen führen dann die zweite Anweisung aus, um ein aktualisiertes linkestes Datenelement des LFSR und einen ersten Satz von verschobenen Datenelementen des LFSR in einem Zieloperanden zu erzeugen (Block 440).
  • 5 ist ein Flussdiagramm eines Verfahrens 500 zum Durchführen einer Aktualisierung vom LFSR gemäß einer Ausführungsform. Das Verfahren 500 beginnt mit einem Prozessor (insbesondere Ausführungsschaltungen, wie beispielsweise die Ausführungsmaschineneinheit 750 aus 7B), welcher eine dritte Anweisung zum Durchführen einer Aktualisierung vom LFSR erhält (Block 510). Die Ausführungsschaltungen empfangen einen ersten Operanden der dritten Anweisung, welcher das zweite Vektorregister spezifiziert, das Datenelemente des LFSR speichert, die zum Aktualisieren der FSM (Block 520) erforderlich sind. Die Ausführungsschaltungen empfangen auch einen zweiten Operanden der dritten Anweisung, welcher das dritte Vektorregister spezifiziert, das die Hälfte der Datenelemente im LFSR speichert, die nicht im zweiten Vektorregister enthalten sind (Block 530).
  • Die Ausführungsschaltungen führen dann die dritte Anweisung aus, um einen zweiten Satz von verschobenen Datenelementen des LFSR in einem Zieloperanden zu erzeugen (Block 540).
  • In verschiedenen Ausführungsformen können die Verfahren aus 35 mit einem Allzweckprozessor, einem Spezialprozessor (beispielsweise einem Graphikprozessor oder einem Digitalsignalprozessor) oder einer anderen Art von Digitallogikvorrichtung oder Anweisungsverarbeitungsvorrichtung durchgeführt werden. In einigen Ausführungsformen können die Verfahren aus 35 durch einen Prozessor, eine Vorrichtung oder ein System durchgeführt werden, wie beispielsweise die in 7A–B, 8A–B und 913 gezeigten Ausführungsformen. Darüber hinaus können der Prozessor, die Vorrichtung oder das System, welche in 7A–B, 8A–B und 913 gezeigt sind, Ausführungsformen von Operationen und Verfahren entweder gleich, ähnlich oder verschieden von denjenigen der Verfahren aus 35 durchführen.
  • In einigen Ausführungsformen kann der Prozessor, die Vorrichtung oder das System aus 7A–B, 8A–B und 913 in Verbindung mit einem Befehlswandler, welcher eine Anweisung von einem Quellanweisungssatz in einen Zielanweisungssatz umwandelt, arbeiten. Beispielsweise kann der Befehlswandler übersetzen (z. B. unter Verwendung von statischer Binärübersetzung, dynamischer Binärübersetzung einschließlich dynamischer Kompilierung), morphen, emulieren oder anderweitig eine Anweisung in eine oder mehrere andere Anweisungen umwandeln, welche durch den Kern verarbeitet werden sollen. Der Befehlswandler kann in Software, Hardware, Firmware oder einer Kombination davon implementiert werden. Der Befehlswandler kann auf einem Prozessor, außerhalb eines Prozessors oder teilweise auf und teilweise außerhalb eines Prozessors sein.
  • 6 ist ein Blockschaltbild, welches die Verwendung eines Softwarebefehlswandlers gemäß Ausführungsformen der Erfindung gegenüberstellt. In der dargestellten Ausführungsform ist der Befehlswandler ein Softwarebefehlswandler, obwohl der Befehlswandler alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert werden kann. 6 zeigt, dass ein Programm in einer Hochsprache 602 unter Verwendung eines x86-Compilers 604 kompiliert werden kann, um x86-Binärcode 606 zu erzeugen, welcher von einem Prozessor mit wenigstens einem x86-Anweisungssatzkern 616 nativ ausgeführt werden kann.
  • Der Prozessor mit wenigstens einem x86-Anweisungssatzkern 616 repräsentiert einen beliebigen Prozessor, welcher im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit wenigstens einem x86-Anweisungssatzkern durchführen kann durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Teils des Anweisungssatzes des Intel x86-Anweisungssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, welche abgezielt sind, um auf einem Intel-Prozessor mit wenigstens einem x86-Anweisungssatzkern zu laufen, um im Wesentlichen das gleiche Ergebnis wie ein Intel-Prozessor mit wenigstens einem x86-Anweisungssatzkern zu erreichen. Der x86-Compiler 604 repräsentiert einen Compiler, welcher betrieben werden kann, um x86-Binärcode 606 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verlinkungsverarbeitung auf dem Prozessor mit wenigstens einem x86-Anweisungssatzkern 616 ausgeführt werden kann. Ähnlich zeigt 6, dass das Programm in der Hochsprache 602 unter Verwendung eines alternativen Anweisungssatz-Compilers 608 kompiliert werden kann, um alternativen Anweisungssatz-Binärcode 610 zu erzeugen, welcher von einem Prozessor ohne wenigstens einen x86-Anweisungssatzkern 614 nativ ausgeführt werden kann (z. B. einem Prozessor mit Kernen, die den MIPS-Anweisungssatz von MIPS Technologies aus Sunnyvale, CA ausführen und/oder die den ARM-Anweisungssatz von ARM Holdings aus Sunnyvale, CA ausführen). Der Befehlswandler 612 wird verwendet, um den x86-Binärcode 606 in Code umzuwandeln, welcher vom Prozessor ohne x86-Anweisungssatzkern 614 nativ ausgeführt werden kann. Es ist unwahrscheinlich, dass dieser umgewandelte Code der gleiche wie der alternative Anweisungssatz-Binärcode 610 ist, da ein Befehlswandler, welcher hierzu in der Lage ist, schwer herzustellen ist; jedoch wird der umgewandelte Code die allgemeine Operation erzielen und aus Anweisungen vom alternativen Anweisungssatz bestehen. Somit repräsentiert der Befehlswandler 612 Software, Firmware, Hardware oder eine Kombination davon, welche durch Emulierung, Simulation oder einen beliebigen anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen x86-Anweisungssatzprozessor oder -kern aufweist, ermöglicht, den x86-Binärcode 606 auszuführen
  • Beispielhafte Kernarchitekturen
  • In-Order- und Out-of-Order-Kern-Blockschaltbild
  • 7A ist ein Blockschaltbild, welches sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Out-of-Order-Ausgabe-/Ausführungs-Pipeline mit Registerumbenennung gemäß Ausführungsformen der Erfindung veranschaulicht. 7B ist ein Blockschaltbild, welches sowohl eine beispielhafte Ausführungsform eines In-Order-Architekturkerns als auch eines beispielhaften Out-of-Order-Ausgabe-/Ausführungs-Architekturkerns mit Registerumbenennung, der gemäß Ausführungsformen der Erfindung in einen Prozessor eingeschlossen werden soll, veranschaulicht. Die Kästchen mit durchgezogenen Linien in 7A und 7B veranschaulichen die In-Order-Pipeline und den In-Order-Kern, während die optionale Hinzufügung der Kästchen mit gestrichelten Linien die/den Out-of-Order-Ausgabe-/Ausführungs-Pipeline und -Kern mit Registerumbenennung veranschaulichen. Da der In-Order-Aspekt ein Subset des Out-of-Order-Aspekts ist, wird der Out-of-Order-Aspekt beschrieben.
  • In 7A umfasst eine Prozessor-Pipeline 700 eine Abrufstufe 702, eine Längendecodierungsstufe 704, eine Decodierungsstufe 706, eine Zuordnungsstufe 708, eine Umbenennungsstufe 710, eine Zeitplanungsstufe (auch bekannt als eine Sende- oder Ausgabestufe) 712, eine Register-Lese-/Speicher-Lese-Stufe 714, eine Ausführungsstufe 716, eine Rückschreib-/Speicher-Schreib-Stufe 718, eine Ausnahmehandhabungsstufe 722 und eine Festlegungsstufe 724.
  • 7B zeigt den Prozessorkern 790, welcher eine Frontend-Einheit 730 gekoppelt mit einer Ausführungsmaschineneinheit 750 umfasst, und beide sind mit einer Speichereinheit 770 gekoppelt. Der Kern 790 kann ein Reduced Instruction Set Computing(RISC)-Kern, ein Complex Instruction Set Computing(CISC)-Kern, ein Very Long Instruction Word(VLIW)-Kern oder ein Hybrid- oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 790 ein Spezialkern sein, wie beispielsweise ein Netz- oder Kommunikationskern, eine Komprimierungsmaschine, ein Coprozessorkern, der Kern einer Allzweckberechnungs-Graphikverarbeitungseinheit (General Purpose Computing Graphics Processing Unit, GPGPU), ein Graphikkern oder dergleichen.
  • Die Frontend-Einheit 730 umfasst eine Abzweigvorhersageeinheit 732, welche mit einer Anweisungscache-Einheit 734 gekoppelt ist, die mit einem Anweisungsübersetzungs-Look-Aside-Puffer (Translation Lookaside Buffer, TLB) 736 gekoppelt ist, der mit einer Anweisungsabrufeinheit 738 gekoppelt ist, die mit einer Decodierungseinheit 740 gekoppelt ist. Die Decodierungseinheit 740 (oder Decoder) kann Anweisungen decodieren und als Ausgabe eine(n) oder mehrere Mikrooperationen, Mikrocode-Einsprungspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale erzeugen, welche aus den ursprünglichen Anweisungen decodiert werden oder diese anderweitig reflektieren oder von diesen abgeleitet sind. Die Decodierungseinheit 740 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele geeigneter Mechanismen umfassen, sind jedoch nicht darauf beschränkt, Lookup-Tabellen, Hardwareimplementierungen, programmierbare logische Arrays (PLAs), Mikrocode-Nur-Lese-Speicher (Read-Only Memories, ROMs) usw. In einer Ausführungsform umfasst der Kern 790 einen Mikrocode-ROM oder ein anderes Medium, welches Mikrocode für bestimmte Makroanweisungen speichert (z. B. in der Decodierungseinheit 740 oder anderweitig innerhalb der Frontend-Einheit 730). Die Decodierungseinheit 740 ist mit einer Umbenennungs-/Zuordnungseinheit 752 in der Ausführungsmaschineneinheit 750 gekoppelt.
  • Die Ausführungsmaschineneinheit 750 umfasst die Umbenennungs-/Zuordnungseinheit 752 gekoppelt mit einer Ausscheideeinheit 754 und einem Satz aus einer oder mehreren Zeitplanungseinheit(en) 756. Die Zeitplanungseinheit(en) 756 repräsentiert/repräsentieren eine beliebige Anzahl unterschiedlicher Zeitplaner, einschließlich Reservierungsstationen, zentrales Anweisungsfenster usw. Die Zeitplanungseinheit(en) 756 ist/sind mit der/den physischen Registerdateieinheit(en) 758 gekoppelt. Jede der physischen Registerdateieinheiten 758 repräsentiert eine oder mehrere physische Registerdateien, von welchen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie beispielsweise skalare Ganzzahl, skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma, Status (z. B. ein Anweisungsverweis, bei dem es sich um die Adresse der nächsten auszuführenden Anweisung handelt) usw. In einer Ausführungsform umfasst die physische Registerdateieinheit 758 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine skalare Registereinheit. Diese Registereinheiten können Architekturvektorregister, Vektormaskenregister und Allzweckregister bereitstellen. Die physische(n) Registerdateieinheit(en) 758 wird/werden durch die Ausscheideeinheit 754 überlappt, um verschiedene Möglichkeiten zu veranschaulichen, mit welchen Registerumbenennung und Out-of-Order-Ausführung implementiert werden können (z. B. unter Verwendung eines/von Umordnungspuffers/Umordnungspuffern und einer/von Ausscheideregisterdatei(en); unter Verwendung einer/von Zukunftsdatei(en), eines/von Verlaufspuffers/Verlaufspuffern und einer/von Ausscheideregisterdatei(en); unter Verwendung einer/von Registerkarte(n) und eines Pools von Registern usw.). Die Ausscheideeinheit 754 und die physische(n) Registerdateieinheit(en) 758 sind mit dem/den Ausführungscluster(n) 760 gekoppelt. Das/die Ausführungscluster 760 beinhaltet/beinhalten einen Satz von einer oder mehreren Ausführungseinheiten 762 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 764. Die Ausführungseinheiten 762 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen (z. B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma) durchführen. Während einige Ausführungsformen eine Reihe von Ausführungseinheiten, welche für spezielle Funktionen oder Sätze von Funktionen dediziert sind, umfassen können, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die alle sämtliche Funktionen durchführen, umfassen. Die Zeitplanungseinheit(en) 756, die physische(n) Registerdateieinheit(en) 758 und das/die Ausführungscluster 760 sind derart gezeigt, dass sie möglicherweise in einer Mehrzahl vorliegen, weil bestimmte Ausführungsformen separate Pipelines für bestimmte Datentypen/Operationen erzeugen (z. B. eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma/gepackte Ganzzahl/gepackte Gleitkomma/Vektorganzzahl/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jeweils ihr(e) eigene(s) Zeitplanungseinheit, physische Registerdateieinheit und/oder Ausführungscluster aufweist- und im Fall einer separaten Speicherzugriffs-Pipeline sind bestimmte Ausführungsformen implementiert, bei welchen nur das Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 764 aufweist). Es sollte auch verstanden werden, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order-Ausgabe-/Ausführungs-Pipelines und der Rest In-Order-Pipelines sein können.
  • Der Satz von Speicherzugriffseinheiten 764 ist mit der Speichereinheit 770 gekoppelt, welche eine Daten-TLB-Einheit 772 gekoppelt mit einer Datencache-Einheit 774 gekoppelt mit einer Level-2(L2)-Cache-Einheit 776 umfasst. In einer beispielhaften Ausführungsform kann die Speicherzugriffseinheit 764 eine Lasteinheit, eine Speicheradresseinheit und eine Speicherdateneinheit umfassen, von denen jede mit der Daten-TLB-Einheit 772 in der Speichereinheit 770 gekoppelt ist. Die Anweisungscache-Einheit 734 ist ferner mit einer Level-2(L2)-Cache-Einheit 776 in der Speichereinheit 770 gekoppelt. Die L2-Cache-Einheit 776 ist mit einem oder mehreren anderen Cachelevels und schließlich mit einem Hauptspeicher gekoppelt.
  • Als Beispiel kann die beispielhafte Out-of-Order-Ausgabe-/Ausführungs-Kernarchitektur mit Registerumbenennung die Pipeline 700 wie folgt implementieren: 1) der Anweisungsabruf 738 führt die Abruf- und Längendecodierungsstufen 702 und 704 durch; 2) die Decodierungseinheit 740 führt die Decodierungsstufe 706 durch; 3) die Umbenennungs-/Zuordnungseinheit 752 führt die Zuordnungsstufe 708 und die Umbenennungsstufe 710 durch; 4) die Zeitplanungseinheit(en) 756 führt/führen die Zeitplanungsstufe 712 durch; 5) die physische Registerdateieinheit(en) 758 und die Speichereinheit 770 führen die Register-Lese-/Speicher-Lese-Stufe 714 durch; das Ausführungscluster 760 fuhrt die Ausführungsstufe 716 durch; 6) die Speichereinheit 770 und die physische Registerdateieinheit(en) 758 führen die Rückschreib-/Speicher-Schreib-Stufe 718 durch; 7) verschiedene Einheiten können an der Ausnahmehandhabungsstufe 722 beteiligt sein; und 8) die Ausscheideeinheit 754 und die physische(n) Registerdateieinheit(en) 758 führen die Festlegungsstufe 724 durch.
  • Der Kern 790 kann einen oder mehrere Anweisungssätze (z. B. den x86-Anweisungssatz) (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Anweisungssatz von MIPS Technologies aus Sunnyvale, CA; den ARM-Anweisungssatz (mit optionalen zusätzlichen Erweiterungen, wie beispielsweise NEON) von ARM Holdings aus Sunnyvale, CA), einschließlich der hierin beschriebenen Anweisung(en), unterstützen. In einer Ausführungsform umfasst der Kern 790 Logik zum Unterstützen einer gepackten Datenanweisungssatzerweiterung (z. B. SSE, AVX1, AVX2 usw.), wodurch gestattet wird, dass die von vielen Multimediaanwendungen verwendeten Operationen unter Verwendung von gepackten Daten durchgeführt werden.
  • Es sollte verstanden werden, dass der Kern Multithreading (Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann, und er kann dies in einer Vielzahl von Möglichkeiten tun, einschließlich Zeitscheiben-Multithreading, simultanes Multithreading (wobei ein einzelner physischer Kern einen logischen Kern für jeden der Threads, die der physische Kern gleichzeitig im Multithreading-Verfahren bearbeitet, bereitstellt) oder einer Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und danach gleichzeitiges Multithreading, wie beispielsweise bei der Intel® Hyperthreading-Technologie).
  • Während die Registerumbenennung im Kontext der Out-of-Order-Ausführung beschrieben wird, sollte verstanden werden, dass die Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Während die veranschaulichte Ausführungsform des Prozessors auch separate Anweisungs- und Datencache-Einheiten 734/774 und eine gemeinsam genutzte L2-Cache-Einheit 776 umfasst, können alternative Ausführungsformen einen einzelnen internen Cache für sowohl Anweisungen als auch Daten aufweisen, wie beispielsweise einen internen Level-1(L1)-Cache oder mehrere Ebenen von internem Cache. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache, welcher sich extern zum Kern und/oder Prozessor befindet, umfassen. Alternativ dazu kann sich der gesamte Cache extern zum Kern und/oder Prozessor befinden.
  • Spezifische beispielhafte In-Order-Kernarchitektur
  • 8A–B veranschaulichen ein Blockschaltbild einer spezifischeren beispielhaften In-Order-Kernarchitektur, wobei dieser Kern einer von mehreren logischen Blöcken (welche andere Kerne des gleichen Typs und/oder unterschiedlicher Typen umfassen) in einem Chip wäre. Die logischen Blöcke kommunizieren über ein Verbindungsnetz hoher Bandbreite (z. B. ein Ringnetz) mit einiger feststehender Funktionslogik, Speicher-E/A-Schnittstellen und anderer notwendiger E/A-Logik, in Abhängigkeit von der Anwendung.
  • 8A ist ein Blockschaltbild eines einzelnen Prozessorkerns zusammen mit seiner Verbindung zum On-Die-Verbindungsnetz 802 und mit seinem lokalen Subset des Level-2(L2)-Caches 804, gemäß einer Ausführungsform der Erfindung. In einer Ausführungsform unterstützt ein Anweisungsdecoder 800 den x86-Anweisungssatz mit einer gepackten Datenanweisungssatzerweiterung. Ein L1-Cache 806 ermöglicht Zugriffe mit niedriger Latenz auf Cache-Speicher in die skalaren und Vektoreinheiten. Während in einer Ausführungsform (zur Vereinfachung des Designs) eine skalare Einheit 808 und eine Vektoreinheit 810 separate Registersätze (entsprechend skalare Register 812 und Vektorregister 814) verwenden und zwischen ihnen übertragene Daten in Speicher geschrieben und dann aus einem Level-1(L1)-Cache 806 zurück eingelesen werden, können alternative Ausführungsformen der Erfindung einen unterschiedlichen Ansatz verwenden (z. B. einen einzelnen Registersatz verwenden oder einen Kommunikationspfad umfassen, der es ermöglicht, dass Daten zwischen den beiden Registerdateien übertragen werden, ohne dass sie geschrieben und zurückgelesen werden).
  • Das lokale Subset des L2-Caches 804 ist Teil eines globalen L2-Caches, welcher in separate lokale Subsets, eines pro Prozessorkern, aufgeteilt ist. Jeder Prozessorkern hat einen direkten Zugriffspfad auf sein eigenes lokales Subset des L2-Caches 804. Daten, welche durch einen Prozessorkern gelesen werden, werden in seinem L2-Cache-Subset 804 gespeichert, und es kann schnell auf sie zugegriffen werden, und zwar parallel zu anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Subsets zugreifen. Daten, die durch einen Prozessorkern geschrieben werden, werden in seinem eigenen L2-Cache-Subset 804 gespeichert und sie werden, falls nötig, von anderen Subsets gelöscht. Das Ringnetz stellt die Kohärenz für gemeinsam genutzte Daten sicher. Das Ringnetz ist bidirektional, um es Einheiten wie Prozessorkernen, L2-Caches und anderen logischen Blöcken zu gestatten, innerhalb des Chips miteinander zu kommunizieren.
  • 8B ist eine erweiterte Ansicht eines Teils des Prozessorkerns aus 8A gemäß Ausführungsformen der Erfindung. 8B umfasst einen L1-Datencache 806A, einen Teil des L1-Caches 804 sowie mehr Details in Bezug auf die Vektoreinheit 810 und die Vektorregister 814. Spezifisch ist die Vektoreinheit 810 eine 16 Bit breite Vektorverarbeitungseinheit (Vector Processing Unit, VPU) (siehe die 16 Bit breite ALU 828), welche eine oder mehrere von Ganzzahl-, Einzelpräzision-Gleitkomma- und Doppelpräzision-Gleitkomma-Anweisungen ausführt. Die VPU unterstützt das Umstellen der Registereingaben mit der Umstellungseinheit 820, die numerische Umwandlung mit den numerischen Umwandlungseinheiten 822A–B und die Replikation mit der Replikationseinheit 824 in der Speichereingabe. Die Schreibmaskenregister 826 ermöglichen es, das resultierende Vektorschreiben mit einem Prädikat zu versehen.
  • Prozessor mit integriertem Speichercontroller und integrierter Graphik
  • 9 ist ein Blockschaltbild eines Prozessors 900, welcher gemäß Ausführungsformen der Erfindung mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und integrierte Graphik aufweisen kann. Die Kästchen mit durchgezogenen Linien in 9 veranschaulichen einen Prozessor 900 mit einem einzelnen Kern 902A, einem Systemagenten 910, einem Satz von einer oder mehreren Bus-Controller-Einheiten 916, während die optionale Hinzufügung der Kästchen mit gestrichelten Linien einen alternativen Prozessor 900 mit mehreren Kernen 902A–N, einem Satz von einer oder mehreren integrierten Speichercontrollereinheit(en) 914 in der Systemagenteinheit 910 und Speziallogik 908 veranschaulicht.
  • Somit können unterschiedliche Implementierungen des Prozessors 900 Folgendes umfassen: 1) eine CPU mit der Speziallogik 908, bei welcher es sich um integrierte Graphik und/oder wissenschaftliche(Durchsatz-)Logik handelt (welche einen oder mehrere Kerne umfassen kann), und die Kerne 902A–N, bei welchen es sich um einen oder mehrere Allzweckkerne handelt (z. B. Allzweck-In-Order-Kerne, Allzweck-Out-of-Order-Kerne, eine Kombination der beiden); 2) einen Coprozessor mit den Kernen 902A–N, bei welchen es sich um eine große Anzahl von Spezialkernen handelt, die primär für Graphik und/oder wissenschaftliche (Durchsatz-)Logik beabsichtigt sind; und 3) einen Coprozessor mit den Kernen 902A–N, bei welchen es sich um eine große Anzahl von Allzweck-In-Order-Kernen handelt. Somit kann der Prozessor 900 ein Allzweckprozessor, Coprozessor oder Spezialprozessor sein, wie beispielsweise ein Netz- oder Kommunikationsprozessor, eine Komprimierungsmaschine, ein Graphikprozessor, eine Allzweck-Graphikverarbeitungseinheit (General Purpose Graphics Processing Unit, GPGPU), ein Coprozessor mit hohem Durchsatz und vielen integrierten Kernen (Many Integrated Cores, MIC) (der 30 oder mehr Kerne umfasst), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 900 kann ein Teil von einem oder mehreren Substraten und/oder auf einem oder mehreren Substraten implementiert sein, und zwar unter Verwendung jeder einer Reihe von Prozesstechnologien, wie beispielsweise BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst ein oder mehrere Cache-Level innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinsam genutzte Cache-Einheiten 906 und externen Speicher (nicht gezeigt) gekoppelt mit dem Satz integrierter Speichercontrollereinheiten 914. Der Satz gemeinsam genutzter Cache-Einheiten 906 kann einen oder mehrere Caches des mittleren Levels, wie Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Level, einen Cache des letzten Levels (Last Level Cache, LLC) und/oder Kombinationen davon umfassen. Während in einer Ausführungsform eine ringbasierte Verbindungseinheit 912 die integrierte Graphiklogik 908, den Satz gemeinsam genutzter Cache-Einheiten 906 und die Systemagenteinheit 910/die integrierte(n) Speichercontrollereinheit(en) 914 verbindet, können alternative Ausführungsformen eine beliebige Anzahl von gut bekannten Techniken zum Verbinden derartiger Einheiten verwenden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 906 und den Kernen 902A–N aufrechterhalten.
  • In einigen Ausführungsformen ist/sind einer oder mehrere der Kerne 902A–N zum Multithreading in der Lage. Der Systemagent 910 umfasst diejenigen Komponenten, welche die Kerne 902A–N koordinieren und betreiben. Die Systemagenteinheit 910 kann beispielsweise eine Leistungssteuerungseinheit (Power Control Unit, PCU) und eine Anzeigeeinheit umfassen. Die PCU kann Logik und Komponenten darstellen oder diese beinhalten, welche zum Regulieren des Leistungszustands der Kerne 902A–N und der integrierten Graphiklogik 908 benötigt werden. Die Anzeigeeinheit dient der Ansteuerung von einer oder mehreren extern angeschlossenen Anzeigen.
  • Die Kerne 902A–N können in Bezug auf den Architekturanweisungssatz homogen oder heterogen sein; d. h. zwei oder mehr der Kerne 902A–N können zur Ausführung des gleichen Anweisungssatzes in der Lage sein, während andere nur zur Ausführung eines Subsets dieses Anweisungssatzes oder eines unterschiedlichen Anweisungssatzes in der Lage sein können.
  • Beispielhafte Computerarchitekturen
  • 1013 sind Blockschaltbilder beispielhafter Computerarchitekturen. Andere Systemdesigns und Konfigurationen für Laptops, Desktops, Handheld-PCs, PDAs, Engineering-Arbeitsstationen, Server, Netzvorrichtungen, Netz-Hubs, Schalter, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Graphikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Mediaplayer, Handheld-Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind in der Technik bekannt und sind auch geeignet. Im Allgemeinen ist eine riesige Vielzahl an Systemen oder elektronischen Vorrichtungen, welche in der Lage sind, einen Prozessor und/oder andere Ausführungslogik, wie hierin offenbart, einzuschließen, allgemein geeignet.
  • Bezug nehmend nun auf 10 ist ein Blockschaltbild eines Systems 1000 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1000 kann einen oder mehrere Prozessoren 1010, 1015 umfassen, welche mit einem Controller-Hub 1020 gekoppelt sind. In einer Ausführungsform umfasst der Controller-Hub 1020 einen Graphikspeicher-Controller-Hub (Graphics Memory Controller Hub, GMCH) 1090 und einen Eingabe/Ausgabe-Hub (Input/Output Hub, IOH) 1050 (welche sich auf separaten Chips befinden können); der GMCH 1090 umfasst Speicher- und Graphikcontroller, mit welchen der Speicher 1040 und ein Coprozessor 1045 gekoppelt sind; der IOH 1050 koppelt Eingabe/Ausgabe(E/A)-Vorrichtungen 1060 mit dem GMCH 1090. Alternativ ist/sind einer oder beide der Speicher- und Graphikcontroller im Prozessor integriert (wie hierin beschrieben), der Speicher 1040 und der Coprozessor 1045 sind direkt mit dem Prozessor 1010 gekoppelt, und der Controller-Hub 1020 befindet sich in einem einzelnen Chip mit dem IOH 1050.
  • Die optionale Natur zusätzlicher Prozessoren 1015 ist in 10 mit unterbrochenen Linien dargestellt. Jeder Prozessor 1010, 1015 kann einen oder mehrere der hierin beschriebenen Prozessorkerne umfassen und kann eine Version des Prozessors 900 sein.
  • Der Speicher 1040 kann beispielsweise dynamischer Zufallszugriffsspeicher (Dynamic Random Access Memory, DRAM), Phasenwechselspeicher (Phase Change Memory, PCM) oder eine Kombination der beiden sein. Bei wenigstens einer Ausführungsform kommuniziert der Controller-Hub 1020 mit dem/den Prozessor(en) 1010, 1015 über einen Multi-Drop-Bus, wie beispielsweise ein Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie beispielsweise QuickPath Interconnect (QPI), oder eine ähnliche Verbindung 1095.
  • In einer Ausführungsform ist der Coprozessor 1045 ein Spezialprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Komprimierungsmaschine, ein Graphikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Hub 1020 einen integrierten Graphikbeschleuniger umfassen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physischen Ressourcen 1010, 1015 in Bezug auf ein Spektrum von Leistungsmetriken geben, einschließlich architektonischer, mikroarchitektonischer, thermischer und Stromverbrauchseigenschaften und dergleichen.
  • In einer Ausführungsform führt der Prozessor 1010 Anweisungen aus, welche Datenverarbeitungsoperationen eines allgemeinen Typs steuern. In die Anweisungen können Coprozessoranweisungen eingebettet sein. Der Prozessor 1010 erkennt diese Coprozessoranweisungen als einen Typ, welcher durch den angeschlossenen Coprozessor 1045 ausgeführt werden sollte. Dementsprechend gibt der Prozessor 1010 diese Coprozessoranweisungen (oder Steuersignale, welche Coprozessoranweisungen repräsentieren) auf einem Coprozessor-Bus oder einer anderen Verbindung an den Coprozessor 1045 aus. Der/die Coprozessor(en) 1045 akzeptiert/akzeptieren die empfangenen Coprozessoranweisungen und führt/führen diese aus.
  • Bezug nehmend nun auf 11 ist ein Blockschaltbild eines ersten spezifischeren beispielhaften Systems 1100 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 11 gezeigt, ist das Multiprozessorsystem 1100 ein Punkt-zu-Punkt-Verbindungssystem, und es umfasst einen ersten Prozessor 1170 und einen zweiten Prozessor 1180 gekoppelt über eine Punkt-zu-Punkt-Verbindung 1150. Jeder der Prozessoren 1170 und 1180 kann eine Version des Prozessors 900 sein. In einer Ausführungsform der Erfindung sind die Prozessoren 1170 und 1180 entsprechend die Prozessoren 1010 und 1015, während der Coprozessor 1138 der Coprozessor 1045 ist. In einer weiteren Ausführungsform sind die Prozessoren 1170 und 1180 entsprechend der Prozessor 1010 und der Coprozessor 1045.
  • Die Prozessoren 1170 und 1180 sind einschließlich der integrierten Speichercontroller(Integrated Memory Controller, IMC)-Einheiten 1172 bzw. 1182 gezeigt. Der Prozessor 1170 umfasst als Teil seiner Bus-Controller-Einheiten auch die Punkt-zu-Punkt(P-P)-Schnittstellen 1176 und 1178; ähnlich umfasst der zweite Prozessor 1180 die P-P-Schnittstellen 1186 und 1188. Die Prozessoren 1170, 1180 können über eine Punkt-zu-Punkt(P-P)-Schnittstelle 1150 unter Verwendung der P-P-Schnittstellenschaltungen 1178, 1188 Informationen austauschen. Wie in 11 gezeigt, koppeln die IMCs 1172 und 1182 die Prozessoren mit entsprechenden Speichern, nämlich einem Speicher 1132 und einem Speicher 1134, bei welchen es sich um Abschnitte des Hauptspeichers lokal angeschlossen an die entsprechenden Prozessoren handeln kann.
  • Die Prozessoren 1170, 1180 können jeweils über die einzelnen P-P-Schnittstellen 1152, 1154 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1176, 1194, 1186, 1198 Informationen mit einem Chipsatz 1190 austauschen. Der Chipsatz 1190 kann wahlweise über eine Hochleistungsschnittstelle 1139 Informationen mit dem Coprozessor 1138 austauschen. In einer Ausführungsform ist der Coprozessor 1138 ein Spezialprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Komprimierungsmaschine, ein Graphikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in jedem der Prozessoren enthalten sein oder sich außerhalb beider Prozessoren befinden, ist jedoch über eine P-P-Verbindung mit den Prozessoren verbunden, derart, dass die lokalen Cache-Informationen von einem der oder beiden Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, falls ein Prozessor in einen niedrigen Leistungsmodus geschaltet wird.
  • Der Chipsatz 1190 kann über eine Schnittstelle 1196 mit einem ersten Bus 1116 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1116 ein peripherer Komponentenverbindungs(Peripheral Component Interconnect, PCI)-Bus oder ein Bus, wie z. B. ein PCI Express-Bus oder ein anderer E/A-Verbindungsbus der dritten Generation, sein, obwohl der Schutzbereich der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie in 11 gezeigt, können verschiedene E/A-Vorrichtungen 1114 mit dem ersten Bus 1116 gekoppelt sein, zusammen mit einer Bus-Brücke 1118, welche den ersten Bus 1116 mit einem zweiten Bus 1120 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche(r) Prozessor(en) 1115, wie beispielsweise Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie beispielsweise Graphikbeschleuniger oder Digitalsignalverarbeitungs(Digital Signal Processing, DSP)-Einheiten), feldprogrammierbare Gate-Arrays oder ein beliebiger anderer Prozessor, mit dem ersten Bus 1116 gekoppelt. In einer Ausführungsform kann der zweite Bus 1120 ein Bus mit geringer Anschlusszahl (Low Pin Count, LPC) sein. In einer Ausführungsform können verschiedene Vorrichtungen mit einem zweiten Bus 1120 gekoppelt sein, einschließlich beispielsweise einer Tastatur und/oder Maus 1122, der Kommunikationsvorrichtungen 1127 und einer Speichereinheit 1128, wie beispielsweise ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, welche Anweisungen/Code und Daten 1130 umfassen kann. Ferner kann ein Audio-E/A 1124 mit dem zweiten Bus 1120 gekoppelt sein. Es sei darauf hingewiesen, dass auch andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur aus 11 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Bezug nehmend nun auf 12 ist ein Blockschaltbild eines zweiten spezifischeren beispielhaften Systems 1200 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 11 und 12 tragen die gleichen Bezugsziffern, und bestimmte Aspekte aus 11 wurden in 12 weggelassen, um eine Beeinträchtigung anderer Aspekte aus 12 zu vermeiden.
  • 12 veranschaulicht, dass die Prozessoren 1170, 1180 den integrierten Speicher und die E/A-Steuerlogik (Control Logic, CL) 1172 bzw. 1182 umfassen können. Somit umfassen die CLs 1172, 1182 integrierte Speichercontrollereinheiten und E/A-Steuerlogik. 12 veranschaulicht, dass nicht nur die Speicher 1132, 1134 mit der CL 1172, 1182 gekoppelt sind, sondern dass auch die E/A-Vorrichtungen 1214 mit der Steuerlogik 1172, 1182 gekoppelt sind. Legacy-E/A-Vorrichtungen 1215 sind mit dem Chipsatz 1190 gekoppelt.
  • Bezug nehmend nun auf 13 ist ein Blockschaltbild eines SoC 1300 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 9 tragen gleiche Bezugsziffern. Außerdem sind Kästchen mit gestrichelten Linien optionale Merkmale auf fortschrittlicheren SoCs. In 13 ist/sind eine/die Verbindungseinheit(en) 1302 gekoppelt mit: einem Anwendungsprozessor 1310, welcher einen Satz von einem oder mehreren Kernen 902A–N und eine/die gemeinsam genutzte(n) Cache-Einheit(en) 906 umfasst; einer Systemagenteinheit 910; einer/den Buscontroller-Einheit(en) 916; einer/den integrierten Speichercontrollereinheit(en) 914; einem Satz von einem oder mehreren Coprozessoren 1320, welche integrierte Graphiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen können; einer statischen Zufallszugriffsspeicher(Static Random Access Memory, SRAM)-Einheit 1330; einer Direktspeicherzugriff(Direct Memory Access, DMA)-Einheit 1332; und einer Anzeigeeinheit 1340 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst/umfassen der/die Coprozessor(en) 1320 einen Spezialprozessor, wie beispielsweise einen Netz- oder Kommunikationsprozessor, eine Komprimierungsmaschine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination derartiger Implementierungsansätze implementiert sein. Die Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode, die auf programmierbaren Systemen ausgeführt werden, welche wenigstens einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nicht-flüchtiger Arbeitsspeicher- und/oder Datenspeicherelemente), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung umfassen, implementiert sein.
  • Programmcode, wie beispielsweise der Code 1130, welcher in 11 veranschaulicht ist, kann auf Eingabeanweisungen angewandt werden, um die hierin beschriebenen Funktionen durchzuführen und Ausgabeinformation zu erzeugen. Die Ausgabeinformationen können in bekannter Art und Weise auf eine oder mehrere Ausgabevorrichtungen angewandt werden. Zum Zweck dieser Anmeldung umfasst ein Verarbeitungssystem jedes System, welches einen Prozessor aufweist, wie beispielsweise einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer prozeduralen oder objektorientierten höheren Programmiersprache zum Kommunizieren mit einem Verarbeitungssystem implementiert sein. Der Programmcode kann auch, falls gewünscht, in Assembler- oder Maschinensprache implementiert sein. Tatsächlich sind die hierin beschriebenen Mechanismen in ihrem Umfang nicht auf eine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte wenigstens einer Ausführungsform können durch repräsentative Anweisungen implementiert sein, welche auf einem maschinenlesbaren Medium gespeichert sind, welches verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie durch die Maschine gelesen wird, die Maschine veranlasst, Logik zum Durchführen der hierin beschriebenen Techniken zu erzeugen. Derartige Repräsentationen, bekannt als „IP-Kerne”, können auf einem greifbaren, maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Herstellungsmaschinen zu laden, welche letztendlich die Logik oder den Prozessor erzeugen.
  • Zu derartigen maschinenlesbaren Speichermedien können, ohne Einschränkung, nicht-transitorische, greifbare Anordnungen von Artikeln hergestellt oder geformt durch eine Maschine oder Vorrichtung zählen, einschließlich Speichermedien, wie z. B. Festplatten, jede andere Art von Platte, einschließlich Disketten, optischer Platten, CD-ROMs, CD-RWs und magneto-optischer Platten, Halbleitervorrichtungen, wie z. B. Nur-Lese-Speicher (ROMs), Zufallszugriffspeicher (RAMs), wie z. B. dynamische Zufallszugriffspeicher (DRAMs), statische Zufallszugriffspeicher (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs), Phasenwechselspeicher (PCM), magnetische oder optische Karten oder jede andere Art von Medium, die zum Speichern elektronischer Anweisungen geeignet ist.
  • Dementsprechend umfassen die Ausführungsformen der Erfindung auch nicht-transitorische, greifbare maschinenlesbare Medien, welche Anweisungen oder Designdaten umfassen, wie z. B. Hardwarebeschreibungssprache (Hardware Description Language, HDL), welche die hierin beschriebenen Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert. Derartige Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Während bestimmte beispielhafte Ausführungsformen beschrieben und in den beigefügten Zeichnungen gezeigt wurden, soll verstanden werden, dass derartige Ausführungsformen lediglich veranschaulichend sind und die breite Erfindung nicht einschränken und dass diese Erfindung nicht auf die speziellen gezeigten und beschriebenen Konstruktionen und Anordnungen begrenzt ist, da Durchschnittsfachleuten auf dem Gebiet bei der Studie dieser Offenbarung verschiedene andere Modifikationen offensichtlich sein dürften. In einem Bereich der Technologie wie diesem, in welchem das Wachstum schnell ist und sich weitere Fortschritte nicht leicht vorhersagen lassen, können die offenbarten Ausführungsformen leicht in ihrer Anordnung und in Details modifizierbar sein, wie dies durch entsprechende technologische Fortschritte ermöglicht wird, ohne sich von den Grundsätzen der vorliegenden Offenbarung oder dem Schutzbereich der beigefügten Ansprüche zu entfernen.

Claims (21)

  1. Vorrichtung, umfassend: eine Mehrzahl von Vektorregistern, welche ein erstes Vektorregister und ein zweites Vektorregister umfassen; und Ausführungsschaltungen, welche mit der Mehrzahl von Vektorregistern gekoppelt sind, wobei die Ausführungsschaltungen betreibbar sind zum: Empfangen einer ersten Anweisung, um drahtlose SNOW 3G-Sicherheitsoperationen durchzuführen; Empfangen eines ersten Operanden der ersten Anweisung, welcher das erste Vektorregister spezifiziert, das einen aktuellen Zustand einer finiten Zustandsmaschine (Finite State Machine, FSM) speichert; Empfangen eines zweiten Operanden der ersten Anweisung, welcher das zweite Vektorregister spezifiziert, das Datenelemente eines Linearrückkopplungsschieberegisters (Linear Feedback Shift Register, LFSR) speichert, die zum Aktualisieren der FSM erforderlich sind; und Ausführen der ersten Anweisung, um einen aktualisierten Zustand der FSM und eine Ausgabe der FSM in einem Zieloperanden der ersten Anweisung zu erzeugen.
  2. Vorrichtung nach Anspruch 1, wobei die Mehrzahl von Vektorregistern ein drittes Vektorregister umfasst, wobei die Ausführungsschaltungen betreibbar sind zum: Empfangen einer zweiten Anweisung, um eine Aktualisierung des LFSR durchzuführen; Empfangen eines ersten Operanden der zweiten Anweisung, welcher das zweite Vektorregister spezifiziert; Empfangen eines zweiten Operanden der zweiten Anweisung, welcher das dritte Vektorregister spezifiziert, das die Hälfte der Datenelemente im LFSR speichert, die nicht im zweiten Vektorregister enthalten sind; und Ausführen der zweiten Anweisung, um ein aktualisiertes linkestes Datenelement des LFSR und einen ersten Satz von verschobenen Datenelementen des LFSR in einem Zieloperanden der zweiten Anweisung zu erzeugen.
  3. Vorrichtung nach Anspruch 2, wobei die Ausführungsschaltungen betreibbar sind zum: Empfangen einer dritten Anweisung, um die Aktualisierung des LFSR durchzuführen; Empfangen eines ersten Operanden der dritten Anweisung, welcher das zweite Vektorregister spezifiziert; Empfangen eines zweiten Operanden der dritten Anweisung, welcher das dritte Vektorregister spezifiziert; und Ausführen der dritten Anweisung, um einen zweiten Satz von verschobenen Datenelementen des LFSR in einem Zieloperanden der dritten Anweisung zu erzeugen.
  4. Vorrichtung nach Anspruch 3, wobei die Ausführungsschaltungen betreibbar sind zum: Ausführen der ersten Anweisung, der zweiten Anweisung und der dritten Anweisung in einer ersten Aktualisierungsphase, welche einen ersten Satz von Quelloperanden verwendet; Ausführen der ersten Anweisung, der zweiten Anweisung und der dritten Anweisung in einer zweiten Aktualisierungsphase, welche einen zweiten Satz von Quelloperanden verwendet; und Wiederholen der ersten Aktualisierungsphase und der zweiten Aktualisierungsphase in einer Schleife, um die FSM und das LFSR zu aktualisieren.
  5. Vorrichtung nach Anspruch 1, wobei die erste Anweisung eine Single Instruction Multiple Data(SIMD)-Anweisung ist, welche drei FSM-Zustandsregister aktualisiert und die Ausgabe der FSM parallel erzeugt.
  6. Vorrichtung nach Anspruch 1, wobei die Ausführungsschaltungen betreibbar sind, um die drei FSM-Zustandsregister mittels Durchführen von acht Tabellen-Lookups parallel zu aktualisieren.
  7. Vorrichtung nach Anspruch 1, wobei die Ausführungsschaltungen betreibbar sind, um die erste Anweisung in einer SIMD-Pipeline auszuführen.
  8. Verfahren, umfassend: Empfangen einer ersten Anweisung von Ausführungsschaltungen, um drahtlose SNOW 3G-Sicherheitsoperationen durchzuführen; Empfangen eines ersten Operanden der ersten Anweisung, welcher ein erstes Vektorregister spezifiziert, das einen aktuellen Zustand einer finiten Zustandsmaschine (Finite State Machine, FSM) speichert; Empfangen eines zweiten Operanden der ersten Anweisung, welcher ein zweites Vektorregister spezifiziert, das Datenelemente eines Linearrückkopplungsschieberegisters (Linear Feedback Shift Register, LFSR) speichert, die zum Aktualisieren der FSM erforderlich sind; und Ausführen der ersten Anweisung, um einen aktualisierten Zustand der FSM und eine Ausgabe der FSM in einem Zieloperanden der ersten Anweisung zu erzeugen.
  9. Verfahren nach Anspruch 8, ferner umfassend: Empfangen einer zweiten Anweisung, um eine Aktualisierung des LFSR durchzuführen; Empfangen eines ersten Operanden der zweiten Anweisung, welcher das zweite Vektorregister spezifiziert; Empfangen eines zweiten Operanden der zweiten Anweisung, welcher das dritte Vektorregister spezifiziert, das die Hälfte der Datenelemente im LFSR speichert, die nicht im zweiten Vektorregister enthalten sind; und Ausführen der zweiten Anweisung, um ein aktualisiertes linkestes Datenelement des LFSR und einen ersten Satz von verschobenen Datenelementen des LFSR in einem Zieloperanden der zweiten Anweisung zu erzeugen.
  10. Verfahren nach Anspruch 9, ferner umfassend: Empfangen einer dritten Anweisung, um die Aktualisierung des LFSR durchzuführen; Empfangen eines ersten Operanden der dritten Anweisung, welcher das zweite Vektorregister spezifiziert; Empfangen eines zweiten Operanden der dritten Anweisung, welcher das dritte Vektorregister spezifiziert; und Ausführen der dritten Anweisung, um einen zweiten Satz von verschobenen Datenelementen des LFSR in einem Zieloperanden der dritten Anweisung zu erzeugen.
  11. Verfahren nach Anspruch 10, ferner umfassend: Ausführen der ersten Anweisung, der zweiten Anweisung und der dritten Anweisung in einer ersten Aktualisierungsphase, welche einen ersten Satz von Quelloperanden verwendet; Ausführen der ersten Anweisung, der zweiten Anweisung und der dritten Anweisung in einer zweiten Aktualisierungsphase, welche einen zweiten Satz von Quelloperanden verwendet; und Wiederholen der ersten Aktualisierungsphase und der zweiten Aktualisierungsphase in einer Schleife, um die FSM und das LFSR zu aktualisieren.
  12. Verfahren nach Anspruch 8, wobei die erste Anweisung eine Single Instruction Multiple Data(SIMD)-Anweisung ist, welche drei FSM-Zustandsregister aktualisiert und die Ausgabe der FSM parallel erzeugt.
  13. Verfahren nach Anspruch 12, ferner umfassend: Aktualisieren der drei FSM-Zustandsregister mittels Durchführen von acht Tabellen-Lookups parallel.
  14. Verfahren nach Anspruch 8, ferner umfassend: Ausführen der ersten Anweisung in einer SIMD-Pipeline.
  15. Verfahren nach Anspruch 8, wobei die drahtlosen SNOW 3G-Sicherheitsoperationen in einem von zwei Modi ausgeführt werden, welche einen Initialisierungsmodus und einen Schlüsselstrommodus umfassen.
  16. System, umfassend: Speicher; und einen Prozessor, welcher mit dem Speicher gekoppelt ist, der Prozessor umfassend: eine Mehrzahl von Vektorregistern, welche ein erstes Vektorregister und ein zweites Vektorregister umfassen; und Ausführungsschaltungen, welche mit der Mehrzahl von Vektorregistern gekoppelt sind, wobei die Ausführungsschaltungen betreibbar sind zum: Empfangen einer ersten Anweisung, um drahtlose SNOW 3G-Sicherheitsoperationen durchzuführen; Empfangen eines ersten Operanden der ersten Anweisung, welcher das erste Vektorregister spezifiziert, das einen aktuellen Zustand einer finiten Zustandsmaschine (Finite State Machine, FSM) speichert; Empfangen eines zweiten Operanden der ersten Anweisung, welcher das zweite Vektorregister spezifiziert, das Datenelemente eines Linearrückkopplungsschieberegisters (Linear Feedback Shift Register, LFSR) speichert, die zum Aktualisieren der FSM erforderlich sind; und Ausführen der ersten Anweisung, um einen aktualisierten Zustand der FSM und eine Ausgabe der FSM in einem Zieloperanden der ersten Anweisung zu erzeugen.
  17. System nach Anspruch 16, wobei die Mehrzahl von Vektorregistern ein drittes Vektorregister umfasst, wobei die Ausführungsschaltungen betreibbar sind zum: Empfangen einer zweiten Anweisung, um eine Aktualisierung des LFSR durchzuführen; Empfangen eines ersten Operanden der zweiten Anweisung, welcher das zweite Vektorregister spezifiziert; Empfangen eines zweiten Operanden der zweiten Anweisung, welcher das dritte Vektorregister spezifiziert, das die Hälfte der Datenelemente im LFSR speichert, die nicht im zweiten Vektorregister enthalten sind; und Ausführen der zweiten Anweisung, um ein aktualisiertes linkestes Datenelement des LFSR und einen ersten Satz von verschobenen Datenelementen des LFSR in einem Zieloperanden der zweiten Anweisung zu erzeugen.
  18. System nach Anspruch 17, wobei die Ausführungsschaltungen betreibbar sind zum: Empfangen einer dritten Anweisung, um die Aktualisierung des LFSR durchzuführen; Empfangen eines ersten Operanden der dritten Anweisung, welcher das zweite Vektorregister spezifiziert; Empfangen eines zweiten Operanden der dritten Anweisung, welcher das dritte Vektorregister spezifiziert; und Ausführen der dritten Anweisung, um einen zweiten Satz von verschobenen Datenelementen des LFSR in einem Zieloperanden der dritten Anweisung zu erzeugen.
  19. System nach Anspruch 18, wobei die Ausführungsschaltungen betreibbar sind zum: Ausführen der ersten Anweisung, der zweiten Anweisung und der dritten Anweisung in einer ersten Aktualisierungsphase, welche einen ersten Satz von Quelloperanden verwendet; Ausführen der ersten Anweisung, der zweiten Anweisung und der dritten Anweisung in einer zweiten Aktualisierungsphase, welche einen zweiten Satz von Quelloperanden verwendet; und Wiederholen der ersten Aktualisierungsphase und der zweiten Aktualisierungsphase in einer Schleife, um die FSM und das LFSR zu aktualisieren.
  20. System nach Anspruch 16, wobei die erste Anweisung eine Single Instruction Multiple Data(SIMD)-Anweisung ist, welche drei FSM-Zustandsregister aktualisiert und die Ausgabe der FSM parallel erzeugt.
  21. System nach Anspruch 20, wobei die Ausführungsschaltungen betreibbar sind, um die drei FSM-Zustandsregister mittels Durchführen von acht Tabellen-Lookups parallel zu aktualisieren.
DE112013005239.3T 2012-12-28 2013-06-13 Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus Expired - Fee Related DE112013005239B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/730,216 US9419792B2 (en) 2012-12-28 2012-12-28 Instruction for accelerating SNOW 3G wireless security algorithm
US13/730,216 2012-12-28
PCT/US2013/045695 WO2014105123A1 (en) 2012-12-28 2013-06-13 Instruction for accelerating snow 3g wireless security algorithm

Publications (2)

Publication Number Publication Date
DE112013005239T5 true DE112013005239T5 (de) 2015-10-01
DE112013005239B4 DE112013005239B4 (de) 2021-02-11

Family

ID=51018672

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013005239.3T Expired - Fee Related DE112013005239B4 (de) 2012-12-28 2013-06-13 Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus

Country Status (5)

Country Link
US (2) US9419792B2 (de)
KR (2) KR101970597B1 (de)
CN (2) CN104982051B (de)
DE (1) DE112013005239B4 (de)
WO (1) WO2014105123A1 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9490971B2 (en) 2012-12-28 2016-11-08 Intel Corporation Instruction for fast ZUC algorithm processing
US9419792B2 (en) * 2012-12-28 2016-08-16 Intel Corporation Instruction for accelerating SNOW 3G wireless security algorithm
US20150169543A1 (en) * 2013-12-12 2015-06-18 Brno University of Technology Method and an apparaus for instruction set translation using finite state automata
US11062303B2 (en) 2015-06-08 2021-07-13 Blockstream Corporation Cryptographically concealing amounts transacted on a ledger while preserving a network's ability to verify the transaction
US9916159B2 (en) * 2016-01-14 2018-03-13 International Business Machines Corporation Programmable linear feedback shift register
US11269643B2 (en) * 2017-04-09 2022-03-08 Intel Corporation Data operations and finite state machine for machine learning via bypass of computational tasks based on frequently-used data values
CN107833176A (zh) 2017-10-30 2018-03-23 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
US10797859B2 (en) * 2018-03-22 2020-10-06 Arm Limited Low area optimization for NB-IoT applications
US20210133854A1 (en) 2018-09-13 2021-05-06 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device
US11695542B2 (en) * 2019-02-28 2023-07-04 Intel Corporation Technology for generating a keystream while combatting side-channel attacks
CN112019322B (zh) * 2019-05-30 2022-03-25 华为技术有限公司 密码流生成方法及其装置
WO2021201780A1 (en) * 2020-03-31 2021-10-07 Agency For Science, Technology And Research Method and system for white-box implementation of a stream cipher
CN115834028A (zh) * 2021-09-18 2023-03-21 Oppo广东移动通信有限公司 芯片及消息认证码的生成方法
CN114039719A (zh) * 2021-11-05 2022-02-11 南京大学 一种应用于5g系统的snow-v算法加速器及其加速方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704361B2 (en) * 1998-05-18 2004-03-09 Sony Corporation Variable length decoder for decoding digitally encoded video signals
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US20070088772A1 (en) * 2005-10-17 2007-04-19 Freescale Semiconductor, Inc. Fast rotator with embedded masking and method therefor
CN102006586B (zh) * 2010-11-30 2013-01-09 上海交通大学 无线Mesh网络入侵检测系统及其检测方法
KR101207000B1 (ko) * 2011-01-26 2012-11-30 경희대학교 산학협력단 보안 데이터 송신장치와 그 방법 및 다중채널 무선통신 시스템
CN102647711B (zh) * 2011-02-17 2015-10-21 中兴通讯股份有限公司 一种数据加密系统及方法
US20120216020A1 (en) * 2011-02-21 2012-08-23 Olson Christopher H Instruction support for performing stream cipher
CN102724041B (zh) * 2012-06-07 2014-12-24 北京航空航天大学 一种基于隐写术的密钥传输与密钥更新方法
US9379887B2 (en) 2012-09-14 2016-06-28 Qualcomm Incorporated Efficient cryptographic key stream generation using optimized S-box configurations
US9588766B2 (en) 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
US9490971B2 (en) * 2012-12-28 2016-11-08 Intel Corporation Instruction for fast ZUC algorithm processing
US9419792B2 (en) * 2012-12-28 2016-08-16 Intel Corporation Instruction for accelerating SNOW 3G wireless security algorithm

Also Published As

Publication number Publication date
KR20150100635A (ko) 2015-09-02
CN104982051A (zh) 2015-10-14
KR101970597B1 (ko) 2019-04-19
DE112013005239B4 (de) 2021-02-11
US20170048699A1 (en) 2017-02-16
CN109348478A (zh) 2019-02-15
CN104982051B (zh) 2018-11-27
US20140189289A1 (en) 2014-07-03
US9419792B2 (en) 2016-08-16
WO2014105123A1 (en) 2014-07-03
KR101672358B1 (ko) 2016-11-03
KR20160129912A (ko) 2016-11-09
US9900770B2 (en) 2018-02-20

Similar Documents

Publication Publication Date Title
DE112013005239B4 (de) Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus
DE102015007571B4 (de) Keine-lokalität-hinweis-vektor-speicherzugriff-prozessoren, -verfahren, -systeme und -befehle
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE102015008012A1 (de) SM4-Beschleunigungsprozessoren, Verfahren, Systeme und Anweisungen
DE102015002215A1 (de) Sortierbeschleunigungsprozessor, -Verfahren, -Systeme und -Befehle
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE112014006508T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden
DE112011105666T5 (de) Befehl und Logik zum Bereitstellen von Vektor-Lade-OP/Speicher-OP mit Schritt-Funktionalität
DE102015002254A1 (de) Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen
DE112013004770T5 (de) Lese- und -Schreibmaskenaktualisierungsbefehl zur Vektorisierung rekursiver Berechnungen über unabhängige Daten
DE102019109845A1 (de) Vereinheitlichte Beschleunigung eines Blockgeheimcodes eines symmetrischen Schlüssels für AES-SMS4-Camellia
DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE112013005428T5 (de) Befehle, Prozessoren, Verfahren und Systeme zum Verarbeiten sicherer Hash-Algorithmen
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102019100009A1 (de) Vereinheitlichter Hardwarebeschleuniger für Verschlüsselungssysteme mit symmetrischen Schlüsseln
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee