1. Introducción
2. Características Técnicas
3. Unidad de Búsqueda y Decodificación
4. Unidad de Despacho y Ejecución
5. Unidad de Interfaz con el Bus
6. Bibliografía
En Marzo de 1999 apareció en el mercado el Pentium III, conocido en la etapa de proyecto como Katmai. Es un Pentium II mejorado, por lo que durante casi 2 años fue el microprocesador de bandera de Intel, pues, a las ventajas del Pentium II Xeon, incorpora nuevas instrucciones de microcódigo que mejoran la capacidad de manejo de 3-D (instrucciones Katmai). En un inicio el Pentium III se comercializó a 500 MHz, pero actualmente su velocidad supera el 1 GHz. Como miembro de la familia de procesadores P6, generación de procesadores que le sucedió a la línea Pentium de Intel se caracteriza por la implementación de la microarquitectura de ejecución dinámica, la cual incorpora una única combinación de la predicción de salto múltiple, análisis del flujo de datos y la ejecución especulativa. Esto hizo posible que la familia P6 tuviera un mayor rendimiento que la familia Pentium mientras mantenía la compatibilidad binaria con la arquitectura de los procesadores anteriores de Intel.
La potencia de un procesador Intel® Pentium III, brinda desempeño y confiabilidad, que es mejor para la mayor parte de los consumidores y usuarios de negocios, a continuación las características que especifican el procesador Pentium III.
- Visualización y manipulación de imágenes de mayor resolución y calidad.
- Vídeo MPEG2 y sonido de alta calidad, y codificación y decodificación MPEG2 simultáneas.
- Gran parte de los procesadores Intel Pentium III vienen equipados con una cache de transferencia avanzada, y un avanzado sistema de almacenaje intermediario para alcanzar los requisitos de datos que requieren gran ancho de banda en los ambientes de hoy (tratamiento de imagen, CAD, Windows NT).
Arquitectura de ejecución dinámica en Pentium III
El mecanismo de ejecución fuera de orden llamado "Ejecución Dinámica incorpora tres conceptos importantes:
Puede afirmarse que la ejecución dinámica elimina las limitaciones del empleo de una secuencia lineal de instrucciones entre las fases de búsqueda y ejecución tradicionales. Esta permite decodificar instrucciones que se encuentren en múltiples niveles de ramificaciones para mantener el pipeline de instrucciones lleno. También permite la ejecución de instrucciones fuera de orden para mantener las unidades de ejecución de instrucciones del procesador corriendo a toda capacidad. Finalmente entrega los resultados de las instrucciones ejecutadas en el orden original del programa para mantener la integridad de los datos y la coherencia del programa sobresaliente de ejecución fuera de orden, optimizando el uso de las unidades de ejecución, todo esto se logra con la implementacion por hardware de la arquitectura que garantice la Ejecución Dinámica y a la cual hacemos referencia seguidamente.
La microarquitectura de un superpipeline con características multietapas, el cual trata de trabajar menos por etapa de pipeline para un numero de 20 etapas 33 % menos que en el procesador Pentium, lo que ayuda a lograr un mayor rango del reloj en el proceso. Esta microarquitectura elimina la secuencia tradicional entre las fases de búsqueda y ejecución y amplia el ancho de la ventana de instrucciones con la utilización de la piscina de instrucciones. Esto le permite al procesador tener mucho mas visibilidad dentro del flujo de instrucciones del programa en la fase de ejecución lo que mejora la planificación. Esto necesita de una mayor eficiencia del procesador en la fase de búsqueda y decodificación en términos de la predicción del flujo del programa. Una planificación optimizada necesita la fase de ejecución que es reemplazada por fase doble "despacho /ejecución" y la fase de "retiro". Esto permite que las instrucciones sean comenzadas en cualquier orden pero que siempre sean completadas en el orden original del programa, por lo que se puede considerar tres mecanismos acoplados con una piscina de instrucciones como se muestra en la figura.

A continuación una muestra detallada de cada una de las unidades que garantizan la ejecución dinámica.
3. Unidad de Búsqueda y Decodificación

En esta unidad la cache L1 es una cache de instrucción local. La unidad Next_IP (próximo índice) suministra el índice de la instrucción de la cache L1, basado en las entradas desde la Tabla de destino de Saltos BTB, estado
Lazo/Interrupción y de las indicaciones de perdida de la predicción del salto desde la unidad de la sección de ejecución de enteros.
La cache de instrucción L1 busca la línea de cache correspondiente y el índice de la próxima línea desde Next_IP y presenta 16 bytes alineados al decodificador. Los bytes prebuscados son rotados así que estos están ajustados para el decodificador de instrucciones (ID). El comienzo y el final de las instrucciones son marcados.
Los tres decodificadores paralelos aceptan este flujo de bytes marcados, y proceden a encontrar y decodificar las instrucciones contenidas allí dentro. El decodificador convierte las instrucciones en µop de tres elementos (dos fuentes lógicas y un destino lógico por µop.
Muchas instrucciones de la arquitectura Intel son convertidas directamente en µops sencillas, alguna instrucciones son decodificadas en de una a cuatro µops y las instrucciones complejas requieren microcodigos (Secuenciador de instrucciones microcodigo). Este microcodigo es un conjunto de secuencias preprogramadas de las µops normales. Las µops están en una cola y son enviadas a la unidad Tabla de Registro de Alias (RAT), donde los registros lógicos son convertidos en registros físicos en la familia P6 los registros físicos y el estado de asignación el cual adiciona información del estado a las µops y las introduce en la piscina de instrucciones. La piscina de instrucciones esta implementada como un arreglo de una
capacidad de memoria direccionable llamado Buffer de Reordenamiento (ROB).
Durante cada ciclo de reloj pueden ser decodificadas hasta tres macroinstrucciones en el primer estado de decodificación del pipeline. Sin embargo si las instrucciones son complejas o son de mas 7 bytes entonces el decodificador esta limitado a decodificar algunas instrucciones. Los decodificadores pueden decodificar:
Se tienen tres decodificadores. El primer decodificador es capaz de decodificar una macroinstruccion de la arquitectura Intel de cuatro o menos µops en cada ciclo de reloj. Los otros dos decodificadores pueden decodificar cada uno una instrucción de la arquitectura Intel de una µop en cada ciclo de reloj. En general:
4. Unidad de Despacho y Ejecución
La unidad de Despacho selecciona las µops desde la piscina de instrucciones dependiendo de su estado. Si el estado indica que una µop tiene todos sus operandos, entonces la unidad de Despacho chequea para ver si el recurso de ejecución necesitado por esa µop esta también disponible. Si ambas cosas son ciertas, la Estación de Reservación quita esa µop y la envía al recurso donde será ejecutada. Los resultados de la µop posteriormente son retornados a la piscina. Hay cinco puertos en la Estación de Reservación y los múltiples recursos son accesados como se muestra en la figura.

El procesador puede planificar hasta 5 µops por ciclo de reloj, una por cada puerto de recurso, pero lo más típico es 3 µops por ciclo de reloj. La actividad de este proceso de planificación es lo que se llama proceso fuera de orden; las
µops son despachadas a los recursos de ejecución estrictamente acorde al flujo de datos y a la disponibilidad del recurso sin tener en cuenta el orden original del programa. El algoritmo actual empleado por este proceso de planificación de la ejecución es vitalmente importante para el funcionamiento. Si una sola µop por recurso tiene los datos listos, entonces no es seleccionada. Pero si varios están disponibles este es seleccionado. La familia P6 utiliza el algoritmo de planificación pseudo(falso) FIFO.
Muchas de las µops son de saltos. En la predicción dinámica de saltos se tiene un historial de los últimos saltos ejecutados en Buffer de Destino de Saltos (BTB) que posee un buffer con 512 entradas de forma similar a las líneas de memoria cache en 32 conjuntos (set)de 16 entradas (way). Los bits del 4 al 8 dan la dirección de memoria donde se encuentra el salto, identifican cual de los conjuntos de entradas se utilizara para almacenar el historial de la instrucción de salto. Cuando se agota el espacio disponible en un conjunto de la BTB y es necesario introducir un nuevo salto, en el mismo se descarta una de las entradas. La primera vez que se ejecuta una instrucción de salto que no esta almacenada en la BTB se reserva espacio para mantener el historial de la misma. A menos que sea descartada por necesidad de espacio en el conjunto correspondiente de entradas en la BTB permanecerá en el mismo de forma indefinida. En la primera ejecución del salto la predicción dinámica de saltos no predice que dicha instrucción deba saltar y se continua interpretando el contenido posterior a la instrucción. Si ya existe una entrada en la BTB para la instrucción de salto, se predecirá el comportamiento de la misma dependiendo de sus ejecuciones anteriores. La predicción se hace en dos nivele diferentes. En primer lugar el microprocesador posee un registro de desplazamiento de 4 bits donde almacena el resultado de los últimos saltos guardando un ‘1’ si se llevo a cabo el salto y un ‘0’ si no fue así. Basándose en esta información, hay 16 posibles combinaciones en el historial de un salto.
La BTB predecirá correctamente muchos de estos saltos pero no podrá predecirlos todos correctamente. Considerando una BTB que está prediciendo correctamente el salto dirigida hacia atrás al final del lazo; en el futuro ese lazo va a terminar, y cuando lo hace, ese salto será una perdida de la predicción. Las µops de saltos son etiquetadas (en orden en el pipeline) con su fallo a través de la dirección y el destino que se predijeron para ellos. Cuando el salto se ejecuta, lo que el salto realmente hizo se compara contra lo que el hardware de predicción dijo que haría. Si aquéllos coinciden, entonces el salto se retira en el futuro y el trabajo especulativamente ejecutado entre él y la próxima instrucción de salto en la piscina de instrucción es bueno. Pero si ellos no coinciden, entonces la Unidad de Ejecución de Salto (JEU) cambia el estado de todas las µops detrás del salto para eliminarlos de la piscina de la instrucción. En ese caso el destino del salto se entrega a la BTB que reinicia todo el pipeline con la nueva dirección asignada.
Unidad de Retiro

La Unidad de Retiro también verifica el estado de las µops en la piscina de instrucciones. Está buscando µops que se han ejecutado y pueden ser retiradas de la piscina. Una vez retiradas, la arquitectura original de las µops es escrita según la Arquitectura Intel de la instrucción original. La Unidad de Retiro no sólo avisa que µops están completas, sino que también debe re-imponer el orden del programa original en ellos. Esta también debe hacer esto ante las interrupciones, trampas, faltas, puntos de ruptura y perdida de las predicciones.
La Unidad de Retiro debe leer primero la piscina de instrucciones para encontrar a los candidatos potenciales para el retiro y determina cuales de estos candidatos son los próximos en el orden del programa original. Entonces escribe los resultados de este ciclo de retiro al Registro de Ficheros Retirados (RRF). La Unidad de Retiro es capaz de retirar 3 µops por ciclo de reloj.
5. Unidad de Interfaz con el Bus
Hay dos tipos de acceso a memoria: cargas y almacenamiento. Las cargas sólo necesitan especificar la dirección de memoria que va a ser accedida, el ancho de los datos, y el registro destino. Las cargas son codificadas en una sola µop.
El almacenamiento necesita proporcionar una dirección de memoria, el ancho del dato, y que los datos sean escritos. El almacenamiento por consiguiente requiera de dos µops, una para generar la dirección y una para generar los datos. Estas µops después tienen que recombinarse para completar el almacenamiento
El almacenamiento nunca se ejecuta especulativamente ya que no hay ninguna manera transparente de deshacerlos. Los almacenamientos nunca se reordenan entre ellos. Un almacenamiento se despacha cuando la dirección y los datos están disponibles y no hay ningún almacenamiento más viejo en espera de ser despachado

Un estudio de la importancia del reordenamiento del acceso a memoria concluyo que:
El Buffer de Ordenamiento de Memoria (MOB) permite cargas para pasar otras cargas y actúa como una Estación de Reservación y Buffer de Reordenamiento. Este mantiene suspendida las cargas y las almacena y las redespacha cuando desaparece una condición de bloqueo (dependencia o recurso).
El procesador Pentium III utiliza una arquitectura de Ejecución Dinámica que mezcla la ejecución fuera-de-orden y la ejecución especulativa con el hardware de renombramiento de registros y la predicción de saltos.
Éstos procesadores ofrecen un pipeline en orden que convierte las macroinstrucciones Intel 386 del procesador en simples µops , y un centro del procesador superescalar de tres vías fuera de orden que ejecuta las µops. El termino tres vías significa que utiliza técnicas de procesamiento paralelo que el µP esta habilitado para decodificar, despachar y completar la ejecución de tres instrucciones por ciclo de reloj, para manejar este nivel de instrucciones se utiliza un superpipeline de 11 estados con transferencia avanzada de caches. El pipeline del procesador esta dividido en cuatro secciones (primer nivel de cache, segundo nivel de cache, unidad de ejecución fuera de orden y sección de retiro). Las instrucciones y los datos son suministrados a estas unidades a través de la unidad de interfaz con el bus.
Varias unidades de ejecución pueden conectarse al mismo pipeline por ejemplo: una unidad de direcciones lógicas de enteros y una unidad de ejecución de punto flotante (de suma, de multiplicación, y de división) comparten un pipeline. La cache de entrelazado de puertos semiduales, con un puerto dedicado a cargas y el otro a almacenamiento.
La mayoría de las operaciones simples (ALU de enteros, suma de punto flotante, incluso la multiplicación de punto flotante pueden ser encausadas al pipeline de una a dos operaciones por ciclo de reloj. La división de punto flotante no puede ser encausada. Las operaciones de latencia largas pueden proceder en paralelo con operaciones de latencia corta.
En la ejecución fuera de orden la consideración más importante es hacer segura la cantidad suficiente de µops listas para la ejecución, la predicción correcta de ramificaciones y la decodificación rápida.
Resumen
El presente trabajo expone la implementación de esta técnica en este microprocesador como ultimo miembro de la familia de procesadores P6 para que Intel de paso a su nueva arquitectura.
El microprocesador Pentium III implementa la arquitectura de Ejecución Dinámica que es una innovadora combinación de tres técnicas de procesamiento diseñada para ayudar al procesador a manipular los datos más eficientemente. Éstas son la predicción de salto múltiple, el análisis del flujo de datos y la ejecución especulativa.
La ejecución dinámica hace que el procesador sea más eficiente manipulando datos en lugar de sólo procesar una lista de instrucciones. La forma en que los programas de software están escritos puede afectar al rendimiento del procesador. Por ejemplo, el rendimiento del software será afectado negativamente si con frecuencia se requiere suspender lo que se está haciendo y "saltar" a otra parte en el programa. También pueden producirse retardos cuando el procesador no puede procesar una nueva instrucción hasta completar la instrucción original. La ejecución dinámica permite al procesador alterar y predecir el orden de las instrucciones.
Palabras claves: Microprocesador Pentium III, ejecución dinámica, predicción de saltos, microoperaciones.
Trabajo enviado por:
Bárbara García Olivera
bgarcia[arroba]iga.cu
Mariuly González Rodríguez
Trabajos relacionados
Ver mas trabajos de Computacion |
|
Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.