系统启动时哪个核心首先初始化?

时间:2013-01-10 15:42:02

标签: cpu bootloader

我想知道多核处理器的哪个核心在cpu启动时首先初始化? (我的意思是在引导程序级别)是第一个核心?还是随机核心?

3 个答案:

答案 0 :(得分:9)

您想要阅读本地apic,您可以在“第2a卷”中阅读:

http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

每个处理器都有一个相应的本地apic,在每个本地apic中都有一个apic ID寄存器,在系统初始化时会被赋予唯一值。

联机的初始核心称为自举处理器(BSP),实际上可以是裸片上的任何物理核心。更多信息在“第3a卷”中,它们讨论了引导处理器选择过程。

以下是vol3a的摘录:

  

8.4.1 BSP和AP处理器

     

MP初始化协议定义了两类处理器:自举处理器(BSP)和应用程序处理器(AP)。在MP系统上电或复位后,系统硬件动态选择系统总线上的一个处理器作为BSP。其余处理器被指定为AP。

     

作为BSP选择机制的一部分,BSP标志在BSP的IA32_APIC_BASE MSR(见图10-5)中设置,表明它是BSP。为所有其他处理器清除此标志。

     

BSP执行BIOS的启动代码以配置APIC环境,设置系统范围的数据结构,以及启动和初始化AP。当BSP和AP初始化时,BSP然后开始执行操作系统初始化代码。

答案 1 :(得分:1)

这取决于处理器本身的架构。这样的事情并没有真正的标准。例如,PS3核心有9个核心,其中一个用于将任务计划到另一个核心8。在这种情况下,考虑到其他核心处理指令之前的公平性是公平的。就其他处理器而言,这是一个辨别更困难的事情。假设引导加载程序将其指令发送到核心集合是明智的,此时无论逻辑门如何向核心分配指令都以它们始终以任何方式进行。在大多数情况下,我知道启动时和任何其他时间的任务调度之间并没有真正的区别。最基本的任务调度硬件将只选择第一个可用的核心,通常是机器被认为是“第一”核心的核心。但就像我一直说不同的机器做的不同,所以我建议找出你正在使用的核心,并检查那个人做了什么。祝你好运。

答案 2 :(得分:1)

每个处理器都有自己的本地APIC和相关的本地APIC ID,这个可以从本地APIC寄存器读取(同一个处理器在每个处理器上给出不同的ID)