專利名稱:程序變換裝置及程序變換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種將用C語言等高級(jí)語言所描述的源程序變換為機(jī)器語言程序的程序變換裝置,特別涉及到實(shí)施具備并行處理機(jī)構(gòu)的處理器所對應(yīng)的指令調(diào)度的程序變換
直O(jiān)
背景技術(shù):
在處理器具備的指令集中,一般情況下延遲時(shí)間也就是1條指令的執(zhí)行所用的需要周期數(shù)根據(jù)指令的不同而不同。從而,即便是同一指令串,根據(jù)其執(zhí)行順序的不同,指令執(zhí)行開始之前的等待時(shí)間也不同,整體的執(zhí)行周期數(shù)一直在變化。具體而言,越是可以在其他指令的執(zhí)行中隱藏延遲時(shí)間長的指令的等待時(shí)間,整體的執(zhí)行周期數(shù)變得越短。在生成處理器之可執(zhí)行代碼的編譯程序中,鑒于上述特性,一般實(shí)施在滿足指令間的依賴限制的范圍內(nèi)進(jìn)行指令的排列,縮短整體的執(zhí)行周期數(shù)的優(yōu)化。這就是指令調(diào)度, 指令調(diào)度的能力給所生成的可執(zhí)行代碼的性能帶來較大的影響。但是,最佳的指令序列的導(dǎo)出是NP (Non-deterministic Polynomial time)困難的問題,另外由于其他優(yōu)化功能的影響,可執(zhí)行代碼的性能也不同。因此,作為指令調(diào)度功能一般采用啟發(fā)式的算法,由哪個(gè)算法導(dǎo)出更好的結(jié)果根據(jù)狀況的不同而不同。對此,以往例如象專利文獻(xiàn)1那樣,有一種檢查寄存器的使用狀況,根據(jù)檢查結(jié)果,來選擇并行性優(yōu)先的指令調(diào)度方法和減少寄存器之同時(shí)運(yùn)行數(shù)的指令調(diào)度方法的任一個(gè),并根據(jù)選擇出的指令調(diào)度方法來執(zhí)行指令調(diào)度的方法。另外,例如像專利文獻(xiàn)2那樣,還有一種參照在作為優(yōu)化方法一種的公共表達(dá)式刪除(common sub-expression elimination)中刪除后的公共表達(dá)式的信息,根據(jù)是否實(shí)施了公共表達(dá)式刪除的信息來選擇指令調(diào)度方法,并根據(jù)選擇出的指令調(diào)度方法來執(zhí)行指令調(diào)度的方法?,F(xiàn)有技術(shù)文獻(xiàn)專利文獻(xiàn)專利文獻(xiàn)1 日本專利第3311381號(hào)公報(bào)專利文獻(xiàn)2 日本特開2001-159983號(hào)公報(bào)
發(fā)明內(nèi)容
發(fā)明的概要發(fā)明要解決的問題作為近年來處理器的趨勢,與指令并行處理有關(guān),具有多個(gè)動(dòng)作模式的處理器,或者適應(yīng)多線程動(dòng)作的處理器已經(jīng)出現(xiàn)。就以往技術(shù)而言,雖然可以按照單個(gè)動(dòng)作模式內(nèi)的輸入程序或者中間代碼的優(yōu)化狀況,選擇指令調(diào)度方法,但是對多個(gè)動(dòng)作模式的轉(zhuǎn)換卻不適應(yīng)。另外,還無法根據(jù)伴隨多線程動(dòng)作而變化的指令并行度變化或者指令延遲時(shí)間變化,來轉(zhuǎn)換動(dòng)作模式。再者,有關(guān)指令調(diào)度方法卻不能由程序進(jìn)行控制。因此,在結(jié)果上,采用以往技術(shù)對于近年來的處理器而言,存在無法生成與狀況相應(yīng)的有效的可執(zhí)行代碼這樣的問題。本發(fā)明是為了解決上述課題而做出的,其目的為提供程序變換裝置等,使(i)動(dòng)作模式的轉(zhuǎn)換、(ii)與多線程動(dòng)作相伴的動(dòng)作模式的變動(dòng)因素或者(iii)適應(yīng)程序員要求的有效的可執(zhí)行代碼的生成成為可能。為了實(shí)現(xiàn)上述目的,本發(fā)明的某一方面所涉及的程序變換裝置用來將用高級(jí)語言或者匯編語言所描述的源程序變換為在目標(biāo)處理器中進(jìn)行動(dòng)作的機(jī)器語言代碼,其特征為,具備存儲(chǔ)部,存儲(chǔ)上述源程序;程序員指示輸入部,受理用來指定指令調(diào)度方法的程序員指示的輸入;指令調(diào)度部,有關(guān)對存儲(chǔ)在上述存儲(chǔ)部中的上述源程序所對應(yīng)的中間代碼進(jìn)行排列的指令調(diào)度,能夠?qū)嵤┗诙喾N指令調(diào)度方法的指令調(diào)度;上述指令調(diào)度部根據(jù)由上述程序員指示輸入部所受理的上述指示從上述多種指令調(diào)度方法之中選擇任一個(gè), 執(zhí)行與選擇出的指令調(diào)度方法相應(yīng)的指令調(diào)度。據(jù)此,能夠生成具有多個(gè)動(dòng)作模式的處理器的各動(dòng)作模式所對應(yīng)的執(zhí)行效率高的機(jī)器語言代碼。優(yōu)選的是,由上述程序員指示輸入部受理的上述指示是與上述目標(biāo)處理器的動(dòng)作模式有關(guān)的指示。更為優(yōu)選的是,上述目標(biāo)處理器是超長指令字VLIW(Very Long Instruction Word)處理器,上述目標(biāo)處理器的動(dòng)作模式是VLIW處理器的動(dòng)作模式。在目標(biāo)處理器為能夠執(zhí)行按照VLIW方式所描述的指令群的處理器(下面稱為 “VLIW處理器”。)的情況下,可以生成與各動(dòng)作模式的限制相符的機(jī)器語言代碼。優(yōu)選的是,由上述程序員指示輸入部受理的上述指示是與指令調(diào)度方法有關(guān)的指示??梢杂沙绦騿T直接指定指令調(diào)度方法,能夠?qū)嵤┘?xì)致的性能調(diào)諧。本發(fā)明的其他方面所涉及的程序變換裝置用來將用高級(jí)語言或者匯編語言所描述的源程序變換為在目標(biāo)處理器中進(jìn)行動(dòng)作的機(jī)器語言代碼,其特征為,具備存儲(chǔ)部,存儲(chǔ)上述源程序;指令調(diào)度部,有關(guān)對存儲(chǔ)在上述存儲(chǔ)部中的上述源程序所對應(yīng)的中間代碼進(jìn)行排列的指令調(diào)度,能夠根據(jù)多種指令調(diào)度方法的各自執(zhí)行指令調(diào)度;代碼生成部,將由上述指令調(diào)度部根據(jù)上述多種指令調(diào)度方法進(jìn)行指令調(diào)度后的多種上述中間代碼,分別變換為機(jī)器語言代碼。據(jù)此,能夠由用戶選取具有多個(gè)動(dòng)作模式的處理器的各動(dòng)作模式所對應(yīng)的執(zhí)行效率高的機(jī)器語言代碼。優(yōu)選的是,上述指令調(diào)度方法按上述目標(biāo)處理器的動(dòng)作模式的每種進(jìn)行了設(shè)置。更為優(yōu)選的是,上述目標(biāo)處理器是VLIW處理器,上述目標(biāo)處理器的動(dòng)作模式是 VLIff處理器的動(dòng)作模式。在目標(biāo)處理器為VLIW處理器的情況下,能夠由用戶選取與各動(dòng)作模式的限制相符的機(jī)器語言代碼。還有,本發(fā)明不僅僅可以作為這種具備特征性處理部的程序變換裝置來實(shí)現(xiàn),還可以作為以程序變換裝置中包含的特征性處理部為步驟的程序變換方法來實(shí)現(xiàn)。另外,也可以作為下述程序來實(shí)現(xiàn),該程序是作為程序變換裝置中包含的特征性機(jī)構(gòu)使計(jì)算機(jī)發(fā)揮作用所需的。而且,不言而喻,那種程序可以通過⑶-ROM(Compact Disc-Read Only Memory)等記錄介質(zhì)或因特網(wǎng)等通信網(wǎng)絡(luò)使之流通。發(fā)明效果根據(jù)本發(fā)明,通過按照硬件的動(dòng)作模式轉(zhuǎn)換指令調(diào)度方法,就能夠生成與動(dòng)作模式相符的執(zhí)行效率高的可執(zhí)行代碼(機(jī)器語言代碼)。在目標(biāo)處理器為VLIW處理器的情況下,能夠生成與動(dòng)作模式的限制相符的可執(zhí)行代碼。另外,因?yàn)橛沙绦騿T指示的方法提供該指令調(diào)度方法的轉(zhuǎn)換,所以能夠細(xì)致地實(shí)施生成的機(jī)器語言代碼的調(diào)諧。
圖1是執(zhí)行本發(fā)明實(shí)施方式1及2所涉及的編譯程序的計(jì)算機(jī)外觀圖。圖2是表示本發(fā)明實(shí)施方式1所涉及的編譯程序構(gòu)成的框圖。圖3A是表示目標(biāo)處理器的多線程動(dòng)作模式(模式1)的附圖。圖;3B是表示目標(biāo)處理器的多線程動(dòng)作模式(模式2)的附圖。圖3C是表示目標(biāo)處理器的多線程動(dòng)作模式(模式3)的附圖。圖3D是表示目標(biāo)處理器的多線程動(dòng)作模式(模式4)的附圖。圖4是表示指令調(diào)度方法設(shè)定部411的處理內(nèi)容的流程圖。圖5是表示本發(fā)明實(shí)施方式2所涉及的編譯程序構(gòu)成的框圖。圖6是表示多個(gè)代碼生成控制部66的處理內(nèi)容的流程圖。圖7是表示指令調(diào)度指示和指令調(diào)度設(shè)定之間的對應(yīng)表的附圖。
具體實(shí)施例方式(實(shí)施方式1
下面,一邊參照附圖,一邊說明本發(fā)明實(shí)施方式1所涉及的編譯程序系統(tǒng)。編譯程序系統(tǒng)通過在圖1所示的那種包含存儲(chǔ)器和CPU的普通計(jì)算機(jī)上,執(zhí)行下面說明的編譯程序,來實(shí)現(xiàn)。圖2是表示實(shí)施方式1所涉及的編譯程序1構(gòu)成的框圖。編譯程序1接受程序員用C語言所描述的源程序101來作為輸入,將其變換為中間代碼并實(shí)施優(yōu)化或資源的分配之后,生成面向目標(biāo)處理器的可執(zhí)行代碼102。源程序101 及可執(zhí)行代碼102被存儲(chǔ)于計(jì)算機(jī)具備的存儲(chǔ)器或者硬盤中。另外,由編譯程序得到的處理執(zhí)行時(shí)的中間數(shù)據(jù)也被存儲(chǔ)于計(jì)算機(jī)具備的存儲(chǔ)器或者硬盤中。這里,說明本發(fā)明所涉及的編譯程序?yàn)槟繕?biāo)的處理器的結(jié)構(gòu)。本處理器是具備每1周期4條指令的指令并行機(jī)構(gòu)的超標(biāo)量處理器。本處理器還具備最大3個(gè)線程的多線程執(zhí)行機(jī)構(gòu)。為了使3個(gè)線程進(jìn)行并行動(dòng)作,本處理器分別保持 3組程序計(jì)數(shù)器及上下文寄存器群。針對多線程執(zhí)行,存在4個(gè)動(dòng)作模式,可以通過體系結(jié)構(gòu)寄存器的設(shè)定來選擇動(dòng)作模式。圖3A 圖3D是表示本處理器的多線程動(dòng)作模式概要的附圖。圖3A 圖3D的各行表示出1個(gè)周期,橫軸表示出指令并行度,縱軸表示出時(shí)間方向。這里,所謂的指令并行度表示,在同一周期內(nèi)進(jìn)行動(dòng)作的每1線程中可并行執(zhí)行的指令數(shù)。
6
圖3A表示出模式1,也就是單線程模式。在該模式下只有1個(gè)線程進(jìn)行動(dòng)作,能夠?qū)崿F(xiàn)每個(gè)周期最大4條指令的并行執(zhí)行。也就是說,能夠在同一周期內(nèi)執(zhí)行1個(gè)線程。圖;3B表示出模式2,也就是分時(shí)的2個(gè)線程執(zhí)行模式。在該模式下,線程1和線程 2在每周期內(nèi)交替進(jìn)行動(dòng)作。從而,在各線程的觀點(diǎn)上,在2個(gè)周期內(nèi)循環(huán)回來1次本線程的執(zhí)行周期。因此,若僅僅著眼于本線程進(jìn)行動(dòng)作的周期,則好象和模式1相比各指令的延遲時(shí)間變成2分之1,進(jìn)行動(dòng)作。針對各周期,能夠?qū)崿F(xiàn)最大4條指令的并行執(zhí)行。也就是說,能夠在同一周期內(nèi)執(zhí)行1個(gè)線程。圖3C表示出模式3,也就是分時(shí)的3個(gè)線程執(zhí)行模式。在該模式下,線程1、線程 2和線程3按序號(hào)以輪轉(zhuǎn)的形式進(jìn)行動(dòng)作。從而,在各線程的觀點(diǎn)上,在3個(gè)周期內(nèi)循環(huán)回來1次本線程的執(zhí)行周期。因而,若僅僅著眼于本線程進(jìn)行動(dòng)作的周期,則好象和模式1相比各指令的延遲時(shí)間變成3分之1,進(jìn)行動(dòng)作。針對各周期,能夠?qū)崿F(xiàn)最大4條指令的并行執(zhí)行。也就是說,能夠在同一周期內(nèi)執(zhí)行1個(gè)線程。圖3D表示出模式4,也就是2個(gè)線程的SMT (Simultaneous Multithreading)執(zhí)行模式。在該模式下,雖然各線程和模式1相同,可以每周期都進(jìn)行動(dòng)作,但是指令并行度被限制到各周期2條指令。也就是說,能夠在同一周期內(nèi)執(zhí)行2個(gè)線程。在下面,說明本發(fā)明所涉及的編譯程序1各構(gòu)成要素的詳細(xì)構(gòu)成和其動(dòng)作。編譯程序1由在計(jì)算機(jī)上執(zhí)行的程序來實(shí)現(xiàn),在功能上(作為在計(jì)算機(jī)上執(zhí)行時(shí)發(fā)揮作用的處理部)具備指令調(diào)度指示輸入部2、分析部3、優(yōu)化部4及代碼生成部5。指令調(diào)度指示輸入部2受理由程序員發(fā)出的與指令調(diào)度有關(guān)的指示,來作為編譯選項(xiàng)。具體而言,使之執(zhí)行編譯程序1的程序員以下面的形式輸入目標(biāo)處理器的多線程動(dòng)作模式,來作為編譯選項(xiàng)。-fhardware-thread-mode = NUM在“NUM”的部分中,指定作為參照圖3A 圖3D所說明的多線程動(dòng)作模式之編號(hào)的1 4任一個(gè)的數(shù)字。由此,編譯程序1獲得是否應(yīng)當(dāng)生成與某個(gè)多線程動(dòng)作模式相適的代碼的信息。分析部3是一種處理部,對于編譯程序1中所輸入的源程序101,提取預(yù)定字(關(guān)鍵字)等進(jìn)行詞法分析及語法分析,將各語句根據(jù)一定規(guī)則變換為中間代碼。優(yōu)化部4對于從分析部3所輸出的中間代碼,實(shí)施冗余性的去除、指令調(diào)度或者寄存器的分配之類的優(yōu)化處理。代碼生成部5對于從優(yōu)化部4所輸出的中間代碼,通過參照保持于內(nèi)部的變換表等,將全部的代碼轉(zhuǎn)換為機(jī)器語言代碼,以此生成可執(zhí)行代碼102。優(yōu)化部4具備指令調(diào)度部41,實(shí)施按指令級(jí)的機(jī)器語言代碼的排列。指令調(diào)度部 41具備指令調(diào)度方法設(shè)定部411,設(shè)定指令的調(diào)度方法。圖4是表示指令調(diào)度方法設(shè)定部411的處理內(nèi)部的流程圖。指令調(diào)度方法設(shè)定部411根據(jù)由指令調(diào)度指示輸入部2所受理的多線程動(dòng)作模式,來設(shè)定指令調(diào)度之時(shí)的參數(shù)。具體而言,指令調(diào)度方法設(shè)定部411判定由指令調(diào)度指示輸入部2所受理的多線程動(dòng)作模式(步驟Si)。在判定模式為模式1的情況下(步驟Sl中的模式1),指令調(diào)度方法設(shè)定部411將指令并行度和下述指令延遲時(shí)間比分別設(shè)定為4和1 (步驟S2),該指令延遲時(shí)間比表示從執(zhí)行某個(gè)線程到下次執(zhí)行和該線程同一種類的線程為止的周期數(shù)。在判定模式為模式2的情況下(步驟Sl中的模式2、,指令調(diào)度方法設(shè)定部411將指令并行度和指令延遲時(shí)間比分別設(shè)定為4和2(步驟S; )。在判定模式為模式3的情況下(步驟Sl中的模式幻,指令調(diào)度方法設(shè)定部411將指令并行度和指令延遲時(shí)間比分別設(shè)定為4和3 (步驟 S4)。在判定模式為模式4的情況下(步驟Sl中的模式4),指令調(diào)度方法設(shè)定部411將指令并行度和指令延遲時(shí)間比分別設(shè)定為2和1 (步驟SQ。這樣與指令調(diào)度方法有關(guān)的設(shè)定完成。這里,所謂的指令延遲時(shí)間比指的是,對于單線程模式下的指令延遲時(shí)間的指令延遲時(shí)間之比的倒數(shù)。在此后的由指令調(diào)度部41做出的指令調(diào)度處理中,按照所設(shè)定的指令并行度來限制按各周期配置的指令的數(shù)目。另外,關(guān)于各指令的指令延遲時(shí)間,要事先作為基準(zhǔn)的指令延遲時(shí)間保持單線程模式的指令延遲時(shí)間的表,使用將該表的值除以所設(shè)定的指令延遲時(shí)間比后的值,來作為各指令的延遲時(shí)間。這樣一來,指令調(diào)度部41就可以實(shí)施與所設(shè)定的條件相適合的指令調(diào)度。通過采取如上的編譯程序1的構(gòu)成,就可以按照所輸入的目標(biāo)處理器的動(dòng)作模式,轉(zhuǎn)換為恰當(dāng)?shù)闹噶钫{(diào)度方法,能夠生成執(zhí)行效率高的代碼。另外,還可以按照編譯單位, 由程序員直接指定指令調(diào)度方法,能夠?qū)崿F(xiàn)細(xì)致的性能調(diào)諧。(實(shí)施方式2)下面,一邊參照附圖,一邊說明本發(fā)明實(shí)施方式2所涉及的編譯程序系統(tǒng)。實(shí)施方式1所涉及的編譯程序系統(tǒng)按照程序員所指定的指令調(diào)度方法,執(zhí)行指令調(diào)度,而實(shí)施方式2所涉及的編譯程序系統(tǒng)其不同之處為,按照取得的全部指令調(diào)度方法的各自,執(zhí)行指令調(diào)度。實(shí)施方式2所涉及的編譯程序系統(tǒng)和實(shí)施方式1所涉及的編譯程序系統(tǒng)相同,通過在圖1所示的那種包含存儲(chǔ)器和CPU的普通計(jì)算機(jī)上,執(zhí)行下面說明的編譯程序,來實(shí)現(xiàn)。圖5是表示本發(fā)明實(shí)施方式2所涉及的編譯程序61構(gòu)成的框圖。本實(shí)施方式2所涉及的編譯程序61的大部分和實(shí)施方式1中所示的編譯程序1 相同,但是在實(shí)施方式1中存在的指令調(diào)度指示輸入部2卻不存在。另外,添加了對優(yōu)化部 4和代碼生成部5的動(dòng)作進(jìn)行控制的多個(gè)代碼生成控制部66。關(guān)于此外的結(jié)構(gòu)要件,則和實(shí)施方式1所涉及的編譯程序相同。另外,作為目標(biāo)的處理器的結(jié)構(gòu)也相同。因此,其詳細(xì)的說明在此不重復(fù)。在下面說明所添加的多個(gè)代碼生成控制部66的動(dòng)作。圖6是表示多個(gè)代碼生成控制部66的處理內(nèi)容的流程圖。多個(gè)代碼生成控制部66與目標(biāo)處理器具備的所有多線程動(dòng)作模式相對應(yīng),重復(fù)下面的處理(步驟Sll)。具體而言,與從模式1到模式4相對應(yīng),重復(fù)4次下面的處理。對各模式的處理如下。首先,多個(gè)代碼生成控制部66在給予了預(yù)定的多線程動(dòng)作模式的設(shè)定后的狀態(tài)下啟動(dòng)優(yōu)化部4(步驟SU)。若啟動(dòng)了優(yōu)化部4,則在優(yōu)化部4內(nèi)的指令調(diào)度方法設(shè)定部 411中,設(shè)定與所給予的多線程模式對應(yīng)的指令并行度及指令延遲時(shí)間。指令調(diào)度部41執(zhí)行與所設(shè)定的指令并行度及指令延遲時(shí)間對應(yīng)的指令調(diào)度。由此,獲得優(yōu)化后的中間代碼。
多個(gè)代碼生成控制部66啟動(dòng)代碼生成部5(步驟Si; )。若啟動(dòng)了代碼生成部5, 則代碼生成部5根據(jù)從優(yōu)化部4輸出的中間代碼,生成可執(zhí)行代碼。還有,代碼生成部5在可執(zhí)行代碼的文件名最后附加多線程動(dòng)作模式的數(shù)值。由此,能夠識(shí)別是與哪個(gè)多線程動(dòng)作模式對應(yīng)的可執(zhí)行代碼。多個(gè)代碼生成控制部66對于各多線程動(dòng)作模式,重復(fù)執(zhí)行上面的處理(S12及 S13)。通過形成為如上的編譯程序61的構(gòu)成,就可以與目標(biāo)處理器的所有多線程動(dòng)作模式的各自相對應(yīng),啟動(dòng)優(yōu)化部及代碼生成部,并生成適于各多線程動(dòng)作模式的多個(gè)可執(zhí)行代碼。程序員可以從所生成的多個(gè)可執(zhí)行代碼之中,按照程序的執(zhí)行環(huán)境下硬件的設(shè)定或用途,選擇恰當(dāng)?shù)目蓤?zhí)行代碼加以使用。作為結(jié)果,可以使程序的執(zhí)行效率得到提高。上面,對于本發(fā)明所涉及的編譯程序系統(tǒng)及其結(jié)構(gòu)要素,根據(jù)實(shí)施方式1及實(shí)施方式2進(jìn)行了說明,但是本發(fā)明不限于這些實(shí)施方式。也就是說,(1)在上述實(shí)施方式1及實(shí)施方式2中,假定了面向C語言的編譯程序系統(tǒng),但是本發(fā)明作為對象的源程序的描述語言并不僅僅限定為C語言。例如,即便在采用匯編語言等其他的編程語言時(shí),本發(fā)明的意義也保持不變。(2)在上述實(shí)施方式1及實(shí)施方式2中,假定了面向高級(jí)語言的編譯程序系統(tǒng),但是本發(fā)明并不限定于此。例如,在以匯編程序?yàn)檩斎氲膮R編優(yōu)化器或者匯編指令調(diào)度器中, 也可以同樣適用本發(fā)明。(3)在上述實(shí)施方式1及實(shí)施方式2中,作為目標(biāo)處理器假定了能夠在1個(gè)周期內(nèi)進(jìn)行4條指令發(fā)放,并且同時(shí)能夠使3個(gè)線程進(jìn)行并行動(dòng)作的處理器,但是本發(fā)明并不限定為該同時(shí)發(fā)放指令數(shù)及線程數(shù)。再者,作為同時(shí)發(fā)放指令數(shù)及線程數(shù)的變化,對于指令并行度為1的場合或者線程數(shù)為1的場合,也能夠適用本發(fā)明。(4)在上述實(shí)施方式1及實(shí)施方式2中,作為目標(biāo)處理器假定了超標(biāo)量處理器,但是本發(fā)明并不限定于此。對于VLIW處理器,也可以適用本發(fā)明。這種情況下,不僅僅使指令并行執(zhí)行效率提高,還有能夠按照處理器的動(dòng)作模式生成與各周期的發(fā)放限制相適合的指令串這樣的效果。(5)在上述實(shí)施方式1中,作為對指令調(diào)度指示輸入部的指示方法假定了編譯選項(xiàng),但是本發(fā)明并不限定為該指示方法。例如,也可以是在程序中,設(shè)為Spragma命令或偽指令來描述指示的方法,還可以是在編譯時(shí)編譯程序?qū)Τ绦騿T提示生成代碼備選由程序員選擇期望的代碼之類的指示方法。(6)在上述實(shí)施方式1中,作為對指令調(diào)度指示輸入部的指示內(nèi)容,假定了目標(biāo)處理器的多線程動(dòng)作模式,但是本發(fā)明并不限定為該指示內(nèi)容。例如,也可以是與處理器的其他動(dòng)作模式有關(guān)的指示。另外,也可以不是處理器的動(dòng)作模式,而直接指示指令調(diào)度方法。 再者,也可以直接指示指令并行度或者指令延遲時(shí)間之類的設(shè)定指令調(diào)度方法所用的值。(7)在上述實(shí)施方式1中,假定了通過指令調(diào)度方法設(shè)定部根據(jù)由程序員發(fā)出的指示的值,來設(shè)定指令調(diào)度方法,但是本發(fā)明的設(shè)定方法并不限定于此。例如,也可以采取事先保持下述表,通過參照該表來設(shè)定指令調(diào)度方法之類的方法,該表使圖7所示的那種指示的值(多線程動(dòng)作模式)和設(shè)定指令調(diào)度方法所用的值(指令并行度及指令延遲時(shí)間比)相關(guān)聯(lián)。
(8)在上述實(shí)施方式1及實(shí)施方式2中,假定了將下述延遲時(shí)間值使用于指令調(diào)度,該延遲時(shí)間值是在指令調(diào)度部中,通過將作為基準(zhǔn)的指令延遲時(shí)間表的延遲時(shí)間值除以由指令調(diào)度方法設(shè)定部所設(shè)定的延遲時(shí)間比而得到的。但是,本發(fā)明的延遲時(shí)間值導(dǎo)出方法并不限定于此。例如,也可以采取事先保持與處理器的多個(gè)多線程動(dòng)作模式的各自對應(yīng)的多個(gè)指令延遲時(shí)間表,通過參照與動(dòng)作模式相應(yīng)的表來獲得延遲時(shí)間值之類的方法。(9)在上述實(shí)施方式2中,假定了在多個(gè)代碼生成控制部中對于處理器的所有多線程模式重復(fù)處理,但是本發(fā)明并不限定于此。既可以重復(fù)針對處理器其他動(dòng)作模式變化的處理,也可以由編譯程序重復(fù)針對預(yù)先規(guī)定的指令調(diào)度參數(shù)或者算法變化的處理。(10)在上述實(shí)施方式2中,假定了在多個(gè)代碼生成控制部中生成多個(gè)代碼時(shí),在文件名的最后附加多線程動(dòng)作模式的編號(hào),但是本發(fā)明文件名的命名方法并不限定于此。 例如,既可以將多線程動(dòng)作模式的編號(hào)附加于文件名的起始,也可以附加預(yù)先規(guī)定的字符串或者在編譯程序內(nèi)部所生成的隨機(jī)數(shù)。(11)在上述實(shí)施方式2中,假定了在多個(gè)代碼生成控制部中生成與多個(gè)多線程動(dòng)作模式對應(yīng)的多個(gè)執(zhí)行形式文件,但是本發(fā)明可執(zhí)行代碼的輸出方法并不限定于此。也可以事先將與各動(dòng)作模式對應(yīng)的可執(zhí)行代碼結(jié)合于一個(gè)文件中進(jìn)行輸出,選擇在執(zhí)行環(huán)境下執(zhí)行哪個(gè)可執(zhí)行代碼。(12)也可以分別組合上述實(shí)施方式及上述異例。此次公示出的實(shí)施方式應(yīng)當(dāng)認(rèn)為,在所有方面是示例,并且不用來限制。本發(fā)明的范圍不是上面的說明,而是由權(quán)利要求書來表示,意圖包含和權(quán)利要求書均等的意義及范圍內(nèi)所有的變更。產(chǎn)業(yè)上的可利用性本發(fā)明可以適用于將用C語言等高級(jí)語言所描述的源程序變換為目標(biāo)處理器所對應(yīng)的機(jī)器語言程序的編譯程序系統(tǒng)等。符號(hào)說明1 編譯程序2指令調(diào)度指示輸入部3 分析部4優(yōu)化部41指令調(diào)度部411指令調(diào)度方法設(shè)定部5代碼生成部66多個(gè)代碼生成控制部101 源程序102 可執(zhí)行代碼
權(quán)利要求
1.一種程序變換裝置,用來將用高級(jí)語言或者匯編語言所描述的源程序變換為在目標(biāo)處理器中進(jìn)行動(dòng)作的機(jī)器語言代碼,其特征為,具備存儲(chǔ)部,存儲(chǔ)上述源程序;程序員指示輸入部,受理用來指定指令調(diào)度方法的程序員指示的輸入;以及指令調(diào)度部,有關(guān)對存儲(chǔ)在上述存儲(chǔ)部中的上述源程序所對應(yīng)的中間代碼進(jìn)行重新排列的指令調(diào)度,能夠?qū)嵤┗诙喾N指令調(diào)度方法的指令調(diào)度;上述指令調(diào)度部根據(jù)由上述程序員指示輸入部所受理的上述指示從上述多種指令調(diào)度方法之中選擇任一個(gè),執(zhí)行與選擇出的指令調(diào)度方法相應(yīng)的指令調(diào)度。
2.如權(quán)利要求1所述的程序變換裝置,其特征為,由上述程序員指示輸入部受理的上述指示是與上述目標(biāo)處理器的動(dòng)作模式有關(guān)的指
3.如權(quán)利要求2所述的程序變換裝置,其特征為, 上述目標(biāo)處理器是具備多線程執(zhí)行機(jī)構(gòu)的處理器,上述目標(biāo)處理器的動(dòng)作模式是與多線程動(dòng)作有關(guān)的動(dòng)作模式。
4.如權(quán)利要求3所述的程序變換裝置,其特征為,上述與多線程動(dòng)作有關(guān)的動(dòng)作模式是與分時(shí)進(jìn)行動(dòng)作的線程的個(gè)數(shù)或者在同一周期內(nèi)進(jìn)行動(dòng)作的線程的個(gè)數(shù)有關(guān)的指定。
5.如權(quán)利要求2所述的程序變換裝置,其特征為, 上述目標(biāo)處理器是超長指令字處理器,即VLIW處理器, 上述目標(biāo)處理器的動(dòng)作模式是VLIW處理器的動(dòng)作模式。
6.如權(quán)利要求1所述的程序變換裝置,其特征為,由上述程序員指示輸入部受理的上述指示是與指令調(diào)度方法有關(guān)的指示。
7.如權(quán)利要求6所述的程序變換裝置,其特征為, 上述目標(biāo)處理器是具備多線程執(zhí)行機(jī)構(gòu)的處理器,上述與指令調(diào)度方法有關(guān)的指示是與指令并行度有關(guān)的指示,該指令并行度表示在上述目標(biāo)處理器中,能夠按在同一周期內(nèi)進(jìn)行動(dòng)作的每1線程并行執(zhí)行的指令數(shù)。
8.如權(quán)利要求6所述的程序變換裝置,其特征為,上述與指令調(diào)度方法有關(guān)的指示是與指令延遲時(shí)間或者指令延遲時(shí)間比有關(guān)的信息, 該指令延遲時(shí)間是在上述目標(biāo)處理器中1條指令的執(zhí)行所用的需要周期數(shù),該指令延遲時(shí)間比是對于單線程模式下的指令延遲時(shí)間的指令延遲時(shí)間之比的倒數(shù)。
9.一種程序變換裝置,用來將用高級(jí)語言或者匯編語言所描述的源程序變換為在目標(biāo)處理器中進(jìn)行動(dòng)作的機(jī)器語言代碼,其特征為,具備存儲(chǔ)部,存儲(chǔ)上述源程序;指令調(diào)度部,有關(guān)對存儲(chǔ)在上述存儲(chǔ)部中的上述源程序所對應(yīng)的中間代碼進(jìn)行重新排列的指令調(diào)度,根據(jù)多種指令調(diào)度方法的各自來執(zhí)行指令調(diào)度;以及代碼生成部,將由上述指令調(diào)度部根據(jù)上述多種指令調(diào)度方法進(jìn)行指令調(diào)度后的多種上述中間代碼,分別變換為機(jī)器語言代碼。
10.如權(quán)利要求9所述的程序變換裝置,其特征為,上述指令調(diào)度方法按上述目標(biāo)處理器的動(dòng)作模式的每種進(jìn)行了設(shè)置。
11.如權(quán)利要求10所述的程序變換裝置,其特征為, 上述目標(biāo)處理器是具備多線程執(zhí)行機(jī)構(gòu)的處理器,上述目標(biāo)處理器的動(dòng)作模式是與多線程動(dòng)作有關(guān)的動(dòng)作模式。
12.如權(quán)利要求11所述的程序變換裝置,其特征為,上述與多線程動(dòng)作有關(guān)的動(dòng)作模式是與分時(shí)進(jìn)行動(dòng)作的線程的個(gè)數(shù)或者在同一周期內(nèi)進(jìn)行動(dòng)作的線程的個(gè)數(shù)有關(guān)的指定。
13.如權(quán)利要求10所述的程序變換裝置,其特征為, 上述目標(biāo)處理器是超長指令字處理器,即VLIW處理器, 上述目標(biāo)處理器的動(dòng)作模式是VLIW處理器的動(dòng)作模式。
14.如權(quán)利要求9所述的程序變換裝置,其特征為, 上述目標(biāo)處理器是具備多線程執(zhí)行機(jī)構(gòu)的處理器,上述指令調(diào)度方法按指令并行度的每個(gè)值進(jìn)行了設(shè)置,該指令并行度表示在上述目標(biāo)處理器中,能夠按在同一周期內(nèi)進(jìn)行動(dòng)作的每1線程并行執(zhí)行的指令數(shù)。
15.如權(quán)利要求9所述的程序變換裝置,其特征為,上述指令調(diào)度方法按指令延遲時(shí)間的每個(gè)值進(jìn)行了設(shè)置,該指令延遲時(shí)間是用于在上述目標(biāo)處理器中執(zhí)行1條指令的所需周期數(shù)。
16.一種程序變換方法,通過計(jì)算機(jī),將用高級(jí)語言或者匯編語言所描述的源程序變換為在目標(biāo)處理器中進(jìn)行動(dòng)作的機(jī)器語言代碼,其特征為,包含程序員指示輸入步驟,受理用來指定指令調(diào)度方法的程序員指示的輸入;以及指令調(diào)度步驟,有關(guān)對上述源程序所對應(yīng)的中間代碼進(jìn)行重新排列的指令調(diào)度,能夠?qū)嵤┗诙喾N指令調(diào)度方法的指令調(diào)度;在上述指令調(diào)度步驟中,根據(jù)在上述程序員指示輸入步驟中所受理的上述指示從上述多種指令調(diào)度方法之中選擇任一個(gè),執(zhí)行與選擇出的指令調(diào)度方法相應(yīng)的指令調(diào)度。
17.一種程序變換方法,通過計(jì)算機(jī),將用高級(jí)語言或者匯編語言所描述的源程序變換為在目標(biāo)處理器中進(jìn)行動(dòng)作的機(jī)器語言代碼,其特征為,包含指令調(diào)度步驟,有關(guān)對上述源程序所對應(yīng)的中間代碼進(jìn)行重新排列的指令調(diào)度,根據(jù)多種指令調(diào)度方法的各自來執(zhí)行指令調(diào)度;以及代碼生成步驟,將由上述指令調(diào)度部根據(jù)上述多種指令調(diào)度方法進(jìn)行指令調(diào)度后的多種上述中間代碼,分別變換為機(jī)器語言代碼。
18.—種程序,其特征為,使計(jì)算機(jī)執(zhí)行權(quán)利要求16或17任一項(xiàng)所述的程序變換方法具備的各步驟。
19.一種記錄介質(zhì),其特征為,記錄著權(quán)利要求18所述的程序,并且計(jì)算機(jī)可讀取。
全文摘要
編譯程序(1)能夠適應(yīng)近些年搭載了多線程功能的處理器,實(shí)施有效的指令調(diào)度以及控制由程序員做出的指令調(diào)度,其具備指令調(diào)度指示輸入部(2),受理用來指定指令調(diào)度方法的程序員指示的輸入;指令調(diào)度部(41),有關(guān)對源程序所對應(yīng)的中間代碼進(jìn)行排列的指令調(diào)度,能夠?qū)嵤┗诙喾N指令調(diào)度方法的指令調(diào)度;指令調(diào)度部(41)根據(jù)由指令調(diào)度指示輸入部(2)所受理的指示從多種指令調(diào)度方法之中選擇任一個(gè),執(zhí)行與選擇出的指令調(diào)度方法相應(yīng)的指令調(diào)度。
文檔編號(hào)G06F9/45GK102265257SQ20098015209
公開日2011年11月30日 申請日期2009年11月5日 優(yōu)先權(quán)日2008年12月25日
發(fā)明者川端輝雄, 瓶子岳人, 道本昌平 申請人:松下電器產(chǎn)業(yè)株式會(huì)社