实现RISC-V的“mtime/mtimecmp”寄存器

问题描述

我正在尝试实现特权规范中定义的内存映射 mtime/mtimecmp 寄存器。我在下面有几个问题,

  • 规范规定 mtime 应由固定频率时钟计时。这可以是 RTC,也可以是通用时钟信号,只要它是固定的。这个时钟的频率将决定 mtime 的时基。我想我可以将核心时钟频率除以 100 以生成 mtime 的固定频率。这意味着 mtime 寄存器的时钟将比内核慢 10000 倍。问题是内核何时想要写入 mtime。由于mtime每100个内核周期计时一次,写指令可能不会立即生效,因为它必须等待mtime的时钟信号来更新寄存器。这种行为正常吗?在此期间 MTIP 会发生什么?现在,我知道软件通常不应该写入 mtime,但它仍然是一个可写的寄存器,我必须考虑它。规范说“写入 mtime 和 mtimecmp 保证最终会反映在 MTIP 中,但不一定立即”。我的问题是为什么这个声明在规范中?

我希望我说清楚了。提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)