The Wonderful World of Buses
This page is designed as a clarification for chapter 6.3 in the QA book.
I hope that you will be able to understand the importance of the bus to
computer design, speed of the machine and how the improvements and ideas
have lead to the bus designs of today.
The first things we need to understand is exactly what is a bus. To
answer the question we need to separate the different types of busses
that may exist in a computer. We have a processor bus and/or memory bus
(some processor memory buses are one and the same), the i/o bus, which is
probably the most important bus since all data will flow on this bus
between CPU and i/o cards and devices.
PROCESSOR BUS
This is the communication pathway from the CPU and the system bus and
possibly an external cache. The idea of this bus is to transfer data to
and from the cache or system bus as fast as possible. The bus is running
at a speed that is equal to the speed of the CPU. This gives us the idea
of a synchronous bus. A synchronous bus is one that is running with a
clock and that determines how data goes through the bus. In the CPU bus,
data will reach its destination typically in one or two clock cycles
(this all depends on the clock speed of the CPU). Disadvantages of the
synchronized bus are that they can't be very long due to timing problems
and everything must travel at the same speed.
We now know what a processor bus is but we have no way of comparing any
processor buses. |To do this we can use an equation to calculate the
transfer rate of the bus. We need to know what bandwidth is. This is
the amount of data that can travel along the bus in one second. When we
multiply the clock speed of the bus by the data width of the bus and
divide by 8, we will get the bandwidth or transfer rate of the bus (where
the 8 comes from I'm still not sure). This transfer rate represents the
maximum value. As with any other formula for Comp Sci, this means that
you will probably never see any machine run with that transfer rate on
its processor bus (or any other bus!). The speed is limited by signal
propagation, and how fast data gets on the bus.
MEMORY BUS
This bus is used to transfer data between the CPU and main memory. As
stated earlier, this is either the processor bus itself or another stand
alone bus. Well here comes a problem. Since we have just seen that the
processor bus runs at high clock speeds and we know (hopefully) that RAM
runs at much slower speeds, we may have all sorts of timing problems.
This problem was cleared up by using more hardware to maintain the
interface between the bus and main memory. It is much harder to judge
the clock rate of the memory bus (if it is separate form processor bus).
The chips that help control the flow of data, and the type of RAM chips
(SIMM, DIMM, SIPP, etc.) have their own speeds. We can clearly state
that the memory bus is definitely not as fast as the processor bus. It
is limited by the slowness of main memory.
I/O BUS
The I/O bus allows the computer to communicate with storage devices,
modems printers, and other peripheral devices. Here is where we get to
the focus of my page. This is where many of the improvements have been
made in bus design. We have three areas that have become the focus for
increased performance of the bus: Faster CPUs, Increasing software
demands, Greater video requirements.
All require a fast I/O bus. We have several, and they are listed in
order of introduction to the world:
ISA -> Industry Standard Architecture
This was the first bus on the first PC in 1981. While it doesn't seem to
fit into the rapid technology turnover with every other computer
component, this bus is still around and is in fact the basis still of
most Pentium type machines.
The ISA bus comes in two flavors, 8 and 16 bits. In most of today's,
machines you will not see any 8 bit bus connections on any board since
the 16 can handle the 8 bit data. The ISA bus is set to run at a rate of
8MHz. This yields a maximum theoretical speed of 8MHz x 16 bits = 128
megabits/second.
The 128 must be divide by 2 which is the least amount of clock cycles it
will take data to travel on the bus, and again by 8 to give us 8
megabits/second.
This I very slow compared to the potential of the processor/memory bus
which can run more than 40 times as fast as the max for the ISA. This is
why faster buses needed to be developed, to help keep up with the speed
of the rest of the machine.
As CPU speeds and data widths increased buses needed to be developed to
handle them. The MCA was designed to replace the slower ISA bus. The
differences in the MCA are that the data width is 32 bits, the bus runs
asynchronous to the CPU, and it provides Bus Mastering. The asynchronous
bus means that the speed of the bus is independent of the CPU rate, which
lowers the timing problems but increases the level of hardware to support
communication with the CPU. Bus Mastering is a way to speed up the bus
by having an adapter that acts like a processor to speed up data. The
MCA is faster than the ISA but since the MCA has no clock speed, we
cannot use the formula we have been using to get its throughput. The
only way to get any measure is to use (arrrrrr!!!!) benchmarks.
The biggest drawback to the MCA bus is it only can devices that are
designed for MCA buses. It does not support the ISA device (which is why
no one will ever buy a MCA bus machine again).
The development of the MCA by IBM led to the development of the EISA bus.
The MCA bus introduced a faster and advanced bus than the ISA bus, but
lacked any compatibility outside itself. The EISA was the answer to the
MCA. The EISA bus has all the features of the MCA and also can support
ISA devices. The EISA does run at a clock speed though. Its max
transfer rate is (8MHz x 32bits)/8= 33.32 megabits/second. But because
the EISA bus can support ISA devices, its full abilities are not
utilized. The max transfer rate is only when using a 32 bit device and
most machines were not using them at that time. Both MCA and EISA did
bring something to the table that gave rise to a popular technology of
today - plug and play. Both allowed for jumperless devices to be
inserted and the computer would be able to know a device existed, but
both require software support to recognize the device.
VESA Local Bus (VLB)
The idea of the VLB was to use a bus that was separate from the regular
I/O bus. The goal is to have some part of the bus that could run on part
of the processor bus and communicate with I/O devices. The benefits of
the local bus are that they allow for data transfers to occur at the same
speed as the CPU, faster communication with storage devices. Video and
storage device controller cards are greatly enhanced in the VLB form as
they can transfer data much faster. The VLB has the drawback that it is
limited to the 486 processor. Also while theoretically it can run as
fast as the CPU, circuitry problems limit it to a recommended speed of
33MHZ. The design of the VLB has a major problem dealing with more than
one device on the local bus. Timing problems will occur, and the problem
of the speed limitation doesn't help either. While the VLB introduced a
innovative way around the slow clock speeds of the ISA, EISA (and MCA is
not as fast as VLB), it suffered from a bad design.
Peripheral Component Interconnect (PCI)
The VLB idea lead to a more successful local bus, the PCI bus. The PCI
brought a new bus from the processor bus and bridges by control hardware
to the I/O (or device connection). The PCI used a bus that could run at
the clock speed of the CPU, but without having to deal with the timing
problems of the VLB because the PCI bus is not on the processor bus. The
"max" for both PCI (32 bit) and VLB transfer rates was (33MHZ x 32bits) /
8 =132 megabits/second. The PCI is now double that since the
implementation of 64 bit Pentium systems. The PCI bus has become the
choice of today's high end systems (until something else comes along).
As stated before this is a local bus, which means machines also will have
another I/O bus, typically the ISA bus. So while bus technology has
greatly improved its performance, it still is using an original idea as
part of its main feature.
What's next?
It is hard to say what the next step would be. I have not seen any
reports , but I assume that the next step would be to get an entire I/O
bus that can run at the same transfer rate as the processor bus.
What did we see?
Hopefully you could see that each type of bus brought some type of
innovation to the field and was later used to develop more advanced
ideas. In each of the three areas from the start of the page, we can see
that as CPUs got faster it was necessary to increase the bus speed. The
VLB helped with the video as does the PCI bus, and virtually all
improvements help with increased software demands. All this was done
with fairly simple ideas, increase data width, and get the bus speed to
that of the CPU. We also see there exists a formula we can use to
calculate the transfer rate (except MCA) to do some modest comparisons.
LINKS and Sources
This page was created by Kyle Chapman