虛擬化:使軟件盡早插手系統(tǒng)設計
軟件開發(fā)是一個令人著迷的產業(yè)。在過去這些年來,隨著開發(fā)商不斷的采用新的編程語言(從Fortran到Pascal再到C++及其他更高級的語言),它也在不斷的改變著。但是,盡管開發(fā)商很容易注意到軟件本身可以推動創(chuàng)新,但是很少考慮他們基礎設施應對變化的可能手段。在虛擬化發(fā)展過程中 ,這將有所改變。
當第一個嵌入式設備出現時,眾所周知,軟件根本不存在;所有的功能建立在硬件中。隨著微處理器的引入,軟件內容出現了,但是仍然在整體系統(tǒng)中只占一小部分。在過去二十年,隨著軟件規(guī)模和復雜性的爆炸性增長,嵌入式行業(yè)經歷了一個整體的遷移。今天,軟件是嵌入式系統(tǒng)中提高功能和創(chuàng)新的主要推動力。
雖然硬件設計在工具和工藝開發(fā)方面得到了重要的投資,但是軟件的開發(fā)流程基本上從二十世紀八十年代就保持基本靜態(tài)。硬件產業(yè)得益于良好的標準和流程,但是軟件開發(fā)的方法并沒有跟上,使得程序員從事軟件開發(fā)完全是臨時性的。
這種缺乏基本的軟件開發(fā)基礎設施的后果太常見了:成本超支、跟不上日程和質量差的軟件。軟件開發(fā)目前的辦法可以看出約有三分之二的項目遲于上市,三分之一超過預算,并且,將近一半的嵌入式設計被取消。即使為工作或者產品的性能增撥資源,也不能使得軟件開發(fā)者脫離一貫的碰壁情況。
為什么在嵌入式程序世界存在如此驚人的斷開?為什么軟件在設計越來越復雜時仍停滯不前?這既不是人也不是設備的問題。相反,它是沒有為輔助軟件發(fā)展設計出精密戰(zhàn)略發(fā)展基礎設施而造成的。
一個嵌入式設備通常是重新開始的,始于硬件且終于軟件。這個過程是順序的,由硬件開始設計圍繞一定的期望,考慮存儲、MIPS、界面、連接性等等。多種器件放到一塊建立起一個硬件系統(tǒng),它才是軟件開發(fā)最重要的。這種以硬件為中心,自下而上的方法涉及到許多步驟和多重依賴關系,而且只有經過系統(tǒng)整合階段,當軟件實際在平臺運行時,這個系統(tǒng)才能從性能的角度去理解。(相比之下,面向服務的體系結構(Service-Oriented Architecture,SOA),這種方法規(guī)在設計一個基礎架構(以支持必要的服務)之前已經規(guī)劃好了必要的服務)。
自下而上開發(fā)方法的主要弱點是,在軟件設計過程中,它把軟件作為一種后添加的事物,盡管有越來越多的系統(tǒng)功能依賴于軟件,而不是硬件。整合在這個過程中發(fā)生的非常晚,從而難以發(fā)現由硬件、設計或者架構引入的錯誤。在許多情況下,開發(fā)商不得不重新考慮他們的設計以降低時間成本和預算。
隨著軟件的復雜度達到了新的高度,并且固定程序被證明是付運的主要障礙,以硬件為中心方法的低效和不實用正在變得越來越明顯。開發(fā)商如何才能戰(zhàn)略性重新思考自己的發(fā)展方法以至于使得他們不再受到硬件的擺布?軟件開發(fā)商在系統(tǒng)階段如何能夠較早的進入系統(tǒng)設計?這就是虛擬化出現的原因。
虛擬化的先驅
虛擬化技術用于嵌入式設備開發(fā)已經好幾年,既作為實際硬件的替代,也作為復雜系統(tǒng)的設計和調試平臺。在硬件設計產業(yè),仿真已經用于插口和PCB 階段。無論是設計處理器,PCB或者SOC,硬件開發(fā)商可以使用仿真工具,像Mentor、Cadence和Synposys,以建立模型和預測他們系統(tǒng)的行為,而無需等候真實物理系統(tǒng)開發(fā)出來。
嵌入式設備之外,我們看到了許多產業(yè)在使用傳統(tǒng)方法碰壁后運用虛擬化方法取得成功。在過去兩年里,服務器虛擬化已經通過提高數據中心效率和降低總體成本方面取得了很大的進展。虛擬化已經解決了這種持續(xù)的挑戰(zhàn),包括服務器擴散、CPU利用不充分和應用分離。
仿真同時被引入了許多產業(yè),如航空航天和國防,應用在他們自己的軟件開發(fā)中。通常,這些行業(yè)需要如此復雜的設計,以至于等待了一年或者更多年后才知道硬件是行不通的。隨著點解決方案、設計復雜度基本上授權給這些公司投入資源在國內開發(fā)虛擬化軟件解決方案,仿真已經在國內發(fā)展起來了。
嵌入式軟件開發(fā)行業(yè)正處在一個既不是傳統(tǒng)的、以硬件為中心的開發(fā)方法,也不是內部的點上,一次過的虛擬軟件開發(fā)解決方案在這個競爭激烈的市場,必須能夠提供快速的產品上市時間、節(jié)約成本和質量保證。嵌入式設備中軟件內容的角色沒有任何下降的趨勢,多核器件的增長將前所未有的復雜性加入到了硬件和軟件中。必然走向多核設計,只需強調對軟件開發(fā)解決方案需求,從而能夠充分利用多核設備的潛在性能。
當前的嵌入式軟件開發(fā)已經使公司戰(zhàn)略地重新審視和反思自己的過程是必要的,不僅僅在設備階段,還要在過程設計階段 。我們可以從中知道硬件產業(yè)確實需要仿真,但是我們也需要虛擬化,更進一步說,作為一個基礎的、根本的設施引入到我們自己的產業(yè)中。
虛擬化軟件開發(fā)是一個產品發(fā)展戰(zhàn)略,它可以將軟件開發(fā)從依賴于物理硬件(在其上,應用將被部署)解放出來。相反,虛擬化軟件開發(fā)使得軟件開發(fā)商可以直接在桌面上進行開發(fā),制造出一個真實的共同發(fā)展戰(zhàn)略,這樣,硬件和軟件開發(fā)可以同時進行。軟件/硬件集成是前端的優(yōu)先,而不是后端的急于求成。
虛擬化軟件的開發(fā)使得開發(fā)者制造了高性能,功能準確的硬件模型,可以使得他們在系統(tǒng)開發(fā)過程中盡早地開始調試、測試和優(yōu)化系統(tǒng)。虛擬技術可以用于不同程度的細節(jié),從處理器到板級到設備,在這樣的精度水平,二進制代碼可以不變運行且不會伴隨任何行為上的分歧。
物理硬件測試過程中,高性能虛擬平臺不同程度的控制是不可能的。必然的,當同樣的條件應用,軟件往往以相同的方式執(zhí)行的固有性質成為了虛擬測試的一個實際。隨著處理器和硬件在復雜度上的提高,必然也就意味著在操作的過程中沒有其他的改變不是由于軟件的追蹤缺陷造成的,而是由硬件引起的往往難以察覺的變化,這個變化也就產生了所謂的“海森堡蟲子”(Heisenbug),依賴于細小的時鐘干擾的狀態(tài)有的時候是不可能復制的,甚至是在整個系統(tǒng)反復重新運行過程中。仿真基礎設施背后的虛擬平臺使得開發(fā)者可以單步驟或者停止系統(tǒng)來檢查他們的內部轉臺。開發(fā)者可以在仿真多核處理器內核和每個內核的多個過程中不斷的復制一個錯誤,從而使得多核處理器調試就像調試一個單一處理器的單一程序一樣簡單。[!--empirenews.page--]
虛擬軟件開發(fā)也避開“codeís”固有限制,通過在需要逆向時執(zhí)行代碼,開發(fā)了類似于“TiVo”的功能,且沒有任何的代碼儀表或者額外的硬件。虛擬化讓開發(fā)者等待一個錯誤,然后“倒帶”尋找到一個故障所在處的代碼的執(zhí)行。倒帶代碼執(zhí)行能力需要可以廉價的檢查整個系統(tǒng)的能力和高速仿真的能力。倒退一個指令實際上就是通過回復到檢查點和倒退到一個點,倒帶點的指令之前完成的,如果仿真速度夠快,這個過程就像是在瞬間給使用者的。這種可逆式的調試環(huán)境與多處理器系統(tǒng)和多核處理器共同工作,使得開發(fā)人員可以跟蹤缺陷,諸如競爭情況,被兩個零錯誤分開,鎖定重讀,死鎖和缺乏優(yōu)先級,所有這些都將出現,更多的是在多核架構中。
虛擬化模型的建立使得通過確定一個有意義的平臺使得平臺更加標準化,這個平臺可以使得軟件和硬件可以使用,加強和分享。虛擬化軟件設計可以獲得無限量的虛擬指標,虛擬平臺(硬件的軟件代表)可以被在幾秒內通過郵件發(fā)送到世界各地。因為由虛擬模型產生的數據不是物理限制的,公司可以與合作伙伴和客戶簡單的有效的分享他們的虛擬化軟件開發(fā)知識產權。
虛擬化軟件開發(fā)最近表現在另一個類似平臺的引入,Google的Android(Google 的手機操作系統(tǒng)和相關軟件的總稱),雖然在一個軟件開發(fā)工具包的上下文。不過,這樣的概念是一樣的,并構成了一個仿真的虛擬平臺,使得由上而下的方法在應用層使得硬件基本上是不相關的。虛擬平臺提供了設計所有的必要的服務,使得硬件可以被看作一種前端,而不是在后端考慮。一旦軟件發(fā)展,硬件優(yōu)化軟件,而不是與此相反。
實際虛擬軟件開發(fā)
虛擬軟件開發(fā)在主流的商業(yè)規(guī)模中顯示了它的好處。許多公司已經在他們的設計過程中移植了這個方法,創(chuàng)造了一個全新的創(chuàng)新的基于虛擬化軟件開發(fā)的基礎架構。
IBM在其強大的Power6平臺中的復雜軟件開發(fā)和測試中使用了虛擬化軟件開發(fā)。通過使用這個方法,IBM的開發(fā)團隊能夠提高他們開發(fā)復雜固件和系統(tǒng)管理程序的挑戰(zhàn),從而無需物理硬件可以啟動和運行多個操作系統(tǒng)上的虛擬系統(tǒng)模型。這反過來,可以幫助降低整體的硬件花費。IBM很快意識到可以使用虛擬軟件開發(fā)優(yōu)化它的整個產品開發(fā)生命周期,同時也可以最大限度的減少硬件和軟件設計團隊的壁壘。
GE Aviation系統(tǒng)(前身為Smiths Aerospace)使用了虛擬化為它的過程模型發(fā)展了仿真模型。GE建立了最終目標系統(tǒng)模型提供更多的好處,與傳統(tǒng)的開發(fā)環(huán)境相比,包括降低開發(fā)和測試成本,整合成本,收購成本,維修保養(yǎng)的成本及成本的變化。虛擬軟件開發(fā)確定性的能力使得GE的開發(fā)者可以在他們在深入檢查和診斷的空閑再現性能問題。
風河系統(tǒng),領先的設備軟件優(yōu)化供應商,使用了一段時間的虛擬軟件開發(fā)以提高他們操作系統(tǒng)的開發(fā)過程(如VxWorks中SMP),同樣公開確定了虛擬軟件優(yōu)化在他們的開發(fā)戰(zhàn)略中作為一個主要內容。
最近,Monta Vista軟件公司,智能設備的Linux系統(tǒng)提供商,將虛擬軟件優(yōu)化更進了一步,使得虛擬化成為它的軟件銷售和評價的一個關鍵部分。Monta Vista允許其潛在客戶在網上通過一個連接到使用者的TestDrive的評價服務提高Linux產品。并運行于虛擬化軟件開發(fā)平臺。這是一個虛擬軟件開發(fā)鼓勵新的思維方式和經商之道的成功例子。
作者:Michel Genard