Kuinka tarkistaa, tukeeko CPU SSE3-käskykokonaisuutta


Paras vastaus

32-bittinen kokoonpanija:

mov eax, 0

cpuid

test ecx, 0x0001

Luonnollisesti sinä Haluaisin varmistaa, että painat ensin neljä GP-rekisteriä ja avaat ne, kun olet tarkistanut haluamasi liput. On myös muita lippuja, jotka liittyvät esimerkiksi SSE3: n näyttö / odotus (bitti 3 joten 0x0080) tai lisätoimintoihin (bitti 9, joten 0x0200), joita haluat ehkä käyttää.

Tarpeeksi helppo sisällyttää C: hen tai useimmat ”todelliset” ohjelmointikielet, joissa on viivoitettu assembler, olettaen, että kääntäjäsi on hittoinen.

Vastaus

AVX on yksi monista Intelin x86-vektorilaajennuksista. Se on ollut käytössä Intelin ja AND: n hiekkasilta- / puskutraktorisarjan jälkeen.

Mikä on vektorilaajennus?

Perinteinen CPU-arkkitehtuuri (skalaarikäsittely) toimii malli nimeltä SISD: yksi käsky, yksittäinen data. Sinulla on prosessorin ydin, joka toimii ohjeilla peräkkäin ja jokainen toimii yhdellä operandijoukolla kerrallaan.

Tämä toimii hyvin useimmille työmäärille, mutta se ei yleensä sovi tietyntyyppisiin laskennan intensiivisiin työmääriin. Harkitse esimerkiksi valokuvien muokkausta: jos halusin kaksinkertaistaa kuvan kirkkauden, minun on kaksinkertaistettava kuvan kirkkaus pikseli kerrallaan, mikä on hidasta. Jokainen pikseli on itse asiassa riippumaton muista, eli siinä on potentiaalia massiivinen rinnakkaisuus: kun otetaan huomioon tarpeeksi laskennallisia resursseja ja oikea arkkitehtuuri, teoreettisesti kaikki tehtävät voidaan tehdä yhdellä kertaa.

Syötä vektoriprosessorit: nämä toimivat SIMD-mallilla. Sen sijaan, että vektoriprosessori toimisi yksittäisellä elementillä yksitellen, ketjuttaa monet dataelementit yhdeksi suureksi elementiksi (tyypillisesti 256 bittiä tai enemmän) ja suorittaa sitten operaatiot sillä. Tuloksena on, että vektoriprosessori voi työskennellä monien dataelementtien kanssa yhdessä toiminnossa, kun perinteisen prosessorin suorittaminen vaatii useita toimintoja.

SIMD-ohjelmoinnin perusteet

Perinteisiä CPU-arkkitehtuureja, kuten X86, ei tietenkään ole suunniteltu SIMD-käyttöä varten. Vuosien varrella Intel on jatkuvasti lisännyt x86 ISA -laajennuksia parantamaan sen toiminnallisuutta, ja SIMD-laajennukset olivat joitain aikaisimpia.

Se alkoi Pentiumin MMX: llä, mutta siinä oli melko räikeät rajoitukset. Myöhemmin Intel lisäsi SSE-käskykokonaisuuden laajennuksen, joka poisti osan näistä rajoituksista. He toistivat SSE: tä seuraavalla vuosikymmenellä, kunnes lopulta esittivät AVX: n.

AVX esitteli melko merkittäviä parannuksia edeltäjäänsä nähden SSE4.x

Vektorirekisterikokoa kasvatettiin 128 bitistä 256 bittiin, mikä kaksinkertaisti potentiaalisen läpimenon. Ohjeet siirtyivät perinteisestä 2 operandimuodosta (a = a + b) 3 operandimuotoon ( a = b + c), mikä parantaa joustavuutta. Myös linjaussääntöjä lievennettiin.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *