魚樂新聞釣魚網

 找回密碼
 註冊(用戶名請用中文)
查看: 3869|回復: 9

電腦開機數秒完成 ( UEFI 將取代長達25年之久的 BIOS )

  [復制鏈接]
發表於 2010-10-9 18:00:58 | 顯示全部樓層 |閱讀模式
未來電腦開機只要數秒即可完成!科學家已完成適用電腦的「統一可延伸韌體介面」 (UEFI)技術,將取代長達25年之久的BIOS技術。

民眾在開機時,通常得等上數分鐘時間才能正式使用電腦,未來透過UEFI 技術(統一可延伸韌體介面),從開機到使用電腦只需短短數秒鐘,根據UEFI 論壇主管多倫表示,「有了這項新技術,開始只需幾秒鐘,雖還不是即時,與傳統BIOS 速度比較,已經超出許多,」自1979年開始應用在開機的BIOS ,也將宣告功成身退。

目前許多消費性電子產品,都相當強調快速的開機時間,根據英國《電訊報》報導,谷歌新一代的Chrome OS,為了抓住智慧型手機消費者的需求,開機時間也僅需幾秒鐘時間。

市場也謠傳微軟明年推出的Windows.NEXT作業系統,也將支援UEFI 技術,美國專門開發BIOS 技術的AMI公司研究人員理查森表示,「明年開始,搭配UEFI的電腦將開始主宰市場,對我們來說,這也是轉戾點 。」

UEFI 也可支援外接鍵盤或周邊設備以及觸碰螢幕,專家預計最快明年UEFI 就可以應用在電腦上。



 樓主| 發表於 2010-10-9 18:04:04 | 顯示全部樓層
EFI/UEFI BIOS 入門 : All For Beginners – 另附深入學習指南以及有用的URL連接
我們已經使用BIOS超過了二十年.可是直到今天還友許多朋友不知道BIOS到底是什麼,以及它主要做些什麼事情,它在整個個人計算機之中所處的地位如何.事實上,BIOS是整個計算機系統中最重要的底層系統軟體.二十多年來,中國的程序員們紛紛忽略了BIOS,或者由BIOS衍生出的開發技術,相反,我們對如何調整一兩個BIOS設置津津樂道.今天,BIOS業界開始悄悄的變革,EFI或者UEFI的到來即將改變世界,從而徹底改變我們對過去的計算機啟動過程的認識.但是我們中國的開發者們仍然在談論JAVA或者.NET,我想,是到了清晰的研究BIOS的時候了.
小生不才,但也願意就我所學,貢獻成一篇簡短的入門文章,帶領大家進入BIOS這個有趣而又充滿了神秘的地域,我們一起來探究BIOS,尤其是探究下一代個人計算機的基礎系統軟體,或者說基礎固件:UEFI bios的方方面面.由于類似的文章網上也比較多,所以我就重點談些別人一般忽略的部分吧.
BIOS Definitions

BIOS -- Basic Input and Output System,is used for initializing,testing and putting the PC into the ready state so that an OS may be started.Part of the BIOS remains in the system main memory after POST,or Power On Self Test.BIOS provides a consistent software interface to varying types of the hardware devices.It also provides the basic system level services to OS.The BIOS is also used for helping IHV to fix their hardware design bugs by using the SMM mode of the IA architecture.

 樓主| 發表於 2010-10-9 18:06:32 | 顯示全部樓層
上面這句話是我在初學BIOS的時候,我的老師,一位受到整個業界尊敬的杰出BIOS Engineer對我說的,這段話雖然短,但是卻清楚的道出了BIOS的基本功能,那就是:
1.檢測硬體,又叫POST.


2.初始化硬體,設置其基本狀態,使得整個計算機達到所謂的"可用狀態"(Ready State).


3.啟動OS Loader加載操作系統.


4.在操作系統啟動起來以後,一部分繼續駐留內存(記憶體),向操作系統以及其他軟體提供基本的系統級的服務.如磁碟讀寫等.


5.修復硬體缺陷.
下面我們一個一個的來看這些功能.

(第一個)檢測硬體可能比較好理解一點,就是看看你的硬體是否還正常的工作,但是從軟體的角度看.其中最重要的就是對內存的檢測的.大家都還對剛開機的時候內存的大小一直在跳的螢幕有記憶吧,那就是在做Memory Test,或者說Memory Sizing.

(第二個)功能是初始化硬體,可能有不少朋友問:為什麼我的硬體還需要初始化?問的好,硬體的設計廠家往往為了通用市場的考慮,不願意將硬體設計成定制的狀態,可能一個網卡,可以安裝在PC,同樣也可以安裝在嵌入式系統上.所以為了使得硬體能夠按照PC的架構工作,BIOS必須要按照由IHV(Independent Hardware Vendor)提供的手冊將硬體設置好,比如寫几個必須的寄存器之類的,做一些enable的工作.這點非常重要,如果一個硬體沒有enable,那麼在OS下將不可見.

(第三個)功能是啟動操作系統,這也是BIOS必須要做的事情之一.啟動的方式是由BIOS規定,操作系統必須按照BIOS的要求來設計.這也是為什麼操作系統從DOS一直到Vista,都只能把自己的loader放在MBR,因為BIOS只讀MBR.強大的微軟都必須要按照這個不成標准的標准來:)當然,在EFI時代,這一點有所改變,EFI支持的Boot From File不在需要MBR.

(第四個)功能可能之前作過DOS開發的朋友比較熟悉吧,還記得INT 10基本螢幕服務,INT 13磁槃服務嗎?多少病毒正是靠INT 13來傳播.又有朋友曾經試圖繞過INT 10來直接寫螢幕?Windows時代,這些東西事實上仍然存在,並且繼續發揮着基本的核心作用,只是他們被Windows包裝起來了,一般的程序無法接觸到,但這並不能說明他們就沒有用處了.MS的開發人員不久前還表示,事實上甚至就是開發中的Longhorn的安裝程序,目前仍然有許多code是基於INT 10來寫螢幕的.

(第五個)功能估計一般的朋友可能就不知道了,就是之前稍微接觸過BIOS的朋友們可能也是第一次聽說吧!Intel在它的CPU裏專門留了個模式叫System Management Mode,擁有最高的權限.SMM中斷的時候,就連號稱無所不能的Windows的也不知道,這樣就可以給CPU補bug了,舉個例子,比如某天Intel的一個CPU對ADD指令給出錯誤操作結果,那麼就可以利用SMM在每次執行這個指令的時候,中斷一下,由BIOS軟體給出正確的執行結果.這就達到了給硬體修復缺陷的目的.這樣Intel也不用招回它的CPU了,呵呵.此外,每次BIOS開機的時候,事實上都會更新CPU Microcode,同樣是用來給CPU補bug的.所以很多時候,刷BIOS刷出問題,事實上某個CPU的bug沒有補上導致出了問題出現.

BIOS在哪裏
上面囉嗦了一大堆的BIOS Basics,那麼BIOS到底在哪里呢?答案是在你的計算機裏:) 的確有些無聊,事實上BIOS有三種狀態,分別是:

1.Before Build


2.BIOS Image


3.BIOS Runtime
(第一種)呢,這個時候BIOS表現為BIOS開發者硬碟上的一堆源始程式. 處於(第二種)的時候,BIOS則是沉睡在Flash里的一段image.BIOS真正發揮作用是在(第三種)模式下,哪個時候BIOS執行,控制系統,與操作系統交互.

EFI BIOS
EFI是由Intel提出的,目的在於為下一代的BIOS開發樹立全新的框架。EFI是英文Extensible Firmware Interfaces的縮寫。正如它的名字一樣,EFI不是一個具體的軟體,而是在操作系統與平台固件(platform firmware)之間的一套完整的接口(interface)規範。EFI定義了許多重要的數據結構以及系統服務,如果完全實現了這些數據結構與系統服務,也就相當於實現了一個真正的BIOS核心。

EFI最早是在Spring 2000 IDF(Intel Developer’s Forum)上提出的,當時Intel認為,隨着IBM在80年代初推出了第一台個人計算機開始,直到今天為止,個人計算機硬體平台已經發生了翻天覆地的變化,相關的系統軟體如操作系統等也從最早的MS DOS1.0到今天的Windows XP,而作為整個系統的最底層也最為關鍵的系統軟體之一的BIOS卻基本上保持了架構二十年不變。這在整個軟體史上都是一件不可思議的事情。如今,BIOS已經變成了嚴重阻礙IT產業前進的絆腳石,必須通過對BIOS的革新來為下一代的操作系統(如Windows Server Longhorn)提供更加強大的支持。

上面是我很早之前寫的一段對EFI的介紹,現在看來,難免有些錯誤,不過大致意思非常明確,EFI就是用來替換傳統BIOS.作為更好的BIOS,EFI可以提供過去無法在BIOS中作到的許多事情.后面的文章我會逐步展現給大家.

一些常見的關于BIOS/EFI的問題以及我的簡短回答:
1) BIOS一般有多大?
傳統bios(以後說legacy bios)一般都是512KB,而早期的EFI bios也是512KB.現在EFI基本上是1MB了.
2) BIOS用什麼工具開發?
legacy bios一般用MASM 6.11開發,同時還會配上一些廠商自己寫的build tools. EFI則使用Visual Studio.NET 2003以及MASM 6.11開發(沒想到吧~)
3) EFI boot是怎麼一回事?
EFI有自己獨特的boot方式,完全拋棄掉了傳統的0磁道0扇區的MBR概念.EFI的boot方式與文件系統息息相關.過去的legacy bios由於不帶文件系統,不得已選擇從硬碟上特定空間裝載程序的辦法,而EFI則附帶了完整的文件系統支持,所以不再對硬碟有特定的要求,EFI下的操作系統加載程序事實上存儲在boot\ia32\bootia32.efi文件里.(假定是IA32架搆).這是一個EFI應用程序.

下面是一些深入學習bios的資源匯總:
1. BIOS Boot Specification
業內一般叫BBS,詳細描述bios啟動時必須要做的所有事情,如何區分啟動設備,如何選擇啟動設備等等.
http://www.phoenix.com/NR/rdonly ... D/0/specsbbs101.pdf

2. UEFI Specification
UEFI規範,詳細描述了UEFI bios必須支持的接口.以及UEFI bios的模型,提供的服務等等. 開發UEFI必備的.
http://www.uefi.org

3. Ralf Brown's Interrupt List
這個人似乎就一輩子都都在收集中斷的東西,對legacy bios學習很有用.
http://www.ctyme.com/rbrown.htm

4. El Torito CD-ROM Boot 描述了bios如何從光碟上boot的細節.
http://www.phoenix.com/NR/rdonly ... 6A/0/specscdrom.pdf

5. USB Specification USB設備規範
http://www.usb.org

6. Plug-and-Play Specifications MS的PnP規範
http://www.microsoft.com/hwdev/tech/pnp/default.ASP

7. BIOS Writer's Guide
bios開發的聖經,由cpu廠商給出.Intel的絕對看不到,Intel的是絕密級的文檔.AMD的倒是可以看到,不同的cpu有不同的BWG.這里給出一個amd比較新的cpu的BWG:
http://www.amd.com/us-en/assets/ ... tech_docs/31116.pdf

還有很多很多相關的文檔.其實編寫bios最難的在於同時支援業界幾乎所有的通用規範.


 樓主| 發表於 2010-10-9 18:07:35 | 顯示全部樓層
本帖最後由 于鱻 於 2010-10-9 18:14 編輯

EFI/UEFI 將帶領PC產業進入下一世代
PC/AT機器出現至今,BIOS已經擁有超過數十年之久的歷史,當電腦開啟了電源,BIOS便會從快閃存儲器中被加載到主存儲器,並掌控包含晶片組、存儲器子系統以及週邊I/O的初始化以及診斷,確保所有的硬體元件都可以達到最低限度的正常工作。然而當硬體隨著時間日新月異,卻只有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的江山,但是要在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大異其趣。


發表於 2010-10-9 18:28:05 | 顯示全部樓層
霧煞煞~~~       
發表於 2010-10-9 19:45:24 | 顯示全部樓層
寫嘎落落長.我那A看隆眸
發表於 2010-10-9 19:58:17 | 顯示全部樓層
有看沒有僅
發表於 2010-10-9 20:46:23 | 顯示全部樓層
看了還是不懂
發表於 2010-10-9 21:57:59 | 顯示全部樓層
您真是多才多藝ㄚ~ 感謝分享
發表於 2011-1-17 09:59:57 | 顯示全部樓層
電腦也是一門學問,謝謝你的知識分享

本版積分規則

QQ|小黑屋|手機版|Archiver|魚樂新聞釣魚網

GMT+8, 2024-4-30 02:18

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表