bootstrap 处理器 (BSP) 在 Intel 环形和网状架构上是如何选择的
How is the bootstrap processor (BSP) selected on Intel ring and mesh architectures
Section 2.13.2 提到仲裁 ID 用于确定哪个处理器首先发出空操作周期,我在多个来源和英特尔手册中看到了这一点。引用 MP 初始化序列的英特尔手册仅在存在 'system bus' 且在此之前最初存在 'APIC bus' 时解决了 Pentium 4。我的印象是,只有在多个 CPU 共享同一总线的架构中才需要仲裁 ID。但是现在,有了环形总线架构,仲裁是通过检测环形总线上的空槽并将事务放在上面来完成的,并且它在每个周期中移动一站,这意味着不再需要仲裁。
有意思的是Section 2.13.2是讲Intel ME和PCH的文档的一部分,所以明明是讲Nehalem和最近的,但是要说用APIC ArbID,也许确实只是谈论 Nehalem 或 Westmere。
那么请问,如何在环形和网状架构上选择 BSP?我的想法是它可以将缓存用作 RAM,如果缓存一致性在无填充模式下起作用,那么它们可以争夺互斥体
我认为其中一个核心是 BSP 只是硬连线。我认为在您向它们发送 IPI 之前,它们甚至不会启动其他内核,而且它们肯定不会是 运行 试图在缓存中获取互斥锁来解决此问题的代码。其他内核可能会进入类似 HALT 的状态,等待中断。
(但可能是像 C7 之类的深度睡眠 C 状态,与实际的 HALT 指令不同,因此如果 OS 永远不会唤醒某些核心,将唤醒的核心置于睡眠状态可以让整个包裹进入深度睡眠状态。)
对于多插座系统,大概有一个插座是特殊的。
Section 2.13.2 提到仲裁 ID 用于确定哪个处理器首先发出空操作周期,我在多个来源和英特尔手册中看到了这一点。引用 MP 初始化序列的英特尔手册仅在存在 'system bus' 且在此之前最初存在 'APIC bus' 时解决了 Pentium 4。我的印象是,只有在多个 CPU 共享同一总线的架构中才需要仲裁 ID。但是现在,有了环形总线架构,仲裁是通过检测环形总线上的空槽并将事务放在上面来完成的,并且它在每个周期中移动一站,这意味着不再需要仲裁。
有意思的是Section 2.13.2是讲Intel ME和PCH的文档的一部分,所以明明是讲Nehalem和最近的,但是要说用APIC ArbID,也许确实只是谈论 Nehalem 或 Westmere。
那么请问,如何在环形和网状架构上选择 BSP?我的想法是它可以将缓存用作 RAM,如果缓存一致性在无填充模式下起作用,那么它们可以争夺互斥体
我认为其中一个核心是 BSP 只是硬连线。我认为在您向它们发送 IPI 之前,它们甚至不会启动其他内核,而且它们肯定不会是 运行 试图在缓存中获取互斥锁来解决此问题的代码。其他内核可能会进入类似 HALT 的状态,等待中断。
(但可能是像 C7 之类的深度睡眠 C 状态,与实际的 HALT 指令不同,因此如果 OS 永远不会唤醒某些核心,将唤醒的核心置于睡眠状态可以让整个包裹进入深度睡眠状态。)
对于多插座系统,大概有一个插座是特殊的。