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