Vous êtes sur la page 1sur 143

CAPITULO 3

PROCESADORES SUPERESCALARES (I):


MICROARQUITECTURA Y PRINCIPIOS DE
FUNCIONAMIENTO
INTRODUCCIN
Procesadores superecalares . Se trata de procesadores
segmentados cuyas etapas se han diseado de forma que pueda
procesar mas de una instruccin por ciclo, incorporado en su
microarquitectura.
Un procesador superescalar varias instrucciones pueden estar
ejecutndose a la vez y puede terminar su ejecucin en un orden
distinto al que tienen en el cdigo.

Los procesadores superescalares y los VLIW disponen de un cause


en el que cada etapa pueden procesar mas de una instruccin
simultneamente.
Las diferencias que existen entre procesadores escalares y WLIW
radica en el procesamiento simultaneo de instrucciones en cada
etapa: se implantan en hardware(superescalares) o descansan en la
capacidad del compilador(procesadores (VLIW).
Ejecucin de una secuencia de cdigo DLX en un
procesador segmentado.
Ejecucin de una secuencia de cdigo DLX en un procesador segmentado
ilustrando la finalizacin desordenada
Una forma de mejorar el numero de instrucciones
procesadas por ciclo consiste en organizar el
procesador segmentado en varios cause que funcionen
en paralelo y de forma casi independiente.
la figura 3.3 muestra una microarquitectura
procesador segmentado capaz de procesar 2
instrucciones por ciclo(dispone de 2 causes
prcticamente independientes).
La forma usual de organizar la microarquitectura en los
procesadores superescalares se acerca mas a la figura
3.3b donde cada una de las etapas es capaz de procesar
varias instrucciones por ciclo.
figura 3.3a figura 3.3b
INTRODUCCION A PROCESADORES
SUPERESCALARES
Los primeros prototipos de procesadores superesclares fueron
estudios de IBM atreves de dos proyectos : cheetah y america.
El termino superescalar apareci por primera vez en un documento
interno de IBM relacionados con el proyecto america y mas tarde
DEC entro tambin a la investigacin de las maquinas
superescalares.
El primer procesador superescalar fue un procesador RISC de intel.
La arquitectura RISC fueron las primeras que se implementaron en
microarquitectura superescalar. Debido a la mayor complejidad
aparecieron procesadores con arquitectura CISC .
3.2. PARALELISMO ENTRE INSTRUCCIONES
(ILP) Y PARALELISMO DE LA MAQUINA

El mayor o menor grado de paralelismo entre las instrucciones


de un programa, es decir la mayor o menor facilidad para
encontrar en un programa instrucciones que puedan
procesarse simultaneamente, depende de la frecuencia con
que aparecen dependencias de datos y control.
En la figura (a) las instrucciones de la secuencia
no presentan
interdependencias y se podran ejecutar simultneamente. en
cambio en la figura (b) las instrucciones deben ejecutarse
secuencialmente .
Figura(a) Figura(b)

load r1 , r2(23) ; r1 = m(r2 + r3) add r3 , #r1 ; r3 = r3 + 1


add r3 , #1 ; r3 = r3 + r1 add r4 , r3 ; r4 = r4 + r3
add r4 , r5 ; r4= r4 + r5 St (r4) , r0 ; m(r4)= r0
El aprovechamiento de grado de paralelismo que posea una
secuencia de instrucciones depende de los recursos que
disponga el procesador . Esta capacidad para procesar
instrucciones en paralelo se puede denominar paralelismo del
procesador.
Este paralelismo viene determinado por el numero de
instrucciones puede procesarse al mismo tiempo en cada una
de las etapas del procesador , numero de instrucciones que
puede captarse, decodificarse, ejecutarse y escribir sus
resultados al mismo tiempo.
PROCESAMIENTO SUPERESCALAR DE
INSTRUCCIONES

Un procesador superescalar es un procesador segmentado que puede procesar


mas de una de sus etapas ( definicin que nos permitir distinguir entre un
procesador superescalar y un procesador VLIW).
Las instrucciones pasan en el orden en que se han captado a una cola desde
donde se introducen ordenadamente en la etapa de decodificacin
La etapa de captacin de instrucciones es capaz de leer es capaz de leer varias
instrucciones por ciclo .
Etapa de emisin(issue)as instrucciones decodificadas deben esperar a los
operandos y sus unidades funcionales que implementan la unidad funcional que
requieren.
ETAPAS DE UN PROCESADOR
SUPERESCALAR

Etapa de captacin de instrucciones (IF): es capas de leer varias instrucciones


por ciclo desde el nivel de cache mas elevado(cache L1).
Etapa de decodificacin : es la etapa donde se introducen ordenadamente las
instrucciones, tantas como dicha etapa sea capaz de decodificar por ciclo.
Etapa de emisin (issue): se encarga de determinar que instrucciones pueden
pasar a ejecutarse(teniendo en cuenta si sus operando y su unidad funcional
estn listos).
Etapa de ejecucin: se implementa atraves de las distintas unidades funcionales
que realizan las operaciones que codifican las instrucciones.
La etapa de escritura: es la que almacena los resultados en el banco de registros
del procesador.
En la figura proporciona un esquemas sencillo de la
organizacin de las etapas de un procesador superescalar.
CAPTACIN Y DECODIFICACIN EN
UN PROCESADOR SUPERESCALAR

En un procesador superescalar las instrucciones se captan y decodifican


el orden en que se decodifican puede no coincidir con el orden de las
instrucciones, ya que se encuentra en la posibilidad de aprovechar el
paralelismo entre instrucciones y el paralelismo disponible en el
procesador.
Cuando estn disponibles la unidad funcional que necesita una
instruccin y su operando entonces podra empezar a ejecutarse , as
podr ser capaza de identificar el paralelismo entre instrucciones (ILP) .
Cuando mas sofisticado sea el microprocesador menos tendr que
ajustarse en el orden en que las instrucciones se ejecutan y modifican los
registros al orden en que los registros se captan y decodifican
EN UN PROCESADOR SUPERESCALAR LAS
INSTRUCCIONES PODRAN EMITIRSE

Las instrucciones podra ejecutarse ordenadamente y


desordenadamente segn el orden de captacin y decodificacin
de instrucciones.
Emisin ordenada : se respeta el orden en que las instrucciones
se han ido introduciendo en la ventana de
instrucciones(instrucciones que se han ido decodificando y
coinciden con el orden del programa).
Emisin desordenada : no existe bloqueo ya que puede
emitirse todas las instrucciones que dispongan de sus
operandos y de una unidad funcional.
EJECUCIN DE UNA SECUENCIA DE INSTRUCCIN DLX EN UN
PROCESADOR SEGMENTADO
Problemas que se plantean en un procesador superescalar y las principales
estrategias :
Decodificacin paralela(predecodificacion).
Emisin paralela de instrucciones a las unidades funcionales(dependencia).
Ejecucin paralela en las distintas unidades funcionales.
Finaliza (o completa) el procesamiento de la instruccin
Deteccin y prediccin de saltos
Mantenimiento de la consistencia secuencial
3.3.1. DECODIFICACIN PARALELA Y
PRE DECODIFICACIN

En un procesador segmentado en la que hay una etapa de


decodificacin de la instruccin y la bsqueda de los
operandos(ID/OF).
En un procesador superescalar existen unidades de decodificacin
(ID) y de emisin de instrucciones (ISS,issue) separadas.
La unidad ID toma instrucciones de la cola donde las instrucciones
almacenadas, por parte de la etapa de IF y tras decodificarla las pone
en una estructura buffer (donde la unidad ISS la que indicara que
instrucciones pueden pasar ejecutarse y a que unidad funcional) .
La figura compara la estructura de etapas al comienzo de
un cause segmentado escalar y un cause segmentado
escalar.
En la etapa de pre decodificacin : se suele encargar de
determinar el tipo de instruccin con ello facilita la
identificacin posterior de los recursos que se van a necesitar .
Por ejemplo:
Caso de instruccin de saltos, se detecta que es una
instruccin de salto su procesamiento puede empezar antes
de que pueda ser decodificada.
Si en la pre decodificacin se obtiene informacin dela
unidad funcional que va usarse, favorece una emisin mas
rpida de la instruccin (cause entero y coma flotante).

En la etapa de pre decodificacin se le aade uno bits que


permiten acelerar la decodificacin en la etapa. Cantidad de bit
que se aaden estan entre 4 y 7 bit en la arquitectura RISC y
algunos mas en la arquitectura CISC.
FIGURA DE PREDECODIFICACION
3.3.2 EMISIN DE INSTRUCCIONES

Una vez captadas las instrucciones, se almacenan en una


cola en el mismo orden que se han captado. La etapa de
decodificacin toma varias instrucciones por ciclo segn
el orden en que se encuentran en la cola de instrucciones
luego de ello se escriben en una serie de estructuras
conocidas como ventanas de instrucciones.
VENTANA DE INSTRUCCIONES

Esta estructura se implementa a travs de una cola de


registros donde se almacenan las instrucciones que han
sido decodificadas ya que estn a la espera de ser
emitidas las unidades funcionales correspondientes.
Se encarga de determinar que instrucciones pueden
emitirse, una instruccin puede ser emitida cuando tiene
todos sus operandos disponibles y la unidad funcional
donde se procesar
VENTANA DE INSTRUCCIONES
En el caso de que, en un ciclo determinado haya ms
instrucciones disponibles para ser emitidas de las que
realmente pueden ser emitidas, la etapa de EMISION
aplica alguna poltica para seleccionar las instrucciones
que se van a emitir en ese ciclo.
Normalmente esa poltica tiene en cuenta el orden de las
instrucciones de la ventana de instrucciones, es decir el
orden de las instrucciones del programa.
Ventana de instrucciones y unidad
de emisin
Ventana de instrucciones
Tras ser decodificadas las instrucciones, lo que se deja en la
ventana de instrucciones ya no son instrucciones tal cual, sino
unas estructuras ms elaboradas que contienen toda la
informacin necesaria para la ejecucin de la instruccin.
Poltica de emisin
Si existe mas de una instruccin que puede ser ejecutada
Clasificacin

Alineamiento Orden

En orden
Alineada
Con bloqueo

No alineada Desordenada
Poltica de emisin
Alineada:
No pueden introducirse nuevas instrucciones en la
ventana de instrucciones hasta que esta no este
totalmente vaca. Es decir, hasta que no haya emitido
todas las instrucciones que en un ciclo anterior se
introdujeron en la ventana de instrucciones.
No alineada:
Mientras que exista un espacio en la ventana, se pueden ir
introduciendo nuevas instrucciones emitidas.
POLTICA DE EMISIN
En orden :
Se respeta el orden en que las instrucciones se han ido
introduciendo en la ventana de instrucciones. Orden en el
que las instrucciones se han ido decodificando, coincide
con el orden de las instrucciones en el programa.
Si una instruccin de la ventana de instrucciones no puede
emitirse, las instrucciones que le siguen tampoco podrn
emitirse.
Existe un bloqueo entre instrucciones.
Fuera de orden :
No existe bloqueo, ya que pueden emitirse todas las
instrucciones que dispongan de sus operandos y de una
unidad funcional del tipo apropiado.
poltica de emisin

Mximo rendimiento = emisin no alineada + emisin


desordenada
CARACTERSTICAS DE LA EMISIN DE
INSTRUCCIONES PARA ALGUNOS PROCESADORES
Ejemplo : emisin ordenada
Ejemplo : emisin DESORDENADA
Ejemplo : emisin ordenada
Ejemplo : emisin desordenada
ESTACIONES DE RESERVA

En muchas microarquitecturas superescalares es


frecuente que la ventana de instrucciones se distribuya en
varias estructuras que reciben el nombre de estaciones de
reserva
Consiste en que, en lugar de existir una nica ventana
desde donde se emiten las instrucciones a las distintas
unidades funcionales, existe una estructura, similar a la
ventana, pero especifica para cada unidad funcional o
para un conjunto homogneo de unidades funcionales.
ESTACIONES DE RESERVA
Estaciones de reserva

Distribucin de la ventana de instrucciones en varias


estructuras
Son similares a la ventana de instruccin pero especifica
para cada unidad funcional o para un conjunto de ellas
Con estaciones de reserva, las funciones de la etapa de
emisin se suelen repartir en : DECODIFICACION/EMISION Y
ENVIO
Variante con estacin de reserva
1. Las instrucciones decodificadas
deben pasan a la estacin de
reserva adecuada donde cada
instruccin debe esperar a que le
toque el turno de pasar a la unidad.

ENVIO

2. Determina que instrucciones de


la estacin de reserva tienen sus
operados disponibles y pueden
pasar a ejecutarse cuando haya una
unidad funcional apropiada
disponible.
ESTACIONES DE RESERVA: EJEMPLO DE
FUNCIONAMIENTO
Estaciones de reserva
Cada unidad funcional dispone de una estacin de
reserva o comparte una estacin de reserva con otras
unidades.
Si cada unidad funcional tienes su propia estacin de
reserva, no hace falta guardar informacin del tipo de
operacin a realizar y se ahorran algunos bits en cada
lnea de las estaciones de reservas, sin embargo esto
incrementa la complejidad de las estructuras de buses
necesarias para comunicar dichas estaciones con la
salida de las restantes UF u otras estructuras. Por otro
lado con estaciones de reserva se tienen menos lneas y
su gestin necesita un hardware menos costoso.
Organizacin de las estaciones de
reserva

ESTACIONES DE ESTACIONES ESTACIONES DE


RESERVA DE RESERVA RESERVA
INDIVIDUALES COMPARTIDAS CENTRALIZADA
-AMD KS -R1000 -INTEL PG
ENVIO DE INSTRUCCIONES:
Desde la estacin de reserva, las instrucciones se envan a la
unidad funcional cuando esta pueda ejecutar nuevas
instrucciones. Para el envi de instrucciones se aplican estas
polticas

REGLAS DE SELECCIN: se determina las instrucciones que


pueden enviarse, las instrucciones ejecutables.
REGLAS DE ARBITRAJE: si existen varias instrucciones
ejecutables, se enva la instruccin mas antigua entre las
ejecutables.
ENVIO DE INSTRUCCIONES:

ORDEN DE ENVIO: ordenadas(las instrucciones


ejecutables bloquean a las ejecutables), desordenadas, o
parcialmente ordenadas(se produce bloqueo solo entre
determinados tipos de instrucciones)
VELOCIDAD DE ENVIO: si una estacin de reserva solo
enva instrucciones a una nica unidad funcional puede
enviar una instruccin por ciclo como mximo. Pero si es
compartidad pos varias unidades funcionales puede
disearse para enviar varias instrucciones.
CAPTACION Y COMPROBACION DE
VALIDEZ DE OPERANDOS

Cuando se emplean estaciones de reserva existen dos polticas para


captar operandos en funcin del momento en que se realizara a cabo
dicha captacin.

Captacin en la EMISION

Captacin en el ENVIO
CAPTACION Y COMPROBACION DE
VALIDEZ DE OPERANDOS
Si la captacin se produce en la emisin el envi es mas
rpido.
Cada uno de los registro del banco de registros tiene un
bit adicional que recibe el nombre de BIT DE VALIDEZ, el
cual permite indicar si el dato almacenado en dicho
registro esta disponible.

1 DISPONIBLE

0 NO DISPONIBLE
Captacin en la emisin

Se accede a los operandos en el momento que se realiza


la emisin a las estaciones de reserva.
Las lneas de las estaciones de reserva deben tener
espacio suficiente para almacenar los datos en los
correspondientes campos de operando.
El operando se lee si esta a 1 el bit de validez, caso
contrario, en lugar del dato del registro ledo, en la
estacin de reserva se guarda el numero de registro
Captacin en la decodificacin/emisin
Captacin en la emisin
Instrucciones Decodificadas
Poner el bit
OC: Cdigo de RS1, RS2, RD V de RD a 1
operacin Resetear el
bit V de RD
RS1, RS2: Registros
Valor V
fuente
RD: Registro de Registros
destino
OS1, OS2: Operandos
fuente
IS1, IS2: OC OS1/IS1 VS1 OS2/IS2 VS2 RD
Identificadores de Test de los
bits VS1 y VS2
los operandos fuente Estacin de Reserva

VS1, VS2: Bits OC, OS1, OS2, RD


vlidos de los Unid.
Actualizacin asociativa de I S1 e IS2 con
operandos fuente RD y sus respectivos bits de status
Ejec.
Captacin en el envi
Se accede a los operandos en el momento en que se
envan las instrucciones a la unidad funcional.
En los campos de operando se guarda la direccin
correspondiente del registro desde donde se toma el
operando.
En la estacin de reserva no se incluyen campos de
validez de los operandos.
Las instrucciones estn pendientes de enviarse a la
estacin de reserva comprueban en el banco de
registros los bits de validez de los registros
correspondientes a sus operandos.
Captacin en el envi

Si el bit de validez esta en 1 se enva la instruccin y se


coloca a 0 el bit de validez del registro donde se
escribir el resultado.
Captacin en el envi
Captacin en el envi
Instrucciones Decodificadas

OC RS1 RS2 RD
Test del bit V
de RS1 y RS2
Estacin de Reserva

Poner el bit
RS1, RS2, RD V de RD a 1
Resetear el
bit V de RD

Valor V
OC: Cdigo de operacin
RS1, RS2: Registros fuente Registros

RD: Registro de destino


OS1
OS1, OS2: Operandos fuente OC, RD
OS2
Unid.
Ejec.
Ejemplo del uso de estaciones de
reserva
Se tiene las siguientes instrucciones
Ciclo i: mul r3, r1, r2
Ciclo i+1: add r5, r2, r3

add r6, r3, r4

La multiplicacin se ejecuta en cinco ciclos


Ciclo i: mul r3, r1, r2 mul r3, r1, r2
r1, r2, r3
Ciclo i+1: add r5, r2, r3
# Valor V
add r6, r3, r4 0
1 10 1
2 20 1
Ciclo i: 3 0
4 40 1
Se emite la instruccin de 5
multiplicacin, ya 6
7
decodificada, a la estacin
mul r3
de reserva
10 1
Se anula el valor de r3 en 20 1
el banco de registros
OC OS1/IS1 VS1 OS2/IS2 VS2 RD
Se copian los valores de r1
y r2 (disponibles) en la Unid.
Ejec.
estacin de reserva mul 10 1 20 1 r3

30
mul r3, r1, r2
r1, r2, r3

Ciclo i: mul r3, r1, r2 # Valor V


0
Ciclo i+1: add r5, r2, r3 1 10 1
2 20 1
add r6, r3, r4 3 0
4 40 1
5
6
7
Ciclo i + 1: mul r3

La operacin de 10 1

multiplicacin tiene sus 20 1

operadores preparados OC OS1/IS1 VS1 OS2/IS2 VS2 RD


(VS1 = 1 y VS2 = 1)
Unid.
As que puede enviarse a Ejec.
mul 10 1 20 1 r3
la unidad de ejecucin
63
add r5, r2, r3 /
Ciclo i: mul r3, r1, r2 add r6, r3, r4
r2 / r3, r3 / r4, r5 / r6
Ciclo i+1: add r5, r2, r3
# Valor V
add r6, r3, r4 0
1 10 1

Ciclo i + 1 (cont.): 2
3
20 1
0
4 40 1
Se emiten las dos 5 0
instrucciones de suma a la 6 0
estacin de reserva 7

add / add r5 / r6
Se anulan los valores de r5
20 / r3 1/0
y r6 en el banco de
r3 / 40 0/1
registros
mul r3, 10, 20
OC OS1/IS1 VS1 OS2/IS2 VS2 RD
Se copian los valores de (en ejecucin)
los operandos disponibles Unid.
add r3 0 40 1 r6 Ejec.
y los identificadores de los add 20 1 r3 0 r5
operandos no preparados 64
Ciclo i: mul r3, r1, r2
# Valor V
Ciclo i+1: add r5, r2, r3 0
1 10 1
add r6, r3, r4 2 20 1
3 0
4 40 1
5 0
6 0
7
Ciclos i + 2 .. i + 5:
La multiplicacin sigue
ejecutndose
mul r3, 10, 20
No se puede ejecutar OC OS1/IS1 VS1 OS2/IS2 VS2 RD
(en ejecucin)
ninguna suma hasta que Unid.
est disponible el resultado add r3 0 40 1 r6 Ejec.
add 20 1 r3 0 r5
de la multiplicacin (r3) 65
Ciclo i: mul r3, r1, r2
Ciclo i+1: add r5, r2, r3 # Valor V
0
add r6, r3, r4 1 10 1
2 20 1
3 200 1
4 40 1
5 0
Ciclo i + 6: 6 0
7
Se escribe el resultado de
la multiplicacin en el
banco de registros y en las
entradas de la estacin de
reserva OC OS1/IS1 VS1 OS2/IS2 VS2 RD
mul r3, 10, 20
(completada)
Se actualizan los bits de Unid.
disponibilidad de r3 en el add 200 1 40 1 r6 Ejec.
add 20 1 200 1 r5
banco de registros y en la 200, r3
66

estacin de reserva
Ciclo i: mul r3, r1, r2
# Valor V
Ciclo i+1: add r5, r2, r3
0
1 10 1
add r6, r3, r4 2 20 1
3 200 1
4 40 1
5 0
6 0
7

Ciclo i + 6 (cont.):
Las sumas tienen sus OC OS1/IS1 VS1 OS2/IS2 VS2 RD

operadores preparados Unid.


(VS1 = 1 y VS2 = 1) add 200 1 40 1 r6 Ejec.
add 20 1 200 1 r5
As que pueden enviarse a 67

la unidad de ejecucin
Ciclo i: mul r3, r1, r2
Ciclo i+1: add r5, r2, r3 # Valor V
0
1 10 1
add r6, r3, r4
2 20 1
3 200 1
4 40 1
Ciclo i + 6 (cont.): 5 0
6 0
7
Como slo hay una unidad
de ejecucin, se enva la
instruccin ms antigua de
la estacin de reserva, la
primera suma OC OS1/IS1 VS1 OS2/IS2 VS2 RD
add r5, 20, 200
(en ejecucin)
Unid.
Ejec.
add 200 1 400 1 r6
68

AQU TERMINAS CAMA, RESPIRA


RENOMBRAMIENTO
DE REGISTROS
En un procesador superescalar se pueden emitir varias
instrucciones por cada ciclo a distintas unidades
funcionales, con tiempos de ejecucin diferentes , esto
puede ocasionar que , aun en el caso de que la emisin
sea ordenada , las operaciones codificadas por las
distintas instrucciones emitidas terminen su ejecucin de
forma desordenada.
En cualquier caso la situacin es distinta de la que se
presento en el capitulo 2 para un procesador segmentado
en el que las instrucciones terminan de ejecutarse
ordenadamente y la escritura de los resultados, al
realizarse en la ultima etapa del cauce , asegura que se
mantiene el orden de las escrituras en los riesgos WAR
WAW
RAW (Read After Write): La lectura debe de esperar a que termine
la escritura sobre el elemento de almacenamiento (registro ,
posicion de memoria, etc.). Se trata de un riesgo asociado a una
dependencia real entre las operaciones de un programa: para que
empiece la operacin se necesita el operando que se lee, debe
terminar la operacin que genera dicho operando.

1 R
ALMACENAMIENTO
w 2
Riesgos WAR (write after read) y WAW (write after write)
Se pueden evitar si se dispone de un espacio de almacenamiento
alternativo en el que se realiza la escritura final (almacenamiento X)
por supuesto, hay que asegurar que las letras que se deben hacer a
continuacin de la segunda escritura (serian dependencias RAW) se
hagan desde el nuevo almacenamiento, (esto es, desde al
almacenamiento X)
WAR WAW
W
2 W R 1 1 W 2
ALMACENAMIENTO ALMACENAMIENTO

1 W
ALMACENAMIENTO R 1 ALMACENAMIENTO

2 W W
ALMACENAMIENTO ALMACENAMIENTO 2
X X
BUFFER DE RENOMBRAMIENTO
CON ACCESO ASOCIATIVO
ASIGNACION REGISTRO DE CONTENIDO CONTENIDO BIT DE
VALIDA DESTINO VALIDO ASIGNACION
ULTIMA
0 5 35 1 1

1 4 14 1 1

1 2 22 1 0

1 2 32 0 1
En este caso cada lnea del buffer tiene cinco campos :asignacion valida,
registro de destino , contenido , contenido valido y bit de asignacin ultima.
Asignacin valida: se ha supuesto que 1 indica que se ha realizado una
asignacin por lo tanto la lneas que contienen 1se estn utilizando para
realizar renombramientos en tanto los que contienen 0 no tienen valores
validos

ASIGNACION REGISTRO DE CONTENIDO CONTENIDO BIT DE


VALIDA DESTINO VALIDO ASIGNACION
ULTIMA
0 5 35 1 1

1 4 14 1 1

1 2 22 1 0

1 2 32 0 1
Registro de destino: se indica el numero de registro de la
arquitectura que se ha renombrado utilizando la lnea en cuestin
por ejemplo la lnea 1 del buffer se ha utilizado para renombrar al
registro r4 de la arquitectura

LINEA ASIGNACION REGISTRO DE CONTENIDO CONTENIDO BIT DE


VALIDA DESTINO VALIDO ASIGNACION
ULTIMA
LINEA0 0 5 35 1 1

LINEA1 1 4 14 1 1

LINEA2 1 2 22 1 0

LINEA3 1 2 32 0 1
Contenido: Este almacenara los datos correspondientes al registro
que se ha renombrado hasta que esos datos se actualicen en el
registro de la arquitectura correspondiente
Contenido valido : Este se utiliza como bit de validez del contenido,
indicando , si esta a cero, que alguna instruccin que se ha emitido
o enviado va a escribir su resultado en el campo de contenido de la
lnea
LINEA ASIGNACION REGISTRO DE CONTENIDO CONTENIDO BIT DE
VALIDA DESTINO VALIDO ASIGNACION
ULTIMA
LINEA0 0 5 35 1 1

LINEA1 1 4 14 1 1

LINEA2 1 2 22 1 0

LINEA3 1 2 32 0 1
BIT de asignacin ultima : Este esta a 1 en la lnea del buffer de
renombramiento en la que se haya hecho la ultima asignacin a un
registro dado por ejemplo se han hecho dos renombramientos del
registro r2 ; el ultimo de ellos es el que se encuentra en la lnea 3 . De esta
manera , si llega una instruccin que necesita como operando a r2 , lo
tomara del campo de contenido de la lnea 3 , no de la lnea 2

LINEA ASIGNACION REGISTRO DE CONTENIDO CONTENIDO BIT DE


VALIDA DESTINO VALIDO ASIGNACION
ULTIMA
LINEA0 0 5 35 1 1

LINEA1 1 4 14 1 1

LINEA2 1 2 22 1 0

LINEA3 1 2 32 0 1
RENOMBRAMIENTO CON
ACCESO INDEXADO
LINEAS ASIGNACION INDICE EN EL LINEAS CONTENIDO CONTENIDO
VALIDA BUFFER DE VALIDO
RENOMBRAMIENTO

0 0 2 0 33 1

1 0 4 1 14 1

2 1 3 2 26 1

3 0 2 3 32 0

4 1 1 4

5 0 0 5
En este caso, para cada registro de la arquitectura existe un ndice que apunta a la lnea del buffer
que se utiliza para renombrar ese registro.
Junto con ese ndice tambin existe un campo de asignacin valida que indica si se ha hecho o no
el renombramiento. El buffer de renombramiento, propiamente dicho , nicamente tiene el
campo de contenido y el de contenido valido . En este caso el ndice asignado a un registro de la
arquitectura apunta a la lnea correspondiente al ultimo renombramiento para dicho registro y por
eso no hace falta campo de bit de asignacin ultima

LINEAS ASIGNACION INDICE EN EL LINEAS CONTENIDO CONTENIDO


VALIDA BUFFER DE VALIDO
RENOMBRAMIENTO

0 0 2 0 33 1
1 0 4 1 14 1
2 1 3 2 26 1
3 0 2 3 32 0
4 1 1 4
5 0 0 5
Para saber que lnea es la que se utiliza para renombrar un
registro basta con consultar el campo de ndice asignado a ese
registro y comprobar si el bit de asignacin vlida esta a 1.

LINEAS ASIGNACION INDICE EN EL LINEAS CONTENIDO CONTENIDO


VALIDA BUFFER DE VALIDO
RENOMBRAMIENTO

0 0 2 0 33 1
1 0 4 1 14 1
2 1 3 2 26 1
3 0 2 3 32 0
4 1 1 4
5 0 0 5
MANTENIMIENTO DE LA
CONSISTENCIA BUFFER DE
REORDENAMIENTO
En esta parte del tema se distingue entre procesamiento y
ejecucin de una instruccin. El procesamiento de la
instruccin hacer referencia al paso de dicha instruccin por
todas y cada una de las etapas del cauce superescalar que
utiliza, desde que se capta hasta que la instruccin se retira
del cauce. La ejecucin de la instruccin se refiere al paso de
la instruccin por las etapas del cauce en las que la unidad
funcional correspondiente realiza la operacin codificada en
la instruccin.
TRATAMIENTO DE INSTRUCCIONES

En el procesamiento de las instrucciones se puede distinguir entre


procesamiento y ejecucin de una instruccin.
El procesamiento de la instruccin hace referencia al paso de dicha
instruccin por todas y cada una de las etapas del cause, desde que
se capta hasta que la instruccin se retira del cause.
La ejecucin de la instruccin se refiere al paso de la instruccin
por las etapas del cause en las que la unidad funcional
correspondiente realiza la operacin codificada de la instruccin
Hemos visto que mediante el uso del renombramiento y las
estaciones de reserva se pueden emitir y ejecutar instrucciones
desordenadamente, evitando los problemas que plantean los
riesgos RAW, WAR Y WAW.
Nos falta analizar la forma en que se actualizan los registros de la
arquitectura a partir de los registros internos en los que se han
renombrado , y que tienen los resultados temporales de las
operaciones ejecutadas.
Esta actualizacin usualmente se realiza en la ultima etapa del
cauce, denominada etapa de finalizacin o de retirada de
instrucciones
En esta seccin se analiza la finalizacin de las
instrucciones en el marco del mantenimiento de la
consistencia secuencial en los procesadores superescalares .
La consistencia secuencial de un programa se refiere a :
En el orden en que las instrucciones se completan
El orden en que se accede a memoria para leer LOAD o
escribir STORE
Se muestran dos tipos de consistencias que deben
tenerse en cuenta en el procesamiento de instrucciones:
LA CONSISTENCIA DE PROCESADOR Y LA
CONSISTENCIA DE MEMORIA.
La consistencia de procesador se refiere al orden en que
se completa el procesamiento de instrucciones
La consistencia de memoria se refiere al orden en que se
realizan los accesos a memoria
CONSISTENCIA DE MEMORIA
Los accesos a memoria se realizan a travs de instrucciones
LOAD/STORE

LOAD
Calculo de la direccin de acceso
Acceso a memoria (lectura)
Escritura del dato ledo en un registro

STORE
Lectura del dato del registro
Calculo de la direccin de acceso
Acceso a memoria (escritura)
La siguiente tabla ilustra, con un ejemplo la mejora que puede
suponer un modelo de consistencia de memoria dbil

En el ejemplo, las direcciones de memoria a las que se


acceden, son diferentes sin necesidad de conocer r2.
Puede ocurrir que no se sepa si es la misma direccin. Por
ejemplo, en la secuencia de instrucciones:

st r1, 0x1C(r2)
ld r3, 0x2D(r7)
no esta claro si ambas direcciones son la misma hasta que no
se complete el calculo de estas direcciones. Si fuesen iguales
estaramos ante un riesgo RAW entre las dos instrucciones y
la instruccin de carga no podra adelantar a la instruccin de
almacenamiento.
Ante el hecho de que haya ambigedad en las direcciones de
memoria y se permita un adelantamiento, se conoce como
adelantamiento especulativo.
3.4 PROCESAMIENTO DE LAS
INSTRUCCIONES DE SALTO
Esta seccin se dedica precisamente al estudio del procesamiento
eficiente de las instrucciones de salto en un procesador superescalar.

El efecto de los saltos en los superescalares es muy grave dado que al


captarse, decodificarse, y emitirse varias instrucciones por ciclo puede
ocurrir que, en determinados cdigos , prcticamente en cada ciclo haya
una instruccin de salto , adems aumenta el numero de instrucciones que
podran introducirse incorrectamente en el cauce y dar lugar a un uso
ineficiente de los recursos.
Para el estudio de los saltos en el mbito de los procesadores
segmentados:
Deteccin de la instruccin de salto: cuanto antes se detecte que una
instruccin es de salto antes puede empezar a procesarse como tal, por
ejemplo iniciando el calculo de la direccin de destino del salto lo mas
pronto posible.
Posibilidades para la deteccin temprana de las instrucciones de salto:
1.- Deteccin paralela: etapa especifica que opera en paralelo con una
etapa comn de decodificacin.
2.- Deteccin anticipada: se analizan las ultimas lneas de la cola de
instrucciones captadas antes de que pasen a la unidad de
decodificacin.

3.- Deteccin integrada en la captacin: En el momento en que se captan


las instrucciones se detecta si la instruccin es de salto o no.
GESTION DE SALTOS CONDICIONALES
NO RESUELTOS
Gestin de saltos condicionales no resueltos:
Si en el momento en que la instruccin de salto evala la condicin
de salto, esta no se ha terminado de evaluar todava, se dice que el
salto no esta resuelto
La instruccin de salto condicional comprueba el valor de los bits
de estado adecuados segn sea la condicin que determine el
salto.
Esta forma de realizar los saltos condicionales establece una
dependencia entre las instrucciones que viene determinada por la
ubicacin de dichas instrucciones, en lugar de aparecer
explcitamente a travs de los operandos de cada instruccin.
Alternativas para la gestin de los saltos
condicionales
Una vez que se ha detectado una instruccin de salto y se ha determinado
la direccin de destino, interesa conocer cuanto antes si se verifica la
condicin de salto para empezar a captar lo ms pronto posible las
instrucciones desde la direccin de destino del salto, si finalmente hay que
realizar el salto, y evitar que se introduzcan en el cauce instrucciones que
no deben procesarse.
En los procesadores superescalares existen varias posibilidades para
gestionar los saltos condicionales no resueltos para minimizar la
penalizacin derivada del posible retardo en la evaluacin de la condicin
de salto.
bloquear la instruccin de salto, que no puede progresar en el
cauce hasta que no se haya terminado de evaluar la condicin. Esta
alternativa corresponde, realmente, a la situacin ms
desfavorable desde el punto de vista de las prestaciones y, en ese
sentido se puede tomar como punto de partida para posibles
mejoras
procesamiento especulativo a los saltos. El procedimiento se basa
en estimar de alguna forma el camino que, con ms probabilidad,
va a seguir la ejecucin cuando se haya evaluado la condicin de
salto.
mltiples caminos. En este caso si cada vez que llega una
instruccin de salto, el procesador empezara a captar y procesar
instrucciones de los dos caminos alternativos. Esta opcin es la ms
costosa en cuanto a demanda de recursos en el procesador
Alternativa para la prediccin de saltos
La prediccin de saltos se basa en la idea de que el
comportamiento de una instruccin de salto condicional presenta
una cierta regularidad, y por tanto puede predecirse con una cosa
de aciertos suficientemente elevada
En caso de que se produzca un error en la prediccin, habr por
tanto una penalizacin que ser tanto mayor cuanto ms se tarde en
recuperar la situacin de ejecucin correcta.
As, como en cualquier otra tcnica de procesamiento especulativo,
interesa disponer de un procedimiento de prediccin con una tasa de
aciertos lo ms elevada posible y una implementacin que permita la
recuperacin rpida de los errores. Se describir alternativas para la
prediccin:
prediccin fija, que son aquellas en las que el procesador toma
siempre la misma decisin ante cualquier instruccin de salto condicional
empieza a ejecutar instrucciones a partir de la direccin de destino del
salto, o sigue captando las instrucciones que siguen a la instruccin de
salto.
prediccin verdadera, la decisin depende de las caractersticas
propias de la instruccin de salto condicional concreta que se est
ejecutando por eso se dice que son de prediccin verdadera en
contraposicin a los anteriores. Esas caractersticas propias de la
instruccin de salto pueden ser atributos que no cambian a lo largo
de las posibles ejecuciones sucesivas de la instruccin. En este caso
se habla de prediccin esttica. tambin puede tenerse en cuenta
el perfil de saltos/no saltos que se han ido produciendo en las
sucesivas ejecuciones anteriores de la instruccin de salto, o
incluso de otras instrucciones de salto prximas en este caso, si se
considera la historia de la instruccin de salto se trata de un
procedimiento de prediccin dinmica
Esquemas de prediccin fija. Slo hay dos alternativas posibles para
los esquemas de prediccin fija: la aproximacin de salto siempre no
tomado y la de salto siempre tomado.
salto siempre no_ tomada, para toda instruccin de salto cuya condicin no est
resuelta se considera que lo ms probable es que no se produzca el salto. Por lo
tanto, el procesador contina captando instrucciones por donde iba.

salto siempre tomado, se considera que toda instruccin de salto


condicional no resuelta da lugar a un salto, por lo que se empiezan a
captar instrucciones a partir de la direccin de destino del salto, En
previsin de que se pueda producir un error en la prediccin, se guarda el
valor del contador de programa PC que apunta a la instruccin siguiente
a la instruccin de salto condicional.
Esquemas de prediccin esttica. El presupuesto bsico de estos
esquemas es que ciertos atributos de la instruccin de salto estn
relacionados con la probabilidad de que dicha instruccin ocasione o no
un salto. Por tanto, la prediccin se hace sobre la base de dichos
atributos. Se habla de prediccin esttica porque se trata de
caractersticas que no cambian al ejecutar el cdigo. Algunos ejemplos
de esquemas de prediccin esttica son los siguientes:
Prediccin basada en el cdigo de operacin: segn el tipo de
instruccin de salto condicional se considero ms probable que se produce
el salto o que no. Este tipo de esquemas se utiliza en el MC88110 (1993) y
en el PowerPC (1993).
Prediccin basada en el desplazamiento del salto: si el desplazamiento
es positivo (se trata de un salto hacia adelante, a direcciones mayores que
la de la instruccin de salto) se predice, usualmente, que el salto no se
producir, y si el desplazamiento es negativo (salto hacia atrs) se predice,
usualmente, que el salto se producir. En los procesadores Alpha 21064
(1992) y PowerPC 603 (1993) se utiliza . este esquema de prediccin.
Prediccin dirigida por el compilador: a travs de una serie de bits
que existen en las instrucciones de salto (bits de prediccin), el
compilador puede fijar Ia prediccin que se va a realizar para la
instruccin. Para fijar esos bits el compilador puede tener en cuenta
resultados obtenidos a partir de ejecucin de trazas del programa que
indiquen qu tipo de comportamiento es el ms probable para cada
instruccin de salto. Entre los procesadores que implementan esta
posibilidad estn el PowerPC 603 (1993) y el PA8000 (1996).
Esquemas de prediccin dinmica se pretende utilizar el comportamiento
observado de salto/no salto de cada instruccin de salto condicional, para
establecer la prediccin a realizar cuando esa instruccin vuelva a captarse.
El presupuesto bsico de la prediccin dinmica es que lo ms probable es
que el resultado de salto/no salto de una instruccin sea similar al que se
tuvo en las ejecuciones pasadas de dicha instruccin (en la anterior o en las
n ejecuciones anteriores). En este esquema, para cada instruccin de salto
condicional debe guardarse algn tipo de informacin que condense el
comportamiento pasado y permita realizar la prediccin.

Comparado con la prediccin fija y la prediccin esttica, este esquema es


el que suele presentar las mejores prestaciones, a costa de una
implementacin ms costosa. A su vez, los esquemas de prediccin
dinmica se pueden clasificar en funcin de la forma de almacenar el
comportamiento pasado de la instruccin de salto. As, se habla de:
Prediccin dinmica implcita: Se almacena nicamente la direccin de
la instruccin que se ejecut tras la instruccin de salto la ltima vez que se
capt esta. La direccin puede ser la direccin de destino del salto, lo que
equivale a predecir que se produce el salto, o bien la direccin de la
instruccin siguiente a la de salto, con lo que se predice que el salto no se
produce.

Prediccin dinmica explcita: para cada instruccin de salto condicional,


existe un conjunto de bits que codifican la informacin relativa al
comportamiento pasado de la instruccin en cuestin. Estos bits se
denominan bits de historia. El nmero de bits de historia que se guardan
para cada instruccin depende del tipo de esquema de prediccin dinmica
explcita que se haga.
EJEMPLOS DE PROCEDIMIENTOS DE PREDICCIN DINMICA EXPLICITA
CON DISTINTO NUMERO DE BITS DE HISTORIA
Prediccin con 1 bit de historia
La designacin del estado(S, saltar, o NS, no saltar)
indica lo que se predice, y las flechas indican
transiciones de estado segn lo que se produce al
ejecutarse la instruccin (T, salto tomado, o NT, salto
no tomado)

Prediccin con 2 bit de historia


Existen cuatro posibles estados dos de ellos
corresponden a una prediccin de realizar el salto (S)
y otros dos a no realizar el salto (NS)

Prediccin con 3 bit de historia


La prediccin viene determinada por el bit
mayoritario (si hay mayora de unos se predice salto,
por ejemplo) los bits se desplazan a la derecha
introducindose un 0 o un 1 segn el resultado de la
instruccin de salto
Definiciones
El porcentaje de aciertos (prediction accuracy) en la prediccin es
fundamental para mantener un promedio elevado de instrucciones
procesadas por ciclo

Esquemas de prediccin de dos niveles, estos esquemas utilizan dos


niveles de informacin para realizar la prediccin, por un lado se guarda
informacin del comportamiento de salto/no salto, adems se utiliza
informacin adicional que establece los bit de historia para realizar la
prediccin.

La informacin relativa al comportamiento pasado de las instrucciones en


la denominada tabla de historia de salto (BHT) y los bits de historia que se
utilizan para realizar la prediccin estn en la tabla de patrones (PHT).
COMPARACIN ENTRE UN ESQUEMA DE PREDICCIN DE UN NIVEL A) Y
DOS ESQUEMAS DE DOS NIVELES B) Y C)
Prediccin a partir de hibridacin (evers 98)

Existe la posibilidad de definir esquemas de prediccin a partir de la


hibridacin de otros, un ejemplo de este tipo de esquemas de prediccin
hbridos son los predictores por torneo, estos predictores utilizan un
esquema de prediccin local y otro global y seleccionan la prediccin de uno
de ellos segn el estado de un contador de dos bits de saturado.

Predictor 1 correcto Predictor 2 correcto Accin (sobre el contador


de dos bits)

No No -

No Si -1

Si No +1

Si Si -
A medida que se usan mas recursos hardware para implementar un
esquema de prediccin se pueden conseguir mejores porcentajes de
aciertos en la prediccin debido por un lado a que es posible utilizar mas
bits para representar la historia de cada instruccin de salto y por otro a
que se pueden almacenar las historias de mas instrucciones de salto y se
evitan problemas de colisin entre instrucciones de salto distintas.

Existen distintas alternativas para guardar la informacin de la historia de


saltos/no saltos de cada instruccin de salto condicional. Una posibilidad
es utilizar la cach de instrucciones. En este caso, en cada lnea de cach
se dispone de una serie de bits adicionales que se utilizan para los bits de
historia de las instrucciones de salto que existan en la lnea.
Caractersticas
Hay dos caractersticas importantes del procesamiento especulativo de
instrucciones de salto:

El nivel de especulacin.- es el numero de instrucciones de salto


condicional que pueden ejecutarse especulativamente. En el caso de que
se permita le ejecucin especulativa simultanea de varias instrucciones de
salto no resueltas habr que guardar los correspondientes estados de
ejecucin.
El grado de especulacin.- indica la etapa hasta la que se procesan las
instrucciones que constituyen el camino especulativo despus del salto
condicional.
Acceso a la secuencia de salto y recuperacin de una prediccin
incorrecta
Los saltos condicionales que da lugar a un salto son mas probables que
los que no dan lugar a salto por eso seria interesante reducir al mximo el
tiempo de acceso a la secuencia de instrucciones a partir de la direccin de
salto y reducir la penalizacin para las predicciones incorrectas.

hay que tener en cuenta que una vez detectada una instruccin de salto
debe calcularse la direccin de destino de salto (BTA) lo antes posible. En
el caso de que se produzca el salto, es precisamente la BTA la que debe
cargarse en el contador de programa para captar la instruccin
correspondiente
ACELERACIN DEL ACCESO A LA SECUENCIA DE SALTO
MEDIANTE BTAC

Se muestran los elementos que


intervienen en la captacin de la
instruccin de la secuencia de
salto cuando se utiliza la
denominada cach de
direcciones de destino de salto
(BTAC), cada uno de los
elementos de la (BTAC) esta
constituido por la direccin de la
instruccin de salto (BA) y la
direccin de destino de salto
(BTA)
ACELERACIN DEL ACCESO A LA SECUENCIA DE SALTO
MEDIANTE BTIC

Para mejorar la velocidad de


acceso a la secuencia de salto,
se tiene directamente una o
varias de las instrucciones(bt1)
que se deben ejecutar si se
produce el salto.El cach que
contiene la informacin para
acelerar el acceso a las
instrucciones de destino de
salto se denomina BTIC(branch
target instruction cache)cache
de instrucciones de destino de
salto .
ACELERACIN DEL ACCESO A LA SECUENCIA DE SALTO
MEDIANTE EL USO DE NDICES SUCESORES EN LA CACHE DE
INSTRUCCIONES(CACHE 1)
Otra alternativa se basa en el
uso de ndices sucesores en la
propia cach de instrucciones
en este caso en cada lnea
cach se aade unan una
serie de bits para almacenar
un ndice que apunta a la
siguiente instruccin que se
debe ejecutar tras la
instruccin de salto
condicional incluida en esa
lnea.
3.4.1.2. Ramificacin multicamino

En este caso el procesador simplemente ejecuta las dos


secuencias de instrucciones concurrentemente.
La implementacin puede llegar a ser muy compleja
dependiendo de hasta que etapa del cauce contina el
procesamiento de las secuencias alternativas.
Se permite que esas secuencias puedan modificar los
registros de la arquitectura y que se introduzcan mas
instrucciones de salto en cada una de las secuencias.

Secuencias de instrucciones Salto condicional


no resuelto BTA
BA1
1
Salto condicional
no resuelto Salto condicional Salto condicional
BT BTA no resuelto BA no resuelto BTA
BA BA3
A 2 2 3

BTA: Direccin del destino


del salto.
BA: Direccin del salto
3.4.2. Instrucciones de ejecucin
condicional
Tambin llamados instrucciones con predicado o de ejecucin
vigilada.
Se pretende reemplazar a las instrucciones de salto para
poder resolver los problemas que acarrean dichas
instrucciones.
Tiene dos partes: La condicin y la operacin.
Ejemplo: La secuencia de instrucciones:
beq ra, etiqueta //si ra=0 saltar a etiqueta
or rb, rb, rc //si no, copiar rb en rc

Se puede sustituir por:


cmovne ra, rb, rc
3.5. INTERRUPCIONES EN UN
PROCESADOR SUPERESCALAR

Los procesadores segmentados presentan los siguientes problemas con


las interrupciones:
Es ms difcil asociar una excepcin a su causa, puesto que se estn
ejecutando varias instrucciones.
Puede transcurrir bastante tiempo desde que se produce una
interrupcin hasta que se reconozca.
Es difcil precisar el estado que debe guardarse para que la mquina
se recupere despus de atender la interrupcin.
Por lo tanto, en procesadores de finalizacin desordenada, la dificultad
para procesar interrupciones es todava mayor.
En una finalizacin desordenada, una instruccin puede
ocasionar una interrupcin despus de que una instruccin que
le sigue haya finalizado, no pudiendo implementar dicha
interrupcin en forma precisa.

Ignorar el problema y considerar slo la posibilidad de


interrupciones imprecisas.

Antes de emitir una instruccin, esperar a que las


instrucciones anteriores terminen sus interrupciones.
Alternativas
para abordar Almacenar los resultados de instrucciones que se han
esta ejecutado y solo escribirlos en los ficheros de la
dificultad arquitectura cuando hayan terminado las
instrucciones previas
Mantener la informacin necesaria para tener en
cuenta las instrucciones que se han ejecutado
anticipadamente, en el caso de que haya habido una
interrupcin y poder deshacer sus efectos.
Para mantener la consistencia con el modelo secuencial de
ejecucin en el caso de interrupciones, se puede considerar dos
posibilidades:
Las instrucciones se retiran ordenadamente, cambiando el
estado de la mquina segn el orden en que aparecen en el
programa, existiendo siempre una estado de la mquina bien
definido. En este caso se basa en el uso de buffer de
reordenamiento.

Las instrucciones cambian el estado de la mquina segn se


ejecutan y se deben aadir elementos que permiten
reconstruir un estado bien definido si hay interrupciones. En
tal caso se usa el buffer de historia y el uso de puntos de
chequeo-reparacin.
Interrupciones precisas con buffer
de reordenamiento (ROB)
En esta estrategia las instrucciones finalizan ordenadamente.
Adems, la modificacin de los registros de la arquitectura se
produce en el momento en que la instruccin se retira del
ROB.

A este nuevo ROB se han


aadido dos campos:

Campo de
vaciado o flush Campo int
Ejemplo: Uso del ROB en el procesamiento de interrupciones
# codop #inst. Reg. dest. Unidad Resutad ok marca ready int flush
o
Ciclo10

3 mult 7 r1 int_mult - 0 x 12 0 0
4 st 8 - store - 0 i 12 0 0
5 add 9 r2 int_add 17 1 f 9 0 0
6 xor 10 r3 int_alu 0xa1 1 f 10 0 0

Han terminado de ejecutarse las instrucciones 9 (add) y 10 (xor), pero todava no


se han escrito sus resultados en el banco de registros (hasta que no se retiren del
ROB no se har la escritura)

# codop #inst. Reg. dest. Unidad Resutado ok marca ready int flush
Ciclo11

3 mult 7 r1 int_mult - 0 x 12 0 0
4 st 8 - store - 1 - 12 1 1
5 add 9 r2 int_add 17 1 f 9 0 1
6 xor 10 r3 int_alu 0xa1 1 f 10 0 1

Se ha producido una excepcin ocasionada por la instruccin st y se atender


cuando la instruccin st llegue a la cabecera del ROB; entonces, los resultados de
las instrucciones que le siguen no modificarn los registros de la arquitectura.
Una vez atendida la excepcin el programa continuar con la instruccin st.
Interrupciones precisas con buffer
de historia

Este buffer permite que las instrucciones modifiquen el


estado de la mquina a medida que termina su ejecucin,
producindose por tanto una finalizacin desordenada.

Este buffer guarda informacin acerca del estado que se


ha modificado al actualizar los registros de arquitectura,
de forma de que esta se pueda recuperar en el caso de
que se produzca alguna interrupcin.
Ejemplo: Procesamiento de interrupciones precisas con buffer de historia
# codop #inst. Reg. dest. Unidad Old Val. ok marca ready int flush
Ciclo10
3 mult 7 r1 int_mult - 0 x 12 0 0
4 st 8 - store - 0 i 12 0 0
5 add 9 r2 int_add 15 1 f 9 0 0
6 xor 10 r3 int_alu 0xa1 1 f 10 0 0

En el campo Old. Val. Se almacenan los valores que tenan los registros r2 y r3 que se
han modificado con los resultados de la instrucciones add y xor.

# codop #inst. Reg. dest. Unidad Old Val. ok marca ready int
Ciclo11

3 mult 7 r1 int_mult - 0 x 12 0
4 st 8 - store - 1 - 12 1
5 add 9 r2 int_add 15 1 f 9 0
6 xor 10 r3 int_alu 0xa1 1 f 10 0

Cuando la instruccin que tiene el campo int marcado con 1 llega a la cabecera se
atiende la interrupcin. Antes deben de deshacerse los cambios que han introducido
las instrucciones que se han completado con anterioridad pero que se encuentren
detrs de la interrupcin.
Interrupciones precisas con puntos
de chequeo-reparacin
En esta estrategia, el estado de la mquina se almacena en
determinadas etapas del cauce que reciben el nombre de
puntos de chequeo.
Como ejemplo tenemos la siguiente secuencia: se observa
que add finaliza antes que mult
Instruccin IF ID EX WB

sub r7, r1, r6 (1) (2) (3) - (6) (7)

mult r3, r1, r4 (1) (2) (3) - (9) (10)

add r4, r1, r5 (2) (3) (4) - (7) (8)


Representacin del procesamiento de interrupcin con
puntos de chequeo-reparacin del ejemplo anterior
Instruccin 1 2 3 4 5 6 7 8 9 10 11 12 13
sub r7, r1, r6 Excepcin (la
mult r3, r1, r4 instruccin mult
add r4, r1, r5 ocasiona un error)

Banco de registros Banco de registros Banco de registros


r1 10 15 r5 r1 10 15 r5 r1 10 15 r5
r2 20 16 r6 r2 20 16 r6 r2 20 16 r6
r3 30 17 r7 r3 30 -6 r7 r3 30 17 r7
r4 40 18 r8 r4 25 18 r8 r4 40 18 r8

r1 10 15 r5
Tras atender la excepcin se
reiniciar la ejecucin sub r7,
r2 20 16 r6
r1, r6 con los registros
r3 30 17 r7 recuperados del punto de
r4 40 18 r8 chequeo.
Punto de chequeo
Interrupciones precisas con
registros de futuro y ROB
Se utiliza una estructura denominada banco de registros de
futuro.
El banco de registros de futuro mas el ROB corresponden a
una forma de organizar la micro-arquitectura de la mquina.
Unidades
funcionales
Resultados
Datos Resultados
ROB

Unidades Registros de la
funcionales arquitectura
Si hay
interrupcin
Ejemplo del funcionamiento del buffer de registro de futuro
Instruccin 1 2 3 4 5 6 7 8 9 10 11 12 13
sub r7, r1, r6
mult r3, r1, r4
Excepcin (la
instruccin mult
add r4, r1, r5
ocasiona un error)

Registros de futuro Registros de futuro


r1 10 15 r5 r1 10 15 r5 r1 10 15 r5
r2 20 16 r6 r2 20 16 r6 r2 20 16 r6 Cuando se va ha
r3 30 17 r7 r3 30 -6 r7 r3 30 -6 r7 retirar mult se
r4 40 18 r8 r4 25 18 r8 r4 40 18 r8 detecta la condicin
Se suponen iguales de interrupcin y se
actualiza los registros
r1 10 15 r5 Se actualiza el banco de
del futuro.
r2 20 16 r6 registros a retirarse sub r1 10 15 r5
r3 30 17 r7 r2 20 16 r6
r4 40 18 r8 r3 30 -6 r7
Banco de registros de
r4 40 18 r8
la arquitectura
Tras atender la excepcin
ejecucin se reiniciar a
partir de la instruccin
mult r3, r1, r4

Vous aimerez peut-être aussi