亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種面向vliw體系結(jié)構(gòu)的多元啟發(fā)式指令選擇方法

文檔序號(hào):8380729閱讀:525來(lái)源:國(guó)知局
一種面向vliw體系結(jié)構(gòu)的多元啟發(fā)式指令選擇方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及VLIW (Very LongInstruct1n Word,超長(zhǎng)指令字)體系結(jié)構(gòu)的編譯優(yōu)化技術(shù)領(lǐng)域,尤其涉及一種面向VLIW體系結(jié)構(gòu)的多元啟發(fā)式指令選擇方法。
【背景技術(shù)】
[0002]基本塊調(diào)度是提高代碼的指令級(jí)并行度的重要處理過(guò)程之一,它在保證產(chǎn)生相同結(jié)果的前提下,通過(guò)重新安排指令的執(zhí)行順序來(lái)充分發(fā)揮硬件的性能,因而是流水線體系結(jié)構(gòu)或者多功能單元的超長(zhǎng)指令字體系結(jié)構(gòu)中提高代碼執(zhí)行效率的重要途徑。
[0003]對(duì)于流水線體系結(jié)構(gòu),基本塊調(diào)度通常是采用表調(diào)度方法,采用該方法在調(diào)度過(guò)程中,需要維持2個(gè)序列:一是已經(jīng)調(diào)度過(guò)(被發(fā)射)的結(jié)點(diǎn)序列Scheds ; 二是每一個(gè)時(shí)間點(diǎn)的候選指令集合Cands。候選指令集合Cands有兩個(gè)子集:一是到基本塊末尾具有最大延遲時(shí)間的第一候選指令集合ACands ;二是第一候選指令集合ACands中最早開(kāi)始時(shí)間小于或等于等于當(dāng)前時(shí)間的第二候選指令集合BCands。
[0004]基于表調(diào)度方法對(duì)基本塊的指令進(jìn)行重排的流程如下:
O獲得各指令到基本塊末尾的最大可能延遲;
2)從基本塊的無(wú)環(huán)有向圖(DirectedAcyclic Graph,DAG)的根結(jié)點(diǎn)向葉結(jié)點(diǎn)方向遍歷,找出候選指令集合Cands ;
3)從候選指令集合Cands中找到到達(dá)基本塊末尾具有最大延遲時(shí)間的指令到第一候選指令集合ACands ;
4)從ACands中選擇合適的指令到已經(jīng)調(diào)度過(guò)的結(jié)點(diǎn)序列Scheds;
5)反復(fù)進(jìn)行2)、3)、4)三個(gè)步驟的處理直到基本塊內(nèi)的所有指令全部都到已經(jīng)調(diào)度過(guò)的結(jié)點(diǎn)序列Scheds中,已經(jīng)調(diào)度過(guò)的結(jié)點(diǎn)序列Scheds中的指令順序即指令重排后的指令順序。
[0005]在基本塊調(diào)度中,影響指令重排結(jié)果的核心因素是每一個(gè)時(shí)間點(diǎn)的指令的選擇。在表調(diào)度方法中,具體就是從候選指令集合Cands中的選擇指令。然而,當(dāng)?shù)谝缓蜻x指令集合ACands中的指令數(shù)量大于I時(shí),則存在具體選擇哪條指令的問(wèn)題。
[0006]目前對(duì)于解決指令選擇的問(wèn)題有一些啟發(fā)式策略,例如:
策略一:從第一候選指令集合ACands中選擇延遲時(shí)間最大或具有最小ETime的結(jié)點(diǎn)n,其中ETime是為了避免停頓該結(jié)點(diǎn)應(yīng)當(dāng)被調(diào)度的最早時(shí)間;
策略二:如果體系結(jié)構(gòu)有多條流水線,并且每條流水線都有若干候選結(jié)點(diǎn),則優(yōu)先選擇最近沒(méi)有為它調(diào)度指令的那些流水線上的候選結(jié)點(diǎn);
策略三:優(yōu)先選擇那些在選擇之后能使新產(chǎn)生的候選指令集合Cands的元素個(gè)數(shù)最大的指令。
[0007]上述三種策略對(duì)于功能單元豐富的流向量超長(zhǎng)指令字處理器而言,一方面沒(méi)有考慮處理器內(nèi)標(biāo)量處理單元和向量處理單元的區(qū)分;另一方面沒(méi)有考慮指令間數(shù)據(jù)依賴(lài)關(guān)系所隱含的相應(yīng)功能單元之間的關(guān)聯(lián)性,因此其均不適用于在VLIW體系結(jié)構(gòu)中進(jìn)行較好的指令選擇。
[0008]由于流向量超長(zhǎng)指令字處理器具有超標(biāo)量機(jī)器的特征,因此目前對(duì)于超標(biāo)量系統(tǒng),指令調(diào)度還存在通過(guò)使用成組啟發(fā)式的貪婪法來(lái)實(shí)現(xiàn)的策略。該貪婪法是盡可能地用就緒指令填充有效指令槽實(shí)現(xiàn),具體方法是:假設(shè)所考慮的處理機(jī)有η個(gè)可并行執(zhí)行的部件P1...Ρη,并且每一個(gè)部件Pi可以執(zhí)行類(lèi)別為PClass (i)的指令,用表調(diào)度算法中所用的數(shù)據(jù)結(jié)構(gòu)的η個(gè)副本來(lái)模擬這些功能部件,并由IClass函數(shù)確定具體指令inst所對(duì)應(yīng)的類(lèi)別,當(dāng)且僅當(dāng)PClass (i) = IClass (inst)時(shí)指令inst能夠由執(zhí)行部件Pi執(zhí)行。但該貪婪方法是從在表調(diào)度方法的基礎(chǔ)上修改而來(lái)的,其仍然沒(méi)有考慮處理器內(nèi)處理單元與指令之間的硬件特性,以及指令間數(shù)據(jù)依賴(lài)關(guān)系所隱含的功能單元之間的關(guān)聯(lián)性。
[0009]綜上所述,上述指令選擇策略對(duì)于流向量VLIW處理器均不能較好地反映代碼與功能單元之間的關(guān)聯(lián)關(guān)系,也不能反映代碼在處理器上一段時(shí)間內(nèi)的執(zhí)行特征,因此無(wú)法充分地發(fā)掘VLIW類(lèi)處理器中指令的并行性,同時(shí)難以充分發(fā)揮硬件的性能。

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

[0010]本發(fā)明要解決的技術(shù)問(wèn)題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問(wèn)題,本發(fā)明提供一種實(shí)現(xiàn)方法簡(jiǎn)單、指令選擇合理且并行度高的面向VLIW體系結(jié)構(gòu)的多元啟發(fā)式指令選擇方法,能夠針對(duì)VLIW體系結(jié)構(gòu)的特性,充分考慮指令與處理單元之間的硬件特性以及數(shù)據(jù)與功能單元的關(guān)聯(lián)性。
[0011]為解決上述技術(shù)問(wèn)題,本發(fā)明提出的技術(shù)方案為:
一種面向VLIW體系結(jié)構(gòu)的多元啟發(fā)式指令選擇方法,步驟包括:
1)獲取各功能單元的候選指令集中所有可發(fā)射指令,所述可發(fā)射指令為所有數(shù)據(jù)依賴(lài)指令均已執(zhí)行完的指令;
2)分別計(jì)算各功能單元中每條可發(fā)射指令對(duì)應(yīng)的多個(gè)啟發(fā)量,所述啟發(fā)量包括指令與依賴(lài)指令之間的依賴(lài)關(guān)系量、指令與處理單元之間的關(guān)系量以及指令與功能單元之間的關(guān)系量;
3)對(duì)各功能單元中的可發(fā)射指令執(zhí)行多次排序,每次排序時(shí)按照優(yōu)先級(jí)順序選擇一個(gè)啟發(fā)量作為排序比較量,得到排序后的可發(fā)射指令序列作為指令選擇對(duì)象。
[0012]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟3)中每個(gè)功能單元的可發(fā)射指令執(zhí)行多次排序的具體實(shí)施步驟為:
3.1)取目標(biāo)功能單元中所有可發(fā)射指令作為當(dāng)前排序序列,并選擇優(yōu)先級(jí)最高的啟發(fā)量作為當(dāng)前啟發(fā)量,轉(zhuǎn)入執(zhí)行步驟3.2);
3.2)將可發(fā)射指令根據(jù)當(dāng)前啟發(fā)量的值進(jìn)行排序,對(duì)排序后的指令按照啟發(fā)量的值分為多個(gè)指令子序列,得到排序后的多個(gè)指令子序列;
3.3)取所述步驟3.2)得到的排序后的多個(gè)指令子序列中最優(yōu)啟發(fā)量值對(duì)應(yīng)的最優(yōu)指令子序列作為當(dāng)前排序序列,并選擇優(yōu)先級(jí)為下一級(jí)的啟發(fā)量作為當(dāng)前啟發(fā)量,返回執(zhí)行步驟3.2),直至完成根據(jù)所有啟發(fā)量進(jìn)行的排序。
[0013]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟2)中指令與處理單元之間的關(guān)系量具體包括:目標(biāo)指令中與目標(biāo)指令對(duì)應(yīng)不同處理單元的數(shù)據(jù)依賴(lài)指令數(shù)所對(duì)應(yīng)的第一處理單元關(guān)系量,以及目標(biāo)指令中是由標(biāo)量處理單元或向量處理單元的通道寄存器引起數(shù)據(jù)依賴(lài)的數(shù)據(jù)依賴(lài)指令數(shù)所對(duì)應(yīng)的第二處理單元關(guān)系量;所述步驟2)中啟發(fā)量包括對(duì)應(yīng)所述第一處理單元關(guān)系量的另類(lèi)處理單元依賴(lài)指令啟發(fā)量、對(duì)應(yīng)所述第二處理單元關(guān)系量的通道寄存器依賴(lài)指令啟發(fā)量。
[0014]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟2)中指令與功能單元之間的關(guān)系量具體包括:目標(biāo)指令的數(shù)據(jù)依賴(lài)指令對(duì)應(yīng)的所有功能單元數(shù)所對(duì)應(yīng)的第一功能單元關(guān)系量,以及目標(biāo)指令的數(shù)據(jù)依賴(lài)指令對(duì)應(yīng)的所有功能單元中下拍空閑的功能單元數(shù)所對(duì)應(yīng)的第二功能單元關(guān)系量,以及目標(biāo)指令中與目標(biāo)指令對(duì)應(yīng)不同功能單元的數(shù)據(jù)依賴(lài)指令數(shù)所對(duì)應(yīng)的第三功能單元關(guān)系量;所述步驟I)中啟發(fā)量還包括對(duì)應(yīng)所述第一功能單元關(guān)系量的關(guān)聯(lián)功能單元啟發(fā)量、對(duì)應(yīng)所述第二功能單元關(guān)系量的下拍空閑關(guān)聯(lián)功能單元啟發(fā)量、以及對(duì)應(yīng)所述第三功能單元關(guān)系量的另類(lèi)功能單元依賴(lài)指令啟發(fā)量。
[0015]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟2)中指令與依賴(lài)指令之間的依賴(lài)關(guān)系量具體是指目標(biāo)指令的所有數(shù)據(jù)依賴(lài)指令數(shù);所述步驟2)中啟發(fā)量還包括對(duì)應(yīng)所述數(shù)據(jù)依賴(lài)指令數(shù)的依賴(lài)指令啟發(fā)量。
[0016]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟2)中啟發(fā)量還包括指令本身執(zhí)行特性啟發(fā)量,所述指令本身執(zhí)行特性啟發(fā)量為執(zhí)行目標(biāo)指令所需的節(jié)拍數(shù)。
[0017]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟3)中各啟發(fā)量的優(yōu)先級(jí)順序從高到低依次為:另類(lèi)處理單元依賴(lài)指令啟發(fā)量、通道寄存器依賴(lài)指令啟發(fā)量、下拍空閑關(guān)聯(lián)功能單元啟發(fā)量、關(guān)聯(lián)功能單元啟發(fā)量、另類(lèi)功能單元依賴(lài)指令啟發(fā)量、依賴(lài)指令啟發(fā)量以及指令執(zhí)行節(jié)拍數(shù)。
[0018]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟I)中還包括獲取資源狀態(tài)表步驟,具體實(shí)施步驟為:獲取目標(biāo)基本塊中當(dāng)前節(jié)拍以及當(dāng)前節(jié)拍前若干個(gè)節(jié)拍中各個(gè)功能單元狀態(tài)的資源狀態(tài)表,所述資源狀態(tài)表的每個(gè)結(jié)點(diǎn)記錄了對(duì)應(yīng)的功能單元在目標(biāo)時(shí)刻執(zhí)行的目標(biāo)指令以及完成所述目標(biāo)指令還需要的節(jié)拍數(shù)。
[0019]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟I)中每個(gè)功能單元獲取可發(fā)射指令的具體實(shí)施步驟為:為當(dāng)前功能單元設(shè)置一個(gè)存儲(chǔ)可發(fā)射指令的可發(fā)射指令集合并初始化為空;遍歷所述資源狀態(tài)表中當(dāng)前功能單元的所有一級(jí)就緒指令,如果一條目標(biāo)指令的所
當(dāng)前第1頁(yè)1 2 3 4 5 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1