陸地、海洋和空中軍事嵌入式系統(tǒng)的持續(xù)成功取決于修改系統(tǒng)以滿足新興需求的能力。隨著時間的推移,對基于軟件的系統(tǒng)累積的修改會導(dǎo)致該系統(tǒng)的性能下降。最終,由此產(chǎn)生的性能下降使系統(tǒng)開發(fā)人員可以選擇放棄計劃的新功能或更換硬件并接受早期過時。還有另一種選擇。自動性能測量和時序分析技術(shù)為開發(fā)人員提供了優(yōu)化累積修改導(dǎo)致的大部分性能下降的工具,從而避免放棄功能或過早過時。
軍事嵌入式系統(tǒng)在其生命周期中通常會多次增強。其中許多增強功能都是軟件更新。隨著時間的推移,軟件更新累積起來增加了對計算平臺的需求。這可能導(dǎo)致硬件的功能不足以滿足應(yīng)用程序需求,并可能導(dǎo)致間歇性故障。
然后,系統(tǒng)開發(fā)人員面臨著艱難的選擇,要么放棄計劃的新功能,導(dǎo)致功能衰減,要么更換硬件(即早期過時)。
一個可行的替代方案需要確定高影響、低風(fēng)險的策略來優(yōu)化軟件,從而最大限度地延長計算平臺的使用壽命。此替代方案包括自動性能測量和時序分析。
性能問題
軍用嵌入式系統(tǒng),尤其是航空電子系統(tǒng),如BAE系統(tǒng)鷹的任務(wù)控制計算機,通常是實時嵌入式系統(tǒng)。實時系統(tǒng)是不同的,因為它們的正確行為既取決于其操作在邏輯上是否正確,也取決于執(zhí)行這些操作的時間。開發(fā)這些系統(tǒng)的工程師必須能夠提供令人信服的證據(jù),證明軟件始終在其時間限制內(nèi)執(zhí)行。
軟件的本質(zhì)意味著每次執(zhí)行時,它都可能采用不同的代碼路徑,從而導(dǎo)致不同的執(zhí)行時間。即使以相同的方式使用系統(tǒng),內(nèi)部狀態(tài)的差異也可能意味著用戶看到的執(zhí)行時間差異很大。正因為如此,完全有可能在不發(fā)現(xiàn)任何時序問題的情況下嚴(yán)格測試軟件,然后在實際使用中遇到導(dǎo)致重大時序問題的情況。因此,為了確保系統(tǒng)始終滿足其執(zhí)行時間,有必要建立其最壞情況執(zhí)行時間(WCET),這也是DO-178B的考慮因素。
查找最壞情況的執(zhí)行時間
測量是一種通常用來獲得實時系統(tǒng)定時行為置信度的方法。為了測量時序,工程師通常將檢測點放在他們想要測量的代碼段的開頭和結(jié)尾。這些點通過切換輸出端口(通過示波器或邏輯分析儀監(jiān)控)或通過讀取片內(nèi)定時器并將生成的時間戳記錄在存儲器中來記錄經(jīng)過的時間。
遺憾的是,這些高水位線可能無法反映代碼執(zhí)行所需的最長時間。當(dāng)測試尚未執(zhí)行通過代碼的最長路徑時,就會發(fā)生這種情況,如圖 1 所示。運行兩個測試,如圖 1 所示,由綠色路徑和藍(lán)色路徑表示。從這些測試中觀察到的執(zhí)行時間分別為 110 和 85。盡管這些測試執(zhí)行了軟件中的所有代碼,但仍有第三條路徑(以紅色顯示),其執(zhí)行時間為 140,使其成為最長路徑。
圖1:執(zhí)行路徑:高水位線可能不反映代碼執(zhí)行可能需要的最長時間。當(dāng)測試尚未執(zhí)行通過代碼的最長路徑時,會發(fā)生這種情況。

此示例表明,僅執(zhí)行所有代碼不足以執(zhí)行最長路徑。對于非平凡的代碼,很難設(shè)計出肯定會使代碼沿著最長路徑行駛的測試。通過在代碼中的每個決策點添加檢測點,可以避免這種情況。每當(dāng)執(zhí)行檢測點時,都會記錄其 ID 和時間戳。在系統(tǒng)上運行一系列測試會導(dǎo)致創(chuàng)建計時跟蹤。將跟蹤中的計時信息與有關(guān)代碼結(jié)構(gòu)的信息相結(jié)合,可以查找有關(guān)軟件計時行為的信息,包括 WCET 的預(yù)測。
對于可能涉及數(shù)百萬行代碼的典型軍事應(yīng)用,手動檢測程序?qū)⒎浅YM力;此外,通常生成的跟蹤數(shù)據(jù)量使得手動嘗試將跟蹤數(shù)據(jù)與程序結(jié)構(gòu)信息相結(jié)合變得不可行。幸運的是,程序檢測、跟蹤處理、將跟蹤數(shù)據(jù)與程序結(jié)構(gòu)信息相結(jié)合以及數(shù)據(jù)挖掘/表示等任務(wù)都可以實現(xiàn)自動化。Rapita Systems 的 RapiTime 是一種自動化性能測量和時序分析技術(shù),有助于解決獲取以 C、C++ 或 Ada 實現(xiàn)的大型軍事嵌入式系統(tǒng)的詳細(xì)時序信息的挑戰(zhàn)。
性能優(yōu)化
了解 WCET 只是解決方案的一部分:當(dāng)面臨軟件組件超出其執(zhí)行時間預(yù)算的問題時,必須采取系統(tǒng)、科學(xué)的方法來優(yōu)化組件的性能。
軟件性能優(yōu)化需要回答三個問題:
優(yōu)化的最佳位置在哪里?
建議的優(yōu)化是否在改進?
可以做出多大的改進?
優(yōu)化的最佳位置在哪里?
在典型的復(fù)雜應(yīng)用中:
(1)大多數(shù)子程序?qū)嶋H上并不處于最壞情況的路徑上;它們對最壞情況的執(zhí)行時間沒有任何貢獻(xiàn)。優(yōu)化這些子計劃根本不會減少WCET。
(2)許多子計劃對WCET的貢獻(xiàn)很小,因此不能代表優(yōu)化的良好候選者。優(yōu)化這些子計劃所付出的努力不會構(gòu)成對資源的有效利用。
(3)少數(shù)子計劃占整個WCET的很大一部分(圖2)。因此,子程序是優(yōu)化的潛在候選者。
圖2:分項計劃對整個WCET的累計貢獻(xiàn)

通過檢查WCET信息,工程師可以輕松識別相對較少的組件,在這些組件中,優(yōu)化可能會對整體最壞情況的執(zhí)行時間產(chǎn)生重大影響。
我在改進事情嗎?
有時,試圖通過猜測最壞情況的熱點在哪里,優(yōu)化該代碼,然后查看效果來縮短分析過程是很誘人的。然而,軟件優(yōu)化的經(jīng)驗告訴我們,即使是對他們的代碼有深入了解的高技能軟件工程師,如果不訪問詳細(xì)的時間信息,也幾乎不可能確定WCET的重要貢獻(xiàn)者,從而確定優(yōu)化的最佳候選者。
通常看起來如此明顯 - “一定是進行所有這些浮點計算的代碼部分是優(yōu)化的最佳候選者” - 而實際上,一些看似無害的賦值隱藏了一個幾乎占用所有時間的內(nèi)存副本。這個問題的答案很簡單:不要猜測,測量。然后重復(fù)測量以量化改進(或缺乏改進)。
可以做出多大的改進?
表 1 顯示了通過簡單的軟件優(yōu)化過程可以獲得的最壞情況執(zhí)行時間的改進水平。這些結(jié)果是使用RapiTime技術(shù)在BAE系統(tǒng)鷹的任務(wù)計算機上提供詳細(xì)的計時信息來實現(xiàn)的。這些優(yōu)化導(dǎo)致WCET總體下降了23%。
表 1:BAE系統(tǒng)鷹任務(wù)計算機的優(yōu)化改進

WCET 和性能優(yōu)化的好處
在軍事嵌入式系統(tǒng)修改期間訪問自動性能測量和詳細(xì)的時序分析可以為開發(fā)人員提供許多優(yōu)勢:
1. 采用系統(tǒng)科學(xué)的方法獲取系統(tǒng)定時行為的信心。
2. 有關(guān)最壞情況執(zhí)行時間的詳細(xì)信息可以快速確定優(yōu)化的候選對象。
3. 自動測量可以評估候選優(yōu)化的有效性。
能夠進行最佳時序優(yōu)化意味著避免不必要地過時硬件,并消除放棄計劃的新功能或更換硬件并接受早期過時的需求。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5203文章
20549瀏覽量
335773 -
存儲器
+關(guān)注
關(guān)注
39文章
7745瀏覽量
171994 -
計算機
+關(guān)注
關(guān)注
19文章
7823瀏覽量
93335
發(fā)布評論請先 登錄
STM32開發(fā)中的五大嵌入式系統(tǒng)
什么是嵌入式應(yīng)用開發(fā)?
arm嵌入式主板優(yōu)缺點
C語言單元測試在嵌入式軟件開發(fā)中的作用及專業(yè)工具的應(yīng)用
嵌入式和FPGA的區(qū)別
嵌入式系統(tǒng)的定義和應(yīng)用領(lǐng)域
嵌入式實時操作系統(tǒng)的特點
嵌入式軟件測試與專業(yè)測試工具的必要性深度解析
嵌入式工程師為什么要學(xué)QT?
盤點嵌入式就業(yè)所需要的技能有哪些?
普源示波器MSO5074在嵌入式系統(tǒng)聯(lián)合調(diào)試中的高效實踐
自動性能測量和時序分析有助于軍事嵌入式系統(tǒng)避免過早過時
評論