Intro to Computer Systems

Chapter 6a: System Expansion

Data Buses

PCI (Peripheral Component Interconnect)

The PCI expansion bus, developed in 1993, was the first "modern" expansion slot technology to gain wide acceptance. Past expansion card systems were either fiddly, requiring expert computer knowledge to configure, or were expensive and unpopular.

The ease of PCI card expansion is where the term "Plug and Play" was coined.

PCI was a general-purpose expansion slot which was suited to just about any task of the time. In fact it was still more than adequate for most (individual) tasks when its replacement, PCI Express, came about. The issue was with its bus topology - if you had two devices on the PCI bus that had heavy bandwidth requirements, this caused a bottleneck that stifled system performance. For some specialised tasks, such as graphics rendering and output, the PCI expansion bus was too slow, prompting system designers to develop enhanced standards.

There are a few variants of the PCI standard, based on the speed of the interface clock, and whether it was 32- or 64-bit. The common PCI buses found in desktop computers are 32 bits wide and run at 33 MHz, for a total theoretical bandwidth of 133 MB/sec.

AGP (Accelerated Graphics Port)

High-end graphics systems often had a lot of data to transmit over the PCI bus; a lot of its data had to go either to the CPU or main memory. Before long, this brought the problem of bus choking: the graphics card was using up so much of the bus's available bandwidth that the performance of everything else suffered.

The AGP slot, compared to a PCI bus.
The AGP slot, compared to a PCI bus.

The solution to this was a special slot for the graphics card, separate from the PCI bus, that allowed direct connection to the CPU and main memory. This slot was called AGP, the Accelerated Graphics Port, and not only freed the PCI bus from the burden of transferring graphics data, it was also much faster.

AGP ran a 66 MHz (compared to the common PCI bus clock of 33 MHz), meaning that even in its original incarnation, it was rated at 266 MB/sec - twice as fast as the entire PCI bus interface. Clock pumping techniques, similar to that used by DDR memory, doubled (533 MB/sec), quadrupled (1.06 GB/sec), and in its final revision, octupled (2.13 GB/sec) the effective speed of the bus.

Don't forget that there is more to a bus' effective speed than its theoretical maximum. The architecture, data protocol, and signalling requirements of the AGP slot weren't really meant to be pushed that far - these sorts of structural inefficiencies meant that AGP 8x wasn't much of a leap over AGP 4x, for most tasks.

The design of the bus was showing its age, which further spurred on the development of a completely different bus design to replace it.

PCI Express

PCI Express (PCIe) is the contemporary expansion card system that has replaced both PCI and AGP. Unlike PCI, PCI Express is a "point to point" system which means that there is no bus to get choked -- each device has a guaranteed amount of bandwidth available to it.

PCI Express is often confused with a different but similarly-named expansion slot standard called PCI-X. PCI-X is an extension of the normal PCI specification.

PCI Express is a serial interface; this means that it's more flexible than the older, parallel internal expansion interfaces, in terms of how it can be implemented. The fundamentals of the PCI Express interface have been used in other expansion form factors, such ExpressCard (expansion cards for notebook computers), and Thunderbolt (a new-generation external expansion standard).

The PCI Express lane scheme
The PCI Express lane scheme

To cater for the varying bandwidth requirements of different expansion cards, PCI-Express introduces the concept of "lanes". Each "lane" can be considered a unit of bandwidth. High bandwidth devices such as graphics cards can be put in a slot with a large (16) number of lanes, and less demanding expansion cards in a slot with only one or two.

The bandwidth of a lane depends on the version of the interface being used;

PCI Express Version Bandwidth per Lane
250 MB/sec
500 MB/sec
1 GB/sec
2 GB/sec

For the most part, the PCI Express versions are backwards compatible: expansion slots on a motherboard will accept cards that only support older versions, however cards designed to a newer version may or may not work on older-version slots.