2010.12.14 02:51

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

ADVERTISEMENT

Intel即將在明年初,也就是最快下個月發表全新的處理器平台,在我們先前的提到,各大主機板廠商都有意願在新的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主流的趨勢在此確定。

ADVERTISEMENT

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

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

ADVERTISEMENT

傳統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來指定就可以了。

ADVERTISEMENT

在這段期間,系統的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的位置,作用是顯示卡的初始化,而大部分的顯示卡都會在顯示器上顯示其相關訊息。這就是為何各位在開機的時候,首先會在顯示器的畫面左上角出現有關顯示卡訊息的原因。

ADVERTISEMENT

再下來就是讓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啟動階段。

  • 延伸閱讀:

ADVERTISEMENT