Documente Academic
Documente Profesional
Documente Cultură
FACULTAD DE INGENIERA
UNIVERSIDAD DE CONCEPCIN
CONCEPCIN, CHILE.
REVISIN EXAMEN 2
Sistemas Computacionales
Nombre: Salvador Gallardo Riquelme
Profesor: Mario Medina
Ayudante: Danilo Bonometti
1 de Diciembre de 2014
DESARROLLO PROBLEMA 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
bae:
yolo:
pushl %ebp
#Almacena puntero base en la pila
movl %esp, %ebp
#Redefine el puntero base
movl 8(%ebp), %edx #Lee p en registro %edx
movl 12(%ebp), %ecx #Lee c en registro %ecx
cmpl $0, %ecx
#Compara c cero
jle yolo
#Salta a yolo si c 0
decl %ecx
#Decrementa c en 1
pushl %ecx
#Almacena c
addl $4, %edx
#Suma 4 a p
pushl %edx
#Almacena p
call bae
#Llama a la funcin bae
popl %edx
#Recupera el registro %edx en la pila
popl %ecx
#Recupera el registro %edx en la pila
addl -4(%edx), %eax #Suma -4 al contenido de %edx y lo guarda en el
#registro %eax
leave
#Prepara la pila para el retorno
ret
#Retorna la funcin
xorl %eax, %eax
#Hace cero el contenido del registro %eax
leave
#Prepara la pila para el retorno
ret
#Retorna la funcin
Las instancias donde hay Forwarding sern ilustradas de color verde en el siguiente esquema y
descritas a continuacin.
bae:
pushl %ebp
jle yolo
decl %ecx
pushl %ecx
10
pushl %edx
11
call bae
12
popl %edx
13
popl %ecx
14
15
leave
16
ret
17
yolo:
18
leave
19
ret
Si existe dependencia de datos entre dos instrucciones es necesario redirigir un registro entre
las etapas de estos registros que se encuentra ejecutndose, cuando se dan estas condiciones
se produce un forwarding. Para efectos de anlisis se asume que los registros son ledos al
comienzo del ciclo Instruction Decode y escritos al finalizar Write back, por lo tanto cualquier
transferencia de datos entre registros de otras etapas requiere forwarding.
Los casos en los que se necesita forwarding para este cdigo son:
1.- Forwarding del registro %ebp desde la etapa EXECUTE de la instruccin 1 a la etapa
DECODE de la instruccin 2.
2.- Forwarding del registro %ebp desde la etapa MEMORY de la instruccin 1 a la etapa
DECODE de la instruccin 3.
3.- Forwarding del registro %ebp desde la etapa MEMORY de la instruccin 2 a la etapa
DECODE de la instruccin 4.
4.- Forwarding del registro %ecx desde la etapa EXECUTE de la instruccin 4 a la etapa
DECODE de la instruccin 5.
5.- Forwarding del registro %ecx desde la etapa EXECUTE de la instruccin 5 a la etapa
DECODE de la instruccin 6.
6.- Forwarding del registro %ecx desde la etapa MEMORY de la instruccin 5 a la etapa
DECODE de la instruccin 7.
7.- Forwarding del registro %ecx desde la etapa EXECUTE de la instruccin 7 a la etapa
DECODE de la instruccin 8.
8.- Forwarding del registro %edx desde la etapa EXECUTE de la instruccin 9 a la etapa
DECODE de la instruccin 10.
9.- Forwarding del registro %edx desde la etapa MEMORY de la instruccin 10 a la etapa
DECODE de la instruccin 12.
10.- Forwarding del registro %edx desde la etapa MEMORY de la instruccin 12 a la etapa
DECODE de la instruccin 14.
11.- Forwarding de los cdigos de condicin desde la etapa MEMORY de la instruccin 5 a la
etapa EXECUTE de la instruccin 6.
e)
En la siguiente tabla se muestra los ciclos correspondientes a cada tipo de instancia; peligros
de lectura y uso, saltos condicionales y retornos.
Cantidad de veces que se repite para Ciclos
los argumentos datos
4
8
Peligros de lectura y
2
uso
Saltos condicionales
1
4
4
Retorno
2
3 y 1 (*)
4
(*) Las instrucciones que corresponden a retorno son la instruccin 16 y 19, en donde la
primera se ejecuta 3 veces y la segunda 1 vez por lo tanto esto genera 4 ciclos.
Ahora se muestra el total de burbujas producidas por estas instancias
Lectura y uso
Salto condicional
Retorno
Total
Ciclos
8
4
4
-
Penalidad
1
2
3
-
Burbujas
8
8
12
28
En base a estas predicciones habra solo una prediccin errada ya que solo una vez el salto de
la instruccin 6 es tomado y va hacia adelante (en los otros casos no es tomado) esta
prediccin errada tiene una penalidad asociada de 2 mientras que los aciertos no tiene
penalidad asociada.
Esto producira 1x2 = 2 burbujas asociadas a saltos condicionales, lo cual entrega un total de 22
burbujas. El nuevo CPI ser:
DESARROLLO PROBLEMA 2
Nivel
L1
L2
L3
RAM
Tamao
32 KiB
256 KiB
8 MiB
8 GiB
Asociatividad
8 Vas
8 Vas
16 Vas
Tiempo de Acceso
1 Ciclo
5 Ciclos
40 Ciclos
120 Ciclos
Tasa de Aciertos
90 %
95 %
98 %
100 %
En la siguiente tabla se describen los tiempos de cada nivel de memoria y la tasa de fallos
correspondiente.
Nivel
L1
L2
L3
RAM
Tiempo (segundos)
1s
0,2 s
0,025 s
0,0083 s
Tasa de Fallos
10 %
5%
2%
0%
Como sabemos que usar una jerarqua de memoria de dos o ms niveles afecta a la penalidad
de fallo de la cache de nivel anterior por lo que la ecuacin anterior se expresa como:
AMAT = (tasa de acierto L1)*(tiempo de acierto L1) + (tasa de fallo L1)*(penalidad de fallo L1)*
(penalidad de fallo L2)*(penalidad de fallo L3)
En donde:
Penalidad de fallo L1= (tasa de acierto L2)*(tiempo de acierto L2)+(tasa de fallo L2)*(penalidad
de fallo L2)
Penalidad de fallo L2= (tasa de acierto L3)*(tiempo de acierto L3)+(tasa de fallo L3)*(penalidad
de fallo L3)
Penalidad de fallo L3= tiempo de acceso a la DRAM
Reemplazando en la ecuacin de AMAT
DESARROLLO PROBLEMA 3
a)
128 Filas y 128 columnas producen una matriz con 16384 enteros, cada entero es de 4 bytes
por lo que se obtienen 16384*4 = 65536 bytes.
Como cada bloque es de 16 bytes, del cociente entre 65536 y los bytes de cada bloque se
obtienen 4096 bloques.
Como se determin anteriormente los ndices son 4096 por lo tanto los bloques se pueden
enumerar con ndices del 0 al 4095.
En consecuencia tanto la matriz destino como la matriz fuente tendrn los mismos ndices
para todos sus bloques. Es por ello que:
Copiar el bloque cero en la matriz fuente que esta vaca genera un fallo
Copiar determinado bloque desde matriz fuente a matriz destino, implica un fallo
causado por la igualdad de sus ndices.
Esto ocurre sucesivamente para todos los elementos de la matriz por lo que la tasa de acierto
es de un 0%
b)
128 Filas y 192 columnas producen una matriz con 24576 enteros, cada entero es de 4 bytes
por lo resultan 24576*4 = 98304 bytes.
Sabemos que cada bloque es de 16 bytes por lo tanto del cociente entre 98304 bytes y 16
bytes sabemos que son 6144 bloques.
De estos, los primeros 4096 seran etiquetados con un ndice, el cual ira de 0 a 4095, el resto
tendr ndices del 0 al 2047. Por lo tanto: