AVX

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 15. července 2021; kontroly vyžadují 8 úprav .

Advanced Vector Extensions (AVX) je rozšíření instrukční sady x86 pro mikroprocesory Intel a AMD navržené společností Intel v březnu 2008. [1]

AVX poskytuje různá vylepšení, nové instrukce a nové schéma kódování strojového kódu.

Vylepšení

Nové schéma kódování

Nové schéma kódování instrukcí VEX používá prefix VEX. V současné době existují dvě předpony VEX, dlouhé 2 a 3 bajty. Pro 2bajtový prefix VEX je první bajt 0xC5, pro 3bajtový prefix VEX je to 0xC4.

V 64bitovém režimu je první bajt předpony VEX jedinečný. V 32bitovém režimu dochází ke konfliktu s instrukcemi LES a LDS, který je řešen vysokým bitem druhého bajtu, záleží pouze na 64bitovém režimu, prostřednictvím nepodporovaných forem instrukcí LES a LDS. [3]

Délka existujících instrukcí AVX spolu s prefixem VEX nepřesahuje 11 bajtů. V budoucích verzích se očekávají delší pokyny.

Nové pokyny

Návod Popis
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 Zkopíruje 32bitový, 64bitový nebo 128bitový operand z paměti do všech prvků vektorového registru XMM nebo YMM.
VINSERTF128 Nahradí dolní nebo horní polovinu 256bitového registru YMM hodnotou 128bitového operandu. Druhá část přijímacího registru se nemění.
VEXTTRACTF128 Extrahuje dolní nebo horní polovinu 256bitového registru YMM a zkopíruje jej do 128bitového cílového operandu.
VMASKMOVPS, VMASKMOVPD Podmíněně přečte libovolný počet prvků z vektorového operandu z paměti do cílového registru, zbývající prvky ponechá nepřečtené a vynuluje odpovídající prvky cílového registru. Může také podmíněně zapsat libovolný počet prvků z vektorového registru do vektorového operandu v paměti, přičemž zbývající prvky paměťového operandu zůstanou nezměněny.
VPERMILPS, VPERMILPD Přeuspořádá 32bitové nebo 64bitové prvky vektoru podle operandu selektoru (z paměti nebo z registru).
VPERM2F128 Zamění 4 128bitové záznamy dvou 256bitových registrů do 256bitového cílového operandu pomocí okamžité konstanty (imm) jako selektoru.
VZEROALL Vymaže všechny registry YMM a označí je jako nepoužité. Používá se při přepínání mezi 128bitovým a 256bitovým režimem.
VZEROUPPER Nastaví horní poloviny všech registrů YMM na nulu. Používá se při přepínání mezi 128bitovým a 256bitovým režimem.

Specifikace AVX také popisuje skupinu instrukcí PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL)

Aplikace

Vhodné pro intenzivní výpočty s pohyblivou řádovou čárkou v multimediálních programech a vědeckých úlohách. Tam, kde je možný vyšší stupeň paralelismu, zvyšuje výkon s reálnými čísly.

Podpora

Podpora v operačních systémech

Použití registrů YMM vyžaduje podporu operačního systému. Registry YMM podporují následující systémy:

Mikroprocesory s AVX

Kompatibilita mezi implementacemi Intel a AMD je popsána v tomto článku .

Mikroprocesory s AVX2

AVX-512

AVX-512 rozšiřuje instrukční sadu AVX na 512bitové vektory pomocí kódování prefixů EVEX. Rozšíření AVX-512 zavádí 32 vektorových registrů (ZMM) po 512 bitech, 8 registrů masky, 512bitové sbalené formáty pro celá čísla a zlomky a operace s nimi, jemné ovládání režimů zaokrouhlování (umožňuje přepsat globální nastavení), vysílání ( distribuce informací z jednoho prvku registru do ostatních), potlačení chyb při operacích s desetinnými čísly, operace shromažďování / rozptylu (sestavení a distribuce prvků vektorového registru na / z několika adres paměti), rychlé matematické operace, kompaktní kódování velkých offsetů. AVX-512 nabízí kompatibilitu s AVX v tom smyslu, že program může používat instrukce AVX i AVX-512 bez snížení výkonu. Registry AVX (YMM0-YMM15) jsou mapovány na spodní části registrů AVX-512 (ZMM0-ZMM15), podobně jako registry SSE a AVX. [12]

Používá se v Intel Xeon Phi (dříve Intel MIC ) Knights Landing (verze AVX3.1), Intel Skylake-X , [12] Intel Ice Lake , Intel Tiger Lake , Intel Rocket Lake . Podpora AVX-512 je k dispozici také u vysoce výkonných jader Golden Cove [13] procesorů Intel Alder Lake , ale energeticky úsporná jádra Gracemont o ni přicházejí. Od prosince 2021 nebyla podpora AVX-512 pro spotřebitelské procesory Alder Lake oficiálně oznámena. [čtrnáct]

Budoucí rozšíření

Schéma kódování instrukcí VEX snadno umožňuje další rozšíření sady instrukcí AVX. Další verze, AVX2, přidala instrukce pro práci s celými čísly, FMA3 (zvýšený výkon při zpracování čísel s plovoucí desetinnou čárkou 2x [11] ), načítání vektoru alokovaného paměti (gather) a tak dále.

Různá plánovaná rozšíření instrukční sady x86 :

Serverové procesory generace Broadwell přidaly rozšíření AVX 3.1 a serverové procesory generace Skylake přidaly  AVX 3.2.

Poznámky

  1. Rozšíření ISA | Software Intel® . Získáno 24. června 2016. Archivováno z originálu 6. května 2019.
  2. Referenční příručka architektury instrukční sady koprocesoru Intel® Xeon Phi™ (odkaz není k dispozici) . Archivováno z originálu 11. května 2013. 
  3. 1 2 Úvod do Intel® Advanced Vector Extensions – Intel® Software Network . Získáno 19. července 2012. Archivováno z originálu 16. června 2012.
  4. Otázky týkající se AVX - Intel® Software Network . Získáno 24. června 2016. Archivováno z originálu 7. srpna 2016.
  5. Optimalizace Intel® AVX v Intel® MKL . Datum přístupu: 7. ledna 2014. Archivováno z originálu 7. ledna 2014.
  6. x86: přidat podporu linuxového jádra pro stav YMM (stahování) . Získáno 13. července 2009. Archivováno z originálu 5. dubna 2012. 
  7. Linux 2.6.30 – Linux Kernel Newbies (downlink) . Získáno 13. července 2009. Archivováno z originálu 5. dubna 2012. 
  8. 1 2 Povolte podporu Windows 7 pro Intel AVX (downlink) . Microsoft. Datum přístupu: 29. ledna 2011. Archivováno z originálu 5. dubna 2012. 
  9. Intel nabízí nahlédnout do Nehalem a Larrabee (downlink) . ExtremeTech (17. března 2008). Archivováno z originálu 7. června 2011. 
  10. Vyrovnání (downlink) . Dave Christie, blogy AMD Developer (7. května 2009). Získáno 8. května 2009. Archivováno z originálu dne 5. dubna 2012. 
  11. 1 2 Více podrobností o budoucí instrukční sadě AVX 2.0 | Tech News Pedia (nedostupný odkaz) . Získáno 14. listopadu 2012. Archivováno z originálu 31. října 2012. 
  12. 1 2 James Reinders (23. července 2013), AVX-512 Instructions , Intel , < http://software.intel.com/en-us/blogs/2013/avx-512-instructions > . Získáno 20. srpna 2013. Archivováno 31. března 2015 na Wayback Machine 
  13. Dr Ian Cutress, Andrei Frumusanu. Intel Architecture Day 2021: Alder Lake, Golden Cove a Gracemont Detailed . www.anandtech.com _ Získáno 23. prosince 2021. Archivováno z originálu dne 4. ledna 2022.
  14. Specifikace  produktu . www.intel.com . Staženo: 23. prosince 2021.

Odkazy