目錄

各種電腦開機流程

一般電腦開機流程

  1. 當你按下開機按鈕,就是把 GPIO 的某個角位設定成 Low,這時候一般電腦的 PCH (平台控制器集線器(英語:Platform Controller Hub,簡稱 PCH)是英特爾(Intel)於 2008 年推出的一種主機板晶片組架構,用來取代傳統的南橋晶片) 收到,就會要求 PSU 開始供電,同樣也是把 PSU 的某個電位拉起來,PSU 電源就會開起來了

  2. PSU 等待電壓穩定後,就會送出 PWR_OK,PCH 就會開始 Power Sequence,釋放出各種 Reset 信號

    1. PSU 輸出的 12V 電源抵達主機板後,CPU VRM(電壓調節模組)的 PWM 控制晶片接收到致能訊號(Enable),開始以數百 kHz 的高頻輸出 PWM 方波,驅動 MOSFET 開關,將 12V 精準斬波、濾波降壓成 CPU 核心所需的 0.8V ~ 1.2V (Vcore)
    2. 只有當 PWM 晶片偵測到輸出的 Vcore 電壓已經平穩無雜訊後,它才會發出一個名為 VR_READY(或 CPU Power Good)的訊號給 PCH
    3. PCH 同時拿到「PSU 的 PWR_OK」與「CPU PWM 控制器的 VR_READY」,確認整個電力鏈路健全,才會正式釋放 CPU Reset 信號,讓 CPU 開始執行第一行指令
  3. CPU 終於可以開始工作,這時候唯一認識的就是 SPI Flash,CPU 會透過主機板上面的 SPI Controller 晶片從 SPI Flash 讀取 BIOS

    1. SEC 階段
    2. 初始化記憶體,透過 SPD EEPROM(Serial Presence Detect EEPROM)是安裝在記憶體模組(如 RAM 晶片組)上的一顆小型非揮發性記憶體晶片。裡面燒錄了記憶體的詳細規格,包括容量、速度、製造廠商、工作電壓與存取時序(Timing)。電腦開機時,主機板的 BIOS 或 UEFI 會透過 I2C/I3C/SMBus 介面直接讀取這顆晶片 (通常是 SMBus,會有 SMBus Controller),讓我們可以自動設定最佳的記憶體執行參數,不需要手動偵測。

    在 DDR5 記憶體中,傳統的 SPD EEPROM 已升級為更複雜的 SPD Hub,支援更高速的 I3C 通訊並整合溫度監控與管理功能。

  4. Super IO 晶片初始化,CPU 透過 LPC/eSPI 來設定

    1. 假如你有開啟 UART Deubg,就會通過 CPU->走 LPC/eSPI 協定 -> SIO -> UART 協定到外面
    2. Super IO 有像是各種低速協定,COM/GPIO/HWM/風扇控制/Watchdog/PS2 鍵盤/Real time clock/POST Code
  5. PCIe Enumeration

  6. DXE Driver,各種驅動環境載入

  7. 終於可以顯示畫面了

  8. BDS 根據 NVRAM 中的 BootOrder 變數決定開機順序

  9. 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:

  1. PCH / 晶片組硬體 Watchdog(如 Intel TCO Watchdog):由硬體計時器直接掛在 PCH 上。CPU 剛開機若未能依序執行並在時限內重置(Kick)TCO,PCH 會直接強制重開機(Reboot)或進入 Recovery 模式
  2. Intel ME / AMD PSP 看門狗:管理引擎在 CPU 被釋放 Reset 前就已經在跑自己的獨立韌體,若它發現 Host CPU 在一定時間內完全沒有進展(例如無法跳入 SEC/PEI),ME/PSP 會介入強制重置電源
  3. BMC Watchdog(伺服器): BMC 獨立於主 CPU 運作,會全程監控 PWR_OK 與開機計時,超時未收到心跳就會下重啟指令或記錄 Event Log (SEL)

Server 開機

  1. 最一開始,甚至在電源還沒按下,一些伺服器會有 BMC,他會一直開者,有些 BMC 還有自己的管理介面可以讓你遠端進去管理
  2. 開機時,BMC 會先檢查所有東西都沒問題,溫度正常、風扇正常、PSU 都在
  3. BMC 在透過 GPIO 協定聯絡 CPLD,CPLD 在一般電腦沒有,他管理電源時序、Reset、存在訊號,喚醒 PSU 主供電,等電壓穩定後,PSU 發出 PWR_OK(Power Good)訊號給 CPLD
    1. 主機板上的穩壓器(VRM/Point of Load)把 12V 降壓轉成 CPU 核心電壓(Vcore)、記憶體電壓(VDD/VDDQ),最後釋放 CPU Reset 訊號
    2. 伺服器 PSU 內部有微控制器,透過 PMBus 協定跟 BMC 連線。這也是第 2 步中「BMC 知道 PSU 在不在、輸出瓦數、電壓、風扇轉速與溫度」的資料來源
    3. 一般 PC 的 ATX 電源會輸出 12V、5V、3.3V;而現代伺服器(CRPS 規格)通常只輸出 12V 主電 與 12V/3.3V 待機電,其他 5V/3.3V/CPU 電壓全靠主機板上的 DC-DC 模組自己轉
  4. CPU 開始初始化 … 後面差不多

Server 也會常常有 Secure Boot 以及 PCR,PCR Mesaurement 指的是主機板韌體(BIOS)在電腦開機時,利用密碼學雜湊(Hash)記錄系統硬體、韌體與開機設定狀態的過程。

並且伺服器會有大量的 I2C 裝置,各種 Sensor/VR/Switch …

差別

  1. PC 的電源管理核心是 PCH
  2. Server 的電源管理核心是 BMC + CPLD