lunes, 23 de septiembre de 2013

Instrucciones

La arquitectura de un procesador define que operaciones es capaz de ejecutar. Los fabricantes, con la idea siempre de crear micros más potentes, aprovechan cada nueva evolución de esta para añadir más instrucciones.
Las instrucciones normales de un procesador son del tipo SISD, acrónimo de Single Instruction Simple Data, es decir, con una instrucción realizamos una tarea sobre un dato simple en un determinado momento. Estas fueron el tipo de instrucciones que dominaron los procesadores para PCs durante muchos años.
Pero los fabricantes se dieron cuenta que había cierto tipo de aplicaciones que estas computadoras tenían problemas para ejecutar. Por eso decidieron usar otro tipo de instrucciones.
Se trata de instrucciones SIMD, Single Instruccion Multiple Data. Estas, son capaces de realizar operaciones sobre varios datos. Por ejemplo puedes sumar, restar o multiplicar varios datos en el tiempo que antes sólo podías sumar dos. De esta forma puedes aumentar radicalmente la ejecución de ciertas tareas que usan muchos datos.

¿Qué utilidades aceleran?

Los micros que usan SISD tienen problemas al ejecutar cierto tipo de aplicaciones que necesitan muchos cálculos. En general puedes acelerar sobre todo el procesado de imagen, audio y video, algunos tipos de simulaciones científicas, y modelado en 3D.
Como vemos están orientadas a las aplicaciones multimedia.

MMX (Multimedia eXtension)

Fueron las primeras instrucciones SIMD que se incluían en un PC. Se añaden registros muy grandes donde se guarda la información para ser tratada.
En este caso se usan 8 registros de 64 bits. En realidad lo que se hace es utilizar los registros de la unidad de ejecución de punto flotante con lo cual no puedes usarlos a la vez. Esta unidad de ejecución es la encargada de calcular cualquier operación sobre números reales que realices en tu equipo. Esto era una de sus mayores problemas. Además, sólo permitía operaciones con números enteros, lo cual limitaba mucho su aplicación.
Podías, por ejemplo, sumar 8 enteros de 8 bits en una sola instrucción.

3D Now

Es la repuesta de AMD al MMX de Intel, se trata de un conjunto de 21 nuevas instrucciones. Se soluciona uno de sus grandes problemas y puede manejar tantos números en punto flotantes y enteros.
Al igual que pasaba con MMX se utilizan los registros de la unidad de punto flotante.

SSE (Streaming SIMD Extensions)

Un micro que soporte SSE añade soporte para MMX también. Se añaden 70 nuevas instrucciones. Se crean nuevos registros independientes, en este caso se trabaja con 8 registros independientes de 128 bits. Estos pueden contener datos coma flotante de 32 bits.
Al trabajar con coma flotante de 32 bits, que se denomina simple precisión, puedes por ejemplo sumar 4 números usando una sola instrucción.

SSE2, SSE3, SSSE3 y SS4

Estás son las características de los conjuntos de instrucciones que siguieron a SSE:
  • SSE2. Añade la posibilidad de usar otros tipos de datos como enteros en los registros o incluso coma flotante de doble precisión que ocupan 64 bits. Se añaden las operaciones MMX para que se puedan usar en los nuevos registros.
  • SSE3. Se añaden funciones de procesado de señal y de control de procesos.
  • SSSE3. Añade 16 nuevas instrucciones para permutar datos.
  • SSE4. Se subdivide en 2 grupos SSE4.1 con 47 instrucciones y SSE4.2 con 7. Se añaden algunas instrucciones que no son específicas de aplicaciones multimedia. Digamos que para este desarrollo Intel contacto con desarrolladores para saber el tipo de instrucciones que más merecería la pena implementar.
  • SSE4a. Subconjunto del anterior, formado por 4 operaciones que esta presente en algunos procesadores AMD.

AVX (Advanced Vector eXtensions)

La historia de las instrucciones es una guerra entre cual implementar y cual no entre Intel y AMD. Intel ha mejorado más la arquitectura en los últimos años luego ha tenido posibilidad de añadir un conjunto más rico de instrucciones.
AVX apareció por primera vez en los Sandy Bridge y su característica más destacada es que añade varios registros de 256 bits. Las instrucciones SSE comparte la parte baja de estos. Se diseña de tal manera que las instrucciones puedan trabajar con 512 o 1024 bits en el futuro.
Debido al tamaño de los registros se tratan como vectores en vez de cómo datos. Esto conlleva que las operaciones sean más eficientes. Podemos obtener mejoras del doble de rendimiento que cuando usábamos SSE.
Para poder disfrutar de ellas, aparte de tener un micro que las soporte necesitas tenerWindows 7 SP1.

AVX2

Este es un nuevo conjunto de instrucciones que aparecerá en la próxima versión de la arquitectura de Intel denominada Hasswell, la arquitectura de sus micros Ivy Bridge.