Bus Types


The purpose of an expansion bus is to provide a way for users to add hardware devices (slot-in cards) to a PC using standardised connectors. The advances of technology, especially advancements in developing extremely fast micro- processors, has given birth to more computer bus options than ever before. The blame for not attaining high throughput levels no longer lies with the processor, but rather with Input/Output devices such as hard disks, LAN cards and video cards. It is for this reason that manufacturers are devising better and more efficient ways of interfacing the expansion slots to the processor itself.
The expansion bus (where expansion cards go) is an extension of the Central Processor, so when adding cards to it, you are extending the capabilities of the CPU itself. The relevance of this regard to the BIOS is that older cards are less able to cope with modern buses running at higher speeds than the original design of 8 or so MHz. Also, when the bus is accessed, the whole computer slows down to the bus speed, so it's often worth altering the speed of the bus or the wait states between it and the CPU to speed things up. The PC actually has four buses; the processor bus connects the CPU to its support chips, the memory bus connects it to its memory, the address bus is part of both of them, and the I/O (or expansion) bus is what concerns us here.

Background

Before the days of the original IBM PC, there were no standards. The first agreed upon bus specification which was drawn up was called the S-100. Steven Jobs and Steven Wosniak, the originators of Apple computers, are generally credited as been the first to implement expansion slots to allow the possibility of adding slot-in cards. This caught the attention of IBM and produced the first IBM PC with expansion slots using the 8088 16 bit CPU. The 8088 had an external bus of 8 bits running at 4.77 MHz. The expansion slots were connected directly to the CPU and could therefore run at the full CPU clock speed of 4.77 MHz.
IBM then produced the AT computer which had an external 16 bit bus with a bus speed of 6 MHz and later 8 MHz. The expansion slots were made to cope with the 16 bit bus. In order to maintain compatibility with existing 8 bit cards, the 16 bit slot was made to be backwards compatible. IBM clone manufacturers then started pushing the CPU speeds up and kept the expansion slots at the same speed as the CPU. At a bus speed of 12 MHz, it was found that expansion cards no longer functioned correctly. Consensus was reached within the industry to keep expansion slots at a speed of 8 MHz irrespective of the CPU speed - the Industry Standard Architecture (ISA) was born. It was at this time when expansion slots were no longer directly connected to the CPU.
The industry was at peace until Intel produced the 80386 processor with a 32 bit bus. IBM also announced its Micro Channel Architecture for 32 bit bus data transfer running at 10 MHz. In response to clone manufacturers, the Extended Industry Standard Architecture (EISA) was born in 1988 with a bus speed of 8.33 MHz. EISA and MCA was considered too expensive for the average user so ISA still remained as an alternative.
The world is now sitting with 32 bit architecture with video graphics cards and hard disk controller cards plugged into ISA expansion slots trying to transfer many megabytes of data per second down a 16 bit bus running at 8 MHz. This can be compared to a four lane high speed highway suddenly coming down to two lanes and still trying to cater for the same high volume of traffic.

ISA

Industry Standard Architecture. The 8-bit version cane on the original PC and the AT, but the latter uses an extension to make it 16-bit. It has a maximum data transfer rate of about 8 megabits per second on an AT, which is actually well above the capability of disk drives, or most network and video cards. The average data throughput is around a quarter of that. Its design makes it difficult to mix 8- and 16-bit RAM or ROM within the same 128K block of upper memory; an 8-bit VGA card could force all other cards in the same (C000-DFFF) range to use 8 bits as well, which was a common source of inexplicable crashes where 16-bit network card were involved.
System Attributes PC or XT AT Classic Bus
Processor 8088/8086 286 and higher
CPU Modes Real Real/Protected
Expansion Slot 8 bit 16 bit
Slot Type ISA ISA
Interrupts 8 + NMI 16 + NMI
DMA Channels 4 8
Maximum RAM 1 MB 16 MB
Floppy Controller 360K/720K 1.2M/1.44M

EISA

Extended Industry Standard Architecture. An evolution of ISA and (theoretically) backward compatible with it, including the speed (8 MHz), so the increased data throughput is mainly due to the bus doubling in size-but you must use EISA expansion cards. It has its own DMA arrangements, which can use the complete address space. On advantage of EISA (and Micro Channel) is the ease of setting up expansion cards-plus them in and run the configuration software which will automatically detect their settings.
System Attributes EISA ISA
Memory Capacity 4 GB 16 MB
Data bus width 32 bit 16 bit
DMA Range 4 GB 16 MB
DMA data path 8/16/32 8/16
Maximum DMA Transfer 33 MB/sec 2 MB/sec
Bus Arbitration 6 Bus Masters Single
Bus Master data path 16/32 16
Synchronous clock rate 8.33 MHz 8.33 MHz

MCA

Micro Channel Architecture. A proprietary standard established by IBM in 1987 to take over from ISA, and therefore incompatible with anything else. It comes in two versions, 16- and 32-bit and, in practical terms, is capable of transferring around 20 MBps.
It was found that poorly designed ISA bus machines did have fairly high radio frequency emissions. Good ISA bus designs complied with the basic FCC Class A regulations. MCA, with its very strict FCC Class B certification, has a distinct advantage over ISA and EISA as CPU clock speeds go higher and higher. MCA is very well shielded which makes it immune to electrical noise.
MCA is designed to eliminate the hassle associated with setting jumpers and DIP switches on adapter boards. The adapter card booklet describing all possible settings gets invariably lost, making the card unusable if the card's environment changes. IBM's answer is called Programmable Option Selection (POS) which is built into MCA computers. The POS uses a special file called an Adapter Description File (ADF) which is supplied with each adapter board. This ADF contains all the possible setting and configurations for the specific card. The POS will also take care of any conflicting settings.
MCA also corrects any potential timing problems which may exist between adapter boards or even memory. Each expansion slot is supposed to carry the same signals as any other slot but this might not always happen. Effects on the bus, such as capacitance and signal propagation delays, can cause timing windows to appear differently in different slots. These effects cause unexplained problems to occur mostly in a random fashion. MCA has the ability to wait for a response (automatic wait states) until the adapter is ready to continue. This can slow the process down but is considered more important than the "ghost" symptoms found on ISA.

VL Bus

The Video Electronics Standards Association (VESA) formed a committee in June 1992 to study existing and certainly emerging, local bus video systems in terms of connector layout, signal and data structures. In September 1992 they finalised the VESA Local Bus connector which connects devices directly to the local/host bus. There's also an 'Opti local bus connector'. This connector extends the EISA bus where the VLB connector extends the ISA bus. The local bus is one more directly suited to the CPU; it's next door (hence local), has the same bandwidth and runs at the same speed, so the bottleneck is less (ISA was local in the early days). Data is therefore moved along the bus at processor speeds. VL-BUS, a 32-bit bus which allows bus mastering, and uses two cycles to transfers a 32-bit word, peaking at 66 Mb/sec. It also supports burst mode, where a single address cycle precedes four data cycles, meaning that 4 32-bit words can move in only 5 cycles, as opposed to 8, giving 105 Mb/sec at 33 MHz. The speed is mainly obtained by allowing VL-Bus adapter cards first choice at intercepting CPU cycles. It's not designed to cope with more than a certain number of cards at particular speeds; e.g. 3 at 33, 2 at 40 and only 1 at 50 MHz, and even that often needs a wait state inserted. VL-Bus 2 is 64-bit, yielding 320 Mb/sec at 50 MHz. There are two types of slot; Master and Slave. Master boards (e.g. SCSI controllers) have their own CPUs which can do their own things; slaves (i.e. video cards) don't. A slave board will work on a master slot, but not vice versa.

PCI

PCI, which is a mezzanine bus, divorced from the CPU, giving it some independence and the ability to cope with more devices, so it's more suited to cross-platform work. It is time multiplexed, meaning that address and data lines share connections. It has its own burst mode that allows 1 address cycle to be followed by as many data cycles as system overheads allow. At nearly 1 word per cycle, the potential is 264 Mb/sec. It can operate up to 33 MHz, or 66 MHz with PCI 2.1 and can transfer data at 32 bits per clock cycle so you can get up to 132 Mbytes/sec (264 with 2.1). The PCI 2.1 specs include a 64-bit 66MHz PCI bus. Each PCI card can perform up to 8 functions, and you can have more than one busmastering card on the bus. It should be noted, though, that many functions are not available with PCI, such as sound. Not yet, anyway. It is part of the plug and play standard, assuming your operating system and BIOS agree, so it is auto configuring (although some cards use jumpers instead of storing information in a chip); it will also share interrupts under the same circumstances. The PCI chipset handles transactions between cards and the rest of the system, and allows other buses to be bridged to it (typically and ISA bus to allow older cards to be used). Not all of them are equal, though; certain features, such as byte merging, may be absent. The connector may vary according to the voltage the card uses (3.3 or 5v; some cards can cope with both)