在完成香山昆明湖与 Neoverse N2 全量对比后,我们将目光投向核外 Uncore IP 的完整实现。参考 ARM 服务器计算子系统的设计经验,一款完整的服务器 SoC,除了 CPU 核本身,中断控制器、IOMMU、调试模块等关键组件缺一不可。
传统 RISC-V 平台依赖CLINT + PLIC的中断方案,从设计之初就未适配多核与虚拟化场景。PLIC 的虚拟化支持能力有限 ——Guest OS 访问 PLIC 必须由 Hypervisor 全程 trap-and-emulate,即便开启 H 扩展,也无法直接向虚拟机注入中断。
为更好的支持多场景,RISC-V AIA(Advanced Interrupt Architecture)应运而生。2023 年 6 月,AIA 规范正式通过 RISC-V International 批准,成为 RISC-V 服务器领域中断架构的新一代标准。
一、AIA 架构拆解:IMSIC + APLIC + AIA CSRs
AIA 由AIA CSRs、IMSIC、APLIC三大组件协同配合,构建起完整的中断处理体系。
1.1 AIA CSRs / 扩展本地中断
AIA 为每个 RISC-V hart 增添了一套通过间接寻址访问的寄存器组。其核心思想,是把“中断文件(interrupt file)”的状态全部映射到一个统一的间接地址空间里。
其中新增的 mtopi/stopi/vstopi CSR 最为关键:读取时直接返回当前最高优先级且 pending+enabled 的中断 ID 与优先级编码。配合 iprio 数组,软件可对定时器、软件中断、外部中断进行跨类型的统一优先级排序——这在 PLIC 时代完全无法实现。AIA 规范定义了全套间接 CSR 的概念,将原本分散的中断状态收敛到一体。
RISC-V Ssaia CSR 围绕 RISC-V 高级中断架构(AIA)中 Supervisor 级(S 模式)中断相关的控制状态寄存器(CSR)、虚拟化扩展(VS/H 模式)寄存器、IMSIC 寄存器映射及中断处理流程展开。核心价值是定义了 S 模式下中断管理的标准化 CSR 接口,替代传统非 AIA 设计中繁琐的 sip/siph 位扫描,提升中断处理效率。
1.2 IMSIC:消息中断的分布式接收器
IMSIC 是 AIA 中最核心的创新:每个 hart 拥有一个独立的 IMSIC 单元,其物理地址空间中包含 M 级、S 级以及若干 Guest 级的中断文件,每个中断文件对应 4KiB 物理页。该布局使不同特权级中断文件在地址空间上可分离,便于通过 PMP 与页表机制实施访问保护与虚拟化隔离。
虚拟化下多核路径:
MSI 注入路径(以 PCIe 设备为例):PCIe 设备 → 写物理地址(IMSIC-S 文件页)→ IMSIC 置 eip[EIID]→ 触发 SEI(Supervisor External Interrupt)→ 软件通过 stopei CSR claim 并清除。
在采用 AIA 的实现中,IPI 可通过向目标 hart 的 IMSIC 中断文件写入约定中断 ID 来投递;其传输形态与设备 MSI 高度一致。
但是否完全取代传统 IPI 控制路径取决于平台,软件层仍需负责 IPI 的策略与管理。
优先级仲裁逻辑方面:IMSIC 内部默认按 ID 越小优先级越高,软件通过 eithreshold设置门限——所有 ID 等于门限的中断,即使pending+enabled 也不会产生外部中断信号。这种将仲裁完全下沉到 hart 本地的设计,消除了 PLIC 的集中竞争点。
虚拟化支持是 AIA 的关键增强之一:启用 IMSIC Guest interrupt file 后,外部中断可在硬件重映射后直接以虚拟中断形式投递给 Guest,通常可避免每次注入都触发 VM-exit。
AIA 还定义了面向虚拟化的 MRIF 机制(具体大小与实现参数相关,常见为位图结构),可由支持中断重映射的 IOMMU 配合使用。设备 MSI 到达后,IOMMU 按策略更新目标中断状态,并在必要时通知 Hypervisor;最终可递送状态由 MRIF 与 EIP 相关状态合成判断。这为设备直通场景提供了清晰且高性能的中断路由路径。
1.3 APLIC:线中断
APLIC 负责接管传统外设的线中断,其行为支持两种模式:
有 IMSIC 时(MSI 模式):APLIC 检测到边沿或电平触发后,自动生成一次 MSI 写操作,发往目标 hart IMSIC 的中断文件。因此,有线中断在到达 IMSIC 之前,就和 PCIe MSI 在传输形态上都统一为内存写事务。 无 IMSIC 时(直接模式):APLIC 为每个目标 hart 维护 IDC(Interrupt Delivery Control)结构,行为类似微型 PLIC,适合小型系统。
APLIC 最多支持1023个有线中断源,并通过域(domain)层次实现 M 级与 S 级的独立控制,在隔离和性能之间提供了远比 PLIC 灵活的设计。
1.4 MRIF:内存驻留中断文件
MRIF(Memory-Resident Interrupt File)支持是RISC-V Advanced Interrupt Architecture (AIA) 规范中定义的一种内存驻留中断文件,主要用于虚拟化环境中的中断管理。需搭配RISC-V IOMMU 使用,大小为512字节,存储外部中断的挂起与启用信息。
PCIe设备通过MSI将中断请求写入MRIF,IOMMU完成目标检查与权限校验,实现设备直通;Hypervisor 通过 MRIF 与 IMSIC 的 eip 数组协同,完成虚拟中断状态管理。
二、与 ARM GICv3/v4 的架构对比
作为服务器级中断架构的两大标杆,AIA 与 GICv3/v4 的核心差异,正在成为 RISC-V 与 ARM 在服务器竞争力对比中的核心变量之一。
2.1 体系结构角色与模块拆分
GICv3 的 ITS 在处理 PCIe MSI 时扮演“翻译代理”角色——设备写 ITS 门铃地址,ITS 查三级表(DeviceTable → EventTable → CollectionTable)翻译成LPI 中断ID。
而AIA IMSIC 的方案更为扁平:设备直接写目标 hart 的 IMSIC 物理地址,无需中间翻译步骤,但这也意味着中断迁移时需要重新配置设备侧的 MSI 地址。
2.2 中断类型与编号空间
AIA:IPI 通过写 IMSIC 实现,与 MSI 机制统一,规范明确不提供硬件广播 / 组播(Linux 已弃用该模式);
GICv3:拥有专用 SGI 路径,支持有限组播,中断类型更细分。
2.3 优先级、抢占与门限
抢占流程对比:
GICv3:低优先级 ISR 运行中,高优先级中断到达可硬件自动抢占;
AIA v1.0:OS 若需中断嵌套,须在 ISR 入口手动保存上下文、调高 eithreshold 门限、重新使能中断——这是完全的软件驱动嵌套。RTIA(实时中断架构草案)正在增加嵌套向量模式,但截至 2026 年初仍在规范制定过程中。
2.4 虚拟化支持对比
AIA 虚拟化的突出优势在于,当 IMSIC Guest File可在合适配置下将部分外部设备中断直接投递给 Guest,从而显著减少甚至避免常规路径中的 VM-exit。
三、面向芯片设计者的考量
3.1 不同产品形态下的选择权衡
(● 必需 / ○ 可选 / — 不需要)
低成本 MCU / 简单 SoC(无虚拟化、2-8 核、<64 中断源)
AIA 精简方案:仅实现 APLIC 直接模式 + AIA CSRs,跳过 IMSIC,面积最小。缺点是不兼容 MSI。
建议:纯 RISC-V MCU 场景首选精简 APLIC,与 ACLINT 配合覆盖 RTOS 需求。
中高端通用 SoC(8-64 核 + Linux + PCIe)
AIA 完整方案:APLIC + IMSIC + AIA CSRs 完整实现,天然支持 PCIe MSI-X。驱动已进主线,Linux SMP 支持完整。
建议:全新 RISC-V SoC 应选择完整 AIA,更好和主线 Linux 的协同验证。
云端 / 数据中心 RISC-V 服务器(重度虚拟化、大量 PCIe 设备)
AIA 完整方案:IMSIC Guest Files + IOMMU MSI 重映射,零 VM-exit 中断路径,支持数千 VM 的中断状态卸载。
建议:强烈建议完整实现 AIA,并提前规划与 Linux KVM 的协同验证,尤其是 IMSIC Guest File 状态迁移路径。
3.2 MSI + IMSIC 对 NoC 的流量模式影响
传统 PLIC + 有线中断架构下,中断信号通过专用 sideband 线路传输,不占用 NoC 数据通路带宽。AIA + IMSIC 将所有中断投递转化为标准 store 事务:
流量分散:每次中断写直接到目标 hart 的 IMSIC 地址,无中央热点
QoS 可统一:中断写事务与普通数据写事务在 NoC 层面同质
突发场景:高 IRQ 率时,IMSIC 写流量会竞争 NoC 带宽,设计时需预留足够的路由优先级
四、面向 BSP/OS 实现者的开发要点
4.1 启动阶段初始化
中断号分配:IMSIC matrix allocator 为每个 hart 分配 EIID,维护全局 IMSIC ID 矩阵
IRQ affinity:修改 APLIC target[n] 中的 hart_index 字段,同时更新设备 MSI 地址寄存器
IPI:arch_send_call_function_ipi 等接口通过写目标 hart IMSIC 地址实现
4.2 虚拟化与 KVM 支持
KVM RISC-V AIA 提供三种 IMSIC 操作模式:
Emulation 模式:KVM 完全软件仿真 IMSIC
HW 直通模式(VS-file):物理 IMSIC Guest 文件直接暴露给Guest OS,vstopei 读写不产生 VM-exit
自动模式:有 VS-file 时用 HW 直通,否则降级为emulate
APLIC 在 KVM 中始终为 trap-and-emulate(因其为非 ISA 的 MMIO 组件)。IOMMU MSI 重映射是实现"Guest 零介入直接控制设备"的关键,需要配套 RISC-V IOMMU 规范支持。
4.3 调试与性能分析
AIA 调试关键寄存器:
stopei/vstopei:读取获取当前 top pending 中断
stopi:仅读,显示最高优先级中断的 IID+优先级(不清除 pending)
eip0-eip63 / eie0-eie63:检查 pending/enable 状态
APLIC MMIO setip[] / in_clrip[]:查看有线中断状态
对 AIA 各组件设计 PMU 事件计数器——昆明湖V2/V3 RTL 中已有以下 xSPerfAccumulate 计数器:imsic_msi_recv \ imsic_eip_set \ imsic_topei_read \ aplic_msi_forward
五、硬件架构可扩展性
AIA 的分布式 IMSIC 设计在大多数场景下比 GICv3 集中式 Distributor 更具扩展优势,具体来说,每 hart 独立的 MSI 接收器消除了 PLIC 的集中竞争点,NoC 流量更均匀。
GICv3/v4 是成熟的大规模 SoC 解决方案:CoreLink GIC-600/700 已 silicon-proven 于服务器级芯片,但定制空间有限。
5.1 软件生态与 BSP 维护成本
AIA 的 Linux 主线驱动已具备基本可用性,但距 GICv3 的成熟度仍有差距:目前实际硬件验证主要依赖 QEMU,硅后芯片比较少。
5.2 虚拟化与云场景长期演进
AIA 的 IMSIC Guest File + IOMMU MSI 重映射路径是云端场景的正确架构方向,在理论上可以实现接近于 GICv4 DIVL 的零VM-exit 中断投递。但是,这条路径的完整实现及其依赖 RISC-V IOMMU 规范(2024 年 6 月批准)及其驱动成熟度。
而 GICv4.1 的 vSGI 直接注入,使得 ARM 虚拟化中断栈完整度暂时领先了 AIA;
AIA 的虚拟 IPI 路径目前仍须 Hypervisor 介入。
随着 Linux 驱动的持续完善和 IOMMU 规范的落地,在服务器领域,RISC-V 中断架构正持续演进,未来将具备与 ARM 生态同台竞争的核心能力。
欢迎您关注开芯院公众号
▼
