美文网首页
pcie 配置空间

pcie 配置空间

作者: 1哥 | 来源:发表于2023-06-24 00:18 被阅读0次

PCIe 配置

1.BDF

和pci 总线一样,pcie 通过8bit Bus number, 5bit Device number, 3bit Function number的组合唯一标识(BDF)一个pcie拓扑结构的每个function.一个pcie拓扑结构中的所有的BDF,由配置软件负责探测。

1.1 pcie bus

(1) 8-bit bus bumber 意味着一个拓扑结构最多有256个bus number。
(2) bus number 起始值为0,且bus 0 通常都分配给RC(Root Complex).
(3) PCI-to-PCI bridges(P2P bridges) 会创建新的bus,用于扩展连接更多的PCIe devices.
(4) 每个bus 都会赋予一个unique bus number.
(5) 枚举过程(enumeration process)会通过深度优先的策略,从RC bus 0, device 0,function 0开始搜索整个拓扑结构,并发现显得bridges 就创建一个新的bus, 且为该新的bus 分配一个独一无二的bus number,该bus number 大于bridge所在的bus的bus number

1.2 pcie device

(1) 5-bit device number 允许一个pcie bus 最多可连接32个devices, 然而PCIe 点对点连接的特性,意味着一个pcie bus 最多只能连接一个pcie devices, 且该device number 为 device 0.
(2) RC 和 Switch 有virtual pci buses, 这样就允许它们连接多个devices.
(3) 每个device 必须实现function 0, 可能最多包含8个functions.
(4) 包含>=2 functions 的 devices, 称之为 multi-function devices.

1.3 pcie function

(1) functions 在devices 内部实现。
(2) multi-function devices 不要求function number 顺序实现。这样软件探测multi-function devices 时需要对每一个可能的function 检查一次。
(3) 每个funtion 有其自己的一套configuration address space 用以构建该function 所需要的resource.

2. 配置地址空间

(1)通过实现标准的配置寄存器,OS软件能够分配和配置系统资源(IO,Memory 地址, Interrupt 设置),以避免资源设置冲突。
(2)PCI 为每个function 定义一块专用的配置地址空间, 256 Byte 配置空间寄存器。
(3)映射到配置空间的寄存器,让软件能够发现function的存在,配置function 以保证正常工作,和检查function的状态。
(4)需要标准化的多数基本功能,定义在配置空间header 部分;
(5)标准化的可选的功能,称之为capability(power management, Hot Plug).

2.1 PCI-Compatible configuration space

image.png

(1)64dw(256 bytes) PCI-Compatible configuration space ,最初为PCI 设计。
(2)前16dw(64 bytes): configuration header(type 0, type 1);
(3)剩余48dw(192 bytes) 用于可选的功能,包括PCI capability.对于PCIe functions, 必须实现:PCI Express capability, Power Management, MSI and/or MSI-X.
(4) 该区域可通过

2.2 Extended Configuration register 空间

image.png

(1)PCIe 的256 bytes configuaration space 可为PCI 软件方式访问,亦可为PCIe ECAM (PCIe Extended Configuation Access Mechanism )访问。
(2)PCIe 在PCI 256 bytes configuaration space 基础之上,扩展到4KB.
(3)960dw extended configuration space 只能通过PCIe ECAM 方式访问,包含可选的extended capability;

2.3 configuration request

(1)只有RC 才能产生configuration requests, RC 代表系统处理器注入request 到pcie 网络和回传completions.
(2)configuration request 在PCIe 拓扑结构中基于BFD ID 路由;
(3)处理器只能Memory 和 IO requests, 所以不能直接产生configuration read 和 configuration write request. RC代表将转换这些访问request 成 config request.
(4)配置空间访问方式:
legacy PCI configuration 机制,使用indirect-IO 方式访问;
PCIe ECAM 机制,使用memory-mapped 方式访问;

2.4 legacy PCI configuration

(1)传统PCI configuration 使用间接IO 方式,用两个32bit IO 端口: configuration address port (0xcF8-0xcFB)和 configuration data port (0xcFC-0xcFF)

image.png
(2)访问PCI-Compatible configuration space register 的步骤:
i. 写BDF 和 dw number 到 configuration address port(0xCF8), 并将enable bit 置位;
ii. 1-, 2-,4-bytes IO read,write 送到configuration data port(0xCFC).这会让rc 产生config request
iii. RC 中的host bridge比较target bus 是否在host bridge所包含的bus 范围之内,若是则发起一个config read/write request.
xi. bus 比较过程
---bridges 包含三个寄存器,primary, secondary, subordinate bus number 寄存器。(primary bus number 是bridge的upstream bus number, secondary bus number 是bridge的downstream bus number,
image.png

subordinate bus number对于bridge 下面最大的bus number最大的bus.) bridge 只会处理type 1 config request.
---若request target bus number == 是bridge 的 secondary bus number, 则type 0 config request 转发到总线上。直连到该bus number 的device 会接收并处理该request.


image.png

---若request target bus number 在( secondary bus number,subordinate bus number]范围,则type 1 config request 转发到总线上。


image.png
---若若request target bus number 不在[secondary bus number,subordinate bus number]范围,则不转发这个config request.

2.5 PCIe Extended Configuation Access Mechanism

legacy PCI configuration访问模型需要两步产生一个config read 访问
PCIe Extended Configuation Access Mechanism: 通过将整个configuration space 映射到memory address 空间,只需要在指定的地址范围产生一个memory reques就会产生一个config request.

image.png
image.png
image.png

2.4 枚举过程

(1)枚举过程就是扫描pcie 拓扑网络
(2)确定一个function 的存在:通过读vendor id 寄存器,以确定一个function的存在。
(3)通过读所有的可能buses, devices,functions的vendor ID寄存器,可以确定哪些device 的存在
(4)确定一个device的存在
对于PCI device, config read request 一个不存在的device,会导致产生一个master abort error,没有device 对此config read request 作出反应,0xffff 返回给处理器
对于PCIe device, config read request 一个不存在的device, 会导致bridge 返回一个completion with status UR,而RC 则返回0xffff 给处理器。
(5)确定一个function 是一个ep 或者 bridge
通过config header的header type 寄存器,确定是否是ep或者bridge, 以及是否是multi-function.
header type: 0= not bridge (pcie ep) , 1 = P2P bridge


image.png

相关文章

网友评论

      本文标题:pcie 配置空间

      本文链接:https://www.haomeiwen.com/subject/ewhyydtx.html