Está en la página 1de 3

Ejercicios de Pipeline Ejercicio 7

El siguiente código se ejecuta mediante "salto retardado".

l.d f3,16(r0)
daddi r12,r0,10
lw r11,0(r0)
Bucle: l.d f1,0(r11)
add.d f1,f1,f3
s.d f1,0(r11)
daddi r11,r11,8
daddi r12,r12,-1
bnez r12,Bucle
halt

1) Indicar las dependencias de tipo RAW, WAR y WAW.


2) ¿Cuántas veces se ejecutará el bucle del programa anterior?
3) Mostrar el cauce para la primera iteración del bucle, suponiendo que se
dispone de adelantamiento (forwarding).
4) Indicar una reordenación del código que minimice los retardos debidos a
dependencias y que garantice la ejecución completa del programa.
Arquitectura de Computadores Ejercicios de Pipeline - 1

Ejercicios de Pipeline Ejercicio 7


1) Indicar las dependencias de tipo RAW, WAR y WAW.
l.d f3,16(r0)
daddi r12,r0,10
¿Riesgos RAW?
lw r11,0(r0)
bucle: l.d f1,0(r11)
add.d f1,f1,f3 ¿Riesgos WAW?
¿instr. 4 y 5?
s.d f1,0(r11)
daddi r11,r11,8
¿Riesgos WAR?
daddi r12,r12,-1
bnez r12,bucle
halt
Arquitectura de Computadores Ejercicios de Pipeline - 2
Ejercicios de Pipeline Ejercicio 7
2) ¿Cuántas veces se ejecutará el bucle del programa anterior?
CPU con salto retardado
l.d f3,16(r0)
daddi r12,r0,10 Se ejecuta una única vez,
lw r11,0(r0) pues al tener salto retardado,
bucle: l.d f1,0(r11)
la instrucción HALT
se ejecuta inmediatamente
add.d f1,f1,f3
después de instrucción bnez
s.d f1,0(r11)
daddi r11,r11,8
daddi r12,r12,-1
bnez r12,bucle
halt

Arquitectura de Computadores Ejercicios de Pipeline - 3

Ejercicios de Pipeline Ejercicio 7


3) Mostrar el cauce para la primera iteración del bucle, suponiendo
que se dispone de adelantamiento (forwarding).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
l.d f3,16(r0) F D E M W
daddi r12,r0,10 F D E M W
lw r11,0(r0) F D E M W
l.d f1,0(r11) F D D E M W
add.d f1,f1,f3 F F D D E E E E M W
s.d f1,0(r11) F F D D D D E M W
daddi r11,r11,8 F F F F D E M W
daddi r12,r12,-1 F D E M W
bnez r12,bucle F D D E M W
halt F F D E M W

Arquitectura de Computadores Ejercicios de Pipeline - 4


Ejercicios de Pipeline Ejercicio 7
4) Indicar una reordenación del código que minimice los retardos
debidos a dependencias y que garantice la ejecución completa del
programa.
l.d f3,16(r0) lw r11,0(r0)
daddi r12,r0,10 l.d f3,16(r0)
lw r11,0(r0) daddi r12,r0,10
bucle: l.d f1,0(r11) bucle: l.d f1,0(r11)
add.d f1,f1,f3 daddi r12,r12,-1
s.d f1,0(r11) add.d f1,f1,f3
daddi r11,r11,8 daddi r11,r11,8
daddi r12,r12,-1 bnez r12,bucle
bnez r12,bucle s.d f1,-8(r11)
halt halt

Arquitectura de Computadores Ejercicios de Pipeline - 5

También podría gustarte