You are on page 1of 40

SISTEMA DE MEMORIA

1. INTRODUCCION

La memoria es un bloque fundamental del computador, cuya misin


consiste en almacenar los datos y las instrucciones.
La memoria principal, es el rgano que almacena los datos e
instrucciones de los programas en ejecucin.
A veces la memoria principal no tiene la suficiente capacidad para
contener todos los datos e instrucciones, en cuyo caso se precisan otras
memorias auxiliares o secundarias,
que funcionan como perifricos del sistema y cuya informacin se
traspasa a la memoria principal cuando se necesita.
La memoria solo puede realizar dos operaciones bsicas: lectura y
escritura.
En la lectura, el dispositivo de memoria debe recibir una direccin de la
posicin de la que se quiere extraer la informacin depositada
previamente.
En la escritura, adems de la direccin, se debe suministrar la
informacin que se desea grabar.

1.1. EVOLUCION DE LAS MEMORIAS


En las calculadoras de la dcada de los 30 se emplean tarjetas perforadas
como memorias. La direccin de las posiciones quedaba determinada por la
posicin de ruedas dentadas. Luego se emplearon rels electromagnticos.
El computador ENIAC utilizaba, en 1946, vlvulas electrnicas de vaco para
construir sus biestables que actuaban como punto de memoria. Adems,
tena una ROM de 4 bits construida a base de resistencias.
Al comienzo de la dcada de los 50, se usaron las lneas de retardo de
mercurio con 1 Kbit por lnea, como memoria. Igualmente se emple el tubo
de Williams, que tenia una capacidad de 1200 bits y consista en un tubo de
rayos catdicos con memoria.
En UNIVAC I introdujo en 1951 la primera unidad comercial de banda
magntica, que tenia una capacidad de 1,44 Mbit y una velocidad de 100
pulgadas/s.
El primer computador comercial que uso memoria principal al tambor
magntico fue el IBM 650 en 1954. Dicho tambor giraba a 12500 r.p.m y
tena una capacidad de 120 Kbits.
En 1953, el Mit dispuso de la primera memoria operativa de ferritas, que fue
muy popular hasta mediados de los aos 70.
Fue IBM, en 1968, quien diseo la primera memoria comercial de
semiconductores. Tena una capacidad de 64 bits.

Fig. Memoria interna de un Computador

2. OBJETIVOS

Conocer las caractersticas generales de los diferentes tipos de


memoria cache que aparecen en un computador digital.

Analizar las alternativas de diseo que determinan el comportamiento


de una cache,
resaltando la funcin de correspondencia, las polticas de bsqueda y
sustitucin de
bloques, y el mantenimiento de la coherencia con memoria principal
en las escrituras.
Estudiar los factores que ms influencia tienen en el rendimiento de
una cache junto a las alternativas de diseo hardware y software que
permiten optimizar dichos factores.
Analizar el sistema de memoria cache de algunos procesadores,
especialmente el del Pentium 4.

3. MEMORIA CACHE
Debido a la gran velocidad alcanzada por los procesadores, la Memoria
Principal del
computador no es lo suficientemente rpida para almacenar y transmitir los
datos que el
procesador necesita, por lo que tendra que esperar a que la memoria
estuviera disponible y
el trabajo se atrasara. Para evitarlo, se usa una memoria muy rpida,
estratgicamente
situada entre el micro y la RAM: la memoria cache.
La velocidad de la memoria se ha distanciado progresivamente de la
velocidad de los
procesadores.

En la figura siguiente se muestran las grficas de la evolucin


experimentada por el rendimiento de las CPUs y las memoria DRAM (soporte
de la memoria principal de los computadores actuales) en los ltimos aos.
Las curvas muestran que el rendimiento de la CPU aumento un 35% anual
desde 1980 hasta 1987; y un 55% anual a partir de ese ao. En cambio la
memoria ha mantenido un crecimiento sostenido del 7% anual desde 1980

hasta la fecha. Esto significa que si se mantiene la tendencia, el diferencial


de rendimiento no solo se mantendr sino que aumentara en el futuro. Para
equilibrar esta diferencia se viene utilizando una solucin arquitectnica: la
memoria cache
Cuando una computadora trabaja, el microprocesador opera en ocasiones
con un nmero reducido de datos, pero que tiene que traer y llevar a la
memoria en cada operacin. Si situamos en medio del camino de los datos
una memoria intermedia que almacene los datos ms usados, los que casi
seguro necesitara el procesador en la prxima operacin que realice, por lo
tanto ahorrara mucho tiempo del trnsito y acceso a la lenta memoria RAM;
esta es la segunda utilidad de la cache. Esta memoria es unas 5 o 6 veces
ms rpida que la RAM
La utilizacin de este tipo de memorias no es sino la generalizacin de un
principio de uso comn en la vida diaria; poner ms a mano las cosas de uso
ms frecuente. Y se basa en dos suposiciones que generalmente resultan
ciertas:Los procesadores tienden a utilizar las mismas instrucciones y (en
menor medida), los mismos datos repetidamente.La informacin necesitada
se encuentra almacenada de forma adyacente, o cuando menos muy
cercana, en memoria o disco.
3.1. TIPOS DE CACHE
Desde el punto de vista del hardware, existen dos tipos de memoria cache;
interna y externa. La primera, denominada tambin cache primaria, cache
de nivel 1 o simplemente cache L1.
La segunda se conoce
tambin como cache secundaria, cache de nivel 2 o cache L2.
Desde el punto de vista funcional, existen caches especficas de algunos
dispositivos, por
ejemplo, de disco. Tambin se distingue entre cache de lectura y de
escritura.
a) Cache interna
Es una innovacin relativamente reciente; en realidad son dos, cada una con
una misin
especifica: Una para datos y otra para instrucciones. Est incluida en el
procesador junto
con su circuitera de control, lo que significa tres cosas: Comparativamente
es muy cara;
extremadamente rpida y limitada en tamao (los 386 tenan 8 KB, el 486
DX4 16 KB, y los
primeros Pentium 8 KB en cada una de las caches internas). Como puede
suponerse, su
velocidad de acceso es comparable a la de los registros, es decir,
centenares de veces ms
rpida que la RAM.

b) Cache externa
Es ms antigua que la interna, dado que hasta esta fecha "relativamente"
reciente, estas
ltimas eran impracticables. Es una memoria de acceso rpido incluida en la
placa base
que dispone de su propio bus y controlador independiente que intercepta las
llamadas a
memoria antes que sean enviadas a la RAM (Buses locales).
La cache externa tpica es un banco SRAM ("Static Random Access
Memory") de entre
128 y 256 KB. Esta memoria es considerablemente ms rpida que la DRAM
("Dynamic
Random Access Memory") convencional, aunque tambin mucho ms cara
[5] (tenga en
cuenta que un aumento de tamao sobre los valores anteriores no
incrementa proporcionalmente la eficacia de la memoria cache).
Actualmente (2004) la tendencia es
incluir esta cache en el procesador. Los tamaos tpicos oscilan entre 256 KB
y 1 MB. CJ En 1.997, con la introduccin del procesador Pentium II, Intel
abandono el denominado zcalo 1
utilizado hasta entonces en sus procesadores, en favor del denominado Slot1. La razn argida era precisamente la inclusin de la cache L2 en la
capsula del procesador.
c) Cache de disco
Adems de las anteriores, que son de propsito general, existe una cache
de funcionalidad especifica que se aloja en memoria RAM estndar; es la
cache de disco. Destinada a contener los datos de disco que probablemente
sean necesitados en un futuro prximo y los que deben ser escritos. Si la
informacin requerida est en cache, se ahorra un acceso a disco, lo que es
centenares de veces ms rpido (recuerde que los tiempos de acceso a RAM
se miden en nanosegundos y los de disco en milisegundos ( Unidades de
medida).

El funcionamiento de la cache de disco se basa en dos esquemas de


operacin. La lectura
adelantada ("Read-ahead") y la escritura retrasada ("Write-behind"). La
primera consiste en
anticipar lo que se necesitara de forma inmediata y traerlo a la cache. Por
su parte, la escritura
retrasada consiste en mantener los datos en cache hasta que se producen
momentos de
desocupacin del sistema de disco. En este caso la cache acta como
memoria tampn o
"buffer" intermedio, y no se obliga al subsistema a realizar fsicamente
ninguna escritura, con lo
que las cabezas quedan libres para nuevas lecturas.
Puesto que los caches de disco de escritura retrasada mantienen los datos
en memoria voltil
despus que "supuestamente" se han escrito en el dispositivo, una cada
accidental del sistema,
por fallo de energa o apagado intempestivo, puede producir perdidas de los
datos alojados en la
cache en ese momento (es esta una de las razones por las que los sistemas
Windows y Linux
exigen un proceso especial de apagado, que a veces tarda unos segundos,
en los que
observamos una intensa actividad del sistema de disco).

El tiempo de acceso al banco de registros debe ser cercano al periodo de


reloj original

Fig. Temporizacion de la Memoria Cache

3.2. JERARQUIA DE LA MEMORIA


Junto con la expansin del espacio de memoria y el aumento de velocidad
de los procesadores aparece el problema de performance de la memoria.
Las memorias grandes de bajo consumo (DRAM semiconductoras,
capacitores) tienen desempeos inferiores a las memorias basadas en
transistores (SRAM).
VELOCIDAD - COSTO - VOLUMEN POTENCIA

A medida que se va de arriba hacia abajo, sucede lo siguiente:

Disminuye el coste por bit

Aumenta la capacidad

Aumenta el tiempo de acceso

Disminuye la frecuencia de acceso a la memoria desde la CPU

La clave de la solucin est en este ltimo punto: la decreciente frecuencia


de acceso. Esto
simplemente quiere decir que no se accede a todos los datos con la misma
frecuencia; obviamente
se accede ms a los datos del programa en ejecucin que a los de uno que
no se ejecuta desde
hace un ao; y de igual manera, en un momento dado se accede ms a los
datos de una expresin
que se est evaluando en ese preciso instante que a otros datos del
programa.

3.3. PRINCIPIOS BSICOS DE LAS MEMORIAS CACHE


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.

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. Debido al fenmeno de localidad de las
referencias, cuando un bloque de datos es capturado por la cach para
satisfacer una referencia a memoria simple, es probable que se hagan
referencias futuras a la misma posicin de memoria o a otras palabras del
mismo bloque.
La memoria principal consta de hasta 2npalabra direccionables, teniendo
cada palabra una nica direccin de n bits. Esta memoria la consideramos
dividida en un nmero de bloques de longitud fija, de K palabras por bloque.
Es decir, hay M = 2n/K bloques. La cach consta de C lneas. Cada lnea
contiene K palabras, ms una etiqueta de unos cuantos bits;
denominndose tamao de lnea al nmero de palabras que hay en la lnea.
El nmero de lneas es considerablemente menor que el nmero de bloques
de memoria principal (C < < M). En todo momento, un subconjunto de los
bloques de memoria reside en lneas de la cach. Si se lee una palabra de
un bloque de memoria, dicho bloque es transferido a una de las lneas de la
cach. Ya que hay ms bloques que lneas, una lnea dada no puede
dedicarse unvoca y permanentemente a un bloque. Por consiguiente, cada
lnea incluye una etiqueta que identifica qu bloque particular almacena.

La etiqueta es usualmente una porcin de la direccin de memoria principal,


como describiremos ms adelante en esta seccin.

Fig. Estructura memoria Cache


Para implementar el mecanismo de actualizacin de la cach con los datos
con mayor probabilidad de ser refernciados se divide la memoria principal
en bloques de un nmero de bytes (4,8,16 etc.) y la cach en marcos de
bloque o lneas de igual tamao. El bloque ser, pues, la unidad de
intercambio de informacin entre la memoria principal y la cach, mientras
que entre la cach y la CPU sigue siendo la palabra. El directorio contiene la
informacin de qu bloques de Mp se encuentran ubicados en Mc

Fig. estructura memoria cache en la transferencia de datos


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

Fig. Diagrama de flujo de lectura de cache

Fig. Organizacin memoria cache

Su direccin generada por CPU es igual a la direccin de una entrada cache,


cuando tenemos un acierto de cache; el dato de entrada cache es buena.
3.4. FUNCIN DE CORRESPONDENCIA
Existen tres funciones de correspondencia para definir la posible ubicacin
de un bloque de memoria principal (Mp) en la memoria cach (Mc): directa,
asociativa y asociativa por conjuntos. En el primer caso un bloque de Mp
slo puede ubicarse en una lnea de la cach, aquella que coincide con el
bloque cuando superponemos Mc sobre Mp respetando fronteras de Mc, es
decir, sobre espacios de Mp que son mltiplos del tamao de Mc. En la
correspondencia asociativa un bloque puede ubicarse en cualquier lnea de
Mc. Finalmente, la correspondencia asociativa por conjuntos es un
compromiso entre las dos anteriores.
a) Correspondencia Directa
Una Mc de correspondencia directa se puede implementar sobre una RAM
con longitud de palabra suficiente para ubicar un bloque y los bits de
etiqueta (directorio), tal como se muestra en la siguiente figura:

Si tag (gen por direccin) es igual

a tag(entrada apuntada por ndice


en cache) y el bit esta activo
tenemos ACIERTO DE CACHE
d corresponde a nmero de bytes en el bloque
indice corresponde a nmero de bloques en cache
tag es lo que resta de direcin

En una operacin de lectura se lee la palabra completa de la RAM, es decir,


la lnea y la etiqueta. Si la etiqueta leda coincide con la procedente de la
direccin fsica, significa que la lnea contiene la palabra de Mp referenciada
por dicha direccin fsica: se produce un acierto de cach. En este caso con
los w bits de palabra se selecciona la palabra referenciada dentro de la
lnea. Si no coinciden las etiquetas, significa que Mc no contiene el bloque
de Mp al que pertenece la palabra referenciada, por lo que se produce un
fallo de cach.
Es rpido y relativamente fcil de implementar. Se requiere exactamente un
comparador, un multiplexor (dos en este diagrama, donde la etiqueta y los
datos son separados, pero esto no es un requisito difcil en el diseo), y
alguna lgica para seleccionar slo el contenido lnea de cach vlida. El
comparador es complejo debido a los requisitos de velocidad, pero slo hay
uno de ellos ahora. La complejidad real en este enfoque radica en los

multiplexores. El nmero de transistores en un simple multiplexor crece con


O (log N), donde N es el nmero de lneas de cach. El nmero total de
transistores puede crecer lentamente con un tamao de cach cada vez que
hace esta solucin muy atractiva. Pero tiene un inconveniente: slo funciona
bien si las direcciones utilizadas por el programa se distribuyen de manera
uniforme con respecto a los bits utilizados para el mapeo directo. Si no lo
son, y esto es generalmente el caso, algunas entradas de cach son muy
usadas y por lo tanto desalojado varias veces mientras que otros apenas se
utilizan en absoluto o se quedan vacos.

b) Correspondencia Asociativa
El directorio de una Mc de correspondencia asociativa se puede
implementar con una memoria asociativa con tantas palabras como lneas
tenga Mc. Las lneas se soportan sobre un array de memoria con longitud de
palabra suficiente para ubicar un bloque.
Cmo encontramos un bloque de memoria en una memoria cach
asociativa (con tamao de bloque 1 palabra)?

Se divide el nmero de bloques de memoria por el nmero de


conjuntos para obtener el ndice en la cach.

Todas las etiquetas en el conjunto contra la etiqueta del bloque de


memoria.

Si cualquier etiqueta coincide, un acierto se ha producido y la entrada


de datos correspondiente contiene el bloque de memoria.

Si ninguna etiqueta coincide, se ha producido un fallo.

Para cada lnea de cach se necesita un comparador para comparar la


etiqueta de gran tamao.

La letra junto a cada conexin indica la anchura en bits. Si no se da ninguno


es una nica lnea de bits. Basndose en el resultado, el contenido de la
lnea de cach apropiada se selecciona y se pone a disposicin. Esto
requiere la fusin de tantos conjuntos de lneas de datos S. El nmero de
transistores necesarios para implementar un nico comparador es grande
especialmente puesto que debe trabajar muy rpido. La nica manera de
ahorrar en el nmero de comparadores es reducir el nmero de ellos
mediante la comparacin de forma iterativa en las etiquetas.
Tal como se muestra en la siguiente figura

La memoria asociativa contiene las direcciones de todos los bloques de Mp


ubicados en cada momento en Mc. Opera realizando una comparacin
simultnea de su contenido con el campo de etiqueta de la direccin fsica.
c) Correspondencia Asociativa por Conjuntos
Una Mc de correspondencia asociativa por conjuntos de v conjuntos se
puede implementar como k mdulos de correspondencia directa en paralelo
cada uno con v lneas. Los conjuntos lo formaran las lneas que ocupan
idntica posicin en cada mdulo.
Si dibujamos Mp dividida en zonas consecutivas de tamao 32 KB para
facilitar la correspondencia de los bloques de Mp y los marcos de bloque de
Mc, podremos representar fcilmente parte de un posible contenido de Mc

con correspondencia asociativa por conjuntos de dos vas en un instante


determinado
Esto es similar a la cach de correlacin directa. Pero en lugar de tener slo
un elemento por cada valor fijado en la memoria cach de un pequeo
nmero de valores se almacena en cach para el mismo valor de ajuste. Las
etiquetas para todos los miembros del conjunto se comparan en paralelo,
que es similar al funcionamiento de la memoria cach totalmente
asociativa.
El tiempo el tamao de la memoria cach no est limitada por el nmero de
comparadores que pueden ser implementados en paralelo. Si la cach crece
es slo el nmero de columnas que aumenta, no el nmero de filas. El
nmero de filas slo aumenta si se incrementa la asociatividad de la
memoria cach. los procesadores de hoy en da estn utilizando los niveles
de asociatividad de hasta 16 para cachs L2 o superior. cachs L1 por lo
general llegar a funcionar con 8

3.5. POLITICA DE SUSTITUCION


a) LRU (Least-Recently Used) Menos Recientemente Utilizado
Esta tcnica sustituye el bloque que se ha mantenido en la cache por ms
tiempo sin haber sido referenciado.

Este algoritmo es probablemente el que tiene mas tasa de aciertos.

b) FIFO (First-in First-out) Primero en Entrar. Primero en Salir

Este algoritmo sustituye aquel bloque que ha estado ms tiempo en cache.

Si la organizacin de la cache es asociativa por conjunto se sustituye


la lnea en cada conjunto.
Esto se puede implementar con una tcnica de Round-Robin o buffer
circular.

c) LFU (Least- Frecuentlv Used) Menos Frecuentemente Utilizado


Sustituye aquel bloque que ha experimentado menos referencias.

Se implementa asociando un contador a cada linea.

d) Aleatoria
Esta tcnica no se basa en el grado de utilizacion del bloque, consiste
simplemente en
escoger una lnea al azar(aleatoria) entre las posibles candidatas.
3.6.

POLITICA DE ESCRITURA

Antes de que pueda ser reemplazado un bloque que est en la cache, es


necesario considerar si
ha sido o no alterado en cache pero no en memoria principal. Si ha sido
modificado, esto significa que se ha realizado al menos una operacin de
escritura sobre una palabra de la lnea de cache.
Hay dos problemas:
1).- Un mdulo de E/S puede leer/escribir directamente de/en memoria.
2).- Si se tiene varios CPU conectados al mismo bus con caches
independiente.
a) Escritura Inmediata

Todas las operaciones de escritura se realizan en Mc y Mp


Inconveniente: genera un trfico importante a Mp
Solucin: utilizacin de un buffer de escritura (alpha 21064)

b) Post-Escritura:

Las actualizaciones se hacen solo en Mc, 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.
Los mdulos de E/S acceden a la cache en vez de a memoria
principal, lo que origina
cuello de botella en cache.

c) Asignacin en escritura:

El bloque se ubica en Mc cuando ocurre el fallo de escritura y a


continuacin se opera como en un acierto de escritura.
4. MEMORIA ASOCIATIVA
En una memoria asociativa, una palabra de datos no se obtiene por
suministrar una direccin que especifica la ubicacin de la palabra de datos
en memoria. En su lugar, un descriptor de identificacin se proporciona a la
memoria, la memoria es luego buscado hasta que se encuentre una
coincidencia exacta entre la descriptor presentado y un descriptor asociado
con una palabra de datos. Cuando se encuentra una coincidencia, la palabra
de datos correspondiente se convierte en el deseado salida de la memoria.
Un descriptor puede ser parte de cada dato de palabra oo los descriptores
pueden se almacenados por separado . La mente humana es a menudo
considerado de como una memoria asociativa .
Las memorias asociativas secuenciales de bsqueda son tiles en los
niveles de aplicacion en, por informacin . Como un componente de
hardware que debe ser diseado en los sistemas de hardware ms
complejos , que son principalmente interesado en la memoria asociativa de
bsqueda combinatoria . Consideramos el diseo de una memoria
asociativa con la bsqueda combinatoria de 2n palabras , cada uno con m
bits de datos.
La informacin puede ser almacenada en AA y AM partir de los vectores de
entrada lneas AAIN y AMIN . La direccin en ambas matrices de una palabra
de datos y descriptor pueden estar contenidos en el registro de n bits
WRTADD . Los datos son para leerse de manera asociativa AM . AM
corresponde al descriptor en AA , cualquiera , que coincide exactamente con
el contenido del registro bits de r bits , DSCRPT , van a aparecer en el vector
de AMOUT.

5. MEMORIA VIRTUAL
5.1. CONCEPTOS BASICOS
La memoria virtual es una tcnica para proporcionar la simulacin de un
espacio de
memoria mucho mayor que la memoria fsica. Esta "ilusin" permite que los
programas se hagan sin tener en cuenta el tamao exacto de la memoria
fsica.
La ilusin de la memoria virtual esta soportada por el mecanismo de
traduccin de la memoria, junto con una gran cantidad de almacenamiento
rpido en disco duro. As en
cualquier momento el espacio de direcciones virtual hace un seguimiento de
tal forma que
una pequea parte, este en memoria real y el resto almacenado en el disco,
y puede
ser referenciado fcilmente.
Debido a que solo la parte de memoria virtual que este almacenada en la
memoria
principal, es accesible a la CPU, segn un programa va ejecutndose, la
proximidad de
referencias a memoria cambia, necesitando que algunas partes de la
memoria virtual se
traigan a la memoria principal desde el disco, mientras que otras ya
ejecutadas, se pueden
volver a depositar en el disco (archivos de paginacin).
La memoria virtual ha llegado a ser un componente esencial de la mayora
de los S.O
actuales. Y como en un instante dado, en la memoria solo se tienen unos
pocos fragmentos
de un proceso dado, se pueden mantener ciertos procesos en la memoria.

La memoria virtual tambin simplifica la carga del programa para su


ejecucin llamado
reubicacin, este procedimiento permite que el mismo programa se ejecute
en cualquier
posicin de la memoria fsica.
5.2. OBJETIVOS

Los programas suelen ser muy grandes y no caben enteros en


memoria fsica.

En un sistema multiusuario/multitarea, varios programas comparten


la misma CPU: es necesario que todos ellos estn en memoria fsica
al mismo tiempo, y obviamente, no caben.

5.3. FUNCIONAMIENTO
La implementacin de memoria virtual es realizada a travs de la tcnica de
paginacin
bajo demanda. En la paginacin bajo demanda los procesos residen en un
dispositivo de
disco y son puestos en memoria principal cuando es necesario cargarlos
para ejecutar.
La carga del proceso en memoria no es total, sino que implementa un
cargador
perezoso (lazy swapper), que cargara las pginas segn se vayan
necesitando.
Utilizar un esquema de este tipo requiere el conocimiento de las pginas
que estn
activas en memoria. Para ello se utiliza el valid-invalid bit, que consiste en
agregar a la
tabla de pginas un nuevo campo (bit de validez), que indique para cada
entrada, si la
pgina se encuentra o no en memoria. A1 inicio, la tabla de pginas indicara

que
ninguna pgina est en memoria.
Los programas suelen tener cdigo para manejar condiciones de error inusuales. Ya que
estos errores raramente se producen en la prctica, este cdigo casi nunca se ejecuta.
A veces, las tablas, listas o matrices se declaran con ms tamao del que luego realmente
necesitan. Una matriz se puede declarar de 100 por 100 aunque raramente ocupe ms de 10
por 10; o un ensamblador puede tener una tabla para albergar a 3000 smbolos, aunque la
media de los programas no tengan ms de 200.
La memoria virtual es una tcnica que permite la ejecucin de procesos que pueden no estar
completamente en memoria principal.
La habilidad de poder ejecutar un programa que slo est parcialmente en memoria principal
acarrea los siguientes beneficios:
El tamao de un programa no est limitado por la cantidad de memoria fsica disponible. Los
usuarios escriben programas contando con un espacio de direcciones virtuales
extremadamente grande.
Debido a que cada programa puede necesitar para ejecutarse menos memoria que la que
ocupa su tamao total, se pueden cargar ms programas en memoria para ejecutarlos al
mismo tiempo, con la consiguiente mejora en el aprovechamiento de la CPU.
Ya que de cada programa solamente hay que cargar la parte necesaria en un momento dado,
a la hora de cargar un proceso o expulsarlo a disco, se necesitan menos operaciones
de E/S debidas al intercambio, por lo que se consigue una ejecucin global ms rpida.
Para implementar los sistemas de memoria virtual, normalmente se utiliza la paginacin.
Tambin se puede implementar mediante segmentacin, como lo hace el sistema OS/2 de
IBM, pero los algoritmos son bastante ms complejos que los de la paginacin, pues a
diferencia de las pginas, los segmentos son de tamao variable.

La siguiiente figura muestra:


La direccion vrtual esta compuesta de direcciones fisicas del disco
duro como de la memoria RAM

5.4. PAGINACION
En la gestin de memoria con intercambio, cuando haba que pasar un proceso a ejecucin,
era necesario traer el proceso entero de disco a memoria principal.
Con memoria virtual hemos dicho que no se trae todo el proceso, sino que cuando se hace
referencia a una direccin de memoria virtual cuya correspondiente memoria fsica reside en
disco, se trae el contenido de disco a RAM.
Quiere esto decir que la unidad de intercambio de memoria es el byte? Si lo fuera, dara
lugar a que continuamente se estuviesen generando operaciones de E/S, lo cual sera poco
eficaz. Claramente, parece ms conveniente utilizar bloques ms grandes, para aprovechar de
manera ms eficiente cada operacin de E/S.

Tablas de pginas
Cada pgina tiene un nmero que se utiliza como ndice en la tabla de
pginas, lo que da por resultado el nmero del marco correspondiente a esa
pgina virtual. Si el bit presente / ausente es 0, se provoca un sealamiento
(trap) hacia el sistema operativo. Si el bit es 1, el nmero de marco que
aparece en la tabla de pginas se copia en los bits de mayor orden del
registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin
modificaciones de la direccin virtual de entrada.
Juntos forman una direccin fsica de 15 bits. El registro de salida se coloca
entonces en el bus de la memoria como la direccin en la memoria fsica.
Estructura de la tabla de paginas

Proteccin: Expresa los permisos de acceso del proceso. En caso de


tener permiso para la operacin de lectura/escritura que se va a
realizar, se consulta el resto de los campos.

Bit de Presencia: Indica si la pgina est presente en memoria


principal o no. Si se encuentra en RAM, tambin tienen sentido los
siguientes campos.

Marco Ocupado: Si la pgina se encuentra en memoria principal,


este campo expresa el marco que la contiene.

Modificada (Bit de ensuciada): Este campo indica si el contenido


de la pgina ha sido modificado desde que se trajo de la memoria
secundaria.

Referenciada: Este campo booleano se pone a cierto cada vez que


se hace referencia a cualquier direccin de la pgina. Lo utiliza el

sistema operativo para ayudar a los algoritmos de sustitucin de


pginas.
Caractersticas de la paginacin

El espacio de direcciones lgico de un proceso puede ser no contiguo.

Se divide la memoria fsica en bloques de tamao fijo llamados


marcos (frames).

Se divide la memoria en bloques de tamao llamados pginas.

Se mantiene informacin en los marcos libres.

Para correr un programa de en pginas de tamao, se necesitan


encontrar n marcos y cargar el programa.

Se establece una tabla de pginas para trasladar las direcciones


lgicas a fsicas.

Se produce fragmentacin interna.

Ventajas de la paginacin

Es posible comenzar a ejecutar un programa, cargando solo una parte


del mismo en memoria, y el resto se cargara bajo la solicitud.

No es necesario que las paginas estn contiguas en memoria, por lo


que no se necesitan procesos de compactacin cuando existen
marcos de pginas libres dispersos en la memoria.

Es fcil controlar todas las pginas, ya que tienen el mismo tamao.

El mecanismo de traduccin de direcciones (DAT) permite separar los


conceptos de espacio de direcciones y espacios de memoria. Todo el
mecanismo es transparente al usuario.

Desventajas de la paginacin

El costo de hardware y software se incrementa, por la nueva


informacin que debe manejarse y el mecanismo de traduccin de
direcciones necesario. Se consumen muchos ms recursos de
memoria, tiempo en el CPU para su implantacin.

En estas mquinas hay que diferenciar, pues, entre el espacio de


direcciones virtuales generado por la CPU y el espacio de direcciones fsicas
o reales existentes en memoria principal y determinado por el nmero de
lneas del bus de direcciones. El espacio virtual se soporta sobre un disco
con la ayuda de un mecanismo de traduccin que genera la direccin fsica
de memoria principal a partir de la virtual. En la siguiente figura hemos
representado el mecanismo de traduccin de direcciones virtuales (DV) a
direcciones fsicas (DF).

Fig. Traduccion de Memorias Virtuales a Memorias Fisicas


Tanto la memoria principal como la memoria del disco se dividen en pginas
de igual
tamao. El nmero de pginas de la memoria virtual en general es mayor
que el nmero de
pginas disponibles de la memoria fsica. Por este motivo, en cada momento
slo las copias de un conjunto de pginas virtuales del programa residen en
la memoria fsica. Este conjunto recibe el nombre de conjunto de trabajo o
conjunto activo, y resulta relativamente estable a lo largo del tiempo,
debido a la localidad referencial que manifiestan los programas. Esta es la
clave del buen funcionamiento de la memoria virtual, al igual que ocurra
con la memoria cache.
Los bits de una DV se consideran divididos en dos campos, el nmero de
pgina virtual
(NPV) los ms significativos, y el desplazamiento dentro de la pgina (DP),
los menos significativos.
El nmero de bits del campo DP lo determina el tamao de pgina (n de
bits de DP = log2 tamao de pgina). El nmero de bits del campo NPV lo

determina el nmero de pginas virtuales (n de


bits de NPV = log2 n de pginas virtuales). Los bits de una DF se
consideran divididos tambin en
dos campos, el nmero de pgina fsica (NPF) los ms significativos, y el
desplazamiento dentro de
la pgina (dp), los menos significativos. el nmero de bits del campo dp de
una df es el mismo
que el de una dv, puesto que las pginas tienen igual tamao en mv y mf. el
nmero de bits del
campo numero de pagina fisicas lo determina el nmero de pginas fsicas
de mf (n de bits de npf = log2 n de pginas fsicas).
las dvs generadas por la cpu se traducen a dfs con la ayuda de una Tabla de
Pginas
(TP). Esta tabla contiene en principio tantas entradas como pginas existen
en la MV, y la posicin
en la tabla de una entrada correspondiente a una pgina virtual concreta
coincide con su NPV.
Cada entrada contiene un primer campo de bits de control, de los que por el
momento haremos
referencia tan slo a uno, el bit de presencia (p). si este bit est activo (por
ejemplo a 1) significa
que la pgina virtual correspondiente a esa entrada est presente en la mf,
y en este caso el
segundo campo de la entrada contiene el correspondiente numero de
pagina fisicas. si el bit p est inactivo (por ejemplo a 0) significa que la
correspondiente pgina virtual no est en la mf, sino en el disco. En este
caso el segundo campo de la entrada apunta a la direccin del disco donde
se encuentra la pgina virtual. como en un momento se pueden estar
ejecutando ms de un programa (multiprogramacin o multiusuario)
existirn ms de una tp, una para cada programa (proceso) activo. por ello,
el acceso a la tp se realiza con la ayuda de un registro base de la tabla de
pginas asociado a cada programa.
Para traducir una dv en df se busca en la correspondiente entrada de la tp.
si el bit p de
esta entrada vale 1, se dice que ha ocurrido un acierto de pgina, y se lee el
contenido del segundo
campo que en los aciertos constituye el numero de pagina fisicas en la
memoria principal. la df completa se obtiene concatenando los bits de
numero de pagina fisicas con los de dp de la dv. si el bit p de la entrada de
la tp vale 0, se dice que ha ocurrido un fallo de pgina, lo que significa que
la pgina virtual donde se ubica la dv que se est traduciendo, no se
encuentra en mf. en este caso el fallo de pgina se sirve buscado la pgina
en el disco, ubicndola en MF y actualizando la correspondiente entrada de
la TP.

5.4.1. TLB
Un TLB es una memoria cach de la tabla de pginas
Necesario porque de lo contrario cada referencia a la memoria en el
programa requerira dos referencias de memoria, que uno lea la tabla de
pginas y que uno lea la palabra de memoria requerida.
En el diagrama :

TLB + Cache

El color verde es la transferencia ms rpida.


El color rojo es la transferencia ms lenta (error de pgina).
El color amarillo es la transferencia media (TLB, sin error de
pgina).
Realmente la tabla de pginas no apunta al bloque de disco
para una entrada no vlida, pero el efecto es el mismo.

Si se produce un acierto de TLB, el nmero de fotograma de la TLB


junto con el desplazamiento de pgina da la direccin fsica. Una falta
de TLB hace una excepcin para recargar la TLB de la tabla de
pginas, que la figura no muestra.
La direccin fsica se divide en un ndice de etiqueta de la memoria
cach y cach (adems de un desplazamiento de dos bits que no se
utiliza para las referencias de palabras byte).
Si la referencia es una escritura, slo lo hacen sin comprobar si hay
un acierto de cach
Para una lectura, si la etiqueta situada en la entrada de cach
especificado por el ndice coincide con la etiqueta de la direccin
fsica, la palabra que se hace referencia se ha encontrado en el
cach; es decir, que tena una lectura golpeado.
Para un fallo de lectura, la entrada de cach especificado por el ndice
se obtiene de la memoria y los datos devueltos para satisfacer la
solicitud.

Fig. Organizacin entre direcciones de Cache y memoria virtual

Un registro de instrucciones de 32 bits y un contador de programa de 24


bits. Los bits menos significativos de cada 12 bits especifican la direccin de
pgina, es decir, la direccin de una palabra dentro de 2 12n pginas. Los
prximos 12 bits en cada caso especifican un nmero de pgina en la
memoria virtual. Los 24 bits son la direccin virtual. Si una pgina en
particular de la virtual memoria se almacena en la memoria RAM , puede
estar situado por referencia en una pequea memoria asociativa de slo
lectura AROM . Cuando una pgina de memoria virtual est conectado al
bus DSCRPTBUS, la salida de la memoria asociativa es la correspondiente a
6 bit RAM

Fig. Organizacin de La RAM para una memoria virtual


5.4.2. INTERACCION MEMORIA VIRTUAL Y MEMORIA CACHE
La direccin virtual debe pasar primero por el TLB antes de que la direccin
fsica pueda acceder a la cache, lo que alarga el tiempo de acierto. Este
mecanismo se puede acelerar utilizando dos alternativas: a) Acceder en
paralelo (simultneamente) al TLB para buscar el NUMERO DE PAGINA
FISICAS y al directorio de la cache para buscar el bloque, y b) Utilizar caches
con direcciones virtuales
La primera alternativa requiere que la longitud del campo de
desplazamiento DP de la DV
(igual al DP de la DF) sea mayor o igual que los campos de conjunto y
palabra del formato de la
DF para la cache, tal como se muestra en la siguiente figura. de esta forma
ser posible realizar en
paralelo la bsqueda en el tlb del numero de pagina fisicas que se
corresponde con la etiqueta, y en el directorio de la cache el n de bloque
(lnea), que junto a la palabra dentro del bloque, se corresponde con el dp,

del que se dispone desde el instante que se genera la dv, pues no requiere
traduccin.

Fig. Interaccion memoria virtual y memoria cache

5.5. SEGMENTACIN
Es un esquema de manejo de memoria mediante el cual la estructura del
programa refleja su divisin lgica, llevndose a cabo una agrupacin lgica
de la informacin en bloques de tamao variable denominados segmentos.
Cada uno de ellos tienen informacin lgica del programa: subrutina,
arreglo, etc. Luego, cada espacio de direcciones de programa consiste de
una coleccin de segmentos, que generalmente reflejan la divisin lgica
del programa.

Ventajas de la segmentacin
El esquema de segmentacin ofrece las siguientes ventajas:

El programador puede conocer las unidades lgicas de su programa,


dndoles un tratamiento particular.

Es posible compilar mdulos separados como segmentos el enlace


entre los segmentos puede suponer hasta tanto se haga una
referencia entre segmentos.

Debido a que es posible separar los mdulos, se hace ms fcil la


modificacin de los mismos. Cambios dentro de un mdulo no afecta
al resto de los mdulos.

Es fcil el compartir segmentos.

Es posible que los segmentos crezcan dinmicamente segn las


necesidades del programa en ejecucin.

Existe la posibilidad de definir segmentos que an no existan. As, no


se asignar memoria, sino a partir del momento que sea necesario
hacer usos del segmento. Un ejemplo de esto, seran los arreglos
cuya dimensin no se conoce hasta tanto no se comienza a ejecutar
el programa. En algunos casos, incluso podra retardar la asignacin
de memoria hasta el momento en el cul se referencia el arreglo u
otra estructura de datos por primera vez.

5.4.1. SEGMENTACIN PAGINADA


Paginacin y segmentacin son tcnicas diferentes, cada una de las cuales
busca brindar las ventajas enunciadas anteriormente.
Para la segmentacin se necesita que estn cargadas en memoria reas de
tamaos variables. Si se requiere cargar un segmento en memoria que
antes estuvo en ella y fue removido a memoria secundaria, se necesita
encontrar una regin de la memoria lo suficientemente grande para

contenerlo, lo cual no es siempre factible. En cambio recargar una pgina


implica slo encontrar un marco de pgina disponible.
A nivel de paginacin, si quiere referenciar en forma cclica n paginas, estas
debern ser cargadas una a una, generndose varias interrupciones por
fallas de pginas. Bajo segmentacin, esta pgina podra conformar un slo
segmento, ocurriendo una sola interrupcin por falla de segmento. No
obstante, si bajo segmentacin se desea acceder un rea muy pequea
dentro de un segmento muy grande, este deber cargarse completamente
en memoria, desperdicindose memoria. Bajo paginacin slo se cargar la
pgina que contiene los tems referenciados.
Puede hacerse una combinacin de segmentacin y paginacin para
obtener las ventajas de ambas. En lugar de tratar un segmento como una
unidad contigua, ste puede dividirse en pginas. Cada segmento puede ser
descrito por su propia tabla de pginas.
Las direcciones tienen tres componentes: (s, p, d), donde la primera indica
el nmero del segmento, la segunda el nmero de la pgina dentro del
segmento y la tercera el desplazamiento dentro de la pgina. Se debern
usar varias tablas:
- SMT (tabla de mapas de segmentos): Una para cada proceso. En cada
entrada de la SMT se almacena la informacin descrita bajo segmentacin
pura, pero en el campo de direccin se indicara la direccin de la PMT (tabla
de mapas de pginas) que describe a las diferentes pginas de cada
segmento.
- PMT (tabla de mapas de pginas): Una por segmento; cada entrada de la
PMT describe una pgina de un segmento, en la forma que se present la
pagina pura.
- TBM (tabla de bloques de memoria): Para controlar asignacin de pginas
por parte del sistema operativo.
- JT (tabla de Jobs): Que contiene las direcciones de comienzo de cada una
de las SMT de los procesos que se ejecutan en memoria.

6. ORGANIZACIN DE CACH EN EL PENTIUM 4


La evolucin de la organizacin de la cach se observa claramente en la
evolucin de los microprocesadores de Intel. El 80386 no inclua cach onchip. El 80486 incluye una sola cach on-chip de 8 KB, utilizando un tamao
de lnea de 16 bytes y una organizacin asociativa por conjuntos de cuatro
vas. Todos los procesadores Pentium incluyen dos cachs L1 on-chip, una
para datos y otra para instrucciones. Para el Pentium 4, la cach de datos es
de 8 KB, utilizando un tamao de lnea de 64 bytes y una organizacin
asociativa por conjuntos de cuatro vas. Posteriormente describiremos la
cach de instrucciones del Pentium 4. El Pentium II incluye tambin una
cach L2 que alimenta a las dos cachs Ll. La cach L2 es asociativa por
conjuntos de ocho vas, con una capacidad de 256 Kb y un tamao de lnea
de 128 bytes. En el Pentium III se aadi una cach L3 que pas a ser onchip en las versiones avanzadas del Pentium 4.

Fig. Diagrama de bloques del Pentium 4


La figura muestra un esquema simplificado de la estructura del Pentium 4,
resaltando la ubicacin de las tres cachs. El ncleo del procesador consta
de cuatro componentes principales:

Unidad de captacin/decodificacin: capta instrucciones en orden de


la cach L2, las decodifica en una serie de micro-operaciones, y memoriza
los resultados en la cach Ll de instrucciones.
Lgica de ejecucin fuera-de-orden: planifica la ejecucin de microoperaciones teniendo
en cuenta las dependencias de datos y los recursos disponibles; de forma
que puede planificarse la ejecucin de micro-operaciones en un orden
diferente del que fueron captadas de la
secuencia de instrucciones. Si el tiempo lo permite, esta unidad planifica la
ejecucin especulativa de micro-operaciones que puedan necesitarse en el
futuro.
Unidades de ejecucin: estas unidades ejecutan las micro-operaciones,
captando los datos
necesarios de la cach de datos Ll, y almacenando los resultados
temporalmente en registros.
Subsistema de memoria: esta unidad incluye las cachs L2 y L3, y el
bus del sistema, que se
usa para acceder a la memoria principal cuando en las cachs L1 y L2 tiene

lugar un fallo de
cach, as como para acceder a los recursos de E/S del sistema.
A diferencia de la organizacin de los modelos Pentium anteriores, as como
de la mayora de los
dems procesadores, la cach de instrucciones del Pentium 4 est situada
entre la lgica de decodificacin de instrucciones y el ncleo de ejecucin.
El motivo es que el Pentium, como discutiremos con ms detalle en el
Captulo 14, decodifica o traduce sus instrucciones mquina a instrucciones
ms sencillas de tipo RISC, denominadas micro-operaciones. El uso de
micro-operaciones sencillas, de longitud fija, posibilita la utilizacin de
segmentacin superescalar y de tcnicas de planificacin que mejoran las
prestaciones. Sin embargo, las instrucciones mquina del Pentium son
difciles de decodificar, ya que tienen un nmero variable de bytes y muchas
opciones diferentes. Se consigue mejorar las prestaciones si dicha
decodificacin se realiza independientemente de la lgica de planificacin y
de segmentacin. La cach de datos emplea una poltica de postescritura:
los datos se escriben en memoria principal solo cuando, habiendo sido
actualizados, se eliminan de la cach. El procesador Pentium 4 puede
configurarse dinmicamente para utilizar la poltica de escritura inmediata.
La cach L1 de datos se controla por dos bits de uno de los registros de
control (vase la Tabla 4.5),
rotulados CD (Cach Disable: inhabilitar cach) y NW (Not Write Thnough:
no escritura inmediata).
Hay tambin dos instrucciones del Pentium 4 que pueden utilizarse para
controlar la cach: INVD
invlida la memoria cach interna e indica que se invalide la cach externa
(si la hay); WBINVD
postescribe e invalida la cach interna, y entonces postescribe e invalida la
cach externa.
Las dos cachs, L2 y L3, son asociativas por conjuntos de ocho vas, con un
tamao de lnea de
128 bytes.

Fig. Estructura Fsica

7. CONCLUSIONES

La Memoria Cach es una memoria pequea y a la vez rpida que


esta entre la CPU donde se realiza transferencia de palabras (datos) y
en la Memoria Principal, realiza transferencia de bloques (lneas);
siendo ambas transferencias de forma bilateral; adems aproxima la
velocidad de la memoria a las de aquellas mas rpidas y disponibles.

Dentro de la cach, se establece diversas funciones como de


correspondencia, algoritmos de sustitucin estos son de gran ayuda a
la correspondencia, escritura actualiza la Mp al realizar sus
operaciones, bsqueda son las condiciones que se da para buscar un
bloque y tambin la codificacin de fallos de la propia cach.

El repertorio de instrucciones en la Memoria Cach se da en los


registros y el rango de direcciones ya que ambas son explicitas para
la cach porque tienen a relacionarse con el nmero de bits de
direccionamiento.

La Memoria Cach realiza diversos procesos de traduccin de la


direccin fsica la cual procede de la CPU en el dado que es ubicado
en la posicin de la memoria determinada por dicha direccin.

8. BIBLIOGRAFIA

Organizacin y arquitectura de computadores, 7ma Edicin (William


Stalling)

Organizacin y diseo de computadoras (David A Patterson)

Digital Systems: Hardware Organization and Design, 3rd


Edition(Frederick J. Hill, Gerald R. Peterson)

http://www.dia.eui.upm.es/Asignatu/arq_com/Paco/7-Cache.pdf

http://www.fdi.ucm.es/profesor/jjruz/web2/temas/ec6.pdf

http://electro.fisica.unlp.edu.ar/arq/transparencias/ARQII_00Repaso2.pdf

http://www.monografias.com/trabajos94/arquitectura-del-computador2/arquitectura-del-computador-2.shtml#ixzz49RuOCdaX

https://laredinfinita.wordpress.com/2014/05/01/memoria-virtual/

You might also like