林宗輝/DIGITIMES前言:
PC/AT機器出現至今,BIOS已經擁有超過數十年之久的歷史,當電腦開啟了電源,BIOS便會從快閃記憶體中被載入到主記憶體,並掌控包含晶片組、記憶體子系統以及週邊IO的初始化以及診斷,確保所有的硬體元件都可以達到最低限度的正常工作。然而當硬體隨著時間日新月異,卻只有BIOS好似被冰封住,技術和介面都停滯在過去嗎?
何謂EFI?其實EFI(Extensible Firmware Interface)的概念很簡單,就是由模組化的C語言,藉由參數堆疊傳遞,並以動態連結形式架構的簡易型作業系統,其工作責任在於肩負起連結硬體與作業系統的橋樑,理論上來說,其設計難度要遠低於由組合語言所架構而成的傳統BIOS。目前的EFI系統可以運作於32位元或64位元模式之下,即便未來的出現了128甚至更高位元的處理器,EFI系統也能很平順的過渡支援。
由於EFI等同於一款簡易型的作業系統,為了與硬體溝通,就必須透過驅動程式來對硬體進行識別與操作,這些驅動程式是專門應用於EFI系統下的機器指令,必須透過硬體抽象層來轉譯執行,其概念非常類似於目前的高階作業系統,不同的處理器平台(X86、RISC、Itanium)之間只要抽換不同的硬體抽象層,驅動程式便可以沿用,可以大幅簡化跨平台應用的開發複雜度。相較之下,傳統BIOS基於真實模式之下,必須利用中斷模式來增加硬體功能,而這些操作都必須完全針對個別的處理器規範來進行,不同的處理器平台之間,即便晶片組或週邊完全相同,依然完全無法互通,且傳統BIOS基本上都是運作於16位元模式下,對目前的32位元或64位元作業系統來說,都是極為沈重的存取瓶頸。
不過或許各位會有疑問,EFI能夠做到這麼強大的控制功能,那麼是否有可能取代傳統作業系統的地位,我們只能說,根據應用的不同,有部分產品可能有這樣的狀況,但是基本上,EFI僅是作為進入作業系統前的硬體溝通介面,根據功能模組的不同,可能會有網路或其他控制能力,其次,在EFI環境下的硬體效能會受限於硬體抽象層的轉譯效率,而且EFI對記憶體的控制能力非常有限,不具備保護模式服務。當然,以上的限制有可能在未來被改進,但是就目前來看,EFI在PC平台上依舊處於推廣初期,尚無餘力將觸角過度延伸。
由BIOS進展至EFI再到UEFI
由於BIOS與硬體的整合性極高,因此過去BIOS也被稱為韌體,在大約1990年,BIOS是被儲存在唯讀記憶體中,而無法被更改的,然而隨著硬體規格的更新速度加遽,被寫死在唯讀記憶體中的BIOS明顯無法符合個人電腦廠商的需求,為了能夠更靈活的進行修改與新增功能,BIOS轉而被儲存在EEPROM或快閃記憶體中,並沿用至今。然而不論硬體廠商如何對BIOS進行功能的增減,依然無法改變BIOS是個非常老舊且缺乏效率的系統的事實,處理器廠商在開發新產品時,為了維持與過去的相容性,不得不犧牲效能,或者是增加了產品的複雜度,雖然BIOS是使用組合語言撰寫而成,但是僅能運作於16位元模式的限制,讓其效能乏善可陳,更嚴重限制了現有32位元及64位元處理器的速度表現。Intel身為PC技術潮流的實際領導者,自然也積極的想要改變這樣的狀況。
Intel所提出的解決方案,便是基於EFI規格下的全新BIOS架構。Intel所發展的EFI稱為Tiano,EFI對Intel來說只是一個規格名稱。EFI就是讓各硬體廠商能夠自行撰寫BIOS,也就是所謂的EFI driver,然後BIOS提供商只要整合這些驅動程式,便可以架構出完整的EFI系統。甚至終端使用者可以在不更動EFI原始碼的前提下,自行載入或卸除驅動模組,算是非常方便與新奇的能力。
EFI這個名詞最早出現於2000年,當時Intel針對高階伺服器市場推出的Itanium平台,其韌體便是EFI技術的最早實作應用,當初所推出的Itanium工作站與伺服器,便是基於EFI 1.02版,而2002年由HP所推出的Itanium2平台,則是基於EFI 1.10版。Itanium平台與傳統X86平台是完全不同的架構,Itanium是個完全的64位元處理器,不支援16位元相容模式,傳統的BIOS無法被沿用到Itanium之上,因此就必需要使用全新的韌體架構來搭配。雖然Itanium處理器本身並不算相當成功,但是其全新的韌體概念,卻深深的影響到後世的PC發展與應用。
其後,Intel將EFI的原始碼釋放出來,改由業界組成一標準組織來推動EFI規格,這個規格稱為UEFI(Unified Extensible Firmware Interface),目前已經進展到2.1版,對許多規格進行了標準化,但設計概念上仍與原始的EFI大致相同。作為推廣成員之一,鳳凰科技也推出了完整支援2.0及2.1版UEFI的新版本韌體架構,稱為SecureCore。
UEFI與傳統BIOS的拉鋸戰
從這點來看,首先我們要考慮到,當初BIOS的開發其實與當初微軟比爾蓋茲認為個人電腦記憶體只要有640K就已經足夠的態度一樣,並未考慮到太多未來的擴充性與硬體發展性,BIOS的16位元真實模式以及DOS的640K限制,成為箝制數十年來電腦發展歷程的緊箍咒,處理器為了與作業系統以及硬體的相容性,不得不把16位元相容模式加入,雖然640K隨著作業系統的保護模式及處理器定址能力加強,已經逐漸成為過去。然而BIOS卻徹底成為食之無味,卻無法拋棄的包袱。
因此鳳凰科技在宣導UEFI架構時,也要面對硬體廠商對過往相容性的要求,加上諸如華碩、技嘉等板卡廠商都在自家主機板上的BIOS進行了許多差異性的設計,導入EFI,也等於叫這些板卡廠商放棄過去對BIOS的投資,且一切都必須從頭來過。而在作業系統方面,除了少數幾款較新的64位元作業系統原生支援EFI架構,諸如Windows XP X32、Linux等都還是只原生支援傳統BIOS
由於這些疑慮,雖然市面上已經有相當多傳統BIOS的取代方案,但無一能夠撼動傳統BIOS的江山,鳳凰科技雖然是傳統BIOS技術的提供與領導者,但是要在PC產業界瞬間達到一呼百諾的效應,仍然是遙不可及的,因此我們先期就從提供雙向支援的方式,也就是說,既提供了UEFI的先進架構,能夠讓最新的作業系統執行於純粹的UEFI環境下,也可利用切換的方式切換回傳統的BIOS架構,藉以執行不支援UEFI的作業系統,這也就是我們所倡導的SecureCore架構。當然,這樣的方式僅是作為過渡時期應急之用,當消費者逐漸接受UEFI環境,且作業系統都已經革新到可原生支援UEFI,那麼就可在主機板上直接內建純粹的UEFI環境,無須再考慮傳統BIOS的支援。
產業界的合作與推廣
EFI早在2006年就已經出現在X86硬體環境中,也就是蘋果電腦,由於蘋果的作業系統OS X具備了原生支援EFI的能力,加上2006年開始採用Intel的處理器作為平台,因此也順理成章的成為EFI的示範平台,PC平台的情況較為複雜,除了要考慮作業系統的支援性以外,還要顧慮到各大板卡廠商的態度,因此其導入時間點應該會在2008年左右。不過已經有些動作較快的PC廠商,已經導入EFI技術,比如說,大陸長城電腦集團便在今年八月初發佈了業界首款基於EFI的商用電腦。而由於包含微軟、Intel、AMD及各大獨立硬體供應商(IHVs)都已經將UEFI列入支援重點,IT廠商勢必也要轉移至UEFI,藉以維持競爭力。
UEFI在針對處理多方程式碼 (multi- party code)時,提供了一致性的介面。UEFI提供可延展、標準化定義的可測試平台,並允許更簡易的矽起始化設定(silicon initialization),可降低花在矽驗證的時間。這些要素都將加速發展週期並降低產品上市時程。當BIOS程式設計師在面對UEFI環境時,所必須面對的,不僅僅是程式語言(C語言與組合語言)的不同,而是整個開發概念的大變革:首先是驅動模式的變更,這點是最複雜的,其次是物件模型的形式,而由於UEFI具備了更快的速度以及更強大的顯示能力,在使用者介面的設計上也與傳統BIOS大異其趣。
鳳凰科技在與台灣各大板卡廠商已經進行了相當長的一段推廣合作期,預計在今年底或明年初便可看到初步成果。產業界也已經具備了完整的教育訓練課程,協助台灣的BIOS程式設計師能夠在最短時間內適應UEFI的開發環境,加上標準化的開發工具,不論在整個具有相對簡易的程式開發流程,或是最後的除錯階段,都可以達到極高的效率。
資料來源:
http://tech.digitimes.com.tw/ShowNews.aspx?zCatId=B2I&zNotesDocId=0000064644_B743P67TJS3BIJO5ZL6HQ
沒有留言:
張貼留言