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

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

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

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

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

關(guān)鍵詞:飛控計(jì)算機(jī);實(shí)時(shí)性標(biāo)準(zhǔn);實(shí)時(shí)性分析;實(shí)時(shí)性優(yōu)化

引言

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

1飛控計(jì)算機(jī)的實(shí)時(shí)性標(biāo)準(zhǔn)

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

2飛控計(jì)算機(jī)實(shí)時(shí)性構(gòu)建

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

3飛控計(jì)算機(jī)軟件性能分析

3.1軟件性能指標(biāo)

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

3.2硬件輔助軟件性能分析

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

3.3純軟件性能分析

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

3.4源代碼檢測(cè)和硬件輔助性能分析

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

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

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

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

4.2代碼對(duì)接

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

5結(jié)束語(yǔ)

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

參考文獻(xiàn):

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

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

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

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

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