PCIe协议学习笔记之--Configuration Overview

1 BDF (Bus, Device, Function)

BDF是在PCI中就有了的概念。在PCIe 拓扑结构中,我们通过总线号(bus number), 设备号(device numer)和功能号(function number)来唯一地标识各个function。Bus number用于表征当前设备挂载于哪条bus下面,Device number用于表征设备具体是总线下的哪个设备,function number用于表征是device里面的哪个function。

如上例图,从bus 0开始,每经过一个virtual P2P bridge就会形成一个新的Bus。PCIe最多支持256个bus number。软件通过“枚举”的流程来明确整个PCIe拓扑结构,在枚举时遵循深度优先原则,一旦发现一条新的bus后就继续扫描新bus下面的设备。

在单个bus下面最多可以支持32个设备。由于PCIe是点对点的协议,即单个PCIe link两端都只有1个设备(device)链接在一起,因此在PCIe拓扑结构中引入了Vritual P2P Bridge。Vritual P2P Bridge与Vritual P2P Bridge之间是通过virtual bus连接的,不受点对点的限制,这样就使得单个bus下面挂载多个设备成为可能。只有RC和Switch内部的bus下面才能挂载多个设备。

每个设备必须实现function-0, 最多可以实现8个function, 实现的多个function可以是不连续的,比如,function-0,2,7。软件扫描设备发现是multi-function设备时,就必须对该设备的所有function进行check。每个function都有自己独立的config adress space。

2 Configuration Address Space

  • PCI-Compitible Space

PCI兼容的配置空间大小是256B。前64B是config heaer,header分为type-0 config header和type-1 config header,bridge设备使用type-1 header, non-bridge设备使用type-0 header.

剩下的192B是optional PCI capability registers space.对于PCIe function 而言,必须实现的capability有:PCI Express capability, Power Management, MSI and/or MSI-X

如上所示,type-0的config header比type-1的header多了4个BAR。而type-1的header比type-0 header多了primary bus number, secondary bus number, subordinate bus number, memory base/limit, IO base limit,Bridge Control等, 这些信息都是在TLP routing中会用到的。

  • Extended Configuration Space

这部分配置空间一共960DW,这部分空间只能用Enhanced configuration机制(即MMIO)去访问。这部分通常包含 Advanced error reporting, Virtual Channels, Device Serial Number, Power Budgeting等。

3 配置空间访问方式

  • 3.1 IO间接寻址方式-Legacy PCI Compatible mechanism

分两步完成一次config access, 1)将BDF以及DW#写入Config Address port(IO addr 0CF8~0CFB), 2)访问Config Data port(IO addr 0CFC~0CFF)。这种方式在多核系统种,由于是2-step式的访问,为了保证原子性必须加锁,因此具有一定局限性。

  • 3.2 Memory Mapped Access - Enhanced mechanism

将Config影射到Memory空间,直接1-step完成访问。每个function 4K的config空间,按4K对齐的方式映射到一个256MB的Memory空间。

4 Configuration Requests

5 枚举流程

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值