讨论记录 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 #
- 分析 QEMU 和 FPGA 上的 PLIC 实现:M 和 S 是如何工作的
- 外部中断上下文(context)的具体实现是怎样的?硬件如何使用上下文?