相关疑难解决方法(0)

发送到不处于等待 SIPI 状态的活动 AP 的启动 IPI 会发生什么情况

在之前的Stackoverflow 回答中,玛格丽特·布鲁姆 (Margaret Bloom) 说道:

\n\n
\n

唤醒 AP

\n\n

这是通过向所有 AP 发出 INIT-SIPI-SIPI (ISS) 序列来实现的。

\n\n

将发送 ISS 序列的 BSP 使用“全部排除自身”简写作为目的地,从而针对所有 AP。

\n\n

SIPI(启动处理器间中断)会被所有在收到 SIPI 时被唤醒的 CPU 忽略,因此,如果第一个 SIPI 足以唤醒目标处理器,则第二个 SIPI 将被忽略。出于兼容性原因,英特尔建议这样做。

\n
\n\n

我多年来一直在编写多处理代码,我对硬件的观察是,在某些处理器上,它似乎与所述不同。我很确定我已经观察到应用处理器 (AP) 在收到启动 IPI 后修改了其指令指针,即使它处于活动状态(不在等待启动 IPI 中)。

\n\n

是否有任何英特尔文档说明 AP在不处于等待启动 IPI 状态时收到启动 IPI 后将执行的操作,或将行为记录为未定义?我似乎无法在英特尔软件文档手册或补充英特尔文档Minimal Boot Loader for Intel\xc2\xae Architecture中找到明确的答案。

\n\n

通常,我编写初始化代码来初始化并启动 AP,假设 AP 可以获取 SIPI 并在活动状态(而不是等待启动 IPI 状态)下重置其指令指针。

\n\n

我正在尝试确定 Margaret Bloom 声明的准确性,即先前已唤醒的 …

boot x86 multicore intel osdev

7
推荐指数
1
解决办法
3014
查看次数

标签 统计

boot ×1

intel ×1

multicore ×1

osdev ×1

x86 ×1