2010年1月27日 星期三

雲端運算(Cloud Computing)之我見

雲端運算(Cloud Computing)之我見

作者:常世勳
雲端運算(Cloud Computing),最早是由Amazon提出的,雲端運算其實是由"雲" + "端"所組成的,而且嚴格來說雲端運算也不算是一種技術,我認為它比較像是一種"創新"(創新:不是指發明全新的技術或觀念,而是指利用現有的技術/觀念,而創造另一種新的價值),進而非常有機會成為一種"殺手級的應用".
雲端運算的觀念其實在以前就有人提出類似的應用,例如:"分散式運算","網格運算",或是以前我在學校時所使用過的"終端機",這些都算是"雲端"的前輩(當然是指觀念類似,但不是完全相同);只是當時"環境"尚未成熟,所以無法普及到End user.
這裡所指的"環境"包含了:網路速度(過慢),電腦/手持上網裝置的普及程度,瀏覽器的應用,無線網路的普及程度.而迄今,這些"環境"都已非常成熟了,尤其是寬頻網路及無線網路,瀏覽器(例如IE)也設計得非常方便操作,所以"雲端運算"也就成為可以被實現的一種觀念.
雲端運算共分三層結構,由下而上分別是「基礎建設即服務」,「平台即服務」和「軟體即服務」.
先來談談"雲"和"端"吧:
"雲":泛指數量很多的伺服器(運算速度強大),以及大容量的儲存設備(Storage).
"端":泛指End user所擁有的各種可以上網的裝置(手機,PDA,Desktop,NB...)且最好包含網路瀏覽器.此外,這些電子裝置不用功能非常強大,只要可以使用瀏覽器上網,就可以使用"雲"的服務.
因此未來若雲端雲算成熟且普及之後,桌上型電腦及筆電很有可能會慢慢被便宜又輕薄的可上網裝置所取代.當然微軟及INTEL(這對阿比阿弟又被稱之為WINTEL)所面臨的挑戰會是首當其衝的,因為電腦裡面不再需要灌Windows了,只要有非常簡單的小型O.S,再加上瀏覽器的應用程式就夠了;甚至也有可能完全都由BIOS來完成,這在UEFI架構的BIOS是可行的.
以後測試team也不用再一直測Win7/Vista,只要測瀏覽器+Mini O.S ;總之以後大家的工作內容都會有很大的變化.
而"雲","端"之間的橋樑便是"高速網路"(光纖網路,3G...),以下是示意圖:
"雲" <------(光纖網路,3G)------> "端"

雲端運算可以把它想像成是"吃飯",我們不必因為想吃各類的餐點而去請一堆廚師到家裡,或是自己要會煮各式料理.只要"送貨速度"快速,我們可以叫各種餐廳外送(這就是"雲"的觀念:不必自己養一頭牛在家裡,而你家就是"端"),以下是對照圖:

"雲" <------(光纖網路,3G)------> "端""
各大餐廳外送服務" <------(30分鐘內保證送到)------> "我家"

相信大家看完葵花寶典上冊之後,應該對雲端運算已有了清楚的概念了.
雲端運算的精神其實非常簡單,就是有很多強大的"雲"可以提供各式各樣的服務(即"雲端服務")給消費者(即"端",消費者可以包含End user及企業),所有的電腦運算都由"雲"來完成,然後再透過網路把結果送到我們的手機/PDA/NB("端").
所以雲端運算其實不是一種全新的發明,它是把現有的各種技術/設備/觀念都加以組合,型成另一種有價值的活動,這也是我認為它是一種創新的原因.
因此,我們的手機/PDA/NB...的功能就不用非常的強大,也不用常常為了某種應用而去升級硬體;相對的,"雲"的設備就要求運算功能要很強大,且要有很大的儲存容量可以存放我們的資料.
以後我們可能只要靠一隻硬體水準很普通的手機就可以做到目前個人電腦所有可以完成的事情,例如用手機玩華麗的3D遊戲,做影像編輯,甚至程式設計師最為頭痛的Build code......因為所有要耗費硬體資源的運算都由"雲"來幫你先處理好了.
我們電腦的硬碟也不用再因為空間不夠而一直花錢更換更大的硬碟,因為大部分的資料(影片,照片,音樂,資料檔案......)都是放在"雲"上面.
所以雲端運算帶來了非常多的商機及新的機會,例如伺服器/Storage的需求會爆增,台灣的相關代工廠商(廣達,英業達)便會受惠;網路服務及網路設備的商機也會增加;此外最有想像空間的便是"雲端服務"裡面的其中一項"軟體即服務"這塊大餅,以後大家都可以在家裡自己寫一個好用的程式,然後把它放在"雲"上面給別人使用,也可藉此賺取金錢;當然也可以免費,因為有人只是想成名.
這種商業模式完全打破目前軟體界由微軟獨霸的現象,讓升斗小民的我們有了另一片"藍海".
前面講了那麼多"雲端運算"的好處,難道雲端運算都沒有缺點嗎?...
當然有,事情總是一體二面的,有好必有壞,有陰必有陽.
雲端運算最大的隱憂便是"資訊安全",尤其是我們的個人隱私資料.因為我們所有的運算及絕大部分的資料都是由"雲"幫我們處理,想當然爾,"雲"便掌握了我們的隱私,我們所有的動作,資料,喜好,習慣都會被"雲端服務"的廠商記錄下來,所以我們的隱私便有被揭露的風險.
又及,因為我們所使用的絕大部分軟體都是由"雲"來提供並執行,若是"雲端服務"的廠商停止該項服務,或是你所處的地方是沒有網路或是網路速度很慢的環境,則會嚴重影響到我們的生活及工作,因為你不可能像現在一樣,換到另一台電腦上面就可以繼續工作(因為電腦內已經沒有安裝大部分的軟體,例如:Word,Excel...,這些都是由"雲"來提供的).
當然,你放在"雲"上面的資料亦有遺失的風險.這些都是雲端運算需要克服的隱憂.
接下來我想要深入探討"雲端運算"對國家競爭力的影響,這要由大戰略的角度來思考,這是一般我們做工程師的人不太會想到的層次,但卻是非常重要.目前世界各國都已經在籌設自己的"雲",例如中國大陸已在建置"北京雲","上海雲";韓國也在建置"雲端松島".
為何這些國家要這麼積極呢? 有個例子很容易來回答,我們知道目前世界上的霸主是美國,絕大部分一流的企業都是在美國(微軟,INTEL,思科,Google,Apple...),也因此美國掌握了規格的主導權,以及相關的商業模式...這就是國家競爭力.
所以若是所有的"雲"都在美國,那其它國家便都被它的"雲"所牽制住,層次高一點的是國家機密也就很容意被洩;另一層面是企業沒有規格的主導權(也就是遊戲規則),永遠只能跟隨在美國企業的腳步之後賺辛苦錢.所以台灣是否也應該要有自己的"雲"呢?!當然要.
雖然我們可以和對岸合作共建"雲",但除此之外,台灣還是要有自己的"雲".理由很簡單,就是國家安全及軍事機密.
雲端運算目前很熱門,但還是有需多相關的細節尚處於模糊階段,也就是因此,才會充滿想像及機會.

2009年4月16日 星期四

2009年4月4日 星期六

UEFI Framework的生命週期

簡單的來說,Framework就是UEFI的一種實現,由Intel自己所開發完成的。
它完全實現了EFI spec 中提及的各項功能。開發者可以基於Framework,開發出各種EFI應用。同時也可以為Framework新增新的功能。

Framework的執行(The life cycle of the Framework ),是按照以下的順序來執行的:
(1)SEC :Security
這個是系統上電後所立即進入的一個階段,在這一階段,Intel並沒有做太多的說明,相反,他們說這個階段可以由大家按照自己的需要利用。也就是說,我們可以安排我們自己想要的任何task在這個階段,比如一些身份驗證之類的。

(2)PEI :Pre-EFI
正如它的名字一般,這個是在真正的UEFI環境之前進入的一個狀態,這個狀態相當重要,以至於Intel花了很多時間來向我們闡述。
這個階段會做很多初始化的工作,會初始化CPU,初始化主板上的一些controller以及chipset,更加重要的是,在這個階段內,會使用一種技巧(CAR:Cache as RAM),來迅速的建立起執行C 語言所需的環境,也就是說,會建立一個stack。
這樣,以後機器就可以run那些由C語言所編寫的code了。最後PEI Core會按照一種方法來load所有的PEIM( Pre-EFI Module )。
PEIM是一種可以run在這個階段的一種module,任何人都可以開發自己的PEIM,load的工作由PEIM Dispatcher完成。
全部load之後,PEI會launch DXE Main並將系統控制權交給下一個階段:DXE phase。

(3)DXE :Driver Execution Environment
在這個階段,UEFI真正的提供了一個類似OS一樣的東西。在上一個階段PEI,系統已經建立了C語言可以執行的環境,從這個階段開始,所有的東西,都是用C語言完成了。
進入DXE後,會首先launch各種driver,比如Video Driver,NIC Driver,Soundcards Driver,USB Driver,PCI Controller Driver等等。
完成之後,就開始進行Boot。而這就是下一個階段了。

(4)BDS :Boot Device Select
在這裡,應該會有一個選擇,是進入OS呢?還是去執行那些EFI Applications ?
選擇完成之後,就進入下一個階段了。

(5)TSL :Transient System Load
這個階段會按照在BDS階段選擇的結果來做不同的事情,如果選擇了進入OS,那麼控制權會被傳遞給Final OS Loader。而如果是要去執行EFI Applications,則控制權便交給Transient OS Boot Loader,這樣就會建立起一個執行環境,之後就可以執行那些EFI Applications了。
目前,應該會執行一個叫EFI Shell的程序。而傳統的BIOS Setup也被寫成一個EFI Applications。

(6)RT :Run Time
這個階段就是OS執行的階段。

(7)AL :After Life
這個是OS執行之後的階段,例如關機之類的。但OS crash之後也屬於這個階段,也就是說,在系統萬一crash之後,如果使用UEFI,那麼還是可以做許多事情的。

以上就是Framework完整的執行週期。

Author: 常世勳

EFI Shell (Part 1)

1.什麼是EFI Shell?
EFI Shell是一個UEFI的應用程式,類似於我們在Windows中所用到的cmd或者在Linux中的shell。
EFI Shell是個非常重要的應用程式,它負責接收user的輸入,將user的輸入解譯並告訴kernel去執行,同時將執行結果顯示出來, 以完成和user的互動功能。

2.EFI Shell Commands list:
EFI Shell使用string interface和user互動,以下列出一些較常用到的命令:
( 1)pci : 顯示PCI設備或者PCI的configuration information.
( 2)mm :顯示或者修改memory,I/O以及PCI資源。
( 3)mem :顯示System memory或者Device memory的情況。
( 4)memmap :顯示由EFI Environment建立的Memory Map。
( 5)drivers :按照EFI Driver 的類型來逐一顯示所有已經安裝的Driver。
( 6)devices :顯示所有已經被EFI Driver所控制的device。
( 7)devtree :按照EFI Driver的類型來顯示device tree。
( 8)dh :顯示在EFI Environment中的所有的Handles。
( 9)connect :將一個Driver給 connect到一個device並啟動device。
(10)load :將一個Driver讀入memory。
(11)unload :將一個Driver從memory中unload掉。

Author: 常世勳

2009年2月9日 星期一

按Keyboard三個鍵便可讓Windows產生藍屏(BSOD):

1.用Regedit去改登錄檔:
1.1.若是用USB keyboard:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters
1.2若是用PS2 keyboard:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

Create一個DWORD鍵,名稱為:CrashOnCtrlScroll, value設為1

2.改完之後記得要重開機.
3.下次開進OS之後,
按下keyboard右側的Ctrl鍵不放,同時再按Scroll Lock鍵二次, 此時系統便會出現
BSOD, message如下:
The end-user manually generated the crashdumpTechnical information:
*** STOP: 0x000000E2 (0x00000000, 0x00000000, 0x00000000, 0x00000000)

這個小技巧對RD debug有個很有用的地方,即是當你遇到系統不知為何變成黑屏時,
若你想知道此時Windows是否還活著,可用這個方法去手動產生藍屏,若windows
還活著,藍屏便有機會產生; 但這有個前提是VGA driver這時是ok的,因為產生黑屏
的原因也有可能是VGA driver本身出問題.

PS:這個方法在Vista, XP皆有效.

Author: 常世勳

2009年1月20日 星期二

UEFI 心得筆記 (2)

1.
PEI phase:
1.1> PEI phase的code是在flash part內執行的.
1.2> 包含S3 resume的code.
PS: S3 resume及normal boot各會有一份memory initial的code,
通常這二份可以是相同的,但也可以針對S3 resume的那一份
memory initial的code做一些精簡.
1.3> 是否要做Crisis的判斷.

2.
SEC and PEI phase的執行時間通常是愈短愈好,以免影響到
S3 resume time. 當然,如果你的客戶不care POST time, S3
resume time的話,則你是可以把一些H/W initial或一些特殊
的function放在SEC phase來做的.

Author: 常世勳

2009年1月15日 星期四

UEFI 心得筆記 (1)

1.開機Post 流程: SEC -> PEI > DXE -> BDS

2. S3 resume: SEC -> PEI (不會run到DXE and BDS phase)

3.BDS其實也是DXE driver的一種

4.UEFI spec的定義, 真正的H/W initial (Ex:PCI BUS, VGA, Keyboard......)是在BDS phase才會執行的.

Author: 常世勳