PCI vs PCIe
前面提到,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-X | PCIe | |
总线 | Up to 64bit | 8bit |
时钟 | Up to 133MHz | 2.5G/5G/8G/16G |
传输速度 | Up to 1066Mb/s | 250Mb/s(单lane单向 @ Gen1) |
传输模式 | 单向并行 | 双向串行 |
总线类型 | 共享 | 点对点 |
边带信号 | 有 | 无 |
思考:
Gen1 单lane的PCIe的带宽为什么不是2500M / 8=312.5MB呢?
PCIe Switch相当于PCI总线中的什么?
上期问答:
思考:
PCI和PCIe的差异是什么?
见本文。
基于PCI开发的软件能否运行在PCIe上?
可以。