CLMUL

rozšíření instrukční sady x86 pro násobení mnohočlenů nad konečnými tělesy

Instrukční sada CLMUL (zkratka z anglického Carry-less Multiplication, doslova „bezpřenosové násobení“) je rozšířením instrukční sady x86 o několik strojových instrukcí pro hardwarovou podporu některých algoritmů založených na násobení polynomů nad konečným tělesem .

Společnost Intel oznámila zavedení tohoto rozšíření instrukční sady v roce 2008. Poprvé byla implementována v procesorech Westmere vyráběných od roku 2010. Je ve všech procesorech společnosti Intel počínaje generací Haswell a ve všech procesorech společnosti AMD počínaje modelem AMD Bulldozer.

Kromě šifrovacího režimu GCM, kvůli kterému byly instrukce zavedeny především, jsou používany také pro počítání cyklických redundantních součtů.

Přehled jednotlivých instrukcí editovat

Cílem operace je vždy registr XMM (využívá tedy rozšíření SSE). Operandem může být rovněž registr XMM nebo paměť.

Instrukce Opkód Popis
PCLMULQDQ xmmreg,xmmrm,imm [rmi: 66 0f 3a 44 /r ib] Bezpřenosové násobení dvou 64bitových polynomů nad konečným tělesem GF(2k).
PCLMULLQLQDQ xmmreg,xmmrm [rm:  66 0f 3a 44 /r 00] Bezpřenosové násobení nižších polovin dvou různých registrů.
PCLMULHQLQDQ xmmreg,xmmrm [rm:  66 0f 3a 44 /r 01] Bezpřenosové násobení vyšší poloviny cílového registru s nižší polovinou zdrojového registru.
PCLMULLQHQDQ xmmreg,xmmrm [rm:  66 0f 3a 44 /r 10] Bezpřenosové násobení nižší poloviny cílového registru s vyšší polovinou zdrojového registru.
PCLMULHQHQDQ xmmreg,xmmrm [rm:  66 0f 3a 44 /r 11] Bezpřenosové násobení vyšších polovin registrů.

CPU s instrukční sadou CLMUL editovat

Intel editovat

  • Procesor Westmere (březen 2010).
  • Procesor Sandy Bridge
  • Procesor Ivy Bridge
  • procesor Haswell
  • Procesor Broadwell (se zvýšenou propustností a nižší latencí)
  • Skylake (a novější) procesor
  • procesor Goldmont

AMD editovat

  • Procesory založené na Jaguar a novější
  • Procesory na bázi Puma a novější
  • Procesory "těžkého vybavení"
  • Procesory založené na buldozerech
  • Procesory založené na Piledriveru
  • Procesory založené na Steamroller
  • Procesory založené na bagru a novější

Zen procesory editovat

  • procesory Zen+
  • Procesory Zen2 (a novější).
  • Přítomnost sady instrukcí CLMUL lze zkontrolovat testováním jednoho z bitů funkce CPU

Reference editovat

V tomto článku byly použity překlady textů z článků CLMUL na německé Wikipedii a CLMUL Instruction set na anglické Wikipedii.