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

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

3天内不再提示

完整的Perf支持缺少了什么

lPCU_elecfans 来源:电子发烧友网 作者:周凯扬 2021-12-21 09:47 次阅读

RISC-V在云端、数据中心、汽车与网络技术中的频繁创新和亮相,已经让这一成长中的ISA一只脚迈入了高性能计算场景。然而缺少强大的性能监测工具让RISC-V的应用优化成了问题,尤其是在RISC-V如今不少软件源于从非原生移植的情况下,运算性能不能发挥出百分百的实力成了令人头疼的问题。

与此同时,英特尔ARM都拥有自己专用的性能监控方案,让开发者可以发挥出其硬件的全部效力,但RISC-V仍然依靠定制或厂商特定的方案,而缺少通用性能监控软件工具的完整支持。

Perf对RISC-V的支持

系统级的性能优化往往是靠性能剖析和代码优化来实现的,前者是为了寻找性能瓶颈,后者则是为了改善软件性能,因此这类性能分析/监控工具成了处理器开发时必不可少的软件。尽管RISC-V的ISA规范已经定义了硬件性能监控(HPM),但总体支持程度上仍未完善。

就以Linux上的性能分析工具Perf为例,该工具可以借助PMU(性能监控单元)、tracepoint和内核计数器来分析程序中的硬件事件,比如处理器时钟周期、指令计数器等,也可以分析一些软件事件,比如Page Fault等。

Perf分为两种模式,一种是perf stat,一种是perf record。如今上游Linux的perf虽然已经对RISC-V有了支持,但仅对perf stat有一些基本的支持。比如mcycle这一CSR用于处理器运行的时钟周期计数,而minstret这一CSR则用于退休指令计数。

RISC-V privileged规范中,RISC-V定义了几种特权模式,分别是U-mode(用户模式)、S-mode(管理员模式)和M-mode(机器模式)。但目前只有在机器模式下才能对这些寄存器进行读写,管理员模式下缺乏可写入的寄存器。

计数器却又是每时每刻运行中的,所以现在可以做到周期和指令计数,却无法启用、禁用和暂停计数器,无法使用任何可编程计数器和事件采样。不仅如此,RISC-V的perf不仅无法处理计数器溢出,也不支持溢出中断。虽然市面上很多RISC-V处理器已经考虑到了这一点,采用定制的形式来完成部分任务,比如Esperanto就为自己的ET-SoC-1千核RISC-V处理器加入了商业级的芯片除错与性能监控能力,但RISC-V规范本身缺少这些支持,这也就不利于当下RISC-V的开源生态。

完整的Perf支持缺少了什么?

于是我们现在发现管理员模式下无法写入计数器,也无法改变mcountinhibit来直接开启或停止计数器,也无法改变mhpmcountern来开启或禁用直接读取。接着就是没有中断指示器,我们不知道哪一个计数器出现了数值溢出,也没有事件筛选功能。那么针对这些问题的解决方案是什么,哪些措施才能实现完整的Perf支持呢?来自西部数据的Atish Patra在近期的RISC-V峰会上提出了他以及开发社区所青睐的答案——SBI PMU扩展和sscofpmf ISA扩展。

SBI PMU扩展将作为一个接口,让管理员模式下的软件发现硬件计数器的细节,针对特定的perf事件来配置硬件计数器,在请求下开始或停止计数器。除此之外,SBI PMU扩展还引入了固件性能计数器来监控固件事件,比如未对齐的存取指令数、RFENCE和IPI数等等。如今在RISC-V的SBI 1.0版本中我们也可以看到,PMU扩展已经成了该规范的一部分。

接着是sscofpmf扩展,ss代表的是特权架构和管理员级的扩展,cofpmf代表的是溢出计数和特权模式筛选。该扩展新增了一个32位的scountovf只读寄存器,该寄存器存储的是29个mhpmcounter的第63位(OF),如此一来就能准确快速地判断究竟是哪个事件的计数器溢出了。这一扩展已经冻结,目前处于审查状态,预计不久的将来就会批准,来自Linux内核的支持工作也在推进中。

小结

RISC-V作为一个尚处于发展初期的架构,在某些方面确实还有不及其前辈x86和ARM的地方,我们这次从性能监控上就能看出一些端倪,但RISC-V自身的特性也为它带来了不小的优势。

首先,RISC-V是站在巨人的肩膀上发展的,它可以有效地规避以上那些架构走错的老路。其次,开源开放让RISC-V有了庞大的社区支持,像以上这些解决方案,其实已经被多次提及,来自社区的力量势必可以让RISC-V走得更远。

审核编辑:何安淇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 监测
    +关注

    关注

    2

    文章

    3046

    浏览量

    43884
  • RISC-V
    +关注

    关注

    41

    文章

    1904

    浏览量

    45047

原文标题:优化的关键,RISC-V中的性能监控

文章出处:【微信号:elecfans,微信公众号:电子发烧友网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用AD9963做东西,评估软件提示缺少LabVIEW是为什么?

    需要使用AD9963做东西 但是评估软件综上提示缺少LabVIEW 我电脑已经安装了LabVIEW2014.,。。。。为什么还是这样???
    发表于 12-20 07:28

    博途触摸屏下载时提示缺少面板映像如何解决?

    前不久我使用博途V17下载精智(Comfort)屏画面时,系统提示缺少面板映像而无法下载,今天这篇文章跟大家分享下如何解决这类问题。
    的头像 发表于 12-12 15:46 5742次阅读
    博途触摸屏下载时提示<b class='flag-5'>缺少</b>面板映像如何解决?

    Imagination宣布新DXD GPU架构,支持完整的DX11

    DXD架构定位主流,支持完整的DX11 Feature Level 11_0,但是不支持最新的DX12,因此适合主流网游、电竞游戏中,不太适合最新3A大作。
    发表于 11-10 11:46 247次阅读
    Imagination宣布新DXD GPU架构,<b class='flag-5'>支持</b><b class='flag-5'>完整</b>的DX11

    Linux perf 简要介绍

    一、引言 (Introduction) 简要介绍Linux perf (Brief Introduction to Linux perf) Linux perf(性能分析工具)是一个功能强大且灵活
    的头像 发表于 11-09 17:06 363次阅读

    HarmonyOS NEXT调优工具Smart Perf Host高效使用指南

    来回切换,不但容易错过问题发生时间点,数据收集完如何能将信息有效结合分析又将是一件复杂的工作。基于开发痛点,HarmonyOS NEXT通过构建Smart Perf工具全家桶,为开发和测试人员提供了测试、调优、分析一站式服务,接下来让我
    的头像 发表于 11-09 16:03 246次阅读

    HarmonyOS NEXT调优工具Smart Perf Host高效使用指南

    Smart Perf Host支持能力如下:支持软硬件events抓取,如:cpu-cycles、instructions和page-faults等 ● 页面内抓取hiperf数据 ● 框选后可查看调用栈
    发表于 11-09 08:35

    如何使用perf性能分析工具

    放在一起,是内核级的工具。perf是在Linux上做剖析分析的首选工具。 perf命令介绍 perf 工具提供了一组丰富的命令来收集和分析性能和跟踪数据。perf
    的头像 发表于 11-08 15:36 431次阅读
    如何使用<b class='flag-5'>perf</b>性能分析工具

    达成合作!IAR将为普冉提供完整的开发工具支持

    微控制器。IAR将为普冉提供完整的开发工具支持,包括但不限于代码编辑、编译、调试等功能,使开发者能够充分发挥普冉MCU的潜力,高效快速推进项目,加速产品上市。 普冉半导体位居行业前列,专注于提供低功耗
    的头像 发表于 10-11 17:34 980次阅读

    SiFive U64的HPM是什么

    对于性能分析,通常我们会使用Perf工具。而perf中的硬件事件,则需要硬件的支持——性能监视单元PMU。RISC-V u64内核支持PMU,使得我们可以通过
    的头像 发表于 09-27 16:15 389次阅读

    信号完整性分析科普

    何为信号完整性的分析信号完整性包含:波形完整性(Waveformintegrity)时序完整性(Timingintegrity)电源完整性(
    的头像 发表于 08-17 09:29 3380次阅读
    信号<b class='flag-5'>完整</b>性分析科普

    Ubuntu20.04对benchmark编译出不带压缩指令的汇编代码,缺少 -lstdc++是为什么?

    压缩指令的汇编代码,但链接时报错,说缺少 -lstdc++。 我尝试过把makefile的-lstdc++给去掉,然后报了一大堆错误,看来这个库是sdk必不可少的。 官方工具链是否支持非压缩编译呢,请问该如何解决呢? 谢谢!
    发表于 08-11 13:01

    Linux系统性能分析之Perf命令

    在开发板上使用apt安装perf命令:
    发表于 07-14 15:24 595次阅读
    Linux系统性能分析之<b class='flag-5'>Perf</b>命令

    Linux perf性能、实际应用与案例

    Linux perf(性能分析工具)是一个功能强大且灵活的性能剩余工具,它可以在Linux系统上检测和调试各种性能问题。Linux内核集成了perf工具,可用于探测内核性能事件、硬件性能计数器以及用户级应用程序性能事件。
    发表于 07-03 10:22 383次阅读

    電工在繪圖時,如果缺少了這幾點,會導致圖紙的不完整#硬声创作季

    电工技术
    也许吧
    发布于 :2023年05月23日 12:30:36

    S32K116缺少.elf文件是怎么回事?

    我最近购买了 S32K116 开发套件,想开始使用电机控制软件提供的代码示例。但是,在设置所有内容时,我注意到我的安装文件中缺少调试器的 .elf 文件。 我的问题是,是否有一个数据库可以直接从
    发表于 05-06 06:39