La memoria de solo lectura ( ROM ) es un tipo de memoria no volátil que se utiliza en ordenadores y otros dispositivos electrónicos . Los datos almacenados en la ROM no se pueden modificar electrónicamente después de la fabricación del dispositivo de memoria . La memoria de solo lectura es útil para almacenar software que rara vez se modifica durante la vida útil del sistema, también conocido como firmware . Las aplicaciones de software, como los videojuegos , para dispositivos programables se pueden distribuir como cartuchos enchufables que contienen ROM .
En sentido estricto, la memoria de solo lectura se refiere a la memoria cableada, como una matriz de diodos o un circuito integrado (CI) de ROM de máscara, que no se puede modificar electrónicamente después de su fabricación. Aunque los circuitos discretos se pueden modificar en principio, mediante la adición de cables improvisados y la eliminación o sustitución de componentes, los CI no pueden hacerlo. La corrección de errores o las actualizaciones del software requieren la fabricación de nuevos dispositivos y la sustitución del dispositivo instalado.
Las memorias semiconductoras ROM de puerta flotante en forma de memoria de solo lectura programable borrable (EPROM), memoria de solo lectura programable borrable eléctricamente (EEPROM) y memoria flash se pueden borrar y reprogramar. Pero, por lo general, esto solo se puede hacer a velocidades relativamente lentas, puede requerir equipo especial para lograrlo y, por lo general, solo es posible una cierta cantidad de veces. [1]
El término "ROM" se utiliza a veces para referirse a un dispositivo ROM que contiene software específico o un archivo con software que se almacenará en un dispositivo ROM grabable. Por ejemplo, los usuarios que modifican o reemplazan el sistema operativo Android describen los archivos que contienen un sistema operativo modificado o de reemplazo como " ROM personalizadas " en honor al tipo de almacenamiento en el que se escribió el archivo, y pueden distinguir entre ROM (donde se almacena el software y los datos, generalmente la memoria Flash ) y RAM.
IBM utilizó almacenamiento de solo lectura de condensadores (CROS) y almacenamiento de solo lectura de transformadores (TROS) para almacenar microcódigo para los modelos más pequeños del System/360 , el 360/85 y los dos modelos iniciales del System/370 ( 370/155 y 370/165 ). En algunos modelos también había un almacén de control escribible (WCS) para diagnósticos adicionales y soporte de emulación. La computadora de guía Apollo utilizó memoria de cuerda de núcleo , programada enhebrando cables a través de núcleos magnéticos.
El tipo más simple de ROM de estado sólido es tan antiguo como la tecnología de semiconductores en sí. Las puertas lógicas combinacionales se pueden unir manualmente para mapear la entrada de dirección de n bits en valores arbitrarios de salida de datos de m bits (una tabla de búsqueda ). Con la invención del circuito integrado llegó la ROM de máscara . La ROM de máscara consiste en una cuadrícula de líneas de palabra (la entrada de dirección) y líneas de bit (la salida de datos), unidas selectivamente con interruptores de transistores , y puede representar una tabla de búsqueda arbitraria con un diseño físico regular y un retardo de propagación predecible . La ROM de máscara se programa con fotomáscaras en fotolitografía durante la fabricación de semiconductores . La máscara define características físicas o estructuras que se eliminarán o agregarán en los chips de ROM, y la presencia o ausencia de estas características representará un bit 1 o 0, dependiendo del diseño de la ROM. [2] Por lo tanto, por diseño, cualquier intento de cambiar electrónicamente los datos fallará, ya que los datos se definen por la presencia o ausencia de características físicas o estructuras que no se pueden cambiar electrónicamente. Para cada programa de software, incluso para las revisiones del mismo programa, se debe cambiar toda la máscara, lo que puede resultar costoso.
En la ROM de máscara, los datos están codificados físicamente en el circuito, por lo que solo se pueden programar durante la fabricación. Esto conlleva una serie de desventajas graves:
Los desarrollos posteriores han solucionado estas deficiencias. La memoria de sólo lectura programable (PROM), inventada por Wen Tsing Chow en 1956, [3] [4] permitía a los usuarios programar su contenido exactamente una vez alterando físicamente su estructura con la aplicación de pulsos de alto voltaje. Esto solucionó los problemas 1 y 2 anteriores, ya que una empresa puede simplemente pedir un gran lote de chips PROM nuevos y programarlos con el contenido deseado según la conveniencia de sus diseñadores.
La llegada del transistor de efecto de campo de metal-óxido-semiconductor (MOSFET), inventado en Bell Labs en 1959, [5] permitió el uso práctico de los transistores de metal-óxido-semiconductor (MOS) como elementos de almacenamiento de celdas de memoria en la memoria de semiconductores , una función que anteriormente cumplían los núcleos magnéticos en la memoria de la computadora . [6] En 1967, Dawon Kahng y Simon Sze de Bell Labs propusieron que la puerta flotante de un dispositivo semiconductor MOS podría usarse para la celda de una ROM reprogramable, lo que llevó a Dov Frohman de Intel a inventar la memoria de solo lectura programable y borrable (EPROM) en 1971. [7] [8] La invención de la EPROM en 1971 esencialmente resolvió el problema 3, ya que la EPROM (a diferencia de la PROM) puede restablecerse repetidamente a su estado no programado mediante la exposición a una fuerte luz ultravioleta.
La memoria de solo lectura programable y borrable eléctricamente (EEPROM), desarrollada por Yasuo Tarui, Yutaka Hayashi y Kiyoko Naga en el Laboratorio Electrotécnico en 1972, [9] contribuyó en gran medida a resolver el problema 4, ya que una EEPROM se puede programar en el lugar si el dispositivo que la contiene proporciona un medio para recibir el contenido del programa desde una fuente externa (por ejemplo, una computadora personal a través de un cable serial ). La memoria flash , inventada por Fujio Masuoka en Toshiba a principios de la década de 1980 y comercializada a fines de esa misma década, es una forma de EEPROM que hace un uso muy eficiente del área del chip y se puede borrar y reprogramar miles de veces sin sufrir daños. Permite borrar y programar solo una parte específica del dispositivo, en lugar de todo el dispositivo. Esto se puede hacer a alta velocidad, de ahí el nombre "flash". [10] [11]
Todas estas tecnologías mejoraron la flexibilidad de la ROM, pero a un costo significativo por chip, de modo que en grandes cantidades la ROM de máscara seguiría siendo una opción económica durante muchos años. (La disminución del costo de los dispositivos reprogramables había eliminado casi por completo el mercado de la ROM de máscara hacia el año 2000). Las tecnologías reescribibles se concibieron como reemplazos de la ROM de máscara.
El desarrollo más reciente es la memoria flash NAND , también inventada en Toshiba. Sus diseñadores rompieron explícitamente con la práctica anterior, afirmando claramente que "el objetivo de la memoria flash NAND es reemplazar los discos duros ", [12] en lugar del uso tradicional de la ROM como una forma de almacenamiento primario no volátil . A partir de 2021 [update], NAND ha logrado casi por completo este objetivo al ofrecer un rendimiento superior al de los discos duros, menor latencia, mayor tolerancia a los golpes físicos, miniaturización extrema (en forma de unidades flash USB y diminutas tarjetas de memoria microSD , por ejemplo) y un consumo de energía mucho menor.
Muchas computadoras con programas almacenados utilizan una forma de almacenamiento no volátil (es decir, almacenamiento que retiene sus datos cuando se corta la energía) para almacenar el programa inicial que se ejecuta cuando la computadora se enciende o comienza la ejecución de otra manera (un proceso conocido como " bootstrapping " , a menudo abreviado como " booting " o "booting up"). De la misma manera, cada computadora no trivial necesita alguna forma de memoria mutable para registrar los cambios en su estado a medida que se ejecuta.
Las formas de memoria de solo lectura se emplearon como almacenamiento no volátil para programas en la mayoría de las primeras computadoras con programa almacenado, como ENIAC después de 1948. (Hasta entonces, no era una computadora con programa almacenado, ya que cada programa tenía que ser cableado manualmente en la máquina, lo que podía llevar días o semanas). La memoria de solo lectura era más sencilla de implementar, ya que solo necesitaba un mecanismo para leer los valores almacenados, y no para cambiarlos en el lugar, y por lo tanto podía implementarse con dispositivos electromecánicos muy rudimentarios (ver ejemplos históricos a continuación). Con la llegada de los circuitos integrados en la década de 1960, tanto la ROM como su contraparte mutable, la RAM estática, se implementaron como matrices de transistores en chips de silicio; sin embargo, una celda de memoria ROM podía implementarse utilizando menos transistores que una celda de memoria SRAM, ya que esta última necesita un pestillo (que comprende de 5 a 20 transistores) para retener su contenido, mientras que una celda ROM podía consistir en la ausencia (0 lógico) o la presencia (1 lógico) de un transistor que conecta una línea de bits a una línea de palabras. [13] En consecuencia, la ROM podría implementarse a un costo por bit menor que la RAM durante muchos años.
La mayoría de los ordenadores domésticos de la década de 1980 almacenaban un intérprete BASIC o un sistema operativo en la memoria ROM, ya que otras formas de almacenamiento no volátil, como las unidades de disco magnético , eran demasiado costosas. Por ejemplo, el Commodore 64 incluía 64 KB de RAM y 20 KB de ROM que contenían un intérprete BASIC y el sistema operativo KERNAL . Los ordenadores domésticos o de oficina posteriores, como el IBM PC XT, a menudo incluían unidades de disco magnético y mayores cantidades de RAM, lo que les permitía cargar sus sistemas operativos desde el disco a la RAM, con solo un núcleo de inicialización de hardware mínimo y un cargador de arranque en la ROM (conocido como BIOS en los ordenadores compatibles con IBM ). Esta disposición permitió un sistema operativo más complejo y fácilmente actualizable.
En los PC modernos, la "ROM" se utiliza para almacenar el firmware básico de arranque del procesador, así como los distintos firmware necesarios para controlar internamente dispositivos autónomos como tarjetas gráficas , unidades de disco duro , unidades de estado sólido , unidades de disco óptico , pantallas TFT , etc., en el sistema. Hoy en día, muchas de estas memorias de "solo lectura", especialmente la BIOS / UEFI , suelen sustituirse por EEPROM o memoria Flash (véase más adelante), para permitir la reprogramación en el lugar en caso de que surja la necesidad de una actualización de firmware. Sin embargo, los subsistemas simples y maduros (como el teclado o algunos controladores de comunicación en los circuitos integrados de la placa principal, por ejemplo) pueden emplear ROM de máscara u OTP (programable una sola vez).
Las tecnologías de ROM y sucesoras, como Flash, son comunes en los sistemas integrados . Se encuentran en todo, desde robots industriales hasta electrodomésticos y productos electrónicos de consumo ( reproductores de MP3 , decodificadores , etc.), todos ellos diseñados para funciones específicas, pero basados en microprocesadores de uso general . Como el software suele estar estrechamente acoplado al hardware, rara vez se necesitan cambios de programa en dichos dispositivos (que normalmente carecen de discos duros por razones de coste, tamaño o consumo de energía). A partir de 2008, la mayoría de los productos utilizan Flash en lugar de ROM de máscara, y muchos proporcionan algún medio para conectarse a una PC para actualizaciones de firmware ; por ejemplo, un reproductor de audio digital podría actualizarse para admitir un nuevo formato de archivo . Algunos aficionados han aprovechado esta flexibilidad para reprogramar productos de consumo para nuevos fines; por ejemplo, los proyectos iPodLinux y OpenWrt han permitido a los usuarios ejecutar distribuciones de Linux con todas las funciones en sus reproductores de MP3 y enrutadores inalámbricos, respectivamente.
La ROM también es útil para el almacenamiento binario de datos criptográficos , ya que hace que sea difícil reemplazarlos, lo que puede ser deseable para mejorar la seguridad de la información .
Dado que la ROM (al menos en forma de máscara cableada) no se puede modificar, solo es adecuada para almacenar datos que no se espera que necesiten modificaciones durante la vida útil del dispositivo. Con ese fin, la ROM se ha utilizado en muchas computadoras para almacenar tablas de consulta para la evaluación de funciones matemáticas y lógicas (por ejemplo, una unidad de punto flotante podría tabular la función seno para facilitar un cálculo más rápido). Esto era especialmente efectivo cuando las CPU eran lentas y la ROM era barata en comparación con la RAM.
Cabe destacar que los adaptadores de pantalla de los primeros ordenadores personales almacenaban tablas de caracteres de fuentes en formato de mapa de bits en la memoria ROM. Esto solía significar que la fuente de la pantalla de texto no se podía cambiar de forma interactiva. Este era el caso de los adaptadores CGA y MDA disponibles con el IBM PC XT.
El uso de ROM para almacenar cantidades tan pequeñas de datos ha desaparecido casi por completo en los ordenadores modernos de uso general. Sin embargo, la memoria flash NAND ha asumido un nuevo papel como medio de almacenamiento masivo o almacenamiento secundario de archivos.
La ROM de máscara es una memoria de solo lectura cuyo contenido es programado por el fabricante del circuito integrado (en lugar de por el usuario). El contenido de la memoria deseado es proporcionado por el cliente al fabricante del dispositivo. Los datos deseados se convierten en una fotomáscara /capa de máscara personalizada para la metalización final de las interconexiones en el chip de memoria (de ahí el nombre).
La ROM de máscara se puede realizar de varias maneras, todas ellas tienen como objetivo cambiar la respuesta eléctrica de un transistor cuando se direcciona en una red, como:
Los transistores de ROM de máscara se pueden organizar en configuraciones NOR o NAND y pueden lograr uno de los tamaños de celda más pequeños posibles, ya que cada bit está representado por un solo transistor. NAND ofrece una mayor densidad de almacenamiento que NOR. Las configuraciones OR también son posibles, pero en comparación con NOR solo conecta transistores a V cc en lugar de V ss . [14] Las ROM de máscara solían ser las más económicas y son los dispositivos de memoria semiconductores más simples, con solo una capa de metal y una capa de polisilicio, lo que lo convierte en el tipo de memoria semiconductora con el mayor rendimiento de fabricación [2] (la mayor cantidad de dispositivos en funcionamiento por ejecución de fabricación). La ROM se puede fabricar utilizando una de varias tecnologías de fabricación de dispositivos semiconductores, como CMOS , nMOS , pMOS y transistores bipolares . [15]
Es una práctica habitual utilizar memoria no volátil regrabable (como UV -EPROM o EEPROM ) para la fase de desarrollo de un proyecto y cambiar a memoria ROM enmascarada cuando el código ya está finalizado. Por ejemplo, los microcontroladores Atmel vienen en formatos EEPROM y ROM enmascarada.
La principal ventaja de la ROM de máscara es su costo. Por bit, la ROM de máscara era más compacta que cualquier otro tipo de memoria de semiconductores . Dado que el costo de un circuito integrado depende en gran medida de su tamaño, la ROM de máscara es significativamente más barata que cualquier otro tipo de memoria de semiconductores.
Sin embargo, el costo de enmascaramiento por única vez es alto y el tiempo de procesamiento desde la fase de diseño hasta la fase de producción es largo. Los errores de diseño son costosos: si se encuentra un error en los datos o el código, la ROM de enmascaramiento es inútil y debe reemplazarse para cambiar el código o los datos. [16]
A partir de 2003 [update], cuatro empresas producen la mayoría de estos chips ROM de máscara: Samsung Electronics , NEC Corporation , Oki Electric Industry y Macronix . [17] [ necesita actualización ]
Algunos circuitos integrados contienen solo una ROM de máscara. Otros circuitos integrados contienen una ROM de máscara, así como una variedad de otros dispositivos. En particular, muchos microprocesadores tienen una ROM de máscara para almacenar su microcódigo . Algunos microcontroladores tienen una ROM de máscara para almacenar el cargador de arranque o todo su firmware .
Los chips ROM programados con máscara clásicos son circuitos integrados que codifican físicamente los datos que se van a almacenar y, por lo tanto, es imposible cambiar su contenido después de su fabricación.
También es posible escribir el contenido de una ROM láser utilizando un láser para alterar las propiedades eléctricas de solo algunos diodos en la ROM, o utilizando un láser para cortar solo algunos enlaces de polisilicio, en lugar de utilizar una máscara. [18] [19] [14]
Al aplicar protección contra escritura , algunos tipos de ROM reprogramables pueden convertirse temporalmente en memoria de solo lectura.
Existen otros tipos de memoria no volátil que no se basan en tecnología de circuitos integrados de estado sólido, entre ellos:
Aunque la velocidad relativa de la RAM frente a la ROM ha variado con el tiempo, a partir de 2007 [update]los chips de RAM de gran tamaño se pueden leer más rápido que la mayoría de las ROM. Por este motivo (y para permitir un acceso uniforme), el contenido de la ROM a veces se copia a la RAM o se almacena en un lugar oculto antes de su primer uso y, posteriormente, se lee desde la RAM.
En el caso de los tipos de ROM que se pueden modificar eléctricamente, la velocidad de escritura ha sido tradicionalmente mucho más lenta que la de lectura, y puede requerir un voltaje inusualmente alto, el movimiento de conectores de puente para aplicar señales de habilitación de escritura y códigos de comando especiales de bloqueo/desbloqueo. La memoria flash NAND moderna se puede utilizar para lograr las velocidades de escritura más altas de cualquier tecnología de ROM regrabable, con velocidades de hasta 10 GB / s en un SSD. Esto ha sido posible gracias al aumento de la inversión en unidades de estado sólido y productos de memoria flash para dispositivos móviles de gama alta, tanto para consumidores como para empresas. A nivel técnico, las ganancias se han logrado aumentando el paralelismo tanto en el diseño del controlador como en el almacenamiento, el uso de grandes cachés de lectura/escritura de DRAM y la implementación de celdas de memoria que pueden almacenar más de un bit (DLC, TLC y MLC). Este último enfoque es más propenso a fallas, pero esto se ha mitigado en gran medida mediante el exceso de aprovisionamiento (la inclusión de capacidad de repuesto en un producto que solo es visible para el controlador de la unidad) y mediante algoritmos de lectura/escritura cada vez más sofisticados en el firmware de la unidad.
Debido a que se escriben forzando a los electrones a pasar a través de una capa de aislamiento eléctrico sobre una compuerta de transistor flotante , las ROM regrabables pueden soportar solo un número limitado de ciclos de escritura y borrado antes de que el aislamiento se dañe permanentemente. En las primeras EPROM, esto podía ocurrir después de tan solo 1000 ciclos de escritura, mientras que en las EEPROM Flash modernas la resistencia puede superar el millón. La resistencia limitada, así como el mayor costo por bit, significa que es poco probable que el almacenamiento basado en Flash sustituya por completo a las unidades de disco magnético en el futuro cercano. [ cita requerida ]
El tiempo durante el cual una ROM permanece legible con precisión no está limitado por el ciclo de escritura. La retención de datos de EPROM, EAROM, EEPROM y Flash puede estar limitada en el tiempo por la fuga de carga de las compuertas flotantes de los transistores de las celdas de memoria. Las EEPROM de primera generación, a mediados de la década de 1980, generalmente citaban una retención de datos de 5 o 6 años. Una revisión de EEPROM ofrecida en el año 2020 muestra que los fabricantes citan una retención de datos de 100 años. Los entornos adversos reducirán el tiempo de retención (la fuga se acelera por altas temperaturas o radiación ). La ROM enmascarada y la PROM fusible/antifusible no sufren este efecto, ya que su retención de datos depende de la permanencia física en lugar de eléctrica del circuito integrado, aunque la regeneración del fusible alguna vez fue un problema en algunos sistemas. [27]
El contenido de los chips ROM se puede extraer con dispositivos de hardware especiales y el software de control correspondiente. Esta práctica es común, como ejemplo principal, para leer el contenido de cartuchos de consolas de videojuegos antiguas . Otro ejemplo es hacer copias de seguridad de ROM de firmware/SO de computadoras antiguas u otros dispositivos, con fines de archivo, ya que en muchos casos, los chips originales son PROM y, por lo tanto, corren el riesgo de exceder su vida útil de datos.
Los archivos de volcado de memoria resultantes se conocen como imágenes ROM o ROM abreviadas , y se pueden utilizar para producir ROM duplicadas, por ejemplo, para producir cartuchos nuevos o como archivos digitales para jugar en emuladores de consola . El término imagen ROM se originó cuando la mayoría de los juegos de consola se distribuían en cartuchos que contenían chips ROM, pero alcanzó un uso tan extendido que todavía se aplica a imágenes de juegos más nuevos distribuidos en CD-ROM u otros medios ópticos.
Las imágenes ROM de juegos comerciales, firmware, etc., suelen contener software protegido por derechos de autor. La copia y distribución no autorizada de software protegido por derechos de autor constituye una violación de las leyes de derechos de autor en muchas jurisdicciones, aunque la duplicación con fines de copia de seguridad puede considerarse un uso legítimo según la ubicación. En cualquier caso, existe una comunidad activa dedicada a la distribución y comercialización de dicho software con fines de conservación y compartición.