Also known as data highway historically, a computer bus is a short form of the term omnibus which refers to the system of communication responsible for the transfer to data within a computer or with other computers.
In simpler words, a computer bus is like a traditional road bus, only that transfers data from one computer to another like a traditional bus transports passengers from one bus stand to another.
Besides the transfer of data to other computers, a computer bus can also transfer data from one component to another within the same computer. When we say ‘components’, we refer to both hardware and software components inclusive of optical cables, wires, communication protocols, etc.
History, Background, and Evolution
Going back in time, computer buses were earlier referred to as “parallel electrical wires with multiple hardware connections” but now the evolved reference of the term “computer bus” can be stated as any physical arrangement that provides a similar rational function as that of a parallel electrical bus.
Modern versions of a computer bus may use either parallel or bit serial connections. They can also be wired in a daisy chain topology. In the case of USBs (Universal Serial Bus), they can be simply connected externally by switched hubs.
We know that a computer system comprises several parts including the Central Processing Unit, the input and output peripherals, and the memory units. So, there has to be a system that communicates data between these components.
This is exactly the job of a computer bus. The bus that connects the memory with the CPU is called the system bus. Furthermore, adapters used as expansion cards are connected to the system bus to facilitate communication between the memory unit and other peripherals. Such an arrangement is called a local bus or simply an expansion bus.
But the evolution of computer systems has changed these concepts as the latest CPUs now come within an inbuilt memory which eliminates the need for inter-component communication.
This transformation has led to a shift from the system bus to a “front-side bus” that facilitates high-speed communication from CPUs to cache memory as well as to the peripherals using protocols that were earlier used only between the memory and the peripherals.
Distinction from Network Connection
Although they perform similar functions, network connections such as Ethernet should not be confused with computer buses due to some conceptual differences. The bus provides the power to the connected hardware which is not the case in Ethernet.
Types of Computer Buses
Parallel Bus vs Serial Bus
|Parallel buses||Serial Buses|
|These computer buses transfer data words through multiple, parallel wires. ||These buses transfer the data in a bit-serial form.|
|Parallel buses are at lower overall data rates.||Serial buses can relatively be used for higher data rates.|
Internal Buses vs External Buses
|Internal Buses||External buses|
|Functions||As the name suggests, these kinds of computer buses are responsible for connecting internal components within a computer system, such as transporting data between the CPU and the memory, CPU and the motherboard, etc.||As the name suggests, external buses refer to the computer buses that assist in connecting a computer system with other devices or peripherals like the printer, keyboard, etc. Such communication among the peripherals is done through electronic pathways.|
|Examples of parallel buses||ISA (Industry Standard Architecture) MBusSBusNuBusUniBusSTEbus||PC CardGPIB (General Purpose Interface Bus) HIPPI ( High Performance Parallel Interface)|
|Examples of serial buses||1-wireSMBusSPI (Serial Peripheral Interface)||CAN Bus FieldbusUSBExpressCard|
|Other names||These kinds of computer buses are also called memory buses, system buses, front-side buses, or internal data bus.||An external bus is also known as an expansion bus.|
It is a fact that the faster the front-side bus, the better the performance of the computer system. Some computer systems can also contain a back-side bus that links the CPU to the cache. A back-side bus will carry the data to the CPU faster than the front-side bus.
The function of an address bus is to specify a physical address. Whenever a processor has to write to a particular memory location, that memory location has to be specified by the address bus.
Whatever the value is to be written or read to the memory location, it has to be sent through the data bus. The width of the address bus is directly linked to the amount of addressable memory of the system.
Now we know that physical wires were used by the old processors. Each bit of the address width had a wire. This arrangement worked fairly well in case of old buses which were not very wide or lengthy.
For instance, there were sixteen wires to constitute a 16-bit address bus. But with the evolution of computer systems, the computer buses became lengthier and the usage of physical wires started becoming expensive and complex.
This is when the concept of address multiplexing gained popularity. Under this arrangement, the address is transferred in two halves. A simple example of a 32-bit address will make it easier to understand the concept of address multiplexing wherein 16 lines will be used to send the first half of the memory address.
This will be followed by the second half of the memory address along the same lines immediately.
When an address is invalid for the address bus, a fault is raised to notify the operating system that the CPU can not physically address that memory location. Such an error can be caused in case of a non-existing address, unaligned address or paging errors.
The computer bus that connects the memory controller to the main memory within a computer system is called the memory bus. Modern versions of these memory buses are designed by chip standards bodies in such a way so as to connect to DRAM chips directly.
The part of the system bus used by CPUs to communicate to other components within the computer system is called control bus. The commands given by the CPU are carried to the respective devices through the control bus and the status signals from those devices are also sent back to the CPU through the control bus.
Kuldeep is the founder and lead author of ArtOfTesting. He is skilled in test automation, performance testing, big data, and CI-CD. He brings his decade of experience to his current role where he is dedicated to educating the QA professionals. You can connect with him on LinkedIn.