虛擬化:使軟件盡早插手系統(tǒng)設(shè)計(jì)
軟件開發(fā)是一個(gè)令人著迷的產(chǎn)業(yè)。在過(guò)去這些年來(lái),隨著開發(fā)商不斷的采用新的編程語(yǔ)言(從Fortran到Pascal再到C++及其他更高級(jí)的語(yǔ)言),它也在不斷的改變著。但是,盡管開發(fā)商很容易注意到軟件本身可以推動(dòng)創(chuàng)新,但是很少考慮他們基礎(chǔ)設(shè)施應(yīng)對(duì)變化的可能手段。在虛擬化發(fā)展過(guò)程中 ,這將有所改變。
本文引用地址:http://www.biyoush.com/article/201609/304726.htm當(dāng)?shù)谝粋€(gè)嵌入式設(shè)備出現(xiàn)時(shí),眾所周知,軟件根本不存在;所有的功能建立在硬件中。隨著微處理器的引入,軟件內(nèi)容出現(xiàn)了,但是仍然在整體系統(tǒng)中只占一小部分。在過(guò)去二十年,隨著軟件規(guī)模和復(fù)雜性的爆炸性增長(zhǎng),嵌入式行業(yè)經(jīng)歷了一個(gè)整體的遷移。今天,軟件是嵌入式系統(tǒng)中提高功能和創(chuàng)新的主要推動(dòng)力。
雖然硬件設(shè)計(jì)在工具和工藝開發(fā)方面得到了重要的投資,但是軟件的開發(fā)流程基本上從二十世紀(jì)八十年代就保持基本靜態(tài)。硬件產(chǎn)業(yè)得益于良好的標(biāo)準(zhǔn)和流程,但是軟件開發(fā)的方法并沒(méi)有跟上,使得程序員從事軟件開發(fā)完全是臨時(shí)性的。
這種缺乏基本的軟件開發(fā)基礎(chǔ)設(shè)施的后果太常見(jiàn)了:成本超支、跟不上日程和質(zhì)量差的軟件。軟件開發(fā)目前的辦法可以看出約有三分之二的項(xiàng)目遲于上市,三分之一超過(guò)預(yù)算,并且,將近一半的嵌入式設(shè)計(jì)被取消。即使為工作或者產(chǎn)品的性能增撥資源,也不能使得軟件開發(fā)者脫離一貫的碰壁情況。
為什么在嵌入式程序世界存在如此驚人的斷開?為什么軟件在設(shè)計(jì)越來(lái)越復(fù)雜時(shí)仍停滯不前?這既不是人也不是設(shè)備的問(wèn)題。相反,它是沒(méi)有為輔助軟件發(fā)展設(shè)計(jì)出精密戰(zhàn)略發(fā)展基礎(chǔ)設(shè)施而造成的。
一個(gè)嵌入式設(shè)備通常是重新開始的,始于硬件且終于軟件。這個(gè)過(guò)程是順序的,由硬件開始設(shè)計(jì)圍繞一定的期望,考慮存儲(chǔ)、MIPS、界面、連接性等等。多種器件放到一塊建立起一個(gè)硬件系統(tǒng),它才是軟件開發(fā)最重要的。這種以硬件為中心,自下而上的方法涉及到許多步驟和多重依賴關(guān)系,而且只有經(jīng)過(guò)系統(tǒng)整合階段,當(dāng)軟件實(shí)際在平臺(tái)運(yùn)行時(shí),這個(gè)系統(tǒng)才能從性能的角度去理解。(相比之下,面向服務(wù)的體系結(jié)構(gòu)(Service-Oriented Architecture,SOA),這種方法規(guī)在設(shè)計(jì)一個(gè)基礎(chǔ)架構(gòu)(以支持必要的服務(wù))之前已經(jīng)規(guī)劃好了必要的服務(wù))。
自下而上開發(fā)方法的主要弱點(diǎn)是,在軟件設(shè)計(jì)過(guò)程中,它把軟件作為一種后添加的事物,盡管有越來(lái)越多的系統(tǒng)功能依賴于軟件,而不是硬件。整合在這個(gè)過(guò)程中發(fā)生的非常晚,從而難以發(fā)現(xiàn)由硬件、設(shè)計(jì)或者架構(gòu)引入的錯(cuò)誤。在許多情況下,開發(fā)商不得不重新考慮他們的設(shè)計(jì)以降低時(shí)間成本和預(yù)算。
![](http://editerupload.eepw.com.cn/fetch/20160912/304726_1_0.jpg)
隨著軟件的復(fù)雜度達(dá)到了新的高度,并且固定程序被證明是付運(yùn)的主要障礙,以硬件為中心方法的低效和不實(shí)用正在變得越來(lái)越明顯。開發(fā)商如何才能戰(zhàn)略性重新思考自己的發(fā)展方法以至于使得他們不再受到硬件的擺布?軟件開發(fā)商在系統(tǒng)階段如何能夠較早的進(jìn)入系統(tǒng)設(shè)計(jì)?這就是虛擬化出現(xiàn)的原因。
虛擬化的先驅(qū)
虛擬化技術(shù)用于嵌入式設(shè)備開發(fā)已經(jīng)好幾年,既作為實(shí)際硬件的替代,也作為復(fù)雜系統(tǒng)的設(shè)計(jì)和調(diào)試平臺(tái)。在硬件設(shè)計(jì)產(chǎn)業(yè),仿真已經(jīng)用于插口和PCB 階段。無(wú)論是設(shè)計(jì)處理器,PCB或者SOC,硬件開發(fā)商可以使用仿真工具,像Mentor、Cadence和Synposys,以建立模型和預(yù)測(cè)他們系統(tǒng)的行為,而無(wú)需等候真實(shí)物理系統(tǒng)開發(fā)出來(lái)。
嵌入式設(shè)備之外,我們看到了許多產(chǎn)業(yè)在使用傳統(tǒng)方法碰壁后運(yùn)用虛擬化方法取得成功。在過(guò)去兩年里,服務(wù)器虛擬化已經(jīng)通過(guò)提高數(shù)據(jù)中心效率和降低總體成本方面取得了很大的進(jìn)展。虛擬化已經(jīng)解決了這種持續(xù)的挑戰(zhàn),包括服務(wù)器擴(kuò)散、CPU利用不充分和應(yīng)用分離。
仿真同時(shí)被引入了許多產(chǎn)業(yè),如航空航天和國(guó)防,應(yīng)用在他們自己的軟件開發(fā)中。通常,這些行業(yè)需要如此復(fù)雜的設(shè)計(jì),以至于等待了一年或者更多年后才知道硬件是行不通的。隨著點(diǎn)解決方案、設(shè)計(jì)復(fù)雜度基本上授權(quán)給這些公司投入資源在國(guó)內(nèi)開發(fā)虛擬化軟件解決方案,仿真已經(jīng)在國(guó)內(nèi)發(fā)展起來(lái)了。
嵌入式軟件開發(fā)行業(yè)正處在一個(gè)既不是傳統(tǒng)的、以硬件為中心的開發(fā)方法,也不是內(nèi)部的點(diǎn)上,一次過(guò)的虛擬軟件開發(fā)解決方案在這個(gè)競(jìng)爭(zhēng)激烈的市場(chǎng),必須能夠提供快速的產(chǎn)品上市時(shí)間、節(jié)約成本和質(zhì)量保證。嵌入式設(shè)備中軟件內(nèi)容的角色沒(méi)有任何下降的趨勢(shì),多核器件的增長(zhǎng)將前所未有的復(fù)雜性加入到了硬件和軟件中。必然走向多核設(shè)計(jì),只需強(qiáng)調(diào)對(duì)軟件開發(fā)解決方案需求,從而能夠充分利用多核設(shè)備的潛在性能。
當(dāng)前的嵌入式軟件開發(fā)已經(jīng)使公司戰(zhàn)略地重新審視和反思自己的過(guò)程是必要的,不僅僅在設(shè)備階段,還要在過(guò)程設(shè)計(jì)階段 。我們可以從中知道硬件產(chǎn)業(yè)確實(shí)需要仿真,但是我們也需要虛擬化,更進(jìn)一步說(shuō),作為一個(gè)基礎(chǔ)的、根本的設(shè)施引入到我們自己的產(chǎn)業(yè)中。
虛擬化軟件開發(fā)是一個(gè)產(chǎn)品發(fā)展戰(zhàn)略,它可以將軟件開發(fā)從依賴于物理硬件(在其上,應(yīng)用將被部署)解放出來(lái)。相反,虛擬化軟件開發(fā)使得軟件開發(fā)商可以直接在桌面上進(jìn)行開發(fā),制造出一個(gè)真實(shí)的共同發(fā)展戰(zhàn)略,這樣,硬件和軟件開發(fā)可以同時(shí)進(jìn)行。軟件/硬件集成是前端的優(yōu)先,而不是后端的急于求成。
虛擬化軟件的開發(fā)使得開發(fā)者制造了高性能,功能準(zhǔn)確的硬件模型,可以使得他們?cè)谙到y(tǒng)開發(fā)過(guò)程中盡早地開始調(diào)試、測(cè)試和優(yōu)化系統(tǒng)。虛擬技術(shù)可以用于不同程度的細(xì)節(jié),從處理器到板級(jí)到設(shè)備,在這樣的精度水平,二進(jìn)制代碼可以不變運(yùn)行且不會(huì)伴隨任何行為上的分歧。
物理硬件測(cè)試過(guò)程中,高性能虛擬平臺(tái)不同程度的控制是不可能的。必然的,當(dāng)同樣的條件應(yīng)用,軟件往往以相同的方式執(zhí)行的固有性質(zhì)成為了虛擬測(cè)試的一個(gè)實(shí)際。隨著處理器和硬件在復(fù)雜度上的提高,必然也就意味著在操作的過(guò)程中沒(méi)有其他的改變不是由于軟件的追蹤缺陷造成的,而是由硬件引起的往往難以察覺(jué)的變化,這個(gè)變化也就產(chǎn)生了所謂的“海森堡蟲子”(Heisenbug),依賴于細(xì)小的時(shí)鐘干擾的狀態(tài)有的時(shí)候是不可能復(fù)制的,甚至是在整個(gè)系統(tǒng)反復(fù)重新運(yùn)行過(guò)程中。仿真基礎(chǔ)設(shè)施背后的虛擬平臺(tái)使得開發(fā)者可以單步驟或者停止系統(tǒng)來(lái)檢查他們的內(nèi)部轉(zhuǎn)臺(tái)。開發(fā)者可以在仿真多核處理器內(nèi)核和每個(gè)內(nèi)核的多個(gè)過(guò)程中不斷的復(fù)制一個(gè)錯(cuò)誤,從而使得多核處理器調(diào)試就像調(diào)試一個(gè)單一處理器的單一程序一樣簡(jiǎn)單。
評(píng)論