Memoria Caché

Memoria Caché
Información sobre la plantilla
Caché.jpg

La memoria caché es un bloque de memoria muy rápida (típicamente una memoria RAM estática de muy alta velocidad) interpuesta entre el microprocesador y la memoria principal del sistema. El objetivo de esta memoria es lograr que la memoria del microprocesador trabaje a su velocidad de procesamiento.

Generalmente el procesador pide información más rápidamente de lo que la memoria principal del sistema es capaz de brindarle, por esta razón este introduce estados de espera (wait state), esencialmente el procesador no hace nada hasta que no recibe la información solicitada. Esto afecta grandemente las prestaciones del sistema. Cuando este corre sin necesidad de estados de espera se dice que el sistema esta en operación de cero estados de espera (0 WS) y corre mucho más rápido.

La velocidad de la memoria

Como hemos mencionado, se mide en nanosegundos (ns). Los chips de memoria DRAM más veloces, disponibles en 2010, son de 70 o 60 ns. Para que un procesador opere en el modo de 0 WS sobre una tarjeta madre con frecuencia de reloj de 33 MHz (procesadores 486DX/33, 486DX2/66, 486 DX4/100), el sistema de memoria debe responder a una velocidad de 30 ns; mientras que sobre tarjetas madres a 66 MHz (procesadores Pentium 100/133/166) la memoria debería operar a 15 ns, lo cual es equivalente a que el sistema debería trabajar con memoria SRAM que es más rápida que la DRAM (porque no requiere refrescamiento) pero cuesta cerca de 10 veces más cara. Por esta razón no se utiliza como almacenamiento primario de las PC (computadora portátil).

Aquí es donde entra a trabajar la memoria caché, que no es más que un bloque de memoria muy rápida (típicamente RAM estática de muy alta velocidad, con tiempos de acceso de 15 a 35 ns) interpuesta entre el microprocesador y la memoria principal del sistema. El objetivo de esta memoria es lograr que el microprocesador trabaje con la memoria a su velocidad de procesamiento. Lo cual permite que el sistema en general aumente sus prestaciones ya que no tiene que introducir estados de espera.

La caché no es sino un tipo de memoria de la computadora; por tanto, en ella se guardarán datos que la computadora necesita para trabajar. ¿Pero no era eso la RAM?, preguntará usted. Bueno, en parte sí. A decir verdad, la memoria principal de la computadora (la RAM, los famosos 8, 16, 32 0 64 "megas") y la memoria caché son básicamente iguales en muchos aspectos; la diferencia está en el uso que se le da a la caché. Debido a la gran velocidad alcanzada por los microprocesadores desde el 386, la RAM de la computadora no es lo suficientemente rápida para almacenar y transmitir los datos que el microprocesador (el "micro" en adelante) necesita, por lo que tendría que esperar a que la memoria estuviera disponible y el trabajo se ralentizaría.

Para evitarlo, se usa una memoria muy rápida, estratégicamente situada entre el micro y la RAM: la memoria caché.

Esta es la baza principal de la memoria caché: es muy rápida. ¿Cuánto es "muy rápida"? Bien, unas 5 o 6 veces más que la RAM. Esto la encarece bastante, claro está, y ése es uno de los motivos de que su capacidad sea mucho menor que el de la RAM: un máximo en torno a 512 kB (512 kilobytes), es decir, medio "mega", frente a 16 o 32 megas de RAM. Además, este precio elevado la hace candidata a falsificaciones y timos.

Pero la caché no sólo es rápida; además, se usa con una finalidad específica. Cuando una computadora trabaja, el micro opera en ocasiones con un número reducido de datos, pero que tiene que traer y llevar a la memoria en cada operación. Si situamos en medio del camino de los datos una memoria intermedia que almacene los datos más usados, los que casi seguro necesitará el micro en la próxima operación que realice, se ahorrará mucho tiempo del tránsito y acceso a la lenta Memoria RAM; esta es la segunda utilidad de la caché.

La caché interna Nivel 1 y Nivel 2

La caché a la que nos hemos referido hasta ahora es la llamada "caché externa" o de segundo nivel (L2). Existe otra, cuyo principio básico es el mismo, pero que está incluida en el interior del micro; de ahí lo de interna, o de primer nivel (L1).

Esta caché funciona como lo externa, sólo que está más cerca del micro, es más rápida y más cara, además de complicar el diseño del micro por lo que su tamaño se mide en pocas decenas de kilobytes. Se incorporó por primera vez en los micros 486, y por aquel entonces era de 8 kB (aunque algunos 486 de Cyrix tenían sólo 1 kB). Hoy en día se utilizan 32 o 64 kB, aunque seguro que pronto alguien superará esta cifra. La importancia de esta caché es fundamental; por ejemplo, los Pentium MMX son más rápidos que los Pentium normales en aplicaciones no optimizadas para MMX, gracias a tener el doble de caché interna. A decir verdad, la eficacia de la "optimización MMX" de aplicaciones como Microsoft Office, está por ver... Todos los procesadores Intel desde el surgimiento del 486 incorporan en su interior una pequeña cantidad de este tipo de memoria (entre 8 y 16 kB). Cuando la memoria caché está integrada al procesador se le conoce como caché interna o de primer nivel (L1 o level one). En la tabla siguiente se muestran algunas de las capacidades típicas de caché de primer nivel en los procesadores Intel.

Existe también una caché externa o caché de segundo nivel (level two, L2) que está sobre la tarjeta madre y es administrada por un controlador de memoria caché. Capacidades típicas de esta memoria pueden ser: 128 kB, 256 kB o 512 kB y en un futuro alcanzar los 1024 kB. En los sistemas Pentium actuales es 512 kB la cantidad de memoria caché externa más común.

Normalmente la Memoria Caché, tanto la Interna como la Externa, pueden habilitarse o no. Esto normalmente se configura en el SETUP del BIOS. Por ejemplo en el BIOS AWARD en la sección BIOS FEATURES SETUP aparecen las siguientes opciones: CPU internal caché: enable/disable external caché: enable/disable. También hay opciones en el BIOS CHIPSET SETUP que permiten que las direcciones correspondientes al BIOS del sistema (F000-FFFF H) y al BIOS de Video (C000-C7FF H) se pasen por la memoria caché, logrando así un aumento adicional de la velocidad de acceso a estas áreas de memoria. System BIOS cacheable enable/disable video BIOS cacheable enable/disable.

El costo es la mayor desventaja que tiene utilizar gran cantidad de memoria caché. Esta puede influir grandemente en el costo promedio del sistema. Por esta razón la mayoría de las tarjetas madres 486 y las primeras que soportaban procesadores Pentium permiten escalar la memoria caché a la medida del usuario final.

Métodos de actualización de la memoria principal

Es necesario que el contenido de la memoria principal y su bloque correspondiente en la memoria caché sean iguales en su contenido. Para lograr esto se han implementado dos métodos de actualización de la memoria principal Write Through (escritura a través): en el que se escriben los datos en Memoria RAM y en memoria caché simultáneamente. Write Back (escritura atrasada): en el cual se actualizan solamente los datos en la memoria caché, y solo se escribe en la RAM cuando el bloque se va usar para mapear otro pedazo de la RAM.

Este método permite aún más rapidez, puesto que solo se escribe en la RAM en el momento que es necesario.

En algunos procesadores i486 la caché interna y externa podía trabajar con cualquiera de estos métodos, Nuevamente era en el SETUP del BIOSdonde se seleccionaba el método que se iba a emplear. Todos los procesadores Pentium y tarjetas madres que los soportan implementan el método write back.

Organización lógica de la memoria caché. La organización lógica de una caché implica como se organiza la caché, como se direccionan y colocan los datos dentro de ella.

Para entender esta organización debemos aclarar primero que la unidad de transferencia entre memoria principal y memoria caché de denomina línea o bloque. Un bloque está formado por un conjunto de palabras contiguas. Debe contemplarse a la memoria caché como un conjunto de bloques físicos capaces de contener bloques de la memoria principal.

La colocación del bloque en memoria caché y la cantidad de bloques que hay que examinar para ver si es fallo o acierto, dependen de la correspondencia que se ha escogido en su diseño. Un determinado bloque de memoria caché se corresponde con determinados bloques de memoria principal; de ahí que en caso de fallo y según la correspondencia escogidas, solo sea necesario examinar una pequeña parte de la caché.

Existen tres tipos fundamentales de correspondencia

Correspondencia directa: solo debe examinarse un bloque. Correspondencia asociativa por conjuntos: se examinan un determinado número de bloques. Correspondencia completamente asociativa: se examinan todos los bloques de la caché.

En la memoria caché por cada bloque residente se guardan, por tanto, dos informaciones:

  • El contenido de las palabras consecutivas que constituyen el bloque.
  • La marca (tag) del bloque. Es un número variable de bits dependiendo de la correspondencia empleada.

Selección de la velocidad de la Memoria caché.

Utilice memorias SRAM de 20 ns para frecuencias en el bus de 50/60 Mhz (Pentium 75/90/100/120/150) y SRAM de 15 ns para frecuencias de 66 MHz (Pentium 100/133/166/200) PBSRAM (Pipelined Burst SRAM).

Este es un tipo de memoria caché desarrollada para trabajar con los procesadores Pentium. En estos el modo de acceso a la memoria en ráfaga (burst) significa la lectura continua de cuatro QWord (una Quad-Word es equivalente a 4 × 16 bits = 64 bits) y únicamente es necesario la decodificación por la SRAM de la primera dirección.

La PBSRAM automáticamente envía las restantes tres QWords hacia el CPU de acuerdo a una secuencia predefinida. El tiempo normal de decodificación de la dirección para la SRAM es de 2 a 3 relojes. Esto hace que el atiempamiento de lectura de datos del CPU para cuatro Qwords sea al menos 3-2-2-2 con un total de 9 relojes si se usan memorias SRAM asincrónicas tradicionales. Sin embargo, con PBSRAM no es necesario decodificar las direcciones para las restantes tres QWords. Por tanto el atiempamiento de lectura de datos puede ser 3-1-1-1, lo cual es equivalente a 6 relojes y es mucho más rápido que las SRAM asincrónicas.

Las velocidades cada vez más rápidas de los CPU actuales requieren de tarjetas madres con un complejo diseño de atiempamiento. Cada línea de circuito impreso y la demora de los componentes debe tomarse en consideración. El diseño del SLOT de expansión de la caché causaría demoras de 2 a 3 ns en el atiempamiento de la PBSRAM y la longitud del camino desde el modulo de caché a través de los contactos metálicos podría demorar este atiempamiento 1 o 2 ns más. Esto podría resultar en un sistema inestable una vez que el módulo y el SLOT se calienten.

Esta es la razón por la que la mayoría de las tarjetas madres actuales que soportan este tipo de memoria caché la tienen ya soldadas y generalmente no es posible hacer ninguna actualización de memoria caché. Es importante tener en cuenta que 512 kB de PBSRAM brindan cerca de 3% más de prestaciones que 256 kB y la diferencia de precio es mínima, por esta razón es conveniente comprar tarjetas madres que soporten 512 kB en vez de 256 kB.

Hace algún tiempo, las caché aportaban un gran rendimiento al sistema dado que los principios que seguían eran los adecuados: accesos probables dentro de un mismo rango de memoria, aplicaciones de tamaño moderado, etc. Hoy en día, ha surgido el gran enemigo del caché: la multitarea. Es decir, múltiples procesos ejecutándose simultáneamente, cada uno (de los cuales tiene su porción de código, y datos en áreas no adyacentes. La solución sólo puede tener dos vertientes: un tamaño de caché mayor (mínimo 512 K) y mucho mejor, una memoria principal más rápida.

El tamaño de la caché

Leído lo anterior, usted pensará: pues cuanto más grande, mejor. Cierto, pero no; o más bien, casi siempre sí. Aunque la caché sea de mayor velocidad que la RAM, si usamos una caché muy grande, el micro tardará un tiempo apreciable en encontrar el dato que necesita. Esto no sería muy importante si el dato estuviera allí, pero ¿y si no está? Entonces habrá perdido el tiempo, y tendrá que sumar ese tiempo perdido a lo que tarde en encontrarlo en la RAM. Por tanto, la caché actúa como un resumen, una "chuleta" de los datos de la RAM, y todos sabemos que un resumen de 500 páginas no resulta nada útil. Se puede afirmar que, para usos normales, a partir de 1 MB (1024 kB) la caché resulta ineficaz, e incluso pudiera llegar a ralentizar el funcionamiento de la computadora.

El tamaño idóneo depende del de la RAM, y viene recogido en la siguiente tabla:

Se debe hacer notar que muchos "chipsets" para Pentium, como los conocidos Intel "Tritón" VX o TX, no permiten cachear más de 64 MB de RAM; es decir, que a partir de esta cifra, es como si no existiera caché en absoluto (¡0 kB!).

Así que si necesita instalar más de 64 MB en una placa para Pentium, busque una placa que permita cachear más de esa cifra (como algunas ―no todas― las que tienen chipsets "Tritón" HX.

La caché de los Pentium II y Mendocino

Puede que haya oido hablar de que los Pentium II (y su antecesor el extinto Pentium Pro) tienen 512 kB de caché interna; esto es inexacto, cuando no una "confusión interesada" por parte de Intel y los vendedores. Los Pentium II tienen 64 kB de caché interna, y 512 kB de caché dentro del cartucho SEC pero externa al encapsulado del microchip.

Este contrasentido se explica si se ve un Pentium II "destripado" como éste:

Dentro de la gran carcasa negra encontramos una placa de circuito en la que va soldado el micro en sí (en el centro de la imagen), junto con varios chips que forman la caché, externa a lo que es propiamente el micro. Sin embargo, esta caché funciona a una frecuencia que es la mitad de la del micro (es decir, a 116, 133 MHz o más), y no a la de la placa base como la caché externa clásica (de 50 a 66 MHz en los Pentium o 100 MHz en los AMD K6-2).

Los que casi pueden presumir de tener una gran caché interna son los Celeron Mendocino (no los Celeron normales, que carecen de caché L2 en absoluto). Estos micros tienen sus 128 kB de caché L2 integrada en el propio encapsulado del micro y la hacen funcionar a la misma velocidad que éste, de forma que no llega a ser tan rápida como la caché L1 pero sí lo bastante como para permitirles competir con los Pentium II pese a tener sólo la cuarta parte de caché.

Digamos, en fin, que los Pentium II y los Celeron Mendocino tienen una caché interna y una semi-externa, lo cual no es poco mérito en absoluto; pero las cosas son como son, mal que le pese a los magos de la publicidad.

Sobre cachés falsas y tramposos

Como ya dijimos, la caché es un bien preciado. Por ello, la natural codicia de ciertos personajes les ha llevado a fabricar placas base con chips de caché de vulgar plástico sólido, método que puede enriquecer la placa y reducir el rendimiento de la computadora de un 5 a un 10%.

Este fenómeno tuvo su auge con las placas base para 486, aunque no se puede asegurar que esté totalmente erradicado. Desgraciadamente, hay pocos métodos para saber si un chip de caché es bueno o falso, y casi ninguno se basa en la observación directa (como no sea por radiografía). Los medios principales para detectar el fraude son: observar chips sumamente burdos y mal rematados, con bordes de plástico y serigrafiados de baja calidad (suponiendo que sepa identificar el o los chips de caché, lo cual puede ser difícil); utilizar alguna herramienta de diagnóstico por software que detecte la presencia o ausencia de caché.

Sobre estos programas de diagnóstico, cabe comentar que no son infalibles, por lo que si alguno no detecta la caché conviene probar con otro (pero conque uno la detecte, es casi seguro que es auténtica). Además, pueden fallar con ciertos tipos muy rápidos y modernos de caché, por lo que no suele servir el mismo programa para la placa de un 486 y la de un Pentium. Algunos de estos programas (para placas 486, que suelen ser las más falsificadas) se pueden encontrar en Internet. Usted acaba convencido de que su placa tiene una caché falsa (aunque si se trata de una para Pentium puede llevarle su tiempo), lo mejor que puede hacer es no volver a comprar en la tienda donde la adquirió o, si tiene tiempo y ganas, irse a quejar. No es probable que le hagan caso, pero ¡que le oigan! (Y si les engañó su proveedor, no es excusa, sino falta de profesionalidad.)

Tecnologías usadas en la caché

Aunque en general no se puede elegir qué memoria caché adquirir con la computadora, puesto que se vende conjuntamente con la placa base (o con el micro, si es un Pentium II o un Mendocino), conviene tener claros unos cuantos conceptos por si se diera el caso de tener varias opciones a nuestra disposición.

Ante todo, el tipo de memoria empleada para fabricar la caché es uno de los factores más importantes. Suele ser memoria de un tipo muy rápido (como por ejemplo SRAM o SDRAM) y con características especiales, como burst pipeline: transmitir datos "a ráfagas" (burst).

La velocidad de la caché influye en su rendimiento, como es obvio. Las cachés se mueven en torno a los 10 nanosegundos (ns) de velocidad de refresco; es decir, que cada 10 ns pueden admitir una nueva serie de datos. Por tanto, a menor tiempo de refresco, mayor velocidad.

El último parámetro que influye en las cachés es la forma de escribir los datos en ellas. Esto se suele seleccionar en la BIOS, bien a mano o dejando que lo haga la computadora automáticamente; las dos formas principales son: Write-Througth: impronunciable término que indica el modo clásico de trabajo de la caché; Write-Back: un modo más moderno y eficaz de gestionar la caché.

¿Cuál es el futuro de las memorias caché?

Los retos que esperan a los diseñadores de tarjetas madres con los niveles de frecuencia en memoria caché, son enormes. Aún cuando el CPU y la caché están aislados en módulos optimizados de Multiprocesamiento Simétrico (SMP, Symmetric Multiprocessing) como es el caso de las tarjetas madres que soportan la familia de los Pentium II y multiprocesadores 21264 Alpha.

Esto hace necesario mover el control de la caché completamente al CPU través de un bus dedicado a la caché, el cual está físicamente separado del bus de memoria principal.

A pesar de esto un nuevo tipo de SRAM podría aparecer en las memorias caché de las PC, esta es:

Late-Write Burst SRAM. (LWBRAM: Permite aumentar la frecuencia hasta 200 MHz, suministrando el dato a escribir en la memoria un reloj después de la dirección. Estas SRAM ya están soportadas por algunos CPU RICS como Mips R10000/R12000, UltraSparc PA- 8x00 y Alpha 21264.

Fuente

  • Tutoriales Joven Club de Computación y Electrónica.