各種電腦開機流程
目錄
一般電腦開機流程
-
當你按下開機按鈕,就是把 GPIO 的某個角位設定成 Low,這時候一般電腦的 PCH (平台控制器集線器(英語:Platform Controller Hub,簡稱 PCH)是英特爾(Intel)於 2008 年推出的一種主機板晶片組架構,用來取代傳統的南橋晶片) 收到,就會要求 PSU 開始供電,同樣也是把 PSU 的某個電位拉起來,PSU 電源就會開起來了
-
PSU 等待電壓穩定後,就會送出 PWR_OK,PCH 就會開始 Power Sequence,釋放出各種 Reset 信號
- PSU 輸出的 12V 電源抵達主機板後,CPU VRM(電壓調節模組)的 PWM 控制晶片接收到致能訊號(Enable),開始以數百 kHz 的高頻輸出 PWM 方波,驅動 MOSFET 開關,將 12V 精準斬波、濾波降壓成 CPU 核心所需的 0.8V ~ 1.2V (Vcore)
- 只有當 PWM 晶片偵測到輸出的 Vcore 電壓已經平穩無雜訊後,它才會發出一個名為 VR_READY(或 CPU Power Good)的訊號給 PCH
- PCH 同時拿到「PSU 的 PWR_OK」與「CPU PWM 控制器的 VR_READY」,確認整個電力鏈路健全,才會正式釋放 CPU Reset 信號,讓 CPU 開始執行第一行指令
-
CPU 終於可以開始工作,這時候唯一認識的就是 SPI Flash,CPU 會透過主機板上面的 SPI Controller 晶片從 SPI Flash 讀取 BIOS
- SEC 階段
- 初始化記憶體,透過 SPD EEPROM(Serial Presence Detect EEPROM)是安裝在記憶體模組(如 RAM 晶片組)上的一顆小型非揮發性記憶體晶片。裡面燒錄了記憶體的詳細規格,包括容量、速度、製造廠商、工作電壓與存取時序(Timing)。電腦開機時,主機板的 BIOS 或 UEFI 會透過 I2C/I3C/SMBus 介面直接讀取這顆晶片 (通常是 SMBus,會有 SMBus Controller),讓我們可以自動設定最佳的記憶體執行參數,不需要手動偵測。
在 DDR5 記憶體中,傳統的 SPD EEPROM 已升級為更複雜的 SPD Hub,支援更高速的 I3C 通訊並整合溫度監控與管理功能。
-
Super IO 晶片初始化,CPU 透過 LPC/eSPI 來設定
- 假如你有開啟 UART Deubg,就會通過 CPU->走 LPC/eSPI 協定 -> SIO -> UART 協定到外面
- Super IO 有像是各種低速協定,COM/GPIO/HWM/風扇控制/Watchdog/PS2 鍵盤/Real time clock/POST Code
-
PCIe Enumeration
-
DXE Driver,各種驅動環境載入
-
終於可以顯示畫面了
-
BDS 根據 NVRAM 中的 BootOrder 變數決定開機順序
-
OS 接手 …
最早 Deubg 的時候可能要使用:
- CPU 透過 I/O Port 0x80 拋出 1-byte 十六進位代碼(可經由主機板 7 段顯示器、除錯卡或 eSPI 讀取): 代碼停在特定數值(如卡在記憶體訓練代碼),就能精確定位卡在 SEC/PEI 的哪一行
- SEC/PEI 早期利用 Cache-as-RAM (CAR)(把 CPU L3 Cache 當作臨時 RAM),直接對 PCH 內建 UART 或 SIO 下幾個暫存器啟用序列埠,在記憶體建立前就能往外印 log
- PCH/SIO 直接拉 GPIO 驅動 LED(CPU/DRAM/VGA/BOOT 四燈)或喇叭 Beep 聲
- Intel DCI / JTAG (ITP): 透過專用除錯線(如 USB 3.0 Type-C 走 Intel DCI 協定)直接掛上 CPU JTAG 探針: CPU 剛跳到 0xFFFFFFF0 (Reset Vector) 第一行指令即當機時,直接單步執行組語除錯
- BMC 虛擬通道 (SOL / eSPI Snoop): 伺服器 BMC 透過 eSPI 匯流排直接攔截 Port 80h 代碼並轉發到遠端 Web 控制台
早期 Watchdog:
- PCH / 晶片組硬體 Watchdog(如 Intel TCO Watchdog):由硬體計時器直接掛在 PCH 上。CPU 剛開機若未能依序執行並在時限內重置(Kick)TCO,PCH 會直接強制重開機(Reboot)或進入 Recovery 模式
- Intel ME / AMD PSP 看門狗:管理引擎在 CPU 被釋放 Reset 前就已經在跑自己的獨立韌體,若它發現 Host CPU 在一定時間內完全沒有進展(例如無法跳入 SEC/PEI),ME/PSP 會介入強制重置電源
- BMC Watchdog(伺服器): BMC 獨立於主 CPU 運作,會全程監控 PWR_OK 與開機計時,超時未收到心跳就會下重啟指令或記錄 Event Log (SEL)
Server 開機
- 最一開始,甚至在電源還沒按下,一些伺服器會有 BMC,他會一直開者,有些 BMC 還有自己的管理介面可以讓你遠端進去管理
- 開機時,BMC 會先檢查所有東西都沒問題,溫度正常、風扇正常、PSU 都在
- BMC 在透過 GPIO 協定聯絡 CPLD,CPLD 在一般電腦沒有,他管理電源時序、Reset、存在訊號,喚醒 PSU 主供電,等電壓穩定後,PSU 發出 PWR_OK(Power Good)訊號給 CPLD
- 主機板上的穩壓器(VRM/Point of Load)把 12V 降壓轉成 CPU 核心電壓(Vcore)、記憶體電壓(VDD/VDDQ),最後釋放 CPU Reset 訊號
- 伺服器 PSU 內部有微控制器,透過 PMBus 協定跟 BMC 連線。這也是第 2 步中「BMC 知道 PSU 在不在、輸出瓦數、電壓、風扇轉速與溫度」的資料來源
- 一般 PC 的 ATX 電源會輸出 12V、5V、3.3V;而現代伺服器(CRPS 規格)通常只輸出 12V 主電 與 12V/3.3V 待機電,其他 5V/3.3V/CPU 電壓全靠主機板上的 DC-DC 模組自己轉
- CPU 開始初始化 … 後面差不多
Server 也會常常有 Secure Boot 以及 PCR,PCR Mesaurement 指的是主機板韌體(BIOS)在電腦開機時,利用密碼學雜湊(Hash)記錄系統硬體、韌體與開機設定狀態的過程。
並且伺服器會有大量的 I2C 裝置,各種 Sensor/VR/Switch …
差別
- PC 的電源管理核心是 PCH
- Server 的電源管理核心是 BMC + CPLD