SHUTDOWN AP CPU后续

启动顺序对于不同的CPU是不同的。 英特尔的系统程序员手册包含了英特尔至强处理器的初始化协议,不包括较旧的CPU。 对于通用的“所有CPU类型”算法,请参阅英特尔的多处理器规范。

对于80486(APIC是外部82489DX),必须在使用INIT IPI后使用“INIT level de-assert”IPI,而不需要任何SIPI。 这意味着你不能告诉他们哪里开始执行(SIPI的向量部分),并且它们总是开始执行BIOS代码。 在这种情况下,要将BIOS的CMOS复位值设置为“以远跳进行热启动("warm start )”(即将CMOS位置0x0F设置为0xa),以便BIOS将执行一个jmp far ptr [0:0x0469] “,然后将AP入口点的段和偏移量填写到【0:0x0469】。 (使用82489DX的CPU在接收到INIT IPI时重置,并开始执行BIOS代码,该代码检查关机代码并跳转到热复位向量。)能够使用这种方法启动和停止AP CPU的 ,CPU类型大概是奔腾75及以前的CPU,大概就是这样。(这个方法也是286从保护模式返回实模式的方法,在386,486还可以利用这个办法检查CPU类型)。

较新的CPU(Pentium 4和Intel Xeon)不支持“INIT level de-assert”IPI,在这些CPU上发布这个IPI CPU会产生APIC ERROR,ERROR STATUS 寄存器会提示接收到无效中断,但这不影响CPU继续执行下一条指令,基本上可以看做CPU是忽略这个IPI!

内置APIC的CPU(奔腾有一部分有内置APIC),INIT IPI是一个内部的信号,因此不会去执行BIOS代码(这是我猜测的,狠多次实验表明在发送INIT IPI后 CPU只能接收SIPI而不会按照286从保护模式返回实模式的方式去执行代码)。因此在有内置APIC的CPU上shutdown AP CPU,只能是发布INIT IPI,在AMD手册上也说明了发布INIT IPI后,CPU只接收SIPI,其他的IPI都忽略!(BOCHS 在发布INIT IPI后将CPU是放在地址:0XFFFF_FFF0处的!实机也是如此cs:ip= 0xf000:0xfff0,INIT IPI发布后个寄存器的值在INTEL手册上能查到)

 MP规范规定AP应通过INIT-SIPI-SIPI启动,对于较新的CPU(P6,Pentium 4以及现在的I7),一个SIPI就可以了。AMD的A10 同样也可以。第二个SIPI可以看做是冗余,用来对付启动失败。

前几天找到以前下载的PDF,发现一本

MultiprocessorSpecification
Version 1.1
September 1994

在这本手册的Appendix B Operating System Programming Guidelines

详细说明了INIT IPI和 STARTUP IPI:

B.4.1 INIT IPI With Warm Reset
This startup technique is used with systems based on the 82489DX APIC.
B.4.2 STARTUP IPI
This startup technique is used with systems based on version 1.x or higher of the local APIC.
These APICs recognize the STARTUP IPI, which is an APIC Interprocessor Interrupt with trigger
mode set to edge and delivery mode set to “110” (bits 8 through 10 of the interprocessor interrupt
register).

而shutdown cpu和启动AP CPU是同一种IPI 也即上面那2种,第一种只适合82489DX APIC,这已经被淘汰了,因此现代CPU shutdown只能用SIPI。

 

转载于:https://my.oschina.net/u/2601353/blog/865181

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值