miércoles, 4 de noviembre de 2015

Etimología


  • ·La palabra procede de la voz inglesa cache  («escondite secreto para guardar mercancías, habitualmente de contrabando») y esta a su vez de la francesa cache, («escondrijo o escondite»). A menudo, en español se escribe con tilde sobre la «e» del mismo modo como el que se venía escribiendo con anterioridad al neologismo la palabra «caché» («distinción o elegancia» o «cotización de un artista»), proveniente de un étimo también francés, pero totalmente distinto: cachet, («sello» o «salario»).


  • La Real Academia Española, en el Diccionario de la lengua española sólo reconoce la palabra con tilde, aunque en la literatura especializada en Arquitectura de computadoras (por ejemplo, las traducciones de libros de los autores Andrew S. Tanenbaum, John L. Hennessy y David A. Patterson) se emplea siempre la palabra sin tilde por ser anglosajona y debería escribirse en cursiva (cache).

Optimización

Técnicas para reducir fallos

Existen diversas técnicas para reducir esos fallos en la caché:
  • Incrementar el tamaño del bloque. Ventajas: Se reducen los fallos forzosos como sugiere el principio de localidad espacial. Inconvenientes: Aumentan los fallos por conflicto al reducirse el número de bloques de la caché y los fallos de capacidad si la caché es pequeña. 
  • Incremento de la asociatividad. Ventajas: Se reducen los fallos por conflicto. Inconvenientes: Aumenta el tiempo de acceso medio al incrementarse el tiempo de acierto.
  • Caché víctima. Consiste en añadir una pequeña caché totalmente asociativa, para almacenar bloques descartados por fallos de capacidad o conflicto. En caso de fallo, antes de acceder a la memoria principal se accede a esta caché. Si el bloque buscado se encuentra en ella se intercambian los bloques de ambas cachés.
  • Optimización del compilador. El compilador re-ordena el código de manera que por la forma en cómo se hacen los accesos se reducen los fallos de caché.

Optimización

-Para una optimización en la manera en que se ingresa a la memoria caché y cómo se obtienen datos de ella, se han tomado en cuenta distintas técnicas que ayudarán a que haya menos reincidencia de fallos.

Mejorar el rendimiento:
  • Reducir fallos en la caché (miss rate).
  • Reducir penalizaciones por fallo (miss penalti).
  • Reducir el tiempo de acceso en caso de acierto (hit time).

Reduccion de fallos:

3 tipos de fallos en una memoria caché:
  • Forzosos (Compulsory): En el primer acceso a un bloque éste no se encuentra en la caché (fallos de arranque en frío o de primera referencia).
  • Capacidad (Capacity): La caché no puede contener todos los bloques necesarios durante la ejecución de un programa.
  • Conflicto (Conflict): Diferentes bloques deben ir necesariamente al mismo conjunto o línea cuando la estrategia es asociativa por conjuntos o de correspondencia directa (fallos de colisión).


Diseño

En el diseño de la memoria caché se deben considerar varios factores: 

Política de ubicación

Decide dónde debe colocarse un bloque de memoria principal que entra en la memoria caché.
-Directa: Cada bloque de la memoria principal tiene su posición en la caché y siempre en el mismo sitio. Su inconveniente es que cada bloque tiene asignada una posición fija en la memoria caché y ante continuas referencias a palabras de dos bloques con la misma localización en caché, hay continuos fallos habiendo sitio libre en la caché. 
-Asociativa- Los bloques de la memoria principal se alojan en cualquier bloque de la memoria caché. Su principal inconveniente es la cantidad de comparaciones que realiza.
-Asociativa por conjuntos-  Cada bloque de la memoria principal tiene asignado un conjunto de la caché, pero se puede ubicar en cualquiera de los bloques que pertenecen a dicho conjunto.

Política de extracción

La política de extracción determina cuándo y qué bloque de memoria principal hay que traer a memoria caché.
-Por demanda- un bloque sólo se trae a memoria caché cuando ha sido referenciado y no se encuentre en memoria caché.
-Con prebusqueda- Esta política se basa en la propiedad de localidad espacial de los programas.

Política de reemplazo

Determina qué bloque de memoria caché debe abandonarla cuando no existe espacio disponible para un bloque entrante.
Aleatorioel bloque es reemplazado de forma aleatoria.
FIFO- se usa el algoritmo First In First Out para determinar qué bloque debe abandonar la caché. 
Menos recientemente usado (LRU)- Sustituye el bloque que hace más tiempo que no se ha usado en la caché, traeremos a caché el bloque en cuestión y lo modificaremos ahí.
Menos frecuencias usadas (LFU)- Sustituye el bloque que ha experimentado menos referencias.

Política de Actualización o Escritura

Determinan el instante en que se actualiza la información en memoria principal cuando se hace una escritura en la memoria caché.
Escritura Inmediata: Se escribe a la vez en Memoria caché y Memoria principal. Desventaja: genera cuello de botella.
Escritura Aplazada: Actualiza únicamente la Memoria caché luego de la modificación de sus datos. Cuando el bus de sistema se encuentra libre, actualiza la memoria principal.
Escritura Obligada: Actualiza únicamente la Memoria caché luego de la modificación de sus datos. Cuando no hay otra alternativa, actualiza la memoria principal. Esto puede producirse por cualquiera de estas causas:
  1. Se accede a la posición de memoria principal modificada en la caché.
  2. Debe eliminarse una línea de la caché, entonces se actualiza la memoria principal  antes de proceder a la eliminación.