jueves, 5 de diciembre de 2013

MEMORIA CACHÉ

¿Qué es memoria?

Actualmente ha crecido la necesidad de memoria, pero en realidad la memoria es un circuito operacional basados en dispositivos electrónicos generalmente creado con flips – flops o capacitores, los cuales cumplen la función de almacenar de información de datos de manera digital, es decir guardar la información a nivel de bits. Pero la característica principal es que se puede guardar y recuperar la información para poder procesarla. Generalmente la memoria sigue un patrón, el cual se basa en un diseño el cual parte desde la unidad de memoria, registro de memoria y registro de direcciones para poder ingresar o sacar la información requerida. 

¿Qué es la memoria caché?
Es una memoria donde se almacenan una serie de datos para su acceso rápido, básicamente la memoria cache de un procesador es un tipo de memoria volátil del tipo RAM pero de una velocidad mayor. (Gomez, 2012)

Fuente: tecnolowikia.wikisapces.com

Tipos de conexión de las memorias caché.
            La memoria cache se puede conectar al CPU de dos maneras: Paralelo y Serie.

·         Conexión en serie.
      En este tipo de conexión la CPU solo se conecta con la cache por lo que todas las peticiones que hace la CPU al bus del sistema son a través de la memoria cache. Por lo tanto todo lo que necesita la CPU del sistema se lo proporciona a la memoria cache y como es de tamaño y tiempo de acceso reducido cada vez que el dato está almacenado en la cache, el tiempo de acceso es muy reducido y evita manejar el bus del sistema.

·         Conexión en paralelo.
     En este tipo de conexión todo depende del bus de sistema, cada vez que la CPU realiza una petición, la envía simultáneamente a la cache y a la memoria principal. Si se encuentra la información contenida en la cache es entregada al bus en pocos nano segundos avisando a la memoria principal para que esta no continúe con la búsqueda de la información. De esta manera se llega a parar el ciclo.  Si la memoria cache no tiene el dato pedido, la memoria principal sigue trabajando, con lo cual no hay penalización de tiempo, lo que es una gran ventaja.

Principio de funcionamiento de la caché.
El bus de direcciones va a la cache, que tiene dos partes: la de etiquetas y la de datos. Hay “N” posiciones de etiquetas y cada etiqueta tiene 21 bits. Los 21 bits de la etiqueta se corresponden con los 21 bits de más peso de la direcciones, por eso el comparador coge las N etiquetas y las compara con los 21 bits de más peso de la direcciones.
·         Si coincide, el comparador devuelve un uno lo que implica presencia.
·         Si no coincide, el comparador devuelve un cero lo que implica ausencia.
 Una cache está estructurada en tres bloques importantes.

·    Bloque de etiquetas: RAM-CAM: Es una memoria de acceso por contenido. No se accede por dirección de memorias. No se accede por dirección de memoria, sino que, se copara el valor o dato con lo que hay dentro de la memoria y así sabemos si se encuentra o no contenido en ella.

·     Bloque de datos asociados: SRAM: Es un conjunto de datos de forma que a cada dato le corresponde una etiqueta. Por ejemplo:
o   Dato 0 à Etiqueta 0.
§  Si  hay acierto, la etiqueta que coincide con el dato introducido, devuelve el dato asociado a la misma.

·         Lógica de control: Comparadores de “n” bits, tantos como tenga la etiqueta.

Necesidad de la caché.
La Arquitectura de los ordenadores de última generación está orientada a mejorar el rendimiento, de manera que se ejecuten más instrucciones por unidad de tiempo.
Para llevar a cabo la exigencia de los nuevos procesadores se apoyan en tres recursos fundamentales:
Arquitectura superescalar, característica de la arquitectura RISC. Paralelismo explícito. Se compone de instrucciones sencillas.
Supersegmentación, es decir segmentación con elevado número de etapas. Esta técnica precisa de técnicas sofisticadas para eliminar riesgo, especialmente en las instrucciones que contengan saltos condicionales.
Potenciamiento de la memoria cache, para aumentar la velocidad de la memoria. (Patterson, 2001)

Arquitectura de subsistemas de las memorias caché.
Las características fundamentales que determinar un subsistema cache son las siguientes:

1   Tamaño de la cache. 
El tamaño de la caché suele oscilar entre 8KB y 512KB. Esta memoria en ocasiones no se  puede aumentar el rendimiento  mayor de la cache, debido a los algoritmos  de transferencia de la memoria caché.
Según los algoritmos, la mejor capacidad de la cache esta entre 32k y 256k.

2    Tipos de organización
Existe tres tipo de organización de la memorias caché

Totalmente asociativa: se caracteriza porque cualquier posición de la memoria principal puede ubicar en cualquier posición de la memoria cache. Utiliza comparadores de 32 bits. La flexibilidad de guardar en cualquier posición trae un problema grave, puesto que la cache necesita los 32 bits de la dirección para compartir con la etiqueta. Este inconveniente de este tipo de organización de la memoria caché es que tiene que tener apuntadas todas las direcciones en la zona de etiquetas. 
Asociativa de una vía: Suponemos que la memoria principal tiene  256 KB y la caché 256 Bytes. La memoria principal se divide en bloques de 256 bytes. Habrá 1K bloques, es decir, 1024 bloques. Cada  posición de 1 bloque de la memoria principal solo puede ir a la misma posición de la caché. La ventaja es que para conexionar la memoria principal necesitamos que en el  bus de direcciones tenga 18 líneas. La etiqueta necesita solo 10 bits: 210=10K.

Asociación de “n” vías: El funcionamiento es similar a la de una vía, pero la cache se va a descomponer en varias vías. La memoria principal se divide en fragmentos iguales con la cache asociativa de N vías, se ahorra gran cantidad de bits. Esta organización de la memoria ofrece un mayor rendimiento pero las vías son de mayor tamaño.

3    La estructura física de una cache.
Para referirnos a una caché real presentaremos como ejemplo la de un procesador Pentium.
El Pentium tiene 2 memorias cachés  independientes: una para datos y otra para instrucciones, permitiendo el paralelismo entre instrucciones y datos. Cada una de ellas es de 8 KB.
Son cachés asociativas de 2 vías. Las etiquetas contienen los 20 bits de más peso de la dirección además de dos bits de código: el WP protege contraescritura y V predice si es línea válida o no.
Los datos asociados en la etiqueta tiene cada uno32bytes, cada vía tiene 128 etiqueta donde guarda 128 x 32 bytes=4 Kbyte, luego la memoria lo dividimos en 4KB.

       Actualización de la memoria caché
En el Pentium cuando se produce una ausencia en la caché se busca la información de una línea  completa en la memoria principal y se carga en la caché, en una vía que esté libre.
Si fuera totalmente asociativa, cualquier línea se podría almacenar en cualquier posición de la caché. Si es asociativa de una vía sólo hay una posibilidad. Si es de varias vías, como el Pentium, hay varias posibilidades.
Si se necesita introducir una posición y hay alguna vía vacía, esta se ocupa, si están ocupadas, se pueden aplicar los siguientes algoritmos.
  • RANDOM: algoritmo de generación aleatorio, elige y la reemplaza  una de las posiciones ocupadas de una de las cuatro vías.
  • LRU: se elimina la posición de la vía que menos se haya empleado últimamente. Su funcionamiento se basa en dos bits que apuntan la vía menos empleada. Hay dos alternativas de actualizar:

1.       El dato pedido va en último lugar: el dato último es el que se ha direccionado y se traen los 31 bytes que van adelante.
2.       El dato pedido va en primer lugar: la caché desde el primer dato que ha llegado, ya tiene la información que ha solicitado la CPU. (Tanenbaum, 2000)

Protocolo MESI
Puede suceder que la misma posición de la memoria principal la están empleados dos CPU, y como consecuencia las dos caches. Para evitar esta inconsistencia de la cache Intel desarrollo el protocolo MESI.
El protocolo MESI asigna cuatro estados diferentes a cada línea, que define si una línea es válida, si está disponible para otras caches, o ha sido modificada.

Los posibles estados de la línea son:
  •     M: Modificado: M esta modificada por 1 escritura del procesador, actualizar memoria si es preciso.
  •     E: Exclusiva: la línea solo tiene una cache, y esta sin modificar. La memoria principal tiene una copia.
  •     S: Simultaneo: esta línea esta repetida en otras caches
  •      I: Invalido: esta línea esta invalidada.

Niveles de jerarquía en la caché.
Una de las técnicas de aumentar el rendimiento, es disminuir el tiempo de acceso a las cache y otra aumentar la tasa de aciertos.
Para mejorar4el tiempo de acceso a las caches resulta complicado ya que el acceso a las caches es una característica tecnológica.
Para realizar dicho aumento de aciertos debemos:
·         Mejorar los algoritmos de cargar en la cache
·         Aumentar el tamaño del cache. (Stallings, 2000)
Fuente: informatica.hsw.uol.com.br

Biografía:

  • Gomez, J. B. (2012). Arquitectura de Computadoras I. Mexico: Red Tercer Milenio.
  • Patterson, D. (2001). Arquitectura de Computadores. Madrid: McGraw - Hill.
  •  Stallings, W. (2000). Organización y Arquitectura de Computadores. Madrid: Pretince Hall.
  • Tanenbaum, A. (2000). Organización de Computadoras. Mexico: Prentice Hall - Pearson.