| Artículos | 01 ENE 2007

SSE 4

Tags: Histórico
Nueva extensión del juego de instrucciones X86
Eugenio Barahona.
Desde que Intel lanzó al mercado la primera familia de microprocesadores Pentium, cada relativamente poco tiempo ha añadido alguna extensión al juego de instrucciones clásico de la arquitectura x86. En el caso de los procesadores Pentium se añadió una serie de instrucciones adicionales a las que se englobó bajo la denominación MMX. Desde entonces han aparecido una serie de nuevas extensiones que han dotado a los procesadores de tipo x86 de instrucciones destinadas a optimizar la ejecución de determinados algoritmos o bien de un tipo concreto de aplicación.

Un aspecto común que han tenido todas las extensiones que han ido apareciendo a lo largo del tiempo ha sido la forma en la que trabajaban sobre los datos que trataban. De forma tradicional las instrucciones de lenguaje ensamblador realizaban cálculos sobre uno o dos operandos que residían o bien en un registro del procesador o en una posición de memoria. El tamaño de los operandos suele depender de la instrucción concreta que se ejecute, siendo relativamente corriente que existan variaciones de una misma instrucción, diferenciándose cada una de ellas en que tratan datos de distinto tamaño (byte, palabra de 16 bits, o palabra de 32 bits).
La extensión MMX introdujo en el mercado de procesadores x86 el concepto SIMD (Single Instruction Multiple Data, que podríamos traducir como instrucción única – datos múltiples). Todas las extensiones significativas que han sucedido al lanzamiento comercial de MMX se han basado en este mismo concepto, de manera que una sola instrucción trata simultáneamente varios datos, todos ellos del mismo tipo, que residen en un registro interno del procesador o en una determinada posición de memoria. Esta metodología de trabajo de las instrucciones, y la conocida escasez de registros de los procesadores compatibles con la arquitectura x86, hizo que Intel definiese una serie de registros adicionales, todos ellos con un ancho de 64 bits, que contendrían los datos sobre los que trabajarían las instrucciones MMX.
Pero, ¿cómo introducir en la arquitectura nuevos registros consiguiendo además una total compatibilidad con el software ya comercializado? La solución vino de la mano del coprocesador matemático que está integrado en los procesadores de Intel desde la aparición del primer Pentium. Dicho coprocesador dispone de un total de ocho registros de coma flotante de 80 bits, de los que 64 bits se dedican a la base y otros 16 al exponente. Intel decidió usar los 64 bits de la base de cada uno de los ocho registros de coma flotante para definir 8 registros, de 64 bits cada uno, que se usarían desde las instrucciones MMX. Las instrucciones que almacenan en la pila y recuperan desde ella el estado del coprocesador matemático durante los cambios de contexto servirían también para almacenar el contenido de los registros MMX, ya que en realidad no existían nuevos registros físicos, sino que sobre la base de los registros de coma flotante se almacenaba el contenido de los nuevos registros MMX. Podría decirse que el nombre de los nuevos registros MMX era un alias mediante el que simplemente el software haría referencia a la parte física que se corresponde con la base de los registros de coma flotante del coprocesador matemático.
El concepto en el que se basaba MMX se extendió posteriormente con la aparición de las extensiones de tipo SSE, las cuales, a diferencia de MMX que sólo trabajaba sobre datos enteros, trataban información en coma flotante. La serie de extensiones SSE supuso además la introducción en la arquitectura x86 de nuevos registros físicos de 128 bits dedicados en exclusiva a dar soporte a la ejecución de las nuevas instrucciones que se introducían, de forma que los registros de coma flotante del coprocesador matemático no tuviesen un doble papel.
En la tabla que aparece a continuación puede observarse la cronología de introducción de nuevas extensiones del juego de instrucciones que Intel ha realizado.

Fundamentos de SSE4
Si bien esta nueva extensión del juego de instrucciones tiene algunas características similares a anteriores extensiones de la familia SSE, lo cierto es que además introduce un nuevo concepto que hasta el momento no había aparecido en ningún procesador compatible x86: los aceleradores para aplicaciones concretas. Esta característica hace referencia a la inclusión en el microprocesador de hardware dedicado a la ejecución, de la forma más rápida posible, de una determinada función.
Según Intel, SSE4 es la extensión del juego de instrucciones más importante desde la aparición de SSE2, disponiendo de instrucciones de vectorización para compiladores y de nuevas instrucciones para el procesamiento de cadenas. Estas nuevas instrucciones harán su aparición en el mercado de la mano de la generación de procesadores fabricados con tecnología de 45 nanómetros que Intel presentará probablemente a finales de 2007, si bien ya se sabe que el fabricante ya dispone de los primeros prototipos de este nuevo procesador que internamente Intel lo denomina Penryn.
Es posible que la nueva familia de procesadores de 45 nanómetros también suponga la mejora del rendimiento de extensiones anteriores del juego de instrucciones. Esto ya sucedió con el lanzamiento de la arquitectura Core, que supuso la ejecución en un único ciclo de reloj de gran parte de las instrucciones de tipo SSE2, lo que en la práctica hizo posible doblar el rendimiento que se obtenía al utilizar dichas instrucciones.
Las instrucciones de vectorización para compiladores de que dispone SSE4 realizan operaciones fundamentales que sirven de base para implementar operaciones más complejas. Entre las nuevas capacidades se incluyen instrucciones mejoradas para el tratamiento de datos en formato entero y en coma flotante, soporte para operaciones sobre datos empaquetados de tipo DWORD y QWORD, nuevas instrucciones de coma flotante de precisión simple, manipulación rápida de datos residentes en registros y la mejora del rendimiento de las instrucciones que trabajan sobre datos que residen en memoria. El tipo de aplicaciones que más se beneficiarán de SSE4 serán las de procesamiento de imagen, gráficos, procesamiento de vídeo, generación de gráficos en dos y tres dimensiones, multimedia, juegos y algoritmos que hagan uso intensivo de la memoria.

Tratamiento de cadenas
Esta parte de las nuevas instrucciones de SSE4 proporciona nuevas capacidades de tratamiento de texto y de cadenas que mejorarán el rendimiento de diversos algoritmos de procesamiento de datos, búsqueda y de prácticamente cualquier otra operación de tratamiento de información basada en el uso de texto. Se incluyen instrucciones dedicadas a efectuar comparaciones de cadenas empaquetadas que pueden ejecutar varias operaciones de comparación y búsqueda en una sola instrucción.
De forma general puede decirse que cada una de las nuevas instrucciones dispone de innovadoras capacidades de procesamiento de cadenas capaces de sustituir a operaciones en las que anteriormente era necesario utilizar varias instrucciones distintas para conseguir el mismo resultado.
Las aplicaciones que se beneficiarán de estas nuevas instrucciones son todas aquellas que han uso de bases de datos, búsqueda sobre bloques de texto, librerías de procesamiento de cadenas, detección de virus, análisis y reconocimiento de palabras clave de lenguajes de programación y

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información