專利名稱:用于異構(gòu)型多處理系統(tǒng)的計算機(jī)程序功能劃分系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明總體涉及計算機(jī)程序開發(fā)領(lǐng)域,更具體地,涉及一種用于為異構(gòu)型多處理系統(tǒng)進(jìn)行計算機(jī)程序功能劃分的系統(tǒng)和方法。
背景技術(shù):
現(xiàn)代的計算機(jī)系統(tǒng)經(jīng)常使用復(fù)雜的體系結(jié)構(gòu),這些體系結(jié)構(gòu)可包括具有不同的配置和能力的多個處理單元。在普通的配置內(nèi),所有處理單元都是同樣或同類的。比較特殊地,可使用兩個或多個不同的或異類的處理單元。在此情況下,不同的處理器將具有專門為特定任務(wù)而設(shè)計的指令集或能力。每個處理器可更適合不同類型的處理,并且甚至一些處理器固有地不能完全執(zhí)行特定功能。在此情況下,當(dāng)需要時,那些功能必須在能夠執(zhí)行它們的處理器上執(zhí)行,并且最佳地是在最適合于該任務(wù)的處理器上執(zhí)行,如果這樣做不會在總體上損害系統(tǒng)的性能的話。
通過在系統(tǒng)的處理單元上執(zhí)行專門設(shè)計的軟件(這里稱作計算機(jī)程序或代碼)這一過程,可實現(xiàn)計算機(jī)系統(tǒng)的使用。這些代碼通常是由程序員以計算機(jī)語言編寫而生成,并且使用編譯器來準(zhǔn)備在計算機(jī)系統(tǒng)上執(zhí)行。程序設(shè)計任務(wù)的簡易性以及該代碼在計算機(jī)系統(tǒng)上的最終執(zhí)行的效率受到編譯器所提供的功能的極大影響。許多現(xiàn)代的簡單編譯器為單個處理器生成緩慢執(zhí)行的代碼。已構(gòu)造出了其他的編譯器,其為同構(gòu)型多處理系統(tǒng)內(nèi)的一個或多個處理器生成可相當(dāng)快地執(zhí)行代碼。
通常,為了準(zhǔn)備程序在異構(gòu)型多處理系統(tǒng)上執(zhí)行,典型的現(xiàn)代系統(tǒng)需要程序員使用一些編譯器,并費力地組合這些工作的結(jié)果以構(gòu)建最終的代碼。為此,程序員必須按以下方式將源程序分區(qū),即使用適合的處理器執(zhí)行代碼的不同功能。具體地,當(dāng)該系統(tǒng)內(nèi)的某些處理器不能執(zhí)行特定功能時,被分區(qū)的程序必須在提供此能力的處理器上執(zhí)行那些功能。此外,即使當(dāng)設(shè)計了多種處理器類型來執(zhí)行相同功能,以使系統(tǒng)性能最佳時,劃分也應(yīng)該將那些功能指派給可最迅速地執(zhí)行所述功能的處理器。
因此,需要一種用于為異構(gòu)型多處理系統(tǒng)進(jìn)行計算機(jī)程序功能劃分的系統(tǒng)和/或方法,其可解決至少一些與傳統(tǒng)系統(tǒng)和方法相關(guān)聯(lián)的問題和缺陷。
發(fā)明內(nèi)容
本發(fā)明提供了一種用于為異構(gòu)型多處理系統(tǒng)進(jìn)行計算機(jī)程序功能劃分的方法。識別包括一個或多個完全不同的處理節(jié)點的計算機(jī)系統(tǒng)的至少一個系統(tǒng)參數(shù)。接收包括將在該計算機(jī)系統(tǒng)上運行的程序的計算機(jī)程序代碼。根據(jù)所接收的計算機(jī)程序代碼生成整體程序表示。根據(jù)該整體程序表示識別至少一個單入口單出口(SESE)區(qū)域。根據(jù)所識別出的SESE區(qū)域和至少一個系統(tǒng)參數(shù),識別至少一個特定于節(jié)點的SESE區(qū)域。將每個特定于節(jié)點的SESE區(qū)域組合為特定于節(jié)點的子程序。根據(jù)指定的節(jié)點特性,編譯每個特定于節(jié)點的子程序。根據(jù)特定于節(jié)點的子程序修改計算機(jī)程序代碼,并編譯該修改后的計算機(jī)程序代碼。
參照下文結(jié)合附圖進(jìn)行的說明,可更充分地理解本發(fā)明及其優(yōu)點,在附圖中圖1是示出計算機(jī)程序功能劃分系統(tǒng)的框圖;以及圖2是示出計算機(jī)程序功能劃分方法的流程圖。
具體實施例方式
在下面的討論中,說明了眾多特定的細(xì)節(jié)以便提供對本發(fā)明的徹底理解。但是,本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,本發(fā)明可在不具有這種特定細(xì)節(jié)的情況下實現(xiàn)。在其他情況下,已用示意圖或框圖形式示出了公知的組件,以便不會以不必要的細(xì)節(jié)來混淆本發(fā)明。另外,在很大程度上已省略了關(guān)于網(wǎng)絡(luò)通信、電磁信號傳輸技術(shù)、用戶接口或輸入/輸出技術(shù)等的細(xì)節(jié),這是因為這些細(xì)節(jié)不被認(rèn)為對于充分理解本發(fā)明來說是必須的,而是被認(rèn)為處于本領(lǐng)域普通技術(shù)人員的理解范圍內(nèi)。
還應(yīng)指出,除非另外說明,否則文中所述的所有功能可以硬件或軟件來實現(xiàn),或者以它們的某些組合來實現(xiàn)。但是,在優(yōu)選實施例內(nèi),除非另外說明,否則這些功能是由諸如計算機(jī)或電子數(shù)據(jù)處理器的處理器根據(jù)諸如計算機(jī)程序代碼、軟件的代碼、和/或由被編碼為執(zhí)行這些功能的集成電路來實現(xiàn)的。
參照圖1,參考標(biāo)號10總體指編譯器。編譯器10是電路或其他合適的邏輯,并且其被配置為計算機(jī)程序代碼編譯器。在一個特定實施例內(nèi),如下面更詳細(xì)地說明的,編譯器10是被配置成將源代碼編譯成目標(biāo)代碼的軟件程序。通常,編譯器10被配置成通過用戶接口60在前端代碼模塊20內(nèi)接收源代碼,并通過目標(biāo)文件讀入器25接收目標(biāo)代碼。然后,使用整體程序分析器及優(yōu)化器30以及功能劃分模塊40提供的參數(shù)來處理接收到的代碼,以生成特定于處理器的后端代碼50,這在下文將更詳細(xì)地說明。
具體地,在所示實施例內(nèi),編譯器10包括用戶接口60。用戶接口60是電路或其他適合的邏輯,并且其被配置成接收來自用戶的輸入。在一個實施例內(nèi),用戶接口60是在程序源代碼內(nèi)插入的“編譯指示(pragmas)”命令或指示與命令行上或者“編譯文件(makefile)”命令或腳本內(nèi)提供的編譯器選項標(biāo)志的組合。在另一實施例內(nèi),可使用圖形用戶接口來提供此信息。本領(lǐng)域的技術(shù)人員應(yīng)理解,還可使用其他配置。
編譯器10包括前端代碼模塊20。前端代碼模塊20是電路或其他適合的邏輯,并且其被配置成讀取源代碼并識別編譯后的代碼將在其上執(zhí)行的計算機(jī)系統(tǒng)的特定參數(shù)。編譯器10還包括目標(biāo)文件讀入器模塊25。目標(biāo)文件讀入器模塊25是電路或其他適合的邏輯,且其被配置成讀取目標(biāo)代碼并識別編譯后的代碼將在其上執(zhí)行的計算機(jī)系統(tǒng)的特定參數(shù)。通常,目標(biāo)代碼是編譯器10先前處理前端代碼模塊20接收到的源代碼,并存儲關(guān)于通過該編譯器內(nèi)的分析得出的所述源代碼的信息的保存結(jié)果。在一個特定實施例內(nèi),目標(biāo)文件讀入器模塊25是軟件程序,且其被配置成識別并映射編譯后的代碼將在其上執(zhí)行的計算機(jī)系統(tǒng)(即“目標(biāo)”系統(tǒng))的各個處理節(jié)點。另外,目標(biāo)文件讀入器模塊25還被配置成識別已識別出的節(jié)點的處理能力。
編譯器10還包括整體程序分析器及優(yōu)化器模塊30。整體程序分析器及優(yōu)化器模塊30是電路或其他適合的邏輯,且其被配置成分析接收到的源和/或目標(biāo)代碼,這在下文將更詳細(xì)地說明。在一個特定實施例內(nèi),整體程序分析器及優(yōu)化器模塊30是軟件程序且其被配置成創(chuàng)建接收到的源和/或目標(biāo)代碼的整體程序表示并識別計算機(jī)程序代碼的特定于節(jié)點的段。因此,通常,整體程序分析器及優(yōu)化器模塊30可被配置成分析整個計算機(jī)程序源代碼,即接收的源和/或目標(biāo)代碼,以識別源和/或目標(biāo)代碼的需要在特定類型的處理節(jié)點上處理的段,并將識別出的段隔離成子程序,這些子程序隨后可針對特定需要的處理節(jié)點(即“目標(biāo)”節(jié)點)而被編譯。如文中使用的,本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,整個計算機(jī)程序源代碼是構(gòu)成不連續(xù)的計算機(jī)程序的一組計算機(jī)程序代碼行。
具體地,在一個實施例內(nèi),整體程序分析器及優(yōu)化器模塊30被配置成接收源和/或目標(biāo)代碼,并創(chuàng)建接收到的代碼的整體程序表示。如這里所用的,整體程序表示是構(gòu)成整個計算機(jī)程序源代碼的各個代碼段的表示。在一個實施例內(nèi),整體程序分析器及優(yōu)化器模塊30被配置成對接收到的源和/或目標(biāo)代碼執(zhí)行過程間分析,以創(chuàng)建整體程序表示。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,還可使用其他方法來創(chuàng)建該接收到的計算機(jī)程序源代碼的整體程序表示。
在一個實施例內(nèi),整體程序分析器及優(yōu)化器模塊30還被配置成識別該整體程序表示內(nèi)的單入口單出口(SESE)區(qū)域。通常,本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,SESE區(qū)域是計算機(jī)程序內(nèi)對于該計算機(jī)程序的流程總體上遵守某些公知特性的段。因此,可使用識別出的SESE區(qū)域來幫助將程序劃分成子程序。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,通過合適的變換可將沒有嚴(yán)格定義的SESE區(qū)域的其他適合的程序段轉(zhuǎn)換為SESE區(qū)域。在一個特定實施例內(nèi),整體程序分析器及優(yōu)化器模塊30被配置成通過構(gòu)造和分析程序結(jié)構(gòu)樹來識別SESE區(qū)域。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,還可使用其他方法來識別整體程序表示內(nèi)的SESE區(qū)域。
另外,整體程序分析器及優(yōu)化器模塊30可被配置成識別包含需要在特定類型的處理節(jié)點上處理的功能的SESE區(qū)域。具體地,整體程序分析器及優(yōu)化器模塊30可被配置成從目標(biāo)文件讀入器25和/或用戶接口60接收系統(tǒng)參數(shù)和/或系統(tǒng)參數(shù)信息,以識別需要在特定類型的處理節(jié)點上處理的SESE區(qū)域,并使識別出的SESE區(qū)域與這些系統(tǒng)參數(shù)所描述的特定計算機(jī)系統(tǒng)節(jié)點的能力相關(guān)聯(lián)。因此,通常,在一個實施例內(nèi),整體程序分析器及優(yōu)化器模塊30被配置成根據(jù)目標(biāo)系統(tǒng)(更具體地,目標(biāo)節(jié)點)的系統(tǒng)參數(shù),識別特定于節(jié)點的SESE區(qū)域。
另外,整體程序分析器及優(yōu)化器模塊30可被配置成識別在整個流程內(nèi)與識別出的特定于節(jié)點的SESE區(qū)域鄰近的SESE區(qū)域。因此,整體程序分析器及優(yōu)化器模塊30還可被配置成識別可根據(jù)目標(biāo)計算機(jī)系統(tǒng)的系統(tǒng)效率而與識別出的特定于節(jié)點的SESE區(qū)域組合在一起的鄰近SESE區(qū)域。因此,整體程序分析器及優(yōu)化器模塊30可被配置成通過將識別出的鄰近SESE區(qū)域與識別出的特定于節(jié)點的SESE區(qū)域組合在一起,而提供增加的過程效率。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,可根據(jù)特定處理節(jié)點處理識別出的鄰近SESE區(qū)域的能力,來使識別出的鄰近SESE區(qū)域與識別出的特定于節(jié)點的SESE區(qū)域組合在一起。
編譯器10還包括功能劃分模塊40。功能劃分模塊40是電路或其他適合的邏輯,且其總體上被配置成將識別出的特定于節(jié)點的SESE區(qū)域劃分成子程序,并針對特定子程序?qū)⒃谄渖蠄?zhí)行的目標(biāo)節(jié)點來編譯該子程序。因此,在一個特定實施例內(nèi),功能劃分模塊40被配置成將識別出的特定于節(jié)點的SESE區(qū)域組合為分立的子程序。在一個實施例內(nèi),功能劃分模塊40可配置成將每個識別出的特定于節(jié)點的SESE區(qū)域組合為一個單獨的子程序。在可選實施例內(nèi),功能劃分模塊40還被配置成將一個或多個識別出的特定于節(jié)點的SESE區(qū)域組合成一個組合子程序。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,將一個或多個識別出的特定于節(jié)點的SESE區(qū)域組合成一個組合子程序是以程序設(shè)計對于組合所述區(qū)域的適合性為條件的。例如,本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,當(dāng)一個或多個識別出的特定于節(jié)點的SESE區(qū)域位于整個流程內(nèi)的需要不兼容的中間過程步驟的位置時,這些區(qū)域不適于被組合成一個組合子程序。
另外,功能劃分模塊40還可被配置成根據(jù)通過用戶接口60從用戶接收到的輸入,對識別出的特定于節(jié)點的SESE區(qū)域和/或識別出的鄰近SESE區(qū)域進(jìn)行組合。因此,例如,在一個實施例內(nèi),編譯器10可被配置成通過用戶接口60將識別出的特定于節(jié)點的SESE區(qū)域和/或識別出的鄰近SESE區(qū)域呈現(xiàn)給用戶,并根據(jù)用戶輸入對所呈現(xiàn)的區(qū)域進(jìn)行組合。
在一個實施例內(nèi),功能劃分模塊40還被配置成根據(jù)組合子程序修改接收到的源和/或目標(biāo)代碼。在一個特定實施例內(nèi),功能劃分模塊40被配置成通過定序指令來修改接收到的源和/或目標(biāo)代碼。具體地,功能劃分模塊40可被配置成在接收到的源和/或目標(biāo)代碼內(nèi)插入定時占位,籍此編排子程序的執(zhí)行定時。例如,插入定時占位可包括預(yù)加載特定的代碼段以幫助確保正確的程序功能,幫助使代碼執(zhí)行中的延時最小化或消除,以及出于其他適合的定時考慮。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,還可使用其他配置。
功能劃分模塊40還被配置成根據(jù)編譯后的特定于處理器的后端代碼段將在其上執(zhí)行的特定處理節(jié)點(即目標(biāo)節(jié)點),將接收到的源和/或目標(biāo)代碼編譯成一個或多個特定于處理器的后端代碼段50。因此,針對支持特定于處理器的后端代碼段50內(nèi)包含的特定功能所需的特定于節(jié)點的功能,來編譯這些代碼段。
因此,通常,在操作時,編譯器10接收計算機(jī)程序代碼(源和/或目標(biāo)代碼),并根據(jù)目標(biāo)系統(tǒng)參數(shù)分析接收到的計算機(jī)程序代碼的特定于節(jié)點的SESE區(qū)域。將特定于節(jié)點的SESE區(qū)域組合為子程序,并針對它們的目標(biāo)節(jié)點以及適當(dāng)?shù)泥徑黃ESE區(qū)域(如果有的話)編譯這些SESE區(qū)域。因此,編譯器10可配置成使某些時間密集的程序設(shè)計活動(諸如識別特定于節(jié)點的SESE區(qū)域并將識別出的特定于節(jié)點的SESE區(qū)域組合成子程序)自動進(jìn)行,從而除去程序員的負(fù)擔(dān),否則程序員將不得不執(zhí)行這些任務(wù)。因此,編譯器10可配置成將計算機(jī)程序代碼劃分為特定于節(jié)點的子程序,針對這些子程序?qū)⒃谄渖蠄?zhí)行的特定類型的目標(biāo)節(jié)點來編譯它們,對指令定序以維護(hù)過程定時和控制。
參照圖2,參考標(biāo)號200總體指示示出計算機(jī)程序分區(qū)方法的流程圖。該過程在步驟205開始,其中識別系統(tǒng)參數(shù)。此步驟可由例如圖1的目標(biāo)文件讀入器模塊25執(zhí)行和/或通過圖1的用戶接口60接收到的用戶輸入來執(zhí)行。在下一步驟210,接收或掃描輸入將被分析的計算機(jī)程序代碼。此步驟可由例如圖1的編譯器前端和/或前端代碼模塊20或目標(biāo)文件讀入器模塊25執(zhí)行。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,接收或掃描輸入將被分析的代碼包括檢索硬盤驅(qū)動器或其他適合的存儲設(shè)備上存儲的數(shù)據(jù),并將這些數(shù)據(jù)加載到系統(tǒng)存儲器中。另外,在編譯器前端和/或前端代碼模塊20的情況下,此步驟還可包括對源語言程序進(jìn)行分析,并產(chǎn)生中間形式代碼。在目標(biāo)文件讀入器模塊25的情況下,此步驟可包括從計算機(jī)程序代碼的目標(biāo)代碼文件提取中間表示。
在下一步驟215,根據(jù)接收到的計算機(jī)程序代碼生成整體程序表示。此步驟可由例如圖1的整體程序分析器及優(yōu)化器模塊30執(zhí)行。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,此步驟可包括進(jìn)行過程間分析。在下一步驟220,根據(jù)該整體程序表示識別SESE區(qū)域。此步驟可由例如圖1的整體程序分析器及優(yōu)化器模塊30執(zhí)行。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,此步驟可包括生成程序結(jié)構(gòu)樹。
在下一步驟225,根據(jù)識別出的系統(tǒng)參數(shù)和識別出的SESE區(qū)域,識別特定于節(jié)點的SESE區(qū)域。此步驟可由例如圖1的整體程序分析器及優(yōu)化器模塊30執(zhí)行。如上所述,此步驟還可包括識別適于與識別出的特定于節(jié)點的SESE區(qū)域組合在一起的鄰近SESE區(qū)域。在下一步驟230,將識別出的特定于節(jié)點的SESE區(qū)域組合為一個或多個特定于節(jié)點的子程序或分區(qū)。此步驟可由例如圖1的功能劃分模塊40執(zhí)行。如上所述,此步驟可包括將每個特定于節(jié)點的SESE區(qū)域組合為其自身的子程序或分區(qū),和/或?qū)⒁粋€或多個特定于節(jié)點的SESE區(qū)域組合成組合子程序或分區(qū)。
在下一步驟235,修改接收到的計算機(jī)程序代碼,以包括對于一個或多個子程序的定序指令。此步驟可由例如圖1的功能劃分模塊40執(zhí)行。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,此步驟可包括根據(jù)需要在處理器之間傳送代碼和/或數(shù)據(jù)的指令,和檢查在其他處理器上執(zhí)行的分區(qū)的完成并執(zhí)行其他適當(dāng)?shù)膭幼鞯闹噶睢?br>
在下一步驟240,為每個分區(qū)生成特定于處理器的代碼,并且該過程結(jié)束。此步驟可由例如適于特定節(jié)點類型的圖1的特定于處理器的后端模塊50執(zhí)行。因此,可將計算機(jī)程序劃分為子程序,這些子程序被標(biāo)記以便針對特定節(jié)點類型進(jìn)行編譯,對修改結(jié)果定序以編排目標(biāo)系統(tǒng)內(nèi)的各個節(jié)點類型之間的通信。因此,可將為具有異類或異構(gòu)型處理組件的多處理器系統(tǒng)設(shè)計的計算機(jī)程序代碼配置成考慮需要在特定類型的節(jié)點上執(zhí)行的特定功能。
因此,本發(fā)明提供了在具有至少兩個異類處理器的異構(gòu)型多處理器系統(tǒng)的節(jié)點之間進(jìn)行計算機(jī)程序功能劃分。將編譯器配置成生成特定于每個異類處理器的代碼。通常,編譯器讀取可分為多個文件并且可在不同的時間處理的源程序,并構(gòu)建整個程序的模型或表示。然后,根據(jù)多個異類處理器或節(jié)點的特性分析此模型。在該模型內(nèi)識別特定于或更適于在特定處理器類型上執(zhí)行的一個或多個功能。以優(yōu)化程序的總執(zhí)行時間的方式,識別完全包含識別出的功能的單入口單出口區(qū)域(SESE),該區(qū)域被提取到特定于節(jié)點的子程序中。用適當(dāng)?shù)逆溄踊蚨ㄐ虼a代替被提取出的SESE區(qū)域,以確保正確的和有效的程序執(zhí)行。針對所得到的每個特定于處理器的分區(qū)或子程序的各自的處理器編譯它們,并合并所得的編譯結(jié)果以形成最終程序,以在異構(gòu)型多處理器系統(tǒng)上執(zhí)行。
上面公開的特定實施例僅是說明性的,因為本發(fā)明可按不同但等效的方式來修改和實現(xiàn),這些方式對于受益于本文的教導(dǎo)的本領(lǐng)域技術(shù)人員來說是顯而易見的。此外,除了下面權(quán)利要求所描述的之外,本發(fā)明并不局限于這里所示的結(jié)構(gòu)或設(shè)計細(xì)節(jié)。因此很明顯,上面公開的特定實施例可被替換或修改,所有這樣的變型均被認(rèn)為落入本發(fā)明的范圍和精神之內(nèi)。因此,下面的權(quán)利要求中說明了所尋求的保護(hù)范圍。
權(quán)利要求
1.一種用于為異構(gòu)型多處理器系統(tǒng)進(jìn)行計算機(jī)程序功能劃分的方法,包括識別包括一個或多個異類處理節(jié)點的計算機(jī)系統(tǒng)的至少一個系統(tǒng)參數(shù);接收包括將在該計算機(jī)系統(tǒng)上運行的程序的計算機(jī)程序代碼;根據(jù)所接收的計算機(jī)程序代碼生成程序表示;根據(jù)該整體程序表示識別至少一個單入口單出口(SESE)區(qū)域;根據(jù)所識別出的SESE區(qū)域和上述至少一個系統(tǒng)參數(shù),識別至少一個特定于節(jié)點的SESE區(qū)域;將每個特定于節(jié)點的SESE區(qū)域組合為特定于節(jié)點的子程序;根據(jù)這些特定于節(jié)點的子程序,修改上述計算機(jī)程序代碼的非特定于節(jié)點的部分;以及根據(jù)指定的節(jié)點特性,編譯包括每個特定于節(jié)點的子程序的修改后的計算機(jī)程序代碼。
2.如權(quán)利要求1所述的方法,還包括識別與所識別出的特定于節(jié)點的SESE區(qū)域鄰近的SESE區(qū)域,其中這些識別出的鄰近SESE區(qū)域被配置為針對指定節(jié)點而被編譯;以及將至少一個鄰近SESE區(qū)域與至少一個特定于節(jié)點的SESE區(qū)域組合為特定于節(jié)點的子程序。
3.如權(quán)利要求1所述的方法,其中生成程序表示包括對上述整個程序的過程間分析。
4.如權(quán)利要求1所述的方法,其中上述計算機(jī)系統(tǒng)包括寬帶處理器體系結(jié)構(gòu)系統(tǒng)。
5.如權(quán)利要求1所述的方法,還包括生成程序結(jié)構(gòu)樹。
6.如權(quán)利要求1所述的方法,其中修改上述計算機(jī)程序代碼包括生成定序指令。
7.如權(quán)利要求1所述的方法,還包括接收來自用戶的輸入;以及根據(jù)所接收的用戶輸入,識別上述計算機(jī)系統(tǒng)的至少一個系統(tǒng)參數(shù)。
8.一種用于為異構(gòu)型多處理器系統(tǒng)進(jìn)行計算機(jī)程序代碼功能劃分的計算機(jī)程序產(chǎn)品,該計算機(jī)程序產(chǎn)品具有其上包括有計算機(jī)程序的介質(zhì),該計算機(jī)程序包括用于識別包括一個或多個異類處理節(jié)點的計算機(jī)系統(tǒng)的至少一個系統(tǒng)參數(shù)的計算機(jī)程序代碼;用于接收包括將在該計算機(jī)系統(tǒng)上運行的程序的計算機(jī)程序代碼的計算機(jī)程序代碼;用于根據(jù)所接收的計算機(jī)程序代碼生成程序表示的計算機(jī)程序代碼;用于根據(jù)該整體程序表示識別至少一個單入口單出口(SESE)區(qū)域的計算機(jī)程序代碼;用于根據(jù)所識別出的SESE區(qū)域和上述至少一個系統(tǒng)參數(shù)識別至少一個特定于節(jié)點的SESE區(qū)域的計算機(jī)程序代碼;用于將每個特定于節(jié)點的SESE區(qū)域組合為特定于節(jié)點的子程序的計算機(jī)程序代碼;用于根據(jù)這些特定于節(jié)點的子程序修改上述計算機(jī)程序代碼的計算機(jī)程序代碼;以及用于根據(jù)指定的節(jié)點特性編譯包括每個特定于節(jié)點的子程序的修改后的計算機(jī)程序代碼的計算機(jī)程序代碼。
9.如權(quán)利要求8所述的計算機(jī)程序產(chǎn)品,還包括用于識別與所識別出的特定于節(jié)點的SESE區(qū)域鄰近的SESE區(qū)域的計算機(jī)程序代碼,其中這些識別出的鄰近SESE區(qū)域被配置為針對指定節(jié)點而被編譯;以及用于將至少一個鄰近SESE區(qū)域與至少一個特定于節(jié)點的SESE區(qū)域組合為特定于節(jié)點的子程序的計算機(jī)程序代碼。
10.如權(quán)利要求8所述的計算機(jī)程序產(chǎn)品,其中生成整體程序表示包括對上述整個程序的過程間分析。
11.如權(quán)利要求8所述的計算機(jī)程序產(chǎn)品,其中上述計算機(jī)系統(tǒng)包括寬帶處理器體系結(jié)構(gòu)系統(tǒng)。
12.如權(quán)利要求8所述的計算機(jī)程序產(chǎn)品,還包括用于生成程序結(jié)構(gòu)樹的計算機(jī)程序代碼。
13.如權(quán)利要求8所述的計算機(jī)程序產(chǎn)品,其中修改上述計算機(jī)程序代碼包括生成定序指令。
14.如權(quán)利要求8所述的計算機(jī)程序產(chǎn)品,還包括用于從用戶接收輸入的計算機(jī)程序代碼;以及用于根據(jù)所接收的用戶輸入識別上述計算機(jī)系統(tǒng)的至少一個系統(tǒng)參數(shù)的計算機(jī)程序代碼。
15.一種編譯器,包括目標(biāo)文件讀入器模塊,其被配置為識別計算機(jī)系統(tǒng)的至少一個系統(tǒng)參數(shù);整體程序分析器及優(yōu)化器模塊,其連接到上述目標(biāo)文件讀入器模塊,并被配置為接收包括將在該計算機(jī)系統(tǒng)上運行的程序的計算機(jī)程序代碼,根據(jù)所接收的計算機(jī)程序代碼生成整體程序表示,根據(jù)該整體程序表示識別至少一個單入口單出口(SESE)區(qū)域,并根據(jù)所識別出的SESE區(qū)域和上述至少一個系統(tǒng)參數(shù)識別至少一個特定于節(jié)點的SESE區(qū)域;以及功能劃分模塊,其連接到上述整體程序分析器及優(yōu)化器模塊,并被配置為將每個特定于節(jié)點的SESE區(qū)域組合為特定于節(jié)點的子程序,根據(jù)這些特定于節(jié)點的子程序修改上述計算機(jī)程序代碼,根據(jù)指定的節(jié)點特性編譯每個特定于節(jié)點的子程序,并編譯上述修改后的計算機(jī)程序代碼。
16.如權(quán)利要求15所述的編譯器,其中上述整體程序分析器及優(yōu)化器模塊還被配置為識別與所識別出的特定于節(jié)點的SESE區(qū)域鄰近的SESE區(qū)域,其中這些識別出的鄰近SESE區(qū)域被配置為針對指定節(jié)點而被編譯,并將至少一個鄰近SESE區(qū)域與至少一個特定于節(jié)點的SESE區(qū)域組合為特定于節(jié)點的子程序。
17.如權(quán)利要求15所述的編譯器,其中生成整體程序表示包括過程間分析。
18.如權(quán)利要求15所述的編譯器,其中上述計算機(jī)系統(tǒng)包括寬帶處理器體系結(jié)構(gòu)系統(tǒng)。
19.如權(quán)利要求15所述的編譯器,其中上述整體程序分析器及優(yōu)化器模塊還被配置為生成程序結(jié)構(gòu)樹。
20.如權(quán)利要求15所述的編譯器,其中修改上述計算機(jī)程序代碼包括生成定序指令。
21.如權(quán)利要求15所述的編譯器,還包括被配置為接收來自用戶的輸入的用戶接口;以及其中上述整體程序分析器及優(yōu)化器模塊還被配置為根據(jù)所接收的用戶輸入,識別上述計算機(jī)系統(tǒng)的至少一個系統(tǒng)參數(shù)。
全文摘要
本發(fā)明提供了一種用于為異構(gòu)型多處理器系統(tǒng)進(jìn)行計算機(jī)程序功能劃分的方法。識別包括一個或多個異類處理節(jié)點的計算機(jī)系統(tǒng)的至少一個系統(tǒng)參數(shù)。接收包括將在該計算機(jī)系統(tǒng)上運行的程序的計算機(jī)程序代碼。根據(jù)所接收的計算機(jī)程序代碼生成整體程序表示。根據(jù)該整體程序表示識別至少一個單入口單出口(SESE)區(qū)域。根據(jù)所識別出的SESE區(qū)域和至少一個系統(tǒng)參數(shù),識別至少一個特定于節(jié)點的SESE區(qū)域。將每個特定于節(jié)點的SESE區(qū)域組合為特定于節(jié)點的子程序。根據(jù)指定的節(jié)點特性,編譯每個特定于節(jié)點的子程序。根據(jù)特定于節(jié)點的子程序修改計算機(jī)程序代碼,并編譯該修改后的計算機(jī)程序代碼。
文檔編號G06F9/45GK1783011SQ20051012329
公開日2006年6月7日 申請日期2005年11月15日 優(yōu)先權(quán)日2004年12月2日
發(fā)明者K·M·奧布賴恩, J·K·P·奧布賴恩 申請人:國際商業(yè)機(jī)器公司