2021-07-12

讨论记录 2021.07.12 #

参与成员:向勇、陈渝、贺鲲鹏、尤予阳

PLIC 的使用 #

平台 #

QEMU 的 RISC-V virt 机器有串口,并在 PLIC 中有初步设置

FPGA 上的串口用的 IP Core 支持中断

可能的参考 #

使用了 PLIC 的 OS demo:OSblog repo web

陶天骅的 uCore-SMP 中的 virtio 使用了中断

规范 #

目前的 PLIC 规范可以支持用户态中断的实现,QEMU 和 FPGA 中的 PLIC 符合规范

一个外部中断请求有可能在多个核上被响应(触发多个核的中断):暂未想到这种行为的合理性,可能是这种设计硬件实现较为简单

目前的PLIC的实现在SoC中的。 普渡大学 SoC

用户态中断 #

目标:用户态中断与 IPC 统一,设计为一样的信息数据结构

可能的做法:硬件上加 FIFO,进行中断信息的缓存

低特权级的中断在高特权级程序执行时如何处理(S 运行时发生 U 中断):类似优先级反转,提升“特权级”,由高特权级转换为给低特权级的 IPC

TODO #

  1. 分析 QEMU 和 FPGA 上的 PLIC 实现:M 和 S 是如何工作的
  2. 外部中断上下文(context)的具体实现是怎样的?硬件如何使用上下文?