Industry Standard Architecture

From Wikipedia, the free encyclopedia
  (Redirected from ISA bus)
Jump to: navigation, search
For other uses of "ISA", see Isa (disambiguation).
ISA
Industry Standard Architecture
}}
One 8-bit and five 16-bit ISA slots on a motherboard
Year created 1981
Created by IBM
Superseded by PCI (1993)
Width in bits 8 or 16
Number of devices Up to 6 devices
Style Parallel
Hotplugging interface no
External interface no

Industry Standard Architecture (ISA) is a retronym term for the 16-bit internal bus of IBM PC/AT and similar computers based on the Intel 80286 and its immediate successors during the 1980s. The bus was (largely) backward compatible with the 8-bit bus of the 8088-based IBM PC, including the IBM PC/XT as well as IBM PC compatibles.

Originally referred to as the PC/AT-bus it was also termed I/O Channel by IBM. The ISA concept was coined by competing PC-clone manufacturers in the late 1980s or early 1990s as a reaction to IBM attempts to replace the AT-bus with its new and incompatible Micro Channel architecture.

The 16-bit ISA bus was used also with 32-bit processors for several years. An attempt to extend it to 32 bits, called Extended Industry Standard Architecture (EISA), was not very successful, however. Later buses such as VESA Local Bus and PCI were used instead, often along with ISA slots on the same mainboard. A derivative of the AT bus structure is still used in the PCMCIA standard, Compact Flash, the PC/104 bus, and internally within Super I/O chips.

History[edit]

The ISA bus was developed by a team led by Mark Dean at IBM as part of the IBM PC project in 1981. It originated as an 8-bit system. The newer 16-bit standard, the IBM AT bus, was introduced in 1984. In 1988, the Gang of Nine IBM PC compatible manufacturers put forth the 32-bit EISA standard and in the process retroactively renamed the AT bus to "ISA" to avoid infringing IBM's trademark on its PC/AT computer. IBM designed the 8 bit version as a buffered interface to the external bus of the Intel 8088 (16/8 bit) CPU used in the original IBM PC and PC/XT, and the 16-bit version as an upgrade for the external bus of the Intel 80286 CPU used in the IBM AT. Therefore, the ISA bus was synchronous with the CPU clock, until sophisticated buffering methods were developed and implemented by chipsets to interface ISA to much faster CPUs.

Designed to connect peripheral cards to the motherboard, ISA allows for bus mastering although only the first 16 MB of main memory are available for direct access. The 8-bit bus ran at 4.77 MHz (the clock speed of the IBM PC and IBM PC/XT's 8088 CPU), while the 16-bit bus operated at 6 or 8 MHz (because the 80286 CPUs in IBM PC/AT computers ran at 6 MHz in early models and 8 MHz in later models.) IBM RT/PC also used the 16-bit bus. It was also available on some non-IBM compatible machines such as Motorola 68k-based Apollo (68020) and Amiga 3000 (68030) workstations, the short-lived AT&T Hobbit and later PowerPC based BeBox.

From top to bottom: XT 8-bit, ISA 16-bit, EISA
ISA 8-bit card
ISA 16-bit, Madge 4/16 Mbit/s TokenRing NIC.
ISA 16-bit, Ethernet 10Base-5/2 NIC.
ISA US Robotics 56k Modem.

In 1987, IBM moved to replace the AT bus with their proprietary Micro Channel Architecture (MCA) in an effort to regain control of the PC architecture and the PC market. (Note the relationship between the IBM term "I/O Channel" for the AT-bus and the name "Micro Channel" for IBM's intended replacement.) MCA had many features that would later appear in PCI, the successor of ISA, but MCA was a closed standard, unlike ISA (PC-bus and AT-bus) for which IBM had released full specifications and even circuit schematics. The system was far more advanced than the AT bus, and computer manufacturers responded with the Extended Industry Standard Architecture (EISA) and later, the VESA Local Bus (VLB). In fact, VLB used some electronic parts originally intended for MCA because component manufacturers already were equipped to manufacture them. Both EISA and VLB were backwards-compatible expansions of the AT (ISA) bus.

Users of ISA-based machines had to know special information about the hardware they were adding to the system. While a handful of devices were essentially "plug-n-play", this was rare. Users frequently had to configure several parameters when adding a new device, such as the IRQ line, I/O address, or DMA channel. MCA had done away with this complication, and PCI actually incorporated many of the ideas first explored with MCA (though it was more directly descended from EISA).

This trouble with configuration eventually led to the creation of ISA PnP, a plug-n-play system that used a combination of modifications to hardware, the system BIOS, and operating system software to automatically manage resource allocations. In reality, ISA PnP can be troublesome, and did not become well-supported until the architecture was in its final days.

PCI slots were the first physically incompatible expansion ports to directly squeeze ISA off the motherboard. At first, motherboards were largely ISA, including a few PCI slots. By the mid-1990s, the two slot types were roughly balanced, and ISA slots soon were in the minority of consumer systems. Microsoft's PC 99 specification recommended that ISA slots be removed entirely, though the system architecture still required ISA to be present in some vestigial way internally to handle the floppy drive, serial ports, etc., which was why the software compatible LPC bus was created. ISA slots remained for a few more years, and towards the turn of the century it was common to see systems with an Accelerated Graphics Port (AGP) sitting near the central processing unit, an array of PCI slots, and one or two ISA slots near the end. In late 2008, even floppy disk drives and serial ports were disappearing, and the extinction of vestigial ISA (by then the LPC bus) from chipsets was on the horizon.

It is also notable that PCI slots are "rotated" compared to their ISA counterparts—PCI cards were essentially inserted "upside-down," allowing ISA and PCI connectors to squeeze together on the motherboard. Only one of the two connectors can be used in each slot at a time, but this allowed for greater flexibility.

The AT Attachment (ATA) hard disk interface is directly descended from ISA (the AT bus). ATA has its origins in hardcards that integrated a hard disk controller (HDC) — usually with an ST-506/ST-412 interface — and a hard disk drive on the same ISA adapter. This was at best awkward from a mechanical structural standpoint, as ISA slots were not designed to support such heavy devices as hard disks (and the 3.5" form-factor hard disks of the time were about twice as tall and heavy as modern drives), so the next generation of Integrated Drive Electronics drives moved both the drive and controller to a drive bay and used a ribbon cable and a very simple interface board to connect it to an ISA slot. ATA, at its essence, is basically a standardization of this arrangement, combined with a uniform command structure for software to interface with the controller on a drive. ATA has since been separated from the ISA bus, and connected directly to the local bus (usually by integration into the chipset), to be clocked much much faster than ISA could support and with much higher throughput. (Notably when ISA was introduced as the AT bus, there was no distinction between a local and extension bus, and there were no chipsets.) Still, ATA retains details which reveal its relationship to ISA. The 16-bit transfer size is the most obvious example; the signal timing, particularly in the PIO modes, is also highly correlated, and the interrupt and DMA mechanisms are clearly from ISA. (The article about ATA has more detail about this history.)

ISA bus architecture[edit]

XT Bus pins.png
ISA Bus pins.png

The PC/XT-bus is an eight-bit ISA bus used by Intel 8086 and Intel 8088 systems in the IBM PC and IBM PC XT in the 1980s. Among its 62 pins were demultiplexed and electrically buffered versions of the eight data and 20 address lines of the 8088 processor, along with power lines, clocks, read/write strobes, interrupt lines, etc. Power lines included -5V and +/-12 V in order to directly support pMOS and enhancement mode nMOS circuits such as dynamic RAMs among other things. The XT bus architecture uses a single Intel 8259 PIC, giving eight vectorized and prioritized interrupt lines. It has four DMA channels originally provided by the Intel 8237, three of the DMA channels are brought out to the XT bus expansion slots; of these, two are normally already allocated to machine functions (diskette drive and hard disk controller):

DMA channel Expansion Standard function
0 No Dynamic random-access memory refresh
1 Yes Add-on cards
2 Yes Floppy disk controller
3 Yes Hard disk controller

The PC/AT-bus, a 16-bit (or 80286-) version of the PC/XT bus, was introduced with the IBM PC/AT. This bus was officially termed I/O Channel by IBM. It extends the XT-bus by adding a second shorter edge connector in-line with the eight-bit XT-bus connector, which is unchanged, retaining compatibility with most 8-bit cards. The second connector adds four additional address lines for a total of 24, and eight additional data lines for a total of 16. It also adds new interrupt lines connected to a second 8259 PIC (connected to one of the lines of the first) and four 16-bit DMA channels, as well as control lines to select 8 or 16 bit transfers.

The 16-bit AT bus slot originally used two standard edge connector sockets in early IBM PC/AT machines. However, with the popularity of the AT-architecture and the 16-bit ISA bus, manufacturers introduced specialized 98-pin connectors that integrated the two sockets into one unit. These can be found in almost every AT-class PC manufactured after the mid-1980s. The ISA slot connector is typically black (distinguishing it from the brown EISA connectors and white PCI connectors).

Number of devices[edit]

Motherboard devices have dedicated IRQs (not present in the slots). 16-bit devices can use either PC-bus or PC/AT-bus IRQs. It is therefore possible to connect up to 6 devices that use one 8-bit IRQ each, or up to 5 devices that use one 16-bit IRQ each. At the same time, up to four devices may use one 8-bit DMA channel each, while up to three devices can use one 16-bit DMA channel each.

Varying bus speeds[edit]

Originally, the bus clock was synchronous with the CPU clock, resulting in varying bus clock frequencies among the many different IBM "clones" on the market (sometimes as high as 16 or 20 MHz), leading to software or electrical timing problems for certain ISA cards at bus speeds they were not designed for. Later motherboards or integrated chipsets used a separate clock generator, or a clock divider which either fixed the ISA bus frequency at 4, 6 or 8 MHz or allowed the user to adjust the frequency via the BIOS setup. When used at a higher bus frequency, some ISA cards (certain Hercules-compatible video cards, for instance), could show significant performance improvements.

8/16-bit incompatibilities[edit]

Memory address decoding for the selection of 8 or 16-bit transfer mode was limited to 128 kB sections - A0000..BFFFF, C0000..DFFFF, E0000..FFFFF leading to problems when mixing 8 and 16-bit cards, as they could not co-exist in the same 128 kB area.

Current use[edit]

ISA is still used today for specialized industrial purposes. In 2008 IEI Technologies released a modern motherboard for Intel Core 2 Duo processors which, in addition to other special I/O features, is equipped with two ISA slots. It is marketed to industrial and military users who have invested in expensive specialized ISA bus adaptors, which are not available in PCI bus versions.[1]

Similarly, ADEK Industrial Computers is releasing a motherboard in early 2013 for Intel Core i3/i5/i7 processors, which contains one (non-DMA) ISA slot.[2]

The PC/104 bus, used in industrial and embedded applications, is a derivative of the ISA bus, utilizing the same signal lines with different connectors. The LPC bus has replaced the ISA bus as the connection to the legacy I/O devices on recent motherboards; while physically quite different, LPC looks just like ISA to software, so that the peculiarities of ISA such as the 16 MiB DMA limit (which corresponds to the full address space of the Intel 80286 CPU used in the original IBM AT) are likely to stick around for a while.

ATA[edit]

As explained in the History section, ISA was the basis for development of the ATA interface, used for ATA (a.k.a. IDE) and more recently Serial ATA (SATA) hard disks. Physically, ATA is essentially a simple subset of ISA, with 16 data bits, support for exactly one IRQ and one DMA channel, and 3 address bits plus two IDE address select ("chip select") lines, plus a few unique signal lines specific to ATA/IDE hard disks (such as the Cable Select/Spindle Sync. line.) ATA goes beyond and far outside the scope of ISA by also specifying a set of physical device registers to be implemented on every ATA (IDE) drive and accessed using the address bits and address select signals in the ATA physical interface channel; ATA also specifies a full set of protocols and device commands for controlling fixed disk drives using these registers, through which all operations of ATA hard disks are performed. A further deviation between ISA and ATA is that while the ISA bus remained locked into a single standard clock rate (for backward compatibility), the ATA interface offered many different speed modes, could select among them to match the maximum speed supported by the attached drives, and kept adding faster speeds with later versions of the ATA standard (up to 133 MB/s for ATA-6, the latest.) In most forms, ATA ran much faster than ISA.

XT-IDE[edit]

Before the 16-bit ATA/IDE interface, there was an 8-bit XT-IDE (also known as XTA) interface for hard disks. It was not nearly as popular as ATA has become, and XT-IDE hardware is now fairly hard to find. Some XT-IDE adapters were available as 8-bit ISA cards, and XTA sockets were also present on the motherboards of Amstrad's later XT clones. The XTA pinout was very similar to ATA, but only eight data lines and two address lines were used, and the physical device registers had completely different meanings. A few hard drives (such as the Seagate ST351A/X) could support either type of interface, selected with a jumper.

PCMCIA[edit]

The PCMCIA specification can be seen as a superset of ATA. The standard for PCMCIA hard disk interfaces, which included PCMCIA flash drives, allows for the mutual configuration of the port and the drive in an ATA mode. As a de facto extension, most PCMCIA flash drives additionally allow for a simple ATA mode that is enabled by pulling a single pin low, so that PCMCIA hardware and firmware are unnecessary to use them as an ATA drive connected to an ATA port. PCMCIA flash drive to ATA adapters are thus simple and inexpensive, but are not guaranteed to work with any and every standard PCMCIA flash drive. Further, such adapters cannot be used as generic PCMCIA ports, as the PCMCIA interface is much more complex than ATA.

Emulation by embedded chips[edit]

Although most computers do not have physical ISA buses all IBM compatible computers — x86, and x86-64 (most non-mainframe, non-embedded) — have ISA buses allocated in virtual address space. Embedded controller chips (southbridge) and CPUs themselves provide services such as temperature monitoring and voltage readings through these buses as ISA devices.

Standardization[edit]

IEEE started a standardization of the ISA bus in 1985, called the P996 specification. However, despite there even having been books published on the P996 specification, it never officially progressed past draft status.

See also[edit]

References[edit]

  1. ^ IEI Technology Corp: IMBA-9654ISA User Manual, Rev. 1.00, May 2008
  2. ^ ADEK Industrial Computers: MS-98A9 Product Specifications

Further reading[edit]

External links[edit]

This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.