電腦開機(jī)時(shí)侯的第一段指令,是 CPU 里哪一個(gè)/哪一些核執(zhí)行的?
單CPU的電腦,排除十年前的CPU,現(xiàn)在的基于Intel的電腦。上電的順序如下:
老狼:按下電源鍵后發(fā)生了什么?電腦是如何優(yōu)雅地開機(jī)的?
?
zhuanlan.zhihu.com
圖標(biāo)
先起來的是基于MCU的ME部分。ME跑了一會(huì),認(rèn)為可以了(安全認(rèn)證啥的),就放開了CPU的PWRGOOD#引腳,CPU正式開始運(yùn)行。問題是CPU里面哪個(gè)內(nèi)核先跑呢?這是由PCU決定,不一定是CPUID為0的Thread。這個(gè)thread我們叫它BSP,其他的thread叫做AP。BSP開始執(zhí)行reset vector的代碼,也就是BIOS代碼;而AP處在wait for SIPI的狀態(tài),等待被喚醒。
多CPU,前面和單CPU差不多,區(qū)別是ME會(huì)同時(shí)放開兩個(gè)CPU,它們一起醒來。每個(gè)CPU的BSP都執(zhí)行BIOS代碼,而由BIOS來決定誰主導(dǎo)后面的啟動(dòng)過程。這個(gè)主導(dǎo)的thread叫做SBSP,那個(gè)跑了一段BIOS就"被"休息的其他CPU的thread叫做NBSP。
