Tema 7: Unidad de Memoria
Unidad de Memoria
Lo mas deseable es que la CPU tenga acceso directo e inmediato a la informacion que se almacena en la memoria para que la CPU trabaje a su maxima velocidad. Sin embargo, las unidades de memoria que trabajan con velocidades de procesamiento similares a la CPU tienen un coste muy elevado. Por ese motivo, es habitual distribuir la informacion en distintas memorias con distintas tecnologias, costes y rendimientos.
Conceptos Basicos
Localizacion
Desde el punto de vista de la localizacion de la memoria, esta se puede clasificar en 3 grupos basicos:
-
Memoria interna del procesador: Es una memoria formada basicamente por registros de alta velocidad a la CPU que se utilizan como almacenamiento tmeporal de instrucciones y datos.
-
Memoria principal (o memoria central): Es una memoria de gran tamano y velocidad que se encarga del almacenamiento de las instrucciones de los programas que se estan ejecutando en ese momento y sus datos. La tecnologia que se utiliza normalmente es la de los circuitos integrados tipo semiconductor.
-
Memoria externa (o memoria auxiliar): Es una memoria alojada en un dispositivo periferico de almacenamiento al que la CPU accede a traves de controladores de E/S. Este tipo de memorias cuentan con un controlador, que libera la CPU de la gestion de este dispostivo, y un soporte de informacion. Habitualmente es mucho mas grande y lenta que la memoria central y se utiliza por programas y datos que no son utilizados constantemente por la CPU.
Capacidad
La capacidad de una memoria hace referencia a la cantidad de informacion que es capaz de almacenar. Se suele medir en palabras (que esta formada a su vez por un conjunto de bits):
1K palabra = 2^10 palabras = 1024 palabras
La capacidad de almacenamiento de la CPU suele ser de una palabra, mientras que la de la memoria principal es de millones de palabras. Si existe la necesdiad de grandes cantidades de almacenamiento de informacin, se suelen utilizar memorias secundarias.
Unidad de Transferencia
En la memoria principal, la unidad de transferencia es el numero de bits leidos y escritos en la memoria simultaneamente y no tiene por que ser iguales a la palabra.
En las memorias externas, los datos se transfieren con frecuencia en unidades mucho mas grandes de una palabra que son denominadas bloques.
Metodo de Acceso
El orden o metodo de acceso en que debe ser localizada o accedida una informacion en un dispositivo de memoria se puede clasificar en cuatro grandes grupos:
-
Acceso Aleatorio: En un acceso aleatorio se puede acceder a las informaciones almacenadas en la memoria en cualquier orden y el tiempo de acceso es independiente de la posicion donde esta localizada la informacion. Las memorias que utilizan este acceso se denominan RAM y en ellas cada posicion direccionable tiene asignada una unica direccion de localizacion y el tiempo de posicion es constante e independiente de la secuencia de accesos que fuese anteriormente. La memoria principal es de acceso aleatorio.
-
Acceso Secuencial: A las memorias que tienen acceso secuencial se le conoce como SAM (Sequential Access Memory). En ellas solo se puede acceder a la informacion almacenada en ellas mediante una secuencia lineal. Es decir, el tiempo para acceder a una informacion correcta es variable y dependiente de la posicion donde esta almacenada. La unidad fundamental de este tipo de memorias es el registro.
-
Acceso Directo: El acceso se efectua mediante un mecanismo de acceso aleatorio para alcanzar la zona mas proxima (registro) donde se encuentra la informacion a la que se desea acceder, y a continuacion se realiza una busqueda de tipo secuencial dentro del registro. El tiempo de acceso es variable.
-
Acceso Asociativo: Son memorias de acceso aleatorio en las que se selecciona la posicion de memoria en la que se desea comunicar, sobre el principio de lo que contiene y no sobre la base de donde esta. Es decir, se debe saber a priori lo que se desea buscar. En ella, cada posicion tiene su propio mecanismo de direccionamiento y el tiempo de recuperacion de la informacion es constante e independiente d su localizacion y configuracion de acceso previo.
Tipos Fisicos
Los cuatro tipos fisicos mas usados son:
- Memorias del semiconductor del tipo LSI (Large Scale Integration) o VLSI (Very large Scale Integration): utilizadas con su memoria principal.
- Memorias magneticas: usadas como medias secundarias.
- Memorias opticas: usadas como medidas secundarias.
- Memorias magneto-opticas: usadas como medias secundarias.
Alterabilidad
La alterabilidad es la capacidad de alterar el contenido de una memoria. Las memorias cuyo contenido no puede alterarse (por ejemplo, las tarjetas perforadas) se les conoce como memorias de solo lectura o ROM. Mientras que las memorias que se pueden realizar se denominan memorias de lectura-escritura o memorias RWM (Read Write Memory.)
Si la memoria ROM se puede programar, se denomina PROM (Programmable ROM). Si la memoria PROM puede ser borrada y vuelta a programar se le conoce como EPROM (Erasable PROM). Mientras que si el contenido de la EPROM puede borrarse electricamente se habla de memoria EEPROM (Electrically EPROM) y si lo hace con rayos ultravioleta UVEPROM.
Permanencia de la Informacion
Por otra parte, la permanencia de la informacion se caracteriza por:
-
Lectura Destructiva: Son memorias en las que la operacion de lectura supone la destruccion de la informacion leida. Las memorias con lectura destructiva se conocen como memorias DRO (Destructive Readout) y para evitar la perdida de informacion en ellas es necesario volver a reescribirlas inmediatamente despues d leerlas. A las memorias no destructivas se les denomina NDRO (Non Destructive Readout).
-
Volatilidad: Es la capacidad de destruccion de la informacion almacenada en un cierto dispositivo de memoria cuando se produce un corte de suministro electrico. Las memorias que pierden su informacion al cortar el suminitro electrico se denominan memorias volatiles y las que conservan su informacion se denominan no volatiles.
-
Almacenamiento estatico/dinamico: Se dice que una memoria es estatica cuando la informacion que contiene no varia con el tiempo. Si la informacion varia con el tiempo y es necesario refrescarla, se le denomina memoria dinamica. Las memorias dinamicas tienen una mayor densidad de almacenamiento y menor consumo que las estaticas pero el diseno del refresco anade complejidad al circuito.
Velocidad
Para medir la velocidad de una memoria se requiere conocer tres parametros:
- Tiempo de Acceso (\(t_A\)): tiempo medio necesario para leer una cantidad fija de informacion.
- Tiempo de Ciclo de Memoria (\(t_C\)): En las memorias DRO hay que hacer una restauracion de la informacion leida anteriormente. Haciendo que el intervalo entre dos lecturas sea mayor.
- Velocidad de Transferencia o Frecuencia de Acceso (\(f_A\)): Numero de palabras por segundo que pueden ser accedidas.
En las memorias de acceso aleatorio:
\(f_A = \frac{1}{t_C}\)
Para las memorias de acceso no aleatorio se verifica la relacion:
\(t_n = t_A + \frac{n}{P}\)
donde \(t_n\) es el tiempo medio para leer/escribir bits, \(t_A\) es el tiempo de acceso medio, \(n\) numero de bits que se estan transmitiendo, y \(P\) velocidad de transferencia en bits por segundo.
Resumen Propiedades de Memoria
| Caracteristica | ROM | RAM estatica | RAM dinamica |
|---|---|---|---|
| Alterable | NO | SI | SI |
| Capacidad | Muy alta | Alta | Muy Alta |
| Tiempo de Acceso | Muy bajo | Muy bajo | Bajo |
| Refresco | No | NO | SI |
| Volatil | NO | SI | SI |
Jerarquias de Memoria ATTACH
La unidad de memoria se puede entender como una jerarquia de componentes que se puede definir, desde el punto de vista del disenador en:
-
Capacidad de la Memoria: Este parametro depende de las necesidades del usuario y de las aplicaciones que se ejecutaran.
-
Velocidad: Para conseguir un rendimiento optimo del computador es necesario que la memoria siga el ritmo impuesto por la CPU y no la haga esperar para recibir operando o instrucciones.
-
Coste: Debe existir un compromiso entre el coste, la capacidad de la memoria y el tiempo de acceso.
Memorias de Semiconductor
La memoria principal con semiconductores se llama Circuitos Integrados de Memoria y tiene una alta capacidad a un coste muy razonable.
Caracteristicas de un CIM ATTACH
Internamente un CIM esta formado por una matriz de celdas elementales de tamano \(N \times m\) donde N es el numero de palabras de m bits que se puede almacenar. Cada una de estas palabras tiene asignada una unica direccion:
El numero de lineas \(n\) del bus de direccion cumple la relacion \(2^n = N\). Mientras que el numero de lineas \(m\) del bus de datos coincide con la longitud de la palabra (o un divisor de ella).
Tiene una linea general de habilitacion SC que debe activarse para que la memoria pueda responder a las peticiones que recibe tanto de lectura como de escritura y una entrada de seleccion R/W.
| SC | RW | Operacion de Memoria |
|---|---|---|
| 0 | X | Ninguna |
| 1 | 0 | Leer la palabra seleccionada |
| 1 | 1 | Escribir la palabra seleccionada |
En las memorias RAM, las celdas basicas son mas complejas que en el caso de las ROM porque tiene que ser capaz de leer y escribir en condiciones normales de funcionamiento.
| Seleccion | Escritura | Contenido | Salida |
|---|---|---|---|
| 0 | X | Contenido | 0 |
| 1 | 0 | Contenido | Contenido |
| 1 | 1 | Entrada | Entrada |
En las memorias RAM dinamicas los datos almacenados desaparecen gradualmente y para que no se pierdan deben ser restaurados periodicamnete. A esto se le llama refresco.
Estructura CIM ATTACH
Internamente la estructura del CIM puede variar en funcion de las ligaduras de diseno impuestas. En este sentido, son dos las organizaciones mas habituales:
-
Organizacion 2D: El modulo de memoria esta formado por una matriz de celdas basicas y de los mecanismos de control y seleccion. Para una memoria RAM de \(2^n\) palabras de m bits cada una, la matriz de celdas esta formada por 2^n filas y m columnas. Ademas del array de celdas, el modulo para seleccionar la palabra deseada requiere un decodificador de n entradas y \(2^n\) salidas y para formar la salida m puertas OR de \(2^n\) entradas cada una.
Esta organizacion, aunque la mas sencilla, es la mas costosa. Es rapida porque el unico retardo que presenta esta asociado con los circuitos de decodificacion y con el acceso a los elementos fisicos de almacenamento.
-
Organizacion \(2\frac{1}{2}D\): En esta organizacion, los bits d una palabra estan organizados en mas de un circuito integrado (por ejemplo, una palabra de 16 bits puede almacenarse en 4 circuitos integrados de 4 bits cada uno.) Tambien se usan dos decodificadores con \(\frac{n}{2}\) entradas y \(2^{\frac{n}{2}}\) salidas.
Diseno de Bloques de Memoria ATTACH
Para ampliar el tamano de las palabras de memoria se utilizan \(k\) modulos e interconectarlos de forma que las lineas externas del bus de direccion y las lineas de control son comunes a todos los circuitos.
Memoria Cache y Externas
Memoria Cache ATTACH
La velocidad con la que la CPU accede a la informacion almacenada en la unidad de memoria depende de la tecnologia que emplee la ultima. Lo ideal seria que la memoria principal utilizase la misma tecnologia que los registros de la CPU para obtener tiempos de ciclo de memoria comparables. Sin embargo, esto es muy caro. Por eso, se opta por disenar una pequena memoria que sea rapida entre la CPU y la memoria principal que se conoce con el nombre de memoria cache.
La memoria cache se utiliza para guardar una copia de algunas partes de la memoria principal. Si la CPU trata de leer una palabra de memoria principal, lo primero que hace es verificar si la palabra buscada ya esta en la memoria cache. Si esta en la cache, la lee desde la memoria cachee. Si no esta ahi, se transfiere a la memoria cache un bloque de la memoria principal.
Dentro de una memoria cache es necesario identificar los siguientes conceptos:
- Bloque: Es una cantidad de informacion minima contenida o no en la memoria principal y en la memoria cache.
- Acierto: Se dice que ocurre un acierto si la CPU necesita acceder a una palabra que este almacenada en la memoria principal y la encuentra en la memoria cache.
- Fallo: Cuando la palabra solicitada por la CPU a la memoria principal no se encuentra en la memoria cache se dice que se produce un fallo.
La memoria cache esta formada por C bloques de k palabras cada uno. El numero de bloques de una memoria cache son significativamente menores que los que tiene la memoria principal. Esto supone que la memoria cache cuenta con un directorio que consta de etiquetas que permiten identificar que bloque de la memoria principal se encuentra en cada momento en la memoria principal.
Cuando se envia un bloque de la memoria principal a la memoria cache, con la palabra buscada se mueve un conjunto de palabras adyacentes. Si se aumenta el tamano del bloque, inicialmente la tasa de acierto tambien aumentara debido al principio de localidad porque se incrementa la probabilidad de que los datos sean accededidos. Por el contrario, a partir de un cierto tamano del bloque, si se aumenta el tamano, la tasa de acierto se reduce porque la probabilidad de utilizar la informacion contenida en el bloque es menor.
La CPU produce una direccion para realizar un acceso a una palabra concreta de la memoria principal. Desde el punto de vista de la memoria cache, esta direccion posee dos partes: el identificador de bloque que especifica el bloque donde se encuentra la palabra buscada y la posicion de la palabra dentro del bloque.
El rendimiento de la memoria cache es:
\(h = \frac{\text{Numero de veces que la palabra solicitada se encuentra en la memoria cache}}{\text{Numero total de referencias}}\)
La tasa de fallos se calcula logicamente como \(1 -h\).
El tiempo de acceso medio \(t_a\) a la memoria es
\(t_a = ht_{ca} + (1 - h) t_p\)
Donde \(t_{ca}\) y \(t_p\) son el tiempo de acceso medio a la memoria cache y a la principal, respectivamente.
La Razon T define la relacion que existe entre el \(t_{ca}\) y \(t_p\) y suele estar entre \(0.1\) y \(0.5\).
El indice de mejora λ que se introduce en la jerarquia de memorias con una memoria cache es la relacion que existe entre \(t_p\) y \(t_a\).
Cuando la memoria de cache incluye su propio procesador, no es convenientemente aumentar su tamano porque puede afectar a su rendimiento y hacer que sea mas lenta de lo normal. En estos casos, la estrategia mas adecuada es incluir una segunda memoria cache de mas capacidad que se ubicara entre la memoria principal y la cache. Habitualmente a esta memoria se le conoce cache secundaria y su tamano es un orden de magnitud mayor que el de la cache de primer nivel.
Cuanto mayor sea la memoria cache, la logica asociada con su direccionamiento sera mas compleja. Las memorias cache de gran capacidad suelen ser mas lentas que las mas pequenas.
Otras Memorias
Memoria Asociativa ATTACH
Las memorias asociativas se conocen, tambien, con el nombre de memorias direccionables por contenido o memorias CAM (Content Addressable Memory). Estas memorias se caracterizan porque la identificacion de la posicion de memoria a la que se quiere acceder se lleva a cabo detallar su contenido o parte de el. Es decir, la forma de recuperar la informacion contenida en ellas es seleccionando las palabras de memoria que contiene cierta informacion denominada clave a traves de esa clave.
Cada palabra de la memoria se compara en paralelo con el contenido del registro argumento donde se almacena la clave, y se pone a 1 el bit del registro de marca cuando el contenido de memoria coincide con el del registro argumento. Cuando termina la comparativa, los bits del registro de marca que son 1 senalan la coincidencia de las palabras de la memoria asociativa y del registro argumento. Para leer estas palabras se accede secuencialmente a las palabras de memoria cuyos bits en el registro de marca estan a 1.
Memoria Compartida ATTACH
En algunos sistemas, como en multiprocesadores, varios componentes diferentes tienen acceso a una misma unidad de memoria. En estos casos, cuando varios procesadores quieren acceder simultaneamente a la informacion contenida en la memoria, es necesario un arbitro que se encargue de gestionar el acceso a la memoria.
El arbitro se programa de forma que asigne un tiempo de servicio similar a todas las unidades que acceden a la memoria. De esta forma, si aparece un conflicto entre dos procesadores, el arbitro autoriza el acceso a la memoria a uno de ellos y, a la siguiente vez que esto suceda, le dara el acceso al otro procesador. Con este criterio, el arbitro guarda internamente informacion sobre las prioridades de servicio en caso de conflicto y la prioridad se cambia cada vez que el arbitro atiende una peticion de servicio.
Los dos procedimientos mas utilizados para asignar las prioridades son:
- Rotacion de Prioridades.
- Asignacion de la menor prioridad al elemento servido.
Memoria Tipo Pila ATTACH
Las memorias tipo pila o LIFO (Last In First Out) devuelven la informacion de modo inverso al de su almacenamiento. Es decir, solo se puede leer el ultimo dato almacenado en ellas (que se conoce como cumbre de la pila). La forma de acceder a los datos es de tipo secuencial y solo se puede acceder al dato almacenado a traves de una posicion determinada.
Cuando se disena una pila, se debe tener en cuenta que los datos almacenados se desplazan en una posicion ascendente o descendente en lsa operaciones de lectura y escritura.
Cuando se introduce un dato en la pila, este nuevo dato reemplaza al dato que se encontraba en la cumbre y toda la informacion almacenada en la pila desciende un lugar. De igual manera, si se extrae un dato de una pila, toda la informacion guardada en la pila asciende un lugar.
Su implementacion en hardware se puede llevar a cabo de registros de desplazamiento como un contador reversible.
Discos Magneticos ATTACH
Normalmente, el soporte empleado para la memoria secundaria y el sistema de archivos son los discos.
En este caso, el medio fisico de almacenamiento de los datos es una pelicula de oxido magnetico que recubre a un disco. Estos platos de grabacion pueden ser extraibles o fijos y giran a una velocidad constante. El numero de discos varia entre 1 y 20, en los discos de gran capacidad.
Las cabezas de lectura/escritura se montan de forma que conectan con la parte del disco que contiene los datos para poder leerlos y escribirlos. Como cada disco tiene dos caras o superficies, el sistema cuenta con dos cabezas de lectura y escritura para cada disco. Ademas, estas cabezas pueden ser fijas o moviles.
Los datos se guardan en las superficies magneticas del disco en forma de circulos concentricos a los que se llaman pistas. El conjunto de pistas de todas las superficies que se encuentran a la misma distancia del eje se les denomina cilindro. Mientras que las pistas se dividen en sectores y cada sector viene con varios cientos de bytes.
El numero de sectores por pista, la velocidad de giro y el numero de bytes por sector son constantes pero las pistas tienen distinto radio y la densidad de grabacion en las pistas internas sera mayor que en las externas.
Otras Tecnologias
Memoria Flash
La memoria flash es un derivado de la memoria EEPROM. Es un dispositivo en forma de tarjeta, que se encuentra orientado a realizar el almacenamiento de grandes cantidades de datos en un espacio reducido, permitiendo la lectura y escritura de multiples posiciones de memoria en la misma operacion. Todo esto gracias a impulsos electricos, lo que ademas le otorga una velocidad de funcionamiento superior a la que presentaban las EEPROM que actuaban sobre una celda unica de memoria.
Este tipo de memoria, se basa en el uso de semiconductores. Ademas, de ser no-volatil y re-escribible, lo que le otorga casi todas las caracteristicas de una memoria RAM, con la ventaja de que lo que se guarda en este tipo de memorias flash, no se borra al desconectar el dispositivo del PC o del aparato donde las utilizamos, a diferencia de las memorias RAM.
Discos de Estado Solido SSD ATTACH
Los SSD almacenan los archivos en microchips con memorias flash interconectadas entre si.
Los SSD suelen utilizar memorias flash basadas en NAND, que como tambien son no-volatiles mantienen la informacion almacenada cuando el disco se desconecta. No tienen cabezales fisicos para grabar los datos, en su lugar, incluye un procesador integrado para realizar operaciones relacionadas con la lectura y escritura de datos.