本發(fā)明涉及數(shù)字信號(hào)處理器體系結(jié)構(gòu)設(shè)計(jì)以及編譯優(yōu)化技術(shù)領(lǐng)域,尤其是一種面向數(shù)字信號(hào)處理器的多謂詞控制及編譯優(yōu)化方法。
背景技術(shù):
分支跳轉(zhuǎn)是進(jìn)行指令級(jí)開發(fā)的基本障礙,謂詞執(zhí)行是一種有效消除分支跳轉(zhuǎn)的機(jī)制,它是將程序進(jìn)行控制依賴到數(shù)據(jù)依賴的變換。分支跳轉(zhuǎn)的消除可以提高程序的執(zhí)行性能,從硬件體系結(jié)構(gòu)上講,分支跳轉(zhuǎn)的消除可以減小分支預(yù)測(cè)失敗導(dǎo)致的硬件開銷;從編譯層面講,分支跳轉(zhuǎn)的消除可以擴(kuò)大調(diào)度范圍,允許了多個(gè)條件路徑指令的重疊并行執(zhí)行,挖掘了跨越多個(gè)程序路徑的指令級(jí)并行性。
一般的經(jīng)典謂詞形式為:
p1,p2=rmcondrn
(p1)op1
(p2)op2
如果條件計(jì)算rmcondrn成立(其中cond為某種比較計(jì)算,例如大于),則p1為0,p2為1,從而指令op1作廢,op2正常運(yùn)行;反之,如果條件rmcondrn不成立,則p1為1,p2為0,從而指令op1正常運(yùn)行,op2作廢。
這種謂詞實(shí)現(xiàn)形式具有較強(qiáng)的通用性,也便于編譯優(yōu)化支持,但其具有一定的局限性:第一,不能消除謂詞控制的條件跳轉(zhuǎn)語(yǔ)句;第二,有可能導(dǎo)致較長(zhǎng)的謂詞計(jì)算依賴路徑。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的首要目的在于提供一種既可以高效利用數(shù)字信號(hào)處理器提供的豐富的邏輯運(yùn)算資源,又可以提高條件分支的執(zhí)行效率的面向數(shù)字信號(hào)處理器的多謂詞控制及編譯優(yōu)化方法。
為實(shí)現(xiàn)上述目的,本發(fā)明采用了以下技術(shù)方案:一種面向數(shù)字信號(hào)處理器的多謂詞控制及編譯優(yōu)化方法,多謂詞控制指令格式為:(p(1),p(2),…,p(n))rs=rmoprn,含義為p(1),p(2),…,p(n),n>=1,n個(gè)控制謂詞都為真時(shí),指令rs=rmoprn正常執(zhí)行,否則rs=rmoprn作廢;其中,rs=rmoprn指代計(jì)算指令或訪存指令,p(1),p(2),…,p(n)為虛擬謂詞寄存器;rm、rn、rs為通用寄存器;
這種多謂詞控制格式的執(zhí)行步驟為:
(1)謂詞寄存器設(shè)計(jì)為32位物理寄存器pred的0位、1位、2位、…、31位,當(dāng)0位為1時(shí),表示物理謂詞寄存器p0為1,物理謂詞寄存器p1為0,當(dāng)0位為0時(shí),表示物理謂詞寄存器p0為0,物理謂詞寄存器p1為1;當(dāng)1位為1時(shí),表示物理謂詞寄存器p2為1,物理謂詞寄存器p3為0,當(dāng)1位為0時(shí),表示物理謂詞寄存器p2為0,物理謂詞寄存器p3為1;依次類推;其中p0,p2、…、p30稱為真物理謂詞寄存器,p1,p3、…、p31稱為假物理謂詞寄存器;
(2)讀取當(dāng)前指令的多個(gè)控制謂詞,即p(1),p(2),…,p(n),根據(jù)以上對(duì)應(yīng)關(guān)系,生成對(duì)應(yīng)該32位物理寄存器的mask和c,其中mask為當(dāng)前指令的控制謂詞對(duì)應(yīng)的物理寄存器對(duì)應(yīng)位二進(jìn)制權(quán)重的和,c為當(dāng)前指令的多謂詞對(duì)應(yīng)的物理寄存器對(duì)應(yīng)位的權(quán)重與對(duì)應(yīng)真謂詞寄存器的值乘積的累加和;
(3)判斷多謂詞控制指令的pred[mask]==c是否為真,如果為真,則當(dāng)前指令正常執(zhí)行,如果為假,則當(dāng)前指令作廢。
定義多謂詞的指令格式為:p(1),p(2)=rmcondrn,其中cond為比較條件,包括大于、大于等于、等于、不等于、小于、小于等于,當(dāng)條件為真,p(1)為假,p(2)為真;反之,p(1)為真,p(2)為假。
在編譯時(shí),其步驟如下:
步驟一:在編譯優(yōu)化后端,按照區(qū)域依次處理,計(jì)算謂詞轉(zhuǎn)換代價(jià),選擇合適的區(qū)域進(jìn)行謂詞轉(zhuǎn)換;
步驟二:通過控制流分析,識(shí)別每個(gè)基本塊的局部謂詞;
步驟三:遍歷當(dāng)前區(qū)域控制流,計(jì)算屬于每個(gè)基本塊的絕對(duì)控制謂詞路徑,沿著控制流方向依次計(jì)算,該過程是迭代的,直至找到每個(gè)基本塊的全部控制謂詞路徑;
步驟四:合并基本塊,為基本塊的指令放置對(duì)應(yīng)謂詞,多個(gè)基本塊合并為一個(gè)基本塊,最終生成謂詞中間代碼;在合并基本塊階段,把全部的條件計(jì)算放置合并基本塊的靠前位置,而把有效的多謂詞控制指令放置在合并基本塊的靠后位置,最終形成多謂詞的計(jì)算形式。
由上述技術(shù)方案可知,本發(fā)明的優(yōu)點(diǎn)在于:第一,多謂詞控制形式可以更為靈活高效地支持多個(gè)條件轉(zhuǎn)換為謂詞,生成的代碼效率更高;第二,多謂詞形式消除了謂詞定義嵌套的現(xiàn)象,多謂詞控制使得謂詞計(jì)算全局化、扁平化;第三,多謂詞控制形式消除了謂詞之間的依賴關(guān)系,簡(jiǎn)化了謂詞數(shù)據(jù)依賴分析,使得編譯優(yōu)化更為高效。
附圖說明
圖1為經(jīng)典謂詞編譯框架;
圖2為多謂詞控制編譯框架;
圖3為識(shí)別局部謂詞;
圖4為識(shí)別謂詞控制的絕對(duì)路徑;
圖5為多謂詞控制基本塊。
具體實(shí)施方式
一種面向數(shù)字信號(hào)處理器的多謂詞控制及編譯優(yōu)化方法,多謂詞控制指令格式為:(p(1),p(2),…,p(n))rs=rmoprn,含義為p(1),p(2),…,p(n),n>=1,n個(gè)控制謂詞都為真時(shí),指令rs=rmoprn正常執(zhí)行,否則rs=rmoprn作廢;其中,rs=rmoprn指代計(jì)算指令或訪存指令,p(1),p(2),…,p(n)為虛擬謂詞寄存器;rm、rn、rs為通用寄存器;
這種多謂詞控制格式的執(zhí)行步驟為:
(1)謂詞寄存器設(shè)計(jì)為32位物理寄存器pred的0位、1位、2位、…、31位,當(dāng)0位為1時(shí),表示物理謂詞寄存器p0為1,物理謂詞寄存器p1為0,當(dāng)0位為0時(shí),表示物理謂詞寄存器p0為0,物理謂詞寄存器p1為1;當(dāng)1位為1時(shí),表示物理謂詞寄存器p2為1,物理謂詞寄存器p3為0,當(dāng)1位為0時(shí),表示物理謂詞寄存器p2為0,物理謂詞寄存器p3為1;依次類推;其中p0,p2、…、p30稱為真物理謂詞寄存器,p1,p3、…、p31稱為假物理謂詞寄存器;
(2)讀取當(dāng)前指令的多個(gè)控制謂詞,即p(1),p(2),…,p(n),根據(jù)以上對(duì)應(yīng)關(guān)系,生成對(duì)應(yīng)該32位物理寄存器的mask和c,其中mask為當(dāng)前指令的控制謂詞對(duì)應(yīng)的物理寄存器對(duì)應(yīng)位二進(jìn)制權(quán)重的和,c為當(dāng)前指令的多謂詞對(duì)應(yīng)的物理寄存器對(duì)應(yīng)位的權(quán)重與對(duì)應(yīng)真謂詞寄存器的值乘積的累加和;
(3)判斷多謂詞控制指令的pred[mask]==c是否為真,如果為真,則當(dāng)前指令正常執(zhí)行,如果為假,則當(dāng)前指令作廢。
定義多謂詞的指令格式為:p(1),p(2)=rmcondrn,其中cond為比較條件,包括大于、大于等于、等于、不等于、小于、小于等于,當(dāng)條件為真,p(1)為假,p(2)為真;反之,p(1)為真,p(2)為假。
在編譯時(shí),其步驟如下:
步驟一:在編譯優(yōu)化后端,按照區(qū)域依次處理,計(jì)算謂詞轉(zhuǎn)換代價(jià),選擇合適的區(qū)域進(jìn)行謂詞轉(zhuǎn)換;
步驟二:通過控制流分析,識(shí)別每個(gè)基本塊的局部謂詞;
步驟三:遍歷當(dāng)前區(qū)域控制流,計(jì)算屬于每個(gè)基本塊的絕對(duì)控制謂詞路徑,沿著控制流方向依次計(jì)算,該過程是迭代的,直至找到每個(gè)基本塊的全部控制謂詞路徑;
步驟四:合并基本塊,為基本塊的指令放置對(duì)應(yīng)謂詞,多個(gè)基本塊合并為一個(gè)基本塊,最終生成謂詞中間代碼;在合并基本塊階段,把全部的條件計(jì)算放置合并基本塊的靠前位置,而把有效的多謂詞控制指令放置在合并基本塊的靠后位置,最終形成多謂詞的計(jì)算形式。
圖1為經(jīng)典謂詞編譯框架,先選擇適合謂詞轉(zhuǎn)換的region,然后進(jìn)行數(shù)據(jù)流分析,識(shí)別每個(gè)基本塊的謂詞,根據(jù)基本塊謂詞之間的依賴關(guān)系,插入相應(yīng)的謂詞定義語(yǔ)句,此時(shí)會(huì)引入謂詞控制的謂詞定義指令或跳轉(zhuǎn)指令,最后為每個(gè)基本塊的指令放置謂詞控制寄存器,并進(jìn)行基本塊合并,生成謂詞中間代碼。
圖2為多謂詞識(shí)別框架,先選擇適合謂詞轉(zhuǎn)換的region,通過控制流分析,識(shí)別每個(gè)基本塊的控制謂詞,一個(gè)基本塊有可能有多個(gè)局部控制謂詞;接著計(jì)算每個(gè)基本塊的絕對(duì)控制謂詞路徑,沿著控制流方向依次計(jì)算,該過程是迭代的,直至找到每個(gè)控制塊的全部控制謂詞路徑;找到每個(gè)基本塊的絕對(duì)控制謂詞路徑是為了適應(yīng)扁平化謂詞形式。在合并基本塊階段,就可以把全部的條件計(jì)算放置合并基本塊的靠前位置,而把有效的多謂詞控制指令放置在合并基本塊的靠后位置,最終形成多謂詞控制中間代碼形式。
圖3為一個(gè)識(shí)別局部謂詞的例子,控制塊bb2,bb5的局部控制謂詞分別為真物理謂詞寄存器p2、假物理謂詞寄存器p5;而控制塊bb3,bb4則有多個(gè)局部控制謂詞,其中bb3兩個(gè)局部控制謂詞是假物理謂詞寄存器p1、假物理謂詞寄存器p3,bb4的兩個(gè)局部控制謂詞是真物理謂詞寄存器p4、真物理謂詞寄存器p6。
圖4為該例全部控制謂詞路徑的示意圖,控制塊bb2的絕對(duì)控制謂詞路徑是有一個(gè)真物理謂詞寄存器p2組成,而控制塊bb3,bb4,bb5則有多個(gè)絕對(duì)控制路徑。bb3的絕對(duì)控制謂詞路徑為有兩個(gè),分別是假物理謂詞寄存器p1組成的第一條路徑、假物理謂詞寄存器p3和真物理謂詞寄存器p2組成的第二條路徑,意味著基本塊bb3指令的控制謂詞的要么是假物理謂詞寄存器p1,要么是假物理謂詞寄存器p3與真物理謂詞寄存器p2(多謂詞控制指令)。bb4的絕對(duì)控制謂詞路徑是三個(gè),分別是真物理謂詞寄存器p4和真物理謂詞寄存器p2組成的第一條路徑,真物理謂詞寄存器p6與假物理謂詞寄存器p1組成的第二條路徑,真物理謂詞寄存器p6、假物理謂詞寄存器p3、真物理謂詞寄存器p2組成的第三條路徑。bb5的絕對(duì)控制謂詞路徑包括兩個(gè),分別是假物理謂詞寄存器p5與假物理謂詞寄存器p1組成的第一條路徑,假物理謂詞寄存器p5、假物理謂詞寄存器p3與真物理謂詞寄存器p2組成的第二條路徑。
圖5為多謂詞控制代碼,第一個(gè)指令行:
p1,p2=a>b||p3,p4=c>d||p5,p6=a>c
為多謂詞定義,定義了p1,p3,p5三個(gè)真物理謂詞寄存器,p2,p4,p6三個(gè)假物理謂詞寄存器。
第二個(gè)指令行:
(p4,p2)r8=2||(p6,p1)r8=2||(p6,p3,p2)r8=2||(p5,p1)re=3||(p5,p3,p2)re=3
為多謂詞控制行,其中該指令行表示re要么在(p2,p4)或(p6)為真的條件下等于2,要么在(p1,p5)或(p2,p3,p5)為真的條件下等于3。
綜上所述,本發(fā)明采用的多謂詞控制形式可以更為靈活高效地支持多個(gè)條件轉(zhuǎn)換為謂詞,生成的代碼效率更高;多謂詞形式消除了謂詞定義嵌套的現(xiàn)象,多謂詞控制使得謂詞計(jì)算全局化、扁平化;多謂詞控制形式消除了謂詞之間的依賴關(guān)系,簡(jiǎn)化了謂詞數(shù)據(jù)依賴分析,使得編譯優(yōu)化更為高效。