Você está na página 1de 18

Universidad de Guadalajara

Centro Universitario de Ciencias Exactas e Ingenieras


Divisin de Electrnica y Computacin

INGENIERA EN COMPUTACION
Arquitectura de computadoras Avanzada
CLAVE: CC409 SEC: D02

Profesor: Juan Jos Meza Tarea No. 3 PARALELISMO A NIVEL DE INSTRUCCIONES, Y PROCESADORES SUPERESCALARES

Integrantes del equipo:


Lazcano Vargas, Delfino Ros Martnez, Laura Rojo Medina, Javier Cdigo: 212293291 Cdigo: 304447034 Cdigo: 207186169

Paralelismo a nivel de instrucciones, y procesadores superescalares

Un procesador superescalar es aquel que usa mltiples causes de instrucciones independiente. Cada cauce consta de mltiples etapas, de modo que puede tratar varias instrucciones a la vez. El hecho de que haya carios causes introduce un nuevo nivel de paralelismo, permitiendo que haya varios flujos de instrucciones se procesen simultneamente. Tpicamente puede captar varias instrucciones a la vez y, a continuacin, intenta encontrar instrucciones cercanas que sean independientes entre si y puedan, por consiguiente, ejecutarse en paralelo. El procesador puede eliminar algunas dependencias inecesarias mediante el uso de registros adicionales y el renombramiento de las referencias a registros en el codigo original. En los procesadores RISC puros emplean con frecuencia saltos retardados para maximizar la utilizacion del cauce de instrucciones, este metodo es menos apropiado para las maquinas superescalares, la mayoria de las maquinas superescalares emplean metodos tradicionales de prediccion de saltos para aumenta su rendimiento. Una implementacin superescalar de la arquitectura de un procesador es aquella en la que las instrucciones comunes (aritmetica entera y de coma flotante, cargas, almacenamietos y bifurcaciones condicionales) pueden iniciar su ejecucin simultneamente y ejecutarse de manera independiente. Estas implementaciones plantean complejos problemas de diseo relacionado con el cauce de instrucciones. El diseo superescalar aparece en escena muy cerca de la arquitectura RISC. Aunque la arquitectura de repertorio de instrucciones simplificado de una maquina RISC se preste

fcilemente a utilizar tcnicas superescalares, la aproximacin superescalar se puede usar tanto en una arquitectura RISC como en una CISC. 13.2 Visin de conjunto El trmino superescalar, acuado en 1987 (AGER87), hace referencia a una mquina diseada para mejorar la velocidad de ejecucin de las instrucciones escalares. En la mayora de las aplicaciones, la mayor parte de las operaciones se realizan con cantidades esclares. As pues, la aproximacin superescalar representa el siguiente paso en la evolucin de los procesadores de uso general de altas prestaciones. Lo esencial del enfoque superescalar es su habilidad para ejecutar instrucciones de manera independiente en diferentes causes. El concepto puede llevarse ms lejos, permitiendo que las instrucciones se ejecuten en un orden diferente al del programa (ver figura 13.1). Hay mltiples unidades funcionales, cada una de las cuales est implementada como un cauce segmentado, que admiten la ejecucin en paralelo de varias instrucciones. En este ejemplo, dos operaciones enteras, dos de coma flotante y una de memoria (carga o almacenamiento), pueden estar ejecutndose al mismo tiempo.

Imagen 13.1 Organizacin superescalar usual (COME95). Tabla 13.1 Incrementos de velocidad referenciados para maquina del tipo superescalar.

La tabla anterior presenta las mejoras en velocidad reseadas. Las diferencias en los resultados se deben, tanto a las diferencias en el hardware de las mquinas simuladas, como a las de las aplicaciones que se probaron.

Superescalar frente a supersegmentado. Un trmino acuado en 1988 (JOUP88), la supersegmentacin aprovecha el hecho de que muchas etapas del cauce realizan tareas que requieren menos de la mitad de un ciclo de reloj. De este modo, se dobla la velocidad de reloj, interna, lo que permite la realizacin de dos tareas en un ciclo de reloj externo. Un ejemplo de esta aproximacin lo tenemos en el MIPS R4000. La parte superior del diagrama (ver figura 13.2) ilustra un cauce normal, usado como base de la comparacin. El cauce base emite una instruccin por ciclo de reloj, y puede ejecutar una etapa del cauce en cada ciclo. El cauce tiene cuatro etapas: captacin de instruccin, decodificacin de la operacin, ejecucin de la operacin y escritura del resultado. La etapa de ejecucin se ha destacado con una trama por motivos de claridad. Aunque se ejecuten varias instrucciones concurrentemente, solo hay una instruccin en la etapa de ejecucin en un determinado instante. Parte del diagrama muestra una implementacin supersegmentada que es capaz de ejecutar dos etapas del cauce por ciclo de reloj. Una forma alternativa de enfocar esto consiste en que las funciones realizadas en cada etapa se pueden dividir en dos parte no solapadas, y que cada una se ejecuta en medio ciclo de reloj. Se dice que una implementacin de un cause supersegmentado que se comporta de esta forma, es de grado 2. Al fin la parte inferior del diagrama muestra una implementacin superescalar capaz de ejecutar en paralelo dos instrucciones en cada etapa. Naturalmente, tambin son posibles implementaciones supersegmentadas y superescalares de mayor grado. Supersegmentadas y superescalares (ver figura 13.2) ejecutan el mismo nmero de instrucciones en el mismo tiempo cuando funcionan de forma ininterrumpida. El procesador supersegmentado se queda atrs con respecto al procesador superescalar al comienzo del programa y en cada destino de un salto.

Figura 13.2 Comparacin de las aproximaciones superescalar y supersegmentada.

Limitaciones La limitacin superescalar depende de la habilidad para ejecutar mltiples instrucciones en paralelo. La expresin paralelismo a nivel de instrucciones se refiere al grado en el que, en promedio, las instrucciones de un programa se pueden ejecutar en paralelo. Para maximizar el paralelismo a nivel de instrucciones, se puede usar una combinacin de optimizaciones realizadas en el compilador y de tcnicas de hardware. Limitaciones fundamentales del paralelismo a las que el sistema tiene que enfrentarse (JOHN91) enumera cinco limitaciones: Dependencia de datos verdadera. Dependencia relativa al procedimiento Conflictos en los recursos Dependencia de salida Antidependencia

En lo que resta de esta seccin examinamos las tres primeras limitaciones. El estudio de las dos ltimas debe esperar a algunos desarrollos de la siguiente seccin. Dependencia de datos verdadera Consideremos la siguiente secuencia: add r1. r2 r1 ; cargar el registro r1 con el contenido de r2 ms el contenido de r1 ; cargar el registro r3 con el contenido r1

move r3.

La segunda instruccin se puede captar y decodificar, pero no se puede ejecutar hasta que finalice la ejecucin de la primera instruccin. El motivo es que la segunda instruccin necesita un dato producido por la primera instruccin, a esta situacin tambin es llamada dependencia de flujo o dependencia escritura/lectura. La figura 13.3 ilustra esta dependencia en una mquina superescalar de grado 2. Si no hay dependencias, se puede captar y ejecutar dos instrucciones en paralelo. En caso de que exista dependencia de datos entre la primera y la segunda instruccin se retrasa la segunda instruccin tantos ciclos de reloj como sea necesario que todos sus valores de entrada estn disponibles. Un procesador tpico tarda dos o ms ciclos en realizar una carga desde memoria, debido al tiempo de acceso a memoria o cache externas al chip. Una forma de compensar este retraso consiste en que el compilador reordene las instrucciones de tal modo que una o ms instrucciones posteriores que no dependan de la carga desde memoria puedan empezar a fluir a travs del cauce. Este esquema es menos efectivo en el caso de un cauce superescalar, las instrucciones independientes que se ejecutan durante la carga se ejecutan probablemente en el primer ciclo de est dejando al procesador sin nada que hacer hasta que concluya la carga.

Figura 13.3 Efecto de las dependencias. Dependencias relativas al procedimiento Como hemos visto, este tipo de dependencia relativa al procedimiento tambin afecta a un cauce escalar. Adems las consecuencias para un cauce superescalar son ms graves ya que se pierde un mayor nmero de oportunidades de comenzar a ejecutar instrucciones en cada ciclo de retardo.

Si se usan instrucciones de longitud variable, surge otro tipo de dependencia relativa al procedimiento. Puesto que no se conoce la longitud de una instruccin concreta esta ha de decodificarse al menos parcialmente, antes de captar la siguiente instruccin. Ello impide la captacin simultnea necesaria en un cauce superescalar. Esta es una de las razones por las que las tcnicas superescalar se aplican ms fcilmente a arquitecturas RISC o similares que tienen una longitud de instruccin fija. Conflictos en los recursos Conflicto en un recurso es una pugna de dos o ms instrucciones por el mismo recurso al mismo tiempo. Esos son las memorias, las caches, los buses, los puertos del banco de registros y las unidades funcionales (ejemplo, un sumador de la ALU). Desde el punto de vista del cauce, un coonflicto en los recursos presenta el mismo comportamiento que una dependenci de datos (figura 13.3). Pero existen diferencias, los conflictos en los recursos pueden superarse duplicando estos, mientras que una dependencia dato verdadero no se puede eliminar. Adems, cuando una operacin tarda mucho tiempo en finalizar los conflictos en los recursos se pueden minimizar segmentando la unidad funcional apropiada. 13.2 cuestiones relacionadas con el diseo Paralelismo a nivel de instrucciones y paralelismo de la maquina (JOUP89a) hace una importante distincin entre dos conceptos relacionados; el paralelismo a nivel de instrucciones y el paralelismo de la maquina. Existe paralelismo a nivel de instrucciones cuando las instrucciones de una secuencia son independientes y, por tanto, pueden ejecutarse en paralelo solapndose. El paralelismo a nivel instrucciones depende de la frecuencia de dependencias de datos verdaderas y dependencias relativas al procedimiento que haya en el cdigo. Estos factores dependen a su vez de la arquitectura del repertorio de instrucciones y de la aplicacin. El paralelismo a nivel instrucciones depende tambin de lo que (JOUP89a) llama espera de una operacin, en el tiempo que transcurre de una instruccin posterior. La espera determina cunto retardo causar una dependencia de datos o relativa al procedimiento. El paralelismo de la mquina es una medida de la capacidad del procesador para sacar partido al paralelismo a nivel instrucciones. El paralelismo de la maquina depende del nmero de instrucciones que pueden captarse y ejecutarse al mismo tiempo, y de la velocidad y sofisticacin del mecanismo que usa el procesador para localizar instrucciones independientes. Un programa puede no tener el suficiente nivel de paralelismo a nivel de instrucciones como sacar el mximo partido al paralelismo de la mquina. El empleo de una arquitectura con instrucciones de longitud fija, como en un RISC, aumenta el paralelismo a nivel instrucciones. Por otra parte, un caso paralelismo de la mquina limitar las prestaciones, sin que importe la naturaleza del programa.

Polticas de emisin de instrucciones El paralelismo no es sencillamente una cuestin de tener mltiples rplicas de cada etapa del cauce. El procesador, adems tiene que ser capaz de identificar el paralelismo a nivel de instrucciones, y organizar la captacin, decodificacin y ejecucin de las instrucciones en paralelo. (JOHN91) utiliza el trmino emisin de instrucciones para referirse al proceso de iniciar la ejecucin de instrucciones en las unidades funcionales del procesador, y el trmino de poltica de emisin de instrucciones para referirse al protocolo usado para emitir instrucciones. El procesador intenta localizar instrucciones ms all del punto de ejecucin en curso, que puedan introducirse en el cauce y ejecutarse. Con respecto a esto, son importantes tres ordenamientos. El orden en que se captan las instrucciones. El orden en que se ejecutan las instrucciones. El orden en que las instrucciones actualizan los contenidos de los registro y de las posiciones de memoria. Para optimizar la utilizacin de los diversos elementos del cauce, el procesador tendr que alterar uno o ms la utilizacin de estos rdenes con respecto al orden que se encontrara en una ejecucin secuencial estricta. La nica restriccin que tiene el procesador es que el resultado debe ser correcto. De este modo, el procesador debe acomodar las diversas dependencias y conflictos discutidos antes. Podemos agrupar las polticas de emisin de instrucciones de los procesadores superescalares en las siguientes categoras. Emisin en orden y finalizacin en orden Emisin en orden y finalizacin en desordenada Emisin desordenada y finalizacin en desordenada. Emisin en orden y finalizacin en orden La poltica de emisin de instrucciones ms sencilla es emitir instrucciones en el orden exacto en que lo hara una ejecucin secuencial (emisin en orden), y escribir los resultados en este mismo orden (finalizacin en orden). La figura 13.4 ofrece un ejemplo de esta poltica. Suponemos un cauce superescalar capaz de captar y decodifica dos instrucciones a la vez con tres unidades funcionales independientes, y con dos copias de la etapa de escritura del cauce. El ejemplo supone las siguientes restricciones para un fragmento de cdigo de seis instrucciones.

(a) Emisin en orden y finalizacin en orden

(b) Emisin en orden y finalizacin en desordenada

(c) Emisin desordenada y finalizacin en desordenada. Figura 13.4 Polticas de emisin y finalizacin de instrucciones en un cauce superescalar.

I1 necesita dos ciclos para ejecutarse I3 e I4 compiten por la misma unidad funcional I5 depende de un valor producido por I4 I5 e I6 compiten por una unidad funcional.

Las instrucciones se captan de dos en dos y pasan a la unidad de decodificacin. Como las instrucciones se captan por parejas, las dos siguientes instrucciones tienen que esperar hasta que la pareja de etapas de decodificacin del cauce se encuentre vaca. Para garantizar la finalizacin

necesita ms de un ciclo para generar un resultado, la emisin de instrucciones se detiene temporalmente. Emisin en orden y finalizacin en desordenada Se usa en los procesadores RISC escalares para mejorar la velocidad de las instrucciones que necesitan muchos ciclos. La figura 13.4b ilustra su uso en un procesador superescalar. La I2 se puede ejecutar hasta su conclusin antes de que acabe I1. Ello permite a I3 terminar antes, con el resultado neto de ahorrar un ciclo. Aparte de las limitaciones anteriores surge una nueva dependencia, a la cual nos referimos anteriormente como dependencia de salida (tambin llamada dependencia escritura-escritura). El siguiente fragmento de cdigo ilustra esta dependencia (<<op>> representa cualquier operacin). I1: I2: I3: I4: R3 < ----R3 op R5 R4< ----R3 - 1 R3 < ----R5 + 1 R7< ----R3 op R4

La finalizacin desordenada necesita una lgica de emisin de instrucciones ms compleja que la finalizacin en orden. Adems, es ms difcil ocuparse de las instrucciones y excepciones. Cuando ocurre una interrupcin, la ejecucin de instrucciones se suspende en el punto actual, para reanudarse posteriormente. El procesador debe asegurar que la reanudacin tiene en cuenta que, en el momento de la interrupcin, algunas instrucciones posteriores a la instruccin que provoc dicha interrupcin haber finalizado ya. Emisin desordenada y finalizacin en desordenada Para permitir la emisin desordenada, es necesario desacoplar las etapas del cauce de decodificacin y ejecucin. Esto se hace mediante un buffer llamado ventana de instrucciones. Con esta organizacin, cuando un procesador termina de decodificar una instruccin, coloca sta en la ventana de instrucciones. Mientras el buffer no se llene, el procesador puede continuar captando y decodificando nuevas instrucciones. Cuando una unidad funcional de la etapa de ejecucin queda disponible, se puede emitir una instruccin desde la ventana de instrucciones a la etapa de ejecucin. La figura 13.4c ilustra esta poltica. En cada se captan dos instrucciones y se lleva a la etapa de decodificacin. En cada ciclo, sujetas a la restriccin del tamao del buffer, se transfieren dos instrucciones desde la etapa de decodificacin a la ventana de instrucciones. En este ejemplo, es posible emitir la instruccin I6 delante de la I5 (recuerde que I5 depende de I4, pero I6 no). De este modo se ahorra un ciclo en etapas de ejecucin y de escritura, en el ahorro de principio a fin, comparado con la figura 13.4b es de un ciclo.

Una instruccin no puede emitirse si viola una dependencia o conflicto. La diferencia es que ahora hay ms instrucciones dispuestas a ser emitidas, reduciendo la probabilidad de que una etapa del cauce tenga que pararse. Adems surge una nueva dependencia, a la que nos referimos antes como antidependencia (tambin llamada dependencia lectura-escritura). El fragmento de cdigo considerado antes ilustra esta dependencia. I1: I2: I3: I4: R3 R3 op R5 R4 R3 + 1 R3 R5 + 1 R7 op R4

El trmino antidependencia se usa porque la restriccin es similar a la de la dependencia verdadera, pero a la inversa: en lugar de que la primera instruccin produzca un valor que usa la segunda instruccin, la segunda instruccin destruye un valor que usa la primera instruccin. Renombramiento de registros. Bsicamente el hardware del procesador asigna dinmicamente los registros que estn asociados con los valores que necesitan las instrucciones en diversos instantes de tiempo. Cuando se crea un nuevo valor de registro (es decir, cuando se ejecuta una instruccin que tiene un registro como aperando destino), se asigna un nuevo registro para ese valor. Las instrucciones posteriores que accedan a ese valor como operando fuentes en ese registro de esas instrucciones han de revisarse para referenciar el registro que contiene el valor que se necesita. De esto modo, las referencias a un mismo registro original en diferentes instrucciones, pueden referirse a distintos registros reales suponiendo diferentes valores.

La referencia a un registro sin el subndice alude a una referencia a un registro lgico encontrada en la instruccin. La referencia a un registro con el subndice alude a un registro hardware asignado para contener un nuevo valor. Cuando se hace una nueva asignacin para un registro lgico particular, se hace que las referencias de instrucciones posteriores a ese registro lgico como operando fuente, se refieran a l registro hardware asignado ms recientemente (reciente en trminos de la secuencia de instrucciones del programa). Paralelismo de la mquina La figura 13.5 muestra los resultados. En las dos grficas, el eje vertical corresponde al incremento de velocidad medio de la mquina superescalar respecto a la mquina escalar.

Figura 13.5 Incrementos de velocidad de diversos organizaciones de una mquina sin dependencias relativas al procedimiento. Las dos graficas combinadas ofrecen algunas conclusiones importantes. La primera es que probablemente no merece la pena aadir unidades funcionales sin renombramiento de registros. Hay algunas mejoras de poca importancia en las prestaciones, pero como el coste de una complejidad del hardware aumentada. Con el renombramiento de registros, que elimina las antidependencias y las dependencias de salida, se logran ganancias notables, aadiendo ms unidades funcionales. Observe no obstante, que hay una diferencia significativa en la ganancia alcanzable con el uso de una ventana de 8 instrucciones, frente a la que se consigue usando una ventana de instrucciones mayor. Esto indica que, si la ventana de instrucciones es demasiado pequea, las dependencias de datos impiden la utilizacin efectiva de las unidades funcionales adicionales; es importante que el procesador pueda mirar hacia delante bastante lejos en busca de instrucciones independientes que permitan aprovechar ms el hardware. Prediccin de saltos El Intel 80486 soluciona el problema captando, tanto la siguiente instruccin secuencial a la bifurcacin como la instruccin destino del salto. Sin embargo, como hay dos etapas en el cauce entre la precaptacin y la ejecucin, esta estrategia en un retardo de dos ciclos cuando se produce el salto. Con la llegada de las mquinas RISC, se explor la estrategia de salto retardado. Esta permite al procesador calcular el resultado de las instrucciones de bifurcacin condicional antes de que se

precapte cualquier instruccin inservible. Con este mtodo, el procesador siempre ejecuta la instruccin que sigue inmediatamente a la bifurcacin. Esto mantiene lleno el cauce mientras el procesador capta un nuevo flujo de instrucciones. Implementacin superescalar. En (SMIT95) se enumeran los siguientes elementos principales:

Figura 13.6 Representacin conceptual del procesamiento superescalar (SMIT95) Estrategias de captacin de instrucciones que capten simultneamente mltiples instrucciones a menudo prediciendo los resultados de las instrucciones de bifurcacin condicional y captando ms all de ellas. Estas funciones requieren la utilizacin de mltiples etapas de captacin y decodificacin y lgica de prediccin de saltos. Lgica para determinar dependencias verdaderas entre valores de registros, y mecanismos para comunicar esos valores a donde sean necesarios durante la ejecucin. Mecanismo para iniciar o emitir, mltiples instrucciones en paralelo. Recursos para la ejecucin en paralelo de mltiples instrucciones que incluya mltiples unidades funcionales segmentadas y jerarquas de memoria capaces de atender mltiples referencias a memoria. Mecanismos para entregar el estado del procesador en un orden correcto.

13.3 Pentium II

Figura 13.7 Cauce segmentando del Pentium II El funcionamiento del Pentium II se puede resumir como sigue: 1.- El procesador capta instrucciones de memoria en el orden en que aparecen en el programa esttico. 2.- Cada instruccin se traduce en un o ms instrucciones RISC de tamao dijo, conocidas como <<micrcooperaciones>>, o <<microops>> 3.- el procesador ejecuta las microops en una organizacin de cauce superescalar, de modo que las microops se pueden ejecutar desordenandas. 4.- el procesador entrega los resultados de la ejecucin de cada microop al conjunto de registros, en el orden de flujo del programa original. La arquitectura del Pentium II consta de una envoltura CISC con un ncleo RISC interno. Las microops RISC interna pasan a travs de un cauce con, al menos, 11 etapas (figura 13.7); en algunos casos, las microops necesitan mltiples etapas de ejecucin, con lo que se traduce en un cauce an ms largo. Unidad de captacin y decodificacin de instrucciones La figura 13.8es un esquema simplificado de la unidad captacin/decodificacin del Pentium II. La operacin de captacin consta de tres etapas encauzadas. En primer lugar, la etapa IFUI capta instrucciones desde la cache de instrucciones, una lnea (32 bytes) cada vez. La unidad <<Siguiente IP>> proporciona la direccin de la siguiente instruccin. Esta operacin no se calcula sencillamente incrementando el puntero, porque podra un salto a una interrupcin pendiente que moviese el puntero de posicin diferente. Para comprender el funcionamiento de IFU3 hemos de describir la primera etapa de la unidad de decodificacin de instrucciones, ID1. Esta etapa es capaz de manejar tres instrucciones mquina del Pentium II en paralelo. ID1 traduce casa instruccin mquina en de una a cuatro microops,

cada una de las cuales es una instruccin RISC de 118 bits. Observe que en comparacin, las mquinas RISC ms puras tiene una longitud de instruccin de slo 32 bits.

Figura 13.8 Unidad de captacin/decodificacin del Pentium II. Buffer de reordenacin El ROB es un buffer circular que puede contener hasta 40 microops, y que tambin contiene los 40 registros hardware. Cada entrada del buffer consta de los siguientes campos. Estado: indica si la microop est lista para ejecutarse, ha sido enviada a su ejecucin, o ha terminado de ejecutarse y est lista para su retiro. Direccin de memoria: direccin de la instruccin del Pentium que gener la microop Microop: la operacin propiamente dicha.

Registro alias: si la microop referencia uno de los 16 registros de la arquitectura, este campo redirecciona esa referencia a uno de los 40 registros hardware. Las microops entran al ROB en orden; despus son enviadas desde ROB a la unidad de envio/ejecucin sin orden. El criterio para que una microop sea enviada es que la unidad de ejecucin apropiada y todos los datos que requiera la microop se encuentre disponibles. Por ltimo, las microops se retiran del ROB en orden. Para lograr esto, las microops se retiran empezando por la ms antigua, despus de que cada microop se haya sealado como lista para ser retirada.

Unidad de envio /ejecucin La figura 13.9 es un esquema simplificado de la unidad de envio /ejecucin del Pentium II. La central de reservas (<<reservation station>>, RS) es responsable de recuperar microops del ROB, envindolas a su ejecucin y guardando los resultados de nuevo en el ROB. La RS buscar el ROB microops cuyo estado indique que la microop, dispone de todos sus operandos.

Unidad de retiro La unidad de retiro (<<retire unit >>, RU) va procesando el buffer de reordenacin para entregar los resultados de la ejecucin de instrucciones. El primer lugar, la RU debe tener presentes los fallos en las predicciones de salto, y las microops que se vayan ejecutando pero para las cuales los saltos precedentes no se vayan validando. Una vez que se termina que una microop se ha ejecutado y no es vulnerable a eliminacin debido a un fallo de prediccin, se marca como lista para ser retirada, cuando se ha retirado la instruccin del Pentium previa, y todas las microops de la siguiente instruccin se han marcado como listas para ser retiradas, la RU actualiza los registros de la arquitectura afectados por esta instruccin, y quita del ROB la microop. Prediccin de saltos En Pentium II usa una estrategia de prediccin de saltos basada en la historia de las ejecuciones recientes de instrucciones de bifurcacin. Se utiliza un buffer de destino de saltos que guarda informacin sobre las instrucciones de bifurcacin encontradas recientemente. Siempre que aparece una instruccin de bifurcacin en el flujo de instrucciones, se comprueba el BTB. El BTB del Pentium II est organizado como una cache asociativa por conjuntos de cuatro vas con 512 lneas. Cada entrada utiliza la direccin de la instruccin de salto como etiquetal la entrada tambin incluye la direccin destino de salto de la ltima vez que se produjo, y un campo de historia de 4 bits. El empleo de cuatro bits de historia contrasta con los 2 bits usados en el Pentium II puede tener en cuenta una historia ms larga para predecir saltos. Se emplea el algoritmo de Yeh (YEH91). Las bifurcaciones condicionales que no tienen historia en el BTB se predicen usando un algoritmo de prediccin esttica, de acuerdo con las siguientes reglas: En las instrucciones de bifurcacin que no son relativas al IP, se predice que se producir el salto si la bifurcacin es un retorno, y que no se saltar en cualquier otro caso En las bifurcaciones condicionales hacia atrs relativas a IP, se predice que se producir el salto. Esta regla refleja el comportamiento tpico en los bucles. En las bifurcaciones condicionales hacia delante, se predice que no se producir el salto.

Você também pode gostar