Memorias CARACTERISTICAS Los dispositivos digitales más elementales capaces de almacenar información en forma binaria son los biestables y los registros de desplazamiento Las memorias son dispositivos capaces de almacenar grandes cantidades de información debido a que internamente están constituidas por un determinado número de registros que utilizan unas entradas y unas salidas comunes para acceder a todos ellos. La información se almacena en las memorias en forma dé palabras formadas, normalmente, por uno, cuatro u ocho bits. Cada palabr palabra a se almace almacena na en una posici posición ón que se identi identific fica a con una determ determina inada da direcc dirección ión de memoria expresada numéricamente en el sistema hexadecimal. Los datos se introducen y se extraen de la memoria durante las operaciones de escritura y lectura respectivamente a través de un conjunto de líneas que se denominan bus de datos. De lo anterior se deduce que el bus de datos es bi-direccional, lo que significa que los datos pueden ir en cualquiera de las dos direcciones, es decir, hacia la memoria o desde la memoria. En el caso de una memoria organizada en byte, el bus de datos debe poseer ocho líneas de manera que los ocho bits de un byte de datos seleccionados se transmitan en paralelo. En resumen las memorias son dispositivos de almacenamiento de datos binarios de largo o corto plazo. Existen tres tipos principales de memoria: a) Memorias semiconductoras b) Memor Memorias ias mag magné nétic ticas as c) Mem Memoria orias s ópti óptica cas s MEMORIAS SEMICONDUCTORAS Las memorias semiconductoras están formadas por matrices de elementos de almacenamiento que pueden ser latches o flip - flop, condensadores, transistores, o cualquier otro elemento de almacenamiento de carga eléctrica. RAMs Y ROMs Las dos principales categorías de memorias semiconductoras son las memorias ROM y RAM. La memoria RAM (Random-Access Memory, memoria de acceso aleatorio) es un tipo de memoria de acceso directo- es decir- el tiempo que se tarda en acceder a cualquier dirección de memoria es la misma y estas se pueden seleccionar en cualquier orden, tanto en una operación de escritura como de lectura. Todas las RAM’s poseen la capacidad de lectura y escritura. Debido a que las memorias RAM pierden los datos almacenados cuando se desconecta la alimentación, reciben el nombre de memorias volátiles. La memoria ROM (Read-Only Memory, memoria de solo lectura) es un tipo de memoria en la que los datos se almacenan de forma permanente o semipermanente. Los datos se pueden leer de una ROM, pero no existe la operación de escritura como en las RAM’s. Debido a que las ROM’s mantienen los datos almacenados incluso cuando se desconecta la alimentación, reciben el nombre de memorias no volátiles.
TIPOS DE MEMORIA
• • • • • • • • • • • • • • •
RAM = Random Access Memory ROM = Read Onlv Memory PROM = Programmable Read-Only Memory EPROM, (Erasable Prograrnmable Read-0nly Memory) EEPROM = (Electrically Erasable Programmable-Read- only Memory FLASH VRAM = Video RAM SRAM = Static RAM DRAM = Dynamic RAM FPM = Fast Page Mode EDO = Extended Data Output) BEDO = Burst EDO SDRAM = Synchronous DRAM) DDR SDRAM ó SDRAM II = Double Data Rate SDRAM PB SRAM = Pipeline Burst SRAM)
ENCAPSULADOS • • •
SIMM Single In line Memory Module DIMM Dual In line Memory Module DIP Dual in line Package MEMORIAS DE LECTURA / ESCRITURA DE ACCESO ALEATORIO (RAM)
Como ya habíamos dicho anteriormente, en una memoria RAM los datos se pueden leer y escribir rápidamente en cualquier dirección especificada y en cualquier orden. La operación de escritura es destructiva, y la operación de lectura es no destructiva. Esta operación no destructiva de lectura se puede entender como una copia del contenido de una dirección, dejando intacto dicho contenido. La RAM se utiliza para almacenamiento de datos a corto plazo, ya que no puede retener los datos cuando se desconecta la alimentación. La familia de las memorias RAMs. Los dos principales tipos de memoria RAM son las RAM’s estáticas (SRAM, STATIC RAM) y las RAM’s dinámicas (DRAM, DINAMIC RAM).
Memorias SRAM. Denominadas así porque utilizan elementos de almacenamiento tales como latches, para datos, que pueden almacenarse durante un período de tiempo indefinido mientras que esté conectada la alimentación o que se escribe un nuevo bit de datos: La SRAM es una memoria volátil. Memorias DRAM Una memoria RAM dinámica (DRAM) es aquella en la que los datos se almacenan en condensadores, que requieren recargarse (refrescarse) periódicamente para mantener el dato.
La ventaja de este tipo de celda es que es muy sencilla, lo que permite construir matrices de memorias muy grandes en un chip, a un coste por bit más bajo que el de las memorias estáticas. La desventaja es que el condensador de almacenamiento no puede mantenerse cargado más que un periodo de tiempo, y el dato almacenado se pierde si su carga no se refresca periódicamente. La operación de refresco requiere circuitería de memoria adicional y complica el funcionamiento de la DRAM. Por ejemplo cuando se quiere acceder a una dirección de memoria cuando se está ejecutando la operación de refresco; primero hay que esperar que éste termine para poder acceder a la dirección deseada. MEMORIAS DE SOLO LECTURA Coma ya habíamos dicho anteriormente, una ROM mantiene de forma permanente o semipermanente los datos almacenados en él, que pueden ser leídos pero no se pueden cambiar en absoluto, o se requiere un equipo especial para ello. Una ROM almacena datos que se utilizan repetidamente en las aplicaciones, tales como tablas, instrucciones programadas para la inicialización y el funcionamiento de un sistema.
ROM de máscara La ROM de máscara, denominada sencillamente ROM. Es una memoria programada de forma permanente durante el proceso de fabricación para proporcionar funciones estándar de uso extendido, tales como conversiones populares o para proporcionar funciones especificadas por el usuario. Una vez que la memoria se programa, su contenido no puede cambiarse. La mayoría de los Circuitos Integrados ROM utilizan la presencia o ausencia de un transistor en una unión fila/columna para representar un 1 o un 0. Tiempo de acceso de la ROM. El tiempo de acceso a la ROM, es el tiempo que transcurre desde que se aplica un código de dirección válido en las líneas de entrada hasta que los datos validos aparezcan en las líneas de salida.
figura 1 memorias
Unidades de datos binarios. Como sabemos, la menor unidad de datos binarios es el bit. Las memorias almacenan datos en unidades que tienen de uno a ocho bits dependiendo del fabricante. Una unidad completa de información se denomina word o palabra y esta formada generalmente por uno o más bytes. Las palabras también pueden estar constituidas por grupos de menos de ocho bits. Las características más significativas de las memorias son las siguientes: •
Tiempo de lectura y escritura.
•
Cadencia de transferencia.
•
Densidad de información.
•
Volatilidad.
•
Capacidad.
CAPACIDAD DE UNA MEMORIA Entendemos por capacidad de una memoria el número de posiciones y, por tanto, de palabras que puede almacenar. La capacidad total de una memoria expresada en bits será el producto de las posiciones m por el número de bits n que componen cada posición:
N=mxn La operación de selección de una determinada posición de memoria se denomina direccionamiento. La cantidad de líneas necesarias para direccionar las m posiciones será n1, de tal forma que siempre se cumpla la igualdad: 2n1 = m Las memorias se identifican por el número de posiciones y por el número de bits de cada una de ellas. Los dispositivos de gran capacidad se miden en K’s. Un K equivale a 1024 posiciones. La capacidad de una memoria que utiliza n, variables binarias para direccionar todas sus posiciones, expresada en K’s, será: 2n1 - 10 CONFIGURACION EXTERNA DE UNA MEMORIA Las entradas y salidas más significativas de un circuito de memoria son las de direccionamiento, las de lectura/escritura de datos y las de control. En la Figura 2 se muestra de forma simbólica una RAM con todos los terminales necesarios. Las ROM no necesitan la entrada de control R/W que permite leer o escribir en función del nivel lógico aplicado. La entrada CS (Chip Select . se utiliza, como veremos más adelante, para seleccionar un determinado chip cuando la unidad de memoria está formada por más de un circuito integrado.
Figura 2. Representación simbólica de una memoria RAM con sus entradas y salidas.
EXPANSION DE LA CAPACIDAD Y DE LA LONGITUD DE PALABRA DE UNA MEMORIA Es posible agrupar Ws para expandir la longitud de la palabra del sistema. En la Figura 3 se muestra la unidad de memoria de un sistema que requiere una palabra de cuatro bits construida con Ws cuyas posiciones están constituidas por un solo bit. Los diferentes circuitos pueden estar conectados simultáneamente a las mismas líneas de dirección y de datos, gracias a las puertas de tres estados que mantienen los Ws que no han sido seleccionados en el tercer estado o estado de alta impedancia.
Figura 3. Expansión de la longitud de palabra de una unidad de memoria. ORGANIZACION INTERNA DE UNA MEMORIA Los circuitos de memoria de tecnologías LSI y VLSI están constituidos básicamente por los siguientes elementos: a) Por matrices de celdas; en la cuál cada celda está constituida por un elemento de almacenamiento (latch o flip-flops, condensador etc) que puede almacenar un 1 o un 0 (señal alta o señal baja) ( 1 bit de información), En la figura de abajo, se utilizan 64 celdas a modo de ejemplo pudiendo ser más. Cada bloque de la matriz de memoria representa una celda de almacenamiento y su ubicación se puede determinar mediante una fila y una columna
•
• •
La figura (a) es una matriz de 8 filas por 8 columnas, que se puede entender como una memoria de 64 bits o como una memoria de 8 bytes. La figura (b) es una matriz 32x4 que es una memoria de 128 bits o memoria de 16 bytes. La figura (c) es una matriz 32x1 que es una memoria de 32 bits. La memoria se identifica mediante el número de palabras que puede almacenar, multiplicado por el tamaño de la palabra. Por ejemplo, una memoria de 32 k b x 8 puede almacenar 32.768 palabras de 8 bits cada uno.
b) Uno o dos decodificadores para seleccionar cada una de las posiciones de la matriz. c) Un conjunto de buffers formados por puertas de tres estados que gobierna la entrada/salida de datos bajo un circuito de control, al cual se le aplican las señales de lectura/escritura y selección de chips. DIRECCION Y CAPACIDAD DE LAS MEMORIAS La ubicación de una unidad de datos en una matriz de memoria se denomina dirección. La dirección de una unidad de datos se específica mediante la fila y la columna que ocupa. Véase las figuras de abajo:
• •
En la figura (a), la dirección de un bit en la matriz corresponde a la fila 4, columna 5. En la figura (b) obsérvese que hay ocho bits o 1 byte en la matriz. La dirección de un byte se especifica únicamente mediante la fila que ocupa; en este caso corresponde a la fila 4. Como puede ver, la dirección depende de cómo se organice la memoria en unidades de datos (en bit, en byte etc.).
La capacidad de una memoria es el número total de unidades de datos que puede almacenar. Por ejemplo en la matriz organizada en bits de la figura (a), la capacidad total es 64 bits. En la matriz de memoria organizada en byte de la figura (b) la capacidad es de 8 bytes.
EJERCICIOS 1. Calcular el número de posiciones y el número total de bits de la unidad de memoria de un sistema cuya capacidad total es de 8K x 4 (8K posiciones de cuatro bits cada una). Solución: Como K equivale a 1024 posiciones: m = 8 x 1024 = 8 192 posiciones La longitud de palabra es de cuatro bits, por tanto: N = m x n = 8 192 x 4 = 32 768 bits 2. ¿Cuántas posiciones de memoria se pueden direccionar mediante 12 líneas? Solución: Utilizando la expresión 2N1 = m, donde n1, es el número de líneas, tendremos: m = 212 = 4 096 posiciones 3. ¿Cuántas líneas de dirección son necesarias para seleccionar todas las posiciones de una memoria de 16K x 8? ¿Cuál será el número total de células de la matriz? Solución: a) La primera parte del problema se puede abordar de dos maneras distintas. En primer lugar, mediante la expresión 2n1 = m, sabiendo que m = 16 x 1024 = 16 384 posiciones, podemos deducir, después de un sencillo tanteo, que n, = 14, ya que 211 = 16 384 posiciones Por otra parte, sabemos que el valor de la capacidad, expresada en K’s vale 2n1-10 ; de esta expresión deducimos que n1 = 14, ya que 214 - 10 = 24 = 16K b) Respondiendo a la segunda cuestión, el número total de células de la matriz o número total de bits que es posible almacenar será N = m - n = 16 384 x 8 = 131072 bits 4. Si una memoria tiene una capacidad de 2 048 x 8 bits, calcular:
a) b) c) d)
Número de células de la matriz. Estructura de la matriz suponiendo que la memoria tenga dos decodificadores. Número de líneas de dirección. Número de líneas de datos.
Solución: a) El número total de células será N = 2 048 x 8 = 16 384 células b) La estructura de la matriz será 128 x 128, ya que /1-6384 = 128 c) El número de líneas de dirección será n1 = 11, ya que 211 = 2 048 d) Las líneas de datos serán ocho, puesto que la palabra es de ocho bits. 5. Para direccionar las posiciones de una memoria se utiliza la notación hexadecimal. Las 65536 posiciones de una unidad de memoria de un determinado sistema se encuentran entre las direcciones 0000 (la primera) y FFFF (la última). Calcular las direcciones de las posiciones que ocupan los lugares: a) 5; b) 255; e) 1024, y d) 32 769. Solución: a) 0004, ya que la primera será la 0000. b) OOFE, que corresponde al número decimal 254. c) 03FF, correspondiente al número decimal 1023. d) 8000, que corresponde al número decimal 32 768. 6. Cuántas posiciones de memoria hay desde la dirección 0400 hasta la 11FF, ambas inclusive? Solución El número decimal equivalente al 0400 utilizando la expresión polinómica, será 4 x 162 + 0 x 161 + 0 x 160 = 1024 El decimal equivalente al 11FF vale 1 x 163 + 1 x 162 + 15 x 161 + 15 x 160 = 4607 El número total de posiciones existentes entre las direcciones señaladas será m1 = 4 607 - 1024 + 1 = 3 584 7. Las necesidades de memoria de un sistema programable son las siguientes: a) una zona de 12K para el sistema operativo; b) una zona para un intérprete de 4K; c) una zona libre para el usuario de 6K, y d) una ROM de 2K. Dibujar el mapa de memoria indicando la dirección de principio y la de final de cada tramo, suponiendo que el orden de almacenamiento sea el señalado.
Solución En el primer tramo hay 12 288 posiciones; la primera se encuentra en la dirección 0 (decimal) y la última en la dirección 12 287 (decimal), cuyo equivalente hexadecimal es 2FFF. El siguiente tramo comenzará en la dirección siguiente; es decir, en la 3000. Como la suma de este tramo más el primero vale 16K; es decir, 16 384 posiciones, la última dirección será la 16383 (decimal), cuyo equivalente hexadecimal es 3FFF. Con el mismo proceso deducimos que los principios y finales de los restantes tramos son, por este orden: 4000, 57FF, 5800 y 5FFF ( ver figura).
Mapa de una unidad de memoria de 24K.