3D¡Ahora! -3DNow!

AMD 3DNow!
3dnow-logo.svg
Firma de diseño Micro dispositivos avanzados
Introducido 1998
Escribe set de instrucciones arquitectura

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 vectorial de operaciones vectoriales de punto flotante utilizando registros vectoriales , lo que mejora el rendimiento de muchas aplicaciones de 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.

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). Las dos instrucciones también están disponibles en los procesadores Intel Bay-Trail.

Historia

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

3DNow

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 coma 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 coma 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

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).

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. Sin embargo, en la literatura de productos de los clientes de AMD, esta segregación es menos clara cuando los beneficios de las 24 nuevas instrucciones se atribuyen a la tecnología 3DNow mejorada. 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 ). 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 - Empaquetado multiplicar palabra alta sin firmar
  • 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 números 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 Profesional

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). 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 3DNow originales; cinco instrucciones DSP de extensión 3DNow; 19 MMX instrucciones de extensión y 52 instrucciones SSE adicionales para una compatibilidad completa con SSE1).

3DNow y el Geode GX / LX

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

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.

Procesadores compatibles con 3DNow

  • 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

Otras lecturas

enlaces externos