Pokročilá vektorová rozšíření - Advanced Vector Extensions

Advanced Vector Extensions ( AVX , také známé jako Sandy Bridge New Extensions ) jsou rozšíření architektury instrukční sady x86 pro mikroprocesory od Intelu a AMD navržené společností Intel v březnu 2008 a nejprve podporováno společností Intel s procesorem Sandy Bridge dodávaným v 1. čtvrtletí 2011 a později zapnuto AMD s procesorem Bulldozer dodaným v Q3 2011. AVX poskytuje nové funkce, nové pokyny a nové schéma kódování.

AVX2 (také známý jako Haswell New Instructions ) rozšiřuje většinu celočíselných příkazů na 256 bitů a zavádí operace FMA ( fused multiply -umulatulate ). Nejprve byly podporovány společností Intel s procesorem Haswell, který byl dodán v roce 2013.

AVX-512 rozšiřuje AVX na 512bitovou podporu pomocí nového kódování předpony EVEX navrženého společností Intel v červenci 2013 a nejprve podporovaného společností Intel s procesorem Knights Landing , který byl dodán v roce 2016.

Pokročilá vektorová rozšíření

AVX používá šestnáct registrů YMM k provedení jedné instrukce na více kusech dat (viz SIMD ). Každý registr YMM může obsahovat a provádět simultánní operace (matematické) na:

  • osm 32bitových čísel s plovoucí desetinnou čárkou s jednoduchou přesností nebo
  • čtyři 64bitová čísla s plovoucí desetinnou čárkou s dvojitou přesností.

Šířka registrů SIMD se zvětší ze 128 bitů na 256 bitů a přejmenuje se z XMM0 – XMM7 na YMM0 – YMM7 (v režimu x86-64 , z XMM0 – XMM15 na YMM0 – YMM15). Starší instrukce SSE lze i nadále využívat prostřednictvím předpony VEX k provozu na nižších 128 bitech registrů YMM.

Schéma registru AVX-512 jako rozšíření z registrů AVX (YMM0-YMM15) a SSE (XMM0-XMM15)
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

AVX zavádí instrukční formát SIMD o třech operandech nazývaný VEX kódovací schéma , kde je cílový registr odlišný od dvou zdrojových operandů. Například instrukce SSE používající konvenční formu dvou operandů a = a + b nyní může používat nedestruktivní formu tří operandů c = a + b , přičemž zachovává oba zdrojové operandy. Původně byl formát AVX se třemi operandy omezen na instrukce s operandy SIMD (YMM) a neobsahoval instrukce s registry pro obecné účely (např. EAX). Později byl použit pro kódování nových instrukcí pro registry obecného účelu v pozdějších rozšířeních, jako je BMI . VEX kódování se také používá pro instrukce pracující na registrech masky k0-k7, které byly zavedeny s AVX-512 .

Požadavek na zarovnání paměťových operandů SIMD je uvolněný. Na rozdíl od jejich protějšků nekódovaných ve VEX většina vektorových instrukcí kódovaných VEX již nevyžaduje, aby jejich paměťové operandy byly zarovnány s velikostí vektoru. Je pozoruhodné, že VMOVDQAinstrukce stále vyžaduje zarovnání svého paměťového operandu.

Nové schéma kódování VEX zavádí novou sadu předpon kódů, která rozšiřuje prostor operačního kódu , umožňuje instrukcím mít více než dva operandy a umožňuje, aby vektorové registry SIMD byly delší než 128 bitů. Předponu VEX lze také použít na starších instrukcích SSE, což jim dává formu tří operandů a umožňuje jim efektivnější interakci s instrukcemi AVX bez potřeby VZEROUPPERa VZEROALL.

Pokyny AVX podporují 128bitovou i 256bitovou SIMD. 128bitové verze mohou být užitečné pro vylepšení starého kódu, aniž by bylo nutné rozšířit vektorizaci, a vyhnout se trestu přechodu z SSE na AVX, jsou také rychlejší u některých raných implementací AVX od AMD. Tento režim je někdy známý jako AVX-128.

Nové pokyny

Tyto instrukce AVX jsou navíc k těm, které jsou 256bitovým rozšířením starších 128bitových instrukcí SSE; většina z nich je použitelná na 128bitových i 256bitových operandech.

Návod Popis
VBROADCASTSS, VBROADCASTSD,VBROADCASTF128 Zkopírujte 32bitový, 64bitový nebo 128bitový paměťový operand do všech prvků vektorového registru XMM nebo YMM.
VINSERTF128 Nahradí buď dolní polovinu, nebo horní polovinu 256bitového registru YMM hodnotou 128bitového zdrojového operandu. Druhá polovina cíle je beze změny.
VEXTRACTF128 Extrahuje buď spodní polovinu nebo horní polovinu 256bitového registru YMM a zkopíruje hodnotu do 128bitového cílového operandu.
VMASKMOVPS, VMASKMOVPD Podmíněně načte libovolný počet prvků z operandu vektorové paměti SIMD do cílového registru, přičemž zbývající vektorové prvky ponechá nepřečtené a nastaví odpovídající prvky v cílovém registru na nulu. Alternativně podmíněně zapíše libovolný počet prvků z operandu vektorového registru SIMD do operandu vektorové paměti, přičemž zbývající prvky operandu paměti ponechá beze změny. Na architektuře procesorů AMD Jaguar trvá tato instrukce s operandem zdroje paměti více než 300 hodinových cyklů, když je maska ​​nulová, v takovém případě by instrukce neměla dělat nic. Zdá se, že jde o konstrukční vadu.
VPERMILPS, VPERMILPD Permute In-Lane. Náhodně promíchejte 32bitové nebo 64bitové vektorové prvky jednoho vstupního operandu. Jedná se o 256bitové instrukce v jízdním pruhu, což znamená, že fungují na všech 256 bitech se dvěma samostatnými 128bitovými shuffles, takže nemohou zamíchat přes 128bitové pruhy.
VPERM2F128 Zamíchejte čtyři 128bitové vektorové prvky dvou 256bitových zdrojových operandů do 256bitového cílového operandu s okamžitou konstantou jako voličem.
VTESTPS, VTESTPD Balíček bitových testů zabalených bitů se znaménkem s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností, nastavení nebo vymazání příznaku ZF na základě AND a příznaku CF na základě ANDN.
VZEROALL Nastavte všechny registry YMM na nulu a označte je jako nepoužité. Používá se při přepínání mezi 128bitovým a 256bitovým použitím.
VZEROUPPER Nastavte horní polovinu všech registrů YMM na nulu. Používá se při přepínání mezi 128bitovým a 256bitovým použitím.

CPU s AVX

Ne všechny procesory z uvedených rodin podporují AVX. Obecně je CPU s komerčním označením Core i3/i5/i7/i9 podporují, zatímco procesory Pentium a Celeron nikoli.

Problémy týkající se kompatibility mezi budoucími procesory Intel a AMD jsou projednány v sadě instrukcí XOP .

  • VIA :
    • Nano QuadCore
    • Eden X4
  • Zhaoxin :
    • Procesory založené na WuDaoKou (KX-5000 a KH-20000)

Podpora kompilátoru a assembleru

  • Absoft podporuje s příznakem -mavx.
  • Free Pascal kompilátor podporuje AVX a AVX2 s -CfAVX a -CfAVX2 přepne z verze 2.7.1.
  • RAD studio (v11.0 Alexandria) podporuje AVX2 a AVX512.
  • Funkce vložené montáže GNU Assembler (GAS) podporují tyto instrukce (přístupné přes GCC), stejně jako primitiva Intel a inline assembler Intel (úzce kompatibilní s GAS, i když obecnější při zpracování místních referencí v rámci vloženého kódu).
  • GCC počínaje verzí 4.6 (i když existovala větev 4.3 s určitou podporou) a Intel Compiler Suite počínaje verzí 11.1 podporují AVX.
  • Tyto open64 kompilátor verze 4.5.1 podporuje AVX s -mavx vlajky.
  • PathScale podporuje prostřednictvím příznaku -mavx.
  • Vector Pascal kompilátor podporuje AVX přes vlajky -cpuAVX32.
  • Visual Studio 2010 / 2012 kompilátor podporuje AVX přes vnitřní a / arch: přepínač AVX.
  • Ostatní assemblery jako MASM VS2010 verze, YASM , FASM , NASM a JWASM .

Podpora operačního systému

AVX přidává nový stav registru prostřednictvím 256bitového širokého souboru registru YMM, takže ke správnému uložení a obnovení rozšířených registrů AVX mezi kontextovými přepínači je nutná explicitní podpora operačního systému . Následující verze operačního systému podporují AVX:

  • DragonFly BSD : podpora přidána na začátku roku 2013.
  • FreeBSD : podpora přidaná v opravě odeslané 21. ledna 2012, která byla součástí stabilní verze 9.1
  • Linux : podporováno od verze jádra 2.6.30, vydané 9. června 2009.
  • macOS : podpora přidána v aktualizaci 10.6.8 ( Snow Leopard ) vydané 23. června 2011.
  • OpenBSD : podpora přidána 21. března 2015.
  • Solaris : podporováno v Solaris 10 Update 10 a Solaris 11
  • Windows : podporováno ve Windows 7 SP1, Windows Server 2008 R2 SP1, Windows 8 , Windows 10
    • Windows Server 2008 R2 SP1 s technologií Hyper-V vyžaduje pro podporu procesorů AMD AVX (řada Opteron 6200 a 4200) opravu hotfix, KB2568088

Pokročilá vektorová rozšíření 2

Advanced Vector Extensions 2 (AVX2), také známý jako Haswell New Instructions , je rozšířením instrukční sady AVX představené v mikroarchitektuře Haswell společnosti Intel . AVX2 provádí následující dodatky:

  • rozšíření většiny vektorových celočíselných instrukcí SSE a AVX na 256 bitů
  • Shromážděte podporu, která umožní načtení vektorových prvků z nesouvislých paměťových míst
  • Zrnitost DWORD a QWORD libovolně libovolné
  • vektorové posuny.

Někdy je za součást AVX2 považováno další rozšíření používající jiný příznak cpuid; tyto pokyny jsou uvedeny na jejich vlastní stránce a nikoli níže:

  • tři operandová tavená podpora hromadné akumulace (FMA3)

Nové pokyny

Návod Popis
VBROADCASTSS, VBROADCASTSD Zkopírujte 32bitový nebo 64bitový operand registru do všech prvků vektorového registru XMM nebo YMM. Toto jsou registrované verze stejných pokynů v AVX1. Neexistuje však 128bitová verze, ale stejného efektu lze jednoduše dosáhnout pomocí VINSERTF128.
VPBROADCASTB, VPBROADCASTW, VPBROADCASTD,VPBROADCASTQ Zkopírujte 8, 16, 32 nebo 64bitový celočíselný registr nebo paměťový operand do všech prvků vektorového registru XMM nebo YMM.
VBROADCASTI128 Zkopírujte operand 128bitové paměti do všech prvků vektorového registru YMM.
VINSERTI128 Nahradí buď dolní polovinu, nebo horní polovinu 256bitového registru YMM hodnotou 128bitového zdrojového operandu. Druhá polovina cíle je beze změny.
VEXTRACTI128 Extrahuje buď spodní polovinu nebo horní polovinu 256bitového registru YMM a zkopíruje hodnotu do 128bitového cílového operandu.
VGATHERDPD, VGATHERQPD, VGATHERDPS,VGATHERQPS Shromažďuje hodnoty s plovoucí desetinnou čárkou s jednoduchou nebo dvojitou přesností pomocí 32 nebo 64bitových indexů a měřítka.
VPGATHERDD, VPGATHERDQ, VPGATHERQD,VPGATHERQQ Shromažďuje 32 nebo 64bitové celočíselné hodnoty pomocí 32 nebo 64bitových indexů a měřítka.
VPMASKMOVD, VPMASKMOVQ Podmíněně načte libovolný počet prvků z operandu vektorové paměti SIMD do cílového registru, přičemž zbývající vektorové prvky ponechá nepřečtené a nastaví odpovídající prvky v cílovém registru na nulu. Alternativně podmíněně zapíše libovolný počet prvků z operandu vektorového registru SIMD do operandu vektorové paměti, přičemž zbývající prvky operandu paměti ponechá beze změny.
VPERMPS, VPERMD Shuffle the three 32-bit vector elements of one 256-bit source operand into a 256-bit destination operand, with register or memory operand as selector.
VPERMPD, VPERMQ Shuffle the four 64-bit vector elements of one 256-bit source operand into a 256-bit destination operand, with register or memory operand as selector.
VPERM2I128 Shuffle (two of) the four 128-bit vector elements of two 256-bit source operands into a 256-bit destination operand, with an instant constant as selector.
VPBLENDD Doubleword okamžitá verze instrukcí PBLEND z SSE4 .
VPSLLVD, VPSLLVQ Posun doleva logický. Umožňuje variabilní posuny, kde je každý prvek posunut podle zabaleného vstupu.
VPSRLVD, VPSRLVQ Řazení doprava logické. Umožňuje variabilní posuny, kde je každý prvek posunut podle zabaleného vstupu.
VPSRAVD Řadit aritmeticky doprava. Umožňuje variabilní posuny, kde je každý prvek posunut podle zabaleného vstupu.

CPU s AVX2

AVX-512

AVX-512 jsou 512bitová rozšíření 256bitových pokročilých vektorových rozšíření SIMD instrukce pro architekturu instrukční sady x86 navržené společností Intel v červenci 2013 a jsou podporovány procesorem Intel Knights Landing .

Instrukce AVX-512 jsou kódovány novou předponou EVEX . Umožňuje 4 operandy, 8 nových 64bitových registrů maskování , režim skalární paměti s automatickým vysíláním, explicitní ovládání zaokrouhlování a režim adresování paměti s komprimovaným posunem . Šířka souboru registru se zvýší na 512 bitů a celkový počet registrů se zvýší na 32 (registry ZMM0-ZMM31) v režimu x86-64.

AVX-512 se skládá z několika rozšíření, která nemusí být podporována všemi procesory, které je implementují. Sada instrukcí se skládá z následujících položek:

  • AVX-512 Foundation-přidává několik nových pokynů a rozšiřuje většinu 32bitových a 64bitových instrukcí s plovoucí desetinnou čárkou SSE-SSE4.1 a AVX/AVX2 o kódovací schéma EVEX pro podporu 512bitových registrů, operačních masek, vysílání parametrů a integrované řízení zaokrouhlování a výjimek
  • AVX-512 Instruction Detection Instructions (CD)-efektivní detekce konfliktu umožňující vektorizaci více smyček, podporovaná Knights Landing
  • AVX-512 Exponenciální a reciproční pokyny (ER)-exponenciální a reciproční operace navržené tak, aby pomohly implementovat transcendentální operace, podporované Knights Landing
  • AVX-512 Prefetch Instructions (PF)-nové možnosti předběžného načtení, podporované Knights Landing
  • Rozšíření vektorové délky AVX-512 (VL)-rozšiřuje většinu operací AVX-512 také na registry XMM (128bitové) a YMM (256bitové) (včetně XMM16-XMM31 a YMM16-YMM31 v režimu x86-64)
  • AVX-512 Byte and Word Instructions (BW)-rozšiřuje AVX-512 tak, aby pokryl 8bitové a 16bitové celočíselné operace
  • AVX-512 Doubleword and Quadword Instructions (DQ)-vylepšené 32bitové a 64bitové celočíselné operace
  • AVX-512 Integer Fused Multiply Add (IFMA)-fúzované násobení pro 512bitová celá čísla.
  • Pokyny k manipulaci s vektorovými bajty AVX-512 (VBMI) přidávají pokyny pro vektorovou permutaci bajtů, které v AVX-512BW nejsou.
  • AVX-512 Vector Neural Network Instructions Word variable variable (4VNNIW)-vector instructions for deep learning.
  • AVX-512 Fused Multiply Accumulation Packed Single Precision (4FMAPS)-vektorové instrukce pro hluboké učení.
  • VPOPCNTDQ - počet bitů nastavený na 1.
  • VPCLMULQDQ-beznánosové násobení čtyř hesel.
  • AVX-512 Vector Neural Network Instructions (VNNI)-vektorové instrukce pro hluboké učení.
  • AVX-512 Galois Field New Instructions (GFNI)-vektorové instrukce pro výpočet Galoisova pole .
  • AVX-512 vektorové instrukce AES (VAES)-vektorové instrukce pro kódování AES .
  • AVX-512 Vector Byte Manipulation Instructions 2 (VBMI2)-byte/word load, store and concatenation with shift.
  • AVX-512 Bit Algorithms (BITALG)-instrukce pro manipulaci s bity /slovy s bity rozšiřující VPOPCNTDQ.
  • AVX-512 Bfloat16 Instrukce s pohyblivou řádovou čárkou (BF16)-vektorové instrukce pro akceleraci AI.
  • AVX-512 Half-Precision Floating-Point Instructions (FP16)-vektorové instrukce pro provoz na číslech s plovoucí desetinnou čárkou a komplexních číslech se sníženou přesností.

Všechny implementace vyžadují pouze základní rozšíření AVX-512F (AVX-512 Foundation), ačkoli všechny současné procesory také podporují CD (detekce konfliktů); výpočetní koprocesory budou navíc podporovat ER, PF, 4VNNIW, 4FMAPS a VPOPCNTDQ, zatímco centrální procesory budou podporovat VL, DQ, BW, IFMA, VBMI, VPOPCNTDQ, VPCLMULQDQ atd.

Aktualizované pokyny SSE/AVX v AVX-512F používají stejnou mnemotechniku ​​jako verze AVX; mohou pracovat na 512bitových registrech ZMM a budou také podporovat 128/256 bitové registry XMM/YMM (s AVX-512VL) a celočíselné operandy byte, word, doubleword a quadword (s AVX-512BW/DQ a VBMI).

CPU s AVX-512

Podskupina AVX-512 F CD ER PF 4 FMAPS 4VNNIW VPOPCNTDQ VL DQ ČB IFMA VBMI VBMI2 BITALG VNNI VPCLMULQDQ GFNI VAES VP2INTERSECT
Intel Knights Landing (2016) Ano Ano Ne
Intel Knights Mill (2017) Ano Ne
Intel Skylake-SP , Skylake-X (2017) Ne Ano Ne
Intel Cannon Lake (2018) Ano Ne
Intel Cascade Lake-SP (2019) Ne Ano Ne
Intel Ice Lake (2019) Ne Ano Ne
Intel Tiger Lake (2020) Ano
Intel Rocket Lake (2021) Ne

Kompilátory podporující AVX-512

  • GCC 4.9 a novější
  • Clang 3.9 a novější
  • ICC 15.0.1 a novější
  • Kompilátor Microsoft Visual Studio 2017 C ++

AVX-VNNI

AVX-VNNI je VEX -coded variantu AVX512-VNNI instrukční sady prodloužení. To poskytuje stejnou sadu operací, ale je omezena na 256-bitových vektorů a nepodporuje žádné doplňkové funkce EVEX kódování, jako je vysílání, opmask registrů nebo přístup k více než 16 vektorových registrů. Toto rozšíření umožňuje podporovat operace VNNI, i když procesor nepodporuje plnou podporu AVX-512 .

CPU s AVX-VNNI

Aplikace

  • Vhodné pro náročné výpočty s pohyblivou řádovou čárkou v multimediálních, vědeckých a finančních aplikacích (AVX2 přidává podporu pro celočíselné operace).
  • Zvyšuje rovnoběžnost a propustnost ve výpočtech SIMD s pohyblivou řádovou čárkou .
  • Snižuje zatížení registru díky nedestruktivním instrukcím.
  • Zlepšuje výkon softwaru Linux RAID (požadovaný AVX2, AVX není dostačující)

Software

  • Blender používá ve vykreslovacím modulu Cycles AVX, AVX2 a AVX-512.
  • Bloombase používá ve svém kryptografickém modulu Bloombase (BCM) AVX, AVX2 a AVX-512.
  • Botan používá k urychlení některých algoritmů, jako je ChaCha, jak AVX, tak AVX2, jsou -li k dispozici.
  • Crypto ++ používá jak AVX, tak AVX2, jsou -li k dispozici, k akceleraci některých algoritmů, jako jsou Salsa a ChaCha.
  • OpenSSL využívá kryptografické funkce optimalizované pro AVX a AVX2 od verze 1.0.2. Tato podpora je také k dispozici v různých klonech a forcích, jako je LibreSSL
  • Prime95 /MPrime, software používaný pro GIMPS , začal používat pokyny AVX od verze 27.x.
  • Dav1d AV1 dekodér může používat AVX2 na podporovaných CPU.
  • dnetc , software používaný distribuovaným.netem , má k dispozici jádro AVX2 pro svůj projekt RC5 a brzy vydá jedno pro svůj projekt OGR-28.
  • Einstein@Home používá AVX v některých svých distribuovaných aplikacích, které hledají gravitační vlny .
  • Folding@home používá AVX na výpočetních jádrech implementovaných s knihovnou GROMACS .
  • Helios používá hardwarovou akceleraci AVX a AVX2 na 64bitovém hardwaru x86.
  • Horizon: Zero Dawn používá AVX1 ve svém herním enginu Decima.
  • RPCS3 , emulátor PlayStation 3 s otevřeným zdrojovým kódem, používá k emulaci her PS3 pokyny AVX2 a AVX-512 .
  • Network Device Interface , IP video/audio protokol vyvinutý společností NewTek pro produkci živého vysílání, využívá AVX a AVX2 pro zvýšení výkonu.
  • TensorFlow od verze 1.6 a tensorflow výše verzí vyžaduje CPU podporující alespoň AVX.
  • Kodéry videa x264 , x265 a VTM mohou k urychlení kódování použít AVX2 nebo AVX-512.
  • Různé CPU-based kryptoměna horníků (jako cpuminer Pooler je pro Bitcoin a litecoin ) použití AVX a AVX2 pro různé rutiny kryptografických související, včetně SHA-256 a scrypt .
  • libsodium používá AVX při implementaci skalárního násobení pro algoritmy Curve25519 a Ed25519 , AVX2 pro BLAKE2b , Salsa20 , ChaCha20 a AVX2 a AVX-512 při implementaci algoritmu Argon2 .
  • libvpx Implementace open source kodéru/dekodéru VP8/VP9, používá AVX2 nebo AVX-512, je-li k dispozici.
  • FFTW může využívat AVX, AVX2 a AVX-512, jsou-li k dispozici.
  • LLVMpipe, softwarový renderer OpenGL v Mesa využívající infrastrukturu Gallium a LLVM , používá AVX2, je -li k dispozici.
  • glibc používá AVX2 (s FMA ) pro optimální provedení (tj expf, sinf, powf, atanf, atan2f) různých matematických funkcí v libc .
  • Linuxové jádro může používat AVX nebo AVX2 společně s AES-NI jako optimalizovanou implementaci kryptografického algoritmu AES-GCM .
  • Linuxové jádro používá AVX nebo AVX2, je-li k dispozici, v optimalizované implementaci několika dalších kryptografických šifer: Camellia , CAST5 , CAST6 , Serpent , Twofish , MORUS-1280 a další primitiva: Poly1305 , SHA-1 , SHA-256 , SHA-512 , ChaCha20 .
  • POCL, přenosný počítačový jazyk, který poskytuje implementaci OpenCL , využívá AVX, AVX2 a AVX512, pokud je to možné.
  • .NET a .NET Framework mohou využívat AVX, AVX2 prostřednictvím obecného System.Numerics.Vectorsoboru názvů.
  • .NET Core , počínaje verzí 2.1 a rozsáhleji po verzi 3.0, může přímo využívat všechny vnitřní funkce AVX, AVX2 prostřednictvím System.Runtime.Intrinsics.X86oboru názvů.
  • EmEditor 19.0 a vyšší používá k urychlení zpracování AVX-2.
  • Masivní X softsynth společnosti Native Instruments vyžaduje AVX.
  • Microsoft Teams používá pokyny AVX2 k vytvoření rozmazaného nebo vlastního pozadí za účastníky videochatu a k potlačení šumu na pozadí.
  • simdjson, knihovna pro analýzu JSON , používá AVX2 k dosažení vyšší rychlosti dekódování.

Downclocking

Protože pokyny AVX jsou širší a generují více tepla, některé procesory Intel mají opatření ke snížení limitu frekvence Turbo Boost při provádění těchto pokynů. Na Skylake a jeho derivátech je škrcení rozděleno do tří úrovní:

  • L0 (100%): Normální mezní hodnota turbo boostu.
  • L1 (~ 85%): Limit „AVX boost“. Soft-triggered 256-bit "heavy" (plovoucí desetinnou čárkou: FP matematické a celočíselné násobení) instrukce. Hard-triggered "light" (all other) 512-bit instructions.
  • L2 (~ 60%): Limit „AVX-512 boost“. Soft-triggered pomocí 512bitových těžkých instrukcí.

Frekvenční přechod může být měkký nebo tvrdý. Tvrdý přechod znamená, že frekvence je snížena, jakmile je taková instrukce spatřena; měkký přechod znamená, že frekvence je snížena až po dosažení prahového počtu odpovídajících instrukcí. Limit je na vlákno.

V Ice Lake přetrvávají pouze dvě úrovně:

  • L0 (100%): Normální mezní hodnota turbo boostu.
  • L1 (~ 97%): Spouští se podle jakýchkoli 512bitových instrukcí, ale pouze pokud je aktivní jednojádrový boost; nespustí se při načtení více jader.

Procesory Rocket Lake nespustí snížení frekvence po provedení jakéhokoli druhu vektorových instrukcí bez ohledu na velikost vektoru. K přetaktování však může dojít i z jiných důvodů, jako je dosažení teplotních a výkonových limitů.

Zpětné přetaktování znamená, že používání AVX ve smíšené pracovní zátěži s procesorem Intel může znamenat frekvenční postih, přestože je v „čistém“ kontextu rychlejší. Vyhýbání se používání širokých a těžkých pokynů pomáhá v těchto případech minimalizovat dopad. AVX-512VL umožňuje použití 256bitových nebo 128bitových operandů v AVX-512, což z něj činí rozumnou výchozí hodnotu pro smíšené zátěže.

U podporovaných a odemčených variant procesorů, které se snižují, jsou poměry nastavitelné a lze je zcela vypnout (nastavit na 0x) pomocí nástroje Intel pro přetaktování / ladění nebo v systému BIOS, pokud je tam podporován.

Viz také

Reference

externí odkazy