De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

3D¡Ahora! es una extensión del conjunto de instrucciones x86 desarrollado por Advanced Micro Devices (AMD). Agrega instrucciones de instrucción única de datos múltiples (SIMD) al conjunto de instrucciones x86 base, lo que le permite realizar el procesamiento de vectores , lo que mejora el rendimiento de muchas aplicaciones con uso intensivo de gráficos. El primer microprocesador que implementó 3DNow fue el AMD K6-2 , que se introdujo en 1998. Cuando la aplicación fue apropiada, aumentó la velocidad entre 2 y 4 veces. [1]

Sin embargo, el conjunto de instrucciones nunca ganó mucha popularidad, y AMD anunció en agosto de 2010 que la compatibilidad con 3DNow se eliminaría en los futuros procesadores AMD, excepto por dos instrucciones (las instrucciones PREFETCHy PREFETCHW). [2] Las dos instrucciones también están disponibles en los procesadores Intel Bay-Trail. [3]

Historia [ editar ]

3DNow se desarrolló en un momento en que los gráficos 3D se estaban convirtiendo en algo habitual en los juegos y multimedia de PC. La visualización en tiempo real de gráficos 3D dependía en gran medida de la unidad de punto flotante (FPU) de la CPU host para realizar cálculos de punto flotante , una tarea en la que el procesador K6 de AMD fue fácilmente superado por su competidor, el Intel Pentium II.

Como una mejora del conjunto de instrucciones MMX , el conjunto de instrucciones 3DNow aumentó los registros MMX SIMD para admitir operaciones aritméticas comunes (sumar / restar / multiplicar) en datos de punto flotante de precisión simple (32 bits). El software escrito para usar 3DNow de AMD en lugar del FPU x87 más lento podría ejecutarse hasta 4 veces más rápido, dependiendo de la combinación de instrucciones.

Versiones [ editar ]

3DNow [ editar ]

La primera implementación de la tecnología 3DNow contiene 21 nuevas instrucciones que admiten operaciones de punto flotante SIMD . El formato de datos 3DNow está empaquetado, de precisión simple , de punto flotante. El conjunto de instrucciones 3DNow también incluye operaciones para operaciones de números enteros SIMD, captación previa de datos y conmutación más rápida de MMX a punto flotante. Más tarde, Intel agregaría instrucciones similares (pero incompatibles) al Pentium III , conocido como SSE (Streaming SIMD Extensions).

Las instrucciones de coma flotante de 3DNow son las siguientes:

  • PI2FD - Entero empaquetado de 32 bits a conversión de punto flotante
  • PF2ID - Conversión empaquetada de punto flotante a entero de 32 bits
  • PFCMPGE - Comparación de punto flotante empaquetada, mayor o igual
  • PFCMPGT - Comparación de punto flotante empaquetada, mayor
  • PFCMPEQ - Comparación de punto flotante empaquetada, igual
  • PFACC - Acumulación de coma flotante empaquetada
  • PFADD - Adición de punto flotante empaquetada
  • PFSUB - Resta de punto flotante empaquetada
  • PFSUBR - Resta inversa de coma flotante empaquetada
  • PFMIN - Mínimo empaquetado de punto flotante
  • PFMAX - Máximo de punto flotante empaquetado
  • PFMUL - Multiplicación de coma flotante empaquetada
  • PFRCP - Aproximación recíproca de coma flotante empaquetada
  • PFRSQRT - Aproximación de raíz cuadrada recíproca de punto flotante empaquetada
  • PFRCPIT1 - Recíproco de punto flotante empaquetado, primer paso de iteración
  • PFRSQIT1 - Raíz cuadrada recíproca de punto flotante empaquetada, primer paso de iteración
  • PFRCPIT2 - Raíz cuadrada recíproca / recíproca de punto flotante empaquetada, segundo paso de iteración

Las instrucciones de números enteros de 3DNow son las siguientes:

  • PAVGUSB - Promedio de enteros sin firmar de 8 bits empaquetados
  • PMULHRW - Multiplicación de números enteros de 16 bits empaquetados con redondeo

Las instrucciones para mejorar el rendimiento de 3DNow son las siguientes:

  • FEMMS - Entrada / salida más rápida del estado MMX o de punto flotante
  • PREFETCH/PREFETCHW - Obtenga previamente al menos una línea de 32 bytes en la caché de datos L1 (esta es la instrucción no obsoleta)

Extensiones 3DNow [ editar ]

Hay poca o ninguna evidencia de que a la segunda versión de 3DNow se le haya dado oficialmente su propio nombre comercial. Esto ha provocado cierta confusión en la documentación que hace referencia a este nuevo conjunto de instrucciones. Los términos más comunes son Extended 3DNow , Enhanced 3DNow y 3DNow + . La frase "Enhanced 3DNow" se puede encontrar en algunas ubicaciones del sitio web de AMD, pero las mayúsculas de "Enhanced" parecen ser puramente gramaticales o se utilizan para enfatizar los procesadores que pueden tener o no estas extensiones (la más notable de las cuales hace referencia a una página de referencia para el K6-III-P que no tiene estas extensiones). [4] [5]

Esta extensión del conjunto de instrucciones 3DNow se introdujo con los procesadores Athlon de primera generación . El Athlon agregó 5 nuevas instrucciones 3DNow y 19 nuevas instrucciones MMX. Posteriormente, el K6-2 + y el K6-III + (ambos dirigidos al mercado móvil) incluyeron las 5 nuevas instrucciones 3DNow, dejando de lado las 19 nuevas instrucciones MMX. Se agregaron las nuevas instrucciones de 3DNow para impulsar el DSP . Las nuevas instrucciones MMX se agregaron para impulsar la transmisión de medios .

Las 19 nuevas instrucciones MMX son un subconjunto del conjunto de instrucciones SSE1 de Intel. En los manuales técnicos de AMD, AMD separa estas instrucciones de las extensiones de 3DNow. [4] En la literatura de productos para clientes de AMD, sin embargo, esta segregación es menos clara cuando los beneficios de las 24 nuevas instrucciones se atribuyen a la tecnología 3DNow mejorada. [6] Esto ha llevado a los programadores a crear su propio nombre para las 19 nuevas instrucciones MMX. El más común parece ser Integer SSE ( ISSE ). [7] SSEMMX y MMX2 también se encuentran en la documentación de filtros de video del sector de dominio público. ISSE también podría referirse a Internet SSE, uno de los primeros nombres de SSE.

Las instrucciones de DSP de la extensión 3DNow son las siguientes:

  • PF2IW - Conversión empaquetada de palabra de punto flotante a entero con extensión de signo
  • PI2FW - Conversión de palabra entera empaquetada a punto flotante
  • PFNACC - Acumulación negativa de coma flotante empaquetada
  • PFPNACC - Acumulación positiva-negativa mixta de coma flotante empaquetada
  • PSWAPD - Doble palabra de intercambio empaquetada

Las instrucciones de extensión MMX (Integer SSE) son las siguientes:

  • MASKMOVQ - Almacenamiento de transmisión (omisión de caché) mediante máscara de bytes
  • MOVNTQ - Tienda de transmisión (omisión de caché)
  • PAVGB - Promedio empaquetado de bytes sin firmar
  • PAVGW - Promedio empaquetado de palabras sin firmar
  • PMAXSW - Palabra máxima firmada empaquetada
  • PMAXUB - Byte no firmado máximo empaquetado
  • PMINSW - Palabra firmada mínima empaquetada
  • PMINUB - Byte sin firmar mínimo empaquetado
  • PMULHUW - Palabra sin firmar alta multiplicada empaquetada
  • PSADBW - Suma empaquetada de diferencias absolutas de bytes
  • PSHUFW - Palabra aleatoria empaquetada
  • PEXTRW - Extraer palabra en registro de números enteros
  • PINSRW - Insertar palabra del registro de enteros
  • PMOVMSKB - Mover la máscara de bytes al registro de enteros
  • PREFETCHNTA - Prefetch usando la referencia NTA
  • PREFETCHT0 - Prefetch usando la referencia T0
  • PREFETCHT1 - Prefetch usando la referencia T1
  • PREFETCHT2 - Prefetch usando la referencia T2
  • SFENCE - Tienda valla

3DNow Professional [ editar ]

3DNow Professional es un nombre comercial utilizado para indicar procesadores que combinan la tecnología 3DNow con un conjunto completo de instrucciones SSE (como SSE1, SSE2 o SSE3). [8] El Athlon XP fue el primer procesador en llevar el nombre comercial 3DNow Professional, y fue el primer producto de la familia Athlon en admitir el conjunto completo de instrucciones SSE1 (para un total de: 21 instrucciones originales 3DNow; cinco instrucciones DSP de extensión 3DNow ; 19 instrucciones de extensión MMX; y 52 instrucciones SSE adicionales para una compatibilidad completa SSE1). [9]

3DNow y el Geode GX / LX [ editar ]

La Geode GX y Geode LX añade dos nuevas instrucciones 3DNow que actualmente están ausentes en todos los otros procesadores.

Las instrucciones "profesionales" de 3DNow exclusivas del Geode GX / LX son las siguientes:

  • PFRSQRTV - Aproximación de raíz cuadrada recíproca para un par de flotantes de 32 bits
  • PFRCPV - Aproximación recíproca para un par de flotadores de 32 bits

Ventajas y desventajas [ editar ]

Una ventaja de 3DNow es que es posible sumar o multiplicar los dos números que están almacenados en el mismo registro . Con SSE, cada número solo se puede combinar con un número en la misma posición en otro registro. Esta capacidad, conocida como horizontal en la terminología de Intel, fue la mayor adición al conjunto de instrucciones SSE3 .

Una desventaja de 3DNow es que las instrucciones 3DNow y las instrucciones MMX comparten el mismo archivo de registro, mientras que SSE agrega 8 nuevos registros independientes ( XMM0- XMM7).

Debido a que los registros MMX / 3DNow son compartidos por la FPU x87 estándar , las instrucciones 3DNow y las instrucciones x87 no se pueden ejecutar simultáneamente. Sin embargo, debido a que tiene un alias para el x87 FPU, los estados de los registros 3DNow y MMX se pueden guardar y restaurar mediante el x87 F(N)SAVEy las F(N)RSTORinstrucciones tradicionales . Este arreglo permitió sistemas operativos para apoyar 3DNow sin modificaciones explícitas, mientras que los registros de la ESS requiere compatibilidad del sistema operativo explícito para guardar y restaurar adecuadamente los nuevos registros XMM (a través de los agregados FXSAVEy las FXRSTORinstrucciones).

Las instrucciones FX * son una actualización de las instrucciones anteriores de guardar y restaurar x87 porque estas podrían guardar no solo los estados de registro SSE sino también los estados de registro x87 (por lo tanto, lo que significaba que también podría guardar registros MMX y 3DNow).

En los núcleos basados ​​en AMD Athlon XP y K8 (es decir, Athlon 64 ), los programadores de ensamblaje han notado que es posible combinar instrucciones 3DNow y SSE para reducir la presión de registro , pero en la práctica es difícil mejorar el rendimiento debido a las instrucciones que se ejecutan en archivos compartidos. Unidades funcionales. [10]

Procesadores compatibles con 3DNow [ editar ]

  • Todos los procesadores AMD posteriores a K6-2 basados ​​en las familias de arquitectura K6, Athlon, Athlon 64 y Phenom. No es compatible con los procesadores de arquitectura Bulldozer, Bobcat y Zen y sus derivados.
  • El último procesador AMD APU compatible con 3DNow es el A8-3870K.
  • National Semiconductor Geode , más tarde AMD Geode.
  • VIA C3 (también conocido como Cyrix III) núcleos "Samuel", "Samuel 2" "Ezra" y "Eden ESP".
  • Cabrestante IDT 2

Referencias [ editar ]

  1. ^ "Utilización eficaz de 3DNow en Linux" . Revista de Linux. 1 de diciembre de 1999 . Consultado el 3 de octubre de 2010 .
  2. ^ "Las instrucciones de 3DNow están siendo obsoletas | AMD Developer Central" . Blogs.amd.com. 2010-08-18. Archivado desde el original el 24 de octubre de 2010 . Consultado el 3 de octubre de 2010 .
  3. ^ "IntelE38xx - Wiki de MinnowBoard" . Archivado desde el original el 11 de febrero de 2017 . Consultado el 13 de febrero de 2017 .
  4. ^ a b "Extensiones de AMD al manual de conjuntos de instrucciones de 3DNow y MMX" (PDF) . Advanced Micro Devices, Inc. Marzo de 2000 . Consultado el 7 de junio de 2008 .
  5. ^ "Portátil basado en procesador móvil AMD-K6-III-P: Ziff-Davis CPUmark 99" . Consultado el 7 de junio de 2008 . Título incorrecto en la página: Procesadores Mobile AMD-K6-III + y Mobile AMD-K6-2 + con Enchanced [ sic ] 3DNow! Tecnología
  6. ^ "Resumen del producto del procesador AMD Athlon" . Advanced Micro Devices, Inc. Consultado el 8 de junio de 2008 .
  7. ^ "ISSE" . AviSynth . Consultado el 19 de julio de 2017 .
  8. ^ "Explicando la nueva tecnología 3DNow Professional" . Advanced Micro Devices, Inc. Archivado desde el original el 21 de enero de 2009 . Consultado el 8 de junio de 2008 .
  9. ^ "Características arquitectónicas de AMD Athlon XP" . Advanced Micro Devices, Inc. Consultado el 8 de junio de 2008 .
  10. ^ "3DNow + vs SSE en Athlon XP - comp.sys.ibm.pc.hardware.chips | Grupos de Google" . Consultado el 3 de octubre de 2010 .

Lectura adicional [ editar ]

  • Case, Brian (1 de junio de 1998). "3DNow aumenta el rendimiento 3D que no es de Intel". Informe del microprocesador .
  • Oberman, S .; Favor, G .; Weber, F. (marzo de 1999). "Tecnología AMD 3DNow: arquitectura e implementaciones" . IEEE Micro .

Enlaces externos [ editar ]

  • Socios tecnológicos de 3DNow , archivado del original (eliminado del sitio web de AMD a principios de 2001)
  • Guía de transferencia de instrucciones de AMD 3DNow (PDF) , archivada desde el original (eliminada del sitio web de AMD en 2014)
  • Manual de tecnología 3DNow
  • Extensiones de AMD al manual de conjuntos de instrucciones de 3DNow y MMX
  • Libro de datos de procesadores AMD Geode LX
  • Explicando la nueva tecnología 3DNow Professional (archivado)