X86(Local APIC+I/O APIC)与RISC-V(IMSIC+APLIC)对比

本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。

将X86(Local APIC+I/O APIC)与RISC-V(IMSIC+APLIC)进行对比。

1 组件对比

X86:

  • Local APIC(Local Advanced Programmable Interrupt Controller,本地高级中断控制器),位于CPU中,每个core都有一个自己的LAPIC。
  • IOAPIC(I/O Advanced Programmable Interrupt Controller,I/O 高级中断控制器),通常位于外部设备芯片上,例如南桥上。像PIC 一样,连接各个产生中断的设备。

RISC-V:

  • IMSIC(Incoming Message-Signaled Interrupt Controller),位于CPU中,每个Hart都有一个自己的IMSIC。
  • APLIC(Advanced Platform-Level Interrupt Controller),APLIC的任务是收集和处理中断,然后将这些中断以线连接或者MSI的方式传递给hart。

IMSIC的作用,相当于X86中Local APIC;

APLIC的作用,相当于X86中IOAPIC。

为处理外部中断,X86中Local APIC+I/O APIC的组合,与RISC-V中IMSIC+APLIC,非常相似。

2 处理对比

对外部中断的处理,可以从下图,进一步对比:

  • 外部中断进入APLIC(或IOAPIC),转换为MSI消息;
  • 判断IOMMU是否启用
    • 若启用,则对MSI进行转换,结果依然是MSI消息,再传递到IMSIC(Local APIC);
    • 若禁用,则直接传递到IMSIC(Local APIC)。
  • MSI消息进入Hart(Core)中的IMSIC(Local APIC)后,进行处理,会将中断对应的pending置位等,以便软件检测到中断,进而进入中断服务程序。

3 X86中断架构参考文档

相关推荐
YHPsophie1 天前
面向高可靠场景的RISC-V低功耗MCU硬件安全设计
单片机·嵌入式硬件·risc-v
oahrzvq1 天前
【CPU】结合RISC-V CPU架构回答中断系统的7个问题(个人草稿)
架构·risc-v·中断·plic
TARDIS_20203 天前
OpenHarmony-Risc-V上运行openBLAS中的benchmark
risc-v·openharmony
nLif4 天前
LicheeRV Nano 与Ubuntu官方risc-v 镜像混合
linux·ubuntu·risc-v
菜狗想要变强9 天前
RVOS-7.实现抢占式多任务
linux·c语言·驱动开发·单片机·嵌入式硬件·risc-v
程序员JerrySUN17 天前
深入解析ARM与RISC-V架构的Bring-up核心流程
arm开发·架构·risc-v
Hug Freedom.17 天前
RISC-V AIA学习---IPI 处理器间中断
学习·risc-v
黑不拉几的小白兔19 天前
risc-V学习日记(3):编译与链接
学习·risc-v
Hug Freedom.22 天前
RISC-V debug专栏2 --- Debug Module(DM)
risc-v
百里杨23 天前
编译玄铁处理器RISC-V指令测试用例
测试用例·risc-v·玄铁