I/O Bus Types

It is now time to discuss the various I/O bus implementations:

ISA bus

Some twenty years ago, the original 8088 PC had an 8 bit system bus which ran at 4.77MHz. At this time, all components were unified in design, which is why the original ISA (Industry Standard Architecture) I/O bus was also 8 bit and ran at 4.77MHz. As PCs slowly evolved in specification (in terms of CPU and motherboard architecture), and peripheral devices demanded greater bandwidth, the ISA bus was enhanced with the arrival of the 286 in 1984. The data width was increased to 16 bits and the architecture improved to support up to 8MHz bus speed, allowing a theoretical maximum data transfer rate to the CPU of 16MB/second. However, the ISA bus typically runs much slower than this. One reason is the fact that the ISA bus clock and CPU clock run asynchronously, resulting in many wasted clock cycles. More information on system clocks to come.

Until very recently, motherboards had ISA expansion slots, designed for plugging in additional ISA hardware, such as 8/16 bit sound cards and modems. The image below shows ISA slots along side PCI slots.

ISA and PCI slots

These days, ISA slots are rarely found on new motherboards. This is because very few card devices are still available that use the ISA bus. However, just because there are no ISA slots on a motherboard does not mean that there is no ISA bus. The fact that even modern systems still have an ISA bus is not so much a testament to the ISA architecture itself, as it is to the unwillingness of hardware manufacturers to move away from backwards compatibility.

One last point to bear in mind is that ISA was around long before Plug and Play. In the old ISA days, full configurational control of hardware devices was built into the device itself, typically using proprietary hardware/software. If any resource configurations were possible with this kind of hardware, it was usually done by jumpers on the device itself... no, not the wooly ones. Just before ISA cards became completely extinct, it did become possible to get cards that were supposedly PnP-compatible. However, it should be remembered that this was a bit of a cludge and was somewhat unreliable. In general, you should avoid using any ISA cards in a modern machine, since their mere presence can really throw a spanner in your PC's PnP set up.

EISA bus

Around the time of the 386, which had a 32 bit memory data bus, the old 16 bit ISA architecture was becoming a major bottleneck to system performance. One solution was the EISA (Extended Industry Standard Architecture) bus. This architecture matched the I/O bus width to the memory bus width and provided bus mastering support. However, EISA fell by the way side, possibly due to its high expense, to the popular local bus architectures: VESA and PCI.

VESA Local Bus

The power of the 386 CPU finally made graphical user interfaces (GUIs) feasible. The days of the command-line were being replaced by the 'multitasking' Windows environment. In the early 90s with the arrival of the 486 CPU, the only real limiting factor to performance seemed to be the lack of bandwidth between the graphics/video adaptor and the rest of the system.

Heavily dependent on the 486 memory bus architecture, VESA (Video Electronics Standards Association) local bus - aka VLB - was an attempt to address this issue. The principle is to move the I/O bus on to the memory bus, hence closer or local to the CPU. With a width of 32 bits and operating at the full memory bus speed of 33MHz, VLB bandwidth was 127MB/sec, a huge improvement over the sub-16MB/sec of ISA.

A VLB expansion slot is identical to an ISA slot, but with an additional slot approximately 2 inches in length appended. Hence VLB cards were typically much longer than ISA cards. There was strong support for VLB by graphics card manufacturers, but this was not sufficient to ensure a lasting place in the market for VLB. For a number of reasons - the lack of support for Plug and Play and bus mastering, the lack of support from vendors of other types of card, and the strong dependence on 486 architecture - VLB also died quietly.

PCI

Intel's PCI (Peripheral Components Interconnect) local bus arrived shortly after VLB and for a while both were very popular, with no clear leader apparent. However, VLB was strongly architected around the 486 system, while PCI was not. The arrival of the Intel Pentium, partnered with PCI, sealed the fate for VLB.

The performance of PCI is much the same as VLB; it too is 32 bits wide and runs and 33MHz, resulting in a bandwidth of 127MB/sec. Two major advantages of PCI over VLB are the support for bus mastering and for Plug and Play. PCI 2.1 specification also allows for a doubling of both bitwidth and bus speed. However, we are not likely to this PCI implementation on our PCs for sometime, mainly due to compatibility issues.

Expansion slots in today's motherboards are almost exclusively PCI (with the exception of AGP), mirroring the availability of hardware (such as soundcards, modems and network cards), although a few still offer ISA slots (see the image above for a comparison of the slot types).

AGP

Once again we see how history repeats itself. In modern PCs, PCI provides adequate bandwidth for the majority of hardware, but can not cope with the high demands for video data that are needed in today's 3D gaming environments.

AGPTo meet this massive bandwidth demand, Intel has provided us with the Accelerated Graphics Port (AGP). AGP provides a dedicated high-speed link between the graphics subsystem and the CPU. It does not share the I/O bus and does not interface with any other systems. For this reason, it is called a port, not a bus. This is really a semantic point: a port connects only two devices, whereas strictly speaking, a bus connects more than two devices.

AGP, like PCI, is 32 bits wide, but runs at 66MHz. This gives us a bandwidth of 254MB/sec. Wait, there's more! AGP can be run in a 2x mode, 4x mode, and now even an 8x mode. In 2x mode the AGP ticks over twice per clock cycle, i.e. on both the rising and falling edges of the cycle. This doubles the bandwidth to 508MB/sec. I bet you can guess what 4x mode does.

Still, we must bear in mind that while AGP 4x has a theoretical bandwidth of 1018MB/sec, the total system bus bandwidth may well be less than this. A 64 bit system with a 133MHz FSB will be able to accommodate this bandwidth, but slower systems could not. An Athlon system with a 133MHz FSB using DDR RAM actually has a 266MHz memory bus. This equates to a bandwidth of just over 2 gigabytes a second! That should be sufficient :)

AGP slots can be distinguished from other types as they are slightly smaller than PCI slots and brown. AGP, PCI and ISA slots are all shown in the motherboard diagram shown in the motherboard section.

PCI Express (PCX)

PCI Express was initially abbreviated as PCX. However, a rival PCI-X technology caused some confusion, resulting in PCI Express now being abbreviated as PCI-E.

It is sleighted the successor of both the ageing PCI bus and AGP, with just about all graphics cards on the market now being designed for PCI-E.

PCI Express makes use of serial connection technology, rather than parallel. This is akin to the replacement of traditional parallel ATA technology with Serial ATA in the hard disk arena. Serial communication is much less prone to interference than parallel, allowing much higher clockspeeds to be used.

Furthermore, PCX makes use of a point-to-point topology, whereby each devices interacts with a central switch which has the task of coordinating communication on the bus. This is very much reminiscent of the way in which modern Ethernet star-topology networks have replaced the older bus topology.

Each connection between a PCX device and the 'switch' is in the form of one or more lanes. In turn, each lane supports full-duplex (i.e. bidirectional) communication, and can transmit one bit per signal. This is a big advantage over AGP which, while having a theoretical bandwidth of 2.1GB/sec in x8 mode, is still essentially unidirectional. With the initial clockspeeds possible through PCX, and factoring in encoding overhead, bandwidths of some 250MB/sec per lane are possible.

What's more, this PCX model is highly scalable, because 1, 2, 4, 8, 16, or 32 lanes are possible in each link. The actual number of lanes in a link depends on the PCX device attached to the system. Thus, x32 PCX has a bandwidth (each way) of approximately 8GB/sec. (That's 16GB/sec of shared bandwidth if you include both directions!) As signalling technology improves and clockspeeds increase, we can expect to see even more bandwidth from PCX.

Summary of Bus Types

The table below lists the bit widths, bus speeds and bandwidths of all the I/O bus implementations that have been discussed here. (PCX is not in the table as discussion of bandwidth is not as cut and dry as it is with its predecessors.)

Bus Bus width (bits) Standard bus speed (MHz) Bandwidth (MB/sec)
ISA (8 bit)88.37.9
ISA (16 bit)168.315.8
EISA328.331.7
VESA LB3233.3127
PCI3233.3127
AGP3266.7254
AGP (x2)32133.3509
AGP (x4)32266.71018
AGP (x8)325332100

Now move on to look at overclocking.