Summary: Buses in computers.
Buses are the basic transportation lines for moving data, instructions,
addresses, and other information inside a computer.
- bus
- bus
standards
Buses
A
bus is a set (group) of parallel lines that information (data,
addresses, instructions, and other information) travels on inside a computer.
Information travels on buses as a series of electrical pulses, each pulse
representing a one bit or a zero bit (there are trinary, or three-state, buses,
but they are rare). Some writers use the term buss with a double ‘s’.
The
size or width of a bus is how many bits it carries in parallel.
Common bus sizes are: 4 bits, 8 bits, 12 bits, 16 bits, 24 bits, 32 bits, 64
bits, 80 bits, 96 bits, and 128 bits.
The
speed of a bus is how fast it moves data along the path. This is usually
measured in MegaHertz (MHz) or millions of times a second.
The
capacity of a bus is how much data it can carry in a second. In theory
this is determined by multiplying the size of the bus by the speed of the bus,
but in practice there are many factors that slow down a bus, including wait
cycles (waiting for memory or another device to have information ready).
Some
recent buses move two sets of data through the bus during each cycle (one after
the other). This is called double pumping the bus.
An
internal bus is a bus inside the processor, moving data, addresses,
instructions, and other information between registers and other internal
components or units.
An
external bus is a bus outside of the processor (but inside the
computer), moving data, addresses, and other information between major
components (including cards) inside the computer.
A
bus master is a combination of circuits, control microchips, and
internal software that control the movement of information over a bus. The
internal software (if any) is contained inside the bus master and is separate
from the main processor.
A
processor bus is a bus inside the processor. Some processor designs
simplify the internal structure by having one or two processor buses. In a
single processor bus system, all information is carried around inside the
processor on one processor bus. In a dual processor bus system, there is a source
bus dedicated to moving source data and a destination bus dedicated
to moving results. An alternative approach is to have a lot of small buses that
connect various units inside the processor. While this design is more complex,
it also has the potential of being faster, especially if there are multiple
units within the processor that can perform work simultaneously (a form of parallel
processing).
A
system bus connects the main processor with its primary support components,
in particular connecting the processor to its memory. Depending on the
computer, a system bus may also have other major components connected.
A
data bus carries data. Most processors have internal data buses that
carry information inside the processor and external data buses that carry
information back and forth between the processor and memory.
An
address bus carries address information. In most processors, memory is
connected to the processor with separate address and data buses. The processor
places the requested address in memory on the address bus for memory or the
memory controller (if there is more than one chip or bank of memory, there will
be a memory controller that controls the banks of memory for the processor). If
the processor is writing data to memory, then it will assert a write signal and
place the data on the data bus for transfer to memory. If the processor is
reading data from memory, then it will assert a read signal and wait for data
from memory to arrive on the data bus.
In
some small processors the data bus and address bus will be combined into a
single bus. This is called multiplexing. Special signals indicate
whether the multiplexed bus is being used for data or address. This is at least
twice as slow as separate buses, but greatly reduces the complexity and cost of
support circuits, an important factor in the earliest days of computers, in the
early days of microprocessors, and for small embedded processors (such as in a
microwave oven, where speed is unimportant, but cost is a major factor).
An
instruction bus is a specialized data bus for fetching instructions from
memory. The very first computers had separate storage areas for data and
programs (instructions). John Von Neumann introduced the von Neumann
architecture, which combined both data and instructions into a single memory,
simplifying computer architecture. The difference between data and instructions
was a matter of interpretation. In the 1970s, some processors implemented
hardware systems for dynamically mapping which parts of memory were for code
(instructions) and which parts were for data, along with hardware to insure
that data was never interpretted as code and that code was never interpretted
as data. This isolation of code and data helped prevent crashes or other
problems from “runaway code” that started wiping out other programs by
incorrectly writing data over code (either from the same program or worse from
some other user’s software). In more recent innovation, super computers and
other powerful processors added separate buses for fetching data and
instructions. This speeds up the processor by allowing the processor to fetch
the next instruction (or group of instructions) at the same time that it is
reading or writing data from the current or preceding instruction.
A
memory bus is a bus that connects a processor to memory or connects a
processor to a memory controller or connects a memory controller to a memory
bank or memory chip.
A
cache bus is a bus that connects a processor to its internal (L1 or
Level 1) or external (L2 or Level 2) memory cache or caches.
An
I/O bus (for input/output) is a bus that connects a processor to its
support devices (such as internal hard drives, external media, expansion slots,
or peripheral ports). Typically the connection is to controllers rather than
directly to devices.
A
graphics bus is a bus that connects a processor to a graphics controller
or graphics port.
A
local bus is a bus for items closely connected to the processor that can
run at or near the same speed as the processor itself.
bus
standards
ISA (Industry Standard Architecture) is
a bus system for IBM PCs and PC clones. The original standard, from 1981, was
an 8 bit bus that ran at 4.77 MHz. In 1984, with the introduction of the IBM AT
computer (which used the 80286 processor, introduced by Intel in 1982), ISA was
expanded to a 16 bit bus that ran at 8.3 MHz.
MCA (Micro Channel Architecture) is a
32 bit bus introduced in 1987 by IBM with the PS/2 computer that used the Intel
80386 processor. IBM attempted to license MCA bus to other manufacturers, but
they rejected it because of the lack of ability to use the wide variety of
existing ISA devices. IBM continues to use a modern variation of MCA in some of
its server computers.
EISA (Extended Industry Standard
Architecture) is a 32 bit bus running at 8.3 MHz created by the clone industry
in response to the MCA bus. EISA is backwards compatible so that ISA devices
could be connected to it. EISA also can automatically set adaptor card
configurations, freeing users from having to manually set jumper switches.
NuBus is a 32 bit bus created by Texas
Instruments and used in the Macintosh II and other 680x0 based Macintoshes.
NuBus supports automatic configuration (for “plug and play”).
VL
bus (VESA Local
bus) is created in 1992 by the Video Electronics Standards Association for the
Intel 80486 processor. The VL bus is 32 bits and runs at 33 MHz. The VL bus
requires use of manually set jumper switches.
PCI (Peripheral Component Interconnect)
is a bus created by Intel in 1993. PCI is available in both a 32 bit version
running at 33 MHz and a 64 bit version running at 66 MHz. PCI supports
automatic configuration (for “plug and play”). PCI automatically checks data
transfers for errors. PCI uses a burst mode, increasing bus efficiency by
sending several sets of data to one address.
DIB (Dual Independent Bus) was created
by Intel to increase the performance of frontside L2 cache.
SECC (Single Edge Contact Cartridge) was
created by Intel for high speed backside L2 cache.
AGP (Accelerated Graphics Port) was
created by Intel to increase performance by separating video data from the rest
of the data on PCI I/O buses. AGP is 32 bits and runs at 66 MHz. AGP 2X double
pumps the data, doubling the amount of throughput at the same bus width and
speed. AGP 4X runs four sets of data per clock, quadrupling the throughput.
DRDRAM was a memory bus created by Rambus
to increase speed of connections between the processor and memory. DRDRAM is a
33 bit bus running at 800 MHz. 16 bits are for data, with the other 17 bits
reserved for address functions.