Memoria+cache

1. **INTRODUCCIÓN** La memoria caché aparece en la década de los 90s como respuesta a la necesidad de igualar la velocidad del procesador y las memorias o por lo menos hacer que la diferencia entre estas no sea tan grande, aparece en el procesador 386 de Intel. Es una memoria de gran velocidad que puede encontrarse integrada en el procesador (caché interna, L1) o de primer nivel, en la tarjeta madre (caché de segundo nivel o caché externa, L2) esta segunda es más lenta que la primera. Su función es la de guardar datos e instrucciones más usadas Cuando el procesador intenta leer una palabra de la memoria, primero revisa si esta palabra está en la memoria caché, si lo está la palabra es llevada al procesador, caso contrario la memoria caché se llena de información de un bloque de la memoria principal con un número fijo de palabras y luego enviada al procesador.
 * {$page} **


 * 2. DESARROLLO**


 * **Caché de primer nivel L1.-** Suele estar dividido en dos partes una para datos y la otra para instrucciones que es consecuencia de la segmentación del procesador, se accede primero a la caché de instrucciones para extraer el código a ejecutar y luego se accede a la caché de datos para procesar estos.
 * **Caché de segundo nivel L2.-** Nació porque la memoria caché de primer nivel resultaba insuficiente. Es más grande que la caché de primer nivel pero menos rápida, en esta caché no existe la división de datos e instrucciones, todos estos se guardan en conjunto. La caché de segundo nivel está integrada en la placa madre.

Fig. 1 Cache L1 y L2 y su ubicación en la tarjeta madre

Fuente: [], Cache (RAM), Marangraphics.inc. , recuperado (6/10/12)


 * Optimizaciones**
 * 1) **Caché no bloqueante.-** Es la caché a la que se puede seguir accediendo aun cuando esta tiene fallos. Se incorporaron a las PCs juntamente con las caches de segundo nivel.
 * 2) **Caché segmentada.**- La caché interna esta segmentada en 2 etapas y la externa en 4. En la primera etapa se realiza la consulta del dato a busca en L1, en la segunda etapa se extrae el dato si es encontrado, caso contrario se manda una petición a L2.
 * 3) **Caché con lectura anticipada.-** Tiene por objetivo acelerar la lectura de los datos por parte del procesador en caso de no encontrarse en la caché, haciendo simultaneo la recepción del bloque que lo contiene y el envío del dato al procesador. Se tiene dos técnicas para realizar estas acciones:
 * **Early restart (reinicio prematuro).-** Espera a que llegue la palabra del bloque de información para reenviarla al procesador, evitando el tiempo de espera para que se complete la transferencia del bloque.
 * **Critical Word first (primero la palabra critica).**- Obliga al siguiente nivel de caché a enviar el dato requerido y luego enviar el bloque completo

4. **Caché victima.-** Es una pequeña caché L2 de tamaño reducido, que guarda los datos desechados más recientemente por L1 antes de ser enviados a la memoria principal. 5. **Caché de tercer nivel (L3).**- Todavía poco conocida, realizaría su aparición masiva en caso de que la diferencia entre la memoria principal y la memoria caché agrandaran. Su funcionamiento sería igual que como los anteriores dos niveles de caché, siendo que para las memorias más alejadas del procesador, su tamaño crece pero su velocidad disminuye. El procesador AMD Phenom II ya tiene integrado un caché L3 de 6Mb.

Fig. 2 Arquitectura de procesador de AMD con cache L3 Fuente: [], Larger L3 cache in Shanghai part I, AMD, recuperado (6/10/12) Tipos de conexión de la memoria caché.- Existen dos tipos de conexión de la memoria caché a la CPU:


 * **Serie­.-** La CPU solo está conectada a la memoria caché, por lo que todas las peticiones que realice se las hace mediante esta, evitando usar el bus del sistema. Si la petición se encuentra ya en la caché la respuesta será en pocos nanosegundos, porque no se usa el bus del sistema, los dispositivos de entrada y salida pueden trabajar tranquilamente permitiendo el paralelismo. La principal desventaja de esta conexión es que cuando la información requerida por la CPU no se encuentra en la memoria caché, ésta tiene que mandar la petición a la memoria principal produciendo una latencia en la respuesta.

Fig. 3 Modo de funcionamiento de conexión de cache en serie con la CPU.

Fuente: Pino T. I. V. – Jimenez C. J. (2007), La memoria caché en Universidad José Carlos Mariátegui, Arquitectura de computadoras (pp. 2-15 cap. 5), Perú,Universidad José Carlos Mariátegui


 * **Paralelo.-** Depende del bus del sistema, cuando la CPU realiza una petición la hace simultáneamente a la caché y a la memoria principal, cuando la información requerida se encuentra en la caché, avisa a la memoria principal para que no continúe la búsqueda, pero si no está en la memoria caché, la búsqueda continua en la memoria principal. A diferencia de la conexión en serie, la caché acá puede ser opcional, si se desea se conecta sino no.

Fig. 4 Modo de funcionamiento de conexión de cache en paralelo con la CPU

Fuente: Pino T. I. V. – Jimenez C. J. (2007), La memoria caché en Universidad José Carlos Mariátegui, Arquitectura de computadoras (pp. 2-15 cap. 5), Perú, Universidad José Carlos Mariátegui

Video recomendado: []


 * 3. REFERENCIAS BIBLIOGRAFICAS**

v Duran R. L. (2007), //El gran libro del pc interno,// Barcelona: España, Editorial Marcombo v Ujaldón M. M. (2003), //Arquitectura del PC: Volumen I: Microprocesadores,// Málaga: España, Editorial Megamultimedia S.L. v Pino T. I. V. – Jimenez C. J. (2007), La memoria caché en Universidad José Carlos Mariátegui, //Arquitectura de computadoras// (pp. 2-15 cap. 5), Perú, Universidad José Carlos Mariátegui v Orozco G. M. A. – Chávez A. M. L – Chávez A. J. (2006), //Informática uno,// México, Thompson Editores

(Estudiante: Nombre_Completo ) en fecha fecha de la edición
 * Seguimiento de aportes: (*) Esto es para hacer un seguimiento de los aportes, copiar la linea siguiente cada ves que se edite, no borrar las existentes.**


 * AUTOR:** {$creator}

//Esta pagina fue editada {$pagerevisions} veces. La ultima modificación fue realizada por//

//user:{$revisioneditor} el {$revisiondate}//