查看: 1404|回复: 0
收起左侧

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

[复制链接]

  离线 

  • TA的每日心情
    奋斗
    2021-3-3 12:32
  • 签到天数: 10 天

    [LV.3]

    发表于 2020-8-24 10:45:08 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 皋陶 于 2020-8-26 19:13 编辑

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


    mingdu.zheng at gmail dot com

    64位计数器

    cycle、time、instret这三个计数器都是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。


    读计数器指令
    1. RDCYCLE    rd // ReaD CYCLE
    2. RDCYCLEH   rd // ReaD CYCLE upper Half, RV32I/RV32E only
    3. RDTIME     rd // ReaD TIME
    4. RDTIMEH    rd // ReaD TIME upper Half, RV32I/RV32E only
    5. RDINSTRET  rd // ReaD INSTR RETired
    6. RDINSTRETH rd // ReaD INSTR upper Half, RV32I/RV32E only
    复制代码
    本篇完,感谢关注:RISC-V单片机中文网




    上一篇:当区块链遇见 RISC-V(原篇)
    下一篇:RISC-V未来希望在中国,快来占先机!(名额有限,抓紧啦)
    RISCV作者优文
    全球首家只专注于RISC-V单片机行业应用的中文网站
    回复

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条



    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2024-3-30 00:00 , Processed in 0.630366 second(s), 53 queries .

    快速回复 返回顶部 返回列表