Académique Documents
Professionnel Documents
Culture Documents
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
ENVIO
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
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
30
mul r3, r1, r2
r1, r2, r3
La operacin de 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
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
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
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
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
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
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.
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
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
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.
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.
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
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
# 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
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
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)