Académique Documents
Professionnel Documents
Culture Documents
b) Mostrar el formato de una direccion de memoria vista desde la cache (tag, line, index ).
Cu
ales de estos campos deben guardarse en la cache?
Soluci
on de Mariano M. Moscato. (10 de noviembre de 2011)
Como la lnea es de 16 palabras y se utiliza direccionamiento a palabra, el campo index
tendr
a 4 bits.
Teniendo en cuenta que la cache tiene 32 lneas, el campo line tendra 5 bits.
Adem
as sabemos que la memoria esta dividida en 211 bloques, por lo que el campo tag
tendr
a 11 bits.
tag
11 bits
line
5 bits
index
4 bits
S
olo debemos guardar el tag.
A modo de verificaci
on notemos que la suma de los tama
nos de los tres campos da veinte, que
es justamente la cantidad de bits necesaria para asignar direcciones a este tipo de memoria
(de 220 palabras con direccionamiento a palabra).
1 del captulo 6, L. Null & J. Lobur, Essentials of Computer Organization and Architecture
tag
0000 1101 101
0x6D
line
1 0110
0x16
index
0011
0x3
Entonces, luego del pedido, la lnea 0x16 de la cache correspondera al bloque 0x6D. En el
ndice 3 de esa lnea estar
a la palabra cuya direccion en memoria principal es 0x0DB63.
b) Mostrar el formato de una direccion de memoria vista desde la cache (tag, index ). Cuales
de estos campos deben guardarse en la cache?
Soluci
on de Mariano M. Moscato. (10 de noviembre de 2011)
La lnea tiene 32 palabras; luego, alcanzan con cinco bits para el ndice.
En el punto anterior vimos que hay 211 lneas en memoria principal; entonces, bastan con
once bits para el tag.
tag
11 bits
2 Ejercicio
index
5 bits
3 del captulo 6, L. Null & J. Lobur, Essentials of Computer Organization and Architecture
Ejercicio 3 3 Se tiene una computadora con 227 palabras de memoria principal. La cache tiene
una capacidad total de 215 lneas de 64 palabras cada una.
a) Mostrar el formato de una direccion de memoria para una cache asociativa por conjuntos de
2 vias.
Soluci
on de Mariano M. Moscato. (10 de noviembre de 2011) La memoria tiene 227
27
palabras. Como cada lnea tiene 64 palabras, la memoria tiene 226 = 221 lneas. La cache tiene
21
2 vias de 214 lneas cada una, entonces la memoria principal se encuentra dividida en 2214 = 27
bloques.
tag
7 bits
line
14 bits
index
6 bits
b) C
omo queda cargada la cache al leer primero la posicion de memoria 0x01178FC y luego
0x03178FC?
3 Ejercicio
5 del captulo 6, L. Null & J. Lobur, Essentials of Computer Organization and Architecture
Soluci
on de Mariano M. Moscato. (10 de noviembre de 2011)
La primer direcci
on de memoria (000 0001 0001 0111 1000 1111 1100 en binario) sera interpretada por la cache como 0x01 (tag), 0x05E3 (conjunto), 0x3C (ndice). Si en ese conjunto
las dos vas estuvieran libres, la memoria cache podra quedar como se muestra en la siguiente
figura. (Recordar que se carga toda la lnea.)
La segunda direcci
on de memoria (000 0011 0001 0111 1000 1111 1100 en binario) sera interpretada por la cache como 0x03 (tag), 0x05E3 (conjunto), 0x3C (ndice). Siguendo con el
ejemplo de la figura anterior, la cache cambiara como se muestra a continuacion. (Recordar
que se carga toda la lnea.)
Ejercicio 4
Una computadora trabaja con palabras e instrucciones (de tama
no
fijo) de 64 bits, direcciones y registros de 32 bits y direccionamiento
a palabra. Sea el programa mostrado a la derecha, que calcula el
producto escalar de dos vectores (el tama
no de los vectores se indica
en R4).
ciclo:
MOV R0,0
MOV R1,v1
MOV R2,v2
MOV R3,0
ADD R3,[R1]
MUL R3,[R2]
ADD R0,R3
MOV R3,0
INC R1
INC R2
DEC R4
JNZ ciclo
Soluci
on de Mariano M. Moscato. (10 de noviembre de 2011)
Primero veamos c
omo son los campos de acuerdo al tipo de cache con el que estamos trabajando. Como es una cache de correspondencia directa, cada direccion de memoria sera interpretada
utilizando los campos: tag, lnea e ndice.
Como hay 23 palabras en cada lnea y el procesador usa una direccion por palabra, alcanzaran
3 bits para el ndice. Dado que la cache mide 16 KB, y cada palabra 8 bytes (64 bits), caben en ella
211 palabras. Como cada lnea agrupa 23 palabras, en la cache caben 28 lneas. Luego, alcanzan
con 8 bits para el campo lnea. Entonces, como sabemos que las direcciones miden 32 bits, el campo
tag deber
a medir 32 8 3 = 21 bits.
Veamos ahora los pedidos a memoria que vamos a tener a medida que ejecutemos el programa.
Comencemos por las instrucciones anteriores al ciclo.
pedido
1
2
3
4
0000 00EC
0000 00ED
0000 00EE
0000 00EF
instrucci
on
instrucci
on
instrucci
on
instrucci
on
MOV
MOV
MOV
MOV
R0,0
R1,v1
R2,v2
R3,0
vista cache
000000 1D 4
000000 1D 5
000000 1D 6
000000 1D 7
resultado
M
H
H
H
Hasta aqu tenemos cuatro pedidos, de los cuales el primero es un miss, pero provoca que se
cargue la lnea correspondiente a los siguientes tres, que resultaran en sendos hits. La primera
iteraci
on del ciclo provoca los siguientes pedidos.
pedido
5
6
7
8
9
10
11
12
13
14
0000 00F0
F000 00F0
0000 00F1
FFFF 00F0
0000 00F2
0000 00F3
0000 00F4
0000 00F5
0000 00F6
0000 00F7
instrucci
on
dato
instrucci
on
dato
instrucci
on
instrucci
on
instrucci
on
instrucci
on
instrucci
on
instrucci
on
ADD R3,[R1]
MUL R3,[R2]
ADD R0,R3
MOV R3,0
INC R1
INC R2
DEC R4
JNZ ciclo
vista cache
000000 1E 0
1E0000 1E 0
000000 1E 1
1FFFE0 1E 0
000000 1E 2
000000 1E 3
000000 1E 4
000000 1E 5
000000 1E 6
000000 1E 7
resultado
M
M
M
M
M
H
H
H
H
H
Si bien las ocho instrucciones del ciclo ocupan exactamente la lnea de tag cero y n
umero de
lnea 1E, el pedido de datos de las dos primeras instrucciones provocan que se desaloje (y se vuelva
a alojar) dicha lnea en dos oportunidades sucesivas. Por lo tanto, tenemos diez pedidos mas, los
que se reparten equitativamente entre hits y misses. La segunda iteracion provocara estos pedidos:
pedido
15
16
17
18
19
20
21
22
23
24
0000 00F0
F000 00F1
0000 00F1
FFFF 00F1
0000 00F2
0000 00F3
0000 00F4
0000 00F5
0000 00F6
0000 00F7
instrucci
on
dato
instrucci
on
dato
instrucci
on
instrucci
on
instrucci
on
instrucci
on
instrucci
on
instrucci
on
ADD R3,[R1]
MUL R3,[R2]
ADD R0,R3
MOV R3,0
INC R1
INC R2
DEC R4
JNZ ciclo
vista cache
000000 1E 0
1E0000 1E 1
000000 1E 1
1FFFE0 1E 1
000000 1E 2
000000 1E 3
000000 1E 4
000000 1E 5
000000 1E 6
000000 1E 7
resultado
H
M
M
M
M
H
H
H
H
H
Esta configuraci
on es casi identica a la anterior, la u
nica diferencia es que el primer pedido
no provoca un miss como antes debido a que la lnea ya se encontraba en la cache (por el u
ltimo
pedido de la iteraci
on anterior). Sin embargo, vuelve a repetirse el desalojo sucesivo de la lnea 1E.
Es f
acil ver que esto ocurre porque los pedidos de datos corresponden a lneas con el mismo n
umero
de lnea (1E) que las direcciones de las instrucciones. Dado que los datos pedidos se ubican en el
primer ndice de la lnea y se van pidiendo secuencialmente, esta misma configuracion se repetira en
las siguientes seis iteraciones del ciclo.
La novena iteraci
on provocar
a los siguientes pedidos.
pedido
95
96
97
98
99
100
101
102
103
104
0000 00F0
F000 00F8
0000 00F1
FFFF 00F8
0000 00F2
0000 00F3
0000 00F4
0000 00F5
0000 00F6
0000 00F7
instrucci
on
dato
instrucci
on
dato
instrucci
on
instrucci
on
instrucci
on
instrucci
on
instrucci
on
instrucci
on
ADD R3,[R1]
MUL R3,[R2]
ADD R0,R3
MOV R3,0
INC R1
INC R2
DEC R4
JNZ ciclo
vista cache
000000 1E 0
1E0000 1F 0
000000 1E 1
1FFFE0 1F 0
000000 1E 2
000000 1E 3
000000 1E 4
000000 1E 5
000000 1E 6
000000 1E 7
resultado
H
M
H
M
H
H
H
H
H
H
8
14 ;
3+5+6(R41)
4+10(R4) ;
3+5+67+8(R48)
;
4+10(R4)
Preguntas finales:
a) Que pasa si R4 es mayor a 2032?
b) C
omo cambiara el resultado del ejercicio si se utilizara una cache asociativa por conjuntos
de 2 vas con lneas de 8 palabras y algoritmo de reemplazo LRU?