Legjobb válasz
32 bites összeállító:
mov eax, 0
cpuid
test ecx, 0x0001
Természetesen Ön Szeretném meggyőződni arról, hogy előbb nyomja meg a négy háziorvosi nyilvántartást, és dobja be őket, miután ellenőrizte a keresett zászlókat. Vannak más olyan jelzők is, mint például az SSE3 monitor / várakozás (3. bit, tehát 0x0080) vagy kiegészítő funkciók (9. bit, tehát 0x0200), amelyeket érdemes használni.
Elég könnyű beépíteni a C vagy a legtöbb „igazi” programozási nyelv beágyazott összeállítóval, feltéve, hogy a fordítója rohadt értékű.
Válasz
Az AVX az Intel számos x86 vektorkiterjesztésének egyike. Az Intel és az AND, illetve a CPU-k homokos híd / buldózer sorozata óta használják.
Mi a vektor kiterjesztés?
A hagyományos CPU architektúra (skaláris feldolgozás) működik egy SISD nevű modell: egyetlen utasítás, egyetlen adat. Van egy processzormagja, amely egymás után utasításokat használ, és mindegyik egyszerre egyetlen operandushalmazon működik.
Ez jól működik a legtöbb típusú terhelésnél, de általában nem alkalmas bizonyos típusú számítási intenzív terhelésekre. Fontolja meg például a képszerkesztést: ha meg akarom duplázni a kép fényerejét, akkor meg kell dupláznom a kép pixelenként pixelét, ami lassú. Minden pixel valójában független másoktól, vagyis lehetősége van hatalmas párhuzamosság: elegendő számítási erőforrás és megfelelő architektúra birtokában elméletileg minden műveletet egyetlen művelettel végezhetünk.
Adja meg a vektorprocesszorokat: ezek a SIMD nevű modellen működnek. Ahelyett, hogy egyetlen elemet egyenként működtetne, a vektorprocesszor sok adatelemet összefűz egy nagy elembe (általában 256 vagy több bitbe), majd végrehajtja a műveleteket. Ennek eredményeként egy vektorprocesszor sok adatelemen képes dolgozni egyetlen művelet során, amikor a hagyományos processzorhoz több műveletre lenne szükség.
A SIMD programozásának alapjai
A hagyományos CPU-architektúrákat, például az X86-ot nyilvánvalóan nem SIMD-működtetésre tervezték. Az évek során az Intel folyamatosan bővítette az x86 ISA-t annak funkcionalitásának javítása érdekében, és a SIMD-bővítmények is a leghamarabb megjelentek.
Az MMX-ről indult a Pentiumon, de ez elég szép volt. kirívó korlátozások. Később az Intel hozzáadta az SSE utasításkészlet-kiterjesztést, amely eltávolította ezeket a korlátozásokat. Az elkövetkező évtizedben tovább iteráltak az SSE-n, míg végül bevezették az AVX-t.
Az AVX meglehetősen jelentős fejlesztéseket vezetett be. elődjéhez, az SSE4.x-hez képest
A vektorregiszter méretét 128 bitesről 256 bitesre növelték, megkétszerezve a potenciális átvitelt. Az utasítások a hagyományos 2 operandus formátumról (a = a + b) 3 operandus formátumra váltottak ( a = b + c), javítva a rugalmasságot. Az összehangolási szabályokat is enyhítették.