In computer architecture a bus is a subsystem that transfers data or power between computer components inside a computer or between computers. Unlike a point-to-point connection, a bus can logically connect several peripherals over the same set of wires.
Early computer buses were literally parallel electrical buses with multiple connections, but the term is now used for any physical arrangement that provides the same logical functionality as a parallel electrical bus. Modern computer buses can use both parallel and bit-serial connections, and can be wired in either a multidrop[?] (electrical parallel) or daisy-chain[?] topology, or connected by switched hubs, as in the case of USB.
History
Early microcomputer bus systems were essentially the pins of the CPU run out onto the backplane. Memory and other devices would be added to the bus using the same address and data pins as the CPU itself used, connected in parallel. Communication was controlled by the CPU, which would read and write data from the devices as if they were blocks of memory (in most cases), all timed by a central clock controlling the speed of the CPU. Devices would ask for service by signalling on other CPU pins, typically using some form of interrupt. For instance, a disk drive controller would signal the CPU that new data was ready to be read, at which point the CPU would move the data by reading the memory that corresponded to the disk drive. Almost all early computers were built in this fashion, starting with the S-100 bus in the Altair, and continuing through the IBM PC in the 1980s.
These first generation bus systems had a serious drawback however, in that everyone on the bus had to talk at the same speed, and shared a single clock. Increasing the speed of the CPU was not a simple matter, because the speed of all the devices would have to be able to increase as well. This led to odd situations where very fast CPUs had to "slow down" in order to talk to other devices in the computer. Another problem was that the CPU was required for all operations, so if it became busy with other tasks the real throughput of the bus could suffer dramatically. A more practical concern was that these early bus systems tended to be difficult to set up, requiring many jumpers in order to set various parameters of operation.
"Second generation" bus systems like NuBus addressed some these problems. They typically separated the computer into two "worlds", the CPU and memory on one side, and the various devices on the other, with a bus controller in between. This allowed the CPU to increase in speed without affecting the bus. This also moved much of the burden for moving the data out of the CPU and into the the cards and controller, so devices on the bus could talk to each other with no CPU intervention. This led to much better "real world" performance, but also required the cards to be much more complex. These buses also often addressed speed issues by being "bigger" in terms of the size of the data path, moving from 8-bit parallel buses in the first generation, to 16 or 32-bit in the second, as well as adding software setup to supplant or replace the jumpers.
However these newer systems shared one quality with their earlier cousins, in that everyone on the bus had to talk at the same speed. While the CPU was now insulated and could increase speed without fear, CPUs and memory continued to increase in speed much faster than they buses they talked to. The result was that the bus speeds were now very much slower than what a modern system needed, and the machines were left starved for data. A particularly common example of this problem was that video cards quickly outran even the newer bus systems like PCI, and now computers include the AGP bus just to drive the video card.
During this period an increasing number of external devices started employing their own bus systems as well. When disk drives were first introduced they would be added to the machine with a card on the bus, which is why computers have so many slots on the bus. But through the 1980s and 1990s new systems like SCSI and IDE were introduced to serve this need, leaving most slots in modern systems empty. Today there are likely to be about five different buses in the typical machine, supporting various devices.
A useful differentiation then became popular, the concept of the local bus as opposed to external bus. The former referred to bus systems that were designed to be used with internal devices, such as graphics cards, and the later to buses designed to add external devices such as scanners. This definition was always soft: IDE is an external bus in terms of how it is used, but is almost always found inside the machine.
"Third generation" buses are now in the process of coming to market, including HyperTransport and InfiniBand. They typically include features that allow them to run at the very high speeds needed to support memory and video cards, while also supporting lower speeds when talking to slower devices such as disk drives. They also tend to be very flexible in terms of their physical connections, allowing them to be used both as internal buses, as well as connecting different machines together. This can lead to complex problems when trying to service different requests, so much of the work on these systems concerns software design, as opposed to the hardware itself. In general these third generation buses tend to look more like a network than the original concept of a bus, with a higher protocol overhead needed than early systems, while also allowing multiple devices to use the bus at once.
Description
At one time "bus" meant an electrically parallel system, with electrical conductors similar or identical to the pins on the CPU. This is no longer the case, and modern systems are blurring the lines between buses and networks.
Buses can be parallel buses, which carry data words striped across multiple wires, or serial buses, which carry data in bit-serial form. The addition of extra power and control connections, differential drivers, and data connections in each direction usually means that most serial buses have more conductors than the minimum of two used in the I²C serial bus. As data rates increase, the problems of timing skew[?] across parallel buses become more and more difficult to circumvent, to the point where a serial bus can actually be operated at higher overall data rates than a parallel bus, despite having fewer electrical connections. Multidrop connections do not work well for fast serial buses, so most modern serial buses use daisy-chain or hub designs.
Most computers have both internal and external buses. An internal bus connects all the internal components of a computer to the motherboard (and thus, the CPU and internal memory). These types of buses are also referred to as a local bus, because they are intended to connect to local devices, not to those in other machines or external to the computer. An external bus connects external peripherals to the motherboard.
Network connections such as Ethernet are not generally regarded as buses, although the difference is largely conceptual rather than practical. The arrival of technologies such as InfiniBand and HyperTransport is further blurring the boundaries between networks and buses. Even the lines between internal and external are sometimes fuzzy, I²C can be used as both an internal bus, or an external bus (where it is known as ACCESS.bus), and InfiniBand is indended to replace both internal buses like PCI as well as external ones like Fibre Channel.
Examples of Internal Computer Buses
Parallel
- S-100 bus used in the Altair and similar computers
- Industry Standard Architecture or ISA
- Extended ISA or EISA
- MicroChannel or MCA
- NuBus or IEEE 1196
- SBus or IEEE 1496
- Peripheral Component Interconnect or PCI
- VMEbus, the VERSAmodule Eurocard bus
- VESA Local Bus or VLB or VL-bus
- Accelerated graphics port or AGP
Serial
Examples of External Computer Buses
Parallel
- Advanced Technology Attachment or ATA (aka IDE, EIDE, ATAPI, etc.) disk/tape peripheral attachment bus
- IEEE-488 (aka General-Purpose Instrumentation Bus or Hewlett-Packard Instrumentation Bus)
- HIPPI HIgh Performance Parallel Interface
- PCMCIA
- SCSI disk/tape peripheral attachment bus
Serial
- ACCESS.bus (A.b)
- Apple Desktop Bus (ADB)
- Fibre Channel
- IEEE 1394 (FireWire)
- RS-485[?]
- Serial ATA
- Serial Storage Architecture[?] (SSA)
- Universal Serial Bus (USB)
- Controller Area Network (CAN)
Examples of Internal/External Computer Buses
See also
External link
- Chip Weems' Lecture 12: Buses (http://www.cs.umass.edu/~weems/CmpSci635/635lecture12.html)
Common misspelling and questions (FAQ)
omputer-bus cmputer-bus coputer-bus comuter-bus compter-bus compuer-bus computr-bus compute-bus computerbus computer-us computer-bs computer-bu ocmputer-bus cmoputer-bus copmuter-bus comupter-bus comptuer-bus compuetr-bus computre-bus compute-rbus computerb-us computer-ubs computer-bsu computer-bu ccomputer-bus coomputer-bus commputer-bus compputer-bus compuuter-bus computter-bus computeer-bus computerr-bus computer--bus computer-bbus computer-buus computer-buss domputer-bus xomputer-bus fomputer-bus fomputer-bus vomputer-bus c9mputer-bus cimputer-bus ckmputer-bus c0mputer-bus clmputer-bus c0mputer-bus cpmputer-bus clmputer-bus cojputer-bus conputer-bus cokputer-bus cokputer-bus co,puter-bus com0uter-bus comouter-bus comluter-bus com-uter-bus com;uter-bus com-uter-bus com[uter-bus com;uter-bus comp7ter-bus compyter-bus comphter-bus comp8ter-bus compjter-bus comp8ter-bus compiter-bus compjter-bus compu5er-bus compurer-bus compufer-bus compu6er-bus compuger-bus compu6er-bus compuyer-bus compuger-bus comput3r-bus computwr-bus computsr-bus comput4r-bus computdr-bus comput4r-bus computrr-bus computdr-bus compute4-bus computee-bus computed-bus compute5-bus computef-bus compute5-bus computet-bus computef-bus computer0bus computerpbus computer[bus computer-gus computer-vus computer-hus computer-hus computer-nus computer-b7s computer-bys computer-bhs computer-b8s computer-bjs computer-b8s computer-bis computer-bjs computer-buw computer-bua computer-buz computer-bue computer-bux computer-bue computer-bud computer-bux compuyer-bus computyer-bus computer-buesCut lettuce leaves, place the lobster on the dish in a ring. Mayonnaise CHICKEN SALAD. From MRS. A. M. PALMER, of New York, Alternate Lady Manager. Ingredients: One fowl (boiled); one cucumber; two heads lettuce; two teaspoonful mixed mustard; one-half teaspoonful sugar; four tablespoonfuls vinegar; cayenne and salt to taste; add the oil, drop and vinegar _very gradually_, lest the sauce curdle, and the the dressing over it. Around the edge arrange rings of hard boiled SOUTHERN CHICKEN SALAD. SPLENDID--TRY IT ONCE. From MRS. CHARLES J. MCCLUNG, of Tennessee, Alternate Lady Manager. Cut one chicken into small pieces (not too small); boil _one_ egg beaten yolks of _three_ raw eggs; one-half teaspoonful each of the juice of one lemon, one tablespoonful melted butter, one together until light and pour into one gill of boiling vinegar and let When _cold_ pour over your chicken, to which has been added as CHICKEN SALAD. From MRS. MARGARET M. RATCLIFFE, of Arkansas, Alternate Lady Manager. As the Irishman would say, turkey makes the best chicken salad. Boil into pieces about one-half inch square; add an equal quantity.