domingo, 16 de septiembre de 2012

¿Qué es la memoria RAM?

De los dispositivos de almacenamiento de información, la memoria RAM es la más importante para la ejecución de un programa. Una memoria consta de un número (generalmente) muy grande de localidades y un nombre para cada una de ellas. La memoria RAM es la unidad de almacenamiento en la que se guardan los datos y las instrucciones que lleva a cabo la Unidad de Proceso (PU). Sea por ejemplo la operación aritmética

7 + 3 = 10

A la hora de ejecutar el programa, esos datos, los sumandos y la suma, necesitan ser almacenados. Vamos a considerar una memoria RAM en miniatura como la que se presenta en la siguiente figura:

Ésta memoria tiene 12 localidades, cada una de las cuales ha sido etiquetada con un nombre del 0 al 11. En cada una de esas celdas es posible almacenar información. Esta disposición recuerda un conjunto de lockers como los que están disponibles en muchas universidades para guardar útiles. En los espacios de memoria, en vez de tener libros, tenemos tipos de datos. ¿Cuántos bits hay en cada una de las celdas? La gran mayoría de las computadoras tienen unidades independientes de memoria (llamadas espacio de direccionamiento) de 8 bits. Cada grupo de 8 bits recibe el nombre de byte. Las computadoras son direccionables por bytes porque en 8 bits caben todos los caracteres del teclado en código ASCII. Recuerde que los caracteres del código ASCII van del 00 al 255, exactamente los 256 números que se pueden almacenar en 8 bits. Dado que lo menos que tiene que hacer una computadora personal es recibir instrucciones del teclado, ese es el tamaño mínimo direccionable necesario. Una memoria RAM de 2 GB contiene 2000 000 000 de bytes o 16 000 000 000 de bits. Modernamente, para realizar cálculos numéricos, se han creado memorias direccionables por 64 bits.
Nuestra memoria de juguete puede ser direccionable hasta por 4 bits, aunque eso no es importante. Estamos considerando que el número 7 fue almacenado en el espacio 1; el número 3, en el 4. Para acceder a las localidades de memoria, es necesario guardar en el Registro de Dirección de Memoria (MAR) la dirección de la localidad a la cual se va a tener acceso; el resultado de la lectura de dicha localidad se almacena en el Registro de Datos de Memoria (MDR). La PU realiza la operación y guarda el resultado (10) en la dirección de memoria marcada con el número 10. Como puede verse de esta explicación, el tiempo de acceso a los datos almacenados repercute en el tiempo de ejecución del programa. Imaginemos que se tiene que recorrer una por una las direcciones de memoria antes de obtener la necesaria (este tipo de búsqueda es llamada acceso secuencial). En una memoria con miles de millones de espacios de direccionamiento, esto no es eficiente. En lugar de eso, sólo se busca la dirección almacenada en la MAR, este tipo de búsqueda es conocida como acceso aleatorio. De aquí viene el nombre RAM (Random Acces Memory, o memoria de acceso aleatorio).

La RAM tiene estas características:
1) Es volátil. Lo cual significa que la información almacenada estará disponible sólo mientras la computadora está encendida. La vida de las variables de un programa es incluso menor que eso. Duran sólo lo que dura el tiempo de ejecución. Incluso en el lapso de dicha ejecución, una dirección de memoria, identificada con un nombre y tipo de variable, puede cambiar el contenido almacenado, de la misma manera que en el caso de los lockers, con el tiempo cambia el material guardado, aunque la ubicación del locker siga siendo la misma.
2) Es de fácil acceso. Ésto quiere decir que para el procesador es fácil (rápido) extraer y almacenar información en ella, comparado con el acceso y escritura en los dispositivos de almacenamiento como los discos duros.
3) Es imprescindible. No puede echarse a andar una computadora sin memoria RAM.

Cada lenguaje de programación define el tamaño para los tipos de datos enteros y flotantes. Dependiendo del tipo, se reservan una o más localidades de memoria para almacenar datos. Un arreglo es un conjunto contiguo de espacios de direccionamiento. Las variables tipo puntero no guardan números sino direcciones. Una máquina con poca memoria RAM será necesariamente más lenta que otra con mucha; incluso, como en nuestro caso hipotético, podría no poder realizar ciertas operaciones (como sumar números que excedan el almacenamiento de la memoria), sin embargo, ya que, al final de cuentas, lo que hacen es ejecutar programas, si se les da tiempo y memoria, todas las computadoras pueden hacer las mismas cosas.

2 comentarios:

Related Posts Plugin for WordPress, Blogger...