前面提到,PCIe是基于PCI的基础上演进而来的,所以,PCIe在很多地方都有PCI的影子。从软件角度看,基于PCI的驱动和软件几乎可以无缝移植到PCIe系统上来而不需要做任何改变。

Linux内核中pci的定义同样适用于PCIe(include /linux/pci.h)

       而从硬件角度看,差异就非常大了。

  • Intel革了自己的命,推出了PCIe。最重要的一点是把并行传输改成了串行。
  • PCI是共享型总线,多个设备共享一条总线,这种情况下必然存在总线总裁。PCIe则是点对点连接,一个设备直接连接到另一个设备,不存在总线竞争和仲裁。
  • PCI总线上是单向传输,任意时刻只有一个方向的传输,PCIe则是任意时刻都可以双向传输。
  • PCI有很多的边带控制信号,如FRAME#, IRDY#, TRDY, STOP#等。PCIe总线上传输的都是基于包(packet),控制和其他处理都嵌入在包里。

总结:

PCI/PCI-XPCIe
总线Up to 64bit8bit
时钟Up to 133MHz2.5G/5G/8G/16G
传输速度Up to 1066Mb/s250Mb/s(单lane单向 @ Gen1)
传输模式单向并行双向串行
总线类型共享点对点
边带信号

 思考:

Gen1 单lane的PCIe的带宽为什么不是2500M / 8=312.5MB呢?

PCIe Switch相当于PCI总线中的什么?


上期问答:

思考:

PCI和PCIe的差异是什么?

  见本文。

 基于PCI开发的软件能否运行在PCIe上?

 可以。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注