Examen: 2024_06_17:GISAM - 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 ordinaria de GISAM, con fecha 2024/Junio/17
Contenido
Enunciado
El examen se ha realizado a través de Aula virtual
Problema 1 (2.5 ptos): Rendimiento
Nuestro jefe de proyecto nos pide que seleccionemos entre dos procesadores, P1 y P2, para determinar cuál es el más apropiado para el proyecto. Disponemos de un programa de prueba que realiza ciertos cálculos. Este programa debe tardar como máximo 20 ms en ejecutarse en el procesador elegido, o de lo contrario no nos servirá. El 60% de las instrucciones son de multiplicación, y el 40% restante son de los demás tipos
Los fabricantes de los procesadores P1 y P2 nos proporcionan la siguiente información, relativa a los ciclos que tarda cada tipo de instrucción, y la frecuencia máxima de funcionamiento
Procesador | Multiplicacion | Resto de Instrucciones | Freq |
---|---|---|---|
P1 | 5 ciclos | 1 ciclo | 200 Mhz |
P2 | 2 ciclos | 1 ciclo | 160 Mhz |
Sabemos que el programa de prueba tiene un total de 2 millones de instrucciones
Se pide:
a) (0.5 ptos) Calcular el CPI del procesador P1 al ejecutar el programa de prueba
b) (0.5 ptos) Calcular el tiempo que tarda P1 en ejecutar el programa de prueba
c) (0.5 ptos) Calcular el CPI del procesador P2 al ejecutar el programa de prueba
d) (0.5 ptos) Calcular el tiempo que tarda P1 en ejecutar el programa de prueba
e) (0.5 ptos) ¿Qué procesador elegirías para el proyecto?
Debes justificar TODAS las respuestas
Problema 2 (2.5 ptos): Ordenacion/alineaiento/direccionamiento
Tenemos un computador de 32-bits que dispone de 8 registros de propósito general (t0-t7). La anchura de la memoria es de 32-bits. La ordenación que usa es Little-endian. Para acceder a los datos de la memoria utiliza un direccionamiento directo. Puede acceder tanto a datos alineados como no alineados. Estas son algunas de las instrucciones disponibles:
lb rd, dir
: Leer el byte que hay en la dirección dir y guardarlo en el registro rdlh rd, dir
: Leer la media palabra que hay en la dirección dir y guardarla en el registro rdlw rd, dir
: Leer la palabra que hay en la dirección dir y guardarla en el registro rd
Este es el contenido de la memoria, a partir de la dirección 0xA0000000. Todos los valores están en hexadecimal
Dirección | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0xA0000000 | 00 | 11 | 22 | 33 | 44 | 55 | 66 | 77 | 88 | 99 | AA | BB | CC | DD | EE | FF |
0xA0000010 | 40 | 50 | 60 | 70 | 80 | 90 | A0 | B0 | C0 | D0 | E0 | F0 | 10 | 20 | 30 | 40 |
Resuelve los siguientes apartados, calculando el resultado y justificando cómo lo has obtenido
a) (0.5 ptos) Indica el valor de los registros t1 y t2 al ejecutar estas instrucciones
lb t1, 0xA000000A
lb t2, 0xA000001A
b) (0.5 ptos) Indica el valor de los registros t3 y t4 al ejecutar estas instrucciones
lh t3, 0xA00000000
lh t4, 0xA00000010
c) (0.5 ptos) Indica el valor de los registros t5 y t6 al ejecutar estas instrucciones
lw t5, 0xA00000000
lw t6, 0xA0000000E
d) (0.5 ptos) Indica el número de accesos a memoria de esta instrucción para leer el dato
lb t1, 0xA000000A
e) (0.5 ptos) Indica el número de accesos a memoria de esta instrucción para leer el dato
lw t6, 0xA0000000E
Pregunta 3 (2.5 Puntos): Circuitos lógicos
Tenemos el siguiente circuito digital
Responde a las siguientes preguntas:
a) (0.5 ptos) Indica cuál es la parte combinacional de este circuito y qué retardo tiene
b) (0.5 ptos) Indica cuál es la parte secuencial de este circuito y qué retardo tiene
c) (0.5 ptos) Indica el retardo total del circuito completo
d) (0.5 ptos) Calcula la frecuencia máxima de funcionamiento de este circuito
e) (0.5 ptos) Si inicialmente el registro tiene un valor de 0, y la señal cnt
tiene un valor de 1 (ciclo 0), indica el valor de la señal out
durante los 3 siguientes ciclos de reloj (ciclos 1, 2 y 3)
Problema 4 (2.5 ptos): Computador nanoRiscV
Tenemos un computador nano-RISCV como el mostrado en la siguiente figura
El cable de bus Addr que conecta con la memoria RAM añade un retardo de 5ns, debido a un defecto en su fabricación. En el esquemático se ha indicado con el componente rojo R. Los retardos introducidos por el resto de componentes se describen a continuación:
- Memoria ROM: 30ns
- Memoria RAM: 10ns de lectura, y 16ns de escritura
- Fase de decodificación: Retardo de 10ns
- Fase de ejecución: 15ns
- Fase de Write-back: 0 ns
El resto de retardos se consideran despreciables (0 ns)
Se pide:
a) (1 pto) Calcula el retardo de la fase de Fetch
b) (1 pto) Calcula el tiempo que tarda la instrucción or t5,t1,t2
c) (1 pto) Calcula el tiempo que tarda la instrucción ld t2,0(zero)
d) (1 pto) Calcula la frecuencia máxima de funcionamiento de este computador
e) (1 pto) Si ahora arreglamos el error del cable de manera que no introduzca ningún retraso, ¿Cual sería la nueva frecuencia de funcionamiento?
Solución al examen
Problema 1 (2.5 ptos): Rendimiento
a) Para obtener el CPI del P1 al ejecutar el programa basta con calcular la media de los ciclos. Sabemos que el 60% de las instrucciones tardan 5 ciclos y que el 40% restante 1 ciclo, en media tardarán:
CPI1 = 0.6 * 5 + 0.4 * 1 = 3.4
b) El tiempo que tarda P1 en ejecutar el programa es su tiempo de CPU. Lo calculamos utilizando la ecuación clásica del rendimiento:
Tcpu1 = (I * CPI1) / F1, siendo I = 2 millones de instrucciones y F1 = 200Mhz Tcpu1 = (2*10^6 * 3.4) / (200 * 10^6) = 0.034 s = 34 ms
No nos lo piden en este apartado, pero ya vemos que el P1 NO cumple con lo necesario para el proyecto: tarda más de 20 ms en ejecutar el programa. NO nos sirve
c) Repetimos los cálculos para P2:
CPI2 = 0.6 * 2 + 0.4 * 1 = 1.6
d) Recalculamos el tiempo de CPU para P2
Tcpu2 = (I * CPI2) / F2, siendo I = 2 millones de instrucciones y F1 = 160Mhz Tcpu2 = (2*10^6 * 1.6) / (160 * 10^6) = 0.02 s = 20 ms
e) Hay que elegir el procesador P2, que es el que cumple con los requisitos pedidos: ejecutar el programa de pruebas en como máximo 20ms. P2 lo hace (aunque por los pelos). El procesador P1 tarda más de 20 ms, por lo que NO nos vale (¡P2, te elijo a tí!)
Problema 2 (2.5 ptos): Ordenacion/alineaiento/direccionamiento
a)
En ambas instrucciones se lee un byte, por lo que no afecta el tipo de ordenación. Los valores de los registros son:
- t1 = 0xAA (Byte en la posición 0xA000000A)
- t2 = 0xE0 (Byte en la posicion 0xA000001A)
b)
En estas instrucciones se leen medias palabras (2 bytes), por lo que la ordenación sí afecta. Como es Little endian, el byte situado en la dirección menor será el de menor peso
- t3 = 0x1100 (Media palabra a partir de la dirección 0xA0000000, con ordenación little endian)
- t4 = 0x5040 (Media palabra a partir de la dirección 0xA0000010, con ordenación little endian)
c)
En estas instrucciones se leen palabras (4 bytes), por lo que la ordenación sí afecta. Como es Little endian, el byte situado en la dirección menor será el de menor peso
- t5 = 0x33221100 (Palabra a partir de la dirección 0xA0000000, con ordenación little endian)
- t6 = 0x5040FFEE (Palabra a partir de la dirección 0xA000000E, con ordenación little endian)
d)
Como se trata de la lectura de 1 byte, el concepto de alineación no afecta. Sólo se necesita 1 acceso para leer este byte
e)
La instrucción lee una palabra (4 bytes). Pero como la dirección NO está alineada, hay que realizar 2 accesos a memoria. Uno para leer la palabra situada en la dirección alineada anterior (0xA00000C), y otro para leer la palabra en la dirección alineada posterior (0xA0000010)
Pregunta 3 (2.5 Puntos): Circuitos lógicos
a) Este cicuito está formado por dos elementos: un registro de 8 bits (secuencial) y un sumador de 2 operandos de 8 bits (combinacional). La parte combinacional es este circuito sumador, que tiene un retardo de 2 ns
b) La parte secuencial del circuito es el registro de 8 bits, que tiene un retardo de 6 ns
c) Se trata de la conexión en cascada de un circuito secuencial con otro combinacional, por tanto el retardo total es la suma de ambos retardos: 6 ns + 2 ns = 8 ns
d) La frecuencia máxima de este circuito es la inversa del retardo mínimo del circuito, calculado en el apartado anterior. Fmax = 1 / Tmin = 1 / 8 ns = 125 Mhz
e) En el ciclo 0, la señal cnt vale 1, y el valor el registro es de 0 (situación inicial). El valor en el siguiente ciclo (ciclo 1) será el valor del contador en el ciclo 0 (0) al que se le suma 4. Como cnt está a '1', este valor se captura en el siguiente ciclo. Esto se repite en el resto de ciclos obteniéndose una de cuenta de 4 en 4: 0, 4, 8, 12...
Por tanto, en los ciclos 1,2 y 3, el valor de out será de 4, 8 y 12 respectivamente
Problema 4 (2.5 ptos): Computador nanoRiscV
a) Puesto que el retardo del PC es despreciable (0ns), la fase de fetch está determinada por el retardo de la memoria ROM: 30ns
- Retardo de Fetch: 30 ns
b) La instrucción or
NO accede a memoria por lo que el tiempo de la fase de acceso a memoria es de 0 ns. En la fase de ejecutación tarda 15ms (según especificaciones). Sumando los retardos de todas las fases obtenemos:
- Retardo de or: Retardo Fetch + Retardo decodificación + retardo ejecución + retardo acceso memoria + retardo write back = 30 + 10 + 15 + 0 + 0 = 55ns
c) La instrucción ld tarda los siguientes tiempos en las fases:
- Fetch: 30
- Decodificación: 10
- Ejecución: 15
- Acceso memoria: 10 (lectura ram) + 5ns (fallo cable) = 15ns
- Write-back: 0ns
El retardo del bus Addr influye sólo en el acceso a memoria, por lo que el retardo es el de la RAM + 5ns = 15ns
- Retardo de ld: 30 + 10 + 15 + 15 + 0 = 70ns
d) Para calcular la frecuencia máxima de funcionamiento hay que encontrar el caso peor. La fase de Fetch es la misma para todas las instrucciones. El retardo de la decodificación está fijado a 10ns. Y La fase de ejecución a 15.
El caso pero, por tanto, es la instrucción de load (ld), que además de los tiempos anteriores añade el acceso a memoria: 15ns (contando con el fallo del cable)
Por tanto, El periodo mínimo del reloj es de 70ns. Lo que nos da una frecuencia máxima de: 1 / 70ns = 14.3 Mhz (aprox)
e) En este caso se ve afectado sólo el ciclo de acceso a memoria, que pasaría a ser de 10 ns. El caso peor sigue siendo la instrucción de load que ahora tendrá un retardo de 30 + 10 + 15 + 10 + 0 = 65ns.
La nueva frecuencia de funcionamiento es de 1 / 65ns = 15.4 Mhz (aprox)
Autores
- Katia Leal Algara
- Juan González-Gómez (Obijuan)