Most modern computers are
byte-addressable. Each address identifies a single 8-bit
byte (
octet) of storage. Data larger than a single byte may be stored in a sequence of consecutive addresses. There exist
word-addressable computers, where the minimal addressable storage unit is exactly the processor's
word. For example, the
Data General Nova minicomputer, and the
Texas Instruments TMS9900 and
National Semiconductor IMP-16 microcomputers, used 16-bit
words, and there are many old
mainframe computers that use
36-bit word addressing (such as the
IBM 7090, with 15-bit word addresses, giving an address space of 215 36-bit words, approximately 128 kilobytes of storage, and the
DEC PDP-6/
PDP-10, with 18-bit word addresses, giving an address space of 218 36-bit words, approximately 1 megabyte of storage), not byte addressing. The range of addressing of memory depends on the bit size of the bus used for addresses – the more bits used, the more addresses are available to the computer. For example, an 8-bit-byte-addressable machine with a 20-bit
address bus (e.g.
Intel 8086) can address 220 (1,048,576) memory locations, or one
MiB of memory, while a 32-bit bus (e.g.
Intel 80386) addresses 232 (4,294,967,296) locations, or a 4
GiB address space. In contrast, a 36-bit word-addressable machine with an 18-bit address bus addresses only 218 (262,144) 36-bit locations (9,437,184 bits), equivalent to 1,179,648 8-bit bytes, or 1152
KiB, or 1.125 MiB — slightly more than the 8086. A small number of older machines are
bit-addressable. For example, a variable filed length (VFL) instruction on the
IBM 7030 "Stretch" specifies a bit address, a byte size of 1 to 8 and a field length. Some older computers (
decimal computers) are
decimal digit-addressable. For example, each address in the
IBM 1620's
magnetic-core memory identified a single six bit
binary-coded decimal digit, consisting of a
parity bit,
flag bit and four numerical bits. The 1620 used 5-digit decimal addresses, so in theory the highest possible address was 99,999. In practice, the CPU supported 20,000 memory locations, and up to two optional external memory units could be added, each supporting 20,000 addresses, for a total of 60,000 (00000–59999). Some older computers are character-addressable, with 6-bit
BCD characters containing a 2-bit zone and a 4-bit digit; the characters in an address only have digit values representing 0–9. Typically some of the zone bits are part of the address and some are used for other purposes, e.g., index register, indirect address. Some older computers are decimal-word addressable, typically with 4-digit addresses. In some machines the address fields also select index registers, restricting the range of possible address.
Word size versus address size Word size is a characteristic of
computer architecture denoting the number of bits that a CPU can process at one time. Modern processors, including
embedded systems, usually have a word size of 8, 16, 24, 32 or 64 bits; most current general-purpose computers use 32 or 64 bits. Many different sizes have been used historically, including 8, 9, 10, 12, 18, 24, 36, 39, 40, 48 and 60 bits. Very often, when referring to the
word size of a modern computer, one is also describing the size of address space on that computer. For instance, a computer said to be "
32-bit" also usually allows 32-bit memory addresses; a byte-addressable 32-bit computer can address 232 = 4,294,967,296 bytes of memory, or 4 gibibytes (GiB). This allows one memory address to be efficiently stored in one word. However, this does not always hold true. Computers can have memory addresses larger or smaller than their word size. For instance, many
8-bit processors, such as the
MOS Technology 6502,
supported 16-bit addresses— if not, they would have been limited to a mere 256
bytes of memory addressing. The 16-bit
Intel 8088 and
Intel 8086 supported 20-bit addressing via
segmentation, allowing them to access 1 MiB rather than 64 KiB of memory. All Intel
Pentium processors since the
Pentium Pro include
Physical Address Extensions (PAE) which support mapping 36-bit physical addresses to 32-bit virtual addresses. Many early
LISP implementations on, e.g.,
36-bit processors, held 2 addresses per word as the result of a
cons. Some early processors held 2 and even 3 addresses per instruction word. In theory, modern byte-addressable
64-bit computers can address 264 bytes (16
exbibytes), but in practice the amount of memory is limited by the CPU, the
memory controller, or the
printed circuit board design (e.g., number of physical memory connectors or amount of soldered-on memory). ==Contents of each memory location==