3DNow! è un'estensione multimediale di 21 istruzioni, creata da AMD per i propri processori, inizialmente progettato per l'K6-2. Più tecnicamente, è un instruction set SIMD, in aggiunta all'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! (a volte detto anche Extended 3DNow! o 3DNow!+): con la prima generazione di Athlon, furono introdotte 24 nuove istruzioni (5 3DNow! e 19 MMX). La serie K6-2+/III+ (processori pensati per i portatili) beneficiò solo delle 5 nuove istruzioni DSP, ma non delle 19 istruzioni MMX. 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!.
Nel 2010, AMD ha annunciato che il set di istruzioni 3DNow! è stato ufficialmente deprecato, pertanto i futuri processori potrebbero non supportarlo, con l'eccezione di due istruzioni.[1]
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, reso disponibile agli inizi del 2004 con il Pentium 4 basato su core Prescott, ed implementata negli Athlon 64 "Revision E" nell'aprile 2005.
Di contro 3DNow! può memorizzare solo due numeri in un registro contro i quattro dell'SSE, le sue istruzioni sono comunque 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à.