In computer architecture, a bus is a communication system that transfers data between components inside a computer, or between computers.

The bus connecting the CPU and memory is one of the defining characteristics of the system, and often referred to simply as the system bus.

Such systems are architecturally more similar to multicomputers, communicating over a bus rather than a network.

In these cases, expansion buses are entirely separate and no longer share any architecture with their host CPU. What would have formerly been a system bus is now often known as a front-side bus.

Many common modern bus systems can be used for both; SATA and the associated eSATA are one example of a system that would formerly be described as internal, while certain automotive applications use the primarily external IEEE 1394 in a fashion more similar to a system bus.

Internal buses The internal bus, also known as internal data bus, memory bus, system bus or Front-Side-Bus, connects all the internal components of a computer, such as CPU and memory, to the motherboard.

External buses The external bus, or expansion bus, is made up of the electronic pathways that connect the different external devices, such as printer etc.

Often, a serial bus can be operated at higher overall data rates than a parallel bus, despite having fewer electrical connections, because a serial bus inherently has no timing skew or crosstalk.

An attribute generally used to characterize a bus is that power is provided by the bus for the connected hardware.

Universal Serial Bus devices may use the bus supplied power, but often use a separate power source.

History Over time, several groups of people worked on various computer bus standards, including the IEEE Bus Architecture Standards Committee, the IEEE “Superbus” study group, the open microprocessor initiative, the open microsystems initiative, the “Gang of Nine” that developed EISA, etc.

High-end systems introduced the idea of channel controllers, which were essentially small computers dedicated to handling the input and output of a given bus.

Single system bus To provide modularity, memory and I/O buses can be combined into a unified system bus.

Early microcomputer bus systems were essentially a passive backplane connected directly or through buffer amplifiers to the pins of the CPU. Memory and other devices would be added to the bus using the same address and data pins as the CPU itself used, connected in parallel.

These simple bus systems had a serious drawback when used for general-purpose computers.

Such bus systems are also difficult to configure when constructed from common off-the-shelf equipment.

Second generation “Second generation” bus systems like NuBus addressed some of these problems.

A bus controller accepted data from the CPU side to be moved to the peripherals side, thus shifting the communications protocol burden from the CPU itself.

An increasing number of external devices started employing their own bus systems as well.

In general, these third generation buses tend to look more like a network than the original concept of a bus, with a higher protocol overhead needed than early systems, while also allowing multiple devices to use the bus at once.