Final de Febrero 06

Anuncio
ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES
EXAMEN DE TEORÍA (Problemas) (2-Febrero-2006)
Apellidos:
Grupo: Sistemas I ‰
Sistemas II ‰
Nombre:
Gestión I ‰ Gestión II ‰
2. (3 puntos) Dada la subrutina MIPS siguiente:
subrutina:
DNI:
Superior I ‰ Superior II ‰
buc:
1. (2 puntos) Dado el siguiente circuito:
Reloj
A
sig:
T
Q
Q’
S1
D
Q
C
Q’
S2
fin:
move
move
li
andi
bne
addi
srl
addi
beq
j
jr
$v0,$0
$s0,$a0
$t0,32
$t1,$s0,1
$t1,$0,sig
$v0,$v0,1
$s0,$s0,1
$t0,$t0,-1
$t0,$0,fin
buc
$ra
S4
B
a)
J
Q
K
Q’
a)
(0.5 puntos) Describir en castellano, de forma muy breve y concisa (una
sola frase bastaría) qué utilidad tiene esta rutina (es decir, qué valor
devuelve en función del parámetro $a0).
b) Suponer que se llama a la rutina con $a0=0xfffedb77:
i. (1.0 puntos) Sabiendo que la rutina tarda 4 µs en ejecutarse en un
procesador monociclo, calcular la frecuencia del mismo.
ii. (1.0 puntos) Si suponemos que los retardos de la memoria y la
ALU son el doble que el retardo del banco de registros, utilizando
el resultado anterior calcular el tiempo de ejecución de la misma
rutina en una versión multiciclo del procesador.
c) (0.5 puntos) La rutina NO respeta el convenio de salvado de registros en la
pila. Especificar las instrucciones que habría que añadir y el lugar en el que
habrían de colocarse para respetar escrupulosamente dicho convenio.
S3
(1.0 puntos) Completar el cronograma adjunto, suponiendo retardos despreciables
en todos los elementos del diagrama:
R e lo j
A
B
S1
Notas:
S2
•
S3
•
S4
b) (1.0 puntos) Suponiendo un retardo de 10 ns para los flip-flops de tipo T y JK, de 7
ns para el cerrojo de tipo D, de 4 ns para las puertas lógicas AND y OR, y de 2 ns
para el inversor NOT, calcular el retardo total del circuito para obtener la señal de
salida S4, justificando el cálculo realizado.
Para el apartado b), tener en cuenta las traducciones a instrucciones reales de las
posibles pseudoinstrucciones.
Suponer que todas las instrucciones aritmético-lógicas inmediatas y de
desplazamiento tardan 4 ciclos, y que el jr tarda 3. Para el resto de instrucciones
considerar la duración en ciclos vista en clase en la implementación multiciclo.
3. (2 puntos) Supóngase un procesador con un CPI ideal igual a 4 ciclos y una frecuencia de
reloj de 2 GHz. El sistema dispone de una memoria caché, así como de una memoria
principal con un tiempo de acceso de 100 ns. Si la tasa de fallos de la caché es del 15%:
a) (0.5 puntos) ¿Cuál sería el CPIreal de esta máquina?
b) (0.75 puntos) ¿Cuánto más rápida será la máquina al añadir una segunda cache que tiene
un tiempo de acceso de 10 ns y una tasa de fallos del 30%?. Se supone que una petición
a memoria principal se realiza solamente cuando se detecta un fallo en la caché de
segundo nivel.
c) (0.75 puntos) ¿Cuánto más rápida será la máquina si, en lugar de añadir una segunda
caché, duplicamos la frecuencia de reloj del procesador manteniendo el tiempo de
acceso a memoria principal en 100 ns?
SOLUCIÓN:
1.
a) Cronograma:
R e lo j
A
B
S1
S2
S3
S4
b) El retardo más largo desde las entradas A y B hasta la salida S4 lo introduce el camino que pasa por el flip-flop tipo T
(10 ns), el negador pegado a la puerta AND (2 ns), la puerta AND (4ns) y la puerta OR (4 ns), para sumar un total de 20 ns.
Se puede comprobar que no existe otro camino con mayor retardo.
2.
a)
Se trata de una rutina que cuenta el número de bits que hay a cero en la constante de 32 bits que se le pasa como parámetro en
$a0, y devuelve el valor de dicho conteo en $v0.
b)
Análisis del tiempo de ejecución (observar que las tres pseudoinstrucciones que aparecen, dos move y un li, se traducen por
sendas add y addi, respectivamente):
Instrucción MIPS
move
$v0,$0
move
$s0,$a0
li
$t0,32
buc: andi
$t1,$s0,1
bne
$t1,$0,sig
addi
$v0,$v0,1
sig: srl
$s0,$s0,1
addi
$t0,$t0,-1
beq
$t0,$0,fin
j
buc
fin: jr
$ra
# Ejecuciones
1
1
1
32
32
5
32
32
32
31
1
Total:
200 instrs.
# Ciclos/Inst.
4 (add)
4 (add)
4 (addi)
4
3
4
4
4
3
3
3
Subtotal
4
4
4
128
96
20
128
128
96
93
3
Total:
704 ciclos
Monociclo:
El programa ejecuta exactamente 200 instrucciones, es decir, 200 ciclos en un procesador monociclo. Si tarda en ejecutarse 4
microsegundos, es decir, 4000 nanosegundos, el tiempo de ciclo será de 4000/200 = 20 ns. La frecuencia, por tanto, será de 1/(20·10-9)
= 50.000.000 Hz = 50 MHz.
Multiciclo:
El tiempo de ciclo en la implementación monociclo debe ser el de la instrucción más larga, esto es, un lw. Dicho tiempo es TMEM + TBR
+ TALU + TMEM + TBR = 2TBR + TBR + 2TBR + 2TBR + TBR = 8TBR. De lo que se deduce que 8TBR = 20 ns, esto es, TBR = 2.5 ns. El
tiempo de ciclo en multiciclo, sin embargo, es el del paso más largo, en nuestro caso el introducido por la ALU o la memoria, es decir,
2TBR = 5 ns. Puesto que el programa ejecuta 704 ciclos en su versión multiciclo, tardará 704·5 = 3520 ns = 3’52 µs.
c)
La rutina machaca uno de los registros seguros, $s0. Por tanto, deberá guardarlo previamente en la pila, para recuperarlo justo
antes de volver. Es decir, habrá que añadir las instrucciones:
subrutina: addi
sw
move
move
li
buc:
andi
bne
addi
sig:
srl
addi
beq
j
fin:
lw
addi
jr
$sp,$sp,-4
$s0,0($sp)
$v0,$0
$s0,$a0
$t0,32
$t1,$s0,1
$t1,$0,sig
$v0,$v0,1
$s0,$s0,1
$t0,$t0,-1
$t0,$0,fin
buc
$s0,0($sp)
$sp,$sp,4
$ra
3.
Si la frecuencia de reloj es de 2 Ghz, entonces un ciclo dura 1/2·109 = 0.5·10-9 segundos = 0.5 ns
a)
El tiempo de acceso a la memoria principal son 100 ns, que equivalen a 200 ciclos. El CPI real es:
CPIreal = CPIideal + TF*PF
ya que las referencias a datos no producen fallos. Luego tenemos que:
CPIreal = 4 + 0,15*200 = 34 ciclos
b)
La segunda cache tiene un tiempo de acceso de 10 ns = 20 ciclos. Al añadir esta segunda cache, tenemos
CPIreal = 4 + 0,15*(0,7*20 + 0,3*(200 + 20)) = 16 ciclos
ya que el 15% de las veces tenemos un fallo en la cache de primer nivel y, dentro de ese 15%, el 70% de las veces tenemos un acierto
en la cache de segundo nivel (lo que supone un tiempo de acceso de 20 ciclos) y el 30% restante un fallo (lo que supone un tiempo de
acceso de 220 ciclos por el tratamiento del fallo en la cache de segundo nivel y el acceso a la memoria principal).
Por tanto, la nueva máquina es 34/16 = 2.13 veces más rápida.
c)
En este caso, un ciclo dura 1/4000·106 = 0.25·10-9 segundos, es decir, 0.25 nanosegundos. El tiempo de acceso a memoria
principal equivale a 100ns = 400 ciclos. El CPI real de la nueva máquina es:
CPIreal=CPIideal + TF*PF = 4 + 0,15*400 = 64 ciclos.
Sin embargo, puesto que hemos doblado la frecuencia del reloj, hemos divido por 2 la duración del ciclo, lo que afectará al tiempo de
ejecución de los programas. Sabiendo que el tiempo real que, en promedio, se tarda en ejecutar una instrucción es:
TCPU de 1 instrucción = CPIreal * Tiempo de Ciclo
tenemos que la nueva máquina será:
TCPU-A/TCPU-C = (34 * 0.5) / (64 * 0.25) = 17 ns / 16 ns = 1.06 veces más rápida.
Descargar