Hogyan ellenőrizhető, hogy egy CPU támogatja-e az SSE3 utasításkészletet


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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük