CLMUL instruction set

CLMUL instruction set（Carry-less Multiplication instruction set、CLMUL、あるいはPCLMULQDQとも）は、インテルおよびAMDのマイクロプロセッサに用いられているx86命令セットである。2008年にインテルによって提唱され、2010年のWestmereプロセッサから利用可能となった。この命令セットの目的は、有限体上での乗法に基づいた、ブロック暗号の暗号利用モードの一つであり認証付き暗号であるGalois/Counter Modeの高速化である。CLMULによって、従来の命令セットと比較してGF(2k) の有限体上での乗法をより効率的に実装することができる。もう一つの目的は、CRCの計算の高速化である。

命令一覧 

 PCLMULLQLQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 00]
 PCLMULHQLQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 01]
 PCLMULLQHQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 02]
 PCLMULHQHQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 03]
 PCLMULQDQ xmmreg,xmmrm,imm [rmi: 66 0f 3a 44 /r ib]

CLMULを実装したCPU 
 インテル
 Westmere
 Sandy Bridge
 Ivy Bridge
 Haswell
 AMD
 Bulldozer
 Piledriver
 Jaguar

CLMUL命令セットへの対応の有無は、CPUIDで確認することが可能である。

関連項目 
 有限体
 Galois/Counter Mode
 AES-NI
 ストリーミングSIMD拡張命令

脚注 

CPU
X86アーキテクチャ
暗号