Está en la página 1de 17

Ante la inmensa velocidad de los procesadores que a medida del tiempo se va incrementando, el lmite es mayor entre la transferencia de la memoria

principal (RAM) y el CPU; ante esto se plantearon soluciones, una incrementar la velocidad de la RAM y otra, quiz la ms ptima, agregar un nuevo componente al PC: la memoria cach. Una forma de entender el funcionamiento de la memoria cach consiste en la analoga de un videoclub, equipado con un mostrador y una habitacin capaz de almacenar cientos de vdeos. Ante la peticin de cada cliente, el dependiente deber acudir hasta el almacn, buscar la pelcula solicitada, volver al mostrador y entregar la cinta al cliente. Ante la devolucin de una cinta, el dependiente debe caminar hacia el almacn y guardar dicha cinta en el lugar apropiado. Esta forma de trabajo no es nada eficiente, ya que implica demasiados desplazamientos y, por tanto, la atencin al cliente es lenta. Suponemos ahora que el dependiente dispone de un pequeo archivador de 20 vdeos sobre el mostrador. Cuando un cliente devuelve una cinta, el dependiente coloca la cinta directamente en el archivador, en lugar de caminar hacia el almacn. Si se va repitiendo dicho proceso, el dependiente dispondr continuamente de las veinte ltimas pelculas devueltas en el archivador. Cuando se acerque un cliente y pida una pelcula, el dependiente buscar primero en el archivador, y slo si no la encuentra all se desplazar hacia el almacn. Este mtodo funciona, sobre todo porque la mayor parte de las pelculas devueltas sern las de estreno, que al mismo tiempo son las ms solicitadas.

MEMORIA CACH
Una memoria cach es una memoria en la que se almacenas una serie de datos para su rpido acceso. Existen muchas memorias sistema, incluso de datos, como es cach (de disco, de el caso de la cach de Google), pero en este tutorial nos vamos a centrar en la cach de los procesadores. Bsicamente, la memoria cach de un procesador es un tipo de memoria voltil (del tipo RAM), pero de una gran velocidad. En la actualidad esta memoria est integrada en el procesador, y su cometido es almacenar una serie de instrucciones y datos a los que el procesador accede continuamente, con la finalidad de que estos accesos sean instantneos. Estas instrucciones y datos son aquellas a las que el procesador necesita estar accediendo de forma continua, por lo que para el rendimiento del procesador es imprescindible que este acceso sea lo ms rpido y fluido posible. Con el objetivo de lograr un tiempo de acceso menor a los datos almacenados en distintos tipos de memoria, existen sistemas de hardware o software llamados cach, los cuales almacenan estos datos de forma duplicada. La memoria cach contenida dentro de una CPUmemoria RAM o memoria principal de la computadora, y es por esta razn que mejora la capacidad de procesamiento del mismo.

Cada vez que se accede por vez primera a determinado dato, este es almacenado en cach, posteriormente al intentar leer el mismo dato se recurrir a la informacin almacenada en cach, ahorrando tiempo de acceso. La memoria cach se renueva, por lo tanto, a todo momento.

Los discos duros y otros dispositivos de almacenamiento tambin hacen utilizacin de estos mtodos, ya sea por hardware y/o por software mediante el sistema operativo, el cual destina cierta parte de su memoria RAM al almacenamiento de informacin proveniente de estos dispositivos. Las grabadoras de CD/DVD poseen una memoria cach que va almacenando los datos previamente a ser grabados en discos pticos, e incluso algunos programas brindan un cach extra para evitar an ms la inutilizacin de los discos.

La forma en que un bloque se coloca en memoria cach puede ser directa, asociativa, o asociativa por conjuntos, su extraccin es por demanda o con prebsqueda, su reemplazo puede ser aleatorio o FIFO (el primero que entra es el primero que sale). La actualizacin de la memoria RAM puede ser inmediata o aplazada.

Funcionalmente, la memoria cach es igual a la memoria principal. Sin embargo, fsicamente en la computadora es un componente distinto. Se puede definir como una memoria rpida y pequea, situada entre la memoria principal y el procesador, especialmente diseada para contener informacin que se utiliza con frecuencia en un proceso con el fin de evitar accesos a otras memorias (principal), reduciendo considerablemente el tiempo de acceso al ser ms rpida que el resto de la memoria principal. Cuando el procesador lee datos o los almacena en la memoria principal, los datos tambin se almacenan en la memoria cach. Si el microprocesador los necesita de nuevo, los lee de la cach y no de la principal. Al ser sta muy rpida la velocidad se incrementa considerablemente. La cantidad de memoria cach en una computadora que disponga de esta memoria es bastante menor que la cantidad de memoria principal (no cach), y adems la cach es bastante ms cara. Hardware y Software Hardware: El equipo fsico que compone el sistema se conoce con la palabra inglesa hardware, que en castellano se puede traducir como soporte fsico. Es el conjunto de dispositivos electrnicos y electromecnicos, circuitos, cables que componen la computadora. Son entes palpables, que podemos tocar. Software: Para que el sistema trabaje, necesita que le suministren una serie de ordenes que indiquen que es lo que queremos que haga. Estas rdenes se le suministran por medio de programas. El software o soporte lgico est compuesto por todos aquellos programas necesarios para que la computadora trabaje. El software dirige de forma adecuada a los elementos fsicos o hardware.
Objetivos Mantener el tiempo de acceso promedio a la memoria pequeo. Reducir el ancho de banda entre memoria principal y procesador

Operacin del cache

La direccin generada por el procesador es comparada con los datos que estn almacenados en la cache, si el dato est presente, el procesador lo lee desde la cache, si el dato no est presente, se transfiere desde la memoria principal a la cache. Funcionamiento de la memoria cach La memoria cach se carga desde la RAM con los datos y/o instrucciones que ha buscado la CPU en las ltimas operaciones. La CPU siempre busca primero la informacin en la cach, lo normal es que va encontrar ah la mayora de las veces, con lo que el acceso ser muy rpido. Pero si no encuentra la informacin en la cach, se pierde un tiempo extra en acudir a la RAM y copiar dicha informacin en la cach para su disponibilidad. En el siguiente diagrama se describe un proceso cuando la CPU requiere operacin de lectura de una instruccin, para ello se presentan dos casos Una forma de entender el funcionamiento de la memoria cach consiste en la analoga de un videoclub, equipado con un mostrador y una habitacin capaz de almacenar cientos de vdeos. Ante la peticin de cada cliente, el dependiente deber acudir hasta el almacn, buscar la pelcula solicitada, volver al mostrador y entregar la cinta al cliente.

Ante la devolucin de una cinta, el dependiente debe caminar hacia el almacn y guardar dicha cinta en el lugar apropiado. Esta forma de trabajo no es nada eficiente, ya que implica demasiados desplazamientos y, por tanto, la atencin al cliente es lenta. Suponemos ahora que el dependiente dispone de un pequeo archivador de 20 vdeos sobre el mostrador. Cuando un cliente devuelve una cinta, el dependiente coloca la cinta directamente en el archivador, en lugar de caminar hacia el almacn. Si se va repitiendo dicho proceso, el dependiente dispondr continuamente de las veinte ltimas pelculas devueltas en el archivador. Cuando se acerque un cliente y pida una pelcula, el dependiente buscar primero en el archivador, y slo si no la encuentra all se desplazar hacia el almacn. Este mtodo funciona, sobre todo porque la mayor parte de las pelculas devueltas sern las de estreno, que al mismo tiempo son las ms solicitadas. La memoria cach tambin se puede comparar con el cinturn de herramientas de un trabajador, donde guarda las herramientas y las piezas que se necesitan con mayor frecuencia. En este ltimo ejemplo, la memoria principal es como un cinturn de herramienta porttil y el disco duro es como un camin grande para representarlo as.

A parte de la cach con respecto a la memoria RAM, en un PC existen muchos otros sistemas de cach, como:

Memoria RAM como cach: Las unidades de almacenamiento (discos duros, discos flexibles, etc.) y otros muchos perifricos utilizan la memoria RAM como sistema de cach, una zona de la RAM contiene la informacin que se ha buscado ltimamente en dichos dispositivos, de forma que basta con acceder a la RAM para recuperarla.

INFORMACIN DE MEMORIA CACH Y VELOCIDAD DE ALGUNOS PROCESADORES INTEL MODELO 8088 8086 80c86 80186 80286 80386DX 80386SX 80486SLC VELOCIDAD MHz 8 8 8 16 20 40 25 25 33 80486DX 25 33 50 80486SX 20 25 33 80486DX2 40 50 66 80486DX4 75 100 Pentium 75 100 Pentium MMX 166 EN CACH L1 EN CACH L2 EN KB KB 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8 8 8 8 16 16 16 16 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

233 Pentium Pro 150 200 Pentium II 233 450 Pentium II Xeon 400 450 Pentium III 450 1000 Pentium III Xeon 500 800 Celeron 266 600 Pentium 4 1400 2000

32 16 16 32 32 32 32 32 32 32 32 32 32 32 32

0 256-512 256-512 512 512 512 512 512 256 512 256 0 128 256 512

Disco duro como cach: Se emplea al disco duro como cach a dispositivos an ms lentos (unidades CD-ROM). Estos sistemas de cach suelen estar gobernados mediante software, que se suele integrar en el sistema operativo. La cach de disco almacena direcciones concretas de sectores, almacena una copia del directorio y en algunos casos almacena porciones o extensiones del programa o programas en ejecucin.

Los navegadores Web utilizan el disco duro como cach, al solicitar una pgina Web, el navegador acude a Internet y comprueba la fecha de la misma. Si la pgina no ha sido modificada, se toma directamente del disco duro, con lo que la carga es muy rpida. En caso contrario se descarga desde Internet y se actualiza la cach, con un cierto tiempo de espera. En el caso de los navegadores Web, el uso del disco duro es ms que suficiente, ya que es extremadamente ms rpido que el acceso a Internet.

Tipos de cach Los diferentes tipos de cach se organizan por niveles, formando una jerarqua. En general se cumple que, a mayor cercana a la CPU, se presenta mayor velocidad de acceso y menor capacidad de almacenamiento.

Nivel 1 (L1): Conocido como cach interno, es el nivel ms cercano a la CPU (est en el mismo ncleo) con lo que el acceso se produce a la velocidad de trabajo del procesador (la mxima velocidad). Presenta un tamao muy reducido, en Intel (4 a 32 KB), en VIA/Cyrix (1 a 64 KB), en AMD (8 a 128 KB). Cach interno Es una innovacin relativamente reciente [3]; en realidad son dos, cada una con una misin especfica: Una para datos y otra para instrucciones. Estn incluidas en el procesador junto con su circuitera de control, lo que significa tres cosas: comparativamente es muy cara; extremadamente rpida, y limitada en tamao (en cada una de las cachs internas, los 386 tenan 8 KB; el 486 DX4 16 KB, y los primeros Pentium 8 KB). Como puede suponerse, su velocidad de acceso es comparable a la de los registros, es decir, centenares de veces ms rpida que la RAM. Nivel 2 (L2): Conocido como cach externo, inicialmente se instalaba en la placa base (en el exterior de la CPU). A partir de los procesadores Pentium 4 vienen incorporado en el procesador (no precisamente en el ncleo). El nivel L2 apareci con el procesador Pentium Pro, es una memoria ms lenta que L1, pero de mayor capacidad. Los tamaos tpicos de la memoria cach L2 oscilan en la actualidad entre 256 KB y 4 MB. Cach externa Es ms antigua que la interna, dado que hasta fecha "relativamente" reciente estas ltimas eran impracticables. Es una memoria de acceso rpido incluida en la placa base, que dispone de su propio bus y controlador independiente que intercepta las llamadas a memoria antes que sean enviadas a la RAM ( H2.2 Buses locales). La cach externa tpica es un banco SRAM ("Static Random Access Memory") de entre 128 y 256 KB. Esta memoria es considerablemente ms rpida que la DRAM ("Dynamic Random Access Memory") convencional, aunque tambin mucho ms cara [5] (tenga en cuenta que un aumento de tamao sobre los valores anteriores no incrementa proporcionalmente la eficacia de la memoria cach). Actualmente (2004) la tendencia es incluir esta cach en el procesador. Los tamaos tpicos oscilan entre 256 KB y 1 MB. Nota: En 1997, con la introduccin del procesador Pentium II, Intel abandon el denominado zcalo 7 utilizado hasta entonces en sus procesadores, en favor del denominado Slot-1. La razn argida era precisamente la inclusin de la cach L2 en la cpsula del procesador. Nivel 3 (L3): Se encuentra en algunas placas base, procesadores y tarjetas de interfaz. El procesador de Intel Itanium trae contenida en su cartucho al nivel L3 que soporta un tamao hasta de 4 MB, y el Itanium 2 tolera hasta 6 MB de cach L3. Nivel 4 (L4): Se encuentra ubicado en los perifricos y en algunos procesadores como el Itanium.

Cach de memoria: De acuerdo a la ubicacin fsica que tienen en el sistema se denominan o identifican por niveles: Cach de memoria RAM: La memoria principal RAM suele hacer de cach para los dispositivos de almacenamiento y otros tipos de perifricos. Cach en disco duro: Utilizadas por los navegadores Web y algunos perifricos. La bsqueda de informacin comienza por la cach L1, y se va subiendo nivel a nivel en caso de no encontrar lo que se busca en el nivel actual. Cuantas ms capas se asciende, mayor es el tiempo de espera. Pero, a mayor cercana a la CPU, la probabilidad de encontrar lo que se busca es mayor. Esta forma de trabajo resulta una excelente relacin de compromiso entre diversos factores, y consigue mejorar el rendimiento del ordenador de forma notable. Adems de las anteriores, que son de propsito general, existe una cach de funcionalidad especfica que se aloja en memoria RAM estndar. Es la cach de disco (nos hemos referido a ella en la introduccin de este epgrafe), destinada a contener los datos de disco que probablemente sean necesitados en un futuro prximo y los que deben ser escritos. Si la informacin requerida est en chach, se ahorra un acceso a disco, lo que es centenares de veces ms rpido (recuerde que los tiempos de acceso a RAM se miden en nanosegundos y los de disco en milisegundos E1.7.1 Unidades de medida). Nota: Existe un mecanismo parecido al de cach de disco que aqu se describe pero que funciona en sentido inverso. Es decir, aloja en disco los datos que no pueden ser almacenados en la memoria RAM. Es el sistema de memoria virtual, al que nos referiremos al tratar de la memoria. El funcionamiento de la cach de disco se basa en dos esquemas de operacin. La lectura adelantada ("Read-ahead") y la escritura retrasada ("Write-behind"). La primera consiste en anticipar lo que se necesitar de forma inmediata y traerlo a la cach. Por su parte, la escritura retrasada consiste en mantener los datos en cach hasta que se producen momentos de desocupacin del sistema de disco. En este caso la cach acta como memoria tampn o "buffer" intermedio, y no se obliga al subsistema a realizar fsicamente ninguna escritura, con lo que las cabezas quedan libres para nuevas lecturas. Puesto que los cachs de disco de escritura retrasada mantienen los datos en memoria voltil despus que "supuestamente" se han escrito en el dispositivo, una cada accidental del sistema, por fallo de energa o apagado intempestivo, puede producir prdidas de los datos alojados en la cach en ese momento (es esta una de las razones por las que los sistemas Windows y Linux exigen un proceso especial de apagado, que a veces tarda unos segundos, en los que observamos una intensa actividad del sistema de disco). Nota: La mayora de los lenguajes disponen de mtodos para forzar una escritura "real" de los datos vaciando la cach de disco; suelen ser sentencias del tipo commit, flush etc. Es una prctica de seguridad aconsejable, y seal de programacin cuidadosa, realizar un vaciado de

"buffers" despus de cada transaccin importante siempre que las circunstancias lo permitan Cach de disco en MS DOS y Windows La cache de los sistemas MS DOS y de los primeros sistemas Windows se denominaba SmartDrive. Por su parte, los nuevos Sistemas de 32 bits disponen de un controlador virtual denominado VCACHE que utiliza un esquema de funcionamiento de lectura adelantada y escritura atrasada para proporcionar servicios de cache a las mquinas virtuales (E0.2).

VCACHE tiene la ventaja cachear ficheros en discos de red, y de permitir cambiar en tiempo de ejecucin la cantidad de memoria destinada a este menester. Cuando la actividad del disco es elevada pero la ocupacin de memoria es baja, VCACHE incrementa su tamao para realizar la mayor cantidad de operacin en RAM, evitando de este modo accesos a disco. Por ejemplo, si la aplicacin abre un fichero para lectura/escritura, es posible que VCACHE vuelque la totalidad del fichero a memoria; posteriormente, quizs cuando se cierre el fichero, la imagen de memoria sea volcada de nuevo al disco. Si por el contrario la actividad de disco es pequea y la ocupacin de memoria es alta, VCACHE disminuye su propio tamao con objeto de aumentar la RAM disponible para las aplicaciones. Vaciado de buffers en C++ En la terminologa C++ los flujos que son cacheados se denominan "buffered". A este respecto, los compiladores C/C++ disponen de su propio sistema de cach para ficheros de disco. Esta cach se denomina de ejecucin (runtime), para distinguirla de la cach del Sistema. As mismo, disponen de recursos en la Librera Estndar para forzar su vaciado en caso necesario; para esto se recurre a la funciones fflush (para ficheros abiertos con fopen) y flush (para los flujos de salida, "ostreams"). Sin embargo, no olvide que el vaciado de la cach del compilador se realiza sobre la del Sistema, que est por debajo (recuerde que el Software tiene una estructura de capas E1.7w1), y que el SO decide por su cuenta cuando es el momento oportuno para realizar fsicamente la escritura de los discos. Esto significa que una seguridad total solo se alcanza forzando la escritura de la cach del Sistema, y esto naturalmente depende de la plataforma utilizada. Nota: Adems de las posibilidades ofrecidas en la Librera Estndar, el compilador MS Visual C++ para Windows ofrece la funcin _flushall, que fuerza el vaciado de la cach de ejecucin de todos los ficheros abiertos. Tambin dispone de la librera COMMODE.OBJ, que enlazada con la aplicacin, fuerza que las llamadas a fflush y a _flushall escriban directamente los buffers al disco en vez de a la cach del Sistema.

Rendimiento de la cach El funcionamiento de la cach de lectura se parece al de un adivino; debe anticipar lo que ocurrir en el futuro. Si el dispositivo que est siendo cacheado encuentra los datos en la cach, habr un xito ("hit"), en caso contrario, un fracaso ("miss"). Los sistemas de cach actuales son capaces de proporcionar una tasa de xitos superior al 90%. Como puede figurarse el lector, construir un mecanismo de cach no es una tarea balad. Se requieren esquemas de funcionamiento que atiendan de forma simultanea y balanceada diversos factores:

Discriminar que informacin debe ser almacenada y cual descartada. Decidir la organizacin interna de este almacenamiento. Manejar las peticiones de lectura. Esto exige disponer de un mecanismo de intercepcin de las peticiones del dispositivo que est siendo cacheado.

Manejar las peticiones de escritura. Interceptar las peticiones de escritura del dispositivo a cachear.

Cach oportunista
Existe un tipo especial que podramos considerar "de aplicacin", denominada cach oportunista ("Opportunistic cache"). Est relacionada con los problemas de bloqueos de ficheros en entornos multiusuario en los que distintas aplicaciones pueden acceder a los mismos datos.

En estos casos, los Sistemas Operativos disponen de mecanismos para que un usuario (programa de aplicacin) obtenga el bloqueo de todo un fichero o parte de l. La teora es que mientras se mantenga el bloqueo, ningn otro usuario puede modificar el fichero (tal vez si leerlo), y que una vez finalizadas las modificaciones, el usuario desbloquea el fichero para que otros puedan utilizarlo. Sin embargo, en determinadas aplicaciones de red, y con objeto de aumentar el rendimiento, se utiliza un sistema mixto denominado bloqueo oportunista oplock ("Opportunistic locking"), en el que el usuario comunica al Sistema que utilizar esta modalidad [ Para ello, obtiene una copia de la totalidad del fichero, que almacena un una cach local oportunista. De esta forma, las operaciones son ms rpidas que si tiene que realizarse a travs de la red las peticiones de distintos trozos, junto con las correspondientes solicitudes de bloqueo/desbloqueo. Finalmente, cuando el usuario ha finalizado las operaciones con el fichero, devuelve al servidor una copia actualizada. El problema se presenta cuando, en el intermedio, otro usuario solicita utilizar el mismo fichero. La incidencia es especialmente frecuente cuando el fichero a manejar es muy grande.

Porque entonces, incluso para una pequea modificacin, el primer usuario puede demorarse bastante en devolver la versin modificada al servidor. La solucin adoptada para evitar demoras excesivas, consiste en que, al recibir la peticin del segundo usuario, el Sistema enva al primero una orden de interrumpir el oplock y devolver el fichero tal como est en ese momento para que el segundo usuario pueda utilizarlo. El Sistema de Archivo de un Sistema Operativo es precisamente una forma de controlar, asignar, desasignar y acceder clusters para alojar ficheros en disco."Cluster" tiene tambin otra acepcin en ingls: Designar un almacenamiento redundante de datos en sistemas distintos. Hasta hace pocos aos, en que la tecnologa de discos ha producido unidades extremadamente silenciosas, a un odo experimentado le bastaba escuchar la "msica" de los servos para saber si el sistema de "cache" de disco estaba instalado o no. Introducida con el Intel 386 SLC que tena una cache interna para instrucciones y datos, mientras que en los Pentinum instrucciones y datos disponen de cachs separadas. El motivo es la propia construccin de la memoria esttica, constituida por conjuntos de seis transistores por cada bit almacenado, lo que las hace mucho ms voluminosas (y caras) que las memorias dinmicas de capacidad comparable; estas ltimas estn consituidas por un conjunto de 1 transistor y un condensador por cada bit. La descarga del condensador es lo que hace que requieran una actualizacin (refresco) cada 15 &s (microsegundos) aproximadamente, lo que aade una dificultad adicional, pues durante la actualizacin el sistema queda paralizado (en el bus hay una lnea especfica, DACK-0, para indicar que se est produciendo este refresco de la memoria dinmica H2). Actualmente (2001), las SRAM tienen tiempos de acceso del orden de 2 a 15 ns (nanosegundos), mientras que en las DRAM es del orden de 60 ns. Por ejemplo, Samba el popular sistema Linux para compartir recursos sobre redes TCP/IP, puede utilizar este tipo de cach oportunista con sus clientes Niveles de cach Estructura y funcionamiento interno de una cach de memoria La memoria cach est estructurado por celdas, donde cada celda almacena un byte. La entidad bsica de almacenamiento la conforman las filas, llamados tambin lneas de cach. Por ejemplo, una cach L2 de 512 KB se distribuye en 16.384 filas (16 KB) y 32 columnas (32 bytes). Cuando se copia o se escribe informacin de la RAM, por cada movimiento siempre cubre una lnea de cach (en la cach anterior, siempre se mueven 32 bytes). La memoria cach tiene incorporado, un espacio de almacenamiento llamado Tag RAM, que indica a que porcin de la RAM se halla asociada cada lnea de cach, es decir permite traducir una direccin de RAM en una lnea de cach concreta.

Para que la RAM se reparte entre las lneas de cach disponibles, existen 3 tcnicas: Esta tcnica permite una bsqueda muy rpida, ya que cada posicin de RAM slo puede estar en una determinada lnea. Sin embargo, la probabilidad de encontrar la informacin buscada es mnima. Cach de mapeo directo: La memoria RAM se divide en porciones de igual tamao, de acuerdo a la cantidad de lneas de cach existan. Cada lnea de cach es un recurso a compartir por las direcciones de memoria de una porcin diferente. Por ejemplo, si se dispone de una RAM de 64 MB y la cach de 512 KB, cada lnea podr almacenar 32 de las 4.096 direcciones que contiene la porcin de RAM asociada (64 MB/ 16.384 lneas = 4.096 bytes / lnea). Cach completamente asociativa: Cada lnea de cach se puede llenar con cualquier grupo de posiciones de la memoria RAM. En este caso, el porcentaje de acierto es mximo. En cambio, el tiempo de acceso es muy elevado, puesto que una posicin de RAM puede estar en cualquier lnea de cach (esto es lento, incluso empleando algoritmos de bsqueda avanzados). Cach asociativa por conjuntos de N lneas: La cach se divide en conjuntos de N lneas, a cada conjunto se le asocia un grupo de posiciones de RAM. Dentro del conjunto asignado, una posicin de RAM puede ir a parar a cualquiera de las N lneas que lo forman, es decir dentro de cada conjunto la cach es totalmente asociativa. Esta situacin es la ms equilibrada, puesto que se trata de un compromiso entre las tcnicas anteriores. Si se hace N=1, se tiene una cach. De mapeo directo. Si N es igual al nmero de lneas de la cach, se tiene una cach completamente asociativa. Si se escoge un valor de N apropiado, se alcanza la solucin ptima.
Normalmente, la cach L2 es de mapeo directo, mientras que la cach L1 es asociativa por conjuntos de N lneas.

El procesador genera la direccin X, de la palabra a leer. Si la palabra est en la cach, es enviada al procesador. Caso contrario, el bloque que contiene a la palabra (en memoria principal) se carga en cach y la palabra se enva al procesador. En el diagrama se ilustra esta operacin:

Lectura de la cach El proceso de escritura en cach es se da directamente. Para trasladar informacin de la cach a la RAM, hay dos polticas de escritura fundamentales: Write-back: La informacin se escribe directamente en la cach, sin actualizar la RAM. Cuando una posicin de la cach debe ser utilizada por otra posicin de RAM diferente, su contenido actual se traslada a la RAM, asegurando la coherencia entre ambas memorias. Write-througth: Cada vez que se escribe en una lnea de cach, se actualiza la RAM. Esta tcnica conlleva un acceso continuo a la RAM, por lo que el rendimiento es pobre. QUE ES LA MEMORIA CACHE EN UN PROCESADOR. Una memoria cach es una memoria en la que se almacenas una serie de datos para su rpido acceso. Existen muchas memorias cach (de disco, de sistema, incluso de datos, como es el caso de la cach de Google), pero en este tutorial nos vamos a centrar en la cach de los procesadores. Bsicamente, la memoria cach de un procesador es un tipo de memoria voltil (del tipo RAM), pero de una gran velocidad. En la actualidad esta memoria est integrada en el procesador, y su cometido es almacenar una serie de instrucciones y datos a los que el procesador accede continuamente, con la finalidad de que estos accesos sean instantneos. Estas instrucciones y datos son aquellas a las que el procesador necesita estar accediendo de forma continua, por lo que para el rendimiento del procesador es imprescindible que este acceso sea lo ms rpido y fluido posible. Hay tres tipos diferentes de memoria cach para procesadores: Cach de 1er nivel (L1): Esta cach est integrada en el ncleo del procesador, trabajando a la misma velocidad que este. La cantidad de memoria cach L1 vara de un procesador a otro, estando normalmente entra los 64KB y los 256KB. Esta memoria suele a su vez estar dividida en dos partes dedicadas, una para instrucciones y otra para datos. Cach de 2 nivel (L2): Integrada tambin en el procesador, aunque no directamente en el ncleo de este, tiene las mismas ventajas que la cach L1, aunque es algo ms lenta que esta. La cach L2 suele ser mayor que la cach L1, pudiendo llegar a superar los 2MB. A diferencia de la cach L1, esta no est dividida, y su utilizacin est ms encaminada a programas que al sistema. Cach de 3er nivel (L3): Es un tipo de memoria cach ms lenta que la L2, muy poco utilizada en la actualidad. En un principio esta cach estaba incorporada a la placa base, no al procesador, y su velocidad de acceso era bastante ms lenta que una cach de nivel 2 o 1, ya que si bien sigue siendo una memoria de una gran rapidez (muy superior a la RAM, y mucho ms en la poca en la que se utilizaba), depende de la comunicacin entre el procesador y la placa base. Para hacernos una idea ms precisa de esto, imaginemos en un extremo el procesador y en el otro la memoria RAM. Pues bien, entre ambos se encuentra la memoria cach, ms rpida

Cuanto ms cerca se encuentre del ncleo del procesador (L1).

Las memorias cach son extremadamente rpidas (su velocidad es unas 5 veces superior a la de una RAM de las ms rpidas), con la ventaja aadida de no tener latencia, por lo que su acceso no tiene ninguna demora... pero es un tipo de memoria muy cara. Esto, unido a su integracin en el procesador (ya sea directamente en el ncleo o no) limita bastante el tamao, por un lado por lo que encarece al procesador y por otro por el espacio disponible. En cuanto a la utilizacin de la cach L2 en procesadores multinucleares, existen dos tipos diferentes de tecnologas a aplicar. Por un lado est la habitualmente utilizada por Intel, que consiste en que el total de la cach L2 est accesible para ambos ncleos y por otro est la utilizada por AMD, en la que cada ncleo tiene su propia cach L2 dedicada solo para ese ncleo. La cach L2 apareci por primera vez en los Intel Pentium Pro, siendo incorporada a continuacin por los Intel Pentium II, aunque en ese caso no en el encapsulado del procesador, sino externamente (aunque dentro del procesador) Dnde ubicar un bloque en el cache? Cache de proyeccin directa Cada bloque de datos en memoria puede ubicarse en un y slo un bloque del cache. Ubicacin normalmente es: nmero del bloque mdulo nmero de bloques en el cache ,

Ventajas y desventajas - Econmico, acceso rpido (utilizado en caches internas) . - Mayor razn de desaciertos por competencia por bloque especfico. Cache completamente asociativo Cualquier bloque de memoria puede ubicarse en cualquier bloque del cache. Nmero completo del bloque es el tag.

Ventajas y desventajas - Ms caro (muchos comparadores). - Acceso ms lento, dato no disponible hasta saber si acceso fue acierto o desacierto (etapa de comparacin y multiplexin). - Menor tasa de desaciertos por competencia por bloque Cache asociativo por conjuntos Es un esquema intermedio. Cada bloque memoria puede ser ubicado en uno de N bloques del cache (conjuntos de N bloques) . Cada bloque de memoria tiene asociado un conjunto especfico. Ventajas y desventajas

Ms econmico que cache completamente asociativo, pero ms caro que cache Directo Dato disponible despus de etapa de comparacin y multiplexin

Cmo encontrar un bloque en el cache? Cache de proyeccin directa


Acceso directo al bloque: cada bloque de memoria puede encontrarse slo en un bloque del cache. Bloque se encuentra a travs de indexacin (usando el nmero del bloque como ndice) Se requiere comparar los tags para saber si el bloque es realmente el que se busca Bloque est disponible antes de terminar la comparacin

Cache completamente asociativo


Bsqueda completa: el bloque puede estar en cualquier bloque del cache Comparar el tag del bloque con todos los tags de los bloques del cache Multiplexor selecciona bloque cuyo tag coincide, si existe uno Dato est disponible despus de las comparaciones.

Cache asociativo por conjuntos


Indexacin parcial: encontrar el conjunto del bloque Bsqueda asociativa parcial: encontrar el bloque dentro del conjunto Comparar tags de bloques dentro del conjunto Multiplexor selecciona bloque dentro del conjunto Bloque disponible despus de la seleccin

Que bloque reemplazar en un desacierto Reemplazo aleatorio

Cualquier bloque

Menos recientemente usado


Mejor desempeo que aleatorio (aprox. 10%) Ms complejo de implementar (se aproxima)

Como manejar la escritura en el cache Escritura sncrona


Bloque se escribe en cache y en memoria principal Se utiliza buffer de escritura para mejorar desempeo (write buffer) No necesita ser escrito en memoria principal al ser reemplazado Escritura puede realizarse en paralelo con verificacin de acierto/desacierto

Escritura asncrona

Se escribe solamente en el cache Bloque se escribe en memoria principal cuando es reemplazado Necesita un bit adicional para indicar que el bloque fue modificado (dirty bit) Requiere verificar acierto/desacierto antes de escribir en cache.

Causas de desaciertos Desaciertos compulsorios


Primer acceso al bloque Posteriores accesos no provocan desacierto

Desaciertos de capacidad

Tamao del cache insuficiente Aumentar tamao del cache

Desaciertos de conflicto

Bloques de memoria compiten por bloques en cache Aumentar grado de asociatividad del cache

Sistemas de memoria para soporte de cache Memoria de una palabra de ancho


Requiere varios accesos a memoria Memoria requiere ser muy rpida Solucin cara

Memoria de varias palabra de ancho

Ancho de palabra mayor (ej. del tamao del bloque) Bus ancho permite transferir bloque completo al cache en un acceso Costo alto

Memorias entrelazadas (interleaved memory)


Memoria ancha (ej. del tamao del bloque) Bus de ancho normal Lectura simultnea a las memorias Acceso segmentado para la transferencia