DE112016004364T5 - Sms4-beschleunigungsprozessoren mit rundenkonstantenerstellung - Google Patents

Sms4-beschleunigungsprozessoren mit rundenkonstantenerstellung Download PDF

Info

Publication number
DE112016004364T5
DE112016004364T5 DE112016004364.3T DE112016004364T DE112016004364T5 DE 112016004364 T5 DE112016004364 T5 DE 112016004364T5 DE 112016004364 T DE112016004364 T DE 112016004364T DE 112016004364 T5 DE112016004364 T5 DE 112016004364T5
Authority
DE
Germany
Prior art keywords
bits
variable bits
bit sequence
output bit
variable
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.)
Ceased
Application number
DE112016004364.3T
Other languages
English (en)
Inventor
Sudhir K. Satpathy
Sanu K. Mathew
Kirk S. Yap
Vinodh Gopal
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 DE112016004364T5 publication Critical patent/DE112016004364T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Abstract

Ein Verarbeitungssystem enthält einen Speicher und Verarbeitungslogik, die betriebsfähig an den Speicher gekoppelt ist. Die Verarbeitungslogik identifiziert ein oder mehr Konstantenbits einer Ausgabebitsequenz. Die Verarbeitungslogik erstellt mehrere Variablenbits der Ausgabebitsequenz. Die Verarbeitungslogik erzeugt die Ausgabebitfrequenz, die die identifizierten Konstantenbits und die erstellten mehreren Variablenbits enthält.

Description

  • TECHNISCHES GEBIET
  • Die Ausführungsformen der Offenbarung betrifft im Allgemeinen ein Rechengerät, und betreffen insbesondere SMS4-Beschleunigungsprozessoren mit Rundenkonstantenerstellung zum Vorsehen einer optimalen Bereichskonfiguration in Prozessoren, während sie direkte Schlüsselerweiterung zur Schlüsselerstellung ermöglichen.
  • ALLGEMEINER STAND DER TECHNIK
  • Kryptologie ist eine Technologie, die häufig zum Schützen von vertraulicher oder geheimer Information in Computersystemen und anderen elektronischen Geräten benutzt wird. Kryptologie beinhaltet im Allgemeinen die Benutzung eines kryptografischen Algorithmus und eines kryptografischen Schlüssels zum Schützen der Information. Beispielsweise kann Verschlüsselung (bisweilen als Chiffre bezeichnet) ausgeführt werden, wobei eine Reihe von Transformationen oder Operationen, wie sie durch den kryptografischen Algorithmus spezifiziert sind, auf unverschlüsselte oder klare Eingabedaten (beispielsweise eine Bitzeichenkette, die Text, Zahlen, verständliche Zeichen usw. darstellt) unter Benutzung eines Verschlüsselungsschlüssels (beispielsweise einer Bitkette) zum Erstellen von verschlüsselten Daten ausgeführt werden. Die verschlüsselten Daten werden außerdem bisweilen als Chiffretext oder Chiffredaten bezeichnet. Die verschlüsselten Daten sind im Allgemeinen unverständlich. Es ist im Allgemeinen nicht möglich, oder zumindest praktisch nicht machbar, die unverschlüsselten Klardaten aus den verschlüsselten Daten zu bestimmen, ohne den kryptografischen Schlüssel zu kennen. Wenn der kryptografische Schlüssel bekannt ist, kann Entschlüsselung (bisweilen als Umkehrchiffre bezeichnet) auf die verschlüsselten Daten ausgeführt werden, um die entsprechenden klaren oder unverschlüsselten Daten hervorzubringen. Die Transformationen oder Operationen, die während der Entschlüsselung ausgeführt werden, können im Wesentlichen die Umkehrung von jenen sein, die während der Verschlüsselung ausgeführt werden.
  • Figurenliste
  • Die Offenbarung geht aus der nachfolgenden detaillierten Beschreibung und aus den beiliegenden Zeichnungen von verschiedenen Ausführungsformen der Offenbarung deutlicher hervor. Die Zeichnungen sollten jedoch nicht als die Offenbarung auf die spezifischen Ausführungsformen beschränkend angesehen werden, sondern dienen nur der Erläuterung und dem Verständnis.
    • 1 stellt ein System-auf-Chip (SoC) mit einem Verarbeitungssystem zum Ausführen von Kryptografie gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 2 stellt ein Beispiel eines Logikdiagramms einer Rundenkonstantenerstellung im Verarbeitungssystem von 1 gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 3 stellt ein Beispiel eines Logikdiagramms einer Rundenkonstantenerstellung im Verarbeitungssystem von 1 gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 4 stellt ein Ablaufdiagramm zum Erzeugen der Rundenkonstante in Prozessoren gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 5 stellt ein Ablaufdiagramm zum Erzeugen der Rundenkonstante in Prozessoren gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 6A ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor darstellt, in dem eine Ausführungsform der Offenbarung verwendet werden kann.
    • 6B ist ein Blockdiagramm, das eine In-Reihenfolge-Pipeline und eine Registerumbenennungsstufe, Außer-Reihenfolge-Fall/Ausführungs-Pipeline darstellt, die gemäß mindestens einer Ausführungsform der Offenbarung implementiert ist.
    • 7 stellt ein Blockdiagramm der Mikroarchitektur für einen Prozessor gemäß einer Ausführungsform der vorliegenden Offenbarung dar.
    • 8 ist ein Blockdiagramm, das ein System darstellt, in dem eine Ausführungsform der Offenbarung verwendet werden kann.
    • 9 ist ein Blockdiagramm eines Systems, in dem eine Ausführungsform der Offenbarung arbeiten kann.
    • 10 ist ein Blockdiagramm eines Systems, in dem eine Ausführungsform der Offenbarung arbeiten kann.
    • 11 ist ein Blockdiagramm eines Systems-auf-Chip (SoC) gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 12 ist ein Blockdiagramm einer Ausführungsform einer SoC-Gestaltung gemäß der vorliegenden Offenbarung.
    • 13 stellt ein Blockdiagramm einer Ausführungsform eines Computersystems dar.
    • 14 stellt ein Blockdiagramm einer Maschine in Form eines Rechensystems gemäß der vorliegenden Offenbarung dar.
  • DETAILLIERTE BESCHREIBUNG
  • SMS4 ist ein kryptografischer Blockchiffrealgorithmus, der zur Datenverschlüsselung/-entschlüsselung in drahtlosen Netzwerken eingesetzt wird. SMS4-Datenverschlüsselungsbetrieb kann mehrere Verschlüsselungsrunden aufweisen. Jede Runde beinhaltet eine Anzahl von verschiedenen Datenmanipulationsvorgängen, die zum Umwandeln der Eingangsdaten (Klartext) in die verschlüsselten Daten (Chiffretext) ausgeführt werden. Datenentschlüsselungsbetrieb kann mehrere Entschlüsselungsrunden aufweisen, die eine Anzahl von ähnlichen Datenmanipulationsvorgängen beinhalten.
  • Herkömmliche SMS4-Beschleuniger bilden Rundenkonstanten in Verweistabellen (LUTs) ab, was einen großen Bereich in der Hardware beansprucht und zusätzliche Schlüsselerstellungslatenz verschuldet. Eine Rundenkonstante wird aus einem 32-Bit-Akkumulator durch Inkrementieren oder Dekrementieren einer feststehenden Konstante abgeleitet.
  • Aspekte der vorliegenden Offenbarung eliminieren das Erfordernis der LUTs, wodurch der Bereich in der Hardware in hohem Maße verringert wird. Aspekte der vorliegenden Offenbarung ermöglichen schnelle und effiziente direkte Schlüsselerweiterung, ohne jegliche zusätzliche Schlüsselerstellungslatenz zu verschulden, wodurch ein Gesamtlatenz-Overhead verringert wird. In einer Ausführungsform enthält der SMS4-Beschleuniger eine Rundenkonstantenerstellungslogik, die konstante Bits in einer ausgegebenen Bitsequenz identifiziert und sich wiederholende Muster auf variable Bits der ausgegebenen Bitsequenz ausnutzt, wodurch effiziente Erstellung der Bits ermöglicht ist. In einem veranschaulichenden Beispiel sind die konstanten Bits zwei am wenigsten signifikanten Bits und die variablen Bits die nächsten zwei am wenigsten signifikanten Bits.
  • 1 stellt ein System-auf-Chip (SoC) 100 mit einem Verarbeitungssystem gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Das SoC 100 kann einen Prozessor (wie etwa eine zentrale Recheneinheit (CPU) 102 und einen Speicher enthalten, die über ein Bussystem 108 miteinander verbunden sind. Der Prozessor 102 kann Aufgaben, wie etwa Systemanwendungen und Benutzeranwendungen, unter Benutzung des Speichers 104 zum Speichern der Informationen und Daten, die den Programmen zugeordnet sind, ausführen.
  • In einer Ausführungsform kann der Prozessor 102 außerdem einen oder mehr Verarbeitungskerne 110 und einen SMS4-Hardwarebeschleuniger 112 enthalten, der kommunikationstechnisch an den Verarbeitungskern 110 gekoppelt ist. Der SMS4-Hardwarebeschleuniger 112 fungiert zum Erstellen von Rundenkonstanten sowohl für Verschlüsselungs- als auch für Entschlüsselungsbetriebsmodi.
  • Der SMS4-Hardwarebeschleuniger 112 enthält ein Datenregister 114 zum Speichern von Eingabebitdaten, die mehrere Datenbits enthalten. In einer Ausführungsform enthalten die mehreren Datenbits 128-Bit-Daten. In einer Ausführungsform verarbeitet der SMS4-Hardwarebeschleuniger 112 die mehreren Datenbits in einem Verschlüsselungsmodus. In einer Ausführungsform verarbeitet der SMS4-Hardwarebeschleuniger 112 die mehreren Datenbits in einem Entschlüsselungsmodus. Der SMS4-Hardwarebeschleuniger 112 enthält außerdem ein Schlüsselregister 116 zum Speichern der Eingabeschlüsseldaten, die mehrere Schlüsselbits enthalten. In einer Ausführungsform enthalten die mehreren Schlüsselbits einen 128-Bit-Schlüssel. Sowohl die Datenbits als auch die Schlüsselbits werden zu einem ersten Mischmodul 118 zum Ausführen eines Bytemischvorgangs mit den Datenbits sowie den Schlüsselbits gesendet, der erste Mischdaten ergibt. In einer Ausführungsform wird eine höhere Ordnung von 32 Bit vom Schlüssel mit den 32-Bit-Daten gemischt, was zu einem 32-Bit-Wort führt.
  • Die ersten Mischdaten (d.h. das 32-Bit-Wort) wird durch ein Austauschkasten- (Sbox) Modul 120 zum Ausführen eines Byteaustauschvorgangs mit den Mischdaten verarbeitet, was zu Austauschdaten (d.h. 32-Bit-Sbox-Ausgabe) führt. Die Austauschdaten, die vom Daten-Sbox-Modul 120 ausgegeben werden, werden ferner durch ein Rotiermodul 122 zum Ausführen eines Rotiervorgangs zum Ausgeben von rotierten Daten rotiert. In einer Ausführungsform wird der Datenrotiervorgang durch Umordnen der Drähte erzielt, die Sbox-Ausgaben zu einem zweiten (finalen) Mischmodul befördern, wie hierin untenstehend weiter beschrieben. In einer Ausführungsform werden die Daten um eine bestimmte Anzahl von Bits versetzt.
  • Der SMS-Hardwarebeschleuniger 1 12 enthält außerdem ein zweites Mischmodul 124, das die rotierten Daten zum Ausgeben von zweiten Mischdaten mischt. Die zweiten Mischdaten kombinieren die primäre Sbox-Ausgabe, die rotierten Sbox-Ausgaben mit einem einmaligen Wort aus den Daten zum Erstellen eines neuen Worts, der ein bestehendes Wort aus den Daten ersetzt. Die zweiten Mischdaten werden dann als eine Eingabe zu einem Chiffriermodul 126 gesendet. Im Anschluss an den zweiten Mischvorgang im zweiten Mischmodul 124 wird die 32b-Ausgabe aus dem zweiten Mischmodul 124 zum Ersetzen von einem der 32b-Worte im Datenregister 114 benutzt. Die verbleibenden drei 32b-Worte werden durch Versetzen des Datenregisters 114 nach links oder rechts in Verschlüsselung oder Entschlüsselung erhalten. Im Anschluss an 32 Betriebsrunden werden die 126b-Daten unter Benutzung des Chiffriermoduls 126 zum Erstellen der verschlüsselten oder entschlüsselten Ausgabe durcheinandergemischt.
  • In einer Ausführungsform ist ein Konstantenwert FK eine 128b-Konstante, die nur in der ersten Rundeniteration benutzt wird. In der ersten Rundeniteration der Schlüsselerweiterung wird der FK mit einem vom Benutzer vorgesehenen 128b-Schlüssel durch eine Addieren-Operation 130 zum Erstellen eines ersten Schlüssels addiert, der in einem Schlüsselregister 116 gespeichert wird. In einer zweiten Rundeniteration wird der erste Schlüssel zu einem Multiplexer 132 gesendet, dessen Ausgabe zu einem Schlüsselerweiterungsmodul 134 zum Erstellen des nächsten Schlüssels gesendet wird, der zum Schlüsselregister 116 gesendet wird. Dementsprechend wirkt das Schlüsselerweiterungsmodul 134 auf dem vom Benutzer vorgesehenen Schlüssel für die erste Runde ein und leitet einen neuen Schlüssel zum Gebrauch in der nächsten Runde ab. Für 32 Runden der Schlüsselerweiterung benötigt das Schlüsselerweiterungsmodul 134 32 Rundenkonstanten, CKs genannt, die durch das Rundenkonstantenerstellungsmodul 136 erstellt und in einem Konstantenregister 138 gespeichert werden. Daher verbirgt die gleichlaufende Schlüsselableitung für die nächste Runde parallel zur laufenden Rundenrechnung Schlüsselerweiterungslatenz. Die 32b-Rundenkonstante, CK, die durch das Rundenkonstantenerstellungsmodul 136 erstellt wird, wird in einem Konstantenregistermodul 138 gespeichert. Jede Iteration nutzt einen neuen Schlüssel, der vom vorigen Schlüssel unter Anwendung eines gleichartigen Operationssatzes abgeleitet wird. Im Anschluss an die 32. Runde enthalten die finalen ausgewählten Schlüsselbits 32b-Schlüsselworte des verschlüsselten oder entschlüsselten Schlüssels. In einer Ausführungsform nutzt das Rundenkonstantenerstellungsmodul 136 einen 8-Bit-Akkumulator zum Errechnen der 32b-Rundenkonstante CK, wie untenstehend unter Bezugnahme auf 2 detaillierter beschrieben. In einer anderen Ausführungsform nutzt das Rundenkonstantenerstellungsmodul 136 einen 2-Bit-Zähler zum Errechnen der 32b-Rundenkonstante CK, wie untenstehend unter Bezugnahme auf 3 detaillierter beschrieben.
  • 2 stellt ein Logikdiagramm 200 eines Rundenkonstantenerstellungsmoduls 236 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Das Rundenkonstantenerstellungsmodul 236 ist dasselbe wie das Rundenkonstantenerstellungsmodul 136 von 1, das einen 8-Bit-Akkumulator nutzt. Das Rundenkonstantenerstellungsmodul 236 fungiert zum Erstellen einer 32b-Rundenkonstante, CK, für die Schlüsselerweiterung in Verschlüsselungs- und Entschlüsselungsmodi. In einer Ausführungsform sind die Konstanten für alle 32 Runden in einem Verschlüsselungsbetriebsmodus in Tabelle 1 unten gezeigt: Tabelle 1
    00070e15, 1c232a31, 383f464d, 545b6269,
    70777e85, 8c939aa1, a8afb6bd, c4cbd2d9,
    e0e7eef5, fc030a11, 181f262d, 343b4249,
    50575e65, 6c737a81, 888f969d, a4 ,
    c0c7ced5, dce3eaf1, f8ff060d, 141b2229,
    30373e45, 4c535a61, 686f767d, 848b9299,
    a0a7aeb5, bcc3cadl, d8dfe6ed, f4fb0209,
    10171e25, 2c333a41, 484f565d, 646b7279
  • In einer Ausführungsform wird auf die oben aufgeführten CKs in umgekehrter Reihenfolge während des Entschlüsselungsbetriebsmodus zugegriffen. Wie oben beschrieben erfordert jede SMS4-Runde einen neuen 128b-Schlüssel, der aus dem vorigen Schlüssel unter Verwendung eines 32b-Rundenkonstante CK abgeleitet wird.
  • Das logische Diagramm 200 enthält einen ersten Multiplexer 202 mit einer Eingabe, die anzeigt, dass der Betrieb entweder ein Verschlüsselungsmodus oder ein Entschlüsselungsmodus ist. Da der erste CK-Konstantenwert 00070e15 ist, zeigt die Eingabe des ersten Multiplexers 202 einen Verschlüsselungsmodus an. Die Ausgabe des ersten Multiplexers 202, die einen Verschlüsselungsbetriebsmodus anzeigt, ist eine Eingabe eines zweiten Multiplexers 204. Eine weitere Eingabe des zweiten Multiplexers 204 ist der erste CK-Wert 00070e15, der in der ersten Runde vorgesehen wurde und nun durch eine zweite Runde in einem 32-Bit-Register 206 benutzt wird. Das 32-Bit-Register 206 ist in vier 8-Bit-Register 206a, 206b, 206c und 206d aufgeteilt, die jedes Konstantenwerte CKi0, CKi1, CKi2 bzw. CKi3 enthalten. Die Konstantenwerte CKi0, CKi 1, CKi2 bzw. CKi3 aus der ersten Runde sind 00 07 0e bzw. 15.
  • In einer Ausführungsform wird das 32-Bit-Register um 28 (+28) für jeden Zyklus in einem Verschlüsselungsmodus inkrementiert. Von daher ist das +28 eine Eingabe in einen dritten Multiplexer 208. Die Ausgabe des dritten Multiplexers +28, die Inkrementierung um 28 anzeigt, und jeder dieser Konstantenwerte CKi0, CKi1, CKi2 und CKi3 werden in Additionsoperationen 210a, 210b, 210c bzw. 210d gesendet. Die Ausgabe der Additionsoperationen 210a, 210b, 210c bzw. 210d erstellen nächste Konstanten (NK-) Werte NKi0, NKi1, NKi2 bzw. NKi3 für die zweite Runde, die in ihrem jeweiligen 32-Bit-Register 212 gespeichert werden. Das 32-Bit-Register 212 ist in vier 8-Bit-Register 212a, 212b, 212c und 212d aufgeteilt, von denen jedes Konstantenwerte NKi0, NKi1, NKi2 bzw. NKi3 enthält. Für die zweite Runde sind die Werte NKi0, NKi1, NKi2 bzw. NKi3 1c 23 2a bzw. 31. Diese NK-Werte von der zweiten Runde werden in den zweiten Multiplexer 204 eingegeben und zurück in das 32-Bit-Register 206, das in 8-Bit-Register 206a, 206b, 206c und 206d aufgeteilt ist, als die Konstantenwerte CKi0, CKi1, CKi2 bzw. CKi3 geladen. Dementsprechend sind die CKi0, CKi 1, CKi2 bzw. CKi3 in der zweiten Runde 1c 23 2a bzw. 31.
  • Der Prozess wird als solcher unter Benutzung der NKi0, NKi1, NKi2 bzw. NKi3 Werte 1c 23 2a bzw. 31 aus der zweiten Runde zum Laden in CKi0, CKi1, CKi2 bzw. CKi3 für die dritte Runde wiederholt. In der dritten Runde sind die erstellten NKi0, NKi1, NKi2 bzw. NKi3 Werte 38 3f 46 bzw. 4d. Der Prozess wird unter Benutzung der NKi0, NKi1, NKi2 bzw. NKi3 Werte 38 3f 46 bzw. 4d aus der dritten Runde zum Laden in CKi0, CKi1, CKi2 bzw. CKi3 für die vierte Runde wiederholt. In der vierten Runde sind die erstellten NKi0, NKi1, NKi2 bzw. NKi3 Werte 54 5b 62 bzw. 69. Der Prozess wird bis zur 32. Runde wiederholt, in der die erstellten NKi0, NKi1, NKi2 bzw. NKi3 Werte 64 6b 72 bzw. 79 sind.
  • Dementsprechend sind in der Tabelle, wie oben gezeigt, die ersten letzten zwei Stellen des NKi3 immer 5 1 d und 9, die ersten letzten zwei Stellen des NKi2 immer e a 6 und 2, die ersten letzten zwei Stellen des NKi1 immer 7 3 f und b und die ersten letzten zwei Stellen des NKi0 immer 0 c 8 und 4. Der Binärwert von 5 1 d und 9 von NKi3 ist 01, womit die ersten letzten zwei Bits von NKi3 01 sind, der Binärwert von e a 6 und 2 von NKi2 ist 10, womit die ersten letzten zwei Bits von Nki2 10 sind, der Binärwert von 7 3 f und b für NKi2 ist 11, womit die ersten letzten zwei Bits von Nki111 sind, und der Binärwert von 0 c 8 und 4 von NKi0 ist 00, womit die ersten letzten zwei Bits von Nki0 00 sind.
  • Somit ändern die ersten letzten zwei Bits aller 4 Bytes, d.h. NKi0, NKi1, NKi2 und NKi3, ihre Werte nicht und verbleiben konstant auf 00, 11, 10 bzw. 01. In einer Ausführungsform sind die ersten letzten zwei Bits zwei am wenigsten signifikante Bits in Rundenkonstantenbytes. Von daher wiederholen sich die 8-Bit-Werte in den 32 Bits in jeder Runde, womit die Notwendigkeit eines 8-Bit-Akkumulators zum Erstellen der CK-Werte in der Tabelle oben beseitigt ist. In einer Ausführungsform sind die Konstantenbitwerte von 0 mit Niederspannung (beispielsweise Erde) in einem Chip verbunden, und die Konstantenbitwerte von 1 sind mit Hochspannung (beispielsweise Spannungszufuhr) im Chip verbunden, die im Wesentlichen Teil des Akkumulators sind. Somit sind die acht Register, die diesen Konstantenbitwerten entsprechen, im Akkumulator beseitigt, um Bereich im Chip zu sparen, während Rundenkonstanten immer noch mit 100% Genauigkeit erstellt werden.
  • 3 stellt ein Logikdiagramm 300 eines Rundenkonstantenerstellungsmoduls 336 gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Das Rundenkonstantenerstellungsmodul 336 ist dasselbe wie das Rundenkonstantenerstellungsmodul 136 von 1, das einen 2-Bit-Zähler nutzt. Das Rundenkonstantenerstellungsmodul 336 fungiert zum Erstellen einer 32b-Rundenkonstante, CK, für die Schlüsselerweiterung in Verschlüsselungs- und Entschlüsselungsmodi.
  • In einer Ausführungsform sind die Konstanten für alle 32 Runden in einem Verschlüsselungsbetriebsmodus in Tabelle 1 oben gezeigt. In einer Ausführungsform wird auf die oben aufgeführten CKs in umgekehrter Reihenfolge während des Entschlüsselungsbetriebsmodus zugegriffen. Wie oben besprochen erfordert jede SMS4-Runde einen neuen 128b-Schlüssel, der aus dem vorigen Schlüssel unter Benutzung einer 32b-Rundenkonstante CK abgeleitet wird.
  • Wie oben besprochen, sind die ersten letzten zwei Bits der Konstantenwerte 5 1 d 9, die in jeder Spalte in der Tabelle 1 wiederholt sind, immer Konstantenbits 01. In einer Ausführungsform fungiert das Logikdiagramm 300 zum Erstellen von zweiten letzten zwei Bits der Konstantenwerte als 5 1 d 9 als NK3. Außerdem sind, wie oben besprochen, die ersten letzten zwei Bits der Konstantenwerte e a 6 2, die in jeder Spalte in der Tabelle 1 wiederholt sind, immer Konstantenbits 10, und das Logikdiagramm 300 fungiert zum Erstellen von zweiten letzten zwei Bits der Konstantenwerte e a 6 2 als Nk2. Außerdem sind, wie oben besprochen, die ersten letzten zwei Bits der Konstantenwerte 7 3 f b, die in jeder Spalte in der Tabelle 1 wiederholt sind, immer Konstantenbits 10, und das Logikdiagramm 300 fungiert zum Erstellen von zweiten letzten zwei Bits der Konstantenwerte 7 3 f b als Nk1. Ferner sind, wie oben besprochen, die ersten letzten zwei Bits der Konstantenwerte 0 c 8 4, die in jeder Spalte in der Tabelle 1 wiederholt sind, immer Konstantenwerte 00, und das Logikdiagramm 300 fungiert zum Erstellen von zweiten letzten zwei Bits der Konstantenwerte 0 c 8 4 als Nk1. In einer Ausführungsform sind die zweiten letzten zwei Bits die nächsten zwei am wenigsten signifikanten Bits in den Rundenkonstantenbytes. Details des Logikdiagramms 300, das diese zweiten letzten zwei Bits der Konstantenwerte erstellt, sind im Folgenden beschrieben.
  • Das Logikdiagramm 300 enthält einen ersten Multiplexer 302 mit einer Eingabe, die anzeigt, dass der Betrieb entweder ein Verschlüsselungsmodus oder ein Entschlüsselungsmodus ist. In einer Ausführungsform beginnt im Verschlüsselungsmodus die Eingabe in den ersten Multiplexer mit einem Binärwert 11. In einer Ausführungsform beginnt im Entschlüsselungsmodus die Eingabe in den ersten Multiplexer 302 mit einem Binärwert 00. Die Ausgabe des ersten Multiplexers 302 ist eine Eingabe in einen 2b-Zähler 304, der in einem Entschlüsselungsmodus inkrementiert (aufzählt) und in einem Verschlüsselungsmodus dekrementiert (abzählt).
  • Wie oben besprochen, beginnt im Verschlüsselungsmodus die Eingabe des ersten Multiplexers 302 mit dem Binärwert 11. Die Ausgabe des ersten Multiplexers 302 ist die Eingabe in einen 2b-Zähler 304. Im ersten Zyklus wird der vom 2b-Zähler 304 ausgegebene Binärwert 11 zu einer +2 (Binärwert 10) Additionsoperation 306 addiert. Die Ausgabe der +2 Additionsoperation 306 ist 1 mit dem Binärwert 01, der eine Eingabe in einen zweiten Multiplexer 308 ist, welcher den Binärwert 01 ausgibt. Dieser Binärwert 01 ist die zweiten letzten zwei Bits des Konstantenwerts 5.
  • In einer Ausführungsform wird im Verschlüsselungsmodus der 2b-Zähler dekrementiert (zählt ab), sodass der Binärwert in jedem Zyklus um 1 abnimmt. Von daher wird der 2b-Zähler 304 in einem zweiten Zyklus von 3 mit dem Binärwert 11 auf 2 mit dem Binärwert 10 dekrementiert (zählt ab). Der Binärwert 10, der vom 2b-Zähler im zweiten Zyklus ausgegeben wird, wird zur +2 (10) Additionsoperation 306 addiert. Die Ausgabe der Addieroperation 306 mit dem Binärwert 00 ist eine Eingabe in einen zweiten Multiplexer 308, der den Binärwert 00 ausgibt. Dieser Binärwert 00 ist die zweiten letzten zwei Bits des Konstantenwerts 1. In einem dritten Zyklus wird der 2b-Zähler 304 von 2 mit dem Binärwert 10 auf 1 mit dem Binärwert 01 dekrementiert. Der vom 2b-Zähler 304 im dritten Zyklus ausgegebene Binärwert 01 wird dann zur +2 (10) Additionsoperation 306 addiert. Die Ausgabe der Additionsoperation 306 ist 3 mit dem Binärwert 11, der in einen zweiten Multiplexer 308 eingegeben wird, welcher den Binärwert 11 ausgibt. Dieser Binärwert 11 ist die zweiten letzten zwei Bits des Konstantenwerts d. In einem vierten Zyklus wird der 2b-Zähler 304 von 1 mit dem Binärwert 01 auf 0 mit dem Binärwert 00 dekrementiert (zählt ab). Der vom 2b-Zähler 304 im vierten Zyklus ausgegebene Binärwert 00 wird zur +2 (10) Additionsoperation 306 addiert. Die Ausgabe der Additionsoperation 306 ist 2 mit dem Binärwert 10, der eine Eingabe in einen zweiten Multiplexer 308 ist, welcher den Binärwert 10 ausgibt. Dieser Binärwert 10 ist die zweiten letzten zwei Bits des Konstantenwerts 9. Dementsprechend werden die zweiten letzten zwei Bits von NK3 erstellt. Von daher folgen die zweiten letzten zwei Bits, die für NK3 im Verschlüsselungsmodus erstellt werden, einem periodischen Muster von 01 00 11 10 in jeder Zeile der Tabelle 1.
  • In einer Ausführungsform werden die zweiten letzten zwei Bits, die für den NK1 erstellt werden, im Verschlüsselungsmodus unter Verwendung derselben Logik 300 wie oben bezüglich der zweiten letzten zwei Bits für NK3 beschrieben, wie oben beschrieben unter Benutzung eines Multiplexers 310 anstelle eines Multiplexers 308 erstellt. In einer Ausführungsform ist der Binärwert 01 die zweiten letzten zwei Bits des Konstantenwerts 7, der Binärwert 00 die zweiten letzten zwei Bits des Konstantenwerts 3, der Binärwert 11 die zweiten letzten zwei Bits des Konstantenwerts f und der Binärwert 10 die zweiten letzten zwei Bits des Konstantenwerts b. Von daher folgen die zweiten letzten zwei Bits, die für NK1 im Verschlüsselungsmodus erstellt werden, demselben periodischen Muster wie NK3 von 01 00 11 10 in jeder Zeile der Tabelle 1.
  • In einer Ausführungsform werden die zweiten letzten zwei Bits für den NK0 im Verschlüsselungsmodus unter Verwendung derselben Logik 300 wie oben bezüglich der zweiten letzten zwei Bits für NK3 beschrieben, wie oben beschrieben unter Benutzung eines Multiplexers 312 anstelle eines Multiplexers 308 erstellt. Die zweiten letzten zwei Bits, die für NK0 erstellt werden, folgen jedoch einem periodischen Muster, das von NK3 und NK1 abweicht. Da die Konstanten CKs durch den SMS4 Standard spezifiziert sind, folgt der NK0 in diesem Szenario einem von NK3 und NK1 abweichenden Muster. In einer Ausführungsform ist der Binärwert 00 die zweiten letzten zwei Bits des Konstantenwerts 0, der Binärwert 11 die zweiten letzten zwei Bits des Konstantenwerts c, der Binärwert 10 die zweiten letzten zwei Bits des Konstantenwerts 8 und der Binärwert 01 die zweiten letzten zwei Bits des Konstantenwerts 4. Von daher folgen die zweiten letzten zwei Bits, die für Nk0 im Verschlüsselungsmodus erstellt werden, dem periodischen Muster von 00 11 10 01 in jeder Zeile der Tabelle 1.
  • In einer Ausführungsform werden die zweiten letzten zwei Bits für den Nk2 im Verschlüsselungsmodus unter Verwendung derselben Logik 300 außer der +2 (10) Additionsoperation 306 wie oben bezüglich der zweiten letzten zwei Bits, die für Nk3 erstellt werden, beschrieben erstellt. Von daher sind die Binärwerte der zweiten letzten zwei Bits von Nk2 dieselben wie jene, die direkt vom 2b-Zähler 304 ausgegeben werden. Dementsprechend werden Binärwerte 11 10, 01 und 00 mit periodischem Muster für Nk2 im Verschlüsselungsmodus erstellt. In einer Ausführungsform ist der Binärwert 11 die zweiten letzten zwei Bits des Konstantenwerts e, der Binärwert 10 die zweiten letzten zwei Bits des Konstantenwerts a, der Binärwert 01 die zweiten letzten zwei Bits des Konstantenwerts 6 und der Binärwert 00 die zweiten letzten zwei Bits des Konstantenwerts 2. Von daher folgen die zweiten letzten zwei Bits, die für NK2 im Verschlüsselungsmodus erstellt werden, einem periodischen Muster von 11 10 01 00 in jeder Zeile der Tabelle 1.
  • In einer Ausführungsform werden in einem Entschlüsselungsmodus die zweiten letzten zwei NK3 Nk1 und Nk0 unter Verwendung derselben Logik 300 erstellt, außer dass die Eingabe in den ersten Multiplexer 302 mit dem Binärwert 00 statt 11 beginnt und die +2 (10) Additionsoperation durch eine +1 (01) Additionsoperation 314 ersetzt wird. In einer Ausführungsform folgt der NK3 im Entschlüsselungsmodus dem Muster von 10 11 00 und 01 für den ersten, zweiten, dritten bzw. vierten Zyklus. Der Binärwert 10 ist die zweiten letzten zwei Bits für den Konstantenwert 9, der Binärwert 11 die zweiten letzten zwei Bits für den Konstantenwert d, der Binärwert 00 die zweiten letzten zwei Bits für den Konstantenwert 1 und der Binärwert 01 die zweiten letzten zwei Bits für den Konstantenwert 5. Von daher folgen die zweiten letzten zwei Bits, die für NK3 im Entschlüsselungsmodus erstellt werden, einem periodischen Muster von 10 11 00 und 01 in jeder Reihe der Tabelle 1.
  • In einer Ausführungsform werden die zweiten letzten zwei Bits, die für den NK1 erstellt werden, im Entschlüsselungsmodus unter Verwendung derselben Logik 300 wie oben bezüglich der zweiten letzten zwei Bits für NK3 beschrieben, wie oben beschrieben unter Benutzung eines Multiplexers 310 anstelle eines Multiplexers 308 erstellt. In einer Ausführungsform ist der Binärwert 10 die zweiten letzten zwei Bits des Konstantenwerts b, der Binärwert 11 die zweiten letzten zwei Bits des Konstantenwerts f, der Binärwert 00 die zweiten letzten zwei Bits des Konstantenwerts 3 und der Binärwert 01 die zweiten letzten zwei Bits des Konstantenwerts 7. Von daher folgen die zweiten letzten zwei Bits, die für NK1 im Entschlüsselungsmodus erstellt werden, einem periodischen Muster von 10 11 00 und 01 in jeder Reihe der Tabelle 1.
  • In einer Ausführungsform werden die zweiten letzten zwei Bits für den NK0 im Entschlüsselungsmodus unter Verwendung derselben Logik 300 wie oben bezüglich der zweiten letzten zwei Bits für NK3 beschrieben, wie oben beschrieben unter Benutzung eines Multiplexers 312 anstelle eines Multiplexers 308 erstellt. Die zweiten letzten zwei Bits, die für Nk0 erstellt werden, folgen jedoch einem periodischen Muster, das von NK3 und NK1 abweicht. Da die Konstanten CKs durch den SMS4 Standard spezifiziert sind, folgt der NK0 in diesem Szenario einem von NK3 und NK1 abweichenden Muster. In einer Ausführungsform ist der Binärwert 01 die zweiten letzten zwei Bits des Konstantenwerts 4, der Binärwert 10 die zweiten letzten zwei Bits des Konstantenwerts 8, der Binärwert 11 die zweiten letzten zwei Bits des Konstantenwerts c und der Binärwert 00 die zweiten letzten zwei Bits des Konstantenwerts 0. Von daher folgen die zweiten letzten zwei Bits, die für Nk0 im Entschlüsselungsmodus erstellt werden, dem periodischen Muster von 01 10 11 und 00 in jeder Zeile der Tabelle 1.
  • In einer Ausführungsform werden die zweiten letzten zwei Bits für den Nk2 im Entschlüsselungsmodus unter Verwendung derselben Logik 300 außer der + 1 (01) Additionsoperation 312, wie oben bezüglich der zweiten letzten zwei Bits, die für Nk3 erstellt werden, beschrieben, erstellt. Von daher sind die Binärwerte der zweiten letzten zwei Bits von Nk2 dieselben wie jene, die direkt vom 2b-Zähler 304 ausgegeben werden. Dementsprechend wird ein periodisches Muster von Binärwerten 00 01 10 und 11 für Nk2 im Entschlüsselungsmodus erstellt. In einer Ausführungsform ist der Binärwert 00 die zweiten letzten zwei Bits des Konstantenwerts 2, der Binärwert 01 die zweiten letzten zwei Bits des Konstantenwerts 6, der Binärwert 10 die zweiten letzten zwei Bits des Konstantenwerts a und der Binärwert 11 die zweiten letzten zwei Bits des Konstantenwerts e. Von daher folgen die zweiten letzten zwei Bits, die für NK2 im Entschlüsselungsmodus erstellt werden, dem periodischen Muster von 00 01 10 und 11 in jeder Zeile der Tabelle 1.
  • Wie oben besprochen, weisen die zweiten letzten zwei Bits (d.h. die nächsten zwei am wenigsten signifikanten Bits) in Rundenkonstantenbytes sowohl im Verschlüsselungs- als auch im Entschlüsselungsbetriebsmodus periodische Muster auf. Dementsprechend können die zweiten letzten zwei Bits unter Verwendung des 2b-Zählers erstellt werden. Damit sind die sechs Register, die diesen Konstantenbitwerten entsprechen, im Akkumulator beseitigt, um Bereich auf dem Chip einzusparen, während Rundenkonstanten immer noch mit 100% Genauigkeit erstellt werden.
  • 4 stellt ein Ablaufdiagramm eines Verfahrens zum Erstellen von Rundenkonstanten gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Das Verfahren 400 kann durch Verarbeitungslogik ausgeführt werden, die Hardware (beispielsweise Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie etwa Anweisungen, die auf einem Verarbeitungssystem, einem Allzweckrechnersystem oder einer dedizierten Maschine laufen), Firmware oder eine Kombination davon enthalten kann. In einer Ausführungsform kann das Verfahren zum Teil durch Verarbeitungslogik von jeglichem von Verarbeitungskernen 110 ausgeführt werden, die ein Betriebssystem bezüglich 1 ausführen.
  • Der Einfachheit der Erläuterung halber ist das Verfahren 400 als eine Reihe von Vorgängen dargestellt und beschrieben. Vorgänge gemäß dieser Offenbarung können jedoch in verschiedenen Reihenfolgen und oder gleichlaufend mit anderen Vorgängen ablaufen, die hierin nicht dargestellt und beschrieben sind. Zudem könnten nicht alle dargestellten Vorgänge zum Implementieren des Verfahrens 400 gemäß dem offenbarten Erfindungsgegenstand ausgeführt werden. Ferner wird der Fachmann verstehen und erkennen, dass das Verfahren 400 alternativ als Reihe von untereinander zusammenhängenden Zuständen über ein Zustandsdiagramm oder von Ereignissen dargestellt werden könnte.
  • Unter Bezugnahme auf 4 identifiziert die Verarbeitungslogik bei Block 402 oder mehr Konstantenbits einer Ausgabebitsequenz. Bei Block 404 erstellt die Verarbeitungslogik mehrere Variablenbits der Ausgabebitsequenz. In einer Ausführungsform beinhalten die mehreren Variablenbits eine periodische Wiederholung eines Satzes der mehreren Bits. In einer Ausführungsform werden die mehreren Variablenbits in einem Verschlüsselungsmodus durch Inkrementieren eines Akkumulators um einen ganzzahligen Wert erstellt. In einem Beispiel ist der ganzzahlige Wert im Verschlüsselungsmodus 2. In einer Ausführungsform werden mehrere Variablenbits in einem Entschlüsselungsmodus durch den Akkumulator durch einen ganzzahligen Wert erstellt. In einem Beispiel ist der ganzzahlige Wert im Entschlüsselungsmodus 1. Bei Block 406 erzeugt die Verarbeitungslogik die Ausgabebitsequenz mit den identifizierten Konstantenbits und den erstellten mehreren Variablenbits.
  • 5 stellt ein Ablaufdiagramm eines Verfahrens zum Erstellen von Rundenkonstanten gemäß einer Ausführungsform der vorliegenden Offenbarung dar. Das Verfahren 500 kann durch Verarbeitungslogik ausgeführt werden, die Hardware (beispielsweise Schaltungen, dedizierte Logik, programmierbare Logik, Mikrocode usw.), Software (wie etwa Anweisungen, die auf einem Verarbeitungssystem, einem Allzweckrechnersystem oder einer dedizierten Maschine laufen), Firmware oder eine Kombination davon enthalten kann. In einer Ausführungsform kann das Verfahren 500 zum Teil durch Verarbeitungslogik von jeglichem von Verarbeitungskernen 110 ausgeführt werden, die ein Betriebssystem bezüglich 1 ausführen.
  • Der Einfachheit der Erläuterung halber ist das Verfahren 500 als eine Reihe von Vorgängen dargestellt und beschrieben. Vorgänge gemäß dieser Offenbarung können jedoch in verschiedenen Reihenfolgen und oder gleichlaufend mit anderen Vorgängen ablaufen, die hierin nicht dargestellt und beschrieben sind. Zudem könnten nicht alle dargestellten Vorgänge zum Implementieren des Verfahrens 500 gemäß dem offenbarten Erfindungsgegenstand ausgeführt werden. Ferner wird der Fachmann verstehen und erkennen, dass das Verfahren 500 alternativ als Reihe von untereinander zusammenhängenden Zuständen über ein Zustandsdiagramm oder von Ereignissen dargestellt werden könnte.
  • Unter Bezugnahme auf 5 erstellt die Verarbeitungslogik bei Block 502 einen ersten Satz von Variablen unter mehreren Variablenbits einer Ausgabebitsequenz. In einer Ausführungsform wird der erste Satz von Variablen durch Initialisieren eines Zählers auf ein erstes Muster unter mehreren Mustern erstellt. Bei Block 504 erstellt die Verarbeitungslogik ein zweites Muster unter mehreren Mustern. In einer Ausführungsform wird das zweite Muster durch Koppeln einer Addiererschaltung an den Zähler erstellt. Der zweite Satz von Variablenbits weicht vom ersten Satz der Variablenbits ab. Bei Block 506 beinhaltet die Verarbeitungslogik das Nutzen des zweiten Musters zum Erstellen eines zweiten Satzes von Variablenbits unter mehreren Variablenbits der Ausgabebitsequenz. In einer Ausführungsform enthält die Ausgabebitsequenz Konstantenbits und die mehreren Variablenbits. In einer Ausführungsform enthält die Ausgabebitsequenz Konstantenbits und die erstellten mehreren Variablenbits.
  • 6A ist ein Blockdiagramm, das eine In-Reihenfolge-Pipeline und eine Registerumbenennungsstufe, Außer-Reihenfolge-Fall/Ausführungs-Pipeline eines Prozessors darstellt, der die Leistung eines Verarbeitungsgeräts zum Verwalten von ungenauen Ereignissen überwacht, gemäß mindestens einer Ausführungsform der Erfindung. 6B ist ein Blockdiagramm, das einen In-Reihenfolge-Architekturkern und eine Registerumbenennungslogik, Außer-Reihenfolge-Fall/Ausführungslogik darstellt, die in einem Prozessor beinhaltet sein sollen, gemäß mindestens einer Ausführungsform der Erfindung. Die Kästen mit durchgezogener Linie in 6A stellen die In-Reihenfolge-Pipeline dar, während die Kästen mit gestrichelter Linie die Registerumbenennungs-, Außer-Reihenfolge-Fall/Ausführungs-Pipeline darstellen. Gleicherweise stellen die Kästen mit durchgezogener Linie in 6B die In-Reihenfolge-Architekturlogik dar, während die Kästen mit gestrichelter Linie die Registerumbenennungslogik und Außer-Reihenfolge-Fall/Ausführungslogik darstellen.
  • In 6A enthält eine Prozessor-Pipeline 600 eine Abholstufe 602, eine Längendecodierstufe 604, eine Decodierstufe 606, eine Zuordnungsstufe 608, eine Umbenennungsstufe 610, eine Zeitplanungsstufe (auch als Abfertigungs- oder Ausgabestufe bekannt) 612, eine Registerlese-/Speicherlesestufe 614, eine Ausführungsstufe 616, eine Zurückschreib-/Speicherschreibstufe 618, eine Ausnahmenhandhabungsstufe 622 und eine Festschreibstufe 624. In manchen Ausführungsformen sind die Stufen in einer anderen Reihenfolge vorgesehen, und verschiedene Stufen können als In-Reihenfolge oder Außer-Reihenfolge erachtet werden.
  • In 6B bezeichnen Pfeile eine Kopplung zwischen zwei oder mehr Einheiten, und die Richtung des Pfeils zeigt eine Datenstromrichtung zwischen diesen Einheiten an. 6B zeigt den Prozessorkern 690 mit einer Front-End-Einheit 630, die an eine Ausführungsmotoreinheit 650 gekoppelt ist, und beide sind an eine Speichereinheit 70 gekoppelt.
  • Der Kern 690 kann ein Kern mit reduziertem Befehlssatz (RISC), ein Kern mit komplexem Befehlssatz (CISC), ein Kern mit sehr langem Befehlswort (VLIW) oder eine hybride oder alternative Kernart sein. Als wiederum andere Option kann der Kern 690 ein Kern für besondere Zwecke sein, wie etwa beispielsweise ein Netzwerk- oder Kommunikationskern, ein Kompressionsmotor, Grafikkern oder dergleichen.
  • Die Front-End-Einheit 630 enthält eine Abzweigvoraussageeinheit 632, die an eine Befehlscacheeinheit 634 gekoppelt ist, welche an einen Adressumsetzpuffer (TLB) 636 gekoppelt ist, der an eine Befehlsabholeinheit 638 gekoppelt ist, welche an eine Decodiereinheit 640 gekoppelt ist. Die Decodiereinheit oder Decoder kann Befehle decodieren und als eine Ausgabe eine/n oder mehr Mikrooperationen, Mikrocodeeingangspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale erstellen, die aus den ursprünglichen Befehlen decodiert werden, oder diese widerspiegeln oder daraus abgeleitet werden. Der Decoder kann unter Verwendung von verschiedenen unterschiedlichen Mechanismen implementiert werden. Beispiele von geeigneten Mechanismen beinhalten u.a. Verweistabellen, Hardwareimplementierungen, programmierbare Logikanordnungen (PLAs), Mikrocode-Festwertspeicher (ROMs) usw. Die Befehlscacheeinheit 634 ist ferner an eine Level-2- (L2-) Cacheeinheit 676 in der Speichereinheit 670 gekoppelt. Die Decodiereinheit 640 ist an eine Umbenennungs-/Zuordnereinheit 652 in der Ausführungsmotoreinheit 650 gekoppelt.
  • Die Ausführungsmotoreinheit 650 enthält die Umbenennungs-/Zuordnereinheit 652, die an eine Ausmusterungseinheit 654 gekoppelt ist, und einen Satz von einer oder mehr Zeitplanereinheiten 656. Die Ausmusterungseinheit 654 kann ein Rundenkonstantenerstellungsmodul 603 zum Vorsehen von optimaler Bereichskonfiguration in Prozessoren enthalten, während direkte Schlüsselerweiterung zur Schlüsselerstellung gemäß Ausführungsformen der Erfindung ermöglicht wird. Die Zeitplanereinheit(en) 656 stellt (stellen) jegliche Anzahl von Zeitplanern dar, darunter Reservierungsstationen, zentrales Befehlsfenster usw. Die Zeitplanereinheit(en) 656 ist (sind) an die physikalische(n) Registerdateieinheit(en) 658 gekoppelt. Jede der physikalischen Registerdateieinheiten 658 stellt eine oder mehr physikalische Registerdateien dar, von denen verschiedene eine oder mehr verschiedene Datentypen speichert, wie etwa skalare Ganzzahlen, skalare Fließkommazahlen, gepackte Ganzzahlen, gepackte Fließkommazahlen, Vektorganzzahlen, Vektorfließkommazahlen usw., Status (beispielsweise ein Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. Die physikalische(n) Registerdateieinheit(en) 658 ist (sind) durch die Ausmusterungseinheit 654 überdeckt, um die verschiedenen Arten und Weisen darzustellen, auf die Registerumbenennung und Außer-Reihenfolge-Ausführung implementiert werden kann (beispielsweise unter Benutzung von einem oder mehr Aufzeichnerpuffern und einer oder mehr Ausmusterungsregisterdateien, unter Benutzung von einer oder mehr Zukunftsdateien, Verlaufspuffern und Ausmusterungsdateien; unter Benutzung von Registerkarten und einem Pool von Registern; usw.).
  • Im Allgemeinen sind die Architekturregister von außerhalb des Prozessors oder aus Sicht eines Programmierers sichtbar. Die Register sind auf keinerlei bekannte bestimmte Schaltungsart beschränkt. Verschiedene unterschiedliche Arten von Registern sind geeignet, solange sie zum Speichern und Vorsehen von Daten imstande sind, wie hierin beschrieben. Beispiele von geeigneten Registern beinhalten u.a. dedizierte physikalische Register, dynamisch zugeordnete physikalische Register unter Anwendung von Registerumbenennung, Kombinationen von dedizierten und dynamisch zugeordneten physikalischen Registern usw. Die Ausmusterungseinheit 654 und die physikalischen Registerdateieinheit(en) 658 sind an einen oder mehr Ausführungscluster 660 gekoppelt. Der (die) Ausführungscluster 660 enthält (enthalten) einen Satz von einer oder mehr Ausführungseinheiten 662 und einen Satz von einer oder mehr Speicherzugriffseinheiten 664. Die Ausführungseinheiten 662 können verschiedene Vorgänge (beispielsweise Versetzungen, Addition, Subtraktion, Multiplikation) auf verschiedene Datentypen (beispielsweise skalare Fließkommazahlen, gepackte Ganzzahlen, gepackte Fließkommazahlen, Vektorganzzahlen, Vektorfließkommazahlen) ausführen.
  • Während manche Ausführungsformen eine Anzahl von Ausführungseinheiten enthalten können, die für spezifische Funktionen oder Sätze von Funktionen bestimmt sind, können andere Ausführungsformen eine Ausführungseinheit oder mehrfache Ausführungseinheiten enthalten, die alle alle Funktionen ausführen. Die Zeitplanereinheit(en) 656, physikalischen Registerdateieinheit(en) 658 und Ausführungscluster 660 sind als möglicherweise mehrfach vorhanden gezeigt, da bestimmte Ausführungsformen separate Pipelines für bestimmte Typen von Daten/Vorgängen schaffen (beispielsweise eine skalare Ganzzahlen-Pipeline, eine skalare Fließkommazahlen-/gepackte Ganzzahlen-/gepackte Fließkommazahlen-/Vektorganzzahlen-/Vektorfließkommazahlen-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jede ihre eigene Zeitplanereinheit, physikalische Registerdateieinheit und/oder Ausführungscluster aufweisen), und im Falle einer separaten Speicherzugriffs-Pipeline sind bestimmte Ausführungsformen implementiert, in denen der Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 664 aufweist. Es versteht sich außerdem, dass, wo separate Pipelines verwendet sind, diese Pipelines Außer-Reihenfolge-Fall/Ausführung und der Rest In-Reihenfolge sein können.
  • Der Satz von Speicherzugriffseinheiten 664 ist an die Speichereinheit 670 gekoppelt, die eine Daten-TLB-Einheit 672 enthält, welche an eine Datencacheeinheit 674 gekoppelt ist, die an eine Level-2- (L2-) Cacheeinheit 676 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 664 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit enthalten, die jede an die Daten-TLB-Einheit 672 in der Speichereinheit 670 gekoppelt sind. Die L-2-Cacheeinheit 676 ist an ein oder mehr andere Cachelevels und schließlich an einen Hauptspeicher gekoppelt.
  • Als Beispiel kann die beispielhafte Registerumbenennungs-, Außer-Reihenfolge-Fall/Ausführungskernarchitektur die Pipeline folgendermaßen implementieren: 1) die Befehlsabholung führt die Abhol- und Längendecodierstufen 602 und 604 aus; 2) die Decodiereinheit 640 führt die Decodierstufe 606 aus; 3) die Umbenennungs-/Zuordnereinheit 652 führt die Zuordnungsstufe 608 und Umbenennungsstufe 610 aus; 4) die Zeitplanereinheit(en) 656 führt (führen) die Zeitplanungsstufe 612 aus; 5) die physikalischen Registerdateieinheit(en) 658 und die Speichereinheit 670 führen die Registerlese-/Speicherlesestufe 614 aus; der Ausführungscluster 660 führt die Ausführungsstufe 616 aus; 6) die Speichereinheit 670 und die physikalische(n) Registerdateieinheit(en) 658 führen die Zurückschreib-/Speicherschreibstufe 618 aus; 7) verschiedene Einheiten können an der Ausnahmehandhabungsstufe 622 beteiligt sein; und 8) die Ausmusterungseinheit 654 und die physikalische(n) Registerdateieinheit(en) 658 führen die Festschreibstufe 624 aus.
  • Der Kern 690 kann einen oder mehr Befehlssätze unterstützen (beispielsweise den x86 Befehlssatz (mit einigen Erweiterungen, die neueren Versionen hinzugefügt wurden); den MIPS Befehlssatz von MIPS Technologies aus Sunnyvale, CA, USA; den ARM Befehlssatz (mit zusätzlichen Erweiterungen wie etwa NEON) von ARM Holdings aus Sunnyvale, CA, USA).
  • Es versteht sich, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann, und dies auf verschiedenerlei Art und Weise, darunter zeitgeschachteltes Multithreading, simultanes Multithreading (wobei ein einziger physikalischer Kern einen logischen Kern für jeden der Threads vorsieht, die der physikalische Kern simultan durch Multithreading bearbeitet) oder eine Kombination davon (beispielsweise zeitgeschachteltes Abholen und Decodieren und anschließendes simultanes Multithreading, wie etwa in der Intel® Hyperthreading Technologie).
  • Obgleich Registerumbenennung im Kontext von Außer-Reihenfolge-Ausführung beschrieben ist, versteht es sich, dass Registerumbenennung in der In-Reihenfolge-Architektur benutzt werden kann. Auch wenn die dargestellte Ausführungsform außerdem separate Befehls- und Datencacheeinheiten 634/674 und eine gemeinsame L-2-Cacheeinheit 676 enthält, können alternative Ausführungsformen einen einzigen internen Cache sowohl für Befehle als auch für Daten aufweisen, wie etwa beispielsweise einen internen Level-1- (L1-) Cache, oder mehrfache interne Cachelevels. In manchen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache enthalten, der extern zum Kern und/oder Prozessor ist. Alternativ kann der gesamte Cache extern zum Kern und/oder Prozessor sein.
  • 7 ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor 700 darstellt, die logische Schaltungen zum Ausführen von Befehlen enthält, gemäß einer Ausführungsform der Erfindung. In einer Ausführungsform überwacht der Prozessor 700 die Leistung eines Verarbeitungsgeräts zum Verwalten von ungenauen Ereignissen. In manchen Ausführungsformen kann ein Befehl gemäß einer Ausführungsform zum Operieren auf Datenelementen mit Größen von Byte, Wort, Doppelwort, Quadwort usw. sowie Datentypen, wie etwa Einzel- und Doppelpräzisionsganzzahl- und Fließkommazahlendatentypen, implementiert werden. In einer Ausführungsform ist das In-Reihenfolge-Frontend 701 der Teil des Prozessors 700, der Befehle, die ausgeführt werden sollen, abholt und sie um späteren Gebrauch in der Prozessor-Pipeline vorbereitet. Das Frontend 701 kann mehrere Einheiten enthalten. In einer Ausführungsform holt der Befehlsvorholer 726 Befehle aus dem Speicher ab und führt sie einem Befehlsdecoder 728 zu, der sie seinerseits decodiert oder interpretiert. Beispielsweise decodiert der Decoder einen empfangenen Befehl in einen oder mehrere Operationen, die Mikrobefehle” oder „Mikrooperationen“ genannt werden (auch Micro-Op oder U-Op genannt), und die die Maschine ausführen kann.
  • In anderen Ausführungsformen parst der Decoder den Befehl in einen Op-Code und entsprechende Daten- und Steuerfelder, die von der Mikroarchitektur zum Ausführen von Operationen gemäß einer Ausführungsform benutzt werden. In einer Ausführungsform nimmt der Trace-Cache 730 decodierte U-Ops und stellt sie in programmgeordneten Sequenzen oder Traces in der U-Op-Schlange 734 zur Ausführung zusammen. Wenn der Trace-Cache 730 einen komplexen Befehl auffindet, sieht der Mikrocode-ROM 732 die zum Vervollständigen der Operation benötigten U-Ops vor.
  • Manche Befehle werden in ein einzelnes Mikro-Op umgewandelt, während andere mehrere Mikro-Ops zum Vervollständigen der gesamten Operation benutzen. In einer Ausführungsform, wenn mehr als vier Mikro-Ops zum Vervollständigen eines Befehls benötigt werden, greift der Decoder 728 auf den Mikrocode-ROM 732 zum Erfüllen des Befehls zu. Für eine Ausführungsform kann ein Befehl in eine kleine Anzahl von Mikro-Ops zum Verarbeiten am Befehlsdecoder 728 decodiert werden. In einer anderen Ausführungsform kann ein Befehl innerhalb des Mikrocode-ROM 732 gespeichert werden, sollte eine Anzahl von Mikro-Ops zum Ausführen der Operation benötigt werden. Der Trace-Cache 730 bezieht sich auf eine programmierbare Eingangspunkt-Logikanordnung (PLA) zum Bestimmen eines korrekten Mikrobefehlszeigers zum Lesen der Mikrocodesequenzen zum Erfüllen von einem oder mehr Befehlen gemäß einer Ausführungsform vom Mikrocode-ROM 732. Nachdem der Mikrocode-ROM 732 das sequentielle Einordnen von Mikro-Ops für einen Befehl beendet hat, nimmt das Frontend 701 der Maschine das Abholen von Mikro-Ops aus dem Trace-Cache 730 wieder auf.
  • Die Außer-Reihenfolge-Ausführungsmaschine 703 ist die Stelle, an der die Befehle zur Ausführung vorbereitet werden. Die Außer-Reihenfolge-Ausführungslogik weist eine Anzahl von Puffern zum Glätten und Umordnen des Flusses von Befehlen zum Optimieren der Leistung auf, während sie die Pipeline hinabwandern und zeitlich zur Ausführung geplant werden. Die Zuordnerlogik ordnet die Maschinenpuffer und -ressourcen zu, die jedes U-Op zum Ausführen benötigt. Die Registerumbenennungslogik benennt Register nach Einträgen in eine Registerdatei um. Der Zuordner ordnet außerdem einen Eintrag für jedes U-Op in einer der zwei U-Op-Schlangen zu, einen für Speicheroperationen und einen für Nichtspeicheroperationen, vor den Befehlszeitplanern: Speicherzeitplaner, schneller Zeitplaner 702, langsamer/allgemeiner Fließkommazeitplaner 704 und einfacher Fließkommazeitplaner 706. Die U-Op-Zeitplaner 702, 704, 706 bestimmen, wann ein U-Op zum Ausführen bereit ist, auf Grundlage der Bereitschaft ihrer abhängigen Eingaberegisteroperandenquellen und der Verfügbarkeit der Ausführungsressourcen, die die U-Ops zum Vervollständigung ihrer Operation benutzen. Die schnellen Zeitplaner 702 einer Ausführungsform können zu jeder Hälfte des Haupttaktzyklus zeitlich planen, während die anderen Zeitplaner ein Mal pro Haupttaktzyklus zeitlich planen können. Die Zeitplaner vermitteln für die Abfertigungsports zum zeitlichen Einplanen von U-Ops zur Ausführung.
  • Registerdateien 708, 710 liegen zwischen den Zeitplanern 702, 704, 706 und den Ausführungseinheiten 712, 714, 716, 718, 720, 722, 724 im Ausführungsblock 711. Es gibt eine separate Registerdatei für Ganzzahl- bzw. Fließkommaoperationen. Jede Registerdatei 708, 710 einer Ausführungsform enthält außerdem ein Umleitungsnetzwerk, das gerade abgeschlossene Ergebnisse, die noch nicht in die Registerdatei geschrieben sind, zu neuen unabhängigen U-Ops umleiten oder weiterleiten kann. Die Ganzzahlregisterdatei 708 und die Fließkommaregisterdatei 710 sind außerdem zum Kommunizieren von Daten miteinander imstande. Für eine Ausführungsform ist die Ganzzahlregisterdatei 708 in zwei separate Registerdateien getrennt, eine für die Datenbits niedrigerer Ordnung 32 und eine zweite Registerdatei für die Datenbits höherer Ordnung 32. Die Fließkommaregisterdatei 710 einer Ausführungsform weist 128 Bit weite Einträge auf, da Fließkommabefehle typischerweise Operanden von 66 bis 128 Bit in der Weite aufweisen.
  • Der Ausführungsblock 711 enthält die Ausführungseinheiten 712, 714, 716, 718, 720, 722, 724, in denen die Befehle tatsächlich ausgeführt werden. Dieser Abschnitt enthält die Registerdateien 708, 710, die die Ganzzahl- und Fließkomma-Datenoperandenwerte speichern, welche die Mikrobefehle zur Ausführung benutzen. Der Prozessor 700 einer Ausführungsform ist aus einer Anzahl von Ausführungseinheiten gebildet: Adresserstellungseinheit (AGU) 712, AGU 714, schnelle ALU 716, schnelle ALU 718, langsame ALU 720, Fließkomma-ALU 722, Fließkommabewegungseinheit 724. Für eine Ausführungsform führen die Fließkommaausführungsblöcke 722, 724 Fließkomma-, MMX-, SIMD- und SSE- oder andere Operationen aus. Die Fließkomma-ALU 722 einer Ausführungsform einen 64-Bit- durch 54-Bit-Fließkommadividierer zum Ausführen von Dividier-, Wurzelzieh- und Rest-Mikro-Ops. Für Ausführungsformen der Erfindung können Befehle, die einen Fließkommawert beinhalten, mit der Fließkommahardware gehandhabt werden.
  • In einer Ausführungsform laufen die ALU-Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 716, 718. Die schnellen ALUs 716, 718 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Für eine Ausführungsform laufen komplexeste Ganzzahloperationen zur langsamen ALU 720, da die langsame ALU 720 Ganzzahlausführungshardware für Operationsarten mit langer Latenz enthält, wie etwa Multiplizierer, Versetzungen, Flag-Logik und Zweigverarbeitung. Speicherlade-/Speicheroperationen werden durch die 712, 714 ausgeführt. Für eine Ausführungsform sind die Ganzzahl-ALUs ALUs 716, 718, 720 im Kontext des Ausführens von Ganzzahloperationen auf 64-Bit-Operanden beschrieben. In alternativen Ausführungsformen können die ALUs 716, 718, 720 zum Unterstützen von vielerlei Datenbits implementiert werden, darunter 16, 32, 128, 256 usw. Gleichweise können die Fließkommaeinheiten 722, 724 zum Unterstützen einer Reichweite von Operanden mit Bits mit verschiedenen Weiten implementiert werden. Für eine Ausführungsform können die Fließkommaeinheiten 722, 724 auf 126 Bit weite, gepackte Datenoperanden in Verbindung mit SIMD und Multimediabefehlen operieren.
  • In einer Ausführungsform fertigen die U-Ops-Zeitplaner 702, 704, 706 abhängige Operationen ab, bevor die Ausführung der übergeordneten Last ausgeführt ist. Da U-Ops spekulativ im Prozessor 700 geplant und ausgeführt werden, enthält der Prozessor 700 außerdem Logik zum Handhaben von Speicherfehlstellen. Wenn eine Datenlast im Datencache fehlt, können abhängige Operationen in der Pipeline im Gange sein, die den Zeitplaner mit vorläufig inkorrekten Daten verlassen haben. Ein Wiederholungsmechanismus verfolgt und führt Befehle erneut aus, die inkorrekte Daten benutzen. Die abhängigen Operationen sollten wiederholt werden und den unabhängigen die Vervollständigung ermöglicht werden. Die Zeitplaner und der Wiederholungsmechanismus einer Ausführungsform eines Prozessors sind außerdem zum Erfassen von Befehlssequenzen für Textzeichenfolgenvergleichsoperationen gestaltet.
  • Der Prozessor 700 kann eine Ausmusterungseinheit 754 enthalten, die an den Ausführungsblock 711 gekoppelt ist. Die Ausmusterungseinheit 754 kann ein Rundenkonstantenerstellungsmodul 705 zum Vorsehen von optimaler Bereichskonfiguration in Prozessoren enthalten, während direkte Schlüsselerweiterung zur Schlüsselerstellung ermöglicht ist.
  • Der Begriff „Register“ kann sich auf die eingebauten Prozessorspeicherstellen beziehen, die als Teil von Befehlen zum Identifizieren von Operanden benutzt werden. Anders gesagt können Register jene sein, die von außerhalb des Prozessors verwendbar sind (aus der Perspektive eines Programmierers). Die Register einer Ausführungsform sollten jedoch in der Bedeutung nicht auf eine bestimmte Schaltungsart beschränkt sein. Stattdessen ist ein Register einer Ausführungsform zum Speichern und Vorsehen von Daten und zum Ausführen der hierin beschriebenen Funktionen imstande. Die hierin beschriebenen Register können durch Schaltungen innerhalb eines Prozessors unter Verwendung von jeglicher Anzahl von verschiedenen Techniken implementiert sein, wie etwa dedizierte physikalische Register, dynamisch zugeordnete physikalische Register, die Registerumbenennung nutzen, Kombinationen von dedizierten und dynamisch zugeordneten Registern usw. In einer Ausführungsform speichern Ganzzahlregister 32-Bit-Ganzzahldaten.
  • Eine Registerdatei einer Ausführungsform enthält außerdem acht Multimedia-SIMD-Register für gepackte Daten. Für die untenstehenden Besprechungen verstehen sich die Register als Datenregister, die zum Halten von gepackten Daten gestaltet sind, wie etwa 64 Bit weite MMX-Register (in manchen Fällen außerdem als „mm“ Register bezeichnet) in Mikroprozessoren, die mit der MMX™ Technologie der Intel Corporation von Santa Clara, Kalifornien, USA, ermöglicht sind. Diese MMX-Register, die sowohl in der Ganzzahl- als auch Fließkommaform verfügbar sind, können mit gepackten Datenelementen operieren, die SIMD- und SSE-Instruktionen begleiten. Gleicherweise können 128 Bit weite XMM-Register, die sich auf SSE2-, SSE3-, SSE4-Technologie oder darüber hinaus (generisch als „SSEx“-Technologie bezeichnet) beziehen, ebenfalls zum Halten derartiger gepackter Datenoperanden benutzt werden. In einer Ausführungsform unterscheiden die Register beim Speichern von gepackten Daten und Ganzzahldaten nicht zwischen den beiden Datentypen. In einer Ausführungsform sind Ganzzahl- und Fließkommadaten entweder in derselben Registerdatei oder in verschiedenen Registerdateien enthalten. Zudem können in einer Ausführungsform Fließkomma- und Ganzzahldaten in verschiedenen Registern oder in denselben Registern gespeichert sein.
  • Unter Bezugnahme auf 8 ist ein Blockdiagramm eines Systems 800 gemäß einer Ausführungsform der Erfindung gezeigt. Das System 800 kann einen oder mehr Prozessoren 810, 815 enthalten, die an einen Grafikspeichersteuerhub (GMCH) 820 gekoppelt sind. Die optionale Natur von zusätzlichen Prozessoren 815 ist in 8 mit gestrichelten Linien bezeichnet. In einer Ausführungsform überwacht ein Prozessor 810, 815 ein Verarbeitungsgerät zum Verwalten von ungenauen Ereignissen.
  • Jeder Prozessor 810, 815 kann eine Version der Schaltung, integrierten Schaltung, des Prozessors und oder der integrierten Siliziumschaltung wie oben beschrieben sein. Es ist jedoch zu beachten, dass es unwahrscheinlich ist, dass integrierte Grafiklogik und integrierte Speichersteuereinheiten in den Prozessoren 810, 815 vorkommen würden. 8 stellt dar, dass der GMCH 820 an einen Speicher 840 gekoppelt sein kann, der beispielsweise ein dynamischer Direktzugriffsspeicher (DRAM) sein kann. Der DRAM kann für mindestens eine Ausführungsform mit einem nichtflüchtigen Cache assoziiert sein.
  • Der GMCH 820 kann ein Chipsatz oder ein Abschnitt eines Chipsatzes sein. Der GMCH 820 kann mit dem (den) Prozessor(en) 810, 815 kommunizieren und Interaktion zwischen dem (den) Prozessor(en) 810, 815 und dem Speicher 840 steuern. Der GMCH 820 kann außerdem als eine beschleunigte Busschnittstelle zwischen dem (den) Prozessor(en) 810, 815 und anderen Elementen des Systems 800 wirken. Für mindestens eine Ausführungsform kommuniziert der GMCH 820 mit dem (den) Prozessoren über einen Mehrstationenbus, wie etwa einen Frontseitenbus (FSB) 895.
  • Zudem ist der GMCH 820 an eine Anzeige 845 (wie etwa eine Flachbildschirm- oder Berührungsbildschirmanzeige) gekoppelt. Der GMCH 820 kann einen integrierten Grafikbeschleuniger enthalten. Der GMCH 820 ist ferner an einen Eingang/Ausgang- (E/A-) Steuerhub (ICH 850 gekoppelt, der zum Ankoppeln von verschiedenen peripheren Geräten an das System 800 benutzt sein kann. In der Ausführungsform von 8 ist beispielsweise ein externes Grafikgerät 860, das ein diskretes Grafikgerät sein kann, das an den ICH 850 gekoppelt ist, zusammen mit einem anderen peripheren Gerät 870 gezeigt.
  • Alternativ können zusätzliche oder andere Prozessoren ebenfalls im System 800 vorhanden sein. Beispielsweise kann ein oder mehr zusätzliche Prozessoren 815 einen oder mehr zusätzliche Prozessoren enthalten, die derselbe wie der Prozessor 810 sind, einen oder mehr Prozessoren, die heterogen oder asymmetrisch zum Prozessor 810 sind, Beschleuniger (wie etwa beispielsweise Grafikbeschleuniger oder digitale Signalverarbeitungseinheiten (DSP)), feldprogrammierbare Gatteranordnungen oder jeglichen anderen Prozessor. Es können verschiedenartige Unterschiede zwischen dem (den) Prozessor(en) 810, 815 hinsichtlich eines Spektrums von Wertmetrik bestehen, darunter architektonische, mikroarchitektonische thermische, Leistungsverbrauchkennzeichen und dergleichen. Diese Unterschiede können sich als Asymmetrie und Heterogenität unter den Prozessoren 810, 815 offenbaren. Für mindestens eine Ausführungsform können die Prozessoren 810, 815 im selben Plättchenpaket residieren.
  • Ausführungsformen können in zahlreichen verschiedenen Systemarten implementiert werden. 9 ist ein Blockdiagramm eines SoC 900 gemäß einer Ausführungsform der vorliegenden Offenbarung. Kästen mit gestrichelten Linien sind optionale Merkmale in weiterentwickelten SoCs. In 9 ist (sind) eine Zusammenschaltungseinheit(en) 912 an folgendes gekoppelt: einen Anwendungsprozessor 920, der einen Satz von einem oder mehr Kernen 902 A-N und (eine) gemeinsame Cacheeinheit(en) 906 enthält; eine Systemdiensteinheit 910; (eine) integrierte Speichersteuerungseinheit(en) 914; einen Satz von oder einen oder mehr Medienprozessoren 918, der/die integrierte Grafiklogik 908, einen Bildprozessor 924 zum Vorsehen von Standbild- und/oder Videokamerafunktionalität, einen Audioprozessor 926 zum Vorsehen von Hardwareaudiobeschleunigung und einen Videoprozessor 928 zum Vorsehen von Videocodier-/-decodierbeschleunigung enthalten kann/können; eine statische Direktzugriffsspeicher- (SRAM-) Einheit 932; und eine Anzeigeneinheit 940 zum Ankoppeln an eine oder mehr externe Anzeigen. In einer Ausführungsform kann ein Speichermodul in der (den) integrierten Speichersteuerungseinheit(en) 914 enthalten sein. In einer anderen Ausführungsform kann das Speichermodul in einer oder mehr anderen Komponenten des SoC 900 enthalten sein, die zum Zugreifen auf und/oder Steuern eines Speichers benutzt werden können. Der Anwendungsprozessor 920 kann eine bedingte Abzweigung, indirekte Abzweigung und Ereignisausführungslogik enthalten, wie in Ausführungsformen hierin beschrieben.
  • Die Speicherhierarchie enthält ein oder mehr Cachelevel innerhalb der Kerne, einen Satz von oder eine oder mehr gemeinsame Cacheeinheiten 906 und einen externen Speicher (nicht gezeigt), der an den Satz von integrierten Speichersteuerungseinheiten 914 gekoppelt ist. Der Satz von gemeinsamen Cacheeinheiten 906 kann einen oder mehr Mittellevelcaches enthalten, wie etwa Level-2- (L2-), Level-3-(L3-), Level-4- (L4-) oder andere Cachelevel, einen Cache im letzten Level (LLC) und/oder Kombinationen davon.
  • In manchen Ausführungsformen ist einer oder mehrere der Kerne 902A-N zum Multithreading imstande.
  • Der Systemdienst 910 enthält jene Komponenten, die die Kerne 902A-N koordinieren und betreiben. Die Systemdiensteinheit 910 kann beispielsweise eine Leistungssteuereinheit (PCU) und eine Anzeigeeinheit enthalten. Die PCU kann Logik und Komponenten, die zum Regulieren des Leistungszustands der Kerne 902A-N und der integrierten Grafiklogik 908 benötigt werden, sein oder enthalten. Die Anzeigeeinheit dient zum Betreiben von einer oder mehr extern verbundenen Anzeigen.
  • Die Kerne 902A-N können hinsichtlich Architektur und/oder Befehlssatz homogen oder heterogen sein. Beispielsweise können einige der Kerne 902A-N in Reihenfolge sein, während andere außer Reihenfolge sind. Als weiteres Beispiel können zwei oder mehr der Kerne 902A-N zur Ausführung desselben Befehlssatzes imstande sein, während andere zum Ausführen von nur einem Teilsatz dieses Befehlssatzes oder eines anderen Befehlssatzes imstande sind.
  • Der Anwendungsprozessor 920 kann ein Allzweckprozessor sein, wie etwa ein Core™ i3, i5, i7, 2 Duo und Quad, Xeon™, Itanium™, Atom™, XScale™ oder StrongARM™ Prozessor, die bei der Intel™ Corporation aus Santa Clara, Kalifornien, USA, erhältlich sind. Alternativ kann der Anwendungsprozessor 920 von einer anderen Firma sein, wie etwa ARM Holdings™, Ltd, MIPS™ usw. Der Anwendungsprozessor 920 kann ein Prozessor für besondere Zwecke sein, wie etwa ein Netzwerk- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, Ko-Prozessor, eingebetteter Prozessor oder dergleichen. Der Anwendungsprozessor 920 kann auf einem oder mehr Chips implementiert sein. Der Anwendungsprozessor 920 kann ein Teil von einem oder mehr Substraten sein und/oder darauf implementiert sein, unter Anwendung von jeglicher Anzahl von Prozesstechnologien, wie etwa beispielsweise BiCMOS, CMOS oder NMOS.
  • 10 ist ein Blockdiagramm einer Ausführungsform einer System-auf-Chip- (SoC-) Gestaltung gemäß der vorliegenden Offenbarung. Als spezifisches veranschaulichendes Beispiel ist das SoC 1000 in einer Benutzereinrichtung (UE) enthalten. In einer Ausführungsform bezieht sich UE auf jegliches Gerät, das von einem Endbenutzer zum Kommunizieren benutzt werden soll, wie etwa ein handgehaltenes Telefon, Smartphone, einen Tablet-Computer, ein ultradünnes Notebook, ein Notebook mit Breitbandadapter oder jegliches andere ähnliche Kommunikationsgerät. Häufig verbindet sich eine UE mit einer Basisstation oder einem Knoten, der potentiell seiner Natur nach einer Mobilstation (MS) in einem GSM-Netz entspricht.
  • Hier enthält das SOC 1000 zwei Kerne - 1006 und 1007. Die Kerne 1006 und 1007 können mit einer Befehlssatzarchitektur konform sein, wie etwa einem Intel® Architecture Core™-basierten Prozessor, einem Advanced Micro Devices, Inc. (AMD) Prozessor, einem MIPS-basierten Prozessor, einem ARM-basierten Prozessordesign oder eines Kunden davon sowie ihrer Lizenznehmer oder Erstanwender. Die Kerne 1006 und 1007 sind an die Cachesteuerung 1008 gekoppelt, die der Busschnittstelleneinheit 1008 und dem L2-Cache 1010 zugeordnet ist, um mit anderen Teilen des Systems 1000 zu kommunizieren. Die Zwischenschaltung 1010 enthält eine Zusammenschaltung-auf-Chip, wie etwa IOSF, AMBA oder andere, oben besprochene Zusammenschaltung, die potentiell einen oder mehr Aspekte der beschriebenen Offenbarung implementiert. In einer Ausführungsform kann eine bedingte Abzweigung, indirekte Abzweigung und Ereignisausführungslogik in den Kernen 1006, 1007 enthalten sein.
  • Die Zusammenschaltung 1010 sieht Kommunikationskanäle zu den anderen Komponenten vor, wie etwa ein Teilnehmeridentitätsmodul (SIM) 1030 zum Verbinden mit einer SIM-Karte, einen Boot-ROM 1035 zum Halten von Bootcode zur Ausführung durch die Kerne 1006 und 1007 zum Initialisieren und Booten des SoC 1000, eine SDRAM-Steuerung 1040 zum Verbinden mit einem externen Speicher (beispielsweise DRAM 1060), eine Flash-Steuerung 1045 zum Verbinden mit einem nichtflüchtigen Speicher (beispielsweise 1065), eine periphere Steuerung 1050 (beispielsweise Serielle periphere Schnittstelle) zum Verbinden mit peripheren Geräten, Videocodecs 1020 und eine Videooberfläche 1025 zum Anzeigen und Empfangen von Eingaben (beispielsweise durch Berührung ermöglichte Eingabe), eine GPU 1015 zum Ausführen von grafikbezogenen Rechnungen usw. Jegliche dieser Schnittstellen kann Aspekte der hierin beschriebenen Offenbarung beinhalten. Zudem stellt das System 1000 Peripheriegeräte zur Kommunikation dar, wie etwa ein Bluetooth-Modul 1070, 3G-Modem 1075, GPS 1080 und Wi-Fi 1085.
  • Unter Bezugnahme auf 11 ist ein Blockdiagramm eines Systems 1100 gemäß einer Ausführungsform der Erfindung gezeigt. Wie in 11 gezeigt, ist das Mehrfachprozessorsystem 1100 ein Punkt-zu-Punkt-Zusammenschaltungssystem und enthält einen ersten Prozessor 1170 und einen zweiten Prozessor 1180, die über eine Punkt-zu-Punkt-Zusammenschaltung 1150 gekoppelt sind. Jeder der Prozessoren 1170 und 1180 kann eine Version der Prozessoren des Rechensystems sein, wie sie hierin beschrieben sind. In einer Ausführungsform überwachen die Prozessoren 1170, 1180 die Leistung eines Verarbeitungsgeräts zum Verwalten von ungenauen Ereignissen.
  • Während er mit zwei Prozessoren 1170, 1180 gezeigt ist, versteht es sich, dass der Umfang der Offenbarung nicht derart beschränkt ist. In anderen Ausführungsformen können ein oder mehr zusätzliche Prozessoren in einem jeweiligen Prozessor vorhanden sein.
  • Die Prozessoren 1170 und 1180 sind als integrierte Speichersteuerungseinheiten 1172 bzw. 1182 beinhaltend gezeigt. Der Prozessor 1170 enthält außerdem als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt- (P-P-) Schnittstellen 1176 und 1178; gleicherweise enthält der zweite Prozessor 1180 P-P-Schnittstellen 1186 und 1188. Die Prozessoren 1170, 1180 können Information über eine Punkt-zu-Punkt- (P-P-) Schnittstelle 1150 unter Verwendung von P-P-Schaltungen 1178, 1188 austauschen. Wie in 11 gezeigt, koppeln die IMCs 1172 und 1182 die Prozessoren an jeweilige Speicher, nämlich einen Speicher 1132 und einen Speicher 1134, die Abschnitte eines Hauptspeichers sein können, der lokal an den jeweiligen Prozessoren angebracht ist.
  • Die Prozessoren 1170 und 1180 können Information mit einem Chipsatz 1190 über individuelle P-P-Schnittstellen 1152, 1154 unter Verwendung von Punkt-zu-Punkt-Schaltungen 1176, 1194, 1186, 1198 austauschen. Der Chipsatz 1190 kann außerdem Information mit einer Hochleistungsgrafikschaltung 1138 über eine Hochleistungsgrafikschnittstelle 1139 austauschen.
  • Ein gemeinsamer Cache (nicht gezeigt) kann in einem der Prozessoren oder außerhalb von beiden Prozessoren, jedoch mit den Prozessoren über P-P-Zwischenschaltung verbunden, enthalten sein, sodass die lokale Cacheinformation von einem der oder beiden Prozessoren im gemeinsamen Cache gespeichert werden kann, falls ein Prozessor in einen niedrigeren Leistungsmodus versetzt wird.
  • Der Chipsatz 1190 kann über eine Schnittstelle 1116 an einen ersten Bus 1116 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1116 ein Peripheral Component Interconnect- (PCI-) Bus sein, oder ein Bus wie etwa ein PCI-Express-Bus oder ein anderer E/A-Zusammenschaltungsbus der dritten Generation, obgleich der Umfang der Offenbarung nicht derart beschränkt ist.
  • Wie in 11 gezeigt können verschiedene E/A-Geräte 1114 an den ersten Bus 1116 gekoppelt sein, zusammen mit einer Busbrücke 1118, die den ersten Bus 1116 an einen zweiten Bus 1120 koppelt. In einer Ausführungsform kann der zweite Bus 1120 ein Bus mit niedriger Pin-Anzahl (LPC) sein. Verschiedene Geräte können an den zweiten Bus 1120 gekoppelt sein, darunter beispielsweise in einer Ausführungsform eine Tastatur und/oder Maus 1122, Kommunikationsgeräte 1127 und eine Speichereinheit 1128, wie etwa eine Festplatte oder ein anderes Massenspeichergerät, das Befehle/Code und Daten 1130 enthalten kann. Ferner kann ein Audio-E/A 1124 an den zweiten Bus 1120 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur von 11 einen Mehrstationenbus oder eine andere derartige Architektur implementieren.
  • Unter Bezugnahme auf 12 ist ein Blockdiagramm eines Systems 1200 gemäß einer Ausführungsform der Erfindung gezeigt. 12 stellt Prozessoren 1270, 1280 dar. In einer Ausführungsform überwachen die Prozessoren 1270, 1280 die Leistung eines Verarbeitungsgeräts zum Verwalten von ungenauen Ereignissen. Zudem können die Prozessoren 1270, 1280 integrierte Speicher bzw. E/A-Steuerlogik („CL“) 1272 bzw. 1282 enthalten und miteinander über die Punkt-zu-Punkt-Zusammenschaltung 1250 zwischen Punkt-zu-Punkt- (P-P-) Schnittstellen 1278 bzw. 1288 kommunizieren. Die Prozessoren 1270, 1280 kommunizieren wie gezeigt jeder mit dem Chipsatz 1290 über die Punkt-zu-Punkt-Zusammenschaltung 1252 und 1254 durch die jeweiligen P-P-Schnittstellen 1276 bis 1294 und 1286 bis 1298. Für mindestens eine Ausführungsform kann die CL 1272, 1282 integrierte Speichersteuerungseinheiten enthalten. Die CLs 1272, 1282 können E/A-Steuerlogik enthalten. Wie dargestellt, sind die Speicher 1232, 1234, die an die CLs 1272, 1282 und E/A-Geräte 1214 gekoppelt sind, ebenfalls an die Steuerlogik 1272, 1282 gekoppelt. Ältere E/A-Geräte 1215 sind über die Schnittstelle 1296 an den Chipsatz 1290 gekoppelt.
  • 13 stellt ein Blockdiagramm 1300 einer Ausführungsform eines Tablet-Rechengeräts, eines Smartphones oder anderen Mobilgeräts dar, bei dem Berührungsbildschirmschnittstellenverbinder benutzt werden können. Der Prozessor 1300 kann eine Leistung eines Verarbeitungsgeräts zum Verwalten von ungenauen Ereignissen überwachen. Zudem führt der Prozessor 1310 die primären Verarbeitungsvorgänge aus. Das Audio-Subsystem 1320 stellt Hardware- (beispielsweise Audiohardware und Audioschaltungen) und Software- (beispielsweise Treiber, Codecs) Komponenten dar, die zum Vorsehen von Audiofunktionen für das Rechengerät zugeordnet sind. In einer Ausführungsform interagiert ein Benutzer mit dem Tablet-Rechengerät oder Smartphone durch Vorsehen von Audiobefehlen, die vom Prozessor 1310 empfangen und verarbeitet werden.
  • Das Anzeigensubsystem 1332 stellt Hardware- (beispielsweise Anzeigegeräte) und Software- (beispielsweise Treiber) Komponenten dar, die eine visuelle und/oder berührungsempfindliche Anzeige für einen Benutzer zum Interagieren mit dem Tablet-Rechengerät oder Smartphone vorsehen. Das Anzeigesubsystem 1330 enthält eine Anzeigenoberfläche 1332, die das bestimmte Bildschirm- oder Hardwaregerät enthält, das zum Vorsehen einer Anzeige für den Benutzer benutzt wird. In einer Ausführungsform enthält das Anzeigensubsystem 1330 ein Berührungsbildschirmgerät, das sowohl Eingabe als auch Ausgabe für einen Benutzer vorsieht.
  • Die E/A-Steuerung 1340 stellt Hardwaregeräte und Softwarekomponenten dar, die der Interaktion mit einem Benutzer zugeordnet sind. Die E/A-Steuerung 1340 kann zum Verwalten von Hardware arbeiten, die Teil des Audio-Subsystems 1320 und/oder Anzeigensubsystems 1330 ist. Zudem stellt die E/A-Steuerung 1340 einen Verbindungspunkt für zusätzliche Geräte dar, die sich mit dem Tablet-Rechengerät oder Smartphone verbinden, über das ein Benutzer interagieren kann. In einer Ausführungsform verwaltet die E/A-Steuerung 1340 Geräte wie etwa Beschleunigungsmesser, Kameras, Lichtsensoren oder andere Umgebungssensoren oder andere Hardware, die im Tablet-Rechengerät oder Smartphone enthalten sein kann. Die Eingabe kann Teil einer direkten Benutzerinteraktion sein sowie Umgebungseingabe in das Tablet-Rechengerät oder Smartphone vorsehen.
  • In einer Ausführungsform enthält das Tablet-Rechengerät oder Smartphone eine Leistungsverwaltung 1350, die Batterieleistungsbenutzung, Laden der Batterie und Merkmale verwaltet, die mit Leistungseinsparungsbetrieb verbunden sind. Das Speichersubsystem 1360 enthält Speichergeräte zum Speichern von Information im Tablet-Rechengerät oder Smartphone. Konnektivität 1370 beinhaltet Hardwaregeräte (beispielsweise drahtlose und/oder verdrahtete Verbinder und Kommunikationshardware) und Softwarekomponenten (beispielsweise Treiber, Protokollstapel) zum Tablet-Rechengerät oder Smartphone zum Kommunizieren mit externen Geräten. Zellulare Konnektivität 1372 kann beispielsweise drahtlose Träger wie etwa GSM (globales System für Mobilkommunikationen), CDMA (Codemultiplex-Vielfachzugriff), TDM (Zeitmultiplex-Vielfachzugriff) oder andere zellulare Dienststandards. Drahtlose Konnektivität 1374 kann beispielsweise Aktivität beinhalten, die nicht zellular ist, wie etwa persönliche Netzwerke (beispielsweise Bluetooth), lokale Netzwerke (beispielsweise WiFi) und/oder Weitbereichsnetzwerke (beispielsweise WiMax) oder andere drahtlose Kommunikation.
  • Periphere Verbindungen 1380 enthalten Hardwareschnittstellen und Verbinder sowie Softwarekomponenten (beispielsweise Treiber, Protokollstapel) zum Herstellen von peripheren Verbindungen als ein peripheres Gerät („zu“ 1382) mit anderen Rechengeräten, sowie dazu, periphere Geräte („von“ 1384) mit dem Tablet-Rechengerät oder Smartphone verbunden aufzuweisen, darunter beispielsweise ein „Andock-”Verbinder zum Verbinden mit anderen Rechengeräten. Periphere Verbindungen 1380 enthalten übliche oder standardbasierte Verbinder, wie etwa einen Universal Serial Bus- (USB-) Verbinder, DisplayPort mit MiniDisplayPort (MDP), High Definition Multimedia Interface (HDMI), Firewire usw.
  • 14 stellt eine Diagrammdarstellung einer Maschine in der Beispielform eines Rechensystems 1400 dar, in dem ein Satz von Befehlen zum Bewirken, dass die Maschine eine beliebige oder mehr der hierin besprochenen Methodologien ausführt, ausgeführt werden kann. In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet oder dem Internet verbunden (beispielsweise vernetzt) sein. Die Maschine kann in der Kapazität eines Server- oder Clientgeräts in einer Client/Server-Netzwerkumgebung oder als gleichberechtigte Maschine in einer Peer-to-Peer- (oder verteilten) Netzwerkumgebung arbeiten. Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Settop-Box (STB), ein Personal Digital Assistant (PDA), ein Zellulartelefon, eine Webanwendung, ein Server, ein Netzwerkrouter, Schalter oder eine Brücke oder jegliche Maschine sein, die zum Ausführen eines Satzes von Befehlen (sequentiell oder anderweitig) imstande ist, welche Tätigkeiten spezifizieren, die von dieser Maschine unternommen werden sollen. Ferner ist, obgleich nur eine einzige Maschine dargestellt ist, der Begriff „Maschine“ dahingehend zu verstehen, dass er eine Sammlung von Maschinen beinhaltet, die individuell oder gemeinsam einen Satz (oder mehrere Sätze) von Befehlen zum Durchführen von einer beliebigen oder mehr der hierin besprochenen Methodologien ausführen.
  • Das Rechensystem 1400 enthält ein Verarbeitungsgerät 1402, einen Hauptspeicher 1404 (beispielsweise Festwertspeicher (ROM), Flash-Speicher, dynamischen Direktzugriffsspeicher (DRAM) (wie etwa synchronen DRAM (SDRAM) oder DRAM (RDRAM) usw.), einen statischen Speicher 1406 (beispielsweise Flash-Speicher, statischen Direktzugriffsspeicher (SRAM) usw.) und ein Datenspeichergerät 1418, die über einen Bus 1430 miteinander kommunizieren.
  • Das Verarbeitungsgerät 1402 stellt ein oder mehr Allzweckverarbeitungsgeräte dar, wie etwa einen Mikroprozessor, eine zentrale Recheneinheit oder dergleichen. Insbesondere kann das Verarbeitungsgerät ein Mikroprozessor mit komplexem Befehlssatz (CISC), ein Mikroprozessor mit reduziertem Befehlssatz (RISC), ein Mikroprozessor mit sehr langem Befehlswort (VLIW) oder ein Prozessor, der der andere Befehlssätze implementiert, oder Prozessoren, die eine Kombination von Befehlssätzen implementieren, sein. Das Verarbeitungsgerät 1402 kann außerdem ein oder mehr Verarbeitungsgeräte für besondere Zwecke sein, wie etwa eine anwendungsspezifische integrierte Schaltung (ASIC), eine feldprogrammierbare Gatteranordnung (FPGA), ein digitaler Signalprozessor (DSP), ein Netzwerkprozessor oder dergleichen. In einer Ausführungsform kann das Verarbeitungsgerät 1402 einen oder mehr Verarbeitungskerne enthalten. Die Verarbeitungsgerät 1402 ist zum Ausführen der Verarbeitungslogik 1426 zum Ausführen der hierin besprochenen Operationen konfiguriert. In einer Ausführungsform ist das Verarbeitungsgerät 1402 dasselbe wie die Rechnersysteme 100 und 200, wie bezüglich 1 beschrieben, die das NPEBS-Modul 106 implementieren. Alternativ kann das Rechensystem 1400 andere Komponenten als hierin beschrieben enthalten.
  • Das Rechensystem 1400 kann ferner ein Netzwerkschnittstellengerät 1408 enthalten, das kommunikationstechnisch an ein Netzwerk 1420 gekoppelt ist. Das Rechensystem 1400 kann außerdem eine Videoanzeigeneinheit 1410 (beispielsweise eine Flüssigkristallanzeige (LCD) oder eine Kathodenstrahlröhre (CRT)), ein alphanumerisches Eingabegerät 1412 (beispielsweise eine Tastatur), ein Zeigersteuergerät 1414 (beispielsweise eine Maus), ein Signalerzeugungsgerät 1416 (beispielsweise einen Lautsprecher) oder andere periphere Geräte enthalten. Zudem kann das Rechensystem 1400 eine Grafikverarbeitungseinheit 1422, eine Videoverarbeitungseinheit 1428 und eine Audioverarbeitungseinheit 1432 enthalten. In einer anderen Ausführungsform kann das Rechensystem 1400 einen Chipsatz (nicht dargestellt), der sich auf eine Gruppe von integrierten Schaltungen bezieht, oder Chips enthalten, die zum Arbeiten mit dem Verarbeitungsgerät 1402 und steuern von Kommunikationen zwischen dem Verarbeitungsgerät 1402 und externen Geräten gestaltet sind. Beispielsweise kann der Chipsatz ein Satz von Chips auf einer Hauptplatine sein, der das Verarbeitungsgerät 1402 mit Geräten mit sehr hoher Geschwindigkeit verknüpft, wie etwa dem Hauptspeicher 1404 und Grafiksteuerungen, sowie das Verarbeitungsgerät 1402 mit peripheren Bussen mit niedrigerer Geschwindigkeit von Peripheriegeräten verknüpft, wie etwa USB-, PCI- oder ISA-Bussen.
  • Das Datenspeichergerät 1418 kann ein maschinenlesbares Speichermedium 1424 enthalten, auf dem Software 1426 gespeichert ist, die eine beliebige oder mehr der hierin beschriebenen Methodologien von Funktionen verkörpert. Die Software 1426 kann außerdem, vollständig oder mindestens teilweise, innerhalb des Hauptspeichers 1404 als Befehle 1426 und/oder innerhalb des Verarbeitungsgeräts 1402 als Verarbeitungslogik 1426 während der Ausführung derselben durch das Rechensystem 1400 residieren; wobei der Hauptspeicher 1404 und das Verarbeitungsgerät 1402 außerdem die maschinenlesbaren Speichermedien bilden.
  • Das maschinenlesbare Speichermedium 1424 kann außerdem zum Speichern von Befehlen 1426 unter Nutzung des NPEBS-Moduls 106, das bezüglich 1 beschrieben ist, und/oder einer Softwarebibliothek, die Verfahren enthält, welche die obigen Anwendungen aufrufen, benutzt werden. Während das maschinenlesbare Speichermedium 1424 in einer beispielhaften Ausführungsform als einzelnes Medium gezeigt ist, ist der Begriff „maschinenlesbares Speichermedium“ dahingehend zu verstehen, dass er ein einzelnes Medium oder mehrere Medien (beispielsweise eine zentralisierte oder verteilte Datenbank und/oder zugeordnete Caches und Server) beinhaltet, die den einen oder mehr Befehlssätze speichern. Der Begriff „maschinenlesbares Speichermedium“ ist außerdem dahingehend zu verstehen, dass er jegliches Medium beinhaltet, das zum Speichern, Codieren und Befördern eines Befehlssatzes zur Ausführung durch die Maschine imstande ist, der bewirkt, dass die Maschine eine beliebige oder mehr der Methodologien der Ausführungsformen ausführt. Der Begriff „maschinenlesbares Speichermedium“ ist dementsprechend dahingehend zu verstehen, dass er u.a. Festkörperspeicher und optische und magnetische Medien beinhaltet. Während die Erfindung bezüglich einer begrenzten Anzahl von Ausführungsformen beschrieben wurde, wird der Fachmann zahlreiche Modifikationen und Variationen derselben erkennen. Es ist beabsichtigt, dass die beiliegenden Ansprüche alle derartigen Modifikationen und Variationen abdecken, wie sie unter Umfang und Wesen dieser Erfindung fallen.
  • Die folgenden Beispiele gehören zu weiteren Ausführungsformen.
  • Beispiel 1 ist ein Verarbeitungssystem, aufweisend einen Speicher und eine Verarbeitungslogik, die betriebsfähig an den Speicher gekoppelt ist, wobei die Verarbeitungslogik zum Identifizieren von einem oder mehr Konstantenbits einer Ausgabebitsequenz, Erstellen von mehreren Variablenbits der Ausgabebitsequenz und Erzeugen der Ausgabebitsequenz dient, die die identifizierten Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  • In Beispiel 2 kann der Gegenstand von Beispiel 1 optional beinhalten, dass das Erstellen der mehreren Variablenbits in einem Verschlüsselungsmodus das Inkrementieren eines Akkumulators um einen Ganzzahlwert aufweist.
  • In Beispiel 3 kann der Gegenstand von Beispiel 1-2 optional beinhalten, dass das Erstellen der mehreren Variablenbits in einem Entschlüsselungsmodus das Dekrementieren eines Akkumulators um einen Ganzzahlwert aufweist.
  • In Beispiel 4 kann der Gegenstand von Beispiel 1-3 optional beinhalten, dass die mehreren Variablenbits eine periodische Wiederholung eines Satzes der mehreren Variablenbits aufweisen.
  • In Beispiel 5 kann der Gegenstand von Beispiel 1-4 optional beinhalten, dass die Ausgabebitsequenz in einem Register gespeichert wird.
  • Beispiel 6 ist ein Verarbeitungssystem, aufweisend einen Speicher und eine Verarbeitungslogik, die betriebsfähig an den Speicher gekoppelt ist, wobei die Verarbeitungslogik einen Zähler, der auf ein erstes Muster unter mehreren Mustern zum Erstellen eines ersten Satzes von Variablenbits unter mehreren Variablenbits einer Ausgabebitsequenz initialisiert wird, und eine Addiererschaltung, die zum Erstellen eines zweiten Musters unter den mehreren Mustern an den Zähler gekoppelt ist, aufweist, wobei eine Ausgabe der Addiererschaltung das zweite Muster zum Erstellen eines zweiten Satzes von Variablenbits unter mehreren Variablenbits der Ausgabebitsequenz nutzt, wobei sich der zweite Satz von Variablenbits vom ersten Satz von Variablenbits unterscheidet.
  • In Beispiel 7 kann der Gegenstand von Beispiel 6 optional beinhalten, dass der Zähler um eine Ganzzahl in jedem Zyklus in einem Verschlüsselungsbetriebsmodus dekrementiert wird, wobei der Zähler um eine Ganzzahl in jedem Zyklus in einem Entschlüsselungsbetriebsmodus inkrementiert wird.
  • In Beispiel 8 kann der Gegenstand von Beispiel 6-7 optional beinhalten, dass das erste Muster eine periodische Wiederholung des ersten Satzes der Variablenbits ist und das zweite Muster eine periodische Wiederholung des zweiten Satzes der Variablenbits ist.
  • In Beispiel 9 kann der Gegenstand von Beispiel 6-8 optional beinhalten, dass die Ausgabebitsequenz Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  • In Beispiel 10 kann der Gegenstand von Beispiel 6-9 optional beinhalten, dass die Ausgabebitsequenz Konstantenbits und die erstellten mehreren Bits aufweist.
  • Beispiel 11 ist ein Verfahren, aufweisend das Identifizieren von einem oder mehr Konstantenbits einer Ausgabebitsequenz, Erstellen von mehreren Variablenbits der Ausgabebitsequenz und Erzeugen der Ausgabebitsequenz, die die identifizierten Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  • In Beispiel 12 kann der Gegenstand von Beispiel 11 optional beinhalten, dass das Erstellen der mehreren Variablenbits in einem Verschlüsselungsmodus das Inkrementieren eines Akkumulators um einen Ganzzahlwert aufweist.
  • In Beispiel 13 kann der Gegenstand von Beispiel 11-12 optional beinhalten, dass das Erstellen der mehreren Variablenbits in einem Entschlüsselungsmodus das Dekrementieren eines Akkumulators um einen Ganzzahlwert aufweist.
  • In Beispiel 14 kann der Gegenstand von Beispiel 11-13 optional das Speichern der Ausgabebitsequenz in einem Register beinhalten.
  • In Beispiel 15 kann der Gegenstand von Beispiel 11-14 optional beinhalten, dass die mehreren Variablenbits eine periodische Wiederholung eines Satzes der Variablenbits aufweisen.
  • Beispiel 16 ist ein Verfahren, aufweisend das Erstellen eines ersten Satzes von Variablenbits unter mehreren Variablenbits einer Ausgabebitsequenz, wobei das Erstellen das Initialisieren eines Zählers auf ein erstes Muster unter mehreren Mustern, das Erstellen eines zweiten Musters unter den mehreren Mustern, wobei das Erstellen das Koppeln einer Addiererschaltung an den Zähler aufweist, und das Nutzen des zweiten Musters zum Erstellen eines zweiten Satzes von Variablenbits unter mehreren Variablenbits der Ausgabebitsequenz aufweist, wobei sich der zweite Satz von Variablenbits vom ersten Satz von Variablenbits unterscheidet.
  • In Beispiel 17 kann der Gegenstand von Beispiel 16 optional das Speichern der Ausgabebitsequenz in einem Register beinhalten.
  • In Beispiel 18 kann der Gegenstand von Beispiel 16-17 optional beinhalten, dass der Zähler um eine Ganzzahl in jedem Zyklus in einem Verschlüsselungsbetriebsmodus dekrementiert wird, wobei der Zähler um eine Ganzzahl in jedem Zyklus in einem Entschlüsselungsbetriebsmodus inkrementiert wird.
  • In Beispiel 19 kann der Gegenstand von Beispiel 16-18 optional beinhalten, dass das erste Muster eine periodische Wiederholung des ersten Satzes der Variablenbits ist und das zweite Muster eine periodische Wiederholung des zweiten Satzes der Variablenbits ist.
  • In Beispiel 20 kann der Gegenstand von Beispiel 16-19 optional beinhalten, dass die Ausgabebitsequenz Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  • Während die Erfindung bezüglich einer begrenzten Anzahl von Ausführungsformen beschrieben wurde, wird der Fachmann zahlreiche Modifikationen und Variationen derselben erkennen. Es ist beabsichtigt, dass die beiliegenden Ansprüche alle derartigen Modifikationen und Variationen abdecken, wie sie unter Umfang und Wesen dieser Offenbarung fallen.
  • Eine Gestaltung kann verschiedene Stufen durchlaufen, von der Schaffung zur Simulation zur Fertigung. Daten, die eine Gestaltung darstellen, können die Gestaltung auf zahlreiche Arten und Weisen darstellen. Zunächst kann die Hardware, wie es bei Simulationen nützlich ist, unter Verwendung einer Hardwarebeschreibungssprache oder anderen funktionellen Beschreibungssprache dargestellt werden. Zusätzlich kann ein Modell auf Schaltungsebene mit Logik- und/ oder Transistorgattern in manchen Stufen des Gestaltungsprozesses erzeugt werden. Zudem erreichen die meisten Gestaltungen in einer bestimmten Stufe eine Datenebene, die die physikalische Anordnung von verschiedenen Geräten im Hardwaremodell darstellt. In dem Fall, in dem herkömmliche Halbleiterfertigungstechniken angewendet werden, können die Daten, die das Hardwaremodell darstellen, die Daten sein, die das Vorhandensein oder die Abwesenheit von verschiedenen Merkmalen auf verschiedenen Maskenschichten für Masken spezifizieren, welche zum Erzeugen der integrierten Schaltung benutzt werden. In jeglicher Darstellung der Gestaltung können die Daten in jeglicher Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder ein optischer oder ein magnetischer Speicher, wie etwa eine Platte, können das maschinenlesbare Medium zum Speichern von Information sein, die über optische oder elektrische Wellen übertragen wird, welche zum Übertragen derartiger Information moduliert oder anderweitig erzeugt werden. Wenn eine elektrische Trägerwelle, die den Code oder die Gestaltung anzeigt oder befördert, in einem Ausmaß übertragen wird, dass Kopieren, Puffern oder Neuübertragung des elektrischen Signals ausgeführt wird, wird eine neue Kopie hergestellt. Dadurch kann ein Kommunikationsanbieter oder ein Netzwerkanbieter auf einem greifbaren maschinenlesbaren Medium zumindest vorübergehend ein Objekt speichern, wie etwa in eine Trägerwelle codierte Information, die Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpert.
  • Ein Modul, wie hierin verwendet, bezieht sich auf jegliche Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel enthält ein Modul Hardware, wie etwa eine Mikrosteuerung, die einem nichtflüchtigen Medium zum Speichern von Code zugeordnet ist, der dazu geeignet ist, durch die Mikrosteuerung ausgeführt zu werden. Daher betrifft die Bezugnahme auf ein Modul in einer Ausführungsform Hardware, die speziell zum Erkennen und/oder Ausführen des Codes konfiguriert ist, der auf einem nichtflüchtigen Medium gehalten werden soll. Zudem bezieht sich in einer anderen Ausführungsform der Gebrauch eines Moduls auf ein nichtflüchtiges Medium, das den Code enthält, welcher spezifisch dazu geeignet ist, durch die Mikrosteuerung zum Ausführen von vorgegebenen Vorgängen geeignet ist. Und wie daraus zu folgern ist, kann sich der Begriff Modul (in diesem Beispiel) in wiederum einer anderen Ausführungsform auf die Kombination der Mikrosteuerung und des nichtflüchtigen Mediums beziehen. Häufig variieren Modulgrenzen, die als separat dargestellt sind, üblicherweise und überdecken sich potentiell. Beispielsweise können ein erstes Modul und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon teilen, während sie potentiell manche unabhängige Hardware, Software oder Firmware zurückhalten. In einer Ausführungsform beinhaltet der Gebrauch des Begriffs Logik Hardware, wie etwa Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikgeräte.
  • Der Gebrauch des Ausdrucks „konfiguriert zu“ bezieht sich in einer Ausführungsform auf das Anordnen, Zusammenbauen, Herstellen, zum Verkauf anbieten, Importieren und/oder Gestalten einer Vorrichtung, Hardware, Logik oder eines Elements zum Ausführen einer zugeordneten oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, das nicht arbeitet, immer noch zum Ausführen einer zugeordneten Aufgabe „konfiguriert“, wenn zum Ausführen der zugeordneten Aufgabe gestaltet, angekuppelt und/oder verbunden ist. Als lediglich veranschaulichendes Beispiel kann ein Logikgatter eine 0 oder eine 1 während des Betriebs vorsehen. Ein Logikgatter jedoch, das zum Zuführen eines Aktivierungssignals zu einem Taktgeber „konfiguriert“ ist, beinhaltet nicht jedes potentielle Logikgatter, das eine 1 oder 0 vorsehen kann. Stattdessen ist das Logikgatter eines, das derart gekoppelt ist, dass während des Betriebs die Ausgabe 1 oder 0 dem Aktivieren des Taktgebers dient. Es ist erneut zu beachten, dass der Begriff „konfiguriert zu“ keinen Vorgang, sondern stattdessen Fokus auf den latenten Zustand einer Vorrichtung, Hardware und/oder eines Elements erfordert, wenn die Vorrichtung, Hardware und/oder das Element im latenten Zustand zum Ausführen einer bestimmten Aufgabe ausgelegt ist, wenn die Vorrichtung, Hardware und/oder das Element arbeitet.
  • Zudem bezieht sich der Gebrauch der Ausdrücke „zum“, „imstande zu“ und/oder „betriebsfähig zu“ in einer Ausführungsform auf eine Vorrichtung, Logik, Hardware und/oder ein Element, die/das derart gestaltet ist, dass sie/es den Gebrauch der Vorrichtung, Logik, Hardware und/oder des Elements auf spezifizierte Art und Weise ermöglicht. Wie oben ist zu beachten, dass sich der Gebrauch von „zum“, „imstande zu“ und/oder „betriebsfähig zu“ in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements bezieht, wenn die Vorrichtung, Logik, Hardware und/oder das Element nicht arbeitet, jedoch derart ausgelegt ist, dass sie/es den Gebrauch einer Vorrichtung auf spezifizierte Art und Weise ermöglicht.
  • Ein Wert, wie hierin verwendet, beinhaltet eine bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird der Gebrauch von logischen Ebenen, logischen Werten oder logischen Werten auch als Einsen und Nullen bezeichnet, die einfach binäre logische Zustände darstellen. Beispielsweise bezieht sich 1 auf eine hohe logische Ebene und 0 auf eine niedrige logische Ebene. In einer Ausführungsform kann eine Speicherzelle, wie etwa eine Transistor- oder Flash-Zelle, zum Halten eines einzelnen logischen Werts oder von mehrfachen logischen Werten imstande sein. Es wurden jedoch auch andere Darstellungen von Werten in Rechnersystemen benutzt. Beispielsweise kann die Dezimalzahl Zehn außerdem als ein Binärwert von 910 und ein Hexadezimalbuchstabe A dargestellt werden. Daher beinhaltet ein Wert jegliche Darstellung von Information, die dazu imstande ist, in einem Rechnersystem gehalten zu werden.
  • Zudem können Zustände durch Werte oder Anteile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert, wie etwa eine logische Eins, einen Vorgabe- oder Anfangszustand darstellen, während ein zweiter Wert, wie etwa eine logische Null, einen Nichtvorgabezustand darstellen kann. Zudem beziehen sich die Begriffe Zurückstellung und Einstellung in einer Ausführungsform auf einen Vorgabe- bzw. einen aktualisierten Wert oder Zustand. Beispielsweise beinhaltet ein Vorgabewert potentiell einen hohen logischen Wert, d.h. Zurückstellung, während ein aktualisierter Wert einen potentiell niedrigen Wert, d.h. Einstellung, beinhaltet. Es ist zu beachten, dass jegliche Kombination von Werten zum Darstellen von jeglicher Anzahl von Zuständen genutzt werden kann.
  • Die oben angeführten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Befehle oder Code implementiert werden, die/der auf einem maschinenzugänglichen, maschinenlesbaren, rechnerzugänglichen oder rechnerlesbaren Medium gespeichert sind/ist und durch ein Verarbeitungselement ausführbar sind/ist. Ein nichtflüchtiges maschinenzugängliches/-lesbares Medium beinhaltet jeglichen Mechanismus, der Information in einer Form vorsieht (d.h. speichert oder überträgt), die durch eine Maschine, wie etwa einen Rechner oder ein elektronisches System lesbar ist. Beispielsweise beinhaltet ein nichtflüchtiges maschinenzugängliches Medium einen Direktzugriffsspeicher (RAM), wie etwa statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichergeräte; elektrische Speichergeräte; optische Speichergeräte; akustische Speichergeräte; eine andere Form von Speichergeräten zum Halten von Information, die aus flüchtigen (verbreiteten) Signalen (beispielsweise Trägerwellen, Infrarotsignalen, digitalen Signalen)empfangen werden; usw., die von den nichtflüchtigen Medien unterschieden werden müssen, welche Information daraus empfangen.
  • Befehle, die zum Programmieren von Logik zum Ausführen von Ausführungsformen der Offenbarung benutzt werden, können innerhalb eines Speichers im System gespeichert sein, wie etwa einem DRAM, Cache, Flash-Speicher oder anderem Speicher. Zudem können die Befehle über ein Netzwerk oder durch andere rechnerlesbare Medien verteilt werden. Daher kann ein maschinenlesbares Medium jeglichen Mechanismus zum Speichern oder Übertragen von Information in einer durch eine Maschine (beispielsweise einen Rechner) lesbaren Form beinhalten, u.a. Floppy-Disks, optische Platten, Compact Discs, Festwertspeicher (CD-ROMs) und magneto-optische Platten, Festwertspeicher (ROMs), Direktzugriffsspeicher (RAM), löschbare programmierbare Festwertspeicher (EPROM), elektrisch löschbare programmierbare Festwertspeicher (EEPROM), Magnet- oder optische Karten, Flash-Speicher oder einen greifbaren maschinenlesbaren Speicher, der bei der Übertragung von Information über das Internet über elektrische, optische, akustische oder andere Formen von verbreiteten Signalen (beispielsweise Trägerwellen, Infrarotsignalen, digitalen Signalen usw.) benutzt wird. Dementsprechend beinhaltet das rechnerlesbare Medium jegliche Art von greifbarem maschinenlesbarem Medium, das zum Speichern oder Übertragen von elektronischen Befehlen oder Information in einer durch eine Maschine (beispielsweise einen Rechner) lesbaren Form geeignet ist.
  • Bezugnahme im Verlauf dieser Schrift auf „eine (1) Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein/e bestimmte/s Merkmal, Struktur oder Kennzeichen, das/die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Daher bezieht sich das Erscheinen der Ausdrücke „in einer (1) Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen im Verlauf dieser Schrift insgesamt auf dieselbe Ausführungsform. Zudem können die bestimmten Merkmale, Strukturen oder Kennzeichen auf jegliche geeignete Art und Weise in einer oder mehr Ausführungsformen kombiniert sein.
  • In der vorstehenden Schrift wurde eine detaillierte Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen vorgelegt. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom weiteren Umfang und Wesen der Offenbarung, wie in den beiliegenden Ansprüchen angeführt, abzuweichen. Die Schrift und die Zeichnungen sind dementsprechend als in einem veranschaulichenden Sinne statt in einem einschränkenden Sinne zu betrachten. Zudem bezieht sich der Gebrauch von „Ausführungsform“ und anderen beispielhaften Fachbegriffen nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf andere und unterschiedliche Ausführungsformen ebenso wie potentiell auf dieselbe Ausführungsform beziehen.

Claims (24)

  1. Verarbeitungssystem, aufweisend: einen Speicher; und eine Verarbeitungslogik, die betriebsfähig an den Speicher gekoppelt ist, wobei die Verarbeitungslogik Folgendem dient: Identifizieren von einem oder mehr Konstantenbits einer Ausgabebitsequenz; Erstellen von mehreren Variablenbits der Ausgabebitsequenz; und Erzeugen der Ausgabebitsequenz, die die identifizierten Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  2. Verarbeitungssystem nach Anspruch 1, wobei das Erstellen der mehreren Variablenbits in einem Verschlüsselungsmodus das Inkrementieren eines Akkumulators um einen Ganzzahlwert aufweist.
  3. Verarbeitungssystem nach Anspruch 1, wobei das Erstellen der mehreren Variablenbits in einem Entschlüsselungsmodus das Dekrementieren eines Akkumulators um einen Ganzzahlwert aufweist.
  4. Verarbeitungsverfahren nach Anspruch 1, wobei die mehreren Variablenbits eine periodische Wiederholung eines Satzes der mehreren Variablenbits aufweisen.
  5. Verarbeitungssystem, aufweisend: einen Speicher; und eine Verarbeitungslogik, die an den Speicher gekoppelt ist, die Verarbeitungslogik aufweisend: einen Zähler, der auf ein erstes Muster unter mehreren Mustern zum Erstellen eines ersten Satzes von Variablenbits unter mehreren Variablenbits einer Ausgabebitsequenz initialisiert wird; und eine Addiererschaltung, die zum Erstellen eines zweiten Musters unter den mehreren Mustern an den Zähler gekoppelt ist, wobei eine Ausgabe der Addiererschaltung das zweite Muster zum Erstellen eines zweiten Satzes von Variablenbits unter mehreren Variablenbits der Ausgabebitsequenz nutzt, wobei sich der zweite Satz von Variablenbits vom ersten Satz von Variablenbits unterscheidet.
  6. Verarbeitungssystem nach Anspruch 5, wobei der Zähler um eine Ganzzahl in jedem Zyklus in einem Verschlüsselungsbetriebsmodus dekrementiert wird, wobei der Zähler um eine Ganzzahl in jedem Zyklus in einem Entschlüsselungsbetriebsmodus inkrementiert wird.
  7. Verarbeitungssystem nach Anspruch 5, wobei das erste Muster eine periodische Wiederholung des ersten Satzes der Variablenbits ist und das zweite Muster eine periodische Wiederholung des zweiten Satzes der Variablenbits ist.
  8. Verarbeitungssystem nach Anspruch 5, wobei die Ausgabebitsequenz Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  9. System-auf-Chip (SoC), aufweisend: einen Speicher; und einen Prozessor, der kommunikationstechnisch an den Speicher gekoppelt ist, aufweisend: einen Verarbeitungskern; und einen Hardwarebeschleuniger, der kommunikationstechnisch an den Verarbeitungskern gekoppelt ist, um Folgendes auszuführen: Identifizieren von einem oder mehr Konstantenbits einer Ausgabebitsequenz; Erstellen von mehreren Variablenbits der Ausgabebitsequenz; und Erzeugen der Ausgabebitsequenz, die die identifizierten Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  10. SoC nach Anspruch 9, wobei die mehreren Variablenbits eine periodische Wiederholung eines Satzes der mehreren Variablenbits aufweisen.
  11. System-auf-Chip (SoC), aufweisend: einen Speicher; und einen Prozessor, der kommunikationstechnisch an den Speicher gekoppelt ist, aufweisend: einen Verarbeitungskern; und einen Hardwarebeschleuniger, der kommunikationstechnisch an den Verarbeitungskern gekoppelt ist, aufweisend: einen Zähler, der auf ein erstes Muster unter mehreren Mustern zum Erstellen eines ersten Satzes von Variablenbits unter mehreren Variablenbits einer Ausgabebitsequenz initialisiert wird; und eine Addiererschaltung, die zum Erstellen eines zweiten Musters unter den mehreren Mustern an den Zähler gekoppelt ist, wobei eine Ausgabe der Addiererschaltung das zweite Muster zum Erstellen eines zweiten Satzes von Variablenbits unter mehreren Variablenbits der Ausgabebitsequenz nutzt, wobei sich der zweite Satz von Variablenbits vom ersten Satz von Variablenbits unterscheidet.
  12. SoC nach Anspruch 11, wobei die Ausgabebitsequenz Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  13. Verfahren, aufweisend: Identifizieren von einem oder mehr Konstantenbits einer Ausgabebitsequenz; Erstellen von mehreren Variablenbits der Ausgabebitsequenz; und Erzeugen der Ausgabebitsequenz, die die identifizierten Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  14. Verfahren nach Anspruch 13, wobei die mehreren Variablenbits eine periodische Wiederholung eines Satzes der mehreren Variablenbits aufweisen.
  15. Verfahren nach Anspruch 13, wobei das Erstellen der mehreren Variablenbits in einem Verschlüsselungsmodus das Inkrementieren eines Akkumulators um einen Ganzzahlwert aufweist.
  16. Verfahren nach Anspruch 13, wobei das Erstellen der mehreren Variablenbits in einem Entschlüsselungsmodus das Dekrementieren eines Akkumulators um einen Ganzzahlwert aufweist.
  17. Verfahren, aufweisend: Erstellen eines ersten Satzes von Variablenbits unter mehreren Variablenbits einer Ausgabebitsequenz, wobei das Erstellen das Initialisieren eines Zählers auf ein erstes Muster unter mehreren Mustern aufweist; Erstellen eines zweiten Musters unter mehreren der Muster, wobei das Erstellen das Ankoppeln einer Addiererschaltung an den Zähler aufweist; und Nutzen des zweiten Musters zum Erstellen eines zweiten Satzes von Variablenbits unter mehreren Variablenbits der Ausgabebitsequenz, wobei sich der zweite Satz von Variablenbits vom ersten Satz von Variablenbits unterscheidet.
  18. Verfahren nach Anspruch 17, wobei die Ausgabebitsequenz Konstantenbits und die erstellten mehreren Variablenbits aufweist.
  19. Verfahren nach Anspruch 17, wobei der Zähler um eine Ganzzahl in jedem Zyklus in einem Verschlüsselungsbetriebsmodus dekrementiert wird, wobei der Zähler um eine Ganzzahl in jedem Zyklus in einem Entschlüsselungsbetriebsmodus inkrementiert wird.
  20. Verfahren nach Anspruch 17, wobei das erste Muster eine periodische Wiederholung des ersten Satzes der Variablenbits ist und das zweite Muster eine periodische Wiederholung des zweiten Satzes der Variablenbits ist.
  21. Maschinenlesbares Medium bzw. maschinenlesbare Medien, aufweisend mehrere Befehle, die in Reaktion auf ihre Ausführung auf einem Rechengerät bewirken, dass das Rechengerät ein Verfahren nach einem der Ansprüche 13 bis 16 ausführt.
  22. Vorrichtung, aufweisend: Mittel zum Ausführen des Verfahrens nach einem der Ansprüche 13 bis 16.
  23. Maschinenlesbares Medium bzw. maschinenlesbare Medien, aufweisend mehrere Befehle, die in Reaktion auf ihre Ausführung auf einem Rechengerät bewirken, dass das Rechengerät ein Verfahren nach einem der Ansprüche 17 bis 20 ausführt.
  24. Vorrichtung, aufweisend: Mittel zum Ausführen des Verfahrens nach einem der Ansprüche 17 bis 20.
DE112016004364.3T 2015-09-24 2016-08-15 Sms4-beschleunigungsprozessoren mit rundenkonstantenerstellung Ceased DE112016004364T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/864,227 US10103877B2 (en) 2015-09-24 2015-09-24 SMS4 acceleration processors having round constant generation
US14/864,227 2015-09-24
PCT/US2016/047054 WO2017058374A2 (en) 2015-09-24 2016-08-15 Sms4 acceleration processors having round constant generation

Publications (1)

Publication Number Publication Date
DE112016004364T5 true DE112016004364T5 (de) 2018-05-30

Family

ID=58409341

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016004364.3T Ceased DE112016004364T5 (de) 2015-09-24 2016-08-15 Sms4-beschleunigungsprozessoren mit rundenkonstantenerstellung

Country Status (4)

Country Link
US (1) US10103877B2 (de)
CN (1) CN108027866B (de)
DE (1) DE112016004364T5 (de)
WO (1) WO2017058374A2 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11057205B2 (en) * 2017-12-05 2021-07-06 Marc Leo Prince Seed key expansion method and its uses

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19733829C2 (de) * 1997-08-05 2000-02-24 Micronas Semiconductor Holding Verfahren zum Verschlüsseln bzw. Entschlüsseln einer Datenfolge
JP3499810B2 (ja) * 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
GB0121793D0 (en) * 2001-09-08 2001-10-31 Amphion Semiconductor Ltd An apparatus for generating encryption/decryption keys
CN101138195B (zh) 2005-02-14 2011-05-18 法国电信公司 用于生成伪随机数据序列的方法、系统及设备
US7702100B2 (en) * 2006-06-20 2010-04-20 Lattice Semiconductor Corporation Key generation for advanced encryption standard (AES) Decryption and the like
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US20100011047A1 (en) * 2008-07-09 2010-01-14 Viasat, Inc. Hardware-Based Cryptographic Accelerator
US8891756B2 (en) * 2008-10-30 2014-11-18 Certicom Corp. Collision-resistant elliptic curve hash functions
US9544133B2 (en) 2009-12-26 2017-01-10 Intel Corporation On-the-fly key generation for encryption and decryption
US9361106B2 (en) 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
KR101516574B1 (ko) 2014-02-21 2015-05-04 한국전자통신연구원 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법
CN104219043B (zh) * 2014-07-25 2018-03-20 西华师范大学 一种可预置和重构的密钥装置及运行方法

Also Published As

Publication number Publication date
US10103877B2 (en) 2018-10-16
CN108027866B (zh) 2023-07-25
CN108027866A (zh) 2018-05-11
US20170093562A1 (en) 2017-03-30
WO2017058374A3 (en) 2017-05-18
WO2017058374A2 (en) 2017-04-06

Similar Documents

Publication Publication Date Title
DE112017001766T5 (de) Power-side-channel-angriffsresistenter advanced-encryption-standard-beschleunigungsprozessor
DE102015007571B4 (de) Keine-lokalität-hinweis-vektor-speicherzugriff-prozessoren, -verfahren, -systeme und -befehle
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102015008012A1 (de) SM4-Beschleunigungsprozessoren, Verfahren, Systeme und Anweisungen
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE102015002215A1 (de) Sortierbeschleunigungsprozessor, -Verfahren, -Systeme und -Befehle
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE112013007701T5 (de) Ein-Chip-System (SOC), das Hybridprozessorkerne enthält
DE112013005239B4 (de) Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE102014003795A1 (de) Verfahren und Vorrichtungen für Fusionsbefehle zur Bereitstellung der OR-Test- und AND-Test-Funktionalität auf mehreren Testquellen
DE102018131595A1 (de) Verwaltung von Prozessorleistung basierend auf Benutzerunterbrechungen
DE112013004867T5 (de) Befehl und Logik zum Bereitstellen von Push-Puffer-Kopier- und Speicher-Funktionalität
DE112011105666T5 (de) Befehl und Logik zum Bereitstellen von Vektor-Lade-OP/Speicher-OP mit Schritt-Funktionalität
DE112013005428T5 (de) Befehle, Prozessoren, Verfahren und Systeme zum Verarbeiten sicherer Hash-Algorithmen
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE102015002254A1 (de) Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE112016004342T5 (de) Hardware-Beschleuniger mit doppelt affiner abgebildeter S-Box
DE102018005101A1 (de) Feld-Systemtest-Sicherheit
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112016004192T5 (de) Fehlerprüfung komprimierter Ströme in heterogenen Kompressionsbeschleunigern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final