Vous êtes sur la page 1sur 9

Memoria

Parte del computador que almacena la información:

• Instrucciones
• Datos.

Conjunto de posiciones de memoria con:

• Dirección, identificación de la posición de memoria


• Contenido, información almacenada

Operaciones básicas:

• Lectura (R)
• Escritura o almacenamiento (W)

Velocidad o tiempo de acceso: tiempo que transcurre desde que se proporciona la dirección a
la memoria y el dato está disponible

Ciclo de memoria: tiempo que transcurre entre dos accesos consecutivos a memoria. Puede
ser superior al tiempo de acceso

Modo de acceso:

• Aleatorio
• Secuencial
• Directo

Permanencia (información):

• Permanente / no volátil
• Volátil
• Lectura destructiva
• Necesidad de refresco

Forma de acceso:

• Por dirección
• Por contenido
Realización de operaciones:

• Por palabras
• Por bloques

Jerarquía de Memoria
Se le conoce como la organización piramidal de la memoria en niveles, que tienen
los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al
coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias.
Los puntos básicos relacionados con la memoria pueden resumirse en:

• Cantidad
• Velocidad
• Coste

La cuestión de la cantidad es simple, cuanto más memoria haya disponible, más podrá
utilizarse. La velocidad óptima para la memoria es la velocidad a la que el procesador puede
trabajar, de modo que no haya tiempos de espera entre cálculo y cálculo, utilizados para traer
operándos o guardar resultados. En suma, el costo de la memoria no debe ser excesivo, para
que sea factible construir un equipo accesible.

Como puede esperarse los tres factores compiten entre sí, por lo que hay que encontrar un
equilibrio. Las siguientes afirmaciones son válidas:

• A menor tiempo de acceso mayor coste


• A mayor capacidad mayor coste
• A mayor capacidad menor velocidad.

Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva
para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un
principio llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y
lograr un rendimiento cercano al de la memoria más rápida.

Los niveles que componen la jerarquía de memoria habitualmente son:

• Nivel 0: Registros
• Nivel 1: Memoria caché
• Nivel 2: Memoria principal
• Nivel 3: Memoria virtual
Registros
En arquitectura de ordenadores, un registro es una memoria de alta velocidad y poca
capacidad, integrada en el microprocesador, que permite guardar transitoriamente y acceder a
valores muy usados, generalmente en operaciones matemáticas.

Los registros están en la cumbre de la jerarquía de memoria, y son la manera más rápida que
tiene el sistema de almacenar datos. Los registros se miden generalmente por el número de
bits que almacenan; por ejemplo, un "registro de 8 bits" o un "registro de 32 bits". Los registros
generalmente se implementan en un banco de registros.

El término es usado generalmente para referirse al grupo de registros que pueden ser
directamente indexados como operándos de una instrucción, como está definido en el conjunto
de instrucciones. Sin embargo, los microprocesadores tienen además muchos otros registros
que son usados con un propósito específico, como el contador de programa.

Tipos de registros

 Los registros de datos son usados para guardar números enteros. En algunas
computadoras antiguas, existía un único registro donde se guardaba toda la
información, llamado acumulador.

 Los registros de memoria son usados para guardar exclusivamente direcciones de


memoria.

 Los registros de propósito general (en inglés GPRs o General Purpose Registers)
pueden guardar tanto datos como direcciones. Son fundamentales en la arquitectura
Eckert-Mauchly. La mayor parte de las computadoras modernas usa GPR.

 Los registros de coma flotante son usados para guardar datos en formato de coma
flotante.

 Los registros constantes tienen valores creados por hardware de sólo lectura.

 Los registros de propósito específico guardan información específica del estado del
sistema, como el puntero de pila o el registro de estado.
Memoria caché
Son memorias de pequeña capacidad. Normalmente una pequeña fracción de la memoria
principal. y pequeño tiempo de acceso. Este nivel de memoria se coloca entre la CPU y la
memoria central. Hace algunos años este nivel era exclusivo de los ordenadores grandes pero
actualmente todos los ordenadores lo incorporan. Dentro de la memoria caché puede haber, a
su vez, dos niveles denominados caché on chip, memoria caché dentro del circuito integrado, y
caché on board, memoria caché en la placa de circuito impreso pero fuera del circuito
integrado, evidentemente, por razones físicas, la primera es mucho más rápida que la segunda.
Existe también una técnica, denominada Arquitectura Harvard, en cierto modo contrapuesto a
la idea de Von Newmann, que utiliza memorias caché separadas para código y datos. Esto
tiene algunas ventajas como se verá en este capítulo.

Memoria principal
La memoria principal son circuitos integrados capaces de almacenar información digital, a los
que tiene acceso el microprocesador del equipo de computación. Poseen una menor capacidad
de almacenamiento que la memoria secundaria, pero una velocidad millones de veces superior.
En las computadoras son utilizados dos tipos de estos dispositivos:

1.- Memoria ROM o Memoria de sólo lectura (Read Only Memory). Viene grabada de
fábrica con una serie de programas. El software de la ROM se divide en dos partes:

a) Rutina de arranque: realiza el chequeo de los componentes de la computadora por


ejemplo circuitos controladores de video, de acceso a memoria, el teclado, unidades de
disco. Se encarga de determinar cuál es el hardware que está presente y de la puesta a
punto de la computadora. Mediante un programa de configuración, el SETUP, lee una
memoria llamada CMOS RAM (RAM de Semiconductor de óxido metálico). Ésta puede
mantener su contenido durante varios años, aunque la computadora está apagada, con
muy poca energía eléctrica suministrada por una batería, guarda la fecha, hora, la
memoria disponible, capacidad de disco rígido, si tiene disquetera o no. Se encarga en
el siguiente paso de realizar el booteo (arranque): lee un registro de arranque 'BR' (Boot
Record) del disco duro o de otra unidad (como CD, USB, etc), donde hay un programa
que carga el sistema operativo a la RAM. A continuación cede el control a dicho sistema
operativo y el ordenador queda listo para trabajar.

b) Rutina Bios: Sistema básico de entrada salida (Basic input output system): permanece
activa mientras se está usando la PC. Permite la activación de los periféricos de entrada/
salida: teclado, monitor, etc.

2.- RAM o Memoria de acceso al azar (Random Access Memory). Es la memoria del
usuario. Contiene de forma temporal el programa, los datos y los resultados que están siendo
usados por el usuario del ordenador. En general es volátil, pierde su contenido cuando se
apaga el computador, a excepción de la CMOS RAM. Tanto la RAM como la ROM son circuitos
integrados, llamados comúnmente CHIP (pastilla). Es una pequeña pastilla de silicio en cuyo
interior hay muchos dispositivos electrónicos (transistores) que permiten, interrumpen o
aumentan el paso de la corriente. Estos chips están sobre una tarjeta o placa. EL contenido de
las memorias no es otra cosa que bits (binary digits), que se corresponden con dos estados
lógicos: el O (cero) sin carga eléctrica y el 1 con carga eléctrica. A cada uno de estos estados
se le llama bit. El BIT es la unidad mínima de almacenamiento de datos.

El microprocesador direcciona las posiciones de la RAM para poder acceder a los datos
almacenados en ellas y para colocar los resultados de las operaciones.

Memoria Virtual
La memoria virtual es una técnica que permite ejecutar procesos que no caben totalmente en
memoria RAM (memoria física). Esto propicia la creación de programas que sean más grandes
que la memoria física. Además, la memoria virtual ayuda a crear un esquema de abstracción
de la memoria que la separa de la zona lógica que el usuario ve, esto facilita enormemente la
tarea a los programadores puesto que no se han de preocupar por limitaciones de memoria.

Los procedimientos de implementación de la memoria virtual se basan en que cuando se


ejecuta un programa, éste está parcialmente en memoria, es decir, sólo hay cargada aquella
zona de código y datos que se necesitan en ese instante de tiempo, y no el programa
completo. La memoria virtual es la separación entre la memoria lógica disponible para el
usuario y la memoria RAM, se implementa generalmente con el método de paginación por
demanda aunque también se puede implementar en un sistema con segmentación.

En el momento en que en el sistema empieza a escasear la memoria, se crea un fichero SWAP


(intercambio) en el disco que sirve como ampliación auxiliar de memoria. En el caso de
Windows, cuando tenemos muchas aplicaciones en funcionamiento y la memoria RAM se
agota, el sistema se apoya en el fichero SWAP para realizar movimientos desde el disco duro a
la RAM y viceversa. De ese modo crean espacios en memoria física para ir ejecutando las
órdenes. Esto, evidentemente, hace que el sistema vaya más lento.

Todo ello permite simular la existencia de 4GB de RAM en el equipo, a pesar de que nadie
dispone de 4GB en su ordenador (a excepción de algunos sistemas en empresas y
universidades), y dar capacidad de ejecución a múltiples aplicaciones por grandes que sean.

Principio de Localidad de Memoria


Para explicar bien este principio entenderemos la propiedad de localidad de referencia. Que
dice que las referencias (direcciones) a memoria que hacen los programas en cierto intervalo
de tiempo, tienden a confinarse dentro de unas cuantas áreas localizadas en memoria, es
decir, que las instrucciones o datos necesarios para el programa, normalmente están en la
misma área de memoria, por lo que durante un corto intervalo de tiempo, las direcciones que
genera una programa típico, con frecuencia hacen referencia a unas pocas áreas de memoria
localizadas, en tanto el resto de la memoria se accesa con poca frecuencia.

El principio establece que en un momento concreto los programas acceden a una parte
relativamente pequeña de su espacio de direcciones, esto quiere decir que los programas van
a acceder a una cierta área de memoria continuamente en un intervalo de tiempo. Existen dos
tipos:
• Localidad temporal: un elemento referenciado tiende a ser referenciado nuevamente
pronto.

• Localidad espacial: los elementos cercanos a uno referenciado tienden a ser


referenciados pronto.

La localidad de los programas surge de su estructura simple y natural. Por ejemplo, muchos
programas contienen bucles, por lo que se accederá repetidamente a instrucciones y datos,
mostrando así mucha localidad temporal. Como normalmente se accede a las instrucciones
secuencialmente, los programas muestran mucha localidad espacial. Los accesos a datos
también muestran una localidad espacial natural. Por ejemplo, los accesos a elementos de un
vector o una tupla tendrán por naturaleza mucha localidad espacial.

Mapeo Directo de Memoria


Entendiendo el principio anterior, si las partes activas del programa y el área de memoria al que
hace referencia lo colocamos en una memoria pequeña y rápida cercana al procesador,
lograremos reducir el tiempo de ejecución del programa. A dicha memoria se le denomina
memoria caché.

La memoria caché tiene incorporado, un espacio de almacenamiento llamado Tag RAM, que
indica a que porción de la RAM se halla asociada cada línea de caché, es decir permite traducir
una dirección de RAM en una línea de caché concreta.

La memoria principal esta divida en bloque y la memoria caché en bloques. Dado que hay
muchas menos líneas en caché que en memoria principal es necesario un algoritmo para
apear bloques de memoria principal en líneas de caché.

MAPEO: Transformación de los datos de la memoria principal a al memoria caché.

Hay, 2k palabras en la memoria caché y 2n palabras en al memoria principal. La dirección de


memoria de n bits se divide en dos campos: k bits para el índice y n-k bits para el campo de
identificación.

La organización de caché de mapeo directo utiliza la dirección de n bits para acceder a la


memoria principal y en índice de k bits para acceder a la caché.

Cada palabra en el caché consiste en la palabra de datos y su identificación asociada. Cuando


se trae por primera vez una nueva palabra dentro del caché, los bits de identificación se
almacenan a un lado de los bits de datos. Cuando la CPU genera una solicitud de memoria, se
usa el campo de índice para que la dirección acceda a caché. El campo de identificación de
dirección de CPU se compara con la identificación en la palabra que se lee del caché. Si
coinciden las 2 etiquetas, existe un acierto y la palabra de datos deseada está en la caché. Si
no coincide, existe una falla y la palabra requerida se lee de la memoria principal. Después se
almacena en caché junto con la nueva identificación, sustituyendo un valor previo.

La desventaja del mapeo directo es que la razón de acierto puede disminuir considerablemente
se accesa con frecuencia dos o más palabras cuyas direcciones tienen el mismo índice pero
identificaciones diferentes.
Ejemplo:
Desempeño de la Caché
Como por lo que se explico en el tema anterior, se dice que la memoria caché funciona como
un adivino, que anticipa a lo las necesidades del CPU. Este desempeño se mide en términos
de una cantidad de llamada razón de acierto. Esto se explico algo en el tema anterior de
mapeo, cuando la CPU hace referencia a memoria y encuentra la palabra en la caché, se dice
que produce un acierto. Si no se encuentra la palabra en el caché, está en la memoria
principal y se cuenta como una falla. La razón de la cantidad de aciertos dividida entre la
cantidad total de referencias de la CPU a la memoria (aciertos más fallas) es la razón de
aciertos.

Razón de acierto = cantidad de aciertos


(aciertos + fallas)

Mecanismos de Traducción de
Direcciones
La memoria principal es una secuencia de bytes, que empieza en el 0 y termina en....por
ejemplo 64 Mb, es decir un "array" de bytes.

Cada byte tiene una dirección, el número que ocupa en una posición en la memoria. Esta
dirección es conocida como "dirección física".

Las direcciones que va a utilizar un programa (en modo protegido), no son esas. Siempre son
traducidas, o mapeadas, en direcciones de memoria física por un mecanismo de "traducción de
direcciones".

Este mecanismo, nos introduce en el concepto de "dirección virtual". Se llama de esta manera
porque no corresponde directamente a posiciones de memoria "física", sino que a través de
una "función de mapeado" equivale a una dirección de memoria física.

Es decir este mecanismo, al "apuntar" a una dirección de memoria, lo que hace es buscar, por
ejemplo en unas tablas internas, la correspondencia entre esta dirección y la dirección real
"fisica" del dato.

Vous aimerez peut-être aussi