專利名稱:產(chǎn)生優(yōu)化程序的裝置和方法、程序執(zhí)行裝置及記錄介質(zhì)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種產(chǎn)生由具有多個處理器元件的處理器(計算機(jī))執(zhí)行的 程序的技術(shù),尤其涉及產(chǎn)生優(yōu)化程序。技術(shù)背景在用于產(chǎn)生由可以彼此平行地執(zhí)行兩個以上指令的計算機(jī)執(zhí)行的執(zhí)行程 序的技術(shù)中,特別用于在條件分支指令之后的預(yù)定片斷中平行地布置指令,例如已知在日本專利申請2004-341236號中公開的技術(shù)。根據(jù)日本專利申請2004-341236號,從包括條件分支指令的源程序獲得在 條件分支指令之后的預(yù)定片斷中包括的每個執(zhí)行路徑(此后僅稱為路徑)信息。 還通過使用典型數(shù)據(jù)執(zhí)行執(zhí)行程序獲得每個路徑的執(zhí)行頻率信息,其中通過將 源程序轉(zhuǎn)換為執(zhí)行格式來產(chǎn)生執(zhí)行程序。此后,該方法稱為仿形。根據(jù)該技術(shù),基于獲搏的執(zhí)行頻率信息作為整體地選擇具有高執(zhí)行頻率 值的一個或多個路徑。隨后,優(yōu)化包含在每個所選路徑中的指令組。并且產(chǎn)生 將不同處理器元件指派給優(yōu)化指令組的代碼序列以及源程序中所含全部指令 的代碼序列的執(zhí)行程序,并且執(zhí)行所產(chǎn)生的執(zhí)行程序。以該結(jié)構(gòu),由于已經(jīng)優(yōu) 化了所選路徑的指令組,減少了具有高執(zhí)行頻率的所選路徑的執(zhí)行時間,并且 由此作為整體增加了包括條件分支指令的程序的處理速度。然而, 一般來說,在執(zhí)行程序的整個周期內(nèi)每個路徑的執(zhí)行頻率不是恒 定的。例如,整個執(zhí)行周期的開始、中間和結(jié)束周期的執(zhí)行頻率可能與由仿形 或相似過程獲得的整個執(zhí)行周期的執(zhí)行頻率是不同的。在這種情況中,當(dāng)根據(jù)為程序的整個執(zhí)行周期設(shè)定的確定執(zhí)行頻率信息 將處理器元件指派給具有高執(zhí)行頻率的路徑時,在執(zhí)行周期內(nèi),不能有效使用 具有與該確定執(zhí)行頻率不同的執(zhí)行頻率的處理器元件。發(fā)明內(nèi)容因此,本發(fā)明的目標(biāo)是提供用于產(chǎn)生包括分支指令的程序的程序產(chǎn)生裝 置,并且即使在該程序的整個執(zhí)行周期內(nèi)每個路徑的執(zhí)行頻率不是恒定的,也 能夠有效使用處理器元件。由產(chǎn)生如圖13所示的執(zhí)行程序的本發(fā)明的程序產(chǎn)生裝置實現(xiàn)上述目標(biāo)。 更加明確地,由用于基于源程序產(chǎn)生由用于由包括多個處理器元件的計算機(jī) 1300執(zhí)行的多個部分構(gòu)成的執(zhí)行程序1310的程序產(chǎn)生裝置實現(xiàn)上述目標(biāo),該 程序產(chǎn)生裝置包括能夠獲得源程序的源程序獲得部件;能夠基于由源程序獲 得部件獲得的源程序以執(zhí)行格式產(chǎn)生用于將多個處理器元件一對一地指派給 多個程序部分并且使計算機(jī)1300彼此平行地執(zhí)行多個程序部分的平行執(zhí)行程 序部分1350的平行執(zhí)行程序部分產(chǎn)生部件;能夠產(chǎn)生用于使計算機(jī)1300獲得 多個程序部分中的每一個的執(zhí)行歷史并且使計算機(jī)1300保持所獲執(zhí)行歷史的 執(zhí)行歷史獲得部分1320的執(zhí)行歷史獲得部分產(chǎn)生部件;能夠產(chǎn)生用于使計算 機(jī)1300根據(jù)所獲執(zhí)行歷史判斷是否彼此平行地執(zhí)行多個程序部分的平行執(zhí)行 判斷部分1330的平行執(zhí)行判斷部分產(chǎn)生部件;以及能夠產(chǎn)生用于使計算機(jī) 1300取決于由平行執(zhí)行判斷部分1330做出的判斷結(jié)果執(zhí)行對確定是否將多個 處理器元件指派給多個程序部分的控制的處理器元件指派控制部分1340的處 理器元件指派控制部分產(chǎn)生部件。在上述程序產(chǎn)生裝置中,平行執(zhí)行程序部分產(chǎn)生部件可能產(chǎn)生還包括下 列內(nèi)容的平行執(zhí)行程序部分包括分支指令和由該分支指令導(dǎo)致的多個執(zhí)行路 徑的第一程序部分;和由計算機(jī)1300與第一程序部分平行地重復(fù)執(zhí)行的第二 程序部分,并且其包括具有與不包括該分支指令的多個執(zhí)行路徑中確定執(zhí)行路 徑的一部分的處理內(nèi)容相同的處理內(nèi)容的部分,第二程序部分的該塊具有小于 確定執(zhí)行路徑的該部分的計算機(jī)1300執(zhí)行時間,使計算機(jī)判斷是否滿足執(zhí)行 確定執(zhí)行路徑的條件的部分,以及當(dāng)判斷滿足關(guān)于重復(fù)執(zhí)行部件的條件時使計 算機(jī)1300控制與第一程序部分一起處理下一個重復(fù)執(zhí)行部件的部分,其中執(zhí) 行歷史獲得部分產(chǎn)生部件產(chǎn)生至少包括在第一程序部分和第二程序部分中的 一個的執(zhí)行歷史獲得部分1320。以上述結(jié)構(gòu),其中當(dāng)執(zhí)行執(zhí)行歷史獲得部分時其使計算機(jī)獲得程序部分的執(zhí)行歷史并且使計算機(jī)保持所獲執(zhí)行歷史,并且當(dāng)執(zhí)行平行執(zhí)行判斷部分時 其使計算機(jī)根據(jù)所獲執(zhí)行歷史判斷是否彼此平行地執(zhí)行第一和第二程序部分, 當(dāng)其執(zhí)行時,處理器元件指派控制部分可以基于當(dāng)執(zhí)行程序時可能改變的執(zhí)行 歷史將處理器元件指派給多個程序部分,使處理器元件能夠有效地使用。在上述程序產(chǎn)生裝置中,執(zhí)行歷史獲得部分產(chǎn)生部件可能產(chǎn)生使計算機(jī) 計算確定執(zhí)行路徑的執(zhí)行次數(shù)并且作為執(zhí)行歷史保持表示確定執(zhí)行路徑執(zhí)行 次數(shù)的信息的執(zhí)行歷史獲得部分,而且平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn)生當(dāng)由執(zhí) 行歷史表示的確定執(zhí)行路徑的執(zhí)行次數(shù)小于預(yù)定閥值時使計算機(jī)判斷不彼此 平行地執(zhí)行第二程序部分和第一程序部分的平行執(zhí)行判斷部分。以上述結(jié)構(gòu),其中當(dāng)執(zhí)行平行執(zhí)行判斷部分時,其使計算機(jī)當(dāng)確定執(zhí)行 路徑的執(zhí)行次數(shù)小于預(yù)定閥值時判斷不彼此平行地執(zhí)行第二程序部分和第一 程序部分,能夠防止將處理器元件指派給執(zhí)行次數(shù)小于該閥值的具有低執(zhí)行頻 率的程序部分,由此能夠使處理器元件有效地使用。在上述程序產(chǎn)生裝置中,平行執(zhí)行程序部分產(chǎn)生部件可能產(chǎn)生還包括下 列內(nèi)容的平行執(zhí)行程序部分由計算機(jī)與第一程序部分平行地重復(fù)執(zhí)行的第三 程序部分,其包括具有與在不包括分支指令的多個執(zhí)行路徑中作為確定執(zhí)行路 徑的第一執(zhí)行路徑之外的第二執(zhí)行路徑的一部分的處理內(nèi)容相同的處理內(nèi)容 的塊,第三程序部分的該塊具有小于第二執(zhí)行路徑的該部分的計算機(jī)執(zhí)行時 間,使計算機(jī)判斷是否滿足執(zhí)行第二執(zhí)行路徑的條件的塊,當(dāng)判斷滿足重復(fù)執(zhí) 行部件的條件時使計算機(jī)控制與第一程序部分一起處理下一個重復(fù)執(zhí)行部件 的塊,其中平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn)生當(dāng)計算機(jī)判斷不彼此平行地執(zhí)行第 二程序部分和第一程序部分時使計算機(jī)根據(jù)所獲執(zhí)行歷史重復(fù)判斷是否彼此 平行地執(zhí)行第三程序部分和第一程序部分的平行執(zhí)行判斷部分,并且處理器元 件指派控制部分產(chǎn)生使計算機(jī)將第一處理器元件指派給第一程序部分并且使 計算機(jī)執(zhí)行確定是否將第二處理器元件指派給第三程序部分的控制且彼此平 行地執(zhí)行第一程序部分和第三程序部分的處理器元件指派控制部分,取決于計 算機(jī)通過平行執(zhí)行判斷部分做出的關(guān)于是否彼此平行地執(zhí)行第一程序部分和 第三程序部分的判斷結(jié)果。以上述結(jié)構(gòu),當(dāng)執(zhí)行平行執(zhí)行判斷部分時,其使計算機(jī)判斷不彼此平行 地執(zhí)行第一程序部分和第三程序部分,并且當(dāng)執(zhí)行平行執(zhí)行判斷部分時,其使計算機(jī)根據(jù)所獲執(zhí)行歷史判斷是否彼此平行地執(zhí)行第一程序部分和第三程序 部分,第三程序部分包括具有多個執(zhí)行路徑中除確定執(zhí)行路徑之外的第二執(zhí)行 路徑的處理內(nèi)容的塊。以上述結(jié)構(gòu),能夠增加將處理器元件指派給具有高執(zhí)行 頻率的程序部分的可能性。在上述程序產(chǎn)生裝置中,執(zhí)行歷史獲得部分產(chǎn)生部件可能產(chǎn)生使計算機(jī) 計算確定執(zhí)行路徑的執(zhí)行次數(shù)并且使計算機(jī)作為執(zhí)行歷史保持表示確定執(zhí)行 路徑的執(zhí)行次數(shù)的信息的執(zhí)行歷史獲得部分,并且平行執(zhí)行判斷部分產(chǎn)生部件 產(chǎn)生當(dāng)處理器元件指派控制部分使計算機(jī)執(zhí)行確定將第二處理器元件指派給 第二程序部分的控制并且彼此平行地執(zhí)行第二程序部分和第一程序部分時且當(dāng)由執(zhí)行歷史表示的確定執(zhí)行路徑的執(zhí)行次數(shù)小于預(yù)定閥值時使計算機(jī)判斷 不彼此平行地執(zhí)行第二程序部分和第一程序部分的平行執(zhí)行判斷部分,而且處 理器元件指派控制部分產(chǎn)生部件產(chǎn)生使計算機(jī)執(zhí)行停止彼此平行地執(zhí)行第二 程序部分和第一程序部分的控制的處理器元件指派控制部分。以上述結(jié)構(gòu),其中當(dāng)執(zhí)行處理器元件指派控制部分時,其使計算機(jī)當(dāng)該 確定執(zhí)行路徑的執(zhí)行次數(shù)小于預(yù)定閥值時執(zhí)行停止彼此平行地執(zhí)行第二程序 部分和第一程序部分的控制,能夠限制由執(zhí)行具有低執(zhí)行頻率的程序引起的能 量消耗。在上述程序產(chǎn)生裝置中,執(zhí)行歷史獲得部分產(chǎn)生部件可能產(chǎn)生使計算機(jī) 計算確定執(zhí)行路徑的執(zhí)行次數(shù)并且使計算機(jī)作為執(zhí)行歷史保持表示確定執(zhí)行 路徑執(zhí)行次數(shù)的信息的執(zhí)行歷史獲得部分,并且平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn) 生當(dāng)處理器元件指派控制部分使計算機(jī)執(zhí)行確定將第二處理器元件指派給第 二程序部分的控制并且使計算機(jī)彼此平行地執(zhí)行第二程序部分和第一程序部 分時且當(dāng)由執(zhí)行歷史表示的確定執(zhí)行路徑的執(zhí)行次數(shù)小于預(yù)定閥值時使計算 機(jī)判斷不彼此平行地執(zhí)行第二程序部分和第一程序部分的平行執(zhí)行判斷部分, 并且處理器元件指派控制部分產(chǎn)生部件產(chǎn)生使計算機(jī)執(zhí)行取消將第二處理器 元件指派給第二程序部分的控制的處理器元件指派控制部分。以上述結(jié)構(gòu),其中當(dāng)執(zhí)行處理器元件指派控制部分時,其使計算機(jī)當(dāng)確 定執(zhí)行路徑的執(zhí)行次數(shù)小于預(yù)定閥值時取消將第二處理器元件指派給第二程 序部分,能夠?qū)⒁呀?jīng)指派給具有低執(zhí)行頻率的程序的處理器元件指派給另一個 處理,由此使處理器元件能夠有效地使用。在上述程序產(chǎn)生裝置中,平行執(zhí)行程序部分產(chǎn)生部件可能產(chǎn)生還包括下 面內(nèi)容的平行執(zhí)行程序部分由計算機(jī)與第一程序部分平行地重復(fù)執(zhí)行的第三 程序部分,其包括具有與不包括分支指令的多個執(zhí)行路徑中除確定執(zhí)行路徑之 外的第二執(zhí)行路徑的一部分的處理內(nèi)容相同的處理內(nèi)容的塊,第三程序部分的 該塊具有小于第二執(zhí)行路徑的該部分的執(zhí)行時間,使計算機(jī)判斷是否滿足執(zhí)行 第二執(zhí)行路徑的條件的塊,使計算機(jī)當(dāng)其判斷滿足重復(fù)執(zhí)行部件的條件時控制 與第一程序部分一起處理下一個重復(fù)執(zhí)行部件的塊;并且執(zhí)行歷史獲得部分產(chǎn) 生部件產(chǎn)生包括在第三程序部分中并且使計算機(jī)獲得并保持第二執(zhí)行路徑的 執(zhí)行歷史的另一個執(zhí)行歷史獲得部分,其中平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn)生當(dāng) 計算機(jī)判斷不彼此平行地執(zhí)行第二程序部分和第一程序部分時使計算機(jī)根據(jù) 由包括在第三程序部分中的另一個執(zhí)行歷史獲得部分保持的執(zhí)行歷史重復(fù)判 斷是否彼此平行地執(zhí)行第三程序部分和第一程序部分的平行執(zhí)行判斷部分,并 且處理器元件指派控制部分產(chǎn)生部件產(chǎn)生使計算機(jī)將第一處理器元件指派給 第一程序部分并使計算機(jī)執(zhí)行確定是否將第二處理器元件指派給第三程序部 分且彼此平行地執(zhí)行第一程序部分和第三程序部分的控制的處理器元件指派 控制部分,取決于由計算機(jī)通過平行執(zhí)行判斷部分做出的關(guān)于是否彼此平行地 執(zhí)行第三程序部分和第一程序部分的判斷結(jié)果。以上述結(jié)構(gòu),當(dāng)由計算機(jī)取消將第二處理器元件指派給第二程序部分時, 并且當(dāng)執(zhí)行平行執(zhí)行判斷部分時,其使計算機(jī)根據(jù)執(zhí)行歷史判斷是否彼此平行 地執(zhí)行第三程序部分和第一程序部分,第三程序部分包括具有與多個執(zhí)行路徑 中除確定執(zhí)行路徑之外的第二執(zhí)行路徑的處理內(nèi)容相同的處理內(nèi)容的塊。以上 述結(jié)構(gòu),能夠增加將處理器元件指派給具有高執(zhí)行頻率的程序部分的可能性。上述程序產(chǎn)生裝置還可能包括產(chǎn)生用于使計算機(jī)獲得表示在計算機(jī)的多 個處理器元件中可指派的可指派處理器元件數(shù)量的信息的指派可用數(shù)量獲得 部分的指派可用數(shù)量獲得部分產(chǎn)生部件,其中處理器元件指派控制部分產(chǎn)生部 件產(chǎn)生還包括使計算機(jī)計算已經(jīng)指派的指派處理器元件數(shù)量并且使計算機(jī)判 斷是否小于可指派處理器元件數(shù)量的指派可用性判斷部分的處理器元件指派 控制部分,并且處理器元件指派控制部分產(chǎn)生部件產(chǎn)生使計算機(jī)執(zhí)行將第二處 理器元件指派給第二程序部分的控制且當(dāng)由平行執(zhí)行判斷部分的判斷使計算 機(jī)判斷彼此平行地執(zhí)行第二程序部分和第一程序部分時且指派處理器元件數(shù)量小于可指派處理器元件數(shù)量時使計算機(jī)彼此平行地執(zhí)行第一程序部分和第 二程序部分的處理器元件指派控制部分。以上述結(jié)構(gòu),其中當(dāng)執(zhí)行處理器元件指派控制部分時,其使計算機(jī)當(dāng)指 派處理器元件數(shù)量小于可指派處理器元件數(shù)量時將第二處理器元件指派給第 二程序部分。以上述結(jié)構(gòu),能夠取決于可指派處理器元件數(shù)量執(zhí)行平行執(zhí)行。上述程序產(chǎn)生裝置還可能包括能夠產(chǎn)生用于每當(dāng)平行執(zhí)行判斷部分使計 算機(jī)執(zhí)行判斷時初始化執(zhí)行歷史的執(zhí)行歷史初始化部分的執(zhí)行歷史初始化部 分產(chǎn)生部件。以上述結(jié)構(gòu),當(dāng)執(zhí)行執(zhí)行歷史初始化部分時,其使計算機(jī)每當(dāng)平行執(zhí)行 判斷部分判斷是否彼此平行地執(zhí)行第一和第二程序部分時初始化執(zhí)行歷史,并 且當(dāng)執(zhí)行平行執(zhí)行判斷部分時,其使計算機(jī)基于在先前判斷之后獲得的執(zhí)行歷 史執(zhí)行判斷。以上述結(jié)構(gòu),能夠通過當(dāng)執(zhí)行程序時考慮執(zhí)行歷史指派處理器元 件,由此使處理器元件能夠有效地使用。在上述程序產(chǎn)生裝置中,平行執(zhí)行程序部分產(chǎn)生部件可能產(chǎn)生還包括下 面內(nèi)容的平行執(zhí)行程序部分由計算機(jī)與第一程序部分平行地重復(fù)執(zhí)行的第三 程序部分,其包括具有與作為多個執(zhí)行路徑中第一執(zhí)行路徑是確定執(zhí)行路徑 且不包括分支指令的第一執(zhí)行路徑的一部分的第一非分支路徑的處理內(nèi)容相 同的處理內(nèi)容的第一塊,第三程序部分的該第一塊具有小于第一非分支部分的 計算機(jī)執(zhí)行時間,使計算機(jī)判斷是否滿足執(zhí)行第一執(zhí)行路徑的條件的塊,具有 與作為多個執(zhí)行路徑中第一執(zhí)行路徑是除第一執(zhí)行路徑之外的另一個確定執(zhí) 行路徑且不包括分支指令的第二執(zhí)行路徑的一部分的第二非分支路徑的處理 內(nèi)容相同的處理內(nèi)容的第二塊,第三程序部分的該第二塊具有小于第二非分支 部分的計算機(jī)執(zhí)行時間,使計算機(jī)當(dāng)其判斷滿足重復(fù)執(zhí)行部件的執(zhí)行第一執(zhí)行 路徑的條件時控制與第一程序部分一起處理下一個重復(fù)執(zhí)行部件并且使計算 機(jī)當(dāng)其判斷不滿足條件時控制判斷是否滿足執(zhí)行第二執(zhí)行路徑的條件的塊,使 計算機(jī)當(dāng)其判斷滿足重復(fù)執(zhí)行部件的執(zhí)行第二執(zhí)行路徑的條件時控制與第一 程序部分一起處理下一個重復(fù)執(zhí)行部件的塊,其中平行執(zhí)行判斷部分產(chǎn)生部件 產(chǎn)生使計算機(jī)根據(jù)所獲執(zhí)行歷史重復(fù)判斷是否彼此平行地執(zhí)行第三程序部分 和第一程序部分的平行執(zhí)行判斷部分,并且處理器元件指派控制部分產(chǎn)生部件 產(chǎn)生使計算機(jī)將第一處理器元件指派給第一程序部分且使計算機(jī)執(zhí)行確定是否將第二處理器元件指派給第三程序部分并且彼此平行地執(zhí)行第一程序部分 和第三程序部分的控制的處理器元件指派控制部分,取決于由計算機(jī)通過平行 執(zhí)行判斷部分做出的關(guān)于是否彼此平行地執(zhí)行第三程序部分和第一程序部分 的判斷結(jié)果。以上述結(jié)構(gòu),當(dāng)執(zhí)行處理器元件指派控制部分時,其使計算機(jī)采用處理 器元件指派控制部分執(zhí)行將第二處理器元件指派給第三程序部分的控制并且 彼此平行地執(zhí)行第一程序部分和第三程序部分,并且當(dāng)其判斷不滿足執(zhí)行第一 執(zhí)行路徑的條件時相同處理器元件作為第一執(zhí)行路徑的處理的延續(xù)執(zhí)行第二 執(zhí)行路徑的處理。以上述結(jié)構(gòu),能夠有效使用處理器元件。在上述程序產(chǎn)生裝置中,平行執(zhí)行程序部分產(chǎn)生部件可能產(chǎn)生當(dāng)由平行 執(zhí)行判斷部分的判斷使計算機(jī)判斷不彼此平行地執(zhí)行第二程序部分和第一程 序部分時將第三程序部分中包括的第二執(zhí)行路徑設(shè)定為第二程序部分中的確 定執(zhí)行路徑的部分。以上述結(jié)構(gòu),當(dāng)執(zhí)行平行執(zhí)行判斷部分時,其使計算機(jī)判斷不彼此平行 地執(zhí)行第二程序部分和第一程序部分,并且隨后如果不滿足執(zhí)行第一執(zhí)行路徑 的條件,相同處理器元件作為第一執(zhí)行路徑的處理的延續(xù)執(zhí)行第二程序部分的 確定執(zhí)行路徑的處理。以上述結(jié)構(gòu),能夠有效使用處理器元件。在上述程序產(chǎn)生裝置中,執(zhí)行歷史獲得部分產(chǎn)生部件可能產(chǎn)生包括在第 三程序部分中的使計算機(jī)計算第一執(zhí)行路徑的執(zhí)行次數(shù)且使計算機(jī)計算第二 執(zhí)行路徑的執(zhí)行次數(shù)并且使計算機(jī)作為執(zhí)行歷史保持第一和第二執(zhí)行路徑的 執(zhí)行次數(shù)執(zhí)行歷史獲得部分,并且平行執(zhí)行程序部分產(chǎn)生部件產(chǎn)生在其中第一 執(zhí)行路徑的執(zhí)行次數(shù)大于第二執(zhí)行路徑的執(zhí)行次數(shù)的第三程序部分。以上述結(jié)構(gòu),當(dāng)試圖執(zhí)行具有大的執(zhí)行次數(shù)的第一執(zhí)行路徑但不滿足第 一執(zhí)行路徑的條件時,執(zhí)行其執(zhí)行次數(shù)小于第一執(zhí)行路徑的執(zhí)行次數(shù)的第二執(zhí) 行路徑。以上述結(jié)構(gòu),能夠有效使用處理器元件,并且增加實現(xiàn)高速處理的可 能性。
從參考描述本發(fā)明特定實施例的附圖給出的下述描述,本發(fā)明的這些及 其它目標(biāo)、優(yōu)點和特征將是顯而易見的。在附圖中圖1示出產(chǎn)生本發(fā)明的程序的程序產(chǎn)生裝置100的結(jié)構(gòu);圖2是示出源程序110的一部分中流通的控制流程圖;圖3示出實施例1的執(zhí)行程序130的結(jié)構(gòu);圖4示出補償路徑代碼132和特定路徑代碼的結(jié)構(gòu);圖5是示出在其中平行執(zhí)行控制部件131選擇路徑的程序的流程圖;圖6是示出在其中平行執(zhí)行控制部件131指派處理器元件的程序的流程圖;圖7是示出在其中歷史更新代碼407更新執(zhí)行歷史信息301和總執(zhí)行次 數(shù)信息302的程序的流程圖;圖8是示出在其中歷史更新代碼420更新執(zhí)行歷史信息301和總執(zhí)行次 數(shù)信息302的程序的流程圖;圖9是示出在其中平行執(zhí)行控制部件131檢查將要平行執(zhí)行的特定路徑 代碼的程序的流程圖;圖10示出實施例2的執(zhí)行程序1000的結(jié)構(gòu);圖11示出補償路徑代碼132和特定路徑代碼的結(jié)構(gòu);圖12是示出在其中平行執(zhí)行控制部件1001檢査將要平行執(zhí)行的特定路 徑代碼的程序的流程圖;圖13示出本發(fā)明的程序結(jié)構(gòu)和程序執(zhí)行裝置之間的關(guān)系。 圖標(biāo)說明.-100程序產(chǎn)生裝置 101分析部件 102優(yōu)化部件 103代碼轉(zhuǎn)換部件 110源程序 120執(zhí)行頻率信息 130執(zhí)行程序131、 1001平行執(zhí)行控制部件132補償路徑代碼133、 1003第一路徑代碼134、 1004第二路徑代碼135、 1005第三路徑代碼136、 1006第n路徑代碼200、 201、 202、 203、 204、 205、 206、 207、 208基塊300存儲器301執(zhí)行歷史信息302總執(zhí)行次數(shù)信息303分支指令識別信息311第一PE312第二PE313第三PE401第一楔形代碼402第二楔形代碼403第三楔形代碼404第四楔形代碼405第五楔形代碼406第六楔形代碼407、 420歷史更新代碼408、 410、 412處理內(nèi)容代碼 409路徑條件判斷代碼430調(diào)配代碼440停止代碼1002合并路徑信息1101限制路徑執(zhí)行判斷代碼1102限制路徑執(zhí)行代碼具體實施方式
下面通過優(yōu)先實施例參考附圖描述本發(fā)明的程序。 《實施例1》 <綜述>實施例1的程序是由具有多個處理器元件的處理器執(zhí)行的程序,即由計 算機(jī)(此后稱為"目標(biāo)硬件")執(zhí)行的程序。已經(jīng)從傳統(tǒng)程序改進(jìn)了實施例1的程序。實施例1的程序包括包括通過將包括重復(fù)執(zhí)行的部分的源程序轉(zhuǎn)換為 執(zhí)行格式而產(chǎn)生的代碼序列的代碼序列(此后稱為"補償路徑代碼");和包括 分別對應(yīng)補償路徑代碼中包含的多個路徑(其中沒有分支指令)的代碼序列的 代碼序列(此后稱為"特定路徑代碼")。補償路徑代碼和特定路徑代碼的每一個包括以"1"接"1"增加執(zhí)行歷 史信息和總執(zhí)行次數(shù)信息的歷史更新處理代碼,其中執(zhí)行歷史信息表示路徑的 執(zhí)行次數(shù),總執(zhí)行次數(shù)信息表示作為補償路徑代碼和每個特定路徑代碼的總執(zhí) 行次數(shù)的總執(zhí)行次數(shù)。當(dāng)執(zhí)行實施例1的程序時,更新已經(jīng)滿足執(zhí)行路徑的條 件的路徑的總執(zhí)行次數(shù)信息和執(zhí)行歷史信息。實施例1的程序執(zhí)行下述控制基于執(zhí)行歷史信息,選擇以高頻執(zhí)行的 特定路徑代碼,以便與補償路徑代碼平行執(zhí)行;取決于在目標(biāo)硬件上可用的處 理器元件數(shù)量,將處理器元件指派給補償路徑代碼和所選特定路徑代碼;并且 彼此平行地執(zhí)行己經(jīng)指派了處理器元件的補償路徑代碼和特定路徑代碼??梢酝ㄟ^os (操作系統(tǒng))或相似物實現(xiàn)上述控制,以便將處理器的處理器元件指派給補償路徑代碼和所選特定路徑代碼。另外,實施例1的程序每當(dāng)實際執(zhí)行的總次數(shù)達(dá)到由總執(zhí)行次數(shù)信息 表示的預(yù)定次數(shù)時,執(zhí)行對將要與補償路徑代碼平行執(zhí)行的特定路徑代碼的檢 查;在檢查中,基于執(zhí)行歷史信息,在平行執(zhí)行的代碼中檢測從前次檢查到當(dāng)前檢查期間其執(zhí)行頻率降低的特定路徑代碼;并且從平行執(zhí)行的代碼中去除所檢測特定路徑代碼,即,停止指派給所檢測特定路徑代碼的處理器元件的運行 并且取消對所檢測特定路徑代碼的處理器元件指派。另外,當(dāng)在當(dāng)前沒有平行執(zhí)行的代碼中存在以高頻執(zhí)行的特定路徑代碼 時,實施例1的程序?qū)⑻幚砥髟概山o具有高執(zhí)行頻率的特定路徑代碼,取 決于目標(biāo)硬件上可用的處理器元件數(shù)量,并且執(zhí)行與補償路徑代碼平行地執(zhí)行 指派了處理器元件的特定路徑代碼的控制。如上所述,基于當(dāng)其執(zhí)行時實施例1的程序更新的執(zhí)行歷史信息,實施 例1的程序使補償路徑代碼與具有高執(zhí)行頻率的特定路徑代碼平行地執(zhí)行。實 施例1的程序的這種結(jié)構(gòu)能夠使目標(biāo)硬件的處理器元件有效使用,并且增加減 少實施例1的程序的執(zhí)行時間的可能性。<程序產(chǎn)生裝置100>下面描述用于產(chǎn)生實施例1的程序的程序產(chǎn)生裝置100。 <程序產(chǎn)生裝置的結(jié)構(gòu)>下面參考圖1描述用于產(chǎn)生實施例1的程序的程序產(chǎn)生裝置100的結(jié)構(gòu)。 如圖1所示,程序產(chǎn)生裝置100包括分析部件101、優(yōu)化部件102和代碼 轉(zhuǎn)換部件103。雖然沒有示出,程序產(chǎn)生裝置100還包括處理器和存儲器,通過使處理 器執(zhí)行作為存儲在存儲器中的代碼轉(zhuǎn)換程序的編譯器實現(xiàn)分析部件101、優(yōu)化 部件102和代碼轉(zhuǎn)換部件103的每種功能。分析部件101具有下述功能分析源程序110的分支和執(zhí)行及向優(yōu)化部 件102輸出由分析獲得的涉及源程序110中包含的路徑的路徑信息。優(yōu)化部件102具有下述功能通過優(yōu)化源程序110中包含的路徑產(chǎn)生中 間代碼,即通過,基于(i)從分析部件101接收的路徑信息和(ii)作為關(guān)于 每個路徑執(zhí)行頻率的信息的執(zhí)行頻率信息120,改變以高頻執(zhí)行的路徑中包含 的指令(除了分支指令)的執(zhí)行次序,以便減少指令執(zhí)行時間。優(yōu)化部件102 將所產(chǎn)生的中間代碼輸出到代碼轉(zhuǎn)換部件103。這里需要指出的是,可以通過執(zhí)行仿形初步獲得執(zhí)行頻率信息120。仿形 是下述過程通過當(dāng)執(zhí)行源程序110的分支指令時檢測在分支點選擇哪個路徑 獲得每個路徑的執(zhí)行頻率,將每當(dāng)源程序110的任何路徑通過所選路徑時計算 一次的仿形代碼集成到源程序110中,并且執(zhí)行通過將源程序110轉(zhuǎn)換為執(zhí)行 格式所產(chǎn)生的執(zhí)行程序。同樣,對于每個路徑,通過將執(zhí)行頻率信息120與由軟件開發(fā)員初步給 出的代碼產(chǎn)生閥值相比,判斷是否該路徑具有高的執(zhí)行頻率。代碼轉(zhuǎn)換部件103具有下述功能產(chǎn)生在硬件上可執(zhí)行的執(zhí)行程序130 并且輸出所產(chǎn)生的執(zhí)行程序130。執(zhí)行程序130包括補償路徑代碼、特定路徑代碼和平行執(zhí)行控制代碼。 補償路徑代碼包括通過將源程序110轉(zhuǎn)換為執(zhí)行格式產(chǎn)生的處理內(nèi)容代碼。每 個特定路徑代碼包括通過將從優(yōu)化部件102接收的具有高執(zhí)行頻率的每個路 徑的中間代碼轉(zhuǎn)換為執(zhí)行格式產(chǎn)生的處理內(nèi)容代碼。平行執(zhí)行控制代碼基于表 示對應(yīng)特定路徑代碼的路徑的執(zhí)行次數(shù)的執(zhí)行歷史信息選擇將要平行執(zhí)行的特定路徑代碼,并且執(zhí)行將處理器元件指派給補償路徑代碼和所選特定路徑代 碼的控制,還執(zhí)行取消將處理器元件向特定路徑代碼的指派的控制。補償路徑代碼和特定路徑代碼的每一個包括以"1"接"1"增加執(zhí)行歷 史信息和總執(zhí)行次數(shù)信息的歷史更新處理代碼,其中執(zhí)行歷史信息表示一個路 徑的執(zhí)行次數(shù),總執(zhí)行次數(shù)信息表示作為補償路徑代碼和每個特定路徑代碼的 總執(zhí)行次數(shù)的總執(zhí)行次數(shù)。當(dāng)執(zhí)行實施例1的程序時,更新已經(jīng)滿足執(zhí)行條件 的路徑的總執(zhí)行次數(shù)信息和執(zhí)行歷史信息。以上述結(jié)構(gòu),其中,基于當(dāng)執(zhí)行執(zhí)行程序130時更新的執(zhí)行歷史信息, 執(zhí)行對將處理器元件向每個特定路徑代碼的指派和指派取消的控制,能夠有效 使用處理器元件。同樣,只要執(zhí)行執(zhí)行程序130,就會執(zhí)行補償路徑代碼。因此,當(dāng)實際執(zhí) 行的路徑不是特定路徑代碼時,能夠在執(zhí)行結(jié)果中保持兼容性;并且當(dāng)實際執(zhí) 行的路徑是特定路徑代碼時,由于己經(jīng)將每個特定路徑代碼優(yōu)化為具有減少的 執(zhí)行時間,能夠?qū)⑵湟员妊a償路徑代碼高的速度執(zhí)行。將在后面描述執(zhí)行程序130的細(xì)節(jié)。<數(shù)據(jù)>下面,描述將要輸入到程序產(chǎn)生裝置ioo的數(shù)據(jù)。<源程序110>圖2是示出源程序110的一部分(此后稱為部分程序)中的控制流的控 制流程圖。該示例的部分程序包括分支指令并且在整個源程序110中反復(fù)執(zhí) 行。部分程序包括作為基塊的塊1200、塊X 201 、塊J 202、塊K 203、塊Q 204、 塊S 205、塊L206、塊U207和塊T208?;鶋K是不包括分支指令的指令的連 續(xù)序列。圖2的控制流程圖所示路徑包括下面5個路徑(1)通過塊I 200—J 202 —Q 204的路徑(此后將該路徑稱為"路徑IJQ"); (2)通過塊I 200—J 202 —K203—L206的路徑(此后將該路徑稱為"路徑IJKL"); (3)通過塊I 200 —J 202—K 203—S 205—T208的路徑(此后將該路徑稱為"路徑IJKST"); (4)通過塊I200—J 202—K203—S 205—U207的路徑(此后將該路徑稱為 "路徑IJKSU"); (5)通過塊I200—X201的路徑(此后將該路徑稱為"路徑 IX")。<執(zhí)行頻率信息120>每個執(zhí)行頻率信息120包括用于識別源程序包含的路徑的標(biāo)識;和當(dāng) 在目標(biāo)硬件或其它計算機(jī)上執(zhí)行仿形時由標(biāo)識識別的路徑執(zhí)行的次數(shù)。在下面的描述中,假定作為執(zhí)行仿形的一個示例,在仿形中將圖2所示 源程序110的一部分執(zhí)行了一百次,并且作為仿形的結(jié)果獲得的路徑執(zhí)行次數(shù)是路徑IJQ為60;路徑IJKL為30; IJKST為5;路徑IX為3;路徑IJKSU 為2。<程序產(chǎn)生裝置100的運行>下面作為示例描述在其接收圖2所示源程序110的部分程序之后程序產(chǎn) 生裝置100的運行,直到其輸出執(zhí)行程序130。在下面的描述中,假定己經(jīng)由軟件開發(fā)員指定的代碼產(chǎn)生閥值是"5%"?;诮邮赵闯绦?10,分析部件101分析源程序110,以便獲得路徑信息 (從圖2所示部分程序的分析,獲得5個路徑IJQ、 IJKL、 IJKST、 IX和IJKSU 的路徑信息),并且將所獲路徑信息輸出到優(yōu)化部件102。優(yōu)化部件102通過將路徑優(yōu)化成具有優(yōu)化執(zhí)行時間產(chǎn)生中間代碼,即通 過,基于(i)從分析部件101接收的路徑信息和(ii)已經(jīng)通過仿形初步獲得 的執(zhí)行頻率信息120,改變以等于或高于代碼產(chǎn)生閥值"5%"的高頻率執(zhí)行的 路徑(在圖2所示部分程序中,3個路徑IJQ、 UKL和IJKST)中包含的指令 (除了分支指令)的執(zhí)行次序。優(yōu)化部件102將所產(chǎn)生的中間代碼輸出到代碼 轉(zhuǎn)換部件103。代碼轉(zhuǎn)換部件103產(chǎn)生執(zhí)行程序130并且輸出所產(chǎn)生的執(zhí)行程序130。執(zhí) 行程序130包括補償路徑代碼、特定路徑代碼和平行執(zhí)行控制代碼。補償路徑 代碼包括通過將源程序110轉(zhuǎn)換為執(zhí)行格式產(chǎn)生的處理內(nèi)容代碼。每個特定路 徑代碼包括通過將從優(yōu)化部件102接收的具有高執(zhí)行頻率的每個路徑(在圖2 所示部分程序中,3個路徑IJQ、 IJKL和IJKST)的中間代碼轉(zhuǎn)換為執(zhí)行格式 產(chǎn)生的處理內(nèi)容代碼。平行執(zhí)行控制代碼基于表示對應(yīng)特定路徑代碼的路徑的 執(zhí)行次數(shù)的執(zhí)行歷史信息選擇將要平行執(zhí)行的特定路徑代碼,并且執(zhí)行將處理 器元件指派給補償路徑代碼和所選特定路徑代碼的控制,還執(zhí)行取消將處理器 元件向特定路徑代碼的指派的控制。補償路徑代碼和特定路徑代碼的每一個包括以"1"接"1"增加執(zhí)行歷史信息和總執(zhí)行次數(shù)信息的歷史更新處理代碼,其中執(zhí)行歷史信息表示一個路 徑的執(zhí)行次數(shù),總執(zhí)行次數(shù)信息表示作為補償路徑代碼和每個特定路徑代碼的 總執(zhí)行次數(shù)的總執(zhí)行次數(shù)。 <執(zhí)行程序130>下面是實施例1的執(zhí)行程序130的解釋。<結(jié)構(gòu)>參考圖3描述實施例1的執(zhí)行程序130的結(jié)構(gòu)。如圖3所示,執(zhí)行程序130存儲在目標(biāo)硬件中提供的存儲器300中,并 且包括平行執(zhí)行控制部件131、補償路徑代碼132、第一路徑代碼133、第二 路徑代碼134、第三路徑代碼135、...、和第n路徑代碼136。平行執(zhí)行控制部件131具有下述功能基于由存儲在存儲器300中的執(zhí) 行歷史信息301表示的每個路徑的執(zhí)行次數(shù),執(zhí)行對從第一路徑代碼133、第 二路徑代碼134、第三路徑代碼135、...、和第n路徑代碼136中選擇將要與 補償路徑代碼132平行執(zhí)行的特定路徑代碼和將處理器元件指派給補償路徑 代碼132及某些或全部所選特定路徑代碼的控制。這里需要指出的是,可指派 處理器元件的數(shù)量是預(yù)定的,并且由此相應(yīng)確定了指派處理器元件的特定路徑 代碼數(shù)量。更加明確地,平行執(zhí)行控制部件131將由存儲在存儲器300中的執(zhí)行歷 史信息301表示的每個路徑的執(zhí)行次數(shù)除以由在存儲器300中的總執(zhí)行次數(shù)信 息302表示的總執(zhí)行次數(shù),總執(zhí)行次數(shù)是補償路徑代碼和特定路徑代碼的執(zhí)行 次數(shù)的總和,以便獲得每個路徑執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值,并且選擇具有 比后面將要描述的路徑選擇閥值高的前述比值的一個或多個特定路徑代碼。另外,平行執(zhí)行控制部件131將目標(biāo)硬件上可用的處理器元件數(shù)量設(shè)定 為"n",執(zhí)行將處理器元件指派給補償路徑代碼132的控制,并且還執(zhí)行按照 從最高比值到低比值的次序?qū)⑻幚砥髟概山o所選具有高比值的一個或多 個特定路徑代碼中的(n-l)個特定路徑代碼中的每一個的控制。這里,路徑選擇閥值可能是每個路徑的執(zhí)行次數(shù)與通過計算由執(zhí)行仿形 初步獲得的每個路徑執(zhí)行次數(shù)的總和獲得的總執(zhí)行次數(shù)的比值,或者可能是每 個路徑的執(zhí)行次數(shù)與由軟件開發(fā)員以任意方式設(shè)定的總執(zhí)行次數(shù)的比值。并 且,在下面的描述中,假定路徑選擇閥值是后者,即每個路徑的執(zhí)行次數(shù)與由軟件開發(fā)員以任意方式設(shè)定的總執(zhí)行次數(shù)的比值。每當(dāng)總實際執(zhí)行次數(shù)達(dá)到由存儲在存儲器300中的總執(zhí)行次數(shù)信息302 表示的次數(shù)(例如,"100"),平行執(zhí)行控制部件131執(zhí)行對將要與補償路徑代 碼132平行執(zhí)行的特定路徑代碼的檢查。更加明確地,平行執(zhí)行控制部件131選擇預(yù)定數(shù)量的如上所述的將要與 補償路徑代碼132平行執(zhí)行的特定路徑代碼。隨后,當(dāng)部分或全部正在與補償 路徑代碼132平行執(zhí)行的特定路徑代碼沒有包括在新選擇的特定路徑代碼中 時,平行執(zhí)行控制部件131取消將處理器元件向該部分或全部特定路徑代碼的 指派。同樣,當(dāng)部分或全部新選擇的特定路徑代碼沒有包括在正在與補償路徑 代碼132平行執(zhí)行的特定路徑代碼中時,平行執(zhí)行控制部件131將處理器元件 指派給該部分或全部新選擇的特定路徑代碼,取決于目標(biāo)硬件上可用的處理器 元件數(shù)量。每當(dāng)執(zhí)行對將要與補償路徑代碼132平行執(zhí)行的特定路徑代碼的檢查時, 平行執(zhí)行控制部件131初始化存儲在存儲器300中的執(zhí)行歷史信息301和總執(zhí) 行次數(shù)信息302,即將對應(yīng)特定路徑代碼的路徑的執(zhí)行次數(shù)設(shè)定為"0"并將 總執(zhí)行次數(shù)設(shè)定為"0"(此后,將次數(shù)設(shè)定為"0"稱為重設(shè))。以這種結(jié)構(gòu), 能夠執(zhí)行指派處理器元件或取消處理器元件的指派的控制,基于從先前檢查到 當(dāng)前檢查的期間內(nèi)己經(jīng)更新的對應(yīng)特定路徑代碼的路徑執(zhí)行次數(shù)。平行執(zhí)行控制部件131通過在目標(biāo)硬件上運行的OS (操作系統(tǒng))實現(xiàn)對 指派處理器元件或取消處理器元件的指派的控制。處理器元件的指派和指派的 取消是OS的通用功能,因此忽略了其解釋。同樣,當(dāng)給平行執(zhí)行控制部件131指派了目標(biāo)硬件中提供的處理器元件 時,其自身可以實現(xiàn)其功能。圖3示出了給平行執(zhí)行控制部件131指派了第一 PE311以及補償路徑代碼132的示例。當(dāng)平行執(zhí)行控制部件131執(zhí)行對指派處理器元件的控制時,補償路徑代 碼132由作為目標(biāo)硬件上的處理器元件的第一PE3U、第二PE312、第三PE 313和第四PE314中的任何一個執(zhí)行。在圖3所示示例中,將第一PE311指 派給補償路徑代碼132。在下面的描述中,參考圖4簡要描述補償路徑代碼132。圖4示出了如何給構(gòu)成圖2所示源程序110的部分程序的補償路徑代碼132、第一路徑代碼133、第二路徑代碼134和第三路徑代碼135指派處理器 元件并彼此平行地執(zhí)行。如圖4所示,補償路徑代碼132包括處理內(nèi)容代碼400、第一楔形代碼 401、第二楔形代碼402、第三楔形代碼403、第四楔形代碼404、第五楔形代 碼405、第六楔形代碼406和歷史更新代碼407。處理內(nèi)容代碼400是通過將源程序轉(zhuǎn)換為執(zhí)行格式產(chǎn)生的代碼序列,并 且當(dāng)沒有執(zhí)行對應(yīng)將要彼此平行執(zhí)行的特定路徑代碼的路徑時用于補償執(zhí)行 結(jié)果中的兼容性。第一到第六楔形代碼401-406分別輸出不同的分支指令識別信息303。已 經(jīng)以這種方式輸出的分支指令識別信息303用于識別實際執(zhí)行的路徑。將在后 面描述分支指令識別信息303的數(shù)據(jù)結(jié)構(gòu),以及如何將分支指令識別信息303 用于識別實際執(zhí)行路徑。歷史更新代碼407具有執(zhí)行歷史更新處理的功能,其中,其根據(jù)從楔形 代碼輸出的多個分支指令識別信息303的組合識別實際執(zhí)行路徑,對于所識別 路徑用"1"增加由執(zhí)行歷史信息301表示的執(zhí)行次數(shù),并且用"1"增加由總 執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù)。第一路徑代碼133、第二路徑代碼134、第三路徑代碼135、…、和第n 路徑代碼136是與補償路徑代碼132平行執(zhí)行的特定路徑代碼。當(dāng)平行執(zhí)行控 制部件131執(zhí)行對基于對應(yīng)由執(zhí)行歷史信息301表示的特定路徑代碼的路徑的 執(zhí)行次數(shù)指派處理器元件的控制時,第一路徑代碼133、第二路徑代碼134、第三路徑代碼135.....和第n路徑代碼136由作為目標(biāo)硬件上的處理器元件的第一PE311、第二PE312、第三PE313和第四PE314中的任何一個執(zhí)行。 在圖3所示示例中,將第二 PE 312、第三PE 313和第四PE 314分別指派給第 一路徑代碼133、第二路徑代碼134和第三路徑代碼135,沒有給第n路徑代 碼136指派處理器元件。由于,基本上,第一路徑代碼133、第二路徑代碼134、第三路徑代碼135.....和第n路徑代碼136具有相同結(jié)構(gòu),在下面的詳細(xì)描述中,將參考圖4使用第一路徑代碼133。如圖4所示,第一路徑代碼133包括處理內(nèi)容代碼408、路徑條件判斷代 碼409、歷史更新代碼420、調(diào)配代碼430和停止代碼440。通過將中間代碼轉(zhuǎn)換為執(zhí)行格式產(chǎn)生處理內(nèi)容代碼408,該中間代碼通過 改變路徑IJQ包含的指令(除了分支指令)的執(zhí)行次序以便減少指令執(zhí)行時間 而產(chǎn)生。相應(yīng)特定路徑代碼的處理內(nèi)容代碼是彼此不同的。通過將對于路徑IJKL優(yōu)化的中間代碼轉(zhuǎn)換為執(zhí)行格式產(chǎn)生處理內(nèi)容代碼410;通過將對于路徑 JKDST優(yōu)化的中間代碼轉(zhuǎn)換為執(zhí)行格式產(chǎn)生處理內(nèi)容代碼412。路徑條件判斷代碼409具有判斷是否滿足執(zhí)行路徑IJQ的條件的功能。 相應(yīng)特定路徑代碼的路徑條件判斷代碼是彼此不同的。路徑條件判斷代碼411 判斷是否滿足執(zhí)行路徑IJKL的條件;而路徑條件判斷代碼413判斷是否滿足 執(zhí)行路徑JKDST的條件。當(dāng)路徑條件判斷代碼判斷執(zhí)行對應(yīng)歷史更新代碼420所屬的自身特定路 徑代碼的路徑的條件滿足時,執(zhí)行歷史更新代碼420,并且其具有以"1"增 加由執(zhí)行歷史信息301表示的路徑執(zhí)行次數(shù)和以"1"增加由總執(zhí)行次數(shù)信息 302表示的執(zhí)行總次數(shù)的功能。例如,第一路徑代碼133中的歷史更新代碼420 以"1"增加路徑IJQ的執(zhí)行次數(shù)。在執(zhí)行歷史更新代碼420之后執(zhí)行調(diào)配代碼430,其具有停止除其所屬的 自身路徑代碼之外的路徑的執(zhí)行的功能,即停止補償路徑代碼132和其它特定 路徑代碼的執(zhí)行,以便使由執(zhí)行自身特定路徑代碼所獲得的計算結(jié)果被反映。當(dāng)路徑條件判斷代碼409判斷不滿足條件時執(zhí)行停止代碼440,并且其具 有停止其所屬自身路徑代碼的執(zhí)行的功能。這里需要指出的是,通過將已經(jīng)優(yōu)化為具有減少的執(zhí)行時間的中間代碼 轉(zhuǎn)換為執(zhí)行格式產(chǎn)生處理內(nèi)容代碼408,以及特定路徑代碼的執(zhí)行時間短于補 償路徑代碼132的執(zhí)行時間。因此,當(dāng)路徑條件判斷代碼409判斷滿足執(zhí)行對應(yīng)特定路徑代碼的路徑 的條件,為了停止補償路徑代碼132的執(zhí)行,執(zhí)行調(diào)配代碼430,并且由此不 執(zhí)行補償路徑代碼132中包含的歷史更新代碼407。<數(shù)據(jù)>這里將描述由存儲在目標(biāo)硬件的存儲器300中的執(zhí)行程序130使用的數(shù)據(jù)。執(zhí)行歷史信息301包括用于識別源程序中包含的路徑的標(biāo)識,并且包括 表示在目標(biāo)硬件上由標(biāo)識識別的路徑的實際執(zhí)行次數(shù)的執(zhí)行次數(shù)。當(dāng)執(zhí)行補償路徑代碼132的歷史更新代碼407或特定路徑代碼的歷史更新代碼420時,以"1"增加表示相應(yīng)路徑的實際執(zhí)行次數(shù)的執(zhí)行次數(shù)??倛?zhí)行次數(shù)信息302表示補償路徑代碼132和每個特定路徑代碼的總執(zhí)行次數(shù)。當(dāng)執(zhí)行補償路徑代碼132的歷史更新代碼407或特定路徑代碼的歷史更新代碼420時,以"1"增加總執(zhí)行次數(shù)。當(dāng)執(zhí)行圖4所示第一到第六楔形代碼401-406時,輸出分支指令識別信息303。每個分支指令識別信息303識別其從之輸出的楔形代碼。通過使用分支指令識別信息303,能夠識別實際執(zhí)行的路徑。分支指令識別信息303可能采取其可以識別執(zhí)行的第一到第六楔形代碼401-406中的一個的任何形式。在下面的描述中,作為一個示例,假定當(dāng)執(zhí)行第一到第六楔形代碼401-406時,分別將"1"到"6"作為分支指令識別信息303輸出。例如,當(dāng)僅有"1"作為分支指令識別信息303輸出時,認(rèn)為執(zhí)行了基塊 1 200。其還表示沒有執(zhí)行基塊J 202,而執(zhí)行了基塊X201。以該方式,能夠 作為實際執(zhí)行的路徑識別路徑IX 。<運行>這里,將描述執(zhí)行程序130的運行。 <路徑選擇>在下面的描述中,將參考圖5所示流程圖描述由平行執(zhí)行控制部件131 執(zhí)行的路徑選擇處理。平行執(zhí)行控制部件131判斷是否在步驟S502中處理過對應(yīng)特定路徑代碼 的全部路徑(步驟S501)。當(dāng)其判斷沒有處理國對應(yīng)特定路徑代碼的全部路徑時(步驟S501 "N"), 平行執(zhí)行控制部件131基于存儲在存儲器300中的執(zhí)行歷史信息301和總執(zhí)行 次數(shù)信息302判斷是否還沒有處理的路徑的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值等 于或大于由軟件開發(fā)員以任意方式設(shè)定的路徑選擇閥值(步驟S502)。當(dāng)其判斷路徑的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值等于或大于路徑選擇閥值 時(步驟S502 "Y"),平行執(zhí)行控制部件131將該路徑添加到平行執(zhí)行路徑列 表中,以便每個路徑的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值以降序排列(步驟S503), 并返回步驟S501。當(dāng)其判斷路徑的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值小于路徑選擇閥值時(步驟S502 "N"),平行執(zhí)行控制部件131返回步驟S501。當(dāng)平行執(zhí)行控制部件131判斷處理過對應(yīng)特定路徑代碼的全部路徑(步 驟S501 "Y"),處理結(jié)束。<處理器元件的指派>在下面的描述中,將參考圖6所示流程圖描述由平行執(zhí)行控制部件131 執(zhí)行的處理器元件指派。平行執(zhí)行控制部件131獲得表示在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量 的信息(步驟S601)。平行執(zhí)行控制部件131將處理器元件指派給補償路徑代碼132,并且將補 償路徑添加到執(zhí)行路徑列表(步驟S602)。平行執(zhí)行控制部件131判斷是否已經(jīng)指派了處理器元件的路徑數(shù)量等于 在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(步驟S603)。當(dāng)其判斷已經(jīng)指派了處理器元件的路徑數(shù)量不等于在目標(biāo)計算機(jī)上可用 的處理器元件數(shù)量(步驟S603 "N")時,平行執(zhí)行控制部件131將處理器元件指派給對應(yīng)平行執(zhí)行路徑列表的開始路徑的特定路徑代碼,即具有平行執(zhí)行 路徑列表中包括的路徑的執(zhí)行次數(shù)的最高比值的路徑,并且從平行執(zhí)行路徑列 表中刪除對應(yīng)指派了處理器元件的特定路徑代碼的路徑(步驟S604)。平行執(zhí)行控制部件131將對應(yīng)指派了處理器元件的特定路徑代碼的路徑 添加到執(zhí)行路徑列表(步驟S605)。平行執(zhí)行控制部件131判斷是否平行執(zhí)行路徑列表不包含路徑是真實的 (步驟S606)。當(dāng)其判斷平行執(zhí)行路徑列表不包含路徑不是真實的(步驟S606 "N"), 平行執(zhí)行控制部件131返回步驟S603;當(dāng)其判斷是真實的(步驟S606 "Y"), 平行執(zhí)行控制部件131重設(shè)由執(zhí)行歷史信息301表示的每個路徑的執(zhí)行次數(shù)和 由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù)(步驟S607)。平行執(zhí)行控制部件131執(zhí)行對應(yīng)執(zhí)行路徑列表中包含的全部路徑的代碼 (對應(yīng)執(zhí)行路徑列表中包含的路徑的補償路徑代碼132和特定路徑代碼)(步 驟S608)。當(dāng)其判斷已經(jīng)指派了處理器元件的路徑數(shù)量等于在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(步驟S603 "Y"),平行執(zhí)行控制部件131轉(zhuǎn)到步驟S607。 <歷史更新代碼407的運行〉下面將參考圖7所示流程圖描述歷史更新處理,在其中補償路徑代碼132 中包含的歷史更新代碼407更新執(zhí)行歷史信息301和總執(zhí)行次數(shù)信息302。歷史更新代碼407獲得存儲在存儲器300中的分支指令識別信息303 (步 驟S701)。歷史更新代碼407通過查閱所獲分支指令識別信息303識別實際執(zhí)行的 路徑(步驟S702)。歷史更新代碼407以"1"增加由存儲在存儲器300中的分支指令識別信 息303中包括的一個標(biāo)識識別的實際執(zhí)行路徑的執(zhí)行次數(shù)(步驟S703)。歷史更新代碼407以"1"增加由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù) (步驟S704)。<歷史更新代碼420的運行〉下面將參考圖8所示流程圖描述歷史更新處理,在其中每個特定路徑代 碼中包含的歷史更新代碼420更新執(zhí)行歷史信息301和總執(zhí)行次數(shù)信息302。歷史更新代碼420以"l"增加對應(yīng)自身特定路徑代碼的路徑的執(zhí)行次數(shù), 該路徑由執(zhí)行歷史信息301中包括的一個標(biāo)識識別(步驟S801)。歷史更新代碼420以"1"增加由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù) (步驟S802)。<處理器元件的指派的檢查>下面將參考圖9所示流程圖描述檢查將要與補償路徑代碼302平行執(zhí)行 的特定路徑代碼的處理。平行執(zhí)行控制部件131判斷是否由存儲在存儲器300中的總執(zhí)行次數(shù)信 息302表示的總執(zhí)行次數(shù)等于"100"(步驟S901)。當(dāng)其判斷總執(zhí)行次數(shù)不等于"100"(步驟S901 "N")時,平行執(zhí)行控制 部件131返回步驟S901。當(dāng)其判斷總執(zhí)行次數(shù)等于"100"(步驟S901 "Y")時,為了選擇對應(yīng)將 要與補償路徑代碼302平行執(zhí)行的特定路徑代碼的路徑,平行執(zhí)行控制部件 131根據(jù)圖5所示流程圖執(zhí)行路徑選擇處理(步驟S902)。平行執(zhí)行控制部件131判斷是否存在包含在執(zhí)行路徑列表中但不包含在平行執(zhí)行路徑列表中的路徑(步驟S903)。當(dāng)其判斷存在包含在執(zhí)行路徑列表中但不包含在平行執(zhí)行路徑列表中的路徑時(步驟S903 "Y"),平行執(zhí)行控制部件131取消將處理器元件向?qū)?yīng)全 部檢測路徑的特定路徑代碼的指派(步驟S904),并且轉(zhuǎn)到步驟S905。當(dāng)其判斷不存在包含在執(zhí)行路徑列表中但不包含在平行執(zhí)行路徑列表中 的路徑時(步驟S903 "N"),平行執(zhí)行控制部件131轉(zhuǎn)到步驟S905。平行執(zhí)行控制部件131判斷是否存在包含在平行執(zhí)行路徑列表中但不包 含在執(zhí)行路徑列表中的路徑(步驟S905)。當(dāng)其判斷存在包含在平行執(zhí)行路徑列表中但不包含在執(zhí)行路徑列表中的 路徑(步驟S905 "Y"),平行執(zhí)行控制部件131從平行執(zhí)行路徑列表刪除所檢 測路徑之外的路徑(步驟S906),并且轉(zhuǎn)到步驟S907。當(dāng)其判斷不存在包含在平行執(zhí)行路徑列表中但不包含在執(zhí)行路徑列表中 的路徑(步驟S905 "N"),平行執(zhí)行控制部件131轉(zhuǎn)到步驟S912。在這里忽略了后續(xù)步驟的描述,這是由于步驟S卯7與圖6所示處理器 元件指派處理中步驟S601相同;步驟S908-913與圖6所示處理器元件指派處 理中步驟S603-608相同。<特定示例的運行>使用圖2所示源程序110的部分,作為示例,更加詳細(xì)地描述執(zhí)行程序 130的運行。<路徑選擇>在下面的描述中,將參考圖5所示流程圖描述由平行執(zhí)行控制部件131 執(zhí)行的路徑選擇處理。在下面的描述中,假定存儲器300將對應(yīng)路徑IJQ、 IJKL、 IJKST和IX 的特定路徑代碼存儲為第一、第二、第三和第四路徑代碼。在下面的描述中,還假定執(zhí)行了仿形,在其中圖2所示源程序110的一 部分執(zhí)行了一百次,并且將仿形結(jié)果用作執(zhí)行歷史信息301的初始值,并且假 定由仿形獲得的路徑的執(zhí)行次數(shù)是:路徑IJQ為60;路徑IJKL為30;路徑IJKST 為5;路徑IX為3;以及路徑IJKSU為2。在下面的描述中,還假定已經(jīng)由軟件開發(fā)員以任意方式指定的路徑選擇 閥值是"5%"。平行執(zhí)行控制部件131判斷是否在步驟S502中處理過全部路徑IJQ、 IJKL、 IJKST和IX (步驟S501)。由于在步驟S502中沒有處理過路徑IJQ、 IJKL、 IJKST禾tHX,平行執(zhí)行 控制部件131做出否定判斷(步驟S501 "N")。平行執(zhí)行控制部件131基于存 儲在存儲器300中的執(zhí)行歷史信息301和總執(zhí)行次數(shù)信息302判斷是否還沒有 處理過的路徑IJQ的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值(60%)等于或大于由軟件 開發(fā)員以任意方式指定的路徑選擇閥值(5%)。(步驟S502)。平行執(zhí)行控制部件131判斷路徑IJQ的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值 (60%)等于或大于路徑選擇閥值(5%)。(步驟S502 "Y")。平行執(zhí)行控制 部件131將路徑IJQ添加到平行執(zhí)行路徑列表(步驟S503),并且返回步驟 S501。平行執(zhí)行控制部件131判斷是否在步驟S502中處理過全部路徑IJQ、 IJKL、 IJKST禾niX (步驟S501)。由于在步驟S502中沒有處理過路徑IJKL、 IJKST和IX,平行執(zhí)行控制 部件131做出否定判斷(步驟S501 "N")。平行執(zhí)行控制部件131基于存儲在 存儲器300中的執(zhí)行歷史信息301和總執(zhí)行次數(shù)信息302判斷是否還沒有處理 過的路徑IJKL的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值(30%)等于或大于由軟件開 發(fā)員以任意方式指定的路徑選擇閥值(5%)。(步驟S502)。平行執(zhí)行控制部件131判斷路徑IJKL的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值 (30%)等于或大于路徑選擇閥值(5%)。(步驟S502 "Y")。平行執(zhí)行控制 部件131將路徑IJKL添加到平行執(zhí)行路徑列表(步驟S503),并且返回步驟 S501。平行執(zhí)行控制部件131判斷是否在步驟S502中處理過全部路徑IJQ、 IJKL、 IJKST禾tnX (步驟S501)。由于在步驟S502中沒有處理過路徑IJKST和IX,平行執(zhí)行控制部件131 做出否定判斷(步驟S501 "N")。平行執(zhí)行控制部件131基于存儲在存儲器 300中的執(zhí)行歷史信息301和總執(zhí)行次數(shù)信息302判斷是否還沒有處理過的路 徑IJKST的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值(5%)等于或大于由軟件開發(fā)員以 任意方式指定的路徑選擇閥值(5%)。(步驟S502)。平行執(zhí)行控制部件131判斷路徑IJKST的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值(5%)等于或大于路徑選擇閥值(5%)。(步驟S502 "Y")。平行執(zhí)行控制部 件131將路徑IJKST添加到平行執(zhí)行路徑列表(步驟S503),并且返回步驟 S501。平行執(zhí)行控制部件131判斷是否在步驟S502中處理過全部路徑IJQ、 IJKL、 IJKST禾BIX (步驟S501)。由于在步驟S502中沒有處理過路徑IX,平行執(zhí)行控制部件131做出否定 判斷(步驟S501 "N")。平行執(zhí)行控制部件131基于存儲在存儲器300中的執(zhí) 行歷史信息301和總執(zhí)行次數(shù)信息302判斷是否還沒有處理過的路徑IX的執(zhí) 行次數(shù)與總執(zhí)行次數(shù)的比值(3%)等于或大于由軟件幵發(fā)員以任意方式指定 的路徑選擇閥值(5%)。(步驟S502)。平行執(zhí)行控制部件131判斷路徑IX的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值(3。/。) 不等于或大于路徑選擇閥值(5%)。(步驟S502 "N")。平行執(zhí)行控制部件131 返回步驟S501。平行執(zhí)行控制部件131判斷是否在步驟S502中處理過全部路徑IJQ、 IJKL、 UKST和IX (步驟S501 )。由于在步驟S502中處理過全部路徑IJQ、 IJKL、 IJKST和IX,平行執(zhí)行 控制部件131做出肯定判斷(步驟S501 "Y"),并且該處理結(jié)束。在如上所述的執(zhí)行該處理之后,已經(jīng)將路徑IJQ、 IJKL和IJKST登記在 平行執(zhí)行路徑列表中。<處理器元件的指派>在下面的描述中,將參考圖6所示流程圖描述由平行執(zhí)行控制部件131 執(zhí)行的處理器元件指派處理。在下面的描述中,假定將路徑IJQ、 IJKL和IJKST登記在平行執(zhí)行路徑 列表中,并且假定在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量是"3"。平行執(zhí)行控制部件131獲得表示在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量 (3)的信息(步驟S601)。平行執(zhí)行控制部件131將處理器元件指派給補償路徑代碼132,并且將補 償路徑添加到執(zhí)行路徑列表(步驟S602)。平行執(zhí)行控制部件131判斷是否已經(jīng)指派了處理器元件的路徑的數(shù)量(l) 等于在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(3)(步驟S603)。平行執(zhí)行控制部件131判斷己經(jīng)指派了處理器元件的路徑的數(shù)量(1)不等于在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(3)(步驟S603 "N")。平行執(zhí)行 控制部件131將處理器元件指派給對應(yīng)作為平行執(zhí)行路徑列表的開始路徑的 路徑IJQ的特定路徑代碼,并且從平行執(zhí)行路徑列表刪除對應(yīng)指派了處理器元 件的特定路徑代碼的路徑IJQ (步驟S604)。平行執(zhí)行控制部件131將對應(yīng)指派了處理器元件的特定路徑代碼的路徑 IJQ添加到執(zhí)行路徑列表(步驟S605)。平行執(zhí)行控制部件131判斷是否平行執(zhí)行路徑列表不包含路徑是真實的 (步驟S606)。由于平行執(zhí)行路徑列表包含路徑IJKL和IJKST,平行執(zhí)行控制部件131 判斷其是不真實的(步驟S606 "N")。平行執(zhí)行控制部件131返回步驟S603。平行執(zhí)行控制部件131判斷是否已經(jīng)指派了處理器元件的路徑的數(shù)量(2) 等于在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(3)(步驟S603)。平行執(zhí)行控制部件131判斷已經(jīng)指派了處理器元件的路徑的數(shù)量(2)不 等于在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(3)(步驟S603 "N")。平行執(zhí)行 控制部件131將處理器元件指派給對應(yīng)作為平行執(zhí)行路徑列表的開始路徑的 路徑IJKL的特定路徑代碼,并且從平行執(zhí)行路徑列表刪除對應(yīng)指派了處理器 元件的特定路徑代碼的路徑IJKL (步驟S604)。平行執(zhí)行控制部件131將對應(yīng)指派了處理器元件的特定路徑代碼的路徑 IJKL添加到執(zhí)行路徑列表(步驟S605)。平行執(zhí)行控制部件131判斷是否平行執(zhí)行路徑列表不包含路徑是真實的 (步驟S606)。由于平行執(zhí)行路徑列表包含路徑IJKST,平行執(zhí)行控制部件131判斷其是 不真實的(步驟S606 "N")。平行執(zhí)行控制部件131返回步驟S603。平行執(zhí)行控制部件131判斷是否已經(jīng)指派了處理器元件的路徑的數(shù)量G) 等于在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(3)(步驟S603)。平行執(zhí)行控制部件131判斷已經(jīng)指派了處理器元件的路徑的數(shù)量(3)等 于在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(3)(步驟S603 "Y")。平行執(zhí)行控 制部件131轉(zhuǎn)到步驟S607。平行執(zhí)行控制部件131重設(shè)由執(zhí)行歷史信息301表示的每個路徑的執(zhí)行次數(shù)和由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù)(步驟S607)。平行執(zhí)行控制部件131執(zhí)行對應(yīng)執(zhí)行路徑列表中包含的全部路徑的代碼 (補償路徑代碼132和對應(yīng)路徑LJQ和IJKL的特定路徑代碼)(步驟S60S)。 <歷史更新代碼407的運行>下面將參考圖7所示流程圖描述歷史更新處理,在其中補償路徑代碼132 中包含的歷史更新代碼407更新執(zhí)行歷史信息301和總執(zhí)行次數(shù)信息302。在下面的描述中,假定作為分支指令識別信息303登記了值"1"、 "2"、 "3"、 "4"和"6",假定由存儲在存儲器300中的執(zhí)行歷史信息301表示的路 徑IJKST的執(zhí)行次數(shù)是"29",并且假定由總執(zhí)行次數(shù)信息302表示的總執(zhí)行 次數(shù)是"98"。歷史更新代碼407獲得存儲在存儲器300中的分支指令識別信息303 ("1"、 "2"、 "3"、 "4"和"6")(步驟S701)。歷史更新代碼407通過參考所獲分支指令識別信息303 ("1"、 "2"、 "3"、 "4"和"6")識別實際執(zhí)行的路徑IJKST (步驟S702)。歷史更新代碼407以"1 "增加由存儲在存儲器300中的執(zhí)行歷史信息301 表示的路徑IJKST的執(zhí)行次數(shù)(29),以便該次數(shù)變?yōu)?30"(步驟S703)。歷史更新代碼407以"1"增加由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù) (98),以便該總次數(shù)變?yōu)?99"(步驟S704)。<歷史更新代碼420的運行>下面將參考圖8所示流程圖描述歷史更新處理,在其中每個特定路徑代 碼中包含的歷史更新代碼420更新執(zhí)行歷史信息301和總執(zhí)行次數(shù)信息302。在下面的描述中,假定已經(jīng)將第二 PE 312指派給作為對應(yīng)路徑IJQ的特 定路徑代碼的第一路徑代碼,假定路徑條件判斷代碼409已經(jīng)判斷是否滿足執(zhí) 行路徑IJQ的條件,假定由存儲在存儲器300中的執(zhí)行歷史信息301表示的路 徑IJQ的執(zhí)行次數(shù)是"49",并且假定由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次 數(shù)是"99"。歷史更新代碼420以"1"增加對應(yīng)自身特定路徑代碼的路徑IJQ的執(zhí)行 次數(shù)(49),路徑IJQ由執(zhí)行歷史信息301中包括的一個標(biāo)識識別,以便該次 數(shù)變?yōu)?50"(步驟S801)。歷史更新代碼420以"1"增加由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù)(99),以便該總次數(shù)變?yōu)?100"(步驟S802)。 <處理器元件指派的檢査>下面參考圖9所示流程圖描述檢查將要與補償路徑代碼132平行執(zhí)行的 特定路徑代碼的處理。在下面的描述中,假定在執(zhí)行路徑列表中登記了補償路徑和路徑IJQ和 IJKL,假定已經(jīng)指派了處理器元件的路徑數(shù)量是"3",并且假定在目標(biāo)計算機(jī) 上可用的處理器元件數(shù)量是"3"。在下面的描述中,還假定由存儲在存儲器300中的執(zhí)行歷史信息301表 示的路徑的執(zhí)行次數(shù)是路徑IJQ為50;路徑IJKL為20;路徑IJKST為30; 路徑IX為O,假定由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù)為100,并且假定 由軟件開發(fā)員以任意方式指定的路徑選擇閥值為30%。平行執(zhí)行控制部件131判斷是否由存儲在存儲器300中的總執(zhí)行次數(shù)信 息302表示的總執(zhí)行次數(shù)(100)等于"100"(步驟S卯1)。平行執(zhí)行控制部件131判斷總執(zhí)行次數(shù)等于"100"(步驟S901 "Y")。 為了選擇對應(yīng)將要與補償路徑代碼132平行執(zhí)行的特定路徑代碼的路徑,平行 執(zhí)行控制部件131根據(jù)圖5所示流程圖執(zhí)行路徑選擇處理(步驟S902)。作為 路徑選擇處理的結(jié)果,將路徑UQ和IJKST登記在平行執(zhí)行路徑列表中。平行執(zhí)行控制部件131判斷是否存在包含在執(zhí)行路徑列表(補償路徑和 路徑IJQ和IJKL)中但不包含在平行執(zhí)行路徑列表(路徑IJQ和IJKST)中的 路徑(步驟S903)。由于路徑IJKL包含在執(zhí)行路徑列表中但不包含在平行執(zhí)行路徑列表中, 平行執(zhí)行控制部件131做出肯定判斷(步驟S卯3 "Y")。平行執(zhí)行控制部件 131取消將處理器元件向?qū)?yīng)路徑IJKL的特定路徑代碼的指派,并且將路徑 IJKL從執(zhí)行路徑列表中刪除(步驟S904)。作為該步驟的結(jié)果,己經(jīng)指派了處 理器元件的路徑數(shù)量是"2"。平行執(zhí)行控制部件131判斷是否存在包含在平行執(zhí)行路徑列表(路徑IJQ 和IJKST)中但不包含在執(zhí)行路徑列表(補償路徑和路徑IJQ)中的路徑(步 驟S905)。由于路徑IJKST包含在平行執(zhí)行路徑列表中但不包含在執(zhí)行路徑列表中, 平行執(zhí)行控制部件131做出肯定斷(步驟S905 "Y")。平行執(zhí)行控制部件131從平行執(zhí)行路徑列表中刪除路徑IJKST以外的路徑(步驟S906)。平行執(zhí)行控制部件131獲得在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(3) (步驟S907)。平行執(zhí)行控制部件131判斷是否己經(jīng)指派了處理器元件的路徑數(shù)量(2) 等于在目標(biāo)計算機(jī)上可用的處理器元件數(shù)量(3)(步驟S908)。由于己經(jīng)指派了處理器元件的路徑數(shù)量(2)等于在目標(biāo)計算機(jī)上可用的 處理器元件數(shù)量(3),平行執(zhí)行控制部件131做出否定判斷(步驟S卯8"N")。 平行執(zhí)行控制部件131將處理器元件指派給對應(yīng)作為平行執(zhí)行路徑列表的開 始路徑的路徑IJKST的特定路徑代碼,并且從平行執(zhí)行路徑列表刪除對應(yīng)指派 了處理器元件的特定路徑代碼的路徑IJKST (步驟S909)。平行執(zhí)行控制部件131將對應(yīng)指派了處理器元件的特定路徑代碼的路徑 IJKST添加到執(zhí)行路徑列表中(步驟S910)。平行執(zhí)行控制部件131判斷是否平行執(zhí)行路徑列表不包含路徑是真實的 (步驟S911)。由于平行執(zhí)行路徑列表不包含路徑是真實的,平行執(zhí)行控制部件131做 出肯定判斷(步驟S911 "Y")。平行執(zhí)行控制部件131重設(shè)由執(zhí)行歷史信息 301表示的每個路徑的執(zhí)行次數(shù)和由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù) (步驟S912)。平行執(zhí)行控制部件131執(zhí)行對應(yīng)執(zhí)行路徑列表中包含的全部路徑的代碼 (補償路徑代碼132和對應(yīng)路徑IJQ和IJKST的特定路徑代碼)(步驟S913)。 《實施例2》 <綜述>在實施例1的檢查將要彼此平行執(zhí)行的特定路徑代碼的處理中,執(zhí)行程 序130取消將處理器元件向在己經(jīng)與補償路徑代碼平行執(zhí)行的特定路徑代碼 中的對應(yīng)其執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值小于路徑選擇閥值的路徑的特定路 徑代碼(此后這種路徑稱為限制路徑)的指派,將處理器元件指派給還沒有平 行執(zhí)行的且其執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值大于路徑選擇閥值的特定路徑代 碼,取決于目標(biāo)硬件上可用的處理器元件的數(shù)量,并且使該特定路徑代碼與補 償路徑代碼平行地執(zhí)行。該結(jié)構(gòu)能夠使處理器元件有效地使用并且使處理速度 增加。實施例2的執(zhí)行程序1000具有與實施例1的執(zhí)行程序130共有的部分-在檢査將要彼此平行執(zhí)行的特定路徑代碼的處理中,其取消將處理器元件向?qū)?應(yīng)限制路徑的特定路徑代碼的指派,以便有效地使用處理器元件。實施例2的執(zhí)行程序1000還將處理器元件指派給分別對應(yīng)執(zhí)行時間總和小于補償路徑代碼的執(zhí)行時間的連續(xù)執(zhí)行路徑和限制路徑的一對特定路徑代 碼,其中連續(xù)執(zhí)行路徑是對應(yīng)已經(jīng)與補償路徑代碼平行執(zhí)行的特定路徑代碼的且其執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值大于路徑選擇閥值的路徑。實施例2的執(zhí)行 程序1000使該對特定路徑代碼與補償路徑代碼平行執(zhí)行。指派給該對特定路徑代碼的處理器元件通常執(zhí)行具有高執(zhí)行頻率的連續(xù) 執(zhí)行路徑;并且當(dāng)連續(xù)執(zhí)行路徑不滿足執(zhí)行條件時,處理器元件執(zhí)行具有低執(zhí) 行頻率的限制路徑。以該結(jié)構(gòu),能夠在當(dāng)連續(xù)執(zhí)行路徑滿足執(zhí)行條件時如實施 例1的情況中一樣加速處理。而且,由于分別對應(yīng)連續(xù)執(zhí)行路徑和限制路徑的特定路徑代碼的執(zhí)行時 間總和小于補償路徑代碼的執(zhí)行時間,能夠在即使當(dāng)連續(xù)執(zhí)行路徑不滿足執(zhí)行 條件而限制路徑滿足執(zhí)行條件時加速處理。<程序產(chǎn)生裝置>將描述用于產(chǎn)生實施例2的程序的執(zhí)行程序1000的程序產(chǎn)生裝置?;旧?,實施例2的程序產(chǎn)生裝置的結(jié)構(gòu)具有與實施例1的程序產(chǎn)生裝 置100相同的結(jié)構(gòu),但與其不同的是實施例2的代碼轉(zhuǎn)換部件產(chǎn)生包含與實施 例1的代碼轉(zhuǎn)換部件103產(chǎn)生的執(zhí)行程序130中所包含代碼不同的特定路徑代 碼和平行執(zhí)行控制代碼的執(zhí)行程序1000。這里需要指出的是,輸入到實施例2的程序產(chǎn)生裝置的數(shù)據(jù)和實施例2 的程序產(chǎn)生裝置的運行與實施例1的程序產(chǎn)生裝置100的是相同的,除了產(chǎn)生 執(zhí)行程序1000,并且忽略了其描述。<執(zhí)行程序1000>下面是實施例2的執(zhí)行程序1000的解釋。 <結(jié)構(gòu)>將參考圖10描述實施例2的執(zhí)行程序1000的結(jié)構(gòu)。 如圖10所示,執(zhí)行程序1000存儲在目標(biāo)硬件中提供的存儲器300中, 并且包括補償路徑代碼132、平行執(zhí)行控制部件1001、第一路徑代碼1003、第二路徑代碼1004、第三路徑代碼1005、...、和第n路徑代碼1006。 由于其與實施例1中的相同,這里忽略了補償路徑代碼132的描述。 平行執(zhí)行控制部件1001基本上具有與實施例1的平行執(zhí)行控制部件131 相同的功能,但是當(dāng)檢査特定路徑代碼時具有與其不同的功能。平行執(zhí)行控制部件1001具有下述功能執(zhí)行對在對應(yīng)平行執(zhí)行的特定路 徑代碼的路徑中檢測執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值(此后該比值稱為"執(zhí)行比 值")小于路徑選擇閥值的限制路徑的控制,取消處理器元件向?qū)?yīng)所檢測的 限制路徑的特定路徑代碼的指派,并且確定將處理器元件指派給一對對應(yīng)執(zhí)行 比值大于路徑選擇閥值的連續(xù)執(zhí)行路徑的特定路徑代碼,和對應(yīng)取消處理器元 件指派的一個限制路徑的特定路徑代碼。更加明確地,當(dāng)限制路徑具有等于或小于路徑選擇閥值且等于或大于預(yù) 定值(例如,預(yù)定值是通過用"0.7"乘以路徑選擇閥值而獲得的值)的執(zhí)行 比值時,和當(dāng)對應(yīng)連續(xù)執(zhí)行路徑的特定路徑代碼的執(zhí)行時間和對應(yīng)限制路徑的 特定路徑代碼的執(zhí)行時間的總和小于補償路徑代碼的執(zhí)行時間時,平行執(zhí)行控 制部件1001確定將處理器元件指派給一對對應(yīng)連續(xù)執(zhí)行路徑的特定路徑代碼 和對應(yīng)限制路徑的特定路徑代碼。在該情況中,平行執(zhí)行控制部件1001將連 續(xù)執(zhí)行路徑和限制路徑的標(biāo)識登記到存儲在存儲器300中的合并路徑信息 1002。設(shè)定限制路徑應(yīng)該具有等于或小于路徑選擇閥值且等于或大于預(yù)定值 (例如,預(yù)定值是通過用"0.7"乘以路徑選擇閥值而獲得的值)的執(zhí)行比值 的條件的原因如下。就是說,當(dāng)限制路徑具有明顯小于路徑選擇閥值的執(zhí)行比 值時,執(zhí)行對應(yīng)限制路徑的特定路徑代碼的可能性非常低,即使平行執(zhí)行控制 部件1001將處理器元件指派給該對對應(yīng)連續(xù)執(zhí)行路徑的特定路徑代碼和對應(yīng) 限制路徑的特定路徑代碼。在本實施例中,假定由軟件開發(fā)員初步指定小于路徑選擇閥值的預(yù)定值, 并且假定由仿形或相似方式初步獲得對應(yīng)連續(xù)執(zhí)行路徑的特定路徑代碼、對應(yīng) 限制路徑的特定路徑代碼和使用的補償路徑代碼的執(zhí)行時間。上述的本實施例標(biāo)識與識別執(zhí)行歷史信息301中包括的那些相同。將在 后面詳細(xì)描述合并路徑信息1002。第一路徑代碼1003、第二路徑代碼1004、第三路徑代碼1005、...、和第n路徑代碼1006是基本與第一路徑代碼133、第二路徑代碼134、第三路徑代 碼135、...、和第n路徑代碼136相同的特定路徑代碼,但是與其不同的是 每個特定路徑代碼包括限制路徑執(zhí)行判斷代碼1101和限制路徑執(zhí)行代碼 1102,其中限制路徑執(zhí)行判斷代碼1101基于存儲在目標(biāo)硬件的存儲器300中 的合并路徑信息1002判斷是否執(zhí)行執(zhí)行對應(yīng)限制路徑的特定路徑代碼,而限 制路徑執(zhí)行代碼1102執(zhí)行對應(yīng)限制路徑的特定路徑代碼。由于基本上第一路徑代碼1003、第二路徑代碼1004、第三路徑代碼1005.....和第n路徑代碼1006具有相同結(jié)構(gòu),在下面的詳細(xì)描述中,將參考圖11使用第一路徑代碼1003。圖11示出如何將處理器元件指派給構(gòu)成圖2所示源程序110的部分程序 的補償路徑代碼132、第一路徑代碼1003、第二路徑代碼1004和第三路徑代 碼1005并且彼此平行地執(zhí)行。如圖11所示,第一路徑代碼1003包括處理內(nèi)容代碼408、路徑條件判斷 代碼409、歷史更新代碼420。調(diào)配代碼430、停止代碼440、限制路徑執(zhí)行判 斷代碼1101和限制路徑執(zhí)行代碼1102。第一路徑代碼1003中包括的代碼與實施例1的第一路徑代碼133中包括 的代碼相同,除了限制路徑執(zhí)行判斷代碼1101和限制路徑執(zhí)行代碼1102。因 此,忽略了除了限制路徑執(zhí)行判斷代碼1101和限制路徑執(zhí)行代碼1102之外的 代碼的描述。限制路徑執(zhí)行判斷代碼1101是當(dāng)路徑條件判斷代碼409判斷不滿足條件 時執(zhí)行的代碼,并且具有判斷是否存在將要在路徑IJQ之后執(zhí)行的限制路徑的 功能。更加明確地,當(dāng)將對應(yīng)路徑IJQ的標(biāo)識的限制路徑的標(biāo)識登記到存儲在 存儲器300中的合并路徑信息1002時,限制路徑執(zhí)行判斷代碼1101判斷存在 將要執(zhí)行的限制路徑。當(dāng)限制路徑執(zhí)行判斷代碼1101判斷存在將要執(zhí)行的限制路徑時,限制路 徑執(zhí)行代碼1102基于存儲在存儲器300中的合并路徑信息1002執(zhí)行對應(yīng)其標(biāo) 識對應(yīng)路徑IJQ的標(biāo)識的限制路徑的特定路徑代碼。<數(shù)據(jù)〉合并路徑信息1002包括用于識別連續(xù)執(zhí)行路徑的標(biāo)識,并且包括用于識別將要在連續(xù)執(zhí)行路徑之后執(zhí)行的限制路徑的標(biāo)識。
當(dāng)平行執(zhí)行控制部件1001確定將處理器元件指派給一對(i)對應(yīng)連續(xù)執(zhí) 行路徑的特定路徑代碼和(ii)對應(yīng)限制路徑的特定路徑代碼時,將數(shù)據(jù)添加 到合并路徑信息1002。
<運行〉
<處理器元件的指派的檢查>
下面參考圖12所示流程圖描述檢查將要與補償路徑代碼132平行執(zhí)行的
特定路徑代碼的處理。
由于其與圖9的流程圖所示步驟S901和S902相同,忽略了步驟S1201 和S1202的描述。
平行執(zhí)行控制部件1001判斷是否存在包含在執(zhí)行路徑列表中但不包含在 平行執(zhí)行路徑列表中的路徑(步驟S1203)。
當(dāng)存在包含在執(zhí)行路徑列表中但不包含在平行執(zhí)行路徑列表中的路徑時 (步驟S1203 "Y"),平行執(zhí)行控制部件1001取消處理器元件向?qū)?yīng)全部所檢 測限制路徑的指派,并且將全部所檢測限制路徑從執(zhí)行路徑列表刪除(步驟 S1204)。隨后,平行執(zhí)行控制部件1001轉(zhuǎn)到步驟S1205。
當(dāng)不存在這種包含在執(zhí)行路徑列表中但不包含在平行執(zhí)行路徑列表中的 路徑時(步驟S1203 "N"),平行執(zhí)行控制部件1001轉(zhuǎn)到步驟S1212。
平行執(zhí)行控制部件1001將全部所檢測限制路徑添加到限制路徑列表(步 驟S1205)。
平行執(zhí)行控制部件1001判斷是否限制路徑的執(zhí)行比值等于或大于預(yù)定值 (例如,預(yù)定值是通過用"0.7"乘以路徑選擇閥值而獲得的值)并且等于或 小于路徑選擇閥值(步驟S1206)。
當(dāng)其判斷限制路徑的執(zhí)行比值等于或大于預(yù)定值并且等于或小于路徑選 擇閥值時(步驟S1206 "Y"),平行執(zhí)行控制部件1001判斷是否在執(zhí)行路徑列 表中除了補償路徑和已經(jīng)確定將處理器元件指派給每對對應(yīng)該路徑和限制路 徑中的一個的特定路徑代碼的路徑之外的全部路徑已經(jīng)經(jīng)歷將在后面描述的 步驟S1208 (步驟S1207)。
當(dāng)其判斷不是全部執(zhí)行路徑列表中的路徑己經(jīng)經(jīng)歷該處理時(步驟S1207 "N"),平行執(zhí)行控制部件1001判斷是否執(zhí)行路徑列表中可疑路徑的執(zhí)行時間和可疑限制路徑的執(zhí)行時間的總和小于補償路徑的執(zhí)行時間(步驟S120S)。 當(dāng)其判斷可疑路徑的執(zhí)行時間和限制路徑的執(zhí)行時間的總和等于或大于補償路徑的執(zhí)行時間時(步驟S1208 "N"),平行執(zhí)行控制部件1001返回步驟 S1207。當(dāng)其判斷可疑路徑的執(zhí)行時間和限制路徑的執(zhí)行時間的總和小于補償路 徑的執(zhí)行時間時(步驟S1208 "Y"),平行執(zhí)行控制部件1001將限制路徑和執(zhí) 行路徑列表中的可疑路徑登記到存儲在存儲器300中的合并路徑信息1002(步 驟S1209)。平行執(zhí)行控制部件1001將可疑限制路徑從限制路徑列表中刪除(步驟 S1210)。平行執(zhí)行控制部件1001判斷是否限制路徑列表中沒有路徑是真實的(步 驟S1211)。當(dāng)其判斷限制路徑列表中具有一個或多個路徑時(步驟S1211 "N"),平 行執(zhí)行控制部件1001返回步驟S1206。當(dāng)其判斷限制路徑列表中沒有路徑時(步驟S1211 "Y"),平行執(zhí)行控制 部件1001重設(shè)由執(zhí)行歷史信息301表示的每個路徑的執(zhí)行次數(shù)和由總執(zhí)行次 數(shù)信息302表示的總執(zhí)行次數(shù)(步驟S1212)。平行執(zhí)行控制部件1001執(zhí)行執(zhí)行路徑列表中包含的全部路徑的代碼(補 償路徑代碼132和對應(yīng)執(zhí)行路徑列表中包含的路徑的特定路徑代碼)(步驟 S1213)。當(dāng)其判斷限制路徑的執(zhí)行比值小于比路徑選擇閥值小的預(yù)定值時(步驟 S1206 "N"),或當(dāng)其判斷執(zhí)行路徑列表中的全部路徑已經(jīng)經(jīng)歷該處理時(步 驟S1207 "Y"),平行執(zhí)行控制部件1001轉(zhuǎn)到步驟S1210。<特定示例的運行〉將使用圖2所示源程序110的該部分作為示例描述執(zhí)行程序1000的運行。 <處理器元件的指派的檢査>下面將參考圖12示出的流程圖描述檢查將要與補償路徑代碼132平行執(zhí) 行的特定路徑代碼的處理。在下面的描述中,假定將補償路徑和路徑IJQ和IJKL登記到執(zhí)行路徑列 表,假定己經(jīng)指派了處理器元件的路徑數(shù)量為"3",并且假定可用處理器元件數(shù)量為"3"。在下面的描述中,還假定由存儲在存儲器300中的執(zhí)行歷史信息301表 示的路徑的執(zhí)行次數(shù)是路徑IJQ為70;路徑IJKL為40;路徑IJKST為10;經(jīng)歷IX為0,并且假定由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù)為"100"。在下面的描述中,還假定已經(jīng)由軟件開發(fā)員以任意方式指定的路徑選擇閥值為"30%",并且假定小于路徑選擇閥值的預(yù)定值為"20%"。在下面的描述中,還假定路徑IJQ和IJKL的執(zhí)行時間總和小于補償路徑 的執(zhí)行時間。平行執(zhí)行控制部件1001判斷是否由存儲在存儲器300中的總執(zhí)行次數(shù)信 息302表示的總執(zhí)行次數(shù)(100)等于"100"(步驟S1201)。平行執(zhí)行控制部件1001判斷總執(zhí)行次數(shù)等于"100"(步驟S1201 "Y")。 為了選擇對應(yīng)將要與補償路徑代碼132平行執(zhí)行的特定路徑代碼的路徑,平行 執(zhí)行控制部件1001根據(jù)執(zhí)行圖5所示流程圖執(zhí)行路徑選擇處理(步驟S1202)。 作為路徑選擇處理的結(jié)果,將路徑IJQ登記到平行執(zhí)行路徑列表。平行執(zhí)行控制部件1001判斷是否存在包含在執(zhí)行路徑列表(補償路徑和 路徑IJQ和IJKL)中但不包含在平行執(zhí)行路徑列表(路徑IJQ)中的路徑(步 驟S1203)。平行執(zhí)行控制部件1001判斷存在包含在執(zhí)行路徑列表中但不包含在平行 執(zhí)行路徑列表中的路徑(路徑IJKL)(步驟S1203 "Y"),平行執(zhí)行控制部件 1001取消處理器元件向?qū)?yīng)限制路徑IJKL的特定路徑代碼的指派,并且從執(zhí) 行路徑列表中刪除限制路徑UKL (步驟S1204)。平行執(zhí)行控制部件1001將限制路徑IJKL添加到限制路徑列表(步驟 S1205)。平行執(zhí)行控制部件1001判斷是否限制路徑IJKL的執(zhí)行比值(20%)等 于或大于預(yù)定值(20%)并且等于或小于路徑選擇閥值(步驟S1206)。平行執(zhí)行控制部件1001判斷限制路徑的執(zhí)行比值等于或大于預(yù)定值并且 等于或小于路徑選擇閥值(步驟S1206 "Y")。平行執(zhí)行控制部件1001判斷是 否在執(zhí)行路徑列表中除了補償路徑和已經(jīng)確定將處理器元件指派給每對對應(yīng) 該路徑和限制路徑中的一個的特定路徑代碼的路徑之外的全部路徑(路徑IJQ) 已經(jīng)經(jīng)歷步驟S1208的處理(步驟S1207)。由于路徑IJQ還沒有經(jīng)歷該處理,平行執(zhí)行控制部件1001做出否定判斷(步驟S1207"N")。平行執(zhí)行控制部件1001判斷是否執(zhí)行路徑列表中的路徑 IJQ的執(zhí)行時間和限制路徑IJKL的執(zhí)行時間的總和小于補償路徑的執(zhí)行時間 (步驟S1208)。平行執(zhí)行控制部件1001判斷路徑IJQ的執(zhí)行時間和限制路徑IJKL的執(zhí) 行時間的總和小于補償路徑的執(zhí)行時間(步驟S1208 "Y")。平行執(zhí)行控制部 件1001將限制路徑IJKL和執(zhí)行路徑列表中的路徑IJQ的標(biāo)識登記到存儲在存 儲器300中的合并路徑信息1002 (步驟S1209)。平行執(zhí)行控制部件1001將限制路徑IJKL從限制路徑列表中刪除(步驟 S1210)。平行執(zhí)行控制部件1001判斷是否限制路徑列表中沒有路徑是真實的(步 驟S1211)。平行執(zhí)行控制部件1001判斷限制路徑列表中沒有路徑(步驟S1211"Y"), 平行執(zhí)行控制部件1001重設(shè)由執(zhí)行歷史信息301表示的每個路徑的執(zhí)行次數(shù) 和由總執(zhí)行次數(shù)信息302表示的總執(zhí)行次數(shù)(步驟S1212)。平行執(zhí)行控制部件1001執(zhí)行執(zhí)行路徑列表中包含的全部路徑的代碼(補 償路徑代碼132和對應(yīng)路徑IJQ的特定路徑代碼)(步驟S1213)。 <補充說明>到目前為止,已經(jīng)通過幾個實施例描述了本發(fā)明的程序。然而,不能將 本發(fā)明限制在這些實施例,而是可以如下修改本發(fā)明,例如。(1) 可能由不同于執(zhí)行補償路徑代碼132和每個特定路徑代碼的目標(biāo)硬 件的另一個硬件處理實施例1的平行執(zhí)行控制部件131和實施例2的平行執(zhí)行 控制部件1001。(2) 在上述實施例中,補償路徑代碼132包括作為由將源程序其自身轉(zhuǎn) 換為執(zhí)行格式產(chǎn)生的代碼序列的處理內(nèi)容代碼400。然而,不限于此,處理內(nèi) 容代碼400可能是由將對應(yīng)特定路徑代碼的路徑中包含的指令序列從源程序 中去除而產(chǎn)生的程序。(2)在上述實施例中,相同值用作(a)在如圖5中流程圖所示的路徑 選擇處理中用于為平行執(zhí)行選擇特定路徑代碼的路徑選擇閥值和(b)用于在 如圖9中流程圖所示的檢査處理器元件的指派的處理中判斷是否取消處理器元件的指派的路徑選擇閥值。然而,不限于此,在這些處理中可能分別將不同 值用作路徑選擇閥值。例如,在如圖5中流程圖所示的用于為平行執(zhí)行選擇特 定路徑代碼的路徑選擇處理中使用的路徑選擇閥值可以設(shè)定為"30%",而在 如圖9中流程圖所示的檢査處理器元件的指派的處理中用于判斷是否取消處理器元件的指派的路徑選擇閥值可以設(shè)定為"20%"。以這種布置,例如當(dāng)每個特定路徑代碼的執(zhí)行比值經(jīng)常在路徑選擇閥值左右變化時,能夠防止經(jīng)常發(fā) 生處理器元件的指派和指派取消。(4) 在實施例1中,在檢查處理器元件的指派的處理中當(dāng)每個特定路徑代碼的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值小于路徑選擇閥值時,取消處理器元件的 指派。然而,不限于此,當(dāng)比值小于路徑選擇閥值時,可能僅停止每個特定路 徑代碼的執(zhí)行,但是可能保持處理器元件的指派。以該布置,當(dāng)已經(jīng)停止執(zhí)行 的特定路徑代碼的執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值變得大于與此前一樣的路徑 選擇閥值時,可能忽略將處理器元件指派給該特定路徑代碼的處理,由此可以 在較早的時間開始執(zhí)行。(5) 在上述實施例1禾n 2中,每當(dāng)路徑實際執(zhí)行的總次數(shù)達(dá)到"100" 時,檢查處理器元件向?qū)?yīng)該路徑的特定路徑代碼的指派。然而,不限于此, 例如,可以基于累積執(zhí)行次數(shù)執(zhí)行檢查,而不重設(shè)對應(yīng)該特定路徑代碼的路徑 的執(zhí)行次數(shù)。作為另一個示例,每當(dāng)路徑實際執(zhí)行的總次數(shù)達(dá)到"200"時, 可能檢查處理器元件向?qū)?yīng)該路徑的特定路徑代碼的指派。(6) 在上述實施例1和2中,出于完全識別所執(zhí)行路徑的目的,在補償 路徑代碼132中提供第一到第六楔形代碼401-406。然而,不限于此,例如, 可能通過軟件開發(fā)員的指定僅提供第一到第四楔形代碼401-404,以便僅識別 具有高執(zhí)行頻率的主路徑。(7) 在實施例1中,假定分支指令識別信息303是從楔形代碼輸出的數(shù) 字。然而,不限于此,分支指令識別信息303可能是由與所提供的楔形代碼的 數(shù)量相同的字節(jié)構(gòu)成的初步嵌入二進(jìn)制數(shù)據(jù),并且當(dāng)執(zhí)行楔形代碼時,可能將 對應(yīng)所執(zhí)行楔形代碼的預(yù)定字節(jié)設(shè)定為"1"。(8) 在實施例2中檢查處理器元件的指派的處理中,指派一個處理器元 件執(zhí)行限制路徑和連續(xù)執(zhí)行路徑。然而,當(dāng)在路徑選擇處理中選擇還沒有平行 執(zhí)行的路徑時,可能將處理器元件指派給對應(yīng)所選路徑的特定路徑代碼,取決于目標(biāo)硬件上可用處理器元件的數(shù)量,如實施例l的情況那樣。在(9) 實施例2中檢查處理器元件的指派的處理中,指派一個處理器元件 執(zhí)行限制路徑和連續(xù)執(zhí)行路徑。然而,當(dāng)開始執(zhí)行程序1000的執(zhí)行時,在處 理器元件指派處理中可能執(zhí)行相同處理。(10) 在實施例1的程序中,通過OS (操作系統(tǒng))或相似物實現(xiàn)處理器元件向補償路徑代碼和所選特定路徑代碼的指派。然而,可能不使用os或相似物實現(xiàn)。例如,實施例1的程序可能具有指派處理器元件的功能。(11) 在程序產(chǎn)生裝置100中,代碼產(chǎn)生閥值由軟件開發(fā)員初步指定。然而,不限于此,代碼產(chǎn)生閥值可能是初步設(shè)定固定值,或者可能是由預(yù)定算 法獲得的可變值。(12) 在實施例2中,將一個處理器元件指派給一對分別對應(yīng)限制路徑 和連續(xù)執(zhí)行路徑的特定路徑代碼,并且當(dāng)不執(zhí)行對應(yīng)連續(xù)執(zhí)行路徑的特定路徑 代碼時,執(zhí)行對應(yīng)限制路徑的特定路徑代碼。以該結(jié)構(gòu),通過將一個處理器元件指派給一對分別對應(yīng)具有高執(zhí)行頻率 的連續(xù)執(zhí)行路徑和具有低執(zhí)行頻率的限制路徑的特定路徑代碼,能夠有效使用 處理器元件。同樣,當(dāng)執(zhí)行特定路徑代碼中的一個時,可以以高速執(zhí)行。然而,不限于一對分別對應(yīng)限制路徑和連續(xù)執(zhí)行路徑的特定路徑代碼, 可能將一個處理器元件指派給一對對應(yīng)限制路徑的特定路徑代碼,或者可能指 派給一對對應(yīng)連續(xù)執(zhí)行路徑的特定路徑代碼。另外,不限于兩個特定路徑代碼,可能將一個處理器元件指派給三個或 多個特定路徑代碼。這里需要指出的是,在上述的任何情況中,如實施例2的情況那樣,需 要以從最高執(zhí)行頻率的次序執(zhí)行已經(jīng)指派了處理器元件的特定路徑代碼,并且 需要已經(jīng)指派了處理器元件的多個特定路徑代碼的執(zhí)行時間的總和小于補償 路徑代碼的執(zhí)行時間。該結(jié)構(gòu)使其能夠加速在其中執(zhí)行已經(jīng)指派了處理器元件的特定路徑代碼 的處理。雖然已經(jīng)參考附圖以示例的方式完全描述了本發(fā)明,需要指出的是對于 本領(lǐng)域技術(shù)人員,不同改變和修改將是顯而易見的。因此,除非這種改變和修 改偏離了本發(fā)明的范圍,應(yīng)該認(rèn)為它們包括在本發(fā)明中。
權(quán)利要求
1. 一種用于基于源程序產(chǎn)生由用于由包括多個處理器元件的計算機(jī)執(zhí)行的多個部分構(gòu)成的執(zhí)行程序的程序產(chǎn)生裝置,該程序產(chǎn)生裝置包括能夠獲得源程序的源程序獲得部件;能夠基于還源程序獲得部件獲得的源程序產(chǎn)生用于將多個處理器元件一對一地指派給多個程序部分并且使計算機(jī)彼此平行地執(zhí)行多個程序部分的執(zhí)行格式的平行執(zhí)行程序部分的平行執(zhí)行程序部分產(chǎn)生部件;能夠產(chǎn)生用于使計算機(jī)獲得多個程序部分中的每一個的執(zhí)行歷史并且使計算機(jī)保持所獲執(zhí)行歷史的執(zhí)行歷史獲得部分的執(zhí)行歷史獲得部分產(chǎn)生部件;能夠產(chǎn)生用于使計算機(jī)根據(jù)所獲執(zhí)行歷史判斷是否彼此平行地執(zhí)行多個程序部分的平行執(zhí)行判斷部分的平行執(zhí)行判斷部分產(chǎn)生部件;能夠產(chǎn)生使計算機(jī)取決于平行執(zhí)行判斷部分執(zhí)行對確定是否將多個處理器元件指派給多個程序部分的控制的處理器元件指派控制部分的處理器元件指派控制部分產(chǎn)生部件。
2. 如權(quán)利要求1所述的程序產(chǎn)生裝置,其中平行執(zhí)行程序部分產(chǎn)生部件產(chǎn)生還包括下面內(nèi)容的平行執(zhí)行程序部分 包括分支指令和由分支指令導(dǎo)致的多個執(zhí)行路徑的第一程序部分; 由計算機(jī)與第一程序部分平行地重復(fù)執(zhí)行的第二程序部分,其包括具有與 不包括分支指令的多個執(zhí)行路徑中確定執(zhí)行路徑的一部分的處理內(nèi)容相同的 處理內(nèi)容的塊,第二程序部分的該塊具有小于確定執(zhí)行路徑的該部分的計算機(jī) 執(zhí)行次數(shù),使計算機(jī)判斷是否滿足執(zhí)行確定執(zhí)行路徑的條件的塊,以及當(dāng)判斷 滿足關(guān)于重復(fù)執(zhí)行部件的條件時使計算機(jī)控制與第一程序部分一起處理下一 個重復(fù)執(zhí)行部件的塊,其中執(zhí)行歷史獲得部分產(chǎn)生部件產(chǎn)生至少包括在第一程序部分和第二程序部 分中的一個的執(zhí)行歷史獲得部分。
3. 如權(quán)利要求2所述的程序產(chǎn)生裝置,其中執(zhí)行歷史獲得部分產(chǎn)生部件產(chǎn)生使計算機(jī)計算確定執(zhí)行路徑的執(zhí)行次數(shù) 并且作為執(zhí)行歷史保持表示確定執(zhí)行路徑執(zhí)行次數(shù)的信息的執(zhí)行歷史獲得部 分,而且平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn)生當(dāng)由執(zhí)行歷史表示的確定執(zhí)行路徑的執(zhí) 行次數(shù)小于預(yù)定閥值時使計算機(jī)判斷不彼此平行地執(zhí)行第二程序部分和第一 程序部分的平行執(zhí)行判斷部分。
4. 如權(quán)利要求2所述的程序產(chǎn)生裝置,其中平行執(zhí)行程序部分產(chǎn)生部件產(chǎn)生還包括下列內(nèi)容的平行執(zhí)行程序部分由計算機(jī)與第一程序部分平行地重復(fù)執(zhí)行的第三程序部分,其包括具有與在不包括分支指令的多個執(zhí)行路徑中作為確定執(zhí)行路徑的第一執(zhí)行路徑之外的第二執(zhí)行路徑的一部分的處理內(nèi)容相同的處理內(nèi)容的塊,第三程序部分的該塊具有小于第二執(zhí)行路徑的該部分的計算機(jī)執(zhí)行時間,使計算機(jī)判斷是否滿足執(zhí)行第二執(zhí)行路徑的條件的塊,當(dāng)判斷滿足重復(fù)執(zhí)行部件的條件時使計算機(jī)控 制與第一程序部分一起處理下一個重復(fù)執(zhí)行部件的塊,其中平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn)生平行執(zhí)行判斷部分,當(dāng)計算機(jī)判斷不彼此 平行地執(zhí)行第二程序部分和第一程序部分時,該平行執(zhí)行判斷部分使計算機(jī)根 據(jù)所獲執(zhí)行歷史重復(fù)判斷是否彼此平行地執(zhí)行第三程序部分和第一程序部分, 并且處理器元件指派控制部分產(chǎn)生使計算機(jī)將第一處理器元件指派給第一程 序部分并且使計算機(jī)執(zhí)行確定是否將第二處理器元件指派給第三程序部分的 控制且彼此平行地執(zhí)行第一程序部分和第三程序部分的處理器元件指派控制 部分,取決于計算機(jī)通過平行執(zhí)行判斷部分做出的關(guān)于是否彼此平行地執(zhí)行第 一程序部分和第三程序部分的判斷結(jié)果。
5. 如權(quán)利要求2所述的程序產(chǎn)生裝置,其中執(zhí)行歷史獲得部分產(chǎn)生部件產(chǎn)生使計算機(jī)計算確定執(zhí)行路徑的執(zhí)行次數(shù) 并且使計算機(jī)作為執(zhí)行歷史保持表示確定執(zhí)行路徑的執(zhí)行次數(shù)的信息的執(zhí)行 歷史獲得部分,并且平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn)生當(dāng)處理器元件指派控制部分使計算機(jī)執(zhí) 行確定將第二處理器元件指派給第二程序部分的控制并且彼此平行地執(zhí)行第 二程序部分和第一程序部分時且當(dāng)由執(zhí)行歷史表示的確定執(zhí)行路徑的執(zhí)行次 數(shù)小于預(yù)定闊值時使計算機(jī)判斷不彼此平行地執(zhí)行第二程序部分和第一程序 部分的平行執(zhí)行判斷部分,而且處理器元件指派控制部分產(chǎn)生部件產(chǎn)生使計算機(jī)執(zhí)行停止彼此平行地執(zhí)行第二程序部分和第一程序部分的控制的處理器元件指派控制部分。
6. 如權(quán)利要求2所述的程序產(chǎn)生裝置,其中執(zhí)行歷史獲得部分產(chǎn)生部件產(chǎn)生使計算機(jī)計算確定執(zhí)行路徑的執(zhí)行次數(shù) 并且使計算機(jī)作為執(zhí)行歷史保持表示確定執(zhí)行路徑執(zhí)行次數(shù)的信息的執(zhí)行歷 史獲得部分,并且平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn)生當(dāng)處理器元件指派控制部分使計算機(jī)執(zhí) 行確定將第二處理器元件指派給第二程序部分的控制并且使計算機(jī)彼此平行 地執(zhí)行第二程序部分和第一程序部分時且當(dāng)由執(zhí)行歷史表示的確定執(zhí)行路徑 的執(zhí)行次數(shù)小于預(yù)定閥值時使計算機(jī)判斷不彼此平行地執(zhí)行第二程序部分和 第一程序部分的平行執(zhí)行判斷部分,并且處理器元件指派控制部分產(chǎn)生部件產(chǎn)生使計算機(jī)執(zhí)行取消將第二處理器 元件指派給第二程序部分的控制的處理器元件指派控制部分。
7. 如權(quán)利要求6所述的程序產(chǎn)生裝置,其中平行執(zhí)行程序部分產(chǎn)生部件產(chǎn)生還包括下面內(nèi)容的平行執(zhí)行程序部分由計算機(jī)與第一程序部分平行地重復(fù)執(zhí)行的第三程序部分,其包括具有與不包括分支指令的多個執(zhí)行路徑中除確定執(zhí)行路徑之外的第二執(zhí)行路徑的一部分的處理內(nèi)容相同的處理內(nèi)容的塊,第三程序部分的該塊具有小于第二執(zhí)行路徑的該部分的執(zhí)行時間,使計算機(jī)判斷是否滿足執(zhí)行第二執(zhí)行路徑的條件的塊,使計算機(jī)當(dāng)其判斷滿足重復(fù)執(zhí)行部件的條件時控制與第一程序部分一起 處理下一個重復(fù)執(zhí)行部件的塊;并且執(zhí)行歷史獲得部分產(chǎn)生部件產(chǎn)生包括在第三程序部分中并且使計算機(jī)獲 得并保持第二執(zhí)行路徑的執(zhí)行歷史的另一個執(zhí)行歷史獲得部分,其中平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn)生當(dāng)計算機(jī)判斷不彼此平行地執(zhí)行第二程 序部分和第一程序部分時使計算機(jī)根據(jù)由包括在第三程序部分中的另一個執(zhí) 行歷史獲得部分保持的執(zhí)行歷史重復(fù)判斷是否彼此平行地執(zhí)行第三程序部分 和第一程序部分的平行執(zhí)行判斷部分,并且處理器元件指派控制部分產(chǎn)生部件產(chǎn)生使計算機(jī)將第一處理器元件指派 給第一程序部分并使計算機(jī)執(zhí)行確定是否將第二處理器元件指派給第三程序 部分且彼此平行地執(zhí)行第一程序部分和第三程序部分的控制的處理器元件指 派控制部分,取決于由計算機(jī)通過平行執(zhí)行判斷部分做出的關(guān)于是否彼此平行地執(zhí)行第三程序部分和第一程序部分的判斷結(jié)果。
8. 如權(quán)利要求2所述的程序產(chǎn)生裝置,還包括能夠產(chǎn)生用于使計算機(jī)獲得表示在計算機(jī)的多個處理器元件中可指派的 可指派處理器元件數(shù)量的信息的指派可用數(shù)量獲得部分的指派可用數(shù)量獲得 部分產(chǎn)生部件,其中處理器元件指派控制部分產(chǎn)生部件產(chǎn)生還包括下面內(nèi)容的處理器元件指 派控制部分使計算機(jī)計算已經(jīng)指派的指派處理器元件數(shù)量并且使計算機(jī)判斷是否指 派的處理器元件數(shù)量小于可指派處理器元件數(shù)量的指派可用性判斷部分,并且處理器元件指派控制部分產(chǎn)生部件產(chǎn)生使計算機(jī)執(zhí)行將第二處理器元件 指派給第二程序部分的控制且當(dāng)由平行執(zhí)行判斷部分的判斷使計算機(jī)判斷彼 此平行地執(zhí)行第二程序部分和第一程序部分時且指派處理器元件數(shù)量小于可 指派處理器元件數(shù)量時使計算機(jī)彼此平行地執(zhí)行第一程序部分和第二程序部 分的處理器元件指派控制部分。
9. 如權(quán)利要求2所述的程序產(chǎn)生裝置,還包括能夠產(chǎn)生用于每當(dāng)平行執(zhí)行判斷部分使計算機(jī)執(zhí)行判斷時初始化執(zhí)行歷 史的執(zhí)行歷史初始化部分的執(zhí)行歷史初始化部分產(chǎn)生部件。
10. 如權(quán)利要求2所述的程序產(chǎn)生裝置,其中平行執(zhí)行程序部分產(chǎn)生部件產(chǎn)生還包括下面內(nèi)容的平行執(zhí)行程序部分 由計算機(jī)與第一程序部分平行地重復(fù)執(zhí)行的第三程序部分,其包括具 有與作為多個執(zhí)行路徑中第一執(zhí)行路徑是確定執(zhí)行路徑且不包括分支指令的 第一執(zhí)行路徑的一部分的第一非分支路徑的處理內(nèi)容相同的處理內(nèi)容的第一 塊,第三程序部分的該第一塊具有小于第一非分支部分的計算機(jī)執(zhí)行時間,使 計算機(jī)判斷是否滿足執(zhí)行第一執(zhí)行路徑的條件的塊,具有與作為多個執(zhí)行路徑 中第一執(zhí)行路徑是除第一執(zhí)行路徑之外的另一個確定執(zhí)行路徑且不包括分支 指令的第二執(zhí)行路徑的一部分的第二非分支路徑的處理內(nèi)容相同的處理內(nèi)容 的第二塊,第三程序部分的該第二塊具有小于第二非分支部分的計算機(jī)執(zhí)行時 間,使計算機(jī)當(dāng)其判斷滿足重復(fù)執(zhí)行部件的執(zhí)行第一執(zhí)行路徑的條件時控制與 第一程序部分一起處理下一個重復(fù)執(zhí)行部件并且使計算機(jī)當(dāng)其判斷不滿足條 件時控制判斷是否滿足執(zhí)行第二執(zhí)行路徑的條件的塊,使計算機(jī)當(dāng)其判斷滿足重復(fù)執(zhí)行部件的執(zhí)行第二執(zhí)行路徑的條件時控制與第一程序部分一起處理下 一個重復(fù)執(zhí)行部件的塊,其中平行執(zhí)行判斷部分產(chǎn)生部件產(chǎn)生使計算機(jī)根據(jù)所獲執(zhí)行歷史重復(fù)判斷是 否彼此平行地執(zhí)行第三程序部分和第一程序部分的平行執(zhí)行判斷部分,并且處理器元件指派控制部分產(chǎn)生部件產(chǎn)生使計算機(jī)將第一處理器元件指派 給第一程序部分且使計算機(jī)執(zhí)行確定是否將第二處理器元件指派給第三程序 部分并且彼此平行地執(zhí)行第一程序部分和第三程序部分的控制的處理器元件 指派控制部分,取決于由計算機(jī)通過平行執(zhí)行判斷部分做出的關(guān)于是否彼此平 行地執(zhí)行第三程序部分和第一程序部分的判斷結(jié)果。
11. 如權(quán)利要求IO所述的程序產(chǎn)生裝置,其中平行執(zhí)行程序部分產(chǎn)生部件產(chǎn)生當(dāng)由平行執(zhí)行判斷部分的判斷使計算機(jī) 判斷不彼此平行地執(zhí)行第二程序部分和第一程序部分時將第三程序部分中包 括的第二執(zhí)行路徑設(shè)定為第二程序部分中的確定執(zhí)行路徑的部分。
12. 如權(quán)利要求10所述的程序產(chǎn)生裝置,其中執(zhí)行歷史獲得部分產(chǎn)生部件產(chǎn)生包括在第三程序部分中的使計算機(jī)計算 第一執(zhí)行路徑的執(zhí)行次數(shù)且使計算機(jī)計算第二執(zhí)行路徑的執(zhí)行次數(shù)并且使計 算機(jī)作為執(zhí)行歷史保持第一和第二執(zhí)行路徑的執(zhí)行次數(shù)的執(zhí)行歷史獲得部分, 并且平行執(zhí)行程序部分產(chǎn)生部件產(chǎn)生在其中第一執(zhí)行路徑的執(zhí)行次數(shù)大于第 二執(zhí)行路徑的執(zhí)行次數(shù)的第三程序部分。
13. —種用于基于包括分支指令和由分支指令引起的多個執(zhí)行路徑的源 程序產(chǎn)生用于由包括多個處理器元件的計算機(jī)執(zhí)行的執(zhí)行程序的程序產(chǎn)生方法,該程序產(chǎn)生方法包括下列步驟基于源程序的多個執(zhí)行路徑中變化的全部指令產(chǎn)生執(zhí)行格式的第一程序部分,保持多個執(zhí)行路徑之間的關(guān)系;產(chǎn)生與第一程序部分平行執(zhí)行的第二程序部分,其包括具有與不包括 分支指令的多個執(zhí)行路徑中確定執(zhí)行路徑的一部分的處理內(nèi)容相同的處理內(nèi) 容的塊,第二程序部分的該塊具有小于確定執(zhí)行路徑的該部分的計算機(jī)執(zhí)行時 間,使計算機(jī)判斷是否滿足執(zhí)行確定執(zhí)行路徑的條件的塊,以及當(dāng)判斷滿足關(guān) 于重復(fù)執(zhí)行部件的條件時控制與第一程序部分一起處理下一個重復(fù)執(zhí)行部件的塊;產(chǎn)生至少包括在第一程序部分和第二程序部分中的一個的并且獲得并保 持每個執(zhí)行路徑的執(zhí)行歷史的執(zhí)行歷史獲得部分;產(chǎn)生根據(jù)執(zhí)行歷史判斷是否彼此平行地執(zhí)行第二程序部分和第一程序部分的平行執(zhí)行判斷部分;以及產(chǎn)生將第一處理器元件指派給第一程序部分并且執(zhí)行對確定是否將第二 處理器元件指派給第二程序部分且彼此平行地執(zhí)行第一程序部分和第二程序 部分的控制的處理器元件指派控制部分,取決于由平行執(zhí)行判斷部分做出的關(guān) 于是否彼此平行地執(zhí)行第二程序部分和第一程序部分的判斷結(jié)果。
14. 一種用于執(zhí)行如權(quán)利要求2所述的程序產(chǎn)生裝置產(chǎn)生的程序的程序執(zhí)行裝置,該程序執(zhí)行裝置包括用于獲得程序的獲得部件;以及具有多個處理器元件且通過指派多個處理器元件執(zhí)行所獲程序的執(zhí)行部 件,其中基于當(dāng)執(zhí)行程序時接收指派處理器元件的請求,執(zhí)行部件指派當(dāng)前沒有 指派的處理器元件。
15. —種在其上記錄用于由包括多個處理器元件的計算機(jī)執(zhí)行的程序的 計算機(jī)可讀記錄介質(zhì),該程序包括包括分支指令和由分支指令引起的多個執(zhí)行路徑的第一程序部分;與第一程序部分平行地重復(fù)執(zhí)行的第二程序部分,其包括具有與不包括分支指令的多個執(zhí)行路徑中確定執(zhí)行路徑的一部分的處理內(nèi)容相同的處理 內(nèi)容的塊,第二程序部分的該塊具有小于確定執(zhí)行路徑的該部分的計算機(jī)執(zhí)行 時間,使計算機(jī)判斷是否滿足執(zhí)行確定執(zhí)行路徑的條件的塊,以及當(dāng)判斷滿足 關(guān)于重復(fù)執(zhí)行部件的條件時控制與第一程序部分一起處理下一個重復(fù)執(zhí)行部件的塊;至少包括在第一程序部分和第二程序部分中的一個的并且獲得并保持每 個執(zhí)行路徑的執(zhí)行歷史的執(zhí)行歷史獲得部分;根據(jù)執(zhí)行歷史判斷是否彼此平行地執(zhí)行第二程序部分和第一程序部分的 平行執(zhí)行判斷部分;以及將第一處理器元件指派給第一程序部分并且執(zhí)行對確定是否將第二處理器元件指派給第二程序部分且彼此平行地執(zhí)行第一程序部分和第二程序部分 的控制的處理器元件指派控制部分,取決于由平行執(zhí)行判斷部分做出的關(guān)于是 否彼此平行地執(zhí)行第二程序部分和第一程序部分的判斷結(jié)果。
全文摘要
一種包括在執(zhí)行程序(130)中的平行執(zhí)行控制部件(131),其執(zhí)行對基于存儲在存儲器(300)中的執(zhí)行歷史信息(301)和總執(zhí)行次數(shù)信息(302)選擇對應(yīng)執(zhí)行次數(shù)與總執(zhí)行次數(shù)的比值大于路徑選擇閥值的特定路徑代碼的控制,以便基于目標(biāo)硬件中可指派處理器元件的數(shù)量將處理器元件指派給補償路徑代碼(132)和某些或全部所選特定路徑代碼并且彼此平行地執(zhí)行這些路徑代碼,并且,每當(dāng)路徑的實際執(zhí)行次數(shù)達(dá)到預(yù)定值時,其執(zhí)行對將要與補償路徑代碼平行執(zhí)行的特定路徑代碼的檢查。
文檔編號G06F9/45GK101246433SQ200710302268
公開日2008年8月20日 申請日期2007年12月24日 優(yōu)先權(quán)日2006年12月22日
發(fā)明者田中旭, 畑野文博 申請人:松下電器產(chǎn)業(yè)株式會社