La actualización de la memoria es un proceso de lectura periódica de información de un área de la memoria de la computadora y reescritura inmediata de la información leída en la misma área sin modificaciones, con el fin de preservar la información. [1] La actualización de la memoria es un proceso de mantenimiento en segundo plano necesario durante el funcionamiento de la memoria de acceso aleatorio dinámico de semiconductores (DRAM), el tipo de memoria de computadora más utilizado y, de hecho, es la característica definitoria de esta clase de memoria. [2]
En un chip DRAM, cada bit de datos de memoria se almacena como la presencia o ausencia de una carga eléctrica en un pequeño condensador del chip. [2] [3] A medida que pasa el tiempo, las cargas de las celdas de memoria se pierden, por lo que, sin ser actualizadas, los datos almacenados acabarían perdiéndose. Para evitarlo, un circuito externo lee periódicamente cada celda y la reescribe, restaurando la carga del condensador a su nivel original. Cada ciclo de actualización de memoria actualiza un área sucesiva de celdas de memoria, actualizando así repetidamente todas las celdas del chip en un ciclo consecutivo. Este proceso normalmente lo realiza automáticamente en segundo plano el circuito de memoria y es transparente para el usuario. [2] Mientras se produce un ciclo de actualización, la memoria no está disponible para operaciones normales de lectura y escritura, pero en la memoria moderna esta sobrecarga no es lo suficientemente grande como para ralentizar significativamente el funcionamiento de la memoria.
La memoria estática de acceso aleatorio (SRAM) es una memoria electrónica que no requiere refresco. [2] Una celda de memoria SRAM requiere de cuatro a seis transistores , en comparación con un solo transistor y un condensador para DRAM; por lo tanto, los circuitos SRAM requieren más área en un chip. Como resultado, la densidad de datos es mucho menor en los chips SRAM que en DRAM, y le da a SRAM un precio más alto por bit. Por lo tanto, la DRAM se utiliza para la memoria principal en computadoras, consolas de videojuegos, tarjetas gráficas y aplicaciones que requieren grandes capacidades y bajo costo. [4] La necesidad de refresco de memoria hace que la DRAM sea más complicada, pero las ventajas de densidad y costo de la DRAM justifican esta complejidad.
Mientras la memoria está en funcionamiento, cada celda de memoria debe ser refrescada repetitivamente y dentro del intervalo máximo entre refrescaciones especificado por el fabricante, generalmente en la región de milisegundos. La refrescamiento no emplea las operaciones de memoria normales (ciclos de lectura y escritura) utilizadas para acceder a los datos, sino ciclos especializados llamados ciclos de refrescamiento que son generados por circuitos contadores separados e intercalados entre los accesos normales a la memoria. [5] [6]
Las celdas de almacenamiento de un chip de memoria están dispuestas en una matriz rectangular de filas y columnas. El proceso de lectura en DRAM es destructivo y elimina la carga de las celdas de memoria de una fila completa, por lo que hay una columna de pestillos especializados en el chip llamados amplificadores de detección , uno para cada columna de celdas de memoria, para retener temporalmente los datos. Durante una operación de lectura normal, los amplificadores de detección, después de leer y bloquear los datos, reescriben los datos en la fila a la que se accedió. [2] [7] Esta disposición permite que la electrónica de lectura normal en el chip actualice una fila completa de memoria en paralelo, acelerando significativamente el proceso de actualización. Aunque un ciclo de lectura o escritura normal actualiza una fila de memoria, no se puede confiar en que los accesos normales a la memoria alcancen todas las filas dentro del tiempo necesario, lo que requiere un proceso de actualización independiente. En lugar de utilizar el ciclo de lectura normal en el proceso de actualización, para ahorrar tiempo, se utiliza un ciclo de actualización abreviado. El ciclo de actualización es similar al ciclo de lectura, pero se ejecuta más rápido por dos razones:
Para garantizar que cada celda se actualice dentro del intervalo de tiempo de actualización, el circuito de actualización debe realizar un ciclo de actualización en cada una de las filas del chip dentro del intervalo.
Aunque en algunos sistemas antiguos el microprocesador controlaba la actualización, con un temporizador que activaba una interrupción periódica que ejecutaba una subrutina que realizaba la actualización, esto significaba que el microprocesador no podía pausarse, ejecutarse paso a paso o ponerse en hibernación de ahorro de energía sin detener el proceso de actualización y perder los datos en la memoria. [6] Por lo tanto, en los sistemas modernos, la actualización se maneja mediante circuitos en el controlador de memoria , [2] que puede estar integrado en el propio chip. Los chips DRAM especializados, como la RAM pseudoestática (PSRAM), tienen todos los circuitos de actualización en el chip y funcionan como RAM estática en lo que respecta al resto de la computadora. [8]
Por lo general, el circuito de actualización consta de un contador de actualización que contiene la dirección de la fila que se va a actualizar, que se aplica a las líneas de dirección de fila del chip , y un temporizador que incrementa el contador para pasar de fila en fila. [5] Este contador puede ser parte del circuito del controlador de memoria o estar en el propio chip de memoria. Se han utilizado dos estrategias de programación: [6]
La actualización en ráfagas da como resultado largos períodos en los que la memoria no está disponible, por lo que la actualización distribuida se ha utilizado en la mayoría de los sistemas modernos, [5] particularmente en sistemas en tiempo real . En la actualización distribuida, el intervalo entre ciclos de actualización es
Por ejemplo, DDR SDRAM tiene un tiempo de actualización de 64 ms y 8.192 filas, por lo que el intervalo del ciclo de actualización es de 7,8 μs. [5] [9]
Las generaciones de chips DRAM desarrolladas después de 2012 contienen un contador de actualización integrado, y el circuito de control de memoria puede utilizar este contador o proporcionar una dirección de fila desde un contador externo. Estos chips tienen tres formas estándar de proporcionar actualización, seleccionadas por diferentes patrones de señales en las líneas de selección de columna (CAS) y selección de fila (RAS): [6]
Desde la generación 2012 de chips DRAM, se eliminó el modo RAS únicamente y se utiliza el contador interno para generar refresco. El chip tiene un modo de suspensión adicional , para usar cuando el ordenador está en modo de suspensión , en el que un oscilador en el chip genera ciclos de refresco internos para que se pueda apagar el reloj externo.
La fracción de tiempo que la memoria gasta en actualizarse, la sobrecarga de actualización, se puede calcular a partir de la sincronización del sistema: [10]
Por ejemplo, un chip SDRAM tiene 2 13 = 8192 filas, un intervalo de actualización de 64 ms, el bus de memoria funciona a 133 MHz y el ciclo de actualización tarda 4 ciclos de reloj. [10] El tiempo para un ciclo de actualización es [10]
Por lo tanto, menos del 0,4% del tiempo del chip de memoria se dedicará a ciclos de actualización. En los chips SDRAM, la memoria de cada chip se divide en bancos que se actualizan en paralelo, lo que ahorra más tiempo. Por lo tanto, el número de ciclos de actualización necesarios es el número de filas de un solo banco, que se indica en las especificaciones, que en la generación de chips de 2012 se ha congelado en 8.192. [ necesita actualización ]
El intervalo de tiempo máximo entre operaciones de actualización está estandarizado por JEDEC para cada tecnología DRAM y se especifica en las especificaciones del chip del fabricante. Por lo general, está en el rango de milisegundos para DRAM y microsegundos para eDRAM . Para chips DDR2 SDRAM es de 64 ms. [11] : 20 El intervalo de actualización máximo depende de la relación entre la carga almacenada en los condensadores de la celda de memoria y las corrientes de fuga. Debido a que las corrientes de fuga en los semiconductores aumentan con la temperatura, los intervalos de actualización deben reducirse a altas temperaturas. Los chips DDR2 SDRAM tienen una estructura de actualización compensada por temperatura; el intervalo de actualización debe reducirse a la mitad cuando la temperatura de la carcasa del chip supera los 85 °C (185 °F). [11] : 49 Aunque la geometría de los condensadores se ha ido reduciendo con cada nueva generación de chips de memoria, reduciendo la carga almacenada, los intervalos de actualización para DRAM han ido aumentando; de 8 ms para chips de 1M, 32 ms para chips de 16M, a 64 ms para chips de 256M. Un intervalo de actualización más largo significa que una fracción menor del tiempo del dispositivo se ocupa de la actualización, lo que deja más tiempo para los accesos a la memoria. Esta mejora se logra principalmente mediante la reducción de las fugas.
La persistencia real de los valores de carga legibles y, por lo tanto, de los datos en la mayoría de las celdas de memoria DRAM es mucho más larga que el intervalo de actualización, hasta entre 1 y 10 segundos. [12] Sin embargo, las corrientes de fuga de los transistores varían ampliamente entre las diferentes celdas de memoria del mismo chip debido a la variación del proceso. Para asegurarse de que todas las celdas de memoria se actualicen antes de que se pierda un solo bit, los fabricantes deben establecer sus tiempos de actualización de manera conservadora y breve. [13]
Esta actualización frecuente de la DRAM consume un tercio de la energía total que consumen los dispositivos electrónicos de bajo consumo en modo de espera. Los investigadores han propuesto varios enfoques para extender el tiempo de funcionamiento de la batería entre cargas mediante la reducción de la frecuencia de actualización, incluida la actualización compensada por temperatura (TCR) y la ubicación en la DRAM que tiene en cuenta la retención (RAPID). Los experimentos muestran que en un chip DRAM estándar, solo unas pocas celdas débiles realmente requieren el intervalo de actualización de 64 ms en el peor de los casos, [14] e incluso entonces solo en el extremo superior de su rango de temperatura especificado. A temperatura ambiente (por ejemplo, 24 °C (75 °F)), esas mismas celdas débiles deben actualizarse una vez cada 500 ms para un funcionamiento correcto. Si el sistema puede evitar usar el 1% más débil de las páginas, una DRAM típica solo necesita actualizarse una vez por segundo, incluso a 70 °C (158 °F), para el funcionamiento correcto del 99% restante de las páginas. Algunos experimentos combinan estas dos técnicas complementarias, dando como resultado un funcionamiento correcto a temperatura ambiente con intervalos de actualización de 10 segundos. [14]
Para aplicaciones tolerantes a errores (por ejemplo, aplicaciones gráficas), actualizar los datos no críticos almacenados en DRAM o eDRAM a una velocidad menor que su período de retención ahorra energía con una pérdida de calidad menor, lo que es un ejemplo de computación aproximada . [15] [16]
En la memoria estática de acceso aleatorio (SRAM), otro tipo de memoria de semiconductores, los datos no se almacenan como carga en un condensador, sino en un circuito biestable , por lo que no es necesario actualizar la SRAM. Los dos tipos básicos de memoria tienen ventajas y desventajas. La memoria estática puede considerarse permanente mientras está encendida, es decir, una vez escrita, la memoria permanece hasta que se cambie específicamente y, por lo tanto, su uso tiende a ser simple en términos de diseño del sistema. Sin embargo, la construcción interna de cada celda SRAM requiere seis transistores, en comparación con el transistor único necesario para una celda DRAM, por lo que la densidad de SRAM es mucho menor y el precio por bit mucho más alto que el de DRAM.
Algunos de los primeros microprocesadores (por ejemplo, el Zilog Z80 ) proporcionaban registros internos especiales que podían proporcionar el estroboscopio de dirección de fila (RAS) para refrescar las celdas de memoria dinámica, incrementándose el registro en cada ciclo de refresco. Esto también se podía lograr con otros circuitos integrados que ya se utilizaban en el sistema, si estos ya generaban accesos cíclicos a través de la RAM ( por ejemplo , el Motorola 6845 ). En CPU como el Z80, la disponibilidad de una actualización RAS era un gran argumento de venta debido a su diseño de hardware simplificado. Aquí, la actualización RAS se señala mediante una combinación única de cables de dirección y control durante ciclos de reloj operativamente redundantes (estados T), es decir, durante la decodificación y ejecución de instrucciones cuando los buses pueden no ser necesarios. En lugar de que el bus esté inactivo durante dichos estados T, el registro de actualización se presentaría en el bus de direcciones junto con una combinación de señales de control para activar el circuito de actualización.
En las primeras versiones del Z80, la ubicuidad de los chips de RAM de 16 kB ( es decir , con 128 filas) y cierta falta de previsión dieron como resultado que el registro R solo se incrementara en un rango de 7 bits (0-127, es decir, 128 filas); el octavo bit podía ser configurado por el usuario, pero no se modificaba debido al ciclo interno. Con la rápida llegada de los chips DRAM de 64 kbit+ (con un RAS de 8 bits), se tuvo que construir circuitos o lógica adicional alrededor de la señal de refresco para sintetizar el octavo bit faltante y evitar que se perdieran bloques de memoria después de unos pocos milisegundos. En algunos contextos, fue posible utilizar interrupciones para invertir el octavo bit en el momento apropiado y así cubrir todo el rango del registro R (256 filas). Otro método, quizás más universal pero también más complejo en términos de hardware, era utilizar un chip contador de 8 bits, cuya salida proporcionaría la dirección RAS de actualización en lugar del registro R: la señal de actualización de la CPU se utilizaba como reloj para este contador, lo que daba como resultado que la fila de memoria que se iba a actualizar se incrementara con cada ciclo de actualización. Las versiones posteriores y las "similares" con licencia del núcleo Z80 solucionaron la no inclusión del octavo bit en el ciclo automático, y las CPU modernas han ampliado enormemente este aprovisionamiento básico para proporcionar soluciones completas y completas para la actualización de la DRAM.
La RAM pseudoestática (PSRAM o PSDRAM) es una RAM dinámica con circuitos de control de direcciones y actualización integrados para que se comporte de manera similar a la RAM estática (SRAM). Combina la alta densidad de la DRAM con la facilidad de uso de la SRAM verdadera. La PSRAM (fabricada por Numonyx) se utiliza en el iPhone de Apple y otros sistemas integrados. [17]
Algunos componentes DRAM tienen un "modo de actualización automática", que implica gran parte de la misma lógica que se necesita para el funcionamiento pseudoestático, pero este modo a menudo es equivalente a un modo de espera. Se proporciona principalmente para permitir que un sistema suspenda el funcionamiento de su controlador DRAM para ahorrar energía sin perder datos almacenados en la DRAM, en lugar de permitir el funcionamiento sin un controlador DRAM independiente como es el caso de la PSRAM. MoSys vende una variante integrada de PSRAM con el nombre de 1T-SRAM . Técnicamente es DRAM, pero se comporta de forma muy similar a la SRAM, y se utiliza en las consolas GameCube y Wii .
Varias de las primeras tecnologías de memoria de ordenador también requerían procesos periódicos de finalidad similar a la de la actualización de la memoria. El tubo Williams es el que presenta una mayor similitud, ya que, al igual que la DRAM, es esencialmente una memoria capacitiva en la que los valores almacenados para cada bit se desintegran gradualmente a menos que se actualicen.
En la memoria de núcleo magnético , cada celda de memoria puede retener datos indefinidamente incluso cuando la energía está apagada, pero al leer los datos de cualquier celda de memoria se borra su contenido. Como consecuencia, el controlador de memoria generalmente agregaba un ciclo de actualización después de cada ciclo de lectura para crear la ilusión de una operación de lectura no destructiva. Algunas de las primeras computadoras implementaron ciclos atómicos de lectura-modificación-escritura ( lectura y escritura combinadas con modificación ) para incrementar y decrementar.
La memoria de línea de retardo requiere una actualización constante porque los datos se almacenan en realidad como una señal en una línea de transmisión . En este caso, la frecuencia de actualización es comparable al tiempo de acceso a la memoria .