【PCIe 5.0 - 2】PCIe结构

PCIe结构是点到点链路连接各个组件 - 下图显示了示例结构。此图说明了称为Hierarchy结构的单个结构实例 - 由Root Complex (RC)、多个Endpoints(I/O 设备)、一个Switch和一个PCIe to PCI/PCI-X Bridge组成,这些都通过PCIe Links互连。
图1 Example PCI Express Topology

Root Complex

  • RC 表示将 CPU/memory子系统连接到 I/O 的 I/O 层级结构的根。
  • 如图1所示,一个RC可以支持一个或多个Pcie Ports。每个接口定义了一个分离的层级区域,每个层级区域可以由单个Endpoint或包含一个或多个Switch组件和Endpoint的子层级组成。
  • RC支持作为Requester 生成configure request
  • RC可以支持作为Requester 生成I/O Request
    允许RC 向选定的Root Port的位置 80h 和 84h 中的一个或两个生成 I/O Request,而不考虑该Root Port的 PCI Bridge I/O 解码配置; 建议仅在需要时启用此机制。
  • RC可以支持作为Requester生成Locked Requests
  • RC在作为Completer时不支持Lock语义
  • 通过 RC 在层次结构域之间路由对等事务的能力是可选的。 例如,一个实现可以在Root Complex内部结合一个真实或虚拟的Switch,以便以一种软件透明的方式实现完全的对等支持。 与Switch的规则不同,当在层次结构域之间对等路由事务时,通常RC 允许将数据包拆分为更小的数据包(如下所述除外),例如,将256 字节单个数据包拆分为 两个数据包,每个数据包的负载为 128 字节。生成的数据包受本规范中包含的正常数据包形成规则的约束(例如 Max_Payload_Size、Read Completion Boundary (RCB) 等)。 设计人员应注意,将数据包拆分为较小的数据包可能会对性能产生负面影响,尤其是对于在 PCI Express 到 PCI/PCI-X 桥接器后面寻址设备的事务。
    例外:支持 Vendor_Defined Messages 的点对点路由的 RC 不允许将 Vendor_Defined Message 数据包拆分为更小的数据包,除非在 128 字节边界(即,除最后一个之外的所有结果数据包都必须是 128 字节的整数倍长度),以保留将Message通过 PCI Express 转发到 PCI/PCI-X 桥的能力。

Endpoints

Endpoint是指一种Function,它可以代表其自身或代表不同的非 PCIe设备(PCI 设备或主机 CPU 除外),例如,PCI Express 事务的请求者或完成者 Express 连接的图形控制器或 PCI Express-USB 主机控制器。 端点分为Legacy、PCI Express 或Root Complex Integrated Endpoints (RCiEP)。

Legacy Endpoint规则

  • Legacy Endpoint必须是有Type 0 Configuration Space header的Function。
  • Legacy Endpoint作为Completer支持Configuration Requests
  • Legacy Endpoint作为Completer可以支持I/O Requests.
    • 允许Legacy Endpoint接收对位置 80h 和 84h 之一或两者的 I/O 请求,而无需考虑该Endpoint的 I/O 解码配置。
  • Legacy Endpoint可以生成I/O Request.
  • Legacy Endpoint禁止发出Locked Request
  • 如果设备的 legacy软件要求需要,Legacy Endpoint作为Completer可以支持锁定内存语义
  • Legacy Endpoint可以实现Extended Configuration Space Capabilities,但软件可能会忽略此类Capabilities。
  • 作为Memory Transaction Requester运行的Legacy Endpoint不需要能够生成 4 GB 或更大的地址。
  • 如果请求中断资源,则需要Legacy Endpoint来支持 MSI 或 MSI-X 或两者。 如果实施了 MSI,则允许Legacy Endpoint支持 MSI 能力结构的 32 位或 64 位 Message Address版本。
  • 允许Legacy Endpoin支持请求内存资源的Base Address Registers的 32 位寻址。
  • Legacy Endpoint 必须出现在由 Root Complex 发起的层次结构域之一中。

PCI Express Endpoint规则

  • PCI Express Endpoint是具有Type  00h Configuration Space header的Function。
  • PCI Express Endpoint支持作为Configure Request的Completer。
  • PCI Express Endpoint不得依赖于通过 BAR 声明的 I/O 资源的操作系统分配。
  • PCI Express Endpoint禁止生成I/O Requests.
  • PCI Express Endpoint不支持作为Locked Request的completer或作为Requester生成它们。
    必须编写符合 PCI Express 的软件驱动程序和应用程序,以防止在访问 PCI Express Endpoint时使用lock语义。
  • 作为Memory Transaction Requester运行的 PCI Express Endpoint需要能够生成大于 4 GB 的地址。
  • 如果请求中断资源,则要求 PCI Express Endpoint支持 MSI 或 MSI-X 或两者。如果实施了 MSI,则 PCI Express Endpoint必须支持 MSI Capability结构的 64 位Message Address版本。
  • 通过 BAR 请求内存资源的 PCI Express Endpoint必须设置 BAR 的 Prefetchable 位,除非该范围包含具有读取副作用的位置或Function不接受写入合并的位置。 有关设置 Prefetchable 位的其他指导,请参见spec第  7.5.1.2.1 节。
  • 对于 PCI Express Endpoint,所有设置了 Prefetchable 位的 BAR 都必须支持 64 位寻址。 所有没有设置Prefetchable位的 BAR 都允许 32 位寻址。
  • BAR 请求的最小内存地址范围是 128 字节。
  • PCI Express Endpoint必须出现在由RC开始的层次结构域之一中。

Root Complex Integrated Endpoin规则

  • Root Complex Integrated Endpoint (RCiEP) 在包含Root Port的RC的内部逻辑上实现。
  • RCiEP 必须是具有Type 00h Configuration Space header的Function。
  • RCiEP 作为Completer必须支持Configuration Requests。
  • RCiEP 不得申请 BAR 声明的 I/O 资源。
  • RCiEP 不得生成 I/O 请求。
  • RCiEP 作为Completer不支持Loked Requests或作为Requester生成它们。 必须编写符合 PCI Express 的软件驱动程序和应用程序,以防止在访问 RCiEP 时使用lock语义。
  • RCiEP作为Memory Transaction Requester需要能够生成不小于主机作为Completer处理的地址。
  • 如果请求中断资源,则需要 RCiEP 来支持 MSI 或 MSI-X 或两者。 如果实施了 MSI,则允许 RCiEP 支持 MSI Capability结构的 32 位或 64 位Message Address版本。
  • RCiEP 支持请求内存资源的Base Address Registers的 32 位寻址。
  • RCiEP 不得在 PCI Express Extended Capability中实现Link Capabilities, Link Status, Link Control, Link Capabilities 2, Link Status 2,和Link Control 2 registers。
  • 如果 RCiEP 与可选的 Root Complex Event Collector相关联,它必须通过 Root Complex Event Collector通知 PME 和错误条件。
  • 一个RCiEP 不得与多个Root Complex Event Collector相关联。
  • RCiEP 不实施Active State Power Management。
  • RCiEP 不能独立于整个Root Complex进行热插拔。
  • RCiEP 不得出现在Root Complex公开的任何层次结构域中。
  • RCiEP 不得出现在Switch中。

Switch

Switch是多个虚拟 PCI-to-PCI Bridge设备的逻辑组件,如下图所示。 所有Switch都受以下基本规则的约束。

Logical Block Diagram of a Switch
  •  Switches在配置软件中表现为两个或多个逻辑 PCI to PCI Bridges。
  • Switch使用 PCI Bridge机制转发事务; 例如,基于地址的路由,除非参与如spec第 6.14 节所定义的多播。
  • 除本文档中另有说明外,Switch必须在任何端口集之间转发所有类型的Transaction Layer Packets (TLP)。
  • 必须支持第 6.5 节中指定的Locked Requests。 Switches不需要支持Downstream Ports作为Locked Requests的发起端口。
  • 每个启用的Switch Port都必须符合本文档中的Flow Control规范。
  • 不允许Switch将数据包拆分为更小的数据包,例如,不得将具有 256 字节的单个数据包分成两个各具有 128 字节有效载荷的数据包。
  • 当争夺同一Virtual Channel时,Switch的Ingress Ports(入站链路)之间的仲裁可以使用轮询或加权轮询来实现。 这在后面的说明中会更详细地描述。
  • Endpoints(由Type 00h Configuration Space headers表示)不得作为代表Switch Downstream Ports的虚拟PCI-to-PCI Bridges的对等点出现在Switch内部总线上的配置软件中。

Root Complex Event Collector

  • Root Complex Event Collector必须遵守 RCiEP 的所有规则。
  • Root Complex Event Collector支持终止来自RCiEP的错误和PME消息。
  • 不需要Root Complex Event Collector 来解码任何内存或I/O 资源。
  • Root Complex Event Collector由其Device/Port Type值标识(参见第 7.5.3.2 节)。
  • Root Complex Event Collector具有Base Class 08h、ub-Class 07h 和Programming Interface 00h.
  • Root Complex Event Collector驻留在Root Complex中的总线上。 允许多个Root Complex Event Collector驻留在单个总线上。
  • Root Complex Event Collector 通过Root Complex Event Collector Endpoint Association Extended Capability 明确声明支持的RCiEP。
  • Root Complex Event Collector是可选的。

PCI Express to PCI/PCI-X Bridge

PCI Express to PCI/PCI-X Bridge提供了 PCI Express 结构和 PCI/PCI-X 层次结构之间的连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值