| Artículos | 01 ABR 1997

¿Qué es un Pentium MMX?

Tags: Histórico
Eugenio Barahona.

Conozca los nuevos Pentium MMX desde el punto de vista del usuario final y desde el del programador interesado en desarrollar aplicaciones que usen esta tecnología.

Desde que Intel introdujo en el mercado su familia de microprocesadores 386 no se había producido ninguna modificación significativa en la arquitectura x86 de este fabricante. A medida que se iban introduciendo procesadores más potentes (486, Pentium y Pentium Pro), Intel introducía mejoras como frecuencias de reloj más elevadas, memoria caché integrada en el procesador, ejecución simultánea de dos instrucciones de enteros y una de coma flotante, predicción de saltos, etc. Sin embargo el conjunto de instrucciones básico de la arquitectura se mantenía prácticamente inalterable, lo cual si bien proporcionaba una compatibilidad total con el software desarrollado para los miembros más antiguos de la familia x86 estaba comenzando a limitar el incremento de rendimiento que en determinadas áreas se obtenía con los nuevos modelos de microprocesadores.

Por otra parte, desde hace ya algunos años, se observa en el mercado de software un incremento considerable de la cantidad de aplicaciones multimedia que se comercializan. Este tipo de aplicaciones tienen necesidades específicas que pueden verse satisfechas mediante modificaciones concretas de la arquitectura del microprocesador.

Precisamente esto último ha sido lo que ha hecho Intel, introducir en su gama Pentium, y en breve tiempo también en sus Pentium Pro, una serie de modificaciones especialmente diseñadas para incrementar significativamente el rendimiento de las aplicaciones denominadas multimedia. Estas modificaciones pueden dividirse en dos tipos: aquellas que no afectan al conjunto de instrucciones del procesador y las que sí lo afectan, ya que se añaden nuevas instrucciones.

Características generales

En los nuevos procesadores Pentium con tecnología MMX se ha introducido una serie de mejoras que hacen que se produzca un aumento de rendimiento incluso en aquellas aplicaciones que no utilizan el conjunto de instrucciones MMX. Sin duda alguna la modificación más importante en este sentido es la ampliación de la memoria caché incluida dentro del propio chip Pentium, es decir, en el encapsulado del microprocesador. Esta memoria caché se conoce como memoria interna de nivel 1 (Level 1) -la memoria caché de nivel 2 es la incluida en la placa madre del ordenador, mientras que la memoria externa es la memoria RAM normal-. A partir de ahora, siempre que hablemos de memoria interna estaremos haciendo referencia a esa memoria interna de nivel 1 incluida dentro del propio chip Pentium.

Los procesadores Pentium convencionales están dotados de una memoria caché interna de 16 KB, la cual se encuentra dividida en dos partes, de 8 KB cada una, destinadas a almacenar el código y los datos a los que el microprocesador accede con mayor frecuencia. En el caso de los Pentium con tecnología MMX se ha incluido un total de 32 KB de caché interna, dividida en 16 KB para código y otros tantos para datos.

Al haberse doblado la memoria caché interna el microprocesador tiene que realizar menos accesos a la memoria externa, con lo cual se aumenta significativamente el rendimiento. Además algunos tipos de aplicaciones multimedia, como la decodificación por software de vídeo en formato MPEG, realizan varias operaciones sucesivas sobre un mismo bloque de datos que suele tener un tamaño suficientemente pequeño como para estar contenido en la caché interna durante todo su procesamiento.

Otra de las mejoras hace referencia a la unidad de predicción de saltos, la cual hizo su primera aparición en la arquitectura x86 con el procesador Pentium. Durante la ejecución de un programa se producen saltos condicionales dependiendo de determinados resultados que son evaluados por el código de la aplicación. Estos saltos, si se ejecutan, implican el cálculo de una nueva dirección de memoria en la cual se reanudará la ejecución del programa. Tradicionalmente, en la arquitectura x86 este cálculo era bastante costoso en términos de ciclos de reloj. Con el procesador Pentium, la compañía Intel introdujo un buffer en el cual se almacenaban las direcciones de memoria de los saltos condicionales más recientemente realizados. Al tener ya calculada en dicho buffer la dirección de memoria de un determinado salto no se produce retardo alguno en la ejecución del programa. Esta característica acelera especialmente la ejecución de los bucles presentes en los programas. Los Pentium MMX disponen de un buffer de mayor capacidad para la unidad de predicción de saltos, lo cual ayuda a conseguir una mayor eficiencia de los programas.

Modificaciones en el conjunto de instrucciones

Con la tecnología MMX se han introducido una serie de nuevas instrucciones en el lenguaje ensamblador de la familia x86 encargadas de realizar distintos tipos de operaciones sobre los registros MMX. Estas instrucciones pueden dividirse en 7 categorías: instrucciones aritméticas, de comparación, de conversión, lógicas, de rotación, de transferencia de datos y la instrucción EMMS.

Algunos de estos tipos de instrucciones incluyen un comportamiento que difiere sustancialmente respecto al modo de funcionamiento de instrucciones similares del conjunto de instrucciones convencional de la arquitectura x86. Concretamente se ha incluido la denominada aritmética saturada. Cuando se ejecuta una instrucción de suma o resta con saturación se suman o se restan los operandos implicados en la operación pero el resultado se limita al rango definido dependiendo del tipo de datos. En la tabla de la figura 1 se aprecia mejor este efecto.

Dentro de las instrucciones aritméticas se incluyen instrucciones de suma y resta, con y sin signo, con saturación las cuales son capaces de operar sobre bytes y palabras (16 bits). También se incluye una instrucción de multiplicación capaz de realizar cuatro multiplicaciones y otra más que calcula simultáneamente cuatro multiplicaciones y suma el resultado de ellas por parejas para generar dos resultados de 32 bits.

Las instrucciones de comparación incluidas comparan una serie de bytes, palabras o dobles palabras almacenadas en registros MMX, o en memoria, y generan una máscara dependiendo del resultado de la operación. Esta máscara se puede utilizar posteriormente para, por ejemplo, poner a cero parte de un registro MMX o de un dato almacenado en memoria.

Las instrucciones de conversión se encargan de convertir un determinado tipo de dato soportado por los registros MMX en otro distinto. Por ejemplo la instrucción PACKSS convierte palabras con signo en bytes con signo o dobles palabras con signo en palabras con signo. Las instrucciones lógicas incluyen las típicas operaciones AND, OR y XOR pero, en esta ocasión, trabajan con operandos de 64 bits, los cuales pueden estar almacenados en registros MMX o en memoria. Los nemotécnicos de estas instrucciones son PAND, POR y PXOR. Se ha incluido una nueva instrucción, denominada PANDN, la cual realiza una operación NOT sobre el contenido del operando de destino y a continuación realiza un AND entre el operando que ha sido negado y el operando origen.

También contamos con instrucciones de rotación de bits, tanto de tipo lógico como aritmético. La diferencia entre ambas es que las rotaciones aritméticas conservan el bit de signo del dato al que afectan, mientras que las rotaciones lógicas insertan ceros en las posiciones de los bits que quedan vacíos. Las instrucciones de transferencia de datos se dividen en dos tipos: aquellas que transfieren 32 bits de datos entre los registros MMX y la memoria o entre los registros convencionales de la arquitectura x86 y los registros MMX (instrucción MOVD), y las que desplazan 64 bits de datos entre la memoria y el conjunto de registros MMX (instrucción MOVQ).

Por último encontramos

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