当前位置: 首页 > news >正文

PCIe(一)概述/拓扑/空间配置

一、PCI与PCIe总线

1.1 概述

        Peripheral Component Interconnect外围组件互联。PCIe总线是由PCI总线发展而来,多了个express,因此PCIe总线传输速度更快。PCI总线和PCIe总线都是属于局部总线,连接外部设备。在早期的PCI系统中,使用北桥来连接高速外围设备,负责核心系统通信,使用南桥来连接低速外设(如ISA总线,USB,SATA),管理中断控制器,时钟等系统信号。然而现代的PCIe架构将北桥集成到CPU中的根复合体中(Root Complex),南桥则被平台控制器中枢(PCH)取代。

1.2 基本特性

        PCI总线是一种多设备共享的并行总线架构,有32位和64位两种。5v电压下时钟频率为33 MHz,此时 PCI总线的峰值带宽为133 MB/s(32位)或266 MB/s(64位)。3.3v电压下时钟频率为66 MHz, PCI总线的峰值带宽为266 MB/s(32位)或533 MB/s(64位)。

        值得注意的是,PCIe是串行总线,使用差分信号以抗干扰,那为什么串行总线传输速率还要比并行传输要快呢?这是因为并行总线的多根信号线会存在time skew,必须要等到此次并行传输中最慢的一个信号被接收到,此次传输才算结束。其次并行总线依赖于外部时钟,为了保证接收端可靠采样,数据的传输延迟必须要小于一个时钟周期,如果总线变长,数据传输延迟势必会变大,这就需要更大的时钟周期,因此并行总线往往有频率上限。然而串行总线没有外部时钟,例如PCIe使用嵌入式时钟,时钟信息混在数据流中,不存在频率上限。

PCIe的多lane串行

        PCI Express(PCIe)确实采用了串行点对点连接的设计,但其多Lane(通道)结构并非传统意义上的并行总线传输。

        传统并行总线(如PCI/PCI-X)通过多根物理线路同时传输数据位,依赖同步时钟信号,易受信号偏移(skew)和时钟同步问题限制。

        而PCIe的多Lane中每个Lane是独立的差分信号对(一对发送,一对接收),各Lane传输独立的串行数据流,无共享时钟。数据通过字节分割(Byte Striping)分散到各Lane,接收端通过Lane-to-Lane De-skew技术对齐数据,接收端需补偿各Lane的传输延迟差异。

二、拓扑结构

2.1 PCI拓扑结构

PCI采用的是总线型拓扑。多个PCI设备或者PCI桥设备共享该条PCI总线。设备通过#REQ信号请求总线使用权,由仲裁器(通常是在北桥)根据一些算法来进行响应#GNT。

2.2 PCIe拓扑结构

PCIe是树形结构,Root Complex位于拓扑的根部,一端与CPU相连,他通过根端口拓展出多个下游分支。Switch交换机作为内部节点可以聚合多个下游链路,提供更多的端口用以连接Endpoint,他可以连终端设备也可以连下游的switch,而桥接设备bridge是用于连接PCIe与其他总线的。

2.3 PCI设备标识

每个端点连接的PCI设备通过唯一的16位BDF(Bus:Device:Function)标识,Bus为8位,因此一个PCIe总线拓扑结构中,最多支持256级总线,Device为5位,因此每条总线最多挂载32个PCI设备。每个SW代表一级Bus,挂载在该SW下的所有PCIE设备(包括SW和EP)都属于这一级Bus。Function是3位

三、空间配置

        由于PCI/PCIe上挂了多个设备,而这些设备的资源(地址,IO,中断等)都必须统一管理以避免冲突,因此PCI规定,每个设备都必须有一个地址空间(PCI为256字节,PCIe为4KB)来存储设备信息、资源需求和系统分配的资源地址等。同时,PCIe 采用了内存映射(ECAM)和更丰富的扩展结构,解决了传统 PCI 配置空间扩展性差、访问效率低等问题。

3.1 PCI空间配置

        256字节的配置空间中前64字节是强制的,剩余192是可选的。

        枚举是PCI发现并启动某个PCI设备的方式

  • 总线扫描

采用深度优先搜索(DFS)扫描每条总线的所有设备(Device 0-31)和功能(Function 0-7)。

通过读取Vendor ID(0x00)判断设备是否存在(非0xFFFF)。当确定该设备存在后,通过header type来判断是SW还是EP(EP的type为0,RC和SW的type为1)

  • 设备配置

进行BAR初始化,桥设备配置,中断分配

  • 树形拓扑构建

连接不同的总线,形成层次化拓扑,Root complex 连接总线0,发现桥设备后递归扫描下游的总线。

3.2 PCIe空间配置

PCIe的前64字节完全兼容PCI,后续空间仅PCIe支持,存放扩展功能(MSI/MSI-X PCI Express Capability(链路状态、宽度、速度) Power Management(PM) ARI、ACS、SR-IOV等)。

ECAM机制

Enhanced Configuration Access Mechanism。在 PCIe 中,配置空间不是通过 IO 端口访问,而是通过内存映射地址(MMIO)访问,这样可以让主机直接访问,并且可以挂载更多的设备。系统会保留一大段物理地址空间,专门用于 PCIe 配置空间。每个 PCIe Function 的 4KB 配置空间都被分配一个固定的内存地址,计算规则如下:

Address = ECAM_base + (Bus << 20) + (Device << 15) + (Function << 12)

相关文章:

  • Deit 模型讲解和代码资源合集
  • Redis高级|Redis单线程VS多线程(基础)
  • 举例说明单片机,主循环和中断资源访问冲突的案例
  • 苹果越来越像安卓,华为越来越像苹果
  • conda pack迁出环境异常
  • Monte Carlo衍生品定价(金融工程)
  • 无人机抛投器模块使用与技术分析!
  • 光伏功率预测 | RF随机森林多变量单步光伏功率预测(Matlab完整源码和数据)
  • 基于PSO粒子群优化的VMD-LSTM时间序列预测算法matlab仿真
  • 北斗导航 | 基于matlab的卫星导航单点定位算法
  • 什么是音频?
  • Linux爬虫系统从开始到部署成功全流程
  • Python day30
  • Linux重置root用户密码
  • 单片机,主循环和中断资源访问冲突的案例
  • 【51单片机】7. 串口通信、单片机向电脑发送数据电脑发送数据点亮LED灯Demo
  • C#迭代器
  • C# 使用HttpListener时候异常(此平台不支持此操作:System.PlatformNotSupportedException)
  • 基于大模型预测单纯性孔源性视网膜脱离的技术方案
  • 解析OpenFOAM polymesh网格文件的C/C++程序实现
  • 做直播网站多少钱/软文营销代理
  • 小程序平台收费/郑州seo服务技术
  • 建德网站建设/2345网址导航怎么彻底删掉
  • 四川省江油市建设局网站/线上营销技巧和营销方法
  • 如何在税务局网站做注册地址变更/seo网络科技有限公司
  • 反恶意镜像网站/网络营销是什么