混合系統(tǒng)中的方法調(diào)用的優(yōu)先執(zhí)行的制作方法
【專(zhuān)利摘要】在一個(gè)方面中,基于親和性的優(yōu)先調(diào)用技術(shù)可以在具有異構(gòu)平臺(tái)的混合系統(tǒng)中提高分布式應(yīng)用的性能。可以在運(yùn)行時(shí)攔截或捕獲在處理器上執(zhí)行的程序中的代碼段。在所述混合系統(tǒng)中選擇用于執(zhí)行所述代碼段的平臺(tái),所述平臺(tái)被確定為在所述混合系統(tǒng)中的多個(gè)平臺(tái)中以最佳效率運(yùn)行所述代碼段。在被確定為以最佳效率運(yùn)行所述代碼段的所選平臺(tái)上動(dòng)態(tài)執(zhí)行所述代碼段。
【專(zhuān)利說(shuō)明】混合系統(tǒng)中的方法調(diào)用的優(yōu)先執(zhí)行
【技術(shù)領(lǐng)域】
[0001] 本申請(qǐng)一般地涉及具有異構(gòu)處理器的計(jì)算機(jī)和混合計(jì)算系統(tǒng),更具體地說(shuō),涉及 在處理器上執(zhí)行代碼以便提高混合系統(tǒng)中的性能。
【背景技術(shù)】
[0002] 計(jì)算系統(tǒng)可以包含異構(gòu)處理器。例如,諸如圖形處理單元(GPU)、現(xiàn)場(chǎng)可編程 門(mén)陣列(FPGA)之類(lèi)的通用和專(zhuān)用處理器可以共同組成計(jì)算系統(tǒng)?;旌舷到y(tǒng)的另一個(gè) 實(shí)例是來(lái)自位于紐約阿蒙克的國(guó)際機(jī)器公司(IBM?)的 zEnterprise BladeCenter Extension (zBX)基礎(chǔ)架構(gòu),該基礎(chǔ)架構(gòu)包括系統(tǒng)Z196、X86刀片和Power7刀片;Z196和刀 片通過(guò)專(zhuān)用網(wǎng)絡(luò)連接。隨著處理海量數(shù)據(jù)和嚴(yán)苛CPU周期的商業(yè)工作負(fù)載的出現(xiàn),越來(lái)越 多的成功應(yīng)用可以受益于在混合系統(tǒng)上運(yùn)行。
[0003] 在這些混合系統(tǒng)中,數(shù)據(jù)局部性是確定軟件性能的一個(gè)因素。數(shù)據(jù)局部性指應(yīng)用 請(qǐng)求的數(shù)據(jù)優(yōu)先地來(lái)自使用數(shù)據(jù)的位置的本地文件系統(tǒng)。存在利用數(shù)據(jù)局部性提高分布式 軟件性能的已知解決方案。但是,這些解決方案沒(méi)有考慮與混合系統(tǒng)關(guān)聯(lián)的其它類(lèi)型的局 部性。
【發(fā)明內(nèi)容】
[0004] 可以提供用于在具有異構(gòu)平臺(tái)的混合系統(tǒng)中運(yùn)行分布式程序的方法和系統(tǒng)。在一 個(gè)方面,一種用于在具有異構(gòu)平臺(tái)的混合系統(tǒng)中運(yùn)行分布式程序的方法可以包括在處理器 上執(zhí)行的程序的運(yùn)行時(shí)中捕獲程序的方法調(diào)用。所述方法還可以包括針對(duì)一種或多種平臺(tái) 特定的實(shí)現(xiàn),查找與所捕獲的方法調(diào)用關(guān)聯(lián)的符號(hào)引用。所述方法還可以包括基于與所述 一種或多種平臺(tái)特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平臺(tái)特定的實(shí)現(xiàn)中選擇 一種平臺(tái)特定的實(shí)現(xiàn),所述親和性度量指示所述一種或多種平臺(tái)特定的實(shí)現(xiàn)在所述混合系 統(tǒng)中的相應(yīng)一個(gè)或多個(gè)平臺(tái)上運(yùn)行的高效程度。所述方法還可以包括返回對(duì)所選擇的平臺(tái) 特定的實(shí)現(xiàn)的直接引用。所述方法還還可以包括使用所返回的對(duì)所選擇的平臺(tái)特定的實(shí)現(xiàn) 的直接引用替換與所捕獲的方法調(diào)用關(guān)聯(lián)的所述符號(hào)引用。
[0005] 在另一個(gè)方面,一種用于基于親和性的優(yōu)先(preferential)調(diào)用技術(shù)的在具有 異構(gòu)平臺(tái)的混合系統(tǒng)中提高分布式應(yīng)用性能的方法可以包括在運(yùn)行時(shí)攔截在處理器上執(zhí) 行的程序中的代碼段。所述方法還可以包括確定所述混合系統(tǒng)中用于執(zhí)行所述代碼段的平 臺(tái),所述平臺(tái)被確定為在所述混合系統(tǒng)中的多個(gè)平臺(tái)中以最佳效率運(yùn)行所述代碼段??梢?在被確定為以最佳效率運(yùn)行所述代碼段的所述平臺(tái)上動(dòng)態(tài)地執(zhí)行所述代碼段。
[0006] 在一個(gè)方面,一種用于在混合系統(tǒng)中運(yùn)行分布式程序的系統(tǒng)可以包括所述混合系 統(tǒng)中運(yùn)行應(yīng)用程序的處理器?;谟H和性的優(yōu)先調(diào)用模塊可以可操作以在運(yùn)行時(shí)攔截程序 的方法調(diào)用。所述基于親和性的優(yōu)先調(diào)用模塊可以還可操作以針對(duì)一種或多種平臺(tái)特定的 實(shí)現(xiàn),查找與所捕獲的方法調(diào)用關(guān)聯(lián)的符號(hào)引用。所述基于親和性的優(yōu)先調(diào)用模塊可以還 可操作以基于與所述一種或多種平臺(tái)特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平 臺(tái)特定的實(shí)現(xiàn)中選擇一種平臺(tái)特定的實(shí)現(xiàn)。所述親和性度量指示所述一種或多種平臺(tái)特定 的實(shí)現(xiàn)在所述混合系統(tǒng)中的相應(yīng)一個(gè)或多個(gè)平臺(tái)上運(yùn)行的高效程度。所述基于親和性的優(yōu) 先調(diào)用模塊可以還可操作以使用對(duì)所選擇的平臺(tái)特定的實(shí)現(xiàn)的直接引用替換與所捕獲的 方法調(diào)用關(guān)聯(lián)的所述符號(hào)引用。
[0007] 還可以提供一種存儲(chǔ)指令程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述指令程序可由機(jī)器執(zhí) 行以便執(zhí)行在此描述的一種或多種方法。
[0008] 下面參考附圖詳細(xì)描述各種實(shí)施例的進(jìn)一步特性以及結(jié)構(gòu)和操作。在附圖中,相 同的參考標(biāo)號(hào)指示相同或功能類(lèi)似的元件。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0009] 圖1示出本公開(kāi)的一個(gè)實(shí)施例中的優(yōu)先方法調(diào)用的一個(gè)具體實(shí)例;
[0010] 圖2示出本公開(kāi)的一個(gè)實(shí)施例中的親和性表的一個(gè)實(shí)例數(shù)據(jù)結(jié)構(gòu);
[0011] 圖3示出其中將一個(gè)實(shí)施例中的本公開(kāi)的優(yōu)先方法調(diào)用應(yīng)用于Java?加速原型的 一個(gè)實(shí)例方案;
[0012] 圖4示出可以利用本公開(kāi)的優(yōu)先方法調(diào)用的另一個(gè)實(shí)例方案;
[0013] 圖5示出其中在運(yùn)行時(shí)將數(shù)學(xué)密集型功能卸載到Power平臺(tái)的一個(gè)實(shí)例方案;
[0014] 圖6示出可以在本公開(kāi)的一個(gè)實(shí)施例中實(shí)現(xiàn)優(yōu)先方法執(zhí)行系統(tǒng)的一個(gè)實(shí)例計(jì)算 機(jī)或處理系統(tǒng)的示意圖。
【具體實(shí)施方式】
[0015] 在本公開(kāi)中,混合系統(tǒng)通常指包含通用和專(zhuān)用計(jì)算平臺(tái)的異構(gòu)分布式系統(tǒng)。因?yàn)?混合系統(tǒng)可以用作靈活平臺(tái)以便在性?xún)r(jià)比方面優(yōu)化工作負(fù)載,所以軟件應(yīng)用可以受益于在 混合系統(tǒng)中運(yùn)行。例如,對(duì)于在IBM? ZBX上運(yùn)行的應(yīng)用,盡管在安全性和可靠性方面具 有優(yōu)先級(jí)的組件可以放在Z196芯片上,但在計(jì)算方面具有優(yōu)先級(jí)的組件可以放在X86或 Power7微處理器刀片上。
[0016] 在一個(gè)實(shí)施例中,本公開(kāi)通過(guò)考慮功能局部性提高混合系統(tǒng)中的性能。在本公開(kāi) 中,功能局部性指執(zhí)行的功能(或代碼)優(yōu)先地是最適合于特定平臺(tái)的版本。在本公開(kāi)的 一個(gè)實(shí)施例中,平臺(tái)可以包含硬件和軟件兩者。在本公開(kāi)的一個(gè)實(shí)施例中,"功能局部性"涉 及平臺(tái)。例如,一般而言IBM? Power平臺(tái)比IBM? Z平臺(tái)更好地支持浮點(diǎn)計(jì)算。因此, 在具有Z和Power平臺(tái)的混合系統(tǒng)中,可以為具有重要浮點(diǎn)計(jì)算的功能提供兩個(gè)版本,分別 是一個(gè)用于Z而另一個(gè)用于Power。盡管Power版本具有用于浮點(diǎn)計(jì)算的直接調(diào)用,但Z版 本可以使用某種浮點(diǎn)仿真加速。利用功能局部性可以明顯提高混合系統(tǒng)中的軟件性能。
[0017] 在本公開(kāi)的一個(gè)實(shí)施例中,公開(kāi)一種在此稱(chēng)為"優(yōu)先方法調(diào)用"的技術(shù),其可以提 高在混合系統(tǒng)中運(yùn)行的軟件性能。在一個(gè)方面,優(yōu)先方法調(diào)用是"基于親和性的優(yōu)先方法調(diào) 用"技術(shù),其可以提高混合系統(tǒng)中的分布式應(yīng)用的性能。在該技術(shù)中,可以基于比較方法在 不同平臺(tái)上的親和性,進(jìn)行優(yōu)先方法調(diào)用。方法、功能或過(guò)程指用于在處理器或平臺(tái)上執(zhí)行 的編程模塊或一組指令。此外,本公開(kāi)的方法可以應(yīng)用于程序中的代碼段、工作單元等;因 此,在此描述的方法無(wú)需限于應(yīng)用程序中的"方法"本身。
[0018] 在一個(gè)實(shí)施例中,本公開(kāi)中的親和性指在一種類(lèi)型的平臺(tái)上運(yùn)行代碼段的效率, 例如平臺(tái)運(yùn)行給定功能的良好程度如何。例如,方法在平臺(tái)上的親和性表征該方法在平臺(tái) 上執(zhí)行的高效程度??梢杂煞椒ǖ墓逃心J胶推脚_(tái)特征決定該效率。方法可以在其中該方 法具有最佳親和性的平臺(tái)上動(dòng)態(tài)執(zhí)行。因此,例如軟件方法調(diào)用可以在混合系統(tǒng)或具有異 構(gòu)平臺(tái)的系統(tǒng)的不同處理器中動(dòng)態(tài)執(zhí)行。在本公開(kāi)的一個(gè)實(shí)施例中,基于親和性的方法確 定應(yīng)該在異構(gòu)平臺(tái)的哪一處理器上執(zhí)行軟件或代碼段。這樣,例如可以通過(guò)在分布式系統(tǒng) 的應(yīng)用級(jí)別解決優(yōu)化,優(yōu)化應(yīng)用程序的運(yùn)行。
[0019] 這種基于親和性的執(zhí)行技術(shù)還可以應(yīng)用于數(shù)據(jù)讀取,其中優(yōu)選讀取具有更好局部 性的數(shù)據(jù)。在本公開(kāi)的一個(gè)實(shí)施例中,方法親和性考慮數(shù)據(jù)局部性。在本公開(kāi)的一個(gè)實(shí)施 例中,可以以脫機(jī)和聯(lián)機(jī)方式更新親和性。在此公開(kāi)的方法的優(yōu)點(diǎn)包括利用混合系統(tǒng)中的 隱式差異,以便在可以最適合工作項(xiàng)目的位置上執(zhí)行工作項(xiàng)目。
[0020] 例如,考慮IBM? zBX。IBM? ZBX是包括Z和Power平臺(tái)的混合系統(tǒng)。需要 訪問(wèn)存儲(chǔ)在Z上的大量數(shù)據(jù)的方法可以通過(guò)因?yàn)閿?shù)據(jù)局部性而在Z上執(zhí)行,具有較高親和 性。如果這些方法在Power上運(yùn)行,則可以在Z上調(diào)用它們,并且可以以更高效的方式為應(yīng) 用提供Z數(shù)據(jù)。需要強(qiáng)大的單線程性能的方法也在Z平臺(tái)上具有高親和性,因?yàn)楫?dāng)前Z具 有行業(yè)中最快的線程。需要強(qiáng)大的安全性和獨(dú)有的服務(wù)質(zhì)量的方法也是在Z上具有高親和 性的方法。
[0021] 在Power上具有高親和性的方法可以包括具有很少或最低數(shù)據(jù)要求的長(zhǎng)時(shí)間運(yùn) 行的應(yīng)用、在Power上受益于SMT (同步多線程)的多個(gè)并行線程、需要大量主存儲(chǔ)器的方 法、需要存儲(chǔ)帶寬的方法,以及計(jì)算密集型的分析算法(例如,浮點(diǎn)運(yùn)算)。
[0022] 在實(shí)踐中,可以以不同表示測(cè)定親和性。它可以是布爾變量,其指示方法能夠還是 不能在平臺(tái)上運(yùn)行,或者方法如何一般地優(yōu)選一個(gè)平臺(tái)而不是另一個(gè);它可以是數(shù)值性能 度量(例如,吞吐量或響應(yīng)時(shí)間);它還可以是模糊變量,其基于現(xiàn)有知識(shí)表明方法如何優(yōu) 選一個(gè)平臺(tái)而不是其它平臺(tái);它還可以是基于性?xún)r(jià)比的值,其用于測(cè)定在每個(gè)平臺(tái)上運(yùn)行 方法的相對(duì)收益。
[0023] 在一個(gè)實(shí)施例中,本公開(kāi)可以提供利用平臺(tái)親和性以提高混合系統(tǒng)中的軟件性能 和成本效率??梢岳没旌舷到y(tǒng)中的隱式異構(gòu)性,以便在具有最佳性?xún)r(jià)比的平臺(tái)上放置和 執(zhí)行工作負(fù)載中的每個(gè)工作單元。在本公開(kāi)的一個(gè)實(shí)施例中,當(dāng)在運(yùn)行程序中調(diào)用方法時(shí), 捕獲該方法。該方法可以具有平臺(tái)特定的實(shí)現(xiàn)的多個(gè)副本,并且可以在捕獲該方法時(shí)執(zhí)行 每種實(shí)現(xiàn)??梢詫⒂糜谶@些多種實(shí)現(xiàn)的引用和關(guān)聯(lián)親和性存儲(chǔ)在親和性表等中。通過(guò)查找 親和性表,可以做出決策以針對(duì)該方法選擇具有最佳親和性的平臺(tái)。此決策可以考慮親和 性和運(yùn)行實(shí)現(xiàn)的開(kāi)銷(xiāo)。上述方法稱(chēng)為優(yōu)先方法調(diào)用。
[0024] 圖1示出本公開(kāi)的一個(gè)實(shí)施例中的優(yōu)先方法調(diào)用的一個(gè)具體實(shí)例。在104,具有名 為"f〇〇 0 "的方法的應(yīng)用編程102運(yùn)行和調(diào)用該方法。當(dāng)調(diào)用該方法時(shí),可以攔截或捕獲 符號(hào)引用以及運(yùn)行環(huán)境信息??梢詫⒃撔畔鬟f到過(guò)程,該過(guò)程查找用于該方法的所有平 臺(tái)特定的實(shí)現(xiàn)。在106,查找方法f 〇〇()。例如,親和性表108等可以存儲(chǔ)親和性度量、與該 方法的每種不同平臺(tái)實(shí)現(xiàn)關(guān)聯(lián)的值或因素或此類(lèi)指示。表108還可以存儲(chǔ)其它信息,例如 運(yùn)行每種不同平臺(tái)實(shí)現(xiàn)的開(kāi)銷(xiāo)。從在表108中查找的信息,確定具有最佳親和性的特定平 臺(tái)實(shí)現(xiàn)。此外,可以考慮選擇具有最小開(kāi)銷(xiāo)的實(shí)現(xiàn)。可以返回對(duì)具有最佳親和性的實(shí)現(xiàn)的 直接引用作為所捕獲方法的代替者。在110,例如通過(guò)引用,被確定或選擇為具有最佳親和 性并且可選地具有最小開(kāi)銷(xiāo)的特定平臺(tái)實(shí)現(xiàn)替換對(duì)f〇〇()的方法調(diào)用。在本公開(kāi)的一個(gè)實(shí) 施例中,使用符號(hào)引用替換實(shí)現(xiàn)應(yīng)用軟件一部分的運(yùn)行時(shí)重新分發(fā)。
[0025] 在本公開(kāi)的一個(gè)實(shí)施例中,單獨(dú)的軟件等可以負(fù)責(zé)創(chuàng)建和更新親和性表。
[0026] 本公開(kāi)的優(yōu)先執(zhí)行可以應(yīng)用于代碼段(程序102的一部分),例如上面描述為方法 f〇〇()。在本公開(kāi)的一個(gè)實(shí)施例中,基于運(yùn)行的程序中的方法等可能是優(yōu)先調(diào)用技術(shù)的候選 者的判定,可以攔截或捕獲此類(lèi)方法。在本公開(kāi)的一個(gè)實(shí)施例中,配置可以標(biāo)記或者以其它 方式指定這些方法或代碼段作為候選者。
[0027] 在本公開(kāi)的一個(gè)實(shí)施例中,優(yōu)先方法調(diào)用可以最佳地應(yīng)用于以受管代碼(例如, Java?、Python?)編寫(xiě)的軟件,因?yàn)榇颂幍拇a與平臺(tái)無(wú)關(guān),并且可以通過(guò)使用底層虛擬機(jī) 更容易地在運(yùn)行時(shí)捕獲。但是,本公開(kāi)并未將優(yōu)先方法調(diào)用限于任何特定代碼;相反,以任 何編程語(yǔ)言等編寫(xiě)的程序都適用。在本公開(kāi)的一個(gè)實(shí)施例中,可以通過(guò)引用替換進(jìn)行方法 捕獲。例如,當(dāng)捕獲方法時(shí),可以通過(guò)對(duì)具有最佳親和性的平臺(tái)特定的實(shí)現(xiàn)的直接引用來(lái)替 換對(duì)該方法的符號(hào)引用??梢灶A(yù)先加載或動(dòng)態(tài)地加載包含該實(shí)現(xiàn)的庫(kù)。不需要程序中的每 種方法都支持優(yōu)先調(diào)用。例如,僅以下這些方法可以調(diào)用或啟用優(yōu)先方法調(diào)用:根據(jù)定義的 閾值或準(zhǔn)則,其親和性跨平臺(tái)變化,并且例如,其效率可以被視為對(duì)整體性能至關(guān)重要?;?于定義的閾值或準(zhǔn)則,判定方法的效率是否被視為至關(guān)重要。
[0028] 在本公開(kāi)的一個(gè)實(shí)施例中,親和性表可以是數(shù)據(jù)結(jié)構(gòu),其存儲(chǔ)針對(duì)優(yōu)先方法調(diào)用 考慮的所有方法的每種平臺(tái)特定的實(shí)現(xiàn)的親和性信息。圖2示出本公開(kāi)的一個(gè)實(shí)施例中的 親和性表的一個(gè)實(shí)例數(shù)據(jù)結(jié)構(gòu)。表中的每個(gè)項(xiàng)可以對(duì)應(yīng)于一種實(shí)現(xiàn),即方法的獨(dú)特平臺(tái)特 定的實(shí)現(xiàn)。例如,在Java?中,實(shí)現(xiàn)可以是包含在jar(Java?存檔)文件中的類(lèi)成員函數(shù)。 一個(gè)類(lèi)可以存在于多個(gè)jar文件中,針對(duì)一個(gè)平臺(tái)優(yōu)化每個(gè)jar文件。
[0029] 在本公開(kāi)的一個(gè)實(shí)施例中,一種方法可以具有多種平臺(tái)特定的實(shí)現(xiàn),每種實(shí)現(xiàn)對(duì) 應(yīng)于特別平臺(tái)的一種實(shí)現(xiàn),因此對(duì)應(yīng)于親和性表中的多個(gè)項(xiàng)。具有不同參數(shù)的相同方法可 以對(duì)應(yīng)于親和性表中的不同項(xiàng),其中每個(gè)項(xiàng)包含不同的親和性值。項(xiàng)可以包括以下字段:方 法名稱(chēng)202,例如"foo〇 " ;對(duì)方法實(shí)現(xiàn)的引用204,例如實(shí)現(xiàn)方法的功能的名稱(chēng);目標(biāo)平臺(tái) 206,其指定實(shí)現(xiàn)針對(duì)的平臺(tái),例如X86、Power、Z等;親和性度量208,其指示該實(shí)現(xiàn)在調(diào)用 者的平臺(tái)(即,目標(biāo)平臺(tái))上運(yùn)行的高效程度的度量;版本210,其指定該實(shí)現(xiàn)的版本;以及 "固定或可變親和性"字段212。"固定或可變親和性"字段212指示親和性度量是在運(yùn)行時(shí) 期間不變,還是應(yīng)在每次捕獲方法時(shí)更新其值。圖2中所示的更多或更少字段可以充當(dāng)親 和性表。例如,并非需要存在實(shí)例中所示的所有字段,和/或可以存在其它額外字段。
[0030] 作為一個(gè)實(shí)例,在Java?應(yīng)用的上下文中,平臺(tái)特定的實(shí)現(xiàn)可以是jar庫(kù)中的類(lèi)成 員函數(shù)。在一個(gè)實(shí)施例中,可以將支持本公開(kāi)的優(yōu)先方法調(diào)用的Java?類(lèi)存儲(chǔ)在多個(gè)jar 庫(kù)中,針對(duì)一個(gè)特定平臺(tái)優(yōu)化每個(gè)庫(kù)。在運(yùn)行時(shí)加載適當(dāng)?shù)膉ar文件,具體取決于親和性比 較結(jié)果。
[0031] 在本公開(kāi)的一個(gè)實(shí)施例中,可以在程序執(zhí)行之前初始化親和性表。最初,在一個(gè)實(shí) 施例中,表可以包含支持本公開(kāi)的優(yōu)先方法調(diào)用的所有這些方法。在一個(gè)實(shí)施例中,該信息 可以由開(kāi)發(fā)人員確定,并且可以作為配置文件提供給本公開(kāi)的親和性管理過(guò)程(例如,管 理圖1中所示的程序和項(xiàng)目的過(guò)程)。一種方法可以包括為平臺(tái)量身定制的多種實(shí)現(xiàn),每種 實(shí)現(xiàn)在親和性表中具有一個(gè)記錄??梢酝ㄟ^(guò)親和性管理過(guò)程計(jì)算和分配親和性度量。如果 方法的平臺(tái)特定的實(shí)現(xiàn)缺失其親和性度量,則其在表中的對(duì)應(yīng)親和性度量字段可以留空或 包括此類(lèi)指示。
[0032] 在本公開(kāi)的一個(gè)實(shí)施例中,可以在運(yùn)行時(shí)更新親和性表。例如,當(dāng)在運(yùn)行時(shí)捕獲方 法時(shí),如果其親和性度量為空,或者如果根據(jù)字段"固定或可變親和性",其親和性度量需要 重新計(jì)算,則可以觸發(fā)親和性估計(jì)過(guò)程以便計(jì)算親和性并且填充或更新項(xiàng)的字段。
[0033] 如果首次調(diào)用方法并且因此表中沒(méi)有項(xiàng),則可以將其默認(rèn)實(shí)現(xiàn)作為項(xiàng)插入到表 中,并且在運(yùn)行時(shí)動(dòng)態(tài)測(cè)量親和性值。默認(rèn)實(shí)現(xiàn)可以是其上運(yùn)行方法或運(yùn)行調(diào)用方法的程 序的平臺(tái)的實(shí)現(xiàn)。在本公開(kāi)的一個(gè)實(shí)施例中,對(duì)于多次調(diào)用的方法,每當(dāng)其新測(cè)量的親和性 被確定為不同于存儲(chǔ)在親和性表中的親和性度量時(shí),可以更新表項(xiàng)中的親和性字段。
[0034] 響應(yīng)于發(fā)生方法捕獲,可以使用方法名稱(chēng)或類(lèi)似標(biāo)識(shí)作為進(jìn)入親和性表的鍵以便 查找關(guān)聯(lián)的項(xiàng)數(shù)據(jù)。例如,在本公開(kāi)的一個(gè)實(shí)施例中,每當(dāng)發(fā)生方法捕獲時(shí),使用方法名稱(chēng) 作為關(guān)鍵字以便在親和性表中查找所有項(xiàng)。這些項(xiàng)對(duì)應(yīng)于多種平臺(tái)特定的實(shí)現(xiàn)。通過(guò)比較 親和性度量(如果需要,則可以觸發(fā)親和性估計(jì)過(guò)程),選擇具有最佳親和性的實(shí)現(xiàn),并且 其引用替換原始符號(hào)引用。如果該字段中的項(xiàng)為空或需要更新,并且如果過(guò)程可用于獲得 測(cè)量,則例如可以動(dòng)態(tài)地觸發(fā)親和性估計(jì)過(guò)程。
[0035] 在本公開(kāi)的一個(gè)實(shí)施例中,表中的每種方法均包含默認(rèn)實(shí)現(xiàn)。如果由于親和性估 計(jì)失敗而導(dǎo)致親和性比較沒(méi)有產(chǎn)生線索,則可以使用默認(rèn)實(shí)現(xiàn)并且返回其引用。適當(dāng)?shù)鼐?有和使用默認(rèn)實(shí)現(xiàn)將確保程序可以始終運(yùn)行,即使優(yōu)先方法調(diào)用沒(méi)有選擇優(yōu)先實(shí)現(xiàn)。
[0036] 在本公開(kāi)的一個(gè)實(shí)施例中,親和性比較考慮執(zhí)行選擇的實(shí)現(xiàn)導(dǎo)致的開(kāi)銷(xiāo)。在一個(gè) 實(shí)施例中,如果開(kāi)銷(xiāo)足夠高以便抵消優(yōu)選平臺(tái)帶來(lái)的潛在收益,則不應(yīng)該選擇該平臺(tái)。當(dāng)進(jìn) 行跨平臺(tái)調(diào)用時(shí),可以發(fā)生較大開(kāi)銷(xiāo);例如,程序最初在平臺(tái)A上運(yùn)行,它進(jìn)行在平臺(tái)B上優(yōu) 選實(shí)現(xiàn)的方法調(diào)用。因此,該方法調(diào)用變成遠(yuǎn)程過(guò)程調(diào)用(RPC)型的調(diào)用。這種RPC引入 額外網(wǎng)絡(luò)延遲和額外CPU使用。在本公開(kāi)的一個(gè)實(shí)施例中,在親和性比較時(shí)需要考慮所有 這些開(kāi)銷(xiāo)。如果開(kāi)銷(xiāo)高,則可以在親和性計(jì)算時(shí)相應(yīng)地減小親和性度量。
[0037] 親和性估計(jì)
[0038] 在本公開(kāi)中,可以使用一種或多種親和性估計(jì)方法或過(guò)程。具有各種親和性估計(jì) 方法,具體取決于實(shí)際方案和應(yīng)用(程序)關(guān)注的SLA(服務(wù)水平協(xié)議)。例如,對(duì)于延遲關(guān) 鍵的應(yīng)用,可以使用方法執(zhí)行時(shí)間作為親和性;對(duì)于計(jì)算密集型應(yīng)用,可以使用CPU周期使 用作為親和性;在高能效的方案中,可以使用能源消耗作為親和性;可以使用它們的任何 一個(gè)或多個(gè)組合,或者其它因素??山M合多個(gè)性能度量以便形成效用函數(shù)型的度量以測(cè)定 親和性。此外,如果關(guān)注性?xún)r(jià)比,則可以在親和性度量中包括在平臺(tái)上執(zhí)行實(shí)現(xiàn)的成本。例 如,Z CPU周期比Power CPU周期的成本更高昂。通過(guò)將CPU周期的單位價(jià)格引入到親和 性中,計(jì)算密集型方法將優(yōu)選Power平臺(tái)以便降低總成本。
[0039] 親和性可以隨時(shí)間而有所變化,因?yàn)橄到y(tǒng)負(fù)載動(dòng)態(tài)改變。一個(gè)實(shí)例是跨網(wǎng)絡(luò)方法 的延遲親和性度量取決于隨時(shí)間變化的后臺(tái)網(wǎng)絡(luò)業(yè)務(wù)。對(duì)于此類(lèi)親和性度量,例如最初可 以將它們聲明為變量,如上面通過(guò)親和性表中的字段"固定或可變親和性"討論的那樣。對(duì) 于具有可變親和性字段的項(xiàng),每次查詢(xún)親和性時(shí),可以按需重新計(jì)算親和性。
[0040] 方法級(jí)依賴(lài)性圖
[0041] 當(dāng)初始化親和性表時(shí),可以指定支持優(yōu)先調(diào)用的方法。開(kāi)發(fā)人員可以根據(jù)平臺(tái)特 定的實(shí)現(xiàn)的可用性和方法之間的依賴(lài)性,手動(dòng)創(chuàng)建這種指定。方法級(jí)依賴(lài)性圖顯示程序或 應(yīng)用中的方法之間的調(diào)用關(guān)系。依賴(lài)性圖可以是用于加快手動(dòng)過(guò)程的有用工具。具體地說(shuō), 如果開(kāi)發(fā)人員想要啟用方法A的優(yōu)先調(diào)用,并且在依賴(lài)性圖中發(fā)現(xiàn)方法A調(diào)用方法B,則開(kāi) 發(fā)人員還應(yīng)啟用方法B以及方法B調(diào)用的任何其它方法的優(yōu)先調(diào)用。因此,例如,如果方法 B被確定為不能在平臺(tái)上運(yùn)行,則也不能在該平臺(tái)上優(yōu)先調(diào)用方法A。方法級(jí)依賴(lài)性圖可以 通過(guò)一個(gè)或多個(gè)軟件工具自動(dòng)產(chǎn)生。
[0042] 依賴(lài)性包(dependency bundle)可以有助于相互關(guān)聯(lián)的方法的優(yōu)先執(zhí)行。首先形 成依賴(lài)性圖以便表示相互關(guān)系。在本公開(kāi)的一個(gè)實(shí)施例中,基于依賴(lài)性圖,如果優(yōu)先執(zhí)行方 法,則該方法所依賴(lài)于的所有方法可以作為包而優(yōu)先執(zhí)行。
[0043] 使用方案
[0044] 方案1 :優(yōu)先Java?類(lèi)加載
[0045] 方案1是在Java?加速原型中應(yīng)用優(yōu)先方法調(diào)用理念。圖3描述該方案。兩個(gè)服 務(wù)器A 302和B 304是不同的平臺(tái)。Java虛擬機(jī)(JVM) 306在服務(wù)器A 302上運(yùn)行以便處 理Java?工作負(fù)載。在服務(wù)器B 304上,開(kāi)發(fā)代理JVM 308 (其可以是具有新增特性的另一 個(gè)JVM)以便將Java?工作負(fù)載從服務(wù)器A 302卸載到B 304。將純Java?調(diào)用卸載到B 304時(shí),在服務(wù)器A 302上進(jìn)行的Java本機(jī)接口(JNI)調(diào)用依然在A 302上。在引導(dǎo)階段, JVM 306和代理JVM 308均需要加載許多公共Java?類(lèi)庫(kù),因?yàn)樗鼈冏x取大量公共Java?類(lèi) 庫(kù)。如果這些類(lèi)庫(kù)310僅保留在服務(wù)器A上,則代理JVM 308的引導(dǎo)極其低效,因?yàn)楸仨毻?過(guò)RPC (遠(yuǎn)程過(guò)程調(diào)用)將每個(gè)類(lèi)庫(kù)文件從A 302傳送到B 304。平均上,加載的類(lèi)生成大 約120個(gè)RPC調(diào)用。每個(gè)RPC調(diào)用需要跨網(wǎng)絡(luò)并且產(chǎn)生網(wǎng)絡(luò)延遲。因此,代理JVM的引導(dǎo) 階段大約為1.5小時(shí)。
[0046] 可以應(yīng)用本公開(kāi)的優(yōu)先方法調(diào)用以便加快上面方案中的引導(dǎo)階段。在本公開(kāi)的一 個(gè)實(shí)施例中的實(shí)現(xiàn)中,Java?類(lèi)庫(kù)可以具有本地副本。在此,本地指圖3中的服務(wù)器B 304, 遠(yuǎn)程指服務(wù)器A 302。在庫(kù)的本地副本中,將布爾成員變量添加到每個(gè)Java?類(lèi)以便指示類(lèi) 是否具有本地副本。然后,根據(jù)Java?成員函數(shù)是否啟用優(yōu)先調(diào)用,添加每個(gè)成員函數(shù)中的 檢查以便判定應(yīng)調(diào)用本地還是遠(yuǎn)程成員函數(shù)。創(chuàng)建配置文件以便指定哪個(gè)類(lèi)庫(kù)文件具有本 地副本。代理JVM開(kāi)發(fā)人員創(chuàng)建該配置文件。此外,添加新類(lèi)以便在引導(dǎo)階段執(zhí)行。添加 的類(lèi)將讀入該配置文件,并且初始化每個(gè)類(lèi)中的布爾變量。在上面的更改之后,在引導(dǎo)階段 執(zhí)行優(yōu)先類(lèi)加載。在該方案中,優(yōu)先方法調(diào)用證明是非常有效:代理JVM的引導(dǎo)時(shí)間從1. 5 小時(shí)減少到幾分鐘。
[0047] 方案2 : Java?中的優(yōu)先字符文件讀取
[0048] 圖4示出可以使用本公開(kāi)的優(yōu)先方法調(diào)用的另一個(gè)實(shí)例方案??梢詫?yōu)先方 法調(diào)用應(yīng)用于Java?文件輸入/輸出(I/O)以便在混合系統(tǒng)中實(shí)現(xiàn)更快的文件讀取。 FileReader是用于讀取字符文件的Java?類(lèi)。該類(lèi)的構(gòu)造器接受文件名參數(shù)并且準(zhǔn)備 從該文件讀取。如果文件位于遠(yuǎn)程服務(wù)器,則將跨底層分布式文件系統(tǒng)(例如,網(wǎng)絡(luò)文件 系統(tǒng)(NFS))讀取該文件。除了大量網(wǎng)絡(luò)延遲的缺點(diǎn)之外,該默認(rèn)行為需要解決字符編碼 問(wèn)題帶來(lái)的不便。具體地說(shuō),不同平臺(tái)上的字符文件可以以不同方案編碼。因此,當(dāng)調(diào)用 FileReader構(gòu)造器時(shí),開(kāi)發(fā)人員需要指定編碼方案,其取決于存儲(chǔ)文件的平臺(tái)。
[0049] 在本公開(kāi)的一個(gè)實(shí)施例中,應(yīng)用優(yōu)先方法調(diào)用將解決網(wǎng)絡(luò)延遲問(wèn)題和字符編碼的 不便。參考圖4,在406調(diào)用該FileReader構(gòu)造器方法時(shí),在408從親和性表410等中查找 輸入?yún)?shù)文件名,并且在本公開(kāi)的一個(gè)實(shí)施例中,如果如在412測(cè)試的那樣存在本地副本, 則在414優(yōu)先地由本地副本替換該文件名。根據(jù)最終從中檢索文件的平臺(tái)(本地418或共 享420),可以在416隱式調(diào)用另一種方法以進(jìn)行字符編碼/解碼。在圖4的實(shí)例中,EBCDIC 是Z 404上的字符編碼方案,ASCII是Power 402上的編碼方案。這樣,解決上面的兩個(gè)問(wèn) 題,并且該過(guò)程的發(fā)生可以對(duì)Java?程序完全透明。該方案展示考慮數(shù)據(jù)局部性的收益。 此外,基于運(yùn)行編碼/解碼算法的效率,可以確定用于運(yùn)行方法的適當(dāng)平臺(tái)。
[0050] 方案3 :優(yōu)先數(shù)學(xué)密集型功能執(zhí)行
[0051] 在該方案中,在本公開(kāi)的一個(gè)實(shí)施例中,可以應(yīng)用優(yōu)先方法調(diào)用以便將計(jì)算密集 型工作負(fù)載從Z放置到Power。原理可以是Power平臺(tái)一般比Z平臺(tái)具有更好的浮點(diǎn)支持。 圖5示出其中在運(yùn)行時(shí)將數(shù)學(xué)密集型功能卸載到Power平臺(tái)的一個(gè)實(shí)例方案。例如,當(dāng)在 506調(diào)用或捕獲Z 504上的方法f〇〇()時(shí),并且如果在508檢測(cè)該方法具有大量數(shù)學(xué)計(jì)算 (例如,這可以通過(guò)源代碼分析進(jìn)行),則可以在510搜索親和性表512以便檢測(cè)是否存在 針對(duì)foo()的Power版本實(shí)現(xiàn)。如果存在,則可以在514返回Power版本實(shí)現(xiàn)。在518,可 以調(diào)用Power版本實(shí)現(xiàn)而不是默認(rèn)Z版本。在本公開(kāi)的一個(gè)實(shí)施例中,可以在516使用RPC 機(jī)制實(shí)現(xiàn)這種跨系統(tǒng)調(diào)用。在本公開(kāi)的一個(gè)實(shí)施例中,當(dāng)決定使用哪個(gè)版本的f〇〇()時(shí),考 慮RPC開(kāi)銷(xiāo)。在本公開(kāi)的一個(gè)實(shí)施例中,源代碼分析可以執(zhí)行檢測(cè)方法是否具有數(shù)學(xué)計(jì)算。 可以設(shè)置一個(gè)或多個(gè)準(zhǔn)則以便確定方法是否是計(jì)算密集型的。例如,如果方法中的數(shù)學(xué)計(jì) 算數(shù)量滿足或超出閾值,則方法可以被確定是計(jì)算密集型的,從而保證優(yōu)先方法調(diào)用選項(xiàng)。 在本公開(kāi)的一個(gè)實(shí)施例中,當(dāng)在510在親和性表中查找f 〇〇 ()時(shí),可以抵消PowerPC特定的 實(shí)現(xiàn)的親和性,這是由于跨平臺(tái)通信所致。
[0052] 在本公開(kāi)的另一個(gè)實(shí)施例中,提供在跨本地和遠(yuǎn)程系統(tǒng)運(yùn)行的軟件中應(yīng)用優(yōu)先方 法調(diào)用的一個(gè)實(shí)例。本地和遠(yuǎn)程系統(tǒng)通過(guò)網(wǎng)絡(luò)連接。對(duì)于性能收益,在這種方案中,功能調(diào) 用應(yīng)該優(yōu)選在本地系統(tǒng)上執(zhí)行,只要其所需資源是本地的。為了啟用優(yōu)先方法調(diào)用,首先分 析軟件中的每個(gè)方法調(diào)用以便判定它應(yīng)該在本地還是遠(yuǎn)程運(yùn)行。判定技術(shù)是在統(tǒng)計(jì)上分析 方法實(shí)現(xiàn)的二進(jìn)制/字節(jié)代碼以及創(chuàng)建調(diào)用圖。對(duì)于調(diào)用圖中的每個(gè)功能調(diào)用,進(jìn)行檢查 以便判定通過(guò)調(diào)用訪問(wèn)的資源在本地獲得還是在遠(yuǎn)程獲得。如果通過(guò)本機(jī)方法訪問(wèn)的所有 資源在本地獲得,則可以注釋方法以便本地執(zhí)行。如果否,則可以注釋方法以便遠(yuǎn)程執(zhí)行。 這種確定可本地化的本機(jī)方法的方法可以用于確定親和性度量或因素。例如,如果可以本 地化本機(jī)方法,則親和性度量?jī)A向于"本地機(jī)器";如果否,則親和性?xún)A向于"遠(yuǎn)程機(jī)器"。
[0053] 在本公開(kāi)的一個(gè)實(shí)施例中,提供在混合系統(tǒng)中的方法調(diào)用的優(yōu)先執(zhí)行?;谟H和 性的優(yōu)先方法調(diào)用技術(shù)例如可以通過(guò)在具有最佳效率因素(例如,性?xún)r(jià)比)的平臺(tái)上動(dòng)態(tài) 執(zhí)行工作負(fù)載中的每個(gè)工作單元,提高混合系統(tǒng)中的分布式應(yīng)用的性能。例如,對(duì)方法調(diào) 用的符號(hào)引用在運(yùn)行時(shí)被捕獲,并被代之以對(duì)具有最佳親和性的平臺(tái)特定的實(shí)現(xiàn)的直接引 用。
[0054] -種利用功能局部性的方法可以明顯提高混合系統(tǒng)中的軟件性能。基于親和性的 優(yōu)先方法調(diào)用技術(shù)提供可啟用以便在其中方法具有最佳親和性的平臺(tái)上執(zhí)行方法(例如 應(yīng)用于其中具有更好局部性的數(shù)據(jù)被優(yōu)選讀取的數(shù)據(jù)讀取,或者所述方法使用其它本地資 源)的特性、以脫機(jī)和聯(lián)機(jī)方式更新親和性的特性、用于利用混合系統(tǒng)中的隱式差異以便 在最適合工作項(xiàng)目的位置上執(zhí)行工作項(xiàng)目的特性。親和性表可以存儲(chǔ)有關(guān)方法調(diào)用的平臺(tái) 特定的實(shí)現(xiàn)和親和性度量的信息。
[0055] 在混合系統(tǒng)中運(yùn)行分布式軟件可以?xún)?yōu)先地在其中方法具有最佳親和性的平臺(tái)上 調(diào)用方法,并且優(yōu)先地在具有最佳局部性的服務(wù)器上訪問(wèn)數(shù)據(jù),這可以包括(i)攔截方法 調(diào)用和文件讀取,并且對(duì)照表查找被請(qǐng)求項(xiàng)目,(ii)選擇表中具有最佳親和性或局部性的 匹配項(xiàng)目,并且通過(guò)從步驟(ii)返回的名稱(chēng)替換原始方法名稱(chēng)或文件名稱(chēng)。
[0056] 親和性表可以涉及以靜態(tài)和動(dòng)態(tài)方式創(chuàng)建和更新親和性表的親和性管理系統(tǒng)。最 初,親和性表可以包含已知具有為平臺(tái)量身定制的實(shí)現(xiàn)的方法的親和性度量。在運(yùn)行時(shí),可 以從有關(guān)方法在平臺(tái)上執(zhí)行的高效程度的測(cè)量獲知方法的親和性,并且親和性計(jì)算方法可 以知曉網(wǎng)絡(luò)延遲和帶寬(或其它開(kāi)銷(xiāo)或環(huán)境因素)并在決策過(guò)程中使用該信息。
[0057] 盡管上面的描述根據(jù)在程序中執(zhí)行方法解釋了本公開(kāi)的方法,但程序中的任何其 它工作單元或項(xiàng)目或代碼段均可以具有優(yōu)先的平臺(tái)特定的實(shí)現(xiàn)并使用該優(yōu)先的平臺(tái)特定 的實(shí)現(xiàn)來(lái)執(zhí)行。
[0058] 圖6示出可以在本公開(kāi)的一個(gè)實(shí)施例中實(shí)現(xiàn)優(yōu)先方法執(zhí)行系統(tǒng)的實(shí)例計(jì)算機(jī)或 處理系統(tǒng)的示意圖。計(jì)算機(jī)系統(tǒng)僅是合適的處理系統(tǒng)的一個(gè)實(shí)例,并非旨在對(duì)在此描述的 方法實(shí)施例的功能和使用范圍帶來(lái)任何限制。示出的處理系統(tǒng)可與眾多其它通用或?qū)S糜?jì) 算系統(tǒng)環(huán)境或配置一起操作??梢赃m于與圖6中所示的處理系統(tǒng)一起使用的公知計(jì)算系 統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個(gè)人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶機(jī)、 厚客戶機(jī)、手持或膝上設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子 產(chǎn)品、網(wǎng)絡(luò)個(gè)人電腦、小型計(jì)算機(jī)系統(tǒng)、大型計(jì)算機(jī)系統(tǒng)和包括上述任意系統(tǒng)或設(shè)備的分 布式云計(jì)算環(huán)境,等等。
[0059] 可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語(yǔ)境 下描述計(jì)算機(jī)系統(tǒng)。通常,程序模塊可以包括執(zhí)行特定任務(wù)或者實(shí)現(xiàn)特定抽象數(shù)據(jù)類(lèi)型的 例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等。計(jì)算機(jī)系統(tǒng)可以在通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn) 程處理設(shè)備執(zhí)行任務(wù)的分布式云計(jì)算環(huán)境中實(shí)施。在分布式云計(jì)算環(huán)境中,程序模塊可以 位于包括存儲(chǔ)設(shè)備的本地或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)上。
[0060] 計(jì)算機(jī)系統(tǒng)的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元12,系 統(tǒng)存儲(chǔ)器16,以及將不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器16)連接到處理器12的總線14。處 理器12可以包括執(zhí)行在此描述的方法的優(yōu)先方法執(zhí)行模塊10。模塊10可以編程到處理器 12的集成電路中,或者從存儲(chǔ)器16、存儲(chǔ)設(shè)備18或網(wǎng)絡(luò)24或它們的組合加載。
[0061] 總線14可以表示幾類(lèi)總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控 制器,外圍總線,圖形加速端口,使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的處理器或局域總 線。舉例來(lái)說(shuō),這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu) (MCA)總線,增強(qiáng)型ISA (EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連 (PCI)總線。
[0062] 計(jì)算機(jī)系統(tǒng)可以包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是能夠被計(jì)算機(jī)系 統(tǒng)訪問(wèn)的任意可獲得的介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。
[0063] 系統(tǒng)存儲(chǔ)器16可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存 取存儲(chǔ)器(RAM)和/或高速緩沖存儲(chǔ)器等。計(jì)算機(jī)系統(tǒng)還可以包括其它可移動(dòng)/不可移 動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)18可以用于讀寫(xiě)不 可移動(dòng)的、非易失性磁介質(zhì)(例如"硬盤(pán)驅(qū)動(dòng)器")。盡管圖6中未示出,可以提供用于對(duì)可 移動(dòng)非易失性磁盤(pán)(例如"軟盤(pán)")讀寫(xiě)的磁盤(pán)驅(qū)動(dòng)器,以及對(duì)可移動(dòng)非易失性光盤(pán)(例如 ⑶-ROM、DVD-ROM或者其它光介質(zhì))讀寫(xiě)的光盤(pán)驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通 過(guò)一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線14相連。
[0064] 計(jì)算機(jī)系統(tǒng)也可以與一個(gè)或多個(gè)外部設(shè)備26 (例如鍵盤(pán)、指點(diǎn)設(shè)備、顯示器28等) 通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)交互的設(shè)備通信,和/或與使得該 計(jì)算機(jī)系統(tǒng)能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等 等)通信。這種通信可以通過(guò)輸入/輸出(I/O)接口 20進(jìn)行。
[0065] 此外,計(jì)算機(jī)系統(tǒng)可以通過(guò)網(wǎng)絡(luò)適配器22與一個(gè)或者多個(gè)網(wǎng)絡(luò)24(例如局域網(wǎng) (LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器22通過(guò) 總線14與計(jì)算機(jī)系統(tǒng)的其它組件通信。應(yīng)當(dāng)理解,盡管圖中未示出,但是其它硬件和/或 軟件組件可以與計(jì)算機(jī)系統(tǒng)一起操作,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、 外部磁盤(pán)驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
[0066] 所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算 機(jī)程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、 完全的軟件實(shí)施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方 式,這里可以統(tǒng)稱(chēng)為"電路"、"模塊"或"系統(tǒng)"。此外,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為在一 個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可 讀的程序代碼。
[0067] 可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī) 可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于一 電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者上述的任意合適的組合。計(jì)算 機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便 攜式計(jì)算機(jī)盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器 (EPROM或閃存)、光纖、便攜式緊湊盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者 上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的 有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0068] 計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括例如在基帶中或者作為載波一部分傳播的數(shù)據(jù) 信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括一 但不限于一電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以是計(jì) 算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳 輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0069] 計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限 于一無(wú)線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0070] 可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任意組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明的各個(gè)方面 的操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java、 Smalltalk、C++等,還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如"C"語(yǔ)言或類(lèi)似的程序設(shè)計(jì) 語(yǔ)言,一種描述性語(yǔ)言如Perl、VBS或類(lèi)似語(yǔ)言,和/或功能性語(yǔ)言,如Lisp和ML以及邏輯 目標(biāo)語(yǔ)言如Prolog。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí) 行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全 在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過(guò)任意種 類(lèi)的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可以連接到外部 計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來(lái)通過(guò)因特網(wǎng)連接)。
[0071] 將參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/ 或框圖描述本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/ 或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給 通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得 這些指令在通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和 /或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。
[0072] 也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,這些指令使得計(jì)算機(jī)、 其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備以特定方式工作,從而,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的 指令就產(chǎn)生出包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的指令 的制造品(article of manufacture) 〇
[0073] 也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備 上,使得在計(jì)算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn) 的過(guò)程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令提供實(shí)現(xiàn)流程圖和/或框圖中 的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的過(guò)程。
[0074] 附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的不同實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程 序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代 表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用 于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo) 注的功能可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本 并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是, 框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定 的功能或動(dòng)作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的組合 來(lái)實(shí)現(xiàn)。
[0075] 計(jì)算機(jī)程序產(chǎn)品可以包括能夠?qū)崿F(xiàn)在此描述的方法的所有相應(yīng)特性,并且當(dāng)被加 載到計(jì)算機(jī)系統(tǒng)中時(shí),其能夠執(zhí)行這些方法。當(dāng)前上下文中的計(jì)算機(jī)程序、軟件程序、程序 或軟件是指一組指令的以任何語(yǔ)言、代碼或符號(hào)表示的任何表達(dá),旨在使具有信息處理能 力的系統(tǒng)直接執(zhí)行特定的功能,或者執(zhí)行以下兩者之一或全部后執(zhí)行特定的功能:(a)轉(zhuǎn) 換為另一種語(yǔ)言、代碼或符號(hào);和/或(b)以不同的材料形式再現(xiàn)。
[0076] 在此使用的術(shù)語(yǔ)只是為了描述特定的實(shí)施例并且并非旨在作為本發(fā)明的限制。如 在此使用的,單數(shù)形式"一"、"一個(gè)"和"該"旨在同樣包括復(fù)數(shù)形式,除非上下文明確地另 有所指。還將理解,當(dāng)在此說(shuō)明書(shū)中使用時(shí),術(shù)語(yǔ)"包括"和/或"包含"指定了聲明的特性、 整數(shù)、步驟、操作、元素和/或組件的存在,但是并不排除一個(gè)或多個(gè)其它特性、整數(shù)、步驟、 操作、元素、組件和/或其組合的存在或增加。
[0077] 下面權(quán)利要求中的對(duì)應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置或步驟(如 果有)的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它元件相組合地執(zhí)行 該功能的結(jié)構(gòu)、材料或操作。出于示例和說(shuō)明目的給出了對(duì)本發(fā)明的描述,但所述描述并非 旨在是窮舉的或是將本發(fā)明限于所公開(kāi)的形式。在不偏離本發(fā)明的范圍和精神的情況下, 對(duì)于所屬【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō)許多修改和變化都將是顯而易見(jiàn)的。實(shí)施例的選擇 和描述是為了最佳地解釋本發(fā)明的原理和實(shí)際應(yīng)用,并且當(dāng)適合于所構(gòu)想的特定使用時(shí), 使得所屬【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能夠理解本發(fā)明的具有各種修改的各種實(shí)施例。
[0078] 本公開(kāi)的各個(gè)方面可以實(shí)現(xiàn)為包含在計(jì)算機(jī)或機(jī)器可用或可讀介質(zhì)中的程序、軟 件或計(jì)算機(jī)指令,當(dāng)在計(jì)算機(jī)、處理器和/或機(jī)器上執(zhí)行時(shí),這些程序、軟件或計(jì)算機(jī)指令 導(dǎo)致計(jì)算機(jī)或機(jī)器執(zhí)行所述方法步驟。還提供一種程序存儲(chǔ)設(shè)備,其可由機(jī)器讀取,有形地 包含可由機(jī)器執(zhí)行的指令程序以便執(zhí)行本公開(kāi)中描述的各種功能和方法。
[0079] 本公開(kāi)的系統(tǒng)和方法可以在通用計(jì)算機(jī)或?qū)S糜?jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)和運(yùn)行??捎糜?本申請(qǐng)的術(shù)語(yǔ)"計(jì)算機(jī)系統(tǒng)"和"計(jì)算機(jī)網(wǎng)絡(luò)"可以包括固定和/或便攜式計(jì)算機(jī)硬件、軟 件、外圍設(shè)備和存儲(chǔ)設(shè)備的各種組合。計(jì)算機(jī)系統(tǒng)可以包括聯(lián)網(wǎng)或以其它方式鏈接以協(xié)作 執(zhí)行的多個(gè)單獨(dú)組件,或者可以包括一個(gè)或多個(gè)獨(dú)立的組件。本申請(qǐng)的計(jì)算機(jī)系統(tǒng)的硬件 和軟件組件可以包括并且可以包括在固定和便攜式設(shè)備(例如臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī) 和/或服務(wù)器)中。模塊可以是設(shè)備、軟件、程序或系統(tǒng)的實(shí)現(xiàn)某種"功能"的組件,其可以 實(shí)現(xiàn)為軟件、硬件、固件、電子電路等。
[0080] 上面描述的實(shí)施例是示例性實(shí)例,并且不應(yīng)該解釋為本發(fā)明限于這些特定的實(shí)施 例。因此,所屬【技術(shù)領(lǐng)域】的技術(shù)人員可以實(shí)現(xiàn)各種更改和修改,而不偏離在所附權(quán)利要求中 限定的本發(fā)明的精神或范圍。
【權(quán)利要求】
1. 一種用于在具有異構(gòu)平臺(tái)的混合系統(tǒng)中運(yùn)行分布式程序的方法,所述方法包括: 在處理器上執(zhí)行的程序的運(yùn)行時(shí)中捕獲程序的方法調(diào)用; 針對(duì)一種或多種平臺(tái)特定的實(shí)現(xiàn),查找與所捕獲的方法調(diào)用關(guān)聯(lián)的符號(hào)引用; 基于與所述一種或多種平臺(tái)特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平臺(tái)特 定的實(shí)現(xiàn)中選擇一種平臺(tái)特定的實(shí)現(xiàn),所述親和性度量指示所述一種或多種平臺(tái)特定的實(shí) 現(xiàn)在所述混合系統(tǒng)中的相應(yīng)一個(gè)或多個(gè)平臺(tái)上運(yùn)行的高效程度; 返回對(duì)所選擇的平臺(tái)特定的實(shí)現(xiàn)的直接引用;以及 使用所返回的對(duì)所選擇的平臺(tái)特定的實(shí)現(xiàn)的直接引用替換與所捕獲的方法調(diào)用關(guān)聯(lián) 的所述符號(hào)引用。
2. 根據(jù)權(quán)利要求1的方法,其中所述程序的所述運(yùn)行時(shí)繼續(xù)使用替換后的直接引用執(zhí) 行所述程序。
3. 根據(jù)權(quán)利要求1的方法,其中返回步驟包括返回對(duì)所選擇的平臺(tái)特定的實(shí)現(xiàn)的所述 直接引用以及與關(guān)聯(lián)平臺(tái)相關(guān)的信息。
4. 根據(jù)權(quán)利要求1的方法,其中在包含所述親和性度量的表中查找所述符號(hào)引用。
5. 根據(jù)權(quán)利要求4的方法,其中在運(yùn)行時(shí)動(dòng)態(tài)地計(jì)算和更新所述表中的所述親和性度 量。
6. 根據(jù)權(quán)利要求4的方法,其中在計(jì)算所述親和性度量中使用與運(yùn)行所述一種或多種 平臺(tái)特定的實(shí)現(xiàn)關(guān)聯(lián)的開(kāi)銷(xiāo)。
7. 根據(jù)權(quán)利要求4的方法,其中基于執(zhí)行時(shí)間或資源使用或它們的組合,計(jì)算所述親 和性度量。
8. 根據(jù)權(quán)利要求1的方法,其中所述程序的方法調(diào)用與多種不同的平臺(tái)特定的實(shí)現(xiàn)關(guān) 聯(lián)。
9. 根據(jù)權(quán)利要求1的方法,其中基于在所述程序的方法調(diào)用中指定的不同參數(shù),將所 述程序的方法調(diào)用與多種不同的平臺(tái)特定的實(shí)現(xiàn)關(guān)聯(lián)。
10. -種用于基于親和性的優(yōu)先調(diào)用技術(shù)的在具有異構(gòu)平臺(tái)的混合系統(tǒng)中提高分布式 應(yīng)用性能的方法,所述方法包括: 在運(yùn)行時(shí)攔截在處理器上執(zhí)行的程序中的代碼段; 確定所述混合系統(tǒng)中用于執(zhí)行所述代碼段的平臺(tái),所述平臺(tái)被確定為在所述混合系統(tǒng) 中的多個(gè)平臺(tái)中以最佳效率運(yùn)行所述代碼段, 其中在被確定為以最佳效率運(yùn)行所述代碼段的所述平臺(tái)上動(dòng)態(tài)地執(zhí)行所述代碼段。
11. 根據(jù)權(quán)利要求10的方法,其中所述確定包括查找表,所述表包括指定與所述代碼 段和效率度量關(guān)聯(lián)的一種或多種平臺(tái)特定的實(shí)現(xiàn)的一個(gè)或多個(gè)表項(xiàng)。
12. 根據(jù)權(quán)利要求11的方法,其中在運(yùn)行時(shí)動(dòng)態(tài)地確定所述效率度量,并且使用最近 確定的效率度量更新所述表。
13. 根據(jù)權(quán)利要求10的方法,其中如果確定所述代碼段是用于所述基于親和性的優(yōu)先 調(diào)用技術(shù)的候選者,則執(zhí)行攔截步驟。
14. 一種用于在混合系統(tǒng)中運(yùn)行分布式程序的系統(tǒng),所述系統(tǒng)包括: 所述混合系統(tǒng)中運(yùn)行應(yīng)用程序的處理器;以及 基于親和性的優(yōu)先調(diào)用模塊,其可操作以在運(yùn)行時(shí)攔截程序的方法調(diào)用,所述基于親 和性的優(yōu)先調(diào)用模塊還可操作以針對(duì)一種或多種平臺(tái)特定的實(shí)現(xiàn),查找與所捕獲的方法調(diào) 用關(guān)聯(lián)的符號(hào)引用,所述基于親和性的優(yōu)先調(diào)用模塊還可操作以基于與所述一種或多種平 臺(tái)特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平臺(tái)特定的實(shí)現(xiàn)中選擇一種平臺(tái)特定 的實(shí)現(xiàn),所述親和性度量指示所述一種或多種平臺(tái)特定的實(shí)現(xiàn)在所述混合系統(tǒng)中的相應(yīng)一 個(gè)或多個(gè)平臺(tái)上運(yùn)行的高效程度,所述基于親和性的優(yōu)先調(diào)用模塊還可操作以使用對(duì)所選 擇的平臺(tái)特定的實(shí)現(xiàn)的直接引用替換與所捕獲的方法調(diào)用關(guān)聯(lián)的所述符號(hào)引用。
15. 根據(jù)權(quán)利要求14的系統(tǒng),還包括存儲(chǔ)表項(xiàng)的數(shù)據(jù)庫(kù),所述表項(xiàng)指定方法調(diào)用的一 種或多種平臺(tái)特定的實(shí)現(xiàn)以及關(guān)聯(lián)的效率度量,所述關(guān)聯(lián)的效率度量指示相應(yīng)平臺(tái)運(yùn)行相 應(yīng)平臺(tái)特定的實(shí)現(xiàn)的高效程度。
16. 根據(jù)權(quán)利要求15的系統(tǒng),其中在運(yùn)行時(shí)動(dòng)態(tài)地更新所述效率度量。
17. 根據(jù)權(quán)利要求15的系統(tǒng),其中使用與在相應(yīng)平臺(tái)上運(yùn)行所述一種或多種平臺(tái)特定 的實(shí)現(xiàn)關(guān)聯(lián)的開(kāi)銷(xiāo)作為選擇所述平臺(tái)特定的實(shí)現(xiàn)時(shí)的多個(gè)準(zhǔn)則之一。
18. 根據(jù)權(quán)利要求15的系統(tǒng),其中所述數(shù)據(jù)庫(kù)存儲(chǔ)所述方法調(diào)用的多種平臺(tái)特定的實(shí) 現(xiàn)。
19. 根據(jù)權(quán)利要求18的系統(tǒng),其中基于所述方法調(diào)用中使用的不同參數(shù),所述數(shù)據(jù)庫(kù) 存儲(chǔ)所述方法調(diào)用的多種平臺(tái)特定的實(shí)現(xiàn)。
20. -種存儲(chǔ)指令程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述指令程序可由機(jī)器執(zhí)行以便執(zhí)行 一種在具有異構(gòu)平臺(tái)的混合系統(tǒng)中運(yùn)行分布式程序的方法,所述方法包括: 在處理器上執(zhí)行的程序的運(yùn)行時(shí)中捕獲程序的方法調(diào)用; 針對(duì)一種或多種平臺(tái)特定的實(shí)現(xiàn),查找與所捕獲的方法調(diào)用關(guān)聯(lián)的符號(hào)引用; 基于與所述一種或多種平臺(tái)特定的實(shí)現(xiàn)關(guān)聯(lián)的親和性度量,從所述一種或多種平臺(tái)特 定的實(shí)現(xiàn)中選擇一種平臺(tái)特定的實(shí)現(xiàn),所述親和性度量指示所述一種或多種平臺(tái)特定的實(shí) 現(xiàn)在所述混合系統(tǒng)中的相應(yīng)一個(gè)或多個(gè)平臺(tái)上運(yùn)行的高效程度; 返回對(duì)所選擇的平臺(tái)特定的實(shí)現(xiàn)的直接引用;以及 使用所返回的對(duì)所選擇的平臺(tái)特定的實(shí)現(xiàn)的直接引用替換與所捕獲的方法調(diào)用關(guān)聯(lián) 的所述符號(hào)引用。
21. 根據(jù)權(quán)利要求20的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中所述程序的所述運(yùn)行時(shí)繼續(xù)使用替 換后的直接引用執(zhí)行所述程序。
22. 根據(jù)權(quán)利要求20的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中返回步驟包括返回對(duì)所選擇的平臺(tái) 特定的實(shí)現(xiàn)的所述直接引用以及與關(guān)聯(lián)平臺(tái)相關(guān)的信息。
23. 根據(jù)權(quán)利要求20的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中在包含所述親和性度量的表中查找 所述符號(hào)引用。
24. 根據(jù)權(quán)利要求23的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中在運(yùn)行時(shí)動(dòng)態(tài)地計(jì)算和更新所述表 中的所述親和性度量。
25. 根據(jù)權(quán)利要求23的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中在計(jì)算所述親和性度量中使用與運(yùn) 行所述一種或多種平臺(tái)特定的實(shí)現(xiàn)關(guān)聯(lián)的開(kāi)銷(xiāo)。
【文檔編號(hào)】G06F9/46GK104160377SQ201380013717
【公開(kāi)日】2014年11月19日 申請(qǐng)日期:2013年3月4日 優(yōu)先權(quán)日:2012年3月12日
【發(fā)明者】M·H·道森, P·杜布, L·L·鄺, 高雨青, X·R·格林, M·H·T·哈克, 伊藤愛(ài), G·約翰遜, N·K·凌, 劉巖斌, 孟曉橋, P·B·納加拉賈, S·R·西拉姆, 譚偉, 張立 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司