Professional Documents
Culture Documents
• Riesgos
1. Riesgos estructurales
2. Riesgos por dependencia de datos
a. LDE (RAW)
b. EDL (WAR)
c. EDE (WAW)
3. Riesgos Control
Dependencias de Datos..
Tipos de dependencias:
Operandos en memoria:
• i es un lw que lee una posición de memoria y j es un sw que escribe en
la misma posición. Aunque hay una antidependencia entre i y j, no hay
riesgo porque i lee primero y j escribe luego
ck 1 ck 2 ck 3 ck 4 ck 5 ck 6 ck 7 ck 8
tiempo
Mulf f2, f4, f5 BI DI MF1 MF2 MF3 MF4 M PE
f 2 incorrecto! guarda
Escribe f 2 un valor “obsoleto”
Addf f2,f3,f5 BI DI SF1 SF2 M PE
Riesgos de Datos: EDE...
Posibles soluciones:
1) Detención de addf hasta que mulf escriba en el ciclo 8...
addf escribiría luego en el ciclo 9
ck 1 ck 2 ck 3 ck 4 ck 5 ck 6 ck 7 ck 8 ck 9
mulf f2, f4, f5 tiempo
BI DI MF1 MF2 MF3 MF4 M PE
Escribe f 2
Escribe f 2
addf f2, f3, f5
BI DI SF1 SF2 M PE
Tiempo(ciclos)
ALU
i add r1 ,r2,r3 Im Reg Dm Reg
ALU
Im Reg Dm Reg
i+1 sub r4, r1 ,r3
Debe esperar dos ciclos
ALU
Im Reg Dm Reg
i+2 and r6, r1 ,r7
Debe esperar un ciclo
ALU
Im Reg Dm Reg
i+3 or r8, r1 ,r9
¿ Puede progresar?
ALU
Im Reg Dm Reg
i+4 xor r10, r1 ,r11
ALU
i add r1 ,r2,r3 Im Reg Dm Reg
ALU
Im Reg Dm Reg
i+1 sub r4, r1 ,r3
ALU
Im Reg Dm Reg
i+2 and r6, r1 ,r7
ALU
Im Reg Dm Reg
i+3 or r8, r1 ,r9
ALU
Im Reg Dm Reg
i+4 xor r10, r1 ,r11
Program
execution order
WB
EX/MEM
Control
Instrucción
MEM/WB
M WB
EX EX: Ejecución/ M WB
Calculo de Dir. MEM: Acceso a
Memoria
ID: Decodificación/
MUX
Lectura de Reg A
AluScr
RA busA ADDR DR 0
ALU
Anticipar A
MUX
1
Ex.IR[15:0]
Memoria
Banco de
registros
datos
RB
MUX 1
MUX
RW B
0
busW busB DW
Rs
Rt Anticipar B
Rt
EX/MEM Rd MEM/WB Rd
MUX
Rd
Unidad de
Cortocircuito
o Forwarding
unit
Riesgos LDE: Loads
IF ID/RF EX MEM WB
ALU
Reg Reg
lw $3,0($1) I D
ALU
sub $5,$3,$2 I Reg D Reg
lw $2, 20($1) IM R eg DM R eg
bubble
Hazard ID/EX.MemRead
detection
unit ID/EX
WB
I F /I D Writ e
EX/MEM
M
Control u M WB
x MEM/WB
0
IF/ID EX M WB
P CW rite
M
Instruction
u
x
Registers
Instruction Data
PC ALU
memory memory M
u
M x
u
x
IF/ID.RegisterRs
IF/ID.RegisterRt
IF/ID.RegisterRt Rt
M EX/MEM.RegisterRd
IF/ID.RegisterRd Rd u
x
ID/EX.RegisterRt Rs Forwarding MEM/WB.RegisterRd
Rt unit
Riesgos de Datos...
Ejemplo:
...
I1 load R1, -4($R8)
NOP
...
NOP
I1 load R1, -4($R8)
I2 add R3,R2,R1
I2 add R3,R2,R1
NOP
I3 mul R5,R4,R3
NOP
I4 add R3,R3,#1
I3 mul R5,R4,R3
...
I4 add R3,R3,#1
...
Riesgos de Datos...
Prevención de la Dependencia de Datos: Solución SW2
Ejemplo
... ...
I1 load R7,0($R8) I2 add R3,R1,R2
I2 add R3,R1,R2 I1 load R7,0($R8)
I3 mul R5,R3,R4 I4 load R1,-4($R8)
I4 load R1,-4($R8) I3 mul R5, R3,R4
I5 load R2,10(R6) I5 load R2,10(R6)
... ...
Si no se pueden reordenar las instrucciones sin alterar la lógica del
programa,(ver ejemplo anterior) el compilador elimina los riesgos
insertando “nops”.
Riesgo de Datos: Solución Software
Soluciones:
U
AL
e Im Re Me Re
Add g m g
n
U
AL
d Im Re Me Re
Beq g m g
e
U
AL
i Load Pérdida
Im Re Me Re
n de g m g
s ciclos
t.
equivaldría
a hacer Tiempo (ciclos)
ALU
Sub r1,r2,r3 Im Reg Mem Reg
ALU
Beq r1, loop Im Reg Mem Reg
ALU
Load Im Reg Mem Reg
ALU
Im Reg Mem Reg
Solo se espera un ciclo para iniciar
la instrucción que sigue al salto
Riesgos de control
El salto se resuelve
en la etapa MEM
Tal y como está diseñado “hasta ahora” el DLX..
“tomar salto”
0
MUX
PcSrc
“dirección de salto”
1
Sumador
Branch
MentoRe
+4 Reg Write
g
<<2
RA Zero
PC
busA
instrucciones
Banco de
registros
ADDR RB
Memoria
AluScr
ADDR DR 0
ALU
DR RW
MUX
busB
Memoria
0
datos
busW
MUX
1
1
DW
Extensión
de signo
ALUop MemRead
Ins. [20-16]
MUX
Ins. [15-11]
Riesgos de control
soluciòn nº 1 “mejorada”...
1 Mover bloque HW
Sumador
Sumador
+4
<<2
RA Zero
PC
bus
instrucciones
Banco de
registros
ADDR RB A
Memoria
D
ADDR
ALU
0
DR RW R
MUX
Memoria
busB 0
datos
busW
MUX
1
1 D
W
Extensión
de signo
Riesgos de control
Segunda opción o solución nº2: Predicción de saltos
PREDICCIÓN ESTÁTICA
Dos altennativas: Lo más sencillo es suponer que
Suponer que siempre se toma el salto no se tomará (PC+4 ya
la bifurcación (hay situaciones está calculado). Se continúa
en las que casi siempre se salta) en el cauce con la instrucción
Suponer que nunca se toma la siguiente en la secuencia.
bifurcación (hay situaciones en Si el salto se toma, se
las que casi nunca se salta) descartan las instrucciones en
ejecución.
PREDICCIÓN DINÁMICA
Programa
0
MUX
1
ID/EX
Sumador
Problema de Forwarding:
Sumador
IF/ID
Usar circuito similar al de
las dependencias LDE
+4
<<2
RA
PC
bus
instrucciones
Banco de
ADDR registros A
RB
Memoria
ALU
DR RW
MUX
busB 0
busW
MUX
1
=?
1
Bra
NOP
nch
Extensión
de signo
Riesgos de control
Tomado
No tomado
Predecir tomado Predecir tomado
Tomado
Tomado No
tomado
No tomado
Predecir no tomado Predecir no tomado
Tomado
No
tomado
Riesgos de control
ALU
e Im Reg Mem Reg
n
Add
ALU
Beq Im Reg Mem Reg
d
e
ALU
Cq. inst. no Im Reg Mem Reg
i depend. del salto
n
ALU
s Load Im Reg Mem Reg
t.
0
MUX
1
ID/EX
Sumador
Sumador
IF/ID
+4
<<2
RA
PC
bus
instrucciones
Banco de
ADDR registros A
RB
Memoria
ALU
DR RW
MUX
busB 0
busW
MUX
1
=?
1
Branch
NOP
Extensión
de signo