3DNow!

Fra Wikipedia, den frie encyklopedi
Gå til: navigasjon, søk

3DNow! er en IA-32 SIMD multimedia-utvidelse i AMDs prosessorer, som ble lansert sammen med AMD K6-2 i 1998. 3DNow! er en tilføyelse av SIMD instruksjoner i den tradisjonelle x86-arkitekturen, som forbedrer prosessorens ytelse under utføring av vektorprosessering i grafikk-krevende programmer.

Historie[rediger | rediger kilde]

3DNow! ble utviklet som en forbedring og konkurrent til MMX. Mens MMX bare arbeidet med heltalls-beregninger, kunne 3DNow! også akselerere grafiske operasjoner basert på desimaltalls-beregninger.

Dette var strategisk viktig for AMD, ettersom Intel Pentium II var raskere enn AMD AmK6 til å utføre intensiv desimaltalls-matematikk. 3DNow! ble lansert på en tid da 3-dimensjonal grafikk eksploderte i popularitet innenfor dataspill som i stor grad var avhengig av desimaltalls-beregninger.

Oversikt[rediger | rediger kilde]

3DNow! består av 21 nye instruksjoner for SIMD desimaltall- og heltallsberegninger, data prefetch og raskere svitsjing mellom MMX og desimaltall. Sammen med Intel Pentium III, lanserte Intel i 1999 et lignende (men inkompatibelt) instruksjonssett kalt SSE.

Videreutvikling[rediger | rediger kilde]

AMD videreutviklet 3DNow! over tid. AMD AmK6-III, lansert 22. februar 1999 tilføyde 5 nye DSP instruksjoner, men ikke de 19 nye MMX-instruksjonene. Ved lanseringen av AMD Athlon den 23. juni 1999, ble det tilføyd 24 nye instruksjoner som delvis implementerte SSE og utførte prefetch av instruksjoner. AMD kalte denne forbedringen for henholdsvis Enhanced 3DNow!, Extended 3DNow! og 3DNow!+.

AMD Athlon XP, lansert 9. oktober 2001, hadde full støtte for både SSE og Enhanced 3DNow!. Denne forbedringen ble kalt 3DNow! Professional.

I AMD Geode (2003) ble det tilføyd to nye instruksjoner – pfrsqrtv (innbyrdes kvadratrot avrunding ved 2 stk 32-bit desimaltall) og pfrcpv (innbyrdes avrunding av 2 stk 32-bit desimaltall), som ikke er blitt implementert i noen annen mikroprosessor.

Fordeler og ulemper[rediger | rediger kilde]

En fordel med 3DNow! er at to tall kan adderes eller multipliseres i et og samme register, mens SSE bruker to registre til samme operasjon. Denne egenskapen ved 3DNow!, kalt «horisontal» av Intel, ble senere tilføyd SSE3.

En ulempe med 3DNow!, sammenlignet med SSE, er at 3DNow! bare kan lagre to tall i et register, mens SSE kan lagre fire tall i et register. Imidlertid har 3DNow!, på grunn av sin kortere latens, høyere båndbredde enn SSE.

På samme måte som MMX deler 3DNow! sine registre med desimaltallsenheten (x87), mens SSE har sine egne, uavhengige registre. Verken 3DNow! eller MMX kan derfor utføres samtidig med desimaltallsenheten, men benytter de tradisjonelle x87 instruksjonene FNSAVE og FRSTR, for å lagre og gjenopprette registrenes tilstand ved kontekst-skifte. Dette ble gjort for at det ikke skulle bli nødvendig å endre operativsystemene for å dra nytte av 3DNow!.

SSE bruker to nye x86-instruksjoner – FXSAVE og FXRSTR, til å lagre og gjenopprette registrenes tilstand uavhengig av og parallelt med desimaltalls-enheten. Disse to nye instruksjonene kan også lagre x87-registrenes tilstander, og kan dermed også lagre MMX- og 3DNow!-instruksjoner.

3DNow! og SSE kan kombineres på AMD Athlon XP og AMD K8 i et og samme program, ved å skrive programmet i assembler.

Se også[rediger | rediger kilde]