Tema 4: Soluciones a los ejercicios - myTeachingURJC/Arq-computadores-01 GitHub Wiki
Soluciones a los ejercicios del Tema 4: Segmentación
Contenido
S14: Segmentación y rendimiento
Soluciones a los ejercicios propuestos en la S14: Segmentación y rendimiento
Ejercicio 1
- Apartado a) En el procesador monociclo, la frecuencia maxima de funcionamiento está determinada por la instrucción más lenta, que es la de load porque incluye las mismas fases que el resto de instrucciones más el acceso a memoria. A partir de los datos de la tabla tenemos que el retardo de la instrucción crítica es de: 220 (Fetch) + 100 (Decod) + 80 (Ejecucion) + 400 (Memoria) + 0 (Write-back) = 800 ps
La frecuencia máxima por tanto es de 1 / 800ps = 1 / 0.8 ns = 1.25 GHz
-
Apartado b) En la implementación segmentada del NanoRisc-V utilizamos 5 etapas (las 5 etapas que conocemos) y elegimos como periodo el de la etapa peor. Mirando la tabla vemos que la etapa más lenta es la de acceso a memoria, con un tiempo de 400ps. La frecuencia máxima de funcionamiento es de 1/400ps = 1 / 0.4ns = 2.5Ghz
-
Apartado c) El CPI será igual al número total de ciclos que tarda el programa de prueba dividido entre el número de instrucciones. CPI = Ciclos totales / 1000
La primer instrucción tarda 5 ciclos, pero el resto de instrucciones (las 999 restantes) se ejecutan en un único ciclo de reloj. Esa es la magia de la segmentación. Por tanto el CPI = (5 + 999) / 1000 = 1004 / 1000 = 1.004 (que lo aproximamos por 1). CPI=1
-
Apartado d) La mejora del rendimiento la calculamos aplicando la fórmula que ya conocemos: n = Tiempo monociclo/Tiempo segmentado. El tiempo que tarda el monociclo en ejecutar las 1000 instrucciones es de: Tmono = (1000 * CPImono) / Fmono = (1000 * 1) / 800ns. El tiempo que tarda el segmentado es de Tseg = (1000 * CPIseg) / Fseg = (1000 * 1) / 2.5 = 400ns. La mejora del rendimiento es de n = 2. La implementación segmentada es el doble de rápida que la versión monociclo
S15: NanoRisc-V segmentado
Soluciones a los ejercicios propuestos en la S15: NanoRISC-V segmentado
Ejercicio 1
-
Apartado a) Se trata de un computador RISC-V monociclo, por lo que su CPI es de 1 (cada instrucción tarda un ciclo de reloj). Como sólo hay una instrucción, el tiempo que se tarda es igual al perido del reloj. Ta = 1/Fa = 1 / 1Gz = 1ns
-
Apartado b) El computador B es un RISC-V segmentando, de 5 etapas. Cada etapa se ejecuta en un tiempo igual a 1/b. La instrucción se completa transcurridos 5 ciclos de reloj, por lo que el tiempo que se tarda es: Tb = 5 * 1 / Fb = 5 / 3Ghz = 1.7ns (aprox)
-
Apartado c): El rendimiento relativo es: n = Tb / Ta = 1.7 / 1 = 1.7. Utilizando ese programa de prueba, el rendimiento del computador A (Monociclo) es 1.7 veces mejor que el rendimiento del computador B (segmentado)
Ejercicio 2
-
Apartado a) Es un RISC-V monociclo, por lo que CPI es 1. Hay 2 instrucciones, por lo que tarda 2 ciclos en completarse. Como la frecuencia es de 1Ghz, Ta = 2 * 1ns = 2 ns
-
Apartado b) La primera instrucción tarda 5 ciclos en ejecutarse, pero en ese tiempo el pipeline se ha llenado. En el siguente ciclo se completa la segunda instrucción. Por tanto, el programa tarda 6 ciclos en ejecutarse. Tb = 6 * 1/Fb = 6 * 1/Fb = 6 / 3 = 2 ns
-
Apartado c). El rendimiento relativo es 1. Es decir, que ambos computadores tienen el mismo rendimiento al ejecutar ese programa
Ejercicio 3
El programa de prueba está formado por 2 pseudo-instrucciones. Vamos a convertirlo primero a sus instrucciones básicas:
addi x5,x0,5
add x6,x0,x5
Observamos que en este programa existe riesgo de datos, por lo que hay que tenerlo en cuenta en los procesadores segmentados
-
Apartado a) En el computador A, monociclo, no hay ningún problema, ya que la ejecución secuencial. Hasta que no se termina de ejecutar la primera instrucción no se pasa a la segunda. El ensamblador no tiene que modificar nada. El programa usado será el mismo. Por tanto, el programa tarda 2 ciclos. El tiempo es: Ta = 2 * 1/Fa = 2 * 1ns = 2 ns
-
Apartado b) Este mismo programa NO funcionará correctamente en el computador B debido al riesgo de datos. Para que funcione correctamente el ensamblador debe insertar 3 instrucciones nop. Como NO hay adelantamiento de datos, sólo se puede resolver el problema por software. LO hará el ensamblador. El programa real a ejecutar será por tanto este:
addi x5,x0,5
nop
nop
nop
add x6,x0,x5
Este programa tarda en total 5 + 4 = 9 ciclos en ejecutarse (La primetra instrucción tarda 5 ciclos y el resto sólo 1). Tb = 9 * 1 / Fb = 9 / 3 = 3ns
- Apartado c) En el computador C el riesgo de datos sigue existiendo, pero se soluciona exclusivamente por hardware, porque tiene adelantamiento de datos. En este caso el programa ensamblador NO tiene que añandir nada por lo que el programa a ejecutar será este:
addi x5,x0,5
add x6,x0,x5
El tiempo que tarda el programa en ejecutarse es: Tc = 6 * 1/Fc = 6 / 3 = 2ns
Autores
- Katia Leal Algara
- Juan González-Gómez (Obijuan)