3DNow!
Da Wikipedia, l'enciclopedia libera.
3DNow! è il nome di un'estensione multimediale creata da AMD per i propri processori, a partire dal K6-2 del 1998. Più tecnicamente, è instruction set SIMD aggiuntivo al tradizionale instruction set x86, rivolto a migliorare le prestazioni nel calcolo vettoriale richiesto da molte applicazioni grafiche. Inizialmente era un mero miglioramento dell'MMX di Intel con l'aggiunta del calcolo in virgola mobile oltre a quello intero. Intel avrebbe in seguito introdotto un set molto simile, ma incompatibile, chiamato SSE, col Pentium III.
AMD ha migliorato questo set di istruzioni nel tempo. Il primo aggiornamento fu chiamato semplicemente Enhanced 3DNow!; introdotto con la prima generazione di Athlon, introduceva 19 nuove istruzioni. Il secondo aggiornamento fu denominato 3DNow! Professional, e debuttò con l'Athlon XP. In pratica questa versione includeva completamente il SSE della Intel e lo integrava con il 3DNow!.
Un vantaggio del 3DNow! è che può addizionare e moltiplicare due numeri sullo stesso registro, mentre l'SSE può trattare solo operandi in posizioni uguali su registri diversi. Questa capacità, chiamata orizzontale da Intel, è la maggiore aggiunta all'SSE3, rilasciato recentemente.
Viceversa, una debolezza del 3DNow! è che può memorizzare solo due numeri in un registro, a confronto dei quattro dell'SSE. Comunque le sue istruzioni sono in generale più veloci nell'esecuzione.
Inoltre 3DNow! condivide gli stessi registri dell'MMX, mentre SSE ha i suoi propri registri. Dato che i registri di 3DNow! e di MMX sono usati dalle tradizionali FPU x86, le istruzioni di queste e del 3DNow! non possono essere eseguite contemporaneamente. Tuttavia, dato che l'unità 3DNow! è assimilata ad una FPU, essa può usare le istruzioni x86 FNSAVE e FRSTR per salvare e caricare le informazioni presenti nei registri. Questo significa che non sono necessarie modifiche al sistema operativo per supportare il 3DNow!.
Al contrario, l'SSE utilizza per salvare e caricare i registri delle istruzioni originali, chiamate FXSAVE e FXRSTR, aggiunte all'instruction set x86 per salvare solo i registri SSE e non anche i registri x86 (quelli usati dalla FPU, dall'MMX e dal 3DNow!). Per usare queste istruzioni FX* dovette essere introdotta una modalità protetta modificata, chiamata "enhanced mode"; l'unica differenza era che in quest'ultima abilitava l'uso dell'SSE e delle istruzioni FX*, mentre la precedente lo impediva. I sistemi operativi che supportavano l'SSE entravano nella enhanced mode, negli altri non era prevista questa possibilità.