公務(wù)員期刊網(wǎng) 論文中心 正文

飛控計算機實時性與優(yōu)化方法分析

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了飛控計算機實時性與優(yōu)化方法分析范文,希望能給你帶來靈感和參考,敬請閱讀。

飛控計算機實時性與優(yōu)化方法分析

摘要:飛控計算機必須及時將飛行員的飛行控制信息傳遞給飛行控制,以控制飛行中的飛機,因此時間是飛控計算機定義的重要組成部分。分析了飛控計算機的實時性標準,研究了基于硬件輔助、純軟件的性能分析方法的利弊,提出結(jié)合使用源代碼工具和硬件數(shù)據(jù)收集來實現(xiàn)高精準性能分析方法。根據(jù)分析信息,識別出飛控計算機實時性中的“短板”,提出性能分析和算法改進、代碼對接這兩種優(yōu)化方法的應(yīng)用。

關(guān)鍵詞:飛控計算機;實時性標準;實時性分析;實時性優(yōu)化

引言

飛控計算機作為飛行控制系統(tǒng)中的核心部件,主要負責接收信息、控制律計算、生成伺服系統(tǒng)控制指令等功能。如果飛控計算機在幾微秒內(nèi)未響應(yīng)飛行員的命令,則飛機可能發(fā)生災(zāi)難性的故障。因此時間是飛控計算機定義的重要組成部分。本文旨在基于軟件性能分析技術(shù)研究飛控計算機的實時性問題和相關(guān)的解決方案,并研究了如何利用軟件性能工程原理將性能構(gòu)建到飛控計算機的應(yīng)用程序中,以提高飛控計算機的實時性。

1飛控計算機的實時性標準

飛控計算機的實時性并不意味著如光一樣的快,實時性性能標準僅僅是其定義的關(guān)鍵部分,以至于當不滿足這些性能標準時,就認為該飛控計算機已發(fā)生故障。其定義包括諸如“應(yīng)比其前代產(chǎn)品快兩倍的速度”或“將盡可能快地處理傳入消息”的性能標準不屬于飛控計算機的實時性標準。此處的性能標準過于主觀,無法獲得任何實時目標的可信度。飛控計算機的性能標準更可能定義為“飛行員輸入與飛行控制面完全運動之間的響應(yīng)時間應(yīng)不少于16ms,并且不應(yīng)超過20ms”,在此定義中,明確規(guī)定了衡量實時性能成功的標準。飛控計算機實時性定義通常還明確如果不滿足這些目標,則需要哪種類型的故障糾正。大多數(shù)實時系統(tǒng)存在于環(huán)境對其施加性能標準的世界中,這些標準可能由物理或邏輯約束條件確定。飛控計算機的實時性由物理約束確定:其必須及時將飛行員的飛行控制信息傳遞給飛行控制,以控制飛行中的飛機[1]。飛控計算機的運行環(huán)境及其相互作用的速率決定了飛控計算機的實時性標準。

2飛控計算機實時性構(gòu)建

飛控計算機的性能目標為必須及時將飛行員的飛行控制信息傳遞給飛行控制系統(tǒng),以控制飛行中的飛機。飛控計算機硬件和軟件各有分工,其硬件平臺在實現(xiàn)數(shù)據(jù)收發(fā)、提供計算資源等的基本功能外,還采用冗余架構(gòu)保證飛控計算機的可靠性和安全性。飛控計算機軟件實現(xiàn)數(shù)據(jù)處理、數(shù)據(jù)融合、控制律計算、控制指令生成等功能。由于功能分工和軟件與環(huán)境交互的緊密相關(guān)性,飛控計算機的實時性要求主要體現(xiàn)在軟件上。因此為構(gòu)建飛控計算機的實時性,提升飛控計算機軟件實時性顯得至關(guān)重要。通常有兩種方法可實現(xiàn)軟件性能。第一種是從一開始就在軟件中建立性能;另一種方法是在功能正確的情況下分析代碼的性能以進行所需的改進。飛控計算機軟件實時性構(gòu)建一般采用軟件性能工程方法,軟件性能工程(SPE)是一種用于構(gòu)建軟件系統(tǒng)以滿足系統(tǒng)性能目標的方法。飛控計算機軟件性能是指飛行員看到飛行控制信息的響應(yīng)時間。SPE貫穿軟件的整個生命周期。SPE成功的關(guān)鍵是準確分析飛控計算機軟件性能的能力。

3飛控計算機軟件性能分析

3.1軟件性能指標

在考慮分析軟件性能的方式之前,重要的是要考慮獲取軟件性能指標的類型及其含義。軟件性能分析標準[2]如下:1)性能分析,這是一種確定系統(tǒng)每個功能的時間消耗的方法基礎(chǔ)。這使開發(fā)人員可以識別問題區(qū)域,并專注于問題部分優(yōu)化,以獲得最大收益。2)A-B時間,這是一種分析代碼中的一個指定點到另一個指定點所花費時間的方法。外部事件響應(yīng)是一種分析外部事件發(fā)生與軟件對該事件做出的響應(yīng)之間的時間(例如:中斷等待時間)的方法。3)實時操作系統(tǒng)(RTOS)任務(wù)性能,此分析分為兩類———任務(wù)截止時間性能分析和任務(wù)分析性能分析,任務(wù)截止時間性能分析與觸發(fā)事件發(fā)生后多任務(wù)應(yīng)用程序中的每個任務(wù)達到其截止時間所花費的時間有關(guān),任務(wù)分析記錄了系統(tǒng)在逐個任務(wù)的基礎(chǔ)上花費時間。

3.2硬件輔助軟件性能分析

硬件輔助技術(shù)是指通常采用邏輯分析儀和在線仿真工具等硬件工具進行軟件分析。邏輯分析儀通過直接連接到CPU總線,可捕獲處理器用于從RAM加載程序信息的指令提取周期序列,從而獲取軟件執(zhí)行軌跡信息。因此,可在代碼中的各個點之間進行精確的點對點時序分析,也可分析外部事件發(fā)生與系統(tǒng)響應(yīng)之間的時間間隔。在線仿真工具的線跟蹤功能使用戶可以逐條指令見證其代碼在做什么。由于在線仿真器能夠在逐條指令的基礎(chǔ)上模仿全速CPU的執(zhí)行,因此可以將非常準確的時序信息添加到總線跟蹤信息中,從而可以在代碼中的點之間進行點對點的時序分析。由于邏輯分析儀和在線仿真工具都依賴于能夠查看外部總線流量的因素,因此,它們都對基于緩存CPU的軟件性能分析是無效的。CPU由于只有在啟用緩存使用之后才能獲得最佳軟件性能,因此情況變得更為惡劣。此外,這些工具的局限性在于它們對性能分析(即確定系統(tǒng)將時間花在每個功能上的位置)幾乎沒有作用。當使用RTOS時,由于每個功能的任務(wù)環(huán)境對于定時分析的準確性也至關(guān)重要,因此這個問題會進一步加劇。

3.3純軟件性能分析

用于性能分析的純軟件技術(shù)包括堆棧采樣工具、代碼檢測和軟件數(shù)據(jù)捕獲技術(shù)。堆棧采樣工具通過對CPU堆棧進行定期快照來工作。根據(jù)這些信息,設(shè)計人員可以確定系統(tǒng)在哪個功能上花費的時間。這種方法的主要缺點是,由于僅對堆棧進行采樣,因此不可能看到在給定分析周期內(nèi)發(fā)生的所有函數(shù)調(diào)用。這意味著某些功能,尤其是那些執(zhí)行時間極短的功能,永遠不會出現(xiàn)在分析結(jié)果中。在存在RTOS的情況下,由于每個任務(wù)都維持自己的堆棧上下文,因此堆棧采樣將成倍增加。這意味著除了內(nèi)容之外,還必須監(jiān)控堆棧的上下文。為了解決在性能分析過程中缺少某些功能活動的問題,常使用代碼工具和軟件輔助的數(shù)據(jù)收集方法。該類別中基本上有兩種方法:一種在目標代碼上(即在編譯后)添加檢測,而另一種在源代碼級別上添加檢測。目標代碼檢測解析由編譯器生成的目標文件,并在代碼的顯著點(例如,函數(shù)入口和出口)處添加其他指令。與所有檢測技術(shù)一樣,在代碼執(zhí)行期間,這些附件指令將數(shù)據(jù)發(fā)送到數(shù)據(jù)收集,然后數(shù)據(jù)收集對其進行處理以獲得配置信息[3]。源代碼檢測是一個類似的過程,但檢測過程是在編譯之前發(fā)生的。與硬件輔助分析技術(shù)不同,軟件數(shù)據(jù)收集無法訪問高分辨率計時器,因此純軟件性能分析技術(shù)的分辨率比任何硬件輔助方法都低。軟件數(shù)據(jù)收集需要對發(fā)送給它們的數(shù)據(jù)進行大量處理。此處理包括時間戳記、緩沖和目標數(shù)據(jù)的傳輸。由于此處理是正在開發(fā)的應(yīng)用程序的正常操作之外的附加功能,因此軟件數(shù)據(jù)收集具有固有的引入性。引入了更多的不準確性,進一步增大了誤差。由于這些技術(shù)的低分辨率和引入性,因此無法將其用于驗證實時系統(tǒng)的性能。充其量來說,使用這些方法產(chǎn)生的信息僅可認為有代表性。

3.4源代碼檢測和硬件輔助性能分析

源代碼檢測和硬件輔助性能分析結(jié)合了上述硬件輔助方法和純軟件方法的優(yōu)點。在這種方法中,源代碼檢測與硬件數(shù)據(jù)收集結(jié)合使用。使用這種技術(shù),可以在大多數(shù)CPU(包括基于緩存的處理器)上進行高精度的分析(與硬件輔助技術(shù)分析相比),且引入最少。這種檢測方法應(yīng)用于代碼編譯期間。在檢測過程中,將語句添加到代碼中的顯著點,例如函數(shù)入口和出口。由于要求將標簽寫入的存儲位置在芯片外,因此這種用于分析軟件性能的方法允許在基于緩存的CPU上進行時序分析,且應(yīng)用程序可在給定CPU下以最大可能的速度運行[4]。與使用硬件輔助分析技術(shù)不同,對可以收集應(yīng)用程序性能指標的時段沒有限制。這意味著可以收集涵蓋較長時間段的性能統(tǒng)計信息,從而可以了解系統(tǒng)隨時間變化的真實性能特征。同樣,盡管硬件輔助分析技術(shù)提供的時序分析僅限于A-B時間分析,但是也可以使用源代碼工具和硬件數(shù)據(jù)收集方法來分析性能,以進行性能分析。此方法具有一定引入性,但是所施加的開銷最小且可管理。例如,進行性能分析所需的最基本儀器是具有單個開始標簽和單個結(jié)束標簽。每個標簽都相當于少量匯編指令(實際數(shù)量取決于所使用的CPU),因此引入影響非常低。

4優(yōu)化實時系統(tǒng)的軟件性能

4.1性能分析和算法優(yōu)化

性能分析是對每個功能進行性能分析。使用從這些分析產(chǎn)生的信息,可以知道系統(tǒng)在哪里花費時間。使用此信息和方法的目的不是提高系統(tǒng)中每個功能的性能,相反,是確定將精力集中在哪些功能上以實現(xiàn)最大的性能優(yōu)化。優(yōu)化可以采取幾種形式,從算法改進到重寫和使用更有效的自定義版本替換標準庫調(diào)用。性能分析的主要好處是可以考慮系統(tǒng)隨時間的性能。例如,在系統(tǒng)啟動期間,通常會與系統(tǒng)的初始設(shè)置相關(guān)的工作量很大。如果僅在此時進行性能分析,則可表明設(shè)置功能在CPU時間中占很大比例。但是,大多數(shù)這些功能在設(shè)置完成后將不會大量使用,因此不會嚴重影響正常的系統(tǒng)性能。通過隨時間監(jiān)視性能,性能分析可以幫助確定系統(tǒng)如何隨時間使用不同的功能。這可以幫助開發(fā)人員確定要關(guān)注的代碼區(qū)域,以改善系統(tǒng)操作特定階段的性能。

4.2代碼對接

基于緩存的CPU通過執(zhí)行來自緩存的指令提升效率。但是,CPU有可能訪問不在緩存中駐留的地址。在這種情況下,將清除高速緩存的內(nèi)容,并復(fù)制一個新的內(nèi)存部分。完成此操作之后,將從高速緩存中繼續(xù)執(zhí)行。如果應(yīng)用程序?qū)е翪PU刷新頻率過高并重新加載其緩存,則當處理器通過相對較慢的系統(tǒng)總線訪問外部內(nèi)存時,性能就會降低。為了保持一致的高性能,必須確保CPU花費盡可能多的時間從高速緩存執(zhí)行,并且將最少的時間花費在重新填充高速緩存上。代碼對接正是解決上述問題的方法。在代碼對接過程中,相互依賴的那些功能在應(yīng)用程序可執(zhí)行文件的地址映射中盡可能地彼此靠近[5]。這樣可以提高兩個函數(shù)同時位于高速緩存中的可能性,從而確保當一個函數(shù)調(diào)用依賴的另一個函數(shù)時,不需要高速緩存刷新。使用調(diào)用對數(shù)據(jù)來確定那些功能是高度獨立的。調(diào)用對數(shù)據(jù)只是衡量在代碼執(zhí)行期間函數(shù)調(diào)用其他哪些函數(shù)以及調(diào)用多少次的度量。

5結(jié)束語

提升飛控計算機的實時性需要盡早地考慮飛控計算機與控制手柄、傳感器和伺服系統(tǒng)之間的相互作用,并將其記錄在“需求與設(shè)計”文檔中。這些環(huán)境交互信息產(chǎn)生飛控計算機的實時性標準,然后將其納入飛控計算機硬件和軟件的設(shè)計規(guī)格中。在開發(fā)飛控計算機軟件時,必須在方法的每個步驟中對性能進行分析。需要分析每個功能的執(zhí)行速度,以確保它們滿足其性能標準。衡量飛控計算機執(zhí)行力的能力對于飛控計算機的成功開發(fā)至關(guān)重要。盡管邏輯分析儀和在線仿真工具已成功用于分析代碼段的執(zhí)行時間,但它們在性能分析或分析多任務(wù)應(yīng)用程序方面是有限制的。純軟件的分析方法可以進行性能分析并監(jiān)視多任務(wù)行為,但是具有引入性,并不能提供高度準確的性能分析??梢酝ㄟ^結(jié)合使用源代碼工具和硬件數(shù)據(jù)收集來實現(xiàn)高保真軟件性能分析。

參考文獻:

[1]周保宇.高實時性的無人機飛控軟件測試系統(tǒng)設(shè)計[J].計算機測量與控制,2012(9):2384-2385.

[2]李志敏.一種實時性缺陷定位方法及其可視化實現(xiàn)[J].計算機工程,2017,43(2):111-119.

[3]張鵬利.多余度飛控計算機系統(tǒng)軟件設(shè)計[C].大連:中國航空學會,1997.

[4]張少杰.無人直升機飛控系統(tǒng)軟件測試技術(shù)應(yīng)用研究[J].直升機技術(shù),2017(4):40-45.

作者:白晨 李明 馬子飛 單位:航空工業(yè)西安航空計算技術(shù)研究所