Industry Standard Architecture
History
History
-------

[thumb\|upright\=1\.25\|, , [EISA](/wiki/Extended_ISA "Extended ISA") (top to bottom)](/wiki/File:Bussysteme_Extended_ISA_32Bit%2C_ISA_16Bit%2C_XT_8Bit.JPG "Bussysteme Extended ISA 32Bit, ISA 16Bit, XT 8Bit.JPG")
[thumb\|upright\=1\.25\|: Adlib FM Sound card](/wiki/File:Adlib.jpg "Adlib.jpg")
[thumb\|upright\=1\.25\|: Madge 4/16 Mbps [Token Ring](/wiki/Token_Ring "Token Ring") [NIC](/wiki/Network_interface_controller "Network interface controller")](/wiki/File:ISA_TokenRing_NIC.jpg "ISA TokenRing NIC.jpg")
[thumb\|upright\=1\.25\|: [Ethernet](/wiki/Ethernet "Ethernet") 10BASE\-5/2 NIC](/wiki/File:EISA_Ethernet_NIC.JPG "EISA Ethernet NIC.JPG")
[thumb\|upright\=1\.25\|: [US Robotics](/wiki/US_Robotics "US Robotics") 56k Modem](/wiki/File:Us_robotics_isa_modem-2011-04-11.jpg "Us robotics isa modem-2011-04-11.jpg")

The original PC bus was developed by a team led by [Mark Dean](/wiki/Mark_Dean_%28computer_scientist%29 "Mark Dean (computer scientist)") at [IBM](/wiki/IBM "IBM") as part of the IBM PC project in 1981\. It was an 8\-bit bus based on the I/O bus of the [IBM System/23 Datamaster](/wiki/IBM_System/23_Datamaster "IBM System/23 Datamaster") system \- it used the same physical connector, and a similar signal protocol and pinout. A 16\-bit version, the [IBM AT](/wiki/IBM_AT "IBM AT") bus, was introduced with the release of the IBM PC/AT in 1984\. The AT bus was a mostly backward compatible extension of the PC bus—the AT bus connector was a superset of the PC bus connector. In 1988, the 32\-bit EISA standard was proposed by the "Gang of Nine" group of PC\-compatible manufacturers that included Compaq. [Compaq](/wiki/Compaq "Compaq") created the term "Industry Standard Architecture" (ISA) to replace "[PC compatible](/wiki/PC_compatible "PC compatible")". In the process, they [retroactively renamed](/wiki/Retronym "Retronym") the AT bus to "ISA" to avoid infringing IBM's trademark on its PC and PC/AT systems (and to avoid giving their major competitor, IBM, free advertisement). 

IBM designed the 8\-bit version as a buffered interface to the [motherboard](/wiki/Motherboard "Motherboard") buses of the [Intel 8088](/wiki/Intel_8088 "Intel 8088") (16/8 bit) CPU in the IBM PC and PC/XT, augmented with prioritized interrupts and DMA channels. The 16\-bit version was an upgrade for the motherboard buses of the Intel [80286](/wiki/80286 "80286") CPU (and expanded interrupt and DMA facilities) used in the IBM AT, with improved support for bus mastering. The ISA bus was therefore synchronous with the CPU clock, until sophisticated buffering methods were implemented by [chipsets](/wiki/Chipset "Chipset") to interface ISA to much faster CPUs.

ISA was designed to connect peripheral cards to the motherboard and allows for [bus mastering](/wiki/Bus_mastering "Bus mastering"). Only the first 16 [MB](/wiki/Megabyte "Megabyte") of main memory is addressable. The original 8\-bit bus ran from the 4\.77 MHz clock of the 8088 CPU in the IBM PC and PC/XT. The original 16\-bit bus ran from the CPU clock of the 80286 in IBM PC/AT computers, which was 6 MHz in the first models and 8 MHz in later models. The [IBM RT PC](/wiki/IBM_RT_PC "IBM RT PC") also used the 16\-bit bus. ISA was also used in some non\-IBM compatible machines such as Motorola [68k](/wiki/68k "68k")\-based [Apollo](/wiki/Apollo_Computer "Apollo Computer") (68020\) and [Amiga 3000](/wiki/Amiga_3000 "Amiga 3000") (68030\) workstations, the short\-lived [AT\&T Hobbit](/wiki/AT%26T_Hobbit "AT&T Hobbit") and the later [PowerPC](/wiki/PowerPC "PowerPC")\-based [BeBox](/wiki/BeBox "BeBox").

Companies like [Dell](/wiki/Dell "Dell") improved the AT bus's performance but in 1987, IBM replaced the AT bus with its proprietary [Micro Channel Architecture](/wiki/Micro_Channel_Architecture "Micro Channel Architecture") (MCA). MCA overcame many of the limitations then apparent in ISA but was also an effort by IBM to regain control of the PC architecture and the PC market. MCA was far more advanced than ISA and had many features that would later appear in PCI. However, MCA was also a closed standard whereas IBM had released full specifications and circuit schematics for ISA. Computer manufacturers responded to MCA by developing the [Extended Industry Standard Architecture](/wiki/Extended_Industry_Standard_Architecture "Extended Industry Standard Architecture") (EISA) and the later [VESA Local Bus](/wiki/VESA_Local_Bus "VESA Local Bus") (VLB). VLB used some electronic parts originally intended for MCA because component manufacturers already were equipped to manufacture them. Both EISA and VLB were backward 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](/wiki/Plug-n-play "Plug-n-play")", this was rare. Users frequently had to configure parameters when adding a new device, such as the [IRQ](/wiki/Interrupt_request_%28PC_architecture%29 "Interrupt request (PC architecture)") line, [I/O address](/wiki/I/O_address "I/O address"), or [DMA](/wiki/Direct_memory_access "Direct memory access") channel. MCA had done away with this complication and [PCI](/wiki/Peripheral_Component_Interconnect "Peripheral Component Interconnect") 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](/wiki/Legacy_Plug_and_Play "Legacy Plug and Play")**, a plug\-n\-play system that used a combination of modifications to hardware, the system [BIOS](/wiki/BIOS "BIOS"), and [operating system](/wiki/Operating_system "Operating system") software to automatically manage resource allocations. In reality, ISA PnP could be troublesome and did not become well\-supported until the architecture was in its final days.

A PnP ISA, EISA or VLB device may have a 5\-byte **EISA ID** (3\-byte manufacturer ID \+ 2\-byte hex number) to identify the device. For example, **CTL0044** corresponds to **Creative Sound Blaster 16 / 32 PnP**.

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](/wiki/Microsoft "Microsoft")'s [PC\-99](/wiki/PC-99 "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](/wiki/Floppy_drive "Floppy drive"), [serial ports](/wiki/Serial_port "Serial port"), etc., which was why the software compatible [LPC bus](/wiki/LPC_bus "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](/wiki/Accelerated_Graphics_Port "Accelerated Graphics Port") (AGP) sitting near the [central processing unit](/wiki/Central_processing_unit "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.

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](/wiki/AT_Attachment "AT Attachment") (ATA) hard disk interface is directly descended from the 16\-bit ISA of the PC/AT. ATA has its origins in the IBM Personal Computer Fixed Disk and Diskette Adapter, the standard dual\-function floppy disk controller and hard disk controller card for the IBM PC AT; the fixed disk controller on this card implemented the register set and the basic command set which became the basis of the ATA interface (and which differed greatly from the interface of IBM's fixed disk controller card for the PC XT). Direct precursors to ATA were third\-party ISA [hardcards](/wiki/Hardcards "Hardcards") that integrated a [hard disk drive](/wiki/Hard_disk_drive "Hard disk drive") (HDD) and a [hard disk controller](/wiki/Hard_disk_controller "Hard disk controller") (HDC) onto one card. This was at best awkward and at worst damaging to the motherboard, as ISA slots were not designed to support such heavy devices as HDDs. The next generation of [Integrated Drive Electronics](/wiki/Integrated_Drive_Electronics "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 is basically a standardization of this arrangement plus a uniform command structure for software to interface with the HDC within the drive. ATA has since been separated from the ISA bus and connected directly to the local bus, usually by integration into the chipset, for much higher clock rates and data throughput than ISA could support. ATA has clear characteristics of 16\-bit ISA, such as a 16\-bit transfer size, signal timing in the PIO modes and the interrupt and DMA mechanisms.


How can we ensure that the command structure for software is consistent across different devices?