jueves, 26 de noviembre de 2009

Organizaciones de Memoria Cache y su rendimiento

Uno de los problemas importantes a la hora de la velocidad de trabajo de un ordenador son los retardos por accesos a memoria. La CPU tiene que trabajar con datos, pero estar continuamente accediendo a la memoria principal es costoso en tiempo. Por ello en los ordenadores de hoy en día existe la Jerarquía de Memorias:Esta jerarquía nos ayuda a agilizar los accesos a memoria. Pero hay que tener en cuenta que el rendimiento que esta jerarquía (el caso que estudiamos el de la cache) depende totalmente de la organización de ellas.
Podemos pensar en la caché como una tabla dividida en filas, que serán las unidades básicas de almacenamiento. Cada vez que traemos información de le memoria principal a la caché, traemos como mínimo una línea, funcionando del mismo modo a la hora de escribir desde caché a memoria principal.
La idea principal que debemos tener en cuenta para organizar la cache, es como se va a comunicar la caché con la memoria principal. Es decir, como vamos a traducir las direcciones de la memoria principal en caché. Existen tres técnicas:

1) Caché completamente asociativa:
Este tipo de caché puede almacenar en cualquiera de sus filas cualquier posición de memoria principal. Esto quiere decir que no se realizan búsquedas para seleccionar en que parte de la caché se almacenará (en la primera línea vacía que tengamos) y que el acierto es muy alto. Pero por el contrario, el tiempo de acceso a la caché es muy alto, ya que al buscar cualquier dato nos encontramos con que puede estar en cualquier parte.

2) Caché de mapeado directo:
En este caso cada dirección de memoria principal tendrá una posición en caché concreta donde se debe almacenar. Esto nos da la ventaja de saber de antemano que al acceder a caché encontraremos la dirección que estamos buscando en esa linea, es decir, velocidad de acceso muy alta.
Pero por otro lado tenemos el inconveniente de que a una linea de caché corresponden varias posiciones de memoria principal, o lo que es lo mismo, que hay muchas posibilidades que cada vez que busquemos los datos en caché de cierta posición de memoria, encontremos datos referentes a otra posición, tendremos una alta tasa de fallos.

3) Caché asociativa por conjuntos:
Si ninguno de los métodos de organización anteriores son eficientes, podemos mezclarlos para dar una organización mixta. Esta es la idea de la "asociativa por conjuntos". La caché estará dividida por bloques o conjuntos con más de una linea, cada dirección de memoria principal corresponderá a un bloque y dentro del bloque se distribuirá de manera asociativa.
En este caso particular la eficiencia dependerá del tamaño del bloque que decidamos utilizar. Mientras mayor sea el tamaño de bloque la memoria parecerá más asociativa, y si es menor más de mapeado directo, cada una con sus ventajas e inconvenientes.

No hay comentarios:

Publicar un comentario