Overview
In computer architecture, a bus (historically also called data highway or databus) is a communication system that transfers data between components inside a Computer, or between computers. This expression covers all related hardware components (wire, optical fiber, etc.) and software, including communication protocols.
In most traditional computer architectures, the CPU and main memory tend to be tightly coupled, with the internal bus connecting the two being known as the system bus. In systems that include a cache, CPUs use high-performance system buses that operate at speeds greater than memory to communicate with memory. The internal bus (also known as the internal data bus, memory bus or system bus) connects internal components of a computer to the mother board. Local buses connect the CPU and memory to the expansion bus, which in turn connects the computer to peripherals. Bus systems such as the SATA ports in modern computers support multiple peripherals, allowing multiple hard drives to be connected without an expansion card.
In systems that have a similar architecture to multicomputers, but which communicate by buses instead of networks, the system bus is known as a front-side bus. In such systems, the expansion bus may not share any architecture with their host CPUs, instead supporting many different CPUs, as is the case with PCI. While the term “peripheral bus” is sometimes used to refer to all other buses apart from the system bus, the “expansion bus” has also been used to describe a third category of buses separate from the peripheral bus, which includes bus systems like PCI.
Early computer buses were parallel electrical wires with multiple hardware connections, but the term is now used for any physical arrangement that provides the same logical function as a parallel electrical busbar. Modern computer buses can use both parallel and bit serial connections, and can be wired in either a multidrop (electrical parallel) or daisy chain topology, or connected by switched hubs. Many modern CPUs also feature a second set of pins similar to those for communicating with memory—but able to operate with different speeds and protocols—to ensure that peripherals do not slow overall system performance. CPUs can also feature smart controllers to place the data directly in memory, a concept known as direct memory access. Low-performance bus systems have also been developed, such as the Universal Serial Bus (USB).
Given technological changes, the classical terms “system”, “expansion” and “peripheral” no longer have the same connotations. Other common categorization systems are based on the bus’s primary role, connecting devices internally or externally. However, 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. Other examples, like InfiniBand and I²C were designed from the start to be used both internally and externally.