SEC (Security)

SEC (Security)是整個開機階段(Boot Flow)第一個的執行階段,當電腦開機(Power on)時就會進入。負責掌控及處理Platform的Restart Event,提供給後面的PEIM來追溯處理器的健康狀態。

只有此階段會使用組合語言(Assembly)搭配C語言撰寫,以完成純C語言無法處理的function例如MSR, MTRR(Memory Type Range Registers)。

由於C語言需要Memory當作Stack來儲存宣告的變數(Local Variable),此階段會先透過Pre-RAM code (MTRR)負責初始化CPU以及在CPU cache內建立臨時的堆疊(Stack),將處理器的快取作為記憶體來使用(Cache as RAM),並將快取設定為No-Eviction Mode防止資料被複寫。

Task

  1. Reset Vector - CPU上電後開始尋找ROM內的第一條指令位置,跳過去後便開始初始化的流程並Flush Cache提供乾淨的初始狀態以免先前資料遺留在Cache內而產生問題。
  2. Switch To Protected Mode - 把CPU從Real Mode切換到Protected Mode。
  3. Initialize MTRRs For BSP - 透過組合語言(Assembly)來初始化MTRRs (Memory Type Range Registers),將CPU cache設定為所需要使用的記憶體狀態。
  4. Microcode Patch Update - 執行CPU所需要的Microcode Patch。
  5. Initialize No-Eviction Mode - 當CPU cache被設定為記憶體後,設定一資料的區域為No-Eviction Mode給前期初始化過程使用,以防止CPU cache內的資料被複寫。
  6. Various Early BSP/AP Interactions - 發送INIT (Interprocessor Interrupt),SIPI (Start-up IPI)給所有的APs,並從APs收集BIST(Built-in Self Test)資料。
  7. Hand-off To PEI Entry Point - 將一些PPIs,BFV (Boot Firmware Volume),暫時記憶體以及堆疊的大小及位置等,透過Handoff information交給PEI階段。
  8. 在進入PEI階段前協助驗證PEI Foundation。

從Beyond_BIOS_Second_Edition_Digital_Edition_(15-12-10) 所節錄的SEC流程圖:

results matching ""

    No results matching ""