Organización del Computador I Verano
Riegos de Control en la máquina segmentada
Basado en el capítulo 6 del libro de Patterson y Hennessy
Verano 2004 Profesora Borensztejn
2
Dependencias de Control• Definen el secuenciamiento del programa. La estructura
segmentada asume secuenciamiento implícito (PC=PC+4).
40 beq $1, $3, 60
44 and $12, $2, $5
48 or $13, $6, $2
52 add $14, $2, $2
56 sw $15, 100($2)
60 lw $4,50($7)
• La presencia de una instrucción de salto representa un riesgo para el pipeline.
• Las instrucciones and, or, add y sw deben ejecutarse si la evaluación de la condición de salto es FALSE. En caso contrario, la ejecución continúa a partir de la instrucción lw (60)
3
Etapas de la instrucción de salto
IR<---MEM[PC]; PC<--PC+ 4;
BusA<--R[rs]; BusB<--R[rt];
dst<--- PC+4+ Signext(inm16)*4; Z<-- (BusA==BusB) ;
si (Z) entonces PC<---dst;
• Cálculo de la dirección efectiva: EX
• Evaluación de la condición : EX
• Ejecución del salto: cambio del PC: MEM
4
Camino de Datos con Señales de Control
ExtInm16
RegW
rs
rt
BusW
Registros
5
5
5
LRA
LRB
WR
RegDst
PC
instMemoria de Instrucciones
32
ALUctr
Memoria de Datos
WE
@
W_src
>>
2
Alusrc
Zero
4
32
32
32+
MU
X
PC+4
IF/ID ID/EX EX/MEM MEM/WB
rt
rd
Aluop
Control ALU
Salto
5
Riesgo de Control: Detener
M
M Reg MReg
M
M
M Reg M Reg
Beq $1, $3, 60
NOP
NOP
NOP
And $12, $2, $5
1 2 3 4 5 6 7 8ciclos
El CPI de la instrucción de salto es 4
Latencia
9
6
Reducir latencia: anticipar operaciones
M
M Reg MReg
M
M
M Reg M Reg
Beq $1, $3, 60
NOP
NOP
And $12, $2, $5
Or $13, $6, $2
1 2 3 4 5 6 7 8ciclos
El CPI de la instrucción de salto es 3
Latencia=2
9
Reg M Reg
7
Detección del riesgo y Detener
• La lógica está en ID.
• Hay una instrucción en IF que hay que detener ===> poner a 0 el registro IR de IF/ID y congelar el PC.
• Ecuaciones del Control de Riesgos:• Si (IF/ID.IR.cod==Salto ) PCWrite=0 ; IF.Flush=1
• Si (ID/EX.MEM.Salto=1 ) PCWrite=0 ; IF.Flush=1
• Si (EX/MEM.MEM.Salto=1 ) PCWrite=0 ; IF.Flush=1
8
Detección y DetenciónID/EX
EX/MEM
nop
IF/ID
Salto
Salto
Z
PCsrc
EX/MEM.Salto
ID/EX.Salto
IF/ID.IR.codop
IF.FlushPCWrite
Riesgos de Control
9
Mejora: Suponer Salto no Realizado
M Reg M Reg
M Reg MReg
M Reg M Reg
M Reg M Reg
M Reg M Reg
Beq $1, $3, 60
And $12, $2, $5
Or $13, $6, $2
Add $14, $2, $2
lw $4,50($7)
1 2 3 4 5 6 7 8ciclosSuponemos que el salto no se realiza
Si es correcto, CPI del salto es 1.
Si es incorrecto, hay que eliminar las instrucciones que están en el pipeline. CPI=4
Eliminar !!
10
Mejora: Suponer Salto no Realizado
M Reg
M Reg MReg
M Reg
M
M Reg M Reg
Beq $1, $3, 60
And $12, $2, $5
Or $13, $6, $2
Add $14, $2, $2
lw $4,50($7)
1 2 3 4 5 6 7 8ciclos
Eliminadas !!
11
Detección del error y cancelar
• La lógica está en ID.
• Hay una instrucción en IF, otra en ID, y otra en EX que hay que cancelar ===> señales IFFlush, IDFlush y EXFlush.
• Ecuaciones del Control para el Salto:• Si (EX/MEM.MEM.Salto=1 ) y (EX/MEM.Z=1)
IF.Flush=1; ID.Flush=1; EX.Flush=1;
12
Detección y Cancelar
ID/EX
EX/MEM
nop
IF/IDSalto
Z
PCsrc
EX/MEM.Salto
IR
IF.Flush
PCWrite
Unidad de Control
0M
UX
EX/MEM.Z
0
0
MU
X
MU
XM
UX
EXFlush
ID.Flush
Unidad de Riesgos
13
Salto Retardado• Aproximación basada en el compilador• Redefine el comportamiento del salto: se
ejecuta después de la siguiente instrucción.• El compilador debe insertar instrucciones
después de la instrucción de salto que siempre se ejecutarán.
• Cuantas? Dependiendo de la latencia del salto, la arquitectura define cuantos “branch delay slots”debe rellenar el compilador.
14
Instrucción de Salto Retardado
36 beqd $1, $3, 64
40 sub $10, $4, $8
44 and $12, $2, $5
48 or $13, $6, $2
52 add $14, $2, $2
56 sw $15, 100($2)
60 j 90
64 lw $4,50($7)
36 sub $10, $4, $8
40 beq $1, $3, 64
44 and $12, $2, $5
48 or $13, $6, $2
52 add $14, $2, $2
56 sw $15, 100($2)
60 j 90
64 lw $4,50($7)
15
Salto Retardado
M Reg M Reg
M Reg MReg
M Reg M Reg
Beqd $1, $3, 60
NOP
NOP
lw $4,50($7)
1 2 3 4 5 6 7 8ciclos
La instrucción que sigue al salto siempre se ejecuta
La latencia del salto es 2.
Latencia 2!!
sub $10, $4, $8
16
Salto Retardado: Elección de la instrucción
• Instrucción del Bloque Básico al que pertenece la instrucción de salto
• Instrucción de uno de los dos posibles Bloques Básicos que se ejecutará.
Beqd $1, $3, 60
sub $10, $4, $8
lw $4,50($7)
And $12, $2, $5
or $13, $6, $2
add $14, $2, $2
sw $15, 100($2)
lw $4,50($7)
j 90
17
Salto Retardado: Elección de la instrucción
• Instrucción del Bloque Básico al que pertenece la instrucción de salto
Beqd $1, $3, 60
add $10, $4, $8
Beqd $1, $3, 60
add $10, $4, $8
• La instrucción elegida no debe ser fuente de dependencia con la instrucción que evalúa la condición.
18
Salto Retardado: Elección de la instrucción
• Instrucción perteneciente al Bloque Básico que se ejecuta si se cumple la condición.
#1 : add $10, $4, $8
sub $2, $7, $8
Beq $1, $3, #1
#1: sub $2, $7, $8
Beqd $1, $3, #1
add $10, $4, $8
• La instrucción elegida no debe afectar el estado si no se salta.
add $10, $4, $8
#1: sub $2, $7, $8
Beqd $1, $3, #1
add $10, $4, $8
add $10, $5,$7
add $10, $4, $8
#1: sub $2, $7, $8
Beqd $1, $3, #1
add $10, $4, $8
add $4, $10,$7
19
Salto Retardado: Elección de la instrucción
• Instrucción perteneciente al Bloque Básico que se ejecuta si no se cumple la condición.
Beqd $1, $3, #1
And $12, $2, $5
or $13, $6, $2
add $14, $2, $2
#1:
Beq $1, $3, #1
And $12, $2, $5
or $13, $6, $2
add $14, $2, $2
#1:
• La instrucción elegida no debe afectar el estado si se salta.
And $12, $2, $5
or $13, $6, $2
add $14, $2, $2
#1: Sub $6, $7, $12
Beqd $1, $3, #1
And $12, $2, $5
or $13, $6, $2
add $14, $2, $2
#1: Sub $12, $2, $5
Beqd $1, $3, #1
20
Evaluación de las alternativas de salto
65% (Taken) Realizados Saltos de Frecuencia
14% Saltos de Frecuencia
Esquema Penalización CPI medio Mejora respecto a detener
Detener 3
Suponer
No Efectivo 3
Salto
Retardado 2
21
Salto Retardado• Introducido en 1952! MANIAC I
• Usado en microprogramación
• Reinventado en la RISC-I (Patterson y Sequin, 1981)
• MIPS (1982), RISC-II(1983), MIPS-R desde 1987 hasta ahora ) y AMD 29000 (1987)
• Compiladores llenan el 60 % de los slots con instrucciones útiles.
• Ventajas: cerca de un 10% de mejora
• Desventajas:– aumento en el código: en algunos casos hay que replicar
instrucciones, se insertan NOP’s.
– problemas con las interrupciones: salvar múltiples PC’s
– problemas cuando el procesador se vuelve superescalar:
22
Saltos IncondicionalesIR<---MEM[PC]; PC<--PC+ 4;
dst<--- (inm26)*4;
PC<---dst;
• Cálculo de la dirección efectiva: D
• Ejecución del salto: cambio del PC: D
23
Salto Incondicional
M
M Reg MReg
M Reg M Reg
M Reg M Reg
M Reg M Reg
J 60
nop
60: lw $4,50($7)
Add $14, $2, $2
sw $6,50($7)
1 2 3 4 5 6 7 8ciclos
Un ciclo de latencia
24
EstadísticasDistancia entre Saltos % de Saltos
eqntott 2.86 35%
espresso 4.81 20.8%
li 6.06 16.5%
Media 4.57 21.9%
doduc 10.59 9.4%
matrix 3000 5.05 19.8%
nasa 7 10.72 9.3%
spice 2g6 3.27 30.6%
tomcatv 16.28 6.0%
Media 9.18 10.9%
FIN Riesgos de Control