Ejercicios II
Problema 1
Se tienen dos implementaciones del mismo juego de instrucciones. Hay cuatro clases de
instrucciones: A, B, C y D. La frecuencia de reloj y el CPI de cada implementación se muestran
en la siguiente tabla:
Fr CPI A CPI B CPI C CPI D
1 4 GHz 1 2 3 3
2 2 GHz 1 2 2 3
Dado un programa con 106 instrucciones dividas en las siguientes clases:
o 10% clase A
o 30% clase B
o 40% clase C
o 20% clase D
Calcular tiempo de ejecución en la implementación 1 y en la 2. ¿Qué implementación es la más
rápida? ¿Por cuánto más? Comenta brevemente el resultado en base a los parámetros de cada
una de las implementaciones.
Tcpu1 = 0,625 ms
CPI1 = 2,5
Tcpu2 = 1,05 ms
CPI2 = 2,1
Speedup = 0,6 < 1 La implementación 1 es mejor que la implementación 2. Aunque el CPI de
la implementación 2 es menor que el de la implementación 1, no compensa el hecho de que la
CPU 1 sea el doble de rápida que la CPU 2.
Problema 2
Dado el siguiente código en lenguaje C, y teniendo en cuenta que la variable h se asigna al
registro s2 (registro 18) y que el array A almacena datos de tamaño 4 bytes y que su dirección
base se encuentra en s1 (registro 9):
A[300] = A[300] - h;
¿Cuál es la secuencia de instrucciones RISC-V necesarias para ejecutar esta sentencia en C?
Incluye un comentario junto a cada línea de tu programa que comience con el carácter ‘#’ para
indicar qué hace cada instrucción.
Los elementos del array A son de tamaño palabra, de tipo Word, 4 bytes.
h è s2, dir. base A è s1
lw t0, 1200(s1) # t0 = A[300]
sub t0, t0, s2 # t0 = t0 – s2
sw t0, 1200(s1) # A[300] = t0
Problema 3
Se diseña un procesador con las siguientes latencias para los módulos de la ruta de datos:
Registros
MI ALU BR MD
intermedios
Lectura: 250ps
200ps 10ps 120ps 90ps
Escritura: 300ps
Si podemos mejorar un 15% la latencia de uno de los componentes de la ruta de datos, ¿qué
componente sería? Calcula el tiempo de ejecución en un procesador monociclo, sin y con la
mejora (debes indicar el valor de cada uno de los parámetros de la ecuación). ¿Hay ganancia?
Comenta el resultado.
Si pudiéramos mejorar la latencia de uno de los componentes, sería el de aquél con una
latencia mayor, esto es, la memoria de datos. Por lo tanto, la latencia de la lectura de la
memoria de datos sería 212,5 ps y la escritura 255.
Monociclo, CPI = 1, período de reloj = tiempo ejecución instrucción más lenta
Psin = tiempo que tarda en completarse la instrucción load
Pload = 750 ps
Pstore = 710 ps
Pcon = tiempo que tarda en completarse la instrucción load
Pload = 712,5 ps
Pstore = 665 ps
Speedup = 1,05 > 1 è Hay un poco de ganancia por mejorar la MD.
Problema 4
El siguiente código se ejecuta en el nanoRISC-V segmentado con adelantamiento para riesgos
de datos y de control.
1 loop: lw t1,A(t0)
2 beq t1,zero,end
3 lw t2,B(t0)
4 lw t2,B(t0)
5 add t3,t1,t2
6 sw t3,A(t0)
7 sw t1,B(t0)
8 end: addi t0,t0,4
9 bne t0,s0,loop
Indica las instrucciones que producen dependencias, el número de parones introducidos por la
dependencia y, en su caso, sobre qué registro y entre qué etapas se produce el
adelantamiento. Si suponemos que ya se han realizado los ciclos de llenado, calcula el CPI para
las dos posibles secuencias de instrucciones. ¿Se podría utilizar alguna otra mejora hardware
para reducir el número de parones? Explica en qué consiste dicha mejora y recalcula el CPI
para el mejor y el peor de los casos para las dos secuencias, también debes indicar la ganancia.
nanoRISC-V segmentado con adelantamiento para riesgos de datos y de control
Secuencia 1: tiene 9 instrucciones, por lo tanto, si no se tienen en cuenta los ciclos de
llenado, la secuencia 1 necesita 9 ciclos para completarse.
1 loop:lw t1,A(t0) è RAW 1-2, MèD, 2 pd
2 beq t1,zero,end
è 1 pc
3 lw t2,B(t0)
4 lw t2,B(t0) è RAW 4-5, MèX, 1 pd
5 add t3,t1,t2 è RAW 5-6, MèM, 0 pd
6 sw t3,A(t0)
7 sw t1,B(t0)
8 end: addi t0,t0,4 è RAW 8-9, XèD, 1 pd
9 bne t0,s0,loop
è 1 pc
CPI1 = 1,67
Secuencia 2: tiene 4 instrucciones, por lo tanto, si no se tienen en cuenta los ciclos de
llenado, la secuencia 2 necesita 4 ciclos para completarse.
1 loop:lw t1,A(t0) è RAW 1-2, MèD, 2 pd
2 beq t1,zero,end
è 1 pc
8 end: addi t0,t0,4 è RAW 8-9, XèD, 1 pd
9 bne t0,s0,loop
è 1 pc
CPI2 = 2,25
Con predicción de salto estática. La predicción de salto estática puede ser de salto no
tomado (se comienza a ejecutar la siguiente instrucción, para lo cual necesitamos conocer su
dirección) y de salto tomado (se comienza a ejecutar la instrucción destino de salto, para lo cual
necesitamos conocer su dirección). En el caso del nanoRISC-V pasada la etapa F ya sabemos la
dirección de la siguiente instrucción (PC+4), por lo que ya podríamos comenzar su ejecución.
Sin embargo, hasta que no finaliza la etapa D no conocemos la dirección de la instrucción
destino de salto, por lo tanto, en el caso del nanoRISC-V sólo nos interesa aplicar la técnica de
SALTO NO TOMADO, puesto que es la única forma de eliminar el parón de control que nos
queda. Mejor caso: se aciertan todas las predicciones. Aunque esta posibilidad no sea real, nos
proporciona el mejor CPI para la secuencia. El peor caso sería cuando se fallan todas las
predicciones, como si no se aplicase predicción de salto estática.
CPI1 = 1,44
CPI2 = 1,75
El valor real del CPI1 oscilará entre 1,44 y 1,67.
El valor real del CPI2 oscilará entre 1,75 y 2,25.
Problema 5
Se tiene una jerarquía de memoria con un único nivel de memoria caché que emplea post-
escritura y buffer de escritura. El tiempo de acceso a memoria caché es de 8ns, el tamaño de
bloque es de 24 palabras y la tasa de fallo del 9%. Se trata de post-escritura con ubicación,
siendo el porcentaje de bloques modificados del 8% y una probabilidad de acierto del buffer de
escritura del 92%. Por último, la latencia de acceso a la memoria principal es 98 ns. Haz un
esquema que refleje la relación entre los elementos de la jerarquía de memoria y la CPU y
completa la siguiente tabla indicando el tráfico con el siguiente nivel de la jerarquía. Se deben
indicar claramente las acciones y el orden en que se realizan.
Tipo de acceso Acciones Tráfico siguiente nivel
Calcula el tiempo medio de acceso a dicha jerarquía de memoria.
Tipo de acceso Acciones Tráfico con MP
Acierto de lectura o escritura 1. Leer o escribir 1 palabra en L1 0 palabras
Fallo de lectura o escritura + 1. Traer bloque fallo de MP a L1 24 palabras
reemplazo de bloque limpio 2. Leer o escribir 1 palabra en L1
Fallo de lectura o escritura + 1. Volcar bloque sucio en buffer 24 palabras
reemplazo de bloque sucio + 2. Traer bloque fallo de MP a L1
acierto buffer 3. Leer o escribir 1 palabra en L1
Fallo de lectura o escritura + 1. Volcar bloque sucio en MP 24 + 24 palabras
reemplazo de bloque sucio + 2. Traer bloque fallo de MP a L1
fallo buffer 3. Leer o escribir 1 palabra en L1
Tmem = 221,04 ns