DE112013003735B4 - Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung - Google Patents

Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung Download PDF

Info

Publication number
DE112013003735B4
DE112013003735B4 DE112013003735.1T DE112013003735T DE112013003735B4 DE 112013003735 B4 DE112013003735 B4 DE 112013003735B4 DE 112013003735 T DE112013003735 T DE 112013003735T DE 112013003735 B4 DE112013003735 B4 DE 112013003735B4
Authority
DE
Germany
Prior art keywords
value
operand
bit
instruction
rotate
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.)
Active
Application number
DE112013003735.1T
Other languages
English (en)
Other versions
DE112013003735T5 (de
Inventor
Vinodh Gopal
Gilbert M. Wolrich
James D. Guilford
Kirk S. Yap
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.)
Meta Platforms Inc
Original Assignee
Facebook Inc
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 Facebook Inc filed Critical Facebook Inc
Publication of DE112013003735T5 publication Critical patent/DE112013003735T5/de
Application granted granted Critical
Publication of DE112013003735B4 publication Critical patent/DE112013003735B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Landscapes

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

Abstract

Verfahren zum Ausführen einer Rotation-Operation und einer XOR-Operation in einem Computerprozessor als Reaktion auf eine einzige Rotations- und XOR-Anweisung, wobei die Rotations- und XOR-Anweisung einen ersten und zweiten Quellenoperanden, einen Zieloperanden, einen Opcode und einen Direktoperand-Wert umfasst, wobei das Verfahren die folgenden Schritte umfasst:Ausführen (707, 717, 727) der einzigen Rotations- und XOR-Anweisung, um in einem ersten oder zweiten Modus zu arbeiten, wobei im ersten Modus das Ausführen XOR-Verknüpfen von Werten des ersten undzweiten Quellenoperanden, um einen XOR-verknüpften Wert zu erzeugen, und dann Rotieren des XOR-verknüpften Werts um eine Anzahl X von Bitpositionen bewirkt und im zweiten Modus das Ausführen Rotieren eines Werts des ersten Quellenoperanden um die Anzahl X von Bitpositionen und XOR-Verknüpfen des rotierten Werts mit einem Wert aus dem zweiten Quellenoperanden bewirkt; undSpeichern (709, 719, 729) eines Ergebnisses entweder aus dem ersten oder dem zweiten Modus in einer mit dem Zieloperanden assoziierten Zielspeicherstelle.

Description

  • TECHNISCHES GEBIET
  • Das Gebiet der Erfindung betrifft allgemein Computerprozessorarchitektur und insbesondere Anweisungen, die, wenn sie ausgeführt werden, ein bestimmtes Ergebnis bewirken.
  • STAND DER TECHNIK
  • Der mit Blake Secure Hashing bezeichnete Algorithmus ist einer von fünf Algorithmen, die der neue NIST-SHA-3-Standard sein werden. BLAKE ist eine Familie von vier Hash-Funktionen: BLAKE-224, BLAKE-256, BLAKE-384 und BLAKE-512. BLAKE-256 und BLAKE-224 basieren auf 32-Bit-Wörtern, während BLAKE-512 und BLAKE-384 auf 64-Bit-Wörtern basieren. BLAKE-256 ist BLAKE mit 32-Bit-Wörtern, 14 Runden und 256-Bit-Ausgabe und BLAKE-512 ist BLAKE mit 64-Bit-Wörtern, 16 Runden und 512-Bit-Ausgabe.
  • Die Komprimierungsfunktion von BLAKE basiert auf einem Zustand, der durch eine 4×4-Matrix von entweder 32-Bit- oder 64-Bit-Wörtern dargestellt wird. Eine Runde von BLAKE besteht aus dem Ausführen von unabhängigen Spaltenaktualisierungen, gefolgt von unabhängigen Aktualisierungen der Diagonalelemente der Zustandsmatrix. Für jede Spalten- und Diagonalaktualisierung werden zwei Nachrichtenwörter und zwei vorbestimmte Konstanten in den Zustand eingegeben.
  • Der 16-Wort-Zustand v0 bis v15 wird folgendermaßen in Matrixform repräsentiert: | v0 v1 v2 v3 |
    Figure DE112013003735B4_0001
    | v4 v5 v6 v7 |
    Figure DE112013003735B4_0002
    | v8 v9 v10 v11 |
    Figure DE112013003735B4_0003
    | v12 v13 v14 v15 |
    Figure DE112013003735B4_0004
  • Eine Runde von BLAKE ist eine Transformation der Zustandsmatrix von v0 bis v15, die die folgende Funktion verwendet:
    • G(a, b, c, d), um zuerst die Zustandsmatrixspalten G0(v0, v4, v8, v12) G1(v1, v5, v9, v13) G2(v2, v6, v10, v14) G3(v3, v7, v11, v15) zu aktualisieren und dann die Diagonalen der Zustandsmatrix G4(v0, v5, v10, v15) G5(v1, v6, v11, v12) G6(v2, v7, v8, v13) G7(v3, v4, v9, v14) zu aktualisieren. Dies ist in 1 dargestellt.
  • Die G-Funktion besteht aus 8 abhängigen Schritten: a = a + b + ( m_r ( 2 i ) c_r ( 2 i + 1 ) )
    Figure DE112013003735B4_0005
    d = ( d a ) > > > 16
    Figure DE112013003735B4_0006
    c = c + d
    Figure DE112013003735B4_0007
    b = ( b c ) > > > 12
    Figure DE112013003735B4_0008
    a = a + b + ( m_r ( 2i + 1 ) c_r ( 2 i ) )
    Figure DE112013003735B4_0009
    d = ( d a ) > > > 8
    Figure DE112013003735B4_0010
    c = c + d
    Figure DE112013003735B4_0011
    b = ( b c ) > > > 7
    Figure DE112013003735B4_0012
    wobei m_r(2i und m_r(2i + 1) zwei von 16 Nachrichtenwörtern sind, die in jeder Runde eingegeben werden, und c_r(2i) und c_r(2i + 1) zwei von 16 Konstanten sind.
  • Die Spaltenaktualisierungsfunktionen G0, G1, G2, G3 sind unabhängig und können parallel ausgeführt werden. Beim Abschluss der Spaltenaktualisierungen werden die Diagonalaktualisierungsfunktionen G4, G5, G6, G7 ausgeführt. G4, G5, G6, G7 sind auch völlig unabhängig und können parallel ausgeführt werden.
  • Die G-Funktion erfordert 6 XORs, 6 Additionen und 4 Rotationen, wie in 2 dargestellt. Eine aus 8 G-Funktionen bestehende Runde erfordert somit 48 XORs, 48 Additionen und 32 Rotationen, also insgesamt 128 Operationen pro Runde. Zusätzliche 28 XORs werden zur Initialisierung und Finalisierung benötigt. Beispielsweise erfordert BLAKE-512 16 Runden und 16 128 = 2048 + 28 = 2076 Operationen.
  • Der Skein-Algorithmus ist ein anderer der fünf verbleibenden Algorithmen im NIST-SHA3-Secure-Hash-Standard. Skein besteht aus 3 Hauptfunktionen MIX, Permutation und Sub-Key-Addition. Die MIX-Funktion verwendet nur drei mathematische Operationen, XOR, Rotation und Carry-Propagationsadditionen an einem Paar von 64-Bit-Wörtern. Eine beispielhafte MIX-Funktion ist in 3 dargestellt.
  • Jede MIX-Funktion addiert zwei 64-Bit-Eingaben, um die ersten 64 Bit des Ergebnisses zu produzieren, und ein XOR des Additionsergebnisses mit einer rotierten Version der zweiten Eingabe, um die zweiten 64-Bit des Ergebnisses zu produzieren. Die MIX-Funktion ist 128 Bit breit und erfordert zwei MIX-Funktionen pro Runde für Skein-256, vier MIX-Funktionen pro Runde für Skein-512 und acht pro Runde für Skein-1024.
  • Eine Runde des Skein-Algorithmus sind die MIX-Funktionen über 256, 512 oder 1024 Bit, gefolgt von einer Permutation von 64-Bit-Wörtern. Es gibt 72 Runden von MIX/Permutation mit einer Sub-Key-Addition vor der ersten Runde und dann nach jeder vierten Runde. 4 von 4 Runden des Skein-256 ist der Schrift Skein Hash Funktion Family entnommen.
  • Weiterhin sind die folgenden Veröffentlichungen zum Verständnis der vorliegenden Erfindung hilfreich:
    1. a) Beuchat, Jean-Luc; Okamoto, Eiji; Yamazaki, Teppei: Compact implementations of BLAKE-32 and BLAKE-64 on FPGA. In: 201 O International Conference on Field-Programmable Technology, Dezember 2010, S. 170-177
    2. b) Bartolini, S.; Giorgi, R.; Martinelli, E.: Instruction Set Extensions for Cryptographic Applications. Cryptographic Engineering. Boston (MA):
      • Springer, 2009. S. 191- 233. - ISBN 978-0-387-71817-0.
    3. c) Kastens, Uwe [et.al.]: Feedback Driven Instruction-Set Extension. In:
      • SIGPLAN Not., 39, 11.06.2004, 7, S. 126-135. - ISSN 0362-1340.
  • In der Veröffentlichung a) wird eine FPGA Koprozessor-Funktion offenbart, bei welcher eine Kombination von XOR und anschließender Rotation ausgeführt wird, während in der Veröffentlichung b) die Instruktionen ROLX und RORX vorgeschlagen werden, welche Links- bzw. Rechts-Rotation ausführen und anschließend ein XOR durchführen. Die Veröffentlichung c) offenbart mit der Instruktion „xorlsr“ eine Variante der ROLX Instruktion der Veröffentlichung b), bei der anstelle der Rotation ein Shift ausgeführt wird.
  • Demgegenüber betrifft die vorliegende Erfindung ein Verfahren zum Ausführen einer Rotation-Operation und einer XOR-Operation in einem Computerprozessor als Reaktion auf eine einzige Rotations- und XOR-Anweisung gemäß Anspruch 1, einen entsprechenden Herstellungsartikel gemäß Anspruch 9 sowie eine entsprechende Vorrichtung gemäß Anspruch 17. Vorteilhafte Ausführungsformen können Merkmale abhängiger Ansprüche aufweisen.
  • Figurenliste
  • Die vorliegende Erfindung wird in den Figuren der beigefügten Zeichnungen, in denen gleiche Bezeichnungen ähnliche Elemente angeben, beispielhaft und nicht als Beschränkung dargestellt. Es zeigen:
    • 1 einen Teil eines Blake Secure-Hashing-Algorithmus.
    • 2 einen Teil eines BLAKE-Secure-Hashing-Algorithmus.
    • 3 einen Teil eines Skein-Secure-Hashing-Algorithmus.
    • 4 einen Teil eines Skein-Secure-Hashing-Algorithmus.
    • 5 eine beispielhafte Darstellung einer Operation einer beispielhaften ROTATEandXOR-Anweisung.
    • 6 eine andere beispielhafte Darstellung einer Operation einer beispielhaften ROTATEandXOR-Anweisung.
    • 7(A)-(C) mehrere verschiedene Ausführungsformen einer Ausführung einer ROTATEandXOR-Anweisung in einem Prozessor.
    • 8(A)-(C) Ausführungsformen eines Verfahrens zum Verarbeiten einer ROTATEandXOR-Anweisung.
    • 9 eine Ausführungsform von Pseudocode für die ROTATEandXOR-Anweisung.
    • 10 ein Blockschaltbild einer Registerarchitektur 1000 gemäß einer Ausführungsform der Erfindung.
    • 11A ein Blockschaltbild sowohl einer beispielhaften in-Reihenfolge-Pipeline als auch einer beispielhaften Registerumbenennungs-außer-Reihenfolgeausgabe-/Ausführungs-Pipeline gemäß Ausführungsformen der Erfindung.
    • 11B ein Blockschaltbild sowohl einer beispielhaften Ausführungsformen eines in-Reihenfolge-Architekturkerns als auch eines beispielhaften Registerumbenennungs-außer-Reihenfolgeausgabe-/Ausführungsarchitekturkerns zur Aufnahme in einem Prozessor gemäß Ausführungsformen der Erfindung.
    • 12A-B ein Blockschaltbild einer spezifischeren beispielhaften in-Reihenfolge-Kernarchitektur, wobei dieser Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne desselben Typs und/oder anderer Typen) in einem Chip wäre.
    • 13 ein Blockschaltbild eines Prozessors 1300, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Graphik aufweisen kann, gemäß Ausführungsformen der Erfindung.
    • 14-17 Blockschaltbilder von beispielhaften Computerarchitekturen.
    • 18 ein Blockschaltbild, das die Verwendung eines Softwareanweisungsumsetzers zum Umsetzen von binären Anweisungen in einem Quellenanweisungssatz in binäre Anweisungen in einem Zielanweisungssatz kontrastiert, gemäß Ausführungsformen der Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten dargelegt. Es versteht sich jedoch, dass Ausführungsformen der Erfindung ohne diese spezifischen Einzelheiten ausgeübt werden können. In anderen Fällen wurden wohlbekannte Schaltungen, Strukturen und Techniken nicht im Detail gezeigt, um das Verständnis der vorliegenden Beschreibung nicht zu verschleiern.
  • Verweise in der Beschreibung auf „eine Ausführungsform“, „eine Beispielausführungsform“ usw. geben an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft umfassen kann, aber nicht unbedingt jede Ausführungsformen das bestimmte Merkmal, die bestimmte Struktur oder bestimmte Eigenschaft umfassen muss. Außerdem beziehen sich solche Ausdrücke nicht unbedingt auf dieselbe Ausführungsform. Wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird, wird ferner zu verstehen gegeben, dass es im Wissen von Fachleuten liegt, ein solches Merkmal, eine solche Struktur oder eine solche Eigenschaft in Verbindung mit anderen Ausführungsformen zu bewirken, gleichgültig, ob es explizit beschrieben wird oder nicht.
  • Existierende kryptographische Hash-Algorithmen wie SHA1/2 verwenden auch Rotations- und XOR-Operationen und die Blake- und Skein-Hashing-Algorithmen und werden aus einer dedizierten Rotations- und XOR-Anweisung Nutzen ziehen. Eine Integer-Anweisung, die die XOR- und Rotationsoperation kombiniert, würde die Zahloperationen in der G-Funktion (von 16 auf 12) um 4 verringern, also eine Ersparnis von -25%. Da die Operationen in diesen Arten von Hashing-Funktionen serialisiert sind, kann der Leistungsgewinn größer sein, da die XOR-Rotationsoperationen auf dem kritischen Pfad der Datenverarbeitung liegen. Die Verarbeitung von 4 Runden von Skein-512 mit Integer-IA-Anweisungen erfordert 16 Additionen, 16 Rotationen, 16 XORs und 12 Sub-Key-Additionen (4 Additionen zum Entwickeln des Sub-Key und 8 Additionen zum Aktualisieren des Zustands alle 4 Runden), also insgesamt 60 Anweisungen. Eine Anweisung zum Kombinieren der Rotations- und XOR-Operation würde diesen Gesamtwert auf 44 verringern, also eine Ersparnis von -36%.
  • 5 zeigt eine beispielhafte Darstellung einer Operation einer beispielhaften ROTATEandXOR-Anweisung. In dieser Darstellung gibt es zwei 8-Bit-Quellenregister (SRC1 501 und SRC2 503). Zum leichteren Verständnis werden die Inhalte dieser Register als Hex-Werte xAB in SRC1 501 und xB0 in SRC2 503 gezeigt. Wie nachfolgend aufgeführt wird, sind Ausführungsformen der vorliegenden Erfindung nicht auf 8-Bit-Quellen beschränkt, und sie könnten mit jeder beliebigen Quellengröße benutzt werden, darunter, aber ohne Beschränkung darauf, 8 Bit, 16 Bit, 32 Bit, 64 Bit, 128 Bit usw.
  • In diesem Beispiel werden die zwei Quellen 501, 503 unter Verwendung von XOR-Logik 505 exklusiv-OR-verknüpft (XOR-verknüpft). Das Ergebnis des XOR wird dann durch Rotationslogik 507 um eine festgesetzte Anzahl von Positionen rotiert. Bei der dargestellten Ausführungsform ist die Rotation eine Linksrotation um eine festgesetzte Anzahl von Bitpositionen, aber bei anderen Ausführungsformen kann die Rotation eine Rechtsrotation um die festgesetzte Anzahl von Bitpositionen sein. Die Anzahl, um wieviel Bitpositionen rotiert werden soll, wird durch eine Anzahl von Bit in einem Direktoperanden der ROTATEandXOR-Anweisung bestimmt. In diesem Beispiel werden die sechs niedrigstwertigen Bit des Direktoperanden zum Bestimmen der Anzahl von Bit, um die rotiert werden soll, verwendet, und der Wert dieser Bit ist eine 1. Dementsprechend wird der x1 B-Wert aus dem XOR um 1 Bit nach links rotiert, was einen neuen Wert von x37 ergibt, der im Ziel 509 gespeichert wird. Zusätzlich ist bei bestimmten Ausführungsformen die Rotation eine Verschiebung, die einen festgesetzten Wert hereinbringt, wenn Bit des XOR herausgeschoben werden (zum Beispiel werden nur 0en oder 1en hineingeschoben). Die Ausführung dieser Anweisung ist besonders beim BLAKE-Secure-Hashing-Algorithmus nützlich.
  • 6 zeigt eine andere beispielhafte Darstellung einer Operation einer beispielhaften ROTATEandXOR-Anweisung. Dieses Beispiel unterscheidet sich insofern von dem vorherigen Beispiel, als die Rotation vor jeder XOR-Operation stattfindet. In dieser Darstellung gibt es 8-Bit-Quellenregister (SRC1 601 und SRC2 603). Zum leichteren Verständnis werden die Inhalte dieser Register als Hex-Werte xAB in SRC1 601 und xB0 in SRC2 603 gezeigt. Wie nachfolgend aufgeführt wird, sind Ausführungsformen der vorliegenden Erfindung nicht auf 8-Bit-Quellen beschränkt, und sie könnten mit einer beliebigen Quellengröße benutzt werden, darunter, aber ohne Beschränkung darauf, 8 Bit, 16 Bit, 32 Bit, 64 Bit, 128 Bit usw.
  • In diesem Beispiel wird die erste Quelle 601 durch Rotationslogik 605 um eine festgesetzte Anzahl von Bitpositionen nach links rotiert, die aus einem Direktoperanden der Anweisung bestimmt wird. Ähnlich wie im vorherigen Beispiel kann bei anderen Ausführungsformen die Rotation eine Rechtsrotation um die festgesetzte Anzahl von Bitpositionen sein. In diesem Beispiel werden die sechs niedrigstwertigen Bit des Direktoperanden zur Bestimmung der Anzahl von Bit, um die zu rotieren ist, verwendet, und der Wert dieser Bit ist eine 1. Dementsprechend wird der xAB-Wert aus der ersten Quelle 601 um 1 Bit linksrotiert, was einen neuen Wert von x75 ergibt. Zusätzlich ist bei bestimmten Ausführungsformen die Rotation eine Verschiebung, die einen festgesetzten Wert hineinbringt, wenn Bit des XOR herausgeschoben werden (zum Beispiel werden nur 0en oder 1en hineingeschoben).
  • Das Ergebnis der Rotation wird dann unter Verwendung von XOR-Logik 607 mit den Daten aus der zweiten Quelle 603 XOR-verknüpft. Dementsprechend wird x57 mit xB0 XOR-verknüpft, was ein Ergebnis von xE7 gibt, und in einem Ziel 609 gespeichert. Die Ausführung dieser Anweisung ist besonders als Teil eines Skein-Hashing-Algorithmus nützlich.
  • Beispielhaftes Format
  • Ein beispielhaftes Format dieser Anweisung ist „ROTATEandXOR DEST, SRC1, SRC2, IMM“, wobei der Operand DEST ein Zielregister (wie etwa ein Register mit 8 Bit, 16 Bit, 32 Bit, 64 Bit usw.) oder eine Speicherstelle ist, SRC1 und SRC2 Quellen sind, die entweder Register, Speicherstellen oder eine Kombination von beidem mit derselben Größe wie das Ziel sein können. IMM ist ein Direktoperand-Wert der Anweisung und kann eine beliebige Anzahl von Bit sein, bei einer Ausführungsform ist IMM jedoch ein 8-Bit-Wert. Der Opcode der Anweisung ist ROTATEandXOR.
  • Beispielhafte Verfahren zur Ausführung
  • 7(A)-(C) zeigen mehrere verschiedene Ausführungsformen einer Ausführung einer ROTATEandXOR-Anweisung in einem Prozessor.
  • In 7(A) wird bei 701 eine ROTATEandXOR-Anweisung mit zwei Quellenoperanden (Registern, Speicherstellen oder beidem), Zieloperanden (entweder ein Register oder eine Speicherstelle), einem Opcode und einem Direktoperanden abgerufen.
  • Bei 703 wird die ROTATEandXOR-Anweisung durch Decodierungslogik decodiert. Abhängig von dem Format der Anweisung können in dieser Stufe vielfältige Daten interpretiert werden, wie etwa, in welche Register zu schreiben und aus welchen abzurufen ist, auf welche Speicheradresse zuzugreifen ist usw.
  • Die Werte der Quellenoperanden werden bei 705 abgerufen/gelesen. Zum Beispiel werden die Quellenregister gelesen. Wenn einer der Quellenoperanden ein Speicheroperand ist, werden die mit diesem Operanden assoziierten Daten abgerufen.
  • Die ROTATEandXOR-Anweisung (oder Operationen, die eine solche Anweisung umfassen, wie etwa Mikrooperationen) wird bei 707 durch Ausführungsbetriebsmittel ausgeführt, wie etwa eine oder mehrere Funktionseinheiten, um die ROTATEandXOR-Anweisung auszuführen, um einen von zwei Modi durchzuführen, entweder einen ersten Modus der XOR-Verknüpfung der Werte des ersten und zweiten Quellenoperanden, um einen XOR-verknüpften Wert zu erzeugen, und dann Rotieren des XOR-verknüpften Werts (wie etwa wie in 5 dargestellt wurde), oder einen zweiten Modus des Rotierens des Werts des ersten Quellenoperanden und dann XOR-Verknüpfens dieses rotierten Werts um den Wert des zweiten Operanden (wie etwa wie in 6 dargestellt wurde). Wie oben erwähnt, kann die Rotation abhängig von der Implementierung entweder nach links oder rechts sein.
  • Die Anzahl der Bitpositionen, um die zu rotieren ist, wird durch einen oder mehrere Werte des Direktoperanden bestimmt. Bei bestimmten Ausführungsformen werden die unteren sechs Bit des Direktoperanden zur Durchführung dieser Bestimmung verwendet. Bei diesen Ausführungsformen ist der Dezimalwert dieser Bit die Anzahl der Bitpositionen, um die zu rotieren ist.
  • Zusätzlich wird durch ein oder mehrere Bit des Direktoperand-Werts die Bestimmung festgesetzt, welcher Modus zu verwenden ist. Bei bestimmten Ausführungsformen wird für diesen Zweck das höchstwertige Bit des Direktoperanden verwendet. Zum Beispiel wird, wenn der Wert eine 1 ist, der erste Modus gewählt, und wenn der Wert eine 0 ist, der zweite Modus gewählt. Es könnte natürlich die entgegengesetzte Konvention verwendet werden.
  • Bei 709 wird das Ergebnis des XOR und der Rotation (jedes Modus) in der mit dem Zieloperanden assoziierten Speicherstelle gespeichert. Obwohl 707 und 709 getrennt dargestellt wurden, werden sie bei bestimmten Ausführungsformen zusammen als Teil der Ausführung der Anweisung ausgeführt.
  • In 7(B) wird bei 711 eine ROTATEandXOR-Anweisung mit zwei Quellenoperanden (Registern, Speicherstellen oder beidem), Zieloperanden (entweder ein Register oder eine Speicherstelle), einem Opcode und einem Direktoperanden abgerufen.
  • Die ROTATEandXOR-Anweisung wird bei 713 durch Decodierungslogik decodiert. Abhängig von dem Format der Anweisung können in dieser Stufe vielfältige Daten interpretiert werden, wie etwa in welche Register zu schreiben und aus welchen abzurufen ist, auf welche Speicheradresse zuzugreifen ist usw.
  • Bei 715 werden die Werte der Quellenoperanden abgerufen/gelesen. Zum Beispiel werden die Quellenregister gelesen. Wenn einer der Quellenoperanden ein Speicheroperand ist, werden die mit diesem Operanden assoziierten Daten abgerufen.
  • Die ROTATEandXOR-Anweisung (oder Operationen, die eine solche Anweisung umfassen, wie etwa Mikrooperationen) wird bei 717 durch Ausführungsbetriebsmittel, wie etwa eine oder mehrere Funktionseinheiten, ausgeführt, um die ROTATEandXOR-Anweisung auszuführen, um die Werte des ersten und zweiten Quellenoperanden mit XOR zu verknüpfen, um einen XOR-verknüpften Wert zu erzeugen, und dann den XOR┐ verknüpften Wert (wie etwa in 5 dargestellt wurde) zu rotieren. Wie oben erwähnt, kann die Rotation abhängig von der Implementierung entweder nach links oder nach rechts sein.
  • Die Anzahl der Bitpositionen, um die zu rotieren ist, wird durch einen oder mehrere Werte des Direktoperanden bestimmt. Bei bestimmten Ausführungsformen werden die unteren sechs Bit des Direktoperanden zur Durchführung dieser Bestimmung verwendet. Bei diesen Ausführungsformen ist der Dezimalwert dieser Bit die Anzahl der Bitpositionen, um die zu rotieren ist.
  • Bei 719 wird das Ergebnis des XOR und der Rotation in der mit dem Zieloperanden assoziierten Speicherstelle gespeichert. Obwohl 717 und 719 getrennt dargestellt wurden, werden sie bei bestimmten Ausführungsformen zusammen als Teil der Ausführung der Anweisung ausgeführt.
  • In 7(C) wird bei 721 eine ROTATEandXOR-Anweisung mit zwei Quellenoperanden (Registern, Speicherstellen oder beidem), Zieloperanden (entweder ein Register oder eine Speicherstelle), einem Opcode und einem Direktoperanden abgerufen.
  • Die ROTATEandXOR-Anweisung wird bei 723 durch Decodierungslogik decodiert. Abhängig von dem Format der Anweisung können in dieser Stufe vielfältige Daten interpretiert werden, wie etwa in welche Register zu schreiben und aus welchen abzurufen ist, auf welche Speicheradresse zuzugreifen ist usw.
  • Bei 725 werden die Werte der Quellenoperanden abgerufen/gelesen. Zum Beispiel werden die Quellenregister gelesen. Wenn einer der Quellenoperanden ein Speicheroperand ist, werden die mit diesem Operanden assoziierten Daten abgerufen.
  • Die ROTATEandXOR-Anweisung (oder Operationen, die eine solche Anweisung umfassen, wie etwa Mikrooperationen) wird bei 727 durch Ausführungsbetriebsmittel, wie etwa eine oder mehrere Funktionseinheiten, ausgeführt, um die ROTATEandXOR-Anweisung auszuführen, um den Wert des ersten Quellenoperanden zu rotieren und dann diesen rotierten Wert durch den Wert des zweiten Operanden mit XOR zu verknüpfen (wie etwa in 6 dargestellt wurde). Wie oben erwähnt, kann die Rotation abhängig von der Implementierung entweder nach links oder nach rechts sein.
  • Die Anzahl der Bitpositionen, um die zu rotieren ist, wird durch einen oder mehrere Werte des Direktoperanden bestimmt. Bei bestimmten Ausführungsformen werden die unteren sechs Bit des Direktoperanden zur Durchführung dieser Bestimmung verwendet. Bei diesen Ausführungsformen ist der Dezimalwert dieser Bit die Anzahl der Bitpositionen, um die zu rotieren ist.
  • Bei 729 wird das Ergebnis des XOR und der Rotation in der mit dem Zieloperanden assoziierten Speicherstelle gespeichert. Obwohl 727 und 729 getrennt dargestellt wurden, werden sie bei bestimmten Ausführungsformen zusammen als Teil der Ausführung der Anweisung ausgeführt.
  • 8(A)-(C) zeigen Ausführungsformen eines Verfahrens zum Verarbeiten einer ROTATEandXOR-Anweisung. Bei diesen Ausführungsformen wird angenommen, dass bestimmte oder sogar alle der Operationen Abrufen, Decodieren und Abrufschritte zuvor ausgeführt wurden, aber sie werden nicht gezeigt, um die nachfolgend dargestellten Einzelheiten nicht zu verschleiern.
  • In 8(A) erfolgt bei 801 eine Bestimmung, ob der Direktoperand der ROTATEandXOR-Anweisung angibt, dass eine XOR/Rotation- oder Rotation/XOR-Operation ausgeführt werden soll. Bei bestimmten Ausführungsformen bestimmt das höchstwertige Bit des Direktoperanden den Modus (wie zuvor erläutert).
  • Wenn ein XOR/Rotationsmodus angegeben wird, werden die Daten aus der ersten und zweiten Quelle XOR-verknüpft, um ein Zwischenergebnis zu erzeugen (803). Dieses Zwischenergebnis wird um X Bitpositionen rotiert (805). Die Anzahl X von Bitpositionen wird durch ein oder mehrere Bit des Direktoperanden wie zuvor erläutert bestimmt. Zum Beispiel kann der Dezimalwert der sechs niedrigstwertigen Bit die Zahl X geben.
  • Das Ergebnis der XOR-Verknüpfungs- und Rotationsoperation wird in einer Zielspeicherstelle gespeichert, die durch den Zieloperanden angegeben wird (811).
  • Wenn ein Modus Rotation/XOR angegeben wird, werden die Daten der ersten Quelle um X Bitpositionen rotiert (807). Die Anzahl X der Bitpositionen wird durch ein oder mehrere Bit des Direktoperanden wie zuvor erläutert bestimmt. Zum Beispiel kann der Dezimalwert der sechs niedrigstwertigen Bit die Zahl X geben.
  • Dieser rotierte Wert wird mit den Daten der zweiten Quelle XOR-verknüpft (809). Das Ergebnis der XOR-Verknüpfungs- und Rotationsoperation wird in einer durch den Zieloperanden angegebenen Zielspeicherstelle gespeichert (811).
  • In 8(B) werden bei 813 die Daten aus der ersten und zweiten Quelle XOR-verknüpft, um bei 8 ein Zwischenergebnis zu erzeugen. Dieses Zwischenergebnis wird um X Bitpositionen rotiert (815). Die Anzahl X der Bitpositionen wird durch ein oder mehrere Bit des Direktoperanden wie zuvor erläutert bestimmt. Zum Beispiel kann der Dezimalwert der sechs niedrigstwertigen Bit die Zahl X geben.
  • Das Ergebnis der XOR-Verknüpfungs- und Rotationsoperation wird in einer durch den Zieloperanden angegebenen Zielspeicherstelle gespeichert (816).
  • In 8(C) werden die Daten der ersten Quelle um X Bitpositionen rotiert (817). Die Anzahl X der Bitpositionen wird durch ein oder mehrere Bit des Direktoperanden wie zuvor erläutert bestimmt. Zum Beispiel kann der Dezimalwert der sechs niedrigstwertigen Bit die Zahl X geben.
  • Dieser rotierte Wert wird mit den Daten der zweiten Quelle XOR-verknüpft (819). Das Ergebnis der XOR-Verknüpfungs- und Rotationsoperation wird in einer durch den Zieloperanden angegebenen Zielspeicherstelle gespeichert (820).
  • 9 zeigt eine Ausführungsform von Pseudocode für die ROTATEandXOR-Anweisung.
  • Beispielhafte Registerarchitektur
  • 10 ist ein Blockschaltbild einer Registerarchitektur 1000 gemäß einer Ausführungsform der Erfindung. Bei der dargestellten Ausführungsform gibt es 32 Vektorregister 1010 mit einer Breite von 516 Bit; diese Register werden als zmm0 bis zmm31 bezeichnet. Die 256 Bit niedrigerer Ordnung der unteren 16-zmm-Register werden den Registern ymm0-16 überlagert. Die 128 Bit niedrigerer Ordnung der unteren 16-zmm-Register (die 128 Bit niedrigerer Ordnung der ymm-Register) werden den Registern xmm0-15 überlagert.
  • Die Vielzweckregister 1025 - bei der dargestellten Ausführungsform gibt es sechzehn 64-Bit-Vielzweckregister, die zusammen mit den existierenden x86-Adressierungsmodi zum Adressieren von Speicheroperanden verwendet werden. Diese Register werden mit den Namen RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 bezeichnet.
  • Das Skalar-Gleitkomma-Stack-Registerfile (x87 Stack) 1045, worauf das MMX-Packed-Integer-Flat-Registerfile 1050 zugeordnet wird - bei der dargestellten Ausführungsform ist der x87-Stapel ein Acht-Element-Stapel, mit dem skalare Gleitkommaoperationen an 32/64/80-Bit Gleitkommadaten unter Verwendung der x87-Anweisungssatzerweiterung ausgeführt werden, dagegen dienen die MMX-Register zum Ausführen von Operationen an 64-Packed-Integer-Daten sowie zum Halten von Operanden für bestimmte zwischen den MMX- und XMM-Registern ausgeführte Operationen.
  • Alternative Ausführungsformen der Erfindung können breitere oder schmälere Register verwenden. Zusätzlich können alternative Ausführungsformen der Erfindung mehr, weniger oder andere Registerfiles und Register benutzen.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Prozessorkerne können auf verschiedene Weisen, für verschiedene Zwecke und in verschiedenen Prozessoren implementiert werden. Implementierungen solcher Kerne wären zum Beispiel: 1) ein Vielzweck-In-Reihenfolge-Kern, der für Vielzweckdatenverarbeitung bestimmt ist; 2) ein hochleistungsfähiger Vielzweck-Außer-Reihenfolge-Kern, der für Vielzweckdatenverarbeitung bestimmt ist; 3) ein Spezialkern, der hauptsächlich für Graphik- und/oder wissenschaftliche (Durchsatz-)Datenverarbeitung bestimmt ist. Implementierungen verschiedener Prozessoren können Folgendes umfassen: 1) eine CPU mit einem oder mehreren Vielzweck-In-Reihenfolge-Kernen, die für Vielzweckdatenverarbeitung bestimmt sind, und/oder einen oder mehrere Vielzweck-Außer-Reihenfolge-Kerne, die für Vielzweckdatenverarbeitung bestimmt sind; und 2) einen Koprozessor mit einem oder mehreren Spezialkernen, die hauptsächlich für Graphik und/oder Wissenschaft (Durchsatz) bestimmt sind. Solche verschiedenen Prozessoren fuhren zu verschiedenen Computersystemarchitekturen, die Folgendes umfassen können: 1) den Koprozessor auf einem von der CPU getrennten Chip; 2) den Koprozessor auf einem getrennten Baustein in derselben Kapselung wie eine CPU; 3) den Koprozessor auf demselben Baustein wie eine CPU (wobei ein solcher Koprozessor in diesem Fall manchmal als Speziallogik bezeichnet wird, wie etwa integrierte Graphik- und/oder wissenschaftliche (Durchsatz-)Logik, oder als Spezialkerne); und 4) ein System auf einem Chip, das auf demselben Baustein die beschriebene CPU (manchmal als Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den oben beschriebenen Koprozessor und zusätzliche Funktionalität umfassen kann. Als Nächstes werden beispielhafte Kernarchitekturen beschrieben, gefolgt von Beschreibungen von beispielhaften Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • In-Reihenfolge- und Außerreihenfolge-Kernblockschaltbild
  • 11A ist ein Blockschaltbild sowohl einer beispielhaften In-Reihenfolge-Pipeline als auch einer beispielhaften Registerumbenennungs-Außerreihenfolgeausgabe-/-Ausführungs-Pipeline gemäß Ausführungsformen der Erfindung. 11B ist ein Blockschaltbild sowohl einer beispielhaften Ausführungsform eines In-Reihenfolge-Architektur-Kerns als auch eines beispielhaften Registerumbenennungs-Außerreihenfolge-Ausgabe-/-Ausführungs-Architektur-Kerns, der in einen Prozessor gemäß Ausführungsformen der Erfindung aufgenommen werden soll. Die durchgezogen gezeichneten Kasten in 11A und 11B zeigen die In-Reihenfolge-Pipeline und den In-Reihenfolge-Kern, während der optionale Zusatz der gestrichelt gezeichneten Kästen Pipeline und Kern mit Registerumbenennung-Außerreihenfolge-Ausgabe-/-Ausführung zeigen. Da der In-Reihenfolge-Aspekt eine Teilmenge des Außer-Reihenfolge-Aspekts ist, wird der Außer-Reihenfolge-Aspekt beschrieben.
  • In 11A umfasst eine Prozessor-Pipeline 1100 eine Abrufstufe 1102, eine Längendecodierungsstufe 1104, eine Decodierungsstufe 1106, eine Zuteilungsstufe 1108, eine Umbenennungsstufe 1110, eine Scheduling-Stufe 1112 (auch als Entsende- oder Ausgabestufebekannt), eine Registerlese-/Speicherlesestufe 1114, eine Ausführungsstufe 1116, eine Rückschreib-/Speicherschreibstufe 1118, eine Programmfehlerabwicklungsstufe 1122 und eine Commit-Stufe 1124
  • 11B zeigt den Prozessorkern 1190 mit einer Frontend-Einheit 1130, die mit einer Ausführungs-Engine-Einheit 1150 gekoppelt ist, und beide sind mit einer Speichereinheit 1170 gekoppelt. Der Kern 1190 kann ein RISC-Kern (Reduced Instruction Set Computing), ein CISC-Kern (Complex Instruction Set Computing), ein VLIW-Kern (Very Long Instruction Word) oder ein hybrider oder alternativer Kerntyp sein. Als weitere Möglichkeit kann der Kern 1190 ein Spezialkern sein, wie zum Beispiel ein Netzwerk- oder Kommunikationskern, eine Kompressions-Engine, ein Koprozessor-Kern, ein GPGPU-Kern (Vielzweck-Datenverarbeitungs-Grafikverarbeitungseinheit), ein Grafikkern oder dergleichen.
  • Die Frontend-Einheit 1130 umfasst eine Zweigprädiktionseinheit 1132 , die mit einer Anweisungscache-Einheit 1134 gekoppelt ist, die mit einem Anweisungsübersetzungs-Lookaside-Puffer (TLB) 1136 gekoppelt ist, der mit einer Anweisungsabrufeinheit 1138 gekoppelt ist, die mit einer Decodiereinheit 1140 gekoppelt ist. Die Decodiereinheit 1140 (bzw. Decodierer) kann Anweisungen decodieren und erzeugt als Ausgabe eine oder mehrere Mikro-Operationen, MikroCode-Eintrittspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale, die aus den ursprünglichen Anweisungen decodiert werden oder die anderweitig diese widerspiegeln oder aus ihnen abgeleitet werden. Die Decodiereinheit 1140 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen wären, aber ohne Beschränkung darauf, Nachschlagetabellen, Hardwareimplementierungen, programmierbare Logikarrays (PLA), Mikrocode-Nurlesespeicher (ROM) usw. Bei einer Ausführungsform umfasst der Kern 1190 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für bestimmte Makroanweisungen speichert (z. B. in der Decodiereinheit 1140 oder ansonsten in der Frontend-Einheit 1130). Die Decodiereinheit 1140 ist mit einer Umbenennungs-/Zuteilereinheit 1152 in der Ausführungs-Engine-Einheit 1150 gekoppelt.
  • Die Ausführungs-Engine-Einheit 1150 umfasst die Umbenennungs-/Zuteilereinheit 1152, die mit einer Ausscheideeinheit 1154 und einer Menge aus einer oder mehreren Scheduler-Einheiten 1156 gekoppelt ist. Die Scheduler-Einheit(en) 1156 repräsentiert eine beliebige Anzahl verschiedener Scheduler, darunter Reservierungsstationen, Zentral-Anweisungsfenster usw. Die Scheduler-Einheit(en) 1156 ist mit den physischen Registerfile-Einheit(en) 1158 gekoppelt. Jede der physischen Registerfile-Einheiten 1158 repräsentiert ein oder mehrere physische Registerfiles, von denen verschiedene einen oder mehrere verschiedene Datentypen speichern, wie etwa Skalar-Integer, Skalar-Gleitkomma, Integer-gepackt, Gleitkomma-gepackt, Vektor-Integer, Vektor-Gleitkomma, Status (z. B. ein Anweisungszeiger, der die Adresse der nächsten auszuführenden Anweisung ist) usw. Bei einer Ausführungsform umfasst die physische Registerfile-Einheit 1158 eine Vektorregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können Architektur-Vektorregister, Vektormaskenregister und Vielzweckregister bereitstellen. Die physische Registerfile-Einheit(en) 1158 wird durch die Ausscheidungseinheit 1154 überlappt, um verschiedene Weisen darzustellen, auf die Registerumbenennung und Außerreihenfolgeausführung implementiert werden kann (z. B. unter Verwendung eines oder mehrerer Umordnungspuffer und einer oder mehrerer Ausscheidungs-Registerfiles; Verwendung von Zukunft-Files, Geschichte-Puffer und Ausscheidungsregister-Files; Verwendung von Registerabbildungen und eines Pools von Registern; usw.). Die Ausscheidungseinheit 1154 und die physische Registerfile-Einheit(en) 1158 sind mit dem Ausführungs-Cluster 1160 gekoppelt. Das Ausführungs-Cluster 1160 umfasst eine Menge aus einer oder mehreren Ausführungseinheiten 1162 und eine Menge aus einer oder mehreren Speicherzugriffseinheiten 1164. Die Ausführungseinheiten 1162 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) ausführen, und an verschiedenen Arten von Daten (z. B. Skalar-Gleitkomma, Integer-Gepackt, Gleitkomma-Gepackt, Vektor-Integer, Vektor-Gleitkomma). Obwohl bestimmte Ausführungsformen eine Anzahl von Ausführungseinheiten umfassen können, die spezifischen Funktionen oder Mengen von Funktionen gewidmet sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, die alle die gesamten Funktionen ausführen. Die Scheduler-Einheiten 1156, physischen Registerfile-Einheiten 1158 und Ausführungs-Cluster 1160 sind als möglicherweise mehrzahlig gezeigt, weil bestimmte Ausführungsformen für bestimmte Arten von Daten/Operationen getrennte Pipelines erzeugen (z. B. eine Skalar-Integer-Pipeline, eine Skalar-Gleitkomma-/Integer-Gepackt-/Gleitkomma-Gepackt-/Vektor-Integer-/Vektor-Gleitkomma-Pipeline und/oder eine Speicherzugriffspipeline, die jeweils ihre eigene Scheduler-Einheit, physische Registerfile-Einheit und/oder Ausführungs-Cluster aufweisen - und im Fall einer getrennten Speicherzugriffs-Pipeline werden bestimmte Ausführungsformen implementiert, bei denen nur das Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 1164 aufweist). Es versteht sich auch, dass, obwohl getrennte Pipelines verwendet werden, eine oder mehrere dieser Pipelines Außerreihenfolge-Ausgabe/-Ausführung und der Rest In-Reihenfolge sein können.
  • Die Menge von Speicherzugriffseinheiten 1164 ist mit der Speichereinheit 1170 gekoppelt, die eine Daten-TLB-Einheit 1172 umfasst, die mit einer Daten-Cache-Einheit 1174 gekoppelt ist, die mit einer Level-2-(L2-)Cache-Einheit 1176 gekoppelt ist. Bei einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 1164 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit umfassen, die jeweils mit der Daten-TLB-Einheit 1172 in der Speichereinheit 1170 gekoppelt sind. Die Anweisungs-Cache-Einheit 1134 ist ferner mit einer Level-2-(L2-)Cache-Einheit 1176 in der Speichereinheit 1170 gekoppelt. Die L2-Cache-Einheit 1176 ist mit einer oder mehreren anderen Ebenen von Cache und letztendlich mit einem Hauptspeicher gekoppelt.
  • Beispielsweise kann die beispielhafte Registerumbenennungs-Außerreihenfolge-Ausgabe-/-Ausführungs-Kern-Architektur die Pipeline 1100 folgendermaßen implementieren: 1) der Anweisungs-Abruf 1138 führt die Abruf- und Längendecodierungsstufen 1102 und 1104 aus; 2) die Decodiereinheit 1140 führt die Decodierstufe 1106 aus; 3) die Umbenennungs-/Zuteilereinheit 1152 führt die Zuteilungsstufe 1108 und die Umbenennungsstufe 1110 aus; 4) die Scheduler-Einheit(en) 1156 führt die Schedule-Stufe 1112 aus; 5) die physischen Registerfile-Einheit(en) 1158 und die Speichereinheit 1170 führen die Registerlese-/Speicherlesestufe 1114 aus; das Ausführungs-Cluster 1160 führt die Ausführungsstufe 1116 aus; 6) die Speichereinheit 1170 und die physischen Registerfile-Einheit(en) 1158 führen die Rückschreib-/Speicherschreibstufe 1118 aus; 7) verschiedene Einheiten können an der Programmfehlerabwicklungsstufe 1122 beteiligt sein; und 8) die Ausscheidungseinheit 1154 und die physischen Registerfile-Einheit(en) 1158 führen die Commit-Stufe 1124 aus.
  • Der Kern 1190 kann einen oder mehrere Anweisungssätze unterstützen (z. B. den x86-Anweisungssatz (mit bestimmten Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Anweisungssatz der MIPS Technologies in Sunnyvale, CA; den ARM-Anweisungssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) der ARM Holdings in Sunnyvale, CA), einschließlich der Anweisung(en), die hier beschrieben werden. Bei einer Ausführungsform umfasst der Kern 1190 Logik zur Unterstützung einer Gepackte-Daten-Anweisungssatz-Erweiterung (z. B. AVX1, AVX2, und/oder eine beliebige Form des zuvor beschriebenen allgemeinen vektorfreundlichen Anweisungsformats (U = 0 und/oder U = 1)), um dadurch eine Ausführung der von vielen Multimediaanwendungen verwendeten Operationen unter Verwendung gepackter Daten zu erlauben.
  • Es versteht sich, dass der Kern Mehrfach-Threading (Ausführen von zwei oder mehr parallelen Mengen von Operationen oder Threads) unterstützen kann und zwar auf vielfältige Weisen, einschließlich Zeitscheiben-Mehrfach-Threading, Simultan-Mehrfach-Threading (wobei ein einziger physischer Kern einen logischen Kern für jeden der Threads bereitstellt, die der physische Kern simultan im Mehrfach-Threading behandelt), oder eine Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und simultanes Mehrfach-Threading danach, wie etwa bei der Hyperthreading-Technologie von Intel@).
  • Obwohl Registerumbenennung im Kontext der Außerreihenfolge-Ausführung beschrieben wird, versteht sich, dass Registerumbenennung in einer In-Reihenfolge-Architektur verwendet werden kann. Obwohl die dargestellte Ausführungsform des Prozessors auch getrennte Anweisungs- und Daten-Cache-Einheiten 1134/1174 und eine gemeinsam benutzte L2-Cache-Einheit 1176 umfasst, können alternative Ausführungsformen einen einzigen internen Cache sowohl für Anweisungen als auch für Daten aufweisen, wie etwa zum Beispiel einen internen Level-1-(L1-)Cache oder mehrere Ebenen von internem Cache. Bei bestimmten Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache, der sich außerhalb des Kerns und/oder des Prozessors befindet, umfassen. Als Alternative kann sich der gesamte Cache außerhalb des Kerns und/oder des Prozessors befinden.
  • Eine spezifische beispielhafte In-Reihenfolge-Kernarchitektur
  • 12A-B zeigen ein Blockschaltbild einer spezifischeren beispielhaften In-Reihenfolge-Kernarchitektur, wobei dieser Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne desselben Typs und/oder verschiedener Typen) in einem Chip wäre. Die Logikblöcke kommunizieren durch ein Verbindungsnetzwerk hoher Bandbreite (z. B. ein Ringnetzwerk) mit bestimmter Festfunktionslogik, Speicher-E/A-Schnittstellen und anderer notwendiger E/A-Logik, abhängig von der Anwendung.
  • 12A ist ein Blockschaltbild eines Einzelprozessorkerns zusammen mit seiner Verbindung mit dem auf dem Chip befindlichen Verbindungsnetzwerk 1202 und mit seiner lokalen Teilmenge des Level-2-(L2-)Cache 1204 gemäß Ausführungsformen der Erfindung. Bei einer Ausführungsform unterstützt ein Anwendungsdecodierer 1200 den x86-Anweisungssatz mit einer Gepackte-Daten-Anweisungssatzerweiterung. Ein L1-Cache 1206 erlaubt Zugriffe auf den Cache-Speicher mit niedriger Latenz in die Skalar- und Vektoreinheiten. Obwohl bei einer Ausführungsform (zur Vereinfachung des Entwurfs) eine Skalareinheit 1208 und eine Vektoreinheit 1210 getrennte Registermengen verwenden (jeweils Skalarregister 1212 und Vektorregister 1214) und zwischen ihnen transferierte Daten in Speicher geschrieben und dann aus einem Level-1-(L1-)Cache 1206 wieder ausgelesen werden, können alternative Ausführungsformen der Erfindung einen anderen Ansatz verwenden (z. B. Verwendung einer einzigen Registermenge oder Aufnehmen eines Kommunikationspfads, der den Transfer von Daten zwischen zwei Registerfiles ohne Schreiben und Wiederlesen erlaubt).
  • Die lokale Teilmenge des L2-Cache 1204 ist Teil eines globalen L2-Cache, der in getrennte lokale Teilmengen (eine pro Prozessorkern) aufgeteilt wird. Jeder Prozessorkern besitzt einen direkten Zugriffspfad zu seiner eigenen lokalen Teilmenge des L2-Cache 1204. Durch einen Prozessorkern gelesene Daten werden in seiner L2-Cache-Teilmenge 1204 gespeichert und es kann schnell und parallel mit anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Teilmengen zugreifen, auf sie zugegriffen werden. Durch einen Prozessorkern geschriebene Daten werden in seiner eigenen L2-Cache-Teilmenge 1204 gespeichert und aus anderen Teilmengen ausgeräumt, wenn es notwendig ist. Das Ringnetzwerk stellt Kohärenz für gemeinsam benutzte Daten sicher. Das Ringnetzwerk ist bidirektional, um es Agenten wie Prozessorkernen, L2-Caches und anderen Logikblöcken zu erlauben, im Chip miteinander zu kommunizieren. Jeder Ring-Datenpfad ist in jeder Richtung 1012 Bit breit.
  • 12B ist eine vergrößerte Ansicht eines Teils des Prozessorkerns in 12A gemäß Ausführungsformen der Erfindung. 12B umfasst einen L1-Daten-Cache 1206A als Teil des L1-Cache 1204, sowie mehr Einzelheiten bezüglich der Vektoreinheit 1210 und der Vektorregister 1214. Speziell ist die Vektoreinheit 1210 eine 16-breite Vektorverarbeitungseinheit (VPU) (siehe die 16-breite ALU 1228), die eine oder mehrere von Integer-, Single-Precision-Float- und Double-Precision-Float-Anweisungen ausführt. Die VPU unterstützt Swizzling der Registereingänge mit der Swizzle-Einheit 1220, numerische Umsetzung mit numerischen Umsetzungseinheiten 1222A -B und Replikation mit der Replikationseinheit 1224 am Speichereingang.
  • Ein Prozessor mit integrierter Speichersteuerung und Grafik
  • 13 ist ein Blockschaltbild eines Prozessors 1300, der mehr als einen Kern aufweisen kann, eine integrierte Speichersteuerung aufweisen kann und integrierte Grafik aufweisen kann, gemäß Ausführungsformen der Erfindung. Die durchgezogen gezeichneten Kästen in 13 zeigen einen Prozessor 1300 mit einem einzigen Kern 1302A, einen Systemagenten 1310, eine Menge von einer oder mehreren Bussteuerungseinheiten 1316, während der optionale Zusatz der gestrichelt gezeichneten Kästen einen alternativen Prozessor 1300 mit mehreren Kernen 1302A-N, eine Menge von einer oder mehreren Speichersteuerungseinheit(en) 1314 in der Systemagenteinheit 1310 und Speziallogik 1308 darstellt.
  • Somit können verschiedene Implementierungen des Prozessors 1300 Folgendes umfassen: 1) eine CPU mit der Speziallogik 1308, die integrierte Grafik ist, und/oder wissenschaftliche (Durchsatz-)Logik (die einen oder mehrere Kerne umfassen kann) und wobei die Kerne 1302A-N ein oder mehrere Vielzweckkerne sein können (z. B. Vielzweck-In-Reihenfolge-Kerne, Vielzweck-Außerreihenfolge-Kerne, eine Kombination der beiden); 2) einen Koprozessor, wobei die Kerne 1302AN eine große Anzahl von Spezialkernen sind, die hauptsächlich für Grafik und/oder Wissenschaft (Durchsatz) bestimmt sind; und 3) einen Koprozessor mit den Kernen 1302A-N, die eine große Anzahl von Vielzweck-In-Reihenfolge-Kernen sind. Somit kann der Prozessor 1300 ein Vielzweckprozessor, ein Koprozessor oder Spezialprozessor sein, wie zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, eine GPGPU (Vielzweck-Grafikverarbeitungseinheit), ein Hochdurchsatz-MIC-Koprozessor (Many Integrated Core) (mit 30 oder mehr Kernen), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 1300 kann Teil von einem oder mehreren Substraten und/oder darauf implementiert sein, die beliebige einer Anzahl von Prozessortechnologien verwenden, wie zum Beispiel BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst eine oder mehrere Ebenen von Cache in den Kernen, eine Menge von einer oder mehreren gemeinsam benutzten Cache-Einheiten 1306 und externen Speicher (nicht gezeigt), der mit der Menge von integrierten Speichersteuerungseinheiten 1314 gekoppelt ist. Die Menge gemeinsam benutzter Cache-Einheiten 1306 kann einen oder mehrere Mittebenen-Caches umfassen, wie etwa Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Ebenen von Cache, einen Last-Level-Cache (LLC) und/oder Kombinationen davon. Obwohl bei einer Ausführungsform eine Verbindungseinheit 1312 auf Ringbasis die integrierte Grafiklogik 1308, die Menge von gemeinsam benutzten Cache-Einheiten 1306 und die Systemagenteinheit 1310/integrierten Speichersteuerungseinheit(en) 1314 verbindet, können alternative Ausführungsformen eine beliebige Anzahl wohlbekannter Techniken zur Verbindung solcher Einheiten verwenden. Bei einer Ausführungsform wird Kohärenz zwischen einer oder mehreren Cache-Einheiten 1306 und Kernen 1302A-N aufrechterhalten.
  • Bei bestimmten Ausführungsformen sind ein oder mehrere der Kerne 1302AN zu Mehrfach-Threading fähig. Der Systemagent 1310 umfasst die Komponenten, die die Kerne 1302A-N koordinieren und betreiben. Die Systemagenteinheit 1310 kann zum Beispiel eine Leistungssteuereinheit (PCU) und eine Anzeigeeinheit umfassen. Die PCU kann Logik und Komponenten sein oder umfassen, die zum Regeln des Leistungszustands der Kerne 1302A -N und der integrierten Grafiklogik 1308 benötigt werden. Die Anzeigeeinheit dient zum Ansteuern einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1302A-N können im Hinblick auf den Architekturanweisungssatz homogen oder heterogen sein; das heißt, zwei oder mehr der Kerne 1302A-N können zur Ausführung desselben Anweisungssatzes fähig sein, während andere nur zur Ausführung einer Teilmenge des Anweisungssatzes oder eines anderen Anweisungssatzes fähig sein können.
  • Beispielhafte Computerarchitekturen
  • 14 - 17 sind Blockschaltbilder beispielhafter Computerarchitekturen. Es sind auch andere System entwürfe und Konfigurationen, die in der Technik für Laptops, Desktops, in der Hand gehaltene PCs, Personal Digital Assistants, technische Workstations, Server, Netzwerkvorrichtungen, Netzwerk-Hubs, Switches, eingebettete Prozessoren, digitale Signalprozessoren (DSP), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxes, Mikrosteuerungen, Mobiltelefone, tragbare Medienplayer, in der Hand gehaltene Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, geeignet. Im Allgemeinen ist eine enorme Vielfalt von Systemen oder elektronischen Vorrichtungen mit der Fähigkeit, einen Prozessor und/oder andere Ausführungslogik wie hier offenbart zu enthalten, geeignet.
  • Nunmehr mit Bezug auf 14 ist ein Blockschaltbild eines Systems 1400 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1400 kann einen oder mehrere Prozessoren 1410, 1415 umfassen, die mit einem Steuerungs-Hub 1420 gekoppelt sind. Bei einer Ausführungsform umfasst der Steuerungs-Hub 1420 einen Grafikspeichersteuerungs-Hub (GMCH) 1490 und einen Eingabe/Ausgabe-Hub (IOH) 1450 (die sich auf getrennten Chips befinden können); der GMCH 1490 umfasst Speicher- und Grafiksteuerungen, mit denen Speicher 1440 und ein Koprozessor 1445 gekoppelt sind; der IOH 1450 koppelt Eingabe/Ausgabe-(E/A-)Vorrichtungen 1460 mit dem GMCH 1490 . Als Alternative sind eine oder beide der Speicher- und Grafiksteuerungen in den Prozessor (wie hier beschrieben) integriert, der Speicher 1440 und der Koprozessor 1445 sind direkt mit dem Prozessor 1410 gekoppelt und der Steuerungs-Hub 1420 in einem einzigen Chip mit dem IOH 1450.
  • Die optionale Beschaffenheit der zusätzlichen Prozessoren 1415 wird in 14 mit gestrichelten Linien bezeichnet. Jeder Prozessor 1410, 1415 kann einen oder mehrere der hier beschriebenen Prozessorkerne umfassen und kann eine bestimmte Version des Prozessors 1300 sein.
  • Der Speicher 1440 kann zum Beispiel dynamischer Direktzugriffsspeicher (DRAM), Phasenänderungsspeicher (PCM) oder eine Kombination der beiden sein. Für mindestens eine Ausführungsform kommuniziert der Steuerungs-Hub 1420 über einen Mehrfachabkopplungsbus, wie etwa einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle wie eine QuickPath-Verbindung (QPI) oder eine ähnliche Verbindung 1495 mit den Prozessoren 1410, 1415.
  • Bei einer Ausführungsform ist der Koprozessor 1445 ein Spezialprozessor, wie zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. Bei einer Ausführungsform kann der Steuerungs-Hub 1420 einen integrierten Grafikbeschleuniger umfassen.
  • Es kann vielfältige Unterschiede zwischen den physischen Betriebsmitteln 1410, 1415 im Hinblick auf ein Spektrum von Nutzmetriken geben, wie zum Beispiel architekturelle, mikroarchitekturelle, thermische, Stromverbrauchseigenschaften und dergleichen.
  • Bei einer Ausführungsform führt der Prozessor 1410 Anweisungen aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. In die Anweisungen können Koprozessoranweisungen eingebettet sein. Der Prozessor 1410 erkennt diese Koprozessoranweisungen als von einem Typ, der durch den angeschlossenen Koprozessor 1445 ausgeführt werden soll. Dementsprechend gibt der Prozessor 1410 diese Koprozessoranweisungen (oder Koprozessoranweisungen repräsentierende Steuersignale) auf einem Koprozessorbus oder einer anderen Verbindung an den Koprozessor 1445 aus. Koprozessor(en) 1445 nehmen die empfangenen Koprozessoranweisungen an und führen sie aus.
  • Nunmehr mit Bezug auf 15 ist ein Blockschaltbild eines ersten spezifischeren beispielhaften Systems 1500 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 15 gezeigt, ist das Mehrprozessorsystem 1500 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Verbindung 1550 gekoppelt sind. Jeder der Prozessoren 1570 und 1580 kann eine bestimmte Version des Prozessors 1300 sein. Bei einer Ausführungsform der Erfindung sind die Prozessoren 1570 und 1580 Prozessoren 1410 bzw. 1415, während der Koprozessor 1538 der Koprozessor 1445 ist. Bei einer anderen Ausführungsform sind die Prozessoren 1570 und 1580 Prozessor 1410 bzw. Koprozessor 1445.
  • Die Prozessoren 1570 und 1580 sind als IMC-Einheiten 1572 bzw. 1582 (integrierte Speichersteuerung) enthaltend gezeigt. Der Prozessor 1570 umfasst als Teil seiner Bussteuerungseinheiten außerdem Punkt-zu-Punkt-(P-P-) Schnittstellen 1576 und 1578; ähnlich umfasst der zweite Prozessor 1580 P-P-Schnittstellen 1586 und 1588. Die Prozessoren 1570, 1580 können über eine Punkt-zu-Punkt-(P-P-)Schnittstelle 1550 unter Verwendung von P-P-Schnittstellenschaltungen 1578, 1588 Informationen austauschen. Wie in 15 gezeigt, koppeln IMC 1572 und 1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, die Teile von Hauptspeicher sein können, der lokal an die jeweiligen Prozessoren angeschlossen ist.
  • Die Prozessoren 1570, 1580 können jeweils über einzelne P-P-Schnittstellen 1552, 1554 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1576, 1594, 1586, 1598 Informationen mit einem Chipsatz 1590 austauschen. Der Chipsatz 1590 kann gegebenenfalls über eine Hochleistungsschnittstelle 1539 Informationen mit dem Koprozessor 1538 austauschen. Bei einer Ausführungsform ist der Koprozessor 1538 ein Spezialprozessor, wie zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netzwerk- oder Kommunikationsprozessor, eine Kompressions-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein (nicht gezeigter) gemeinsam benutzter Cache kann in jedem Prozessor oder außerhalb beider Prozessoren enthalten sein und dennoch über P-P-Verbindungen mit den Prozessoren verbunden sein, so dass lokale Cache-Informationen von einem oder beiden der Prozessoren in dem gemeinsam benutzten Cache gespeichert werden können, wenn ein Prozessor in einen Low-Power-Modus versetzt wird.
  • Der Chipsatz 1590 kann über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. Bei einer Ausführungsform kann der erste Bus 1516 ein PCI-Bus (Peripheral Component Interconnect) oder ein Bus wie etwa ein PCI-Express-Bus oder ein anderer E/A-Verbindungsbus dritter Generation sein, obwohl der Schutzumfang der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie in 15 gezeigt, können verschiedene E/A-Vorrichtungen 1514 mit dem ersten Bus 1516 zusammen mit einer Busbrücke 1518, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt, gekoppelt sein. Bei einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1515 wie Koprozessoren, Hochdurchsatz-MIC-Prozessoren, GPGPUs, Beschleuniger (wie zum Beispiel Grafikbeschleuniger oder Digitalsignalverarbeitungs-(DSP-)Einheiten), am Einsatzort programmierbare Gatearrays oder ein beliebiger anderer Prozessor mit dem ersten Bus 1516 gekoppelt. Bei einer Ausführungsform kann der zweite Bus 1520 ein LPC-Bus (Low Pin Count) sein. Es können bei einer Ausführungsform verschiedene Vorrichtungen mit einem zweiten Bus 1520 gekoppelt sein, darunter zum Beispiel eine Tastatur und/oder eine Maus 1522, Kommunikationsvorrichtungen 1527 und eine Speichereinheit 1528, wie etwa eine Festplatte oder eine andere Massenspeichervorrichtung, die Anweisungen/Code und Daten 1530 umfassen können. Ferner kann eine Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt sein. Man beachte, dass andere Architekturen möglich sind. Zum Beispiel kann ein System anstelle der Punkt-zu-Punkt-Architektur von 15 einen Mehrfachabkopplungsbus oder eine andere solche Architektur implementieren.
  • Nunmehr mit Bezug auf 16 ist ein Blockschaltbild eines zweiten spezifischeren beispielhaften Systems 1600 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 15 und 16 tragen gleiche Bezugszahlen und bestimmte Aspekte von 15 wurden aus 16 weggelassen, um eine Verschleierung anderer Aspekte von 16 zu vermeiden.
  • 16 zeigt, dass die Prozessoren 1570, 1580 integrierte Speicher- und E/A-Steuerlogik (CL) 1572 bzw. 1582 umfassen können. Somit umfassen CL 1572, 1582 integrierte Speichersteuerungseinheiten und umfassen E/A-Steuerlogik. 16 zeigt, dass nicht nur die Speicher 1532, 1534 mit CL 1572, 1582 gekoppelt sind, sondern auch dass E/A-Vorrichtungen 1614 auch mit der Steuerlogik 1572, 1582 gekoppelt sind. Veraltete E/A-Vorrichtungen 1615 werden mit dem Chipsatz 1590 gekoppelt.
  • Nunmehr mit Bezug auf 17 ist ein Blockschaltbild eines SoC 1700 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 13 tragen gleiche Bezugszahlen. Außerdem sind gestrichelt gezeichnete Kästen optionale Merkmale auf fortschrittlicheren SoC. In 17 ist eine Verbindungseinheit(en) 1702 mit Folgendem gekoppelt: einem Anwendungsprozessor 1710, der eine Menge von einem oder mehreren Kernen 202A-N und gemeinsam benutzte Cache-Einheit(en) 1306 umfasst; eine Systemagenteinheit 1310; eine Bussteuerungseinheit(en) 1316; eine integrierte Speichersteuerungseinheit(en) 1314; eine Menge von einem oder mehreren Koprozessoren 1720, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen können; eine SRAM-Einheit 1730 (statischer Direktzugriffsspeicher); eine DMA-Einheit 1732 (Direct Memory Access); und eine Anzeigeeinheit 1740 zur Kopplung mit einer oder mehreren externen Anzeigen. Bei einer Ausführungsform umfassen die Koprozessor(en) 1720 einen Spezialprozessor, wie zum Beispiel einen Netzwerk- oder Kommunikationsprozessor, eine Kompressions-Engine, eine GPGPU, einen Hochdurchsatz-MIC-Prozessor, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hier offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsansätze implementiert werden. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode zur Ausführung auf programmierbaren Systemen, die mindestens einen Prozessor, ein Speichersystem (mit flüchtigem und nichtflüchtigem Speicher und/oder Speicherelementen), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung umfassen, implementiert werden.
  • Programmcode, wie etwa der in 15 dargestellte Code 1530, kann auf Eingabeanweisungen angewandt werden, um die hier beschriebenen Funktionen auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf bekannte Weise an eine oder mehrere Ausgabevorrichtungen angelegt werden. Für die Zwecke der vorliegenden Anmeldung umfasst ein Verarbeitungssystem ein beliebiges System mit einem Prozessor, wie etwa einem Digitalsignalprozessor (DSP), einer Mikrosteuerung, einer anwendungsspezifischen integrierten Schaltung (ASIC) oder einem Mikroprozessor.
  • Der Programmcode kann in einer höheren prozeduralen oder objektorientierten Programmiersprache zur Kommunikation mit einem Verarbeitungssystem implementiert werden. Der Programmcode kann gegebenenfalls auch in Assembler- oder Maschinensprache implementiert werden. Tatsächlich sind die hier beschriebenen Mechanismen bezüglich des Umfangs nicht auf irgendeine konkrete Programmiersprache beschränkt. Auf jeden Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Anweisungen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert werden, wodurch verschiedenartige Logik in dem Prozessor repräsentiert wird, die, wenn sie durch eine Maschine gelesen wird, bewirkt, dass die Maschine Logik zum Ausführen der hier beschriebenen Techniken generiert. Solche Repräsentationen, die als „IP-Kerne“ bekannt sind, können auf einem greifbaren maschinenlesbaren Medium gespeichert und verschiedenen Kunden oder Herstellungseinrichtungen geliefert werden, um in die Herstellungsmaschinen geladen zu werden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Solche maschinenlesbaren Speichermedien wären zum Beispiel und ohne Beschränkung nichtflüchtige greifbare Anordnungen von Artikeln, die durch eine Maschine oder Vorrichtung hergestellt oder gebildet werden, darunter Speichermedien wie Festplatten, eine beliebige Art von Datenträger wie Disketten, optische Datenträger, CD-Rom (Compact Disk Read-Only Memories), CD-RW (Compact Disk Rewritable's) und magnetooptische Datenträger, Halbleitervorrichtungen wie Nurlesespeicher (ROM), Direktzugriffsspeicher (RAM) wie dynamische Direktzugriffsspeicher (DRAM), statische Direktzugriffsspeicher (SRAM), löschbare programmierbare Nurlesespeicher (EPROM), Flash-Speicher, elektrisch löschbare programmierbare Nurlesespeicher (EEPROM), Phasenänderungsspeicher (PCM), magnetische oder optische Karten oder eine beliebige andere Art von Medien, die zum Speichern elektronischer Anweisungen geeignet ist.
  • Ausführungsformen der Erfindung umfassen dementsprechend auch nichtflüchtige greifbare maschinenlesbare Medien, die Anweisungen enthalten oder Entwurfsdaten enthalten, wie etwa HDL (Hardware Description Language), wodurch Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert werden, die hier beschrieben werden. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Emulation (einschließlich binärer Übersetzung, Codeumformung usw.)
  • In bestimmten Fällen kann ein Anweisungsumsetzer verwendet werden, um eine Anweisung aus einem Quellenanweisungssatz in einen Zielanweisungssatz umzusetzen. Zum Beispiel kann der Anweisungsumsetzer (z. B. unter Verwendung statischer binärer Übersetzung, dynamischer binärer Übersetzung einschließlich dynamischer Kompilierung) eine Anweisung in eine oder mehrere andere Anweisungen, die durch den Kern zu verarbeiten sind, übersetzen, umformen, emulieren oder anderweitig umsetzen. Der Anweisungsumsetzer kann in Software, Hardware, Firmware oder einer Kombination davon implementiert werden. Der Anweisungsumsetzer kann auf dem Prozessor, außerhalb des Prozessors oder teilweise auf dem Prozessor und teilweise außerhalb des Prozessors sein.
  • 18 ist ein Blockschaltbild, das die Verwendung eines Softwareanweisungsumsetzers, um binäre Anweisungen in einer Quellenanweisungsmenge in binäre Anweisungen in einer Zielanweisungsmenge um zu wandeln, gemäß Ausführungsformen der Erfindung kontrastiert. Bei der dargestellten Ausführungsform ist der Anweisungsumsetzer ein Softwareanweisungsumsetzer, obwohl der Anweisungsumsetzer als Alternative in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert werden kann. 18 zeigt ein Programm in einer höheren Sprache 1802, das unter Verwendung eines x86-Compilers 1804 kompiliert werden kann, um x86-Binärcode 1806 zu erzeugen, der nativ durch einen Prozessor mit mindestens einem x86-Anweisungssatzkern 1816 ausgeführt werden kann. Der Prozessor mit dem mindestens einen x86-Anweisungssatzkern 1816 repräsentiert einen beliebigen Prozessor, der im Wesentlichen dieselben Funktionen wie in Intel-Prozessor mit mindestens einem x86-Anweisungssatzkern ausführen kann, indem Folgendes kompatibel ausgeführt oder anderweitig verarbeitet wird: (1) ein wesentlicher Teil des Anweisungssatzes des Intel-x86-Anweisungssatzkerns oder (2) Objektcodeversionen von Anwendungen oder anderer Software, die dafür bestimmt sind, auf einem Intel-Prozessor mit mindestens einem x86-Anweisungssatzkern ausgeführt zu werden, um im Wesentlichen dasselbe Ergebnis wie ein Intel-Prozessor mit mindestens einem x86-Anweisungssatzkern zu erzielen. Der x86-Compiler 1804 repräsentiert einen Compiler, der betreibbar ist, um x86-Binärcode 1806 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit dem mindestens einen x86-Anweisungssatzkern 1816 ausgeführt werden kann. Ähnlich zeigt 18, dass das Programm in der höheren Sprache 1802 unter Verwendung eines Alternativ-Anweisungssatz-Compilers 1808 kompiliert werden kann, um Alternativ-Anweisungssatz-Binärcode 1810 zu erzeugen, der nativ durch einen Prozessor ohne mindestens einen x86-Anweisungssatzkern 1814 ausgeführt werden kann (z. B. einen Prozessor mit Kernen, die den MIPS-Anweisungssatz der MIPS Technologies in Sunnyvale, CA, ausführen und/oder die den ARM-Anweisungssatz der ARM Holdings in Sunnyvale, CA, ausführen). Der Anweisungsumsetzer 1812 dient zum Umsetzen des x86-Binärcodes 1806 in Code, der nativ durch den Prozessor ohne einen x86-Anweisungssatzkern 1814 ausgeführt werden kann. Dieser umgesetzte Code ist wahrscheinlich nicht derselbe wie der Alternativ-Anweisungssatz-Binärcode 1810, da ein Anweisungssatzumsetzer, der hierzu fähig ist, schwierig herzustellen ist; der umgesetzte Code erreicht jedoch die allgemeine Operation und kann aus Anweisungen aus dem Alternativ-Anweisungssatz bestehen. Somit repräsentiert der Anweisungsumsetzer 1812 Software, Firmware, Hardware oder eine Kombination davon, die durch Emulation, Simulation oder einen beliebigen anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtung ohne einen x86-Anweisungssatzprozessor oder -kern erlaubt, den x86-Binärcode 1806 auszuführen.

Claims (20)

  1. Verfahren zum Ausführen einer Rotation-Operation und einer XOR-Operation in einem Computerprozessor als Reaktion auf eine einzige Rotations- und XOR-Anweisung, wobei die Rotations- und XOR-Anweisung einen ersten und zweiten Quellenoperanden, einen Zieloperanden, einen Opcode und einen Direktoperand-Wert umfasst, wobei das Verfahren die folgenden Schritte umfasst: Ausführen (707, 717, 727) der einzigen Rotations- und XOR-Anweisung, um in einem ersten oder zweiten Modus zu arbeiten, wobei im ersten Modus das Ausführen XOR-Verknüpfen von Werten des ersten und zweiten Quellenoperanden, um einen XOR-verknüpften Wert zu erzeugen, und dann Rotieren des XOR-verknüpften Werts um eine Anzahl X von Bitpositionen bewirkt und im zweiten Modus das Ausführen Rotieren eines Werts des ersten Quellenoperanden um die Anzahl X von Bitpositionen und XOR-Verknüpfen des rotierten Werts mit einem Wert aus dem zweiten Quellenoperanden bewirkt; und Speichern (709, 719, 729) eines Ergebnisses entweder aus dem ersten oder dem zweiten Modus in einer mit dem Zieloperanden assoziierten Zielspeicherstelle.
  2. Verfahren nach Anspruch 1, wobei die Anzahl X von Bitpositionen ein Dezimalwert eines oder mehrerer Bit des Direktoperanden ist.
  3. Verfahren nach Anspruch 2, wobei das eine oder die mehreren Bit des Direktoperanden die sechs niedrigstwertigen Bit des Direktoperanden sind.
  4. Verfahren nach Anspruch 1, wobei das Rotieren ein Linksrotieren ist.
  5. Verfahren nach Anspruch 1, wobei die Rotations- und XOR-Anweisung Teil eines Skein-Hashing-Algorithmus ist.
  6. Verfahren nach Anspruch 1, wobei die Rotations- und XOR-Anweisung Teil eines BLAKE-Hashing-Algorithmus ist.
  7. Verfahren nach Anspruch 1, wobei der erste und zweite Quellenoperand jeweils mit einem Register assoziiert sind und die Registergrößen 8 Bit, 16 Bit, 32 Bit oder 64 Bit sind.
  8. Verfahren nach Anspruch 1, ferner umfassend: Bestimmen (801), welcher des ersten und zweiten Modus durchzuführen ist, auf der Basis eines Werts eines Bit des Direktoperanden.
  9. Herstellungsartikel, umfassend: ein greifbares maschinenlesbares Speichermedium, worauf ein Exemplar einer Rotations- und XOR-Anweisung gespeichert ist, wobei das Format der Anweisung einen ersten und einen zweiten Quellenoperanden, einen Zieloperanden, einen Direktoperand-Wert und einen Opcode spezifiziert, wobei der Opcode eine Maschine anweist, als Reaktion auf das einzige Exemplar der einzigen Anweisung eine einzige Rotations- und XOR-Anweisung auszuführen (707, 717, 727), um in einem ersten oder einen zweiten Modus zu arbeiten, wobei im ersten Modus das Ausführen XOR-Verknüpfung von Werten des ersten und zweiten Quellenoperanden, um einen XOR-verknüpften Wert zu erzeugen, und dann Rotieren des XOR-verknüpften Werts um eine Anzahl X von Bitpositionen bewirkt und im zweiten Modus das Ausführen Rotieren eines Werts des ersten Quellenoperanden um die Anzahl X von Bitpositionen und XOR-Verknüpfen des rotierten Werts mit einem Wert aus dem zweiten Quellenoperanden bewirkt; und ein Ergebnis entweder aus dem ersten oder dem zweiten Modus in einer mit dem Zieloperanden assoziierten Zielspeicherstelle zu speichern (709, 719, 729).
  10. Herstellungsartikel nach Anspruch 9, wobei die Anzahl X von Bitpositionen ein Dezimalwert eines oder mehrerer Bit des Direktoperanden ist.
  11. Herstellungsartikel nach Anspruch 10, wobei das eine oder die mehreren Bit des Direktoperanden die sechs niedrigstwertigen Bit des Direktoperanden sind.
  12. Herstellungsartikel nach Anspruch 9, wobei das Rotieren ein Linksrotieren ist.
  13. Herstellungsartikel nach Anspruch 9, wobei die Anweisung Teil eines Skein-HashingAlgorithmus ist.
  14. Herstellungsartikel nach Anspruch 9, wobei die Anweisung Teil eines BLAKEHashing-Algorithmus ist.
  15. Herstellungsartikel nach Anspruch 9, wobei der erste und zweite Quellenoperand jeweils mit einem Register assoziiert sind und die Registergrößen 8 Bit, 16 Bit, 32 Bit oder 64 Bit sind.
  16. Herstellungsartikel nach Anspruch 9, wobei der Opcode ferner die Maschine anweist, auf der Basis eines Werts eines Bit des Direktoperanden zu bestimmen (810), welcher des ersten und zweiten Modus durchzuführen ist.
  17. Vorrichtung, umfassend; einen Hardwaredecoder zum Decodieren einer einzigen Rotations- und XOR-Anweisung, wobei die Rotations- und XOR-Anweisung einen ersten und zweiten Quellenoperanden, einen Zieloperanden, einen Opcode und einen Direktoperand-Wert umfasst; und Ausführungslogik zum Ausführen (707, 717, 727) der einzigen Rotations- und XOR-Anweisung in einem ersten oder einem zweiten Modus, wobei im ersten Modus das Ausführen XOR-Verknüpfen von Werten des ersten und zweiten Quellenoperanden, um einen XOR-verknüpften Wert zu erzeugen, und dann Rotieren des XOR-verknüpften Werts um eine Anzahl X von Bitpositionen bewirkt und im zweiten Modus das Ausführen Rotieren eines Werts des ersten Quellenoperanden um die Anzahl X von Bitpositionen und XOR-Verknüpfen des rotierten Werts mit einem Wert aus dem zweiten Quellenoperanden bewirkt; und Speichern (709, 719, 729) eines Ergebnisses entweder aus dem ersten oder dem zweiten Modus in einer mit dem Zieloperanden assoziierten Zielspeicherstelle.
  18. Vorrichtung nach Anspruch 17, wobei die Anzahl X von Bitpositionen ein Dezimalwert eines oder mehrerer Bit des Direktoperanden ist.
  19. Vorrichtung nach Anspruch 18, wobei das eine oder die mehreren Bit des Direktoperanden die sechs niedrigstwertigen Bit des Direktoperanden sind.
  20. Verfahren nach Anspruch 17, wobei das Rotieren ein Linksrotieren ist.
DE112013003735.1T 2012-09-28 2013-06-21 Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung Active DE112013003735B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/631,242 US9128698B2 (en) 2012-09-28 2012-09-28 Systems, apparatuses, and methods for performing rotate and XOR in response to a single instruction
US13/631,242 2012-09-28
PCT/US2013/047185 WO2014051763A1 (en) 2012-09-28 2013-06-21 Systems, apparatuses, and methods for performing rotate and xor in response to a single instruction

Publications (2)

Publication Number Publication Date
DE112013003735T5 DE112013003735T5 (de) 2015-08-27
DE112013003735B4 true DE112013003735B4 (de) 2022-09-15

Family

ID=50386390

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013003735.1T Active DE112013003735B4 (de) 2012-09-28 2013-06-21 Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung

Country Status (7)

Country Link
US (1) US9128698B2 (de)
JP (2) JP6088655B2 (de)
KR (2) KR101787615B1 (de)
CN (2) CN108563465B (de)
DE (1) DE112013003735B4 (de)
GB (2) GB2581103A (de)
WO (1) WO2014051763A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104025502B (zh) 2011-12-22 2017-07-11 英特尔公司 用于处理blake安全散列算法的指令处理器、方法以及系统
US9122475B2 (en) * 2012-09-28 2015-09-01 Intel Corporation Instruction for shifting bits left with pulling ones into less significant bits
US8953785B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor
US20160179523A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction
CN108897522A (zh) * 2018-06-14 2018-11-27 北京比特大陆科技有限公司 数据处理方法、数据处理装置以及电子设备
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
CN110515591B (zh) * 2019-08-05 2023-04-11 湖南天河国云科技有限公司 基于区块链的随机数生成方法及装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04148372A (ja) * 1990-10-11 1992-05-21 Fujitsu Ltd ハッシュ値算出処理方式
US5386531A (en) * 1991-05-15 1995-01-31 International Business Machines Corporation Computer system accelerator for multi-word cross-boundary storage access
JP3252954B2 (ja) * 1997-04-01 2002-02-04 松下電器産業株式会社 乗算方法および乗算回路
DE69808362T2 (de) * 1997-04-01 2003-03-06 Matsushita Electric Ind Co Ltd Multiplizierverfahren und Multiplizierschaltung
US5881274A (en) * 1997-07-25 1999-03-09 International Business Machines Corporation Method and apparatus for performing add and rotate as a single instruction within a processor
US7689641B2 (en) * 2003-06-30 2010-03-30 Intel Corporation SIMD integer multiply high with round and shift
US7370180B2 (en) * 2004-03-08 2008-05-06 Arm Limited Bit field extraction with sign or zero extend
WO2006040682A2 (en) * 2004-10-13 2006-04-20 Synaptic Laboratories Limited Process of and apparatus for encoding a digital input
US7945729B2 (en) * 2004-11-24 2011-05-17 International Business Machines Corporation System and method for tolerating multiple storage device failures in a storage system using horizontal and vertical parity layouts
JP2007178966A (ja) * 2005-12-27 2007-07-12 Shuichi Kamizono 擬似乱数を生成するアルゴリズム
CN100470571C (zh) * 2006-08-23 2009-03-18 北京同方微电子有限公司 一种用于密码学运算的微处理器内核装置
US7895419B2 (en) * 2008-01-11 2011-02-22 International Business Machines Corporation Rotate then operate on selected bits facility and instructions therefore
US8693681B2 (en) * 2008-12-10 2014-04-08 Texas Instruments Incorporated Kasumi cipher executable instructions and circuitry
EP2207090B1 (de) * 2009-01-09 2018-12-19 STMicroelectronics (Research & Development) Limited Vorrichtung mit einer Vielzahl an arithmetischen logischen Einheiten
US9747105B2 (en) * 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US8504807B2 (en) * 2009-12-26 2013-08-06 Intel Corporation Rotate instructions that complete execution without reading carry flag
US20120030451A1 (en) * 2010-07-28 2012-02-02 Broadcom Corporation Parallel and long adaptive instruction set architecture
US8539206B2 (en) * 2010-09-24 2013-09-17 Intel Corporation Method and apparatus for universal logical operations utilizing value indexing
CN102221991B (zh) * 2011-05-24 2014-04-09 华润半导体(深圳)有限公司 一种4位risc微控制器
GB2497070B (en) * 2011-11-17 2015-11-25 Advanced Risc Mach Ltd Cryptographic support instructions

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Bartolini, S.; Giorgi, R.; Martinelli, E.: Instruction Set Extensions for Cryptographic Applications. Cryptographic Engineering. Boston (MA) : Springer, 2009. S. 191-233. - ISBN 978-0-387-71817-0. https://doi.org/10.1007/978-0-387-71817-0_9 [abgerufen am 01.04.2022]
Beuchat, Jean-Luc; Okamoto, Eiji; Yamazaki, Teppei: Compact implementations of BLAKE-32 and BLAKE-64 on FPGA. In: 2010 International Conference on Field-Programmable Technology, Dezember 2010, S. 170-177. https://doi.org/10.1109/FPT.2010.5681776 [abgerufen am 01.04.2022]
Kastens, Uwe [et.al.]: Feedback Driven Instruction-Set Extension. In: SIGPLAN Not., 39, 11.06.2004, 7, S. 126–135. - ISSN 0362-1340. https://doi.org/10.1145/998300.997182 [abgerufen am 01.04.2022]

Also Published As

Publication number Publication date
DE112013003735T5 (de) 2015-08-27
KR101787615B1 (ko) 2017-10-19
CN104583980A (zh) 2015-04-29
US20140095844A1 (en) 2014-04-03
WO2014051763A1 (en) 2014-04-03
CN108563465B (zh) 2022-09-20
GB201500864D0 (en) 2015-03-04
GB2520855B (en) 2020-07-01
KR101934760B1 (ko) 2019-01-04
JP2015535982A (ja) 2015-12-17
KR20150038407A (ko) 2015-04-08
CN104583980B (zh) 2018-05-29
US9128698B2 (en) 2015-09-08
CN108563465A (zh) 2018-09-21
GB2581103A (en) 2020-08-05
GB2520855A (en) 2015-06-03
KR20170118250A (ko) 2017-10-24
GB202007017D0 (en) 2020-06-24
JP6088655B2 (ja) 2017-03-01
JP2017134840A (ja) 2017-08-03

Similar Documents

Publication Publication Date Title
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung
DE102018005977A1 (de) Gleitkomma- zu festkomma-umwandlung
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112014006508T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE102014003706A1 (de) BEREICHSBEGRENZTE VEKTORSPEICHERZUGRIFFSINSTRUKTIONEN, PROZESSOREN, VERFAHREN und SYSTEME
DE112012007058T5 (de) Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors
DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102018124919A1 (de) Skalierbare speicheroptimierte Hardware für Matrix-Solve
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112016004351T5 (de) Prozessoren, Verfahren, System und Befehle zum Datenelement-Vergleich
DE102018006798A1 (de) Einrichtung und Verfahren zum Multiplizieren, Addieren/Subtrahieren und Akkumulieren von gepackten Datenelementen
DE102018129298A1 (de) Vorrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von vorzeichenbehafteten Doppelwörtern
DE102018129263A1 (de) Vorrichtung und verfahren zum multiplizieren, summieren und akkumulieren von sätzen von gepackten bytes
DE102018131842A1 (de) Einrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von gepackten Wörtern
DE102018132200A1 (de) Vorrichtung und verfahren zum verarbeiten von fraktionalen umkehroperationen
DE102018124944A1 (de) Vorrichtung und Verfahren zum Umsetzen eines Gleitkommawertes von halber Genauigkeit in einfache Genauigkeit
DE112013007736T5 (de) RSA-Algorithmusbeschleunigungsprozessoren, -Verfahren, -Systeme und Befehle
DE112017003345T5 (de) Bit-prüfprozessoren, verfahren, systeme und anweisungen zum prüfen eines bits mit einem angegebenen prüfbitwert
DE102018129273A1 (de) Einrichtung und verfahren zum vektor-multiplizieren; und -akkumulieren von unsignierten doppelwörtern

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0012040000

Ipc: G06F0009300000

R081 Change of applicant/patentee

Owner name: META PLATFORMS, INC., MENLO PARK, US

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

Owner name: FACEBOOK INC., MENLO PARK, US

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE

Representative=s name: MURGITROYD & COMPANY, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R081 Change of applicant/patentee

Owner name: META PLATFORMS, INC., MENLO PARK, US

Free format text: FORMER OWNER: FACEBOOK INC., MENLO PARK, CA, US

R020 Patent grant now final