一種基于分布函數(shù)的wcet快速估計方法
【技術領域】
[0001] 本發(fā)明屬于實時嵌入式軟件領域,特別涉及TI DSP技術中一種基于分布函數(shù)的最 壞執(zhí)行時間(WCET :Worst_Case Execution Time)快速估計方法,可用于評估DSP工程代碼 或者代碼片段的最壞執(zhí)行時間。
【背景技術】
[0002] 在實時嵌入式軟件系統(tǒng)中,系統(tǒng)對時間具有更加嚴格的要求,系統(tǒng)的正確性不僅 與其程序的邏輯有關,還與其時間特性有關,只有在規(guī)定時間內(nèi)完成規(guī)定的任務才是有效 的,否則會導致該系統(tǒng)性能的降低甚至系統(tǒng)的失敗。因此,事先獲取系統(tǒng)中每個任務的最壞 執(zhí)行時間(WCET)對實時系統(tǒng)的時序分析等具有重要的意義。
[0003] 目前,WCET分析主要包括三種方法:靜態(tài)分析法、動態(tài)度量法和混合分析法。
[0004] 動態(tài)度量法就是通過運行程序動態(tài)的測試程序的執(zhí)行時間,進而分析得到WCET, 然而該方法存在很大的弊端,首先該方法需要目標機,需要實際運行程序并需要大量的實 驗,耗費人力、物力、財力,并且在航天、航空領域,很多情況下不能模擬真實的目標機環(huán)境 或者目標機昂貴,且對實時性要求較高,不可能讓未經(jīng)檢驗的程序在真實的目標機上運行。 除此之外,該方法很難保證測量得到的結果是安全的,即無法保證不低估最差執(zhí)行時間,因 為很難保證所做的實際測量滿足程序WCET的條件,對于現(xiàn)代處理器來說,此點更難做到。
[0005] 混合分析法即將靜態(tài)分析法和動態(tài)度量法相結合的方法,該方法具體分為兩種情 況,一種是首先對程序進行靜態(tài)分析,即運用靜態(tài)分析法進行分析,然后根據(jù)靜態(tài)分析法的 結果對程序進行運行測試,最終確定程序的WCET ;另一種是首先對程序采用動態(tài)度量法進 行測試分析,然后在動態(tài)度量法的基礎上進行靜態(tài)分析,進而確定程序的WCET。
[0006] 無論采用哪種方法,混合分析法在包含靜態(tài)分析法和動態(tài)度量法的優(yōu)點上,也包 含他們各自的缺點,并且混合分析法比較復雜。
[0007] 靜態(tài)分析法是通過理論分析估算得到程序的WCET,該方法不僅可以在不運行程 序的情況下獲得計算結果,而且能夠保證得到的結果是安全的,因此,這是目前常用的方 法。
[0008] 傳統(tǒng)靜態(tài)分析方法一般由3個部分組成:①程序的控制流分析,主要分析確定程 序可能的執(zhí)行路徑、最大循環(huán)次數(shù)和不可行路徑等;②底層分析,主要考慮目標機器的特 征,比如高速緩存、流水線、分支預測等,目的是確定每條匯編語句或者每個基本塊執(zhí)行的 時間;③WCET計算,根據(jù)前兩項信息,運用具體的計算方法對程序的WCET進行計算,主要計 算方法分為基于路徑的方法、基于樹的方法和隱含路徑枚舉的方法。
[0009] 總體上說,傳統(tǒng)的靜態(tài)分析方法是在WCET計算過程中,把每條匯編指令的執(zhí)行時 間作為確定值進行對待的,然后通過一定的方法得到程序的WCET,但此值也是確定的。
[0010] 可以看到,傳統(tǒng)的方法沒有考慮到程序執(zhí)行時間的不確定性,根據(jù)現(xiàn)在處理器的 特點,這種方法顯然是存在很大弊端的,因為現(xiàn)在處理器為了加速運算的速度采用很多先 進的技術,比如高度緩存、流水線、分支預測等,使得程序執(zhí)行時間的不確定性更加明顯。
[0011] 因此,程序的運行時間不是單一的某個值,而是某個范圍的區(qū)間值。
[0012] 目前針對此問題的解決方法主要是概率法求WCET,即pWCET,此概念是由Guillem Bernat在2003年提出來的,主要目的解決某段代碼或者某個函數(shù)等的WCET的概率分布問 題。運用此方法計算WCET的文獻已發(fā)表很多,比如:
[0013] 1)在2003年,Stefan M Petters提出的采用極值統(tǒng)計理論求解程序執(zhí)行時間 區(qū)間的方法。該文獻的大概思想為,多次運行程序,得到很多個程序運行時間值,然后用 Gumble概率函數(shù)逼近,求取程序運行時間極值,即為WCET值。分析此文獻,可以很容易看 出,此種方法不能算是純粹的靜態(tài)分析,因為它是對多次運行程序得到的時間值進行函數(shù) 擬合逼近,求極值得到的WCET,同樣具有動態(tài)度量法的局限性。
[0014] 2)在2006年,胡明華、湯銘端在文獻"基于分布函數(shù)的程序執(zhí)行時間的靜態(tài)預估" 中提出的用概率分布模擬8087指令運行時間,進行指令疊加后用正態(tài)分布模擬整個程序 執(zhí)行時間的方法。然而,該方法事先需要對待分析程序進行很多的預處理,比如循環(huán)語句按 照循環(huán)最大次數(shù)展開、分支判斷語句則分為兩支、case語句則分為多支等等,這在一定程度 上限制了其適用性及自動化性,尤其對于大型的工程程序,需要大量的人力資源,具有很大 的局限性。除此之外,該方法借鑒了計劃評審技術(PERT)的思想,然而,該文獻采用傳統(tǒng)的 PERT方法,其傳統(tǒng)PERT方法本身具有很大的弊端,主要在于貝塔分布參數(shù)估計方法的不精 確性。
[0015] 3)在2010年,張保民、吳國偉等人在文獻"程序最壞執(zhí)行時間極值統(tǒng)計方法"中提 出的采用程序執(zhí)行時間的測量值作為樣本,利用Gumble分布建立程序執(zhí)行時間最壞統(tǒng)計 模型,從而預測WCET的方法。然而該方法仍然需要運行程序獲得測量值樣本,具有動態(tài)度 量法的局限性。
[0016] 綜上分析,目前WCET分析方法雖然采用靜態(tài)分析方法,并從概率的角度分析得到 WCET,繞開了復雜的底層硬件等特性的建模,簡化了 WCET估算方法,然而該靜態(tài)分析方法 還不是純粹的靜態(tài)分析,需要事先運行程序得到執(zhí)行時間的測量值樣本,然后用概率分布 逼近,從而預測程序的WCET,算是一種混合分析法,因此具有很大的弊端。胡明華等人提出 的方法事先對程序人工預處理較多,不能實現(xiàn)自動化分析,并且采用傳統(tǒng)的PERT技術,具 有很大的局限性。
【發(fā)明內(nèi)容】
[0017] 本發(fā)明的目的在于提出一種基于分布函數(shù)的WCET快速估計方法,以解決現(xiàn)有技 術中需運行程序得到測試樣本的弊端和人工干預過多的問題以及傳統(tǒng)PERT技術中貝塔分 布參數(shù)估計方法的不合理性問題。
[0018] 為實現(xiàn)上述目的,本發(fā)明的技術方案包括如下步驟:
[0019] (1)通過對DSP工程目標代碼(out文件)進行反匯編獲得反匯編文件F;
[0020] (2)分析反匯編文件F,獲取劃分的各個基本塊,得到程序的基本塊集合B ;
[0021 ] (3)辨識基本塊集合B中各基本塊之間的關系,構建程序流圖C ;
[0022] (4)計算每個基本塊的執(zhí)行時間T ;
[0023] (5)將基本塊執(zhí)行時間T和基本塊執(zhí)行次數(shù)Ts作為權值得到加權的程序流圖Cw ;
[0024] (6)分析加權的程序流圖Cw,獲得總權值最大的路徑,將最大的總權值作為程序 最壞執(zhí)行時間WCET。
[0025]本發(fā)明具有如下優(yōu)點:
[0026] 1.本發(fā)明對DSP工程匯編代碼進行靜態(tài)分析,在無需運行DSP程序的情況下得 到最壞執(zhí)行時間,克服了傳統(tǒng)方法中需運行程序得到測量值樣本的弊端,便于實施,操作簡 單;
[0027] 2.本發(fā)明采用基于分布函數(shù)的方法估算WCET,繞過復雜的底層硬件特性,解決了 傳統(tǒng)方法中需對底層硬件特性進行建模的問題,具有易于實現(xiàn)的優(yōu)點;
[0028] 3.本發(fā)明利用基本塊概念自動化構造程序流圖,分析程序流圖中各個結點的執(zhí)行 時間及程序流圖的路徑情況,在較少人工干預的情況得到程序的WCET,解決了傳統(tǒng)方法中 需要大量人工干預的問題;
[0029] 4.本發(fā)明采用改進的PERT技術,解決了傳統(tǒng)PERT技術中貝塔分布參數(shù)估計方法 的不合理性問題,使得基本塊執(zhí)行時間的估算更加準確。
【附圖說明】
[0030] 圖1為本發(fā)明的實現(xiàn)流程圖。