【具體實(shí)施方式】
[0031] 以下參照附圖對(duì)本發(fā)明做進(jìn)一步詳細(xì)地描述。
[0032]參照?qǐng)D1,本發(fā)明的具體實(shí)現(xiàn)步驟如下:
[0033] 步驟一,讀取DSP工程反匯編文件:
[0034] 利用TI的反匯編工具對(duì)DSP工程編譯得到的目標(biāo)文件即out文件進(jìn)行反匯編得 到該工程的反匯編文件。
[0035]步驟二,獲得劃分的基本塊即圖1中所示的基本塊劃分:
[0036] 根據(jù)DSP工程反匯編文件特點(diǎn)及基本塊劃分的規(guī)則,逐行分析反匯編文件,得到 劃分的各個(gè)基本塊,具體步驟如下:
[0037] 2. 1)判斷基本塊的入口語(yǔ)句
[0038] 逐行掃描反匯編文件,判斷其是否為基本塊的入口語(yǔ)句,具體判斷準(zhǔn)則為:①程序 的第一條語(yǔ)句;②條件轉(zhuǎn)移語(yǔ)句或者無(wú)條件轉(zhuǎn)移語(yǔ)句能夠轉(zhuǎn)移到的語(yǔ)句;③緊跟在條件轉(zhuǎn) 移語(yǔ)句后面的語(yǔ)句;④緊跟在無(wú)條件轉(zhuǎn)移語(yǔ)句后面的語(yǔ)句。若滿足上面條件之一,則判定為 基本塊入口語(yǔ)句,同時(shí)記錄基本塊入口語(yǔ)句在反匯編文件中對(duì)應(yīng)的地址。
[0039]在TI C6000系列DSP匯編指令中轉(zhuǎn)移語(yǔ)句主要體現(xiàn)為B指令,比如,[!A1]B. S1 0x00058語(yǔ)句為條件轉(zhuǎn)移語(yǔ)句,該語(yǔ)句表示的意思為若A1等于0,則該語(yǔ)句執(zhí)行,否則不執(zhí) 行;B.S1 0x00110語(yǔ)句為無(wú)條件轉(zhuǎn)移語(yǔ)句,表示無(wú)條件執(zhí)行該語(yǔ)句。對(duì)于B.S1 0x00110語(yǔ) 句,在反匯編文件中搜索0x00110值,將其對(duì)應(yīng)的匯編語(yǔ)句作為基本塊的入口語(yǔ)句,同時(shí)將 該語(yǔ)句后面的一條語(yǔ)句作為另一個(gè)基本塊的入口語(yǔ)句。依據(jù)此DSP匯編指令特點(diǎn)并結(jié)合基 本塊入口語(yǔ)句判定準(zhǔn)則,便可以判定反匯編文件中各個(gè)基本塊的入口語(yǔ)句。
[0040] 2. 2)判斷基本塊的出口語(yǔ)句
[0041] 逐行分析反匯編文件,若其滿足下面兩者之一則判定為基本塊出口語(yǔ)句,同時(shí)記 錄該基本塊出口語(yǔ)句在反匯編文件中對(duì)應(yīng)的地址,其中基本塊出口語(yǔ)句具體判定準(zhǔn)則為: ①下一個(gè)基本塊入口語(yǔ)句之前的那條語(yǔ)句;②匯編代碼的終止語(yǔ)句。
[0042] 2. 3)確定基本塊范圍
[0043] 基本塊由該入口語(yǔ)句到出口語(yǔ)句之間的匯編語(yǔ)句序列組成。確定基本塊范圍之 后,并對(duì)各基本塊依次標(biāo)號(hào)為1、2、3......n,n彡1。
[0044] 考慮到劃分得到的基本塊數(shù)量不確定,為了便于存儲(chǔ)及管理,本發(fā)明采用單鏈表 結(jié)構(gòu)定義、存儲(chǔ)基本塊及其相關(guān)信息,主要包括基本塊標(biāo)號(hào)、基本塊入口語(yǔ)句對(duì)應(yīng)的地址和 出口語(yǔ)句對(duì)應(yīng)的地址。
[0045] 步驟三,獲得圖1中所示的程序流圖:
[0046] 根據(jù)劃分得到的基本塊及其標(biāo)號(hào)等信息,可以獲得基本塊之間的關(guān)系,從而獲得 匯編代碼的程序流圖。
[0047] 確定基本塊之間的關(guān)系主要是判斷各個(gè)基本塊之間是否可達(dá),若可達(dá)則該基本塊 之間存在關(guān)系,否則不存在關(guān)系,其具體判斷方法如下:
[0048] 3. 1)若基本塊i的出口語(yǔ)句為轉(zhuǎn)移語(yǔ)句(條件或者無(wú)條件轉(zhuǎn)移語(yǔ)句),并且該轉(zhuǎn) 移語(yǔ)句的目標(biāo)地址等于基本塊j的入口語(yǔ)句對(duì)應(yīng)的地址,則i可以到達(dá)j ;
[0049] 3. 2)若基本塊i的出口語(yǔ)句為條件轉(zhuǎn)移語(yǔ)句,并且該出口語(yǔ)句對(duì)應(yīng)的地址加4等 于基本塊k的入口語(yǔ)句對(duì)應(yīng)的地址,則i可以到達(dá)k;
[0050] 3. 3)若基本塊i的出口語(yǔ)句為無(wú)條件轉(zhuǎn)移語(yǔ)句,并且該出口語(yǔ)句對(duì)應(yīng)的地址加4 等于基本塊k的入口語(yǔ)句對(duì)應(yīng)的地址,則i可以到達(dá)k,但此時(shí)基本塊k在基本塊i、基本塊 j之后執(zhí)行;
[0051] 3.4)若基本塊i的出口語(yǔ)句不為轉(zhuǎn)移語(yǔ)句(條件或者無(wú)條件轉(zhuǎn)移語(yǔ)句),并且該 基本塊的出口語(yǔ)句對(duì)應(yīng)的地址加4等于基本塊m的入口語(yǔ)句對(duì)應(yīng)的地址,則i可以到達(dá)m。
[0052] 通過(guò)上面的判斷方法,便可以確定各個(gè)基本之間的關(guān)系,并用數(shù)據(jù)結(jié)構(gòu)中基于鄰 接表的有向圖進(jìn)行描述存儲(chǔ),將基本塊作為有向圖中的各個(gè)節(jié)點(diǎn),便可得到程序流圖。
[0053] 步驟四,計(jì)算圖1中所示的基本塊執(zhí)行時(shí)間:
[0054] 根據(jù)劃分得到的基本塊及其信息,靜態(tài)估算基本塊執(zhí)行時(shí)間,其基本思想為:從概 率角度出發(fā),宏觀上把握程序的運(yùn)行時(shí)間區(qū)間,繞過(guò)復(fù)雜的底層硬件特性,采用改進(jìn)的計(jì)劃 評(píng)審技術(shù)PERT模擬每條指令運(yùn)行時(shí)間期望值和方差,根據(jù)中心極限定理,進(jìn)行指令疊加后 用正態(tài)分布模擬整個(gè)基本塊的運(yùn)行時(shí)間。然而,在進(jìn)行指令疊加之前還需考慮指令的并行 情況,本發(fā)明取并行指令中最大的指令執(zhí)行時(shí)間作為該幾條并行指令的最終執(zhí)行時(shí)間,進(jìn) 而參與指令疊加運(yùn)算。具體實(shí)現(xiàn)步驟為:
[0055] 4. 1)計(jì)算每條指令運(yùn)行時(shí)間的期望值h和方差〇 /
[0056] 本發(fā)明根據(jù)計(jì)劃評(píng)審技術(shù)PERT的思想,對(duì)每條DSP匯編指令運(yùn)行時(shí)間用改進(jìn)的計(jì) 劃評(píng)審技術(shù)PERT模擬得到其期望值和方差,即采用Perry-Greig期望值近似公式計(jì)算每條 DSP指令運(yùn)行時(shí)間的期望值y p采用Person-Turkry方差近似公式計(jì)算每條DSP指令運(yùn)行 時(shí)間的方差〇 /,具體計(jì)算公式分別為:
[0057]y i= 0? 630m i+0.185 (bi+aj,
[0058] 〇 J = 0? 630 (m「Ui) 2+0. 185 [ (bi-Ui) 2+ (afUi)2],
[0059] 式中,匕表示每條指令運(yùn)行時(shí)間峰值,a ,表示每條指令運(yùn)行時(shí)間谷值,!1^表示每條 指令運(yùn)行時(shí)間的最可能值,根據(jù)實(shí)驗(yàn)分析?。?i取取值范圍為[1-N],N為基本塊 指令條數(shù);
[0060] 4. 2)篩選并行指令
[0061] 在基本塊中可能存在并行執(zhí)行的指令,需要對(duì)指令并行性進(jìn)行分析,從而使得估 算的基本塊執(zhí)行時(shí)間更加準(zhǔn)確。根據(jù)步驟4. 2獲得的每條指令運(yùn)行時(shí)間的期望值^和方 差〇 /,并結(jié)合指令并行情況,篩選得到最終參加指令疊加運(yùn)算的指令信息,具體為:
[0062] Fj=max (t!,…,tk,…,t8),
[0063] 其中,tk表示基本塊中每個(gè)并行執(zhí)行塊中第k條指令的執(zhí)行時(shí)間,k取值范圍為 [1-8],因?yàn)樵赥I DSP中最多只能有8條指令并行執(zhí)行,max為取最大值操作,tk= A k+2Sk, Ak為并行執(zhí)行塊中第k條指令對(duì)應(yīng)基本塊中指令的執(zhí)行時(shí)間的期望值,S k為并行執(zhí)行塊中 第k條指令對(duì)應(yīng)基本塊中指令的執(zhí)行時(shí)間的方差,表示基本塊中每個(gè)并行執(zhí)行塊的執(zhí)行 時(shí)間,j的取值范圍為[1_M],M表示基本塊中包含的并行執(zhí)行塊個(gè)數(shù)。
[0064] 4. 3)計(jì)算基本塊執(zhí)行時(shí)間均值y和方差〇 2,具體的計(jì)算公式分別為:
【主權(quán)項(xiàng)】
1. 一種基于分布函數(shù)的WCET快速估計(jì)方法,其特征在于,包括以下步驟: 1) 、讀取DSP工程反匯編文件:利用TI的反匯編工具對(duì)DSP工程編譯得到的目標(biāo)文件 進(jìn)行反匯編得到該DSP工程的反匯編文件F; 2) 、獲得劃分的基本塊集合B: 根據(jù)DSP反匯編文件特點(diǎn)及基本塊劃分的規(guī)則,逐行分析反匯編文件F,得到劃分的各 個(gè)基本塊,得到程序的基本塊集合B; 3) 、辨識(shí)基本塊集合B中各基本塊之間的關(guān)系,構(gòu)建程序流圖C; 4) 、計(jì)算每個(gè)基本塊的執(zhí)行時(shí)間T; 5) 、將基本塊執(zhí)行時(shí)間T和基本塊執(zhí)行次數(shù)Ts作為權(quán)值得到加權(quán)的程序流圖Cw; 6) 、分析加權(quán)的程序流圖Cw,獲得總權(quán)值最大的路徑,將最大的總權(quán)值作為程序最壞執(zhí) 行時(shí)間WCET。
2. 如權(quán)利要求1所述的基于分布函數(shù)的WCET快速估計(jì)方法,其特征在于:所述步驟2) 的具體過(guò)程是: 2. 1)判斷基本塊集合B中的各基本塊的入口語(yǔ)句: 從所述反匯編文件F第一行開始讀取一行匯編代碼,判斷該行是否為基本塊的入口語(yǔ) 句,如果是,則將該行判定為所述基本塊的入口語(yǔ)句,同時(shí)記錄該基本塊入口