The ISA Bus

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, the first ever "PC". Back then it was called the PC (Personal Computer) bus and later called the AT (Advanced Technology) bus when IBM launched the 5170 PC/AT.

When PC-compatibles started arriving on the scene, a group of nine competing PC manufacturers called the "Gang of Nine" designed a new bus called EISA, or Extended Industry Standard Architecture. 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, so a standard ISA card would work when put in an EISA slot.

The ISA bus is an 8-bit or 16-bit communication highway that runs 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 ran at 4.77 MHz. With the arrival of the 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 avoids technical headaches with timings between peripheral cards and the main computer.

8-bit / 16-bit / 32-bit

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 EISA bus that followed was 100% backward-compatible, and 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 always black.

A motherboard with one 8-bit ISA slot, four 16-bit ISA slots, and 2 EISA slots

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.

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.

What Was it Used For?

ISA was designed to connect peripheral cards to the motherboard, and to allow the cards to initiate direct memory access (DMA) transactions - this was called bus mastering. Basically it meant the peripheral cards could read and write to the PCs main memory. This gave third party peripheral manufacturers a lot of scope to create expansion cards for the PC, ranging from serial and parallel communication cards to graphics, sound and network cards.

With EISA's wider bus, it was designed for high-bandwidth operations such as disk access, networking, or fast video.

Problems and Limitations

ISA does have some limitations. It was never supposed to still be in use almost 20 years beyond its invention.

Originally it was designed to run at 4.77 MHz (PC bus) or 6 or 8 MHz (AT bus). As PC manufacturers started ramping up CPU clock speeds, this pushed the bus faster. Cards that were intended to be driven at 4.77 or 6 MHz would fail to work or work This was fine initially, but as CPU clock speeds rose, the bus was unable to keep up, thus creating a performance bottleneck. In response to this unreliability, PC manufacturers eventually de-coupled the bus clock from the CPU clock with two separate crystal oscillators. This meant the bus could continue to run at a leisurely 8.33 MHz whilst the CPU could run at 25 MHz, for example.

Furthermore it can only access the first 16 MB of memory. This was increased to 4 GB with the introduction of EISA.

For an in-depth guide to the ISA bus, including memory timings, edge connector pinouts etc, read this article.