Peripheral Component Interconnect

From Wikipedia, the free encyclopedia

PCI
Peripheral Component Interconnect

Five 32-bit PCI expansion slots on a motherboard
Year created: July 1993
Created by: Intel
Superseded by: PCI Express (2004)

Width: 32 or 64 bits
Number of devices: 1 per slot
Capacity 133 MB/s
Style: Parallel
Hotplugging? no
External? no
64-bit PCI expansion slots inside a Power Macintosh G4
64-bit PCI expansion slots inside a Power Macintosh G4

The Peripheral Component Interconnect, or PCI Standard (in practice almost always shortened to PCI), specifies a computer bus for attaching peripheral devices to a computer motherboard. These devices can take any one of the following forms:

The PCI bus is common in modern PCs, where it has displaced ISA and VESA Local Bus as the standard expansion bus, but it also appears in many other computer types. The bus is being succeeded by PCI Express, which launched in 2004 and offers much higher bandwidth. As of 2007 the PCI standard is still used by many legacy and new devices that do not require the higher bandwidth of PCI-E. New computers are also still provided with ample PCI slots.

The PCI specification covers the physical size of the bus (including wire spacing), electrical characteristics, bus timing, and protocols. The specification can be purchased from the PCI Special Interest Group (PCI-SIG).

Typical PCI cards used in PCs include: network cards, sound cards, modems, extra ports such as USB or serial, TV tuner cards and disk controllers. In years past video cards were mounted using PCI, but rapidly outgrew the capabilities of PCI, so that today PCI video cards are a rare low-end option. Many common PCI card devices are now integrated into motherboards, so that modern PCs often have no cards fitted. PCI is still used for many specialized cards, although USB is replacing that purpose also.

Contents

[edit] History

Work on PCI began at Intel's Architecture Lab circa 1990. PCI 1.0, which was merely a component-level specification, was released on June 22, 1992. PCI 2.0, which was the first to establish standards for the connector and motherboard slot, was released on April 30, 1993. PCI 2.1 was released on June 1, 1995.

PCI was immediately put to use in servers, replacing MCA and EISA as the server expansion bus of choice. In mainstream PCs, PCI was slower to replace VESA Local Bus (VLB), and did not gain significant market penetration until late 1994 in second-generation Pentium PCs. By 1996 VLB was all but extinct, and manufacturers had adopted PCI even for 486 computers.[1] EISA continued to be used alongside PCI through 2000. Apple Computer adopted PCI for professional Power Macintosh computers (replacing NuBus) in mid-1995, and the consumer Performa product line (replacing LC PDS) in mid-1996..

Later revisions of PCI added new features and performance improvements, including a 66 MHz 3.3 V standard and 133 MHz PCI-X, and the adaptation of PCI signaling to other form factors. Both PCI-X 1.0b and PCI-X 2.0 are backward compatible with some PCI standards. With the introduction of the serial PCI Express standard in 2004, motherboard manufacturers have included progressively fewer PCI expansion slots in favor of the new standard. Although it is still common to see both interfaces implemented side-by-side, traditional PCI is likely to slowly die out in coming years.

[edit] Versions

  • Card
    • 32-bit, 33 MHz (added in Rev. 2.0)
    • 64-bit, 33 MHz (added in Rev. 2.0)
    • 32-bit, 66 MHz (3.3 V only, added in Rev. 2.1)
    • 64-bit, 66 MHz (3.3 V only, added in Rev. 2.1)
  • Slot

[edit] Auto Configuration

PCI provides two separate 32-bit or 64-bit address spaces corresponding to the memory and I/O port address spaces of the x86 processor family. Addresses in these address spaces are assigned by software. A third address space, called the PCI Configuration Space, which uses a fixed addressing scheme, allows software to determine the amount of memory and I/O address space needed by each device. Each device can request up to six areas of memory space or I/O port space via its configuration space registers.

In a typical system, the firmware (or operating system) queries all PCI buses at startup time (via PCI Configuration Space) to find out what devices are present and what system resources (memory space, I/O space, interrupt lines, etc.) each needs. It then allocates the resources and tells each device what its allocation is.

The PCI configuration space also contains a small amount of device type information, which helps an operating system choose device drivers for it, or at least to have a dialogue with a user about the system configuration.

Devices can have an optional ROM that can contain executable code for x86 or PA-RISC processors, an Open Firmware driver, or an EFI driver. This is typically necessary for devices that may be used during system startup, before device drivers are loaded by the operating system.

[edit] Interrupts

Devices are required to follow a protocol so that the interrupt lines can be shared. The PCI bus includes four interrupt lines, all of which are available to each device. However, they are not wired in parallel as are the other traces. The positions of the interrupt lines rotate between slots, so what appears to one device as the INTA# line is INTB# to the next and INTC# to the next. Single-function devices always use their INTA# for interrupt signaling, so the device load is spread fairly evenly across the four available interrupt lines. This alleviates a common problem with sharing interrupts.

PCI bridges (between two PCI buses) map the four interrupt traces on each of their sides in varying ways. Some bridges use a fixed mapping, and in others it is configurable. In the general case, software cannot determine which interrupt line a device's INTA# pin is connected to across a bridge. The mapping of PCI interrupt lines onto system interrupt lines, through the PCI host bridge, is similarly implementation-dependent. The result is that it can be impossible to determine how a PCI device's interrupts will appear to software. Platform-specific BIOS code is meant to know this, and set a field in each device's configuration space indicating which IRQ it is connected to, but this process is not reliable.

PCI interrupt lines are level-triggered. This was chosen over edge-triggering in order to gain an advantage when servicing a shared interrupt line, and for robustness: edge triggered interrupts are easy to miss.

Later revisions of the PCI specification add support for message-signalled interrupts. In this system a device signals its need for service by performing a memory write, rather than by asserting a dedicated line. This alleviates the problem of scarcity of interrupt lines. Even if interrupt vectors are still shared, it does not suffer the sharing problems of level-triggered interrupts. It also resolves the routing problem, because the memory write is not unpredictably modified between device and host. Finally, because the message signaling is in-band, it resolves some synchronization problems that can occur with posted writes and out-of-band interrupt lines.

PCI Express does not have physical interrupt lines at all. It uses message-signalled interrupts exclusively.

[edit] Conventional hardware specifications

A typical 32-bit PCI card, in this case a SCSI adapter from Adaptec
A typical 32-bit PCI card, in this case a SCSI adapter from Adaptec
A PCI-X Gigabit Ethernet expansion card
A PCI-X Gigabit Ethernet expansion card

These specifications represent the most common version of PCI used in normal PCs.

[edit] Variants

[edit] Conventional

  • Later versions of PCI allow (and in the latest versions require) 3.3V slots (keyed differently) on motherboards and allow for cards that are either double keyed for both voltages or even 3.3V only.
  • PCI 2.2 allows for 66 MHz signalling (requires 3.3 volt signalling) (peak transfer rate of 533 MB/s)
  • PCI 2.3 permits use of 3.3 volt and universal keying, but does not allow 5 volt keyed add in cards.
  • PCI 3.0 is the final official standard of the bus, completely removing 5-volt capability.
  • PCI-X doubles the width to 64-bit, revises the protocol, and increases the maximum signaling frequency to 133 MHz (peak transfer rate of 1014 MB/s)
  • PCI-X 2.0 permits a 266 MHz rate (peak transfer rate of 2035 MB/s) and also 533 MHz rate, expands the configuration space to 4096 bytes, adds a 16-bit bus variant and allows for 1.5 volt signaling
  • Mini PCI is a new form factor of PCI 2.2 for use mainly inside laptops
  • CardBus is a PC card form factor for 32-bit, 33 MHz PCI
  • CompactPCI, uses Eurocard-sized modules plugged into a PCI backplane.
  • PC/104-Plus is an industrial bus that uses the PCI signal lines with different connectors.

[edit] Physical card dimensions

[edit] Full-size card

The original "full-size" PCI card is specified as a height of 107 mm (4.2 inches) and a depth of 312 mm (12.283 inches). The height includes the edge card connector. However, most modern PCI cards are half-length or smaller (see below) and many PCs cannot fit a full size card.

[edit] Backplate

In addition to these dimensions the physical size and location of a card's backplate are also standardized. The backplate is the part that fastens to the card cage to stabilize the card and also contains external connectors, so it usually attaches in a window so it is accessible from outside the computer case.

The card itself can be a smaller size, but the backplate must still be full-size and properly located so that the card fits in any standard PCI slot.

[edit] Half-length extension card (de-facto standard)

This is in fact the practical standard now - the majority of modern PCI cards fit inside this length.

  • Width: 0.6 inches (15.24 mm)
  • Depth: 6.9 inches (175.26 mm)
  • Height: 4.2 inches (106.68 mm)

[edit] Low-profile (half-height) card

The PCI organization has defined a standard for "low-profile" cards, which basically fit in the following ranges:

  • Height: 1.42 inches (36.07 mm) to 2.536 inches (64.41 mm)
  • Depth: 4.721 inches (119.91 mm) to 6.6 inches (167.64 mm)

The bracket is also reduced in height, to a standard 3.118 inches (79.2 mm).

These cards may be known by other names such as "slim".

[edit] Mini PCI

This is a specialist version of PCI slot intended for laptops and the like.

[edit] Other physical variations

Typically consumers systems specify "N x PCI slots" without specifying actual dimensions of the space available. In some small form-factor systems, this may not be sufficient to allow even "half-length" PCI cards to fit. Despite this limitation, these systems are still useful because many modern PCI cards are considerably smaller than half-length.

[edit] Card keying

Typical PCI cards present either one or two key notches, depending on their signaling voltage. Cards requiring 3.3 volts have a notch 56.21mm from the front of the card (where the external connectors are) while those requiring 5 volts have a notch 104.47mm from the front of the card. So called "Universal cards" have both key notches and can accept both types of signal.

[edit] See also

[edit] References

  1. ^ VLB was designed for 486-based systems, yet even the more generic PCI was to gain prominence on that platform.

[edit] External links