亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于互補(bǔ)謂詞的代碼移動(dòng)方法

文檔序號(hào):6524549閱讀:130來(lái)源:國(guó)知局
基于互補(bǔ)謂詞的代碼移動(dòng)方法
【專(zhuān)利摘要】本發(fā)明涉及一種基于互補(bǔ)謂詞的代碼移動(dòng)方法,該方法包括:判斷當(dāng)前節(jié)點(diǎn)的指令到目標(biāo)節(jié)點(diǎn)的謂詞條件是否成立;目標(biāo)節(jié)點(diǎn)是前驅(qū)節(jié)點(diǎn)或后繼節(jié)點(diǎn),節(jié)點(diǎn)是匯編文件的代碼片段且彼此無(wú)回路;在謂詞條件成立的情況下,根據(jù)謂詞條件修改當(dāng)前節(jié)點(diǎn)的推斷寄存器;將當(dāng)前節(jié)點(diǎn)內(nèi)確定被移動(dòng)的指令復(fù)制到控制流圖中其各目標(biāo)節(jié)點(diǎn)內(nèi)并且刪除當(dāng)前節(jié)點(diǎn)內(nèi)的指令;修補(bǔ)數(shù)據(jù)依賴(lài)圖。本發(fā)明結(jié)合謂詞互補(bǔ)謂詞結(jié)構(gòu),在代碼移動(dòng)過(guò)程中修改指令的推斷寄存器來(lái)抑制代碼復(fù)制,無(wú)需進(jìn)行代碼補(bǔ)償,并且代碼移動(dòng)方法實(shí)施代價(jià)低,實(shí)現(xiàn)簡(jiǎn)單,具有較高的工程實(shí)現(xiàn)價(jià)值。
【專(zhuān)利說(shuō)明】基于互補(bǔ)謂詞的代碼移動(dòng)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及代碼移動(dòng)技術(shù),具體涉及一種基于互補(bǔ)謂詞的代碼移動(dòng)方法。
【背景技術(shù)】
[0002]全局代碼移動(dòng)分為有環(huán)調(diào)度和無(wú)環(huán)調(diào)度。有環(huán)調(diào)度是沿著控制流圖中的導(dǎo)致環(huán)路的回邊(Back Edge),跨越基本塊移動(dòng)可調(diào)度的指令,而移動(dòng)的區(qū)域通常只發(fā)生在循環(huán)片段內(nèi),如M Tokoro等人提出的模調(diào)度算法(Modular Scheduling)。無(wú)環(huán)調(diào)度只處理控制流圖中無(wú)回路的子路徑片段或循環(huán)子片段。
[0003]現(xiàn)有技術(shù)方案一般是針對(duì)調(diào)度算法提出,其中較具代表性的算法有跡調(diào)度算法、滲透調(diào)度算法、全局調(diào)度算法、波沿調(diào)度算法。其中:
[0004]跡調(diào)度算法(Trace Scheduling)是J Knoop等人針對(duì)控制流圖(Control FlowGraph, CFG)中有向路徑片段提出的,它依賴(lài)分支概率優(yōu)先處理高概率執(zhí)行的路徑,代碼移動(dòng)過(guò)程必須為低概率的分支進(jìn)行代碼補(bǔ)償,它盡管實(shí)現(xiàn)簡(jiǎn)單,但帶來(lái)的代碼膨脹率卻不能忽視。
[0005]滲透調(diào)度算法(Percolation Scheduling)是Nicolau、Kernal等人基于并行程序圖(Parallel Program Graph, PPG)提出的,它不同于Trace Scheduling對(duì)分支概率的依賴(lài),只分析PPG中的路徑,但為了保證算法是可終止的,它只考慮向后繼節(jié)點(diǎn)進(jìn)行的代碼下移,這導(dǎo)致了代碼復(fù)制和不充分移動(dòng)。
[0006]全局調(diào)度算法(Global Scheduling)是Bernstein基于PDG實(shí)現(xiàn)的,它通過(guò)分析節(jié)點(diǎn)之間支配與被支配關(guān)系,抑制了移動(dòng)過(guò)程中的代碼復(fù)制,但它并不適用于功能部件較多的超長(zhǎng)指令字(Very Long Instruction Word, VLIW)體系結(jié)構(gòu)。
[0007]波沿調(diào)度算法(Wavefront Scheduling)是Bharadwaj等人提出的,它十分靈活,它通過(guò)消除JS邊或critical edge,并插入接口塊(Interface Block)高效的完成了代碼補(bǔ)償,但它的實(shí)現(xiàn)過(guò)程卻非常復(fù)雜,目前僅被ecc編譯器采用。
[0008]現(xiàn)有技術(shù)是面向編譯器后端寄存器尚未分配時(shí)的中間語(yǔ)言級(jí)的應(yīng)用,它們并未結(jié)合VLIW體系結(jié)構(gòu)中的推斷執(zhí)行技術(shù)實(shí)現(xiàn)代碼移動(dòng)。

【發(fā)明內(nèi)容】

[0009]本發(fā)明的目的是針對(duì)現(xiàn)有技術(shù)存在的上述問(wèn)題,提供了一種實(shí)施代價(jià)低的代碼移
動(dòng)方法。
[0010]為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于互補(bǔ)謂詞的全局代碼移動(dòng)方法,該方法包括以下步驟:
[0011]判斷當(dāng)前節(jié)點(diǎn)的指令到目標(biāo)節(jié)點(diǎn)的謂詞條件是否成立;目標(biāo)節(jié)點(diǎn)是前驅(qū)節(jié)點(diǎn)或后繼節(jié)點(diǎn),節(jié)點(diǎn)是匯編文件的代碼片段且彼此無(wú)回路;
[0012]在謂詞條件成立的情況下,根據(jù)謂詞條件修改當(dāng)前節(jié)點(diǎn)的推斷寄存器;
[0013]將當(dāng)前節(jié)點(diǎn)內(nèi)確定被移動(dòng)的指令復(fù)制到控制流圖中其各目標(biāo)節(jié)點(diǎn)內(nèi)并且刪除當(dāng)前節(jié)點(diǎn)內(nèi)的指令;
[0014]修補(bǔ)數(shù)據(jù)依賴(lài)圖。
[0015]優(yōu)選地,在每個(gè)節(jié)點(diǎn)的出度或入度大于I的情況下,計(jì)算從控制流圖中入口到各目標(biāo)節(jié)點(diǎn)的分支概率,向執(zhí)行概率高的前驅(qū)、后繼節(jié)點(diǎn)中移動(dòng)指令。
[0016]優(yōu)選地,控制流圖中每個(gè)節(jié)點(diǎn)的出度不超過(guò)2。
[0017]優(yōu)選地,當(dāng)當(dāng)前節(jié)點(diǎn)的出度為2時(shí),如果進(jìn)行代碼下移,在謂詞條件成立的情況下,根據(jù)謂詞條件修改當(dāng)前節(jié)點(diǎn)的推斷寄存器包括,將兩個(gè)后繼節(jié)點(diǎn)中的一個(gè)后繼節(jié)點(diǎn)指令中的推斷寄存器修改為分支出口指令的推斷寄存器,將另一個(gè)后繼節(jié)點(diǎn)中的推斷寄存器修改為互補(bǔ)推斷寄存器;
[0018]將當(dāng)前節(jié)點(diǎn)內(nèi)確定被移動(dòng)的指令復(fù)制到兩個(gè)后繼節(jié)點(diǎn)內(nèi)并且刪除當(dāng)前節(jié)點(diǎn)內(nèi)的指令。
[0019]優(yōu)選地,從入口到出口完整路徑上的其它指令選擇位于并行度低的方向上的節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn)。
[0020]優(yōu)選地,判斷當(dāng)前節(jié)點(diǎn)的指令到目標(biāo)節(jié)點(diǎn)的謂詞條件是否成立還包括如果指令與目標(biāo)節(jié)點(diǎn)的其它指令存在數(shù)據(jù)依賴(lài),而目標(biāo)節(jié)點(diǎn)的其它指令不能被移動(dòng),那么指令也不能被移動(dòng)。
[0021]優(yōu)選地,優(yōu)先移動(dòng)推斷寄存器為第一推斷寄存器的指令;
[0022]優(yōu)選地,推斷寄存器其它指令在移動(dòng)時(shí)需檢測(cè)是否存在謂詞沖突。
[0023]優(yōu)選地,判斷當(dāng)前節(jié)點(diǎn)的指令到目標(biāo)節(jié)點(diǎn)的謂詞條件是否成立包括,在存在多個(gè)目標(biāo)節(jié)點(diǎn)的情況下,根據(jù)控制流圖中各節(jié)點(diǎn)之間的控制依賴(lài)關(guān)系對(duì)各目標(biāo)節(jié)點(diǎn)進(jìn)行拓?fù)渑判颉?br> [0024]本發(fā)明結(jié)合謂詞互補(bǔ)謂詞結(jié)構(gòu),在代碼移動(dòng)過(guò)程中通過(guò)修改指令的推斷寄存器來(lái)抑制代碼復(fù)制,無(wú)需進(jìn)行代碼補(bǔ)償,而且代碼移動(dòng)方法實(shí)施代價(jià)低,實(shí)現(xiàn)簡(jiǎn)單,具有較高的工程實(shí)現(xiàn)價(jià)值。
【專(zhuān)利附圖】

【附圖說(shuō)明】
[0025]圖1為本發(fā)明實(shí)施例代碼上移流程圖;
[0026]圖2為本發(fā)明實(shí)施例代碼下移流程圖;
[0027]圖3為本發(fā)明實(shí)施例匯編代碼片段和該代碼片段對(duì)應(yīng)的控制流圖;
[0028]圖4為本發(fā)明實(shí)施例匯編級(jí)基本塊{Root, A, B,C}對(duì)應(yīng)的數(shù)據(jù)依賴(lài)圖;
[0029]圖5為本發(fā)明實(shí)施例代碼移動(dòng)軌跡圖。
【具體實(shí)施方式】
[0030]下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
[0031]圖1和2是本發(fā)明一實(shí)施例一種基于互補(bǔ)謂詞的全局代碼移動(dòng)方法流程圖,其中,圖1是代碼上移流程圖,其代碼上移過(guò)程具體包括以下步驟:
[0032]步驟101、判斷當(dāng)前節(jié)點(diǎn)到其各前驅(qū)節(jié)點(diǎn)的謂詞條件是否成立。
[0033]優(yōu)選地,優(yōu)先將匯編級(jí)基本塊中的入口指令向上移動(dòng),從入口到出口完整路徑上的其它指令優(yōu)先向并行度低的方向移動(dòng)。[0034]步驟102、根據(jù)謂詞條件修改推斷寄存器。
[0035]優(yōu)選地,優(yōu)先移動(dòng)推斷寄存器為第一指令的指令,其它指令在移動(dòng)時(shí)需檢測(cè)是否存在謂詞沖突,第一指令為使用推斷寄存器在硬件結(jié)構(gòu)上僅可讀的指令。
[0036]步驟103、將當(dāng)前節(jié)點(diǎn)內(nèi)被移動(dòng)的指令復(fù)制到控制流圖中其各前驅(qū)節(jié)點(diǎn)內(nèi)并且刪除當(dāng)前節(jié)點(diǎn)內(nèi)的指令。
[0037]在步驟103之前還包括:根據(jù)控制流圖中各節(jié)點(diǎn)之間的控制依賴(lài)關(guān)系對(duì)各節(jié)點(diǎn)進(jìn)行拓?fù)渑判?。在每個(gè)節(jié)點(diǎn)的出度或入度大于I的情況下,通過(guò)計(jì)算控制流圖中入口節(jié)點(diǎn)到達(dá)目標(biāo)節(jié)點(diǎn)的分支概率,優(yōu)先向執(zhí)行概率高的前驅(qū)節(jié)點(diǎn)中移動(dòng)代碼。
[0038]步驟104、代碼上移操作完成后修補(bǔ)數(shù)據(jù)依賴(lài)圖。
[0039]如圖2所示是代碼下移流程圖,代碼下移過(guò)程具體包括以下步驟:
[0040]步驟201、判斷當(dāng)前節(jié)點(diǎn)到其各后繼節(jié)點(diǎn)的謂詞條件是否成立。
[0041]代碼下移操作步驟包括:優(yōu)先將匯編級(jí)基本塊中的出口指令向下移動(dòng),從入口到出口完整路徑上的其它指令優(yōu)先向并行度低的方向移動(dòng)。
[0042]步驟202、根據(jù)謂詞條件修改推斷寄存器,謂詞條件修改推斷寄存器步驟包括:
[0043]優(yōu)先移動(dòng)推斷寄存器為第一指令的指令,其它指令在移動(dòng)時(shí)需檢測(cè)是否存在謂詞沖突,第一指令為使用推斷寄存器在硬件結(jié)構(gòu)上僅可讀的指令。
[0044]步驟203、將當(dāng)前節(jié)點(diǎn)內(nèi)被移動(dòng)的指令復(fù)制到控制流圖中其各后繼節(jié)點(diǎn)內(nèi)。
[0045]在步驟203之前還包括:根據(jù)控制流圖中各節(jié)點(diǎn)之間的控制依賴(lài)關(guān)系對(duì)各節(jié)點(diǎn)進(jìn)行拓?fù)渑判?。在每個(gè)節(jié)點(diǎn)的出度或入度大于I的情況下,通過(guò)計(jì)算控制流圖中入口節(jié)點(diǎn)到達(dá)目標(biāo)節(jié)點(diǎn)的分支概率,優(yōu)先向執(zhí)行概率高的后繼節(jié)點(diǎn)中移動(dòng)代碼。并且控制流圖中每個(gè)節(jié)點(diǎn)的出度不超過(guò)2,或后繼節(jié)點(diǎn)的個(gè)數(shù)不超過(guò)2,當(dāng)控制流圖中的節(jié)點(diǎn)的出度為0時(shí),則不進(jìn)行代碼下移;當(dāng)控制流圖中的節(jié)點(diǎn)的出度值為I時(shí),則刪除節(jié)點(diǎn)中與分支出口指令相關(guān)的指令,并將目標(biāo)節(jié)點(diǎn)的代碼直接復(fù)制到節(jié)點(diǎn)中分支出口指令位置;當(dāng)控制流圖中的節(jié)點(diǎn)的出度為2,則在進(jìn)行代碼下移時(shí),兩個(gè)后繼節(jié)點(diǎn)中的一個(gè)后繼節(jié)點(diǎn)指令中的推斷寄存器被修改為分支出口指令的推斷寄存器,另一個(gè)后繼節(jié)點(diǎn)中的推斷寄存器則被修改為互補(bǔ)推斷寄存器;如果待移動(dòng)的指令與當(dāng)前節(jié)點(diǎn)的其它前驅(qū)內(nèi)指令存在數(shù)據(jù)依賴(lài),則不進(jìn)行代碼移動(dòng)操作。
[0046]步驟204、代碼下移操作完成后修補(bǔ)數(shù)據(jù)依賴(lài)圖。
[0047]在一個(gè)實(shí)施例中,如圖3 (a)為本發(fā)明實(shí)施例中由{Root,A,B,C}四個(gè)匯編級(jí)基本塊組成的匯編代碼片段,如圖3 (b)所示為本發(fā)明實(shí)施例中該代碼片段對(duì)應(yīng)的CFG (控制流圖),如圖4所示為{Root,A, B,C}四個(gè)匯編級(jí)基本塊對(duì)應(yīng)的DDG (數(shù)據(jù)依賴(lài)圖),如圖5所示為代碼移動(dòng)軌跡圖,表1為本發(fā)明Algorithml.基于互補(bǔ)謂詞的代碼移動(dòng)算法。下面將結(jié)合圖3、圖4和圖5來(lái)說(shuō)明表1中的代碼移動(dòng)方法,其中Algorithml中的7— 9是代碼上移算法,10一13是代碼下移算法。
[0048]代碼上移:Algorithml中 “while Entrances ^ 0 !predecessors — /* 獲取前驅(qū)集合*/ ;if/*入口指令可被移動(dòng)*/ ;/*修改推斷寄存器并移動(dòng)*/”。
[0049]描述了判斷當(dāng)前節(jié)點(diǎn)到其各前驅(qū)節(jié)點(diǎn)的謂詞條件是否成立,如果成立,根據(jù)謂詞條件來(lái)進(jìn)行代碼上移,根據(jù)謂`詞條件修改推斷寄存器,將當(dāng)前節(jié)點(diǎn)內(nèi)被移動(dòng)的指令復(fù)制到控制流圖中其各前驅(qū)節(jié)點(diǎn)內(nèi),代碼上移操作完成后修補(bǔ)數(shù)據(jù)依賴(lài)圖。[0050]具體地,Root是A的唯一前驅(qū),當(dāng)推斷寄存器Pr5的值為0時(shí)路徑Root — A成立。指令A(yù):1是A的數(shù)據(jù)依賴(lài)圖(Data Dependence Graph, DDG)中的入口指令,它的推斷寄存器為PrO,因此指令A(yù):1被執(zhí)行的謂詞條件為PrO&&!Pr5(化簡(jiǎn)后即為!Pr5),而條件判斷指令Root:1使Pr5,Pr6這兩個(gè)推斷寄存器的值互補(bǔ),因此,指令A(yù):1可以向上移動(dòng)到匯編級(jí)基本塊Root中,并將它使用的推斷寄存器修改為Pr6。指令Root:1對(duì)推斷寄存器Pr6存在寫(xiě)操作,因此,指令A(yù):1向上移動(dòng)的位置應(yīng)當(dāng)介于指令Root:1與指令Root:2之間;B存在兩個(gè)直接前驅(qū)Root和A,當(dāng)推斷寄存器Pr5的值為I時(shí)路徑Root —B成立,而指令B:1與B: 3是B的DDG中的兩個(gè)入口,同理可知它們?cè)赗oot — B下謂詞執(zhí)行條件為Pr5且不與Root中的其它指令存在數(shù)據(jù)依賴(lài)關(guān)系,因此可將它們推斷寄存器修改為PrO后放入Root: 2之前的任意位置。然而,A也是B的一個(gè)前驅(qū),如果只將指令移動(dòng)到Root勢(shì)必導(dǎo)致路徑A — B的執(zhí)行錯(cuò)誤。路徑A —B下指令B:1與B:3謂詞條件為!Pr2,即需找出Pr2在該路徑中互補(bǔ)推斷寄存器Prx (實(shí)際上SuperV DSP配套編譯器產(chǎn)生的匯編代碼總是將條件判斷指令與分支跳轉(zhuǎn)指令放在一個(gè)一個(gè)匯編基本塊內(nèi),Prx總是可以找到的),那么B:1只能放在指令A(yù):2與A:4之間,B:3可放到指令A(yù):4之前。
[0051]代碼下移:Algorithml中“Exits — /*DDG 的出口指令序列 */ ;whileExits 古0 ;successors — /*獲取前驅(qū)集合*/ ; if/*出口指令可被移動(dòng)*/ ;/*修改推斷寄存器并移動(dòng)*/,,。
[0052]描述了判斷當(dāng)前節(jié)點(diǎn)到其各后繼節(jié)點(diǎn)的謂詞條件是否成立,如果成立,根據(jù)謂詞條件來(lái)進(jìn)行代碼下移,根據(jù)謂詞條件修改推斷寄存器,將當(dāng)前節(jié)點(diǎn)內(nèi)被移動(dòng)的指令復(fù)制到控制流圖中其各后繼節(jié)點(diǎn)內(nèi),代碼下移操作完成后修補(bǔ)數(shù)據(jù)依賴(lài)圖。
[0053]具體地,C是B的唯一后繼,當(dāng)推斷寄存器Pr2的值為0時(shí)子路徑B — C成立。指令B: 2是除了分支出口指令 B: 4以外,在DDG中唯一以不存在后續(xù)節(jié)點(diǎn)的指令,它的謂詞條件為Pr2=0,因此可被直接移動(dòng)到C中,由于B:2與指令C:1存在數(shù)據(jù)依賴(lài)關(guān)系,因此,它只能被放在指令C:1之前,但是路徑A — C成立的條件是Pr2=l,即指令B: 2如果被移動(dòng)到C后將在路徑A — C中被執(zhí)行從而導(dǎo)致執(zhí)行錯(cuò)誤,因此,指令B: 2不能被移動(dòng);B與C是A的兩個(gè)后繼節(jié)點(diǎn),A中的指令向B或C任意一方移動(dòng)代碼時(shí)需對(duì)另一方進(jìn)行代碼復(fù)制,且不能影響B(tài)或C的其它前驅(qū)節(jié)點(diǎn)的邏輯語(yǔ)義,指令A(yù): 3是A中獨(dú)立于分支出口指令A(yù): 4外的唯一出口,將它的推斷寄存器修改為Pr2后可分別移動(dòng)至B與C,B的前驅(qū)Root中不修改Pr2的值,因此向B的移動(dòng)是有效的且位置在指令B:4之前即可,同理可知向C的移動(dòng)也是有效的且位置在C:3之前。從這個(gè)過(guò)程中可以看出,代碼下移需考慮節(jié)點(diǎn)之間的關(guān)系相比與進(jìn)行代碼上移時(shí)更加復(fù)雜,諸如滲透調(diào)度[93] [94]等算法為了確保調(diào)度是可被終止的就不采用代碼下移。
[0054]除了入口指令進(jìn)行的代碼上移以及出口指令進(jìn)行的代碼下移,目標(biāo)匯編級(jí)基本塊的DDG中的其它節(jié)點(diǎn)也可以移動(dòng),但它們移動(dòng)方向卻受到數(shù)據(jù)相關(guān)性的制約。例如DDG中從入口節(jié)點(diǎn)In到出口節(jié)點(diǎn)Out存在一條完整的路徑In — Nodel —…一Noden — Out,那么
子路徑片段In — Nodel —----- Nodei中全部節(jié)點(diǎn)的移動(dòng)方向必須與In —致,而子路徑片
段Nodei+1 —----- Out中全部節(jié)點(diǎn)的移動(dòng)方向必須與Out —致,其余的操作與入口指令進(jìn)
行代碼上移和出口指令進(jìn)行代碼下移一致。
[0055]表1
【權(quán)利要求】
1.一種基于互補(bǔ)謂詞的代碼移動(dòng)方法,其特征在于,所述方法包括: 判斷當(dāng)前節(jié)點(diǎn)的指令到目標(biāo)節(jié)點(diǎn)的謂詞條件是否成立;所述目標(biāo)節(jié)點(diǎn)是前驅(qū)節(jié)點(diǎn)或后繼節(jié)點(diǎn),節(jié)點(diǎn)是匯編文件的代碼片段且彼此無(wú)回路; 在謂詞條件成立的情況下,根據(jù)所述謂詞條件修改所述當(dāng)前節(jié)點(diǎn)的推斷寄存器; 將所述當(dāng)前節(jié)點(diǎn)內(nèi)確定被移動(dòng)的指令復(fù)制到控制流圖中其各目標(biāo)節(jié)點(diǎn)內(nèi)并且刪除所述當(dāng)前節(jié)點(diǎn)內(nèi)的指令; 修補(bǔ)數(shù)據(jù)依賴(lài)圖。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述代碼下移操作中,所述控制流圖中每個(gè)節(jié)點(diǎn)的出度不超過(guò)2。
3.根據(jù)權(quán)利要求3所述的方法,其特征在于, 當(dāng)所述當(dāng)前節(jié)點(diǎn)的出度為2時(shí),如果進(jìn)行所述代碼下移,所述在謂詞條件成立的情況下,根據(jù)所述謂詞條件修改所述當(dāng)前節(jié)點(diǎn)的推斷寄存器包括,將兩個(gè)后繼節(jié)點(diǎn)中的一個(gè)后繼節(jié)點(diǎn)指令中的推斷寄存器修改為分支出口指令的推斷寄存器,將另一個(gè)后繼節(jié)點(diǎn)中的推斷寄存器修改為互補(bǔ)推斷寄存器; 所述將當(dāng)前節(jié)點(diǎn)內(nèi)確定被移動(dòng)的指令復(fù)制到控制流圖中其各目標(biāo)節(jié)點(diǎn)內(nèi)并且刪除當(dāng)前節(jié)點(diǎn)內(nèi)的指令包括,將所述當(dāng)前節(jié)點(diǎn)內(nèi)確定被移動(dòng)的指令復(fù)制到兩個(gè)后繼節(jié)點(diǎn)內(nèi)并且刪除所述當(dāng)前節(jié)點(diǎn)內(nèi)的指令。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法包括: 從入口到出口完整路徑上的其它指令選擇位于并行度低的方向上的節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn)。
5.根據(jù)權(quán)利要求1-6之一所述的方法,其特征在于, 所述判斷當(dāng)前節(jié)點(diǎn)的指令到目標(biāo)節(jié)點(diǎn)的謂詞條件是否成立還包括,如果所述當(dāng)前節(jié)點(diǎn)指令與所述目標(biāo)節(jié)點(diǎn)的其它指令存在數(shù)據(jù)依賴(lài),而所述目標(biāo)節(jié)點(diǎn)的其它指令不能被移動(dòng),那么所述指令也不能被移動(dòng)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法包括: 優(yōu)先移動(dòng)推斷寄存器為第一推斷寄存器的指令。
7.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法包括: 所述推斷寄存器其它指令在移動(dòng)時(shí)需檢測(cè)是否存在謂詞沖突。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷當(dāng)前節(jié)點(diǎn)的指令到目標(biāo)節(jié)點(diǎn)的謂詞條件是否成立包括,在存在多個(gè)目標(biāo)節(jié)點(diǎn)的情況下,根據(jù)所述控制流圖中各節(jié)點(diǎn)之間的控制依賴(lài)關(guān)系對(duì)各目標(biāo)節(jié)點(diǎn)進(jìn)行拓?fù)渑判颉?br> 9.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷所述當(dāng)前節(jié)點(diǎn)的指令到所述目標(biāo)節(jié)點(diǎn)的謂詞條件是否成立包括,在每個(gè)節(jié)點(diǎn)的出度或入度大于I的情況下,可計(jì)算從控制流圖中入口到各目標(biāo)節(jié)點(diǎn)的分支概率,向執(zhí)行概率高的前驅(qū)、后繼節(jié)點(diǎn)中移動(dòng)指令。
【文檔編號(hào)】G06F9/44GK103617049SQ201310704227
【公開(kāi)日】2014年3月5日 申請(qǐng)日期:2013年12月19日 優(yōu)先權(quán)日:2013年12月19日
【發(fā)明者】朱浩, 彭楚, 王東輝, 洪纓 申請(qǐng)人:中國(guó)科學(xué)院聲學(xué)研究所
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1