RISC-V规范如何管理未决异常?

时间:2019-05-31 09:25:19

标签: exception microcontroller specifications riscv

我正在使用RISC-V规范,并且对挂起的中断/异常有疑问。我正在阅读第二卷的1.10版本,该版本于2017年5月7日发布。

在3.1.14节中,描述寄存器mipmie的说法是:

  

具有相同特权级别的多个同时中断和陷阱将按以下递减的优先级顺序进行处理:外部中断,软件中断,定时器中断,最后是所有同步陷阱。

到目前为止,我还认为例外情况,例如JAL / JALR指令上未对齐的指令提取异常将由陷阱立即处理,因为  a)无法继续执行您的指令流,并且  b)没有描述异常的处理方式,即规范中没有描述可以管理异常状态的概念(例如mip之类的寄存器,但是有异常)。

但是,上面引用的段落表示不同的内容。 我的问题是:

  1. RISC-V中是否有未决异常?
  2. 如果是,那么在处理中断后又不会忘记该异常,怎么可能仍然可以处理?

1 个答案:

答案 0 :(得分:1)

根据您所说的原因,在我的选择中,RISCV-V中有待处理的异常。这是一个语义问题,如果两个事件同时发生,而一个事件被推迟,则它必须待处理。必须考虑到与陷阱同时发生的异步事件(中断)的可能性,并且(按第3.1.14节)异步事件具有优先权。根据实现的不同,在这种情况下,不需要处理任何状态,在处理了中断之后,将重新获取触发陷阱的指令,并适当地导致异常。在我看来,第3.1.14节描述了异步事件的序列化。