Read-only memory (usually known by its acronym, ROM) is a
class of storage media used in computers and other electronic devices. Because
data stored in ROM cannot be modified (at least not very quickly or easily), it
is mainly used to distribute firmware (software that is very closely tied to
specific hardware, and unlikely to require frequent updates).
In its strictest sense, ROM refers only to mask ROM (the
oldest type of solid state ROM), which is fabricated with the desired data
permanently stored in it, and thus can never be modified. However, more modern
types such as EPROM and flash EEPROM can be erased and re-programmed multiple
times; they are still described as "read-only memory"(ROM) because the
reprogramming process is generally infrequent, comparatively slow, and often
does not permit random access writes to individual memory locations. Despite the
simplicity of mask ROM, economies of scale and field-programmability often make
reprogrammable technologies more flexible and inexpensive, so mask ROM is rarely
used in new products as of 2007.
History
The simplest type of solid state ROM is as old as semiconductor technology
itself. Combinational logic gates can be joined manually to map n-bit address
input onto arbitrary values of m-bit data output (a look-up table). With the
invention of the integrated circuit came mask ROM. Mask ROM consists of a grid
of word lines (the address input) and bit lines (the data output), selectively
joined together with transistor switches, and can represent an arbitrary look-up
table with a regular physical layout and predictable propagation delay.
In mask ROM, the data is physically encoded in the circuit, so it can only be
programmed during fabrication. This leads to a number of serious disadvantages:
It is only economical to buy mask ROM in large quantities, since users
must contract with a foundry to produce a custom design.
The turnaround time between completing the design for a mask ROM and
receiving the finished product is long, for the same reason.
Mask ROM is impractical for R&D work since designers frequently need to
modify the contents of memory as they refine a design.
If a product is shipped with faulty mask ROM, the only way to fix it is
to recall the product and physically replace the ROM.
Subsequent developments have addressed these shortcomings.
PROM, invented in 1956, allowed users to program its contents exactly once by
physically altering its structure with the application of high-voltage pulses.
This addressed problems 1 and 2 above, since a company can simply order a large
batch of fresh PROM chips and program them with the desired contents at its
designers' convenience. The 1971 invention of EPROM essentially solved problem
3, since EPROM (unlike PROM) can be repeatedly reset to its unprogrammed state
by exposure to strong ultraviolet light. EEPROM, invented in 1983, went a long
way to solving problem 4, since an EEPROM can be programmed in-place if the
containing device provides a means to receive the program contents from an
external source (e.g. a personal computer via a serial cable). Flash memory,
invented at Toshiba in the mid-1980s, and commercialized in the early 1990s, is
a form of EEPROM that makes very efficient use of chip area and can be erased
and reprogrammed thousands of times without damage.
All of these technologies improved the flexibility of ROM,
but at a significant cost-per-chip, so that in large quantities mask ROM would
remain an economical choice for many years. (Decreasing cost of reprogrammable
devices had almost eliminated the market for mask ROM by the year 2000.)
Furthermore, despite the fact that newer technologies were increasingly less
"read-only," most were envisioned only as replacements for the traditional use
of mask ROM.
The most recent development is NAND flash, also invented by
Toshiba. Its designers explicitly broke from past practice, stating plainly that
"the aim of NAND Flash is to replace hard disks,"[1] rather than the traditional
use of ROM as a form of non-volatile primary storage. As of 2007[update], NAND
has partially achieved this goal by offering throughput comparable to hard
disks, higher tolerance of physical shock, extreme miniaturization (in the form
of USB flash drives and tiny microSD memory cards, for example), and much lower
power consumption.
Use of ROM for program storage
Every stored-program computer requires some form of
non-volatile, or erasable, storage to store the initial program that runs when
the computer is powered on or otherwise begins execution (a process known as
bootstrapping, often abbreviated to "booting" or "booting up"). Likewise, every
non-trivial computer requires some form of mutable memory to record changes in
its state as it executes.
Forms of read-only memory were employed as non-volatile
storage for programs in most early stored-program computers, such as ENIAC after
1948 (until then it was not a stored-program computer as every program had to be
manually wired into the machine, which could take days to weeks). Read-only
memory was simpler to implement since it required only a mechanism to read
stored values, and not to change them in-place, and thus could be implemented
with very crude electromechanical devices (see historical examples below). With
the advent of integrated circuits in the 1960s, both ROM and its mutable
counterpart static RAM were implemented as arrays of transistors in silicon
chips; however, a ROM memory cell could be implemented using fewer transistors
than an SRAM memory cell, since the latter requires a latch (comprising 5-20
transistors) to retain its contents, while a ROM cell might consist of the
absence (logical 0) or presence (logical 1) of a single transistor connecting a
bit line to a word line. Consequently, ROM could be implemented at a lower
cost-per-bit than RAM for many years.
Mosthome computers of the 1980s stored a BASIC interpreter or
operating system in ROM as other forms of non-volatile storage such as magnetic
disk drives were too expensive. For example, the Commodore 64 included 64 KiB of
RAM and 20 KiB of ROM contained a BASIC interpreter and the "KERNAL" (sic) of
its operating system. Later home or office computers such as the IBM PC XT often
included magnetic disk drives, and larger amounts of RAM, allowing them to load
their operating systems from disk into RAM, with only a minimal hardware
initialization core and bootloader remaining in ROM (known as the BIOS in
IBM-compatible computers). This arrangement allowed for a more complex and
easily upgradeable operating system.
In modern PCs, "ROM" (or Flash) is used to store the basic
bootstrapping firmware for the main processor, as well as the various firmware
needed to internally control self contained devices such as graphic cards, hard
disks, DVD drives, TFT screens, etc, in the system. Today, many of these
"read-only" memories – especially the BIOS – are often replaced with Flash
memory (see below), to permit in-place reprogramming should the need for a
firmware upgrade arise. However, simple and mature sub-systems (such as the
keyboard or some communication controllers in the ICs on the main board, for
example) may employ mask ROM or OTP (one time programmable).
ROM and successor technologies such as Flash are prevalent in
embedded systems. This governs everything from industrial robots to home
appliances and consumer electronics (MP3 players, set-top boxes, etc) all of
which are designed for specific functions, but nonetheless based on
general-purpose microprocessors in most cases. With software usually tightly
coupled to hardware, program changes are rarely needed in such devices (which
typically lack devices such as hard disks for reasons of cost, size, and/or
power consumption). As of 2008, most products use Flash rather than mask ROM,
and many provide some means for connection to a PC for firmware updates; a
digital audio player's might be updated to support a new file format for
instance. Some hobbyists have taken advantage of this flexibility to reprogram
consumer products for new purposes; for example, the iPodLinux and OpenWRT
projects have enabled users to run full-featured Linux distributions on their
MP3 players and wireless routers, respectively.
ROM is also useful for binary storage of cryptographic data,
as it makes them difficult to replace, which may be desirable in order to
enhance information security.
ROM for data storage
Since ROM (at least in hard-wired mask form) cannot be
modified, it is really only suitable for storing data which is not expected to
need modification for the life of the device. To that end, ROM has been used in
many computers to store look-up tables for the evaluation of mathematical and
logical functions (for example, a floating-point unit might tabulate the sine
function in order to facilitate faster computation). This was especially
effective when CPUs were slow and ROM was cheap compared to RAM.
Notably, the display adapters of early personal computers
stored tables of bitmapped font characters in ROM. This usually meant that the
text display font could not be changed interactively. This was the case for both
the CGA and MDA adapters available with the IBM PC XT.
The use of ROM to store such small amounts of data has
disappeared almost completely in modern general-purpose computers. However,
Flash ROM has taken over a new role as a medium for mass storage or secondary
storage of files.