PCIE问题定位000:PCIe需要的定位手段

1、PCIe debug环境说明

本文将以PCIe EP用户逻辑举例,描述PCIe可以添加哪些定位手段。

如图所示,PCIe IP作为endpoint与RC对接,用户实现了应用逻辑,与PCIe IP进行交互,交互信号中data格式为TLP报文格式,且交互信号包含相应的控制信号,例如PCIe配置空间和IP相干的配置信号。

常见的Debug设计可以通常有:中断、锁存状态、统计计数和实时状态。

添加Debug设计的目的通常是定位功能故障和性能故障。

功能故障通常有链路不通,出现错包,PCIe部分 function无法访问等等。

性能故障通常速率协商未到最高速率、传输速率不及预期等等。

添加debug手段可以在芯片调试时有效提高定位效率,快速发现并解决问题。

2、用户需要添加的debug手段

2.1最常见的统计计数

常见的统计技术有,发起的请求数量和收到的请求响应数量、正确的数量和错误的数量、单个function的统计以及所有function的统计。

已发起的dma read请求、已返回的dma read 响应。

已发起的dma write请求、已返回的dma write 响应。

已收到的memory space 访问以及返回的memory space 响应。

2.2  ltssm 状态机

记录ltssm 协商过程,锁存ltssm最近的若干次数值,便于分析ltssm协商过程。

ltssm 实时状态可读

统计ltssm进入L0状态的次数和退出L0状态的次数

​​​​​​​2.3  PCIe 关键使能信号

PCIe IP关键信号包含vf/pf_bus_master_en、vf/pf_function_level_reset、hot reset、金手指复位perst,如下表格才采用英文简写描述。

如上的关键信号只有0和1两种状态,都需要记录实时状态、统计0-->1跳变次数、统计1-->0跳变次数

​​​​​​​2.4 异常完成报文锁存若干cpld/cpld 报文头信息

采用ram或者寄存器锁存收到的cpl/cpld报文头信息,可以根据需要选择锁存的字段,如下所示,强烈推荐锁存Completion Status 、EP、Completer ID、Requester ID等信息方便问题定位

​​​​​​​2.5 异常请求debug

发现异常请求时记录异常信息。

场景1:无效function的请求,例如当前PCIe只有128个VF,即VF0~VF127,结果收到了VF128的请求。此时需要锁存请求类型、VF number以及产生错误中断,方便问题定位。

​​​​​​​2.6 记录cpld时延信息

为了便于计算性能,EP发起的memory 读请求(俗称dma read),需要统计时延,即从发起dma read请求开始到收到最后一个CPLD/CPL时消耗的时间,并且期望debug设计能够记录不同时延段位的dma read请求数量。debug设计可配置延时上限,一旦超时延时上限,则锁存dma read请求信息,方便调试者定位。​​​​​​​

2.7 统计流控信号

当应用逻辑写数据速率过大或者RC端数据处理能力较弱时,RC反馈给EP的credit更新跟不上应用逻辑写数据的速率,会导致EP对应用逻辑产生反压,即credit_fc置1。此时将影响应用逻辑dma write的速率,通过观察credit_fc的统计计数可以初步判断影响性能的因素。

3 结束语

出现问题的原因可能是代码bug,可能是配置的寄存器数值错误,也可能是配置顺序流程不正确,添加debug设计就是为了能够高效定位问题。本文仅仅简单描述了部分需要添加的debug手段,欢迎大家留言补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/464727.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux_基础指令(一)

目录 1、ls指令 1.1 ls -l 1.2 ls -a 1.3 ls -i 2、pwd指令 3、cd指令 3.1 路径的概念 3.1.1 绝对路径 3.1.2 相对路径 3.2 cd ~ 3.3 cd - 4、touch指令 5、mkdir指令 6、删除系列的指指令 6.1 rmdir 6.2 rm 7、man指令 8、cp指令 9、move指令 结…

【智能算法】斑鬣狗优化算法(SHO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过。 3.代码实现4.参考文献 1.背景 2017年,Dhiman等人受到斑鬣狗自然狩猎行为启发,提出了斑鬣狗优化算法(Spotted Hyena Optimizer, SHO)。 2.算法原理 2.1算法思想 SHO将斑鬣狗狩猎行为分为围捕-狩猎-进攻三…

多线程JUC 第2季 wait和notify唤醒机制

一 wait和notify的区别与相同 1.1 wait和notify的作用 1) 使用wait()、notify()和notifyAII()时需要先对调用对象加锁。否则直接调用的话会抛出 IllegalMonitorStateExceptiona。 2) 调用wait()方法后,线程状态。由RUNNING变为WAITING,并将当前线程放置…

wordpress子比主题7.6美化插件及新手零基础搭建教程源码下载

版权申请:本文A5资源网原创,经原创作者允许转载许可声明。下载地址http://a5.org.cn/a5_ziyuan/39172.html 本源码由网友在某宝二十几元购买,现分享给大家。下图为源码文件及演示图,安装教程比较详细新手零基础就可搭建 子比主…

NeRF——基于神经辐射场的三维场景重建和理解

概述 三维重建是一种将物理世界中的实体转换为数字模型的计算机技术。其基本概念是通过对物理世界中的物体或场景进行扫描或拍摄,并使用计算机算法将其转换为三维数字模型。抽象意义上的三维模型指的是:形状和外观的组合,并且可以渲染成不同…

【Redis知识点总结】(四)——如何保证缓存与数据库中的数据一致性

Redis知识点总结(四)——如何保证缓存与数据库中的数据一致性 更新缓存删除缓存先删除缓存后更新数据库先更新数据库后删除缓存 使用canal总结 面试会经常遇到这种问题:你们如何保证缓存与数据库中的数据一致性?或者是&#xff1a…

小白必看的Python基础之函数篇

函数最重要的目的是方便我们重复使用相同的一段程序。 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句。 函数的定义 首先,我们要定义一个函数, 以说明这个函数的功能…

把软件加入开机自启动

注意这个方法最佳效果是适用于打开软件后,关闭窗口不会停止服务 例如 nginx 1.把nginx的快捷方式放到如图所示的文件夹下 C:\Users\KIA_27\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 注意KIA_27应改为你自己的用户名

从政府工作报告探计算机行业发展——探索计算机行业发展蓝图

目录 前言 一、政策导向与行业发展 (一)政策导向的影响 (二)企业如何把握政策机遇推动创新发展 二、技术创新与产业升级 三、数字经济与数字化转型 四、国际合作与竞争态势 五、行业人才培养与科技创新 (一&a…

KubeSphere集群安装-nfs分布式文件共享-对接Harbor-对接阿里云镜像仓库-遇到踩坑记录

KubeSphere安装和使用集群版 官网:https://www.kubesphere.io/zh/ 使用 KubeKey 内置 HAproxy 创建高可用集群:https://www.kubesphere.io/zh/docs/v3.3/installing-on-linux/high-availability-configurations/internal-ha-configuration/ 特别注意 安装前注意必须把当前使…

【十】【算法分析与设计】滑动窗口(1)

209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [nums(l), nums(l1), ..., nums(r-1), nums(r)] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 …

[嵌入式系统-40]:龙芯1B 开发学习套件 -10-PMON启动过程start.S详解

目录 一、龙芯向量表与启动程序的入口(复位向量) 1.1 复位向量: 1.2 代码执行流程 1.3 计算机的南桥 VS 北桥 二、PMON代码执行流程 三、Start.S详解 3.1 CPU初始化时所需要的宏定义 (1)与CPU相关的一些宏定义…

[游戏开发][UE5.3]GAS学习心得

GAS(GameplayAbilitySystem) UE提供的一套技能框架,这个框架也不是万能的,甚至各个部件你要进行封装开发,但这也比你从头写一套技能框架要容易很多。 GAS功能极其强大,所以它是一个庞大的系统,如果想运用得当&#x…

深度学习pytorch——基本运算(持续更新)

基本运算——加、减、乘、除 建议直接使用运算符,函数和运算符的效果相同 代码演示: #%% # 加减乘除 a torch.rand(3,4) b torch.rand(4) # 这里a、b可以相加,别忘了pytorch的broadcast机制 print(ab) print(torch.add(a,b)) print(torc…

MySQL中的索引失效情况介绍

MySQL中的索引是提高查询性能的重要工具。然而,在某些情况下,索引可能无法发挥作用,甚至导致查询性能下降。在本教程中,我们将探讨MySQL中常见的索引失效情况,以及它们的特点和简单的例子。 1. **索引失效的情况** …

代码算法训练营day9 | 28. 实现 strStr() 、459.重复的子字符串

day9: 28. 实现 strStr()KMP的主要应用:什么是前缀表:前缀表是如何记录的: 如何计算前缀表:构造next数组:1、初始化2、处理前后缀不相同的情况3、处理前后缀相同的情况 代码: 459.重复的子字符串…

Python入门(三)

序列 序列是有顺序的数据集合。序列包含的一个数据被称为元素,序列可以由一个或多个元素组成,也是可以没有任何元素的空序列。 序列的类型 元组(定值表):一旦建立,各个元素不可再更变,所以一…

Linux文件操作

pwd命令 cd命令 ls命令 mkdir命令 同时创建父子目录 cp命令 mv命令(相当于用cp复制之后,把源文件删除) 用mv命令来冲命令 rm命令 可以看到,我们用当前目录的文件覆盖了目标路径上的文件,并且目标路径中多了一个以波浪…

5 张图带你了解分布式事务 Saga 模式中的状态机

大家好,我是君哥。 状态机在我们的工作中应用非常广泛,今天聊一聊分布式事务中间件 Seata 中 Saga 模式的状态机。 1 状态机简介 状态机是一个数学模型,它将工作中的运行状态和流转规则抽象出来,可以协调相关信号来完成预先设定…

构造-析构-拷贝构造-赋值运算符重载-const成员函数

1. 类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么时候都不写时,编译器会自动生成以下6个成员函数。 默认成员函数:用户没有显式实现,编译器…