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 .

El

3.2. PARALELISMO ENTRE


INSTRUCCIONES (ILP) Y PARALELISMO
DE LA MAQUINA

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 +
add r4 , r5 ; r4= r4 + r5
r3

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).

Ejecucin paralela en las distintas unidades funcionales.

Emisin
paralela
de
instrucciones
funcionales(dependencia).

las

unidades

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

En

VENTANA DE
INSTRUCCIONES
caso de que, en un ciclo determinado

el
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

Alineamien
to
Alineada
No
alineada

Orden
En orden
Con bloqueo

Desordena
da

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 RESERVA
INDIVIDUALES
-AMD KS

ESTACIONES
DE RESERVA
COMPARTIDA
S
-R1000

ESTACIONES DE
RESERVA
CENTRALIZADA
-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.

DISPONIBLE

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
OC: Cdigo de
operacin

Instrucciones
Decodificadas
RS1, RS2,
RD
Resetear
el bit V
de RD

RS1, RS2: Registros


fuente
RD: Registro de
destino

Poner el
bit V de
RD a 1

Valo
r

Registr
os

OS1, OS2:
Operandos fuente
IS1, IS2:
Identificadores de
los operandos
fuente
VS1, VS2: Bits
vlidos de los
operandos
fuente

O
C

OS1/IS1

VS1

OS2/IS2

VS2

Estacin de
Reserva

Actualizacin asociativa S1 e I
R
decon
de
I sus respectivos bits S2
D y
status

RD
Test de
bits
los VS1 y
VS2
OC, OS1, OS2,
R
Unid D
.
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
O
C

RS1

RD
Test del bit
Vde RS1 y
RS2

RS2

Estacin de
Reserva

RS1, RS2,
RD
Resetear
el bit V
de RD

OC: Cdigo de operacin


RS1, RS2: Registros fuente

Valo
r

Registr
os

RD: Registro de destino


OS1, OS2: Operandos
fuente

Poner el
bit V de
RD a 1

OS

OC,
RD

OS

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,

mul r3, r1,


r2
r1, r2,
r3

r2 Ciclo i+1: add r5,


r2, r3

#
0
1
2
3
4
5
6
7

add r6, r3,


r4

Ciclo
i: Se emite la instruccin
de multiplicacin, ya
decodificada, a la
estacin de reserva
Se anula el valor de r3
en el banco de
registros
Se copian los valores
de r1 y r2 (disponibles)
en la estacin de
reserva

mu
l

O
C

1
0

OS1/IS1

VS1

1
0

1
0
2
0

1
1
0
1

r
3
2
0

4
0

1
RD

OS2/IS2

VS2

mu
l

Valo
r

2
0

r
3

Unid
.
Ejec
.

3
0

mul r3, r1,


r2

Ciclo i:

mul r3, r1,

r1, r2,
r3
#
0
1
2
3
4
5
6
7

r2 Ciclo i+1: add r5,


r2, r3
add r6, r3,
r4

Ciclo i +
1: La operacin de
multiplicacin tiene
sus operadores
preparados (VS1 = 1
y VS2 = 1)
As que puede
enviarse a la unidad
de ejecucin

mu
l

O
C

1
0

OS1/IS1

VS1

1
0

1
0
2
0

1
1
0
1

r
3
2
0

4
0

1
RD

OS2/IS2

VS2

mu
l

Valo
r

2
0

r
3

Unid
.
Ejec
.
63

Ciclo i:

mul r3, r1,

add r5, r2, r3


/ add r6, r3,
r4
r2 / r3, r3 / r4, r5 /
r6

r2 Ciclo i+1: add r5,


r2, r3

#
0
1
2
3
4
5
6
7

add r6, r3,


1 r4

Ciclo i +
(cont.
):
Se emiten
las dos

instrucciones de suma
a la estacin de
reserva
Se anulan los valores
de r5 y r6 en el banco
de registros
Se copian los valores
de los operandos
disponibles y los
identificadores de los
operandos no

add /
add

O
C

20 / r3 1 /
0

OS1/IS1

VS1

r
3
2
0

0
1

1
0
2
0

1
1
0
1
0
0

4
0

r5 /
r6
r3 / 40
1

0/
RD

OS2/IS2

VS2

ad
d
ad
d

Valo
r

4
0
r
3

1
0

r
6
r
5

mul r3, 10,


20
(en
ejecucin)
Unid
.
Ejec
. 64

Ciclo i:

mul r3, r1,


#
0
1
2
3
4
5
6
7

r2 Ciclo i+1: add r5,


r2, r3
add r6, r3,
r4

Ciclos i + 2 .. i +
5: La multiplicacin

Valo
r

1
0
2
0

1
1
0
1
0
0

4
0

sigue ejecutndose
No se puede ejecutar
ninguna suma hasta
que est disponible el
resultado de la
multiplicacin (r3)

O
C

OS1/IS1

VS1

RD

OS2/IS2

VS2

ad
d
ad
d

r
3
2
0

0
1

4
0
r
3

1
0

r
6
r
5

mul r3, 10,


20
(en
ejecucin)
Unid
.
Ejec
. 65

Ciclo i:

mul r3, r1,

r2 Ciclo i+1: add r5,

#
0
1
2
3
4
5
6
7

r2, r3
add r6, r3,
r4

Ciclo i +
6: Se escribe el resultado
de la multiplicacin en
el banco de registros y
en las entradas de la
estacin de reserva
Se actualizan los bits
de disponibilidad de r3
en el banco de
registros y en la
estacin de reserva

O
C

OS1/IS1

VS1

RD

OS2/IS2

VS2

ad
d
ad
d

20
02
0

1
1

4
0
20
0

1
1

r
6
r
5

Valo
r

1
0
2
0
20
04
0

1
1
1
1
0
0

mul r3, 10,


20
(completad
a)
Unid
.
Ejec
. 66 200,
r3

Ciclo i:

mul r3, r1,

r2 Ciclo i+1: add r5,

#
0
1
2
3
4
5
6
7

r2, r3
add r6, r3,
r4

Ciclo i + 6
(cont.
Las):
sumas tienen
sus operadores
preparados (VS1 =
1 y VS2 = 1)
As que pueden
enviarse a la unidad
de ejecucin

OC

ad
d
ad
d

OS1 /I

VS

OS2/I

VS

S1

S2

20
02
0

1
1

4
0
20
0

1
1

Valo
r

1
0
2
0
20
04
0

1
1
1
1
0
0

RD

r
6
r
5

Unid
.
Ejec
. 67

Ciclo i:

mul r3, r1,

r2 Ciclo i+1: add r5,

#
0
1
2
3
4
5
6
7

r2, r3

Ciclo i + 6
(cont.):

add r6, r3,


r4

Como slo hay una


unidad de ejecucin, se
enva la instruccin
ms antigua de la
estacin de reserva, la
primera suma

O
C

OS1/IS1

VS1

RD

OS2/IS2

VS2

ad
d

20
0

40
0

r
6

Valo
r

1
0
2
0
20
04
0

1
1
1
1
0
0

add r5, 20,


200
(en
ejecucin)
Unid
.
Ejec
. 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.

w
ALMACENAMIENT
O

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
WAR
WAW es, desde al almacenamiento X)
2
W

2
W

ALMACENAMIENT
O
ALMACENAMIENT
O
ALMACENAMIENT
OX

R
1

R
1

1
W
1
W

ALMACENAMIENT
O

W
2

ALMACENAMIENT
O
ALMACENAMIENT
OX

W
2

BUFFER DE
RENOMBRAMIENTO CON
ACCESO ASOCIATIVO

ASIGNACION
VALIDA

REGISTRO DE
DESTINO

CONTENIDO

CONTENIDO
VALIDO

BIT DE
ASIGNACION
ULTIMA

35

14

22

32

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
VALIDA

REGISTRO DE
DESTINO

CONTENIDO

CONTENIDO
VALIDO

BIT DE
ASIGNACION
ULTIMA

35

14

22

32

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

ASIGNACIO
N VALIDA

REGISTRO
DE
DESTINO

CONTENID
O

CONTENID
O VALIDO

BIT DE
ASIGNACIO
N ULTIMA

LINEA0

35

LINEA1

14

LINEA2

22

LINEA3

32

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

ASIGNACIO
N VALIDA

REGISTRO
DE
DESTINO

CONTENID
O

CONTENID
O VALIDO

BIT DE
ASIGNACIO
N ULTIMA

LINEA0

35

LINEA1

14

LINEA2

22

LINEA3

32

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

ASIGNACIO
N VALIDA

REGISTRO
DE
DESTINO

CONTENID
O

CONTENID
O VALIDO

BIT DE
ASIGNACIO
N ULTIMA

LINEA0

35

LINEA1

14

LINEA2

22

LINEA3

32

RENOMBRAMIENTO CON
ACCESO INDEXADO
LINEAS

ASIGNACIO
N VALIDA

INDICE EN EL
BUFFER DE
RENOMBRAMIE
NTO

LINEA
S

CONTENID
O

CONTENID
O VALIDO

33

14

26

32

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

ASIGNACIO
N VALIDA

INDICE EN EL
BUFFER DE
RENOMBRAMIE
NTO

LINEA
S

CONTENID
O

CONTENID
O VALIDO

33

14

26

32

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

ASIGNACIO
N VALIDA

INDICE EN EL
BUFFER DE
RENOMBRAMIE
NTO

LINEA
S

CONTENID
O

CONTENID
O VALIDO

33

14

26

32

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
instrucciones de salto:

deteccin

temprana

de

las

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

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:

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

prediccin fija, que son aquellas en las que el procesador toma

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

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.

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

BA

Salto
condicional no
resuelto

BT
A

BTA: Direccin del


destino del salto.
BA: Direccin del salto

BA
1

Salto
no
BTAcondicional
resuelto

Salto
condicional noBTA
resuelto

BA BA
2
3

Salto
condicional no
BTA
resuelto

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//si
instrucciones:
beq ra, etiqueta
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.

Alternativa
s para
abordar
esta
dificultad

Antes de emitir una instruccin, esperar a


que las instrucciones anteriores terminen
sus interrupciones.
Almacenar los resultados de instrucciones
que se han ejecutado y solo escribirlos en
los ficheros de la 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 chequeoreparacin.

Interrupciones precisas con


buffer de reordenamiento
instrucciones finalizan
En esta estrategia las(ROB)

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


Ciclo10

codo #ins
p
t.

Reg.
dest.

Unida Resuta ok
d
do

mar
ca

rea
dy

int

flus
h

mult

r1

int_mult

12

st

store

12

add

r2

int_add

17

xor

10

r3

int_alu

0xa1

10

Ciclo11

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

Resutad
o

ok

marca

ready

int

flush

mult

r1

int_mult

12

st

store

12

add

r2

int_add

17

xor

10

r3

int_alu

0xa1

10

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.

Ciclo10

Ejemplo: Procesamiento de interrupciones precisas con buffer de historia


#

codop

#inst.

Reg. dest.

Unidad

Old Val.

ok

marca

ready

int

mult

r1

int_mult

12

flush

st

store

12

add

r2

int_add

15

xor

10

r3

int_alu

0xa1

10

Ciclo11

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

mult

r1

int_mult

12

st

store

12

add

r2

int_add

15

xor

10

r3

int_alu

0xa1

10

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 chequeoel estado de la mquina se
En esta estrategia,
reparacin

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
Instrucci
n
sub r7, r1,
r6
mult r3,
r1, r4
add r4, r1,
r5

IF

ID

EX

WB

(1)

(2)

(3) - (6)

(7)

(1)

(2)

(3) - (9)

(10)

(2)

(3)

(4) - (7)

(8)

Representacin del procesamiento de


interrupcin con puntos de chequeoreparacin
del
ejemplo
anterior
Instruccin
1
2
3
4
5
6
7
8
9
10 11 12 13
sub r7, r1, r6

mult r3, r1, r4

add r4, r1, r5

Banco de
registros
r1 10 15 r5

Banco de
registros
r1
10 15 r5

Banco de
registros
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

r2

20

16

r6

r3

30

17

r7

r4

40

18

r8

Punto de
chequeo

Excepcin (la
instruccin mult
ocasiona un error)

Tras atender la
excepcin se reiniciar
la ejecucin sub r7, r1,
r6 con los registros
recuperados del 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 microarquitectura de la mquina.
Unidades
funcionales
Datos

Resultados

Unidades
funcionales

Si hay
interrupci
n

Resultados
ROB
Registros de
la
arquitectura

Ejemplo del funcionamiento del buffer de registro de futuro


Instruccin

10

11

12

13

sub r7, r1, r6

mult r3, r1, r4

add r4, r1, r5

r1

10

15

r5

Registros de
futuro
r1 10 15 r5

Registros de
futuro
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

-6

r7

r4

40

18

r8

r4

25

18

r8

r4

40

18

r8

Se suponen
iguales
r1 10 15 r5
r2

20

16

r6

r3

30

17

r7

r4

40

18

r8

Banco de
registros de la
arquitectura

Se actualiza el
banco de registros a
retirarse sub

Excepcin (la
instruccin mult
ocasiona un error)

r1

10

15

r5

r2

20

16

r6

r3

30

-6

r7

r4

40

18

r8

Cuando se va ha
retirar mult se
detecta la
condicin de
interrupcin y se
actualiza los
registros del
futuro.

Tras atender la
excepcin ejecucin
se reiniciar a partir
de la instruccin mult
r3, r1, r4

Vous aimerez peut-être aussi