gpt4 book ai didi

multiprocessing - 多核 CPU 中断

转载 作者:行者123 更新时间:2023-12-03 23:37:53 25 4
gpt4 key购买 nike

多核处理器如何处理中断。
我知道单核处理器如何处理中断。
我也知道不同类型的中断。
我想知道多核处理器如何处理硬件、程序、cpu时序和输入/输出中断

最佳答案

这应该被视为 other answer 的延续或扩展。 .

大多数多处理器支持可编程中断 Controller ,例如 Intel 的 APIC。这些是由许多组件组成的复杂芯片,其中一些可能是芯片组的一部分。在启动时,所有 I/O 中断都传递到内核 0(引导处理器)。然后,在 APIC 系统中,操作系统可以为每个中断指定哪个内核应该处理该中断。如果指定了多个内核,则意味着由 APIC 系统决定应由哪个内核处理传入的中断请求。这称为中断关联。已经为操作系统和硬件提出了许多调度算法。一种明显的技术是通过以循环方式调度中断来平衡系统负载。另一个是this来自 Intel 的技术,试图平衡性能和功耗。

在 Linux 系统上,您可以打开 /proc/interrupts查看每个内核处理了多少每种类型的中断。在具有 8 个逻辑核心的系统上,该文件的内容可能如下所示:

           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       
0: 19 0 0 0 0 0 0 0 IR-IO-APIC 2-edge timer
1: 1 1 0 0 0 0 0 0 IR-IO-APIC 1-edge i8042
8: 0 0 1 0 0 0 0 0 IR-IO-APIC 8-edge rtc0
9: 0 0 0 0 1 0 0 2 IR-IO-APIC 9-fasteoi acpi
12: 3 0 0 0 0 0 1 0 IR-IO-APIC 12-edge i8042
16: 84 4187879 7 3 3 14044994 6 5 IR-IO-APIC 16-fasteoi ehci_hcd:usb1
19: 1 0 0 0 6 8 7 0 IR-IO-APIC 19-fasteoi
23: 50 2 0 3 273272 8 1 4 IR-IO-APIC 23-fasteoi ehci_hcd:usb2
24: 0 0 0 0 0 0 0 0 DMAR-MSI 0-edge dmar0
25: 0 0 0 0 0 0 0 0 DMAR-MSI 1-edge dmar1
26: 0 0 0 0 0 0 0 0 IR-PCI-MSI 327680-edge xhci_hcd
27: 11656 381 178 47851679 1170 481 593 104 IR-PCI-MSI 512000-edge 0000:00:1f.2
28: 5 59208205 0 1 3 3 0 1 IR-PCI-MSI 409600-edge eth0
29: 274 8 29 4 15 18 40 64478962 IR-PCI-MSI 32768-edge i915
30: 19 0 0 0 2 2 0 0 IR-PCI-MSI 360448-edge mei_me
31: 96 18 23 11 386 18 40 27 IR-PCI-MSI 442368-edge snd_hda_intel
32: 8 88 17 275 208 301 43 76 IR-PCI-MSI 49152-edge snd_hda_intel
NMI: 4 17 30 17 4 5 17 24 Non-maskable interrupts
LOC: 357688026 372212163 431750501 360923729 188688672 203021824 257050174 203510941 Local timer interrupts
SPU: 0 0 0 0 0 0 0 0 Spurious interrupts
PMI: 4 17 30 17 4 5 17 24 Performance monitoring interrupts
IWI: 2 0 0 0 0 0 0 140 IRQ work interrupts
RTR: 0 0 0 0 0 0 0 0 APIC ICR read retries
RES: 15122413 11566598 15149982 12360156 8538232 12428238 9265882 8192655 Rescheduling interrupts
CAL: 4086842476 4028729722 3961591824 3996615267 4065446828 4033019445 3994553904 4040202886 Function call interrupts
TLB: 2649827127 3201645276 3725606250 3581094963 3028395194 2952606298 3092015503 3024230859 TLB shootdowns
TRM: 169827 169827 169827 169827 169827 169827 169827 169827 Thermal event interrupts
THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts
DFR: 0 0 0 0 0 0 0 0 Deferred Error APIC interrupts
MCE: 0 0 0 0 0 0 0 0 Machine check exceptions
MCP: 7194 7194 7194 7194 7194 7194 7194 7194 Machine check polls
ERR: 0
MIS: 0
PIN: 0 0 0 0 0 0 0 0 Posted-interrupt notification event
PIW: 0 0 0 0 0 0 0 0 Posted-interrupt wakeup event

第一列指定中断请求 (IRQ) 编号。所有正在使用的 IRQ 编号都可以在列表中找到。文件 /proc/irq/N/smp_affinity包含指定 IRQ N 关联的单个值。该值应根据 APIC 的当前操作模式进行解释。

一个逻辑内核可以接收多个 I/O 和 IPI 中断。在这一点上,本地中断调度发生,这也可以通过为中断分配优先级来配置。

其他可编程中断 Controller 类似。

关于multiprocessing - 多核 CPU 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49379899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com