0% encontró este documento útil (0 votos)
57 vistas4 páginas

Análisis de Rendimiento en Procesadores RISC-V

El documento presenta varios problemas relacionados con el rendimiento de implementaciones de juegos de instrucciones, la optimización de latencias en procesadores, la ejecución de código en RISC-V y el análisis de jerarquías de memoria. Se calculan tiempos de ejecución, CPI y speedup para diferentes implementaciones y se discuten las dependencias en el código, así como las mejoras posibles en la predicción de saltos. Finalmente, se analiza el tiempo medio de acceso a una jerarquía de memoria con caché y se detallan las acciones y tráfico asociado.

Cargado por

chatgptsebi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
57 vistas4 páginas

Análisis de Rendimiento en Procesadores RISC-V

El documento presenta varios problemas relacionados con el rendimiento de implementaciones de juegos de instrucciones, la optimización de latencias en procesadores, la ejecución de código en RISC-V y el análisis de jerarquías de memoria. Se calculan tiempos de ejecución, CPI y speedup para diferentes implementaciones y se discuten las dependencias en el código, así como las mejoras posibles en la predicción de saltos. Finalmente, se analiza el tiempo medio de acceso a una jerarquía de memoria con caché y se detallan las acciones y tráfico asociado.

Cargado por

chatgptsebi
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte