Instrucciones AVX

Sandy Bridge Wafer Die
Como algunos ya sabrán, nuestro procesador soporta una serie de instrucciones a bajo nivel, las cuales están creadas para implementar diversas funciones "base" del procesador. Últimamente, con el enfoque e importancia que esta tomando el mejor uso de los diversos núcleos e hilos con el que cuenta nuestro procesador, han surgido diferentes instrucciones dirigidas a este segmento, podemos dar un vistazo atrás de como han ido surgiendo algunas de estas a lo largo del tiempo, aunque no precisamente con el enfoque de las AVX: 3DNow!, 3DNow!+, SSE, SSE2, SSE3, SSSE3, SSE4A, SSE4.1, SSE4.2, SSE5. Las instrucciones AVX son unas de las más recientes, están desarrolladas por Intel, y fueron  propuestas en Marzo del 2008.


Intel AVX (Advanced Vector Extension) es un juego de instrucciones de 256 bits que cuenta con las siguientes características:
  • Es un vector de extensión SIMD de 256 bits para operaciones de punto flotante intensivo. Mejora el rendimiento en las nuevas aplicaciones, y algunas existentes, mediante el manejo de paquetes de datos vectoriales más grandes, y el uso de más hilos y núcleos del procesador.
  • El ancho del registro SIMD es incrementado de 128-bits a 256-bits, y renombrado de XMM0-XMM15 a YMM0-YMM15. En los procesadores que soportan AVX, el juego de instrucciones SSE (que anteriormente operaba en los registros XMM) pasa a operar en los primeros 128-bits de los registros YMM. Además, se espera la inclusión de vectores de 512 e incluso 1024 bits.
  • Son instrucciones no destructivas. AVX introduce un formato SIMD de 3 y 4 operandos, donde el operando de destino es diferente de los operandos fuente. Por ejemplo, una instrucción SSE convencional de 2 operandos a:=a+b puede usar un formato no destructivo de 3 operandos c:=a+b, preservando los operandos fuente. Este formato está limitado al juegos de instrucciones con operandos SIMD (YMM) y no incluye los registros con propósitos generales (p.e. EAX), sin embargo, se espera el soporte en el futuro.
  • Debido al mayor poder de procesamiento, las aplicaciones que usen intensivamente estas instrucciones pueden realizar el trabajo más eficientemente, dando un rendimiento por watt más alto que con otro conjunto de instrucciones.
  • Flexibilidad en el entorno de programación, debido a que el requisito de alineación de los operandos de memoria SIMD es relajado.
  • Nuevo manejo de operaciones aritméticas y primitivas, incluyendo difusión, permutación, suma y multiplicación, entre otras.

En la práctica son útiles para cualquier operación que utiliza punto flotante de forma intensiva:
  • Edición de imagen
  • Codificación de vídeo
  • Procesamiento de audio
  • Modelado 3D
  • Servicios de análisis financieros
  • Software de ingeniería y manufactura

Estas instrucciones se pueden encontrar en las siguientes familias de procesadores:
  • Intel Core i3/i5/i7 Segunda Generación (Sandy Bridge)
  • AMD FX (Bulldozer)

Sandy Bridge / Bulldozer

Instrucciones para procesadores se están implementando con cada oleada nueva de procesadores. A mi punto de vista es interesante conocer que nos ofrecen estas diversas instrucciones y saber de que forma nos benefician como usuarios.

Share this:

2 comentarios :

 
Copyright © Aemulatrix. Designed by OddThemes