【问题标题】:How does the CPU decide what core should handle a hardware interrupt?CPU 如何决定哪个内核应该处理硬件中断?
【发布时间】:2019-09-23 00:10:19
【问题描述】:

Which processor would execute hardware interrupt in a muticore system 的问题及其答案似乎从操作系统的角度关注这一点,但是 CPU 如何在操作系统参与之前决定将硬件中断传递到哪个内核?

【问题讨论】:

    标签: x86 x86-64 cpu intel


    【解决方案1】:

    在操作系统介入之前,CPU 如何决定将硬件中断传递到哪个内核?

    在操作系统介入之前;只有一个 CPU 在运行(其余的 CPU 卡在“等待启动 IPI”状态,直到操作系统启动它们),并且配置了中断控制器(PIC 芯片或 IO APIC),以便将 IRQ 发送到唯一的正在运行的 CPU。

    注意:对于 BIOS; IO APIC 也被禁用,直到操作系统启用/配置它,并且固件使用旧的 PIC 芯片(实际上不能用来决定向哪个 CPU 发送 IRQ)。对于 UEFI,固件大多不使用 IRQ(其设备驱动程序轮询设备)。

    在涉及操作系统之后(不是之前);操作系统配置 IO APIC/s,可能还有 MSI(消息信号中断),可能还有 IOMMU 来告诉硬件将每个 IRQ 发送到哪个 CPU。

    有一种特殊情况(“发送到最低优先级 CPU”功能),芯片组决定将 IRQ 发送到哪个 CPU(基于本地 APIC 或 CR8 中的软件设置“任务优先级”)。遗憾的是,芯片组可能不支持此功能,即使支持,操作系统也可能无法使用此功能。

    【讨论】:

      【解决方案2】:

      这是由 I/O-APIC 完成的。 APIC 代表高级可编程中断控制器。来自OSDev WiKi的引用:

      此外,还有一个 I/O APIC(例如 intel 82093AA),它是芯片组的一部分,提供多处理器中断管理,在所有处理器中结合静态和动态对称中断分布。在具有多个 I/O 子系统的系统中,每个子系统都可以有自己的一组中断。

      指向规范can be found here 的过时链接。它将其部分功能描述为

      提供多处理器中断管理
      - 动态中断分配——将中断路由到最低优先级处理器
      - 中断输入的软件可编程控制
      - 卸载中断来自内存总线的相关流量

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2019-03-05
        • 2013-04-28
        • 1970-01-01
        • 2015-06-12
        • 1970-01-01
        相关资源
        最近更新 更多