Documente Academic
Documente Profesional
Documente Cultură
Jerarqua de almacenamiento
Los componentes fundamentales de las computadoras de propsito general son la CPU,
el espacio de almacenamiento y los dispositivos de entrada/salida. La habilidad para
almacenar las instrucciones que forman un programa de computadora y la informacin
que manipulan las instrucciones es lo que hace verstiles a las computadoras diseadas
segn la arquitectura de programas almacenados
Una computadora digital representa toda la informacin usando el sistema binario.
Texto, nmeros, imgenes, sonido y casi cualquier otra forma de informacin puede ser
transformada en una sucesin de bits, o dgitos binarios, cada uno de los cuales tiene un
valor de 1 0. La unidad de almacenamiento ms comn es el byte, igual a 8 bits. Una
determinada informacin puede ser manipulada por cualquier computadora cuyo espacio
de almacenamiento sea suficientemente grande como para que quepa el dato
correspondiente o la representacin binaria de la informacin. Por ejemplo, una
computadora con un espacio de almacenamiento de ocho millones de bits, o un
megabyte, puede ser usada para editar una novela pequea.
Se han inventado varias formas de almacenamiento basadas en diversos fenmenos
naturales. No existen ningn medio de almacenamiento de uso prctico universal y todas
las formas de almacenamiento tienen sus desventajas. Por tanto, un sistema informtico
contiene varios tipos de almacenamiento, cada uno con su propsito individual.
Almacenamiento primario
La memoria primaria, est directamente conectada a la CPU del ordenador. Debe estar
presente para que la CPU efecte cualquier funcin. El almacenamiento primario consta
de la memoria primaria del sistema; contiene los programas en ejecucin y los datos con
que operan. Se puede transferir informacin muy rpidamente (tpicamente en menos de
100 ciclos de reloj2 ) entre un registro del microprocesador y localizaciones del
almacenamiento principal. En las computadoras modernas se usan memorias de acceso
aleatorio basadas en electrnica del estado slido, que est directamente conectada a la
CPU a travs de buses de direcciones, datos y control.
El almacenamiento lleva por principal requisito que cualquiera de sus localidades debe
ser directamente direccionable, esto es, todo dato contenido en memoria debe poder
encontrarse basndose en su direccin. Es por esto que los registros del procesador no
pueden considerarse almacenamiento primario. Las referencias a stos se efectan por
nombre, de forma directa, y no por direccin. Los registros representan el estado actual
del cmputo y los datos utilizados inmediatamente, pero no pueden almacenar un
programa (slo apuntar al lugar de ejecucin actual).
La gran diferencia de velocidad entre el procesador y la memoria primaria dio origen a la
memoria cach. Esta es una memoria de muy alta velocidad, tpicamente entre 10 y 100
veces ms que la memoria primaria, y se emplea para mejorar la eficiencia o rendimiento
del CPU. Parte de la informacin de la memoria principal se duplica en la memoria cach.
Comparada con los registros, la cach es ligeramente ms lenta, pero de mayor capacidad.
Sin embargo, es ms rpida, aunque de mucha menor capacidad que la memoria principal.
Algunos autores3 presentan a la memoria cach como una jerarqua aparte, sin embargo,
al no ser memoria directamente direccionable (guarda estrictamente copias de la
informacin disponible en la memoria principal), es comn presentarla como parte
funcional del almacenamiento primario.
Almacenamiento secundario
La memoria secundaria requiere que la computadora use sus canales de entrada/salida
para acceder a la informacin y se utiliza para almacenamiento a largo plazo de
informacin persistente. Sin embargo, la mayora de los sistemas operativos usan los
dispositivos de almacenamiento secundario como rea de intercambio para incrementar
artificialmente la cantidad aparente de memoria principal en la computadora (a esta
utilizacin del almacenamiento secundario se le denomina memoria virtual). La memoria
secundaria tambin se llama de almacenamiento masivo. Un disco duro es un ejemplo
de almacenamiento secundario.
Habitualmente, la memoria secundaria o de almacenamiento masivo tiene mayor
capacidad que la memoria primaria, pero es mucho ms lenta. En las computadoras
modernas, los discos duros suelen usarse como dispositivos de almacenamiento masivo. El
tiempo necesario para acceder a un byte de informacin dado almacenado en un disco
duro de platos magnticos es de unas milsimas de segundo (milisegundos). En cambio, el
tiempo para acceder al mismo tipo de informacin en una memoria de acceso aleatorio
(RAM) se mide en mil-millonsimas de segundo (nanosegundos).
Esto ilustra cuan significativa es la diferencia entre la velocidad de las memorias de
estado slido y la velocidad de los dispositivos rotantes de almacenamiento magntico u
ptico: los discos duros son del orden de un milln de veces ms lentos que la memoria
(primaria). Los dispositivos rotantes de almacenamiento ptico (unidades de CD y DVD)
son incluso ms lentos que los discos duros, aunque es probable que su velocidad de
acceso mejore con los avances tecnolgicos.
Por lo tanto, el uso de la memoria virtual, que es cerca de un milln de veces ms lenta
que memoria verdadera, ralentiza apreciablemente el funcionamiento de cualquier
computadora. Muchos sistemas operativos implementan la memoria virtual usando
trminos como memoria virtual o fichero de cach. La principal ventaja histrica de la
memoria virtual es el precio; la memoria virtual resultaba mucho ms barata que la
memoria real. Esa ventaja es menos relevante hoy en da. Aun as, muchos sistemas
operativos siguen implementndola, a pesar de provocar un funcionamiento
significativamente ms lento.
Almacenamiento terciario
La memoria terciaria es un sistema en el que un robot industrial brazo robtico, montar,
conectar o desmontar (desconectar) un medio de almacenamiento masivo fuera de
lnea (vase el siguiente punto) segn lo solicite el sistema operativo de la computadora.
La memoria terciaria se usa en el rea del almacenamiento industrial, la computacin
cientfica en grandes sistemas informticos y en redes empresariales. Este tipo de
memoria es algo que los usuarios de computadoras personales normales nunca ven de
primera mano.
Almacenamiento fuera de lnea
El almacenamiento fuera de lnea (off-line) es un sistema donde el medio de
almacenamiento puede ser extrado fcilmente del dispositivo de almacenamiento. Estos
medios de almacenamiento suelen usarse para transporte y archivo de datos. En
computadoras modernas son de uso habitual para este propsito los disquetes, discos
pticos y las memorias flash, incluyendo las unidades USB. Tambin hay discos duros USB
que se pueden conectar rpidamente. Los dispositivos de almacenamiento fuera de lnea
usados en el pasado son cintas magnticas en muchos tamaos y formatos diferentes, y
las bateras extrables de discos Winchester.
Almacenamiento de red
El almacenamiento de red es cualquier tipo de almacenamiento de computadora que
incluye el hecho de acceder a la informacin a travs de una red informtica.
Discutiblemente, el almacenamiento de red permite centralizar el control de
informacin en una organizacin y reducir la duplicidad de la informacin. El
almacenamiento en red incluye:
El almacenamiento asociado a red es una memoria secundaria o terciaria que reside en
una computadora a la que otra de stas puede acceder a travs de una red de rea local,
una red de rea extensa, una red privada virtual o, en el caso de almacenamiento de
archivos en lnea, internet.
Las redes de computadoras son computadoras que no contienen dispositivos de
almacenamiento secundario. En su lugar, los documentos y otros datos son almacenados
en un dispositivo de la red.
Caractersticas de las memorias
La divisin entre primario, secundario, terciario, fuera de lnea, se basa en la jerarqua
de memoria o distancia desde la CPU. Hay otras formas de caracterizar a los distintos tipos
de memoria.
Volatilidad de la informacin
La memoria voltil requiere energa constante para mantener la informacin
almacenada. La memoria voltil se suele usar slo en memorias primarias. La memoria
RAM es una memoria voltil, ya que pierde informacin en la falta de energa elctrica.
La memoria no voltil retendr la informacin almacenada incluso si no recibe corriente
elctrica constantemente, como es el caso de la memoria ROM. Se usa para
almacenamientos a largo plazo y, por tanto, se usa en memorias secundarias, terciarias y
fuera de lnea.
La memoria dinmica es una memoria voltil que adems requiere que peridicamente
se refresque la informacin almacenada, o leda y reescrita sin modificaciones.
Accesibilidad secuencial o aleatoria a informacin
Dependiendo de la habilidad para acceder a informacin contigua o no, se puede clasificar
en:
*Acceso aleatorio: significa que se puede acceder a cualquier localizacin de la memoria
en cualquier momento en el mismo intervalo de tiempo, normalmente pequeo.
*Acceso secuencial: significa que acceder a una unidad de informacin tomar un
intervalo de tiempo variable, dependiendo de la unidad de informacin que fue leda
anteriormente. El dispositivo puede necesitar buscar (posicionar correctamente el cabezal
de lectura/escritura de un disco), o dar vueltas (esperando a que la posicin adecuada
aparezca debajo del cabezal de lectura/escritura en un medio que gira continuamente).
Asignacin de memoria
La asignacin de memoria consiste en el proceso de asignar memoria para propsitos
especficos, ya sea en tiempo de compilacin o de ejecucin. Si es en tiempo de
compilacin es esttica, si es en tiempo de ejecucin es dinmica y si son variables locales
a un grupo de sentencias se denomina automtica.
Algoritmo Buddy
Otra solucin es tener un asignador buddy de bloques binarios. En este sistema, la
memoria se asigna desde un gran bloque de memoria que es tamao potencia de dos. Si el
bloque es ms del doble de grande de lo necesario, se parte en dos. Se selecciona una de
las dos mitades, y el proceso se repite (comprobando el tamao otra vez y partiendo si se
necesita) hasta que el bloque sea justamente el necesitado.
Todos los segmentos de memoria de un tamao particular son guardados en una lista
enlazada ordenada o una estructura de datos en rbol. Cuando se libera un bloque, se
compara con su buddy(vecino). Si los dos estn libres, son combinados y colocados en la
lista de bloques buddy de siguiente mayor tamao. (Cuando un bloque es asignado, el
asignador empezar con el bloque grande suficientemente pequeo para evitar romper
bloques innecesariamente).
Ntese que los asignadores buddy de bloques no son nicamente para los Sistemas
Operativos de Tiempo-Real (RTOS); ellos tambin son usados en sistemas operativos de
propsito general (tales como Microsoft Windows y Linux).
Asignacin de memoria basada en Heap
En la asignacin de memoria basada en heap, la memoria es asignada desde un gran
rea comn de memoria libre (sin usar) llamada heap (tambin llamada almacn de libres
o 'memoria del montn'). "El heap" no tiene nada que ver con la estructura de datos Heap
(o Montculo). El tamao de la asignacin de memoria puede ser determinado en tiempo
de ejecucin, y el tiempo de vida de la asignacin no es dependiente del procedimiento
actual o del marco de pila. La regin de memoria asignada es accedida indirectamente,
normalmente por medio de una referencia. El algoritmo preciso usado para organizar el
rea de memoria y asignar y desasignar los trozos est oculto detrs de una interfaz
abstracta y puede usar cualquiera de los mtodos descritos antes.
En contraste, la memoria de la pila de llamadas es normalmente de tamao limitado y el
tiempo de vida de la asignacin depende de la duracin de las funciones
correspondientes.
Cach (informtica)
En informtica, la memoria cach es la memoria de acceso rpido de un
microprocesador, que guarda temporalmente los datos recientes de los procesados
(informacin).
La memoria cach es un bfer especial de memoria que poseen las computadoras, que
funciona de manera semejante a la memoria principal, pero es de menor tamao y de
acceso ms rpido. Es usada por el microprocesador para reducir el tiempo de acceso a
datos ubicados en la memoria principal que se utilizan con ms frecuencia.
La cach es una memoria que se sita entre la unidad central de procesamiento (CPU) y la
memoria de acceso aleatorio (RAM) para acelerar el intercambio de datos.
Cuando se accede por primera vez a un dato, se hace una copia en la cach; los accesos
siguientes se realizan a dicha copia, haciendo que sea menor el tiempo de acceso medio al
dato. Cuando el microprocesador necesita leer o escribir en una ubicacin en memoria
principal, primero verifica si una copia de los datos est en la cach; si es as, el
microprocesador de inmediato lee o escribe en la memoria cach, que es mucho ms
rpido que de la lectura o la escritura a la memoria principal.
Etimologa y ortografa
La palabra procede de la voz inglesa cache (/k/; escondite secreto para guardar
mercancas, habitualmente de contrabando), y esta a su vez de la francesa cache, (/ka/;
escondrijo o escondite). A menudo, en espaol se escribe con tilde sobre la e, del
mismo modo como se vena escribiendo con anterioridad el neologismo cach
(distincin o elegancia o cotizacin de un artista), proveniente tambin del francs,
pero no de la misma palabra, sino de cachet, (/ka'/; sello o salario).
La Real Academia Espaola, en su Diccionario de la lengua espaola, slo reconoce la
palabra con tilde,1 aunque en la literatura especializada en arquitectura de computadoras
(por ejemplo, las traducciones de libros de Andrew S. Tanenbaum, John L. Hennessy y
David A. Patterson) se emplea siempre la palabra sin tilde, por ser anglosajona, y debe por
ello escribirse en cursiva (cache).
Composicin interna
Los datos en la memoria cach se alojan en distintos niveles segn la frecuencia de uso
que tengan, estos niveles son los siguientes:
Jerarqua de memoria
Las restricciones de diseo de la memoria de un computador se pueden resumir en
tres cuestiones: Cunta capacidad?, Cmo de rpida?, De qu coste?
El dilema con que se enfrenta el diseador est claro. El diseador deseara utilizar
tecnologas de memoria que proporcionan gran capacidad, tanto porque sta es
necesaria como porque el coste por bit es bajo. Sin embargo, para satisfacer las
prestaciones requeridas, el diseador necesita utilizar memorias costosas, de
capacidad relativamente baja y con tiempos de acceso reducidos. La respuesta a
este dilema es no contar con un solo componente de memoria, sino emplear una
jerarqua de memoria.
Cuando se desciende en la jerarqua ocurre lo siguiente:
a) Disminuye el coste por bit.
b) Aumenta la capacidad.
c) Aumenta el tiempo de acceso.
d) Disminuye la frecuencia de accesos a la memoria por parte del procesador.
As pues, memorias ms pequeas, ms costosas y ms rpidas, se complementan
con otras ms grandes, ms econmicas y ms lentas. La clave del xito de esta
organizacin est en el tem (d): la disminucin de la frecuencia de acceso.
En principio, el uso de dos niveles de memoria para reducir el tiempo de acceso
medio funciona, pero solo si se aplican las condiciones (a) a (d) anteriores.
Empleando diversas tecnologas se tiene todo un espectro de sistemas de memoria
que satisfacen las condiciones (a) a (d). Afortunadamente, la condicin (d) es
tambin generalmente vlida.
La base para la validez de la condicin (d) es el principio conocido como localidad
de las referencias. En el curso de la ejecucin de un programa, las referencias a
memoria por parte del procesador, tanto para instrucciones como para datos,
tienden a estar agrupadas. Los programas normalmente contienen un nmero de
bucles interactivos y subrutinas. Cada vez que se entra en bucle o una subrutina,
hay repetidas referencias a un pequeo conjunto de instrucciones. De manera
similar, las operaciones con tablas o con matrices conllevan accesos a un conjunto
de palabras de datos agrupados. En periodos de tiempo corto, el procesador
trabaja principalmente en agrupaciones fijas de referencias a memoria.
De acuerdo con lo anterior, es posible organizar los datos a travs de la jerarqua de
tal manera que el porcentaje de accesos a cada nivel siguiente ms bajo, sea
sustancialmente menos que al nivel anterior. Considrese el ejemplo de dos niveles
ya presentado, y que la memoria del nivel 2 contiene todos los datos e
instrucciones de programa. Las agrupaciones actuales pueden ubicarse
temporalmente en el nivel 1. De vez en cuando, una de las agrupaciones del nivel 1
tendr que ser devuelta al nivel 2 a fin que deje sitio para que entre otra nueva
agrupacin al nivel 1. En general, sin embargo, la mayora de las referencias sern a
instrucciones y datos contenidos en el nivel 1. Este principio puede aplicarse a
travs de ms de dos niveles de memoria.
Figura 8. Prestaciones de una memoria de dos niveles sencilla. Fraccin de accesos que implican
solo al nivel 1 (tasa de aciertos).
Escritura inmediata
Postescritura
Escritura nica
Funcin de correspondencia Tamao de lnea
Directa
Asociativa
Asociativa por conjuntos
Algoritmo de sustitucin Nmero de cachs
Tamao de cach
Nos gustara que el tamao fuera lo suficientemente pequeo como para que el coste
total medio por bit se aproxime al de la memoria principal sola, y que fuera lo
suficientemente grande como para que el tiempo de acceso medio total sea prximo al de
la cach sola. El tamao de cach est tambin limitado por las superficies disponibles de
chip y de tarjeta. Como las prestaciones de la cach son muy sensibles al tipo de tarea, es
imposible predecir un tamao ptimo.
Funcin de correspondencia.
Ya que hay menos lneas de cach que bloques de memoria principal, se necesita un
algoritmo que haga corresponder bloques de memoria principal a lneas de cach.
Adems, se requiere algn medio para determinar qu bloque de memoria principal
ocupa actualmente una lnea dada de cach. Pueden utilizarse tres tcnicas: directa,
asociativa y asociativa por conjuntos.
i=j mdulo m
m-1 m-1,2m-1,3m-1,,25-1
Por tanto, el uso de una parte de la direccin como nmero de lnea proporciona una
correspondencia o asignacin nica de cada bloque de memoria principal en la cach.
Cuando un bloque es realmente escrito en la lnea que tiene asignada, es necesario
etiquetarlo para distinguirlo del resto de los bloques que pueden introducirse en dicha
lnea. Para ello se emplean los s-r bits ms significativos.
Obsrvese que no hay dos bloques que se asignen en la misma lnea que tengan el mismo
nmero de etiqueta. As, los bloques 000000, 010000..., FF0000 tienen respectivamente
los nmeros de etiqueta 00, 01..., FF. Refirindonos de nuevo a la Figura 4.5, una
operacin de lectura se lleva a cabo de la siguiente manera. Al sistema de cach se
presenta una direccin de 24 bits. El nmero de lnea, de 14 bits, se utiliza como ndice
para acceder a una lnea particular dentro de la cach. Si el nmero de etiqueta, de 8 bits,
coincide con el nmero de etiqueta almacenado actualmente en esa lnea, el nmero de
palabra de 2 bits se utiliza para seleccionar uno de los cuatro bytes de esa lnea. Si no, el
campo de 22 bits de etiqueta+lnea se emplea para captar un bloque de memoria
principal. La direccin real que se utiliza para la captacin consta de los mencionados 22
bits concatenados con dos bits 0, y se captan 4 bytes a partir del comienzo del bloque.
Algoritmos de sustitucin
Una vez que se ha llenado la cach, para introducir un nuevo bloque debe sustituirse uno
de los bloques existentes. Se han probado diversos algoritmos; mencionaremos cuatro de
los ms comunes. El ms efectivo es probablemente el denominado utilizado menos
recientemente (LRU, least-recently used): se sustituye el bloque que se ha mantenido en
la cach por ms tiempo sin haber sido referenciado. Otra posibilidad es el primero en
entrar-primero en salir (FIFO, firts-In-firts-Out: se sustituye aquel bloque del conjunto que
ha experimentado menos referencias. Y otra posibilidad es la aleatoria, tcnica basad en
el grado de utilizacin que consiste simplemente en coger un lnea al azar entre las
posibles candidatas.
POLTICA DE ESCRITURA
Hay dos casos a considerar cuando se ha de reemplazar un bloque de la cach. Si el bloque
antiguo de la cach no debe ser modificado, puede sobrescribirse con el nuevo bloque sin
necesidad de actualizar el antiguo. Si se ha realizado al menos una operacin de escritura
sobre una palabra de la lnea correspondiente de la cach, entonces la memoria principal
debe actualizarse, rescribiendo la lnea de cach en el bloque de memoria antes de
transferir el nuevo bloque. Son posibles varias polticas de escritura con distintos
compromisos entre prestaciones y coste econmico. Hay dos problemas contra los que
luchar. En primer lugar, ms de un dispositivo puede tener acceso a la memoria principal.
Por ejemplo, un mdulo de E/S puede escribir/leer directamente en/de memoria. Si una
palabra ha sido modificada solo en la cach, la correspondiente palabra de memoria no es
vlida. Adems, si el dispositivo de E/S ha alterado la memoria principal, entonces la
palabra de cach no es vlida. Un problema ms complejo ocurre cuando varios
procesadores se conectan al mismo bus y cada uno de ellos tiene su propia cach local. En
tal caso, si se modifica una palabra en una de las cachs, podra presumiblemente invalidar
una palabra de otras cachs. La tcnica ms sencilla se denomina escritura inmediata.
Utilizando esta tcnica, todas las operaciones de escritura se hacen tanto en cach como
en memoria principal, asegurando que el contenido de la memoria principal siempre es
vlido. Cualquier otro mdulo procesador-cach puede monitorizar el trfico a memoria
principal para mantener la coherencia en su propia cach. La principal desventaja de esta
tcnica es que genera un trfico sustancial con la memoria que puede originar un cuello de
botella. Una tcnica alternativa, conocida como postescritura, minimiza las escrituras en
memoria. Con la postescritura, las actualizaciones se hacen solo en la cach. Cuando tiene
lugar una actualizacin, se activa un bit ACTUALIZAR asociado a la lnea. Despus, cuando
el bloque es sustituido, es (post) escrito en memoria principal si y solo si el bit ACTUALIZAR
est activo. El problema de este esquema es que se tienen porciones de memoria principal
que no son vlidas, y los accesos por parte de los mdulos de E/S tendrn que hacerse
solo a travs de la cach. Esto complica la circuitera y genera un cuello de botella
potencial. La experiencia ha demostrado que el porcentaje de referencias a memoria para
escritura es del orden del 15 por ciento [SMIT82]. Sin embargo, en aplicaciones de HPC,
este porcentaje puede aproximarse al 33 por ciento (multiplicacin de vectores) e incluso
superar el 50 por ciento (en transposicin de matrices).
En una estructura de bus en la que ms de un dispositivo (normalmente un procesador)
tiene una cach y la memoria principal es compartida, se tropieza con un nuevo problema.
Si se modifican los datos de una cach, se invalida no solamente la palabra
correspondiente de memoria principal, sino tambin la misma palabra en otras cachs (si
coincide que otras cachs tengan la misma palabra). Incluso si se utiliza una poltica de
escritura inmediata, las otras cachs pueden contener datos no vlidos. Un sistema que
evite este problema se dice que mantiene la coherencia de cach. Entre las posibles
aproximaciones a la coherencia de cach se incluyen:
Vigilancia del bus con escritura inmediata: cada controlador de cach monitoriza las
lneas de direcciones para detectar operaciones de escritura en memoria por parte de
otros maestros del bus. Si otro maestro escribe en una posicin de memoria compartida
que tambin reside en la memoria cach, el controlador de cach invalida el elemento de
la cach. Esta estrategia depende del uso de una poltica de escritura inmediata por parte
de todos los controladores de cach. Transparencia hardware: se utiliza hardware
adicional para asegurar que todas las actualizaciones de memoria principal, va cach,
quedan reflejadas en todas las cachs. As, si un procesador modifica una palabra de su
cach, esta actualizacin se escribe en memoria principal. Adems, de manera similar se
actualizan todas las palabras coincidentes de otras cachs. Memoria excluida de cach:
solo una porcin de memoria principal se comparte por ms de un procesador, y esta se
disea como no transferible a cach. En un sistema de este tipo, todos los accesos a la
memoria compartida son fallos de cach, porque la memoria compartida nunca se copia
en la cach. La memoria excluida de cach puede ser identificada utilizando lgica de
seleccin de chip o los bits ms significativos de la direccin.
La coherencia de cach es un campo activo de investigacin y ser tratado con ms detalle
en el Captulo 18.
TAMAO DE LNEA
Otro elemento de diseo es el tamao de lnea. Cuando se recupera y ubica en cach un
bloque de datos, se recuperan no slo la palabra deseada sino adems algunas palabras
adyacentes. A medida que aumenta el tamao de bloque, la tasa de aciertos primero
aumenta debido al principio de localidad, el cual establece que es probable que los datos
en la vecindad de una palabra referenciada sean referenciados en un futuro prximo. Al
aumentar el tamao de bloque, ms datos tiles son llevados a la cach. Sin embargo, la
tasa de aciertos comenzar a decrecer cuando el tamao de bloque se haga an mayor y la
probabilidad de utilizar la nueva informacin captada se haga menor que la de reuti- lizar
la informacin que tiene que reemplazarse. Dos efectos concretos entran enjuego:
Bloques ms grandes reducen el nmero de bloques que caben en la cach. Dado que
cada bloque captado se escribe sobre contenidos anteriores de la cach, un nmero
reducido de bloques da lugar a que se sobrescriban datos poco despus de haber sido
captados. A medida que un bloque se hace ms grande, cada palabra adicional est ms
lejos de la requerida y por tanto es ms improbable que sea necesaria a corto plazo.
La relacin entre tamao de bloque y tasa de aciertos es compleja, dependiendo de las
caractersticas de localidad de cada programa particular, no habindose encontrado un
valor ptimo definitivo. Un tamao entre 8 y 64 bytes parece estar razonablemente
prximo al ptimo [SMIT87, PRZY88, PRZY90, HAND98]. Para sistemas de HPC es ms
frecuente usar tamaos de lnea de cach de 64 y 128 bytes.
NMERO DE CACHS
Cuando se introdujeron originalmente las cachs, un sistema tena normalmente solo una
cach. Ms recientemente, se ha convertido en una norma el uso de mltiples cachs. Hay
dos aspectos de diseo relacionados con este tema que son el nmero de niveles de
cach, y el uso de cach unificada frente al de cachs separadas.
Cachs m ultinivel. Con el aumento de densidad de integracin, ha sido posible tener una
cach en el mismo chip del procesador: cach on-chip. Comparada con la accesible a
travs de un bus extemo, la cach on-chip reduce la actividad del bus extemo del
procesador y por tanto reduce los tiempos de ejecucin e incrementa las prestaciones
globales del sistema. Cuando la instruccin o el dato requeridos se encuentran en la cach
on-chip, se elimina el acceso al bus. Debido a que los caminos de datos internos al
procesador son muy cortos en comparacin con la longitud de los buses, los accesos a la
cach on-chip se efectan apreciablemente ms rpidos que los ciclos de bus, incluso en
ausencia de estados de espera. Adems, durante este periodo el bus est libre para
realizar otras transferencias. La inclusin de una cach on-chip deja abierta la cuestin de
si es adems deseable una cach externa u off-chip. Normalmente la respuesta es
afirmativa, y los diseos ms actuales incluyen tanto cach on-chip como externa. La
estructura ms sencilla de este tipo se denomina cach de dos niveles, siendo la cach
interna el nivel 1 (Ll), y la externa el nivel 2 (L2). La razn por la que se inclu ye una cach
L2 es la siguiente. Si no hay cach L2 y el procesador hace una peticin de acceso a una
posicin de memoria que no est en la cach Ll, entonces el procesador debe acceder a la
DRAM o la ROM a travs del bus. Debido a la lentitud usual del bus y a los tiempos de
acceso de las memorias, se obtienen bajas prestaciones. Por otra parte, si se utiliza una
cach L2 SRAM (RAM esttica), entonces con frecuencia la informacin que falta puede
recuperarse fcilmente. Si la SRAM es suficientemente rpida para adecuarse a la
velocidad del bus, los datos pueden accederse con cero estados de espera, el tipo ms
rpido de transferencia de bus. En la actualidad son destacables dos caractersticas de
diseo de las cachs multinivel. En primer lugar, para el caso de una cach L2 externa,
muchos diseos no usan el bus del sistema como camino para las transferencias entre la
cach L2 y el procesador, sino que se emplea un camino de datos aparte para reducir el
trfico en el bus del sistema. En segundo lugar, gracias a la continua reduccin de
dimensiones de los componentes de los procesadores, es fcil encontrar procesadores que
incorporan la cach L2 en el propio chip, con la consiguiente mejora de prestaciones. La
mejora potencial del uso de una cach L2 depende de las tasas de aciertos en ambas
cachs Ll y L2. Varios estudios han demostrado que, en general, el uso de un segundo nivel
de cach mejora las prestaciones (vase por ejemplo [AZIM92], [NOVI93], [HAND98]). No
obstante, el uso de cachs multinivel complica todos los aspectos de diseo de la cach,
incluyendo el tamao, el algoritmo de sustitucin y la poltica de escritura; en [HAND98] y
[PEIR99] se discuten estos temas. Con la creciente disponibilidad de superficie para cach
en el propio chip, en la mayora de los microprocesadores modernos se ha llevado la cach
L2 al chip del procesador, y se aade una cach L3. Inicialmente, la cach L3 era accesible a
travs del bus extemo, pero ms recientemente los microprocesadores han incorporado
una L3 on-chip En cualquiera de los casos, aadir un tercer nivel de cach parece suponer
una mejora de las prestaciones (vase por ejemplo [GHAI98]).
Cach unificada frente a cachs separadas. Cuando hicieron su aparicin las cachs on-
chip, muchos de los diseos conteman una sola cach para almacenar las referencias tanto
a datos como a instrucciones. Ms recientemente, se ha hecho normal separar la cach en
dos: una dedicada a instrucciones y otra a datos. Una cach unificada tiene varias ventajas
potenciales: Para un tamao dado de cach, una unificada tiene una tasa de aciertos
mayor que una cach partida, ya que nivela automticamente la carga entre captacin de
instrucciones y de datos. Es decir, si un patrn de ejecucin implica muchas ms
captaciones de instrucciones que de datos, la cach tender a llenarse con instrucciones, y
si el patrn de ejecucin involucra relativamente ms captaciones de datos, ocurrir lo
contrario. Solo se necesita disear e implementar una cach. A pesar de estas ventajas,
la tendencia es hacia cachs separadas, particularmente para mquinas super-escalares
tales como el Pentium y el PowerPC, en las que se enfatiza la ejecucin paralela de
instrucciones y la precaptacin de instrucciones futuras previstas. La ventaja clave del
diseo de una cach partida es que elimina la competicin por la cach entre el
procesador de instrucciones y la unidad de ejecucin. Esto es importante en diseos que
cuentan con segmentacin de cauce (pipelining) de instrucciones. Normalmente el
procesador captar instrucciones anticipadamente y llenar un buffer con las instrucciones
que van a ejecutarse. Supongamos ahora que se tiene una cach unificada de
instrucciones/datos. Cuando la unidad de ejecucin realiza un acceso a memoria para
cargar y almacenar datos, se enva la peticin a la cach unificada. Si, al mismo tiempo, el
precaptador de instrucciones emite una peticin de lectura de una instruccin a la cach,
dicha peticin ser bloqueada temporalmente para que la cach pueda servir primero a la
unidad de ejecucin permitindole completar la ejecucin de la instruccin en curso. Esta
disputa por la cach puede degradar las prestaciones, interfiriendo con el uso eficiente del
cauce segmentado de instrucciones. La cach partida supera esta dificultad.
Conclusin
Tras finalizar con el anlisis sobre los beneficios que aporta la memoria cach y sus
caractersticas, con vistas al logro de una mayor optimizacin de su uso, es posible concluir
que:
La cach es un sistema complejo de alta velocidad que permite almacenar una serie de
instrucciones y datos a los que el procesador accede continuamente, con la finalidad de
que estos accesos sean instantneos.
Se considera que esta memoria secundaria logra un incremento del rendimiento entre el
trabajo que realizan en conjunto el microprocesador y la memoria RAM, y a su vez gana
fluidez durante el proceso de lectura/escritura de datos evitando as que existan retrasos a
l hora de trabajar con la mquina.
Podemos concluir as que es una herramienta indispensable tanto para concretar los
procedimientos que indican las instrucciones dadas mediante el ingreso de datos dentro
del computador, como para el usuario que lo utilice.