Computer Busses is a comprehensive guide to busses, from the high-level software interface to the low-level, electrical characteristics and helps readers choose the most appropriate bus for each particular application. The author uses a top-down approach and organizes his presentation into five main areas: PC interfaces, Local busses, Instrumentation busses, Network busses, and Bus programming and protocols. Real-life case studies and application-specific programming examples make Computer Busses an essential reference for engineers, system architects, designers, and technicians, and required reading for students doing project work in electronic design, software engineering, and the range of related disciplines.
What is it that really determines the performance of a computer? Is it the processor? No, not really. It is the amount of memory that it has? No, not really. Is it the speed of the disk drives? No, not really. This is because computers can have a fast processor, and lots of memory, and a fast disk drive, but they do not count for much if the busses that connect them to each other do not operate efficiently. The performance of a computer thus directly relates to the busses that connect it. The computer bus is thus the foundation of the modern computer. Without them, a computer would just be a bundle of components. Busses provide the mechanism for the orderly flow of data over the required channel.
They range vastly in their specification. From busses that transmit hundreds of millions of bytes every second (such as with the PCI bus) to busses which transmit only a few thousand bytes per second (such as with the RS-232 bus). They vary in their specification as no one bus can provide the required specification for all applications. For example, graphics adaptors and electronic memory require high data throughputs, and must thus be closely coupled to the processor (known as a local bus connection), whereas modems and printers require relatively slow transfer rates, and must be coupled to a bus which does not try and hog the processor for long periods.
The perfect bus system would use a single connector for every device that connects to it, would be able to sense and configure whichever devices connected to it, would be able to use any type of cable, and devices which connect to it would simply require a tap from one connection onto the next (a daisy-chain connection). It would support high data transfer devices, alongside low data transfer devices, but the low data transfer devices would not hog the bus in favour of the high data transfer devices. It would support real-time data (such as speech and audio) and non-real-time data (such as computer data) in an integrated way, so that the non-real-time data would not swamp the real-time data. This bus, of course, does not exist, or if it does exist, it will be too expensive, and would be incompatible with all the existing busses. Thus, we have many different types of busses, each with their own application. It is impossible to immediately change computer systems every time a new application comes along. We do not immediately knock down our house every time we want to upgrade it. This would be expensive, and we probably would be able to sell it after we had done it. We thus try to use our existing framework and integrate with it.
Internal busses connect the processor to its memory and its interface busses (such as the PCI and the ISA busses). The external busses allow the connection the external devices to the computer, in an orderly manner.