Die PCI-Definition erlaubt insgesamt 10 Devices (Loads) an einem PCI-Bus, wobei immer ein Device für die Host-Bridge verwendet werden muß. Die anderen können z.B. für On-Board-Komponenten, wie SCSI-, EIDE-, LAN-, oder Grafikadapter, verwendet werden. Über Slots, die als 2 Devices gezählt werden, können auch externe Geräte (PCI-Karten) an den Bus angekoppelt werden. Durch die Doppelzählung sind maximal 4 PCI-Slots verwendbar, da Host-Bridge und jene 4 Slots 9 der 10 vorhandenen Geräte besetzen.
Um auch andere Karten (z.B. ISA-Karten) nutzen zu können, kann über eine entsprechende Bridge der nötige Bus an den PCI-Bus angekoppelt werden, wodurch
auch ältere Karten weiterverwendet werden können. Die PCI-Spezifikation sieht Bus-Bridges zu eigentlich allen anderen Bussystemen vor, d.h. Bridges für die ISA, die ISA, die MCA sowie die PCMCIA. Damit will man die Probleme der MCA umgehen, die keinerlei Migrationspfad zwischen den alten ISA- und den neuen MCA-Karten vorsah. Am sinnvollsten ist dabei eine Brücke zwischen PCI und EISA, damit sind PCI-Karten, 8-Bit-ISA-Karten, 16-Bit-ISA-Karten und EISA-Karten einsetzbar. Auch technisch ist sie am interessantesten, weil sie die meisten Features bietet, dazu gehören die Möglichkeit doppelter Posted Writes; sowohl vom PCI-Bus zum Host als auch vom
EISA-Bus zur PCI-Bridge. Zudem stellt die EISA-Bridge alle Funktionen einschließlich der vollständigen EISA-Arbitration zur Verfügung.
Es ist ebenfalls möglich, Bus-Bridges zu benutzen, die für den IBM-PC nicht üblich sind. Ein entscheidender Vorteil, den es nur beim PCI-Bus gibt, ist die Existenz einer PCI-to-PCI-Bridge, wodurch zum Beispiel die Anzahl der Slots oder der On-Board-Komponenten erhöht werden kann. Diese Möglichkeit mehrere PCI-Busse parallel oder seriell in einem Rechner zu betreiben, wird durch die Skalierbarkeit des PCI-Bus ermöglicht. Hiermit ist es möglich, ein großes System oder eines mit hohen Leistungsanforderungen in mehrere Teilsysteme aufzuspalten, die unabhängig voneinander arbeiten können, ohne sich zu stören.
Insgesamt ist es möglich 256 Busse einzusetzen, wobei die ersten 255 Busse PCI-Busse sind und der letzte entweder ein weiterer PCI-Bus oder ein Expansion Bus
(d.h. ein EISA-, ISA-, MCA-, oder VL-Bus) sein kann.
Der PCI-Bus kennt zwei Arten von Bus Devices, Initiator und Target. Der Initiator initiiert einen Zugriff, indem er die Kontrolle über die Steuersignale übernimmt und die Adressen generiert, sowie Beginn und Länge einer Bus Transaktion bestimmt. Das Target aktiviert beim Erkennen seiner Adresse auf dem Bus ein Rückmeldesignal für den Initiator des Zugriffs. Das Target kann die Verfügbarkeit von Daten oder Lesebereitschaft, aber auch die Bitte um Erzeugung von Wait-States signalisieren. Mit diesen beiden Einheiten können alle Transfers und Zugriffe abgewickelt werden, was weitere Devices überflüssig macht. Die PCI-Bus Targets sind die Slaves des PCI-Bus. Sie selbst sind nicht in der Lage Zugriffe oder Transfers zu initiieren und sind deshalb darauf angewiesen, daß die Zugriffe durch einen Bus-Master oder die Host-CPU durchgeführt werden. Das PCI-Bus-Interface des Targets ist wie bei jedem anderen PCI-Device ein ASIC, das die PCI-Bus-Zyklen beherrscht und sinnvollerweise Burst-Modi unterstützen sollte. Optional kann auch ein Transfer Buffer implementiert werden, der einen Transfer von Daten von und zum Bus und I/O-Device mit geringer Latenz und ohne die Notwendigkeit zur Erzeugung von Wait-States ermöglicht. Die Daten sollten ohne eingreifen der CPU geschrieben und gelesen werden können, deswegen kann ein Slave mit einer eigenen CPU ausgerüstet sein. Hat ein Slave von der peripheren Einheit Daten empfangen, so kann er diesen Umstand der CPU oder einem Bus Master per Interrupt melden, die die Daten dann abholen können.