今天来看 RISC-V 系列的最後一篇文件,Supporting PMUs on RISC-V platforms
!
在这里可以看到一个年轻的指令集架构(ISA),在成长的过程中,可能会经历到的变化!
PMU (Performance Monitoring Unit) 是一个大多数处理器都具备的特殊 on-chip 硬体,
可以用来观察微架构事件 (Microarchitectural event),像是 cycle 数、cache hit/miss 数... 等等;
而这个硬体也是 perf 等效能剖析工具,所使用的基础设施。
========================
在 RISC-V 平台上支援 PMUs
========================
Alan Kao <[email protected]>, Mar 2018
简介
----
在这篇文件撰写之时,RISC-V 特权指令集架构 1.10 版本所描述的 perf 事件相关的项目包含下列几项:
(RISC-V 文件会有更多细节)
* [m|s]counteren
* mcycle[h], cycle[h]
* minstret[h], instret[h]
* mhpeventx, mhpcounterx[h]
仅仅只有上述的项目的话,要移植 perf 会需要很多的手续,
由於 RISC-V 目前缺乏以下大多数架构通用的效能监测特色:
* 启动/关闭 计数器
计数器无时无刻都在做动。
* 计数器数值溢位造成的中断
规格并为定义这样的事件。
* 中断指示器
不可能让每个计数器有自己的中断 port,所以必须要有一个中断指示器来告诉软件,是哪一个计数器数值溢位了。
* 写入数值到计数器中
将来会有 SBI 来支援这项功能,因为核心本身并没有能力修改计数器。[1]
又或是,有些厂家会有扩充的硬体实作来支援 M-S-U 特权架构的平台来直接对计数器做写入的操作。
这份文件目标是提供开发者一份快速上手的守则,让开发者可以在核心中实作 PMU 相关的功能;
接下来的几个章节会简单的介绍 perf 机制以及待完成的事项。
[1][2] 有先前的讨论供参考。
另外,附录 A 有相关的核心资料结构,认识这些资料结构会对理解本文有帮助。
[m|s]counteren
:
mcycle[h]、minstret[h]、mhpmeventn、mhpmcountern[h]
mhpmcounter3-mhpmcounter31
,(0: no event, 1: cycle, 2: intstruction)。HPM (Hardware Performance Monitor)
,而在特权指令集架构 1.10 版本中,只有上述的描述以及暂存器可使用,文中提到 RISC-V 1.10 版本所缺乏的功能,大多数的架构其实是都支援的,如下:
The cycle, instret, and hpmcountern CSRs are read-only shadows of mcycle, minstret, and mhpmcountern, respectively. The time CSR is a read-only shadow of the memory-mapped mtime register
。其实这篇文件就是我们铁人赛团长的着作,在当初 RISC-V Manual 并没有完整支援 HPM 时,所提出的快速上手守则,而最近相关的 RISC-V 扩充指令集已经趋於完备,"Sscofpmf" extension,(由团长及团员提点所知道的XD),会在接下来的几篇铁人文中,研究并记录这个发展的过程,那麽今天就先到这里吧!
感谢大家,明天见!
使用 room 来建立Database abstract class AppDatabase: Ro...
Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...
关於我... hi~我是一个大三的学生,就读医学资讯。因为科系有学到一些资讯,加上系上的必修课需要...
前言: 随着网路时代普及生活化,各国政府对IT资讯产业也推行了相当多的管理法案以维护网际网路使用...
今天就来个说个在新手时期很常遇到,但却不知为什麽会发生的问题 来看一下我们前几天的表单范例,与图上 ...