BIOS內部結構
對于我們曰常使用的個人電腦來說,采用的BIOS并不是完全相同的,分別由Award、Phoenix和AMI這個三個廠商提供(注:Award已被Phoenix收購,其實是一家公司)。以目前主板的狀況而言,大多數都是采用Award BIOS或者基于Award BIOS 內核改進的產品(采用AMI BIOS的產品相對要少,Phoenix BIOS主要是筆記本電腦和不少國外品牌機采用)。本文介紹的一些BIOS知識和結構,也只圍繞市場占有率最高的Phoenix-Award來展開。
拿常見的Award的2Mbit CMOS地址結構來說,從FFFF到FFFC區域是用于儲存16Kbit容量的Boot Block(啟動模塊)、接著是8Kbit的即插即用延伸系統配置數據ESCD區、4Kbit的處理器微代碼Micro code和4Kbit的DMI數據區。FFF8到FFF6是解壓縮引擎區,這里的指令可以釋放FFF6之后區域的大容量代碼和信息,比如廠商Logo、OEM數據等等。最后一部分是安放BIOS主程序的地方,通常這些程序也就是我們從網上下載的以bin為后綴名的BIOS升級文件。
BIOS主要功能
主板BIOS掌握著系統的啟動、部件之間的兼容和程序管理等多項重任。只要按下電源開關啟動主機后,BIOS就開始接管主板啟動的所有自檢工作,系統首先由POST (Power On Self Test,上電自檢) 程序來對內部各個設備進行檢查(這個過程在下文中另作表述)。通常完整的POST自檢將包括對CPU、基本內存、1MB以上的擴展內存、ROM、主板、CMOS存儲器、串并口、顯示卡、軟硬盤子系統及鍵盤進行測試,一旦在自檢中發現問題,系統將給出提示信息或鳴笛警告。然后BIOS就按照系統CMOS設置中保存的啟動順序搜尋軟驅、IDE設備和它們的啟動順序,讀入操作系統引導記錄,最后將系統控制權交給引導記錄,并最終完全過渡到操作系統的工作狀態。
除了基本的啟動功能外,BIOS還有硬件中斷處理、系統設計管理、程序請求等作用。操作系統對硬盤、光驅、鍵盤、顯示器等外圍設備的管理,都是直接建立在BIOS系統中斷服務程序的基礎上的,它是PC系統中的軟件與硬件之間的一個可編程接口。計算機開機的時候,BIOS會分配CPU等硬件設備一個中斷號。當執行了使用某個硬件的操作命令后,它就會根據中斷號使用相應的硬件來完成命令的工作,最后根據其中斷號把它跳回原來的狀態。同樣,BIOS也可以通過特定的數據端口發送、接受指令,以實現軟件應用程序對硬件的操作。
BIOS的系統管理功能是大家最為熟悉的,即平時說的BIOS設置。BIOS程序會調用儲存在CMOS RAM部分的記錄,用戶可以通過顯示器看到系統基本情況,包括CPU頻率、IDE驅動器、ACPI電源管理和密碼設置等信息。正如筆者在一開始說過的那樣,這部分信息是依靠電池單獨供電儲存在RAM中的,只要斷電一段時間或人為給CMOS接通高電平信號(跳線短接),任何修改過的設置都會不復存在。
BIOS如何工作
有了以上這些基本介紹,掌握PC樞紐的BIOS是如何工作的呢?鑒于這個過程的復雜,不妨讓我們將BIOS運行中的幾個關鍵點羅列出來,稍做分析。這里需要事先聲明,以下介紹的有關BIOS運行代碼統一成十六進制,
簡單地說,BIOS啟動會經過好幾個檢測、命令、執行的循環流程,當然,在進入BIOS控制之前,CPU還需要一個熱身的過程。拿P4系統為例,如果按照PC啟動的流程來講解的話,這個先后秩序是這樣的:首先是主機電源開始供電,CPU接收到VR(電壓調節系統)發出的一個電壓信號,然后經過一系列的邏輯單元確認CPU運行電壓之后,主板芯片接收到發出“啟動”工作的指令,讓CPU復位。CPU“蘇醒”后的第一工作就是,讀取BIOS中的初始化指令。在對CPU(2次檢查)和內存(640KB基本模塊)狀態做一系列校驗之后,BIOS會完成電路片的初始準備,停用視頻、奇偶性和DMA電路片,并且使CMOS計時器開始運行。隨后,BIOS程序會逐步檢查CPU是否和默認設定相同,DMA是否有故障,顯示通道測試等等,一旦出現故障,就會有蜂鳴器發出報警。不過,這些步驟都是在后臺后悄悄進行的,我們是看不到屏幕上的任何信息。
在上面的流程圖中,很清楚地表明了引導模塊工作的幾個步驟。當CPU被正式啟動以后,POST(Power-On Self Test,加電后自檢)進入內存偵測階段,一旦基本內存檢測出錯,系統死機并會長時間報錯;如果一切順利,BIOS繼續往下POST,檢查CMOS內的其他BIOS主程序、擴展程序,直到完成這些工作,系統進入常規流程,顯示器上才會顯示出時間曰期、BIOS版本型號、CPU頻率、內存容量等基本信息。在BIOS引導IDE設備和I/O設備以后,接下來的過程便交給操作系統來繼續了。
BIOS在電腦啟動過程中大體是這樣工作的,實際上遠比我們介紹的要復雜得多。中間任何一個小的步驟出錯都會導致系統無法啟動,崩潰,而且BIOS設置不當也會給系統造成隱患。有經驗的老鳥可以通過BIOS啟動時候的聲音來判斷故障,而一般用戶可以通過查看Debug卡的檢錯信號,了解POST停滯在哪個階段。還是拿Award BIOS來說,開機Debug卡顯示FF和C0表示CPU自檢沒有通過,應該停電檢查處理器狀況;如果是C1、C3等數字顯示,很有可能是BIOS在檢測內存時候發生問題了;系統自檢過了2D,并且伴隨清脆的“嘀”聲,說明系統已經通過顯卡檢測,這個時候顯示屏上也開始出現畫面。知道了故障可能發生的部件,我們可以通過替換法來最終確定問題源頭,順利解決問題。
BIOS的保護
除了硬件設備的兼容問題之外,BIOS還有可能面臨病毒、錯誤擦寫等外因的危害,BIOS如果不能工作,整臺電腦也就癱瘓了。
不少主板廠商都通過專門的設計來增加BIOS的可靠性。有的是做成Dual BIOS雙模塊的方式,一旦其中一塊出現故障,能夠通過跳線設置讓系統從另外一塊引導啟動,再對損壞模組進行修復。由于BIOS中Boot Block區是重要的數據塊,所以廠商將Boot Block塊設計成分塊式的BIOS結構,在BIOS芯片中保留了一個區域,該區域中保存有BIOS系統中最重要的啟動信息。最新的刷新程序的默認值就是刷新時不更新BIOS的Boot Block塊,這樣的主板即使刷新失敗,也能很容易恢復。
遇到BIOS刷新失敗,也可以自己用熱插拔的辦法來替換受損芯片,前提是你能找到一片和原來BIOS容量一樣的芯片。有動手能力的玩家還可以在BIOS芯片的管腳上動腦筋,因為絕大多數的CMOS芯片為32腳的DIP封裝,它們的針腳排列、功能基本上一致。芯片的寫操作一般是通過寫入允許腳的電平變化來控制的,只有12V或者5V的高電平被調成低電平以后,數據才能寫入到芯片中去。根據此原理,只要把這個管腳從電路中脫離出來,一直處于高電平,即處于“讀”狀態,那么不論是病毒還是誤操作,都不會對芯片內的數據進行改寫。不過,這個方法存在一定的危險性,它不適用所有的BIOS芯片,而且容易失去主板的保修,一定要謹慎為之。
BIOS是英文Basic Input/Output System的縮寫,原意是“基本輸入/輸出系統”。而我們通常所說的BIOS,其實是指一個固化在ROM中的軟件,負責最低級的、最直接的硬件控制,以及計算機的原始操作;用來管理機器的啟動和系統中重要硬件的控制和驅動,并為高層軟件提供基層調用。
CMOS是英文“互補金屬氧化物半導化”的縮寫,不過我們常說的CMOS卻是指主板上一塊可讀寫的存儲芯片,也稱之為“CMOS RAM”。CMOS RAM是隨機存儲器,具有斷電后消除記憶的特點,人們就想到了使用外接電池保持其存儲內容的方法。
一般來說,通過固化在ROM BIOS的軟件進行BIOS參數的調整過程就稱之為BIOS設置,而通過BIOS設置中的“標準CMOS設置”調試CMOS參數的過程就稱為CMOS設置。我們平常所說的CMOS設置與BIOS設置只是其簡化說法,所以在一定程度上造成兩個概念的混淆。
|