Sunteți pe pagina 1din 12

ORGANIZACIN DE LA MEMORIA CACH

Establecer la funcin de correspondencia que asigna a los bloques de la memoria principal en las posiciones definidas en la
memoria cach

Tcnicas:

Directa
Totalmente asociativa
Asociativa por conjuntos

Parmetros del ejemplo a utilizar en las descripciones:


a) Ancho de palabra de datos 16 bits
9
b) Memoria cach 512 B = 2 Bytes
c) Tamao de bloque k = 8
d) Memoria principal = 32 KB
Consecuencias:
15
x 32 KB = 2 Bus de direcciones = 15 bits A0 a A14
9
x 512B = 2 Bus direcciones de la cach 9 bits
x 512B y k = 8 N bloques = 512/8 = 64 bloques
3
x k = 8 2 3 bits
6
x 64 bloques 2 6 bits
CORRESPONDENCIA DIRECTA
Cada bloque de la memoria principal tiene su posicin en la cach y SIEMPRE en el mismo sitio
MEMORIA PRINCIPAL
bloque 0

MEMORIA CACHE

bloque 1
bloque 2

etiqueta 0

bloque 0

etiqueta 1

bloque 1

etiqueta 2

bloque 2

bloque 3

bloque C-1
bloque C
etiqueta C-1

bloque C-1

bloque C+1
bloque C+2

bloque M-1

Ventajas

Simple
Econmica

Inconveniente: Cada bloque tiene asignada una posicin fija en la memoria cach ante continuas referencias a palabras
de dos bloques con la misma localizacin en cach, continuos fallos habiendo sitio libre en la cach

Esquema de la cach

MEMORIA CACHE
Etiqueta (6)

MEMORIA PRINCIPAL
Direccin
hexadecimal
0000h

Dato (16)
000
001
010

b0

Bloques
memoria
000

k0

0001h

001

k64

0002h

010

k0

k128
111
BUS DE DATOS (DB0 a DB15)

k448

111

000

000

001

k1

001

010

k65

010

b1

k1

k129

C.P.U.

111

k449

BUS DE DATOS (DB0 a DB15)

111
000

111

k63

001
010

b63

k127
k191
111

k511

000

111

001
010

k511
7FFFh
BUS DE
DIRECCIONES
(A0 a A14)

A14

A13

A12

A11

Etiqueta (6)

A10 A9

111

CONTROLADOR
DE CACHE

A8

A7

A6 A5 A4 A3 A2 A1 A0

Nmero de bloque (6)

Direccin de
palabra en el
bloque

Funcionamiento:
Principios:
 Palabras por bloque 8 3 bits (b0 a b2)
 N bloques 64 6 bits
 Etiqueta = (bus direcc) (bits de bloques) -- (bits palab/bloque) 15 6 3 = 6
 Ancho de la mem. cach = Ancho palabra + ancho etiqueta 16 + 6 = 22 bits
1. La CPU entrega la direccin de mem. al controlador de cach.
2. El ctrl. de cach asla de los bits b3 a b8 y con ellos apunta al bloque correspondiente.
3. Comprueba si la etiqueta en cach = bits correspondientes a etiqueta en bus de direcciones (b9 a b14)
3.a Si iguales acierto, con lo que coge de los bits b15 a b0 (dato) de la cach y los saca al bus de datos de la
CPU.
4.a Fin de acceso.
4.b Si distintos Fallo
5.b El ctrl. de cach transmite bloque completo desde mem. ppal. a mem. cach
5.b.1 El ctrl. Cach pone a 000 los bits de dir. de palabra (b2 a b0).
5.b.2 El ctrl. Cach apunta al bloque indicado por bus dir. (b3 a b8).
5.b.3 El ctrl. Cach lleva de la dir. b14 b13 b12 ........b3 0 0 0 de mem. ppal. a la cach al bloque formado por los
bits b8 a b3 en la dir. de palabra del bloque 0 0 0 (palabra 000 del bloque). Incrementa un contador y lleva de
la dir. b14 b13 b12 ........b3 0 0 1 de mem. ppal. a la cach al bloque formado por los bits b8 a b3 en la dir. de
palabra del bloque 0 0 1 (palabra 001 del bloque). As sucesivamente hasta la palabra b14 b13 b12 ........b3 1
1 1 (palabra 7 del bloque) . Escribiendo en la zona de la etiqueta el valor de los bits b14 a b9.
5.b.4 Una vez ha cargado el bloque completo (8 palabras) Hay acierto y se salta al paso 4-a.

Ejemplo con los parmetros indicados





Se supone que todava no ha habido ningn acceso Mem. cach vaca todo con 0
Se quiere acceder al contenido de la posicin mem. 025FH

025FH =
b14
0

b13
0

b12
b11
0
0
etiqueta

Bits dir. palabra = 3

b10
0

b9
1

b8
0

b7
0

Bit bloque = 6

b6
b5
1
0
N bloque

b4
1

Bits etiqueta = 6

b2
1

MEMORIA PRINCIPAL
Direccin
hexadecimal
0000h

Dato (16)
000

Bloques
memoria
000

001

k0

0001h

001

010

k64

0002h

010

b0

k0

k128
k448

111
BUS DE DATOS (DB0 a DB15)

111

000

000

001

k1

001

010

k65

010

b1

k1

k129

C.P.U.

b1
b0
1
1
Dir. palabra

Ancho palabra = 16

MEMORIA CACHE
Etiqueta (6)

b3
1

k449

111

111

BUS DE DATOS (DB0 a DB15)

111
000

k63

001

k127

010

b63

k191
111

k511

000

111

001
010

k511
7FFFh
BUS DE
DIRECCIONES
(A0 a A14)

A14

A13

A12

A11

CONTROLADOR
DE CACHE

A10 A9

Etiqueta (6)

111

A8

A7

A6 A5 A4 A3 A2 A1 A0
Direccin de
palabra en el
bloque

Nmero de bloque (6)

El ctrl. de la cach mira si la etiqueta del bloque:


0

Es:

Como es el primer acceso la mem. cach contiene todo 0 hay primer fallo.

El ctrl. de cach va a direccionar a la mem. ppal. a la direccin


0

y llevar el contenido al bloque


0

direccin
0

escribiendo la etiqueta
0
Repitiendo el proceso hasta:

El ctrl. de cach va a direccionar a la mem. ppal. a la direccin


0
0
0
0
0
y llevar el contenido al bloque

1
0

0
0

0
1

1
0

direccin
1

escribiendo la etiqueta
0

Con lo que el bloque completo estar escrito en la mem. cach , existiendo ahora acierto y presentando en el bus de
datos el contenido de la mem. cach correspondiente al bloque
0

Y la direccin de palabra
1
x

Si posteriormente se quiere acceder al contenido de la direccin de mem. 085BH

085BH
b14
0

b13
0

b12
b11
0
1
etiqueta

b10
0

b9
0

b8
0

b7
0

b6
b5
1
0
N bloque

b4
1

b3
1

b2
0

b1
b0
1
1
Dir. palabra

Ir al bloque
0

Que ests ocupado con el dato anterior de la direccin 025FH


Por lo tanto la comparacin de la etiqueta de la cach con la parte correspondiente a la etiqueta del bus de
direcciones presentar desigualdad Fallo
Etiqueta de la cach
0

bits correspondientes a etiqueta del bus de direcciones


0

Por lo que llevar el bloque desde la direccin de mem. ppal.


0 0 0 1 0 0 0 0 1 0 1 1 0 0 0
a la direccin

0 0 0 1 0 0 0 0 1 0 1 1 1 1 1
0

al bloque

de la cach, existiendo actualmente un acierto y presentando en el bus de datos el contenido de la mem. cach
correspondiente al bloque
0

Y la direccin de palabra
0

CORRESPONDENCIA TOTALMENTE ASOCIATIVA


Los bloques de la mem principal se alojan en cualquier bloque de la mem cach, comprobando solamente la etiqueta de
todos y cada uno de los bloques para verificar acierto.
El principal inconveniente es que precisa una circuitera compleja para hacer la comparacin paralelo de todos los campos de
etiqueta.
MEMORIA PRINCIPAL
bloque 0

MEMORIA CACHE

bloque 1
bloque 2

etiqueta 0

bloque 0

etiqueta 1

bloque 1

etiqueta 2

bloque 2

bloque 3

bloque C-1
bloque C
bloque C-1

etiqueta C-1

bloque C+1
bloque C+2

bloque M-1

Esquema de la cach

MEMORIA CACHE
Etiqueta (12)

MEMORIA PRINCIPAL

000

Direccin
hexadecimal
0000h

Bloques
memoria
000

001

0001h

001

010

0002h

010

Dato (16)

b0

BUS DE DATOS (DB0 a DB15)

k0

111

111

000

000

001

001

010

010

b1

C.P.U.

k1

111

111

111

BUS DE DATOS (DB0 a DB15)

000
001
010

b63
111
000
111

001
010

k511
7FFFh
BUS DE
DIRECCIONES
(A0 a A14)

A14

A13

A12

A11

CONTROLADOR
DE CACHE

A10 A9

A8

Etiqueta (12)

A7

A6 A5 A4 A3 A2 A1 A0
Direccin de
palabra en el
bloque

111

Funcionamiento:
Principios:
 Palabras por bloque 8 3 bits (b0 a b2)
 N bloques 64
 Etiqueta = (bus direcc) (bits palab/bloque) 15 3 = 12
 Ancho de la mem. cach = Ancho palabra + ancho etiqueta 16 + 12 = 28 bits
1. La CPU entrega la direccin de mem. al controlador de cach.
2. El ctrl. de cach busca en todos y cada uno de los bloques coincidencia entre los bits b15 a b3 del bus de direcciones
con la etiqueta.
3.a Si encuentra coincidencia acierto, con lo que coge de los bits b15 a b0 (dato) del bloque de la cach con
coincidencia y los saca al bus de datos de la CPU.
4.a Fin de acceso.
4.b Si no encuentra coincidencia Fallo
5.b El ctrl. de cach transmite bloque completo desde mem. ppal. a mem. cach
5.b.1 El ctrl. Cach busca un bloque de cach para librarlo (algoritmo de reemplazamiento).
5.b.2 Una vez liberado el ctrl. Cach pone a 000 los bits de dir. de palabra (b2 a b0).
5.b.2 El ctrl. Cach apunta al bloque liberado.
5.b.3 El ctrl. Cach lleva de la dir. b14 b13 b12 ........b3 0 0 0 de mem. ppal. a la cach al bloque liberado en la dir.
de palabra del bloque 0 0 0 (palabra 000 del bloque). Incrementa un contador y lleva de la dir. b14 b13 b12
........b3 0 0 1 de mem. ppal. a la cach al bloque liberado en la dir. de palabra del bloque 0 0 1 (palabra 001
del bloque). As sucesivamente hasta la palabra b14 b13 b12 ........b3 1 1 1 (palabra 7 del bloque) .
Escribiendo en la zona de la etiqueta el valor de los bits b14 a b3.
5.b.4 Una vez ha cargado el bloque completo (8 palabras) Hay acierto y se salta al paso 3.a.
Ejemplo con los parmetros indicados



Se supone que todava no ha habido ningn acceso Mem. cach vaca todo con 0
Se quiere acceder al contenido de la posicin mem. 025FH

025FH =
b14
0

b13
0

Bits dir. palabra = 3

b12
0

b11
0

b10
0

b9
b8
1
0
etiqueta

b7
0

Bits etiqueta = 12

b6
1

b5
0

b4
1

b3
1

b2
1

Ancho palabra = 16
MEMORIA CACHE
Etiqueta (12)

MEMORIA PRINCIPAL

000

Direccin
hexadecimal
0000h

Bloques
memoria
000

001

0001h

001

010

0002h

010

Dato (16)

b0

BUS DE DATOS (DB0 a DB15)

k0

111

111

000

000

001

001

010

010

b1

C.P.U.

k1

111

111

111

BUS DE DATOS (DB0 a DB15)

000
001
010

b63
111
000
111

001
010

k511
7FFFh
BUS DE
DIRECCIONES
(A0 a A14)

A14

A13

A12

A11

CONTROLADOR
DE CACHE

A10 A9

A8

Etiqueta (12)

A7

A6 A5 A4 A3 A2 A1 A0
Direccin de
palabra en el
bloque

111

b1
b0
1
1
Dir. palabra

El ctrl. de la cach mira si encuentra la etiqueta en alguno de los bloques:


0

Como es el primer acceso la mem. cach contiene todo 0 hay primer fallo.

El ctrl. de cach va a direccionar a la mem. ppal. a la direccin


0

y llevar el contenido al bloque primero


0

direccin
0

escribiendo la etiqueta
0

Repitiendo el proceso hasta:


El ctrl. de cach va a direccionar a la mem. ppal. a la direccin
0

y llevar el contenido al bloque


0

direccin
1

escribiendo la etiqueta
0

Con lo que el bloque completo estar escrito en la mem. cach , existiendo ahora acierto y presentando en el bus de
datos el contenido de la mem. cach correspondiente al bloque
0

Y la direccin de palabra
1
x

Si posteriormente se quiere acceder al contenido de la direccin de mem. 085BH

085BH
b14
0

b13
0

b12
0

b11
1

b10
0

b9
b8
0
0
etiqueta

b7
0

b6
1

b5
0

b4
1

b3
1

b2
0

b1
b0
1
1
Dir. palabra

El ctrl. de la cach mira si encuentra la etiqueta en alguno de los bloques, que no encontrar porque todava no ha
sido cargado Fallo

El ctrl. de cach busca un bloque libre

0
0
0
0
El ctrl. de cach va a direccionar a la mem. ppal. a la direccin
0

y llevar el contenido al bloque segundo


0

direccin
0

escribiendo la etiqueta
0

Repitiendo el proceso hasta:


El ctrl. de cach va a direccionar a la mem. ppal. a la direccin
0

y llevar el contenido al bloque


0

direccin
1

escribiendo la etiqueta
0

Con lo que el bloque completo estar escrito en la mem. cach , existiendo ahora acierto y presentando en el bus de
datos el contenido de la mem. cach correspondiente al bloque
0

Y la direccin de palabra
0

Este proceso se repetir hasta ocupar los 64 bloques, momento en el cual el prximo bloque antes de entrar deber liberar
uno ya existente, segn el algoritmo de reemplazamiento utilizado por el controlador de la memoria cach.
CORRESPONDENCIA ASOCIATIVA POR CONJUNTOS




Auna las ventajas de los dos mtodos anteriores.


Est compuesta por r bloques y q conjuntos de modo que C = qur , siendo C el n de bloques de la mem. cach.
El funcionamiento consiste en que cada bloque de la mem. ppal. tiene asignado un conjunto de la cach, pero se
puede ubicar en cualquiera de los bloques que pertenecen a dicho conjunto. Ello permite mayor flexibilidad que la
correspondencia directa y menor cantidad de comparaciones que la totalmente asociativa.
MEMORIA PRINCIPAL
bloque 0

MEMORIA CACHE

bloque 1
bloque 2

etiqueta 0

bloque 0

etiqueta 1

bloque 1

bloque 3

conjunto 0

conjunto 1

etiqueta 2

bloque 2

etiqueta 3

bloque 3

etiqueta C-2

bloque C-2

etiqueta C-1

bloque C-1

bloque C/2-1
conjunto C/2 --1

bloque C/2
bloque C/2+1

bloque M-1

Esquema de la cach

MEMORIA CACHE
Etiqueta (7)

MEMORIA PRINCIPAL

000

000

Direccisn
hexadecimal
0000h

Bloques
memoria
000

001

001

0001h

001

010

010

0002h

010

Dato (16)

Etiqueta (7)

Dato (16)

k0

conjunto 0
111
000

BUS DE DATOS (DB0 a DB15)

111

111

000

000

001

001

010

010

001
010

conjunto 1

C.P.U.

111

111

111

111

000

000

001

001

010

010

k1
111

BUS DE DATOS (DB0 a DB15)

conjunto 31
111
000
111

Bloque 1

111

001
010

Bloque 2

k511
7FFFh

CONTROLADOR
DE CACHE

BUS DE DIRECCIONES (A0 a A14)

A14

A13

111

A12

Etiqueta (7)

A11

A10 A9

A8

A7

A6 A5 A4 A3 A2 A1 A0
Conjunto (5)

Direccin de
palabra en el
bloque

Funcionamiento:
Principios:
 Palabras por bloque 8 3 bits (b0 a b2)
5
 N conjuntos =2 N bloques 64 /2 = 32 2 5 bits
 Etiqueta = (bus direcc) (bits palab/bloque) -- (bits conjuntos) 15 3 5 = 7
 Ancho de la mem. cach = Ancho palabra + ancho etiqueta 16 + 7 = 23 bits
1. La CPU entrega la direccin de mem. al controlador de cach.
2. El ctrl. de cach asla de los bits b3 a b7 y con ellos apunta al conjunto correspondiente.
3. El ctrl. de cach busca en todos y cada uno de los bloques del conjunto coincidencia entre los bits b14 a b8 del bus de
direcciones con la etiqueta.
3.a Si iguales acierto, con lo que coge de los bits b15 a b0 (dato) de la cach y los saca al bus de datos de la
CPU.
4.a Fin de acceso.
4.b Si no encuentra coincidencia Fallo
5.b El ctrl. de cach transmite bloque completo desde mem. ppal. a mem. cach
5.b.1 El ctrl. Cach busca un bloque dentro del conjunto apuntado de cach para librarlo (algoritmo de
reemplazamiento).
5.b.2 Una vez liberado el ctrl. Cach pone a 000 los bits de dir. de palabra (b2 a b0).
5.b.2 El ctrl. Cach apunta al bloque liberado.
5.b.3 El ctrl. Cach lleva de la dir. b14 b13 b12 ........b3 0 0 0 de mem. ppal. a la cach al bloque liberado en el
conjunto apuntado por los bits b7 a b3 la dir. de palabra del bloque 0 0 0 (palabra 000 del bloque). Incrementa
un contador y lleva de la dir. b14 b13 b12 ........b3 0 0 1 de mem. ppal. a la cach al bloque liberado en el
conjunto apuntado por los bits b7 a b3 en la dir. de palabra del bloque 0 0 1 (palabra 001 del bloque). As
sucesivamente hasta la palabra b14 b13 b12 ........b3 1 1 1 (palabra 7 del bloque) . Escribiendo en la zona de
la etiqueta el valor de los bits b14 a b8.
5.b.4 Una vez ha cargado el bloque completo (8 palabras) Hay acierto y se salta al paso 3.a.

Ejemplo con los parmetros indicados





Se supone que todava no ha habido ningn acceso Mem. cach vaca todo con 0
Se quiere acceder al contenido de la posicin mem. 025FH

025FH =
b14
0

b13
0

b12
0

b11
b10
0
0
etiqueta

Bits dir. palabra = 3

b9
1

b8
0

b7
0

Bits etiqueta = 7

b6
1

b5
b4
0
1
conjunto

b3
1

Bits de conjunto = 5

b1
b0
1
1
Dir. palabra

Ancho palabra = 16

MEMORIA CACHE
Etiqueta (7)

b2
1

MEMORIA PRINCIPAL

000

000

Direccisn
hexadecimal
0000h

Bloques
memoria
000

001

001

0001h

001

010

010

0002h

010

Dato (16)

Etiqueta (7)

Dato (16)

k0

conjunto 0

BUS DE DATOS (DB0 a DB15)

111

111

111

000

000

000

001

001

010

010

001
010

conjunto 1

C.P.U.

111

k1

111

111

111

000

000

001

001

010

010

111

111

111

BUS DE DATOS (DB0 a DB15)

conjunto 31
111
000

Bloque 1

001
010

Bloque 2

k511
7FFFh

CONTROLADOR
DE CACHE

BUS DE DIRECCIONES (A0 a A14)

A14

A13

A12

A11

A10 A9

A8

A7

Etiqueta (7)

111

A6 A5 A4 A3 A2 A1 A0
Conjunto (5)

Direccin de
palabra en el
bloque

El ctrl. de la cach mira si en el conjunto :


0

Hay una etiqueta que contenga


0

Como es el primer acceso la mem. cach contiene todo 0 hay primer fallo.

El ctrl. de cach va a direccionar a la mem. ppal. a la direccin


0

y llevar el contenido al bloque 1 del conjunto seleccionado


0

direccin
escribiendo la etiqueta
0
Repitiendo el proceso hasta:

El ctrl. de cach va a direccionar a la mem. ppal. a la direccin


0

y llevar el contenido al bloque 1 del conjunto seleccionado

direccin
escribiendo la etiqueta
0

Con lo que el bloque completo estar escrito en la mem. cach , existiendo ahora acierto y presentando en el bus de
datos el contenido de la mem. cach correspondiente al bloque 1 del conjunto
0

Y la direccin de palabra

Si posteriormente se quiere acceder al contenido de la direccin de mem. 085BH

085BH
b14
0

b13
0

b12
0

b11
b10
1
0
etiqueta

b9
0

b8
0

b7
0

b6
1

b5
b4
0
1
conjunto

b3
1

b2
0

b1
b0
1
1
Dir. palabra

El ctrl. de la cach mira si en el conjunto :


0

Hay una etiqueta que contenga


0

Como no existe porque todava no ha sido cargada hay fallo.

El ctrl. de cach va a direccionar a la mem. ppal. a la direccin


0

y llevar el contenido al bloque 2 del conjunto seleccionado


0

direccin
escribiendo la etiqueta
0
Repitiendo el proceso hasta:

El ctrl. de cach va a direccionar a la mem. ppal. a la direccin


0

y llevar el contenido al bloque 1 del conjunto seleccionado

direccin
escribiendo la etiqueta
0

Con lo que el bloque completo estar escrito en la mem. cach , existiendo ahora acierto y presentando en el bus de
datos el contenido de la mem. cach correspondiente al bloque 1 del conjunto
0

Y la direccin de palabra

Si posteriormente se quiere acceder al contenido de la direccin de mem. 005BH

005BH
b14
0

b13
0

b12
0

b11
b10
0
0
etiqueta

b9
0

b8
0

b7
0

b6
1

b5
b4
0
1
conjunto

b3
1

b2
0

b1
b0
1
1
Dir. palabra

El ctrl. de la cach mira si en el conjunto :


0

Hay una etiqueta que contenga


0

Como no existe hay fallo.

El ctrl. de cach liberar uno de los dos bloques del mencionado conjunto segn algoritmo de reemplazamiento y
proceder segn los pasos indicados anteriormente al cargar el nuevo bloque.

S-ar putea să vă placă și