У оригінальній рамці PCI ("Звичайна PCI"), а також в PCI-X, пристрої відповідали "слотам", кожен зі своїми роз'ємами, приєднаними до тієї ж паралельної шини. Кожен слот мав унікальний ідентифікаційний штифт, який стверджувався під час перерахунку. Перерахування по суті запитувало (для кожного слота): "Ей, чи є щось у цьому слоті?" Пристрій реагував на передачу даних на шину у відповідь на цей сигнал. Відсутність відповіді означало відсутність пристрою.
Пристрій також може бути "мостом", що означало, що він утворює підпорядковану шину. Ця шина мала б окремий ідентифікатор (присвоєний з висхідного потоку) та мала б свій набір слотів, які були перераховані незалежно.
PCI-Express (PCIe) зовсім інший. PCIe насправді не є шиною - як у ресурсі, що ділиться між пристроями; натомість кожен пристрій має власне індивідуальне послідовне з'єднання "точка-точка" до свого верхнього пристрою (і до будь-яких пристроїв нижче - і якщо у нього є пристрої нижче, це означає, що він також функціонує як міст). Подумай про PCIe як про локальну мережу. Кожен міст є аналогом комутатора, який має купу портів, підключених до інших пристроїв. Інші пристрої можуть бути кінцевими пристроями, або вони можуть бути іншими комутаторами (тобто мостами PCIe).
PCIe був розроблений таким чином, що його концептуальні рамки та адресація (а отже, і поведінка, що надається програмному забезпеченню) сумісні з PCI та PCI-X. Однак реалізація зовсім інша. Наприклад, при перерахуванні пристроїв, оскільки це "точка-точка", єдине питання, яке потрібно визначити в кожній точці перерахування, - "щось там?" Оскільки кожен пристрій має власний незалежний набір проводів, ідентифікатори пристроїв, по суті, всі жорстко закодовані (отже, кожен міст, включаючи "кореневий комплекс" верхнього рівня, повідомляє кожному пристрою, яким буде його ідентифікатор пристрою).
У всіх випадках "функціональна" частина шини / пристрою / функції обробляється суворо в межах периферії. Наприклад, двопортовий контролер NIC часто матиме дві функції, по одній для кожного порту. Вони можуть бути налаштовані та керовані незалежно, але шлях даних від процесора до функції однаковий для обох.