jueves, 20 de febrero de 2014

Caché (informática)

Diagrama de una memoria caché de CPU.
En informática, el caché de CPU, es un búfer especial de memoria que poseen los ordenadores. Funciona de una manera similar a como lo hace la memoria principal (RAM), pero es de menor tamaño y de acceso más rápido. Es usado por la unidad central de procesamiento para reducir el tiempo de acceso a datos ubicados en la memoria principal que se utilizan con más frecuencia.

Cuando se accede por primera vez a un dato, se hace una copia en el caché; los accesos siguientes se realizan a dicha copia, haciendo que el tiempo de acceso medio al dato sea menor. Cuando el procesador necesita leer o escribir en una ubicación en memoria principal, primero verifica si una copia de los datos está en el caché. Si es así, el procesador de inmediato lee o escribe en la memoria caché, que es mucho más rápido que de la lectura o la escritura a la memoria principal.

Nombre

La palabra procede de la voz inglesa cache (/kæʃ/; «escondite secreto para guardar mercancías, habitualmente de contrabando») y esta a su vez de la francesa cache, (/kaʃ/; «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, (/ka'ʃɛ/; «sello» o «salario»). La Real Academia Española sólo reconoce la palabra con tilde, aunque en la literatura especializada en Arquitectura de Computadoras (como, entre otros, las traducciones de los libros de Andrew S. Tanenbaum, John L. Hennessy y David A. Patterson) se emplea siempre la palabra sin tilde (aunque debería, además, escribirse en cursiva).

Memoria caché o RAM caché

La unidad caché es un sistema especial de almacenamiento de alta velocidad. Puede ser tanto un área reservada de la memoria principal como un dispositivo de almacenamiento de alta velocidad independiente. Hay dos tipos de caché frecuentemente usados en las computadoras personales: memoria caché y caché de disco. Una memoria caché, llamada también a veces almacenamiento caché o RAM caché, es una parte de memoria RAM estática de alta velocidad (SRAM) más rápida que la RAM dinámica (DRAM) usada como memoria principal. La memoria caché es efectiva dado que los programas acceden una y otra vez a los mismos datos o instrucciones. Guardando esta información en SRAM, la computadora evita acceder a la lenta DRAM.

Cuando se encuentra un dato en el caché, se dice que se ha producido un acierto, siendo un caché juzgado por su tasa de aciertos (hit rate). Los sistemas de memoria caché usan una tecnología conocida por caché inteligente en la cual el sistema puede reconocer cierto tipo de datos usados frecuentemente. Las estrategias para determinar qué información debe de ser puesta en el caché constituyen uno de los problemas más interesantes en la ciencia de las computadoras. Algunas memorias caché están construidas en la arquitectura de los microprocesadores. Por ejemplo, el procesador Pentium II tiene un caché L2 de 512 KiB.

El caché de disco trabaja sobre los mismos principios que la memoria caché, pero en lugar de usar SRAM de alta velocidad, usa la convencional memoria principal. Los datos más recientes del disco duro a los que se ha accedido (así como los sectores adyacentes) se almacenan en un buffer de memoria. Cuando el programa necesita acceder a datos del disco, lo primero que comprueba es el caché del disco para ver si los datos ya están ahí. El caché de disco puede mejorar drásticamente el rendimiento de las aplicaciones, dado que acceder a un byte de datos en RAM puede ser miles de veces más rápido que acceder a un byte del disco duro.

Composición interna

La memoria caché está estructurada, un caché L2 de 512 KiB se distribuye en 16.384 filas y 63 columnas llamado Tag RAM, que indica a qué porción de la RAM se halla asociada cada línea de caché, es decir, traduce una dirección de RAM en una línea de caché concreta.

Diseño

En el diseño de la memoria caché se deben considerar varios factores que influyen directamente en el rendimiento de la memoria y por lo tanto en su objetivo de aumentar la velocidad de respuesta de la jerarquía de memoria. Estos factores son las políticas de ubicación, extracción, reemplazo, escritura y el tamaño de la caché y de sus bloques.

Política de ubicación

Decide dónde debe colocarse un bloque de memoria principal que entra en la memoria caché. Las más utilizadas son:
  • Directa: Al bloque i-ésimo de memoria principal le corresponde la posición i módulo n, donde n es el número de bloques de la memoria caché.
  • Asociativa: Cualquier bloque de memoria principal puede ir en cualquiera de los n bloques de la memoria caché.
  • Asociativa por conjuntos: La memoria caché se divide en k conjuntos de bloques, así al bloque i-ésimo de memoria principal le corresponde el conjunto i módulo k. Dicho bloque de memoria podrá ubicarse en cualquier posición de ese 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é. Existen dos políticas muy extendidas:
  • Por demanda: Un bloque sólo se trae a memoria caché cuando ha sido referenciado y no se lo encuentre en memoria principal.
  • Con prebúsqueda: Cuando se referencia el bloque i-ésimo de memoria principal, se trae además el bloque (i+1)-ésimo. 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. Básicamente hay cuatro políticas que son:
  • Aleatoria: El bloque es reemplazado de forma aleatoria.
  • FIFO: Se usa un algoritmo First In First Out FIFO (primero en entrar es el primero en salir) para determinar qué bloque debe abandonar la caché. Este algoritmo generalmente es poco eficiente.
  • Menos recientemente usado (LRU): Se 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): Se sustituye el bloque que ha experimentado menos referencias.

No hay comentarios.:

Publicar un comentario