Capitulo3 PROCESADORES-SUPERESCALARES
Capitulo3 PROCESADORES-SUPERESCALARES
Capitulo3 PROCESADORES-SUPERESCALARES
PROCESADORES SUPERESCALARES
(I): MICROARQUITECTURA Y
PRINCIPIOS DE FUNCIONAMIENTO
INTRODUCCIN
Procesadores
figura 3.3a
figura 3.3b
INTRODUCCION A
PROCESADORES
SUPERESCALARES
El
El
PROCESAMIENTO
SUPERESCALAR DE
INSTRUCCIONES
Un procesador superescalar es un procesador segmentado que puede
ETAPAS DE UN PROCESADOR
SUPERESCALAR
CAPTACIN Y DECODIFICACIN
EN UN PROCESADOR
SUPERESCALAR
En
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.
Decodificacin paralela(predecodificacion).
Emisin
paralela
de
instrucciones
funcionales(dependencia).
las
unidades
3.3.1. DECODIFICACIN
PARALELA Y PRE
DECODIFICACIN
FIGURA DE
PREDECODIFICACION
3.3.2 EMISIN DE
INSTRUCCIONES
Una
VENTANA DE
INSTRUCCIONES
Esta estructura se implementa a travs de una
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
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
Ejemplo :
emisin DESORDENADA
Ejemplo : emisin
desordenada
ESTACIONES DE RESERVA
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
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
Cada
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:
ENVIO DE INSTRUCCIONES:
CAPTACION Y COMPROBACION
DE VALIDEZ DE OPERANDOS
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
Captacin en la decodificacin/emisin
Captacin
en
la
emisin
OC: Cdigo de
operacin
Instrucciones
Decodificadas
RS1, RS2,
RD
Resetear
el bit V
de RD
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
Captacin en el envi
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
Valo
r
Registr
os
Poner el
bit V de
RD a 1
OS
OC,
RD
OS
Unid
.
Ejec
.
Ciclo i:
#
0
1
2
3
4
5
6
7
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
Ciclo i:
r1, r2,
r3
#
0
1
2
3
4
5
6
7
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:
#
0
1
2
3
4
5
6
7
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
Ciclo i:
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
Ciclo i:
#
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
Ciclo i:
#
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:
#
0
1
2
3
4
5
6
7
r2, r3
Ciclo i + 6
(cont.):
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
RENOMBRAMIENTO
DE REGISTROS
En
w
ALMACENAMIENT
O
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
REGISTRO DE
DESTINO
CONTENIDO
CONTENIDO
VALIDO
BIT DE
ASIGNACION
ULTIMA
35
14
22
32
ASIGNACIO
N VALIDA
REGISTRO
DE
DESTINO
CONTENID
O
CONTENID
O VALIDO
BIT DE
ASIGNACIO
N ULTIMA
LINEA0
35
LINEA1
14
LINEA2
22
LINEA3
32
ASIGNACIO
N VALIDA
REGISTRO
DE
DESTINO
CONTENID
O
CONTENID
O VALIDO
BIT DE
ASIGNACIO
N ULTIMA
LINEA0
35
LINEA1
14
LINEA2
22
LINEA3
32
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
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.
Se
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)
3.4 PROCESAMIENTO DE
LAS INSTRUCCIONES DE
SALTO
Posibilidades para la
instrucciones de salto:
deteccin
temprana
de
las
GESTION DE SALTOS
CONDICIONALES NO RESUELTOS
Definiciones
Predictor 2 correcto
Accin (sobre el
contador de dos
bits)
No
No
No
Si
-1
Si
No
+1
Si
Si
Caractersticas
Hay dos caractersticas importantes del procesamiento
especulativo de instrucciones de salto:
3.4.1.2. Ramificacin
multicamino
En este caso el procesador simplemente
BA
Salto
condicional no
resuelto
BT
A
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
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.
Alternativa
s para
abordar
esta
dificultad
Las
Las
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
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
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
Ciclo10
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
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
IF
ID
EX
WB
(1)
(2)
(3) - (6)
(7)
(1)
(2)
(3) - (9)
(10)
(2)
(3)
(4) - (7)
(8)
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.
Resultados
Unidades
funcionales
Si hay
interrupci
n
Resultados
ROB
Registros de
la
arquitectura
10
11
12
13
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