而UEFI(Unified Extensible Firmware Interface)演進過程簡單來說就是2005從Intel所釋出的EFI而衍生而來,主要是希望能夠取代 BIOS的呆版功能和一些限制,就有如<3>所提到IA32架搆的CPU只能訪問1MB的基本內存,影響了程序員的創造性。同時,各種板卡上的BIOS在映射到系統內存中的時候,受到128Kbytes的大小***。這使得一台計算機不能安裝太多的板卡,否則他們的BIOS的容量將很容易突破128Kbytes。
Intel Platform Innovation Framework for EFI,讓整個EFI流程非常明確,在設計上真可以說是如虎添翼,當然一好必有一弊,這樣的一套規範相對編譯出來的Machine Code一定很肥大。在硬體層面來說,需要的硬體資源相對需要提昇許多,但已研發角度來說,可說是大幅減少撰寫時間,我想這省下可是在這一大筆的專業人事成本上,這取捨之間,以長遠的角度來看或許UEFI有它存在的必要性。
在大略的掃過UEFI的架構後,它真的可以說是迷你型的OS。如上圖所示,一個EFI image涵蓋了Driver和Application,此外也有類似排程的Event功能, 想想這三個功能就有點OS的味道了。
UEFI Architecture提供一個Handle database的機制來供給UEFI System Table使用。
UEFI System Table
- UEFI Boot Services
- UEFI Runtime Services(RS)
- Protocol Services
Protocol負責提供功能函式給主要的兩個程序(UEFI Boot和UEFI Runtime)所使用。
UEFI主要是用Framework的概念下去設計,目的是為了區分工作內容,讓設計者能夠更明確的排除問題且加速發展速度。而它主要區分六大步驟,分別為SEC(Security),PEI(Pre-EFI Initialization),DXE(Driver Execution Envronment),BDS(Boot Device Seletction/ BD Service),TSL(Transient System Load),RT(Run Time)。
我們可以在Shell下這段指令,讓我們能更加了解概念。Shell phase已經是透過BDS所選擇出的小型OS,使用者可以透過console來控制或查詢整個UEFI系統狀況。
Shell> dp –d
Reference
<1>http://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
<2>http://blog.yam.com/wttmama/article/33619399
No comments:
Post a Comment