3DNow!

De Viquipèdia
Dreceres ràpides: navegació, cerca

3DNow! és una marca registrada d'una extensió multimèdia creada per AMD per als seus processadors, començada amb K6-2 el 1998. És una addició d'instruccions SIMD al tradicional repertori d'instruccions d'x86, destinades a millorar les habilitats de les CPU per realitzar els requeriments de processament vectorial d'algunes aplicacions gràfiques intensives.[cal citació]

Historia[modifica | modifica el codi]

3DNow! va ser desenvolupat primerament com a una millora del repertori d'instruccions MMX. La idea darrere la seva creació original es va estendre de només operar amb enters matemàtics a també a accelerar càlculs en punt flotant. La necessitat estratègica i de comercialització de proporcionar càlculs 3D en els dominis del punt flotant va ser especialment necessària per AMD. El processador K6 en aquells moments no estava ben equipat per matemàtica intensiva en punt flotant, amb comparació de l'Intel Pentium II.

El repertori d'instruccions de 3DNow! va ser creat a finals de la dècada de 1990, quan els gràfics 3D guanyaven popularitat a causa dels jocs 3D, i els jocs 3D utilitzaven fortament l'aritmètica en punt flotant. Atès que abans de la dècada de 1990 AMD fàcilment podria treballar amb un rendiment limitat en punt flotant, perquè la gran majoria del programari realitzava càlculs amb enters, amb el qual el K6 es desenvolupava bastant bé, els jocs 3D i les aplicacions multimèdia avançades van canviar ràpidament el paisatge.[cal citació]

Versions[modifica | modifica el codi]

3DNow![modifica | modifica el codi]

La primera implementació de la tecnologia 3DNow! tenia 21 instruccions noves que donaven suport a SIMD amb les operacions amb punt flotant. El format de dades de 3DNow! és empaquetat, té precisió simple i punt flotant. El repertori d'instruccions de 3DNow! també inclou operacions d'enters per a SIMD, precaptura de dades, i canvi ràpid de MMX a punt flotant. Després, Intel va voler afegir instruccions similars (però incompatibles) al Pentium III, conegudes com a SSE.

Instruccions en punt flotant de 3DNow!

  • PAVGUSB - Mitja de l'empaquetat d'enters sense signe de 8 bits
  • PI2FD - Conversió de l'empaquetat d'enters de 32 bits a punt flotant
  • PF2ID - Conversió de l'empaquetat de punt flotant a enters de 32 bits
  • PFCMPGE - Comparació de l'empaquetat de punt flotant, major o igual
  • PFCMPGT - Comparació de l'empaquetat de punt flotant, major
  • PFCMPEQ - Comparació de l'empaquetat de punt flotant, igual
  • PFACC - Acumulació de l'empaquetat de punt flotant
  • PFADD - Suma de l'empaquetat de punt flotant
  • PFSUB - Resta de l'empaquetat de punt flotant
  • PFSUBR - Resta inversa de l'empaquetat de punt flotant
  • PFMIN - Mínim de l'empaquetat de punt flotant
  • PFMAX - Màxim de l'empaquetat de punt flotant
  • PFMUL - Multiplicació de l'empaquetat de punt flotant
  • PFRCP - Aproximació recíproca de l'empaquetat de punt flotant
  • PFRSQRT - Aproximació de l'arrel quadrada recíproca de l'empaquetat de punt flotant
  • PFRCPIT1 - Primer pas de la iteració, del recíproc de l'empaquetat de punt flotant
  • PFRSQIT1 - Primer pas de la iteració, de l'aproximació de l'arrel quadrada recíproca de l'empaquetat de punt flotant
  • PFRCPIT2 - Segon pas de la iteració, de l'aproximació de l'arrel quadrada recíproca/recíproca de l'empaquetat de punt flotant
  • PMULHRW - Multiplicació amb redondeig de l'empaquetat d'enters de 16 bits

instruccions 3DNow! per a la millora del rendiment

  • FEMMS - Faster entry/exit of the MMX or floating-point state
  • PREFETCH/PREFETCHW - Prefetch at least a 32-byte line into L1 data cache

Extensions 3DNow![modifica | modifica el codi]

Hi ha poca o cap prova que la segona versió de 3DNow!, mai va ser oficialment donat 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 ser 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ó).[1][2] 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 extensiona 3DNow!.[1] 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!.[3] Això ha portat als programadors a crear el seu propi nom per a les 19 instruccions MMX. La més comuna sembla ser Integer SSE (ISSE).[4] 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.]

3DNow! instruccions d'extensió DSP

  • PF2IW - Conversió empaquetada de punt flotant a enter amb extensió de signe (mida paraula)
  • PI2FW - Conversió empaquetada de 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'epaquetat 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 mascara 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[modifica | modifica el codi]

3DNow! Professional no sembla ser 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).[5] 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).[6]

3DNow! i el Geode GX/LX[modifica | modifica el codi]

El Geode GX and Geode LX afegeix 2 instruccions noves 3DNow! que estan actualment absentes 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[modifica | modifica el codi]

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 horizontal, va ser la característa més important afegida al repertori d'instruccions SSE3.

Un inconvenient amb 3DNow! comparat amb SSE és que només pot enmagatzemar 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, mentres 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'ensamblador 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.[7]

Processadors que suporten 3DNow![modifica | modifica el codi]

  • 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[modifica | modifica el codi]

  1. 1,0 1,1 «AMD Extensions to the 3DNow! and MMX Instruction Sets Manual» (PDF). Advanced Micro Devices, Inc., març 2000. [Consulta: 2008-06-07].
  2. «Mobile AMD-K6-III-P Processor-Based Notebook: Ziff-Davis CPUmark 99». [Consulta: 2008-06-07]. «Incorrect title on page: Mobile AMD-K6-III+ and Mobile AMD-K6-2+ Processors with Enchanced [sic] 3DNow! Technology»
  3. «AMD Athlon Processor Product Brief». Advanced Micro Devices, Inc.. [Consulta: 2008-06-08].
  4. «ISSE». AviSynth. [Consulta: 2008-06-08].
  5. «Explaining the new 3DNow! Professional Technology». Advanced Micro Devices, Inc.. [Consulta: 2008-06-08].
  6. «AMD Athlon XP Architectural Features». Advanced Micro Devices, Inc.. [Consulta: 2008-06-08].
  7. [enllaç sense format] http://groups.google.com/group/comp.sys.ibm.pc.hardware.chips/browse_thread/thread/9da2d940c5b69745

Enllaços externs[modifica | modifica el codi]