軍事應用中的嵌入式系統(tǒng)由于其較長的使用壽命和使用過程中經(jīng)歷的要求變化,特別容易出現(xiàn)軟件老化,這可能導致性能下降。反過來,這可能會導致昂貴的計劃外硬件升級。避免這些升級的一種方法是對過時的軟件應用優(yōu)化。
與其他關鍵的實時嵌入式系統(tǒng)不同,軍用航空電子系統(tǒng)的使用壽命長達數(shù)十年,在此期間,它們會定期更新。這些定期更新產(chǎn)生于計劃中的變革,也產(chǎn)生于為滿足不斷變化的軍事需求而對業(yè)務要求的改變。
變化(在初始設計中無法預測)與多年來發(fā)生的升級相結合,不可避免地導致軟件對底層計算平臺的需求增加。這種需求的增加可能導致性能下降和由于時序超支而導致的間歇性故障。避免這種情況的一種方法是頻繁、昂貴的硬件升級。
另一種方法依賴于自動檢測舊軟件中的“時序優(yōu)化機會”。這種時序優(yōu)化方法也可以在舊版軟件環(huán)境中工作。
軟件老化:神話還是事實?
最初,軟件老化似乎是一種矛盾:一旦編寫了代碼,它就不會物理降級 - 不像硬件,硬件受隨機物理過程的影響,導致組件的性能隨著時間的推移而下降。
當然,前者是基于軟件不會改變的假設。在長期存在的軍事系統(tǒng)中,這可能是一個不真實的假設:作戰(zhàn)需求將發(fā)生變化,而這些變化將不可避免地導致軟件老化。
軟件老化影響冗長的項目主要有四個原因:
在很長的項目過程中,建筑設計決策背后的基本原理將消失在時間的迷霧中。
隨著越來越多的決策與原始架構不一致,軟件的原始“形狀”就會丟失。
軟件開發(fā)中不斷變化的時尚將把架構拉向不同的方向。
即使使用最好的架構,也不可能提前預測可能需要的所有可能的更改。
這種軟件老化的凈效應是軟件性能會隨著時間的推移而下降。
軟件引起的硬件過時
在過去的四十年中,一個默認的假設是電子/計算性能不可避免地會隨著時間的推移而提高。這種“現(xiàn)實”導致定期硬件升級被內(nèi)置到軍事系統(tǒng)等長期運行的程序中,目的是利用性能改進。
與這些周期性的性能改進相抵觸的是軟件老化問題:功能要求增加,功能增益很少。當軟件老化導致除了計劃的升級之外還需要額外的硬件升級時,就會發(fā)生軟件引起的硬件過時。
推回時間的蹂躪
計劃外升級的替代方法是提高軟件性能,這是通過仔細優(yōu)化來實現(xiàn)的。在實時系統(tǒng)的情況下,這通常側重于最壞情況下的性能,或軟件執(zhí)行給定功能所需的最長時間。
在理想情況下,優(yōu)化可以通過采用現(xiàn)有架構并根據(jù)新需求將其重構為更高效的結構來實現(xiàn)。鑒于軟件老化導致軟件架構不可避免的退化,這需要對整個系統(tǒng)進行廣泛的重新開發(fā)不太可能是一個可接受的選擇。相反,優(yōu)化必須是一種更“機會主義”的活動——在沒有對底層架構有深刻理解的情況下識別改進并應用它們。
優(yōu)化遵循三個主要步驟:
確定貢獻(確定代碼庫中的哪個位置可以集中優(yōu)化工作)。
優(yōu)化(確定現(xiàn)有代碼的替代方案)。
沖洗并重復(測量改進,如果有的話,并繼續(xù)直到工作完成)。
確定貢獻
在決定將優(yōu)化工作重點放在何處時,最重要的一個因素是了解每個軟件組件對整體系統(tǒng)性能的貢獻。
這里的“貢獻”用于表示執(zhí)行特定代碼段所花費的時間百分比。它來自兩個值:代碼段的最長執(zhí)行時間和執(zhí)行次數(shù)。
查找特定模塊的貢獻依賴于首先通過代碼找到最壞情況的路徑,然后查看每個代碼子程序在該路徑上花費的時間。(請參閱圖 1。
圖1:按子計劃劃分的最壞情況執(zhí)行時間(WCET)的貢獻。
如圖所示,有些代碼對最壞情況的路徑?jīng)]有貢獻,而有些代碼的貢獻很小;第三,還有一些代碼做出了重大貢獻。正是最后一個類別提供了優(yōu)化的最佳候選者。
不建議嘗試通過手動檢查代碼來確定優(yōu)化的候選對象,因為這會耗費大量精力,并可能導致浪費優(yōu)化工作;例如,通過嘗試優(yōu)化屬于“無貢獻”類別的代碼。最好的方法是通過測量代碼的執(zhí)行時間來識別優(yōu)化候選者。
優(yōu)化,確定替代方案
一旦確定了優(yōu)化候選對象,下一步就是優(yōu)化它們。這項活動是整個過程的核心,依賴于工程團隊的技能和經(jīng)驗。
優(yōu)化的一個重要來源是在最壞情況下多次執(zhí)行的模塊。每個可以刪除此類代碼的循環(huán)都受益于對整個路徑的乘數(shù)效應。
沖洗并重復
進行優(yōu)化后,有必要再次測量執(zhí)行時間。此步驟將確定系統(tǒng)現(xiàn)在是否滿足其性能目標。
如果在此階段仍需要進一步改進,則重復識別優(yōu)化候選者的練習可能會出現(xiàn)新的位置來集中優(yōu)化工作。
上述三個步驟中的兩個需要測量代碼的最壞情況執(zhí)行時間。
通常,測量執(zhí)行時間涉及:
將測量點(也稱為檢測)添加到源代碼。
收集測量值。
分析測量值。
對于大型系統(tǒng),這很快就會成為一項耗時的活動。通過內(nèi)部開發(fā)的工具支持或通過RapiTime等商業(yè)工具,可以大大減少上述三項活動所需的工作量。
將此類工具支持集成到構建-測試過程中意味著可以在每個構建-測試周期中自動進行時序測量。這使設計人員能夠查看優(yōu)化活動在每一步中的進展情況,而不是等待優(yōu)化活動結束。
遺留系統(tǒng)呢?
許多需要優(yōu)化的系統(tǒng)將屬于“遺留系統(tǒng)”類別:其年齡意味著在軟件工具和連接到它們的硬件方面對計算平臺的支持有限。
處理此類系統(tǒng)的一個關鍵方面是時序分析方法的靈活性。例如,可能無法使用新式調試接口或其他特定硬件接口。因此,進行定時測量的方法必須能夠適應可用的設施。同時,必須盡可能減少任何檢測代碼的影響,以避免在測量活動期間耗盡資源(例如,內(nèi)存或 CPU 容量)。
軍用航空電子系統(tǒng)軟件不可避免地會“老化”,這可能導致昂貴的計劃外硬件升級。另一種方法是優(yōu)化老化的軟件,這只能通過測量、優(yōu)化和審查程序來實際執(zhí)行。
自動測量軟件性能可最大程度地減少所涉及的工作量,并且還允許測量以展示軟件性能的增量改進。
審核編輯:郭婷
-
嵌入式
+關注
關注
5089文章
19169瀏覽量
306757 -
航空電子
+關注
關注
15文章
492瀏覽量
45290
發(fā)布評論請先 登錄
相關推薦
評論