Sunteți pe pagina 1din 37

Introduccin

En el presente trabajo de acabaremos el estudio de una de las memorias internas ms


utilizadas dentro de un computador denominada Memoria Cach, conoceremos desde
sus caractersticas principales, su funcionalidad, hasta su diseo de jerarqua.
La memoria es un bfer especial de memoria que poseen las computadoras, la cual es
utilizada por el microprocesador para reducir el tiempo de acceso a datos ubicados en la
memoria principal, las cuales son utilizadas con ms frecuencia.
Para finalizar comprenderemos lo que sucede cuando el microprocesador necesita
leer o escribir dentro de una ubicacin en la memoria principal, donde primero debe
verificar si una si una copia de los datos se encuentra en el cach.
Con el objetivo de conocer ms sobre este hardware, el trabajo consistir en la
recopilacin, el anlisis, y la seleccin de datos para la formulacin de una hiptesis y una
conclusin final.
Memoria
En informtica, la memoria es el dispositivo que retiene, memoriza o almacena datos
informticos durante algn perodo de tiempo.1 La memoria proporciona una de las
principales funciones de la computacin moderna: el almacenamiento de informacin y
conocimiento. Es uno de los componentes fundamentales de la computadora, que
interconectada a la unidad central de procesamiento (CPU, por las siglas en ingls de
Central Processing Unit) y los dispositivos de entrada/salida, implementan lo fundamental
del modelo de computadora de la arquitectura de von Neumann.
En la actualidad, memoria suele referirse a una forma de almacenamiento de estado
slido, conocida como memoria RAM (memoria de acceso aleatorio; RAM por sus siglas en
ingls, de random access memory), y otras veces se refiere a otras formas de
almacenamiento rpido, pero temporal. De forma similar, se refiere a formas de
almacenamiento masivo, como discos pticos, y tipos de almacenamiento magntico,
como discos duros y otros tipos de almacenamiento, ms lentos que las memorias RAM,
pero de naturaleza ms permanente. Estas distinciones contemporneas son de ayuda,
porque son fundamentales para la arquitectura de computadores en general.
Adems, se refleja una diferencia tcnica importante y significativa entre memoria y
dispositivos de almacenamiento masivo, que se ha ido diluyendo por el uso histrico de
los trminos almacenamiento primario (a veces almacenamiento principal), para
memorias de acceso aleatorio, y almacenamiento secundario, para dispositivos de
almacenamiento masivo. Esto se explica en las siguientes secciones, en las que el trmino
tradicional almacenamiento se usa como subttulo, por conveniencia.

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).

Habilidad para cambiar la informacin


Las memorias de lectura/escritura o memorias cambiables permiten que la informacin
se reescriba en cualquier momento. Una computadora sin algo de memoria de
lectura/escritura como memoria principal sera intil para muchas tareas. Las
computadoras modernas tambin usan habitualmente memorias de lectura/escritura
como memoria secundaria.
*La memoria de slo lectura (Read-Only Memory, ROM) retiene la informacin
almacenada en el momento de fabricarse y.
*La memoria de escritura nica lectura mltiple (Write Once Read Many, WORM)
permite que la informacin se escriba una sola vez en algn momento tras la fabricacin.
Tambin estn las memorias inmutables, que se utilizan en memorias terciarias y fuera de
lnea. Un ejemplo son los CD-ROM.
*Las memorias de escritura lenta y lectura rpida son memorias de lectura/escritura
que permite que la informacin se reescriba mltiples veces pero con una velocidad de
escritura mucho menor que la de lectura. Un ejemplo son los CD-RW.
Direccionamiento de la informacin
En la memoria de localizacin direccionable, cada unidad de informacin accesible
individualmente en la memoria se selecciona con su direccin de memoria numrica. En
las computadoras modernas, la memoria de localizacin direccionable se suele limitar a
memorias primarias, que se leen internamente por programas de computadora ya que la
localizacin direccionable es muy eficiente, pero difcil de usar para los humanos.
En las memorias de sistema de archivos, la informacin se divide en archivos informticos
de longitud variable y un fichero concreto se localiza en directorios y nombres de archivos
legible por humanos. El dispositivo subyacente sigue siendo de localizacin
direccionable, pero el sistema operativo de la computadora proporciona la abstraccin del
sistema de archivos para que la operacin sea ms entendible. En las computadora
modernas, las memorias secundarias, terciarias y fuera de lnea usan sistemas de archivos.
En las memorias de contenido direccionable (content-addressable memory), cada unidad
de informacin legible individualmente se selecciona con una valor hash o un identificador
corto sin relacin con la direccin de memoria en la que se almacena la informacin. La
memoria de contenido direccionable pueden construirse usando software o hardware; la
opcin hardware es la opcin ms rpida y cara.
Capacidad de memoria
Memorias de mayor capacidad son el resultado de la rpida evolucin en tecnologa de
materiales semiconductores. Los primeros programas de ajedrez funcionaban en
mquinas que utilizaban memorias de base magntica. A inicios de 1970 aparecen las
memorias realizadas por semiconductores, como las utilizadas en la serie de
computadoras IBM 370.
La velocidad de los computadores se increment, multiplicada por 100.000
aproximadamente y la capacidad de memoria creci en una proporcin similar. Este hecho
es particularmente importante para los programas que utilizan tablas de transposicin: a
medida que aumenta la velocidad de la computadora se necesitan memorias de capacidad
proporcionalmente mayor para mantener la cantidad extra de posiciones que el programa
est buscando.
Se espera que la capacidad de procesadores siga aumentando en los prximos aos; no
es un abuso pensar que la capacidad de memoria continuar creciendo de manera
impresionante. Memorias de mayor capacidad podrn ser utilizadas por programas con
tablas de Hash de mayor envergadura, las cuales mantendrn la informacin en forma
permanente.
* Minicomputadoras: se caracterizan por tener una configuracin bsica regular que
puede estar compuesta por un monitor, unidades de disquete, disco, impresora, etc. Su
capacidad de memoria vara de 16 a 256 KiB.
*Macrocomputadoras: son aquellas que dentro de su configuracin bsica contienen
unidades que proveen de capacidad masiva de informacin, terminales (monitores), etc.
Su capacidad de memoria vara desde 256 a 512 KiB, tambin puede tener varios
megabytes o hasta gigabytes segn las necesidades de la empresa.
*Microcomputadores y computadoras personales: con el avance de la microelectrnica
en la dcada de los 70 resultaba posible incluir todos los componente del procesador
central de una computadora en un solo circuito integrado llamado microprocesador. sta
fue la base de creacin de unas computadoras a las que se les llam microcomputadoras.
El origen de las microcomputadoras tuvo lugar en los Estados Unidos a partir de la
comercializacin de los primeros microprocesadores (INTEL 8008, 8080). En la dcada de
los 80 comenz la verdadera explosin masiva, de los ordenadores personales (Personal
Computer PC) de IBM. Esta mquina, basada en el microprocesador INTEL 8008, tena
caractersticas interesantes que hacan ms amplio su campo de operaciones, sobre todo
porque su nuevo sistema operativo estandarizado (MS-DOS, Microsoft Disk Operating
Sistem) y una mejor resolucin ptica, la hacan ms atractiva y fcil de usar. El ordenador
personal ha pasado por varias transformaciones y mejoras que se conocen como
XT(Tecnologa Extendida), AT(Tecnologa Avanzada) y PS/2...
Tecnologas, dispositivos y medios
Memoria de semiconductor
La memoria de semiconductor usa circuitos integrados basados en semiconductores para
almacenar informacin. Un chip de memoria de semiconductor puede contener millones
de minsculos transistores o condensadores. Existen memorias de semiconductor de
ambos tipos: voltiles y no voltiles. En las computadoras modernas, la memoria principal
consiste casi exclusivamente en memoria de semiconductor voltil y dinmica, tambin
conocida como memoria dinmica de acceso aleatorio o ms comnmente RAM, su
acrnimo ingls. Con el cambio de siglo, ha habido un crecimiento constante en el uso de
un nuevo tipo de memoria de semiconductor no voltil llamado memoria flash. Dicho
crecimiento se ha dado, principalmente en el campo de las memorias fuera de lnea en
computadoras domsticas. Las memorias de semiconductor no voltiles se estn usando
tambin como memorias secundarias en varios dispositivos de electrnica avanzada y
computadoras especializadas y no especializadas.
Memoria magntica
Las memorias magnticas usan diferentes patrones de magnetizacin sobre una
superficie cubierta con una capa magnetizada para almacenar informacin. Las memorias
magnticas son no voltiles. Se llega a la informacin usando uno o ms cabezales de
lectura/escritura. Como el cabezal de lectura/escritura solo cubre una parte de la
superficie, el almacenamiento magntico es de acceso secuencial y debe buscar, dar
vueltas o las dos cosas. En computadoras modernas, la superficie magntica es de alguno
de estos tipos:
*Disco magntico.
*Disquete, usado para memoria fuera de lnea.
*Disco duro, usado para memoria secundario.
*Cinta magntica, usada para memoria terciaria y fuera de lnea.
En las primeras computadoras, el almacenamiento magntico se usaba tambin
como memoria principal en forma de memoria de tambor, memoria de ncleo, memoria
en hilera de ncleo, memoria pelcula delgada, memoria de Twistor o memoria de burbuja.
Adems, a diferencia de hoy, las cintas magnticas se solan usar como memoria
secundaria.

Memoria de disco ptico


Las memorias en disco ptico almacenan informacin usando agujeros minsculos
grabados con un lser en la superficie de un disco circular. La informacin se lee
iluminando la superficie con un diodo lser y observando la reflexin. Los discos pticos
son no voltil y de acceso secuencial. Los siguientes formatos son de uso comn:
*CD, CD-ROM, DVD: Memorias de simplemente solo lectura, usada para distribucin
masiva de informacin digital (msica, vdeo, programas informticos).
*CD-R, DVD-R, DVD+R: Memorias de escritura nica usada como memoria terciaria y fuera
de lnea.
*CD-RW, DVD-RW, DVD+RW, DVD-RAM: Memoria de escritura lenta y lectura rpida usada
como memoria terciaria y fuera de lnea.
*Blu-ray: Formato de disco ptico pensado para almacenar vdeo de alta calidad y datos.
Para su desarrollo se cre la BDA, en la que se encuentran, entre otros, Sony o Phillips.

Memoria de disco magneto-ptico

Los discos magneto-pticos son discos de memoria ptica donde la informacin se


almacena en el estado magntico de una superficie ferromagntica. La informacin se lee
pticamente y se escribe combinando mtodos magnticos y pticos. Las memorias de
discos magneto pticos son de tipo no voltiles, de acceso secuencial, de escritura lenta y
lectura rpida. Se usa como memoria terciaria y fuera de lnea.
La memoria de cambio de fase: usa las fases de un material de cambio de fase para
almacenar informacin. Dicha informacin se lee observando la resistencia elctrica
variable del material. La memoria de cambio de fase sera una memoria de
lectura/escritura no voltil, de acceso aleatorio podra ser usada como memoria primaria,
secundaria y fuera de lnea. La memoria hologrfica almacena pticamente la informacin
dentro de cristales o fotopolmeros. Las memorias hologrficas pueden utilizar todo el
volumen del medio de almacenamiento, a diferencia de las memorias de discos pticos,
que estn limitadas a un pequeo nmero de superficies en capas. La memoria hologrfica
podra ser no voltil, de acceso secuencial y tanto de escritura nica como de
lectura/escritura. Puede ser usada tanto como memoria secundaria como fuera de lnea.
La memoria molecular: almacena la informacin en polmeros que pueden almacenar
puntas de carga elctrica. La memoria molecular puede ser especialmente interesante
como memoria principal. Recientemente se ha propuesto utilizar el spin de un electrn
como memoria. Se ha demostrado que es posible desarrollar un circuito electrnico que
lea el spin del electrn y lo convierta en una seal elctrica.

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.

Asignacin esttica de memoria


La asignacin esttica de memoria consiste en el proceso de asignar memoria en tiempo
de compilacin antes de que el programa asociado sea ejecutado, a diferencia de la
asignacin dinmica o la automtica donde la memoria se asigna a medida que se necesita
en tiempo de ejecucin.
Una aplicacin de esta tcnica conlleva que un mdulo de programa (por ejemplo
funcin o subrutina) declara datos estticos de forma local, de forma que estos datos son
inaccesibles desde otros mdulos a menos que se les pasen referenciados como
parmetros o que les sean devueltos por la funcin. Se mantiene una copia simple de los
datos estticos, accesible a travs de llamadas a la funcin en la cual han sido declarados.
El uso de variables estticas dentro de una clase en la programacin orientada a objetos
permite que una copia individual de tales datos se comparta entre todos los objetos de esa
clase. Las constantes conocidas en tiempo de compilacin, como literales de tipo cadena,
se asignan normalmente de forma esttica. En programacin orientada a objetos, el
mtodo usual para las tablas de clases tambin es la asignacin esttica de memoria.

Asignacin automtica de memoria


Las variables automticas son variables locales a un bloque de sentencias (subrutina,
funcin o procedimiento). Pueden ser asignadas automticamente en la pila de datos
cuando se entra en el bloque de cdigo. Cuando se sale del bloque, las variables son
automticamente desasignadas. Las variables automticas tendrn un valor sin definir
cuando son declaradas, por tanto es buena prctica de programacin inicializarlas con un
valor vlido antes de usarlas.

Asignacin dinmica de memoria


En ciencia de la computacin, asignacin dinmica de la memoria es la asignacin de
almacenamiento de memoria para utilizacin por parte de un programa de computador
durante el tiempo de ejecucin de ese programa. Es una manera de distribuir la propiedad
de recursos de memoria limitada entre muchas piezas de cdigo y datos. Un objeto
asignado dinmicamente permanece asignado hasta que es desasignado explcitamente, o
por el programador o por un recolector de basura; esto es notablemente diferente de la
asignacin automtica de memoria y de la asignacin esttica de memoria (la de las
variables estticas). Se dice que tal objeto tiene tiempo de vida dinmico.

Soluciones para los problemas de asignacin


La tarea de satisfacer una peticin de asignacin, la cual conlleva encontrar un bloque
de memoria sin usar de cierto tamao en el heap, es un problema complicado. Se han
propuesto una amplia variedad de soluciones, incluyendo listas de bloques libres,
Paginacin, y Asignacin buddy de memoria.
El problema principal para la mayora de algoritmos de asignacin de memoria dinmica
es evitar la fragmentacin interna y externa mientras se mantiene la eficiencia del
algoritmo. Tambin, la mayora de algoritmos en uso tienen el problema de que un
nmero grande de pequeas asignaciones pueden causar el desaprovechamiento del
espacio debido a la recoleccin de metadatos; as la mayora de los programadores
intentan evitar esto, a veces usando una estrategia llamada chunking.

Asignacin de bloques de tamao fijo


Una solucin es tener una lista enlazada LIFO de bloques de memoria de tamao fijo. Esto
funciona bien para sistemas empotrados simples.

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).

RAM cach y cach de disco


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 computadoras personales: memoria
cach y cach de disco.
Una memoria cach, a veces llamada RAM cach, es una parte de RAM esttica (SRAM)
de alta velocidad, ms rpida que la RAM dinmica (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 informacin en SRAM, la computadora
evita acceder a la lenta DRAM.
Cuando se encuentra un dato en la 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 tecnologa conocida por cach inteligente en la cual el sistema puede reconocer
cierto tipo de datos usados frecuentemente. Las estrategias para determinar qu
informacin debe ser puesta en la cach constituyen uno de los problemas ms
interesantes en la informtica. Algunas memorias cach estn construidas en la
arquitectura de los microprocesadores. Por ejemplo, el microprocesador Pentium II: tiene
32 KiB de cach de primer nivel (level 1 o L1) repartida en 16 KiB para datos y 16 KiB para
instrucciones; la cach de segundo nivel (level 2 o L2) es de 512 KiB y trabaja a mitad de la
frecuencia del microprocesador. La cach L1 est en el ncleo del microprocesador, y la L2
est en una tarjeta de circuito impreso junto a ste.
La 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 ms
recientes del disco duro a los que se ha accedido (as como los sectores adyacentes) se
almacenan en un bfer de memoria. Cuando el programa necesita acceder a datos del
disco, lo primero que comprueba es la cach de disco para ver si los datos ya estn ah. La
cach de disco puede mejorar notablemente el rendimiento de las aplicaciones, dado que
acceder a un byte de datos en RAM puede ser miles de veces ms rpido que acceder a un
byte del disco duro.

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:

Memoria cach nivel 1 (Cach L1)


Tambin llamada memoria interna, se encuentra en el ncleo del microprocesador. Es
utilizada para acceder a datos importantes y de uso frecuente, es el nivel en el que el
tiempo de respuesta es menor. Su capacidad es de hasta 256 kb. Este nivel se divide en
dos:
Nivel 1 Data Cache: Se encarga de almacenar datos usados frecuentemente y cuando sea
necesario volver a utilizarlos, accede a ellos en muy poco tiempo, por lo que se agilizan los
procesos.
Nivel 1 Instruccin Cache: Se encarga de almacenar instrucciones usadas frecuentemente
y cuando sea necesario volver a utilizarlas, inmediatamente las recupera, por lo que se
agilizan los procesos.
Memoria cach nivel 2 (Cach L2)
Se encarga de almacenar datos de uso frecuente. Es ms lenta que la cach L1, pero ms
rpida que la memoria principal (RAM). Se encuentra en el procesador, pero no en su
ncleo. Genera una copia del nivel
Cach Exclusivo: Los datos solicitados se eliminan de la memoria cach L2.
Cach Inclusivo: Los datos solicitados se quedan en la memoria cach L2.
Memoria cach nivel 3 (Cach L3)
Esta memoria se encuentra en algunos procesadores modernos y genera una copia a la L2.
Es ms rpida que la memoria principal (RAM), pero ms lenta que L2. En esta memoria se
agiliza el acceso a datos e instrucciones que no fueron localizadas en L1 o L2.
Es generalmente de un tamao mayor y ayuda a que el sistema guarde gran cantidad de
informacin agilizando las tareas del procesador.
Memoria Cach
Concepto fundamental. Terminologa. Caractersticas. Funcin especfica.
Cuando se habla de memoria cach se est hablando de aquella cantidad de
informacin que permanece de manera temporal en la computadora y que ayuda a la
adquisicin de velocidad y eficiencia cuando es necesario recurrir a determinado tipo de
datos. El nombre proviene del francs, que significa escondido u oculto. Es una clase
de memoria RAM esttica (SRAM).
El sistema de memoria cach est diseado especialmente para servir al apropiado
y organizado almacenamiento de informacin en una computadora. Su funcin es
bsicamente mantener de manera temporal y accesible aquellos datos que son requeridos
para realizar determinadas funciones o tareas. Esta disponibilidad permite que cada
programa o archivo tenga inmediato acceso a la informacin necesaria y pueda as
dedicarse a subir el nivel de eficiencia de las funciones normales. De tal modo, la memoria
principal cuenta con una gran ayuda que le permite adquirir mayor velocidad de
desempeo y mejores resultados por fuera de sus limitadas capacidades.
Existen tres tipos de cach:

La que est incluida en el interior del microprocesador, llamada interna o de


primer nivel (L1)
La cach externa o de segundo nivel (L2), la cual se puede aadir a la tarjeta
madre.
El cach (L3) es una memoria de gran velocidad y depende de la
comunicacin entre el procesador y la placa base.
Cach de 1er nivel (L1) Cach de 2do nivel (L2) Cach de 3er nivel (L3)
Integrada en el Puede llegar a En un principio
ncleo del superar los 2Mb estaba
procesador. de memoria. incorporada a la
La cantidad de A diferencia de la placa base, no al
memoria vara, cach L1, no est procesador.
estando entre los dividida y su Es una memoria
64kb y los 256kb. utilizacin est de gran rapidez
Suele estar dividida ms encaminada que agiliza el
en dos partes, una a programas que acceso a datos e
para instrucciones al sistema. instrucciones
y otra para datos. que no fueron
localizados en L1
o L2.

Caractersticas generales de la memoria SRAM:

Son memorias caras y por lo tanto de muy poco uso


Cuentan generalmente con 80 pines que se insertan en una ranura especial
Tienen por lo general muy poca capacidad de almacenamiento, pero son
muy veloces
Puede convivir con otros tipos de memorias en la misma motherboard
Actualmente se las clasifica en niveles, por lo que se les identifica como L1,
L2, L3.
Partes de la memoria SRAM:
Los componentes son visibles, ya que no cuenta con cubierta protectora; son
bsicamente los siguientes:
1. Tarjeta: placa plstica sobre la cual estn soldados los componentes de la
memoria.
2. Chips: son mdulos de memoria voltil SRAM.
3. Conector (80 terminales): base de la memoria que se inserta en la ranura
especial para SRAM.
4. Muesca: indica la posicin correcta dentro de la ranura de memoria.

Figura 1. Esquema de la memoria SRAM.

Capacidades de almacenamiento SRAM:


La unidad prctica para medir la capacidad de almacenamiento de una memoria
SRAM es el kilobyte (kb) y el megabyte (mb). Actualmente en los discos duros y
microprocesadores viene integrada con las siguientes capacidades:
Tipo de memoria Capacidad en kb/mb
Tarjeta de memoria 256kb, 512kb y 1mb
Discos duros Hasta 8mb
Microprocesadores Hasta 12mb
Conceptos bsicos sobre sistemas de memorias de computadores.
Caractersticas de los sistemas de memoria.
Caractersticas claves de los sistemas de memoria de computadores.
Ubicacin Prestaciones
Procesador Tiempo de acceso
Interna (principal) Tiempo de ciclo
Externa (secundaria) Velocidad de transferencia
Capacidad Dispositivo fsico
Tamao de la palabra Semiconductor
Nmero de palabras Soporte magntico
Soporte ptico
Magneto ptico
Mtodo de acceso Caractersticas fsicas
Acceso secuencial Voltil/no voltil
Acceso directo Borrable/no borrable
Acceso aleatorio
Acceso asociativo
Organizacin
El trmino ubicacin indica si la memoria es interna o externa al computador. La
memoria interna suele identificarse con la memoria principal. Sin embargo hay adems
otras formas de memoria interna. El procesador necesita su propia memoria local en
forma de registros. Adems, la unidad de control del procesador tambin puede
necesitar su propi memoria interna. La memoria cach es tambin otro tipo de
memoria interna. La memoria externa consta de dispositivos perifricos de
almacenamiento, tales como discos y cintas, que son accesibles por el procesador a
travs de controladores de E/S.
Una caracterstica obvia de las memorias es su capacidad. Para memorias internas se
expresa normalmente en trminos de bytes (1 byte=8 bits) o de palabras. Longitudes
de palabras comunes son 8, 16 y 32 bits. La capacidad de las memorias externas se
suele expresar en bytes.
Un concepto relacionado es la unidad de transferencia. Para memorias internas, la
unidad de transferencia es igual al nmero de lneas de E/S de datos del mdulo de
memoria. A menudo es igual a la longitud de palabra, pero suele ser mayor, por
ejemplo 64, 128 o 256 bits.
Palabra: es la unidad natural de organizacin de la memoria. El tamao de la
palabra suele coincidir con el nmero de bits utilizados para representar
nmeros y con la longitud de las instrucciones.
Otro dispositivo entre tipos de memorias es el mtodo de acceso, que incluye las
siguientes variables:

Acceso secuencial: la memoria se organiza en unidades de datos llamados


registros. El acceso debe realizarse con una secuencia lineal especfica. Se hace
uso de informacin almacenada de direccionamiento que permite separar los
registros y ayudar en el proceso de recuperacin de datos. Se utiliza un
mecanismo de lectura/escritura compartida que debe ir trasladndose desde
su posicin actual a la deseada, pasando y obviando cada registro intermedio.
As pues, el tiempo necesario para acceder a un registro dado es muy variable.

Figura 2. Esquema del acceso secuencial

Acceso directo: como en el caso de acceso secuencial, el directo tiene asociado


un mecanismo de lectura/escritura. Sin embargo, los bloques individuales o
registros tienen una direccin nica basada en su direccin fsica. El acceso se
lleva a cabo mediante un acceso directo a una vecindad dada, seguido de una
bsqueda secuencial, bien contando, o bien esperando hasta alcanzar la
posicin final. De nuevo el tiempo de acceso es variable.
Figura 3. Esquema del acceso directo
Acceso aleatorio: cada posicin direccionalmente de memoria tiene un nico
mecanismo de acceso cableado fsicamente. El tiempo para acceder a una
posicin dada es constante e independiente de la secuencia de accesos previos.
Por tanto, cualquier posicin puede seleccionarse aleatoriamente y ser
direccionada y accedida directamente.

Figura 4. Esquema del acceso aleatorio


Asociativa: permite hacer una comparacin de ciertas posiciones de bits dentro
de una palabra buscando que coincidan con unos valores dados, y hacer esto
para todas las palabras simultneamente. Una palabra es por tanto recuperada
basndose en una porcin de su contenido en lugar de su direccin.
Figura 5. Asignacin de bloques de la Mp en la Mca con correspondencia totalmente asociativa.

Se utilizan tres parmetros de medida de prestaciones:

Tiempo de acceso: para memorias de acceso aleatorio es el tiempo que tarda


en realizarse una operacin de escritura o de lectura, es decir, el tiempo que
transcurre desde el instante en el que se presenta una direccin a la memoria
hasta que el dato, o ha sido memorizado, o est disponible para su uso. Para
memorias de otro tipo, el tiempo de acceso es el que tarda en situar el
mecanismo de lectura/escritura en la posicin deseada.

Figura 6. Esquema tiempo de acceso


Tiempo de ciclo de memoria: este concepto se aplica principalmente a las
memorias de acceso aleatorio y consiste en el tiempo de acceso y algn tiempo
ms que se requiere antes de que pueda iniciarse un segundo acceso a
memoria.
Velocidad de transferencia: es la velocidad a la que se pueden transferir datos
a, o desde, una unidad de memoria. Para memorias de acceso aleatorio
coincide con el inverso del tiempo del ciclo. Para otras memorias se utiliza la
siguiente relacin:
TN:
TN= TA+N/R tiempo de
medio de
escritura
o lectura
de N bits.
TA: tiempo de acceso medio.
R: velocidad de transferencia, en bits por segundo
(bps)
Se han empleado soportes fsicos muy diversos para las memorias. Las ms comunes
en la actualidad son las memorias semiconductoras, las memorias de superficie
magnfica, utilizadas para discos y cintas, y las memorias pticas y magneto-pticas.
Del almacenamiento de datos son importantes varias caractersticas fsicas. En
memorias voltiles la informacin se va perdiendo o desaparece cuando se desconecta la
alimentacin. En las memorias no voltiles la informacin, una vez grabada, permanece sin
deteriorarse hasta que se modifique intencionalmente, no se necesita la fuente de
alimentacin para retener la informacin.
En memorias de acceso aleatorio, su organizacin o estructura fsica en bits para formas
palabras.

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?

La cuestin del tamao: si se consigue hasta una cierta capacidad,


probablemente se desarrollaran aplicaciones que la utilicen.
La cuestin de la rapidez: para conseguir las prestaciones ptimas, la
memoria debe seguir al procesador. Es decir, cuando el procesador ejecuta
instrucciones, no es deseable que tenga que detenerse a la espera de
instrucciones o de operandos.
La cuestin del coste: en la prctica, el coste de la memoria debe ser
razonable con relacin a los otros componentes.
Existe un compromiso entre las tres caractersticas claves de coste, capacidad, y
tiempo de acceso. En todo el espectro de posibles tecnologas se cumplen las
siguientes relaciones:

A menor tiempo de acceso, mayor coste por bit.


A mayor capacidad, menor coste por bit.
A mayor capacidad, mayor tiempo de acceso.

Figura 7. Ilustra una jerarqua tpica

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).

El tipo de memoria ms rpida, pequea y costosa, lo constituyen los registros


internos al procesador. Descendiendo dos niveles, la memoria principal es el
principal sistema de memoria interna del computador. Cada posicin de memoria
principal tiene una nica direccin. La memoria principal es normalmente ampliada
con una cach, que es ms pequea y rpida. La cach no suele estar visible al
programador, y realmente tampoco al procesador. Es un dispositivo para escalonar
las transferencias de datos entre la memoria principal y los registros del procesador
a fin de mejorar las prestaciones. Las tres formas de memoria que acabamos de
describir son, normalmente, voltiles y de tecnologa semiconductora. El uso de
tres niveles aprovecha la variedad existente de tipos de memorias
semiconductoras, que difieren en velocidad y coste.
En la jerarqua pueden incluirse otras formas de memoria. Por ejemplo, los grandes
computadores de 1Mb incluyen una forma de memoria interna conocida como
almacenamiento extendido. Este utiliza una tecnologa semiconductora que es ms
lenta y menos costosa que la de la memoria principal, estrictamente hablando, esta
memoria no encaja en la jerarqua sino que es una ramificacin lateral: los datos
pueden transferirse entre la memoria principal y el almacenamiento extendido
pero no entre este y la memoria externa. Otras formas de memoria secundaria
incluyen los discos pticos y los magneto-pticos. Finalmente, mediante software
se pueden aadir ms niveles a la jerarqua. Una parte de la memoria principal
puede utilizarse como almacn intermedio (buffer) para guardar temporalmente
datos que van a ser volcados en disco. Esta tcnica, a veces denominada cach de
disco, mejora las prestaciones de dos maneras:

Las escrituras en disco se hacen por grupo. En lugar de muchas


transferencias cortas de datos, tenemos pocas transferencias largas. Esto
mejora las prestaciones del disco y minimiza la participacin del
procesador.
Algunos datos destinados a ser escritos como salidas pueden ser
referenciados por un programa antes de que sean volcados en disco. En ese
caso, los datos se recuperan rpidamente desde la cach software en lugar
de hacerlo lentamente de disco.
Principios bsicos de la memoria cach
El objetivo de la memoria cach es lograr que la velocidad de la memoria sea lo
ms rpida posible, consiguiendo al mismo tiempo un tamao grande al precio de
memorias semiconductoras menos costosas
Figura 9. Concepto de la memoria

La cach contiene una copia de partes de la memoria principal. Cuando el


procesador intenta leer una palabra de memoria, se hace una comprobacin para
determinar si la palabra est en la cach. Si es as, se entrega dicha palabra al
procesador. Si no, un bloque de memoria principal, consistente en un cierto
nmero de palabras, se transfiere a la cach y despus la palabra es entregada al
procesador.

Figura 10. Indica la estructura memoria cach/principal

El procesador genera la direccin, RA, de una palabra a leer. Si la palabra est en la


cach, es entregada al procesador. Si no, el bloque que contiene dicha palabra se
carga en la cach, y la palabra despus es llevada al procesador. La operacin se
realiza en paralelo.
Figura 11. Operacin de lectura de cach

La cach conecta con el procesador mediante lneas de datos, de control y de


direcciones. Las lneas de datos y de direcciones conectan tambin con buffers de
datos y de direcciones que las comunican con un bus del sistema a travs del cual
se accede a la memoria principal. Cuando ocurre un acierto de cach, los buffers de
datos y de direcciones se inhabilitan, y la comunicacin tiene lugar solo entre
procesador y cach, sin trfico en el bus. Cuando ocurre un fallo de cach, la
direccin deseada se carga en el bus del sistema y el dato es llevado, a travs del
buffer de datos, tanto a la cach como al procesador. En otras formas de
organizacin, la cach se interpone fsicamente entre el procesador y la memoria
principal para todas las lneas de datos, direcciones y control. En este caso, frente a
un fallo de cach, la palabra deseada es primero leda por la cach y despus
transferida desde sta al procesador.
Figura 12. Organizacin tpica de cach

Elementos de diseo de la cach


En esta seccin se revisan los parmetros de diseo de la cach y se muestran
algunos resultados tpicos. Aunque hay muy diversas implementaciones de cach,
existen unos cuantos criterios de diseo que sirven para clasificar y diferenciar
entre arquitecturas de cach.
Tamao de cach Poltica de escritura

Escritura inmediata
Postescritura
Escritura nica
Funcin de correspondencia Tamao de lnea
Directa
Asociativa
Asociativa por conjuntos
Algoritmo de sustitucin Nmero de cachs

Utilizado menos recientemente Uno o dos niveles


(LRU) Unificada o partida
Primero en entrar-primero en
salir (FIFO)
Utilizado menos
frecuentemente (LFU)
Aleatorio

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.

Figura 13. Tamaos de cach de algunos procesadores.

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.

Figura 14. Ejemplo para los tres casos

Correspondencia directa: la tcnica ms sencilla; consiste en hacer corresponder


cada bloque de memoria principal a solo una lnea posible de cach. La
correspondencia se expresa como:

i=j mdulo m

i=nmero de lnea de cach

j=nmero de bloque de memoria principal


La funcin de correspondencia se implementa fcilmente utilizando
m=nmero la en
de lneas direccin.
la cach Desde el
punto de vista del acceso a cach, cada direccin de memoria principal puede verse como
dividida en tres campos. Los w bits menos significativos identifican cada palabra dentro de
un bloque de memoria principal; en la mayora de las mquinas actuales, el
direccionamiento es a nivel de bytes. La lgica de la cach interpreta estos s bits como un
etiqueta de s-r bits (parte ms significativa) y un campo de lnea de r bits; este ltimo
campo identifica una de las m=2r lneas de la cach. El resultado es que se hacen
corresponder bloques de memoria principal a lneas de cach de la siguiente manera:
Lnea de cach Bloques de memoria principal asignados
0 0,m,2m,,25-m
1 1,m+1,2m+1,,25-m+1
. .

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.

Figura 16. Ejemplo de correspondencia directa.

La tcnica de correspondencia directa es sencilla y poco costosa de implementar. Su


principal desventaja es que hay una posicin concreta de cach para cada bloque dado.
Por ello, si un programa referencia repetidas veces a palabras de dos bloques diferentes
asignados en la misma lnea, dichos bloques se estaran intercambiando continuamente en
la cach, y la tasa de aciertos sera baja [un fenmeno conocido con el nombre de vapuleo
(thrashing)\.

Correspondencia asociativa: la correspondencia asociativa supera la desventaja de


la directiva, permitiendo que cada bloque de memoria principal puede cargarse en
cualquier lnea de la cach. En este caso, la lgica de control de la cach interpreta
una direccin de memoria simplemente como una etiqueta y un campo de palabra.
El campo de etiqueta identifica nicamente un bloque de memoria principal. Para
determinar si un bloque est en la cach, su lgica de control debe examinar
simultneamente todas las etiquetas de lneas para buscar una coincidencia.

Figura 17. Organizacin de cach totalmente asociativa.

Longitud de las direcciones = (s + w) bits


Nmero de unidades direccionables = 2S+W palabras o bytes
Tamao de bloque = tamao de lnea = 2W palabras o bytes 2 s+w
Nmero de bloques en memoria principal = = 2S
Nmero de lneas en cach = indeterminado
Tamao de la etiqueta = s bits
Correspondencia asociativa por conjuntos: es una solucin de compromiso que
recoge lo positivo de las correspondencias directa y asociativa, sin presentar sus
desventajas. En este caso la cach se divide en v conjuntos, cada uno de k lneas.
Las relaciones que se tienen son:
m=vxk
i=j mdulo v
En este caso se denomina correspondencia asociativa por conjuntos de k vas. Con la
asignacin asociativa por conjuntos, el bloque B, puede asignarse en cualquiera de las k
lneas del conjunto i. En este caso, la lgica de control de la cach interpreta una direccin
de memoria como tres campos: etiqueta, conjunto y palabra. Los d bits de conjunto
especifican uno de los 25 bloques de memoria principal. Con la correspondencia asociativa
por conjuntos de k vas, la etiqueta de una direccin de memoria es mucho ms corta y se
compara solo con las k etiquetas dentro de un mismo conjunto.

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.

S-ar putea să vă placă și