miércoles, 27 de mayo de 2009

Mapeo

Al pasar los datos desde la memoria principal a la memoria cache estos se traen por bloques. El motivo de llevar los datos por bloques se debe a que, por ejemplo, si el procesador pide el dato de la dirección n entonces es muy probable que después pida el dato de la dirección n+1, por lo tanto, se ahorra tiempo al llevar los datos por bloques a la cache. Por otro lado como ya hemos visto en los párrafos anteriores la memoria Cache es de poca capacidad, en relación con la memoria principal, por lo tanto cobra importancia el tema de que y como pongo datos en la memoria Cache. Es necesario entonces contar con un proceso de conversión de las direcciones, que se llama MAPEO.

Mapeo Directo
Para explicar, el mapeo directo es mejor comenzar con un ejemplo, que por el momento, es sólo, ilustrativo y no tiene relación con la realidad.

•MM 512B ----> 9b 64 bloques
•MC 32B ------> 5b 4 bloques
•Cada bloque de 8B

El Mapeo Directo funciona de la siguiente forma:
Según las condiciones antes definidas se tiene lo siguiente: cada bloque será de 8 Byte, es decir 8 palabras de largo 8.

La memoria principal al ser dividida por 8 (512 B / 8) dará como resultado 64 bloques de 8 palabras cada uno.

La memoria Cache también se divide por 8 (32B / 8), lo cual da como resultado 4 bloques.

Cada bloque de la memoria principal se coloca dentro de uno de los bloques de la memoria Cache siguiendo un orden establecido de la siguiente forma (La Fig. muestra parte de esta asignación):

En el bloque cero de la cache pueden ir cualquiera de los múltiplos exactos de 4 (0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60), que son 16.En el bloque uno de la cache van (1, 5, 9, 13, 17, 21, 25...............)

En el bloque dos (2, 6, 10, 14, 18, 22, 26..................................)

En el bloque tres van (3, 7, 11, 15, 19, 23,27..................)

Para distinguir entre las 16 alternativas que corresponden a un bloque determinado de la memoria cache existe una memoria, en este caso de 4 bits, que lleva el registro. Esta memoria se denomina TAG.

El WIB es de 3 bits por que con estos se pueden distinguir entre 8 alternativas, es decir las que corresponden a las divisiones de un bloque.
El BIC es de 2 bits porque se pueden distinguir cuatro alternativas, o sea los cuatro bloques de la cache.
El TAG, finalmente distingue entre las 16 alternativas que corresponden a los diferentes bloques de la memoria principal que pueden ir a parar a un bloque determinado de la cache.

No hay comentarios:

Publicar un comentario