0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SiFive U64的HPM是什么

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者:Vincent 2023-09-27 16:15 次阅读

对于性能分析,通常我们会使用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
    HMP
    +关注

    关注

    0

    文章

    2

    浏览量

    5836
  • sifive
    +关注

    关注

    0

    文章

    36

    浏览量

    9459
收藏 人收藏

    评论

    相关推荐

    关于从RGB图像中提取alpha通道

    小弟现在正在试着做一个修图片的程序,使图片的灰度图右移(修正曝光不足),想法是提取图像的alpha通道,逐像素的加灰度。现在用到color image to array函数,我似乎发现只有U64输出
    发表于 04-25 20:07

    怎么从sdk中的zynq PL 64位寄存器打印64位寄存器值

    嗨,我想从sdk中的zynq PL 64位寄存器打印64位寄存器值。代码是u64 register_64;u64 R
    发表于 04-19 11:16

    如何实现shift count is too large的warning功能?

    typedef unsigned long longu64;typedef unsigned charu8;#define WPA_GET_BE64(a) ((((u64) (a)[0])
    发表于 10-10 03:29

    SiFive Shield: 一个开放的、可扩展的安全平台架构

    SiFive Shield是一个开放的,可扩展的平台架构,旨在为基于RISC-V的设计提供完整的SoC安全方法。现代SoC设计的需求决定了对安全性的可扩展解决方案的需求,该解决方案提供了一种降低
    发表于 08-13 15:16

    带有SiFive开发板和高性能CPU的RISC-V迈向主流

    设计可以达到更高性能水平的新型RISC-V芯片。SiFive宣布了围绕SiFive FU740 SoC构建的新Hive Unmatched平台。这是一个具有四个SiFive U74内核
    发表于 11-14 09:29

    sifive的中断是如何完成的?

    sifive的中断是如何完成的?
    发表于 02-16 07:10

    基于SIFIVE E24的BL602与BL702移植过程

    是 libcpu中添加对应的 interrupt_gcc.S 和 cpuport.c,context_gcc.S,这几个可以从其他的文件中复制。其中需要注意的是 sifive align 需要 64
    发表于 05-31 16:22

    关于先楫半导体hpm6750的上手体验知识总结

    inithaltload_image "C:/Users/u/Desktop/sdk_env_v0.10.0/hpm_sdk/samples/hello_world/demo.elf"
    发表于 07-07 15:28

    HPM SDK Linux开发环境搭建指南

    openocd_linux_x86-64.tar.gz工具压缩包,并解压到任意目录; 下载HPM SDK,并解压到任意目录; 申明系统环境变量“GNURISCV_TOOLCHAIN_PATH”指向工具链路径
    发表于 06-08 13:59

    Linux 下编译HPM_Math 工程报错

    Ubuntu20.04,已经配置好环境,能编译helloworld 工程并下载运行。 尝试编译运行hpm_math/rfft的工程,报错无法编译cannot find -ldsp。 生成的ses工程
    发表于 12-20 12:54

    PQI展示USB3.0接口的64GB U

    PQI展示USB3.0接口的64GB U盘 PQI刚刚展示了一款名为Cool Drive的拇指盘产品U366
    发表于 12-30 11:07 902次阅读

    小米推U盘 挂绳设计64GB售价79元

    小米U盘来了,体积小巧,金属机身,挂绳设计,64GB售价79元。
    的头像 发表于 09-23 14:12 2382次阅读

    FX3U 64CCL用户手册

    FX3U-64CCL 用户手册 产品规格书.。本手册中对FX3U-64CCL型CC-Link接口模块的使用及操作进行了 说明。
    发表于 08-24 15:27 0次下载
    FX3<b class='flag-5'>U</b> <b class='flag-5'>64</b>CCL用户手册

    FX3U 64DP M用户手册

    FX3U-64DP-M 用户手册 产品规格书,此次承蒙购入FX3U-64DP-M型PROFIBUS-DP接口模块,诚表谢意。本手册针对FX3U-64DP-M型PROFIBUS-DP主站模 块的使用与操作进行介绍。在使用之前,请阅
    发表于 08-24 15:01 1次下载
    FX3<b class='flag-5'>U</b> <b class='flag-5'>64</b>DP M用户手册

    HPM6750开发环境搭建及快速上手

    鉴于不少小伙伴已经拿到了HPM6750的开发套件,本文将基于HPM6750 EVKMINI开发板,从开发环境搭建开始,带你快速上手体验HPM6750的强大性能。
    的头像 发表于 12-20 11:52 3821次阅读