Supervisor Timers and Performance Counters
管理器软件使用与用户模式软件相同的硬件性能监视工具,包括time、cycle和instret CSRs。具体实现中会提供修改counter值的机制。
在实现中,必须依据real-time counter, time提供调度timer中断。
Counter-Enable Register (scounteren)
counter-enable寄存器scounteren是一个32位寄存器,它控制u模式下硬件性能监控计数器的可用性。当scounteren寄存器中的CY、TM、IR或HPMn位被清除时,在u模式下执行时试图读取cycle、time、instret或hpmcountern寄存器将导致非法指令异常。当这些位中的一个被设置后,就允许访问相应的寄存器。
必须实现Scounteren。但任意位都可能是只读零,表示在u模式下执行时读取对应的计数器会导致异常。因此,它们实际上是WARL字段。
mcounteren中位的设置并不影响scounteren中对应的位是否可写。但是,只有设置了scounteren和mcounteren中相应的位,u模式才能访问counter。