终结点设备中的内存和IO地址有何区别?

时间:2019-10-12 08:57:20

标签: pci pci-e

假设我们有两个PCIe端点设备A和B。A实现MMIO地址,而B实现IO地址。这些端点如何在内部处理这些地址?如何确定端点应使用MMIO或IO地址,或同时使用两者?从PCIe端点的角度来看,这会有什么不同? 看起来就像是用来与主机进行交互的地址。

1 个答案:

答案 0 :(得分:0)

设备设计者决定是实现IO空间还是MMIO空间,或者同时实现这两者。 (但我认为PCIe规范可能对实现MMIO空间有一些要求。)

这两种操作到达设备时显示为不同的事务类型。由设备决定如何处理它们。可能没有任何区别。

发布内存写操作,这意味着不需要设备响应,而I / O写操作则不发布,因此需要响应。当然,内存和I / O读取都是不发布的。 (https://paritycheck.wordpress.com/2008/01/13/pcie-posted-vs-non-posted-transactions

CPU处理它们的方式也可能有所不同。例如,在x86上,I / O指令正在序列化(因此速度较慢)。