Beruflich Dokumente
Kultur Dokumente
Organizaci
on del Computador I
Ver
onica Coy
Departamento de Computaci
on - FCEyN
UBA
Organizaci
on del Computador I
Pr
actica 8 - Performance
Jerarqua de Memoria
Organizaci
on del Computador I
Pr
actica 8 - Performance
Qu
e es una memoria Cach
e?
Es un espacio de almacenamiento intermedio entre el CPU y la memoria principal.
Por qu
e la necesitamos?
Porque el crecimiento de la velocidad de los CPUs en las u
ltimas d
ecadas ha sido
exponencial respecto al de las memorias. El uso de la cach
e sirve para minimizar el
tiempo de acceso a los datos mejorando as la performance del sistema.
Cu
anto m
as rapida es?
Entre 10 y 100 veces mas r
apida que la memoria principal.
Por qu
e entonces no usamos s
olo memoria cach
e?
Porque la memoria cach
e es muy cara.
Organizaci
on del Computador I
Pr
actica 8 - Performance
Una solucion
1. Uso mucha memoria de la barata y lenta,
2. y un poquito de memoria de la cara y rapida,
3. en la que mantengo una copia de los datos mas usados.
Organizaci
on del Computador I
Pr
actica 8 - Performance
120
2500
100
2000
80
1500
60
1000
40
500
20
0
Registro
L1
Organizaci
on del Computador I
L2
L3
RAM
Pr
actica 8 - Performance
Registro
L1
L2
L3
RAM
Como funciona?
Pr
actica 8 - Performance
cantidad de hits
cantidad de pedidos
cantidad de miss
cantidad de pedidos
Observacion:
Hit Rate + Miss Rate = 1
Nuestro objetivo es lograr que el hit rate sea lo mas alto posible.
Organizaci
on del Computador I
Pr
actica 8 - Performance
Tama
no: Debera ser lo suficientemente grande como para
maximizar los hits, pero a la vez, que sea lo suficientemente
peque
na como para no afectar el nivel de consumo.
Organizaci
on: Establecer de que forma vinculo las direcciones
de memoria con las posiciones de mi cache.
Random
FIFO (First In First Out)
LFU (Least Frequently Used)
LRU (Least Recently Used)
...
Organizaci
on del Computador I
Pr
actica 8 - Performance
Palabras
por lnea
Lneas
ndices
Organizaci
on del Computador I
Pr
actica 8 - Performance
0x1
0xA
0x5
0x0
0x9
0x0
0xD
0x0
0x2
0x0
0x6
0xF
0xA
0x5
0xE
0x0
0x3
0x0
0x7
0x0
0xB
0x0
0xF
0x0
00
01
10
11
Cache
indice
tag
Organizaci
on del Computador I
Pr
actica 8 - Performance
B.0
B.1
B.2
B.3
0000
0000
0100
0000
1000
0000
1100
0000
0001
1010
0101
0000
1001
0000
1101
0000
0010
0000
0110
1111
1010
0101
1110
0000
0011
0000
0111
0000
1011
0000
1111
0000
Cache
indice
tag
|memoria|
|lineacache |
|memoria|
|cache|
#lineascache
16
unidades
8 unidades/bloque
2
01
10
11
Organizaci
on del Computador I
Pr
actica 8 - Performance
Memoria
Respuesta:
B.0
B.1
B.2
B.3
0000
0000
0100
0000
1000
0000
1100
0000
0001
1010
0101
0000
1001
0000
1101
0000
0010
0000
0110
1111
1010
0101
1110
0000
0011
0000
0111
0000
1011
0000
1111
0000
Cache
indice
tag
01
00
01
10
11
0000
0000
1111
0000
Organizaci
on del Computador I
indice
Pr
actica 8 - Performance
Memoria
Respuesta:
B.0
B.1
B.2
B.3
0000
0000
0100
0000
1000
0000
1100
0000
0001
1010
0101
0000
1001
0000
1101
0000
0010
0000
0110
1111
1010
0101
1110
0000
0011
0000
0111
0000
1011
0000
1111
0000
Cache
indice
tag
01
00
00
01
10
11
0000
0000
0000
1010
1111
0000
0000
0000
Organizaci
on del Computador I
Idem:
0x1 00 01
|{z} |{z}
tag
indice
Pr
actica 8 - Performance
Memoria
Respuesta:
B.0
B.1
B.2
B.3
0000
0000
0100
0000
1000
0000
1100
0000
0001
1010
0101
0000
1001
0000
1101
0000
0010
0000
0110
1111
1010
0101
1110
0000
0011
0000
0111
0000
1011
0000
1111
0000
Cache
indice
tag
10
00
00
01
10
11
0000
0000
0000
1010
0101
0000
0000
0000
Organizaci
on del Computador I
0xA 10 10
|{z} |{z}
tag
indice
Pr
actica 8 - Performance
Memoria
0x0
0x0
0x4
0x0
0x8
0x0
0xC
0x0
0x1
0xA
0x5
0x0
0x9
0x0
0xD
0x5
0x2
0x0
0x6
0xF
0xA
0x0
0xE
0x0
0x3
0x0
0x7
0x0
0xB
0x0
0xF
0x0
00
01
10
11
Cache
indice
tag
Organizaci
on del Computador I
Lnea 0
Lnea 1
Pr
actica 8 - Performance
Bloque 1 Bloque 0
Memoria
0000
0000
0100
0000
1000
0000
1100
0000
0001
1010
0101
0000
1001
0000
1101
0101
0010
0000
0110
1111
1010
0000
1110
0000
0011
0000
0111
0000
1011
0000
1111
0000
16 unidades
8 unidades/bloque
Cache
indice
tag
|memoria|
|cache|
00
01
10
11
Organizaci
on del Computador I
Lnea 0
Lnea 1
Pr
actica 8 - Performance
Bloque 1 Bloque 0
Memoria
0000
0000
0100
0000
1000
0000
1100
0000
0001
1010
0101
0000
1001
0000
1101
0101
0010
0000
0110
1111
1010
0000
1110
0000
Qu
e ocurre cuando el CPU solicita
la direcci
on 0x6?
0011
0000
0111
0000
1011
0000
1111
0000
Respuesta:
Tomo el primer bit de la direcci
on
para identificar el tag y el siguiente
para identificar la lnea:
0x6 0
1 10
|{z} |{z} |{z}
tag
lnea ndice
Cache
indice
tag
00
01
10
11
0000
0000
1111
0000
Organizaci
on del Computador I
Lnea 0
Lnea 1
Pr
actica 8 - Performance
Memoria
Bloque 1 Bloque 0
0001
1010
0101
0000
1001
0000
1101
0101
0010
0000
0110
1111
1010
0000
1110
0000
0011
0000
0111
0000
1011
0000
1111
0000
Respuesta:
Idem:
0 01
0x1 0
|{z} |{z} |{z}
tag
Cache
indice
tag
0
0
lnea ndice
00
01
10
11
0000
0000
1010
0000
0000
1111
0000
0000
Organizaci
on del Computador I
Lnea 0
Lnea 1
Pr
actica 8 - Performance
Bloque 1 Bloque 0
Memoria
0000
0000
0100
0000
1000
0000
1100
0000
0001
1010
0101
0000
1001
0000
1101
0101
0010
0000
0110
1111
1010
0000
1110
0000
Ahora, qu
e ocurrira si el CPU pidiera la direcci
on 0xD?
0011
0000
0111
0000
1011
0000
1111
0000
Respuesta:
1 01
0xD 1
|{z} |{z} |{z}
tag
Cache
indice
tag
0
1
00
01
10
11
0000
0000
1010
0101
0000
0000
0000
0000
Organizaci
on del Computador I
lnea ndice
Lnea 0
Lnea 1
Pero
ahora,
como
mi
cach
e est
a llena, voy a tener
que reemplazar la lnea correspondiente en cach
e.
Pr
actica 8 - Performance
Memoria
0x0
0x0
0x2
0xA
0x4
0x0
0x6
0x0
0x8
0x0
0xA
0x0
0x1
0xD
0x3
0x0
0x5
0x0
0x7
0x8
0x9
0x0
0xB
0xE
Cache
tag
{z
tag
}|
via 1
Organizaci
on del Computador I
{z
Set 0
Set 1
}
via 0
Pr
actica 8 - Performance
Memoria
0000
0000
0010
1010
0100
0000
0110
0000
1000
0000
1010
0000
0001
1101
0011
0000
0101
0000
0111
1000
1001
0000
1011
1110
Cache
tag
{z
tag
}|
via 1
Organizaci
on del Computador I
{z
via 0
|memoria|
|via|
|memoria|
|cache|
#vias
12
unidades
8 unidades/bloque
2
Set 0
Set 1
}
Pr
actica 8 - Performance
Memoria
0000
0000
0010
1010
0100
0000
0110
0000
1000
0000
1010
0000
0001
1101
0011
0000
0101
0000
0111
1000
1001
0000
1011
1110
Respuesta:
Tomo los dos primeros bits de la
direcci
on para identificar el tag y el
siguiente para identificar el set:
0
0x2 00 1
|{z} |{z} |{z}
tag
Cache
tag
{z
tag
00
}|
via 1
Organizaci
on del Computador I
1010
{z
0000
Set 0
Set 1
set ndice
via 0
Pr
actica 8 - Performance
Memoria
0000
0000
0010
1010
0100
0000
0110
0000
1000
0000
1010
0000
0001
1101
0011
0000
0101
0000
0111
1000
1001
0000
1011
1110
Respuesta:
Idem:
1
0x1 00 0
|{z} |{z} |{z}
tag
Cache
tag
{z
set ndice
tag
00
00
}|
via 1
Organizaci
on del Computador I
0
0000
1010
{z
1
1101
0000
Set 0
Set 1
}
via 0
Pr
actica 8 - Performance
Memoria
0000
0000
0010
1010
0100
0000
0110
0000
1000
0000
1010
0000
0001
1101
0011
0000
0101
0000
0111
1000
1001
0000
1011
1110
Respuesta:
0xB 10 1
1
|{z} |{z} |{z}
tag
Cache
tag
10
|
0000
{z
1110
set ndice
tag
00
00
}|
via 1
Organizaci
on del Computador I
0
0000
1010
{z
1
1101
0000
Set 0
Set 1
}
via 0
Pr
actica 8 - Performance
Memoria
0000
0000
0010
1010
0100
0000
0110
0000
1000
0000
1010
0000
0001
1101
0011
0000
0101
0000
0111
1000
1001
0000
1011
1110
0000
1110
set ndice
Cache
tag
10
|
{z
tag
00
00
}|
via 1
Organizaci
on del Computador I
0
0000
1010
{z
1
1101
0000
Set 0
Set 1
}
via 0
Pr
actica 8 - Performance
Memoria
0000
0000
0010
1010
0100
0000
0110
0000
1000
0000
1010
0000
0001
1101
0011
0000
0101
0000
0111
1000
1001
0000
1011
1110
0000
1000
Respuesta:
0x7 01 1
1
|{z} |{z} |{z}
tag
Cache
tag
01
|
{z
set ndice
tag
00
00
}|
via 1
Organizaci
on del Computador I
0
0000
1010
{z
via 0
1
1101
0000
Set 0
Set 1
}
Pr
actica 8 - Performance
Organizaci
on del Computador I
Pr
actica 8 - Performance
1. Cu
anto mide un bloque para esta configuraci
on?
Para esta
configuraci
on, coincide con el tama
no de la cache
# lneas cache x capacidad de una lnea = 32lneax16
B
= 512B = 29 B
lnea
2. Cu
antos bloques entran en memoria principal?
capacidad memoria
220 B
= 9
= 211 bloque
tama
no bloque
2 B/bloque
3. Cu
antas lneas entran en un bloque? Para esta configuracion, tantas
como entren en la cache:
512B
29 B
capacidad cache
=
= 4
= 25 lnea
capacidad de una lnea
16B/lnea
2 B/lnea
Organizaci
on del Computador I
Pr
actica 8 - Performance
4. C
omo puedo saber si est
a cargada la lnea donde se
encuentra la palabra referida por la direcci
on C34A6?
Primero me fijo cu
anto mide cada campo de una direcci
on de memoria para esta
configuraci
on de cache: tag 11 bits, lnea 5 bits, ndice 4 bits. Despu
es, paso la
direcci
on a binario para saber el valor de los campos correspondientes a esa
direcci
on.
I La direcci
on en binario:
3
4
A
6
C
1100 0011 0100 1010 0110
I
Agrupada seg
un los campos tag, lnea e ndice:
61A
A
6
110 0001 1010 0 1010 0110
Organizaci
on del Computador I
Pr
actica 8 - Performance
Organizaci
on del Computador I
Pr
actica 8 - Performance
1. Cu
anto mide un bloque para esta configuraci
on?
Para esta
configuraci
on, coincide con el tama
no de una va
# lneas por va =
lneas
32 cache
# lneas cache
lneas
lneas
= 16
=
= 24
vas
# vas
v
a
va
2 cache
B
B
lneas
x 64
= 210
va
lnea
va
2. Cu
antos bloques entran en memoria principal?
capacidad memoria
1MB
220 B
= 10
= 10
= 210 bloque
tama
no bloque
2 B/bloque
2 B/bloque
3. Cu
antas lneas entran en un bloque? Para esta configuracion, tantas
como entren en una va: 24 (ver punto 1).
Organizaci
on del Computador I
Pr
actica 8 - Performance
4. C
omo puedo saber si est
a cargada la lnea donde se
encuentra la palabra referida por la direcci
on C34A6?
Primero me fijo cu
anto mide cada campo de una direcci
on de memoria para esta
configuraci
on de cache: tag 10 bits, conjunto 4 bits, ndice 6 bits. Despu
es,
paso la direcci
on a binario para saber el valor de los campos correspondientes a
esa direcci
on.
I
La direcci
on en binario:
3
4
A
6
C
1100 0011 0100 1010 0110
Agrupada seg
un los campos tag, conjunto e ndice:
30D
2
26
11 0000 1101 0010 10 0110
Organizaci
on del Computador I
Pr
actica 8 - Performance
Organizaci
on del Computador I
Pr
actica 8 - Performance
a) Indique c
omo se distribuyen los bits de una direcci
on de memoria en los campos
correspondientes para cada una de las caches mencionadas.
C
odigo
Pedido a memoria
b) Se conoce que este fragmento
del fetch
de c
odigo insume gran parte
MOV R6, 0x10
0x9C13
del tiempo de c
omputo.
MOV R2, 0x801A
0x9C15, 0x9C17
Junto a cada instrucci
on se
mejill
on:
ADD R5, [R2]
0x9C19
indica el acceso a memoria
ADD R5, [R2 + 0x15]
0x9C1B
necesario para el fetch de la
SUB R6, 0x01
0x9C1D
instrucci
on, no as los necesarCMP R6, 0x00
0x9C1F
ios para acceder a los datos.
JNE mejill
on
0x9C21
Simule los accesos a memoria que realiza este programa hasta la comparaci
on
(inclusive) utilizando la cache de mapeo directo. Tenga en cuenta los accesos a
datos, que no fueron detallados en la tabla. Indique en cada paso el contenido de
la cache, y cuando corresponda detalle si se producen hits, misses, desalojos
(se
nalando la lnea desalojada) y/o accesos desalineados. Cu
al es el hit rate de
esta ejecuci
on parcial?
c) Cu
al de las dos caches es m
as conveniente para la ejecuci
on completa del
fragmento del programa presentado?
Organizaci
on del Computador I
Pr
actica 8 - Performance
a) Correspondencia directa
1. Cu
anto mide un bloque para esta configuraci
on?Para esta configuraci
on,
coincide con el tama
no de la cache, es decir 210 B (lo dice el enunciado)
2. Cu
antos bloques entran en memoria principal?
capacidad memoria
# direcciones x tama
no unidad dir.
216 x1B
=
=
= 26
tama
no bloque
tama
no bloque
210 B
3. Cu
antas lneas entran en un bloque?Para esta configuraci
on, tantas como
entren en la cache:
capacidad de una lnea =
capacidad cache
210 B
210 B
=
=
= 24 B
# lneas en cache
64
26
capacidad cache
210 B/cache
linea
= 4
= 26
capacidad de una lnea
2 B/linea
cache
4. Cu
antas direcciones distintas refieren a una misma lnea?
tama
no del tag x tama
no de la linea = 26 bits x 24 bits = 210 direcciones
Organizaci
on del Computador I
lnea
6 bits
ndice
4 bits
Pr
actica 8 - Performance
2. Cu
antos bloques entran en memoria principal?
capacidad memoria
# direcciones x tama
no unidad dir.
216 x1B
=
=
= 28
tama
no bloque
tama
no bloque
28 B
3. Cu
antas lneas entran en un bloque?
Hay 64 lneas, que se dividen entre las 4 vas. Por lo tanto, hay
conjuntos.
64
4
= 16 = 24
4. Cu
antas direcciones distintas refieren a una misma lnea?
tama
no del tag x tama
no de la linea = 28 bits x 24 bits = 212 direcciones
Por lo tanto, la codificaci
on ser
a
tag
8 bits
Organizaci
on del Computador I
conjunto
4 bits
ndice
4 bits
Pr
actica 8 - Performance
Tag
Lnea
Indice
Resultado
Estado Cache
Notas
0x9C13
27
Miss
{1: 27}
cargu
e 1:27
27
Hit
{1: 27}
27
Hit
{1: 27}
27
Hit
{1: 27}
20
Miss
{1: 20}
27
Miss
{1: 27}
20
Miss
{1: 27}
{2: 20}
{3: 20}
desaloj
e 1: 27;
cargu
e 1:20
desaloj
e 1: 20;
cargu
e 1:27
acc. desalineado;
cargu
e 2: 20;
cargu
e 3: 20
27
Hit
27
Miss
{1: 27}
{2: 27}
{3: 20}
acc. desalineado;
desaloj
e 2:20;
cargu
e 2: 27
27
01
3
10 0111 00 0001 0011
0x9C15
27
01
5
10 0111 00 0001 0101
0x9C17
01
7
27
10 0111 00 0001 0111
0x9C19
27
01
9
10 0111 00 0001 1001
0x801A
20
01
A
10 0000 00 0001 1010
0x9C1B
27
01
B
10 0111 00 0001 1011
0x802F
20
02
F
10 0000 00 0010 1111
0x9C1D
27
01
D
10 0111 00 0001 1101
0x9C1F
27
01
F
10 0111 00 0001 1111
Organizaci
on del Computador I
Pr
actica 8 - Performance
Organizaci
on del Computador I
Pr
actica 8 - Performance
Acceso Desalineado
Organizaci
on del Computador I
Pr
actica 8 - Performance
i n t a r r e g l o [ 1 0 0 0 0 ] = { / . . . / } ;
i n t contador = 0;
f o r ( i n t i = 0 ; i < 1 0 0 0 0 ; i++)
{
i f ( a r r e g l o [ i ] > 4)
c o n t a d o r ++;
}
Organizaci
on del Computador I
Pr
actica 8 - Performance
i n t a r r e g l o [ 1 0 0 0 0 ] = { / . . . / } ;
i n t contador = 0;
f o r ( i n t i = 0 ; i < 1 0 0 0 0 ; i ++)
{
i f ( a r r e g l o [ i ] > 4)
c o n t a d o r++;
}
Organizaci
on del Computador I
Pr
actica 8 - Performance
Preguntas?
Organizaci
on del Computador I
Pr
actica 8 - Performance