Memoria

Memoria Parte del computador que almacena la información: • Instrucciones • Datos. Conjunto de posiciones de memoria

Views 243 Downloads 74 File size 173KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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.