DE112013003735T5 - 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 PDFInfo
- Publication number
- DE112013003735T5 DE112013003735T5 DE112013003735.1T DE112013003735T DE112013003735T5 DE 112013003735 T5 DE112013003735 T5 DE 112013003735T5 DE 112013003735 T DE112013003735 T DE 112013003735T DE 112013003735 T5 DE112013003735 T5 DE 112013003735T5
- Authority
- DE
- Germany
- Prior art keywords
- xor
- value
- bits
- instruction
- immediate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000004044 response Effects 0.000 title claims abstract 4
- 230000015654 memory Effects 0.000 claims description 66
- 238000003860 storage Methods 0.000 claims description 18
- 238000004519 manufacturing process Methods 0.000 claims description 11
- 238000009987 spinning Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 18
- 238000007792 addition Methods 0.000 description 13
- 238000007667 floating Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 6
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 6
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000029142 excretion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000001556 precipitation Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 1
- 101100203322 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SKS1 gene Proteins 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09C—CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
- G09C1/00—Apparatus 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization 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 Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
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| |v4 v5 v6 v7| |v8 v9 v10 v11| |v12 v13 v14 v15| - 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 in1 dargestellt. - Die G-Funktion besteht aus 8 abhängigen Schritten:
a = a + b + (m_r(2i)^c_r(2i + 1)) d = (d^a>>>16 c = c + d b = (b^c)>>>12 a = a + b + (m_r(2i + 1)^c_r(2i)) d = (d^a)>>>8 c = c + d b = (b^c)>>>7 - 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. - Kurze Beschreibung der Zeichnungen
- 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 Registerarchitektur1000 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 Prozessors1300 , 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 (SRC1501 und SRC2503 ). Zum leichteren Verständnis werden die Inhalte dieser Register als Hex-Werte xAB in SRC1501 und xB0 in SRC2503 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-Logik505 exklusiv-OR-verknüpft (XOR-verknüpft). Das Ergebnis des XOR wird dann durch Rotationslogik507 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 Unmittelbaren der ROTATEandXOR-Anweisung bestimmt. In diesem Beispiel werden die sechs niedrigstwertigen Bit des Unmittelbaren zum Bestimmen der Anzahl von Bit, um die rotiert werden soll, verwendet, und der Wert dieser Bit ist eine 1. Dementsprechend wird der x1B-Wert aus dem XOR um 1 Bit nach links rotiert, was einen neuen Wert von x37 ergibt, der im Ziel509 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 (SRC1601 und SRC2603 ). Zum leichteren Verständnis werden die Inhalte dieser Register als Hex-Werte xAB in SRC1601 und xB0 in SRC2603 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 Rotationslogik605 um eine festgesetzte Anzahl von Bitpositionen nach links rotiert, die aus einem Unmittelbaren 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 Unmittelbaren 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 Quelle601 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 Quelle603 XOR-verknüpft. Dementsprechend wird x57 mit xB0 XOR-verknüpft, was ein Ergebnis von xE7 gibt, und in einem Ziel609 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 Unmittelbar-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 bei701 eine ROTATEandXOR-Anweisung mit zwei Quellenoperanden (Registern, Speicherstellen oder beidem), Zieloperanden (entweder ein Register oder eine Speicherstelle), einem Opcode und einem Unmittelbaren 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 in5 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 in6 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 Unmittelbaren bestimmt. Bei bestimmten Ausführungsformen werden die unteren sechs Bit des Unmittelbaren 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 Unmittelbar-Werts die Bestimmung festgesetzt, welcher Modus zu verwenden ist. Bei bestimmten Ausführungsformen wird für diesen Zweck das höchstwertige Bit des Unmittelbaren 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. Obwohl707 und709 getrennt dargestellt wurden, werden sie bei bestimmten Ausführungsformen zusammen als Teil der Ausführung der Anweisung ausgeführt. - In
7(B) wird bei711 eine ROTATEandXOR-Anweisung mit zwei Quellenoperanden (Registern, Speicherstellen oder beidem), Zieloperanden (entweder ein Register oder eine Speicherstelle), einem Opcode und einem Unmittelbaren 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 in5 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 Unmittelbaren bestimmt. Bei bestimmten Ausführungsformen werden die unteren sechs Bit des Unmittelbaren 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. Obwohl717 und719 getrennt dargestellt wurden, werden sie bei bestimmten Ausführungsformen zusammen als Teil der Ausführung der Anweisung ausgeführt. - In
7(C) wird bei721 eine ROTATEandXOR-Anweisung mit zwei Quellenoperanden (Registern, Speicherstellen oder beidem), Zieloperanden (entweder ein Register oder eine Speicherstelle), einem Opcode und einem Unmittelbaren 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 in6 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 Unmittelbaren bestimmt. Bei bestimmten Ausführungsformen werden die unteren sechs Bit des Unmittelbaren 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. Obwohl727 und729 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 bei801 eine Bestimmung, ob das Unmittelbare 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 Unmittelbaren 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 Unmittelbaren 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 Unmittelbaren 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 bei813 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 Unmittelbaren 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 Unmittelbaren 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 Registerarchitektur1000 gemäß einer Ausführungsform der Erfindung. Bei der dargestellten Ausführungsform gibt es 32 Vektorregister1010 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-Registerfile1050 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 in11A und11B 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-Pipeline1100 eine Abrufstufe1102 , eine Längendecodierungsstufe1104 , eine Decodierungsstufe1106 , eine Zuteilungsstufe1108 , eine Umbenennungsstufe1110 , eine Scheduling-Stufe1112 (auch als Entsende- oder Ausgabestufe bekannt), eine Registerlese-/Speicherlesestufe1114 , eine Ausführungsstufe1116 , eine Rückschreib-/Speicherschreibstufe1118 , eine Programmfehlerabwicklungsstufe1122 und eine Commit-Stufe1124 -
11B zeigt den Prozessorkern1190 mit einer Frontend-Einheit1130 , die mit einer Ausführungs-Engine-Einheit1150 gekoppelt ist, und beide sind mit einer Speichereinheit1170 gekoppelt. Der Kern1190 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 Kern1190 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ädiktionseinheit1132 , die mit einer Anweisungscache-Einheit1134 gekoppelt ist, die mit einem Anweisungsübersetzungs-Lookaside-Puffer (TLB)1136 gekoppelt ist, der mit einer Anweisungsabrufeinheit1138 gekoppelt ist, die mit einer Decodiereinheit1140 gekoppelt ist. Die Decodiereinheit1140 (bzw. Decodierer) kann Anweisungen decodieren und erzeugt als Ausgabe eine oder mehrere Mikro-Operationen, Mikro-Code-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 Decodiereinheit1140 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 Kern1190 einen Mikrocode-ROM oder ein anderes Medium, das Mikrocode für bestimmte Makroanweisungen speichert (z. B. in der Decodiereinheit1140 oder ansonsten in der Frontend-Einheit1130 ). Die Decodiereinheit1140 ist mit einer Umbenennungs-/Zuteilereinheit1152 in der Ausführungs-Engine-Einheit1150 gekoppelt. - Die Ausführungs-Engine-Einheit
1150 umfasst die Umbenennungs-/Zuteilereinheit1152 , die mit einer Ausscheideeinheit1154 und einer Menge aus einer oder mehreren Scheduler-Einheiten1156 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-Einheiten1158 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-Einheit1158 eine Vektorregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können Architektur-Vektorregister, Vektormaskenregister und Vielzweckregister bereitstellen. Die physische Registerfile-Einheit(en)1158 wird durch die Ausscheidungseinheit1154 ü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 Ausscheidungseinheit1154 und die physische Registerfile-Einheit(en)1158 sind mit dem Ausführungs-Cluster1160 gekoppelt. Das Ausführungs-Cluster1160 umfasst eine Menge aus einer oder mehreren Ausführungseinheiten1162 und eine Menge aus einer oder mehreren Speicherzugriffseinheiten1164 . Die Ausführungseinheiten1162 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-Einheiten1156 , physischen Registerfile-Einheiten1158 und Ausführungs-Cluster1160 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 Speichereinheit1170 gekoppelt, die eine Daten-TLB-Einheit1172 umfasst, die mit einer Daten-Cache-Einheit1174 gekoppelt ist, die mit einer Level-2-(L2-)Cache-Einheit1176 gekoppelt ist. Bei einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten1164 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit umfassen, die jeweils mit der Daten-TLB-Einheit1172 in der Speichereinheit1170 gekoppelt sind. Die Anweisungs-Cache-Einheit1134 ist ferner mit einer Level-2-(L2-)Cache-Einheit1176 in der Speichereinheit1170 gekoppelt. Die L2-Cache-Einheit1176 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-Abruf1138 führt die Abruf- und Längendecodierungsstufen1102 und1104 aus; 2) die Decodiereinheit1140 führt die Decodierstufe1106 aus; 3) die Umbenennungs-/Zuteilereinheit1152 führt die Zuteilungsstufe1108 und die Umbenennungsstufe1110 aus; 4) die Scheduler-Einheit(en)1156 führt die Schedule-Stufe1112 aus; 5) die physischen Registerfile-Einheit(en)1158 und die Speichereinheit1170 führen die Registerlese-/Speicherlesestufe1114 aus; das Ausführungs-Cluster1160 führt die Ausführungsstufe1116 aus; 6) die Speichereinheit1170 und die physischen Registerfile-Einheit(en)1158 führen die Rückschreib-/Speicherschreibstufe1118 aus; 7) verschiedene Einheiten können an der Programmfehlerabwicklungsstufe1122 beteiligt sein; und 8) die Ausscheidungseinheit1154 und die physischen Registerfile-Einheit(en)1158 führen die Commit-Stufe1124 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 Kern1190 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-Einheit1176 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 Verbindungsnetzwerk1202 und mit seiner lokalen Teilmenge des Level-2-(L2-)Cache1204 gemäß Ausführungsformen der Erfindung. Bei einer Ausführungsform unterstützt ein Anwendungsdecodierer1200 den x86-Anweisungssatz mit einer Gepackte-Daten-Anweisungssatzerweiterung. Ein L1-Cache1206 erlaubt Zugriffe auf den Cache-Speicher mit niedriger Latenz in die Skalar- und Vektoreinheiten. Obwohl bei einer Ausführungsform (zur Vereinfachung des Entwurfs) eine Skalareinheit1208 und eine Vektoreinheit1210 getrennte Registermengen verwenden (jeweils Skalarregister1212 und Vektorregister1214 ) und zwischen ihnen transferierte Daten in Speicher geschrieben und dann aus einem Level-1-(L1-)Cache1206 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-Cache1204 . Durch einen Prozessorkern gelesene Daten werden in seiner L2-Cache-Teilmenge1204 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-Teilmenge1204 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 in12A gemäß Ausführungsformen der Erfindung.12B umfasst einen L1-Daten-Cache1206A als Teil des L1-Cache1204 , sowie mehr Einzelheiten bezüglich der Vektoreinheit1210 und der Vektorregister1214 . Speziell ist die Vektoreinheit1210 eine 16-breite Vektorverarbeitungseinheit (VPU) (siehe die 16-breite ALU1228 ), 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-Einheit1220 , numerische Umsetzung mit numerischen Umsetzungseinheiten1222A –B und Replikation mit der Replikationseinheit1224 am Speichereingang. - Ein Prozessor mit integrierter Speichersteuerung und Grafik
-
13 ist ein Blockschaltbild eines Prozessors1300 , 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 in13 zeigen einen Prozessor1300 mit einem einzigen Kern1302A , einen Systemagenten1310 , eine Menge von einer oder mehreren Bussteuerungseinheiten1316 , während der optionale Zusatz der gestrichelt gezeichneten Kästen einen alternativen Prozessor1300 mit mehreren Kernen1302A –N, eine Menge von einer oder mehreren Speichersteuerungseinheit(en)1314 in der Systemagenteinheit1310 und Speziallogik1308 darstellt. - Somit können verschiedene Implementierungen des Prozessors
1300 Folgendes umfassen: 1) eine CPU mit der Speziallogik1308 , die integrierte Grafik ist, und/oder wissenschaftliche (Durchsatz-)Logik (die einen oder mehrere Kerne umfassen kann) und wobei die Kerne1302A –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 Kerne1302A –N 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 Kernen1302A –N, die eine große Anzahl von Vielzweck-In-Reihenfolge-Kernen sind. Somit kann der Prozessor1300 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 Prozessor1300 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 Speichersteuerungseinheiten1314 gekoppelt ist. Die Menge gemeinsam benutzter Cache-Einheiten1306 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 Verbindungseinheit1312 auf Ringbasis die integrierte Grafiklogik1308 , die Menge von gemeinsam benutzten Cache-Einheiten1306 und die Systemagenteinheit1310 /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-Einheiten1306 und Kernen1302A –N aufrechterhalten. - Bei bestimmten Ausführungsformen sind ein oder mehrere der Kerne
1302A –N zu Mehrfach-Threading fähig. Der Systemagent1310 umfasst die Komponenten, die die Kerne1302A –N koordinieren und betreiben. Die Systemagenteinheit1310 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 Kerne1302A –N und der integrierten Grafiklogik1308 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 Kerne1302A –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 Systementwü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 Systems1400 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System1400 kann einen oder mehrere Prozessoren1410 ,1415 umfassen, die mit einem Steuerungs-Hub1420 gekoppelt sind. Bei einer Ausführungsform umfasst der Steuerungs-Hub1420 einen Grafikspeichersteuerungs-Hub (GMCH)1490 und einen Eingabe/Ausgabe-Hub (IOH)1450 (die sich auf getrennten Chips befinden können); der GMCH1490 umfasst Speicher- und Grafiksteuerungen, mit denen Speicher1440 und ein Koprozessor1445 gekoppelt sind; der IOH1450 koppelt Eingabe/Ausgabe-(E/A-)Vorrichtungen1460 mit dem GMCH1490 . Als Alternative sind eine oder beide der Speicher- und Grafiksteuerungen in den Prozessor (wie hier beschrieben) integriert, der Speicher1440 und der Koprozessor1445 sind direkt mit dem Prozessor1410 gekoppelt und der Steuerungs-Hub1420 in einem einzigen Chip mit dem IOH1450 . - Die optionale Beschaffenheit der zusätzlichen Prozessoren
1415 wird in14 mit gestrichelten Linien bezeichnet. Jeder Prozessor1410 ,1415 kann einen oder mehrere der hier beschriebenen Prozessorkerne umfassen und kann eine bestimmte Version des Prozessors1300 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-Hub1420 über einen Mehrfachabkopplungsbus, wie etwa einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle wie eine QuickPath-Verbindung (QPI) oder eine ähnliche Verbindung1495 mit den Prozessoren1410 ,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-Hub1420 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 Prozessor1410 erkennt diese Koprozessoranweisungen als von einem Typ, der durch den angeschlossenen Koprozessor1445 ausgeführt werden soll. Dementsprechend gibt der Prozessor1410 diese Koprozessoranweisungen (oder Koprozessoranweisungen repräsentierende Steuersignale) auf einem Koprozessorbus oder einer anderen Verbindung an den Koprozessor1445 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 Systems1500 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in15 gezeigt, ist das Mehrprozessorsystem1500 ein Punkt-zu-Punkt-Verbindungssystem und umfasst einen ersten Prozessor1570 und einen zweiten Prozessor1580 , die über eine Punkt-zu-Punkt-Verbindung1550 gekoppelt sind. Jeder der Prozessoren1570 und1580 kann eine bestimmte Version des Prozessors1300 sein. Bei einer Ausführungsform der Erfindung sind die Prozessoren1570 und1580 Prozessoren1410 bzw.1415 , während der Koprozessor1538 der Koprozessor1445 ist. Bei einer anderen Ausführungsform sind die Prozessoren1570 und1580 Prozessor1410 bzw. Koprozessor1445 . - Die Prozessoren
1570 und1580 sind als IMC-Einheiten1572 bzw.1582 (integrierte Speichersteuerung) enthaltend gezeigt. Der Prozessor1570 umfasst als Teil seiner Bussteuerungseinheiten außerdem Punkt-zu-Punkt-(P-P-) Schnittstellen1576 und1578 ; ähnlich umfasst der zweite Prozessor1580 P-P-Schnittstellen1586 und1588 . Die Prozessoren1570 ,1580 können über eine Punkt-zu-Punkt-(P-P-)Schnittstelle1550 unter Verwendung von P-P-Schnittstellenschaltungen1578 ,1588 Informationen austauschen. Wie in15 gezeigt, koppeln IMC1572 und1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher1532 und einem Speicher1534 , 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-Schnittstellen1552 ,1554 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen1576 ,1594 ,1586 ,1598 Informationen mit einem Chipsatz1590 austauschen. Der Chipsatz1590 kann gegebenenfalls über eine Hochleistungsschnittstelle1539 Informationen mit dem Koprozessor1538 austauschen. Bei einer Ausführungsform ist der Koprozessor1538 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 Schnittstelle1596 mit einem ersten Bus1516 gekoppelt sein. Bei einer Ausführungsform kann der erste Bus1516 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-Vorrichtungen1514 mit dem ersten Bus1516 zusammen mit einer Busbrücke1518 , die den ersten Bus1516 mit einem zweiten Bus1520 koppelt, gekoppelt sein. Bei einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren1515 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 Bus1516 gekoppelt. Bei einer Ausführungsform kann der zweite Bus1520 ein LPC-Bus (Low Pin Count) sein. Es können bei einer Ausführungsform verschiedene Vorrichtungen mit einem zweiten Bus1520 gekoppelt sein, darunter zum Beispiel eine Tastatur und/oder eine Maus1522 , Kommunikationsvorrichtungen1527 und eine Speichereinheit1528 , wie etwa eine Festplatte oder eine andere Massenspeichervorrichtung, die Anweisungen/Code und Daten1530 umfassen können. Ferner kann eine Audio-E/A1524 mit dem zweiten Bus1520 gekoppelt sein. Man beachte, dass andere Architekturen möglich sind. Zum Beispiel kann ein System anstelle der Punkt-zu-Punkt-Architektur von15 einen Mehrfachabkopplungsbus oder eine andere solche Architektur implementieren. - Nunmehr mit Bezug auf
16 ist ein Blockschaltbild eines zweiten spezifischeren beispielhaften Systems1600 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in15 und16 tragen gleiche Bezugszahlen und bestimmte Aspekte von15 wurden aus16 weggelassen, um eine Verschleierung anderer Aspekte von16 zu vermeiden. -
16 zeigt, dass die Prozessoren1570 ,1580 integrierte Speicher- und E/A-Steuerlogik (CL)1572 bzw.1582 umfassen können. Somit umfassen CL1572 ,1582 integrierte Speichersteuerungseinheiten und umfassen E/A-Steuerlogik.16 zeigt, dass nicht nur die Speicher1532 ,1534 mit CL1572 ,1582 gekoppelt sind, sondern auch dass E/A-Vorrichtungen1614 auch mit der Steuerlogik1572 ,1582 gekoppelt sind. Veraltete E/A-Vorrichtungen1615 werden mit dem Chipsatz1590 gekoppelt. - Nunmehr mit Bezug auf
17 ist ein Blockschaltbild eines SoC1700 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in13 tragen gleiche Bezugszahlen. Außerdem sind gestrichelt gezeichnete Kästen optionale Merkmale auf fortschrittlicheren SoC. In17 ist eine Verbindungseinheit(en)1702 mit Folgendem gekoppelt: einem Anwendungsprozessor1710 , der eine Menge von einem oder mehreren Kernen202A –N und gemeinsam benutzte Cache-Einheit(en)1306 umfasst; eine Systemagenteinheit1310 ; eine Bussteuerungseinheit(en)1316 ; eine integrierte Speichersteuerungseinheit(en)1314 ; eine Menge von einem oder mehreren Koprozessoren1720 , die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor umfassen können; eine SRAM-Einheit1730 (statischer Direktzugriffsspeicher); eine DMA-Einheit1732 (Direct Memory Access); und eine Anzeigeeinheit1740 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 Code1530 , 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 Anweisungsumseber 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ührugsform 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 Sprache1802 , das unter Verwendung eines x86-Compilers1804 kompiliert werden kann, um x86-Binärcode1806 zu erzeugen, der nativ durch einen Prozessor mit mindestens einem x86-Anweisungssatzkern1816 ausgeführt werden kann. Der Prozessor mit dem mindestens einen x86-Anweisungssatzkern1816 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-Compiler1804 repräsentiert einen Compiler, der betreibbar ist, um x86-Binärcode1806 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit dem mindestens einen x86-Anweisungssatzkern1816 ausgeführt werden kann. Ähnlich zeigt18 , dass das Programm in der höheren Sprache1802 unter Verwendung eines Alternativ-Anweisungssatz-Compilers1808 kompiliert werden kann, um Alternativ-Anweisungssatz-Binärcode1810 zu erzeugen, der nativ durch einen Prozessor ohne mindestens einen x86-Anweisungssatzkern1814 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 Anweisungsumsetzer1812 dient zum Umsetzen des x86-Binärcodes1806 in Code, der nativ durch den Prozessor ohne einen x86-Anweisungssatzkern1814 ausgeführt werden kann. Dieser umgesetzte Code ist wahrscheinlich nicht derselbe wie der Alternativ-Anweisungssatz-Binärcode1810 , 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 Anweisungsumsetzer1812 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ärcode1806 auszuführen.
Claims (20)
- Verfahren zum Ausführen einer Rotation und eines XOR in einem Computerprozessor zum Ausführen als Reaktion auf eine einzige XOR- und Rotationsanweisung, wobei die Rotations- und XOR-Anweisung einen ersten und zweiten Quellenoperanden, einen Zieloperanden, einen Opcode und einen Unmittelbar-Wert umfasst, wobei das Verfahren die folgenden Schritte umfasst: Ausführen der einzigen Rotations- und XOR-Anweisung, um einen ersten oder zweiten Modus durchzuführen, 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 eine Anzahl X von Bitpositionen und XOR-Verknüpfen des rotierten Werts mit einem Wert aus dem zweiten Quellenoperanden bewirkt; und Speichern eines Ergebnisses entweder aus dem ersten oder dem zweiten Modus in einer mit dem Zieloperanden assoziierten Zielspeicherstelle.
- Verfahren nach Anspruch 1, wobei die X Bitpositionen ein Dezimalwert eines oder mehrerer Bit des Unmittelbaren sind.
- Verfahren nach Anspruch 2, wobei das eine oder die mehreren Bit des Unmittelbaren die sechs niedrigstwertigen Bit des Unmittelbaren sind.
- Verfahren nach Anspruch 1, wobei das Rotieren ein Linksrotieren ist.
- Verfahren nach Anspruch 1, wobei die XOR- und Rotationsanweisung Teil eines Skein-Hashing-Algorithmus ist.
- Verfahren nach Anspruch 1, wobei die XOR- und Rotationsanweisung Teil eines BLAKE-Hashing-Algorithmus ist.
- 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.
- Verfahren nach Anspruch 1, ferner umfassend: Bestimmen, welcher des ersten und zweiten Modus durchzuführen ist, auf der Basis eines Werts eines Bit des Unmittelbaren.
- Herstellungsartikel, umfassend: ein greifbares maschinenlesbares Speichermedium, worauf ein Exemplar einer Anweisung gespeichert ist, wobei das Format der Anweisung einen ersten und einen zweiten Quellenoperanden, einen Zieloperanden, ein Unmittelbares 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, um einen ersten oder einen zweiten Modus durchzuführen, 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 eine Anzahl X von Bitpositionen und XOR-Verknüpfen des rotierten Werts mit einem Wert aus dem zweiten Quellenoperanden bewirkt; und Speichern eines Ergebnisses entweder aus dem ersten oder dem zweiten Modus in einer mit dem Zieloperanden assoziierten Zielspeicherstelle.
- Herstellungsartikel nach Anspruch 9, wobei die X Bitpositionen ein Dezimalwert eines oder mehrerer Bit des Unmittelbaren sind.
- Herstellungsartikel nach Anspruch 10, wobei das eine oder die mehreren Bit des Unmittelbaren die sechs niedrigstwertigen Bit des Unmittelbaren sind.
- Herstellungsartikel nach Anspruch 9, wobei das Rotieren ein Linksrotieren ist.
- Herstellungsartikel nach Anspruch 9, wobei die Anweisung Teil eines Skein-Hashing-Algorithmus ist.
- Herstellungsartikel nach Anspruch 9, wobei die Anweisung Teil eines BLAKE-Hashing-Algorithmus ist.
- 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.
- Herstellungsartikel nach Anspruch 9, wobei der Opcode ferner die Maschine anweist, auf der Basis eines Werts eines Bit des Unmittelbaren zu bestimmen, welcher des ersten und zweiten Modus durchzuführen ist.
- Vorrichtung, umfassend; einen Hardwaredecoder zum Decodieren einer einzelnen XOR- und Rotationsanweisung, wobei die Rotations- und XOR-Anweisung einen ersten und zweiten Quellenoperanden, einen Zieloperanden, einen Opcode und einen Unmittelbar-Wert umfasst; und Ausführungslogik zum Ausführen eines ersten oder eines 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 eine Anzahl X von Bitpositionen und XOR-Verknüpfen des rotierten Werts mit einem Wert aus dem zweiten Quellenoperanden bewirkt; und Speichern eines Ergebnisses entweder aus dem ersten oder dem zweiten Modus in einer mit dem Zieloperanden assoziierten Zielspeicherstelle.
- Vorrichtung nach Anspruch 17, wobei die X Bitpositionen ein Dezimalwert eines oder mehrerer Bit des Unmittelbaren sind.
- Vorrichtung nach Anspruch 18, wobei das eine oder die mehreren Bit des Unmittelbaren die sechs niedrigstwertigen Bit des Unmittelbaren sind.
- Verfahren nach Anspruch 1, wobei das Rotieren ein Linksrotieren ist.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/631,242 | 2012-09-28 | ||
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 |
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 true DE112013003735T5 (de) | 2015-08-27 |
DE112013003735B4 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) | KR101934760B1 (de) |
CN (2) | CN104583980B (de) |
DE (1) | DE112013003735B4 (de) |
GB (2) | GB2581103A (de) |
WO (1) | WO2014051763A1 (de) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104025502B (zh) | 2011-12-22 | 2017-07-11 | 英特尔公司 | 用于处理blake安全散列算法的指令处理器、方法以及系统 |
US8953785B2 (en) * | 2012-09-28 | 2015-02-10 | Intel Corporation | Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor |
US9122475B2 (en) * | 2012-09-28 | 2015-09-01 | Intel Corporation | Instruction for shifting bits left with pulling ones into less significant bits |
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)
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 |
EP0869432B1 (de) * | 1997-04-01 | 2002-10-02 | Matsushita Electric Industrial Co., Ltd. | Multiplizierverfahren und Multiplizierschaltung |
JP3252954B2 (ja) * | 1997-04-01 | 2002-02-04 | 松下電器産業株式会社 | 乗算方法および乗算回路 |
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 |
-
2012
- 2012-09-28 US US13/631,242 patent/US9128698B2/en active Active
-
2013
- 2013-06-21 WO PCT/US2013/047185 patent/WO2014051763A1/en active Application Filing
- 2013-06-21 JP JP2015533050A patent/JP6088655B2/ja active Active
- 2013-06-21 CN CN201380045424.3A patent/CN104583980B/zh active Active
- 2013-06-21 GB GB2007017.3A patent/GB2581103A/en not_active Withdrawn
- 2013-06-21 DE DE112013003735.1T patent/DE112013003735B4/de active Active
- 2013-06-21 KR KR1020177029334A patent/KR101934760B1/ko active IP Right Grant
- 2013-06-21 KR KR1020157005035A patent/KR101787615B1/ko active IP Right Grant
- 2013-06-21 CN CN201810362434.4A patent/CN108563465B/zh active Active
- 2013-06-21 GB GB1500864.2A patent/GB2520855B/en active Active
-
2017
- 2017-02-03 JP JP2017019125A patent/JP2017134840A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
GB202007017D0 (en) | 2020-06-24 |
KR20150038407A (ko) | 2015-04-08 |
JP6088655B2 (ja) | 2017-03-01 |
CN108563465A (zh) | 2018-09-21 |
KR20170118250A (ko) | 2017-10-24 |
CN108563465B (zh) | 2022-09-20 |
CN104583980A (zh) | 2015-04-29 |
GB2520855B (en) | 2020-07-01 |
KR101787615B1 (ko) | 2017-10-19 |
DE112013003735B4 (de) | 2022-09-15 |
US20140095844A1 (en) | 2014-04-03 |
JP2017134840A (ja) | 2017-08-03 |
WO2014051763A1 (en) | 2014-04-03 |
GB2581103A (en) | 2020-08-05 |
GB2520855A (en) | 2015-06-03 |
KR101934760B1 (ko) | 2019-01-04 |
US9128698B2 (en) | 2015-09-08 |
CN104583980B (zh) | 2018-05-29 |
GB201500864D0 (en) | 2015-03-04 |
JP2015535982A (ja) | 2015-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102018005977A1 (de) | Gleitkomma- zu festkomma-umwandlung | |
DE102018005105A1 (de) | Befehle für entfernte atomare operationen | |
DE112014006508T5 (de) | Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden | |
DE112012007058T5 (de) | Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors | |
DE112013003735B4 (de) | Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung | |
DE102014003661A1 (de) | Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken | |
DE102018124945A1 (de) | Einrichtung und verfahren für komplexe multiplikation | |
DE102018129341A1 (de) | Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle | |
DE102018125232A1 (de) | Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation | |
DE112013003743T5 (de) | Beschleunigte spurübergreifende Vektorreduzierungsbefehle | |
DE102014004564A1 (de) | Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen | |
DE112013003741T5 (de) | Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers | |
DE102018124919A1 (de) | Skalierbare speicheroptimierte Hardware für Matrix-Solve | |
DE112013004783T5 (de) | Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl | |
DE112013005239T5 (de) | Anweisung zur Beschleunigung des drahtlosen SNOW 3G- Sicherheitsalgorithmus | |
DE102018125805A1 (de) | Systeme, verfahren, und vorrichtungen für skalarproduktoperationen | |
DE102015002253A1 (de) | Verfahren und Vorrichtung zum Ausführen mehrerer Multiplikationsoperationen | |
DE102018132200A1 (de) | Vorrichtung und verfahren zum verarbeiten von fraktionalen umkehroperationen | |
DE102018128939A1 (de) | Vorrichtung und Verfahren zur Vektormultiplikation vorzeichenbehafteter Wörter, Rundung und Sättigung | |
DE102018129263A1 (de) | Vorrichtung und verfahren zum multiplizieren, summieren und akkumulieren von sätzen von gepackten bytes | |
DE102018129298A1 (de) | Vorrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von vorzeichenbehafteten Doppelwörtern | |
DE102018006798A1 (de) | Einrichtung und Verfahren zum Multiplizieren, Addieren/Subtrahieren und Akkumulieren von gepackten Datenelementen | |
DE102018131842A1 (de) | Einrichtung und Verfahren zum Vektormultiplizieren und Akkumulieren von gepackten Wörtern | |
DE102014003659A1 (de) | Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters | |
DE102018128626A1 (de) | Systeme, Verfahren und Vorrichtungen für Matrixoperationen |
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 |