2010年7月19日 星期一

[不吐不快] 我所知道的EFI



有些話題在資訊界, 像是不能碰的話題, 很多人避之唯恐不及, 很多人因為太政治, 所以有一些話就放在肚子裡, 所以肚子越來越大. 也許我講一些可以讓肚子小一些.

BIOS 在歷經多年的陣痛後, 這一兩年終於要進入新的里程, 也就是新的架構EFI, 可是沒有人可以清楚解釋從legacy BIOS到EFI, EFI 的優點在那裡(不是Intel 投影片講的那一套), 97%的工程師努力的學習然後抱怨EFI, 剩下3%因為沒有經歷過legacy, 所以也講不出所以然 , 是的! 哪一個工程師不抱怨, 抱怨是一定有的, 一邊學習一邊抱怨, 等到上手就會閉嘴, 這是學習曲線的常態, 等到上手還在抱怨, 那肯定有問題?

綜觀x86, 進步總是有的, 例如USB 3.0 , 速度變快, 因為資料越來越大, 誰不希望copy 10G的資料在幾分鐘內完成? 這種技術不買單都不可能. 所以技術的進步總有他再往前一步的原因, 和使用者產生共鳴, 可目光短淺的我怎樣都看不出EFI 真的有比legacy BIOS好..

有人跟我說, 有啊! EFI 進步了, BIOS本來是寫的語言是assembly, 現在是C, 這是開啟愚民模式嗎? 今天我講一個故事, 用國語講和用台語講, 講的其實是同一個故事啊! 但是我想用台語講, 但用國語思考, 反而講的不倫不類. 重點是講那個故事(開機的方案), 無論是用哪種語言, 能夠講得清楚是最需要的(few bugs and easy to fix). 語言根本不是重點.

小丑真正的武器是EFI Development Kit(EDK), 他就像是M$ 的DDK or SDK, M$的API讓你根本不需要知道 WHY? 你只要管把API拼圖起來, 你就會得到你想要的程式, M$ DirectX就是一個很好玩的例子, 那些複雜的演算法你完全看不到, M$也不希望拼圖作業員看到, 所以很會DirectX, 充其量也只是'高級拼圖作業員', 但是 M$的優點是, 文件齊全, platform OS穩固, 所以bug不多, 身為作業員也樂得高興.

場景回到EDK, 一樣他也是打造Black Box環境, 不同的是, 文件沒有比 M$好(M$ 是連code for fun這種都在寫), platform 必需換來換去的考驗code base相容性, 這些library for call就流到第三勢力給他們使用, 第三勢力更是奇怪的跟隨, 在Black Box上面打造人工奇景, 最後系統商不得以買單, bugs如雪片般飛來, 最後EDK 改了, 所以fix了, 系統商和第三勢力沒有人知道root cause, 然後大家夜裡祈禱不要再遇到相同的問題.

PCH, ME, EFI對Intel 來說其實是最好的系統綁樁, 有沒有來一個會的人真正統計一下, 有多少MIS用 Intel ME去管理電腦, 順便再統計一下有多少系統不穩定是ME的關係, 不說你可能不知道ME也是一個Black Box, 而且和 EFI相依性日漸提高, 大家擔心狐狸帝國形成之前, 應該先擔心OX inside帝國的形成. 尤其是老是強迫大家一起買單的帝國式企業. 以後如果系統不穩定, 以往要歸咎於H/W? BIOS? Driver? 現在又多了一個避風港: Intel Black Box.

legacy BIOS最榮耀的地方在於他作很多事情, 卻無影無蹤, 單純and基本and直覺, 要寫register直接, 要debug容易, 無論換了哪一家BIOS vendor, 還是跑不了最基本的那一套, 以後工程師的你得要熟悉某一家的call routine, 這些call routine動不動structure裡面就是5個以上的members, 你不熟悉這些interface, 就進不了他的核心. 這些API和硬體register 通常沒有多大關係, 但是滿足了intel 的架構, 讓你攜帶資料從這個phase 到一下個phase, 從這一個protocol 到另一個protocol, 不 source level debug, 還真看不出所以然, 果然驗證C的優點, 每一個字都看得懂, 但就是搞不懂在作甚麼? 因為C可以抽象我們的想法, 是"人治"的想法, 你得去了解"作者"在想甚麼, 而legacy BIOS只要了解硬體在想甚麼就完工.

x86 跟著M$和藍色小精靈, 對使用者有很大的幫助, 至今他還是主流, 但是花了太多時間"試水"一些使用者並不需要的東西, 看到黑影就開槍, 鳥還沒打到, 就用光credit, 造成開發者的無奈(使用者應該也很無奈), 沒錯他們是帝國, 但是有哪些帝國是不倒的? 尤其是當追隨者有聲音, 但是帝國還是無動於衷, 這個市場總有其他人還是進得了.

6 意見:

小麥 提到...

Damn right, Intel的RC太差了. 但Intel說了算, 怎麼complain也沒法度, 只能祈禱Intel把它的黑盒子做好. 用C可以減少segment的問題, 但要破壞memory仍是相當容易的一件事. 討厭的是, BIOS沒學好卻只想做EFI的家伙(請不要對號入座).

To Be Two Bee 提到...

其實我是BIOS 還沒學好...EFI也還沒學好的傢伙..
但是希望bug很少, 很好debug...有很好的call routine文件的人..
寫完這一篇, 感覺很發洩, 為甚麼都沒有人站出來罵intel..所以這個科技界也是一個藍色巨塔啊..

小麥 提到...

一定是大吃小的啦, 而且AMD居然還抄Intel =.=

To Be Two Bee 提到...

AMD真的是不成材..
VIA 就更沒用了..想當初ATOM 還沒有發..
VIA 還跑很快啊..
忽然間 就大輸(都是可惡的EPC)...
真是希望有人可以制服 這家長很快的怪獸..

Unknown 提到...

聽起來Wayne有寫過EFI SHELL AP的慘痛經驗喔?

To Be Two Bee 提到...

我有看過別人在寫'自我檢查程式'..
用EDK寫..

按日期找

Contact

EMAIL: xpeoplex.bee@gmail.com

Total Visitors