In a computer system, buses are communication pathways that connect various components of the computer, enabling data transfer between them. These buses are essential for the coordination of the central processing unit (CPU), memory, input/output (I/O) devices, and storage. Each bus is a set of wires or traces on a motherboard and is characterized by the data it can carry, speed, and the protocol used for communication.
Types of Buses in a Computer System
Buses can be broadly categorized into three main types based on their function:
1. Data Bus
- Function: Transfers actual data between the CPU, memory, and I/O devices.
- Width: The width (number of lines) determines how much data can be transferred at one time (e.g., 8-bit, 16-bit, 32-bit, or 64-bit).
- Bidirectional: Data can flow in both directions, allowing read and write operations.
2. Address Bus
- Function: Carries memory addresses from the CPU to other components, specifying where data is to be read from or written to.
- Width: Determines the maximum addressing capability of the CPU. For example, a 32-bit address bus can address up to 232 memory locations.
- Unidirectional: Data flows only from the CPU to the memory or I/O.
3. Control Bus
- Function: Carries control signals issued by the CPU to coordinate and manage the operations of the entire system.
- Signals: Includes commands like read/write signals, interrupt signals, and clock signals.
- Bidirectional: Some control signals may flow back to the CPU (e.g., acknowledgment signals from devices).
Categories Based on Architecture
1. System Bus
- A combination of the data, address, and control buses, typically found on the motherboard to connect the CPU to memory and I/O devices.
2. Internal Bus
- Connects internal components of the CPU, such as the Arithmetic Logic Unit (ALU), registers, and the cache.
3. External Bus
- Facilitates communication between the CPU and external devices like keyboards, printers, and external storage.
Specific Bus Types in Modern Systems
Front-Side Bus (FSB):
- Connects the CPU to the main memory and the northbridge chipset.
Back-Side Bus (BSB):
- Links the CPU to the cache memory (e.g., L2 or L3 cache).
Peripheral Component Interconnect (PCI):
- Used to connect peripheral devices like network cards and sound cards.
Universal Serial Bus (USB):
- A standardized bus for connecting external devices like flash drives and smartphones.
Serial ATA (SATA):
- Connects storage devices like hard drives and SSDs.
PCI Express (PCIe):
- A high-speed bus for GPUs, NVMe storage devices, and other high-performance peripherals.
I2C (Inter-Integrated Circuit) and SPI (Serial Peripheral Interface):
- Common in embedded systems for low-speed peripherals like sensors.
HyperTransport (HT):
- Used in AMD systems for interconnecting the CPU and chipset.
By understanding buses, we can appreciate how the intricate components of a computer communicate efficiently to perform complex tasks.

You have already seen that instructions are executed within the CPU by moving ‘‘data’’ in many different forms from register to register and between registers and memory. The different forms that the‘‘data’’ can take include instructions and addresses, in addition to actual numerical data. ‘‘Data’’ moves between the various I/O modules, memory, and the CPU in similar fashion. The physical connection that makes it possible to transfer data from one location in the computer system to another is called a bus.
The need to characterize buses comes from the necessity of interfacing the bus to other components that are part of the computer system. Buses that are internal to the CPU are usually not characterized formally at all, since they serve special purposes and do not interface to the outside world. Buses that are used in this way are sometimes known as dedicated buses. Buses that are intended for more general use must have a well-defined standard; standard buses generally have a name. PCI Express, USB, IDE, and SATA are all examples of named buses.
Each conductor in the bus is commonly known as a line. Lines on a bus are often assigned names, to make individual lines easier to identify. In the simplest case, each line carries a single electrical signal. The signal might represent one bit of a memory address, or a sequence of data bits, or a timing control that turns a device on and off at the proper time. Sometimes, a conductor in a bus might also be used to carry power to a module. In other cases, a single line might represent some combination of functions.
The lines on a bus can be grouped into as many as four general categories: data, addressing, control, and power. Data lines carry the ‘‘data’’ that is being moved from one location to another. Address lines specify the recipient of data on the bus. Control lines provide control and timing signals for the proper synchronization and operation of the bus and of the modules and other components that are connected to the bus. A bus connecting only two specific 32-bit registers within a CPU, for example, may require just thirty-two data lines plus one control line to turn the bus on at the correct time.The bus that connects the CPU and memory, for example, needs address lines to pass the address stored in the MAR to the address decoder in memory and data lines to transfer data between the CPU and the memory MDR. The control lines provide timing signals for the data transfer, define the transfer as a read or write, specify the number of bytes to transfer, and perform many other functions.
At their two extremes, buses are characterized as parallel or serial. By definition, a parallel bus is simply a bus in which there is an individual line for each bit of data, address, and control being used. This means that all the bits being transferred on the bus can be transferred simultaneously. A serial bus is a bus in which data is transferred sequentially, one bit at a time, using a single data line pair.
A bus line may pass data in one direction only, or may be used to pass data in both directions. A unidirectional line is called a simplex line. A bidirectional line may carry data one direction at a time, in which case it is called a half-duplex line, or in both directions simultaneously, known as a full-duplex line.
Buses are also characterized by the way that they interconnect the various components to which they are attached. A bus that carries signals from a single specific source to a single specific destination is identified as a point-to-point bus. Point-to-point buses that connect an external device to a connector are often referred to as cables, as in a printer cable or a network cable. Thus, the cable that connects the USB port in a personal computer from the computer to a printer is an example of a point-to-point bus. The internal connectors into which external cables can be plugged are often called ports. Typical ports on a personal computer might include parallel printer ports, network ports, USB ports, and firewire ports.
Alternatively, a bus may be used to connect several points together. Such a bus is known as a multipoint bus, or sometimes as a multidrop bus. It is also referred to as a broadcast bus, because the signals produced by a source on the bus are ‘‘broadcast’’ to every other point on the bus in the same way as a radio station broadcasts to anyone who tunes in. The bus in a traditional Ethernet network is an example of a broadcast bus: the signal being sent by a particular computer on the network is received by every other computer connected to the network.
A parallel bus that carries, say, 64 bits of data and 32 bits of address on separate data and address lines would require a bus width of 96 lines, even before control lines are considered. The parallel bus is characterized by high throughput capability because all the bits of a data word are transferred at once. Virtually every bus internal to the CPU is a parallel bus, since the high speed is essential to CPU operation.
To use a bus, the circuits that are connected to the bus must agree on a bus protocol. A bus protocol is simply a specification that spells out the meaning of each line and each signal on each line for this purpose. Thus, a particular control line on a bus might be defined as a line that determines if the bus is to be used for memory read or memory write. Both the CPU and memory would have to agree, for example, that a ‘‘0’’ on that particular line means ‘‘memory read’’ and a ‘‘1’’ on the line means ‘‘memory write’’. The line might have a name like MREAD/MWRITE, where the bar over MWRITE means that a ‘‘0’’ is theactive state. The bar itself stands for ‘‘NOT’’.
Comments
Post a Comment