CLMUL

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Carry-less Multiplication ( CLMUL ) este o extensie a setului de instrucțiuni x86 utilizat de microprocesoarele Intel și AMD , propus de Intel în martie 2008 [1] și pus la dispoziție în procesoarele Intel Westmere anunțate la începutul anului 2010.

O utilizare a acestor instrucțiuni este de a îmbunătăți viteza aplicațiilor de cifrare bloc în modul Galois / Counter , care depinde de multiplicarea câmpului finit GF (2 k ), care poate fi implementată mai eficient [2] cu noile instrucțiuni CLMUL comparativ cu cele tradiționale set de instructiuni. O altă aplicație este calcularea rapidă a valorilor CRC, [3] inclusiv cele utilizate pentru implementarea algoritmului DEFLATE în zlib și pngcrush al ferestrei glisante LZ77 . [4]

Instrucțiuni noi

Instrucțiunea calculează produsul de 128 de biți fără transport din două valori pe 64 de biți. Destinația este un registru XMMM pe 128 de biți . Sursa poate fi un alt registru sau memorie XMMM. Un operand imediat specifică care jumătate din operandii pe 128 de biți sunt înmulțiți. De asemenea, sunt definite mnemonice care specifică valorile specifice ale operandului imediat:

Instrucțiuni Opcode Descriere
PCLMULQDQ xmmreg,xmmrm,imm [rmi: 66 0f 3a 44 /r ib] Efectuați o multiplicare fără transport a două polinoame pe 64 de biți pe câmpul finit GF (2 k ).
PCLMULLQLQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 00] Înmulțiți jumătățile inferioare ale celor două registre.
PCLMULHQLQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 01] Înmulțiți jumătatea înaltă a jurnalului de destinație cu jumătatea joasă a jurnalului sursă.
PCLMULLQHQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 10] Înmulțiți jumătatea joasă a jurnalului de destinație cu jumătatea înaltă a jurnalului sursă.
PCLMULHQHQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 11] Înmulțiți jumătățile înalte ale celor două registre.

CPU cu CLMUL

Prezența setului de instrucțiuni CLMUL poate fi verificată testând unul dintre biții caracteristicilor procesorului.

Notă

  1. ^ (EN) Intel AVX , pe softwareprojects.intel.com, Intel . Adus la 18 octombrie 2018 (arhivat din original la 7 aprilie 2008) .
  2. ^ (EN) Shay Gueron, Instrucțiuni de multiplicare Intel® Carry-less și utilizarea sa pentru calculul modului GCM - Rev. 2:02 , pe software.intel.com, Intel , 13 aprilie 2011. Accesat la 18 octombrie 2018.
  3. ^ (EN) Vinodh Gopal, Erdinc Ozturk, Jim Guilford, Gil Wolrich, Wajdi Feghali, Martin Dixon and Deniz Karakoyunlu, Fast CRC Computation for Generic Polynomials Using PCLMULQDQ Instruction (PDF) on intel.com, Intel , December, 2009. Accessed in April 18, 2018 .
  4. ^ (EN) Vlad Krasnov, Fighting Cancer: The Unknown Benefice of Our Open Sourcing Code , în The Cloudflare Blog , 8 iulie 2018. Adus pe 18 octombrie 2018.
  5. ^ (RO) Johan De Gelas, Revizuirea Intel Xeon E5 v4: Testarea Broadwell-EP cu sarcini de lucru cerute de server în AnandTech , 31 martie 2016, p. 3. Adus la 18 octombrie 2018 .
  6. ^ (EN) Bobcat to jaguar_v2 , Slideshare, AMD , 29 august 2012. Accesat la 18 octombrie 2018.
  7. ^ (EN) Dave Christie, Striking a Balance in AMD , 6 mai 2009. Accesat la 18 octombrie 2018 (depus de „Adresa URL originală 9 noiembrie 2013).

Elemente conexe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT