RISC-V的cycle、time、instret计数器

RISC-V定义了3个64位计数器,分别为:cycletimeinstret,这三个寄存器可以用来评估硬件性能,还可以产生嘀嗒定时中断。

mingdu.zheng at gmail dot com
http://blog.csdn.net/zoomdy/article/details/79443472

64位计数器

cycletimeinstret这三个计数器都是64位的,无论是RV32I、RV64I还是RV128I。在RV32I/RV32E中,访问64位计数器要注意正好碰上低32位进位的情况,参考《RV32I/RV32E在访问mtime和mtimecmp的注意事项》。这三个寄存器的主要作用是评估硬件性能的,同时time计数器配合timecmp可以提供一个嘀嗒定时器。

cycle计数器

cycle计数器统计自CPU复位以来共运行了多少个周期。

time计数器

time计数器统计自CPU复位以来共运行了多少时间,驱动time计数器是已知的固定频率的时钟,例如32768Hz的时钟。

instret计数器

instret计数器统计自CPU复位以来共运行了多少条指令。

cycle vs time

cycle统计的是CPU周期数,驱动cycle计数器的是CPU的核心时钟,核心时钟可能是动态调整的,例如繁忙状态下核心时钟调整到100MHz,空闲状态下核心时钟调整到10MHz,依据cycle是无法确定CPU运行了多少时间的,除非CPU的时钟是固定的。而驱动time计数器的一定是固定频率的时钟,所以可以用来确定CPU运行了多少时间。

cycle vs instret

cycle统计的是周期数,instret统计的是指令数,有些指令需要多个周期才能完成,例如MUL指令,有些实现需要4个周期,那么执行MUL指令后,cycle增加4,而instret增加1。还有就是内存访问会引起等待周期,内存的等待周期会累计到cycle,但是不影响instret

读计数器指令

RDCYCLE    rd // ReaD CYCLE
RDCYCLEH   rd // ReaD CYCLE upper Half, RV32I/RV32E only
RDTIME     rd // ReaD TIME
RDTIMEH    rd // ReaD TIME upper Half, RV32I/RV32E only
RDINSTRET  rd // ReaD INSTR RETired
RDINSTRETH rd // ReaD INSTR upper Half, RV32I/RV32E only
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值