Memorias electrónicas
Un módulo de memoria de servidor tiene 72 bits de ancho para guardar 64: los ocho restantes corrigen cualquier bit que invierta un rayo cósmico.
01Qué distingue a una memoria de otra
Una memoria guarda bits en celdas, y cada tecnología guarda el bit de una forma física distinta: el estado de un biestable, la carga de un capacitor, la carga atrapada en una compuerta aislada o la polarización de un material. De esa forma física salen todas sus propiedades: si pierde el dato al cortar la alimentación, cuánto tarda en leer y escribir, cuántas veces se puede reescribir y cuánto ocupa cada bit. La página de la tecnicatura presenta los tipos; acá se ve por qué son como son.
| Memoria | Celda | ¿Volátil? | Reescrituras | Uso |
|---|---|---|---|---|
| SRAM | 6 transistores (biestable) | Sí | Ilimitadas | Registros, caché, RAM de microcontroladores |
| DRAM | 1 transistor y 1 capacitor | Sí, y además hay que refrescarla | Ilimitadas | Memoria principal de computadoras |
| Flash NOR | Transistor de compuerta flotante | No | Unas 100 000 | Programa de microcontroladores; se ejecuta en el lugar |
| Flash NAND | Compuerta flotante o trampa de carga, en serie | No | De 1000 a 100 000 según bits por celda | Discos de estado sólido, tarjetas SD |
| EEPROM | Compuerta flotante con borrado por byte | No | Alrededor de un millón | Configuración y calibración |
| FRAM | Capacitor ferroeléctrico | No | Del orden de 1014 | Registro de datos frecuente con poco consumo |
02Organización interna
Las celdas forman una matriz de filas y columnas. Un decodificador de filas activa una fila entera, los amplificadores de lectura detectan las pequeñas diferencias de tensión de sus columnas, y un multiplexor de columnas elige las que salen. Una memoria de \( 2^A \) palabras de \( w \) bits necesita \( A \) líneas de dirección y \( w \) de datos: una de 128 K × 8 tiene 17 líneas de dirección y 8 de datos.
En un sistema con varias memorias y periféricos, la decodificación de direcciones reparte el espacio: los bits altos de la dirección eligen qué chip se habilita, con su señal de selección, y los bajos eligen la palabra dentro del chip. El resultado es el mapa de memoria del sistema.
03SRAM y DRAM
La celda SRAM es un biestable de dos inversores cruzados más dos transistores de acceso: mantiene el dato mientras haya alimentación, se lee sin destruirlo y es rápida, pero ocupa seis transistores por bit.
La celda DRAM guarda el bit como la carga de un capacitor de unos femtofaradios, detrás de un transistor. Es mucho más densa, pero la carga se fuga y hay que refrescar cada celda, típicamente cada 64 ms, y la lectura descarga el capacitor, así que cada lectura se reescribe. Las DRAM multiplexan la dirección: primero la fila, después la columna. Las DDR transfieren en los dos flancos del reloj: un módulo DDR4-3200 hace 3200 millones de transferencias de 64 bits por segundo, 25,6 GB/s.
04Memorias no volátiles
En una celda flash, el bit es la carga atrapada en una compuerta rodeada de óxido. Esa carga corre el umbral del transistor, y la lectura detecta si conduce o no. Para escribir y borrar se hace pasar carga a través del óxido con campos altos, y cada paso lo desgasta un poco: por eso la cantidad de reescrituras es limitada.
| NOR | NAND | |
|---|---|---|
| Acceso | Aleatorio por palabra, como una RAM | Por páginas de kilobytes |
| Borrado | Por sectores | Por bloques de cientos de páginas |
| Densidad y costo por bit | Menor densidad, mayor costo | Máxima densidad, mínimo costo |
| Gestión | Casi ninguna | Corrección de errores, bloques defectuosos y nivelación del desgaste |
Guardar más de un bit por celda, con varios niveles de carga, multiplica la capacidad pero achica los márgenes entre niveles: una celda de un bit (SLC) soporta del orden de 100 000 borrados; una de tres bits (TLC), de unos pocos miles.
05Errores y códigos correctores
Ninguna memoria es perfecta. Una partícula alfa del encapsulado o un neutrón de los rayos cósmicos puede invertir un bit de una DRAM o una SRAM (un error blando), y en una flash los bits se degradan con el uso. Los sistemas que no pueden fallar guardan, junto con cada palabra, bits de paridad calculados con un código de Hamming. Para corregir un error en \( m \) bits de datos hacen falta \( r \) bits de paridad tales que:
En el código de Hamming, los bits de paridad van en las posiciones que son potencias de dos, y cada uno cubre las posiciones cuyo número binario tiene ese bit en 1. Al leer, se recalculan las paridades: el número binario que forman las que fallan, el síndrome, es directamente la posición del bit erróneo.
Cuatro bits de datos se codifican en ocho: tres paridades de Hamming en las posiciones 1, 2 y 4, y una paridad global en la posición 0. Elegís los datos, después tocás los bits guardados para alterarlos, como haría una partícula, y el decodificador responde.
06Dónde aparece en la electrónica
| Sistema | Memorias que usa |
|---|---|
| Microcontrolador | Flash NOR para el programa, SRAM para los datos, a veces EEPROM emulada en flash |
| Servidor | DRAM con ECC SECDED de 72 bits |
| Disco de estado sólido | NAND con un controlador que corrige errores y reparte el desgaste |
| Satélite | Memorias endurecidas a la radiación, con ECC y relectura periódica |
| Medidor de energía | FRAM o EEPROM para los registros que cambian seguido |
07En el laboratorio
Diseñar la decodificación de direcciones de un sistema con una EPROM de 32 K × 8, una SRAM de 8 K × 8 y un periférico de 16 registros sobre un bus de 16 bits de dirección. Dibujar el mapa.
Con un microcontrolador, escribir una página en una EEPROM serie, medir el tiempo de escritura y verificar la lectura.
Programar la codificación y la decodificación SECDED de un byte e inyectar errores para probar la corrección.
08Errores frecuentes
- Escribir seguido en la flash. Un registro que se graba cada segundo agota 100 000 ciclos en poco más de un día.
- Olvidar que la flash se borra por bloques. Cambiar un byte exige borrar y reescribir el bloque entero.
- Confundir capacidad en bits y en bytes. Un chip de 8 Mbit tiene 1 MB.
- Creer que la paridad simple corrige. Solo detecta un número impar de errores.
09Autoevaluación
¿Cuántas líneas de dirección tiene una memoria de 512 K × 16?
19, porque \( 2^{19} = 524\,288 \).
¿Cuántos bits de paridad necesita un Hamming que corrija un error en 16 bits?
Cinco: \( 2^5 = 32 \ge 16 + 5 + 1 \). Con SECDED, seis.
En un Hamming (7,4), las paridades 1 y 4 fallan y la 2 no. ¿Qué bit está mal?
El de la posición 5 (101 en binario).
¿Por qué una DRAM necesita refresco y una SRAM no?
Porque guarda el bit como carga en un capacitor que se descarga por fugas; la SRAM lo guarda en un biestable que se sostiene solo mientras hay alimentación.
10Para ampliar
- Bruce Jacob, Spencer W. Ng y David T. Wang. Memory Systems: Cache, DRAM, Disk. Morgan Kaufmann, 2008. La referencia sobre la organización, la temporización y el diseño de sistemas de memoria.
- Betty Prince. Semiconductor Memories: A Handbook of Design, Manufacture and Application. 2.ª ed., Wiley, 1991. Las celdas y los circuitos de cada tipo de memoria, desde adentro del chip.
- Shu Lin y Daniel J. Costello. Error Control Coding. 2.ª ed., Pearson, 2004. Los códigos de Hamming y sus sucesores, con la teoría completa.