在英特尔环形和网状架构中,如何选择引导处理器(BSP)

4

第2.13.2节提到仲裁ID用于确定哪个处理器首先发出no-op周期,我在多个来源和英特尔手册中都看到过这一点。参考MP初始化序列的英特尔手册仅适用于Pentium 4,当时存在“系统总线”,而在此之前原本存在“APIC总线”。我认为,在只有多个CPU共享同一总线的那些架构中才需要仲裁ID。但现在,由于环形总线架构,通过感知空插槽并将事务放置在其上进行仲裁,并且它每个周期移动一个停止位置,因此不再需要仲裁。

有趣的是,第2.13.2节是一份关于Intel ME和PCH的文件的一部分,因此显然是在谈论Nehalem和最近的问题,但说APIC ArbID被使用,也许确实只是在谈论Nehalem或Westmere。

因此,我的问题是,在环形和网状体系结构中如何选择BSP?我的想法是它可以使用缓存作为RAM,如果在未填充模式下缓存一致性函数,则它们可能会竞争锁。

1个回答

3
我假设其中一个核心是BSP,这是硬件上的设置。我认为其他核心在收到IPI之前甚至不会启动,它们肯定不会运行试图在缓存中获取互斥锁以解决此问题的代码。其他核心可能处于类似于HALT状态的等待中断状态。但是,它们可能处于深度睡眠C状态(如C7),与实际的HALT指令不同,因此如果操作系统从不唤醒某些核心,则将已唤醒的核心置于睡眠状态可以使整个处理器进入深度睡眠状态。对于多插槽系统,可能有一个插槽是特殊的。

1
我认为硬连BSP是行不通的。我的理解是,在制造芯片之后(并将其作为这样的产品推向市场)我们甚至不知道哪个物理核心能够正常工作。否则,硬连的核心可能是有故障的。因此,需要在引导时选择一个(正常工作的)逻辑核心作为BSP的机制。我也不明白这个问题。在任何时候,环或网格上可以有许多事务。我不确定为什么@LewisKelsey认为不需要仲裁ID。 - Hadi Brais
1
好的观点。我查看了双插槽主板Supermicro X8DTN的手册。第30页和31页显示的最佳内存配置表明,任何两个插槽都可以被填充或同时填充。所以,如果有多个插槽,我认为需要在它们之间进行一些协商。 - Hadi Brais
1
@LewisKelsey 让我们仔细阅读第3卷8.4.3节中如何描述BSP选择过程的内容。首先,每个处理器都被分配一个唯一的APIC ID(每个逻辑核心都有一个本地APIC)。其次,根据APIC ID(可能等于APIC ID),为每个逻辑处理器分配仲裁优先级。第三,每个处理器执行内置自检。第四,在现代英特尔处理器上,每个逻辑处理器在系统总线上发出NOP特殊周期。这是什么意思?... - Hadi Brais
1
特殊周期是由系统代理中的Ubox单元处理的一种事务类型,我很快会描述。在现代英特尔处理器中,系统总线基本上是QPI互连。因此,这意味着每个逻辑核心都向Ubox发出一个特殊周期请求,并且每个这样的请求都带有逻辑核心的仲裁优先级标记。 Ubox接收来自各自插座的内部核心的所有这些请求。每个Ubox选择具有最高优先级的请求,然后自己仲裁QPI总线主锁定... - Hadi Brais
1
@LewisKelsey Ubox在Intel uncore手册中有讨论。LIKWID关于Ubox的文档实际上来自手册。 - Hadi Brais
显示剩余12条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接