專利名稱:構(gòu)造多指令計算機程序的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及權(quán)利要求1的前序中引用的方法。構(gòu)造較快執(zhí)行的這種程序是工業(yè)界一個持續(xù)不斷的目標。一個特別的特征是能在單一指令的水平上并行處理,這通過引入所謂的超長字指令(VLIW)處理器和所謂的超標量處理器而變得可行?,F(xiàn)有技術(shù)是David A.Patterson& John L.Hennessy所著“計算機結(jié)構(gòu),定量方法”一書,MorgenKaufmann出版社1996年出版,第240-288頁。超標量處理器中的并行性可以在一個其調(diào)度在實際執(zhí)行時執(zhí)行的程序內(nèi)獲得。另外可選擇的方案是,在VLIW中,通過在編譯時調(diào)度可以部分利用該效果。一個一般的規(guī)則是,在硬件設施可用程度給定時,當較大數(shù)目的操作可以同時被處理時可以更好地利用并行性。這種數(shù)量的指令下面稱為調(diào)度單元或基本塊。在其最簡單的實施例中,這種調(diào)度單元可以映射到一個有向非循環(huán)圖(DAG),其由內(nèi)部操作和一個或者多個向其它調(diào)度單元的外部(條件)跳轉(zhuǎn)組成??梢詮囊粋€或者多個其它位置通過從一個相關(guān)的特定寄存器讀取一個初始值的各個相關(guān)的輸入操作到達該圖。類似地,輸出也將包括向一個可能的可選特定寄存器的寫操作。
P.Y.T.Hsu和E.S.Davidson所著“高并發(fā)標量處理”,發(fā)表在Urbana-Champaign的伊利諾斯大學關(guān)于計算機結(jié)構(gòu)的第13屆年度國際研討會的會議錄,1986年6月,第386-395頁,建議通過引入受保護指令擴展調(diào)度單元的大小,結(jié)合決策樹調(diào)度,以減少條件分支的損失。
另一可選的方案為,S.A.Mahlke等人所著“使用超級塊對預見執(zhí)行的有效編譯程序支持”,發(fā)表在Urbana-Champaign的伊利諾斯大學關(guān)于微程序設計的第25屆年度國際研討班的會議錄,波特蘭市1992年12月,第45-54頁,通過復制基本塊把基本塊映射到基本塊的一個線性鏈上。使得每一內(nèi)部基本塊只有單一的前趨基本塊。
然而本發(fā)明發(fā)現(xiàn)在許多場合可以通過把基本塊的有向非循環(huán)圖映射到單一較高級基本塊而修改以及放大上述保護來獲得改善的并行性。
因此,除其它事項外,本發(fā)明的一個目的是引入保護和加入一個決策樹的結(jié)合,連接多個基本塊為一個較高級基本塊。因此,根據(jù)本發(fā)明的一個方面,本發(fā)明的特征為按照權(quán)利要求1的特征部分。
優(yōu)點是,按照本發(fā)明的方法實現(xiàn)了在所討論的有向非循環(huán)圖的一個總的前趨非跳轉(zhuǎn)指令之間實現(xiàn)一個或者多個條件跳轉(zhuǎn),和把所述外部跳轉(zhuǎn)指令向其鏈中較低端轉(zhuǎn)移。
以這種方式,前趨和跳轉(zhuǎn)指令結(jié)合在一個不規(guī)則的模式(fortuitous scheme)中。
本發(fā)明還涉及一個被編程的處理器,其通過加載由執(zhí)行權(quán)利要求1所述方法而產(chǎn)生的程序獲得。本發(fā)明的其它優(yōu)點在從屬權(quán)利要求中列舉。本發(fā)明可以應用于VLIW處理器,如前所述,但是也可以應用于所謂的超標量處理器,商用Pentium Pro控制器是其主要的例子。
下面參考優(yōu)選實施例的公開說明、特別參考附圖詳細討論本發(fā)明的這些和另外的方面和優(yōu)點,附圖中
圖1表示一個示例VLIW處理器的方塊圖;圖2表示第一示例控制流圖;圖3表示第二示例控制流圖;圖4表示第三示例控制流圖;圖5表示一個DAG樹的說明;圖6a-6c表示另外一個樹。
圖1是一個示例VLIW處理器的方框圖。該結(jié)構(gòu)的主干是一個多回寫總線20,它供給128×32位寄存器文件22。處理能力根據(jù)5個平行的所謂分發(fā)槽(issue slot)24-32組織,每一分發(fā)槽包括多個功能單元。在每一處理器周期中每一擴展槽最多可以起動其一個功能單元,而每一分發(fā)槽最多可以使其一個功能單元在總線上產(chǎn)生一個輸出。在另一實施例中,每一周期可以在總線上產(chǎn)生多達5個結(jié)果,而不管哪一個分發(fā)槽實際產(chǎn)生。說到可用性,功能單元自身內(nèi)部完全流水線化。各種單元運行以提供一個常數(shù)(const),一個算術(shù)和邏輯處理單元(alu),一個數(shù)據(jù)存儲器(dmem),一個特殊數(shù)據(jù)存儲器(dmemspec),一個移位器(shifter),一個數(shù)字信號處理算術(shù)和邏輯單元(dspalu),一個數(shù)字信號處理乘法器(dspmul),一個分支控制單元(branch),一個浮點算術(shù)和邏輯單元(falu),一個整數(shù)浮點乘法器(ifmul),一個浮點比較器(fcomp),和一個ftough單元,其用于執(zhí)行特定和復雜運算諸如浮點除和開方運算。只要需要的話,每一單元可以接收操作數(shù)和控制信號。未示出同步操作。
本發(fā)明的操作基于決策樹,其中決策樹由基本塊組成。當該處理器支持指令的保護執(zhí)行時這樣的決策樹可以作為單一單元調(diào)度;因此其中不再需要對基本塊的調(diào)度。運算可以在各種基本塊之間轉(zhuǎn)移,諸如當本地的并行性可用量不足時。決策樹DT的語法可以寫為DT=IS(B|如果c那么DT′否則DT″)式中IS是一個指令序列,其為一個有向非循環(huán)圖。執(zhí)行結(jié)果可以是分支運算B,或者是條件c的計算。不需對分支運算B施加后約束,因為總是很清楚哪一個運算必須在B之前。條件c的計算結(jié)果將指示必須啟動決策樹DT′和DT″中的哪一個。調(diào)度程序現(xiàn)在要保證具有保護c的“那么”部分的運算和保證具有與c相反的保護c′的“否則”部分的運算。這樣定義的決策樹的主要缺點在于只能獲得控制流分離,因為一個決策樹可以包含這樣的控制分離。另一方面,為合并控制,必須實現(xiàn)新的決策樹。對此,本發(fā)明引入所謂的受保護決策樹,它將把調(diào)度單元從基本塊樹擴展到基本塊的有向非循環(huán)圖的樹。這把可能的調(diào)度范圍擴展到基本塊的任意非循環(huán)區(qū)域。應該注意,基本塊指令的DAG相應于原來的DAG。跳轉(zhuǎn)是舊的基本塊的跳轉(zhuǎn),現(xiàn)在適宜在新基本塊內(nèi)保護。
在這一方面,圖2是一個第一示例的控制流圖,它包括4個基本塊A-D。假定A根據(jù)條件c分支到B。然后在A和D的運算不應該被保護,而在B和C的運算應該分別用c和c′保護。與先前的過程相比較,不是使調(diào)度程序引入保護,保護將在決策樹自身的表示中被實現(xiàn)。以這種方式,ABCD的安排作為部分被保護的指令的單一有向非循環(huán)圖表示。原則上,這一解決方案可能引起操作數(shù)x的計算要么在B,要么在C,其分別具有值i和j,而這一操作數(shù)將在D中被使用?,F(xiàn)在,操作數(shù)x將由一偽操作“連接ij”表示,它把由各運算計算的值i和j連接起來。這一特定的連接運算假定,其參量將相互排他計算。一方面,調(diào)度程序不需為執(zhí)行該連接產(chǎn)生運算,但是可以可靠地使用單一寄存器來存儲數(shù)值i或者數(shù)值j,因為保護將總是禁止兩者之一寄存器將僅接收一個值。因此,由基本塊建立的DAG可以通過引入必要的保護和連接運算表示為一個單一基本塊。
根據(jù)本發(fā)明,這些有向非循環(huán)圖依次被配置為樹。以這種方式,允許調(diào)度操作更加靈活,因為可以在該樹的分支中引入保護。此外,每一分支可以通過調(diào)度程序與一適當?shù)膬?yōu)先級關(guān)聯(lián)。這在所有控制預先由保護置換時不可行。
圖3是第二示例控制流圖,其中所有字母表示基本塊各自的有向非循環(huán)圖,其如上面討論的表示。然而應該注意,從U到V、W和X的各分支不需所有都只源于U內(nèi)一個單一基本塊。
圖4是第三示例控制流圖,為說明上面的非一致性。圖中,A、B、C、D是基本塊,U、V、W、X、Y、Z是基本塊的有向非循環(huán)圖。另外,U是包含基本塊A、B、C、D的有向非循環(huán)圖。例如U中包含的指令的串IU可以包含串聯(lián)的指令I(lǐng)A、IB、IC、ID。另外,A可以在條件a下分支到B,B可以在條件b下分支到V,和C可以在條件c下分支到D。因此對于U分支到V、W和X的條件將分別是ab、ab′+a′c和a′c′。一般來說,這允許以容易的方式計算從一個任意有向非循環(huán)圖的退出條件。以相似方式,在圖2、3、4中所示的樹可以具有多個進入點。
圖5給出一個DAG樹的說明。其中IU是從U出發(fā)的指令序列,IV是從V出發(fā)的指令序列,等等。在這種場合,朝向V的分支僅依賴于在A和B中的指令,而不依賴于在C和D中的指令。B是一個其特征是可以起后約束作用的分支,它指向一個或者多個指令。求值可以限制到產(chǎn)生所討論的約束的指令。其它指令不需考慮。通向W的連接或目標指令的條件的結(jié)合可以不完全,但是在任何這些條件之間不允許重疊。
對于一個樹內(nèi)的這一n路退出的語法可以擴展如下DT=IS(B|選擇c則 DT′否則DT″)。
式中,在各種c中有n重選擇,每一c允許在關(guān)聯(lián)的DT′,DT″之間選擇。另外,式中B包括各種限制;而該樹確已在圖5中表示。
圖6a-6c表示另一樹。在圖6a中,進入B和C的條件分別是相反的c和c。在順序表示中,這轉(zhuǎn)變?yōu)閳D6b的序列。進一步的變形示于圖6c。這里,在連接(join)之后出現(xiàn)選擇(select)操作,從而使括起來的尾部形成后構(gòu)造部分。
應該注意,在所有情況下,A在任何時間操作只有一個出口點,盡管它可以具有多于所示的兩個輸出。跳轉(zhuǎn)總是包含隱含的假定。如果該跳轉(zhuǎn)保持在中間,則它將成為一個無效的基本塊,補救方法是把該跳轉(zhuǎn)轉(zhuǎn)移到該序列的末端。
各種特定項如下-一個有向非循環(huán)圖由相應于原始建立的指令塊構(gòu)成。跳轉(zhuǎn)現(xiàn)在是舊基本塊的保護跳轉(zhuǎn)。合起來,它們組成一個新基本塊;-目標指令通常也是一個連接指令;-每一保護是1∶1連接到一個單一基本塊。
權(quán)利要求
1.構(gòu)造一個包含多個基本塊的多指令計算機程序的方法,每一塊由在一個內(nèi)部有向非循環(huán)圖內(nèi)組織的內(nèi)部指令和外部跳轉(zhuǎn)組成,其特征在于,在所有共同源于一個分別相關(guān)的單一前趨指令的后繼指令的各種特定第一子集內(nèi),就所討論的第一子集內(nèi)的每一后繼指令執(zhí)行一個相應的保護,對于它們各自關(guān)聯(lián)的基本塊所有保護互相排斥,關(guān)于匯聚到一個單一連接/目標指令的被連接指令的第二子集,通過允許在第二子集中的各相應指令在相互非重疊條件下執(zhí)行,允許無條件連接,關(guān)于一個跳轉(zhuǎn)指令,指定所有先前必須已經(jīng)被執(zhí)行的操作,此外在一個有向非循環(huán)圖中鏈接各種這樣的基本塊,它允許并行執(zhí)行其中包含的任何另外的指令子集,以及可作為包括在較高級基本塊的一個較高級樹中的一個單一較高級基本塊使用。
2.如權(quán)利要求1所述方法,其中,在一個有向非循環(huán)圖的樹中構(gòu)造這種計算機程序。
3.如權(quán)利要求1所述方法,其中,在所討論的有向非循環(huán)圖的一個總的前趨非跳轉(zhuǎn)指令之間實現(xiàn)一個或者多個條件跳轉(zhuǎn),并把所述外部跳轉(zhuǎn)指令向其鏈的較低端轉(zhuǎn)移。
4.如權(quán)利要求1所述方法,其中,允許在一組相互不互補的條件下在各種決策樹之間選擇,每一決策樹包括各自的有向非循環(huán)圖,從而變換一組順序跳轉(zhuǎn)為一個較大的跳轉(zhuǎn)。
5.如權(quán)利要求1所述方法,其中,對于在向下移動后的一個特定的條件跳轉(zhuǎn),關(guān)于其一個或多個條件,作為適應非一致性實現(xiàn)一個自由增強的后約束。
全文摘要
構(gòu)造一個包含多個基本塊的多指令計算機程序的方法,每一塊由在一個內(nèi)部有向非循環(huán)圖內(nèi)組織的內(nèi)部指令和外部跳轉(zhuǎn)組成,其特征在于,在所有共同源于一個分別相關(guān)的單一前趨指令的后繼指令的各種特定第一子集內(nèi),就所討論的第一子集內(nèi)的每一后繼指令執(zhí)行各自的保護,所有保護關(guān)于它們各自關(guān)聯(lián)的基本塊互相排斥,關(guān)于匯聚到單一連接/目標指令的被連接指令的第二子集,通過允許在第二子集中的各指令在相互非重疊條件下執(zhí)行,允許無條件連接,關(guān)于某一跳轉(zhuǎn)指令,指定所有先前必須被執(zhí)行的操作,此外在一個有向非循環(huán)圖中鏈接各種這樣的基本塊,它允許并行執(zhí)行其中包含的任何另外的指令子集,以及可作為包括在基本塊的一個較高級樹中的一個單一基本塊使用。
文檔編號G06F9/45GK1262752SQ99800175
公開日2000年8月9日 申請日期1999年2月22日 優(yōu)先權(quán)日1998年2月25日
發(fā)明者A·奧古斯泰恩, J·霍格布魯格 申請人:皇家菲利浦電子有限公司