如何在Intel环形和网格架构上选择引导处理器(BSP)

时间:2019-03-23 17:54:59

标签: x86 intel cpu-architecture boot multicore

Section 2.13.2提到使用仲裁ID来确定哪个处理器首先发出无操作周期,而我在多个来源和《英特尔手册》上都看到了这一点。当有“系统总线”且之前有“ APIC总线”时,引用MP初始化序列的英特尔手册仅针对奔腾4。我的印象是,仅在多个CPU共享同一总线的那些体系结构中才需要仲裁ID。但是现在,使用环形总线体系结构,可以通过检测环形总线上的空插槽并将事务置于其上来完成仲裁,并且该事务在每个周期一站地移动,这意味着不再需要仲裁。

有趣的是,第2.13.2节是讨论英特尔ME和PCH的文档的一部分,因此显然是在谈论Nehalem和最近,但要说使用了APIC ArbID,也许实际上只是在谈论Nehalem或Westmere。

所以我问,如何在环形和网状架构上选择BSP?我的想法是,它可以将缓存用作RAM,如果缓存一致性确实在无填充模式下起作用,则它们可以争用互斥体

1 个答案:

答案 0 :(得分:2)

我认为,核心之一就是BSP,这只是硬道理。我认为在您向它们发送IPI之前,其他内核都无法启动,并且它们肯定不会运行试图在缓存中获取互斥锁的代码,以解决这些问题。其他内核可能会处于类似HALT的状态,等待中断。

(但可能像C7之类的深度睡眠C状态,与实际的HALT指令不同,因此,如果OS从不唤醒某些内核,则将唤醒的内核置于睡眠状态可以使整个程序包进入深度状态睡眠状态。)

对于多插槽系统,大概一个插槽是特殊的。