【问题标题】:Which processor would execute hardware interrupt in a muticore system哪个处理器将在多核系统中执行硬件中断
【发布时间】:2016-12-25 18:31:19
【问题描述】:

一般而言,硬件中断需要立即处理,至少以便确认它并进行一些第一级处理。据我了解,这不是预定活动。请纠正我。

那么问题是如何选择一个处理器来实际执行这个硬件中断处理程序?

Linux 和/或 BSD 系统可以回答这个问题

【问题讨论】:

  • AFAIK 主线 Linux 仅支持 SMP,对称多处理器硬件,这意味着任何处理器都可以服务中断。我已经看到将 UNIX 移植到非对称硬件,即有一个专用于 I/O 和中断的处理器。顺便说一句,处理器不会“执行中断”。它可以服务一个中断,即执行一个中断服务程序,ISR。
  • 等等,UP也支持。

标签: linux-kernel linux-device-driver embedded-linux device-driver netbsd


【解决方案1】:

一般来说,这取决于多核处理器和操作系统提供的功能。在使用多核处理器时,您可能需要根据需要配置中断的亲和性。

在linux 的情况下,/proc 文件系统可以显示/配置中断的关联性。

1) 各个 irq 的文件smp_affinity 包含一个位掩码,可用于在多核系统中配置由各个核心服务的 irq:

/proc/irq/'irq_number'/smp_affinity

echo 2 > /proc/irq/12/smp_affinity  -> Configures the affinity of IRQ 12 to CPU 1
echo 4 > /proc/irq/14/smp_affinity  -> Configures the affinity of IRQ 14 to CPU 2

2) smp_affinity_list 文件通过避免使用位掩码配置内核的方法,帮助为特定的 IRQ 配置 CPU 范围:

/proc/irq/'irq_number'/smp_affinity_list

cat /proc/irq/12/smp_affinity_list -> Configures the affinity of IRQ 12 to CPU cores 0 to 3

3) linux 还提供了一个名为irqbalance 的中断负载平衡守护进程,它可以帮助在处理器内核之间分配中断以优化性能。该守护进程可能在某些系统中默认启用,因此如果您希望手动配置中断的关联性,则应禁用此守护程序,否则这可能会在每次重置后覆盖配置的关联性。

【讨论】:

    【解决方案2】:

    选择一个特定的处理器来处理中断是在 IO-APIC(在 IO 控制器集线器上)和 Local APIC(在处理器)。

    IO-APIC 和本地 APIC 通过 APIC 总线进行通信,其中将决定哪个处理器将处理广播中断等。在 IO-APIC 上,有一个称为重定向表的东西,可以对其进行编程以指示特定 IRQ 线的目标处理器、中断向量等。

    用 Ingo Molnar 的话来说: “大多数(所有)符合 Intel-MP 的 SMP 板都有所谓的 'IO-APIC',它是一种增强的中断控制器。它使我们能够将硬件中断路由到多个 CPU 或 CPU 组。没有IO-APIC,来自硬件的中断只会传递给启动操作系统的 CPU(通常是 CPU#0)。”

    来源: https://www.kernel.org/doc/html/latest/x86/i386/IO-APIC.html

    有关各种寄存器的信息(此页面还包含 IO-APIC 规范的链接): https://wiki.osdev.org/APIC

    现代主板利用 MSI(消息信号中断)来传递中断。 MSI 不需要 IO-APIC,但仍需要处理器上的本地 APIC。这里借助“Root Complex”、“Switch”和“PCI/PIC-X to PCIe Bridge”实现了相同的功能,但基本概念保持不变。

    【讨论】:

      【解决方案3】:

      这确实取决于操作系统的实现。

      一些将所有中断分配给单个处理器,而另一些则将中断处理分配给部分或所有处理器。

      在 NUMA 系统上,操作系统应该尝试将中断处理分配给“附近的”处理器。

      您必须阅读您感兴趣的操作系统(和版本)的源代码才能了解它的用途。

      【讨论】:

      • 感谢您的回答 +1。想确定您的答案是关于硬件中断,而不是实际上是计划活动的下半部分处理。
      • 我没有区分中断处理程序的“下半部分”和硬件中断。但是一些硬件系统可能会将硬件中断连接到处理器的子集,甚至单个处理器,从而使操作系统更加有趣。 (请记住,在 IBM-PC/AT 系统架构中,除了 X86 之外,还有更多的东西。)
      • 它部分取决于操作系统的实现,更强烈地取决于 PIC、PIR 等的硬件实现。
      • @EricSchnoebelen - 它的哪一部分应该取决于操作系统的实现?除了硬连线数字电路,我想不出任何东西。因为在硬件中断中,只有数字脉冲从设备到中断控制器再到处理器发挥作用。只有在脉冲到达处理器操作系统后才能开始其工作。怎么会在这之前发挥作用?
      猜你喜欢
      • 1970-01-01
      • 2011-06-22
      • 2018-06-24
      • 1970-01-01
      • 2012-06-12
      • 2012-08-26
      • 2023-04-07
      • 1970-01-01
      • 2016-08-07
      相关资源
      最近更新 更多