# Peripheral Component Interconnect

Peripheral Component Interconnect, meist PCI abgekürzt, ist ein Bus-Standard zur Verbindung von Peripheriegeräten mit dem Chipsatz eines Prozessors.
Es gibt zahlreiche Varianten und Einsatzgebiete des Standards (PC, Industrie, Telekommunikation). Die bekannteste Variante kommt hauptsächlich im PC-Umfeld zum Einsatz und heißt offiziell PCI Conventional. Praktisch jeder seit etwa 1994 gebaute IBM-PC-kompatible Computer ist mit meist zwei bis sieben Steckplätzen für PCI-Karten ausgerüstet (ausgenommen Miniatur- und mobile Versionen). Auch einige Computer von Apple (von 1995 bis 2005, später dann PCI Express) und Workstations von Sun besitzen einen PCI-Bus. In die Steckplätze können allerlei Karten vieler Hersteller eingesetzt werden, darunter Netzwerkkarten, Modems, SCSI-Karten, Soundkarten, (ältere oder Zweit-)Grafikkarten, Karten mit einem Parallel-Druckeranschluss oder mit zusätzlichen USB-Steckplätzen. Damit kann ein PC leicht an spezielle Bedürfnisse angepasst werden.

## Versionen und Geschichte

Version 1.0 des Standards wurde von Intel im Jahre 1991 definiert. Intel unterstützte den VESA Local Bus (VLB) nicht, da dieser speziell auf die 486-Architektur zugeschnitten war und weniger Durchsatz bot. Im Gegensatz dazu kann der PCI-Bus in jeder Architektur eingesetzt werden.
Mittlerweile existieren drei verschiedene Standards:

### Konventioneller PCI

* PCI 1.0, vorgeschlagen von Intel 1991
* PCI 2.0, eingeführt von PCI-SIG 1993
* PCI 2.1, beschlossen im Juni 1995
* PCI 2.2, beschlossen im Januar 1999
* PCI 2.3, beschlossen im März 2002
* PCI 3.0, beschlossen im April 2004

### PCI-Extended (PCI-X)

* PCI-X 1.0, beschlossen im September 1999
* PCI-X 2.0, beschlossen im Juli 2002

### PCI Express (PCIe oder PCI-E)

* ursprünglich bekannt als 3GIO
* PCI Express 1.0, beschlossen Juli 2002
* PCI Express 1.1
* PCI Express 2.0, beschlossen 2007
* PCI Express 2.1
* PCI Express 3.0, beschlossen 2010
* PCI Express 4.0, beschlossen 2017
* PCI Express 5.0, beschlossen 2019
* PCI Express 6.0, beschlossen 2022
* PCI Express 7.0, geplant für 2025
Der PCI-Bus hat den ISA-Bus und den kurzlebigen VL-Bus, wie man sie in älteren PCs findet, ersetzt. Eine PCI-ISA-Bridge erlaubt jedoch die Anbindung des ISA-Busses an den PCI-Bus. Auf Systemen der Pentium-Generation und neuer ist das die einzige Möglichkeit, ISA-Karten anzubinden, da es sich beim ISA-Bus um den nach außen gelegten Systembus des Ur-PCs handelt. Der PCI-Bus erfüllte die Anforderungen für Grafik-, Netzwerk- und andere Schnittstellenkarten über längere Zeit.
Allerdings war er nach einiger Zeit nicht mehr schnell genug für die damals aufkommenden Grafikkarten mit 3D-Beschleunigung. 1997 etablierte man daher zusätzlich den Accelerated Graphics Port (AGP). Dieser baut auf dem PCI-Bus auf, ist jedoch als Punkt-zu-Punkt-Verbindung mit ergänzenden Seitenkanälen ausgeführt und wurde mittlerweile bis zum 8-fachen seiner ursprünglichen Übertragungsrate weiter entwickelt. Für so gut wie alle anderen Steckkartentypen blieb PCI dagegen bis heute Standard, wurde seit 2005 durch PCI Express ersetzt (siehe unten).
Anders als der ISA-Bus ermöglicht PCI die dynamische Konfiguration eines Gerätes ohne Eingriff des Benutzers. Während des Bootvorgangs analysiert das System-BIOS die vorhandenen PCI-Geräte und weist die benötigten Ressourcen zu. Das erlaubt die Zuweisung von IRQs, Portadressen und Speicherbereichen entsprechend den lokalen Gegebenheiten. Bei ISA-Karten musste man häufig den zu verwendenden IRQ etc. per Steckbrücke manuell einstellen. Zusätzlich stellt der PCI-Bus dem Betriebssystem und anderen Programmen eine detaillierte Beschreibung aller verbundenen PCI-Geräte durch den PCI Configuration Space zur Verfügung.
Die PCI-Spezifikation regelt auch die physische Auslegung des Busses (unter anderem den Abstand der Leiterbahnen zueinander), elektrische Eigenschaften, Timing und Protokolle. Die Geräte oder Schnittstellen müssen nicht unbedingt auf Steckkarten untergebracht werden, sondern können sich auch direkt auf der Hauptplatine des Computers befinden, die Spezifikation spricht hier von planar devices.

## Allgemeine PCI-Bus-Spezifikationen

Detektion und Konfiguration von PCI erfolgt über zwei IO-Register :
| Bits | Anz. Bits | Bereich | Beschreibung |
| 32 bit-Port: 0CF8h ||||
| 00…1 | 02 | 00…3 | Auswahl der Übertragung: 00 = Configuration PCI-Brücke 01 = Configuration PCI-Einheit |
| 02…7 | 06 | 00…63 | Auswahl der Registernummer |
| 08…10 | 03 | 00…7 | Auswahl der PCI Funktion (Registergruppe) |
| 11…15 | 05 | 00…31 | Adresse der PCI-Einheit, des PCI-Ports; unbenutzt für Übertragung 00 |
| 16…23 | 08 | 00…255 | Busnummer; unbenutzt für Übertragung 00 |
| 24…31 | 08 | 00…255 | |
| 32 bit-Port: 0CFCh ||||
| 00…31 | 32 | 00…2$^{32}$−1 | Lesen / Schreiben der Daten des ausgewählten Registers |
Der PCI-Bus ist ein synchroner Bus mit 33,33 MHz (= 30 ns pro Takt) oder nach der 2.1-Spezifikation 66,66 MHz Taktrate, also 15 ns pro Takt. Diese Werte sind Maximalwerte, nach der Spezifikation kann der Takt auch niedriger und zudem variabel sein, beispielsweise zum Stromsparen. Deshalb hat der Bus eine Taktleitung. Alle Signale werden nur bei steigender Taktflanke übertragen (Single Data Rate). Die Signale können über CMOS-Treiber angesteuert werden, daher ist der gesamte Stromverbrauch relativ gering. Der Bus kann mit bis zu 10 Geräten bestückt werden, wobei zwischen Master (Kontrolleur der Übertragung) und Slave (muss vielleicht auf Daten (oder Befehle) warten) unterschieden wird. Ein Master kann bei Bedarf selbst die Kontrolle über Abläufe auf dem Bus übernehmen, was vor allem für Karten mit hohem IO-Aufkommen, wie etwa Netzwerkkarten oder Festplatten-Controller, vorteilhaft ist. Als Geräte zählen auch auf der Hauptplatine untergebrachte Geräte, die Verbindung zum Host (PCI/Host-Schnittstelle) oder zu einem eventuell vorhandenen ISA-Bus (PCI/ISA-Schnittstelle) aufnehmen. Für mehr als 10 PCI-Geräte pro System können über PCI/PCI-Schnittstellen (PCI-PCI-Bridge) weitere PCI-Busse in das System eingebunden werden. Die Datenübertragung läuft parallel ab.
Auf dem PCI-Bus kommuniziert immer ein Master mit einem Slave. Die meisten PCI-Geräte können sowohl als Slave angesprochen werden als auch als Master Transaktionen starten. Über einen Arbiter wird ein Master ausgewählt, der dann die Kontrolle über den Bus hat. Er beginnt einen Transfer, indem er eine Adresse an die 32 Daten/Adressleitungen und ein Kommando an 4 Kommando/Byte-Leitungen anlegt. Die Daten und Adressen werden über dieselben Leitungen übertragen und per Zeitmultiplexverfahren voneinander getrennt. Eine zusätzliche Paritätsleitung erlaubt das Erkennen von Fehlern.
CPU und Arbeitsspeicher sind über eine sogenannte Host-Bridge mit dem Bus verbunden. Die meisten Transaktionen auf dem Bus finden zwischen dieser Bridge und den restlichen Peripheriegeräten statt. Theoretisch können Peripheriegeräte auch untereinander kommunizieren, diese Möglichkeit wird jedoch nur sehr selten genutzt und von den meisten Bridges nur optional unterstützt. Da masterfähige Peripheriegeräte die Hostbridge als Slave ansprechen können, sind sie in der Lage, direkt in den Arbeitsspeicher zu schreiben und aus ihm zu lesen – das entspricht Direct Memory Access (DMA).
Jedem Slave werden beim Systemstart vom BIOS Adressbereiche zugeteilt. Über Herstellercodes können Karten nach dem Hochfahren eindeutig identifiziert werden. Über die Datenleitungen werden dann Daten übertragen, wobei die Kommando/Byte-Leitungen zur Auswahl der Bytes im 32-Bit-Wort dienen können. Dadurch sind neben 32-Bit- auch 16- und 8-Bit-Transfers möglich.
In der am weitesten verbreiteten PCI-Variante mit 32 bit/33 MHz können in jedem Takt maximal 32 Bit, also 4 Bytes übertragen werden, so dass die Transferrate maximal 133 MByte/s beträgt (4 Bytes in 30 ns). Über Ready-Leitungen kann sowohl der Master als auch der Slave signalisieren, dass sie zur Aufnahme von Daten bereit sind. Falls Master oder Slave nicht bereit sind, werden keine Daten übertragen, die Übertragung wird angehalten oder gebremst.
Normalerweise beendet der Master den Datentransfer. Über ein STOP-Signal kann der Slave ein Übertragungsende erzwingen. Ein anderer Master kann den Bus über REQ anfordern, wobei die derzeitige Übertragung nach einer vorgegebenen Latenzzeit beendet werden muss und der neue Master den Bus übernehmen kann.
Der PCI-Bus benötigt minimal 47 (Slave) bzw. 49 (Master) Signale auf dem Bus. Ab der Version 2.1 der Spezifikation ist eine 64-Bit-Erweiterung definiert, die den Datenbus auf 64 Bit verbreitert. In einem System können 32-Bit- und 64-Bit-Geräte koexistieren und miteinander kommunizieren.
Auf dem Bus liegen vier Interruptleitungen, so dass jedes Gerät bis zu vier verschiedene Interrupts (INTA bis INTD) erzeugen kann. Die Interruptleitungen sind auf dem Bus aber nicht verbunden, sondern können einzeln geroutet und zugeordnet werden. Normalerweise wird nur INTA verwendet. Dieser kann jedoch je nach Steckplatz einem eigenen Interrupt zugeordnet werden oder, falls nicht genügend Interrupts vorhanden sind, zwischen verschiedenen Karten geteilt werden. Die Probleme des ISA-Busses, der oft zu wenig Interrupts zuordnen konnte, sind damit weitgehend Vergangenheit.
Der PCI-Bus versorgt die angeschlossenen Geräte mit Spannung. Für jede Versorgungsspannung ist die maximal zulässige Stromstärke festgelegt. Weiterhin ist die Gesamtleistung pro Steckplatz auf 25 Watt begrenzt.
| Spannung | Strom (max) | Leistung (max) |
| 0+3,3 V ± 0,3 V | 6 A | 20 W |
| 0+5 V ± 05 % | 5 A | 25 W |
| +12 V ± 05 % | 0,5 A | 6 W |
| −12 V ± 10 % | 0,1 A | 1,2 W |
| Summe der Gesamtleistung | Summe der Gesamtleistung | 25 W |
| Parameter | PCI 2.0 | PCI 2.1 | PCI 2.1 | PCI 2.2 | PCI 2.3 | PCI 3.0 | PCI-X | PCI-X | PCI-X | PCI-X | Zum Vergleich: AGP | Zum Vergleich: AGP | Zum Vergleich: AGP | Zum Vergleich: AGP |
| Parameter | PCI 2.0 | 32 bit | 64 bit | PCI 2.2 | PCI 2.3 | PCI 3.0 | 1.0 | 1.0 | 2.0 | 2.0 | 1x | 2x | 4x | 8x |
| Max. Busbreite | 32 bit | 32 bit | 64 bit | 64 bit | 64 bit | 64 bit | 64 bit | 64 bit | 64 bit | 64 bit | 32 bit | 32 bit | 32 bit | 32 bit |
| Max. Takt (MHz) | 033 | 066 | 066 | 066 | 066 | 066 | 100 | 133 | 266 | 533 | 066 | 133 | 266 | 533 |
| max. Datenrate (MB/s) | 133 | 266 | 533 | 533 | 533 | 533 | 800 | 1066 | 2133 | 4266 | 266 | 533 | 1066 | 2133 |
| Slots pro Bridge | 4 | 4 | 2 | 2 | 2 | 2 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| Spannung | 5 V | 5/3,3 V | 5/3,3 V | 3,3 V | 3,3 V | 3,3 V | 3,3 V | 3,3 V | 3,3 V | 3,3 V | 3,3 V | 3,3 V | 1,5 V | 0,8 V |
| Einführungsjahr | 1993 | 1994 | 1994 | 1999 | 2002 | 2004 | 1999 | 1999 | 2003 | 2003 | 1997 | 1997 | 1999 | 2002 |

## PCI-Bus-Signale

Die Art der Ein- und Ausgänge lassen sich wie folgt einteilen:
| Input | in | Normaler Eingang |
| Output | out | Normaler Ausgang |
| Tri-State | t/s | bidirektionaler Tri-State Ausgang |
| Sustained Tri-State | s/t/s | Low-aktiver Ausgang, der nur von einem Gerät getrieben werden darf. Setzt ein Gerät die Leitung auf low, so muss es, um die Leitung wieder freizugeben, die Leitung für mindestens einen Takt auf high setzen. Frühestens nach einem Takt, nachdem die Leitung freigegeben wurde, darf ein anderes Gerät die Leitung nutzen. Ein zentraler Pullup-Widerstand ist notwendig. |
| Open-Drain | o/d | Low-aktiver Ausgang, fungiert als ODER-Verknüpfung mit anderen Geräten. Ein zentraler Pullup ist notwendig. |
| Signal | Art | Beschreibung |
| Systemsignale: |||
| CLK | in | Dient zur Synchronisation aller Komponenten. Die Taktfrequenz beträgt 33 MHz oder 66 MHz. Die Minimalfrequenz ist 0 MHz. |
| RST# | in | Rücksetzen aller Systemkomponenten. |
| Adress- und Datensignale: |||
| AD[31..0] | t/s | gemultiplexte Adress- und Datensignale |
| C/BE[3..0]# | t/s | gemultiplexte Befehl- und Byte-Enable-Signale |
| PAR | t/s | Gerade Parität für die Daten- und Adresssignale (AD[31..0] und C/BE[3..0]), welche um einen Takt verzögert übertragen wird. |
| Kontrollsignale: |||
| FRAME# | s/t/s | Dass eine Übertragung läuft, zeigt der Master mit FRAME# an. Wird die Übertragung der Daten beendet, nimmt der Master die Leitung zurück. Eine deaktivierte Leitung bedeutet, dass die Übertragung beendet wird oder beendet ist. |
| IRDY# | s/t/s | Der Master zeigt mit Initiator Ready an, dass ein Wort übergeben oder übernommen werden kann. |
| TRDY# | s/t/s | Der Target zeigt mit Target Ready an, dass ein Wort übergeben oder übernommen werden kann. |
| STOP# | s/t/s | Der Target zeigt dem Master an, dass die Übertragung beendet werden soll. |
| LOCK# | s/t/s | LOCK schützt einen Zugriff auf einen oder mehrere Target während der Übertragung vor der Benutzung anderer Master. |
| IDSEL | in | Auswahl während der Konfigurationsphase |
| DEVSEL# | s/t/s | Target hat Adresse erkannt |
| Arbitrierung (nur Master): |||
| REQ# | s/t/s | Die Absicht eines Masters auf den Bus wird hiermit angezeigt. Dieses Signal ist eine Punkt-zu-Punkt-Verbindung von jedem Master zu einem zentralen Arbiter. |
| GNT# | in | Erlaubt den Zugriff auf den Bus. Dieses Signal ist eine Punkt-zu-Punkt-Verbindung von einem zentralen Arbiter zu jedem Master. |
| Fehlersignalisierung: |||
| PERR# | s/t/s | Einen Takt nach PAR zeigt dieses Signal einen Daten-Parity-Fehler (nicht bei einem Special-Cycle-Befehl) an. |
| SERR# | o/d | System Error zeigt bei einem Special-Cycle-Befehl einen Daten- oder sonstigen Systemfehler an. |
| Interrupt-Signale: |||
| INTA# | o/d | Ein Gerät mit einer Funktion zeigt einen Interrupt an. Ein Gerät mit mehr Funktionen zeigt einen Interrupt A an. |
| INTB# | o/d | Ein Gerät mit mehr als einer Funktion zeigt einen Interrupt B an. |
| INTC# | o/d | Ein Gerät mit mehr als einer Funktion zeigt einen Interrupt C an. |
| INTD# | o/d | Ein Gerät mit mehr als einer Funktion zeigt einen Interrupt D an. |
| Cache Signale (optional, in PCI 2.x als veraltet deklariert): |||
| SBO# | inout | Snoop Backoff zeigt einen „cache hit“ für eine modifizierte Cachezeile an. |
| SDONE | inout | Snoop Done zeigt das Ende eines Snoops des aktuellen Zugriffs an. |
| zusätzliche Signale: |||
| PRSNT1# PRSNT2# | out | Zeigt das Vorhandensein einer Einsteckkarte und deren Energieverbrauch an. Mindestens eines der beiden Signale (3 verschiedene Kombinationen für 3 verschiedene Verbrauchsklassen) wird auf der Karte mit Masse verbunden und das eventuell andere bleibt offen. Diese Signale sind für jeden Slot individuell mit einem System-Chip verbunden und haben alle einen Pullup. Diese Signale sind nur bei Einsteckkarten vorhanden, bei On-Board-Peripherie gibt es diese nicht, da On-Board-Komponenten nicht austauschbar sind und der Stromverbrauch im Vorhinein bekannt ist. |
| CLKRUN# | o/d | Kontrolliert die Abschaltung des CLK-Signals zu Stromsparzwecken. |
| M66EN | o/d | Dieses Signal, das ursprünglich ein Massepin war, signalisiert die 66-MHz-Fähigkeit eines Geräts, indem es unverbunden bleibt oder als Eingang beschaltet wird. Ältere oder langsame Geräte verlangsamen den gesamten Bus auf 33 MHz, indem sie das Signal mit Masse verbinden. |
| 64-Bit Erweiterungssignale: |||
| D[63..32] | t/s | Die oberen 32 Bit der Datensignale. |
| C/BE[7..4]# | t/s | Die oberen 4 Bit der Befehls- und Byte-Enable-Signale. |
| REQ64# | s/t/s | Request64 zeigt die Absicht eines Masters für eine 64-Bit-Übertragung an. Dieses Signal ist eine Punkt-zu-Punkt-Verbindung von einem zentralen Arbiter zu jedem Master. |
| GNT64# | in | Grant64 erlaubt den Zugriff für eine 64-Bit-Übertragung. Dieses Signal ist eine Punkt-zu-Punkt-Verbindung von einem zentralen Arbiter zu jedem Master. |
| PAR64 | t/s | Parity64 über AD[63..32] und C/BE[7..4]# um einen Takt versetzt. |
| JTAG-Signale: |||
| TCK | in | Test Clock |
| TDI | in | Test Data In |
| TDO | out | Test Data Out |
| TMS | in | Test Mode Select |
| TRST# | in | Test Reset |
Signale auf dem PCI-Bus – das #-Zeichen deutet an, dass die Signale Low Active sind.

## PCI-ID

Jedes Gerät bzw. Steckkarte an einem PCI-Bus besitzt eine eindeutige Hardware-Kennung (ID). Diese setzt sich aus drei Teilen zusammen, die zur Identifikation von Funktion (Class-ID), Hersteller und Modell (Geräte-ID) dienen.
Class-ID : Hersteller-ID : Geräte-ID
Beispiel:
0200:8086:10B5
Hierbei steht:
* 0200 für einen Ethernet Network Controller
* 8086 für die Intel Corporation (die Zahl ist zwar hexadezimal, aber die Ziffern würden bei Dezimalschreibweise für Intels Urvater der x86-Architektur stehen)
* 10B5 für das Gerät 82546 GB Gigabit Ethernet Controller (Copper)
Über die Class-ID wird das Gerät einer bestimmten Gruppe zugeordnet. Das erleichtert die Ermittlung unbekannter Geräte.

## Operationen auf dem PCI-Bus

Nach der Konfiguration aller Geräte durch das BIOS können alle Geräte über ein Befehlsprotokoll angesprochen werden. Dieses setzt sich aus dem Befehl, der Adresse und einer Folge von Daten zusammen.
| C/BE | C/BE | C/BE | C/BE | Beschreibung |
| 3# | 2# | 1# | 0# | Beschreibung |
| 0 | 0 | 0 | 0 | Der Interrupt Acknowledge Befehl ist ein implizierter Lesezugriff auf den System-Interruptcontroller. Die „byte enable“-Bits geben dabei die Größe des Interruptvektors an. |
| 0 | 0 | 0 | 1 | Der Special Cycle Befehl ist für einfache Broadcast-Nachrichten (?) |
| 0 | 0 | 1 | 0 | Der I/O Read Befehl ist für das Lesen aus dem Speicher, der als I/O-Adressraum (englisch „address space“) eingebunden ist. |
| 0 | 0 | 1 | 1 | Der I/O Write Befehl ist für das Schreiben in den Speicher, der als I/O Adressraum (englisch „address space“) eingebunden ist. |
| 0 | 1 | 0 | 0 | reserviert |
| 0 | 1 | 0 | 1 | reserviert |
| 0 | 1 | 1 | 0 | Der Memory Read-Befehl ist für das Lesen aus dem Speicher, der als „Memory Address Space“ eingebunden ist. |
| 0 | 1 | 1 | 1 | Der Memory Write-Befehl ist für das Schreiben in den Speicher, der als „Memory Address Space“ eingebunden ist. |
| 1 | 0 | 0 | 0 | reserviert |
| 1 | 0 | 0 | 1 | reserviert |
| 1 | 0 | 1 | 0 | Der Configuration Read-Befehl liest aus den internen Konfigurationsregistern (Configuration Space). |
| 1 | 0 | 1 | 1 | Der Configuration Write-Befehl schreibt in die internen Konfigurationsregister (Configuration Space). |
| 1 | 1 | 0 | 0 | Der Memory Read Multiple-Befehl liest mehr als eine Cachezeile aus dem Speicher. |
| 1 | 1 | 0 | 1 | Der Dual Address Cycle-Befehl erlaubt das Hintereinander-Senden von zwei 32-Bit-Adresszeilen, um einen 64-Bit-Adressbereich in einer 32-Bit-PCI-Umgebung ansprechen zu können. |
| 1 | 1 | 1 | 0 | Der Memory Read Line-Befehl liest eine Cachezeile aus dem Speicher. |
| 1 | 1 | 1 | 1 | Der Memory Write and Invalidate-Befehl schreibt mindestens eine ganze Cachezeile in den Speicher. |
Auf reserviert-Befehle dürfen PCI-Geräte nicht reagieren.

## Grundlegende PCI-Varianten

* PCI Conventional, erlaubt Busbreiten von entweder 32 oder 64 Bit und Übertragungen mit 33 oder 66 MHz Takt (133 bis 533 MByte/s)
* PCI-X, 64-Bit-Version von PCI Conventional mit 66, 100 oder 133 MHz Takt (533, 800 oder 1067 MByte/s)
* PCI-X 266 (PCI-X DDR/QDR), PCI-X mit 266 MHz Nominaltakt (2133 bis 4266 MByte/s)
* Mini PCI, kleinere Bauform, nur 32 Bit, für Notebooks etc.
* PC Card oder Cardbus, externe Karten (Nachfolger von PCMCIA), kleinere Bauform, 32 Bit, für Notebooks etc.
* CompactPCI, elektrisch voll PCI-kompatibel, jedoch in Form von Einschüben mit 3 bzw. 6 HE
* PXI, für die Messtechnik optimierte Weiterentwicklung des CompactPCI
* PCI Low-Profile, halbe Bauhöhe, 32 oder 64 Bit, siehe Tabelle
* PC/104-Plus, PCI-104 und PCI/104-Express, voll PCI-kompatibel für Stapelcomputer, Nachfolger von PC/104
* ASUS Media Bus, proprietäre Lösung für die Erweiterung des PCI-Steckplatzes um einen ISA-Anschluss für kombinierte Grafik- und Soundkarten, bzw. kombinierte SCSI-Controller und Soundkarten
* PCI Express (PCIe), wird als Standardsockel für Grafik- und Zusatzkarten (wie zum Beispiel RAID-Controller) benutzt.
* ExpressCard, externe Karten (Nachfolger der 32 Bit PC Card), zu PCIe kompatibel, kleinere Bauform, PCI-Express-1x-Schnittstelle (1 Lane), für Notebooks etc.

## Abmessungen der PCI-Varianten

| | Standard | Standard | Standard | Low Profile | Low Profile | Low Profile |
| | Kartentyp | Zoll | mm | Kartentyp | Zoll | mm |
| Minimale Höhe | | | | | 0,945″ | 024 mm |
| Maximale Höhe | | 04,2″ | 107 mm | | 2,536″ | 064 mm |
| Maximale Länge | kurze Karte | 06,6″ | 168 mm | MD1 | 4,721″ | 119,91 mm |
| Maximale Länge | lange Karte | 12,283″ | 312 mm | MD2 | 6,6″ | 167,64 mm |

## Kodierung der Kontaktleiste

* 3,3-V-kompatible Karten haben eine Kerbe links (Richtung Slotblech)
* 5-V-kompatible Karten haben eine Kerbe rechts
* Universalkarten haben beide Kerben
* Slots nach PCI 2.x haben einen Steg rechts (die dem Slotblech abgewandte Seite). Die PCI 2.3-Spezifikation unterstützt zwar keine 5-V-Karten mehr, diese passen aber dennoch physisch in den Slot. Einige Mainboards unterstützen allerdings trotzdem noch 5-V-Karten in PCI-2.3-Slots. Das geht aber nur mit 33 MHz PCI Takt. →Mainboardspezifikation konsultieren.
* Slots nach PCI 3.0 haben einen Steg links (Richtung Slotblech), so dass nur noch 3,3-V- und Universalkarten mit der entsprechenden Kerbe eingesteckt werden können.

## Andere PCI-Varianten

* PCI eXtensions for Instrumentation (PXI) ist ein auf PCI-Technik basierender Bus, welcher für die besonderen Anforderungen in der Mess- und Automatisierungstechnik optimiert wurde.
* Extended PCI (PCI-X)
* PCI Express (zuerst 3GIO genannt [Eingabe/Ausgabe der dritten Generation], Abkürzung PCIe oder PCI-E) ist im Gegensatz zum PCI-Bus auf der elektrischen Ebene eine serielle Punkt-zu-Punkt-Verbindung, die aber PCI-Signalisierung und -Programmiertechniken verwendet und daher von Betriebssystem und Software wie PCI behandelt werden kann. Seit 2004 ersetzt PCI Express schrittweise sowohl PCI als auch AGP. Sie ist nicht kompatibel zu PCI oder AGP.

## Powermanagement mit PCI

Die Energiesparfunktionen für den PCI-Bus sind Teil einer optional zu implementierenden Spezifikation, die zeitlich zwischen den PCI-Versionen 2.1 und 2.2 angesiedelt ist. Jedes PM-fähige Gerät hat ein zusätzliches 8 Byte langes Feld im Configuration Space, über das es mitteilen kann, welche Energiespar-Modi es unterstützt und entsprechend gesteuert werden kann. Jedes PCI-Gerät kann sich in einem von vier möglichen Operationsmodi befinden (D0-D3). Je höher die Nummer, desto weniger Energie verbraucht das Gerät. Auch wenn ein Gerät nichts von PCI-Powermanagement weiß, unterstützt es die Modi D0 und D3, da diese äquivalent zu an und aus sind. Ob und wie viel Energie in den dazwischen liegenden Modi gespart werden kann, liegt im Ermessen des Hardware-Herstellers. Ein Gerät kann aus einem bestimmten Modus in alle „darunter“ liegenden Modi wechseln sowie aus jedem Modus in den Zustand D0.
Obwohl man Geräte durchaus manuell, während des laufenden Betriebes, in einen anderen Energiesparmodus bringen kann, wird man in den meisten Fällen mit Hilfe von APM oder ACPI einen globalen Energiesparmodus für den Computer setzen, der vom Powermanagement des Betriebssystems gesteuert wird. In den Modi D1 und D2 besteht für ein entsprechend ausgerüstetes PCI-Gerät die Möglichkeit, zu einem beliebigen Zeitpunkt ein sogenanntes Power Management Event Signal (PME) auf den Bus zu legen, das dann an das Powermanagement des Betriebssystems weitergeleitet wird und dazu verwendet werden kann, das System auf Anforderung wieder global „aufzuwecken“, etwa wenn eine Netzwerkkarte einlaufende Daten erkennt, die behandelt werden müssen.

## Begriffe

* Fast Back-to-Back: Wenn alle Geräte diesen Modus unterstützen, kann die Idle-Phase zwischen zwei PCI-Zyklen entfallen. Das erhöht den Datendurchsatz auf dem Bus.
* Special Cycle: Über „Special Cycle“ können Rundrufnachrichten (Broadcast messages) an alle angeschlossenen Geräte gesendet werden.
* Address Space: einer von drei Adressbereichen – Memory, I/O oder Configuration Space
* Configuration Space: Der „Configuration Space“ ist ein Speicherbereich (256 bzw. 4096 Bytes für PCI-X und PCIe) jedes PCI-Geräts, der zur Identifizierung und Konfiguration des Geräts dient. Der Configuration Space besteht aus einem standardisierten Kopf (Header) und zusätzlichen gerätespezifischen Daten wie beispielsweise Adressbereichen. Das BIOS bzw. der Treiber für ein PCI-Gerät kann anhand dieser Daten das Gerät passend konfigurieren.

## Interessengruppen
### Special Interest Group

1992 wurde die Spezielle Interessengruppe „PCI-SIG“ (ursprüngliche Bezeichnung: „Peripheral Component Interconnect Special Interest Group“) gegründet. Die Aufgabe der PCI-SIG ist die Verwaltung und die Weiterentwicklung des PCI-Standards. Bei PCI-SIG können Firmen und Organisationen Mitglied werden. Im Jahr 2007 gab es mehr als 800 Mitglieder.

### PCI Industrial Computer Manufacturers Group

Die 1994 gegründete PCI Industrial Computer Manufacturers Group (PICMG) ist ein Konsortium aus über 450 Firmen, die den PCI-Standard für die Nutzung im industriellen Bereich, in der Medizin, dem Militär und der Telekommunikation erweitern wollen. Daraus entstanden Spezifikationen wie CompactPCI oder AdvancedTCA.