Examen: Parcial 3:2025_12_19:Teleco - myTeachingURJC/Arq-computadores-01 GitHub Wiki

Examen Parcial 3: 2025-12-17. Datos
- Tiempo: 50 minutos
- Tipo de examen: Presencial. Realizado a través de Aula Virtual. Acceso a la wiki (Internet)
- Temario: S9,S10,S11 y S12
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 respuestas incorrectas restan un 33% del valor de la pregunta
- Solución disponible en Aula virtual
Problema (5 ptos): Ordenacion/alineamiento/direccionamiento
Version 1
Tenemos un computador nRV como el estudiado.
Debido a un fallo de fabricación, los cables de los buses de la salida de las memoria de código y de la entrada a data del banco de registros añaden un retardo de 10ps. 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 de instrucciones (lectura): 325ps
- Sumador: 180ps
- ALU (Suma): 200ps
- ALU (Resta): 220ps
- ALU (AND OR): 200ps
- Memoria de datos (lectura): 350ps
- Banco de registros: 120ps
- Registro PC: 45ps
El resto de retardos se consideran despreciables (0 ps).
Contesta a las siguientes preguntas:
a) Calcula el retardo individual de las fases de Fetch y Decodificación.
b) Calcula el retardo total de la instrucción add x0, x0, x0.
c) Calcula el retardo total de la instrucción ld x5, 0x100(x0).
d) Calcula el retardo total de la instrucción beq x0, x5, 0x100.
e) ¿Cuál es la frecuencia máxima de funcionamiento de este procesador?
f) Si ejecutamos el siguiente fragmento de código:
sd x3, 0(x5)
ld x4, 0(x5)
Indica el retardo máximo que tendría que tener la escritura en la memoria de datos para que funcione correctamente.
Solución al problema
a) Retardo individual de las fases de Fetch y Decodificación
Para calcular estos tiempos, analizamos el camino crítico de cada etapa por separado.
Fase de IF (Instruction Fetch):
El ciclo comienza con el reloj disparando el PC. La instrucción debe atravesar el PC, la memoria y el retardo de fallo $R$ a la salida de esta.
$$T_{Fetch} = T_{PC} + T_{IMem} + R$$
$$T_{Fetch} = 45 + 325 + 10 = \mathbf{380 \text{ ps}}$$
Fase de ID (Instruction Decode):
La decodificación comienza una vez que la instrucción es válida (fin de Fetch). En esta arquitectura, el tiempo relevante es el acceso a lectura del Banco de Registros.
$$T_{Decode} = T_{Reg}$$
$$T_{Decode} = \mathbf{120 \text{ ps}}$$
b) Retardo total de la instrucción add x0, x0, x0
Es importante notar que el fallo $R$ afecta también a la escritura en el banco de registros, y las instrucciones de tipo R guardan el resultado en el banco de registros.
- IF + ID: $500 \text{ ps}$
- Ejecución (ALU Suma): Se suma el retardo de la ALU: 200ps.
- Escritura (WriteBack): El resultado va de la ALU al Banco de Registros pasando por el fallo $R$: 10ps.
$$T_{add} = \mathbf{380 + 120 + 200 + 10 = 710 \text{ ps}}$$
Nota: Considerar el retardo del fallo en la fase de ejecución también estaría bien.
c) Retardo total de la instrucción ld x5, 0x100(x0)
La instrucción de carga (ld) es típicamente la más lenta (camino crítico) al involucrar la memoria de datos.
- IF + ID: $500 \text{ ps}$
- Cálculo de Dirección (ALU Suma): 200ps.
- Acceso a Memoria (Lectura): 350ps
- WriteBack: El dato sale de memoria y pasa por $R$ antes de entrar al banco de registros: 10ps
$$T_{ld} = \mathbf{380 + 120 + 200 + 350 + 10 = 1060 \text{ ps}}$$
d) Retardo total de la instrucción beq x0, x5, 0x100
Para los saltos condicionales, no se almacena nada en el banco de registros, pero hay que considerar el retardo del incremento del PC desde que se hace la comparación (fase de ejecución).
- IF + ID: $500 \text{ ps}$
- Ejecución: Comparación con la ALU (Resta): 220ps.
- WriteBack: Sumador: 180ps.
$$T_{add} = \mathbf{380 + 120 + 220 + 180 = 900 \text{ ps}}$$
e) Frecuencia máxima de funcionamiento
La frecuencia máxima está determinada por la instrucción más lenta (camino crítico) que debe completarse en un solo ciclo de reloj. Comparando los retardos calculados:
- ADD: $710 \text{ ps}$
- LD: $1060 \text{ ps}$
- BEQ: $900 \text{ ps}$
El retardo crítico es $T_{crit} = 1060 \text{ ps}$.
$$f_{max} = \frac{1}{T_{crit}} = \frac{1}{1060 \times 10^{-12} \text{ s}}$$
$$f_{max} \approx 943,4 \times 10^6 \text{ Hz} = \mathbf{943,4 \text{ MHz}}$$
f) Retardo máximo de escritura en memoria de datos
Analizamos el fragmento de código:
sd x3, 0(x5) ; Instrucción Store
ld x4, 0(x5) ; Instrucción Load que lee el dato que se acaba de guardar
El dato que se guarda en memoria con la instrucción sd, se almacena en el siguiente ciclo de reloj con el nuevo flanco ascendente (la memoria es secuencial para la escritura), es decir, se almacena mientras se ejecuta la siguiente instrucción ld.
Para que ld lea el dato, tiene que haber dado tiempo a guardarse en memoria, antes de acceder a ella, es decir, tiene que guardarse mientras se ejecutan las fases de IF, ID y Ex.
Por lo tanto, el retado máximo tiene que ser de :
$$R_{max} 380 + 120 + 200 = \mathbf{700 \text{ ps}}$$
Version 2
Tenemos un computador nRV como el estudiado.
Debido a un fallo de fabricación, los cables de los buses de la salida de las memoria de código y de la entrada a data del banco de registros añaden un retardo de 10ps. 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 de instrucciones (lectura): 325ps
- Sumador: 180ps
- ALU (Suma): 200ps
- ALU (Resta): 210ps
- ALU (AND OR): 200ps
- Memoria de datos (lectura): 350ps
- Banco de registros: 110ps
- Registro PC: 35ps
El resto de retardos se consideran despreciables (0 ps).
Contesta a las siguientes preguntas:
a) Calcula el retardo individual de las fases de Fetch y Decodificación.
b) Calcula el retardo total de la instrucción add x0, x0, x0.
c) Calcula el retardo total de la instrucción ld x5, 0x100(x0).
d) Calcula el retardo total de la instrucción beq x0, x5, 0x100.
e) ¿Cuál es la frecuencia máxima de funcionamiento de este procesador?
f) Si ejecutamos el siguiente fragmento de código:
sd x3, 0(x5)
ld x4, 0(x5)
Indica el retardo máximo que tendría que tener la escritura en la memoria de datos para que funcione correctamente.
Solución al problema
a) Retardo individual de las fases de Fetch y Decodificación
Para calcular estos tiempos, analizamos el camino crítico de cada etapa por separado.
Fase de IF (Instruction Fetch):
El ciclo comienza con el reloj disparando el PC. La instrucción debe atravesar el PC, la memoria y el retardo de fallo $R$ a la salida de esta.
$$T_{Fetch} = T_{PC} + T_{IMem} + R$$
$$T_{Fetch} = 35 + 325 + 10 = \mathbf{370 \text{ ps}}$$
Fase de ID (Instruction Decode):
La decodificación comienza una vez que la instrucción es válida (fin de Fetch). En esta arquitectura, el tiempo relevante es el acceso a lectura del Banco de Registros.
$$T_{Decode} = T_{Reg}$$
$$T_{Decode} = \mathbf{110 \text{ ps}}$$
b) Retardo total de la instrucción add x0, x0, x0
Es importante notar que el fallo $R$ afecta también a la escritura en el banco de registros, y las instrucciones de tipo R guardan el resultado en el banco de registros.
- IF + ID: $480 \text{ ps}$
- Ejecución (ALU Suma): Se suma el retardo de la ALU: 200ps.
- Escritura (WriteBack): El resultado va de la ALU al Banco de Registros pasando por el fallo $R$: 10ps.
$$T_{add} = \mathbf{370 + 110 + 200 + 10 = 690 \text{ ps}}$$
Nota: Considerar el retardo del fallo en la fase de ejecución también estaría bien.
c) Retardo total de la instrucción ld x5, 0x100(x0)
La instrucción de carga (ld) es típicamente la más lenta (camino crítico) al involucrar la memoria de datos.
- IF + ID: $480 \text{ ps}$
- Cálculo de Dirección (ALU Suma): 200ps.
- Acceso a Memoria (Lectura): 350ps
- WriteBack: El dato sale de memoria y pasa por $R$ antes de entrar al banco de registros: 10ps
$$T_{ld} = \mathbf{370 + 110 + 200 + 350 + 10 = 1040 \text{ ps}}$$
d) Retardo total de la instrucción beq x0, x5, 0x100
Para los saltos condicionales, no se almacena nada en el banco de registros, pero hay que considerar el retardo del incremento del PC desde que se hace la comparación (fase de ejecución).
- IF + ID: $480 \text{ ps}$
- Ejecución: Comparación con la ALU (Resta): 210ps.
- WriteBack: Sumador: 180ps.
$$T_{add} = \mathbf{370 + 110 + 210 + 180 = 870 \text{ ps}}$$
e) Frecuencia máxima de funcionamiento
La frecuencia máxima está determinada por la instrucción más lenta (camino crítico) que debe completarse en un solo ciclo de reloj. Comparando los retardos calculados:
- ADD: $690 \text{ ps}$
- LD: $1040 \text{ ps}$
- BEQ: $870 \text{ ps}$
El retardo crítico es $T_{crit} = 1040 \text{ ps}$.
$$f_{max} = \frac{1}{T_{crit}} = \frac{1}{1040 \times 10^{-12} \text{ s}}$$
$$f_{max} \approx 961, \times 10^6 \text{ Hz} = \mathbf{961,5 \text{ MHz}}$$
f) Retardo máximo de escritura en memoria de datos
Analizamos el fragmento de código:
sd x3, 0(x5) ; Instrucción Store
ld x4, 0(x5) ; Instrucción Load que lee el dato que se acaba de guardar
El dato que se guarda en memoria con la instrucción sd, se almacena en el siguiente ciclo de reloj con el nuevo flanco ascendente (la memoria es secuencial para la escritura), es decir, se almacena mientras se ejecuta la siguiente instrucción ld.
Para que ld lea el dato, tiene que haber dado tiempo a guardarse en memoria, antes de acceder a ella, es decir, tiene que guardarse mientras se ejecutan las fases de IF, ID y Ex.
Por lo tanto, el retado máximo tiene que ser de :
$$R_{max} 370 + 110 + 200 = \mathbf{680 \text{ ps}}$$
Version 3
Tenemos un computador nRV como el estudiado.
Debido a un fallo de fabricación, los cables de los buses de la salida de las memoria de código y de la entrada a data del banco de registros añaden un retardo de 5ps. 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 de instrucciones (lectura): 325ps
- Sumador: 180ps
- ALU (Suma): 200ps
- ALU (Resta): 210ps
- ALU (AND OR): 200ps
- Memoria de datos (lectura): 350ps
- Banco de registros: 120ps
- Registro PC: 45ps
El resto de retardos se consideran despreciables (0 ps).
Contesta a las siguientes preguntas:
a) Calcula el retardo individual de las fases de Fetch y Decodificación.
b) Calcula el retardo total de la instrucción add x0, x0, x0.
c) Calcula el retardo total de la instrucción ld x5, 0x100(x0).
d) Calcula el retardo total de la instrucción beq x0, x5, 0x100.
e) ¿Cuál es la frecuencia máxima de funcionamiento de este procesador?
f) Si ejecutamos el siguiente fragmento de código:
sd x3, 0(x5)
ld x4, 0(x5)
Indica el retardo máximo que tendría que tener la escritura en la memoria de datos para que funcione correctamente.
Solución al problema
a) Retardo individual de las fases de Fetch y Decodificación
Para calcular estos tiempos, analizamos el camino crítico de cada etapa por separado.
Fase de IF (Instruction Fetch):
El ciclo comienza con el reloj disparando el PC. La instrucción debe atravesar el PC, la memoria y el retardo de fallo $R$ a la salida de esta.
$$T_{Fetch} = T_{PC} + T_{IMem} + R$$
$$T_{Fetch} = 45 + 325 + 5 = \mathbf{375 \text{ ps}}$$
Fase de ID (Instruction Decode):
La decodificación comienza una vez que la instrucción es válida (fin de Fetch). En esta arquitectura, el tiempo relevante es el acceso a lectura del Banco de Registros.
$$T_{Decode} = T_{Reg}$$
$$T_{Decode} = \mathbf{120 \text{ ps}}$$
b) Retardo total de la instrucción add x0, x0, x0
Es importante notar que el fallo $R$ afecta también a la escritura en el banco de registros, y las instrucciones de tipo R guardan el resultado en el banco de registros.
- IF + ID: $495 \text{ ps}$
- Ejecución (ALU Suma): Se suma el retardo de la ALU: 200ps.
- Escritura (WriteBack): El resultado va de la ALU al Banco de Registros pasando por el fallo $R$: 5ps.
$$T_{add} = \mathbf{375 + 120 + 200 + 5 = 700 \text{ ps}}$$
Nota: Considerar el retardo del fallo en la fase de ejecución también estaría bien.
c) Retardo total de la instrucción ld x5, 0x100(x0)
La instrucción de carga (ld) es típicamente la más lenta (camino crítico) al involucrar la memoria de datos.
- IF + ID: $495 \text{ ps}$
- Cálculo de Dirección (ALU Suma): 200ps.
- Acceso a Memoria (Lectura): 350ps
- WriteBack: El dato sale de memoria y pasa por $R$ antes de entrar al banco de registros: 5ps
$$T_{ld} = \mathbf{375 + 120 + 200 + 350 + 5 = 1050 \text{ ps}}$$
d) Retardo total de la instrucción beq x0, x5, 0x100
Para los saltos condicionales, no se almacena nada en el banco de registros, pero hay que considerar el retardo del incremento del PC desde que se hace la comparación (fase de ejecución).
- IF + ID: $495 \text{ ps}$
- Ejecución: Comparación con la ALU (Resta): 210ps.
- WriteBack: Sumador: 180ps.
$$T_{add} = \mathbf{375 + 120 + 210 + 180 = 885 \text{ ps}}$$
e) Frecuencia máxima de funcionamiento
La frecuencia máxima está determinada por la instrucción más lenta (camino crítico) que debe completarse en un solo ciclo de reloj. Comparando los retardos calculados:
- ADD: $700 \text{ ps}$
- LD: $1050 \text{ ps}$
- BEQ: $885 \text{ ps}$
El retardo crítico es $T_{crit} = 1050 \text{ ps}$.
$$f_{max} = \frac{1}{T_{crit}} = \frac{1}{1050 \times 10^{-12} \text{ s}}$$
$$f_{max} \approx 952.4 \times 10^6 \text{ Hz} = \mathbf{952,4 \text{ MHz}}$$
f) Retardo máximo de escritura en memoria de datos
Analizamos el fragmento de código:
sd x3, 0(x5) ; Instrucción Store
ld x4, 0(x5) ; Instrucción Load que lee el dato que se acaba de guardar
El dato que se guarda en memoria con la instrucción sd, se almacena en el siguiente ciclo de reloj con el nuevo flanco ascendente (la memoria es secuencial para la escritura), es decir, se almacena mientras se ejecuta la siguiente instrucción ld.
Para que ld lea el dato, tiene que haber dado tiempo a guardarse en memoria, antes de acceder a ella, es decir, tiene que guardarse mientras se ejecutan las fases de IF, ID y Ex.
Por lo tanto, el retado máximo tiene que ser de :
$$R_{max} 375 + 120 + 200 = \mathbf{695 \text{ ps}}$$
Autores
Licencia
