Introduction

At the heart of a PC is the bus. In essence, this permits the CPU to access main memory and other peripherals, including expansion cards.

ISA (1982-2002)

ISA is a bus architecture used in all PCs and their compatibles from 1982 through to the early 2000s. The ISA, or Industry-Standard Architecture, bus began life with the IBM 5150, their first PC. Back then it was simply called the PC bus and later called the AT bus when IBM launched the 5170 PC/AT with its introduction of 16-bit expansion slots.


A 386 motherboard with one 8-bit and five 16-bit ISA slots

The first IBM PC and XT ran an Intel 8088 which was 16-bit CPU internally, but communicated with the outside world at 8-bits. This meant the motherboard on the IBM PC and IBM XT were both 8-bit, so the PC bus (as ISA was called back then) was also 8-bit.

With the introduction of the IBM AT in 1984, the new Intel 80286 had a 16-bit data width, so the CPU and motherboard could communicate together at twice the performance. To ensure peripheral cards also got the benefit of this faster bus speed, the AT bus was created as a backward-compatible extension of the PC bus, and allowed for 16-bit communication.

The ISA bus is an 8-bit or 16-bit communication highway that originally ran at the same clock speed as the CPU. In the original IBM PC and XT, they used the same crystal oscillator as the CPU, so both CPU and bus ran at 4.77 MHz. With the arrival of the IBM 5170 AT, it still shared a crystal oscillator with the CPU, so the bus and CPU both ran at 6 MHz in the early models, and later at 8 MHz. This simple synchronous design avoided technical headaches with timings between peripheral cards and the main computer.

 

Micro-Channel Architecture

The Peripheral Component Interconnect (PCI

EISA

When PC-compatibles started arriving on the scene, a group of nine competing PC manufacturers called the "Gang of Nine" designed a new 32-bit bus called EISA, or Extended Industry Standard Architecture. By January 1989, they had agreed upon the new bus connector which used a "double-decker" edge connector design (see picture). To avoid infringing on IBM's trademark "AT Bus", they renamed the original bus "ISA" (since it wasn't "extended"). EISA was 100% backward-compatible with the ISA bus having the same length and width as existing PC AT connectors, but EISA was deeper, so a standard ISA card would work when put in an EISA slot, stopping when they hit a 'stopper' half-way into the deeper slot. EISA cards would go down further and connect with a second row of contacts.

The EISA bus was a further extension of the AT bus from 16 bits to 32 bits. Bus mastering support was extended to now be able to address up to 4 GB of main memory, and it also supported bus sharing between multiple CPUs. EISA slots were typically brown to distinguish them from 16-bit ISA slots which were usually black (the motherboard below is an exception, as it has brown ISA slots as well).


A 486DX motherboard with two EISA slots and six 16-bit ISA slots

Compatibility

All ISA/EISA cards are backward-compatible, meaning if you have an 8-bit ISA expansion card, it will work in an 8-bit or 16-bit ISA slot, or the rearmost part of an EISA slot. Likewise, a 16-bit ISA expansion card will work in a 16-bit ISA slot or in an EISA slot, but not typically in an 8-bit slot.

In some rare cases there is forward-compatibility - a 16-bit ISA card is designed to work in an 8-bit or 16-bit slot. Such cards sometimes have a jumper to set which tells the card it's running in an 8-bit slot. This is especially true of early 16-bit graphics cards.

 

PCI (1992-2004)

The Peripheral Component Interconnect (PCI) bus was introduced in 1992 as a standardised replacement for the aging ISA bus, which was by now extremely slow and hence was the primary cause of performance bottlenecks in PCs. It was first seen on servers, replacing MCA and EISA as the bus of choice for faster throughput.


A motherboard with three PCI slots

The first version of PCI (v1.0) was a 32-bit bus and used a 33 MHz bus clock with 5V signalling. This provided a throughput of up to 133 MB/s. Version 2.0 of the PCI standard introduced 3.3V cards and these were physically different, having the notch at the other end. Universal PCI cards have both notches, and can be used either in PCI v1.0 and PCI v2.0 slots. With the introduction of PCI v2.1, 66 MHz bus speeds were achievable, so throughput was now up to 266 MB/s for 32-bit cards or 533 MB/s for 64-bit cards (these are quite rare in the consumer market - it's highly likely all your PCI cards are 32-bit).

PCI was slower to replace the VESA Local Bus, not seeing widespread adoption until 1994, during the era of the second-generation Pentium CPUs. By 1995, VLB was gone, with motherboard manufacturers having moved fully to PCI, even for 486 computers.

 

VESA Local Bus (1992-1994)

The VLB standard was created by the Video Electronics Standards Association (VESA) in 1992 in order to provide a much faster bus for graphics cards to access main memory. This bus was a little different in that standard low-speed operations could still use the ISA bus on which it sat whilst using its own faster conduit for DMA (Direct Memory Access) transfers and memory-mapped I/O.

The VLB standard was designed as a stop-gap to alleviate performance bottlenecks on 486 systems when running graphical user interfaces and other graphically-intensive software (games). In order to achieve widespread adoption by motherboard manufacturers, the design was supposed to be simple to implement and cost-effective.

 


A 486 motherboard with eight 16-bit ISA slots, of which three also support VESA Local Bus (VLB)

Unfortunately, it had a short lifespan primarily because its design was tied closely with the 486 memory bus design. With the arrival of the much-different Pentium's memory bus design, VLB was incompatible. As a result, very few Pentium motherboards come with VLB slots.

Other problems were also common when using VLB which hampered reliability. Tight electrical guidelines weren't always adhered to by card and motherboard manufacturers, and due to the fact that the bus was shared with ISA, arbitration between instructions from VLB cards and ISA cards (or simply between multiple VLB cards) could sometimes go wrong, causing memory overwrites, and possible data coruption.

As bus speeds increased towards 50 MHz, VLB became even more unreliable. This is one reason why Intel 486DX-50 didn't achieve success in the market. Its successor, the DX2-66 worked much better by adopting the slower 33 MHz FSB (Front side bus) speed, coupled with a clock multiplier of 2 (2x33 = 66 MHz).

With the move to Pentium-based PCs, VESA Local Bus died off quickly.

AGP (1997-2004)

The AGP (Advanced Graphics Processor) interface was introduced to market by Intel in Q3 1997, when Socket 7 and the first P5 Pentiums were prevalent and Intel were moving to the Slot 1 Pentium II processors.

AGP was designed to be a fast 66 MHz communications bus for the explicit use of graphics cards only. It offered up to 15 times the bandwidth of the PCI bus - from 266 Mbps (megabits per second) up to 1.07 Gbps (gigabits per second).


An AGP slot beside the PCI slots

There are three prime reasons for this increased bandwidth:

1) An AGP card doesn't share the bus with anyone else (like PCI cards do) - it has a direct connect to the CPU.
2) AGP cards have direct access to main memory to help with complex operations such as texturing.
3) AGP supports pipelining (multiple requests at the same time).

AGP cards can use a certain amount of main memory - the total amount available is called the AGP aperture.

Judging by the list above, you would expect an AGP card to massively outperform an equivalent PCI card running at the same internal clock frequency. In reality, AGP performance only really comes into its own at higher resolutions and in multi-texturing situations.

The first Intel chipset to support AGP was the 440LX Slot 1 chipset. Intel never made a Socket 7 chipset that supported AGP. Other chipsets that first supported AGP were VIA's Apollo VP3, SiS' 5591/5592, and ALI's Aladdin V.

The earliest graphics cards to support AGP were the Rendition Verite V2200, 3dfx Voodoo Banshee, nVidia RIVA 128, the ATi Rage series, Matrox Millennium II and S3 ViRGE GX/2.

There have been a number of versions of the AGP slot, as described below:

  • AGP v1.0 - 3.3V signalling, and supports 1x and 2x speeds. Maximum bandwidth is 266 MB/s or 533 MB/s.
  • AGP v2.0 - 1.5V signalling, and supports 1x, 2x and 4x speeds. Max bandwidth at 4x is 1.06 GB/s.
  • AGP v3.0 - 0.8V signalling, and supports 1x, 2x, 4x and 8x speeds. Max bandwidth at 8x is 2.13 GB/s.

WARNING: Do not confuse the AGP version (1.0, 2.0 or 3.0) with the speed (1x, 2x, 4x and 8x). It's easily done if you're in a hurry and could result in permanent damage to your graphics card and/or motherboard!

To ensure incorrect voltage cards cannot be used in a slot that it's not designed for, a few 'key' slots were made on both card and slot, though not every card manufacturer adhered to this. The diagram below shows a card with a 1.5V key (AGP v2.0 standard) and a 3.3V key (AGP v1.0 standard), as well as the motherboard slots they work in.

The most important thing to look for if you aren't sure if your AGP card is compatible with your motherboard, is to look up the card's operating voltage in its manual. Some cards support both 1.5V and 3.3V (in such cases only the 1.5V portion is used if supported by the motherboard). Bottom line: check both your motherboard's and your card's user manual before inserting the card and powering up.

The last graphics cards to run on AGP 1x and 2x were the ATI Radeon 8500, released in 2001, and the nVidia GeForce 3 Ti200 or Ti500. There are GeForce 4 Ti and Radeon 9250 cards that still used AGP 2x but these are very rare.

AGP was replaced by PCI-e (PCI Express) from around 2004, although motherboards with AGP slots were still available up to 2008.