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