Examen: 2024_06_17:TELECO - myTeachingURJC/Arq-computadores-01 GitHub Wiki
Examen convocatoria Extraordinaria: 2024-06-17. GISAM
- Tiempo: 2h
- Tipo de examen: Presencial. Realizado a través de Aula Virtual. Acceso a la wiki (internet)
- Objetivo:
- Resolver el problema de examen de la convocatoria ordinadira de GISAM, con fecha 2022/Junio/29
Contenido
Enunciado
El examen se ha realizado a través de Aula virtual
Problema 1 (2.5 ptos): Rendimiento
Tenemos que elegir el procesador de un sistema empotrado de entre 3 opciones que nos da el fabricante (Procesador A, Procesador B y Procesador C), cuya ficha de características se detalla a continuación.
CPU | Freq (Ghz) | CPI |
---|---|---|
A | 2.5 | 1 |
B | 4 | 2.5 |
C | 3 | 1.5 |
Para determinar cuál es mejor, escribimos un programa simple, que simula el funcionamiento del dispositivo final, el cual traducimos a lenguaje ensamblador mediante el compilador de cada procesador, obteniendo el siguiente número de instrucciones para cada procesador.
CPU | Nº Instr. |
---|---|
A | 4000 |
B | 2000 |
C | 3000 |
Responde a las siguientes preguntas:
a) Calcula el número de ciclos de reloj totales que tarda cada computador en ejecutar el programa de pruebas (0.5)
b) Si sólo tuviésemos en cuenta el número de ciclos totales, ¿Qué computador elegirías? (0.5)
c) Calcula el tiempo de CPU total que tarda cada computador en ejecutar el programa de pruebas (0.5)
d) A partir de los datos obtenidos en los apartados anteriores, indica qué computador es el más rápido, y cuánto más rápido es uno sobre el otro (0.5)
e) Suponiendo que no podemos modificar ni el CPI y ni la frecuencia de cada computador, ¿Cómo podríamos mejorar los resultados del computador C? (0.5)
Problema 2 (2.5 ptos): Ordenacion/alineaiento/direccionamiento
Tenemos un computador de 32-bits que dispone de 32 registros de propósito general (x0-x31). La ordenación que usa es big-endian. Para acceder a los datos de la memoria utiliza un direccionamiento indirecto con desplazamiento. Puede acceder tanto a datos alineados como no alineados. Estas son algunas de las instrucciones disponibles:
li rd, valor
: Carga del valor inmediato en el registro rdlb rd, off(rs1)
: Leer un byte de memoria y guardarlo en rdlh rd, off(rs1)
: Leer una media palabra de memoria y guardarla en rdlw rd, off(rs1)
: Leer una palabra de memoria y guardarla en rdsb rs1, off(rs2)
: Almacenar en memoria el byte que hay en rs1sh rs1, off(rs2)
: Almacenar en memoria la media palabra que hay en rs1sw rs1, off(rs2)
: Almacenar en memoria la palabra que hay en rs1
Este es un volcado de la memoria, correspondiente a las direcciones que comienzan en 0xE010 y 0xF000. Los valores están en HEXADECIMAL
Dir | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x1A00 | A1 | A2 | A3 | A4 | 10 | 0F | 0E | 0D | 0C | 0B | 0A | AA | AB | CA | 00 | CB |
0x1B00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Se pide:
a) (1 pto) Indicar el valor de los registros del x1 al x4 cuando se ejecutan estas instrucciones (secuencialente):
li x1, 0x1A02
lb x2, 7(x1)
lh x3, 3(x1)
lw x4, 2(x1)
b) (1 pto) Suponiendo que inicialmente los registros del x1 al x4 contienen los siguientes valores: x1=0
, x2=0xBB
, x3=0x1234
, x4=0xAB12CD34
Escribe el contenido de los 16 bytes de memoria situados desde la dirección 0x1B00 en adelante al terminar de ejecutarse las siguientes instrucciones:
li x1, 0x1B00
sb x2, 8(x1)
sh x3, 9(x1)
sw x4, 0xD(x1)
c) (0.5 ptos) Indica el número de accesos de memoria de cada instrucción del apartado a)
Pregunta 3 (2.5 Puntos): Circuitos lógicos
Dado el siguiente circuito
a) Calcula el retardo de la parte combinacional (0.5)
b) Calcula la frecuencia máxima de funcionamiento a la que podría funcionar (0.5)
c) Si inicialmente todas las señales están a 0, indica el valor del registro transcurridos 3 ciclos de reloj. La señal Sel está todo el tiempo a 0 y el valor inicial del registro es 0 (0.5)
d) ¿Qué ocurre cuando Sel se pone a 1 durante varios ciclos de reloj? (0.5)
e) Si inicialmente todas las señales están a 0, ¿cuánto tiempo tardará el registro en volver a almacenar el valor 0? La señal Sel está todo el tiempo a 0 y la frecuencia del reloj es de 10MHz (0.5)
Problema 4 (2.5 ptos): Computador nanoRiscV
Se ha construido el procesador NanoRISC-V monociclo cuyo esquema se muestra en la figura. El ingeniero Hardware nos ha proporcionado los siguientes datos sobre los componentes usados:
Componente | Retardo |
---|---|
Memoria de instrucciones | 140ps |
Sumador | 80ps |
ALU | 120ps |
Memoria de datos | 250ps |
Banco de registros | 90ps |
Registro PC | 60ps |
Se pide:
a) Calcula el retardo de las fases Fetch y Decodificación
b) Calcula el retardo de la instrucción addi x0, x0, 0
c) Calcula el retardo de la instrucción ld x5, 0x100(x2)
d) Cuál es la frecuencia máxima de funcionamiento de este procesador?
e) Al fabricar los procesadores, un fallo en el proceso hace que el multiplexor situado entre el banco de registros y la ALU tenga un retardo de 10ps. ¿Afectará este error a la frecuancia máxima?¿En caso de afectar, cuál será la nueva frecuencia máxima?
Figura:
Solución al examen
Problema 1 (2.5 ptos): Rendimiento
a) Calcula el número de ciclos de reloj totales que tarda cada computador en ejecutar el programa de pruebas (0.5)
Hay que multiplicar los CPI de cada computador con el número de intrucciones que tiene su programa ejecutable:
Computador | CPI | Instrucciones | Ciclos de reloj totales |
---|---|---|---|
A | 1 | 4000 | 4000 |
B | 2.5 | 2000 | 5000 |
C | 1.5 | 3000 | 4500 |
b) Si sólo tuviésemos en cuenta el número de ciclos totales, ¿Qué computador elegirías? (0.5)
Si sólo disponemos de ese dato, el computador que mejores valores presenta es el A, ya que es el que tarda menos ciclos de reloj. Por supuesto esta medida es engañosa. Necesitamos más información para determinar de verdad cuál es el que tiene mejor rendimiento
c) Calcula el tiempo de CPU total que tarda cada computador en ejecutar el programa de pruebas (0.5)
Hay que multiplicar los ciclos totales que tarda el programa por el periodo de reloj de cada computador
Tcpu = Ciclos / Freq
Computador | Ciclos | Freq (GHZ) | Ciclos/Freq (μs) |
---|---|---|---|
A | 4000 | 2.5 | 1.6 |
B | 5000 | 4 | 1.25 |
C | 4500 | 3 | 1.5 |
d) A partir de los datos obtenidos en los apartados anteriores, indica qué computador es el más rápido, y cuánto más rápido es uno sobre el otro (0.5)
El computador más rapido es el B, ya que es el que menos tiempo tarda en ejecutar el programa de pruebas (1.25μs). Para saber cuánto más rápido es con respecto a los otros computadores utilizamos el rendimiento relativo:
n1 = RendC/RendA = TcpuA / TcpuC = 1.6 / 1.25 = 1.28 (aprox) n2 = RendC/RendB = TcpuB / TcpuC = 1.5 / 1.25 = 1.2 (aprox)
El computador B es aproximadamente 1.28 veces más rápido que el A, y 1.2 veces más rápido que el C
e) Suponiendo que no podemos modificar ni el CPI y ni la frecuencia de cada computador, ¿Cómo podríamos mejorar los resultados del computador C? (0.5)
Podemos mejorar su rendimiento tocando la partes software: el compilador. Si optimizamos el compilador para que produzca menos instrucciones en su salida, bajará el número de ciclos totales y por tanto el tiempo de ejecución
Problema 2 (2.5 ptos): Ordenacion/alineaiento/direccionamiento
a)
x1 = 0x1A02
. Asignado por la instruccion li (direccionamiento inmediato)x2 = 0x0B
. Se lee el Byte situado en la direccion 1A02 + 7x3 = 0x0F0E
. Se lee la media palabra (2 bytes) de la direcion 1A02 + 3. El byte de E011 es el de mayor peso (0F)x4 = 0x100F0E0D
. Se lee la palabra (4 bytes) de la direccion 1A02 + 2. El byte de E014 es el de mayor peso (10)
b)
- Se accede siempre a la direccion base 0x1B00
- El byte 0xBB se guarda en 0x1B00 + 8
- La media palabra 0x1234 se guarda en F000 + 9. En 0x1B00 se almacena el byte de menor peso (01)
- La palabra 0xAB12CD34 se guarda en F000 + D. En 0x1B00 se almacena el byte de menor peso (10). El byte 34 se almacenaría en la dirección 0x1B10, que está fuera de las direcciónes de memoria que se piden.
El contenido de la memoria es (comenzando por la dirección F000) en una tabla:
Dir | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x1B00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | BB | 12 | 34 | 0 | 0 | AB | 12 | CD |
c) (0.5 ptos) Indica el número de accesos de memoria de cada instrucción del apartado a)
- La instrucción
li
no accede a memoria - La instrucción
lb
siempre provoca un acceso a memoria - La instrucción
lh
provoca un acceso a memoria ya que está dentro de una zona de memoria alineada - La instrucción
lw
provoca un acceso a memoria ya que está alineada
Pregunta 3 (2.5 Puntos): Circuitos lógicos
a) Calcula el retardo de la parte combinacional (0.5)
El retardo de la parte combinacional lo determina el camino que va desde la salida del registro hasta llegar otra vez a su entrada: 5ns (sumador) + 3ns (mux) = 8ns
b) Calcula la frecuencia máxima de funcionamiento a la que podría funcionar (0.5)
El retardo total del camino crítico es de : 5ns (sumador) + 3ns (mux) + 8ns (registro) = 16ns.
F = 1 / Tcrítico = 1 / 16ns = 62.5MHz
c) Si inicialmente todas las señales están a 0, indica el valor del registro transcurridos 3 ciclos de reloj. La señal Sel está todo el tiempo a 0 y el valor inicial del registro es 0 (0.5)
Transcurridos 3 ciclos, el valor del registro se habrá incrementado en 3, por lo que tendrá el valor de 3
d) ¿Qué ocurre cuando Sel se pone a 1 durante varios ciclos de reloj? (0.5)
El multiplexor saca por la salida la entrada con un 1, la cual es 0, por lo que el valor del registro se mantiene siempre a 0
e) Si inicialmente todas las señales están a 0, ¿cuánto tiempo tardará el registro en volver a almacenar el valor 0? La señal Sel está todo el tiempo a 0 y la frecuencia del reloj es de 10MHz (0.5)
El registro es de 8 bits (se puede ver en el valor del bus de entrada y de salida), por lo que el valor máximo que puede almacenar antes de hacer overflow es 2^8 = 256. Por lo tanto, necesita 256 ciclos para volver a valer 0, o 256 ciclos / Freq = 256 / 10MHz = 2.56μs
Problema 4 (2.5 ptos): Computador nanoRiscV
a) Calcula el retardo de las fases Fetch y Decodificación
Fase Fetch: Se tiene en cuenta el retardo del Registro PC y de la memoria de instrucciones. Fetch = 140 + 60 = 200ps
Fase Decode: Se tiene en cuenta el retardo del Banco de Registros. Decode = 90ps
b) Calcula el retardo de la instrucción addi x0, x0, 0
Fetch: 200ps, Decode: 90ps, Ejec: 120ps, Mem: 0, WB: 0. Total = 410ps
c) Calcula el retardo de la instrucción ld x5, 0x100(x2)
Fetch: 200ps, Decode: 90ps, Ejec: 120ps, Mem: 250, WB: 0. Total = 660ps
d) Cuál es la frecuencia máxima de funcionamiento de este procesador?
Asumimos que la instrucción crítica es ld, ya que el acceso a memoria toma más tiempo en comparación con el resto de componentes.
Freq = 1 / Tcrit = 1 / 660ps = 1.51GHz
e) Al fabricar los procesadores, un fallo en el proceso hace que el multiplexor situado entre el banco de registros y la ALU tenga un retardo de 10ps. ¿Afectará este error a la frecuancia máxima?¿En caso de afectar, cuál será la nueva frecuencia máxima?
Este fallo en el MUX afectaría a la fase de Decode, que pasaría a tener un retardo de 90 + 10 = 100ps. La fase de decode lleva el mismo tiempo para todas las instrucciones, por lo que el retardo de todas las instrucciones se incrementaría en 10ps. El nuevo retardo crítico será 660 + 10 = 670ps
La nueva Frecuencia máxima será 1 / 670 ps = 1.49GHz
Autores
- Miguel Ángel de Miguel
- Juan González-Gómez (Obijuan)