Está en la página 1de 1

I EXAMEN DE ARQUITECTURA DE COMPUTADORES 2020_A

APELLIDOS Y NOMBRES……………………………………………….CUI…………………..FIRMA ………..

1.-Considere un procesador no segmentado con una arquitectura de tipo LOAD/STORE en la que las operaciones sólo utilizan como operandos
registros de la CPU. Para un conjunto de programas representativos de su actividad se tiene que el 57% de las instrucciones son operaciones con la
ALU (3 CPI), el 15% son LOAD (4 CPI), el 12% son STORE (4 CPI) y el 16% son BRANCH (4 CPI). Además, un 20% de las operaciones con la
ALU utilizan operandos en registros, que no se vuelven a utilizar. ¿Se mejorarían las prestaciones si, para sustituir ese 20% de operaciones se añaden
instrucciones con un dato en un registro y otro en memoria, teniendo en cuenta que para ellas el valor de CPI es 4 y que ocasionarían un incremento
de un ciclo en el CPI de las instrucciones BRANCH, pero que no afectan al ciclo de reloj? ¿Su ganancia?

2.- La operación de multiplicación de números en punto flotante en un determinado procesador tiene una latencia de 35 ns. Tras aplicar una serie
de benchmarks se ha observado que esta operación se utiliza en un número muy significativo ocasiones, con lo que el equipo de arquitectos
se ha planteado desarrollar una implementación multiplicación segmentada en 4 etapas que siga la siguiente secuencia de operación: S1 S2 S3 S1
S2 S4 S4 S3 S3.

Si la latencia de las etapas S1, S2, S3 y S4 es de 8 ns, 6 ns, 4 ns y 5 ns respectivamente y los registros de acoplo entre etapas necesitan 1 ns
para cargarse,
a). - Diagrama de estados
b). - ¿cuál es la ganancia y la productividad máxima que se puede obtener con esta nueva implementación?

3.-Ha aparecido en el mercado una nueva versión de un procesador en la que la única mejora con respecto a la versión anterior es una unidad de
coma flotante mejorada que permite reducir el tiempo de las instrucciones de coma flotante a tres cuartas partes del tiempo que consumían antes.
Suponga que en los programas que constituyen la carga de trabajo habitual del procesador las instrucciones de coma flotante consumen un
promedio del 13% del tiempo del procesador antiguo:

a) ¿Cuál es la máxima ganancia de velocidad que puede esperarse en los programas si se sustituye el procesador de la versión antigua por el
nuevo?
b) ¿Cuál es la máxima ganancia de velocidad que, en promedio, puede esperarse en los programas debido a mejoras en la velocidad de las
operaciones en coma flotante?
c) ¿Cuál debería ser el porcentaje de tiempo de cálculo con datos en coma flotante (en la versión antigua del procesador) en sus programas
para esperar una ganancia máxima de 4?
d) En la situación anterior, ¿cuánto debería reducirse el tiempo de las operaciones en coma flotante con respecto a la situación inicial para que
la ganancia máxima sea 2?

4.- Las cuatro etapas S1, S2, S3, S4 de un cauce multifuncional se utilizan por las instrucciones del tipo A de la forma S1,S2,S1,S3,S1,S4,S1S1 y
por las instrucciones del tipo B de la forma S1,S4,S1,S3,S1,S2,S1,S4 Escriba el diagrama de estados, las matrices de colisiones cruzadas y
determine cuál es la productividad y ganancia máxima del cauce teniendo en cuenta que la frecuencia de reloj es de 700 MHz.

5.- Considere un procesador con arquitectura DLX que implementa un cauce segmentado en cinco etapas (IF, ID, EX, MEM, WB). Para los números
en coma flotante se añaden además un sumador con una latencia de 2 ciclos y un multiplicador con una latencia de 3 ciclos. Existen caminos de
bypass desde la salida de las unidades de ejecución y desde la etapa de memoria a las entradas de la ALU. Las instrucciones de salto se procesan
en la etapa de decodificación, por lo que la nueva dirección a la que se ha de acceder si se produce el salto estará disponible al final de dicha
etapa. Se implementa salto retardado en el que no se anula nunca la siguiente instrucción que se haya podido introducir en el cauce tras un salto
(el salto se resuelve en la etapa de decodificación). Considerando el código siguiente:
add r1, r0, r0 ; Inicializamos el índice i a 0
subd f0, f0, f0 ; Inicializamos el acumulador a 0
bucle: ld f2, X(r1) ; Cargamos X[i]
multd f6, f2, f4 ; Multiplicamos X[i] por a (en f4)
addd f0, f0, f6 ; Acumulamos el resultado
addi r1, r1, #8 ; Incrementamos el contador del índice
subi r3, r3, #8 ; Comprobamos si hemos acabado
bnez r3, bucle ; Saltamos si quedan elementos
sd R, f0 ; Guardamos el resultado

a) ¿Se ejecutaría el programa correctamente tal y como está? ¿Qué cambios haría para aprovechar el salto retardado? ¿En qué
instrucciones, que tipo de riesgo se produce?

b) ¿Cuál es la productividad del cauce en función del número de iteraciones N?

También podría gustarte