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

PCIe configuration 包分析

本文分析默认以EP为几点,不讨论关于RC的内容。本文的重点是配置包(cfgwr,cfgrd)包的分析,分析包的组成,包的作用域以及包的路由方式。开始分析之前,先给出以上的基础知识。

1基础知识

1. pcie包的分类

pcie根据组成,包可分为三种,TLP,DLLP, orderset。本文讨论的配置包为TLP包,由下图可知TLP有header以及数据payload。重点关注header部分。

TLP

DLLP

orderset

2. 配置包作用域

如下图所示,为PCIe的配置空间示意图。前面的256BYTE是必须的,后面的1K-256 BYTE是非必须的,配置空间就像一个清单,把这个设备的,准确说功能块的属性信息,包含id以及各种能力。配置包的操作的空间就是这块区域。

3. 配置包路由方式

根据PCIe的规格可知,枚举是根据深度优先搜索的遍历方法,进行编号。下图很形象的展示了,在整个拓扑结构中,通过BDF就可以确定功能块的位置,BDF即bus number + device number + function number(ARI能力除外)。配置空间是功能块独有的属性,所以用BDF的路由方式,比地址更加方便。

2. cfgwr包分析

1. 基本域分析

由包头的定义可知,更具长度分为3DW和4DW两种,包头的第一BYTE就知道包传输的是哪种类型,cfgwr是3DW,cfgwr为0x44,cfgrd0x04,下午主要讨论0x44这种包。

配置空间没有优先级虚拟等传输特性,所以TC/AT/ATTR必须为0. 因为是3DW,每次操作的数据只有一个DW,所以last BE为0,length为1。

由上文基础知识可知配置空间总共为1KB。必须实现的是256B,所以register number为6为,对应256B, ext_register为4位,总共10位正好对应1KB空间。分析可以访问的地址为

BDF + ext_register + register

2. 作用机制分析

下图颜色有些花,请海涵。对于cfgwr操作,需要有回复的cpl包。这点关于nonposted包的描述请查阅相关文档,本文不再赘述。由上文可知,BDF + ext_register + register可以访问到具体的寄存器。completer为执行操作的主体,所以completer id其实就是BDF,这点用相同颜色表示。为什么还要有tag呢?tag是为了做outstanding的实现,理论上我可以有256个写配置空间的请求在路上,在有应答之前。既然有BDF,为什么还需要requester id呢?想下,在一个拓扑有很多设备,那我的回复信息,应该给谁呢?虽然说PCIe是点对点的传输机制,最起码我要把完成的信息路由回去,这样master才知道配置写的操作已经完成了。

由上文,可以知道PCIe的配置包的工作机理,下面给出了一个包的实现例子,希望本文能让大家对配置包有个基本的认知。


http://www.mrgr.cn/news/34988.html

相关文章:

  • 【深度学习|地学应用】glacier——让我们一起看看深度学习在冰川研究中的应用是怎么样的呢?
  • np.pad实现零填充
  • Python知识点:如何使用Python与Java进行互操作(Jython)
  • js中正则表达式中【exec】用法深度解读
  • 云服务器(华为云)安装java环境。
  • 使用Adobe XD进行制作SVG字体
  • vulnhub(13):Digitalworld.local JOY(ftp 的未授权文件读写漏洞、文件覆盖提权)
  • LeetCode题练习与总结:二叉树的最近公共祖先--236
  • Miniconda 安装教程
  • 【算法业务】基于Multi-Armed Bandits的个性化push文案自动优选算法实践
  • mfc异步TCP Client通信向主线程发送接收消息
  • Vue3.5 有那些变化?
  • FPGA实现频率、幅度、相位可调的DDS以及DDS Compiler IP核的使用验证
  • Python_yield
  • inplace-abn报错
  • 2024年网络安全人才平均年薪 24.09 万,跳槽周期 31 个月,安全工程师现状大曝光!_2024网络安全人才市场状况研究报告
  • 智能密码、指纹锁语音芯片ic方案 可存放40s语音内容 NVD语音芯片
  • 电器行业文件加密怎么做?防泄密哪种方法实用?
  • CSS注释
  • C++中序列式容器和关联式容器