這個問題其實比較復雜。分為單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。
部分文章來源與網絡,若有侵權請聯系站長刪除!