Read-only memory
Read-only memory (ROM) is a type of non-volatile computer memory that permanently stores data and instructions, allowing them to be read but not easily modified or erased.[1] This distinguishes ROM from volatile memories like RAM, which lose their contents without power, making ROM essential for retaining critical firmware and boot instructions across power cycles.[2] In electronic devices, ROM ensures reliable access to unchanging software, such as the Basic Input/Output System (BIOS) in personal computers or embedded code in microcontrollers.[3] ROM technology encompasses several subtypes tailored to different manufacturing and programming needs. Mask ROM (MROM) is programmed during the chip fabrication process using a custom mask, offering high-volume production efficiency but no post-manufacture changes.[4] Programmable ROM (PROM) allows one-time user programming via fuse blowing, while erasable PROM (EPROM) can be erased using ultraviolet light and reprogrammed multiple times.[4] Electrically erasable PROM (EEPROM) and its variant, flash memory, support electrical erasure and rewriting, enabling applications in reusable storage like USB drives and solid-state disks.[4] The development of semiconductor ROM began in 1965 when Sylvania produced the first 256-bit bipolar TTL ROM chips for Honeywell, programmed manually at the factory.[5] Key advancements followed, including Intel's 1701 EPROM in 1971, which introduced reusable programming via UV erasure, revolutionizing prototyping and embedded systems.[6] By the 1980s, EEPROM and flash memory expanded ROM's versatility for consumer electronics and data storage.[7] Today, ROM variants are integral to computing, powering device initialization, firmware in appliances like microwaves, and long-term data preservation in everything from video game cartridges to automotive ECUs.[8]Fundamentals
Definition and characteristics
Read-only memory (ROM) is a type of non-volatile semiconductor memory in which the data is permanently stored during the manufacturing process or through initial programming, and it cannot be modified under normal operating conditions.[9] This immutability arises from the data being encoded directly into the circuit topology, such as by selectively including or omitting transistors or diodes in the memory array.[10] Key characteristics of ROM include its non-volatility, meaning it retains stored information even when power is disconnected, distinguishing it from power-dependent storage.[11] Once programmed, ROM operates in read-only mode, preventing alterations to ensure data integrity for critical applications.[9] It is commonly used to store firmware, boot code, or fixed datasets that require long-term reliability without the need for updates.[10] The basic architecture of ROM consists of an array of memory cells organized into rows and columns, where each cell represents a bit of data using simple elements like diodes or transistors connected to word lines (rows) and bit lines (columns).[9] Addressing is achieved through row and column decoders that select specific cells by activating the appropriate lines, allowing random access to any stored word with minimal control overhead.[9] For instance, in a diode-based ROM, the presence or absence of a diode at a cell junction determines whether the bit line pulls high or low during readout.[9] In contrast to volatile memories like random-access memory (RAM), which lose data without continuous power and support read-write operations for dynamic processing, ROM provides persistent, immutable storage suited to unchanging instructions or lookup tables.[11] This persistence enables ROM to serve as a foundational element in systems requiring stable, power-independent data retention.[10]Comparison to other memory types
Note that "ROM" is sometimes used narrowly to refer to non-rewritable types like mask ROM, distinct from rewritable variants such as flash memory, which are also classified under ROM broadly. Read-only memory (ROM) differs fundamentally from random-access memory (RAM) in its non-volatility and read-only nature, retaining data without power and preventing modifications, whereas RAM is volatile and supports read-write operations for temporary data processing.[12] ROM suits permanent storage of firmware and boot instructions, while RAM enables high-speed temporary data handling in computing tasks.[13] Access speeds in ROM are suitable for random reads but generally slower than those of RAM, which supports both read and write operations, emphasizing ROM's role in stable, unchanging data roles.[14] In contrast to flash memory, ROM is typically one-time programmable with optimized density for fixed-content applications like embedded systems, offering lower cost per bit in high-volume production.[15] Flash, however, supports multiple erase and rewrite cycles—thousands to hundreds of thousands for NAND variants—enabling versatile storage but at slower write speeds (microseconds to milliseconds) and higher per-bit costs compared to mask-programmed ROM.[16] This makes ROM preferable for unchanging code, while flash excels in removable media and user-updatable firmware.[17] PROM, EPROM, and EEPROM represent programmable ROM subtypes under the broader ROM umbrella, allowing field customization—PROM once, EPROM via UV erasure, and EEPROM electrically with byte-level rewrites—yet all maintain non-volatility for semi-permanent data.[18] Compared to emerging rewritable non-volatiles like MRAM and FRAM, traditional ROM variants prioritize cost-effective permanence over high-endurance rewritability; MRAM offers near-unlimited cycles and nanosecond speeds for cache-like uses but at relatively high costs, while FRAM provides 10^12–10^15 endurance for low-power sensors at moderate expense.[19] ROM's fixed nature thus contrasts with these technologies' flexibility, suiting high-volume, low-cost fixed-data scenarios over dynamic rewrites.[20]| Memory Type | Volatility | Rewritability | Speed (Read/Write) | Cost per Bit | Primary Use Cases |
|---|---|---|---|---|---|
| ROM | Non-volatile | None (one-time or fixed) | Fast read (~50 ns); no write | Low | Firmware, boot code, fixed embedded data[15] |
| RAM | Volatile | Full (read-write) | Very fast (~10 ns both) | Moderate | Temporary data processing, caching[12] |
| Flash (NAND) | Non-volatile | Limited (thousands to hundreds of thousands cycles) | ~10 µs read; ms write | Very low | Mass storage, SSDs, updatable firmware[16] |
| EEPROM | Non-volatile | Limited (~10^5 cycles) | ~50 ns read; ms write | Moderate | Configuration storage, BIOS updates[19] |
| MRAM | Non-volatile | High (unlimited) | ~3–20 ns both | High (as of 2014: $3–5/MB) | High-reliability cache, avionics[20] |
| FRAM | Non-volatile | Very high (~10^12 cycles) | ~20–80 ns read; ~50 ns write | Moderate-high | Smart cards, sensors, low-power rewrites[21] |