You are on page 1of 83

ec

Cache, reduccln de fallos, oculLacln de laLencla, memorla


prlnclpal

ec

! Los daLos ocupan
espaclo en memorla
! Acceder a ellos
lmpllca un clerLo
uempo
ec

! valores uplcos de uempos de acceso y preclos
por CbyLe (ano 2008)
1lpo de memorla 1lempo de acceso (ns) $ por CbyLe
S8AM 0.3-2.3 2000-3000
u8AM 30-70 20-73
ulsco magneuco 3.000.000-20.000.000 0.20-2
ec

! Cb[euvo:
Consegulr una memorla de gran Lamano, rplda y
al menor cosLe poslble.
ue forma LransparenLe al usuarlo
! Cmo organlzar la memorla?
! 8ase: rlnclplo de localldad
Cualquler programa accede a una porcln
relauvamenLe pequena de su espaclo de dlrecclones
en cualquler lnsLanLe de uempo"
ec

N|ve|es de |a Ierarqu|a de memor|a
! un compuLador uplco esL
formado por dlversos nlveles de
memorla, !"#$%&'$(!) (+ ,!"-$
.+"/"01&2$:
8eglsLros de la Cu
Memorla Cache
Memorla rlnclpal
Memorla Secundarla (dlscos)
Memorlas ash y Cu-8CMs
! Ll cosLe de Lodo el slsLema de
memorla excede al cosLe de la Cu
Ls muy lmporLanLe opumlzar su
uso
8eglsLros
de la Cu
Cache
(SRAMs)
Memoria Principal
(DRAMs)
Almacenamiento en disco
(estado slido, magnticos)
Memorias flash, discos pticos
T
i
e
m
p
o

d
e

a
c
c
e
s
o

C
o
s
t
e

C
a
p
a
c
i
d
a
d

nivel 0
nivel 1
nivel 2
nivel 3
nivel 4
ec

PentiumIII
Itaniun 2
Madison
LaLencla:
1clclo ( lLanlum2) a 3 clclos ower4-3
L1 uaLos
L1 lnsLr
1amano de la cache
uel 30 al 73 del rea. Ms del 80 de
los LranslsLores
ec

! Gesnn de |a memor|a cache
ConLrola la Lransferencla de
lnformacln enLre la memorla cache y
la memorla prlnclpal
Suele llevarse a cabo medlanLe
Pardware especlco (MMu o
ManagemenL Memory unlL")
! Gesnn de |a memor|a v|rtua|
ConLrola la Lransferencla de
lnformacln enLre la memorla
prlnclpal y la memorla secundarla
arLe de esLa gesun se reallza
medlanLe hardware especlco (MMu)
y oLra parLe la reallza el S.C
Memoria Cache
Memoria Principal
Memoria Secundaria
Gestin de la
memoria cache
Gestin de la
memoria virtual
ec

! !erarqula de memorla: muluples nlveles de memorla de dlferenLes
velocldades y Lamanos
! ropledades de la [erarqula de memorla:
lnclusln
Cualquler lnformacln almacenada en el nlvel de memorla Ml, debe
enconLrarse Lamblen en los nlveles Ml+1, Ml+2, ., Mn. Ls declr: M1 M2
. Mn
Coherencla
Las coplas de la mlsma lnformacln exlsLenLes en los dlsunLos nlveles deben
ser coherenLes
Sl un bloque de lnformacln se modlca en el nlvel Ml, deben acLuallzarse los
nlveles Ml+1,.., Mn
Localldad
Las referenclas a memorla generadas por la Cu, para acceso a daLos o a
lnsLrucclones, esLn concenLradas o agrupadas en clerLas reglones del uempo
y del espaclo

ec

! Localldad Lemporal: un daLo usado en un deLermlnado
lnsLanLe uende a ser pronLo reuullzado
Ls hablLual que un programa acceda la mlsma varlable
varlas veces. Lo pumo es manLenerla en reglsLro, pero no
slempre es poslble
! Localldad espaclal: Sl un daLo es uullzado en un
deLermlnado lnsLanLe, es muy probable que los daLos
cercanos a el sean Lamblen pronLo uullzados
Ls hablLual que un programa acceda daLos que esLn
almacenados en poslclones consecuuvas
Los arrays se almacenan en poslclones consecuuvas y se
suelen acceder secuenclalmenLe
ec

! Cada vez que se accede a memorla
prlnclpal, llevamos una copla del
daLo a una memorla ms pequena
y rplda (S8AM)
lnLroduce una penallzacln en el
prlmer acceso
Ser amoruzada sl se producen ms
accesos, pues se usar la copla y se
evlLar un accesos a memorla
prlnclpal.
Cu
S8AM
(Cache)
u8AM
(Mem. rln)
ec

! Cada vez que se accede a la
dlreccln l, llevamos una copla del
daLo a la cache
! ero adems, se coplan varlos
daLos ms
or e[emplo, sl se accede al
elemenLo a[0], se Lraen a la cache
a[0],a[1],a[2] y a[3]
ue nuevo, hay una penallzacln
lnlclal que suele amoruzarse.
Cu
S8AM
(Cache)
u8AM
(Mem. rln)
ec

! La memorla ms rplda (cache) se coloca ms cerca
del procesador Accesos ms rpldos
! ? el nlvel de memorla ms lenLo ser el ms ale[ado
! La busqueda de los daLos comlenza slempre en la
cache, y de no enconLrarse en ella, conunua por los
dems nlveles de memorla
llusln: memorla rplda
ec

! vamos a Lraba[ar con una memorla en 2 nlveles
Cache y memorla prlnclpal

! 8|oque: unldad mlnlma de Lransferencla enLre los dos nlveles
! Ac|erto (h|t): el daLo sollclLado esL en la cache
1asa de aclerLos (hlL rauo): la fraccln de accesos enconLrados en el
nlvel l
1lempo de aclerLo (hlL ume): uempo deLeccln de aclerLo + uempo de
acceso del nlvel l. (1lempo LoLal lnverudo para obLener un daLo
cuando esLe se encuenLra en el nlvel l)
! Ia||o (m|ss): el daLo sollclLado no esL en la cache y es necesarlo
buscarlo en la memorla prlnclpal
1asa de fallos (mlss rauo): 1 - (1asa de aclerLos)
1lempo de penallzacln por fallo (mlss penalLy): uempo lnverudo para
mover un bloque del nlvel l+1 al nlvel l, cuando el bloque referenclado
no esL en el nlvel l.
ec

! Memor|a pequea y rp|da slLuada enLre el procesador y la memorla prlnclpal
Almacena una copla de la porcln de lnformacln acLualmenLe en uso de la memorla
! Cb[envo: dlsmlnulr el uempo de acceso a memorla
! Lstructura del slsLema memorla cache/prlnclpal:
34 5-+-!"&$ 6"&%2&6$789
formada por 2
n
palabras dlrecclonables
dlvldlda" en n8 bloques de Lamano [o de 2
k
palabras por bloque
Campos de una dlreccln nslca:
3: 5-+-!"&$ 2$2;+89
formada por nM bloques (o llneas) de 2
k
palabras cada uno (nM<<n8)
<&"+2=!"&! 5+% -+-!"&$ 2$2;+89
ara cada bloque de MC, lndlca cul es el bloque de M que esL
alo[ado en el.
CU
memoria
principal
memoria
cache
bloque
Bloque cache
transferencias
de palabras
transferencias
de bloques
n8: numero de bloques
nM: numero de bloques de cache
8: dlreccln del bloque
M: dlreccln del bloque de cache
: palabra denLro del bloque
B P
Dir. Bloque
(n-k bits)
Palabra
(k bits)
DF:
ec

! Cuando la Cu genera una referencla, busca en la
cache
Sl la referencla no se encuenLra en la cache: IALLC
Cuando se produce un fallo, no solo se Lransere una
palabra, slno que se lleva un 8LCUL compleLo de
lnformacln de la M a la MC
4!" 7$ 6"!6&+($( (+ 7!2$7&($( =+-6!"$7
Ls probable que en una prxlma referencla se dlrecclone la mlsma
poslcln de memorla
LsLa segunda referencla no produclr fallo: produclr un ACILk1C
4!" 7$) 6"!6&+($(+) (+ 7!2$7&($( +)6$2&$7
Ls probable que prxlmas referenclas sean dlrecclones que
perLenecen al mlsmo bloque
LsLas referenclas no producen fallo
ec

- Maxlmlzar la Lasa de
aclerLos
- Mlnlmlzar el uempo de
acceso
- Mlnlmlzar el uempo de
penallzacln
- 8educlr el cosLe
hardware
ulreccln de memorla
CbLener el
bloque de M
Aslgnar bloque cache
al bloque de M
Almacenar bloque
en bloque cache
NC
(fa||o)
CPU
Memoria
cache
t
i
e
m
p
o

d
e

p
e
n
a
l
i
z
a
c
i

n

t
i
e
m
p
o

d
e

a
c
i
e
r
t
o

t
i
e
m
p
o

d
e

i
d
e
n
t
i
f
i
c
a
c
i

n

8uscar en el
dlrecLorlo
LsL en cache
el bloque?
Acceder a bloque cache
Selecclonar
palabra
SI
(ac|erto)
t
i
e
m
p
o

d
e

a
c
c
e
s
o

lln
on penalizaci acierto total
T H T T ) 1 ( ! + =
(frecuencia de hits)
ec

! Cmo sabemos que un daLo esL en la
cache?
! ? sl esL, cmo lo enconLramos?
CLI1ICAS DL LMLA2AMILN1C
ec

! olluca de emplazamlenLo:
necesarla ya que exlsLen menos bloques en MC que
bloques en M
ueLermlna en que bloque, o bloques, de MC, puede
cargarse cada bloque de M
! LxlsLen dlferenLes pollucas:
LmplazamlenLo dlrecLo
LmplazamlenLo asoclauvo
LmplazamlenLo asoclauvo por con[unLos
ec

! ara Lodos los e[emplos:
1amano de bloque 128 palabras => k=7
Memorla cache con 8 bloques
Memorla prlnclpal 4k palabras => n = 12
B P
5 7
DF:
00000000.0
.
00000111.1
00001000.0
.
00001111.1
11111000.0
.
11111111.1
.
8loque 0
8loque 1
8loque 31
ec

00001 00101 01001 01101 10001 10101
Memoria
Cache
0
0
0

0
0
1

0
1
0

0
1
1

1
0
0

1
0
1

1
1
0

1
1
1

! Cada bloque 8 uene aslgnado un
n|co bloque cache M en donde
ublcarse.
! LsLe bloque cache vlene dado por la
expresln: M = 8 mod nM. Sl nM =
2
m
enLonces M = (m blLs menos
slgnlcauvos de 8)
N Bloque
....
N Bloque
Cache
ec

L1IUL1A
=
8
M
L1IUL1A
DA1CS
V
L1IUL1A V
L1IUL1A
DA1CS
V
acierto
k
m n-m-k
Direccin ofrecida
por la CPU
Posible direccin cache
! Ll acceso al bloque cache
y al dlrecLorlo es dlrecLo.
! ara conocer sl un
bloque de mem. ppal esL
cargado en MC, basLa
comparar las euqueLas
CunLo vale m para los daLos del e[emplo?
ec

! Cada bloque 8 puede ublcarse en
cualqulera de los nM bloques de
cache
00001 00101 01001 01101 10001 10101
Memoria
Cache
0
0
0

0
0
1

0
1
0

0
1
1

1
0
0

1
0
1

1
1
0

1
1
1

N Bloque
....
N Bloque
Cache
ec

L1IUL1A
=
8

L1IUL1A V
DA1CS
L1IUL1A V
DA1CS
L1IUL1A V
aclerLo
k
n-k
! ara conocer sl un
bloque de mem. ppal
esL cargado en MC, hay
que comparar Lodas las
euqueLas
ec

! Cada bloque 8 uene aslgnado un
con[unLo [o C y puede ublcarse en
cualqulera de los bloques de cache
que componen dlcho con[unLo
! LsLe con[unLo vlene dado por la
expresln: C = 8 mod nC
00001 00101 01001 01101 10001 10101
Memoria
Cache
0
0
0

0
0
1

0
1
0

0
1
1

1
0
0

1
0
1

1
1
0

1
1
1

N Bloque
....
N Bloque
Cache
ec

L1IUL1A
=
8
C
L1IUL1A V
L1IUL1A V
L1IUL1A V
DA1CS
DA1CS
DA1CS
L1IUL1A V
L1IUL1A V
L1IUL1A V
DA1CS
DA1CS
DA1CS
L1IUL1A V
L1IUL1A V
L1IUL1A V
DA1CS
DA1CS
aclerLo
k
m n-m-k
C
0

C
1

C
nC-1




! Ll dlrecLorlo almacena para cada bloque de cache una euqueLa con los n-k-m
blLs que compleLan la dlreccln del bloque de prlnclpal almacenado
! Ll acceso al con[unLo es dlrecLo y al bloque de cache denLro del con[unLo
asoclauvo
>:1/%=! ?$7+ - 6$"$ 7!) ($=!) (+7 +.+-67!@
ec

! Ll valor nM/nC se denomlna grado de
asoclauvldad o numero de vlas de la MC
Crado de asoclauvldad = 1, equlvale a
emplazamlenLo dlrecLo
Crado de asoclauvldad = nM, equlvale a
emplazamlenLo asoclauvo
ec

Lmp|azam|neto Venta[as Inconven|entes
D|recto
Acceso slmple y rpldo AlLa Lasa de fallos cuando
varlos bloques complLen
por el mlsmo marco
Asoc|anvo
Mxlmo aprovechamlenLo de la MC una alLa asoclauvldad
lmpacLa dlrecLamenLe en
el acceso a la MC
Asoc|anvo por
con[untos
Ls un enfoque lnLermedlo enLre
emplazamlenLo dlrecLo y asoclauvo
Ll grado de asoclauvldad afecLa al
rendlmlenLo, al aumenLar el grado de
asoclauvldad dlsmlnuyen los fallos por
compeLencla por un marco
Crado pumo: enLre 2 y 16
Crado ms comun: 2
Al aumenLar el grado de
asoclauvldad aumenLa el
uempo de acceso y el
cosLe hardware

ec

! ju ocurre s| |a MC est ||ena? ju b|oque de cache se debe
desa|o[ar?
! Lspaclo de reemplazamlenLo: con[unLo de poslbles bloques que pueden
ser reemplazados por el nuevo bloque
D|recto: el bloque que reslde en marco que el nuevo bloque uene aslgnado. Al
no exlsur alLernauvas no se requleren algorlLmos de re-emplazamlenLo
Asoc|anvo: cualquler bloque que reslda en de la cache
Asoc|anvo por con[untos: cualquler bloque que reslda en el con[unLo que el
nuevo bloque uene aslgnado
! AlgorlLmos (lmplemenLados en hardware):
A|eator|o: se escoge un bloque del espaclo de re-emplazamlenLo al azar
IIIC: se susuLuye el bloque del espaclo de re-emplazamlenLo que lleve ms
uempo cargado
LkU (leasL recenLly used): se susuLuye el bloque del espaclo de re-
emplazamlenLo que lleve ms uempo sln haber sldo referenclado
LIU (leasL frequenLly used): se susuLuye el bloque del espaclo de re-
emplazamlenLo que haya sldo referenclado en menos ocaslones
ec

! ju ocurre cuando se produce una escr|tura en memor|a?
Se escrlbe slo en la cache? Slo en la memorla prlnclpal? Ln las dos?
! Wr|te-through: 1odas las escrlLuras acLuallzan la cache y la memorla
Al remplazar, se puede ellmlnar la copla de cache: Los daLos esLn en la memorla
8lL de conLrol en la cache: Slo un blL de valldez
! Wr|te-back: 1odas las escrlLuras acLuallzan slo la cache
Al reemplazar, no se pueden ellmlnar los daLos de la cache: ueben ser escrlLos prlmero
en la memorla
8lL de conLrol: 8lL de valldez y blL de suclo
! ju ocurre cuando se produce un fa||o de escr|tura?
! Wr|te a||ocate (con aslgnacln en escrlLura): en un fallo de escrlLura se
lleva el bloque escrlLo a la cache
! No-wr|te a||ocate (sln aslgnacln en escrlLura): en un fallo de escrlLura el
daLo slo se modlca en la M (o nlvel de memorla slgulenLe)

ec

! Comparacln:
WrlLe-Lhrough:
Memorla ( y oLros lecLores ) slempre uenen el ulumo
valor
ConLrol slmple
WrlLe-back:
Mucho menor ancho de banda, escrlLuras muluples en
bloque
Me[or Lolerancla a la alLa laLencla de la memorla
ec

! rocesador con memorla perfecLa (ldeal)
1cpu = n x Cl x 1c
Como n x Cl = n clclos Cu --> 1cpu = n clclos Cu x 1c
! rocesador con memorla real
1cpu = (n clclos Cu + n clclos espera memorla) x 1c
CunLos clclos de espera por la memorla?
n clclos espera memorla = n fallos x Mlss enalLy
n fallos = n ref a memorla x Mlss 8aLe
n ref a memorla = n x AMl(Medla de accesos a memorla por lnsLruccln)
Luego:
n clclos espera memorla = n x AMl x Mlss 8aLe x Mlss enalLy
? nalmenLe
1cpu = [ (n x Cl) + (n x AMl x Mlss 8aLe x Mlss enalLy ) ] x 1c
1cpu = n x [ Cl + (AMl x Mlss 8aLe x Mlss enalLy ) ] x 1c

A2 B C+-6! (+ 2&27!D E B %F (+ &%)="122&!%+)
uene el espaclo de dlseno para la opumlzacln de Mc
ec

! enallzacln medla por lnsLruccln
Comparando
1cpu = n x Cl x Lc
1cpu = n x [ Cl + (AMl x Mlss 8aLe x Mlss enalLy ) ] x Lc
se pueden denlr los clclos de penallzacln medla por lnsLruccln
deblda al comporLamlenLo de la memorla:
enallzacln medla por lnsLruccln =
= AMl x Mlss 8aLe x Mlss enalLy
! 1lempo medlo de acceso a memorla (1MAM)
1MAM = 1lempo lnverudo en accesos a memorla / n accesos =
= (1 de accesos a Mc + 1 de penallzacln por fallos) / n accesos =
= PlL ume + (n de fallos x Mlss enalLy / n accesos)
1MAM = PlL ume + Mlss 8aLe x Mlss enalLy

32
ec

1cpu = n x [ Cl + (AMl x M|ss kate x M|ss ena|ty ) ] x 1c
! LsLudlo de Lecnlcas para:
8educlr la Lasa de fallos
8educlr la penallzacln del fallo
8educlr el uempo de aclerLo (hlL ume)
AumenLar el ancho banda


ec

34
! Las 3 C's
lnlclales (compulsory)
Causados por la 1 referencla a un bloque que no esL en la cache " Pay
que llevar prlmero el bloque a la cache
lnevlLables, lncluso con cache lnnlLa
no depende del Lamano de la Mc. Sl del Lamano de bloque.
Capacldad
Sl la cache no puede conLener Lodos los bloques necesarlos duranLe la
e[ecucln de un programa, habr fallos que se producen al recuperar de
nuevo un bloque prevlamenLe descarLado
ConlcLo
un bloque puede ser descarLado y recuperado de nuevo porque hay oLro
boque que complLe por la mlsma llnea de cache (aunque haya oLras llneas
llbres en la cache)
no se pueden produclr en caches puramenLe asoclauvas.
ec

keduc|r tasa de
fa||os
keduc|r pena||zac|n
por fa||o
keduc|r nempo
de ac|erto
Aumentar ancho de
banda
1amano de bloque
uar prlorldad a las lecLuras
sobre las escrlLuras
Cache pequena y
sencllla
Cache no bloqueanLe
Asoclauvldad
uar prlorldad a la palabra
crluca
CculLar laLencla de
Lraduccln uv =>
ul
Cache mulubanco
1amano de Mc
lusln de buers de
escrlLura
redlccln de vla Cache segmenLada
AlgorlLmo de
reemplazamlenLo
Caches mulunlvel Cache de Lrazas
ec

! AumenLar el Lamano del bloque dlsmlnuye la Lasa de fallos
lnlclales y captura me[or |a |oca||dad espac|a|
! ero se aumenLa la Lasa de fallos de capacldad (menor n
8loques => captura peor |oca||dad tempora|)
Al Lener bloques ms grandes aumenLa el m|ss-rate
Reduce fallos
iniciales
Aumenta fallos
De capacidad
0
5
10
15
20
25
16 bytes 32 bytes 64 bytes 128 bytes 256 bytes
1 KB 4 KB 16 KB 64 KB 256 KB
1amao cache
1amao b|oque
ec

keduc|r tasa de
fa||os
keduc|r pena||zac|n
por fa||o
keduc|r nempo
de ac|erto
Aumentar ancho de
banda
1amano de bloque
uar prlorldad a las lecLuras
sobre las escrlLuras
Cache pequena y
sencllla
Cache no bloqueanLe
Asoclauvldad
uar prlorldad a la palabra
crluca
CculLar laLencla de
Lraduccln uv =>
ul
Cache mulubanco
1amano de MC
lusln de buers de
escrlLura
redlccln de vla Cache segmenLada
AlgorlLmo de
reemplazamlenLo
Caches mulunlvel Cache de Lrazas
ec

Cache Size (KB)
M
i
s
s

R
a
t
e

p
e
r

T
y
p
e
0
0.02
0.04
0.06
0.08
0.1
0.12
0.14
1248
1
6
3
2
6
4
1
2
8
1-way
2-way
4-way
8-way
Capacity
Compulsory
Ejemplo: Valores promedio de Miss
Rate para programas de SPEC92

Reemplazamiento: LRU
Tamao bloque: 32 bytes (cte)
Variando: tamao cache, asociatividad
M|ss rate
ec

Cache Size (KB)
M
i
s
s

R
a
t
e

p
e
r

T
y
p
e
0
0.02
0.04
0.06
0.08
0.1
0.12
0.14
1248
1
6
3
2
6
4
1
2
8
1-way
2-way
4-way
8-way
Capacity
Compulsory
ec

! Ll aumenLo de la asoclauvldad dlsmlnuye la Lasa
de fallos
! Ll aumenLo de la asoclauvldad aumenLa el
hardware y el uempo de acceso
! uel esLudlo de la grca
Ll paso de emplazamlenLo dlrecLo a asoclauva con 2
con[unLos permlLe dlsmlnulr el Lamano de la cache a
la mlLad
ManLenlendo el Lamano de la cache, no se conslguen
grandes me[oras con ms de 8 vlas
ec

keduc|r tasa de
fa||os
keduc|r pena||zac|n
por fa||o
keduc|r nempo
de ac|erto
Aumentar ancho de
banda
1amano de bloque
uar prlorldad a las lecLuras
sobre las escrlLuras
Cache pequena y
sencllla
Cache no bloqueanLe
Asoclauvldad
uar prlorldad a la palabra
crluca
CculLar laLencla de
Lraduccln uv =>
ul
Cache mulubanco
1amano de MC
lusln de buers de
escrlLura
redlccln de vla Cache segmenLada
AlgorlLmo de
reemplazamlenLo
Caches mulunlvel Cache de Lrazas
ec


! La polluca de reemplazamlenLo aleaLorla neceslLa
menos PW y es ms rplda que el L8u, pero produce
una mayor Lasa de fallos
N V|as
2 4 8
1amao Mc LkU A|eator|o LkU A|eator|o LkU A|eator|o
16k 114.1 117.3 111.7 113.1 10.0 111.8
64k 103.4 104.3 102.4 102.3 .7 100.3
2S6k 2.2 2.1 2.1 2.1 2.1 2.1
G$77!) (+ ($=!) 6!" HIII &%)="122&!%+)
ec

keduc|r tasa de
fa||os
keduc|r pena||zac|n
por fa||o
keduc|r nempo
de ac|erto
Aumentar ancho de
banda
1amano de bloque
uar prlorldad a las lecLuras
sobre las escrlLuras
Cache pequena y
sencllla
Cache no bloqueanLe
Asoclauvldad
uar prlorldad a la palabra
crluca
CculLar laLencla de
Lraduccln uv =>
ul
Cache mulubanco
1amano de Mc
lusln de buers de
escrlLura
redlccln de vla Cache segmenLada
AlgorlLmo de
reemplazamlenLo
Caches mulunlvel Cache de Lrazas
ec

! Ll aumenLo del Lamano de MC reduce la Lasa de fallos
! Ll aumenLo del Lamano de la MC aumenLa la penallzacln por
fallo
! Ll aumenLo del Lamano de MC aumenLa el cosLe del
procesador
! Sl se qulere una MC rplda y baraLa, esLa uene que ser
pequena
! 1enlendo dlferenLes nlveles de MC se puede consegulr
reduclr la penallzacln por fallo
no es lo mlsmo Lransferlr de M a
MC que de L1 a L2
1ener L2 permlLe apllcar pollucas de
pre-busqueda con menos lnconvenlenLes
Cache Size (KB)
M
i
s
s

R
a
t
e

p
e
r

T
y
p
e
0
0.02
0.04
0.06
0.08
0.1
0.12
0.14
1248
1
6
3
2
6
4
1
2
8
1-way
2-way
4-way
8-way
Capacity
Compulsory
ec

! Cache mu|nn|ve| (L2, L3, .)
1lempo medlo de acceso a memorla (1MAM): un nlvel
1MAM = PlL ume + Mlss 8aLe x Mlss enalLy
1lempo medlo de acceso a memorla: uos nlveles
1MAM = PlL 1lme L1 + Mlss 8aLe L1 x Mlss enalLy L1
Mlss enalLy L1 = PlL 1lme L2 + Mlss 8aLe L2 x Mlss enalLy L2

=> 1MAM = PlL 1lme L1 + Mlss 8aLe L1 x [PlL 1lme L2 + (Mlss 8aLe L2 x Mlss enalLy L2)]

uenlclones:
1asa de fallos local en una cache (Lx): fallos en cache Lx dlvldldo por el numero
LoLal de accesos a la cache Lx
1asa de fallos global en una cache (Lx): fallos en cache Lx dlvldldo por el numero
LoLal de accesos a memorla generados por el procesador
Consecuencla: 1asa de fallos local en L1 = 1asa de fallos global en L1
La Lasa de fallos global es lo lmporLanLe
L1: AfecLa dlrecLamenLe al procesador => Acceder a un daLo en el clclo del
procesador
L2: AfecLa a la penallzacln de L1 => 8educcln del uempo medlo de acceso
ec

0
10
20
30
40
50
60
70
80
4 8 16 32 64 128 256 512 1024 2048 4096
Tasa fallos local L2 Tasa fallos nivel 1 Tasa fallos global L2
Local L2
global
ec

! 1amblen se puede reduc|r |a tasa de fa||os:
Cache vlcuma
Cpumlzando el cdlgo
re-busqueda PW
re-busqueda SW
ec

! Se propuso por prlmera vez en 10, la
ldea es uullzar una cache pequena
compleLamenLe asoclauva (Cv)
con[unLamenLe con una cache grande
con una asoclauvldad ms llmlLada
(MC)
! Se lnLenLa consegulr que MC Lenga la
mlsma Lasa de fallos que sl fuera
compleLamenLe asoclauva
L[: MC de acceso dlrecLo + Cv asoclauva
uene la mlsma Lasa de fallos que MC con
2 vlas
CPU
registros
M
MC
Cv
ec

! un bloque puede esLar en MC o en
Cv pero nunca en las dos
! Ln la cache vlcuma esLarn aquellos
bloques que han sldo re-emplazados
de la memorla cache
un bloque pasa de MC a Cv cuando se
produce un re-emplazo
un bloque pasa de Cv a MC cuando es
referenclado
CPU
registros
M
MC
Cv
ec

! ara Lodos los e[emplos:
MC de 4 kbyLes
Acceso dlrecLo
236 bloques
1 bloque = 16 byLes
uaLos:
lnL A[1024]
lnL 8[1024]
CunLas poslclones del array por bloque?
CunLas poslclones del array por MC?

ec

! A esL alo[ado en la dlreccln: 0x01000
! 8 esL alo[ado en la dlreccln: 0x04000
! Cdlgo orlglnal:
for (l = 0 l < 1024 l = l + 1)
C = C + (A[l] + 8[l])


numero de fallos sl acceso dlrecLo?
Me[ora sl es asoclauva de 2 vlas?
A[0:3]
A[1020:1023]
A[1016:1019]
A[4:7]
A[8:11]
A[12:1S]
8[0:3]
8[1020:1023]
8[1016:1019]
8[4:7]
8[8:11]
8[12:1S]
A[0]
A[1]
A[2]
A[3]
0x01000
0x01004
0x01008
0x0100C
ec

! Cdlgo orlglnal:
for (l = 0 l < 1024 l = l + 1)
C = C + (A[l] + 8[l])
! Ius|n de arrays: Me[ora la localldad espaclal para dlsmlnulr los
fallos
Colocar las mlsmas poslclones de dlferenLes arrays
en poslclones conuguas de memorla

sLrucL fuslon
lnL A
lnL 8
array[1024]
for (l = 0 l < 1024 l = l + 1)
C = C + (array[l].A + array[l].8)
A[0:3]
A[1020:1023]
A[1016:1019]
A[4:7]
A[8:11]
A[12:1S]
8[0:3]
8[1020:1023]
8[1016:1019]
8[4:7]
8[8:11]
8[12:1S]
2x1024 accesos
2x1024 fallos
A,8[0:1]
A,8[S12:S13]
A,8[S10:S11]
A,8[2:3]
A,8[4:S]
A,8[1022:1023]
1024/2 fallos
2x256 de inicio
Ganancia: 4
A,8[S14:S1S]
Sl MC Luvlera 2 vlas,
se reduclrlan los fallos?
ec

! A|argam|ento de arrays (paddlng): ayuda a reduclr conlcLos
por las dlrecclones aslgnadas
lmpedlr que en cada lLeracln del bucle se complLa por el mlsmo
marco de bloque

lnL A[1028]
lnL 8[1024]
for (l=0 l < 1024 l=l+1)
C = C + (A[l] + 8[l])
A[0:3]
A[1020:1023]
A[1016:1019]
A[4:7]
A[8:11]
A[12:1S]
A[1024:1027]
8[1016:1019]
8[1012:101S]
8[0:3]
8[4:7]
8[8:11]
8[1020:1023]
1024/2 fallos
2x256 de inicio
Ganancia: 4
Sl MC Luvlera 2 vlas,
se reduclrlan los fallos?
ec

- Consldera esLe cdlgo:
for ([=0 [ < 128 [=[+1)
for (l=0 l < 128l=l+1)
C = C A[|][[],
Sl MC Luvlera 2 vlas,
se reduclrlan los fallos?
128x128 accesos
128x128 fallos
16x256 de inicio
Resto (12288)
Lengua[e C: almacena por
las
ec

! Intercamb|o de buc|es: Me[ora la localldad espaclal para
dlsmlnulr los fallos
Ln lengua[e C las maLrlces se almacenan por las, luego se debe varlar
en el bucle lnLerno la columna (lnL A[128][128])
A[0][0:3]
A[7]124:127]
A[7][120:123]
A[0][4:7]
A[0][8:11]
A[0][12:1S]
A[8][0:3]
A[8][4:7]
A[8][8:11]
A[8][12:1S]
A[1S][120:123]
A[1S][124:127]
A[120][0:3]
A[120][4:7]
A[120][8:11]
A[120][12:1S]
A[127][120:123]
A[127][124:127]
A uene 2
14
palabras = 16 kpalabras =>
es 16 veces mayor que MC
1 kpalabras
ec

! Intercamb|o de buc|es:
Acceso por las
for ([=0 [ < 128 [=[+1)
for (l=0 l < 128l=l+1)
C = C A[l][[]
Acceso por columnas
for (l=0 l < 128l=l+1)
for ([=0 [ < 128 [=[+1)
C = C A[l][[]
Sl MC Luvlera 2 vlas,
se reduclrlan los fallos?
128x128 accesos
128x128 fallos
16x256 de inicio
Resto (12288)
128x128/4 fallos
16x256 de inicio
Ganancia: 4
ec

! lusln de bucles:
Me[ora la localldad Lemporal para dlsmlnulr los fallos
luslonar los bucles que usen los mlsmos arrays para usar
los daLos que se encuenLran en cache anLes de
desecharlos

for (l=0 l < 128 l=l+1))
for ([=0 [ < 128[=[+1))
C = C A[l][[]
for (l=0 l < 128l=l+1)
for ([=0 [ < 128[=[+1)
u = u + A[l][[]
for (l=0 l < 128 l=l+1))
for ([=0 [ < 128[=[+1))
C = C A[l][[]
u = u + A[l][[]
128x128x2 accesos
(128x128/4)x2 fallos
(128x128/4)x2 fallos
Ganancia: 4
? sl apllcamos fusln de bucles e lnLercamblo de bucles?
ec

! Anuclpa los fallos de Cache anuclpando las
busquedas anLes de que el procesador demande
el daLo o la lnsLruccln que provocarlan un fallo
LsLa Lecnlca reduce la Lasa de fallos, pero
prlnclpalmenLe la penallzacln por fallo
LsLe upo de cache slo es efecuva con un adecuado
ancho de banda ya que se van a produclr ms
Lransferenclas de bloques de las necesarlas
LsLa Lecnlca es ms efecuva sl se dlspone de una
memorla cache y de un buer, en caso conLrarlo los
bloques pre-buscados (que puede que no es usen)
esLn desalo[ando de MC bloques acuvos

ec

! re-busqueda Pardware:
1lplcamenLe: la Cu busca dos
bloques en un fallo (el referenclado y
el slgulenLe)
Ll bloque buscado se lleva a Mc
Ll prebuscado se lleva a un buer
(prefeLch buer" o sLream buer").
Al ser referenclado pasa a MC

ec

! re-busqueda Soware:
lnsLrucclones especlales de pre-busqueda lnLroducldas por el
compllador
La eclencla depende del compllador y del upo de programa
re-busqueda con desuno en cache (MlS lv, owerC, SA8C
v. ), o en reglsLro (P-A)
lnsLrucclones de pre-busqueda no producen excepclones. Ls
una forma de especulacln.
lunclona blen con bucles y paLrones slmples de acceso a arrays.
Apllcaclones de clculo
lunclona mal con apllcaclones enLeras que presenLan un ampllo
reuso de Cache
Cverhead por las nuevas lnsLrucclones. Ms busquedas. Ms
ocupacln de memorla
ec

keduc|r tasa de
fa||os
keduc|r pena||zac|n
por fa||o
keduc|r nempo
de ac|erto
Aumentar ancho de
banda
1amano de bloque
uar prlorldad a las lecLuras
sobre las escrlLuras
Cache pequena y
sencllla
Cache no bloqueanLe
Asoclauvldad
uar prlorldad a la palabra
crluca
CculLar laLencla de
Lraduccln uv =>
ul
Cache mulubanco
1amano de Mc
lusln de buers de
escrlLura
redlccln de vla Cache segmenLada
AlgorlLmo de
reemplazamlenLo
Caches mulunlvel Cache de Lrazas
ec

! uar prlorldad a las lecLuras sobre las escrlLuras
un fallo de lecLura puede lmpedlr la conunuacln de la
e[ecucln del programa un fallo de escrlLura puede oculLarse
8uer de escrlLuras (rpldo). ueposlLar en buer las palabras
que uenen que ser acLuallzadas en M y conunuar e[ecucln.
La Lransferencla del buer a M se reallza en paralelo con la
e[ecucln del programa
8C8LLMA: podemos esLar lnLenLando leer una palabra que
Lodavla esL en el buer
! uar prlorldad a palabras crlucas
Cuando la palabra sollclLada se carga en memorla cache se
envla al procesador, sln esperar a la carga del bloque compleLo
roblema. Localldad espaclal: alLa probabllldad de acceder a
conunuacln a la slgulenLe palabra en secuencla.
ec

keduc|r tasa de
fa||os
keduc|r pena||zac|n
por fa||o
keduc|r nempo
de ac|erto
Aumentar ancho de
banda
1amano de bloque
uar prlorldad a las lecLuras
sobre las escrlLuras
Cache pequena y
sencllla
Cache no bloqueanLe
Asoclauvldad
uar prlorldad a la palabra
crluca
CculLar laLencla de
Lraduccln uv =>
ul
Cache mulubanco
1amano de Mc
lusln de buers de
escrlLura
redlccln de vla Cache segmenLada
AlgorlLmo de
reemplazamlenLo
Caches mulunlvel Cache de Lrazas
ec

! Ll acceso al dlrecLorlo y la comparacln de Lags consume
uempo
! L[emplo: Comparacln de acceso a un daLo en cache dlrecLa y
en cache asoclauva por con[unLos con 2 vlas
L1IUL1A
AL M8
!"#$%&'
0
1
2
3
)* +,-./ $0123-, 4
+!&'
MUL1ILL
CCMAkA
AL
8
5
2 2
9
L1IUL1A
AL NC
0
1
5" +,-./ $0123-, 4
+!&'
MUL1ILL
AL
8
6
1 2
9
{
!"#$%&'
CCMAkA
Directo Asociativo por conjuntos 2 vas
ec

keduc|r tasa de
fa||os
keduc|r pena||zac|n
por fa||o
keduc|r nempo
de ac|erto
Aumentar ancho de
banda
1amano de bloque
uar prlorldad a las lecLuras
sobre las escrlLuras
Cache pequena y
sencllla
Cache no bloqueanLe
Asoclauvldad
uar prlorldad a la palabra
crluca
CculLar laLencla de
Lraduccln uv =>
ul
Cache mulubanco
1amano de Mc
lusln de buers de
escrlLura
redlccln de vla Cache segmenLada
AlgorlLmo de
reemplazamlenLo
Caches mulunlvel Cache de Lrazas
ec

66
! Cache segmenLada
SegmenLar los accesos a la cache permlLe aumenLar el
ancho de banda.
roblema: lncremenLo de los clclos de laLencla (ver
evolucln caches). Ms clclos de relo[ enLre el lanzamlenLo
de un Lu y el uso de los daLos que el Lu proporclona
Ms problemas: Mayor penallzacln en los salLos mal
predlchos
L[emplos: n de eLapas del acceso a la cache en dlferenLes
procesadores
enuum 1 eLapa
ue enuum ro a enuum lll 2 eLapas
enuum 4 4 eLapas
ec

1cn|ca

1asa
fa||os
ena|
fa||o
1|empo
ac|erto
Ancho
banda
Coste nW ]
Comp|e[|dad
ComenLarlo

Aumento tamao de
b|oque
+ -
0
1rlvlal. L2 de enuum 4 usa
128 byLes
Aumento
asoc|anv|dad
+ -
1 AmpllamenLe usado
Aumento tamao de
MC
+ -
1
AmpllamenLe usado,
especlalmenLe en L2
Cache V|cnma
+ -
1 8asLanLe senclllo
Cpnm|zac|n de|
comp||ador
+
0
Ll soware presenLa
oporLunldades de me[ora.
Algunos compuLadores uenen
opclones de opumlzacln
rebsqueda nW
+ +
2 lnsLr.,
3 daLa
Muchos procesadores
prebuscan lnsLrucclones. AMu
CpLeron y enuum 4
prebuscan daLos.
rebsqueda SW
+ +
3
neceslLa cache no bloqueanLe.
Ln muchas Cus.
ec

68
1cn|ca

1asa
fa||os
ena|
fa||o
1|empo
ac|erto
Ancho
banda
Coste nW ]
Comp|e[|dad
Comentar|o

r|or|dad a |as |ecturas
+
1 AmpllamenLe usado
r|or|dad a |a pa|abra
cr|nca
+
2 AmpllamenLe usado
Cache mu|nn|ve|
+
2
AmpllamenLe usado. Ms
comple[o sl Lamano de bloque
en L1 y L2 dlsunLos.
Cache pequea y
senc|||a
+
0 1rlvlal ampllamenLe usado.
Cache mu|nbanco
+
1 Ln L2 de CpLeron y nlagara
Cache segmentada
+
1 AmpllamenLe usado
ec

6
# Compilador: Optimizacin de cdigo
5) Calculo por bloques( Blocking): Mejora la localidad temporal para
disminuir los fallos de capacidad
/* Antes */
for (i=0; i < N; i=i+1)
for (j=0; j < N; j=j+1)
{r = 0;
for (k=0; k < N; k=k+1)
r = r + y[i][k]*z[k][j];
x[i][j] = r;
};
$ Dos bucles internos. Para cada valor de i:
% Lee todos los NxN elementos de z
% Lee N elementos de 1 fila de y
% Escribe N elementos de 1 fila de x
$ Fallos de capacidad dependen de N y Tamao de la
cache:
$ Idea: calcular por submatrices BxB que permita el
tamao de la cache
antes
Despus
ec

70
# Compilador: Optimizacin de cdigo
5) Calculo por bloques( Blocking): Mejora la localidad temporal para
disminuir los fallos de capacidad
/* Despues */
for (jj=0;jj < N; jj=jj+B)
for (kk=0;kk < N; kk=kk+B)
for (i=0; i < N; i=i+1)
for (j=jj; j < min(jj+B-1,N); j=j+1)
{r = 0;
for (k=kk; k < min(kk+B-1,N); k=k+1)
r = r + y[i][k]*z[k][j];
x[i][j] = x[i][j]+r;
};

$ B Factor de bloque (Blocking Factor)
1,00 1,50 2,00 2,50 3,00
vpenta
gmty
tomcatv
btrix
mxm
spice
cholesky
Fusin de array Intercambio de bucles Fusin de bucles Blocking
Mejora de rendimiento
ec

71
! L[emplo: roducLo de maLrlces 6x6 (sln
blocklng)
k 2
l
[
!
l
[ k
k
l = 0, [ = 0, k = 0..3
l = 0, [ = 1..3 , k = 0..3
Al procesar la 2 fila de Y (i=1) se necesita de nuevo 1 col de Z:
Est todava en la cache? Cache insuficiente provoca mltiples fallos
sobre los mismos datos

l[ =
?
lk

k[
k
ec

72
! L[emplo blocklng": Con 8locklng (8=3)
k 2
l
[
!
l
[ k
k
l = 0, [ = 0, k = 0..2
l = 0, [ = 1..2 , k = 0..2
Evidentemente, los elementos
de X no estn completamente
calculados
ec

73
! L[emplo blocklng": Con 8locklng (8=3)
k 2
l
[
!
l
[ k
k
l = 1, [ = 0, k = 0..2
l = 1, [ = 1..2 , k = 0..2
Idea: Procesar el bloque
3x3 de Z antes de quitarlo
de la cache
ec

74
! Con 8locklng (8=3). Algunos pasos despues...
k 2
l
[
!
l
[ k
k
l = 0, [ = 0, k = 3..3
l = 0, [ = 1..2 , k = 3..3
Y ya empezamos a tener
elementos de X
completamente calculados!
ec

! Cache con prebusqueda sofware (e[emplo)
Cache 8 k8 dlrecLa, bloque:16 byLes, wrlLe-back (con aslgnacln en escrlLura)
uaLos: a(3,100), b(101,3). LlemenLo arrays = 8 byLes. Cache lnlclalmenLe vacla.
Crdenacln en memorla: por las
1 bloque cache = 2 palabras (elemenLos)
! rograma (sln prebusqueda):
for (l:=0 l<3 l:=l+1)
for ([:=0 [<100 [:=[+1)
a[l][[] := b[[][0] b[[+1][0]
! lallos
Acceso a elemenLos de a": Se escrlben y acceden en cache Lal como esLn almacenados en
memorla. Cada acceso a memorla proporclona dos palabras (beneclo de localldad espaclal).
lallos a" = (3x100)/2 = 130
Acceso a elemenLos de b" (sl lgnoramos fallos de conlcLo): un fallo por cada valor de [
cuando l=0 => 101 fallos. ara los resLanLes valores de l, los elemenLos de b ya esLn en la
cache.
1oLal fallos: 130+101 = 231
ec

! Cache con prebsqueda sofware (e[emp|o)
Suposlcln: La penallzacln por fallo es de Lal duracln que se neceslLa lnlclar la prebusqueda
7 lLeraclones anLes.
ldea: parur bucle
/* para i=0 (prebusca a y b) */
for (j:=0; j<100; j:=j+1) {
prefetch (b[j+7][0]); /* b[j][0] para 7 iteraciones ms tarde */
prefetch (a[0][j+7]); /* a[0][j] para 7 iteraciones ms tarde */
a[0][j] := b[j][0] * b[j+1][0] ; }


/* para i=1,2 (prebusca slo a, ya que b ya est en cache) */
for (i:=1; i<3; i:=i+1)
for (j:=0; j<100; j:=j+1) {
prefetch (a[i][j+7]); /* a[i][j] para 7 iteraciones ms tarde */
a[i][j] := b[j][0] * b[j+1][0] ; }
1oLal fallos 3 !7/2! + 7 = 1 fallos
lnsLrucclones exLra (los prefeLch): 1002 + 2001 = 400
lallos evlLados = 231 -1 = 232
76
lallos:
!7]2!
lallos: 7
lallos: 2 * !7/2! (para l=1,2)
ec

77
! Ius|n de buers de escr|tura
ldea: lnclulr en un mlsmo buer muluples palabras consecuuvas para:
Cpumlzar las Lransferenclas buer memorla prlnclpal
8educlr los campos de dlreccln de las enLradas del buer
Sl el buer conuene bloques modlcados, chequear la dlreccln del nuevo daLo
para ver sl colnclde con la dlreccln de alguna enLrada del buer. Sl hay
colncldencla, no aslgnar una nueva enLrada del buer, comblnar los nuevos daLos
en la mlsma enLrada
uullzado en Sun 11 (nlagara)
! L[emplo: buer de escrlLura sln y con fusln
Cada escrlLura con su
dlreccln
una sola dlreccln
para 4 escrlLuras
consecuuvas
- 8uer de escr|tura con
4 entradas
- Cada entrada: 4
pa|abras de 8 bytes
ec

! Caches s|mp|es y pequeas
una cache pequena se pueda lnLegrar [unLo al procesador
evlLando la penallzacln en uempo del acceso al exLerlor
1lempo de propagacln versus uempo de clclo del procesador
L[emplo: Lres generaclones del procesadores AMu (k6, ALhlon y CpLeron) han manLenldo
el mlsmo Lamano para las caches L1
Slmple (cache dlrecLa o grado de asoclauvldad pequeno)
Ln cache dlrecLa se puede solapar chequeo de Lags y acceso al daLo, puesLo que el daLo slo
puede esLar en un lugar
Ll aumenLo del numero de vlas puede aumenLar los uempos de comparacln de Lags
L[emplo: lmpacLo del Lamano de la cache y la asoclauvldad sobre el uempo de acceso
(Lecnologla 0 nm)
-
0,50
1,00
1,50
2,00
2,50
16 KB 32 KB 64 KB 128 KB 256 KB 512 KB 1 MB
Cache size
A
c
c
e
s
s

t
i
m
e

(
n
s
)
1-way 2-way 4-way 8-way
ec

7
o Idea

Ocultar la latencia de un fallo de cache solapndolo con otras
instrucciones independientes
- Auu 83,86,86
- .........
- .........
- Lu 81, dlr
- .........
- .........
- Auu 84,84,81
PREBUSCAR: Caches con prebsqueda
NO BLOQUEAR: Cache que no bloquean
(Se siguen ejecutando instrucciones despus del
LD. El ADD no se ejecuta hasta que R1 est
disponible)
# Cache sin bloqueo ( non-blocking, lockup-free )
ec

80
o Permite que la ejecucin siga aunque se produzca un fallo mientras no se
necesite el dato. (Se aplica a la cache de datos).
o Un fallo sin servir (hit under 1 miss). Sigue ejecutando y proporcionando
datos que estn en cache
! HP7100, Alpha 21064
o Mltiples fallos sin servir (hit under multiple misses)
! R12000 (4) , Alpha21264 (8), HP8500 (10), PentiumIII y 4 ( 4),
Sandy-Bridge (10)
o Los beneficios dependen de la planificacin de instrucciones
o Requiere interfase de memoria ms complejo ( mltiples bancos )
Memorla
Cu
Cu
Memorla
Cu
Cu
Memorla
Cu
Memorla
Memorla
lallo: La Cu para hasLa Lener el daLo
lallo AclerLo
lallos
La Cu para cuando neceslLa daLo
# Cache sin bloqueo ( non-blocking, lockup-free )
Cache con b|oqueo
Cache s|n b|oqueo: un fa||o s|n serv|r
Cache s|n b|oqueo: var|os fa||os s|n serv|r
ec

81
o Hay que asociar un registro a la peticin cuando se inicia un load
sin bloqueo
LD R1,dir

o Informacin necesaria en el control de la funcin
Direccin del bloque que produce el fallo
Registro destino donde se almacena el dato
Formato del dato (Byte, half-word, word)
tem en el bloque que produce el fallo

o Implementacin (MSHR, Miss Status Holding Register):
ulreccln
bloque
8lL
valldo
8lL
valldo
uesuno lormaLo
8lL
valldo
uesuno lormaLo
8lL
valldo
uesuno lormaLo
8lL
valldo
uesuno lormaLo
alabra 0
alabra 1
alabra 2
alabra 3
Tipos de fallos
Fallo primario (1 de
bloque)
Fallo secundario
(restantes mismo bloque)

Estructura del MSHR para
bloque de 4 palabras
(Solo un fallo por palabra)
# Cache sin bloqueo ( non-blocking, lockup-free )
ec

82
Optimizaciones para aumentar el ancho de banda
# Cache sin bloqueo ( non-blocking, lockup-free )
o Porcentaje de tiempo de parada del procesador por fallos en la cache
(Caso base: cache con bloqueo = 100%)
o Datos experimento: Cache directa 8 KB, Bloque 32 B, Miss Penalty 16
ciclos
I IN1
(SLC 92)
ec

83
! Cache mu|nbanco
ulvldlr la cache en bancos lndependlenLes que
puedan soporLar accesos slmulLneos.
L[emplo: L2 de Sun 11 (nlgara) uene 4 bancos, L2 de
AMu CpLeron uene 2 bancos
La organlzacln en bancos funclona blen cuando
los accesos se dlspersan de forma naLural enLre los
dlferenLes bancos
Ll enLrelazamlenLo de orden ba[o suele funclonar
blen
8loques consecuuvas esLn en bancos consecuuvos
L[emplo: ublcacln de bloques en una cache con 4
bancos con enLrelazamlenLo de orden ba[o

You might also like