AVX-512 - AVX-512 - Wikipedia
AVX-512 jsou 512 bitů rozšíření do 256 bitů Pokročilá vektorová rozšíření SIMD pokyny pro x86 architektura sady instrukcí (ISA) navrhl Intel v červenci 2013 a implementováno v Intel Xeon Phi x200 (Rytíři přistání)[1] a Skylake-X CPU; to zahrnuje Řada Core-X (kromě Core i5-7640X a Core i7-7740X), stejně jako nový Rodina škálovatelných procesorů Xeon a Xeon D-2100 Embedded Series.[2]
AVX-512 není první 512bitová sada instrukcí SIMD, kterou společnost Intel představila v procesorech: dřívější 512bitové instrukce SIMD používané v první generaci Xeon Phi koprocesory odvozené od společnosti Intel Larrabee jsou podobné, ale nejsou binárně kompatibilní a kompatibilní pouze částečně se zdroji.[1]
AVX-512 se skládá z několika rozšíření, která mohou být implementována samostatně. Tato zásada je odklonem od historického požadavku na implementaci celého bloku instrukcí. Všechny implementace AVX-512 vyžadují pouze rozšíření jádra AVX-512F (AVX-512 Foundation).
Sada instrukcí
Sada instrukcí AVX-512 se skládá z několika samostatných sad, z nichž každá má svůj vlastní jedinečný bit funkce CPUID; jsou však obvykle seskupeny podle generace procesoru, která je implementuje.
- F, CD, ER, PF
- Představeno s Xeon Phi x200 (Knights Landing) a Xeon E5-26xx V5 (Skylake EP / EX „Purley“, očekáváno ve druhé polovině roku 2017), přičemž poslední dva (ER a PF) jsou specifické pro Knights Landing.
- AVX-512 Foundation (F) - rozšiřuje většinu 32bitových a 64bitových verzí AVX pokyny s EVEX schéma kódování pro podporu 512bitových registrů, provozních masek, vysílání parametrů a integrovaného ovládání zaokrouhlování a výjimek, implementováno Knights Landing a Skylake Xeon
- Pokyny k detekci konfliktů AVX-512 (CD) - efektivní detekce konfliktů, aby bylo možné více smyček vektorizovaný, implementováno Knights Landing[1] a Skylake X
- AVX-512 Exponenciální a Reciproční Pokyny (ER) - exponenciální a reciproční operace určené k usnadnění implementace transcendentální operace, realizované Knights Landing[1]
- Pokyny pro předběžné načtení AVX-512 (PF) - nové možnosti předběžného načítání, implementované Knights Landing[1]
- VL, DQ, BW
- Představeno se Skylake X a Cannon Lake.
- AVX-512 prodloužení délky vektoru (VL) - rozšiřuje většinu operací AVX-512 tak, aby fungovaly také na registrech XMM (128 bitů) a YMM (256 bitů)[3]
- AVX-512 Doubleword and Quadword Instructions (DQ) - přidává nové 32bitové a 64bitové pokyny AVX-512[3]
- Pokyny pro bajty a Word AVX-512 (BW) - rozšiřuje AVX-512 o 8bitové a 16bitové celočíselné operace[3]
- IFMA, VBMI
- Představeno s Cannon Lake.[4]
- AVX-512 Integer Fused Multiply Přidat (IFMA) - kondenzované násobení přidání celých čísel pomocí 52bitové přesnosti.
- Pokyny pro manipulaci s vektorovými bajty AVX-512 (VBMI) přidává instrukce pro permutaci vektorových bytů, které nebyly v AVX-512BW přítomny.
- 4VNNIW, 4FMAPS
- Představeno s Knights Mill.[5][6]
- AVX-512 Vector Neural Network Instructions Word variable precision (4VNNIW) - vektorové pokyny pro hluboké učení, vylepšené slovo, variabilní přesnost.
- AVX-512 Fused Multiply Accumulation Packed Single precision (4FMAPS) - vektorové pokyny pro hluboké učení, plovoucí desetinnou čárku, jednoduchou přesnost.
- VPOPCNTDQ
- Vektor počet obyvatel návod. Představený s Knights Mill a Ledové jezero.[7]
- VNNI, VBMI2, BITALG
- Představeno s Ice Lake.[7]
- Pokyny pro vektorovou neuronovou síť AVX-512 (VNNI) - vektorové pokyny pro hluboké učení.
- Pokyny pro manipulaci s vektorovými bajty AVX-512 2 (VBMI2) - načítání bajtů / slov, ukládání a zřetězení s posunem.
- Bitové algoritmy AVX-512 (BITALG) - bajt / slovo bit manipulace instrukce rozšiřující VPOPCNTDQ.
- VP2INTERSECT
- Představeno s Tiger Lake.
- Průnik vektorového páru AVX-512 do dvojice registrů masek (VP2INTERSECT).
- GFNI, VPCLMULQDQ, VAES
- Představeno s Ice Lake.[7]
- Nejedná se o funkce AVX-512 samy o sobě. Spolu s AVX-512 umožňují EVEX kódované verze GFNI, PCLMULQDQ a pokyny AES.
Kódování a funkce
The Předpona VEX používaný AVX a AVX2, i když je flexibilní, nenechával dostatek prostoru pro funkce, které Intel chtěl přidat do AVX-512. To je vedlo k definování nové předvolby s názvem EVEX.
Ve srovnání s VEX přináší EVEX následující výhody:[6]
- Rozšířené kódování registrů umožňující 32 512bitových registrů.
- Přidá 8 nových registrů opmasky pro maskování většiny pokynů AVX-512.
- Přidá nový režim skalární paměti, který automaticky provede vysílání.
- Přidává prostor pro explicitní ovládání zaokrouhlování v každé instrukci.
- Přidá novou komprimovanou paměť posunutí režim adresování.
Rozšířené registry, bitové šířky SIMD a registry opmasky AVX-512 jsou povinné a všechny vyžadují podporu operačního systému.
Režimy SIMD
Pokyny AVX-512 jsou navrženy tak, aby se mísily s 128 / 256bitovými pokyny AVX / AVX2 bez trestu za výkon. Rozšíření AVX-512VL však umožňují použití instrukcí AVX-512 na 128 / 256bitových registrech XMM / YMM, takže většina instrukcí SSE a AVX / AVX2 má nové verze AVX-512 zakódované s předponou EVEX, které umožňují přístup k novým funkcím například opmask a další registry. Na rozdíl od AVX-256 nemají nové instrukce novou mnemotechniku, ale sdílejí jmenný prostor s AVX, takže rozdíl mezi verzemi instrukcí kódovaných VEX a EVEX je ve zdrojovém kódu nejednoznačný. Vzhledem k tomu, že AVX-512F funguje pouze na 32 a 64bitových hodnotách, jsou pokyny SSE a AVX / AVX2, které fungují na bajtech nebo slovech, k dispozici pouze s příponou AVX-512BW (podpora Byte & Word).[6]
název | Prodlužovací sady | Registry | Typy |
---|---|---|---|
Legacy SSE | SSE-SSE4.2 | xmm0-xmm15 | jednoduché plováky. Ze SSE2: bajty, slova, dvojitá slova, čtvercová slova a dvojité floaty. |
AVX-128 (VEX) | AVX, AVX2 | xmm0-xmm15 | bajty, slova, doublewords, quadwords, jednoduché plovoucí znaky a dvojité plovoucí znaky. |
AVX-256 (VEX) | AVX, AVX2 | ymm0-ymm15 | jednoduchý plovák a dvojitý plovák. Z AVX2: bajty, slova, dvojitá slova, čtverná slova |
AVX-128 (EVEX) | AVX-512VL | xmm0-xmm31 (k1-k7) | doublewords, quadwords, single float a double float. S AVX512BW: bajty a slova |
AVX-256 (EVEX) | AVX-512VL | ymm0-ymm31 (k1-k7) | doublewords, quadwords, single float a double float. S AVX512BW: bajty a slova |
AVX-512 (EVEX) | AVX-512F | zmm0-zmm31 (k1-k7) | doublewords, quadwords, single float a double float. S AVX512BW: bajty a slova |
Rozšířené registry
511 256 | 255 128 | 127 0 |
ZMM0 | YMM0 | XMM0 |
ZMM1 | YMM1 | XMM1 |
ZMM2 | YMM2 | XMM2 |
ZMM3 | YMM3 | XMM3 |
ZMM4 | YMM4 | XMM4 |
ZMM5 | YMM5 | XMM5 |
ZMM6 | YMM6 | XMM6 |
ZMM7 | YMM7 | XMM7 |
ZMM8 | YMM8 | XMM8 |
ZMM9 | YMM9 | XMM9 |
ZMM10 | YMM10 | XMM10 |
ZMM11 | YMM11 | XMM11 |
ZMM12 | YMM12 | XMM12 |
ZMM13 | YMM13 | XMM13 |
ZMM14 | YMM14 | XMM14 |
ZMM15 | YMM15 | XMM15 |
ZMM16 | YMM16 | XMM16 |
ZMM17 | YMM17 | XMM17 |
ZMM18 | YMM18 | XMM18 |
ZMM19 | YMM19 | XMM19 |
ZMM20 | YMM20 | XMM20 |
ZMM21 | YMM21 | XMM21 |
ZMM22 | YMM22 | XMM22 |
ZMM23 | YMM23 | XMM23 |
ZMM24 | YMM24 | XMM24 |
ZMM25 | YMM25 | XMM25 |
ZMM26 | YMM26 | XMM26 |
ZMM27 | YMM27 | XMM27 |
ZMM28 | YMM28 | XMM28 |
ZMM29 | YMM29 | XMM29 |
ZMM30 | YMM30 | XMM30 |
ZMM31 | YMM31 | XMM31 |
Šířka SIMD Registrační soubor se zvýší z 256 bitů na 512 bitů a rozšíří se ze 16 na celkem 32 registrů ZMM0-ZMM31. Tyto registry lze adresovat jako 256bitové registry YMM z rozšíření AVX a 128bitové registry XMM z Streamování rozšíření SIMD a starší pokyny AVX a SSE lze rozšířit tak, aby fungovaly na 16 dalších registrech XMM16-XMM31 a YMM16-YMM31 při použití formuláře kódovaného pomocí EVEX.
Opmask registruje
Většina pokynů AVX-512 může označovat jeden z 8 registrů opmasky (k0 – k7). U instrukcí, které používají maskovou registraci jako masku, je speciální registr `k0`: pevně zakódovaná konstanta používaná k označení nemaskovaných operací. Pro ostatní operace, jako jsou ty, které zapisují do registru masky nebo provádějí aritmetické nebo logické operace, je `k0` funkční platný registr. Ve většině pokynů se opmaska používá k řízení, které hodnoty se zapisují do cíle. Příznak řídí chování opmasky, které může být buď „nula“, což vynuluje vše, co maska nevyberla, nebo „sloučit“, což ponechá vše, co není vybrané, nedotčené. Chování sloučení je identické s pokyny pro míchání.
Registry opmasky mají obvykle šířku 16 bitů, ale s příponou AVX-512BW mohou být až 64 bitů.[6] Kolik bitů se skutečně používá, však záleží na typu vektoru maskovaných instrukcí. U 32bitového jednoduchého floatu nebo dvojitých slov se k maskování 16 prvků v 512bitovém registru používá 16 bitů. Pro dvojitá float a quad slova se používá maximálně 8 bitů masky.
Registr opmask je důvodem, proč je v AVX-512 přidalo několik bitových instrukcí, které přirozeně nemají šířky prvků. Například bitové AND, OR nebo 128bitové zamíchání nyní existují ve variantách dvou i čtyř slov, přičemž jediný rozdíl je v konečném maskování.
Nové pokyny k masce
Registry opmask mají nové mini rozšíření instrukcí, které na nich pracují přímo. Na rozdíl od zbytku instrukcí AVX-512 jsou všechny tyto instrukce kódovány VEX. Počáteční pokyny k masce jsou všechny 16bitové verze (Word). S AVX-512DQ byly přidány 8bitové (bajtové) verze, aby lépe odpovídaly potřebám maskování 8 64bitových hodnot, au AVX-512BW byly přidány 32bitové (dvojité) a 64bitové (čtyřkolky) verze, aby mohly maskování až 64 8bitových hodnot. Pokyny KORTEST a KTEST lze použít k nastavení příznaků x86 na základě registrů masky, takže je lze použít společně s větvími x86 a podmíněnými pokyny, které nejsou SIMD.
Návod | Prodlužovací sada | Popis |
---|---|---|
KAND | F | Bitové logické AND masky |
KANDN | F | Bitové logické A NENÍ masky |
KMOV | F | Přesouvejte se za do maskových registrů nebo univerzálních registrů |
KUNPCK | F | Rozbalte maskové registry |
UZEL | F | NOT Mask Register |
KOR | F | Bitové logické NEBO masky |
KORTEST | F | NEBO Masky A Nastavit Vlajky |
KSHIFTL | F | Posuňte registry levé masky |
KSHIFTR | F | Posuňte registry pravé masky |
KXNOR | F | Bitové logické masky XNOR |
KXOR | F | Bitové logické masky XOR |
KADD | BW / DQ | Přidejte dvě masky |
KTEST | BW / DQ | Bitové srovnání a nastavení příznaků |
Nové pokyny v základně AVX-512
Mnoho instrukcí AVX-512 je jednoduše verzí EVEX starých instrukcí SSE nebo AVX. Existuje však několik nových pokynů a starých pokynů, které byly nahrazeny novými verzemi AVX-512. Níže jsou uvedeny nové nebo zásadně přepracované pokyny. Tyto nadace pokyny také obsahují rozšíření z AVX-512VL a AVX-512BW, protože tato rozšíření pouze přidávají nové verze těchto pokynů namísto nových pokynů.
Směs pomocí masky
Neexistují žádné verze instrukcí pro míchání s předponou EVEX SSE4; místo toho má AVX-512 novou sadu směšovacích instrukcí používajících jako voliče registry masek. Společně s obecnými pokyny pro porovnání do masky níže je lze použít k implementaci obecných ternárních operací nebo cmov, podobných XOP VPCMOV.
Protože míchání je nedílnou součástí kódování EVEX, lze tyto instrukce považovat také za základní instrukce pro pohyb. Pomocí režimu nulovací směsi je lze také použít jako maskovací pokyny.
Návod | Prodlužovací sada | Popis |
---|---|---|
VBLENDMPD | F | Směšujte vektory float64 pomocí ovládání opmasky |
VBLENDMPS | F | Smíchejte vektory float32 pomocí ovládání opmasky |
VPBLENDMD | F | Směšujte vektory int32 pomocí ovládání opmasky |
VPBLENDMQ | F | Směšujte vektory int64 pomocí ovládání opmasky |
VPBLENDMB | BW | Směšujte bajtové celočíselné vektory pomocí ovládání opmasky |
VPBLENDMW | BW | Směs celočíselných vektorů slov pomocí ovládání opmasky |
Porovnejte do masky
AVX-512F má čtyři nové pokyny pro porovnání. Jako jejich XOP protějšky používají okamžité pole k výběru mezi 8 různými srovnáními. Na rozdíl od jejich inspirace XOP však ukládají výsledek do registru masky a zpočátku podporují pouze srovnání dvou a čtyř slov. Rozšíření AVX-512BW poskytuje bajtovou a slovní verzi. Všimněte si, že pro instrukce lze zadat dva registry masek, jeden pro zápis a druhý pro deklaraci pravidelného maskování.[6]
Bezprostřední | Srovnání | Popis |
---|---|---|
0 | EQ | Rovnat se |
1 | LT | Méně než |
2 | LE | Méně než nebo rovno |
3 | NEPRAVDIVÉ | Nastavit na nulu |
4 | NEQ | Není to stejné |
5 | NLT | Větší nebo rovno |
6 | NLE | Větší než |
7 | SKUTEČNÝ | Nastaveno na jednu |
Návod | Prodlužovací sada | Popis |
---|---|---|
VPCMPD
| F | Porovnejte podepsaná / nepodepsaná dvojí slova do masky |
VPCMPQ
| F | Porovnejte podepsaná / nepodepsaná hesla do masky |
VPCMPB
| BW | Porovnejte podepsané / nepodepsané bajty s maskou |
VPCMPW
| BW | Porovnejte podepsaná / nepodepsaná slova v masce |
Logická sada masky
Posledním způsobem, jak nastavit masky, je použití masky logické sady. Tyto pokyny provedou AND nebo NAND a poté nastaví cílovou opmasku na základě nulových nebo nenulových výsledných hodnot. Všimněte si, že stejně jako pokyny pro porovnání, i tyto berou dva registry masky, jeden jako cíl a druhý jako normální masku.
Návod | Prodlužovací sada | Popis |
---|---|---|
VPTESTMD , VPTESTMQ | F | Logické AND a nastavená maska pro 32 nebo 64 bitová celá čísla. |
VPTESTNMD , VPTESTNMQ | F | Logický NAND a nastavená maska pro 32 nebo 64 bitová celá čísla. |
VPTESTMB , VPTESTMW | BW | Logické AND a nastavená maska pro 8 nebo 16 bitová celá čísla. |
VPTESTNMB , VPTESTNMW | BW | Logický NAND a nastavená maska pro 8 nebo 16 bitová celá čísla. |
Komprimujte a rozšiřujte
Pokyny pro kompresi a rozbalení odpovídají APL operace stejného jména. Používají masku poněkud odlišným způsobem než ostatní instrukce AVX-512. Komprese uloží pouze hodnoty označené v masce, ale uloží je komprimované přeskočením a nevyhrazením místa pro neoznačené hodnoty. Expand funguje opačným způsobem, načtením tolika hodnot, kolik je uvedeno v masce, a poté je rozloží na vybrané pozice.
Návod | Popis |
---|---|
VCOMPRESSPD ,
| Ukládejte řídce zabalené hodnoty s plovoucí desetinnou čárkou s dvojitou / jednou přesností do husté paměti |
VPCOMPRESSD ,
| Ukládejte řídce zabalené celočíselné hodnoty dvou slov / čtyř slov do husté paměti / registru |
VEXPANDPD ,
| Načíst řídce zabalené hodnoty s plovoucí desetinnou čárkou s dvojitou / jednoduchou přesností z husté paměti |
VPEXPANDD ,
| Načíst řídce zabalené dvojité / čtyřslovné celočíselné hodnoty z husté paměti / registru |
Obměňovat
Nová sada permutovat pokyny byly přidány pro plné dvě vstupní permutace. Všichni berou tři argumenty, dva zdrojové registry a jeden index; Výsledkem je výstup přepsáním prvního zdrojového registru nebo indexového registru. AVX-512BW rozšiřuje instrukce také o 16bitové (wordové) verze a rozšíření AVX-512_VBMI definuje bajtové verze instrukcí.
Návod | Prodlužovací sada | Popis |
---|---|---|
VPERMB | VBMI | Prvky sbalených bajtů. |
VPERMW | BW | Prvky permutovaných slov. |
VPERMT2B | VBMI | Plný bajt přepis prvního zdroje. |
VPERMT2W | BW | Plné slovo permutující přepsání prvního zdroje. |
VPERMI2PD , VPERMI2PS | F | Plná jednoduchá / dvojitá plovoucí desetinná čárka permutuje přepis indexu. |
VPERMI2D , VPERMI2Q | F | Úplné dvojslovo / čtyřslovo permutuje přepsání indexu. |
VPERMI2B | VBMI | Full byte permute přepsání indexu. |
VPERMI2W | BW | Plné slovo permutující přepsání indexu. |
VPERMT2PS , VPERMT2PD | F | Plná jednoduchá / dvojitá plovoucí desetinná čárka, přepis prvního zdroje. |
VPERMT2D , VPERMT2Q | F | Plné dvouslovné / čtyřslovné permutační přepsání prvního zdroje. |
VSHUFF32x4 , VSHUFF64x2 ,
| F | Zamíchejte čtyři zabalené 128bitové řádky. |
VPMULTISHIFTQB | VBMI | Vyberte zabalené nevyřízené bajty ze zdrojů čtyřslov. |
Bitová ternární logika
Přidané dvě nové instrukce mohou logicky implementovat všechny možné bitové operace mezi třemi vstupy. Berou tři registry jako vstup a 8bitové okamžité pole. Každý bit na výstupu je generován pomocí vyhledávání tří odpovídajících bitů na vstupech pro výběr jedné z 8 pozic v 8bitovém okamžitém stavu. Protože pomocí tří bitů je možné pouze 8 kombinací, umožňuje to provádět všechny možné 3 bitové operace vstupu.[6]Toto jsou jediné bitové vektorové instrukce v AVX-512F; V AVX-512DQ byly přidány verze EVEX dvou zdrojových bitových vektorových instrukcí SSE a AVX AND, ANDN, OR a XOR.
Rozdíl ve verzích dvou a čtyř slov je pouze v použití opmasky.
Návod | Popis |
---|---|
VPTERNLOGD , VPTERNLOGQ | Bitová ternární logika |
A0 | A1 | A2 | Double AND (0x80) | Double OR (0xFE) | Bitová směs (0xCA) |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 |
Převody
Byla přidána řada pokynů pro převod nebo přesun; tyto doplňují sadu konverzních instrukcí dostupných z SSE2.
Návod | Prodlužovací sada | Popis |
---|---|---|
| F | Dolů převeďte čtyřslovo nebo dvojslovo na dvojslovo, slovo nebo byte; nenasycené, nasycené nebo nasycené bez znaménka. Zadní strana instrukcí znaménko / nulové prodloužení od SSE4.1. |
VPMOVWB , VPMOVSWB , VPMOVUSWB | BW | Dolů převést slovo na bajt; nenasycené, nasycené nebo nasycené bez znaménka. |
VCVTPS2UDQ , VCVTPD2UDQ ,
| F | Převádějte se zkrácením nebo bez zkrácení, sbalená jednoduchá nebo dvojitá přesnost s plovoucí desetinnou čárkou na zabalená nepodepsaná celá čísla dvou slov. |
VCVTSS2USI , VCVTSD2USI ,
| F | Převod s trakcí nebo bez ní, skalární jednoduchá nebo dvojitá přesnost s plovoucí desetinnou čárkou na celé číslo bez znaménka. |
VCVTPS2QQ , VCVTPD2QQ ,
| DQ | Převádějte se zkrácením nebo bez zkrácení, sbalená jednoduchá nebo dvojitá přesnost s plovoucí desetinnou čárkou na zabalená celá čísla se znaménkem nebo bez znaménka. |
VCVTUDQ2PS , VCVTUDQ2PD | F | Převést zabalená celá čísla bez znaménka na dvojslovo na zabalenou jednoduchou nebo dvojitou přesností s plovoucí desetinnou čárkou |
VCVTUSI2PS , VCVTUSI2PD | F | Převést skalární nepodepsaná celá čísla dvou slov na plovoucí desetinnou čárku s jednoduchou nebo dvojitou přesností. |
VCVTUSI2SD , VCVTUSI2SS | F | Převést skalární celá čísla bez znaménka na plovoucí desetinnou čárku s jednoduchou nebo dvojitou přesností. |
VCVTUQQ2PS , VCVTUQQ2PD | DQ | Převeďte zabalená celá čísla bez znaménka na čtvercová slova na sbalenou jednoduchou nebo dvojitou přesností s plovoucí desetinnou čárkou. |
VCVTQQ2PD , VCVTQQ2PS | F | Převeďte zabalená celá čísla čtyř slov na zabalenou desetinnou čárkou s jednoduchou nebo dvojitou přesností. |
Rozklad s plovoucí desetinnou čárkou
Mezi jedinečné nové funkce AVX-512F patří pokyny k rozkladu hodnot s plovoucí desetinnou čárkou a zpracování speciální hodnoty s plovoucí desetinnou čárkou. Jelikož jsou tyto metody zcela nové, existují také ve skalárních verzích.
Návod | Popis |
---|---|
VGETEXPPD , VGETEXPPS | Převést exponenty zabalených hodnot fp na hodnoty fp |
VGETEXPSD , VGETEXPSS | Konvertovat exponent skalární hodnoty fp na hodnotu fp |
VGETMANTPD , VGETMANTPS | Extrahujte vektor normalizovaných mantiss z vektoru float32 / float64 |
VGETMANTSD , VGETMANTSS | Extrahujte float32 / float64 normalizovaných mantisa ze float32 / float64 skalární |
VFIXUPIMMPD , VFIXUPIMMPS | Opravte speciální zabalené hodnoty float32 / float64 |
VFIXUPIMMSD , VFIXUPIMMSS | Opravte speciální skalární hodnoty float32 / float64 |
Aritmetika s plovoucí desetinnou čárkou
Toto je druhá sada nových metod s plovoucí desetinnou čárkou, která zahrnuje nové škálování a přibližný výpočet převrácení a převrácení druhé odmocniny. Přibližné vzájemné pokyny zaručují nanejvýš relativní chybu 2−14.[6]
Návod | Popis |
---|---|
VRCP14PD , VRCP14PS | Vypočítejte přibližné převrácené hodnoty zabalených hodnot float32 / float64 |
VRCP14SD , VRCP14SS | Vypočítejte přibližné převrácené hodnoty skalární hodnoty float32 / float64 |
VRNDSCALEPS , VRNDSCALEPD | Zaokrouhleno zabalené hodnoty float32 / float64 tak, aby zahrnovaly daný počet zlomkových bitů |
VRNDSCALESS , VRNDSCALESD | Zaokrouhlená skalární hodnota float32 / float64 tak, aby zahrnovala daný počet zlomkových bitů |
VRSQRT14PD , VRSQRT14PS | Vypočítejte přibližné převrácené hodnoty druhé odmocniny zabalených hodnot float32 / float64 |
VRSQRT14SD , VRSQRT14SS | Vypočítejte přibližnou převrácenou hodnotu druhé odmocniny skalární hodnoty float32 / float64 |
VSCALEFPS , VSCALEFPD | Škálovat zabalené hodnoty float32 / float64 s hodnotami float32 / float64 |
VSCALEFSS , VSCALEFSD | Měřítko skalární hodnoty float32 / float64 s hodnotou float32 / float64 |
Přenos
Návod | Prodlužovací sada | Popis |
---|---|---|
VBROADCASTSS , VBROADCASTSD | F, VL | Vysílat jednu / dvojitou hodnotu s plovoucí desetinnou čárkou |
VPBROADCASTB , VPBROADCASTW , VPBROADCASTD , VPBROADCASTQ | F, VL, DQ, BW | Vysílejte celočíselnou hodnotu byte / word / doubleword / quadword |
VBROADCASTI32X2 ,VBROADCASTI64X2 , VBROADCASTI32X4 ,VBROADCASTI32X8 , VBROADCASTI64X4 | F, VL, DQ, BW | Vysílejte dvě nebo čtyři celočíselné hodnoty dvou slov / čtyř slov |
Smíšený
Návod | Prodlužovací sada | Popis |
---|---|---|
VALIGND , VALIGNQ | F, VL | Zarovnejte vektory dvou slov nebo čtyř slov |
VDBPSADBW | BW | Součet absolutních rozdílů (SAD) s dvojitým blokem na nepodepsaných bajtech |
VPABSQ | F | Zabalené čtyřslovo absolutní hodnoty |
VPMAXSQ , VPMAXUQ | F | Maximum zabaleného podepsaného / nepodepsaného čtyřslova |
VPMINSQ , VPMINUQ | F | Minimum zabaleného podepsaného / nepodepsaného čtyřslova |
VPROLD , VPROLVD ,VPROLQ , VPROLVQ ,VPRORD , VPRORVD ,VPRORQ , VPRORVQ | F | Bit se otáčí doleva nebo doprava |
VPSCATTERDD , VPSCATTERDQ ,VPSCATTERQD , VPSCATTERQQ | F | Rozptýlené dvojité slovo / čtyřslovo s podepsanými dvojslovnými a čtyřslovými indexy |
VSCATTERDPS , VSCATTERDPD ,VSCATTERQPS , VSCATTERQPD | F | Rozptýlené float32 / float64 s podepsanými dvojslovými a čtyřslovými indexy |
Nové pokyny podle sad
Detekce konfliktů
Pokyny v detekci konfliktů AVX-512 (AVX-512CD) jsou navrženy tak, aby pomohly efektivně vypočítat bezkonfliktní podmnožiny prvků ve smyčkách, které normálně nelze bezpečně vektorizovat.[8]
Návod | název | Popis |
---|---|---|
VPCONFLICTD , VPCONFLICTQ | Detekujte konflikty ve vektoru zabalených hodnot dvojitých nebo čtyřnásobných hesel. | Porovná každý prvek v prvním zdroji se všemi prvky na stejných nebo dřívějších místech ve druhém zdroji a tvoří bitový vektor výsledků. |
VPLZCNTD , VPLZCNTQ | Spočítat počet počátečních nulových bitů pro zabalené dvojité nebo čtyřslovné hodnoty. | Vectorized LZCNT návod. |
VPBROADCASTMB2Q ,VPBROADCASTMW2D | Vysílací maska do vektorového registru. | Buď 8bitová maska na vektor čtyřslov, nebo 16bitová maska na vektor dvou slov. |
Exponenciální a reciproční
Exponenciální a reciproční instrukce AVX-512 obsahují přesnější přibližné reciproční instrukce než ty v základu AVX-512; relativní chyba je maximálně 2−28. Obsahují také dvě nové exponenciální funkce, které mají relativní chybu nejvýše 2−23.[6]
Návod | Popis |
---|---|
VEXP2PD , VEXP2PS | Vypočítejte přibližné exponenciální 2 ^ x zabalených hodnot s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností |
VRCP28PD , VRCP28PS | Vypočítejte přibližné převrácené hodnoty sbalených hodnot s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností |
VRCP28SD , VRCP28SS | Vypočítejte přibližné převrácené hodnoty skalární jednoduché nebo dvojité přesnosti s plovoucí desetinnou čárkou |
VRSQRT28PD , VRSQRT28PS | Vypočítejte přibližné převrácené hodnoty druhé odmocniny zabalených hodnot s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností |
VRSQRT28SD , VRSQRT28SS | Vypočítejte přibližné převrácené hodnoty druhé odmocniny skalární jednoduché nebo dvojité přesnosti s plovoucí desetinnou čárkou |
Prefetch
Pokyny pro předběžné načítání AVX-512 obsahují nové operace předběžného načítání pro nový scatter a shromažďují funkce zavedené v AVX2 a AVX-512. T0
prefetch znamená prefetching do mezipaměti úrovně 1 a T1
znamená předběžné načítání do mezipaměti úrovně 2.
Návod | Popis |
---|---|
VGATHERPF0DPS , VGATHERPF0QPS , VGATHERPF0DPD , VGATHERPF0QPD | Pomocí podepsaných indexů dword / qword předem načtěte místa řídké bajtové paměti obsahující data s jednoduchou / dvojitou přesností pomocí opmask k1 a T0 hint. |
VGATHERPF1DPS , VGATHERPF1QPS , VGATHERPF1DPD , VGATHERPF1QPD | Pomocí podepsaných indexů dword / qword předem načtěte místa řídké bajtové paměti obsahující data s jednoduchou / dvojitou přesností pomocí nápovědy opmask k1 a T1. |
VSCATTERPF0DPS , VSCATTERPF0QPS , VSCATTERPF0DPD , VSCATTERPF0QPD | Pomocí podepsaných indexů dword / qword předem načtěte místa řídké bajtové paměti obsahující data s jednoduchou / dvojitou přesností pomocí funkce writeemask k1 a T0 s úmyslem psát. |
VSCATTERPF1DPS , VSCATTERPF1QPS , VSCATTERPF1DPD , VSCATTERPF1QPD | Pomocí podepsaných indexů dword / qword předem načtěte místa řídké bajtové paměti obsahující data s jednoduchou / dvojitou přesností pomocí funkce writeemask k1 a T1 s úmyslem psát. |
4FMAPS a 4VNNIW
Návod | Prodlužovací sada | Popis |
---|---|---|
V4FMADDPS , V4FMADDSS | 4FMAPS | Zabalený / skalární plovoucí desetinnou čárkou s plovoucí desetinnou čárkou fúzovaný multiply-add (4-iterace) |
V4FNMADDPS , V4FNMADDSS | 4FMAPS | Zabalený / skalární plovoucí desetinnou čárkou s plovoucí desetinnou čárkou kondenzovaný multiplikovat a negovat (4-iterace) |
VP4DPWSSD | 4VNNIW | Tečkový produkt podepsaných slov s akumulací dvou slov (4-iterace) |
VP4DPWSSDS | 4VNNIW | Tečkový produkt podepsaných slov s dvojitou akumulací a nasycením slov (4-iterace) |
BW, DQ a VBMI
AVX-512DQ přidává nové instrukce pro dvojslovo a čtyřslovo. AVX-512BW přidává bajtové a slovní verze stejných instrukcí a přidává bajtovou a slovní verzi instrukcí dvouslovných / čtyřslovných v AVX-512F. Několik pokynů, které získají pouze slovní tvary s AVX-512BW, získají bajtové tvary s příponou AVX-512_VBMI (VPERMB
, VPERMI2B
, VPERMT2B
, VPMULTISHIFTQB
).
Do sady instrukcí masky byly přidány dva nové pokyny: KADD
a KTEST
(ČB formuláře s AVX-512DQ, D a Q s AVX-512BW). Zbytek instrukcí masky, který měl pouze slovní formy, dostal bajtové formuláře s AVX-512DQ a dvouslovné / čtyřslovné tvary s AVX-512BW. KUNPCKBW
byl rozšířen na KUNPCKWD
a KUNPCKDQ
autor: AVX-512BW.
Mezi instrukcemi přidanými AVX-512DQ je několik instrukcí SSE, AVX, které nezískaly verze AVX-512 s AVX-512F, mezi nimi jsou všechny dvě vstupní bitové instrukce a extrahovat / vložit celočíselné instrukce.
Pokyny, které jsou zcela nové, jsou uvedeny níže.
Pokyny s plovoucí desetinnou čárkou
Jsou představeny tři nové operace s plovoucí desetinnou čárkou. Vzhledem k tomu, že nejsou pro AVX-512 jen noví, mají jak balenou / SIMD, tak skalární verzi.
The VFPCLASS
instrukce testuje, zda je hodnota s plovoucí desetinnou čárkou jednou z osmi speciálních hodnot s plovoucí desetinnou čárkou, která z osmi hodnot spustí bit v registru výstupní masky, je řízena okamžitým polem. The VRANGE
instrukce provádějí minimální nebo maximální operace v závislosti na hodnotě bezprostředního pole, které mohou také řídit, zda se operace provádí absolutně nebo ne, a samostatně, jak se se znaménkem zachází. The VREDUCE
instrukce pracují na jediném zdroji a od této hodnoty odečítají celočíselnou část zdrojové hodnoty plus počet bitů specifikovaných v bezprostředním poli jejího zlomku.
Návod | Prodlužovací sada | Popis |
---|---|---|
VFPCLASSPS , VFPCLASSPD | DQ | Testujte typy sbalených hodnot s plovoucí desetinnou čárkou s jednoduchou a dvojitou přesností. |
VFPCLASSSS , VFPCLASSSD | DQ | Testujte typy skalárních jednoduchých a dvojitých přesností s plovoucí desetinnou čárkou. |
VRANGEPS , VRANGEPD | DQ | Výpočet omezení rozsahu pro hodnoty s plovoucí desetinnou čárkou. |
VRANGESS , VRANGESD | DQ | Výpočet omezení rozsahu pro hodnoty skalárního plovoucího bodu. |
VREDUCEPS , VREDUCEPD | DQ | Proveďte transformaci redukce na zabalených hodnotách s plovoucí desetinnou čárkou. |
VREDUCESS , VREDUCESD | DQ | Proveďte redukční transformaci na hodnotách skalárního plovoucího bodu. |
Další pokyny
Návod | Prodlužovací sada | Popis |
---|---|---|
VPMOVM2D , VPMOVM2Q | DQ | Převést registr masky na vektorový registr se dvěma nebo čtyřmi slovy. |
VPMOVM2B , VPMOVM2W | BW | Převést registr masky na bajtový nebo slovní vektorový registr. |
VPMOVD2M , VPMOVQ2M | DQ | Převést vektorový registr dvou nebo čtyř slov na maskovaný registr. |
VPMOVB2M , VPMOVW2M | BW | Převést bajtový nebo slovní vektorový registr na maskový registr. |
VPMULLQ | DQ | Násobně zabalené čtyřslovo ukládá nízký výsledek. Čtyřslovná verze VPMULLD. |
VBMI2
Rozšířit VPCOMPRESS a VPEXPAND o varianty bytů a slov. Pokyny pro posun jsou nové.
Návod | Popis |
---|---|
VPCOMPRESSB , VPCOMPRESSW | Ukládejte řídce zabalené bajtové / slovní celočíselné hodnoty do husté paměti / registru |
VPEXPANDB , VPEXPANDW | Načíst řídce zabalené bajtové / slovní celočíselné hodnoty z husté paměti / registru |
VPSHLD | Zřetězit a přesunout zabalená data zůstala logická |
VPSHLDV | Zřetězené a proměnné posunutí zabalených dat zůstalo logické |
VPSHRD | Zřetězit a posunout zabalená data správně logicky |
VPSHRDV | Zřetězené a proměnlivé posunutí zabalených dat správně logické |
VNNI
Pokyny pro neuronové sítě.
Návod | Popis |
---|---|
VPDPBUSD | Znásobte a přidejte nepodepsané a podepsané bajty |
VPDPBUSDS | Znásobte a přidejte nepodepsané a podepsané bajty se sytostí |
VPDPWSSD | Znásobte a přidejte celá podepsaná slova |
VPDPWSSDS | Znásobte a přidejte celá čísla slov se sytostí |
IFMA
Návod | Prodlužovací sada | Popis |
---|---|---|
VPMADD52LUQ | IFMA | Zabalte několikanásobek nepodepsaných celých 52 bitů a přidejte nízké 52bitové produkty do akumulátorů qword |
VPMADD52HUQ | IFMA | Zabalte několikanásobek nepodepsaných celých 52 bitů a přidejte vysoké 52bitové produkty do 64bitových akumulátorů |
VPOPCNTDQ a BITALG
Návod | Prodlužovací sada | Popis |
---|---|---|
VPOPCNTD , VPOPCNTQ | VPOPCNTDQ | Vrátí počet bitů nastavený na 1 ve dvouslovných / čtyřslovných slovech |
VPOPCNTB , VPOPCNTW | BITALG | Vrátí počet bitů nastavený na 1 v bajtech / slovech |
VPSHUFBITQMB | BITALG | Shuffle bits from quadword elements using byte indexes into mask |
VP2INTERSECT
Návod | Prodlužovací sada | Popis |
---|---|---|
VP2INTERSECTD , VP2INTERSECTQ | VP2INTERSECT | Výpočet průniku mezi dvojitými / čtyřmi slovy do pár registrů masky |
GFNI
Kódováno EVEX Galoisovo pole nové pokyny:
Návod | Popis |
---|---|
VGF2P8AFFINEINVQB | Galoisova pole afinní transformace inverzní |
VGF2P8AFFINEQB | Afinní transformace pole galois |
VGF2P8MULB | Galoisovo pole násobí bajty |
VPCLMULQDQ
VPCLMULQDQ s AVX-512F přidává 512bitovou verzi instrukce PCLMULQDQ s kódováním EVEX. S AVX-512VL přidává 256- a 128bitové verze s kódováním EVEX. Samotný VPCLMULQDQ (tj. Na procesorech jiných než AVX512) přidává pouze 256bitovou verzi kódovanou VEX. (Dostupnost 128bitové verze kódované VEX je indikována různými bity CPUID: PCLMULQDQ a AVX.) Širší než 128bitové varianty instrukce provádějí stejnou operaci na každé 128bitové části vstupních registrů, ale dělají to nerozšiřovat jej tak, aby vybíral quadwords z různých 128bitových polí (význam operandu imm8 je stejný: je vybráno buď nízké nebo vysoké quadword 128bitového pole).
Návod | Popis |
---|---|
VPCLMULQDQ | Nákladové čtyřnásobné čtyřslovo |
VAES
Kódováno VEX a EVEX AES instrukce. Širší než 128bitové variace instrukce provádějí stejnou operaci na každé 128bitové části vstupních registrů. Verze VEX lze použít bez podpory AVX-512.
Návod | Popis |
---|---|
VAESDEC | Proveďte jedno kolo dešifrovacího toku AES |
VAESDECLAST | Proveďte poslední kolo dešifrovacího toku AES |
VAESENC | Proveďte jedno kolo toku šifrování AES |
VAESENCLAST | Proveďte poslední kolo toku šifrování AES |
BF16
Pokyny pro akceleraci AI, které pracují na 16. díl formát.
Návod | Popis |
---|---|
VCVTNE2PS2BF16 | Převeďte dvě zabalená čísla s přesnou přesností na jedno zabalené číslo Bfloat16 |
VCVTNEPS2BF16 | Převeďte jedno zabalené jedno přesné číslo na jedno zabalené číslo Bfloat16 |
VDPBF16PS | Vypočítejte bodový součin dvou párů Bfloat16 a výsledek shromážděte do jednoho zabaleného jediného čísla přesnosti |
Starší pokyny upgradované na verze s kódováním EVEX
Starší kódování | Skupina | Instrukce | AVX-512 rozšíření | ||
---|---|---|---|---|---|
SSE SSE2 MMX | AVX SSE3 SSE4.1 | AVX2 FMA | |||
Ano | Ano | Ne | VADD | VADDPD , VADDPS , VADDSD , VADDSS | F, VL |
VAND | VANDPD , VANDPSY , VANDNPD , VANDNPS | VL, DQ | |||
VCMP | VCMPPD , VCMPPS , VCMPSD , VCMPSS | F | |||
VCOM | VCOMISD , VCOMISS | F | |||
VDIV | VDIVPD , VDIVPS , VDIVSD , VDIVSS | F, VL | |||
VCVT | VCVTDQ2PD , VCVTDQ2PS , VCVTPD2DQ , VCVTPD2PS ,
| F, VL | |||
VMAX | VMAXPD , VMAXPS , VMAXSD , VMAXSS | F, VL | |||
VMIN | VMINPD , VMINPS , VMINSD , VMINSS | F | |||
VMOV | VMOVAPD , VMOVAPS , VMOVD , VMOVQ ,
| F, VL, BW | |||
VMUL | VMULPD , VMULPS , VMULSD , VMULSS | F, VL | |||
VOR | VORPD , VORPS | VL, DQ | |||
VSQRTP | VSQRTPD , VSQRTPS , VSQRTSD , VSQRTSS | F, VL | |||
VSUB | VSUBPD , VSUBPS , VSUBSD , VSUBSS | F, VL | |||
VUCOMI | VUCOMISD , VUCOMISS | F | |||
VUNPCK | VUNPCKHPD , VUNPCKHPS , VUNPCKLPD , VUNPCKLPS | F, VL | |||
VXOR | VXORPD , VXORPS | VL, DQ | |||
Ne | Ano | Ne | VEXTRACTPS | VEXTRACTPS | F |
VINSERTPS | VINSERTPS | F | |||
VPALIGNR | VPALIGNR | VL, BW | |||
VPEXTR | VPEXTRB , VPEXTRW , VPEXTRD , VPEXTRQ | BW, DQ | |||
VPINSR | VPINSRB , VPINSRW , VPINSRD , VPINSRQ | BW, DQ | |||
Ano | Ano | Ano | VPACK | VPACKSSWB , VPACKSSDW , VPACKUSDW , VPACKUSWB | VL, BW |
VPADD | VPADDB , VPADDW , VPADDD , VPADDQ ,
| F, VL, BW | |||
VPAND | VPANDD , VPANDQ , VPANDND , VPANDNQ | F, VL | |||
VPAVG | VPAVGB , VPAVGW | VL, BW | |||
VPCMPEQ | VPCMPEQB , VPCMPEQW , VPCMPEQD , VPCMPEQQ | F, VL, BW | |||
VPCMPGT | VPCMPGTB , VPCMPGTW , VPCMPGTD , VPCMPGTQ | F, VL, BW | |||
VPMAX | VPMAXSB , VPMAXSW , VPMAXSD , VPMAXSQ , VPMAXUB , VPMAXUW , VPMAXUD , VPMAXUQ | F, VL, BW | |||
VPMIN | VPMINSB , VPMINSW , VPMINSD , VPMINSQ , VPMINUB , VPMINUW , VPMINUD , VPMINUQ | F, VL, BW | |||
VPMOV | VPMOVSXBW , VPMOVSXBD , VPMOVSXBQ , VPMOVSXWD , VPMOVSXWQ , VPMOVSXDQ ,
| F, VL, BW | |||
VPMUL | VPMULDQ , VPMULUDQ , VPMULHRSW , VPMULHUW , VPMULHW , VPMULLD , VPMULLQ , VPMULLW | F, VL, BW | |||
VPOR | VPORD , VPORQ | F, VL | |||
VPSUB | VPSUBB , VPSUBW , VPSUBD , VPSUBQ , VPSUBSB , VPSUBSW , VPSUBUSB , VPSUBUSW | F, VL, BW | |||
VPUNPCK | VPUNPCKHBW , VPUNPCKHWD , VPUNPCKHDQ , VPUNPCKHQDQ ,
| F, VL, BW | |||
VPXOR | VPXORD , VPXORQ | F, VL | |||
VPSADBW | VPSADBW | VL, BW | |||
VPSHUF | VPSHUFB , VPSHUFHW , VPSHUFLW , VPSHUFD ,
| F, VL, BW | |||
Ne | Ano | Ano | VEXTRACT | VEXTRACTF32X4 , VEXTRACTF64X2 , VEXTRACTF32X8 , VEXTRACTF64X4 ,
| F, VL, DQ |
VINSERT | VINSERTF32x4 , VINSERTF64X2 , VINSERTF32X8 , VINSERTF64x4 ,
| F, VL, DQ | |||
VPABS | VPABSB , VPABSW , VPABSD , VPABSQ | F, VL, BW | |||
VPERM | VPERMD , VPERMILPD , VPERMILPS , VPERMPD , VPERMPS , VPERMQ | F, VL | |||
VPMADD | VPMADDUBSW VPMADDWD | VL, BW | |||
Ne | Ne | Ano | VFMADD | VFMADD132PD , VFMADD213PD , VFMADD231PD ,
| F, VL |
VFMADDSUB | VFMADDSUB132PD , VFMADDSUB213PD , VFMADDSUB231PD ,
| F, VL | |||
VFMSUBADD | VFMSUBADD132PD , VFMSUBADD213PD , VFMSUBADD231PD ,
| F, VL | |||
VFMSUB | VFMSUB132PD , VFMSUB213PD , VFMSUB231PD ,
| F, VL | |||
VFNMADD | VFNMADD132PD , VFNMADD213PD , VFNMADD231PD ,
| F, VL | |||
VFNMSUB | VFNMSUB132PD , VFNMSUB213PD , VFNMSUB231PD ,
| F, VL | |||
VGATHER | VGATHERDPS , VGATHERDPD , VGATHERQPS , VGATHERQPD | F, VL | |||
VPGATHER | VPGATHERDD , VPGATHERDQ , VPGATHERQD , VPGATHERQQ | F, VL | |||
VPSRAV | VPSRAVW , VPSRAVD , VPSRAVQ | F, VL, BW |
CPUs with AVX-512
- Intel
- Knights Landing (Xeon Phi x200):[1][9] AVX-512 F, CD, ER, PF
- Knights Mill (Xeon Phi x205):[7] AVX-512 F, CD, ER, PF, 4FMAPS, 4VNNIW, VPOPCNTDQ
- Skylake-SP, Skylake-X:[10][11][12] AVX-512 F, CD, VL, DQ, BW
- Cannon Lake:[7] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI
- Cascade Lake: AVX-512 F, CD, VL, DQ, BW, VNNI
- Cooper Lake: AVX-512 F, CD, VL, DQ, BW, VNNI, BF16
- Ledové jezero:[7] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES
- Tygří jezero (except Pentium and Celeron[13]):[14] AVX512 F, CD, VL, BW, DQ, VBMI, IFMA, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, VP2INTERSECT
- Rocket Lake:
- Olše Lake:
- Meteor Lake:
- Technologie kentaurů
AVX-512 Subset | F | CD | ER | PF | 4FMAPS | 4VNNIW | VPOPCNTDQ | VL | DQ | BW | IFMA | VBMI | VNNI | BF16 | VBMI2 | BITALG | VPCLMULQDQ | GFNI | VAES | VP2INTERSECT |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Knights Landing (Xeon Phi x200) processors (2016) | Ano | Ano | Ne | |||||||||||||||||
Knights Mill (Xeon Phi x205) processors (2017) | Ano | Ano | Ne | |||||||||||||||||
Skylake-SP, Skylake-X processors (2017) | Ne | Ne | Ne | Ano | Ne | |||||||||||||||
Cannon Lake processors (2018) | Ano | Ne | ||||||||||||||||||
Cascade Lake processors (2019) | Ne | Ano | Ne | |||||||||||||||||
Cooper Lake processors (2020) | Ano | Ne | ||||||||||||||||||
Ledové jezero processors (2019) | Ano | Ano | Ne | Ano | Ne | |||||||||||||||
Tygří jezero processors (2020) | Ano |
QEMU supports emulating AVX-512 in its TCG.
Výkon
Intel "Vectorization" Advisor (starting from version 2016 Update 3) supports native AVX-512 performance and vector code quality analysis for 2nd generation Intel Xeon Phi (s kódovým označením Knights Landing ) procesor. Along with traditional hotspots profile, Advisor Recommendations and "seamless" integration of Intel Compiler vectorization diagnostics, Advisor Survey analysis also provides AVX-512 ISA metrics and new AVX-512-specific "traits", e.g. Scatter, Compress/Expand, mask utilization.[17][18]
AVX-512 causes a frequency throttling even greater than its predecessors, causing a penalty for mixed workloads. The additional downclocking is triggered by the 512-bit width of vectors, and using the 256-bit part of AVX-512 (AVX-512VL) does not trigger it. Jako výsledek, gcc and clang default to prefer using the 256-bit vectors.[19]
Viz také
- Sada instrukcí FMA (FMA)
- Sada instrukcí XOP (XOP)
- Scalable Vector Extension for ARM - a new vector instruction set (supplementing VFP a NEON ) supporting very wide bit-widths, and single binary code that can adapt automatically to maximum width supported by hardware.
Reference
- ^ A b C d E F James Reinders (23 July 2013). "AVX-512 Instructions". Intel. Citováno 20. srpna 2013.
- ^ "Advanced Intelligence for High-Density Edge Solutions". Intel. Intel. Citováno 8. února 2018.
- ^ A b C James Reinders (17 July 2014). "Additional AVX-512 instructions". Intel. Citováno 3. srpna 2014.
- ^ Anton Shilov. "Intel 'Skylake' processors for PCs will not support AVX-512 instructions". Kitguru.net. Citováno 2015-03-17.
- ^ https://lemire.me/blog/2016/10/14/intel-will-add-deep-learning-instructions-to-its-processors/
- ^ A b C d E F G h "Intel Architecture Instruction Set Extensions Programming Reference" (PDF). Intel. Citováno 2014-01-29.
- ^ A b C d E F "Intel® Architecture Instruction Set Extensions and Future Features Programming Reference". Intel. Citováno 2017-10-16.
- ^ "AVX-512 Architecture/Demikhovsky Poster" (PDF). Intel. Citováno 25. února 2014.
- ^ "Intel® Xeon Phi™ Processor product brief". Intel. Citováno 12. října 2016.
- ^ "Intel unveils X-series platform: Up to 18 cores and 36 threads, from $242 to $2,000". Ars Technica. Citováno 2017-05-30.
- ^ "Intel® Advanced Vector Extensions 2015/2016 : Support in GNU Compiler Collection" (PDF). Gcc.gnu.org. Citováno 2016-10-20.
- ^ Patrizio, Andy. "Intel's Xeon roadmap for 2016 leaks". Itworld.org. Citováno 2016-10-20.
- ^ "Intel® Celeron® 6305 Processor (4M Cache, 1.80 GHz, with IPU) Product Specifications". ark.intel.com. Citováno 2020-11-10.
- ^ "Using the GNU Compiler Collection (GCC): x86 Options". GNU. Citováno 2019-10-14.
- ^ https://centtech.com/ai-technology/
- ^ "x86, x64 Instruction Latency, Memory Latency and CPUID dumps (instlatx64)". users.atw.hu.
- ^ "Intel® Advisor XE 2016 Update 3 What's new - Intel® Software". Software.intel.com. Citováno 2016-10-20.
- ^ "Intel® Advisor - Intel® Software". Software.intel.com. Citováno 2016-10-20.
- ^ Cordes, Peter. "SIMD instructions lowering CPU frequency". Přetečení zásobníku.