searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

CPU侧收集PCIE信用的手段

2023-08-25 09:51:52
331
0

一、背景

       在PCIe总线中,当一个发送端发送数据报文给接收端时,它需要保证接收端有足够的缓冲区。为了能够知道接收端还有多少可用的缓冲区,接收端需要通过DLLP (Data Link Layer Packet)随时汇报可用的缓冲区。

      PCIe总线使用的流控算法叫做基于信用的流量控制机制(Credit-based Mechanism)。接收端的可用缓冲数量使用信用积分来表示,接收端通过不断的发送DLLP告知接收端VC buffer的信用数,当缓冲区用尽时发送端会停止发送TLP以防数据包丢弃和重发。

      当出现信用不足现象,需要进一步分析时,可以通过下面手段来收集CPU侧的信用值。

 

二、操作步骤

  • 打开bios中的 EV DFX开关

重启系统后进入bios,找到如下选项并enable。如下图1所示;

Socket Socket Configuration

->IIO Configuration

->IIO DFX Configuration

->EV DFX Features

图1

  • 显示BIOS的隐藏选项(如需要)

       某些情况下bios设置界面可能没有步骤1中的菜单,这个可能是bios setup隐藏了选项,这个时候需要使用SCELNX工具来使隐藏选项显示出来,进入系统后执行命令:

./SCELNX_64  /i /ms DfxAdvanceDebug /qv 0x00  

如下图2所示

图2

   执行完命令后重启系统,然后就可以在bios设置界面看到EV DFX Features选项。

 

  • Log采集

   使用lcpci-vt命令查看PCIE 设备,找到需要查询信用的设备对应的root port,记录BDF。

   编辑pcie_debug.py脚本,把BDF号修改为实际的BDF。

   执行pcie_debug.py,自动生成log。

 

三、信用分析

       如下图3所示,log记录了各个请求的信用值,可以直接观察CPU侧的信用是否存在不足现象。

  PH缓存存放Memory Writes和Messages请求的TLP 头

  PD缓存存放Memory Writes和Messages请求的TLP 数据;

  NPH缓存存放Non-Posted请求的TLP 头;

  NPD缓存存放Non-Posted请求的TLP 数据;

  CPLH缓存存放Read/Wirte Completions请求的TLP 头;

  CPLD缓存存放Read/Wirte Completions请求的TLP 数据。

图3

0条评论
0 / 1000
o****n
2文章数
0粉丝数
o****n
2 文章 | 0 粉丝
o****n
2文章数
0粉丝数
o****n
2 文章 | 0 粉丝
原创

CPU侧收集PCIE信用的手段

2023-08-25 09:51:52
331
0

一、背景

       在PCIe总线中,当一个发送端发送数据报文给接收端时,它需要保证接收端有足够的缓冲区。为了能够知道接收端还有多少可用的缓冲区,接收端需要通过DLLP (Data Link Layer Packet)随时汇报可用的缓冲区。

      PCIe总线使用的流控算法叫做基于信用的流量控制机制(Credit-based Mechanism)。接收端的可用缓冲数量使用信用积分来表示,接收端通过不断的发送DLLP告知接收端VC buffer的信用数,当缓冲区用尽时发送端会停止发送TLP以防数据包丢弃和重发。

      当出现信用不足现象,需要进一步分析时,可以通过下面手段来收集CPU侧的信用值。

 

二、操作步骤

  • 打开bios中的 EV DFX开关

重启系统后进入bios,找到如下选项并enable。如下图1所示;

Socket Socket Configuration

->IIO Configuration

->IIO DFX Configuration

->EV DFX Features

图1

  • 显示BIOS的隐藏选项(如需要)

       某些情况下bios设置界面可能没有步骤1中的菜单,这个可能是bios setup隐藏了选项,这个时候需要使用SCELNX工具来使隐藏选项显示出来,进入系统后执行命令:

./SCELNX_64  /i /ms DfxAdvanceDebug /qv 0x00  

如下图2所示

图2

   执行完命令后重启系统,然后就可以在bios设置界面看到EV DFX Features选项。

 

  • Log采集

   使用lcpci-vt命令查看PCIE 设备,找到需要查询信用的设备对应的root port,记录BDF。

   编辑pcie_debug.py脚本,把BDF号修改为实际的BDF。

   执行pcie_debug.py,自动生成log。

 

三、信用分析

       如下图3所示,log记录了各个请求的信用值,可以直接观察CPU侧的信用是否存在不足现象。

  PH缓存存放Memory Writes和Messages请求的TLP 头

  PD缓存存放Memory Writes和Messages请求的TLP 数据;

  NPH缓存存放Non-Posted请求的TLP 头;

  NPD缓存存放Non-Posted请求的TLP 数据;

  CPLH缓存存放Read/Wirte Completions请求的TLP 头;

  CPLD缓存存放Read/Wirte Completions请求的TLP 数据。

图3

文章来自个人专栏
PCIE
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0