PCIE软件基础知识

什么是PCIE

PCIe,全称 Peripheral Component Interconnect Express,是一种高速串行计算机扩展总线标准,用于连接计算机内部的硬件组件,如显卡、存储设备、网络适配器等。PCIe是一种点对点的双向通信标准,这意味着它在发送和接收方向上都提供专用的信道,与传统的PCI总线相比,PCIe提供了更高的带宽和更低的延迟。

PCIE设备长什么样

比如这是一张虚假的显卡

虽然上图内容是假的, 但还是很形象的.

带宽

PCI Express (PCIe) 是一种高速串行计算机扩展总线标准,用于连接主板上的各种硬件组件,如显卡、存储设备和网络适配器等。PCIe带宽主要由以下几个因素决定:

  1. 版本
  • PCIe 1.0:最初版本,每个通道的原始数据传输速率为2.5 GT/sGiga Transfers per second),考虑到8b/10b编码的效率,实际数据传输速率为250 MB/s

  • PCIe 2.0:将每个通道的原始数据传输速率翻倍至5.0 GT/s,实际数据传输速率为500 MB/s

  • PCIe 3.0:再次将每个通道的原始数据传输速率翻倍至8.0 GT/s,实际数据传输速率为1 GB/s

  • PCIe 4.0:继续将每个通道的原始数据传输速率翻倍至16.0 GT/s,实际数据传输速率为2 GB/s

  • PCIe 5.0:每个通道的原始数据传输速率提升至32.0 GT/s,实际数据传输速率为4 GB/s

  • 通道数lane count):

  • PCIe插槽有不同的通道数,表示为x1x2x4x8x16等。通道数越多,带宽越高。

  • 例如,一个PCIe 3.0 x16插槽的总带宽为16 × 1 GB/s = 16 GB/s(双向,即上行和下行总和),单向带宽为8 GB/s

  • 方向性

  • PCIe带宽通常是双向的,这意味着数据可以同时在两个方向上传输,增加了一倍的有效带宽。

PCIE链路状态

包括detect, polling, configuration等, 大致了解下先. 在固件下需要做PCIE设备的链接, 就是从detect状态切换至L0状态.

PCIE总线的组织结构

图中与 PCI 总线相关的模块包括: HOST 主桥、 PCI 总线、 PCI 桥和 PCI 设备。在 PCI 总线中有三类设备: PCI Agent 设备和桥设备。如PCIE的网卡, 显卡, RAID卡等, 均属于PCIEAgent 设备. 而其插槽, 就可以认为是一个PCIE桥设备. 插槽通常如下图:

Type0和Type1

PCI 总线定义了两类配置请求, 一类是 Type 00h 配置请求, 另一类是 Type 01h 配置请求。 PCI 总线使用这些配置请求访问 PCI 总线树上的设备配置空间, 包括 PCI 桥和 PCI Agent设备的配置空间。

其中 HOST 主桥或者 PCI 桥使用 Type 00h 配置请求, 访问与 HOST 主桥或者 PCI 桥直接相连的 PCI Agent 设备或者 PCI 桥; 而 HOST 主桥或者 PCI 桥使用 Type 01h 配置请求, 需要至少穿越一个 PCI 桥, 访问没有与其直接相连的 PCI Agent 设备或者 PCI 桥。如下图所示, HOST 主桥可以使用 Type 00h 配置请求访问 PCI 设备 01, 而使用 Type 01h 配置请求通过 PCI12 或者 3 转换为 Type 00h 配置请求之后, 访问 PCI 总线树上的 PCI 设备 1121223132

配置空间

共同点

Pci Agent 设备配置空间

Pci 桥设备配置空间

其中相应寄存器含义可结合PCIE手册查看其详细含义.

上面说的配置空间通常只描述地址范围为 0x000x3F的寄存器, 这 64 个字节是所有 PCI 设备必须支持的。 事实上,许多 PCI 设备也仅支持这 64 个配置寄存器。

此外 PCI / PCI⁃XPCIe 设备还扩展了 0x40~0xFF 这段配置空间, 也属于标准配置空间, 叫做能力寄存器, 即PCI Express Capability. 在这段空间主要存放一些与 MSI 或者 MSI⁃X 中断机制和电源管理相关的 Capability 结构。

身为软件开发人员, 要了解基本的配置空间中的寄存器含义, 比如Vendor ID指厂商, Class Code指设备类型等. 软件开发时一定会根据相应的设备类型或厂商信息做适配.

Capabilities

Capabilities其实就是一个单向链表. 0x34寄存器中的值是第一个capability在配置空间中的偏移, 如下图, 先0xA4处是第一个capability, 0x5C是第二个capability. 以此类推, 直至找到0x10(PCIE能力标识)或一个都没找到后结束.

每个Capability的结构如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值