多核计算机

时间:2018-03-02 17:19:16

标签: multicore

我真的很想知道多核CPU在计算机启动时是如何启动的。我想有一个“主导核心”可以加载BIOS,然后将内核加载到RAM并唤醒剩余的核心,让它们等待代码运行(就像无限循环?)。但这只是我猜它的工作原理。

其他问题是,内核加载到内存后所有内核都可以进行系统调用,对吗?一个核心如何控制其他核心的任务?使用了哪些说明? (在x86 / x86-64中)

1 个答案:

答案 0 :(得分:1)

是的,有一个启动CPU。固件处理它。它通常是CPU 0,但如果那个丢失或有缺陷怎么办?然后它变得更加棘手。

在x86平台上有ACPI表,用于描述CPU和内存布局。操作系统使用IPI(处理器间中断)启动其他CPU,使其从空闲状态进入中断处理程序(在内存中设置),然后进入操作系统功能。然后选择线程来运行并开始做有用的事情。

如果您真的想知道它是如何工作的,请阅读Linux或其中一个BSD的源代码。

更新:看起来我错了IPI。它使用的是中断,但不是普通的IPI。 Linux SMP启动位于:https://github.com/torvalds/linux/blob/master/arch/x86/kernel/smpboot.c

似乎使用NMI或设置CPU重置。