Documente Academic
Documente Profesional
Documente Cultură
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
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
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
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.
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
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
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
Es:
Como es el primer acceso la mem. cach contiene todo 0 hay primer fallo.
direccin
0
escribiendo la etiqueta
0
Repitiendo el proceso hasta:
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
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
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
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
k0
111
111
000
000
001
001
010
010
b1
C.P.U.
k1
111
111
111
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
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
k0
111
111
000
000
001
001
010
010
b1
C.P.U.
k1
111
111
111
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
Como es el primer acceso la mem. cach contiene todo 0 hay primer fallo.
direccin
0
escribiendo la etiqueta
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
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
0
0
0
0
El ctrl. de cach va a direccionar a la mem. ppal. a la direccin
0
direccin
0
escribiendo la etiqueta
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
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
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
conjunto 31
111
000
111
Bloque 1
111
001
010
Bloque 2
k511
7FFFh
CONTROLADOR
DE CACHE
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.
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
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
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
conjunto 31
111
000
Bloque 1
001
010
Bloque 2
k511
7FFFh
CONTROLADOR
DE CACHE
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
Como es el primer acceso la mem. cach contiene todo 0 hay primer fallo.
direccin
escribiendo la etiqueta
0
Repitiendo el proceso hasta:
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
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
direccin
escribiendo la etiqueta
0
Repitiendo el proceso hasta:
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
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 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.