# Celda de memoria

La celda de memoria o posición de memoria es el elemento base fundamental en el que se basa la memoria informática. Es un circuito electrónico que almacena un bit de información binaria y que debe de ser activado para almacenar un valor lógico de 1 (nivel alto de voltaje) y reseteado para almacenar un valor lógico de 0 (nivel bajo de voltaje). El valor de la celda de memoria se mantiene o es recordado hasta que sea cambiado por el proceso de activación/reseteo. Se puede acceder al valor almacenado en la celda de memoria mediante el proceso de lectura.

## Historia

El 11 de diciembre de 1946 Freddie Williams solicitó una patente para el Tubo Williams, un elemento de almacenaje basado en un Tubo de rayos catódicos (también conocido como CRT por sus siglas en inglés) su invención contaba con 128 palabras de 40 bits cada una. Williams consiguió hacerlo funcionar en 1947 y se considera como la primera implementación práctica de una memoria de acceso aleatorio. En ese mismo año, se cursó la primera solicitud de patente para la memoria de núcleo magnético por parte de Frederick Viehe. An Wang, Ken Olsen y Jay Forrester también contribuyeron a su desarrollo. Las primeras celdas de memoria modernas aparecieron en 1969, cuando John Schmidt diseñó la primera memoria estática de acceso aleatorio (SRAM por sus siglas en inglés) de 64 bits usando MOSFETs con canal de tipo p. la primera SRAM con transistores bipolares fue comercializada por Intel en 1969 con el chip 3101 Schottky TTL y un año más tarde comercializaron el chip Intel 1103 que fue la primera memoria dinámica de acceso aleatorio (DRAM).

## Descripción

La celda de memoria es el elemento básico y fundamental de las memoria electrónica. Se puede implementar usando múltiples tecnologías como por ejemplo:bipolar, MOS, y otros dispositivos semiconductores, también pueden estar compuestas por material magnético como los núcleos de ferrita o memorias de burbuja. Independientemente de la tecnología usada para su implementación, el propósito de una celda de memoria binaria es siempre el mismo: Almacena un bit de información binaria y debe de ser activado para almacenar un 1 y reseteado para almacenar un 0.

## Implementación

En los siguientes diagramas se detallan las tres implementaciones más usadas en la actualidad para las celdas de memoria:
* La celda de una memoria dinámica de acceso aleatorio (DRAM).
* La celda de una memoria estática de acceso aleatorio (SRAM).
* Biestables como el J/K que se muestra a continuación.
| Celda DRAM(1 Transistor y un condensador) | Celda SRAM (6 Transistores) | Biestable J/K activo por flanco |

## Funcionamiento
### Celda de memoria DRAM

* Almacenamiento
    El elemento de almacenamiento de la celda de memoria DRAM es el condensador etiquetado con el número (4) en el diagrama de la sección anterior. La carga almacenada en el condensador se degrada con el tiempo, por lo que su valor se debe restaurar o refrescar periódicamente (leído y reescrito). El transistor nMOS (3) actúa como una puerta para permitir la lectura o escritura cuando está abierto o el almacenamiento cuando está cerrado.
* Lectura
    Para la lectura la fila (word line) transmite un valor lógico de 1 (voltaje alto) a la compuerta del transistor nMOS (3) que lo vuelve conductivo permitiendo que la carga almacenada en el condensador (4) sea transferida a la columna de datos. La columna de datos (bit line) tiene una capacidad parasítica (5) adicional que absorberá parte de la carga y ralentizará el proceso de lectura. la capacidad eléctrica de la columna (bit line) determinará el tamaño necesario del condensador de almacenamiento (4). En el diseño se debe de elegir. Si el condensador de almacenamiento es demasiado pequeño, el voltaje de la columna (bit line) tardaría demasiado tiempo en alcanzar o no alcanzaría el nivel necesario por los amplificadores al final de cada columna de datos. Ya que el proceso de lectura degrada la carga en el condensador de almacenamiento (4), su valor debe de ser reescrito tras cada lectura.
* Escritura
    El proceso de escritura es el más sencillo. El valor deseado 1 (voltaje alto) o 0 (voltaje bajo) se transmite a la columna de datos (bit line). La fila de datos (word line) activa los transistores nMOS (3) conectando la fila de datos con el valor a escribir al condensador de almacenamiento (4). El único factor a tener en cuenta es asegurar que el transistor nMOS (3) se mantiene abierto el tiempo necesario para permitir que el condensador se cargue o descargue completamente.

### Celda de memoria SRAM

* Almacenamiento
    El principio de funcionamiento de la celda de memoria SRAM es más fácil de comprender si representamos los transistores M1 a M4 como inversores. De esta manera se puede apreciar claramente que el corazón de la celda de memoria está formado por dos inversores en lazo. Este simple lazo crea un circuito biestable. Un valor lógico de 1 en la entrada del primer inversor se convierte en un 0 en su salida, y se transmite a la entrada del segundo inversor que transforma ese 0 en un 1 y lo transmite de nuevo a la entrada del primer inversor. Esto crea un estado estable que se mantiene en el tiempo. Igualmente el otro estado estable del circuito se da cuando se tiene un valor de 0 en la entrada del primer inversor tras pasar por ambos inversores en serie, y ser invertido dos veces el valor se mantiene en 0.
    Por tanto existen solo dos estados estables en los que se puede encontrar el circuito:
   * $\scriptstyle Q$ = 0 y $\scriptstyle {\overline {Q}}$ = 1
   * $\scriptstyle Q$ = 1 y $\scriptstyle {\overline {Q}}$ = 0
* Lectura
    Para leer los contenidos de la celda de memoria almacenados en el lazo los transistores M5 y M6 deben de ser activados. Cuando reciben voltaje a sus compuertas desde la fila de datos (word line) ($\scriptstyle WL$), se convierten en conductivos por lo que los valores en $\scriptstyle Q$ and $\scriptstyle {\overline {Q}}$ se transmiten a la columna de datos (bit line) ($\scriptstyle BL$) y a su complementaria ($\scriptstyle {\overline {BL}}$). Finalmente estos valores se amplifican al final de las columnas de datos (bit lines).
* Escritura
    El proceso de escritura es similar. La diferencia es que en este caso el nuevo valor que queremos almacenar en la celda de memoria se transmite a la columna de datos (bit line) ($\scriptstyle BL$) y a su complementaria ($\scriptstyle {\overline {BL}}$). Seguidamente los transistores M5 y M6 son activados transmitiendo un valor de 1 (voltaje alto) a la fila de datos (word line) ($\scriptstyle WL$) Conectando las columnas de datos (bit lines) al lazo cerrado. Hay dos casos posibles:
   * Si el valor del lazo biestable es el mismo que el nuevo valor transmitido no se produce ningún cambio.
   * Si el valor del lazo biestable es diferente que el nuevo valor transmitido hay un conflicto entre ambos valores. Para que el valor en las columnas de datos (bit lines) puedan sobre-escribir las salidas de los inversores, el tamaño de los transistores M5 y M6 debe de ser mayor que el de M1 a M4 para permitir que fluya mayor corriente a través de ellos y poder alcanzar el punto de inversión del lazo a partir del cual los inversores amplificarán el voltaje hasta alcanzar el nuevo valor estable.

### Biestable

Existen múltiples implementaciones de biestables. Su elemento de almacenamiento suele ser un latch implementado con un lazo de puertas NAND o un lazo de puertas NOR más otras puertas adicionales para implementar sincronismo. Su valor está siempre disponible para su lectura como una salida. Dicho valor se mantiene almacenado estable hasta que es cambiado por el proceso de activación o reseteo.

## Aplicaciones

Los circuito digitales sin celdas de memoria o lazos cerrados se denominan sistemas combinacionales, sus salidas en cualquier momento dependen únicamente del valor en ese mismo momento de sus entradas. No disponen de memoria.
Sin embargo la memoria es un elemento clave de los sistemas digitales. En computadoras permiten el almacenamiento de código y datos. Las celdas de memoria también se usan para el almacenamiento temporal de las salidas de circuitos combinacionales para su posterior uso por sistemas digitales. Los sistemas digitales que utilizan celdas de memoria se denominan sistemas secuenciales. Sus valores no dependen únicamente del valor actual de sus entradas, sino también del estado anterior del sistema que es determinado por los valores almacenados en sus celdas de memoria. Los sistemas secuenciales necesitan un reloj para funcionar, se los denomina "síncronos" o "sincrónicos".
La memoria usada por los ordenadores o computadoras está formada principalmente por celdas de memoria DRAM, ya que el espacio necesario es mucho menor que el de las celdas SRAM y por tanto se pueden agrupar con mayor densidad obteniendo mayor capacidad a menor precio. Teniendo en cuenta que las celdas DRAM almacenan su valor en un condensador cuya carga se degrada con el tiempo su valor debe de ser refrescado periódicamente esta es una de las razones que hace que las celdas DRAM sean más lentas que las SRAM que son mayores pero cuyo valor esta siempre disponible. Esta es la razón por la que las celdas de memoria SRAM se utilizan en la caché integrada dentro de los chips de los microprocesadores modernos.