Dalam kerangka PCI asli ("PCI Konvensional") dan PCI-X juga, perangkat terkait dengan "slot", masing-masing dengan konektornya sendiri terpasang ke bus paralel yang sama. Setiap slot memiliki pin ID unik yang dinyatakan selama enumerasi. Pencacahan pada dasarnya bertanya (untuk setiap slot): "Hei, apakah ada sesuatu di slot ini?" Perangkat merespons dengan mengarahkan data ke bus sebagai respons terhadap sinyal ini. Kurangnya respons berarti tidak ada perangkat.
Perangkat juga bisa menjadi "jembatan" yang berarti bahwa itu membentuk bus bawahan. Bus itu akan memiliki ID terpisah (ditugaskan dari hulu), dan akan memiliki set slot sendiri yang disebutkan secara independen.
PCI-Express (PCIe) sama sekali berbeda. PCIe sebenarnya bukan bus - seperti sumber daya yang dibagikan di antara perangkat; sebaliknya setiap perangkat memiliki sambungan serial point-to-point sendiri ke perangkat hulu (dan ke perangkat hilir - dan jika memiliki perangkat hilir, itu berarti berfungsi sebagai jembatan juga). Pikirkan PCIe seperti LAN. Setiap jembatan dianalogikan dengan sakelar, yang memiliki banyak port yang terhubung ke perangkat lain. Perangkat lain mungkin perangkat terminal, atau mungkin switch lain (yaitu PCIe bridges).
PCIe dirancang sedemikian rupa sehingga kerangka kerja konseptual dan pengalamatannya (dan karenanya perilaku yang disediakan untuk perangkat lunak) kompatibel dengan PCI dan PCI-X. Implementasinya sangat berbeda. Dalam pencacahan perangkat, misalnya, karena itu point-to-point, satu-satunya pertanyaan yang perlu ditentukan pada setiap titik dalam pencacahan adalah "ada apa di sana?" Karena setiap perangkat memiliki rangkaian kabel sendiri, ID perangkat pada dasarnya semua kode keras (karenanya setiap jembatan, termasuk "root complex" tingkat atas, memberi tahu setiap perangkat apa ID perangkatnya nantinya).
Dalam semua kasus, bagian "fungsi" dari bus / perangkat / fungsi ditangani secara ketat di dalam periferal. Misalnya, pengontrol NIC port ganda sering kali memiliki dua fungsi, satu untuk setiap port. Mereka dapat dikonfigurasi dan dioperasikan secara independen, tetapi jalur data dari CPU ke fungsi adalah sama untuk keduanya.