Other Parts Discussed in Thread: AM62P
部件号: AM62P
团队、
我找不到用于测量所有主器件的 BW 的基准。 我目前正在尝试找出计算 GPU 带宽的方法、需要知道:
- 如何计算它?
- 是否需要为 AXI 上的 GPU 启用任何时钟才能获得最大带宽?
- 是否有 Baremetal 测量带宽的示例?
- 请提供与此相关的文档。
谢谢、
Shriya
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的 Shriya:
您是否考虑过使用 PVRTunes 来计算 GPU 带宽? PVRTunes 专为评测 PowerVR 硬件而设计,还可以测量带宽和其他指标: PVRTune - Imagination Developers。 我认为这里还可以解答更多的文档、示例和问题。
此致、
Shriya
您可以在 TRM 中查看以下寄存器定义
EMIF_SSCFG_PERF_CNT_SEL_REG
EMIF_SSCFG_PERF_CNT1_REG
EMIF_SSCFG_PERF_CNT2_REG
EMIF_SSCFG_PERF_CNT3_REG
EMIF_SSCFG_PERF_CNT4_REG
一次最多可以监视四个计数器。 四个计数器均是自由运行的计数器、由 CNT_SEL 寄存器中的选择定义。 您可以监控计数、例如读取/写入次数、FIFO 已满和命令开销。
此致、
James
您可以尝试使用 bw_stats 寄存器。 这些寄存器有几次迭代(检查 TRM):
A53 读取/写入
视频编码/解码器读取/写入
GPU 读取/写入
下文总结了如何使用这些寄存器来确定每个启动器的带宽
摘要
速率限制器为读取和写入操作提供单独的带宽统计信息。 每个方向都有自己的一组寄存器来独立于 CIR/PIR 速率限制来监控带宽使用情况。 密钥寄存器组读取带宽统计信息(基址:0x120)
- RD_BW_STATS (0x120)-控制寄存器
- RD_BW_STATS_THRSHLD (0x124)-阈值
- RD_BW_WINDOWS_CNT (0x128)-窗口计数器
- RD_BW_CIR_CNT (0x12c)-违反 CIR 阈值
- RD_BW_PIR_CNT (0x130)- PIR 阈值违规
- RD_BW_THRSHLD_CNT (0x134)-自定义阈值违规
- RD_BYTES_MAX (0x138)-每个窗口的峰值带宽
写入带宽统计信息(基址:0x220)
- WR_BW_STATS (0x220)-控制寄存器
- WR_BW_STATS_THRSHLD (0x224)-阈值
- WR_BW_WINDOWS_CNT (0x228)-窗口计数器
- WR_BW_CIR_CNT (0x22c)-违反 CIR 阈值
- WR_BW_PIR_CNT (0x230)- PIR 阈值违规
- WR_BW_THRSHLD_CNT (0x234)-自定义阈值违规
- WR_BYTES_MAX (0x238)-每个窗口的峰值带宽
使用方法
1.配置统计信息窗口 (RD/WR_BW_STATS)
位[31:16]:窗口 — 统计窗口大小(默认值:0x400 = 1024 个周期)
-不能为 0(如果写为 0、则自动复位为 1024)
-窗口时间= window_size / FREQ
位[0]:EN — 启用统计信息收集
位[8]:CLR — 清除/复位所有计数器(只写)
位[9]:溢出 — 统计溢出错误指示器(只读)
2.设置自定义阈值 (RD/WR_BW_STATS_THRSHLD)
位[31:0]:threshold — 每个窗口以字节为单位的带宽阈值
-允许独立于 CIR/PIR 的带宽分析
-使用固定窗口(不像 CIR/PIR 那样滚动)
-消耗的 DDR 字节的帐户
-使用以下方法比较 CIR/PIR:阈值* FREQ / WINDOW_SIZE
3.读取统计计数器
Windows_CNT–自收集开始以来经过的窗口数
CIR_CNT — 带宽超过 CIR 的窗口计数
PIR_CNT — 带宽超过 PIR 的窗口计数
THRSHLD_CNT — 带宽超过自定义阈值的窗口计数
Bytes_MAX — 在任何单个窗口中观察到的最大字节
-计算峰值带宽:Bytes_MAX * FREQ / WINDOW_SIZE
使用工作流程
不带速率限制的统计数据(仅限监控)
// 1。 通过将 CIR/PIR 设置为 0、确保禁用速率限制
RD_BW_CIR = 0;//无提交的速率限制
RD_BW_PIR = 0;//无峰值速率限制
// 2. 配置窗口大小并启用统计信息
RD_BW_STATS =(0x400 << 16)| 0x1;// 1024 周期窗口、启用
// 3. 设置自定义阈值(例如,窗口为 200MB)
RD_BW_STATS_THRSHLD = 200 * 1024 * 1024;// 200MB(以字节为单位)
// 4. 运行您的工作负载...
// 5. 读取统计信息
Windows = RD_BW_WINDOWS_CNT;
CIR_violations = RD_BW_CIR_CNT;//将为 0(未设置 CIR)
PIR_违 例= RD_BW_PIR_CNT;//将为 0(未设置 PIR)
Threshold_violations = RD_BW_THRSHLD_CNT;//自定义阈值违例
peak_bytes = RD_bytes_MAX;
// 6. 计算峰值带宽(MB/秒):
// peak_bw_mbps =(peak_bytes * frequency)/ window_size / 1024 / 1024
//示例:@ 400MHz、window=1024
// peak_bw_mbps =(peak_bytes * 400000000)/ 1024 / 1024 / 1024
// 7. 清除并根据需要重新启动
RD_BW_STATS |=(1 << 8);//设置清除位
重要说明
统计数据跟踪占用的 DDR 带宽、而不仅仅是数据包字节值
-如果动态更改窗口大小,请同时写入清除位以重新启动收集
-检查溢出位 — 如果设置,计数器溢出发生,数据无效
此致、
James