Nejlepší odpověď
32bitový assembler:
mov eax, 0
cpuid
test ecx, 0x0001
Přirozeně vy Chtěli byste se ujistit, že nejprve zatlačíte čtyři registry GP a vysunete je, jakmile zkontrolujete příznaky, které hledáte. Existují další příznaky související s věcmi, jako je monitor / čekání SSE3 (bit 3, takže 0x0080) nebo doplňkové funkce (bit 9, takže 0x0200), které byste také mohli chtít použít.
Snadné začlenění do C nebo většina „skutečných“ programovacích jazyků s vloženým assemblerem za předpokladu, že váš překladač stojí za zatracení.
Odpověď
AVX je název jedné z mnoha vektorových rozšíření x86 od společnosti Intel. Používá se od řady procesorů písčitého můstku / buldozeru od společností Intel a AND.
Co je to vektorové rozšíření?
Tradiční architektura CPU (skalární zpracování) funguje na model s názvem SISD: jedna instrukce, jednotlivá data. Máte procesorové jádro, které pracuje s instrukcemi postupně, každý pracuje na jedné sadě operandů najednou.
To funguje dobře pro většinu typů úloh, ale je to obecně nevhodné pro některé typy výpočetně náročných úloh. Zvažte například úpravy fotografií: kdybych chtěl zdvojnásobit jas obrazu, musel bych zdvojnásobit jas obrazu po pixelech, což je pomalé. Každý pixel je ve skutečnosti nezávislý na ostatních, což znamená, že existuje potenciál pro masivní paralelismus: vzhledem k dostatku výpočetních zdrojů a správné architektuře by se dalo teoreticky dělat vše, co funguje v jediné operaci.
Zadejte vektorové procesory: fungují na modelu zvaném SIMD. Místo toho, aby vektorový procesor operoval jeden po druhém, zřetězuje mnoho datových prvků do jednoho velkého prvku (obvykle 256 bitů nebo více), poté s ním provádí operace. Výsledkem je, že vektorový procesor může pracovat na mnoha datových prvcích v jedné operaci, když by tradiční procesor potřeboval několik operací.
Tradiční architektury CPU, jako je X86, zjevně nebyly navrženy pro provoz SIMD. Za ta léta Intel neustále přidával rozšíření k x86 ISA, aby vylepšil jeho funkčnost, a rozšíření SIMD byla některá z prvních, která se objevila.
Začalo to MMX na Pentiu, ale to mělo docela do očí bijící omezení. Později Intel přidal příponu instrukční sady SSE, která některá z těchto omezení odstranila. V příštím desetiletí dále na SSE iterovali, až nakonec představili AVX.
AVX představila několik docela významných vylepšení oproti svému předchůdci SSE4.x
Velikost vektorového registru byla zvýšena ze 128 bitů na 256 bitů, čímž se zdvojnásobila potenciální propustnost. Pokyny přešly z tradičního formátu 2 operandů (a = a + b) do formátu 3 operandů ( a = b + c), což zvyšuje flexibilitu. Pravidla pro zarovnání byla také uvolněna.