Příkazy Avx. Operace s proměnnými bity. Instrukční sady SSE4.2

Vylepšení

  • Nové schéma kódování instrukcí VEX
  • Velikost vektorových registrů SIMD se zvyšuje ze 128 (XMM) na 256 bitů (registry YMM0 - YMM15). Stávající 128bitové instrukce SSE budou používat dolní polovinu nových registrů YMM, aniž by změnily horní polovinu. Byly přidány nové 256bitové instrukce AVX pro práci s registry YMM. V budoucnu je možné rozšířit vektorové registry SIMD na 512 nebo 1024 bitů.

Nové schéma kódování

Nové schéma kódování instrukcí VEX používá prefix VEX. V přítomný okamžik 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 nejvýznamnějším bitem druhého bajtu, má smysl pouze v 64bitovém režimu prostřednictvím nepodporovaných forem instrukcí LES a LDS. Délka existujících instrukcí AVX, včetně prefixu VEX, nepřesahuje 11 bajtů. V budoucích verzích se očekávají delší pokyny.

Nové pokyny

Instrukce Popis
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 Zkopíruje 32, 64 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 cílového registru se nezmění.
VEXTRACTF128 Načte 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 vymaže odpovídající prvky cílového registru na nulu. 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á 32 nebo 64bitové vektorové prvky podle operandu selektoru (z paměti nebo z registru).
VPERM2F128 Přeskupí 4 128bitové prvky 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 režimem a 256bitovým režimem.
VZEROUPPER Resetuje vysokou polovinu všech registrů YMM na nulu. Používá se při přepínání mezi 128bitovým režimem a 256bitovým režimem.

Specifikace AVX také popisuje instrukční skupinu PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL).

  • PCLMULLQLQDQ xmmreg, xmmrm
  • PCLMULHQLQDQ xmmreg, xmmrm
  • PCLMULLQHQDQ xmmreg, xmmrm
  • PCLMULHQHQDQ xmmreg, xmmrm
  • PCLMULQDQ xmmreg,xmmrm,imm

Aplikace

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

Podpora operačního systému

Použití registrů YMM vyžaduje vnější podporu operační systém. Následující systémy podpora registrů YMM:

Mikroprocesory s AVX

Kompatibilita mezi implementacemi Intel a AMD je popsána v instrukční sadě XOP.

Budoucí rozšíření

Schéma kódování instrukcí VEX snadno umožňuje další rozšíření sady instrukcí AVX. V další verze, AVX2 se plánuje přidání instrukcí pro práci s celými čísly, FMA3 (zdvojnásobí výkon při zpracování čísel s pohyblivou řádovou čárkou), načtení vektoru distribuovaného v paměti (gather) a tak dále.

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

  • CLMUL
  • AMD FMA4
  • AMD XOP
  • AMD CVT16

Poznámky


Rozšiřující sady základní pokyny procesory rodiny x86
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNy! | 3DNowExt | SSE5 | AVX| AES

Nadace Wikimedia.

2010.

    Podívejte se, co je "AVX" v jiných slovnících: Prům

    AVX- ((image))) Sigles d une seule letter Sigles deux letters > Sigles de trois letter AAA à DZZ EAA à HZZ IAA à LZZ MAA à PZZ QAA à TZZ UAA à XZZ … Wikipédia en Français

Vylepšení

  • Nové schéma kódování instrukcí VEX
  • Velikost vektorových registrů SIMD se zvyšuje ze 128 (XMM) na 256 bitů (registry YMM0 - YMM15). Stávající 128bitové instrukce SSE budou používat dolní polovinu nových registrů YMM, aniž by změnily horní polovinu. Byly přidány nové 256bitové instrukce AVX pro práci s registry YMM. V budoucnu je možné rozšířit vektorové registry SIMD na 512 nebo 1024 bitů.

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 nejvýznamnějším bitem druhého bajtu, má smysl pouze v 64bitovém režimu prostřednictvím nepodporovaných forem instrukcí LES a LDS. Délka existujících instrukcí AVX, včetně prefixu VEX, nepřesahuje 11 bajtů. V budoucích verzích se očekávají delší pokyny.

Nové pokyny

Instrukce Popis
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 Zkopíruje 32, 64 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 cílového registru se nezmění.
VEXTRACTF128 Načte 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 vymaže odpovídající prvky cílového registru na nulu. 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á 32 nebo 64bitové vektorové prvky podle operandu selektoru (z paměti nebo z registru).
VPERM2F128 Přeskupí 4 128bitové prvky 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 režimem a 256bitovým režimem.
VZEROUPPER Resetuje vysokou polovinu všech registrů YMM na nulu. Používá se při přepínání mezi 128bitovým režimem a 256bitovým režimem.

Specifikace AVX také popisuje instrukční skupinu PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL).

  • PCLMULLQLQDQ xmmreg, xmmrm
  • PCLMULHQLQDQ xmmreg, xmmrm
  • PCLMULLQHQDQ xmmreg, xmmrm
  • PCLMULHQHQDQ xmmreg, xmmrm
  • PCLMULQDQ xmmreg,xmmrm,imm

Aplikace

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

Podpora operačního systému

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 instrukční sadě XOP.

Budoucí rozšíření

Schéma kódování instrukcí VEX snadno umožňuje další rozšíření sady instrukcí AVX. V další verzi AVX2 se plánuje přidání instrukcí pro práci s celými čísly, FMA3 (zdvojnásobí výkon při zpracování čísel s plovoucí desetinnou čárkou), načtení vektoru distribuovaného v paměti (gather) a tak dále.

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

  • CLMUL
  • AMD FMA4
  • AMD XOP
  • AMD CVT16

Poznámky


Základní instrukční rozšiřující sady pro procesory rodiny x86
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNy! | 3DNowExt | SSE5 | AVX| AES

Nadace Wikimedia.

  • Ředitelství státní bezpečnosti (Maďarsko)

2010.

    Podívejte se, co je "AVX" v jiných slovnících: Prům

    AVX- ((image))) Sigles d une seule letter Sigles deux letters > Sigles de trois letter AAA à DZZ EAA à HZZ IAA à LZZ MAA à PZZ QAA à TZZ UAA à XZZ … Wikipédia en Français

Programátorský průvodce pro práci s rozšířenou instrukční sadou AVX-512. Očekávalo se, že bloky pro zpracování celočíselných hodnot a hodnot s plovoucí desetinnou čárkou s podporou 512bitových instrukcí se objeví jako součást procesory Intel Skylake 14nm generace. Poté bylo známo, že v generaci Skylake bude zahrnuta pouze podpora pro AVX-512 serverové procesory Intel Xeon a výpočetní akcelerátory Xeon Phi (ve 14nm generaci akcelerátorů Knights Landing). Akcelerátory Knights Landing slibují podporu pro větší sadu rozšíření AVX-512 než v případě procesory Xeon obecný účel. To je vysvětleno skutečností, že rozšířená instrukční sada AVX-512 je zaměřena na rozvoj paralelismu ve výpočtech, který v této fázi snadněji implementovatelné (a s lepšími výsledky) ve výpočetních akcelerátorech.

Mimochodem, akcelerátory Intel Knights Landing jsou založeny na výrazně přepracované architektuře Atom Silvermont. V 72jádrové konfiguraci mohou procesory Knights Landing zpracovat až 288 souběžných vláken a poskytovat až 3 teraflopy s dvojnásobnou přesností a až 6 teraflopů s jednoduchou přesností. Pro taková řešení je podpora AVX-512 přesně to, co lékař nařídil. Paralelnost je jejich podstatou. Protože Knights Landing se začne dodávat v tomto čtvrtletí, software s implementací AVX-512 SIMD instrukcí je otázka dnes. Vzhledem k tomu, že procesory Skylake-EP budou až na několik výjimek používat stejné sady AVX-512 jako Knights Landing, než se modely Skylake-EP dostanou na trh, bude existovat seriózní nastavení pro nová rozšíření. softwarová podpora. Vydání Skylake-EP, připomínáme, se očekává v druhé polovině roku 2017.

Hloubka podpory pro instrukce AVX na ploše a serverové platformy Intel (Intel, ComputerBase.de)

Také v druhé polovině roku 2017 se objeví první 10nm procesory Intel, kterého známe dnes krycí jméno Dělové jezero. V nedávném dokumentu Intel pro programátory autoři ComputerBase.de zjistili, že klientské procesory Cannon Lake budou podporovat také AVX-512. Minimálně se bavíme o rozšířeních AVX512IFMA, AVX512VBMI, SHA a UMPI. Vše dohromady naznačuje, že na konci roku 2017 můžeme očekávat širokou podporu pro AVX-512 ze strany programátorů. Pro klientské aplikace bude použití AVX-512 znamenat, že zpracování masivních multimediálních dat bude probíhat s menší zátěží CPU. Přesněji řečeno, práce s hardwarovými prostředky kompatibilními s AVX-512 bude co nejefektivnější. U těchto úkolů se spotřeba sníží a produktivita se zvýší.

Zisk z implementace AVX-512 ve srovnání s AVX-256/128 a předchozími „multimediálními“ pokyny

Přidejme architekturu procesory AMD Zen, který zahájí svůj život v produktech společnosti koncem roku 2016 nebo začátkem roku 2017, bude fungovat na dvou 256bitových instrukcích AVX na takt. Za tímto účelem každé jádro Zen obdrží dva 256bitové FMAC (fúzní násobení - přidání schopnosti). V praxi taková architektura umožní provedení jedné 512bitové instrukce v jednom hodinovém cyklu. Zatím nemůžeme říci, jak je to implementováno v procesorech Intel Cannon Lake.

Dnes chci začít konverzaci na téma co je avx instrukce v procesoru, kde a k čemu se používají.

Průměrný nakupující jde do obchodu a chce si koupit počítač/notebook na práci i zábavu. V praxi je výkonnější a levnější napsat esej ve Wordu a poté hrát.
Co se týče procesorů, na policích jsou vzteklé pahýly výkonově rovné i-3s. Je i3 marketingové spiknutí? Je Pentium skutečně „stejný druh 3 jen levnější“? ano i ne. Tady je ta věc.

K napsání eseje ve Wordu bude stačit nejlevnější Celeron (a „zástrčkový procesor“ seženete ještě levněji, když ho koupíte na bleším trhu s účtenkou a zbytkem záruky).
Pro hraní všech her po abstraktu je vhodné Pentium s provedením i-3 (2 jádra 4 vlákna). U her nejsou instrukce AVX vyžadovány (pokud jsou k dispozici potřebné SSE).

Ale pro profesionální úkoly bude užitečná hardwarová virtualizace a podpora instrukcí AVX, takže je lepší vzít alespoň i-3.

Proč potřebujeme instrukce AVX?

Co je součástí řady odborných úkolů? Kameny postrádající AVX zpravidla také postrádají hardwarová akcelerace virtualizace.
Vývoj pro Android, který bude vyžadovat virtuální stroj stejného kýblu (některé emulátory se ani nespustí, některé budou bohužel fungovat a silně zatěžují jádra).
Žvýkání multimediálních dat (od zpracování fotek až po kódování videa a stříhání 3D grafiky, takže hráči let's play by měli vyndat víc za dražší procesor).

Pokud bez AVX

Procesor má registry pro instrukce.
Registr SSE je 128bitový a registr AVX je 256bitový.
Abychom tedy nikoho nenafoukli anatomií kamene, řekněme - 256 se do 128 nevejde.

Bez AVX můžete také zpracovávat fotografie, žvýkat videa a stříhat tři de. Ale jsou tu nuance...
Zjednodušeně řečeno, starý 8jádrový Xeon (neschopný AXV) bude stříhat videa stejnou rychlostí jako moderní i3 (schopný AVX).

Procesor má pipeline: zjistil, kde to vzít z paměti, vzal to z paměti, vypočítal to a poslal výsledky do paměti.
Zjednodušené potrubí s a bez AVX lze znázornit následovně.

Jak vidíte, v druhém případě je operací méně. Z čehož je logické předpokládat, že AVX-counter pracuje rychleji (v každém výpočetním cyklu). A protože je rychlejší v každém hodinovém cyklu, pak s méně gigahertzy můžete počítat rychleji.

Další dobrá věc na AVX je dodatečný operand. Nejsou použity 2 operandy, ale 3, což také zkracuje potrubí. Řekněme, že chceme přidat X a Y.
Kód: Normální provoz, kde 2 operandy (X=X+Y) způsobí přepsání jednoho z operandů.
Operace AVX, kde 3 operandy (Z=X+Y) umožňují zapsat výsledek do třetího operandu.
Obtížný? Dobře, pojďme to zjednodušit.

Natáčení videí pomocí AVX bude rychlejší. Protože k výše uvedenému se přidává bonus optimálního členění rámu.
Počítač nepřepočítává každý snímek. Rám rozbije na obdélníky a porovná je, a pokud se najde vhodný, použije hotový kus.
Zde se AVX naučil optimálněji pracovat s videi (pro zájemce čtěte od profesionálů a já se omezím na krásný obrázek).

Dříve bylo členění znázorněno vlevo. Rozdělení AVX může dělat chytřejší věci - jak je znázorněno vpravo.

Abych to shrnul

Chcete-li napsat abstrakt ve Wordu, udělá to každý procesor.
Aby bylo možné hrát hru místo eseje, bude stačit pahýl o velikosti I-třetiny.
Chcete-li omezit obsah, je lepší rozdělit se na i-třetinu.




Nahoru