【问题标题】:PCIe Configuration Space vs ECAMPCIe 配置空间与 ECAM
【发布时间】:2018-06-25 10:45:59
【问题描述】:

PCIe ECAM 是否与仅映射到内存而不是 I/O 的“PCI-Compatible Configuration Registers”完全相同?

在我看来,PCIe 使用与传统 PCI 相同的配置机制:[1]

| 31 | 30 - 24 | 23 - 16 | 15 - 11 | 10 - 8 | 7 - 2 | 1 - 0 | | Enable | Reserved | Bus Nr | Device Nr | Function Nr | Register Nr | 00 |

但在 PCIe 中,您可以使用保留字节来寻址函数的更多寄存器。 这是正确的吗?

在第 7.2.1 [2] 节中,ECAM 被定义为:

| 27 - 20 | 19 - 15 | 14 - 12 | 11 - 8 | 7 - 2 | 1 - 0 | | Bus Nr | Dev Nr | Function Nr | Ext. Register Nr | Register Nr | Byte Enable |

它看起来与常规配置非常相似。 只有保留位被转移到它们在 PCIe 中扩展的寄存器号。 但我可以像旧的一样使用它们吗?只在内存空间而不是IO空间中寻址?

[1]https://wiki.osdev.o/PCI#Configuration_Space_Access_Mechanism_.231 [2] 在 PCI Express Base Specification, Rev. 4.0 Version 1.0

【问题讨论】:

    标签: pci pci-e memory-mapping


    【解决方案1】:

    在比较中,您将苹果和橙子混合在一起。第一个地址解码由 PC-AT 架构系统 (*) 上的主机桥组件提供。这是一种使用 Intel 处理器的 I/O 地址空间与 PCI 总线配置空间机制接口的方式。它可以在 PCIe 系统上使用,因为 PCIe 主机桥组件为 PCIe 设备提供相同的接口。但是,在 PCI 和 PCIe 之间,主桥下面的所有内容都以完全不同的方式实现。

    同时,您展示的第二种解码方案只能在内存映射块内使用,PCIe 通过它提供对其扩展配置空间的访问。并且只有在该块以系统相关的方式映射到物理地址空间之后。

    因此,虽然它们具有相似的功能,但不,您不能以相同的方式使用它们。你可以:

    1. 使用第一种机制访问任何 PCI 或 PCIe 设备配置空间的前 256 个字节,但您必须使用第一种寻址方案,或者
    2. 使用第二种机制(包括前 256 个字节)访问任何 PCIe 设备的整个扩展配置空间,但随后您必须使用第二种寻址方案。

    (*) “通过 0xCF8 / 0xCFC 配置 PCI 总线的 I/O 空间接口”确实是 Intel / PC-AT 架构的一部分。其他系统架构(例如 MIPS)没有单独的 I/O 地址空间,为它们设计的主机桥具有不同的机制来生成 PCIe 配置空间访问(或者它们直接使用内存映射机制)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多