Memory
Magnetic core memory was the computer memory of choice throughout the 1960s, until it was replaced by semiconductor memory.
A computer's memory can be viewed as a list of cells into which
numbers can be placed or read. Each cell has a numbered “address” and
can store a single number. The computer can be instructed to “put the
number 123 into the cell numbered 1357” or to “add the number that is in
cell 1357 to the number that is in cell 2468 and put the answer into
cell 1595.” The information stored in memory may represent practically
anything. Letters, numbers, even computer instructions can be placed
into memory with equal ease. Since the CPU does not differentiate
between different types of information, it is the software's
responsibility to give significance to what the memory sees as nothing
but a series of numbers.
In almost all modern computers, each memory cell is set up to store
binary numbers in groups of eight bits (called a
byte).
Each byte is able to represent 256 different numbers (2^8 = 256);
either from 0 to 255 or −128 to +127. To store larger numbers, several
consecutive bytes may be used (typically, two, four or eight). When
negative numbers are required, they are usually stored in
two's complement
notation. Other arrangements are possible, but are usually not seen
outside of specialized applications or historical contexts. A computer
can store any kind of information in memory if it can be represented
numerically. Modern computers have billions or even trillions of bytes
of memory.
The CPU contains a special set of memory cells called
registers
that can be read and written to much more rapidly than the main memory
area. There are typically between two and one hundred registers
depending on the type of CPU. Registers are used for the most frequently
needed data items to avoid having to access main memory every time data
is needed. As data is constantly being worked on, reducing the need to
access main memory (which is often slow compared to the ALU and control
units) greatly increases the computer's speed.
Computer main memory comes in two principal varieties:
random-access memory or RAM and
read-only memory
or ROM. RAM can be read and written to anytime the CPU commands it, but
ROM is preloaded with data and software that never changes, therefore
the CPU can only read from it. ROM is typically used to store the
computer's initial start-up instructions. In general, the contents of
RAM are erased when the power to the computer is turned off, but ROM
retains its data indefinitely. In a PC, the ROM contains a specialized
program called the
BIOS that orchestrates loading the computer's
operating system from the hard disk drive into RAM whenever the computer is turned on or reset. In
embedded computers,
which frequently do not have disk drives, all of the required software
may be stored in ROM. Software stored in ROM is often called
firmware, because it is notionally more like hardware than software.
Flash memory
blurs the distinction between ROM and RAM, as it retains its data when
turned off but is also rewritable. It is typically much slower than
conventional ROM and RAM however, so its use is restricted to
applications where high speed is unnecessary.
[48]
In more sophisticated computers there may be one or more RAM
cache memories,
which are slower than registers but faster than main memory. Generally
computers with this sort of cache are designed to move frequently needed
data into the cache automatically, often without the need for any
intervention on the programmer's part.