工程師的煩惱: 如何估算應(yīng)用程序運(yùn)行時(shí)的功耗
掃描二維碼
隨時(shí)隨地手機(jī)看文章
軟件應(yīng)用程序開(kāi)發(fā)人員–還有那些坐在自家客廳沙發(fā)上使用筆記本電腦的開(kāi)發(fā)人員–他們?cè)撊绾喂浪闫鋺?yīng)用程序運(yùn)行在目標(biāo)設(shè)備時(shí)的功耗?這是目前的一個(gè)大問(wèn)題(很顯然是一件讓iPhone和黑莓用戶覺(jué)得很痛苦的事情),并且未來(lái)這個(gè)問(wèn)題只會(huì)越來(lái)越難解決。軟件工程師們可能會(huì)認(rèn)為這不是他們的事。他們只管編寫(xiě)代碼,然后把問(wèn)題推給硬件工程師,而事實(shí)上硬件工程師解決問(wèn)題的能力也是有限的。
可以肯定的是,隨著越來(lái)越高等級(jí)的抽象模型的使用-這樣工程師可以仿真某些應(yīng)用程序或函數(shù),硬件/軟件協(xié)同設(shè)計(jì)環(huán)境最終將成為'新的領(lǐng)域'。當(dāng)然,需要用到新工具來(lái)考慮到這些因素。但總的來(lái)說(shuō),這些工具可能仍需要幾年時(shí)間才能被用到工程師的工作平臺(tái),更別說(shuō)(被用到)那些在家干活的開(kāi)發(fā)人員的軟件開(kāi)發(fā)工具包。
在理想的情況下,如果可以創(chuàng)建高層模型,將其突破對(duì)硬件的RTL描述至事務(wù)級(jí),那么就可以捕獲硬件信息并傳送給軟件應(yīng)用,不管其是否包含功耗、軟件領(lǐng)域或類似的信息。然后,工程師們可以清楚軟件的影響,并相應(yīng)地修改硬件,Apache Design Solutions公司RTL業(yè)務(wù)部門(mén)高級(jí)副總兼總經(jīng)理Vic Kulkarni表示。 “但現(xiàn)在情況反過(guò)來(lái)了:因?yàn)橛布こ處熓褂玫挠布寤ò碎T(mén),然后軟件開(kāi)發(fā)人員并不是真的了解這個(gè)硬件能做些什么。”
Cadence Design Systems公司解決方案市場(chǎng)營(yíng)銷總監(jiān)Pete Hardee指出,現(xiàn)在的智能手機(jī)是匯聚性設(shè)備,智能手機(jī)的計(jì)算能力與近期的獨(dú)立器件不相上下。 “現(xiàn)在的智能手機(jī)的處理能力可以媲美四、五年前的主流個(gè)人電腦或筆記本電腦”;智能手機(jī)所具備有的視頻功能,機(jī)頂盒也是在早兩年前才有;高清視頻和3~500萬(wàn)像素的攝像頭。與此同時(shí),正是由于硬件技術(shù)在過(guò)去取得了巨大飛躍(仍明顯遵從摩爾定律),并且軟件生產(chǎn)力的飛躍實(shí)際上已經(jīng)超越了摩爾定律,這才使得手機(jī)能具備上述強(qiáng)大功能。沒(méi)有取得進(jìn)步的是古老的電池技術(shù)。因此,我們現(xiàn)在還是用鋰離子電池。設(shè)計(jì)師竭盡所能地利用電池的能量,但我們基本的期望仍是手機(jī)至少能支撐一個(gè)完整的工作日,能挨到回家后再給手機(jī)充電。”
當(dāng)然,這要取決于你用手機(jī)做些什么,但底線是這一切都由軟件控制。 “當(dāng)分析功率時(shí),它不僅僅是關(guān)于硬件的特征。你還需要運(yùn)行一系列系統(tǒng)模式,這些系統(tǒng)模式用于抽象地表征工作量最大的情況-此時(shí)會(huì)要用到所有應(yīng)用程序,以及工作量較少的情況-此時(shí)很閑(不需使用多個(gè)應(yīng)用程序),并且還要在這些系統(tǒng)模式之間做切換,這樣我才能知道什么時(shí)候可以對(duì)設(shè)備的某些部件斷電,什么時(shí)候不能這么做”,Hardee表示。
現(xiàn)今許多芯片公司要面臨的挑戰(zhàn)是需要仿真30個(gè)不同的系統(tǒng)模式。此外,他們還要煞費(fèi)苦心地測(cè)量所有這些模式、芯片的各個(gè)部件的帶寬,并且要非常清楚電源管理系統(tǒng)究意是如何處理:那些可以放緩、那些需要加速,從而使其可以斷電更長(zhǎng)時(shí)間。所有這些不同的模式都需要測(cè)量。 “估算運(yùn)行真實(shí)軟件的真實(shí)系統(tǒng)工作的功率成了一個(gè)大問(wèn)題,并且只有極少極少的解決方案可以做到這一點(diǎn),”他表示。目前普遍的看法是傾向于用虛擬平臺(tái)來(lái)做(功率)測(cè)量,但Hardee認(rèn)為虛擬平臺(tái)太過(guò)于抽象而不能夠測(cè)量功率的影響。 “一旦你真的需要知道在硬件中實(shí)現(xiàn)的電源模式,那么你就需要運(yùn)行在一定的精度,而這將會(huì)減慢虛擬平臺(tái)。”公平地說(shuō),Cadence公司的方案也的確包含有虛擬平臺(tái)直達(dá)其事務(wù)級(jí)仿真器,并且將ARM公司的快速處理器模型和其它各種型號(hào)的處理器整合在一起,但該公司側(cè)重于其基于硬件的仿真系統(tǒng)-用于電源敏感類仿真。
Mentor Graphics公司ESL市場(chǎng)開(kāi)發(fā)經(jīng)理Shabtay Matalon認(rèn)為,工程師已經(jīng)熟悉了抽象的概念,他們從抽象gates(門(mén)級(jí))-RTL開(kāi)始,目前有用SystemC(一種系統(tǒng)級(jí)建模語(yǔ)言)和事務(wù)級(jí)建模對(duì)更高級(jí)RTL功能進(jìn)行抽像。 “人們現(xiàn)在意識(shí)到,通過(guò)創(chuàng)建一個(gè)模型,雖然這個(gè)模型沒(méi)有包含全部信息但包含了取得時(shí)序概念所需要的足夠信息,但這樣你也可以將時(shí)序抽象。但人們可能不知道的是,我們可以創(chuàng)建一個(gè)可供軟件工程師使用的模型,這個(gè)模型包含將電源抽像一直到ESL或TLM”。該模型將功率與流經(jīng)這些事務(wù)級(jí)模型的流量聯(lián)系起來(lái)。這些模型在被創(chuàng)建后可以被縫合在一起,Matalon表示。這些模型可以是外圍設(shè)備模型、處理器模型或設(shè)備模型,并且可以縫合在一起生成一個(gè)可以運(yùn)行應(yīng)用軟件的平臺(tái)。
Synopsys公司低功耗解決方案組的技術(shù)市場(chǎng)總監(jiān)Cary Chin認(rèn)為,虛擬平臺(tái)是通往高級(jí)層的解決方法。 “有很多非常好的方法通過(guò)一個(gè)虛擬平臺(tái)來(lái)鉤住軟件堆棧。但我仍然認(rèn)為,從虛擬平臺(tái)向下通過(guò)高級(jí)RTL的連接仍然有一點(diǎn)不連貫,因?yàn)橛泻芏嘁匦枰l(fā)生以便將這些環(huán)境連接在一起。”盡管,這里需要回答的大問(wèn)題是:我們有多希望讓軟件開(kāi)發(fā)人員來(lái)直接控制硬件,Cary Chin表示。這基本上直接反對(duì)信息隱藏(模塊之間通過(guò)其API通信,一個(gè)模塊不需要知道另外一個(gè)模塊的內(nèi)部情況)的觀點(diǎn)。
“在軟件開(kāi)發(fā)環(huán)境下,我們?cè)噲D隱藏事物,因?yàn)橛行┦挛镂覀儗?shí)事上無(wú)法在高級(jí)別Vs.低級(jí)別的情況下做出更好的決定。當(dāng)你從軟件領(lǐng)域跨越到硬件領(lǐng)域時(shí),這些概念也會(huì)隨之而來(lái),因此,非常難以判斷。你希望能編寫(xiě)一款可在各個(gè)開(kāi)發(fā)環(huán)境之間轉(zhuǎn)移的軟件或類似的東西,但如果你將其與某個(gè)特定的硬件平臺(tái)緊密聯(lián)系在一起,那么事情就會(huì)變得非常困難。
教育軟件開(kāi)發(fā)人員
“有了這一切,仍然有可能寫(xiě)不出好軟件,因?yàn)閿?shù)據(jù)使用的效率非常低—例如,也許有些(情況下)會(huì)不必要地持續(xù)刷新液晶屏,” Hardee表示。 “人們?nèi)绾潍@得反饋,真正歸結(jié)于那些由手機(jī)制造商或網(wǎng)絡(luò)運(yùn)營(yíng)商(Sprint有一個(gè)應(yīng)用程序開(kāi)發(fā)網(wǎng)絡(luò))提供的應(yīng)用開(kāi)發(fā)工具包。使用Android的手機(jī)有一個(gè)開(kāi)發(fā)系統(tǒng)??梢跃瓦@些開(kāi)發(fā)工具包中的不良的優(yōu)化、不好的內(nèi)存用法等等向用戶提供反饋。”
該解決方案的一部分可能是一個(gè)產(chǎn)業(yè)鏈或合作型方案。“從硬件方面來(lái)看,[EDA供應(yīng)商]與蘋(píng)果或谷歌這類公司在某些方面展開(kāi)合作以真正地將他們的開(kāi)發(fā)工具包向下擴(kuò)展的想法可能實(shí)際上和努力搭建一樣有意義,因?yàn)槟切┤耸稚嫌泻芏噘Y源并且他們能就在中間層會(huì)合幫不少忙”,Chin進(jìn)一步補(bǔ)充道。
但這仍不能解決其中的一個(gè)大問(wèn)題,那就是存在于軟件和硬件之間的巨大鴻溝。 “硬件領(lǐng)域和軟件領(lǐng)域之間的鴻溝比前端設(shè)計(jì)和后端設(shè)計(jì)之間的鴻溝更大。硬件設(shè)計(jì)和軟件設(shè)計(jì)目前并沒(méi)有真正地銜接好,并且最終會(huì)有在某種意義上人們可以想到的不同等級(jí)的抽象,如果你從軟件開(kāi)發(fā)的角度來(lái)看。有高級(jí)編程語(yǔ)言C / C + +,有低級(jí)編程語(yǔ)言匯編代碼”,Apache Design Solutions公司產(chǎn)品工程和應(yīng)用高級(jí)主管Will Ruby指出。至少有些(問(wèn)題)在短期內(nèi)可以使用模型來(lái)處理,但有些也需要用到智能編譯器這樣的新技術(shù)。“匯編實(shí)際上更接近硬件,但人們通常不會(huì)用匯編語(yǔ)言來(lái)寫(xiě)程序,除非他們是在處理嵌入式編程。硬件的概念需要轉(zhuǎn)移到C/C + +或Java類的開(kāi)發(fā)環(huán)境。模式就是在那出現(xiàn)的。我們需要模型來(lái)表征硬件行為,但我想我們同樣還需要像一個(gè)類似智能編譯器的東西,這樣就能利用其中這些硬件勾子的某些優(yōu)勢(shì),并且了解當(dāng)你在為某個(gè)手機(jī)應(yīng)用程序編程的時(shí)候,會(huì)需要在針對(duì)性能或功耗編譯之間做取舍。硬件工程師們一直在考慮這個(gè)問(wèn)題,但對(duì)軟件工程師們而言這不是一件容易的事。因此,編譯器可能需要涉及這個(gè)方向。編譯器需要對(duì)解件敏感,并且需要了解硬件正在做什么”,他總結(jié)道。