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 rd
  • lb rd, off(rs1): Leer un byte de memoria y guardarlo en rd
  • lh rd, off(rs1): Leer una media palabra de memoria y guardarla en rd
  • lw rd, off(rs1): Leer una palabra de memoria y guardarla en rd
  • sb rs1, off(rs2): Almacenar en memoria el byte que hay en rs1
  • sh rs1, off(rs2): Almacenar en memoria la media palabra que hay en rs1
  • sw 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

P3

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 + 7
  • x3 = 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 lino accede a memoria
  • La instrucción lbsiempre provoca un acceso a memoria
  • La instrucción lhprovoca un acceso a memoria ya que está dentro de una zona de memoria alineada
  • La instrucción lwprovoca 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

Licencia

Enlaces