Examen: Parcial 1:2024_02_26:Robotica - myTeachingURJC/Arq-computadores-01 GitHub Wiki
Examen Parcial 1: 2024-02-26. Robótica
- Tiempo: 45 minutos
- Tipo de examen: Presencial. Realizado a través de Aula Virtual. Acceso a la wiki (Internet)
- Temario: S1-S3
Contenido
Enunciado
El examen se ha realizado a través de Aula virtual. Tiene dos partes: Test y un problema
Test (5 ptos)
- Realizado a través de Aula virtual
- 10 preguntas tipo test
- Las respuesats incorrectas restan un 25% del valor de la pregunta
- Solución disponible en Aula virtual
Problema (5 ptos): Rendimiento
Una empresa de robótica nos ha contratado para mejorar el rendimiento de una aplicación para su robot, que se ejecuta en un computador con procesador RISCV que funciona a la frecuencia de 1Ghz.
Por especificaciones de la empresa, el computador no se puede cambiar. Por tanto, habrá que mejorar el rendimiento cambiando el compilador. Para ello vamos a evaluar los compiladores A y B
El fabricante del procesador nos proporciona información sobre los CPIs de las instrucciones, que se dividen en 3 grupos: Instrucciones de tipo 1, 2 y 3
Instrucción | CPI |
---|---|
Tipo 1 | 1.2 |
Tipo 2 | 2 |
Tipo 3 | 1 |
La aplicación del robot se compila con ambos compiladoras A y B. En esta tabla se resume el resultado de los programas ejecutables generados con cada compilador, desglosados en sus tipos de instrucciones
Compilador | Instrucciones totales | Tipo 1 | Tipo 2 | Tipo 3 |
---|---|---|---|---|
A | 5000 | 1500 | 1500 | 2000 |
B | 6000 | 1200 | 1800 | 3000 |
Se pide:
a) (1 pto). ¿Cuantos ciclos tarda en ejecutarse la aplicación cuando se usa el compilador A?
b) (1 pto). ¿Cuanto tiempo tarda la aplicación cuando se usa el compilador A?
c) (1 pto). ¿Cuantos ciclos tarda en ejecutarse la aplicación cuando se usa el compilador B?
d) (1 pto). ¿Cuanto tiempo tarda la aplicación cuando se usa el compilador B?
e) (1 pto). Calcula el rendimiento relativo. ¿Qué compilador elegirías?
NOTA: Justifica todas las respuestas, indicando las ecuaciones y razonamiento usados
Solución al problema
a) (1 pto). ¿Cuantos ciclos tarda en ejecutarse la aplicación cuando se usa el compilador A?
Cada grupo de instrucción de un tipo dado tardará en total: I * CPI ciclos. Sumando todos los ciclos obtenemos el total:
Ciclos totales = ciclos instrucciones tipo 1 + ciclos instrucciones tipo 2 + ciclos instrucciones tipo 3 =
I1 * CPI1 + I2 * CPI2 + I3 * CPI3 = 1500 * 1.2 + 1500 * 2 + 2000 * 1 = 6800 Ciclos
La aplicación tarda 6800 ciclos cuando se usa el compilador A
b) (1 pto). ¿Cuanto tiempo tarda la aplicación cuando se usa el compilador A?
La frecuencia del procesador es F = 1Ghz
El tiempo será:
Tcpu = Ciclos / F = 6800 / 1Ghz = 6800 ns = 6.8µs
La aplicación tarda 6.8µs en ejecutarse cuando se usa el compilador A
c) (1 pto). ¿Cuantos ciclos tarda en ejecutarse la aplicación cuando se usa el compilador B?
El cálculo es el mismo que para el apartado 1:
Ciclos totales = 1200 * 1.2 + 1800 * 2 + 3000 * 1 = 8040 Ciclos
La aplicación tarda 8040 ciclos cuando se usa el compilador B
d) (1 pto). ¿Cuanto tiempo tarda la aplicación cuando se usa el compilador B?
Tcpu = Ciclos / F = 8040 / 1 Ghz = 8040 ns = 8.04µs
La aplicación tarda 8.04µs en ejecutarse cuando se usa el compilador A
e) (1 pto). Calcula el rendimiento relativo. ¿Qué compilador elegirías?
Rendimiento relativo n = Rendimiento A / Rendimiento B = 8.04µs / 6.8µs = 1.18 (aprox)
El compilador A genera un código que es 1.18 veces más rápido que el generado por el compilador B. Por tanto, elegiría el Compilador A
Autores
- Juan González-Gómez (Obijuan)