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

    文章

    1309

    浏览量

    39867
  • Linux
    +关注

    关注

    87

    文章

    10994

    浏览量

    206779
  • HMP
    HMP
    +关注

    关注

    0

    文章

    2

    浏览量

    5813
  • sifive
    +关注

    关注

    0

    文章

    34

    浏览量

    9427
收藏 人收藏

    评论

    相关推荐

    学师英伟达?传英特尔拟收购SiFive

    日前外媒报道,英特尔拟提出以超过20亿美元的价格收购半导体初创企业SiFive,同时SiFive还收到了多家公司的收购要约。   SiFive成立于2015年,基于RISC-V架构提供芯片IP
    的头像 发表于 06-11 09:24 5322次阅读

    关于从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

    全球首款基于 RISC-V “HiFive Unleashed” 单板计算机(SBC)

    硅谷创业公司 SiFive 已经开放了“HiFive Unleashed” 单板计算机(SBC)的预售,这是一款基于 RISC-V、运行 Linux 的板卡,核心芯片为 1.5GHz U
    发表于 08-02 11:52

    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

    【先楫HPM5361EVK开发板试用体验】coremark测试HPM5361EVK性能

    感谢电子发烧友的工作人员发放的HPM5361EVK开发板, Windows环境下安装SEGGER Embedded Studio 先楫半导体公司的HPM5361EVK开发板支持SEGGER
    发表于 12-07 09:23

    Linux 下编译HPM_Math 工程报错

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

    HPM6700系列正式合入OpenHarmony社区主干

    HPM6750EVK2是基于先楫半导体的HPM6750高性能SOC的开发板,HPM6750是基于RISC-V的双核处理器,主频高达816M。HPM6750EVK2提供丰富的外设接口,可
    的头像 发表于 12-05 10:45 1255次阅读

    [HPM杂谈]你想要了解的先楫hpm_sdk开发都在这里系列 (二)

    一、概述在上一篇杂谈文章《[HPM杂谈]你想要了解的先楫hpm_sdk开发都在这里系列(一)》,大概分析了先楫通用单片机开发与其他国产单片机的开发差异,以及开发优劣势。刚好在这个月底,先楫官方发布
    的头像 发表于 10-12 08:18 988次阅读
    [<b class='flag-5'>HPM</b>杂谈]你想要了解的先楫<b class='flag-5'>hpm</b>_sdk开发都在这里系列 (二)