專利名稱:源代碼處理方法、系統(tǒng)及程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在多處理器系統(tǒng)中使程序的執(zhí)行高速化的技術(shù)。
背景技術(shù):
近年來,在科學(xué)技術(shù)計(jì)算和仿真等領(lǐng)域中使用具有多個(gè)處理器的所謂多處理器系統(tǒng)。在這樣的系統(tǒng)中,應(yīng)用程序生成多個(gè)進(jìn)程來對(duì)各個(gè)處理器分配進(jìn)程。這些處理器例如利用共享的存儲(chǔ)器空間來一邊相互通信一邊進(jìn)行處理。最近,作為尤其盛行研發(fā)的仿真領(lǐng)域,有機(jī)器人、汽車、飛行器等的機(jī)械電子學(xué)的設(shè)備仿真用軟件。得益于電子零部件和軟件技術(shù)的發(fā)展,在機(jī)器人、汽車和飛行器等領(lǐng)域中,大部分的控制利用象神經(jīng)一樣遍布的電線接線、無線LAN等以電子方式進(jìn)行。這就意味著要對(duì)原來的機(jī)械裝置內(nèi)置大量的控制軟件。因此,在研發(fā)產(chǎn)品時(shí),需要在控制程序的研發(fā)及其測試方面投入大量的時(shí)間、巨額的費(fèi)用和許多人員。為了進(jìn)行這樣的測試,以往所采用的技術(shù)有HILS (Hardware In the Loop Simulation:半實(shí)物仿真)。尤其是測試汽車整體的電子控制單元(ECU)的環(huán)境被稱為整車性能HILS。在整車性能HILS中,在實(shí)驗(yàn)室內(nèi),將真車的ECU連接在仿真發(fā)動(dòng)機(jī)、傳動(dòng)機(jī)構(gòu)等的專用的硬件裝置上,按照規(guī)定的腳本進(jìn)行測試。來自ECU的輸出被輸入到監(jiān)視用的計(jì)算機(jī),進(jìn)而顯示在顯示器,測試擔(dān)當(dāng)者一邊注視顯示器,一邊確認(rèn)是否有異常動(dòng)作。但是,HILS必須使用專用的硬件裝置,并在其與真車的E⑶之間進(jìn)行物理配線,因此準(zhǔn)備非常麻煩。而且,要替換其他ECU進(jìn)行測試,需要重新進(jìn)行物理連接,因此花費(fèi)功夫。 而且,由于是使用真車的ECU進(jìn)行的測試,測試需要實(shí)時(shí)。因此,在測試許多腳本時(shí),花費(fèi)龐大的時(shí)間。HILS的仿真用硬件裝置通常價(jià)格非常高。因此,近年來,提出不使用高價(jià)的仿真用硬件裝置,而是由軟件構(gòu)成的方法。該方法被稱為SILS (Software In the Loop Simulation),是將搭載于ECU上的微型計(jì)算機(jī)、輸入輸出電路、控制的腳本、發(fā)動(dòng)機(jī)、傳動(dòng)系統(tǒng)等設(shè)備全部用軟件仿真構(gòu)成的技術(shù)。據(jù)此,即使不存在ECU的硬件,也能執(zhí)行測試。作為這樣的支援SILS構(gòu)筑的系統(tǒng),例如有可從CYBERNET SYSTEMS CO.,LTD獲得的仿真建模系統(tǒng)即MATLAB(R)/Simulink㈨。當(dāng)使用MATLAB(R)/Simulink(R)時(shí),如圖1所示,在畫面上由圖形界面配置功能模塊A、B、…J,如箭頭那樣指定其處理流程,據(jù)此能夠做成仿真程序。這樣在MATLAB (R)/Simulink(R)上做成模塊A、B、’"J等的方框圖時(shí),能夠利用 Real-Time Workshop (R)的功能轉(zhuǎn)換為等價(jià)功能的C語言的源代碼。通過對(duì)該C語言的源代碼進(jìn)行編譯,能夠在其他的計(jì)算機(jī)系統(tǒng)中也能執(zhí)行作為SILS的仿真。特別是其他的計(jì)算機(jī)系統(tǒng)使多處理器系統(tǒng)時(shí),在可能的情況下對(duì)處理進(jìn)行分割, 對(duì)各個(gè)處理器分配不同的進(jìn)程進(jìn)行并行處理,這樣有利于提高處理速度。為此,以往公知有CP調(diào)度方法。在此,CP是指關(guān)鍵路徑(Critical Path)。當(dāng)利用CP調(diào)度方法時(shí),圖1所示的方框圖變換為圖2所示的任務(wù)圖表。從圖可知,圖2的任務(wù)圖表是縱四列,將各個(gè)列的處理并行地分配給不同的4個(gè)CPU,與用1個(gè)CPU進(jìn)行處理時(shí)相比,實(shí)質(zhì)上能夠達(dá)到2倍的處理速度。但是,圖2中B — D —冊(cè)一J這一路徑是關(guān)鍵路徑,不能將整體的處理時(shí)間縮短少于處理該關(guān)鍵路徑的CPU的時(shí)間。在日本特開平6-83608號(hào)公報(bào)中公開如下內(nèi)容利用關(guān)鍵路徑解析部找出并行計(jì)算機(jī)中程序執(zhí)行的成為瓶頸的部位。在日本特開平7-21240號(hào)公報(bào)中公開由如下裝置構(gòu)成的系統(tǒng)關(guān)鍵路徑提取裝置,關(guān)于邏輯電路的布局設(shè)計(jì),為了在縮短關(guān)鍵路徑的同時(shí)使橫切切分線的網(wǎng)絡(luò)數(shù)最小,而提取關(guān)鍵路徑;做成切分線的切分線作成裝置;合并對(duì)象選擇裝置,根據(jù)各模塊的結(jié)合度和關(guān)鍵路徑信息來決定各模塊的合并對(duì)象;合并裝置,根據(jù)由合并對(duì)象選擇裝置求出的各模塊的合并對(duì)象進(jìn)行模塊的合并;為了使橫切切分線的網(wǎng)絡(luò)數(shù)最小而進(jìn)行對(duì)偶交換的對(duì)偶 (pair-wise)裝置。在日本特開平8-180100號(hào)公報(bào)中公開了如下內(nèi)容針對(duì)隨著機(jī)械分配產(chǎn)生的作業(yè)調(diào)度問題,通過生成高效率的鄰域,與近似解法組合,從而來高速求出最優(yōu)解。在日本特開平6-83608號(hào)公報(bào)及日本特開平8-180100號(hào)公報(bào)中只不過公開了任務(wù)調(diào)度的概要。在日本特開平7-21240號(hào)公報(bào)中對(duì)在邏輯電路的布局設(shè)計(jì)中縮短關(guān)鍵路徑的技術(shù)進(jìn)行了說明,但這是物理布局上的關(guān)鍵路徑,不能適用于軟件的邏輯上的關(guān)鍵路徑的處理。專利文獻(xiàn)1 日本特開平6-83608號(hào)公報(bào)專利文獻(xiàn)2 日本特開平7-21240號(hào)公報(bào)專利文獻(xiàn)3 日本特開平8-180100號(hào)公報(bào)
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于提供一種在多處理器系統(tǒng)中通過并行化來使程序的執(zhí)行高速化的技術(shù)。通過將想要高速化的程序的關(guān)鍵路徑適當(dāng)切分、分為其他進(jìn)程,并分配給各個(gè)處理器,從而來達(dá)到上述目的。據(jù)此,能夠輸出用于仿真的投機(jī)執(zhí)行的最優(yōu)代碼。S卩,本發(fā)明的處理程序讀取由多個(gè)處理塊構(gòu)成的、想要高速化的程序源代碼,通過對(duì)關(guān)鍵路徑的可能的切分全部進(jìn)行測試來找出作為結(jié)果的切分后處理塊的流程的處理時(shí)間最短的切分。為了可實(shí)現(xiàn)這樣的處理時(shí)間的估計(jì),預(yù)先將處理程序編譯,進(jìn)行測量各處理塊的執(zhí)行時(shí)間及其他值的階段。此時(shí)測量的值也包括如下這樣的測量數(shù)據(jù)在跨越進(jìn)行不同處理的處理器時(shí)的信息傳遞成本、用于投機(jī)執(zhí)行所必須的處理、投機(jī)失敗時(shí)的重算的成本以及對(duì)各模塊的輸入預(yù)測命中何種程度(即投機(jī)成功概率)。對(duì)切分結(jié)果的路徑遞歸地應(yīng)用關(guān)鍵路徑的可切分處理。于是,雖然進(jìn)一步切分,但加上處理器之間的通信時(shí)間等,有時(shí)整體的處理時(shí)間反而變長,在這種情況下停止切分。據(jù)此,得到多個(gè)處理塊的組。尤其是在本說明書的說明中,將各處理塊的組稱為模塊組(block chunk)ο
若這樣分割生成的模塊組的個(gè)數(shù)與多處理器系統(tǒng)的處理器的個(gè)數(shù)相同或少于處理器的個(gè)數(shù),則各個(gè)模塊組直接被編譯而按執(zhí)行環(huán)境被分別分配給各個(gè)處理器。但是,若模塊組的個(gè)數(shù)多于處理器的個(gè)數(shù),則本發(fā)明的處理程序,嘗試將模塊組結(jié)合,以使模塊組的個(gè)數(shù)等于處理器的個(gè)數(shù)。此時(shí),優(yōu)選是選擇結(jié)果結(jié)合成的模塊組中的關(guān)鍵路徑的處理時(shí)間的最大值為最小這樣的結(jié)合。這樣結(jié)果的模塊組被編譯而在實(shí)際環(huán)境下分別分配給各個(gè)處理器。這樣一來,對(duì)所有模塊組的每一個(gè)模塊組分配一個(gè)處理器,進(jìn)行最優(yōu)的并行處理。如上所述,根據(jù)本發(fā)明,在多處理器環(huán)境中,可實(shí)現(xiàn)對(duì)關(guān)鍵路徑的長度和處理器分配這兩方面均改善了的高速的程序執(zhí)行。能夠輸出用于仿真的投機(jī)執(zhí)行的最優(yōu)代碼。
圖1是表示仿真建模工具的方框圖的例子的圖。圖2是表示CP調(diào)度方法的例子的圖。圖3是用于實(shí)施本發(fā)明的硬件的框圖。圖4是本發(fā)明一實(shí)施例的功能框圖。圖5是表示本發(fā)明一實(shí)施例的處理流程的圖。圖6是切分關(guān)鍵路徑的處理的流程圖。圖7是切分關(guān)鍵路徑的處理的流程圖。圖8是切分關(guān)鍵路徑的處理的例子的示意圖。圖9是表示包括投機(jī)時(shí)的期待執(zhí)行時(shí)間的圖。圖10是模塊組形成處理的例子的示意圖。圖11是CPU分配用代碼生成處理的流程圖。圖12是CPU分配用代碼生成處理的流程圖。圖13是模塊組結(jié)合處理的例子的示意圖。圖14是模塊組結(jié)合處理的例子的示意圖。圖15是用于說明模塊之間的依存關(guān)系的圖。附圖標(biāo)記的說明404源代碼406、422 編譯器
412 “關(guān)鍵路徑的切分”模組416 "CPU分配用代碼生成”模組418 CPU 代碼420依存關(guān)系信息
具體實(shí)施例方式以下,參照附圖來說明本發(fā)明一實(shí)施例的構(gòu)成及處理。在以下的說明中,只要沒有特別否定,在附圖中對(duì)同樣構(gòu)件標(biāo)注相同附圖標(biāo)記用來參考。在此說明的構(gòu)成和處理是作為一實(shí)施例來說明,應(yīng)理解到不是想要將本發(fā)明的保護(hù)范圍限定解釋為該實(shí)施例。接著,參照?qǐng)D3,說明用于實(shí)施本發(fā)明所使用的計(jì)算機(jī)的硬件。在圖5中,主機(jī)總線302上連接有多個(gè)CPUl 304a、CPU2 304b、CPU3304c、…CPUn 304η。主機(jī)總線502上還連接有用于進(jìn)行CPUl 304a、CPU2 304b、CPU3 304c,…CPUn 30 的運(yùn)算處理的主存儲(chǔ)器 306。另一方面,I/O總線308上連接有鍵盤310、鼠標(biāo)312、顯示器314及硬盤驅(qū)動(dòng)器 316。I/O總線308經(jīng)由I/O橋318與主機(jī)總線302連接。鍵盤310及鼠標(biāo)312是為了操作者敲入指令、單擊菜單等進(jìn)行操作而使用的。顯示器314是為了根據(jù)需要顯示用于用GUI 操作后述的本發(fā)明的程序的菜單而使用的。作為為了該目的使用的優(yōu)選的計(jì)算機(jī)系統(tǒng)的硬件,有IBM(R)System X。此時(shí), CPUl 304a、CPU2 304b、CPU3 304c、... CPUn304n 例如是因特爾(R) Xeon (R),操作系統(tǒng)是 Windows (商標(biāo))Server 2003。操作系統(tǒng)存儲(chǔ)于硬盤驅(qū)動(dòng)器316中,在計(jì)算機(jī)系統(tǒng)啟動(dòng)時(shí), 從硬盤驅(qū)動(dòng)器316讀取到主存儲(chǔ)器306。另外,為了實(shí)施本發(fā)明可使用的計(jì)算機(jī)系統(tǒng)的硬件,不限于IBM(R)System X,至少能運(yùn)行本發(fā)明的仿真程序,可以使用任意計(jì)算機(jī)系統(tǒng)。操作系統(tǒng)也不限于Windows(R),可以使用Linux(R)、Mac OS(R)等任意操作系統(tǒng)。而且,為了使仿真程序高速工作,也可以使用 POWER (商標(biāo))6為基礎(chǔ),操作系統(tǒng)為AIX (商標(biāo))的IBM(R)System P等的計(jì)算機(jī)系統(tǒng)。在硬盤驅(qū)動(dòng)器316中還存儲(chǔ)有MATLAB (R)/Simulink (R)、C編譯器或C++編譯器、 用于切分本發(fā)明的關(guān)鍵路徑的模組、CPU分配用代碼生成模組、用于測量處理塊的期待執(zhí)行時(shí)間的模組等,響應(yīng)操作者的鍵盤或鼠標(biāo)操作而載入到主存儲(chǔ)器306來執(zhí)行。另外,可使用的仿真建模工具不限于MATLAB (R) /Simulink(R),可以使用開放源的 Scilab/Scicos等任意的仿真建模工具?;蛘撸鶕?jù)情況,可以不使用仿真建模工具,而直接用C、C++寫出仿真系統(tǒng)的源代碼,在該情況下也可應(yīng)用本發(fā)明。圖4是本發(fā)明的實(shí)施例的功能框圖。各個(gè)框基本上與存儲(chǔ)在硬盤驅(qū)動(dòng)器316中的模組對(duì)應(yīng)。在圖4 中,仿真建模工具 402 可以是 MATLAB (R)/Simulink(R)、kilab/Scicos 等現(xiàn)有的任意工具。仿真建模工具402基板上具有如下功能操作者在顯示器314上以⑶I 方式配置功能模塊,記述數(shù)學(xué)式等必要的屬性,根據(jù)需要可以在功能模塊之間施加關(guān)聯(lián)地記述方框圖。仿真建模工具402還具有如下功能輸出用于記述與所記述的方框圖等效功能的C的源代碼。除了 C之外,也可以使用C++、Fortran等。另外,仿真建模工具也可以導(dǎo)入到其他個(gè)人計(jì)算機(jī),將在此生成的源代碼經(jīng)由網(wǎng)絡(luò)等下載到硬盤驅(qū)動(dòng)器316。如此輸出的源代碼404被保存于硬盤驅(qū)動(dòng)器316。源代碼404在編譯器406被編譯,作為編譯結(jié)果的可執(zhí)行的程序被送至測試模組408。測試模組408具有進(jìn)行執(zhí)行測試的功能和進(jìn)行投機(jī)測試的功能。在執(zhí)行測試中, 根據(jù)規(guī)定的腳本,測量圖1所示的各模塊的平均處理時(shí)間、處理器之間通信時(shí)間及投機(jī)成功概率。為了測量平均時(shí)間,優(yōu)選采用同一腳本執(zhí)行多次。其測量結(jié)果410為了在后面使用而保存于硬盤驅(qū)動(dòng)器316。在投機(jī)測試中根據(jù)其他的規(guī)定腳本投機(jī)執(zhí)行作為編譯結(jié)果的可執(zhí)行程序。通過重復(fù)其腳本,測量如下時(shí)間投機(jī)準(zhǔn)備的處理時(shí)間,即,在投機(jī)失敗進(jìn)行重算時(shí),用于進(jìn)行保存預(yù)測的輸入值這樣處理的時(shí)間;投機(jī)成功與否確認(rèn)的處理時(shí)間,即,進(jìn)行在實(shí)際的數(shù)據(jù)到來時(shí)確認(rèn)其是否與預(yù)測的數(shù)據(jù)一致的處理的時(shí)間;重算處理時(shí)間,即,得知投機(jī)失敗即預(yù)測的輸入與實(shí)際值不同時(shí),進(jìn)行停止基于錯(cuò)誤輸入進(jìn)行的處理、刪除數(shù)據(jù)等后續(xù)處理所需要的時(shí)間。這樣的值也作為測量結(jié)果410,為了在后面使用而保存于硬盤驅(qū)動(dòng)器316。關(guān)于投機(jī)成功概率,其實(shí)不實(shí)際進(jìn)行投機(jī)執(zhí)行也能算出該投機(jī)成功概率。在投機(jī)執(zhí)行中,在本來要到來的輸入到來之前執(zhí)行處理,因此預(yù)測該輸入執(zhí)行處理。因此,投機(jī)成功的概率等于針對(duì)輸入的預(yù)測命中的概率。若規(guī)定了預(yù)測其輸入的算法,則實(shí)際不進(jìn)行投機(jī)執(zhí)行(即不進(jìn)行基于預(yù)測的輸入數(shù)據(jù)的模塊處理),僅從實(shí)際的輸入數(shù)據(jù)也能算出預(yù)測算法的預(yù)測成功概率。即,僅是在“執(zhí)行測試”中記錄對(duì)各模塊的輸入,根據(jù)該輸入數(shù)據(jù)序列算出輸入預(yù)測算法的預(yù)測成功率,從而能夠求出投機(jī)成功概率。另一方面,在進(jìn)行了投機(jī)執(zhí)行時(shí),或者投機(jī)執(zhí)行失敗了時(shí)會(huì)花費(fèi)怎樣程度的時(shí)間,不實(shí)際進(jìn)行投機(jī)執(zhí)行時(shí)不知道的。 因此,為了得到這些信息而進(jìn)行投機(jī)測試。但是,若規(guī)定投機(jī)執(zhí)行的安裝,則可預(yù)想到投機(jī)準(zhǔn)備、投機(jī)的成功與否確認(rèn)、投機(jī)失敗時(shí)的重算所需的處理時(shí)間是與輸入數(shù)據(jù)量成正比的處理時(shí)間。因此,在“投機(jī)測試”中,可以不對(duì)所有模塊進(jìn)行投機(jī)執(zhí)行,通過對(duì)嘗試對(duì)幾個(gè)輸入數(shù)據(jù)量不同的模塊進(jìn)行投機(jī)執(zhí)行,來得到輸入數(shù)據(jù)量與投機(jī)關(guān)聯(lián)處理時(shí)間的關(guān)系,可以基于此算出所有情況的成本?!瓣P(guān)鍵路徑的切分”模組412具有如下功能原則上按模塊單位對(duì)源代碼404進(jìn)行處理,找出關(guān)鍵路徑,進(jìn)行切分,找出成為最優(yōu)執(zhí)行時(shí)間的切分。此時(shí),使用測量結(jié)果410的信息。模組412還遞歸地應(yīng)用關(guān)鍵路徑的切分功能,得到如圖10所示的分成小塊的模塊組。 這樣生成的模塊組的信息414為了在后面使用而保存于硬盤驅(qū)動(dòng)器316。關(guān)于關(guān)鍵路徑的切分功能,后面參照流程圖詳細(xì)說明。"CPU分配用代碼生成”模組416使用模塊組的信息414和測量結(jié)果410生成分配給CPUl CPUn的代碼418a、418b、…418m。如果模塊組的個(gè)數(shù)少于或等于CPUl CPUn 的個(gè)數(shù),則各模塊組的代碼直接分配給CPUl CPUn。但是,如果模塊組的個(gè)數(shù)多于CPUl CPUn的個(gè)數(shù),則如圖14示意所示,將模塊組彼此結(jié)合,以使得模塊組的個(gè)數(shù)等于CPUl CPUn的個(gè)數(shù)。但是,此時(shí)的結(jié)合優(yōu)選是以使作為結(jié)果的關(guān)鍵路徑的期待執(zhí)行時(shí)間為最少的方式最優(yōu)選擇。關(guān)于CPU分配用代碼生成功能,也是后面參照流程圖詳細(xì)說明。結(jié)果所生成的是分配給CPUl CPUn的代碼418a、418b、…418m和依存關(guān)系信息420。依存關(guān)系信息420是必須的,其理由如下所示。即,如圖10所示,原本的處理流程被關(guān)鍵路徑的切分功能分?jǐn)?,則有時(shí)原本的模塊之間的依存關(guān)系被切斷。為了對(duì)其補(bǔ)償,模組416也提供例如分配給CPUl CPUn的代碼418a、418b、…418m中的某個(gè)代碼返回到在其他某一代碼所使用的變量、等這樣的依存關(guān)系信息420。實(shí)際上,依存關(guān)系信息420是由 “關(guān)鍵路徑的切分”模組412在切分時(shí)作出的,因此“CPU分配用代碼生成”模組416利用該 fn息ο這樣生成的代碼418a、4imK…418m在編譯器422被分別編譯成可執(zhí)行的程序, 在執(zhí)行環(huán)境424以在對(duì)應(yīng)的CPUl CPUn上并行執(zhí)行的方式被分別分配。依存關(guān)系信息 420以可被CPUl CPUn共用參照的方式配置在主存儲(chǔ)器306的共用存儲(chǔ)器區(qū)域,CPUl CPUn執(zhí)行代碼418a、418b、…418m時(shí),根據(jù)需要,為了參照在其他CPU上執(zhí)行的代碼的信息而使用上述依存關(guān)系信息。圖5表示該實(shí)施例的整體處理流程。應(yīng)理解到,這是表示作業(yè)順序的流程,未必是與計(jì)算機(jī)的處理流程一一對(duì)應(yīng)的。在圖5中,在步驟502中,開發(fā)者或作業(yè)者使用MATLAB(R)/Simulink(R)等仿真建模工具402,在圖3所示的系統(tǒng)上或其他計(jì)算機(jī)上做成特定仿真對(duì)象的方框圖。在步驟504,開發(fā)者或作業(yè)者使用仿真建模工具402的功能生成與作成的方框圖對(duì)應(yīng)的源代碼404,并保存于硬盤驅(qū)動(dòng)器316。在步驟506,開發(fā)者或作業(yè)者使用編譯器406編譯源代碼404。編譯出的可執(zhí)行的程序未圖示,暫時(shí)保存于硬盤驅(qū)動(dòng)器316。在步驟508,開發(fā)者或作業(yè)者使用編譯出的執(zhí)行程序在測試模組408進(jìn)行執(zhí)行測試。結(jié)果得到的模塊的平均處理時(shí)間、處理器之間通信時(shí)間以及投機(jī)成功概率的執(zhí)行時(shí)間的測量數(shù)據(jù)在步驟510作為測量結(jié)果410而保存于硬盤驅(qū)動(dòng)器316。在步驟512,開發(fā)者或作業(yè)者使用編譯出的執(zhí)行程序在測試模組408進(jìn)行投機(jī)測試。結(jié)果得到的投機(jī)準(zhǔn)備的處理時(shí)間、投機(jī)成功與否確認(rèn)的處理時(shí)間以及重算處理時(shí)間的測量數(shù)據(jù)在步驟514作為測量結(jié)果410而保存于硬盤驅(qū)動(dòng)器316。在步驟516,響應(yīng)開發(fā)者或作業(yè)者的操作而開始計(jì)算機(jī)的處理。即,基本上從步驟 516到步驟524自動(dòng)進(jìn)行計(jì)算機(jī)的處理。在步驟516,由“關(guān)鍵路徑的切分”模組412處理源代碼404。具體的處理將后述,通過算法找出源代碼404記述的整體處理流程中的關(guān)鍵路徑,按照處理時(shí)間將其最優(yōu)切分, 在切分后的處理流程中遞歸地進(jìn)行切分關(guān)鍵路徑這樣的處理。此時(shí),使用測量結(jié)果410。結(jié)果,得到圖10所示的多個(gè)模塊組,因此在步驟518,與其相關(guān)的信息作為模塊組 414被保存于硬盤驅(qū)動(dòng)器316。此時(shí)保存的數(shù)據(jù)構(gòu)造,可以使用XML等計(jì)算機(jī)可讀的、可表現(xiàn)出源代碼和內(nèi)容和連結(jié)關(guān)系(鏈接)這兩方面內(nèi)容的任意的數(shù)據(jù)構(gòu)造。在步驟520,使用模塊組414的信息,“CPU分配用代碼生成”模組416生成用于分別分配給CPUl CPUn的代碼。即,如果模塊組的個(gè)數(shù)少于CPUl CPUn的個(gè)數(shù),則直接將代碼逐個(gè)地分配給CPUl CPUn。而如果模塊組的個(gè)數(shù)多于CPUl CPUn的個(gè)數(shù),則將模塊組以執(zhí)行時(shí)間上成為最短的方式結(jié)合成與CPUl CPUn的個(gè)數(shù)相等。此時(shí),使用測量結(jié)果 410。在步驟522,由模組416生成的代碼被編譯器422編譯,在步驟5 中,分別將代碼分配給對(duì)應(yīng)的處理器CPUl CPUn,分別執(zhí)行。參照?qǐng)D6和圖7的流程圖,說明與圖5的步驟516對(duì)應(yīng)的、關(guān)鍵路徑的切分的處理。在步驟602,進(jìn)行找出關(guān)鍵路徑的最優(yōu)切分這樣的處理。在此,為了說明最優(yōu)切分是指什么,參照?qǐng)D8。在圖8表示由模塊A I構(gòu)成的處理的流程。在此,利用找出關(guān)鍵路徑的算法, 特定了 B-C-D-E-F為關(guān)鍵路徑,則在步驟602,“關(guān)鍵路徑的切分”模組412依次嘗試沿 B-C-D-E-F的可進(jìn)行的切分cl、c2、c3、c4。例如,嘗試切分c3是指在c3處將關(guān)鍵路徑切分,如圖8所示,邏輯上將切分下來的流程移至旁邊。于是,成為2個(gè)流程并置。在此評(píng)價(jià)切分c3。評(píng)價(jià)切分c3是指若假定投機(jī)成功概率為100%,則比較并置的2個(gè)流程的期待執(zhí)行時(shí)間,評(píng)價(jià)時(shí)間較長一方的值T。。但是,通常投機(jī)成功概率低于100%,因此如圖9所說
10明的那樣,考慮到投機(jī)成功概率來評(píng)價(jià)T。。將使這樣的T。成為最短的切分成為最優(yōu)切分。用于找出最優(yōu)切分的更詳細(xì)處理(子程序)在后面參照?qǐng)D7的流程圖進(jìn)行說明。另外,在圖5的步驟508所示的執(zhí)行測試中預(yù)測各模塊的期待執(zhí)行時(shí)間,作為測量結(jié)果410保存于硬盤驅(qū)動(dòng)器316。應(yīng)注意到在計(jì)算所要的流程的期待執(zhí)行時(shí)間時(shí)使用這樣的測量結(jié)果410。實(shí)際上,為了估計(jì)執(zhí)行時(shí)間,僅是單純地沿流程執(zhí)行模塊的期待執(zhí)行時(shí)間是不夠的。參照?qǐng)D9說明該問題。在此,定義如下的變量。在此,成本可以視作時(shí)間。MSCxy 模塊X與模塊Y被切分時(shí)的、從模塊X到模塊Y的消息發(fā)送成本。MRCxy 模塊X與模塊Y被切分時(shí)的、從模塊X到模塊Y的信息接收成本。SCxy 從模塊X到模塊Y的投機(jī)成本。SCCxy 從模塊X到模塊Y的投機(jī)確認(rèn)成本。RBCxy 從模塊X到模塊Y的投機(jī)失敗了時(shí)的重算成本。這些模塊之間的成本也是在圖5的步驟508所示的執(zhí)行測試及步驟512所示的投機(jī)測試中預(yù)測,作為測量結(jié)果410而保存于硬盤驅(qū)動(dòng)器316。于是,在關(guān)鍵路徑B-C-D-E-F的C和D之間插入切分c,需要如圖9所示那樣根據(jù)投機(jī)成功時(shí)和投機(jī)失敗時(shí)的期待值估計(jì)結(jié)果的期待執(zhí)行時(shí)間。在投機(jī)成功時(shí),切分的結(jié)果的2個(gè)流程的較長一方的執(zhí)行時(shí)間成為結(jié)果的期待時(shí)間,為Tcs = ID I +1E I +1FI +SCcd+MRCif+MRCcd+SCCcd在此,例如ID I表示模塊D的執(zhí)行時(shí)間。另外,在投機(jī)失敗了時(shí),B-C和D-E-F是串聯(lián)執(zhí)行的,因此期待時(shí)間是Tcf = IB I +1 CI +1D I +1E I +1FI +MRCac+MSCcd+MRCcd+RBCcd+MRCif但是,這樣的投機(jī)的成功概率ρ。在圖5的步驟508所示的執(zhí)行測試中預(yù)測,作為測量結(jié)果410保存于硬盤驅(qū)動(dòng)器316。使用該結(jié)果,計(jì)算結(jié)果的期待執(zhí)行時(shí)間為T。= PcTcs+(I-Pc) Tcf。返回圖6的流程圖,利用步驟602的處理結(jié)果,在步驟604“關(guān)鍵路徑的切分”模組 412判斷是否存在最優(yōu)切分。存在最優(yōu)切分是指切分的結(jié)果縮短了整體的期待處理時(shí)間。 在任何情況下切分未必都縮短處理時(shí)間。即,鑒于上述的發(fā)送成本、接收成本及投機(jī)成本, 有時(shí)即使切分也不能縮短處理時(shí)間。在這樣的情況下,在步驟604判斷為不存在最優(yōu)切分, 在步驟606中,將當(dāng)前評(píng)價(jià)的模塊組的信息優(yōu)選保存于硬盤驅(qū)動(dòng)器316。另一方面,在步驟604判斷為存在最優(yōu)切分時(shí),“關(guān)鍵路徑的切分”模組412在步驟 608移動(dòng)切分后的模塊。這是圖8所示的處理。在步驟610,對(duì)于切分后而成的路徑的整個(gè)集合,遞歸地調(diào)出圖6的流程圖的處理。用圖8的框圖進(jìn)行說明,首先對(duì)于模塊A、B、C、D、E、F、G、H、I應(yīng)用圖6的流程圖的處理,結(jié)果分成模塊A、B、C、D、E、F和模塊G、H、I,因此,遞歸地調(diào)出圖6的流程圖的處理。接著,參照?qǐng)D7的流程圖更詳細(xì)說明圖6的步驟602的處理。在步驟702,進(jìn)行找出關(guān)鍵路徑的處理。對(duì)于處理流程找出關(guān)鍵路徑的處理本身是公所周知的,例如可使用http//www. koRures. com/hitoshi/webtext/pt~pert/index, html 中記載的PERT的方法等。在步驟704,設(shè)置為tmin =沿關(guān)鍵路徑的期待時(shí)間,Cmin = null, C =關(guān)鍵路徑的可切分的集合。在步驟706,判斷C是否為空,若不為空,則進(jìn)入步驟708,從C取出切分C。在步驟710,計(jì)算切分c的期待執(zhí)行時(shí)間,將其代入t。。在此的執(zhí)行時(shí)間的計(jì)算包括與圖9相關(guān)的說明的、投機(jī)執(zhí)行的情況。在步驟712,判斷是否是 tc < tmin,若 tc < tmin,則在步驟 714,設(shè) tmin = tc, Cfflin =
Co這樣一來,對(duì)于C的所有切分,執(zhí)行步驟708、710、712及714,結(jié)果的Cmin返回圖6 的步驟602。此時(shí),存在C中某種切分使處理時(shí)間不短于tmin =沿關(guān)鍵路徑的期待時(shí)間的情況。這樣的情況下,在步驟712的判斷不是肯定,因此不執(zhí)行步驟714,因此Cmin = null保持不變。于是,圖6的步驟604的判斷為否定。圖10示意地表示這樣的處理的結(jié)果。圖10的左側(cè)所示的模塊的處理流程被圖6 的流程圖所示的處理的遞歸過程在多個(gè)部位切分,如圖10的右側(cè)所示,得到細(xì)分化的多個(gè)模塊組。接著,參照?qǐng)D11和圖12的流程圖說明與圖5的步驟520對(duì)應(yīng)的CPU分配代碼生成的處理。這是由圖4的“CPU分配用代碼生成”模組416執(zhí)行的。在步驟1102,設(shè)置p =處理器(CPU)的個(gè)數(shù),b =模塊組的個(gè)數(shù)。在步驟1104,判斷是否是ρ <b。若其結(jié)果是否定的,即ρ彡b,則具有可以直接將模塊組分別分配的個(gè)數(shù)的處理器,因此,在步驟1106中,適當(dāng)?shù)貙⒏鱾€(gè)模塊組分配給各個(gè)處理器,結(jié)束處理。在步驟1104,若判斷是? < b,則表示要直接將模塊組分別分配,處理器的個(gè)數(shù)不夠,因此在步驟1108將2個(gè)模塊組結(jié)合,進(jìn)行減少1個(gè)模塊組的個(gè)數(shù)的處理。將2個(gè)模塊組結(jié)合,有時(shí)存在在結(jié)合的模塊組處關(guān)鍵路徑延長而期待處理時(shí)間變長的情況。因此,在步驟1108中,找出將2個(gè)模塊組結(jié)合的結(jié)果的期待處理時(shí)間成為最短這樣的最優(yōu)的組合方式。圖14示意地表示這樣的處理。在步驟1110中,b減去1,返回步驟1104的判斷。這樣一來,直到ρ = b,反復(fù)進(jìn)行步驟1108和步驟1110。當(dāng)ρ = b時(shí),步驟1104為否定。于是表示現(xiàn)在具有直接將模塊組分別分配的個(gè)數(shù)的處理器,在步驟1106中,將在該時(shí)刻保存的結(jié)果的各個(gè)模塊組分配于各個(gè)處理器,結(jié)束處理。另外,有時(shí)在想要將幾個(gè)CPU保留用于其它處理時(shí),進(jìn)一步減少模塊組的個(gè)數(shù),直到 b < ρ。圖12是更詳細(xì)地表示圖11的步驟1108的處理的流程圖。在圖12中,在步驟1202 中,設(shè)置S1 =當(dāng)前的模塊組的集合,tmin = -,Ufflin = c ,I3l = Id2 = null。在此,①是指在該狀況下比實(shí)際上假定的個(gè)數(shù)大很多的適當(dāng)?shù)某?shù)。在步驟1204中,判斷S1是否為空,如果為空,則處理完成,返回圖11的流程圖的步驟1108。若S1不為空,則在步驟1206,從S1取出1個(gè)模塊組Sl。在步驟1208中,設(shè)置& =當(dāng)前的模塊組的集合。在步驟1210,判斷&是否為空,如果為空,則返回步驟1204。若&不為空,則在步驟1212,從&取出1個(gè)模塊組&。在步驟1214中,使用圖4所示的各模塊的測量結(jié)果410來計(jì)算將S2結(jié)合到S1之下時(shí)的執(zhí)行時(shí)間,并將其代入Tsls2。在此,^ = S1的情況省略。哪個(gè)模塊組都是原文的模塊的流程的一部分,因此有時(shí)在任意2個(gè)模塊組之間,能夠決定哪一方原本就位于上游。因此,優(yōu)選是在步驟1214,若能夠判定原文的上下游關(guān)系,則以維持其上下游關(guān)系的方式將2 個(gè)模塊組結(jié)合。在步驟1216中,判斷Tsls2是否等于Tmin。如果相等,則在步驟1218,計(jì)算將S2結(jié)合在S1下方時(shí)的期待成本,并代入usls2。在此,成本是指在對(duì)各模塊的執(zhí)行時(shí)間、跨過不同處理器的模塊之間的信息收發(fā)成本、投機(jī)成本、投機(jī)確認(rèn)成本、投機(jī)失敗時(shí)的重寫成本每次組合可投機(jī)成功與否時(shí)按投機(jī)成功概率賦予權(quán)重而算出的、所有CPU消耗時(shí)間的期待值。接著,在步驟1220中,判斷是否是Usls2 < Umin,若是,則在步驟1222,在Tmin = Tsls2, bi = Si、b2 = S2^ufflin中代入將&結(jié)合于S1之下時(shí)的期待成本。從步驟1222返回步驟1210 的判斷。另一方面,在步驟1216中,若Tsls2不等于Tmin,則進(jìn)入步驟1224,因此,判斷是否是八132<!1_。如果是則執(zhí)行步驟1222,然后返回步驟1210的判斷。若不是則直接從步驟 12M返回步驟1210的判讀。圖13表示模塊組的結(jié)合例。在該例子中,如圖所示,有模塊組bcl、bc2、bc3、bc4 這4個(gè)模塊組。于是,若不管原文的流程的上下游,則可有12種結(jié)合,但若將所有結(jié)合羅列說明太冗長,因此代表性地說明左下所示的、將bc3結(jié)合于bc2之下的情況和右下所示的將 bc4結(jié)合于bcl之下的情況。首先,將bc3結(jié)合于bc2之下時(shí),期待執(zhí)行時(shí)間tb。2b。3和期待成本ub。2b。3分別如下這樣計(jì)算。tbc2bc3 = IB I +1 CI +1D I +1E I +1FI +MRCac+MRCifUbc2bc3 = AI +1B I +1 CI +1D I +1E | +1F | +1GI +1HI + 111 +MRCac+MRCif+MSCac+MSCif另一方面,將bc4結(jié)合于bcl之下時(shí),期待執(zhí)行時(shí)間tb。lb。4和期待成本ub。lb。4分別如下這樣計(jì)算。tbclbc4 = P1P2 (ID I +1E I +1F | +SCcd+SCif+MRcd+SCCcd+MRCif+SCCif) +P1 (l_p2) (| A | + GI +1HI +111 +1 FI +MSAac+MSCif+MRCif+SCCif+RBCif) + (I-P1) (| B | +1 C | +1D | +1 E | +1 F | +MRC
ac+MSCcd+MRCcd+SCCcd+RBCcd+MRCif)Ubclbc4 = AI +1B I +1 CI +1D | +1E | +1F | +1G | +1H | +111 +P1P2 (SCcd+SCif+MRcd+SCCcd+M RCif+SCCif) +P1 (l-p2) (MSAac+MSCif+MRCif+SCCif+RBCif) + (I-P1) (MRCac+MSCcd+MRCcd+S CCcd+RBCcd+MRCif)在此,P1和p2是圖示的路徑中的投機(jī)成功概率。上述各個(gè)值都根據(jù)測量結(jié)果410而取得。圖14是表示如下處理的圖,具有模塊組bcl、bc2、bc3、bc4、bc5、bc6這6個(gè),在 CPU只有5個(gè)時(shí),為了減少1個(gè)模塊組,"CPU分配代碼生成”模組416嘗試將2個(gè)模塊組結(jié)合時(shí)的處理。圖14的左下表示bc6結(jié)合于bc4之下,其結(jié)果bc3給予整體最長的執(zhí)行時(shí)間tsls2。圖14的右下表示bc5結(jié)合于bcl之下,其結(jié)果bcl給予整體最長的執(zhí)行時(shí)間tsls2。
"CPU分配代碼生成”模組416對(duì)可能的所有模塊組的組合計(jì)算最長的執(zhí)行時(shí)間
tsls2,其結(jié)果是選出表示最短的tsls2的模塊組的結(jié)合。如此生成的每個(gè)CPU的代碼分別由編譯器422編譯而轉(zhuǎn)換為可執(zhí)行的代碼時(shí),暫時(shí)保存于硬盤驅(qū)動(dòng)器316。但是,若在原本相連的模塊的流程中插入切分,則有時(shí)切分的結(jié)果是各個(gè)模塊之間的依存關(guān)系被切斷,因此需要補(bǔ)償這樣的信息。圖15是用于說明這樣的依存關(guān)系的示意圖。在圖15中,設(shè)由模塊A及模塊C構(gòu)成的代碼成為codel、由模塊B及模塊D構(gòu)成的代碼成為code2、由模塊F、模塊H及模塊J構(gòu)成的代碼成為Code3、由模塊E、模塊G及模塊 I構(gòu)成的代碼成為code4。codel、code2、code3及code4的中段如圖15所示。于是,可以看出,分別使用 codel、code2及code4的最初的還原值作為code3的參數(shù)。該情況例如下述所記述。1st output of codel- > 1st argument of code31st output of code2- > 2nd argument of code31st output of code3- > 3rd argument of code3"CPU分配代碼生成”模組416在生成各個(gè)CPU分配用代碼時(shí),一并生成這樣的信
肩、ο依存關(guān)系信息包括各個(gè)CPU分配用代碼,可對(duì)編譯器422通知,但優(yōu)選是直接配置的執(zhí)行環(huán)境424的共享存儲(chǔ)器上等,CPUl CPUn執(zhí)行所分配的代碼時(shí),能夠參照依存關(guān)系
fn息ο這樣一來,通過操作者的操作,開始仿真動(dòng)作時(shí),被編譯的各CPU用的可執(zhí)行程序依次被執(zhí)行環(huán)境似4讀取到主存儲(chǔ)器306,執(zhí)行環(huán)境似4對(duì)各個(gè)處理器分配關(guān)于各個(gè)可執(zhí)行程序生成的進(jìn)程。這樣一來,由各個(gè)處理器并行執(zhí)行被分割為多個(gè)可執(zhí)行程序的仿真程序。在以上的實(shí)施例中,說明了基于使用仿真建模工具生成的程序源代碼,分配到多個(gè)CPU進(jìn)行并行處理,但本發(fā)明不限于這樣的仿真程序源代碼,如果能夠特定處理塊單位、 或記述其流程,就能應(yīng)用任意的源代碼。
權(quán)利要求
1.一種源代碼處理方法,其通過計(jì)算機(jī)處理來生成用于在多處理器系統(tǒng)中能夠并行執(zhí)行的源代碼,其特征在于,包括輸入程序源代碼的步驟;通過上述計(jì)算機(jī)處理來找出上述程序源代碼的處理的關(guān)鍵路徑的步驟;以及對(duì)上述關(guān)鍵路徑進(jìn)行切分來與上述多處理器系統(tǒng)的各個(gè)處理器對(duì)應(yīng)而分割上述源代碼的步驟。
2.根據(jù)權(quán)利要求1所述的源代碼處理方法,其特征在于,還包括對(duì)上述源代碼進(jìn)行編譯并執(zhí)行,且測量上述源代碼的處理塊單位的處理時(shí)間來進(jìn)行記錄的步驟,在上述分割源代碼的步驟中,使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行分割使所分割的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間至少比原來的源代碼的處理時(shí)間短。
3 根據(jù)權(quán)利要求2所述的源代碼處理方法,其特征在于,包括還測量跨不同處理的處理器時(shí)的信息傳遞成本、用于執(zhí)行投機(jī)所需的處理、投機(jī)失敗時(shí)的重算成本、以及對(duì)各模塊的輸入預(yù)測的準(zhǔn)確率是多少這樣的投機(jī)成功概率的數(shù)據(jù)來進(jìn)行記錄的步驟。
4.根據(jù)權(quán)利要求2所述的源代碼處理方法,其特征在于,在上述分割源代碼的步驟中,使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行分割使所分割的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間為最短。
5.根據(jù)權(quán)利要求1所述的源代碼處理方法,其特征在于,還包括輸出包含上述所分割的源代碼之間的變量和參數(shù)的依存關(guān)系信息在內(nèi)的信息的步驟。
6.根據(jù)權(quán)利要求2所述的源代碼處理方法,其特征在于,還包括以下步驟比較上述多處理器系統(tǒng)的處理器的個(gè)數(shù)與上述所分割的源代碼的個(gè)數(shù),響應(yīng)上述所分割的源代碼的個(gè)數(shù)多于處理器的個(gè)數(shù)的情況來結(jié)合上述所分割的源代碼,以使上述所分割的源代碼的個(gè)數(shù)等于或少于處理器的個(gè)數(shù)。
7.根據(jù)權(quán)利要求6所述的源代碼處理方法,其特征在于,在上述結(jié)合所分割的源代碼的步驟中,使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行結(jié)合使所結(jié)合的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間為最短。
8.根據(jù)權(quán)利要求1所述的源代碼處理方法,其特征在于,上述源代碼是利用仿真建模工具的功能來生成的,上述源代碼的處理塊單位與仿真建模工具上的方框圖的模塊對(duì)應(yīng)。
9.一種源代碼處理系統(tǒng),其通過計(jì)算機(jī)處理來生成用于在多處理器系統(tǒng)中能夠并行執(zhí)行的多個(gè)源代碼,其特征在于,包括記錄單元,其保存程序源代碼;找出單元,其通過上述計(jì)算機(jī)處理來讀取上述程序源代碼,從而找出該源代碼的處理的關(guān)鍵路徑;以及分割單元,其切分上述關(guān)鍵路徑來與上述多處理器系統(tǒng)的各個(gè)處理器對(duì)應(yīng)而分割上述源代碼。
10.根據(jù)權(quán)利要求9所述的源代碼處理系統(tǒng),其特征在于,還包括對(duì)上述源代碼進(jìn)行編譯并執(zhí)行,且測量上述源代碼的處理塊單位的處理時(shí)間來進(jìn)行記錄的單元,上述分割源代碼的單元使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行分割使所分割的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間至少比原來的源代碼的處理時(shí)間短。
11.根據(jù)權(quán)利要求10所述的源代碼處理系統(tǒng),其特征在于,上述測量處理時(shí)間來進(jìn)行記錄的單元還測量跨不同處理的處理器時(shí)的信息傳遞成本、 用于執(zhí)行投機(jī)所需的處理、投機(jī)失敗時(shí)的重算成本、以及對(duì)各模塊的輸入預(yù)測的準(zhǔn)確率是多少這樣的投機(jī)成功概率的數(shù)據(jù)來進(jìn)行記錄。
12.根據(jù)權(quán)利要求10所述的源代碼處理系統(tǒng),其特征在于,上述分割源代碼的系統(tǒng)使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行分割使所分割的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間為最短。
13.根據(jù)權(quán)利要求9所述的源代碼處理系統(tǒng),其特征在于,還包括輸出包含上述所分割的源代碼之間的變量和參數(shù)的依存關(guān)系信息在內(nèi)的信息的單元。
14.根據(jù)權(quán)利要求10所述的源代碼處理系統(tǒng),其特征在于,還包括結(jié)合單元,該結(jié)合單元比較上述多處理器系統(tǒng)的處理器的個(gè)數(shù)與上述所分割的源代碼的個(gè)數(shù),并響應(yīng)上述所分割的源代碼的個(gè)數(shù)多于處理器的個(gè)數(shù)的情況來結(jié)合上述所分割的源代碼,以使上述所分割的源代碼的個(gè)數(shù)等于或少于處理器的個(gè)數(shù)。
15.根據(jù)權(quán)利要求14所述的源代碼處理系統(tǒng),其特征在于,上述結(jié)合所分割的源代碼的結(jié)合單元使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行結(jié)合使所結(jié)合的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間為最短。
16.根據(jù)權(quán)利要求9所述的源代碼處理系統(tǒng),其特征在于,上述源代碼是利用仿真建模工具的功能來生成的,上述源代碼的處理塊單位與仿真建模工具上的方框圖的模塊對(duì)應(yīng)。
17.一種計(jì)算機(jī)系統(tǒng),其通過多處理器系統(tǒng)來執(zhí)行能夠并行執(zhí)行的多個(gè)程序,其特征在于,包括記錄單元,其保存程序源代碼;找出單元,其通過上述計(jì)算機(jī)處理來讀取上述程序源代碼,從而找出該源代碼的處理的關(guān)鍵路徑;分割單元,其切分上述關(guān)鍵路徑來與上述多處理器系統(tǒng)的各個(gè)處理器對(duì)應(yīng)而分割上述源代碼,編譯單元,其對(duì)上述所分割的源代碼進(jìn)行編譯;分配單元,其將上述所編譯的能夠執(zhí)行的程序分配給上述多處理器系統(tǒng)的各個(gè)處理器。
18.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)系統(tǒng),其特征在于,還包括對(duì)上述源代碼進(jìn)行編譯并執(zhí)行,且測量上述源代碼的處理塊單位的處理時(shí)間來進(jìn)行記錄的單元,上述分割源代碼的單元使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行分割使所分割的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間至少比原來的源代碼的處理時(shí)間短。
19.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)系統(tǒng),其特征在于,上述測量處理時(shí)間來進(jìn)行記錄的單元還測量跨不同處理的處理器時(shí)的信息傳遞成本、 用于執(zhí)行投機(jī)所需的處理、投機(jī)失敗時(shí)的重算成本、以及對(duì)各模塊的輸入預(yù)測的準(zhǔn)確率是多少這樣的投機(jī)成功概率的數(shù)據(jù)來進(jìn)行記錄。
20.根據(jù)權(quán)利要求18所述的計(jì)算機(jī)系統(tǒng),其特征在于,上述分割源代碼的系統(tǒng)使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行分割使所分割的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間為最短。
21.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)系統(tǒng),其特征在于, 還包括輸出包含上述所分割的源代碼之間的變量和參數(shù)的依存關(guān)系信息在內(nèi)的信息的單元;和使上述多處理器系統(tǒng)的各個(gè)處理器能夠參照上述依存關(guān)系信息來進(jìn)行載入的單元。
22.根據(jù)權(quán)利要求17所述的計(jì)算機(jī)系統(tǒng),還包括結(jié)合單元,該結(jié)合單元比較上述多處理器系統(tǒng)的處理器的個(gè)數(shù)與上述所分割的源代碼的個(gè)數(shù),并響應(yīng)上述所分割的源代碼的個(gè)數(shù)多于處理器的個(gè)數(shù)的情況來結(jié)合上述所分割的源代碼,以使上述所分割的源代碼的個(gè)數(shù)等于或少于處理器的個(gè)數(shù)。
23.一種程序,其通過計(jì)算機(jī)處理來生成用于在多處理器系統(tǒng)中能夠并行執(zhí)行的源代碼,其特征在于,使上述計(jì)算機(jī)執(zhí)行輸入程序源代碼的步驟;通過上述計(jì)算機(jī)處理來找出上述程序源代碼的處理的關(guān)鍵路徑的步驟;以及切分上述關(guān)鍵路徑來與上述多處理器系統(tǒng)的各個(gè)處理器對(duì)應(yīng)而分割上述源代碼的步驟。
24.根據(jù)權(quán)利要求1所述的程序,其特征在于,還包括對(duì)上述源代碼進(jìn)行編譯并執(zhí)行,且測量上述源代碼的處理塊單位的處理時(shí)間來進(jìn)行記錄的步驟,在上述分割源代碼的步驟中,使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行分割使所分割的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間至少比原來的源代碼的處理時(shí)間短。
25.根據(jù)權(quán)利要求M所述的程序,其特征在于,包括還測量跨不同處理的處理器時(shí)的信息傳遞成本、用于執(zhí)行投機(jī)所需的處理、投機(jī)失敗時(shí)的重算成本、以及對(duì)各模塊的輸入預(yù)測的準(zhǔn)確率是多少這樣的投機(jī)成功概率的數(shù)據(jù)來進(jìn)行記錄的步驟。
26.根據(jù)權(quán)利要求M所述的程序,其特征在于,在上述分割源代碼的步驟中,使用上述所記錄的處理時(shí)間來按以下方式進(jìn)行分割使所分割的源代碼中的期待處理時(shí)間最長的期待處理時(shí)間為最短。
27.根據(jù)權(quán)利要求M所述的程序,其特征在于,還包括以下步驟比較上述多處理器系統(tǒng)的處理器的個(gè)數(shù)與上述所分割的源代碼的個(gè)數(shù),響應(yīng)上述所分割的源代碼的個(gè)數(shù)多于處理器的個(gè)數(shù)的情況來結(jié)合上述所分割的源代碼,以使上述所分割的源代碼的個(gè)數(shù)等于或少于處理器的個(gè)數(shù)。
全文摘要
本發(fā)明提供一種源代碼處理方法、系統(tǒng)及程序。本發(fā)明為了提供在多處理器系統(tǒng)中通過并行化來使程序的執(zhí)行高速化的技術(shù)而對(duì)想要高速化的程序的關(guān)鍵路徑適當(dāng)進(jìn)行切分,分成其他進(jìn)程來分配給各個(gè)處理器。本發(fā)明的處理程序讀取由多個(gè)處理塊構(gòu)成的想要高速化的程序源代碼,并對(duì)關(guān)鍵路徑的所有可能的切分進(jìn)行測試,找出使作為結(jié)果的所切分處理塊的流程的處理時(shí)間最短的切分。據(jù)此獲得多個(gè)處理塊組。如此分割生成的各個(gè)模塊組被編譯而按執(zhí)行環(huán)境被分配給各個(gè)處理器。
文檔編號(hào)G06F9/45GK102197376SQ20098014251
公開日2011年9月21日 申請(qǐng)日期2009年8月24日 優(yōu)先權(quán)日2008年10月24日
發(fā)明者吉澤武朗, 小松秀昭 申請(qǐng)人:國際商業(yè)機(jī)器公司