Sie sind auf Seite 1von 42

Practica 8 - Performance

Organizaci
on del Computador I

Ver
onica Coy
Departamento de Computaci
on - FCEyN
UBA

2do Cuatrimestre de 2015

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Jerarqua de Memoria

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Hablemos sobre la memoria Cache... (1)

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

2do Cuatrimestre de 2015

Hablemos sobre la memoria Cache... (2)


El problema
1. El CPU es muuuuy rapido.
2. La memoria r
apida es cara y consume mucha energa.
3. La memoria barata y de bajo consumo es lenta.
4. Quiero tener mucha memoria, muy r
apida, barata y que
consuma poca energa.

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

2do Cuatrimestre de 2015

Tiempo de Acceso (ns)

Cantidad de memoria (KB)

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

2do Cuatrimestre de 2015

Como funciona?

Los pedidos a la cach


e se clasifican como:
I Hit: Si el dato de la direcci
on solicitada por el CPU se encuentra en cach
e.
I Miss: En caso contrario.
Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Como medimos la performance?

En base a estos dos eventos, miss y hit, se obtienen metricas para


estimar el desempe
no de una cache:
Hit Rate =
Miss Rate =

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

2do Cuatrimestre de 2015

Disenando una cache


Que cosas debera tener en cuenta a la hora de dise
nar una cache?
I

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.

Poltica de desalojo: Que hacer cuando se llena la cache.


I
I
I
I
I

Random
FIFO (First In First Out)
LFU (Least Frequently Used)
LRU (Least Recently Used)
...

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

la cach indicando el origen (la posicin en RAM) correspondiente al dato en cuestin.


Esta etiqueta se denomina tag, y permite identificar cual de las mltiples posiciones de
memoria que van a parar a una lnea dada de la cach se encuentra all en un momento
determinado.

Estructura de una Cache

Las memorias cach se organizan y operan (cargan y descargan) en lneas, a diferencia de


una memoria convencional que se opera de a palabras. A su vez, dentro de cada lnea, cada
unidad direccionable tiene un ndice dentro de la misma.
Tags

Palabras
por lnea

Lneas

ndices

I Lnea: Las memorias cach


e se componen por unidades denominadas lneas cuyo
tama
no es m
ultiplo del tama
no de palabra que utiliza el CPU. Es la unidad que
se carga cada vez que se hace un acceso a memoria.
I Indice: Un ndice permite ubicar una palabra dentro de una lnea
I Tag: Es el identificador usado para mantener la correspondencia entre la lnea
en cach
e y la ubicaci
on de dicho contenido en memoria. El modo de trazar la
correspondencia vara seg
un el tipo de cach
e.

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache Totalmente Asociativa


Permite que cada lnea de memoria principal pueda cargarse en
cualquier lnea de la cache.
Memoria
0x0
0x0
0x4
0x0
0x8
0x0
0xC
0x0

Cada una de estas lneas identifica unvocamente una lnea de la


memoria principal por medio del
tag o etiqueta.

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

Para decidir si una lnea esta en la


cache se debe examinar todas los
tags almacenados en la cache.

Cache
indice
tag

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache Totalmente Asociativa


C
omo se hace la asociaci
on entre
las posiciones de memoria y la lnea
de cach
e?
Memoria

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

Dividiendo la memoria en lneas y


numer
andolas:
#bloquesmem =
=

|memoria|
|lineacache |

|memoria|
|cache|
#lineascache


16 
unidades



8 unidades/bloque
2

= 4 bloques 2 bits para tags


00

01

10

11

Organizaci
on del Computador I

Cada bloque de memoria se va a


corresponder con cualquier lnea de
cach
e.

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache Totalmente Asociativa


Pregunta:
Qu
e ocurre cuando el CPU solicita
la direccion 0x6?

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

Tomo los dos primeros bits de la


direcci
on para identificar el tag:
0x6 01 10
|{z} |{z}
tag

indice

Como el tag no est


a cargado en
cach
e se produce un miss. Voy
a la memora, busco la lnea y la
traigo.

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache Totalmente Asociativa


Pregunta:
Y si ahora quiere traer la direccion
0x1?

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

Como el tag no est


a cargado en
cach
e se produce un miss. Voy
a la memora, busco la lnea y la
traigo.

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache Totalmente Asociativa


Pregunta:
Ahora, qu
e ocurrira si el CPU pidiera la direcci
on 0xA?:

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

Miss de nuevo, pero ahora tengo la cach


e llena. Debera desalojar
alguna lnea, pero cu
al?
I Random
I FIFO (First In First Out)
I LFU (Least Frequently
Used)
I LRU (Least Recently Used)

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache de Correspondencia Directa


(o Mapeo Directo)
Consiste en partir la memoria principal en bloques del tama
no de
la cach
e. Luego, cada lnea del
bloque tiene su lugar especfico en
la cach
e.

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

Por cada lnea tengo que guardar a


qu
e bloque pertenece.

Cache
indice
tag

Organizaci
on del Computador I

Lnea 0
Lnea 1

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache de Correspondencia Directa


(o Mapeo Directo)
C
omo se hace la asociaci
on entre
las posiciones de memoria y la lnea
de cach
e?

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

Dividiendo la memoria en bloques


y numer
andolos:
#bloquesmem =
=




16 unidades
8 unidades/bloque

= 2 bloques 1 bit para tags

Cache
indice
tag

|memoria|
|cache|

00

01

10

11

Organizaci
on del Computador I

Lnea 0
Lnea 1

Cada bloque de memoria se va a


corresponder lnea a lnea con el
bloque entero de cach
e.

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache de Correspondencia Directa


(o Mapeo Directo)
Pregunta:

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

Como el tag no est


a cargado en
cach
e se produce un miss. Pido
a memoria toda la lnea.

00

01

10

11

0000

0000

1111

0000

Organizaci
on del Computador I

Lnea 0
Lnea 1

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache de Correspondencia Directa


(o Mapeo Directo)
Pregunta:

Memoria
Bloque 1 Bloque 0

Y si ahora pide la direcci


on 0x1?
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

Respuesta:
Idem:
0 01
0x1 0
|{z} |{z} |{z}
tag

Como el tag ya est


a cargado en
memoria, pero la lnea 0 no, se produce un miss. Pido a memoria
toda la lnea.

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

2do Cuatrimestre de 2015

Cache de Correspondencia Directa


(o Mapeo Directo)
Pregunta:

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

Como el tag no est


a cargado
en cach
e, se produce un miss
porque s
e que esa lnea no est
a en
cach
e.

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

2do Cuatrimestre de 2015

Cache Asociativa por Conjuntos de N Vas


Es un tipo de cach
e que combina
caractersticas de los dos tipos de
cach
e que vimos previamente.

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

Es muy similar a la Cach


e de
Correspondencia Directa, pero con
el agregado de vas que permiten
persistir las lneas de memoria en
cach
e por m
as tiempo.
Vamos a ver un ejemplo de 2 vas,
es extensible a N vas

Cache
tag

{z

tag

}|

via 1

Organizaci
on del Computador I

{z

Set 0
Set 1
}

via 0

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache Asociativa por Conjuntos de N Vas


C
omo se hace la asociaci
on entre
las posiciones de memoria y la lnea
de cach
e?

Bloque 2 Bloque 1 Bloque 0

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

Dividiendo la memoria en bloques


y numer
andolos:
#bloques =mem
=
=

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

= 3 bloques 2 bits para tags

Set 0
Set 1
}

Cada bloque de memoria se va a


corresponder lnea a lnea con las
lneas de cada va de la cach
e.

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache Asociativa por Conjuntos de N Vas


Pregunta:
Qu
e ocurre cuando el CPU solicita
la direcci
on 0x2?

Bloque 2 Bloque 1 Bloque 0

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

Como el tag no est


a cargado en
cach
e se produce un miss. Pido a
memoria la lnea entera.

via 0

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Cache Asociativa por Conjuntos de N Vas


Pregunta:
Y si ahora pide la direcci
on 0x1?

Bloque 2 Bloque 1 Bloque 0

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

Como la lnea no est


a cargada en
cach
e se produce un miss. Pido a
memoria la lnea entera.

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

2do Cuatrimestre de 2015

Cache Asociativa por Conjuntos de N Vas


Pregunta:
Ahora, qu
e ocurrira si el CPU pidiera la direcci
on 0xB?

Bloque 2 Bloque 1 Bloque 0

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

Como el tag no est


a cargado en
cach
e, se produce un miss.
La direcci
on pedida corresponde al
set 1 y como tengo espacio puedo
traerla.

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

2do Cuatrimestre de 2015

Cache Asociativa por Conjuntos de N Vas


Cuando el CPU solicita nuevamente la direcci
on 0x2:
Bloque 2 Bloque 1 Bloque 0

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

Tomo los dos primeros bits de la


direcci
on para identificar el tag y el
siguiente para identificar el set:
0x2 00 1
0
|{z} |{z} |{z}
tag

set ndice

Como el tag est


a cargado en
cach
e se produce un hit.

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

2do Cuatrimestre de 2015

Cache Asociativa por Conjuntos de N Vas


Pregunta:
Y si despu
es el CPU pide la direcci
on 0x7?

Bloque 2 Bloque 1 Bloque 0

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

Como el tag no est


a cargado en
cach
e, se produce un miss.
De nuevo, la direcci
on pedida corresponde al set 1. Sin embargo, ya
tengo todas las vas de mi set completas. Qu
e hago?

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
}

Desalojo la lnea de alguna de las


vas del set 1 usando alguna de
las polticas que vimos antes. Por
ejemplo: LFU.

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Ejercicio 1 - Correspondencia directa

Memoria Principal: 220 bytes, direccionable a byte.


Cache: 32 lneas de 16 bytes cada una.
Responder:
1. Cuanto mide un bloque para esta configuracion?
2. Cuantos bloques entran en memoria principal?
3. Cuantas lneas entran en un bloque?
4. Como puedo saber si esta cargada la lnea donde se
encuentra la palabra referida por la direcci
on C34A6?

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

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

2do Cuatrimestre de 2015

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

Finalmente, me tengo que fijar si en el lugar reservado para las lneas n


umero
0xA, est
a cargada la lnea correspondiente al bloque n
umero 0x61A; si es as, la
lnea correspondiente a la direcci
on pedida est
a cargada en cache.

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Ejercicio 2 - Asociativa por conjuntos

Memoria Principal: 1 MB, direccionable a byte.


Cache: 32 lneas de 64 bytes cada una, 2 vas.
Responder:
1. Cuanto mide un bloque para esta configuracion?
2. Cuantos bloques entran en memoria principal?
3. Cuantas lneas entran en un bloque?
4. Como puedo saber si esta cargada la lnea donde se
encuentra la palabra referida por la direcci
on C34A6?

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

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

# lneas por va x capacidad de una lnea = 24

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

2do Cuatrimestre de 2015

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

Finalmente, me tengo que fijar si en el lugar reservado para las lneas n


umero
0x2, est
a cargada la lnea correspondiente al bloque n
umero 0x30D, en
cualquiera de los dos espacios del conjunto; si es as, la lnea correspondiente a
la direcci
on pedida est
a cargada en cache.

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Ejercicio 3 - Ejercicio de parcial

Se estudia agregar una memoria cache a una computadora cuyas


palabras y direcciones de memoria son de 16 bits, y que trabaja
con direccionamiento a byte.
Hasta el momento se barajan dos opciones:
I

Una cache asociativa por conjuntos de 4 vas

Una de correspondencia directa (o mapeo directo), utilizando


FIFO como poltica de desalojo

Cada cache puede almacenar hasta 1024 bytes de informacion (sin


contar el espacio necesario para los tags) y se organiza en 64 lneas
en total.

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

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

2do Cuatrimestre de 2015

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

Por lo tanto, la decodificaci


on de la direcci
on de 16 bits ser
a
tag
6 bits

Organizaci
on del Computador I

lnea
6 bits

ndice
4 bits

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

(a) Asociativa por conjuntos


1. Cu
anto mide un bloque para esta configuraci
on?
Para esta configuraci
on, coincide con el tama
no de una va.
capacidad cache
210 B
=
= 28 B
# vas
4

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

2do Cuatrimestre de 2015

(b) Accesos a memoria - Acceso directo


Direcci
on

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

Hit rate = 94 0.44 %

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

(c) Comparacion - Tarea


Idea de soluci
on:
Para este bloque de c
odigo sera m
as conveniente la cach
e asociativa por conjuntos de
4 vas, ya que se eliminaran los desalojos gracias al m
as alto nivel de asociatividad.

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Acceso Desalineado

Un acceso desalineado es una situaci


on especial que se da cuando
se realiza un acceso a memoria en una posici
on cuya palabra
sobrepasa el lmite de la lnea de cache. En este caso, para
satisfacer el u
ltimo pedido de lectura desde cache, sera necesario
cargar dos lneas de cache en vez de una.
Un acceso desalineado es considerado un Hit sii ambas lneas ya
estan en la cache. Si falta una o las dos es considerado un u
nico
Miss.

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Por que funciona la cache (localidad espacial)

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

2do Cuatrimestre de 2015

Por que funciona la cache (localidad temporal)

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

2do Cuatrimestre de 2015

Preguntas?

Organizaci
on del Computador I

Pr
actica 8 - Performance

2do Cuatrimestre de 2015

Das könnte Ihnen auch gefallen