We now discus the bus, or rather the family of buses, that are essential to the operation and performance of all modern computers. The term bus is a contraction of the Latin word omnibus and means for all. A bus is so called, because it behaves like a highway that can be used by lots of different traffic. In a computer, all the devices that wish to communicate with each other use a bus. Figure 16.35 illustrates the organization of a computer with three buses.
Figure 16.35 The bus
The system bus of Figure 16.35 is made up of the address, data and control paths from the CPU. All memory and memory-mapped I/O devices are connected to this bus. Such a bus has to be able to operate at the speed of the fastest device connected to it—normally the main store. It can prove expensive when lots of low-speed peripherals are connected to it because they have to have high-speed interfaces whether they actually need them or not.
In this chapter we look at the structure or topologies of buses that describe how they connect functional units together and how different buses are themselves interconnected. We describe the signals that are required to implement a meaningful dialog between the various systems using the bus and look at the protocols and timing of these signals.
In systems with more than one CPU (or at least more than one device that can initiate actions like a CPU) the bus has decide which of the devices that want to access the bus should be granted access to the bus. This mechanism is called arbitration and is a key feature of modern system buses. We look at the principles governing arbitration and the way in which several contemporary buses implement arbitration.
A device that can take control of the system bus is called a bus master and a device that can only respond to a transaction initiated by a remote bus master is called a bus slave. In Figure 16.35, the CPU is a bus master and the memory system is a bus slave. One of the I/O ports has been labeled “bus master” because it to can control the bus (e.g., for DMA data transfers), the other peripheral is labeled “bus slave” because it can only respond to read or write accesses. The connection between the disk drive and its controller is also labeled “bus” because it represents a specialized and highly dedicated example of the bus. The CPU is shown in a box with memory and a local bus. Some computer systems are arranged so that the CPU is directly connected to a memory system on the same card via a local bus. This arrangement means that the CPU does not have to access the system bus for all its data.
We have pointed out that one of the reasons for the popularity of the computer is the ease with which it can be interfaced to systems as diverse as the high-speed hard disk, to the video camera to the keyboard or mouse. Consequently, we cover some of the so-called peripheral buses that are specifically designed to connect a processor to external subsystems. These buses include the SCSI bus, FireWire, the USB bus, and the Ethernet.
We briefly mention one of the unsung heroes of the computer bus – plug and play. Until relatively recently connecting a new peripheral to a computer was a veritable nightmare. You had to worry about the details of the physical connection, the hardware configuration of the computer and the hardware configuration of the peripheral. Some whiz kids could once take a simple printer and a simple computer and figure out the switch setting on each and get the system going in under a month. All they had to do was assign address space to the peripheral, interrupt request numbers, DMA channels, handshake mechanisms, and so on.
Today we take for granted technologies such as plug and play in which the peripheral and computer automatically negotiate with each other and assign resources to the peripheral that don’t conflict with any other peripheral’s resources.
16.5.1 Bus Structures and Topologies
A simple bus...