W oryginalnym frameworku PCI („konwencjonalnym PCI”), a także w PCI-X, urządzenia odpowiadały „gniazdom”, każde z własnymi złączami podłączonymi do tej samej szyny równoległej. Każde gniazdo miało unikalny identyfikator PIN, który został potwierdzony podczas wyliczenia. Wyliczenie zasadniczo pytało (dla każdego gniazda): „Hej, czy jest coś w tym polu?” Urządzenie zareagowało, wprowadzając dane do magistrali w odpowiedzi na ten sygnał. Brak odpowiedzi oznaczał brak urządzenia.
Urządzenie może być również „mostem”, co oznacza, że tworzy ono podrzędną magistralę. Ta magistrala miałaby oddzielny identyfikator (przypisany z góry) i miałaby swój własny zestaw gniazd, które zostały wyliczone niezależnie.
PCI-Express (PCIe) jest zupełnie inny. PCIe nie jest tak naprawdę magistralą - jak w zasobach współdzielonych między urządzeniami; zamiast tego każde urządzenie ma swoje indywidualne połączenie szeregowe punkt-punkt z urządzeniem nadrzędnym (i dowolnymi urządzeniami podrzędnymi - a jeśli ma urządzenia nadrzędne, oznacza to, że działa również jako most). Pomyśl o PCIe jak o sieci LAN. Każdy most jest analogiczny do przełącznika, który ma kilka portów podłączonych do innych urządzeń. Inne urządzenia mogą być urządzeniami końcowymi lub mogą być innymi przełącznikami (tj. Mostkami PCIe).
PCIe zostało zaprojektowane w taki sposób, aby jego struktura koncepcyjna i adresowanie (a zatem i zachowanie zapewniane oprogramowaniu) były zgodne z PCI i PCI-X. Implementacja jest jednak zupełnie inna. Na przykład przy wyliczaniu urządzeń, ponieważ jest to punkt-punkt, jedynym pytaniem, które należy ustalić w każdym punkcie wyliczenia, jest „coś tam?”. Ponieważ każde urządzenie ma swój własny niezależny zestaw przewodów, identyfikatory urządzeń są zasadniczo wszystkie zakodowane na stałe (stąd każdy most, w tym najwyższy poziom „kompleksu głównego”, informuje każde urządzenie, jaki będzie jego identyfikator urządzenia).
We wszystkich przypadkach część „funkcyjna” magistrali / urządzenia / funkcji jest obsługiwana ściśle w urządzeniu peryferyjnym. Na przykład dwuportowy kontroler NIC często ma dwie funkcje, po jednej dla każdego portu. Można je konfigurować i obsługiwać niezależnie, ale ścieżka danych od procesora do funkcji jest taka sama dla obu.