即將換掉傳統 BIOS 的 UEFI,你懂了嗎?(一)

即將換掉傳統 BIOS 的 UEFI,你懂了嗎?(一)

Intel即將在明年初,也就是最快下個月發表全新的Sandy Bridge處理器平台,在我們先前的整理報導提到,各大主機板廠商都有意願在新的P67主機板上,以新一代的EFI韌體來取代傳統的BIOS,如果你還不知道EFI是什麼,跟我們拿出2009年刊登在電腦王雜誌的專題來複習吧。

回想一下,你上次是什麼時候進入主機板BIOS選單的?對一般使用者而言,主機板BIOS的主要功能,就是讓你可以壓榨出更多硬體效能,或是去打開、關閉特定的功能才需要查看。不然就是為了讓新買的CPU可以被主機板辨識,或是修正一些bug的時候才會去更新它。

可曾想過,這個平淡無奇,又不是很好瞭解的「基本輸入/輸出系統」也慢慢開始有了變化。首先,筆者在486時代的後期看過BIOS大廠AMI曾推出師法Windows 3.1介面而且可以用滑鼠操控的版本。後來Phoenix也力圖推行當時號稱所謂「真正圖形介面BIOS」的CSS。而Intel也在推出Itanium 64位元處理器的時候,推出了開發代號為Tiano的EFI功能核心框架。不過,畢竟是人多好辦事。在後來許多業界重量級大廠紛紛表態支持EFI,並組成UEFI論壇之後,UEFI BIOS將是未來BIOS主流的趨勢在此確定。

在筆者介紹UEFI BIOS到底是啥,能做什麼之前,我們先來回憶一下電腦是怎樣開機的。畢竟,不管UEFI BIOS有多麼強大的功能,基本上還是要先讓一台電腦開機。

即將換掉傳統 BIOS 的 UEFI,你懂了嗎?(一)

▲ 你看過嗎?這是AMI多年以前推出的WinBIOS設定畫面。(圖片為主機板手冊翻拍)

傳統BIOS開機流程

從你按下主機機殼上的電源鍵,到進入作業系統的期間,儲存於主機板上那顆EEPROM(電氣可抹除暨可程式化唯讀記憶體)裡的BIOS便會開始執行以下的工作:

1. 初始化:

當電腦打開,CPU會自行重置為初始狀態,準備運作。BIOS boot block(基本輸出輸入系統開機區塊)初始化階段啟動,因為此時系統記憶體中是空的,沒有內容可以執行,所以廠商讓CPU去尋找系統BIOS ROM中的reset vector(重置向量):用一個固定的位置來啟動所謂的BIOS boot program開機程式。

一般來說程式會在記憶體的FFFF0h位址,也就是在UMA(上層記憶區域)靠結尾的地方。為避免ROM大小改變造成相容性的問題,所以一般會選擇放這裡。它的內容只有一個jump指令,進一步跳到真正的BIOS啟動程序。當然了,各家IBV (independent BIOS vender;獨立BIOS供應商)可以把程式放在不同的位置,只要透過jump來指定就可以了。

在這段期間,系統的CPU、晶片組、Super I/O和USB只有部分初始化,僅獲取足夠資料來應付萬一BIOS開機失敗,可以利用軟碟(由Super I/O控管)甚至是光碟(由晶片組的IDE/SATA)等儲存媒體來救援BIOS的boot block。

2. POST(Power On Self Test;開機自我檢測):

然後BIOS開始施行Power-On Self Test(POST;開機自我檢測),在過程中檢查電腦各項組件及其設定,像是:中央處理器、主記憶體、鍵盤、滑鼠等等狀態。接著便尋找被內建在BIOS內部的顯示卡程序並執行。

它通常被放在記憶體C0000h的位置,作用是顯示卡的初始化,而大部分的顯示卡都會在顯示器上顯示其相關訊息。這就是為何各位在開機的時候,首先會在顯示器的畫面左上角出現有關顯示卡訊息的原因。

再下來就是讓BIOS尋找其他裝置的ROM(唯讀記憶體),看看這些設備中哪些還有個別的BIOS。如果這時有找到任何其它裝置的BIOS,它們也會被執行。

下一步BIOS會顯示啟動畫面,並開始更深入的檢測,包含我們平常可以在螢幕上看到的記憶體容量檢測。如果這時候遇到任何錯誤,就會在畫面上顯示錯誤訊息。

3. 記錄電腦系統的設定值:

到這裡還沒有結束,再來BIOS會根據自己的「系統資源表」,來對系統進行進一步的確認,看看你的電腦究竟安裝了那些系統資源或設備。有些電腦會逐步顯示這些被偵測到的設備。例如BIOS支援隨插即用,那它將會偵測和配置隨插即用裝置,並顯示由BIOS偵測到的隨插即用設備。

在這些檢測結束後,BIOS會打出一個偵測總結表於畫面上。而這個總結表在部分IBV的設定中是可以讓使用者開啟或關閉的。當然也有些IBV為加速開機把這一步直接隱藏省略。

Tips:BIOS boot block

在快閃唯讀記憶體內,通常會分成兩個區塊,一個區塊存放一般的BIOS程式碼,即所謂的code block(程式碼區塊);另一個區塊則是存放用來開機(或急救)的程式碼,就是所謂的boot block(開機區塊)。當電源打開時,主機板會先從boot block執行,它會立即檢查code block 的程式碼是否正確,如果正確,就會轉到code block 繼續執行下去。而所謂的BIOS recovery(BIOS回復)就是利用boot block回寫動作來進行BIOS更新失敗時的救援。

4. 提供常駐程式:

提供作業系統或應用程式呼叫的中斷向量,如INT 10h(VGA圖形及文字輸出中斷)等。

5. 載入作業系統:

到這裡是系統檢測的部分,接下來BIOS便開始尋找開機裝置,使用者可以透過在BIOS的設定來決定搜尋順序,目前常見的開機設備至少包含FDD、HDD以及光碟機和USB開機裝置等多項。

找到開機裝置後,BIOS將會搜尋開機訊息以進行作業系統的開機過程。如果是找到了一個灌好OS的硬碟,它將會尋找位在硬碟第0面,第0軌,第1磁區裡的Master Boot Record(主要開機磁區)。如果它找到的是FDD,也會讀取軟碟的第1磁區。再把讀取到的資料放在記憶體7C00h的位置,跳到那裡並且執行它。自此才開始進入OS啟動階段。

即將換掉傳統 BIOS 的 UEFI,你懂了嗎?(一)

秀典
作者

使用 Facebook 留言

4ca5775f1f5137fbe281e1b05e76b0d4?size=48&default=wavatar
1.  俊逸桑 (發表於 2010年12月14日 06:48)
簡而言之一句話, 丟掉POST(power-on-self-test)這個歷史包袱.
跳掉IBM PC規範, 大部分的時間在protected mode.
不會用到的東西盡量跳掉, 想盡辦法就是為了快速跳到OS裡面.
E63822ac3e9501ca337fac20d7e4e303?size=48&default=wavatar
2.  JS (發表於 2010年12月14日 07:32)
提到UEFI BIOS公司卻沒有提到領頭的系微.
在Laptop的領域, 系微靠著UEFI BIOS攻城掠地, 佔了不少市場.
82a35be8e64c75542bec7e655670dd52?size=48&default=wavatar
3.  IBV (發表於 2010年12月14日 11:19)
※ 引述《JS》的留言:
> 提到UEFI BIOS公司卻沒有提到領頭的系微.
> 在Laptop的領域, 系微靠著UEFI BIOS攻城掠地, 佔了不少市場.
因為巷子裡的都是知道Insyde=Intel啊。(≧▽≦)
沒人把他當作一回事看待,還是目光注視AMI VS Phoenix
D02d464266d65fa11505572ca63a4195?size=48&default=wavatar
4.  hasam99 (發表於 2010年12月14日 22:16)
這篇好像在看電子計算機概論,不過現在的小孩可能幾乎都不用看了,連dos都省了,連raid都建在bios裡了…超幸福。那需要什麼scsi...你說是吧!
現在可能要看「客製」化賺錢吧,也就是說,什麼時候代工廠,找到一個「凱」客戶,如:apple,那就可以幫它做一個bios。
而且,這類東西若較貴,可以再拿來給「低階」的機種使用,比較不會了錢。
這點,就好比一款太空戰士四,可以從超任,復刻到ps,再重製到nds…這不是很好嗎!
E63822ac3e9501ca337fac20d7e4e303?size=48&default=wavatar
5.  JS (發表於 2010年12月15日 03:26)
※ 引述《IBV》的留言:
> ※ 引述《JS》的留言:
> > 提到UEFI BIOS公司卻沒有提到領頭的系微.
> > 在Laptop的領域, 系微靠著UEFI BIOS攻城掠地, 佔了不少市場.
> 因為巷子裡的都是知道Insyde=Intel啊。(≧▽≦)
> 沒人把他當作一回事看待,還是目光注視AMI VS Phoenix
為什麼Insyde=Intel呢??
怎麼看都沒啥關係....
Insyde的前身是SystemSoft, 可是一家老字號的BIOS Vendor了. 至於Phoenix, 前一陣子因為太晚跟上UEFI的腳步....現在要找有Phoenix BIOS的Laptop, 還得花點功夫....
LIS
6.  LIS (發表於 2010年12月15日 18:56)
這篇文章給我一種聽到老歌的感覺啊!到底是多久以前接觸到這些知識,已經記不得了。
4ca5775f1f5137fbe281e1b05e76b0d4?size=48&default=wavatar
7.  俊逸桑 (發表於 2010年12月16日 02:45)
>> 因為巷子裡的都是知道Insyde=Intel啊。(≧▽≦)
>> 沒人把他當作一回事看待,還是目光注視AMI VS Phoenix
>為什麼Insyde=Intel呢??
>怎麼看都沒啥關係....
都已經跟你說了, 只有巷子裡的人才知道.

發表回應

謹慎發言,尊重彼此。按此展開留言規則