Sada instrukcí CLMUL - CLMUL instruction set
Násobení bez přenášení (CLMUL) je rozšíření k x86 instrukční sada používaná uživatelem mikroprocesory z Intel a AMD který společnost Intel navrhla v březnu 2008[1] a zpřístupněny v Procesory Intel Westmere oznámeno počátkem roku 2010. Matematicky instrukce implementuje násobení polynomů přes konečné pole GF (2) kde bitstring představuje polynom . Instrukce CLMUL také umožňuje efektivnější implementaci úzce souvisejícího násobení větších konečných polí GF (2k) než tradiční instrukční sada.[2]
Jedním z těchto pokynů je zvýšení rychlosti aplikací provádějících šifrování blokové šifry Režim Galois / Counter, což závisí na konečném poli GF (2k) násobení. Další aplikací je rychlý výpočet Hodnoty CRC,[3] včetně těch, které se používají k provádění LZ77 Posuvné okno DEFLATE algoritmus v zlib a pngcrush.[4]
ARMv8 má také verzi CLMUL. SPARC volá jejich verzi XMULX pro „XOR multiplication“.
Nové pokyny
Instrukce počítá 128-bit produkt bez přenášení dvou 64bitových hodnot. Cíl je a 128bitový registr XMM. Zdrojem může být jiný registr XMM nebo paměť. Okamžitý operand určuje, které poloviny 128bitových operandů jsou vynásobeny. Mnemotechnika specifikující konkrétní hodnoty okamžitého operandu je také definována:
Návod | Operační kód | Popis |
---|---|---|
PCLMULQDQ xmmreg, xmmrm, imm | [rmi: 66 0f 3a 44 / r ib] | Proveďte násobení dvou 64bitových polynomů bez přenášení přes konečné pole GF(2k). |
PCLMULLQLQDQ xmmreg, xmmrm | [rm: 66 0f 3a 44 / r 00] | Vynásobte nízké poloviny obou registrů. |
PCLMULHQLQDQ xmmreg, xmmrm | [rm: 66 0f 3a 44 / r 01] | Vynásobte horní polovinu cílového registru dolní polovinou zdrojového registru. |
PCLMULLQHQDQ xmmreg, xmmrm | [rm: 66 0f 3a 44 / r 10] | Vynásobte dolní polovinu cílového registru vysokou polovinou zdrojového registru. |
PCLMULHQHQDQ xmmreg, xmmrm | [rm: 66 0f 3a 44 / r 11] | Vynásobte vysoké poloviny dvou registrů. |
Vektorizovaná verze EVEX (VPCLMULQDQ) je vidět v AVX-512.
CPU s instrukční sadou CLMUL
- Intel
- Westmere procesor (březen 2010).
- Sandy Bridge procesor
- most z břečťanu procesor
- Haswell procesor
- Broadwell procesor (se zvýšenou propustností a nižší latencí[5])
- Skylake (a novější) procesor
- Goldmont procesor
- AMD:
- Jaguar procesory a novější [6]
- Na bázi Puma procesory a novější
- Procesory „Heavy Equipment“
- Buldozer procesory [7]
- Na základě pilota procesory
- Na bázi parního válce procesory
- Na základě rypadla procesory a novější
- Zen procesory
- Zen + procesory
- Zen2 (a novější) procesory
Přítomnost sady instrukcí CLMUL lze zkontrolovat testováním jedné z Bity funkcí CPU.
Viz také
Reference
- ^ „Softwarová síť Intel“. Intel. Archivovány od originál dne 2008-04-07. Citováno 2008-04-05.
- ^ Shay Gueron (2011-04-13). „Pokyny pro multiplikaci Intel Carry-Less a její využití pro výpočet režimu GCM - rev. 2“. Intel.
- ^ "Rychlý výpočet CRC pro obecné polynomy pomocí PCLMULQDQ" (PDF).
- ^ Vlad Krasnov (08.07.2015). „Boj proti rakovině: neočekávaná výhoda otevřeného získávání našeho kódu“. CloudFlare. Citováno 2016-09-04.
- ^ Johan De Gelas (2017-03-31). „Recenze Intel Xeon E5 v4: Testování Broadwell-EP s náročnými úlohami serveru“. Anandtech. p. 3.
- ^ „Vylepšení detailů snímku Jaguar přes Bobcat“. AMD. Citováno 3. srpna 2013.
- ^ Dave Christie (6. května 2009). „Dosažení rovnováhy“. Blogy vývojářů AMD. Archivovány od originál dne 9. listopadu 2013. Citováno 2011-03-11.