解决方案问题

电脑开机时侯的第一段指令,是 CPU 里哪一个/哪一些核执行的?

2020-04-29
0
这个问题其实比较复杂。分为单CPU(单socket)和多CPU(多Socket)两种。我们先从单CPU讲起。

单CPU的电脑,排除十年前的CPU,现在的基于Intel的电脑。上电的顺序如下:

老狼:按下电源键后发生了什么?电脑是如何优雅地开机的?

zhuanlan.zhihu.com
图标
先起来的是基于MCU的ME部分。ME跑了一会,认为可以了(安全认证啥的),就放开了CPU的PWRGOOD#引脚,CPU正式开始运行。问题是CPU里面哪个内核先跑呢?这是由PCU决定,不一定是CPUID为0的Thread。这个thread我们叫它BSP,其他的thread叫做AP。BSP开始执行reset vector的代码,也就是BIOS代码;而AP处在wait for SIPI的状态,等待被唤醒。

多CPU,前面和单CPU差不多,区别是ME会同时放开两个CPU,它们一起醒来。每个CPU的BSP都执行BIOS代码,而由BIOS来决定谁主导后面的启动过程。这个主导的thread叫做SBSP,那个跑了一段BIOS就"被"休息的其他CPU的thread叫做NBSP。
部分文章来源与网络,若有侵权请联系站长删除!

推荐产品