CLMUL
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 | editovat zdroj]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 | editovat zdroj]Intel
[editovat | editovat zdroj]- 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 | editovat zdroj]- 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 | editovat zdroj]- procesory Zen+
- Procesory Zen2 (a novější).
- Přítomnost sady instrukcí CLMUL lze zkontrolovat testováním jednoho z bitů funkce CPU
Reference
[editovat | editovat zdroj]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.