Está en la página 1de 7

ALMACENAMIENTO DE DATOS EN MEMORIA

La memoria RAM
Los circuitos digitales nicamente pueden procesar datos representados con ceros y unos, pero
para ello deben estar almacenados en otro circuito que permita a su vez su modificacin. En el
contexto de un ordenador este dispositivo suele ser la memoria RAM (random access memory), un
circuito que contiene en su interior una tabla que almacena informacin en cada uno de sus
compartimentos.
Como toda tabla, es preciso saber dos de sus dimensiones: el tamao de cada uno de sus
elementos, y el nmero de elementos de los que dispone. Actualmente, las memorias
convencionales almacenan la informacin en elementos de tamao 1 byte. Por lo tanto una
memoria se puede ver como una tabla que contiene un determinado nmero de bytes. Los
elementos de esta tabla estn numerados con nmeros naturales comenzando por el cero. El
nmero correspondiente a cada una de los elementos se denomina direccin de memoria y se
suele representar de forma abreviada por el smbolo @. Al conjunto de nmeros que representan
las direcciones de una memoria se le denomina su espacio de direcciones. La figura 1 ilustra la
estructura, contenido y direcciones de una memoria RAM.
Figura 1 Estructura de la memoria RAM

El acceso a los datos internos de la memoria viene determinado por el tamao de sus celdas o
elementos. Tal y como est estructurada, la memoria no ofrece acceso directo a cualquiera de sus
bits, sino que es preciso primero obtener un byte y posteriormente acceder al bit pertinente. Los
procesadores incluyen en su lenguaje mquina las instrucciones necesarias para poder manipular
los bits de un byte. Si se quiere, por tanto cambiar un bit de un byte de memoria se debe leer el
byte entero, utilizar instrucciones para cambiar su valor, y escribirlo de nuevo en memoria.
Internamente la memoria est implementada por un conjunto de transistores diseados de tal
forma que pueden almacenar la informacin dada. La unidad responsable de almacenar un bit de
informacin se denomina celda. Un chip de memoria no es ms que un circuito que contiene un
determinado nmero de celdas en cuyo interior se almacena un bit. Existen dos tcnicas para el
diseo de memoria: esttica y dinmica.

ALMACENAMIENTO DE DATOS EN MEMORIA


La memoria RAM esttica o SRAM es un circuito que una vez que se escribe un dato en una de
sus celdas lo mantiene intacto mientras el circuito reciba voltaje. En cuanto el voltaje desaparece,
tambin lo hace la informacin. La celda de dicha memoria est compuesta por alrededor de seis
transistores conectados de forma similar a un registro. El tiempo de lectura de una posicin de
memoria compuesta por ocho celdas suele ser del orden de decenas de nanosegundos (1
nanosegundo son 10-9 segundos).
La memoria RAM dinmica o DRAM es similar a la anterior pues tambin almacena informacin,
pero su estructura interna es radicalmente diferente. La celda de memoria dinmica consta
nicamente de un transistor y un condensador. Este ltimo es el que almacena una carga, mientras
que el transistor se utiliza para su carga y descarga. La celda de memoria dinmica almacena el
valor 1 cuando el condensador est cargado, y cero cuando est descargado. El problema que
presenta esta celda es que, a pesar de estar conectada continuamente a su alimentacin, si el
condensador almacena el valor 1 y no se realiza ninguna operacin, su carga se degrada hasta
alcanzar el valor 0. Es decir, la celda de esta memoria no es capaz de mantener el valor uno
durante un tiempo arbitrario, sino que acaba perdindose. Pero, tal y como est diseada la lgica
de lectura, al leer una celda se refresca totalmente su valor, y por tanto se recupera la prdida de
carga que pudiera haberse producido. El tiempo que tarda una celda en perder su informacin es
del orden de milisegundos (1 milisegundo son 10-3 segundos).
Este comportamiento de las celdas puede parecer intil para almacenar informacin, pero si el
contenido se lee de forma peridica, la memoria dinmica se comporta de forma idntica a la
esttica. Los circuitos de memoria dinmica incluyen la lgica necesaria para que sus celdas sean
continuamente ledas independientemente de las operaciones de lectura y escritura realizadas por
el procesador, de esta forma se garantiza que su contenido no se pierde. A esta operacin se le
conoce con el nombre de refresco.
La mayora de ordenadores utilizan memoria dinmica en su memoria principal y las principales
razones para ello son el coste y el espacio. La celda de memoria dinmica con un nico transistor y
un condensador es aproximadamente la cuarta parte del tamao de la celda de SRAM que consta
de alrededor de seis transistores. Pero, adems de ser ms pequea, el proceso de diseo de una
celda DRAM tiene un coste mucho menor por lo que los chips de memoria de gran capacidad de
almacenamiento se disean con memoria dinmica.
La memoria esttica tiene una clara ventaja frente a la dinmica y es que su tiempo de acceso es
menor. En la realidad, en un ordenador se utilizan ambos tipos de memoria. Para aquellos
componentes en los que se necesite mayor capacidad de almacenamiento la memoria dinmica es
la idnea. En aquellos en los que se quiera un tiempo de acceso ms reducido se utiliza la
memoria esttica.
El diseo de un circuito de memoria es significativamente ms simple que el de un procesador. La
mayor parte del circuito son rplicas de la celda que almacena un bit. Adems de estas celdas, las
memorias incluyen la lgica necesaria para el refresco (si son DRAM) y para realizar las
operaciones de lectura y escritura.

Operaciones sobre memoria


Las dos operaciones que permite una memoria son lectura y escritura. En la operacin de lectura,
la memoria recibe una direccin y devuelve el byte contenido en el elemento con dicho nmero. En
la operacin de escritura la memoria recibe una direccin y un byte y sin devolver resultado alguno
sobreescribe el byte en el elemento correspondiente. Otra forma posible de especificar estas
operaciones es mediante la notacin tpica de un lenguaje de programacin.

ALMACENAMIENTO DE DATOS EN MEMORIA

byte Lectura(direccin d): Dada una direccin de memoria devuelve el byte


almacenado en dicho elemento.

void Escritura(direccin d, byte b): Almacena el byte b en el elemento de


direccin d.

El contenido de los datos almacenados inicialmente en la memoria es indefinido. Si al encender el


ordenador, la primera operacin que se realiza es de lectura sobre memoria RAM, el resultado es
indefinido. De esta propiedad se deduce que toda operacin de lectura se debe ejecutar sobre una
posicin de memoria que haya sido previamente escrita. La figura 2 muestra el efecto de un
conjunto de operaciones sobre memoria.
Figura 2 Operaciones sobre memoria

Al ser la memoria un circuito digital, todos sus datos deben ser codificados igualmente con ceros y
unos y esto incluye a los parmetros que reciben las operaciones de lectura y escritura. El dato a
leer o escribir es un byte y por tanto ya est codificado en binario. Las direcciones tambin deben
estar codificadas en binario, y como son nmeros naturales (son positivos y comienzan por cero) la
codificacin utilizada es base dos.
La lectura de un dato consiste en enviar a la memoria los bits que codifican una direccin, y la
memoria devuelve ocho bits. La operacin de escritura consisten en enviar a la memoria los bits
que codifican una direccin y ocho bits de datos, y stos ltimos se almacenan en la posicin
especificada.
La codificacin de las direcciones tiene una relacin directa con el tamao de la memoria. Todo
byte en memoria tiene una direccin, y el nmero de bytes corresponde con el nmero mximo de
direccin que se puede codificar. Al utilizar la codificacin en base 2 se deduce que una memoria

ALMACENAMIENTO DE DATOS EN MEMORIA


cuyas direcciones se codifican con n bits puede tener como mximo un tamao de 2 n bytes con
direcciones desde 0 hasta 2n-1. En consecuencia, el tamao T de memoria y el nmero n de bits
que se utilizan para codificar las direcciones estn relacionadas por la ecuacin

Debido a esta relacin entre los bits que codifican una direccin y el nmero de elementos, las
memorias suelen tener un tamao potencia de 2. El coste de incluir un nmero determinado de bits
hace que se aprovechen todas sus combinaciones.
El tamao de la memoria se mide en mltiplos que no siguen las reglas convencionales de
multiplicacin por potencias de 10 sino por potencias de 2. As, un kilobyte son 2 10 bytes o 1024
bytes. Las unidades de medida del tamao de memoria as como sus exponentes y los prefijos de
su nomenclatura se muestran en la tabla 1
Tabla 1 Unidades de almacenamiento de informacin en bytes

Prefijo

Smbolo

Potencia

Kilo

210

Mega

220

Giga

230

Tera

240

Peta

250

Exa

260

Zetta

270

Yotta

280

Conexin entre memoria y procesador


La conexin entre la memoria y el procesador debe permitir que se realicen las operaciones de
lectura y escritura de la forma descrita en las operaciones sobre memoria. Para ello son
necesarios dos buses. El primero para que la memoria reciba la direccin del procesador, y el
segundo para que el procesador enve a la memoria el dato a escribir o que la memoria enve al
procesador el dato a leer. Adems de estos dos buses el procesador debe notificar a la memoria el
tipo de operacin. La figura 3 muestra de forma esquemtica cmo estn conectadas estas
seales.

ALMACENAMIENTO DE DATOS EN MEMORIA


Figura 3 Seales que conectan el procesador y la memoria

Dado el nmero de bits del bus de direcciones se puede deducir el tamao de la memoria. Se
puede cambiar el tamao de la memoria de un ordenador? A la vista de las conexiones que se
muestran en la figura 3 esto no es factible. El bus de direcciones es un conjunto de seales fijo y
por tanto cambiar el tamao de memoria significara cambiar este nmero. Si un ordenador duplica
su memoria RAM necesita un bit adicional en su bus de direcciones.
Los buses se implementan como pistas de metal en un circuito impreso y sus extremos se
conectan a los puertos de entrada del procesador y la memoria, por lo que aadir un bit ms al bus
es una operacin extremadamente compleja. Sin embargo, en los equipos actuales s se ofrece la
posibilidad de aumentar la memoria disponible mediante la insercin de circuitos adicionales. Esto
es posible porque el bus de direcciones tiene ms bits de los que son necesarios y adems, el
procesador comprueba que las direcciones de memoria utilizadas estn dentro del rango correcto.
En general, en un procesador, el nmero de bits de los que consta el bus de direcciones es un
parmetro fundamental de su arquitectura y no puede ser modificado. Por ejemplo, en el
procesador Intel Pentium, el bus de direcciones es de 32 bits, con lo que se pueden direccionar
hasta un mximo de 4 gigabytes de memoria. En realidad, el procesador puede trabajar con un
subconjunto de las direcciones posibles, es lo que se denomina memoria real del ordenador
frente a la memoria posible que representa la memoria mxima que permite direccionar la
anchura del bus de direcciones. La figura 4 ilustra esta situacin para el caso en el que un
procesador de tipo Intel Pentium dispone de una memoria real de 256 megabytes.

ALMACENAMIENTO DE DATOS EN MEMORIA


Figura 4 Memoria real y posible en un Intel Pentium

El procesador incluye un mecanismo por el que el lmite de la memoria real es un dato conocido.
Antes de realizar cualquier operacin sobre memoria se comprueba que la direccin est contenida
entre ciertos lmites. En caso de que as sea, la operacin se realiza, y en caso contrario el
procesador detiene el acceso y se produce una excepcin en la ejecucin.
En el caso concreto del procesador Intel Pentium, el bus de direcciones de 32 bits limita la memoria
mxima que puede direccionar a 4 gigabytes. Dada la progresin que ha tenido el precio de la
memoria, ordenadores personales que tengan memoria mayor de 4 gigabytes sern pronto una
realidad. Un cambio en el bus de direcciones quiere decir una reorganizacin de la arquitectura
entera del procesador, y este ha sido el caso del Intel Pentium. La siguiente generacin de
procesadores ofrece un bus de direcciones y de datos de 64 bits, por tanto con capacidad para
direccionar un mximo de 16 exabytes (264 bytes).

Almacenamiento de datos
La nica estructura que ofrece la memoria es la organizacin de sus elementos en bytes. Por tanto,
para almacenar los datos que manipula un procesador es imprescindible saber de antemano su
tamao. El tamao de algunos datos bsicos viene definido por la arquitectura del propio
procesador. Por ejemplo, el lenguaje mquina del Intel Pentium contiene instrucciones mquina
para operar enteros de 32 bits. Esto no quiere decir que el procesador no pueda manejar enteros
de otros tamaos, sino que el procesador manipula estos de forma mucho ms rpida y eficiente.
Nmeros de otros tamaos pueden ser manipulados igualmente pero con un coste mayor en
tiempo de ejecucin.

ALMACENAMIENTO DE DATOS EN MEMORIA


Los lenguajes de programacin de alto nivel como Java definen un conjunto de datos denominados
bsicos y un conjunto de mecanismos para definir datos complejos en base a ellos. Como los
programas escritos en estos lenguajes deben ejecutar en diferentes equipos con diferentes
procesadores, es difcil definir el tamao de los datos tal que se ajuste a todos ellos. El compilador
se encarga de transformar las operaciones escritas en lenguaje de alto nivel en las instrucciones
ms adecuadas para manipular los datos en el procesador pertinente. La tabla 2 muestra los tipos
de datos bsicos definidos en Java as como su tamao.
Tabla 2 Tipos de datos bsicos en el lenguaje Java

Tipo

Contiene

Tamao

Rango

Boolean true, false

1 bit

Byte

Entero

8 bits

[-128, 127]

Char

Caracter Unicode

16 bits

[0, 65535]

Short

Entero

16 bits

[-32768, 32767]

Int

Entero

32 bits

[-2147483648, 2147483647]

Long

Entero

64 bits

Float

IEEE-754 Coma Flotante

32 bits

Doubl

IEEE-754 Coma Flotante

64 bits

[-9223372036854775808,
9223372036854775807]
[1.4012985E-45, 3.4028235E+38]
[4.94065645841246544E-324,
1.7976931348623157E+308]

La regla para almacenar datos en memoria es utilizar tantos bytes como sean necesarios a partir
de una direccin de memoria. En adelante, la posicin de memoria a partir de la cual est
almacenado un dato se denominar su direccin de memoria. De forma anloga, cuando se dice
que un dato est en una posicin de memoria lo que significa es que est almacenado en esa
posicin y las siguientes que se precisen.

También podría gustarte