# 3DNow!

3DNow! és una marca registrada d'una extensió multimèdia creada per AMD per als seus processadors, començada amb K6-2 el 1998.
La segona versió de 3DNow!, mai va tenir el seu nom propi comercial. Això ha donat lloc a certa confusió en la documentació que es refereix a aquest nou repertori d'instruccions. Els termes més comuns són 3DNow! estès, Augment de 3DNow! i 3DNow!+. La frase "Augment de 3DNow!" pot ser trobat en alguns llocs de la pàgina web d'AMD, el mot "Augment de" sembla purament gramatical o utilitzar-se per accentuar el processadors que tenen o no, aquestes extensions (la més notable de les quals fa referència a un punt de referència per a la pàgina des benchmarks de K6-III-P que no posseeix aquesta extensió). Aquesta extensió pel repertori d'instruccions de 3DNow! va ser introduïda amb la primera generació de processadors Athlon. L'Athlon afegia 5 instruccions noves 3DNow! i 19 instruccions noves MMX. Després, el K6-2+ i el K6-III+ (ambdós disponibles al mercat mòbil) inclouen 5 instruccions noves 3DNow!, deixant de banda les 19 instruccions noves MMX. Les noves instruccions 3DNow! es van afegir per a impulsar DSP. Les noves instruccions MMX van ser afegides per impulsar streaming media.

## Extensions 3DNow! o MMX?

Les 19 instruccions MMX noves, són un subconjunt del repertori d'instruccions SSE1 d'Intel. En els manuals tècnics d'AMD, AMD segrega aquestes instruccions, a part de les extensions 3DNow!. En lectures de productes de clients AMD, això no obstant, aquesta segregació és menys clara que els beneficis de totes les 24 noves instruccions que estan acreditades com l'augment de la tecnologia 3DNow!. Això ha portat als programadors a crear el seu propi nom per a les 19 instruccions MMX. La més comuna sembla Integer SSE (ISSE). SSEMMX i MMX2 es troben també en el domini públic del filtratge de la imatge/vídeo. [Cal assenyalar també que ISSE pot també referir a Internet SSE, un nom per a principis de SSE.]

## Instruccions 3DNow! d'extensió DSP

* PF2IW - Conversió empaquetada de punt flotant a enter amb extensió de signe (mida paraula)
* PI2FW - Conversió empaquetada d'enter amb extensió de signe (mida paraula) a punt flotant
* PFNACC - Acumulació negativa d'empaquetat de punt flotant
* PFPNACC - Acumulació mixta positiva i negativa, d'empaquetat de punt flotant
* PSWAPD - Intercanvi empaquetat de mida doble paraula

## Extensió d'instruccions MMX (Enter SSE, "Integer SSE, ISSE")

* MASKMOVQ - Streaming (cache bypass) store using byte mask
* MOVNTQ - Streaming (cache bypass) store
* PAVGB - Mitja de l'empaquetat d'una paraula amb signe
* PAVGW - Mitja de l'empaquetat d'una paraula sense signe
* PMAXSW - Màxim de l'empaquetat d'una paraula amb signe
* PMAXUB - Màxim de l'empaquetat d'una paraula sense signe
* PMINSW - Mínim de l'empaquetat d'una paraula amb signe
* PMINUB - Mínim de l'empaquetat d'una paraula sense signe
* PMULHUW - Multiplicació alta de l'empaquetat d'una paraula sense signe
* PSADBW - Packed sum of absolute byte differences
* PSHUFW - Packed shuffle word
* PEXTRW - Extrau una paraula a un registre enter
* PINSRW - Afegeix una paraula d'un registre enter
* PMOVMSKB - Mou la màscara byte a un registre enter
* PREFETCHNTA -Precaptura utilitzant la referència NTA
* PREFETCHT0 - Precaptura utilitzant la referència T0
* PREFETCHT1 - Precaptura utilitzant la referència T1
* PREFETCHT2 - Precaptura utilitzant la referència T2
* SFENCE - Tanca l'enmagatzegament

## 3DNow! Professional

3DNow! Professional no sembla una extensió del repertori d'instruccions 3DNow! sinó més aviat un nom comercial creat per indicar els transformadors que combinen la tecnologia 3DNow! amb el repertori d'instruccions complet de SSE (com SSE1, SSE2 o SSE3). El primer processador que coincideix amb aquesta descripció és l'Athlon XP. L'Athlon XP afegeix la resta del repertori d'instruccions SSE1 que falten abans dels processadors Athlon (amb el total de: 21 instruccions originals de 3DNow!; 5 extensions d'instruccions DSP 3DNow!; 19 instruccions d'extensió MMX; i 52 instruccions addicionals de SSE per a completar la compatibilitat amb SSE1).

## 3DNow! i el Geode GX/LX

El Geode GX and Geode LX afegeix 2 instruccions noves 3DNow! que estan actualment absents en tots els altres processadors.

### Instruccions professionals 3DNow! úniques al Geode GX/LX

* PFRSQRTV - Aproximació de l'arrel quadrada recíproca per un parell de floats de 32 bits
* PFRCPV - Aproximació recíproca per un parell de floats de 32 bits

## Avantatges i inconvenients

Un avantatge de 3DNow! és que és possible sumar o multiplicar dos nombres que estan emmagatzemats en el mateix registre. Amb SSE, cada nombre només pot ser combinat amb un nombre en la mateixa posició en un altre registre. Aquesta capacitat, és coneguda en la terminologia d'Intel com horitzontal, va ser la característica més important afegida al repertori d'instruccions SSE3.
Un inconvenient amb 3DNow! comparat amb SSE és que només pot emmagatzemar dos nombres en el mateix registre, al contrari de SSE que en pot quatre. Això no obstant, les instruccions 3DNow! poden ser executades generalment amb menys latència i amb major rendiment que les instruccions SSE.
3DNow! també comparteix els mateixos registres físics que MMX, mentre que SSE té els seus registres independents. A causa d'això els registres de MMX i 3DNow! també són utilitzats per la FPU x87 estàndard, les instruccions 3DNow! i x87 no poden ser executades simultàniament. Això no obstant, perquè és l'àlies de la FPU x87, el 3DNow! i MMX, els registres d'estat poden ser guardats i restaurants amb les tradicionals instruccions x87: FNSAVE i FRSTR. Utilitzar les instruccions preexistents de x87, significa que no s'han de realitzar cap mena de canvis al sistema operatiu per a suportar 3DNow!.
Al contrari, per guardar i restaurar l'estat dels registres SSE, es requerix la utilització de dos instruccions noves FXSAVE i FXRSTR; les instruccions FX* són una actualització de les antigues instruccions de guardar i restaurar de x87, perquè aquests podrien salvar no només els registre d'estat de SSE sinó també els registres d'estat de x87 (per tant, el que significa que podria salvar també els registres MMX i 3DNow!).
En l'AMD Athlon XP i nuclis basats en K8 (p. ex. Athlon 64), els programadors d'assemblador han notat que és possible actualment utilitzar al mateix temps 3DNow! i SSE. Encara que ambdós comparteixin la mateixa unitat funcional, això pot permetre més rendiment mitjançant l'eliminació d'alguns register pressure, però és difícil de complir.

## Processadors que suporten 3DNow!

* Tots els processadors AMD posteriors a K6-2 (incloient-lo)
* National Semiconductor Geode, després d'AMD Geode.
* VIA C3 (també conegut com a Cyrix III) nuclis "Samuel", "Ezra", i "Eden".
* IDT Winchip 2

## Referències

* 1 2 «AMD Extensions to the 3DNow! and MMX Instruction Sets Manual» (PDF). Advanced Micro Devices, Inc., 01-03-2000. [Consulta: 7 juny 2008].
* ↑ «Mobile AMD-K6-III-P Processor-Based Notebook: Ziff-Davis CPUmark 99». [Consulta: 7 juny 2008]. «Incorrect title on page: Mobile AMD-K6-III+ and Mobile AMD-K6-2+ Processors with Enchanced [sic] 3DNow! Technology»
* ↑ «AMD Athlon Processor Product Brief». Advanced Micro Devices, Inc.. [Consulta: 8 juny 2008].
* ↑ «ISSE». AviSynth. Arxivat de l'original el 2013-07-07. [Consulta: 8 juny 2008].
* ↑ «Explaining the new 3DNow! Professional Technology». Advanced Micro Devices, Inc.. [Consulta: 8 juny 2008].
* ↑ «AMD Athlon XP Architectural Features». Advanced Micro Devices, Inc.. [Consulta: 8 juny 2008].
* ↑ «3DNow!+ vs SSE on Athlon XP». Google Group sobre 3DNow!. [Consulta: 28 desembre 2015].

## Enllaços externs

* AMD 3DNow! Instruction Porting Guide (PDF)
* 3DNow!Technology Manual
* AMD Extensions to the 3DNow! and MMX Instruction Sets Manual
* AMD Geode LX Processors Data Book
* Explaining the new 3DNow! Professional Technology