对于性能分析,通常我们会使用Perf工具。而perf中的硬件事件,则需要硬件的支持——性能监视单元PMU。RISC-V u64内核支持PMU,使得我们可以通过perf来统计程序运行所产生的cycle、cache hit、cache miss等事件的次数,从而进一步分析、优化性能。
在SiFive U64内核中,把PMU称作HPM,实际是一个东西。另外,u64内核的hpm增加了一个新的特性——hpm计数溢出中断。
下面详细介绍SiFive U64的HPM。
HPM简介HPM:Hardware Performance Monitor。U6 处理器内核支持基本的硬件性能监控 (HPM) 设施。性能监视工具分为两类计数器:固定功能计数器和事件可编程计数器。这些类包括一组固定计数器及其计数器使能寄存器,以及一组事件可编程计数器及其事件选择器寄存器。寄存器可用于控制计数器的行为。性能监控可用于多种用途,从优化到调试。
性能监控计数器重置行为instret 和循环计数器在系统复位时被初始化为零。硬件性能监视器事件计数器不会在系统重置时初始化,因此具有任意值。用户可以将所需值写入计数器控制和状态寄存器 (CSR),以在给定的已知值开始计数。
固定功能性能监控计数器一个固定功能的性能监视器计数器是硬件连接的,只计算一种特定的事件类型。也就是说,它们不能根据它们计数的事件类型进行重新配置。唯一的可以对固定功能性能监控计数器进行的修改是启用或禁用计数,并写入计数器值本身。
U6 处理器内核包含两个固定功能的性能监控计数器
Fixed-Function Cycle Counter (mcycle)
固定功能性能监控计数器 mcycle 保存自过去某个任意时间以来 hart 执行的时钟周期数的计数。mcycle 计数器是可读写的,64 位宽。读取 mcycle 返回 mcycle CSR 的所有 64 位。
Fixed-Function Instructions-Retired Counter (minstret)
固定功能性能监控计数器 minstret 保存 hart 自过去某个任意时间以来退役的指令数。minstret 计数器是可读写的并且是 64 位宽的。读取 minstret 返回 minstret CSR 的所有 64 位。
事件可编程性能监控计数器一组可编程事件计数器与固定功能计数器相辅相成。U6 HPM 包括两个额外的事件计数器,mhpmcounter3 和 mhpmcounter4。这些可编程事件计数器是可读写的,宽度为 64 位。硬件计数器本身在 U6 内核系列上实现为 40 位计数器。可以写入这些硬件计数器以初始化计数器值。
-
内核
+关注
关注
3文章
1372浏览量
40288 -
Linux
+关注
关注
87文章
11302浏览量
209430 -
HMP
+关注
关注
0文章
2浏览量
5836 -
sifive
+关注
关注
0文章
36浏览量
9459
发布评论请先 登录
相关推荐
评论