元のPCIフレームワーク(「従来のPCI」)およびPCI-Xでも、デバイスは「スロット」に対応し、それぞれに同じパラレルバスに接続された独自のコネクタが付いていました。各スロットには、列挙中にアサートされる一意のIDピンがありました。列挙は本質的に(スロットごとに)「このスロットには何かありますか?」デバイスは、この信号に応答してバス上にデータを駆動することにより応答しました。応答がないことは、デバイスがないことを意味しました。
デバイスは、下位バスを形成することを意味する「ブリッジ」であることもできます。そのバスには個別のID(アップストリームから割り当てられます)があり、独自に列挙された独自のスロットのセットがあります。
PCI-Express(PCIe)はまったく異なります。PCIeは実際にはバスではありません-デバイス間で共有されるリソースのように。代わりに、各デバイスは、その上流デバイス(および任意の下流デバイス)への独自の個別のポイントツーポイントシリアル接続を持っています-下流デバイスがある場合、それはブリッジとしても機能していることを意味します)。PCIeをLANのように考えてください。各ブリッジは、他のデバイスに接続された多数のポートを持つスイッチに似ています。他のデバイスは端末デバイスである場合もあれば、他のスイッチ(PCIeブリッジなど)である場合もあります。
PCIeは、概念的なフレームワークとアドレス指定(したがってソフトウェアに提供される動作)がPCIおよびPCI-Xと互換性があるように設計されました。ただし、実装は完全に異なります。たとえば、デバイスを列挙する場合、ポイントツーポイントであるため、列挙の各ポイントで決定する必要がある唯一の質問は「何かありますか?」各デバイスは、ワイヤの独自の独立したセットを有しているので、デバイスIDは、本質的にすべてのハードコードされている(最上位の「複合ルート」を含む、したがって各ブリッジ、指示そのデバイスIDがどうなるか、各デバイス)。
すべての場合において、バス/デバイス/機能の「機能」部分は、ペリフェラル内で厳密に処理されます。たとえば、デュアルポートNICコントローラには、多くの場合、各ポートに1つずつ、2つの機能があります。これらは個別に構成および操作できますが、CPUから機能までのデータパスはどちらも同じです。