A computer bus is a physical connection that links a computer's components on the motherboard. Each bus consists of a circuit between two or more chips, expansion cards and slots, or ports using a series of small wires. These circuits let the components exchange data while also providing power from the motherboard.
At any given time, each wire in a bus can either carry a voltage or not, showing one of two states — on (1) or off (0) — as a single bit of data. The number of wires in a bus determines how much data it can transfer in a single clock cycle, referred to as its width and measured in bits. For example, a bus with 64 wires can send 64 bits at once, making it a 64-bit bus. Buses also have a speed, measured in megahertz, that indicates how many times per second it transfers data.
The primary bus that connects a computer's CPU to the rest of the motherboard's components is known as the "system bus." The system bus includes three separate buses that handle different tasks:
- The address bus carries information about the physical address of the memory location that is being read or written. The total number of addressable memory locations depends on the width of the address bus — a 16-bit bus can address 65,536 memory locations (64 kilobytes), while a 32-bit bus can address 4,294,967,296 locations (4 gigabytes).
- The data bus carries the actual data to and from the system's RAM. A wider data bus can transfer more information per clock cycle.
- The control bus carries commands between the CPU and the rest of a computer's components. It also carries status reports from devices back to the CPU.
In addition to the system bus, computers contain other buses that connect components and peripherals to their respective controller chips. Internal buses (also called local buses) connect components inside the computer, while external buses connect the ports used for attaching peripherals. For example, a computer's internal memory bus connects the RAM slots to the memory controller, while the external USB bus connects USB ports to the I/O controller.