• mcounteren

全称:机器计数器使能寄存器( Machine Counter-Enable Register)

counter-enable寄存器mcounteren 是一个32-bit的寄存器,控制硬件性能监视器couters作用域下一个最低特权模式。

此寄存器仅控制可访问性。读取或写入这个寄存器的行为不会影响底层计数器,即使在不可访问时,这些计数器也会继续增加。

当清除mcounteren寄存器中的CY、TM、IR或HPMn位时,当以s模式或u模式执行时,试图读取周期、时间、instret或hpmcountern寄存器将导致非法的指令异常。当设置了这些位中的一个,就允许在下一个实现的特权模式中访问相应的寄存器(如果实现了s模式,否则采用u模式)。

cycle,instret和hpmcounterN CSRs是只读的,分别是mcycle、minstret和mhpmcounterN的影子。time CSR 是只读的,是memory-mapped mtime寄存器的影子。类似的,在RV32I中,cycleh、instreth和hpmcounterNh CSRs分别是mcycleh、minstreth和mhpmcounterNh的只读影子。在RV32I上,timeh CSRs是memory-mapped mtime寄存器高32bits的只读影子,而time是mtime寄存器的低32bits的影子。

在u模式的系统中,必须实现mcounteren,但所有字段都是WARL并且可能是只读零,这表明在非特权模式下执行时,读取相应的计数器会导致非法的指令异常。在没有u型模式的系统中,mcounteren寄存器不应该存在。

  • mcountinhibit

全称: 机器计数器抑制增长寄存器( Machine Counter-Inhibit CSR)

寄存器mcountinhibit是一个32位的WARL寄存器,它控制硬件性能监控计数器的增涨。该寄存器中的设置仅控制计数器是否递增;它的可访问性不受此寄存器设置的影响。

当清除 mcountinhibit寄存器的CY、IR或HPMn比特位时,cycle、instret或 hpmcounterN寄存器会照样增长,当设置了CY、IR或HPMn时,对应的寄存器不增长。

mcycle CSR可以在同一个核心上的多个hart之间共享,在这种情况下, mcountinhibit.CY 字段也在这些hart之间共享,因此,对 mcountinhibit.CY 的写入将对这些 harts 可见。

如果未实现 mcountinhibit 寄存器,则实现的行为就像寄存器被设置为零一样。

当不需要cycle和 instret 计数器时,最好有条件地禁止它们以减少能量消耗。 提供单个 CSR 来禁止所有计数器还允许对计数器进行原子采样。 因为时间计数器可以在多个内核之间共享,所以不能用 mcountinhibit 机制来禁止它。

8.6 自制操作系统: risc-v Machine寄存器mcounteren/mcountinhibit相关推荐

  1. 《30天自制操作系统》从入门到放弃

    前言 以下均是废话,大部分来自摘抄,只是记录本人放弃的过程!!!切记是摘抄!!! 相关资料在:https://download.csdn.net/download/wxkhturfun/2253304 ...

  2. 如何读emmc里的引导程序_自制操作系统学习1 引导程序

    本系列学习有前面的汇编学习基础最好,如果没有影响也不大本系列学习主要资源来自<[30天自制操作系统].(川合秀实)>,<自己动手写操作系统>两本书 一.准备工作 bochs v ...

  3. 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

    <30天自制操作系统>笔记(01)--hello bitzhuwei's OS! 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的 ...

  4. x86从实模式到保护模式 pdf_【自制操作系统04】从实模式到保护模式

    通过前三章的努力,我们成功将控制权转交给了 loader.asm 这个程序.具体说就是 bios 通过加载并跳转到 0x7c00(IMB大叔们定的) 把控制权转交给了我们操作系统的第一个汇编程序 mb ...

  5. 操作系统源代码_计算机自制操作系统(八):仿生DOS操作系统源代码

    一.真机运行 我们已经完成了仿生DOS操作系统的制作,并在上一章的末尾给大家在虚拟机上做了演示.今天,我们要将该操作系统在真机上启动运行,是不是非常期待自己做出的第一款比较有意义的操作系统? 在&qu ...

  6. RISC V (RV32+RV64) 架构 整体介绍

    文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...

  7. 索骥馆-DIY操作系统之《30天自制操作系统》扫描版[PDF]

    内容简介: <30天自制操作系统>是一本兼具趣味性.实用性与学习性的操作系统图书.作者从计算机的构造.汇编语言.C语言开始解说,让读者在实践中掌握算法.在这本书的指导下,从零编写所有代码, ...

  8. 30天自制操作系统——第五天

    第五天 参考<30天自制操作系统>GDT&IDT - 谷月轩 - 博客 梳理一下文件 现在我们拥有这么9个文件: ipl10.nas InitialProgramLoader, 占 ...

  9. 30天自制操作系统第三天

    操作系统实验日志3 学号 201708010402 姓名 徐冰娜 专业年级班级 实验日期 2019.9.28 实验项目 第3天:进入32位模式并导入C语言 智能1701 30天自制操作系统第三天 操作 ...

最新文章

  1. 【c语言】判断是否为友好数
  2. python 调用摄像头拍照_《自拍教程67》Python调用摄像头, 拍照拍照!
  3. 最短路径之迪杰斯特拉(Dijkstra 算法)弗洛伊德算法(C语言完整代码实现)
  4. android 支付宝和微信支付封装,Android支付宝和微信支付集成
  5. 阿里云PolarDB开源数据库社区与 Tapdata 联合共建开放数据技术生态
  6. (转)Spring的三种实例化Bean的方式
  7. caffe.proto源码分析
  8. DenyHosts清除黑名单IP地址方法
  9. Anaconda和conda——关于python的数据科学开发环境,数据科学必备的十大Python库
  10. KB954430补丁重复安装失败的解决办法
  11. ExtraPhrase:一种针对抽象式(生成式)摘要的数据增强方法
  12. 易语言网页html代码大全,易语言网页操作取网页源码
  13. 酒桌游戏c语言,必学的酒桌游戏,让你成为聚会中最亮的仔
  14. 802.11n无线网卡驱动linux,Ubuntu 无线网卡驱动安装教程
  15. windows10 快速切换网络适配器
  16. php发布iis0x80070005,iis 0x80070005 解决方法
  17. 使用w查看系统负载 vmstat命令 top命令 sar命令 nload命令
  18. 500台机以上大型网吧设计方案
  19. 杰理之实现蓝牙三方通话功能【篇】
  20. 发疯的腾讯微博邀请码

热门文章

  1. 看的见的算法系列——插入排序
  2. python异常数据筛选_学习笔记(06):Python数据清理实践-数据过滤,06Python,清洗,实战,筛选...
  3. 淘宝API,api各种接口
  4. 详谈ByteArrayOutputStream的用法
  5. 《Linux命令速查手册》笔记
  6. rabbit MQ的rpc功能详解
  7. 2020年度总结 | 葡萄城软件开发技术回顾
  8. 用ESXi-Customizer 为ESXI镜像加入硬件驱动
  9. 基于php和mysql实现的简易民航订票系统实验
  10. 关于echarts套娃柱状图(嵌套柱)的实现