Carry-less Multiplication (CLMUL) è un'estensione del set di istruzioni x86 utilizzato dai microprocessori Intel e AMD, proposto da Intel nel marzo 2008 e reso disponibile nei processori Intel Westmere annunciati all'inizio del 2010.

Un uso di queste istruzioni è quello di migliorare la velocità delle applicazioni di cifratura a blocchi in modalità Galois/Counter, che dipende dalla moltiplicazione GF(2k) a campo finito, che può essere implementata in modo più efficiente con le nuove istruzioni CLMUL rispetto al tradizionale set di istruzioni. Un'altra applicazione è il calcolo veloce dei valori CRC, compresi quelli utilizzati per implementare l'algoritmo DEFLATE in zlib e pngcrush della finestra scorrevole LZ77.

Nuove istruzioni L'istruzione calcola il prodotto carry-less a 128 bit di due valori a 64 bit. La destinazione è un registro XMMM a 128 bit. La sorgente può essere un altro registro XMMM o memoria. Un operando immediato specifica quali metà degli operandi a 128 bit vengono moltiplicati. Sono inoltre definite delle mnemoniche che specificano valori specifici dell'operando immediato: Istruzione Opcode Descrizione PCLMULQDQ xmmreg,xmmrm,imm [rmi: 66 0f 3a 44 /r ib] Eseguire una moltiplicazione carry-less di due polinomi a 64 bit sul campo finito GF(2k). PCLMULLQLQDQ xmmreg,xmmrm [rm:  66 0f 3a 44 /r 00] Moltiplicare le metà basse dei due registri. PCLMULHQLQDQ xmmreg,xmmrm [rm:  66 0f 3a 44 /r 01] Moltiplicare la metà alta del registro di destinazione per la metà bassa del registro di origine. PCLMULLQHQDQ xmmreg,xmmrm [rm:  66 0f 3a 44 /r 10] Moltiplicare la metà bassa del registro di destinazione per la metà alta del registro di origine. PCLMULHQHQDQ xmmreg,xmmrm [rm:  66 0f 3a 44 /r 11] Moltiplicare le metà alte dei due registri.

CPU con CLMUL Intel Westmere Sandy Bridge Ivy Bridge Haswell Broadwell (con una maggiore produttività e una minore latenza) Skylake Kaby Lake Coffee Lake AMD Jaguar Puma Processore per "lavori pesanti" Bulldozer Piledriver Steamroller Excavator Zen Zen+

La presenza del set di istruzioni CLMUL può essere verificata testando uno dei bit delle caratteristiche della CPU.

Note

Voci correlate Aritmetica a campo finito AES-NI FMA (set di istruzioni) AVX

Categoria:Architettura x86