EFI對未來的PC產業影響(一)
週六, 九月 22, 2007, 01:22 AM - EFI
常有人問這個問題,或許在傳統 PC 產業供應鏈上的人並非同意 EFI 會取代 BIOS,不過從過去的歷史來看,只要科技的發明是好的,且有著普遍化的原則,通常都會普及‧

1. 對x86 CPU的依賴性降低,根據M$的說法,EFI會先開始用在64-bits的OS,那表示什麼? 表示未來EFI Aware的OS將會直接從64-bits的EFI中開機,不再像傳統的BIOS,用16-bits開機,再讓OS Loader去從16->32->64 bits,64-bits的指令也跟16/32-bits不相容,但是對C而言32 or 64是沒有太大差別的‧

2.對20年來的PC/AT架構的依賴性也大幅的降低,過去BIOS由於介面的粗糙以及無法跟上CPU升級的腳步,造成很多AP or OS Loader必須直接透過I/O層次的方式去驅動硬體,相對的造成硬體相容性的依賴,舉例,INT19會載入硬碟的啟動磁區,然後透過INT13跟著載入 16-bits的OS Loader到640K內,接著BIOS就廢了,然後OS Loader會切進保護模式,再利用自己的驅動程式去直接驅動硬體載入OS本體到1MB以上的空間,這裡我們就可以發現,如果我們要改變PC/AT的架構是不可能的,因為OS Loader依賴的是硬體的相容性,而非BIOS所提供的功能‧所以當使用EFI後,由於EFI支援CPU的最大模式,OS Loader可以直接透過EFI的API去載入OS本體到記憶體,那便沒有了硬體相依性的問題了‧

3.可抽換更新,EFI是一個可以Binary Change的BIOS,不像過去的BIOS,總是需要等廠商出新版才能更新整顆,萬一主機板停產,可能更新也跟著停者,EFI就像是有個小硬碟在你的主機板上,驅動程式就像檔案一樣,可以抽換更新,也就是說如果有必要,某些硬體廠商可以提供Patch讓你更新BIOS,比如ATI or nVIDIA / Intel / AMD‧

4.可擴充性,使用者可以自己增加新的功能,驅動程式,或開機畫面等,放在硬碟上,開機時可以一並載入‧
1 回應 1 回應 ( 23預覽 )   |  permalink   |   ( 3 / 741 )

EFI != C BIOS
週四, 八月 02, 2007, 10:58 PM - EFI
似乎有很多傳統做 BIOS 的人認為 EFI只是一個用 C 寫的 BIOS,這句話似乎對,又似乎不對,或許我應該來做個區分跟解釋‧

我們來看 OS,我們可以說 Windows是個 C 寫的 OS 嗎? 對..我們可以這樣說,那會寫 C 的程式設計師就可以寫的出一個 OS 或寫出 OS Driver 出來嗎? 我想應該有稍微碰過 OS Driver的人都知道,那個不若寫個秀『Hello World...』在 DOS or Command Prompt下那般簡單‧

那問題是什麼呢? 其實就是系統結構,當人們用 C 堆積一個系統時,後面的跟隨者必須Follow這個系統的規範,了解這個系統,才能寫這個系統的零組件,而不是只是 C 的語法問題‧

當你知道結構,可以去寫這個系統相關的零組件後,你還需要知道這個零組件的專業目標,就像你如果要寫會計軟體,不是只需要 C 的知識,同時你還要有『會計』的相關知識‧

EFI 不只是 C 寫的 BIOS,它還融合許多系統層面的架構思維‧
(像好像用寫 DOS AP的觀念去寫 Windows AP)


發表回應 發表回應   |  permalink   |   ( 3 / 975 )

EFI 相關資料
週五, 七月 06, 2007, 11:40 AM - EFI
UEFI 2.0 Specification
http://www.uefi.org/specs/

EFI 1.1 Specification
http://www.intel.com/technology/efi/mai ... cation.htm

Tiano Core的論壇, 就好像 Linux Core一樣, Intel把他們作的EFI 核心Source Code公開並讓大家免費使用.
https://www.tianocore.org/

Intel之前的舉辦的 EFI論壇活動資料
http://www.intel.com/technology/framewo ... ations.htm
http://www.intel.com/technology/efi/efi.htm

目前唯一一本紙本的EFI教科書
http://www.intel.com/intelpress/excerpts/efi2.htm
發表回應 發表回應   |  permalink   |   ( 3 / 1077 )

啥是EFI...
週六, 一月 20, 2007, 01:08 AM - EFI
剛好金魚做的工作跟這個有關, 發現很多剛接觸EFI的人都有一些錯誤的觀念, 想想有空來寫一些文章順便做做筆記, 也讓以後進入這個領域的人可以有個入門的管道吸收一些知識. (Blog分類:EFI)

EFI是Extended Firmware Interface, 用來取代現在PC上的BIOS, 說是取代但是其實有很大的不同, 這個取代並非實做上的取代, 而是涵義上的取代.

什麼是涵義上的取代:
1.傳統BIOS的載入OS Boot Loader方式
2.傳統BIOS構成
3.傳統BIOS所提供的介面
4.傳統BIOS所用的語言

對EFI來說載入OS Boot Loader的方式不再是像傳統那樣, 去讀取物理磁碟的磁區0作為交接控制權的進入點, 取而代之的是載入OS Loader的執行檔. 發現了沒有, 這裡有很大的差異, 對傳統的BIOS而言只要簡單的載入磁區0, 一切的事情就跟BIOS無關, 說BYE-BYE, 對EFI而言, EFI需要去載入一個OS Loader的執行檔....啥...執行檔, 難道..對...沒錯EFI內建檔案系統, 不需要像過去要跑DOS才有File System, 跑了DOS又受限640K...OS已經都不願意受限於DOS的640K了, 所以今日的DOS已經成為孤兒, 爹不疼娘不太的. EFI下內建檔案系統, 所以不只是可以選擇你要跑哪個OS, 還可以提供一個SHELL環境, 讓你手動的去跑切割硬碟或更新BIOS的程式.

傳統的BIOS通常都是由各家的BIOS公司自行發展架構, 大多只是Source Code上的管理, 如何拆開重新組合, 編譯完畢就變成一個ROM的映像檔, 要更新也是一次更新整顆 ROM. 從 EFI 起, 硬體的功能開始 Driver 化, 也就是EFI是類似 OS 架構一樣, 每個硬體有他自己的 Driver, 這個 Driver 並非像傳統 BIOS 一樣只是路過的一段程式碼, Driver 可以達成很多傳統 BIOS 無法做到的事, 比如
  a.沒有硬體就不會跑相對應的 Driver, 就好像你在 Windows上裝 ATI 的 Video Driver, 拔掉了 VGA, Driver 也就不會跑了.
  b.Driver 可以負責數個同質的硬體, 類似C++的物件, 比如你插三片RAID卡, 也只需要一份 Driver
  c.抽象化, 可以用Driver的方式輕易的模擬出不同的介面, 在傳統上這個很難做到, 比如用 Serial Port 模擬 Remote HDD, 或網路
  d.複雜化, 用 Driver 可以輕易的堆出網路的七層架構

再來談到介面, EFI所提供的介面是彈性的, 相對於過去的 BIOS 只能提供 INT xx, 還有一堆非官方的地址 I/O, 作為 OS Loader 的介面實在太簡陋了, 在EFI下一切的介面都是 Protocol, 不在依賴INT xx, 試想有多少CPU有INT xx, 這些介面可能是 EFI 規格裡所定義的介面, 也可能有廠商自己的 Driver 所提供的介面, 一切區分都用 128-bits的 GUID, 據Mx公司說兩百年內應該都不會有重複.

最後提到, EFI起開始用 C 語言, 或許很多人覺得不可思議, 其實EFI可以大量的重複利用相同的 Code, 以及C方便使用複雜的資料結構, 再加上現在 C 的最佳化已經相當成熟, 其實反過來工程師可以花更多的時間在開發上, 而不需要去煩惱暫存器所帶來的困擾. 另外用C寫也讓EFI有很大的可攜性跟擴展性, 比如EFI可以輕易的搬到 x64 的 CPU 或其他的 CPU 上, 在傳統的 BIOS 上來說, 這是一件不可能的任務, 不是嗎?

別忘了, EFI不只是 C 的 BIOS, C 只是一種語言, 跟架構無關, 而 EFI 提供了很多複雜的技術, 功能, 架構, 跟傳統的BIOS有著很大的不同, 說簡單些, 其實EFI有著非常類似 OS 的 Driver 架構, 所以大家都知道不是會 C 就會寫 Windows Driver, 其實 EFI亦是如此...
3 回應 3 回應 ( 97預覽 )   |  permalink   |   ( 3 / 1665 )