8.6 自制操作系统: risc-v Machine寄存器mcounteren/mcountinhibit
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相关推荐
- 《30天自制操作系统》从入门到放弃
前言 以下均是废话,大部分来自摘抄,只是记录本人放弃的过程!!!切记是摘抄!!! 相关资料在:https://download.csdn.net/download/wxkhturfun/2253304 ...
- 如何读emmc里的引导程序_自制操作系统学习1 引导程序
本系列学习有前面的汇编学习基础最好,如果没有影响也不大本系列学习主要资源来自<[30天自制操作系统].(川合秀实)>,<自己动手写操作系统>两本书 一.准备工作 bochs v ...
- 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!
<30天自制操作系统>笔记(01)--hello bitzhuwei's OS! 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的 ...
- x86从实模式到保护模式 pdf_【自制操作系统04】从实模式到保护模式
通过前三章的努力,我们成功将控制权转交给了 loader.asm 这个程序.具体说就是 bios 通过加载并跳转到 0x7c00(IMB大叔们定的) 把控制权转交给了我们操作系统的第一个汇编程序 mb ...
- 操作系统源代码_计算机自制操作系统(八):仿生DOS操作系统源代码
一.真机运行 我们已经完成了仿生DOS操作系统的制作,并在上一章的末尾给大家在虚拟机上做了演示.今天,我们要将该操作系统在真机上启动运行,是不是非常期待自己做出的第一款比较有意义的操作系统? 在&qu ...
- RISC V (RV32+RV64) 架构 整体介绍
文章目录 riscv 市场 芯片介绍 软件介绍 开发板介绍 PC介绍 riscv 架构 编程模型(指令集/寄存器/ABI/SBI) 运行状态 指令集 寄存器 riscv32和riscv64两者的区别 ...
- 索骥馆-DIY操作系统之《30天自制操作系统》扫描版[PDF]
内容简介: <30天自制操作系统>是一本兼具趣味性.实用性与学习性的操作系统图书.作者从计算机的构造.汇编语言.C语言开始解说,让读者在实践中掌握算法.在这本书的指导下,从零编写所有代码, ...
- 30天自制操作系统——第五天
第五天 参考<30天自制操作系统>GDT&IDT - 谷月轩 - 博客 梳理一下文件 现在我们拥有这么9个文件: ipl10.nas InitialProgramLoader, 占 ...
- 30天自制操作系统第三天
操作系统实验日志3 学号 201708010402 姓名 徐冰娜 专业年级班级 实验日期 2019.9.28 实验项目 第3天:进入32位模式并导入C语言 智能1701 30天自制操作系统第三天 操作 ...
最新文章
- 【c语言】判断是否为友好数
- python 调用摄像头拍照_《自拍教程67》Python调用摄像头, 拍照拍照!
- 最短路径之迪杰斯特拉(Dijkstra 算法)弗洛伊德算法(C语言完整代码实现)
- android 支付宝和微信支付封装,Android支付宝和微信支付集成
- 阿里云PolarDB开源数据库社区与 Tapdata 联合共建开放数据技术生态
- (转)Spring的三种实例化Bean的方式
- caffe.proto源码分析
- DenyHosts清除黑名单IP地址方法
- Anaconda和conda——关于python的数据科学开发环境,数据科学必备的十大Python库
- KB954430补丁重复安装失败的解决办法
- ExtraPhrase:一种针对抽象式(生成式)摘要的数据增强方法
- 易语言网页html代码大全,易语言网页操作取网页源码
- 酒桌游戏c语言,必学的酒桌游戏,让你成为聚会中最亮的仔
- 802.11n无线网卡驱动linux,Ubuntu 无线网卡驱动安装教程
- windows10 快速切换网络适配器
- php发布iis0x80070005,iis 0x80070005 解决方法
- 使用w查看系统负载 vmstat命令 top命令 sar命令 nload命令
- 500台机以上大型网吧设计方案
- 杰理之实现蓝牙三方通话功能【篇】
- 发疯的腾讯微博邀请码
热门文章
- 看的见的算法系列——插入排序
- python异常数据筛选_学习笔记(06):Python数据清理实践-数据过滤,06Python,清洗,实战,筛选...
- 淘宝API,api各种接口
- 详谈ByteArrayOutputStream的用法
- 《Linux命令速查手册》笔记
- rabbit MQ的rpc功能详解
- 2020年度总结 | 葡萄城软件开发技术回顾
- 用ESXi-Customizer 为ESXI镜像加入硬件驱动
- 基于php和mysql实现的简易民航订票系统实验
- 关于echarts套娃柱状图(嵌套柱)的实现