You are on page 1of 42

Estructura de Computadores

Cap. 5: Memoria.
José Daniel Muñoz Frías
Universidad Pontificia Comillas. ETSI ICAI.
Departamento de Electrónica y Automática

ICAIdea

Estructura de Computadores Cap. 5: Memoria.– p. 1

Índice
1.

Introducción. Jerarquía de memorias.

2.

Características de las memorias.

3.

Memorias de acceso aleatorio.
a) Banco de registros.
b) Memoria SRAM.
c) Memoria DRAM.
d) Memoria ROM.

4.

Organización de la memoria.

5.

Memorias asociativas.

6.

Memoria virtual.

ICAIdea

Estructura de Computadores Cap. 5: Memoria.– p. 2

Introducción
La memoria almacena los datos y los programas del
computador.
Sus prestaciones marcan las del ordenador completo:
es un cuello de botella.
Existen varias tecnologías para su implementación:

Las rápidas son caras y de poca capacidad.

A mayor capacidad, más lentas y más baratas.

Esto hace necesario usar una jerarquía de
memorias.

ICAIdea

Estructura de Computadores Cap. 5: Memoria.– p. 3

En el capítulo 1 (pg. 9) se vio que la estructura básica de un ordenador estaba compuesta por una
CPU, una unidad de E/S y una memoria para almacenar los programas y los datos. La memoria es
por tanto una parte fundamental del ordenador. Además sus prestaciones limitan las prestaciones del
ordenador completo, pues aunque la CPU sea muy rápida, si la memoria no puede alimentarla con las
instrucciones y los datos que necesita, de nada nos valdrá tanta velocidad en la CPU.
Existen varias tecnologías para implantar las memorias, según se verá más adelante. En cuanto a
las prestaciones, por desgracia las memorias rápidas tienen poca capacidad y son caras, por lo que no
se pueden usar para dotar al ordenador de toda la memoria que necesita (salvo que se tenga muchísimo
dinero y ganas de malgastarlo). La solución es adoptar una jerarquía de memorias.

CPU
Registros
Cache
Memoria principal
Memoria secundaria (HD)
Memoria terciaria (CD, cintas)

Coste/bit
Velocidad

Introducción

Tamaño
ICAIdea

Estructura de Computadores Cap. 5: Memoria.– p. 4

En la práctica los programas muestran localidad temporal (si un dato acaba de usarse, es muy
probable que vuelva a ser usado en breve) y espacial (si se accede a un dato, es muy probable que sea
necesario acceder a datos que están próximos a él). La jerarquía de memoria saca partido de ambas
localidades: para aprovechar la localidad temporal el sistema mantiene cerca del procesador los datos
usados más recientemente. Para aprovechar la localidad espacial se mueven los datos entre los niveles
de jerarquía en bloques de varias palabras contiguas en la memoria.
Dentro del procesador sólo hay una pequeña fracción de la memoria total: los registros. Ciertamente sería deseable contar con infinitos registros, pero como se ha visto en el tema anterior esto es
impracticable. De la misma forma, lo ideal sería disponer de varios Gb de memoria directamente accesible por el procesador. Sin embargo, debido a la alta velocidad de éste, la memoria necesaria para
que el procesador pueda acceder a ella sin tener que esperar es muy cara y poco densa (pocos kB por
chip), lo cual hace impracticable dicha solución. No obstante, aprovechando el principio de localidad
es posible colocar una pequeña fracción de la memoria total directamente accesible por el procesador
(cache) de forma que se almacenen en ésta los datos e instrucciones que está usando el procesador.
De la misma forma que cuando un dato no está en un registro ha de leerse de la memoria cache, si un
dato no está en la cache es necesario traerlo desde la memoria principal. Asimismo, si un dato no está
en la memoria principal es necesario ir a buscarlo a la memoria secundaria y así sucesivamente. Si la
tasa de aciertos (objetos que están en la cache) es alta, la jerarquía de memoria tiene una velocidad
efectiva cercana a la de la memoria cache y un tamaño igual al nivel más bajo de la jerarquía.
Los tres primeros niveles residen en la circuitería del ordenador, unidos a la CPU mediante buses.
La memoria secundaria está formada por dispositivos que se conectan a la CPU mediante sistemas de
entrada/salida. Actualmente lo típico es usar discos duros. Por último el nivel mas bajo está formado
por dispositivos en los que el medio donde se almacenan los datos puede ser cambiado (CD, cintas,
DVD, etc.) lo que hace que su tamaño sea “ilimitado” aunque su velocidad de acceso será la más lenta,
sobre todo si el medio no está insertado en la unidad.

Características de las memorias
Las memorias se caracterizan por su:

Ubicación:
• Interna: Conectada directamente a la CPU.
• Externa: Conectada a la CPU a través de E/S.

Capacidad:
• En las memorias externas se expresa en
bytes.
• En las internas se expresa en bytes o
palabras.

ICAIdea

Estructura de Computadores Cap. 5: Memoria.– p. 5

Antes de profundizar en el tema, es conveniente estudiar una serie de características de las memorias que permiten su clasificación.
Según su ubicación las memorias pueden ser internas cuando la CPU puede acceder directamente
a ellas. Típicamente estas memorias suelen estar conectadas en la misma placa de circuito impreso
que la CPU. Estas memorias están formadas en la actualidad por dispositivos basados en semiconductores (chips). La memoria externa está situada fuera de la tarjeta de circuito impreso y la CPU sólo
puede acceder a ellas a través de los circuitos de entrada salida. En la actualidad están formadas por
dispositivos de almacenamiento magnético u óptico (discos duros, cintas, CD, DVD, etc.).
La capacidad de las memorias varía enormemente según su tecnología. Las memorias semiconductoras varían desde unos pocos kB a unas decenas de MB. En cambio las memorias basadas en
elementos magnéticos en la actualidad tienen capacidades de varias decenas de GB.
En la mayoría de las situaciones la capacidad de memoria se da en bytes, ya que esta es la unidad
mínima con la que trabajan la mayoría de las CPU (recuerde que un byte se usa para almacenar un
carácter). No obstante en algunos casos el tamaño de la memoria interna se da en palabras en lugar
de en bytes. Además no ha de olvidar que, según se comentó en el capítulo 2 los prefijos k, M y G
cuando se habla de memoria secundaria suelen significar 10 3 , 106 y 109 , mientras que cuando se habla
de memoria interna significan 210 = 1,024, 220 = 1,048,576 y 230 = 1,073,741,824.

Nótese que para ello es necesario usar un bus de datos entre la memoria cache y la principal del tamaño de la palabra de la memoria principal. • Bloques para la memoria externa. típicamente para contener un carácter ASCII. En este caso las instrucciones y los registros enteros son también de 32 bits. por lo que una vez localizado se transfiere todo el bloque para aumentar las prestaciones aprovechando el principio de localidad. Se suele definir como la unidad “natural” de organización de la memoria. No obstante en los sistemas con palabras mayores de un byte la unidad mínima de transferencia es una palabra. La memoria interna en cambio se organiza en palabras de varios bytes de longitud.– p. ICAIdea Estructura de Computadores Cap. con lo que la memoria se organizaba en “palabras” de un byte. • La unidad direccionable suele ser el byte. Por ejemplo el 8088 trabajaba con palabras de 16 bits pero su bus de datos era de 8 bits. . se lee la palabra entera que contiene el byte y se realiza una multiplexación dentro de la CPU para acceder al byte requerido. Por ejemplo en el MIPS las palabras son de 32 bits ya que el bus de datos es de 32 bits. Otro ejemplo son las organizaciones de las memorias principales en sistemas con memoria cache. En general la unidad “natural” será igual al ancho del bus de datos usado para acceder a la memoria. ya que es muy costoso localizar un determinado byte en el medio.Características de las memorias Las memorias se caracterizan por su: • Unidad de transferencia: • Palabras para la memoria interna. El concepto de palabra es bastante “espinoso”. 5: Memoria. Recuerde que: • La memoria interna se organiza en palabras pero. 6 La memoria externa se organiza en bloques de varios cientos de bytes. Por último es necesario tener en cuenta que en la mayoría de los sistemas la mínima unidad direccionable es el byte. En estos casos la memoria cache se organiza en palabras de la longitud del bus de datos del procesador. Si la CPU desea acceder a un byte. transfiriéndose en la mayoría de los sistemas una sola palabra a la CPU a la vez. No obstante en otras arquitecturas las palabras con las que trabaja el procesador no coinciden con su bus de datos. pero la memoria principal puede organizarse en palabras de un mayor número de bits para aprovechar la localidad de los accesos. ya que este es el tamaño mínimo usado por la CPU.

. Este tipo de acceso es el usado en las memorias de semiconductores. Como el número de bloques que hay en cada zona es pequeño el tiempo que se tarda en acceder al bloque no es muy elevado. Tablas de etiquetas para cache. Este tipo de acceso se usa en los discos. ICAIdea Estructura de Computadores Cap. Se accede directamente a una zona del medio y a continuación se realiza un acceso secuencial para acceder al bloque deseado. Este tipo de acceso es el que presentan las cintas.– p. Se puede acceder a cada posición de memoria mediante su circuitería asociada. • Asociativo. • Directo. Discos. Se usan para las tablas de etiquetas para cache. se da un dato para obtener su dirección. En estas memorias en lugar de dar una dirección para obtener un dato. El acceso es por tanto muy rápido y es prácticamente independiente de los accesos realizados previamente. • Aleatorio.Características de las memorias Las memorias se caracterizan por su: • Método de acceso: • Secuencial. Memoria principal y cache. En este tipo de memorias para acceder a una posición es necesario recorrer todas las posiciones desde la actual a la deseada. 7 Según el método de acceso las memorias se clasifican en: • Secuencial. • Aleatorio. 5: Memoria. • Asociativo. • Directo. Cintas.

• Velocidad de transferencia. Es la velocidad a la que se transfieren los datos hacia o desde la memoria.– p. Los parámetros relacionados con este tema son: • Tiempo de acceso. Tc ≥ Ta • Velocidad de transferencia. Su definición depende del tipo de memoria: • En las memorias de acceso secuencial y directo. Continuamente aparecen en el mercado nuevas alternativas para mejorar sus prestaciones. . el tiempo de acceso se define como el tiempo empleado en localizar y transferir el objeto. ya que viene marcado por los retrasos de la circuitería que selecciona la posición de memoria a acceder en función de su dirección.Características de las memorias Las memorias se caracterizan por sus: • Prestaciones: • Tiempo de acceso. Por ejemplo. el tiempo de acceso se define como el tiempo que se tarda en localizar el objeto en la memoria y tenerlo disponible para su transferencia. 5: Memoria. • Tiempo de ciclo. Para las memorias de acceso aleatorio es igual a 1/Tc . Este tiempo es en general independiente de la posición ocupada por el objeto. en las cintas es necesario avanzar o retroceder la cinta hasta que el objeto esté justo debajo de la cabeza lectora. Este tiempo depende de la posición relativa del objeto respecto a la posición actual. 8 Las prestaciones de las memorias también es un tema abierto. • Variable en secuencial y directo. Para las memorias de acceso secuencial y directo depende de la velocidad a la que se mueve el medio y de la densidad de grabación. ICAIdea Estructura de Computadores Cap. • En las memorias de acceso aleatorio. Se define para las memorias de acceso aleatorio y es igual al tiempo mínimo entre dos accesos consecutivos. • Tiempo de ciclo. • Fijo en las aleatorias.

El termino dinámico. las BIOS.Memorias de acceso aleatorio Construidas con semiconductores. etc. 1 Por ello se dice que este tipo de memorias son no volátiles y las RAM se dice que son memorias volátiles. • SRAM (cache). • DRAM (memoria principal). se refiere a que este tipo de memorias precisa un refresco periódico de sus contenidos para evitar que se pierdan. Son memorias de solo lectura pero que al contrario que las RAM mantienen sus datos incluso cuando se corta la alimentación. BIOS. • SRAM (del inglés Static Random Access Memory. Los cuatro tipos de memoria utilizados en los tres primeros niveles de la jerarquía de memorias mostrada en la página 4 son: • Registros internos. ICAIdea Estructura de Computadores Cap. Son los circuitos utilizados para implantar la memoria principal. Se usan para la memoria interna. Según se verá a continuación se accede a ellos mediante multiplexores de pocas entradas. 5: Memoria. • ROM (del inglés Read Only Memory). Las memorias RAM estáticas son las utilizadas en los ordenadores actuales para implantar las memorias cache debido a su bajo tiempo de acceso. Son accesibles directamente por el procesador. 9 En las siguientes transparencias se van a estudiar los distintos tipos de circuitos usados para implantar la memoria interna. 1 Por ello se usan para almacenar los programas de arranque de los ordenadores. Los dispositivos empleados para la memoria externa se estudiarán en el capítulo de entrada y salida. . Por el contrario las memorias estáticas conservan sus datos mientras no se corte la alimentación. etc. • ROM (memoria no volátil). como se verá mas adelante.– p. Varios tipos: • Registros internos. El inconveniente principal es el número limitado de registros. • DRAM (del inglés Dinamic Random Access Memory). por lo que los tiempos de acceso son mínimos.

Banco de registros Register file Read register number 1 5 5 Read data 1 Read register number 2 Write register number 5 Write data Write 32 Read data 2 32 32 ICAIdea Estructura de Computadores Cap. 5: Memoria. Se ha elegido el del MIPS por estar familiarizados ya con este procesador. Los bancos de registros de los demás procesadores son similares. también de 32 bits. Las entradas Read register number 1 y Read register number 2 indican los números de los registros cuyos contenidos han de aparecer en los dos puertos de salida y la entrada Write register number indica el número de registro en donde se ha de escribir el dato del puerto Write data. . Dicho dato sólo se escribirá en el flanco de reloj en el que la señal Write esté activa. 10 En la figura se muestra un esquema del banco de registros (register file en inglés) del MIPS. De esta forma se pueden leer los dos registros que forman los operandos de las instrucciones MIPS y se puede guardar el resultado en un tercer registro. dicho banco consta de dos puertos de salida: Read data 1 y Read data 2 de 32 bits y un puerto de entrada Write data. Como se puede apreciar.– p.

Como se puede apreciar.– p. . 5: Memoria. cada uno de los puertos de salida consta de un multiplexor que selecciona cuál de los registros se conecta con la salida en función de la entrada de control Read register x. El funcionamiento será por lo tanto asíncrono: el contenido del registro seleccionado mediante la entrada Read register x aparecerá en la salida Read data x después del retardo del multiplexor. Lectura Read register number 1 5 Register 0 Register 1 Register n − 1 Register n M u x 32 M u x 32 Read data 1 Read register number 2 5 ICAIdea Read data 2 Estructura de Computadores Cap. 11 En la figura se muestra la circuitería de lectura del banco de registros.Banco de registros.

sólo se habilite dicho registro para escritura.Banco de registros. . Escritura Write 0 Write register number 5 E Register 0 1 D n to−1 decoder E n−1 Register 1 D n E Register n−1 D E Register n Write data ICAIdea 32 D Estructura de Computadores Cap. 12 En la figura se muestra la circuitería de escritura del banco de registros. Mediante el demultiplexor de n a 1 se selecciona el registro cuyo número aparece en la entrada Write register number. por lo que la escritura se realizará en el flanco del reloj. Nótese que los registros son síncronos. de forma que cuando se active la entrada Write. En este caso el puerto de entrada Write data está conectado a la entrada de todos los registros.– p. 5: Memoria.

es síncrona: cuando en un flanco positivo del reloj la señal write está activa. Nótese que se puede leer y escribir a la vez un mismo registro. 13 En la transparencia se muestra un diagrama de tiempos para ilustrar el funcionamiento del banco de registros. al contrario que la lectura. la lectura de los registros es asíncrona: una vez situado en la entrada Read register number 1 el número de registro que se desea leer. originado por el multiplexor de salida. . Según se muestra en las líneas 2 y 3. tal como se puede apreciar en el diagrama mostrado. La escritura en los registros. Temporización Clk Read register number 1 1 Read data 1 0x27 Write register number Write data 4 0x1ca1 3 35 7 2 3 0x32 0xcada 23 23 Write ICAIdea Estructura de Computadores Cap. En el ejemplo mostrado se realiza una escritura en el registro 7 en el primer flanco y otra en el registro 3 en el cuarto. 5: Memoria. el contenido del registro aparece en el puerto de salida Read data 1 con un pequeño retardo.Banco de registros. el dato presente en el puerto de entrada Write data se escribe en el registro cuyo número está en la entrada Write register number.– p.

ya que la memoria es un dispositivo externo a la CPU.768) para especificar la dirección (Address) y un bus de entrada y salida de 8 bits para los datos (Dout).Memoria SRAM. como es interno a la CPU. de forma que cuando dicha línea está a 1 se realiza una lectura y cuando está a cero una escritura . Esto se realiza así para ahorrar patillas de conexión. en lugar de dos buses separados como ocurre en el banco de registros. otra señal de escritura (Write enable) y otra de lectura (Output enable). el disponer de dos puertos. uno para la lectura y otro para la escritura de datos no es tan problemático. En el caso del banco de registros. 5: Memoria. la memoria sólo dispone de un bus de entrada/salida. 1 Algunos circuitos unen estas dos últimas señales en una sola línea R/W. Address Chip select Output enable Write enable ICAIdea 15 SRAM 32K × 8 8 Dout[7−0] Estructura de Computadores Cap. El circuito posee un bus de entrada de 15 bits (215 = 32.– p. ya que al contrario que en el banco de registros. Además dispone de tres señales de control: una para habilitar el chip (Chip select).1 Obviamente el circuito puede funcionar mal si se activan simultáneamente las señales de lectura y escritura. 14 En la figura se muestra un esquema de una memoria estática de 32 K palabras de 8 bits.

cuando se almacene un cero. De la misma manera. ya que se necesitan 6 transistores: los dos de paso y dos más para cada puerta inversora. El proceso de escritura es similar: el valor a escribir se sitúa en bit y su negado en -bit. en el punto B habrá un cero lógico y en la celda tendremos almacenado un 1 lógico. para a continuación activar la entrada fila que habilite los transistores de paso para forzar los puntos A y B al nuevo valor. así como de varias alternativas. Así. cuando en el punto A haya un 1 lógico. 15 En la figura se muestra el circuito usado para implantar una celda de 1 bit en las memorias estáticas. Para leer la celda basta con activar la entrada fila. con lo que los transistores de paso Q1 y Q2 conducirán y las salidas bit y -bit tomarán los valores almacenados en A y B respectivamente. Esto hace que este tipo de memorias sea caro y poco denso. Una descripción más detallada de este circuito. .Memoria SRAM. 1993). El precio a pagar por ello es la complejidad de la celda. 5: Memoria. puede encontrarse en (Weste y Eshraghian. Celda de 1 bit B A Q2 Q1 −bit bit fila ICAIdea Estructura de Computadores Cap.– p. El valor del bit se almacena mediante dos inversores acoplados. el punto A estará a cero y el B a uno. Como se puede apreciar el valor escrito permanece estable mientras no se corte la alimentación.

para realizar el interfaz con el exterior son necesarios un amplificador de medida para amplificar el valor que aparece en las líneas -bit y bit y un buffer para realizar las escrituras. 16 Para construir una memoria de por ejemplo 32 kb basta con crear una matriz de 32kceldas y un decodificador de 15 a 32. Además. tal como se muestra en la siguiente transparencia.768 como la matriz de celdas son difíciles de implantar debido a que el circuito resultante es muy alargado (32. 1996). en función de la dirección. . Además de la matriz de celdas y el decodificador. D Estructura de Computadores Cap.768 para. en la práctica se usan esquemas de decodificación en dos niveles. En la parte superior de la figura se muestra un bloque denominado Acondicionamiento de líneas de bit que se utiliza para poner las líneas bit y -bit a la mitad de la tensión de alimentación. Ambos circuitos se activan con las líneas read y write respectivamente. Para conseguir un acceso más rápido y un circuito aproximadamente cuadrado. Además como las conexiones verticales serán muy largas. aunque en teoría es válida. medida Buffer escr. 5: Memoria. en la práctica no se usa. El problema de este circuito es que tanto el decodificador de 15 a 32. Por tanto esta solución. Decodificación de dir. La señal read también se encarga de habilitar la puerta triestado de la salida de datos. de forma que la lectura sea más rápida y fiable. se producirán retardos inaceptables en el acceso a las celdas.Memoria SRAM. Acondicionamiento líneas de bit −bit bit fila A0 A1 A2 A14 read write ICAIdea Decodificador de 15 a 32768 0 −bit bit fila 1 −bit bit fila 32767 −bit bit Ampl.768 de alto por 1 de ancho. A este proceso se le denomina precarga y se realiza antes de cada lectura. son necesarios circuitos adicionales para leer y escribir las células. si se suponen las celdas cuadradas) (Rabaey. seleccionar la entrada fila de la celda correspondiente.– p.

. De esta forma se consigue una matriz de celdas prácticamente cuadrada. A7 A8 A9 A14 Decodificador de filas Acondicionamiento líneas de bit Línea de palabra 256 x 128 Línea de bit read write Ampl. En el caso de una escritura. En este ejemplo particular las dimensiones de la matriz serán de 27 de ancho por 28 de alto. toda esta línea se lee mediante los 26 amplificadores de medida. A0 A6 Mux. 8 o 16 son valores típicos). el cual se multiplexa hacia la salida con los bits inferiores de la dirección. En el ejemplo anterior. 17 Como se puede apreciar. se podría utilizar una matriz de 256x512 celdas (128 · 4 = 512) y hacer que el multiplexor de columnas sea de 4 bits. activar solamente el buffer de escritura correspondiente a la celda donde se ha de escribir el bit de entrada. el primer paso es el mismo: se selecciona la fila correspondiente mediante los bits superiores de la dirección. 5: Memoria. El segundo paso consiste en. Si se realiza una lectura. si se desea construir una memoria de 32k x 4 bits. ahora la decodificación se hace en dos niveles. basta con ampliar la matriz para almacenar los bits necesarios y hacer que el multiplexor de columna sea de N bits de salida. Columna D ICAIdea Estructura de Computadores Cap. Decodificación de dir. medida Buffer escr.– p. Si se desea construir una memoria para almacenar palabras de N bits (4. con lo que ocuparán menor área en el chip y serán más rápidos. Además ahora tanto el decodificador de filas como el multiplexor de columnas son de menos bits. aunque de todos los bits leídos de la línea sólo nos interesa un bit. El método de direccionamiento ahora consiste en seleccionar una fila de la matriz (línea de palabra) con los bits superiores de la dirección. utilizando los bits inferiores de la dirección.Memoria SRAM.

5: Memoria. ICAIdea Estructura de Computadores Cap.Memoria SRAM. 18 .– p. Temporización Véase la hoja de características de la SRAM.

lo cual significa tan solo una pequeña pérdida de rendimiento. No obstante el periodo de refresco es de decenas de milisegundos y el tiempo empleado en refrescar no es muy elevado. se pierde rendimiento. Para evitar la pérdida de datos. por lo que es necesario refrescar el estado de carga de estos condensadores periódicamente para evitar que los datos se corrompan. 2000). después de realizar la lectura se realiza un escritura del mismo dato para refrescarlo. El precio que hay que pagar es una mayor complejidad del circuito de lectura y escritura. A continuación se activa la línea de palabra con lo que el transistor de paso Q1 conduce y la carga almacenada en el condensador cambiará el valor de tensión de la línea de bit. Típicamente el refresco ocupa entre un 1 % y un 2 % del total de los ciclos de acceso disponibles (Patterson y Hennessy. Celda de 1 bit Word line Q1 C1 Bit line ICAIdea Estructura de Computadores Cap. Para leer el estado de la celda en primer lugar se precarga la línea de bit a una tensión igual a la mitad de la alimentación. Además la carga en el condensador se pierde con el tiempo a causa a las corrientes de fugas. Para escribir en la celda se sitúa el dato en línea de bit y a continuación se activa la línea de palabra para que el transistor Q1 conduzca de forma que el condensador se cargue o se descargue en función del valor presente en la línea de bit. Recuerde que la celda SRAM necesita 6 transistores. lo cual hace que tenga un tamaño reducido y por tanto se consigue una gran densidad de almacenamiento. 19 En la figura se muestra una celda de una memoria RAM dinámica. Como se puede apreciar consta tan solo de 1 transistor y de un condensador. ya que en este proceso se varía en gran medida la carga del condensador. lo cual será detectado por el amplificador de medida. 5: Memoria. .– p.Memoria DRAM. Debido a que mientras dura el refresco no se puede acceder a los datos. Conviene destacar que este proceso de lectura es destructivo.

Columna D Estructura de Computadores Cap. Esto permite leer la fila entera y almacenarla en el buffer. en primer lugar se sitúan en el bus de direcciones (A7-A0) los bits más significativos de la dirección (14 a 7) y se activa la señal ras (del inglés row address strobe). 5: Memoria. La única diferencia está en la multiplexación de las direcciones. 20 Es esquema de direccionamiento de las memorias dinámicas es muy similar al de las estáticas. se activará la línea de palabra en la que está situada la posición de memoria a la que se desea acceder.Memoria DRAM. Esta multiplexación se realiza simplemente por razones históricas. medida Buffer escr. Mux. se copiará el dato presente en el bus de datos en el buffer de escritura a través del multiplexor de columna. por lo que se escribirá en la posición marcada por la dirección de columna. Decodificador de filas Acondicionamiento líneas de bit A0 A1 A2 A7 Línea de palabra 256 x 128 Línea de bit ras read write A0 A6 cas ICAIdea Ampl. A partir de este momento se decodifica la dirección y. con lo cual el multiplexor de columna conectará con la salida la línea de bit a la que se desea acceder. Según se desprende del esquema de bloques mostrado en la transparencia.– p. ya que cuando se desarrollaron las primeras memorias DRAM los encapsulados tenían pocas patillas. aunque se mantiene por razones de compatibilidad. Si el acceso en una lectura. ahora existen sólo 8 líneas de direcciones (A7-A0). Para especificar la dirección completa de 15 bits. Si el acceso es una escritura. . Esta señal hace que el valor presente en el bus de direcciones de la memoria (A7-A0) se almacene en el latch de direcciones de fila. se activará la puerta tri-estado para que el dato de la memoria salga hacia el bus de datos. Esta señal hace que los bits A6-A0 del bus de direcciones del chip se almacenen en el latch de direcciones de columnas. después del retardo correspondiente del decodificador de filas. En ambos casos el buffer de escritura se vuelve a copiar en la línea correspondiente para refrescar los datos. Decodificación de dir. Hoy en día no tiene mucho sentido dicha multiplexación. El segundo paso en el acceso a la memoria DRAM consiste en situar los bits menos significativos de la dirección (6 a 0) en el bus de direcciones del chip y activar la señal cas (del inglés column address strobe).

finalizando así el ciclo de lectura de la DRAM. . El diagrama está tomado de la hoja de características de la DRAM K4E170411D (Samsung. Como se puede apreciar en primer lugar se sitúan en el bus de direcciones del chip los bits más significativos de la dirección (row address) y se activa la señal RAS. éste desactivará las señales RAS y CAS. A continuación se sitúan los bits menos significativos de la dirección (column address) y se activa la señal CAS. Una vez especificada la dirección se activa la señal OE para activar la salida tri-estado del chip para que el dato leído pase al bus de datos del chip. Temporización ICAIdea Estructura de Computadores Cap.– p. Una vez que el procesador haya leído el dato proveniente de la memoria. b).Memoria DRAM. 21 En la transparencia se muestra un diagrama de tiempos de lectura de una DRAM. 5: Memoria.

en la línea de bit aparecerá un cero. En el ejemplo de la figura. la línea bit1 estará a 0 y la línea bit0 estará a 1. por lo que sólo pueden programarse una vez. sólo se justifica su uso para grandes series. El inconveniente de este tipo de memorias es que han de programarse al fabricar el chip. . por lo que sólo son válidas para almacenar programas o datos que no cambien durante la vida del producto. Las memorias EPROM se programan igual que las PROM. En las memorias PROM existe un fusible que se puede fundir si se aplica una tensión elevada entre la fila y la línea de bit. pero el proceso es reversible mediante una exposición prolongada a rayos ultravioleta. Si la conexión transistor-línea de bit no se ha realizado. y las FLASH han de borrarse previamente y a continuación grabarse. Las EEPROM y las FLASH tienen la ventaja de que son programables eléctricamente.– p. Además. lo que las hace más caras. para recuperar los enormes costes fijos. sólo que éstos están conectados a tierra en lugar de a un condensador. 22 En la figura se muestran dos celdas de una memoria ROM programable en fábrica. salvo que la conexión o desconexión entre las líneas de fila y de bit se realizan por otros medios. Al igual que las memorias DRAM. La diferencia estriba en que en las EEPROM se pueden escribir palabras individualmente. Todas ellas tienen prácticamente la misma estructura que las ROM. Celda de 1 bit fila bit1 ICAIdea bit0 Estructura de Computadores Cap. Las líneas de bit están conectadas a alimentación a través de una resistencia de carga (pull-up).Memoria ROM. en la línea de bit tendremos un uno. al igual que las RAM aunque más lentamente. El inconveniente de las EEPROM es que necesitan dos transistores por bit. el circuito consiste en una matriz de transistores. 5: Memoria. Cuando se activa la línea de fila los transistores conducirán y si se ha realizado la conexión entre el transistor y la línea de bit en el proceso de fabricación. Existen alternativas programables por el usuario.

como se verá más adelante. la organización interna de un chip de ROM es muy similar a la de un chip de memoria SRAM. ya que.– p. aunque en memorias de gran capacidad se suele sustituir por circuitos más complejos para disminuir las pérdidas.Memoria ROM. Columna D ICAIdea Estructura de Computadores Cap. Por tanto la salida hacia el bus de datos sólo se activará cuando se acceda al chip en modo de lectura. El bloque de acondicionamiento de líneas de bit consta de una resistencia de pull-up para cada línea de bit. La principal diferencia está. en la mayoría de los sistemas se conectan varios circuitos de memoria al bus de datos. 5: Memoria. 23 Como se puede observar en la figura. No obstante sigue existiendo una puerta triestado a la salida del bus de datos. A7 A8 A9 A14 Decodificador de filas Acondicionamiento líneas de bit Línea de palabra 256 x 128 Línea de bit read cs Ampl. Para controlar la puerta triestado existen dos señales: cs (chip select) que habilita el chip y read que habilita la lectura. en la inexistencia de la señal de escritura. Decodificación de dir. aparte de en la estructura de cada celda de bit. medida A0 A6 Mux. .

Nótese que para obtener otro dato de la memoria basta con cambiar la dirección presente en el bus de datos y esperar el tiempo de acceso t AA . Temporización ICAIdea Estructura de Computadores Cap. a). El diagrama pertenece a la ROM K3N3C3000D-DC (Fabricada por Samsung) (Samsung. 24 En la transparencia se muestra el diagrama de tiempos de lectura de una ROM. La primera señal se encarga de activar el chip.Memoria ROM. aunque sólo saldrán al bus si se ha activado su salida triestado mediante la señal OE. . Basta con situar la dirección el el bus de direcciones y activar las señales CE y OE. El tiempo necesario desde la activación de OE hasta que los datos aparecen en el bus es tOE . 5: Memoria. Como se puede apreciar el funcionamiento de la ROM es mucho más simple que el de una DRAM. Pasado un tiempo t ACE los datos estarán ya disponibles.– p.

Por ejemplo. se activará la señal CS del primer chip y se desactivará la del segundo. En su lugar hay dos líneas: UDS (Upper data strobe) y LDS (Lower data strobe). En ocasiones se necesitan palabras más anchas que las soportadas por los chips. Si se realiza un acceso de 8 bits. . En la transparencia siguiente se muestra un esquema del circuito resultante. Obviamente en estos casos se multiplexará internamente el bus de datos. En la transparencia 27 se muestra un esquema de bloques de un sistema con un procesador de 8 bits con un bus de direcciones de 16 bits. 25 Son raras las aplicaciones en las que la memoria necesaria se encuentra en un solo chip. En este caso son necesarios también dos chips para implantar los 64 kB direccionables por el procesador. Ejemplos: • Un sistema basado en microprocesador con 64 kB organizados en palabras de 16 bits y sólo se dispone de chips de 32 k x 8 bits. Se desea dotarlo de la máxima memoria posible y se dispone de chips de 32 kpalabras de 8 bits. Será por tanto necesario usar dos chips. de forma que un chip almacenará los 32 kB más bajos de la memoria y el siguiente los 32 kB más altos. supóngase que se se dispone de un microprocesador con un ancho de bus de datos de 16 bits y se desea construir un sistema con 64 kB de memoria principal. • Ídem anterior. Nótese que el bit 0 del bus de direcciones (A0) no existe físicamente. en otras ocasiones se necesita más memoria que la disponible en un solo chip y en la mayoría de las ocasiones ocurren ambas cosas: se necesita un ancho de palabra y una capacidad mayor que la disponible en un solo chip. entonces se activará la señal UDS si se accede a un byte situado en una dirección impar o la LDS si se accede a un byte situado en una dirección par (suponiendo una organización little endian). Lamentablemente sólo se dispone de chips de 32 kpalabras de 8 bits. Nótese que se usa la línea A15 del bus de direcciones para seleccionar un chip u otro: cuando A15 valga 0 (acceso a las posiciones comprendidas entre 0x0000 y 0x7FFF). Cuando se realiza un acceso de 16 bits se activan ambas líneas para de esta forma activar ambos chips de memoria mediante su entrada CS (Chip Select). 5: Memoria. ICAIdea Estructura de Computadores Cap. Si A15 vale 1 (acceso entre 0x8000 a 0xFFFF) se activará sólo el segundo chip. con lo que el acceso se realizará al primer chip. pero el bus de datos es de 8 bits. de forma que en uno de ellos se almacenen los 8 bits menos significativos y en el otro se almacenen los 8 bits más significativos. • Un ordenador personal con 256MB y solo se dispone de chips de 4 M x 4 bits.Organización de la memoria En la práctica un ordenador necesita más memoria de la disponible en un solo chip.– p.

– p...Organización de la memoria 15 A A[15.. 5: Memoria..0] 0x8000 D[7.0] 0x0000 ICAIdea Estructura de Computadores Cap.8] D D[15.0] A A[15.0] 15 OE WE SRAM 32Kx8 CS OE WE ICAIdea 8 D[7. 26 Organización de la memoria 15 0xFFFF A[14. 5: Memoria.1] UDS LDS uP SRAM 32Kx8 CS OE WE 8 D[15. 27 ....0] CS OE WE SRAM 32Kx8 8 D[7.0] Estructura de Computadores Cap.0] CS OE WE SRAM 32Kx8 A15 uP D OE WE 8 D[7....0] 15 0x7FFF A[14.– p.

.. En la transparencia se muestra un esquema típico de los sistemas basados en microprocesador para aplicaciones empotradas: los 32kB bajos son ROM y los 32 kB superiores RAM. La ROM se utiliza para guardar el programa del sistema y la RAM para los datos.0] CS OE WE SRAM 32Kx8 A15 uP D OE WE 8 D[7... En estos casos se suele realizar el esquema de la siguiente transparencia: .Organización de la memoria 15 0xFFFF A[14. Por ejemplo. 5: Memoria.– p..0] CS OE ROM 32Kx8 8 D[7.0] 15 0x7FFF A[14. puede ser necesario crear un sistema con 32 kB de ROM pero sólo 8 kB de RAM.0] A A[15.0] 0x0000 ICAIdea Estructura de Computadores Cap. En ocasiones no es necesario usar tanta memoria RAM..0] 0x8000 D[15. 28 Nótese que los chips de memoria no tienen por qué ser iguales.

los 8 kB de RAM aparecen repetidos en las posiciones 0xA000-0xBFFF. en lugar de detectarse el error se realizará un acceso a la 0x8001. ya que no es nada elegante el que una misma posición de memoria física se pueda acceder desde cuatro direcciones distintas..0] A A[15. Esto es interesante para depurar programas. No obstante en aplicaciones empotradas en las que un objetivo es ahorrar hardware.Organización de la memoria 13 0x9FFF A[12.– p. 5: Memoria.0] CS OE ROM 32Kx8 8 D[7.0] CS OE WE SRAM 8Kx8 A15 uP D OE WE 8 D[7..0] 0x0000 ICAIdea Estructura de Computadores Cap. El circuito anterior es en realidad una chapuza que permite ahorrar hardware a costa de “complicar” la programación. Se dice entonces que las posiciones de memoria 0xA000-0xBFFF.. 0xC000-0xDFFF y 0xE000-0xFFFF.0] 15 0x7FFF A[14. En estos casos el procesador genera una excepción. este tipo de chapuzas están justificadas. . ya que en el circuito de la transparencia si se produce un acceso erróneo a la posición 0xE001.. 0xC000-0xDFFF y 0xE000-0xFFFF son posiciones “fantasma” de la memoria situada en 0x8000-0x9FFF. En sistemas más complejos se suele usar una circuitería adicional que indica al procesador si la dirección de memoria a la que intenta acceder no existe físicamente.0] 0x8000 D[15... ya que los bits A13 y A14 no se tienen en cuenta para direccionar la RAM. denominada típicamente error de bus. 29 En este ejemplo.

La memoria ROM ha de situarse en las posiciones bajas del mapa de memoria y la RAM en las posiciones altas.048. El microprocesador podrá direccionar por tanto 220 = 1. En la siguiente transparencia se muestra el mapa de memoria que es necesario implementar. Del espacio de direccionamiento total sólo se necesita usar una parte. .576 (1 MB). Se desea construir un sistema empotrado basado en un microprocesador de 16 bits con un bus de direcciones de 20 bits.– p. 30 Para finalizar veamos un ejemplo más complejo. Se dispone de chips de ROM de 128 kx8 y chips de RAM de 128 kx4. ICAIdea Estructura de Computadores Cap.Organización de la memoria Ej: Se dispone de un microprocesador con un bus de direcciones de 20 bits y un bus de datos de 16 bits: • ¿Cual es el tamaño máximo de memoria que puede usar? • Se necesita disponer de una memoria RAM de 512 kB y una ROM de 256 kB. 5: Memoria.

habrá que activar los 4 últimos chips de RAM. siempre que la dirección esté entre 0x00000 y 0x3FFFF. La RAM se ha situado en los 512 kB superiores y se implementa usando 8 chips de 128k x 4.– p. . Si el acceso se realiza a una dirección comprendida entre 0x80000 y 0xBFFFF será necesario activar los 4 primeros chips de RAM y si se accede a las direcciones comprendidas entre 0xC0000 y 0xFFFFF. Así. 5: Memoria.Organización de la memoria Mapa de memoria: 0xFFFFF RAM RAM RAM RAM 128kx4128kx4128kx4128kx4 0xFFFFF 0xC0000 RAM RAM RAM RAM RAM 128kx4128kx4128kx4128kx4 0x80000 0x80000 0x40000 0x40000 ROM 0x00000 ICAIdea ROM ROM 128kx8 128kx8 0x00000 Estructura de Computadores Cap. habrán de activarse solamente los dos chips de ROM. 31 La ROM se ha situado en los 256 kB más bajos de la memoria y se implementa usando dos chips de 128k x 8. En cada acceso a memoria será necesario distinguir qué grupo de chips es necesario activar en función de la dirección de memoria.

Organización de la memoria Mapa de memoria: Dirección Memoria 00XX XXXX XXXX XXXX XXXX ROM 01XX XXXX XXXX XXXX XXXX No usado 10XX XXXX XXXX XXXX XXXX RAM 1 11XX XXXX XXXX XXXX XXXX RAM 2 ICAIdea Estructura de Computadores Cap. . Por ejemplo. 32 En la tabla de la transparencia se muestran en binario los rangos de direcciones asociados a cada zona de memoria. independientemente del valor de los bits más bajos. los dos primeros bits especifican en qué zona de memoria está la palabra o el byte al que se desea acceder. Por eso se han designado estos bits en la tabla con una X (don’t care). la distinción entre una zona y otra viene dada por los dos bits más significativos de la dirección. el acceso se realizará a la ROM. 5: Memoria. Como se puede observar. Por tanto. y los 18 más bajos (marcados con una X en la tabla) especifican a qué palabra o byte dentro del bloque se desea acceder. si los dos bits superiores de la dirección están a cero.– p.

12] A19 A18 Dec 2 a 4 CS OE WE A[17..4] 0 1 2 3 CS OE WE A[17.Organización de la memoria A A[19. También conviene destacar que se accederá al primer bloque de RAM cuando se active la señal CSRAM1. 5: Memoria.. No deben de existir copias “fantasmas” de la ROM..0] CSRAM1 CSRAM2 A[17... D[15. De la misma manera. y esta activará los chip select de los chips de ROM. lo cual. el chip de ROM donde se almacenan los bytes más significativos sólo se activará cuando lo haga la señal UDS. como se ha supuesto una arquitectura little endian.. el segundo bloque de RAM se activará cuando A19 y A18 sean 11.. cuando A19 y A18 sean 00..1] 17 4 4 RAM 128Kx4 CS OE WE RAM 128Kx4 CS OE WE 4 RAM 128Kx4 OE WE A[17.4] CSRAM2 LDS D[3...1] UDS UDS LDS LDS uP A[17.8] RAM 128Kx4 D[15.1] 17 4 A[17. De la misma forma. Ejercicio Modifique el circuito anterior para implantar una ROM de sólo 128 kB. Como puede observarse en el circuito. Dibuje el mapa de memoria resultante y el circuito final... sólo que al ser estos chips de 4 bits. será cuando se acceda a un byte situado en una posición par....1] 17 D[3. Así.1] 17 8 CSROM LDS ICAIdea CS OE WE ROM 128Kx8 D[7.. el chip que almacena los bits menos significativos. 33 En la transparencia se muestra un esquema simplificado del circuito resultante para implantar el mapa de memoria.1] 17 CSRAM1 UDS CS OE WE 4 RAM 128Kx4 A[17.1] 17 4 D[11.1] 17 4 17 CS OE WE RAM 128Kx4 CS OE WE CS OE WE RAM 128Kx4 A[17. Se dispone de chips de ROM de 64 kx8.. lo cual tendrá lugar cuando los bits A19 y A18 del bus de direcciones sean 10..1] CSRAM1 LDS D D[15. los dos chips que almacenan cada uno de los nibbles de un byte están conectados a la misma señal de chip select. El acceso a la RAM es similar al de la ROM..1] 17 4 D[7. es necesario poner dos de ellos en paralelo para almacenar un byte..0] 8 CSROM UDS CS OE WE ROM 128Kx8 D[15..– p.8] Estructura de Computadores Cap. Nótese que se ha utilizado un decodificador de 2 a 4 para identificar qué bloque de memoria es necesario activar.8] RAM 128Kx4 D[7. se activará la salida 0 del decodificador..1] 17 A[17.0] CSROM . Como se puede observar. La RAM seguirá siendo de 512 kB y se dispone de chips de 128k x 4. sólo se activará cuando la línea LDS lo haga.12] CSRAM2 UDS D[11.0] OE WE A[17.

. y a continuación se activa la línea fila. La estructura de una celda de un bit de una memoria CAM es la mostrada en la transparencia. sino que en su lugar se observa la salida de la puerta XNOR.– p. según su tipo. Celda de 1 bit B A Q2 Q1 −bit bit fila match ICAIdea Estructura de Computadores Cap. respectivamente. 5: Memoria. si un dato está almacenado en ella o en qué posiciones está. En escritura funciona exactamente igual que una SRAM convencional: en las líneas bit y -bit se coloca el dato a escribir y su complementario. Como se puede apreciar no es más que una celda de memoria SRAM a la que se ha añadido una puerta XNOR. Si el bit almacenado en la celda coincide con el dato presente en la línea bit. 34 Las memorias CAM (content addressable memory) o memorias asociativas. La lectura en cambio se realiza colocando el dato en las líneas bit y -bit. permiten conocer. la salida match se activará. en las memorias CAM se aporta a la memoria un dato y ésta nos devuelve la posición en la que éste se encuentra. pero ahora no se activa la línea fila. Dicho de otra forma. al contrario que una memoria convencional en la que se aporta a la memoria una dirección y ésta nos da el dato almacenado en dicha posición. En la siguiente transparencia se muestra una estructura de una memoria CAM para almacenar datos de 4 bits.Memoria CAM. Obviamente una memoria CAM de un bit no es muy útil.

. Si los cuatro bits de una fila coinciden con los cuatro bits del bus de datos. Para la escritura existe un decodificador de 2 a 4 para activar la fila correspondiente a la dirección presente en el bus de direcciones A[1. Si se necesita saber solamente si el dato está presente en la memoria o no. esta señal de activación se ha conectado a la señal de escritura WE para que las líneas de fila sólo se activen en el proceso de escritura. Por tanto. basta con realizar una OR entre todas las señales de comparación Mx. Como se puede apreciar en el circuito. basta con colocar el dato a buscar en el bus de datos y comprobar si alguna de las salidas M3 a M0 se activan. el decodificador incorpora una señal de activación E de forma que cuando dicha señal esté inactiva. 5: Memoria. como las líneas de fila sólo deben de activarse en la escritura. todas las salidas del decodificador estarán a cero.0]. para buscar un dato en la memoria CAM... la salida M correspondiente a dicha fila se activará. Circuito de 4 x 4 bits Acondicionamiento de líneas de bit M0 match bit −bit fila match bit −bit fila match bit −bit fila match bit −bit fila 0 M1 match bit −bit fila match bit −bit fila match bit −bit fila match bit −bit fila 1 M2 A0 match bit −bit fila A1 match bit −bit fila match bit −bit fila match bit −bit fila 2 M3 match bit −bit fila match bit −bit fila match bit −bit fila E3 WE ICAIdea match bit −bit fila D[3.Memoria CAM. 35 En la figura se muestra una memoria CAM de 4 posiciones de 4 bits cada una. se realiza la comparación en cada celda entre el bit almacenado y el presente en el bus de datos. Ahora bien. Cuando la señal WE está desactivada.0] Buffer Estructura de Computadores Cap.– p.

5: Memoria. tal como se verá más adelante. el cual se mapea en un espacio de direcciones físico en RAM de n bits (n < m) y en disco duro. La primera es la de permitir que varios programas coexistan en la misma máquina y en la misma memoria. aunque. De esta forma es prácticamente imposible que un error en un programa deje colgada la máquina entera. En la siguiente transparencia se muestra un diagrama del proceso.Memoria Virtual La memoria virtual permite: 1. ICAIdea Estructura de Computadores Cap. 2. a costa de una pérdida en el rendimiento. Este espacio de memoria virtual está aislado del resto de programas que se ejecutan en la máquina. El espacio de direcciones virtual consta de direcciones de m bits. 1 ¿Alguien recuerda el MS-DOS? . de forma que cada programa sólo puede leer y escribir en su zona de memoria. Disponer de un espacio de memoria grande a un precio reducido. 1 Además la memoria virtual puede ser de un tamaño mucho mayor que la memoria física. por lo que se pueden ejecutar un programa (o un conjunto de ellos) que necesite un tamaño de memoria (para código y datos) mayor que la memoria física disponible. pero con la “ilusión” de que disponen de un espacio de memoria propio. 36 Los sistemas operativos modernos utilizan memoria virtual por dos razones principales. Que varios programas puedan compartir la memoria sin riesgos.– p.

Nótese también que varias páginas virtuales de distintos procesos pueden mapearse en una misma página física. se supone que dispone de todo el rango de direcciones virtuales. situándose el programa y los datos dentro de este espacio virtual. Si se llena la memoria RAM. . Cuando el programa se carga en memoria para su ejecución. algunas páginas que no se estén usando se volcarán a disco para su posterior recuperación cuando se necesiten de nuevo.Memoria Virtual Direcciones Virtuales Direcciones físicas Traducción de direcciones Direcciones de disco ICAIdea Estructura de Computadores Cap. éste se divide en páginas.– p. 37 Para realizar un mapeo eficiente de la memoria virtual en memoria física. las cuales se irán cargando en la memoria RAM conforme se vayan necesitando. Esto permite que varios programas puedan compartir datos o código. 16 kB o 32 kB son valores típicos hoy día) denominados páginas. En la transparencia se muestra una situación en la que la mayoría de las páginas están en RAM y sólo tres de ellas están en disco. Cuando se compila un programa. la memoria virtual se divide en bloques (4 kB. 5: Memoria.

Si la RAM está llena. cediéndose el control al sistema operativo para que traiga la página virtual solicitada a RAM. Si en número de página virtual solicitado no está en RAM. debido al principio de localidad no se producirán excesivos fallos de página salvo en sistemas en los que la relación memoria virtual/memoria física sea muy grande. En el ejemplo de la figura se ha supuesto que las páginas son de 4 kB (12 bits). será necesario sustituir una página antigua por la nueva.Memoria Virtual Dirección virtual 31 30 29 28 27 15 14 13 12 Número de página virtual 11 10 9 8 3210 Desplazamiento en página Traducción 29 28 27 15 14 13 12 Número de página física 11 10 9 8 3210 Desplazamiento en página Dirección física ICAIdea Estructura de Computadores Cap. Como se puede observar. Afortunadamente. por lo que interesa que las páginas tengan tamaños elevados. si la página antigua no se ha modificado. Para ello. 38 Una dirección virtual se puede dividir en un número de página y un desplazamiento dentro de la página. . la penalización por fallo de página es elevada.– p. 5: Memoria. el espacio de direcciones virtual es de 32 bits (4 GB) y el espacio de direcciones físico es de 30 bits (1 GB de memoria RAM máximo). antes habrá que copiarla a disco. En caso contrario. basta con sobreescribirla. el mecanismo de traducción generará una excepción de fallo de página. De esta forma el mecanismo de traducción se encarga de hacer corresponder el número de página virtual con un número de página física si dicha página está ya en RAM.

De esta forma se pueden usar algoritmos sofisticados para minimizar dichos fallos de página como el LRU (Least recently used) que otros esquemas (directo o asociativo por conjuntos usados en las caches) no permitirían. Para ello en la entrada de la tabla de páginas (o en una estructura de datos auxiliar) estará almacenada la dirección en el disco de la página. la cual se almacena en memoria. Si no está (valid=0). Como no todas las páginas virtuales estarán en memoria física. Como cada programa tiene su propio espacio de direcciones virtual.– p. 5: Memoria. cada programa necesita su propia tabla de páginas. se producirá un fallo de página. . Si la página está en RAM (valid=1). Para implantar la traducción de páginas virtuales a físicas se usa una tabla que asocia cada página virtual con su página física. En estos casos se generará una excepción y el sistema operativo tendrá que traer la página solicitada desde el disco. 39 Para reducir el número de fallos de página. Por ello es necesario disponer en la circuitería de un registro de tabla de páginas para almacenar la dirección de memoria en la que está almacenada la tabla de páginas del programa que se está ejecutando. En la transparencia se muestra el proceso de traducción: el número de página virtual indica la entrada de la tabla de páginas en la que hay que leer el número de página física. Tabla de páginas Page table register Virtual address 31 30 29 28 27 15 14 13 12 11 10 9 8 Virtual page number Page offset 20 Valid 3 2 1 0 12 Physical page number Page table 18 If 0 then page is not present in memory 29 28 27 15 14 13 12 11 10 9 8 Physical page number 3 2 1 0 Page offset Physical address ICAIdea Estructura de Computadores Cap. existe un bit (valid) que estará a 1 si la página está en RAM o a 0 si no lo está. es necesario poder asignar una página virtual a cualquier página física (esquema totalmente asociativo). se toma el número de página física de la tabla de páginas y se realiza el acceso a memoria. denominada tabla de páginas.Memoria Virtual.

El primer método consiste en crear una tabla de páginas del tamaño igual al que necesita el programa e indicar este tope mediante un registro de límite. ICAIdea Estructura de Computadores Cap. Varias alternativas: • Registro de límites. • Paginar la tabla de páginas. Se crea entonces una tabla de nivel superior para almacenar los bloques. Si para cada entrada se necesitan 4 bytes. Obviamente esta técnica obliga a que el programa tenga que situarse en un espacio contiguo de la memoria virtual. Ciertamente 4 MB es un tamaño elevado. Por último. aunque es un proceso relativamente complejo que se sale de los objetivos de esta introducción. se puede añadir una mejora que consiste en incluir dos registros de límite para permitir tener dos zonas de memoria virtual separadas (por ejemplo una para la pila y otra para el programa). pero si se tiene en cuenta que cada programa que se esté ejecutando en la máquina necesita su propia tabla de páginas. se asignan más páginas y se incrementa la tabla de páginas a partir del registro límite. el tamaño de la tabla de páginas puede ser muy elevado. se llega a la conclusión de que si no se reduce de alguna forma el tamaño de estas tablas puede ocurrir que se necesite toda la memoria para almacenar las tablas de páginas. 5: Memoria. Mediante una función de dispersión (hash) se asocia cada página virtual a una entrada en la tabla de páginas. lo cual no es lo más apropiado. basta con almacenar solamente las páginas usadas por el programa en la tabla de páginas. • Varios niveles de tablas. Por tanto es necesario usar algún mecanismo para reducir el tamaño de la tabla de páginas. 40 Si se desea mapear toda la memoria virtual. No obstante. las tablas de páginas de pueden almacenar también en la memoria virtual.Memoria Virtual. denominada tabla de páginas invertida. Todos los métodos se basan en el mismo principio: puesto que los programas no usan toda la memoria virtual. o bien contiene el puntero a la tabla de páginas del bloque. Tabla de páginas Tamaño de la tabla de páginas: 220 entradas · 4bytes/entrada = 4MB Se necesita una tabla de páginas para cada programa en ejecución. de forma que cada entrada en esta tabla o bien indica que ninguna de las páginas del bloque está asignada. el tamaño total será de 2 20 ∗ 4 Bytes = 4 MB. . el número de entradas en la tabla de páginas sería igual a 2 20 . En el ejemplo de la figura.– p. El tercer método divide la tabla de páginas en bloques (64 o 256 páginas por bloque son valores típicos). • Tabla hash. Si el programa durante su ejecución necesita más memoria. El segundo método se basa en crear una tabla de páginas con un número de entradas igual al de páginas físicas.

Así pues cada acceso útil requiere dos accesos. el número de página física asociada a dicha página virtual y varios bits de control. pero para ello es necesario leer en primer lugar la tabla de páginas para obtener el número de página física para a continuación leer el dato de la memoria física. ICAIdea Estructura de Computadores Cap. las traducciones de direcciones se vuelven a utilizar en breve. por lo que es necesario buscar algún método para solucionar este problema. TLB Cada acceso a memoria tarda el doble: • Un ciclo para leer la tabla de páginas. Desde el punto de vista del rendimiento esto es nefasto. Para mejorar las prestaciones se usa un buffer de traducción de direcciones (TLB). Esto permite usar una cache especial para guardar las traducciones de páginas más recientes. 41 El alumno espabilado probablemente se haya dado cuenta de un pequeño inconveniente de la memoria virtual: para cada acceso a memoria es necesario realizar la traducción de la dirección virtual a la dirección física. Estos bits de control indican si la entrada correspondiente contiene una asociación memoria virtual-memoria física válida (bit valid) y si se ha modificado la página en memoria física (bit dirty). . La solución viene gracias al principio de localidad de los programas: una vez que se accede a un objeto situado en una página. • Otro para leer el dato Gracias al principio de localidad. Dicha cache recibe el nombre de buffer de traducción de direcciones o TLB (siglas de su nombre en inglés: Translation Lookaside Buffer).– p. Cada entrada en la TLB consta de tres partes: el número de página virtual. lo más normal es que los siguientes objetos usados por el programa estén dentro de la misma página.Memoria Virtual. 5: Memoria.

– p. 42 En la transparencia se muestra el esquema de traducción de páginas virtuales a físicas utilizando una TLB. el proceso de búsqueda del número de página virtual ha de ser muy rápido. LRU) para minimizar los fallos de página. antes de sobreescribir la página antigua hay que salvarla en disco. entonces se procede a reemplazar1 una de las entradas de la TLB por la entrada correspondiente a esta página. Si por el contrario el bit dirty está a 1. Soluciones típicas son elegir una entrada para remplazar al azar o usar un mecanismo LRU simplificado. basta con tomar la dirección de página física para acceder al objeto. Para ello el número de la página virtual se copia en el campo tag y la dirección de la página física y los bits valid y dirty obtenidos de la entrada de la tabla de páginas correspondiente a esta página virtual se copian en las entradas correspondientes de la TLB. por lo que no puede ser muy complejo. este remplazo ha de realizarse por hardware. Una vez localizada la entrada de la página virtual se inspecciona el bit valid para ver si la página se encuentra en la memoria física. lo cual indica que no se ha modificado. . Para obtener buenas prestaciones. Si no se encuentra el número de página en el TLB. En este caso se elige una página en memoria física para reemplazarla2 y si el bit dirty está a cero. 2 En este caso menos frecuente y con mayor penalización que el fallo en el TLB ya que hay que acceder al disco. el mecanismo de remplazo ha de ser complejo (p ej. Si el bit está a 1. El proceso de traducción comienza buscando el número de página virtual dentro de la TLB. 5: Memoria. 1 Dado que se producen frecuentes fallos del TLB. Si el bit valid está a 0. TLB Virtual page number Dirty Valid 0 1 1 1 1 0 1 TLB Tag 0 1 0 0 0 0 1 Physical page address Physical memory Page table Dirty Physical page Valid or disk address 1 1 1 1 0 1 1 0 1 1 0 1 ICAIdea 0 1 0 1 0 0 1 0 0 0 0 1 Disk storage Estructura de Computadores Cap. se producirá un fallo de página y tomará el control el sistema operativo para traer la página a memoria. simplemente se sobreescribe con los datos de la nueva página. que estará almacenado dentro del campo tag (etiqueta).Memoria Virtual. En la siguiente transparencia se muestra un ejemplo de implantación en hardware de una TLB. por lo que se recurre a memorias CAM.

Memoria Virtual. las físicas de n bits y los desplazamientos dentro de las páginas de p bits. En la figura se ha supuesto que las direcciones virtuales son de m bits. 43 En la figura se muestra una implantación típica de una TLB usando memoria asociativa para almacenar las etiquetas.– p. virtual Mn . Las salidas de igualdad de cada palabra de la memoria CAM se conectan a la señal de fila de una memoria SRAM.. Por tanto.. cuando se introduce un número de página virtual. si ésta está almacenada en la posición x. física ICAIdea Estructura de Computadores Cap.. en la que se almacenan los datos correspondientes a la etiqueta asociada de la CAM.. físicas) Valid Dirty n−p pag. 5: Memoria. TLB m−p Memoria CAM (etiquetas) pag.. la salida Mx de la CAM se activará. M2 M1 M0 Memoria SRAM (dir. que obviamente serán los asociados a la etiqueta x. .. y esta señal hará que en la salida de la memoria SRAM se obtenga el número de página física y los bits valid y dirty almacenados en la posición x..

H. Addison-Wesley. J.es/daniel/asignaturas/EstComp_2_IINF/docs/romSamsung. Reverté. N. K4E170411D.dea.pdf.pdf. . K4E170412D. (2000). SAMSUNG ELECTRONICS CO. y Eshraghian. y Hennessy. Disponible on-line en: http://www. (1993). E. J. VLSI Systems series. LTD.upco.. second edition. A systems perspective. Digital integrated circuits: A design perspective. Principles of CMOS VLSI design. K. Samsung.dea.. Rabaey. Prentice Hall. Estructura y diseño de computadores. K3N3C3000D-D(G)C 4M-Bit (512Kx8) CMOS MASK ROM.icai. SAMSUNG ELECTRONICS CO. 4M x 4Bit CMOS Dynamic RAM with Extended Data Out.es/daniel/asignaturas/EstComp_2_IINF/docs/dramSamsung. K4E160411D.Referencias Patterson. Weste. Samsung. Disponible on-line en: http://www. Interficie circuitería/programación. D. (1996). A. K4E160412D. LTD. M.upco. L.icai.