软硬协同的用户态中断

目标

本项目在现有 RISC-V 用户态中断扩展规范草案 的基础上将其进一步完善,提出一种符合该规范的模拟器和 FPGA 实现,并基于用户态中断在内核中实现优化的信号机制,在用户态实现一个硬件驱动,展示其设计和性能优势。

系统设计

系统整体架构设计如下:

arch

  • 模拟器:修改 QEMU 5.0,在其中添加 N 扩展支持
  • FPGA:基于中科院计算所的标签化 RISC-V 架构,添加 N 扩展支持
  • 启动器与 SBI:在 FPGA 平台上使用基于 RustSBI 开发的 lrv-rust-bl ,在 QEMU 上使用修改过的 RustSBI-QEMU 以提供多核启动支持
  • 操作系统:rCore-N,能够在多核环境下运行,演示程序也在该仓库中

仓库目录和结构

.
├── README.md
├── docs                docs in mdbook structure
├── Labeled-RISC-V-N    Labeled RISC-V with N extension, FPGA code
├── lrv-rust-bl         Labeled RISC-V fpga bootloader based on RustSBI
├── qemu                qemu modified by Campbell He
├── qemu-build          folder holding qemu build artifacts
├── rCore-N             rCore with N extension
├── rustsbi-qemu        rustsbi-qemu with legacy IPI and multicore boot support
└── rv-csr-test         N extension simple test program

部分开发进展

QEMU 与 FPGA

  • 在 QEMU 中添加 N 扩展支持
  • 在 FPGA 开发板上部署标签化 RISC-V 架构
  • 在标签化 RISC-V 架构中添加 N 扩展支持
    • 通过基本测试
    • 单核情况下正常运行 rCore-N
    • 多核启动和运行
  • 在 QEMU 和 FPGA 中添加额外的串口供用户态程序使用

操作系统

  • 实现对用户态中断的管理
  • 适配 FPGA 平台
  • 多核支持
  • 实现信号机制

应用程序

  • 验证 N 扩展正常工作
  • 信号机制演示程序
  • 用户态串口驱动程序
  • 性能测试