address bus
A bus that is used to specify a physical address.
Address bus: the wires that point the CPU to memory
The address bus is a set of parallel electrical lines that carries binary signals from the processor to memory or peripheral devices, identifying which physical location is being accessed. In a typical microcontroller or computer, the address bus width (measured in bits) determines how many distinct memory locations can be reached. An 8-bit address bus can access 256 locations; a 16-bit bus reaches 65,536; a 32-bit bus reaches about 4 billion. The number of wires in the address bus equals its bit width, and each wire carries a 0 or 1 state at any given moment.
Address buses work in conjunction with data buses and control signals. While the address bus specifies where to read or write, the data bus carries the actual information, and control lines signal whether the operation is a read or write. The address bus is unidirectional in most systems: it carries signals only from the CPU outward. Memory and I/O devices decode the address to determine if the request is meant for them, then respond on the data bus or accept data from it.
Practical constraints and failure modes
Address bus width directly limits system memory. Older 8-bit processors with 16-bit address buses could only use 64 kilobytes of RAM; modern 64-bit processors with appropriate address line implementation can theoretically access 16 exabytes. However, real systems rarely use the full theoretical range due to cost and chip design tradeoffs. Address bus capacitance and propagation delay affect system speed, particularly in high-frequency applications. Poor termination on long address bus traces can cause reflections and timing errors that corrupt memory access.
Multiplexing is common in embedded systems to reduce pin count. Multiplexed address buses share the same physical wires with the data bus, with separate control signals indicating whether the current state represents address or data. This saves pins but requires external latches to hold the address while data is transferred. Classic Intel microprocessors from the 8086 onward used multiplexed buses to this effect.
The address bus sits between the CPU's arithmetic logic and the memory hierarchy. It is invisible to end users but fundamental to how any digital system allocates computational resources. Understanding address bus limitations helps explain why older machines could not run software designed for newer ones, and why embedded systems often require careful memory partitioning by engineers.