步驟為:在所述依賴網(wǎng)絡(luò)中,查找所有與目標(biāo)功能單元對應(yīng)的指令具有依賴關(guān)系的依賴指令,將查找到的依賴指令對應(yīng)的功能單元作為與所述目標(biāo)功能單元具有關(guān)聯(lián)關(guān)系的關(guān)聯(lián)功能單元;統(tǒng)計查找到的所述關(guān)聯(lián)功能單元的數(shù)量,得到所述目標(biāo)功能單元的關(guān)聯(lián)功能單元量。
[0015]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
I)本發(fā)明結(jié)合數(shù)據(jù)依賴優(yōu)先級以及功能單元分配關(guān)系建立依賴網(wǎng)格,將指令按照數(shù)據(jù)依賴優(yōu)先級以及對應(yīng)的功能單元進(jìn)行劃分,能夠同時描述指令間的并行性以及與硬件結(jié)構(gòu)之間的相關(guān)性,從而能夠幫助相關(guān)編譯優(yōu)化過程更為充分地發(fā)揮硬件體系結(jié)構(gòu)優(yōu)勢,同時提高基本塊內(nèi)指令級并行度。
[0016]2)本發(fā)明通過依賴網(wǎng)格能夠方便的實現(xiàn)指令的邏輯并行性識別、功能單元可并行執(zhí)行指令的識別以及各功能單元的工作量的獲取等,還能夠通過指令與功能單元的關(guān)系獲取得到指令間因功能單元不同而造成的各功能單元之間的相關(guān)性;
3)本發(fā)明的依賴網(wǎng)格進(jìn)一步包括組合功能單元,融入指令具有多候選功能單元的指令集特征,能夠有效反映各功能單元在各邏輯時間點的工作總量,從而有利于將基本塊的調(diào)度與功能單元分配有機(jī)結(jié)合起來。
【附圖說明】
[0017]圖1是本實施例基于依賴網(wǎng)格的指令級并行調(diào)度方法的實現(xiàn)流程示意圖。
[0018]圖2是本實施例中數(shù)據(jù)依賴優(yōu)先級值的計算原理示意圖。
[0019]圖3是本實施例中依賴網(wǎng)格的結(jié)構(gòu)原理示意圖。
[0020]圖4是本實施例中依賴網(wǎng)格動態(tài)調(diào)整的原理示意圖。
【具體實施方式】
[0021]以下結(jié)合說明書附圖和具體優(yōu)選的實施例對本發(fā)明作進(jìn)一步描述,但并不因此而限制本發(fā)明的保護(hù)范圍。
[0022]如圖1所示,本實施例基于依賴網(wǎng)格的指令級并行調(diào)度方法,步驟包括:
1)獲取目標(biāo)基本塊中指令之間的數(shù)據(jù)依賴關(guān)系以及各指令所對應(yīng)的功能單元的信息,根據(jù)數(shù)據(jù)依賴關(guān)系設(shè)置并計算各指令的數(shù)據(jù)依賴優(yōu)先級值;
2)按數(shù)據(jù)依賴優(yōu)先級值以及功能單元劃分各指令,將劃分得到的結(jié)果按網(wǎng)格形式進(jìn)行存儲,建立得到指令與數(shù)據(jù)依賴優(yōu)先級、功能單元之間依賴關(guān)系的依賴網(wǎng)格;
3)按照步驟2)得到的依賴網(wǎng)格中指令的數(shù)據(jù)依賴優(yōu)先級、指令與功能單元之間的關(guān)系進(jìn)行指令間的并行性分析。
[0023]本實施例針對具有多功能單元(多條流水線)特性的VLIW體系結(jié)構(gòu),通過建立指令與數(shù)據(jù)依賴優(yōu)先級、功能單元之間依賴關(guān)系的依賴網(wǎng)格來描述指令與數(shù)據(jù)、硬件結(jié)構(gòu)之間的相關(guān)性,能夠充分發(fā)揮硬件體系結(jié)構(gòu)優(yōu)勢,為提高基本塊內(nèi)指令級并行度提供支持。
[0024]需要說明的是,本實施例基本塊中所指的指令序列為還沒有確定指令并行以及執(zhí)行指令的功能單元的匯編指令序列;VLIW體系結(jié)構(gòu)的一個功能單元對應(yīng)的一個指令槽,部分指令只能在某個指定的功能單元中執(zhí)行,但有些指令可以在兩個或兩個以上功能單元中的任意一個中執(zhí)行。
[0025]本實施例中,通過指令間邏輯執(zhí)行順序的優(yōu)先級描述指令間的并行關(guān)系,指令的優(yōu)先級代表著在某個時刻一條指令可能的最早邏輯發(fā)射時機(jī),具有相同優(yōu)先級的指令之間不具有數(shù)據(jù)依賴關(guān)系,數(shù)據(jù)依賴優(yōu)先級值為指令對應(yīng)的數(shù)據(jù)依賴優(yōu)先級的表示值。步驟
1.0中計算各指令的數(shù)據(jù)依賴優(yōu)先級值的具體實施步驟為:
1.1)分別為各指令定義一個數(shù)據(jù)依賴優(yōu)先級值并初始化為O ;
1.2)從第二條指令開始,依次遍歷基本塊中各條指令計算對應(yīng)的數(shù)據(jù)依賴優(yōu)先級值,每條指令計算時,按逆序遍歷當(dāng)前指令的前一條指令與首條指令之間的所有目標(biāo)指令,判斷目標(biāo)指令中是否存在與當(dāng)前指令有依賴關(guān)系的被依賴指令,如果有這樣的被依賴指令,將查找到的所有被依賴指令中最大的數(shù)據(jù)依賴優(yōu)先級值加I后作為當(dāng)前指令的數(shù)據(jù)依賴優(yōu)先級值。
[0026]本實施例中,步驟1.2)中查找出所有與當(dāng)前指令有依賴關(guān)系的指令的具體實施步驟為:
1.21)將當(dāng)前指令中任意一個源變量作為目標(biāo)源變量,在當(dāng)前指令之前的所有指令中查找出對目標(biāo)源變量進(jìn)行最后一次定值的指令,得到目標(biāo)源變量的最后一次定值指令,并將最后一次定值指令作為一條與當(dāng)前指令有依賴關(guān)系的依賴指令;
1.22)取下一個源變量作為目標(biāo)源變量,重復(fù)執(zhí)行步驟1.21),直至完成對當(dāng)前指令中所有源變量的最后一次定值指令的查找,得到所有與當(dāng)前指令有依賴關(guān)系的依賴指令。
[0027]如圖2所示,假設(shè)指令M分別與指令X、Y、Z具有數(shù)據(jù)依賴關(guān)系(如圖中虛線箭頭所示),則指令M的數(shù)據(jù)依賴優(yōu)先級值為指令X、Y、Z中數(shù)據(jù)依賴優(yōu)先級值最大的那一個再加I,即指令M的數(shù)據(jù)依賴優(yōu)先級值=Max ( a, b, c)+l,其中a, b, c分別為指令X、Y、Z的數(shù)據(jù)依賴優(yōu)先級值,Max表示求集合中的最大值。
[0028]本實施例具體是首先為基本塊內(nèi)的每條指令定義一個數(shù)據(jù)依賴優(yōu)先級的屬性,其值(數(shù)據(jù)依賴優(yōu)先級值)為一個整數(shù),通過該整數(shù)的值描述一條指令的最早發(fā)射時機(jī)(以拍為單位),且僅考慮指令間的數(shù)據(jù)相關(guān)性,而不考慮機(jī)器的最大指令并發(fā)能力和具體指令的執(zhí)行延遲時間,即認(rèn)為機(jī)器有足夠多的功能單元來并行執(zhí)行無數(shù)據(jù)相關(guān)的那些指令,且硬件對所有指令的處理時間相同。數(shù)據(jù)依賴優(yōu)先級值從O開始增長,并且值越小,所對應(yīng)的數(shù)據(jù)依賴優(yōu)先級越高,指令間的數(shù)據(jù)相關(guān)性分析也即是計算出基本塊內(nèi)每條指令相應(yīng)的數(shù)據(jù)依賴優(yōu)先級值。
[0029]然后計算各指令的數(shù)據(jù)依賴優(yōu)先值,詳細(xì)實現(xiàn)步驟為:定義一個保存數(shù)據(jù)依賴優(yōu)先級值的數(shù)組并根據(jù)基本塊內(nèi)的指令數(shù)量設(shè)定數(shù)組的大小,初始化該數(shù)組的每個元素的值為O;正序遍歷基本塊內(nèi)的各指令,對于其中一條指令I(lǐng),從指令I(lǐng)之前的那條指令開始向基本塊的首指令逆序遍歷分析,找出其中哪些指令確定了指令I(lǐng)的源變量的最后一次定值,直到指令I(lǐng)的所有源變量均查找到對應(yīng)最后一次定值的指令,指令全部確定或者到達(dá)基本塊開始處時終止逆序遍歷分析過程,所有查找到的指令構(gòu)成集合S ;如果集合S不為空,將集合S指令中的最大的數(shù)據(jù)依賴優(yōu)先級值加I后作為指令I(lǐng)的數(shù)據(jù)依賴優(yōu)先級值。由各數(shù)據(jù)依賴優(yōu)先值即可得到指令的硬件無關(guān)執(zhí)行延遲時機(jī),硬件無關(guān)執(zhí)行延遲時機(jī)即為各指令中最大的數(shù)據(jù)依賴優(yōu)先級值。
[0030]本實施例中,步驟I)中獲取各指令所對應(yīng)的功能單元的信息的具體實施步驟為:查詢目標(biāo)基本塊中所有已確定對應(yīng)物理功能單元的第一目標(biāo)指令,并獲取每條第一目標(biāo)指令對應(yīng)的物理功能單元的信息;查找基本塊中所有未確定對應(yīng)物理功能單元的第二目標(biāo)指令,并獲取每條第二目標(biāo)指令對應(yīng)的多種組合功能單元的信息,組合功能單元為第二目標(biāo)指令對應(yīng)的所有物理功能單元所構(gòu)成的可能組合。組合功能單元具體是根據(jù)基本塊中指令集的規(guī)定由物理功能單元構(gòu)成可能組合。
[0031]指令集特征決定了一條指令可以在哪些執(zhí)行單元中執(zhí)行,這由該指令對應(yīng)的指令模板決定,在某些指令集中,有部分指令可能有兩個或兩個以上的候選功能單元。本實施例將所有的可能候選功能單元組合用“組合功能單元”序列來描述,一個組合功能單元是兩個或兩個以上物理功能單元的組合(不分先后),組合功能單元的數(shù)量計為NEEU,處理器的物理功能單元數(shù)量(一般對應(yīng)著指令執(zhí)行包的指令槽數(shù)量)計為npeu。
[0032]本實施例中,步驟2)的具體實施步驟為: 2.1)遍歷各指令,并將各指令按照數(shù)據(jù)依賴優(yōu)先級劃分為多個指令組;
2.2)遍歷步驟2.1)得到的各指令組,將各指令組中所有已確定對應(yīng)物理功能單元的第一目標(biāo)指令按照所對應(yīng)的物理功能單元進(jìn)行劃分,得到多個第一指令子組;將各指令組中所有未確定對應(yīng)物理功能單元的第二目標(biāo)指令按照所對應(yīng)的組合功能單元進(jìn)行劃分,得到多個第二指令子組;
2.3)構(gòu)建一個用于存儲指令子組的二維表結(jié)構(gòu),二維表中行向量對應(yīng)指令的各數(shù)據(jù)依賴優(yōu)先級,每行的行號對應(yīng)數(shù)據(jù)依賴優(yōu)先級值,列向量分為對應(yīng)各物理功能單元的第一部分、對應(yīng)各組合功能單元的第二部分,每個數(shù)據(jù)依賴優(yōu)先級值與一個物理功能單元或組合功能單元對應(yīng)二維表的一個網(wǎng)格單元格;將各第一指令子組按照數(shù)據(jù)依賴優(yōu)先級值、物理功能單元分別保存至二維表的第一部分各網(wǎng)格單元格中,將各第二指令子組按照數(shù)據(jù)依賴優(yōu)先級、組合功能單元分別保存至二維表的第二部分各網(wǎng)格單元格中,由二維表的第一部分、第二部分構(gòu)成指令與數(shù)據(jù)依賴優(yōu)先級、功能單元之間依賴關(guān)系的依賴網(wǎng)格。
[0033]本實施例將指令按數(shù)據(jù)依賴優(yōu)先級劃分為多個指令組以描述指令間的并行性,同一個指令組中的指令具有相同的邏輯發(fā)射時間,再將各指令組按照功能單元進(jìn)行劃分,將具有相同功能單元