RISC-V技术论坛
登录
直播中
王萍
8年用户
1376经验值
私信
关注
[经验]
计算程序执行指令数的函数实现
计算程序
探究过程
1、官方提供的计算周期数指令数方法为,采用如下这几个函数在所要计算的操作前后获取一次当前指令数和周期数。并求他们的差值,以此得到结果。
2、首先找到这几个函数原型在hbird-sdk/NMSIS/Core/Include/core_feature_base.h头文件中,以__get_rv_instret为例
其中主要调用了__RV_CSR_READ函数
3、追踪发现__RV_CSR_READ是一个宏定义,采用内联汇编使用csrr指令
也可查看反汇编代码:
4、查手册可知,csrr指令是用来读CSR寄存器的值
5、而minstreth和minstret寄存器介绍如下(来源:手把手教你设计cpu_RISC-V处理器),他们分别存储了指令计数器的高低32位
至此就大致能理解指令数计算函数的实现原理,即通过csrr指令读
minstreth和minstret寄存器得到执行操作前后的指令计数值,再取其差值即可得到该操作耗费的指令数。周期数计算同理。
更多回帖
rotate(-90deg);
回复
相关帖子
计算程序
计算
机
执行
指令
的过程分析
13912
verdi中
计算
周期数和
指令
数
124
Python字符
数
统计
函数
程序
19
计算
峰
数
_labview
程序
9
指令
如何
执行
1665
单片机
程序
是如何
执行
的:
指令
数据写哪了
7
单片机
程序
是如何
执行
的?
指令
数据写哪了?
9
stm32
程序
采用
函数
转换的方式
实现
float
数
1686
CPU的各种
指令
和
执行
流程
1947
RAMP的
指令
执行
模式与脉冲输出
指令
12680
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分