專利名稱:用于二進(jìn)制代碼程序的安裝方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及程序的安裝方法,尤其涉及用于二進(jìn)制代碼程序的安裝方法和系統(tǒng)。
背景技術(shù):
很多軟件程序的源代碼開發(fā)完成后,一般通過編譯器的編譯,和連接器的連接,生 成二進(jìn)制目標(biāo)代碼的安裝程序。該二進(jìn)制目標(biāo)代碼的安裝程序在用戶計(jì)算系統(tǒng)(如個(gè)人計(jì) 算機(jī)上)執(zhí)行安裝過程,將該軟件安裝到目標(biāo)計(jì)算系統(tǒng)上。然后,用戶可以開始使用安裝后 的軟件。 在編譯和連接時(shí),一般對(duì)軟件進(jìn)行必要的優(yōu)化,以便提高用戶軟件在目標(biāo)計(jì)算系 統(tǒng)上的執(zhí)行性能?,F(xiàn)代很多編譯器的設(shè)計(jì)都包括多個(gè)編譯步驟和多個(gè)優(yōu)化步驟,每個(gè)步驟 往往是由一個(gè)相對(duì)獨(dú)立的模塊實(shí)現(xiàn)。優(yōu)化步驟可以進(jìn)一步分為優(yōu)化分析步驟,和優(yōu)化執(zhí)行 步驟。這樣,優(yōu)化模塊進(jìn)一步可以分為優(yōu)化分析模塊和優(yōu)化執(zhí)行模塊。 編譯器的優(yōu)化過程,用于協(xié)調(diào)編譯器的輸出以減小(如最小化)可執(zhí)行程序的一
些屬性或提高效率。其中,最常見的優(yōu)化是減少程序的執(zhí)行時(shí)間;其次是減少程序占用的內(nèi)
存。此外,應(yīng)用于便攜式計(jì)算機(jī),則要求將程序執(zhí)行的功耗減小。大部分的優(yōu)化工作,由編譯
器在編譯時(shí)完成。此類在編譯時(shí)進(jìn)行的優(yōu)化可以提高產(chǎn)生的代碼在時(shí)間和存儲(chǔ)上的效率。 通用的編程語(yǔ)言,例如C、 Fortran,使用分立的編譯,以便為創(chuàng)建較大的程
序提供便利。程序被寫成多個(gè)部分,并且在文件系統(tǒng)中通常存儲(chǔ)為分立的文件。每個(gè)部分
被獨(dú)立編譯。目標(biāo)代碼連接器,將分別編譯的多個(gè)部分組裝成可執(zhí)行映像。 盡管分別編譯是一種無可爭(zhēng)議的有用的技術(shù),但是其具有以下缺點(diǎn)編譯器無法
執(zhí)行有些優(yōu)化,因?yàn)閮?yōu)化需要多個(gè)程序部分的知識(shí)。在連接之前,編譯器有時(shí)很難針對(duì)給定
的某個(gè)文件進(jìn)行優(yōu)化。例如,函數(shù)可能在不同文件之間調(diào)用,并且需要優(yōu)化,如消除無用的
代碼、常數(shù)折疊(constant-folding)、全局?jǐn)?shù)據(jù)分配,可以在全部程序的各部分同時(shí)進(jìn)行。
因此,在整個(gè)程序或部分程序被連接起來的過程中,還需要進(jìn)行連接時(shí)的優(yōu)化。 雖然已有技術(shù)在生成目標(biāo)軟件的編譯和連接過程中,對(duì)軟件進(jìn)行了優(yōu)化。但是,由
于計(jì)算系統(tǒng)的不同需求,不同用戶仍然希望針對(duì)其特定的計(jì)算環(huán)境提供特定的軟件。
發(fā)明內(nèi)容
鑒于已有技術(shù)的不足,本發(fā)明提供了一種二進(jìn)制代碼程序的安裝方法,包括檢 索待安裝二進(jìn)制代碼程序中的代碼的安裝優(yōu)化表;收集目標(biāo)計(jì)算裝置的執(zhí)行環(huán)境參數(shù);根 據(jù)所述安裝優(yōu)化表和所述執(zhí)行環(huán)境參數(shù),對(duì)所述待安裝的二進(jìn)制代碼程序中的代碼執(zhí)行優(yōu) 化;以及安裝優(yōu)化后的二進(jìn)制代碼程序。這樣,安裝后的二進(jìn)制代碼程序得到了進(jìn)一步的優(yōu) 化,從而提高了性能。 本發(fā)明還提供了一種生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,包括確定 根據(jù)執(zhí)行環(huán)境參數(shù)需要進(jìn)一步優(yōu)化的二進(jìn)制代碼程序中的代碼;確定與所述需要進(jìn)一步優(yōu) 化的代碼相應(yīng)的代碼優(yōu)化方法;確定需要進(jìn)一步優(yōu)化的代碼在所述二進(jìn)制代碼程序中的位置;以及將需進(jìn)一步優(yōu)化的代碼的位置及其相應(yīng)的代碼優(yōu)化方法加入一安裝優(yōu)化表。
本發(fā)明還提供了一種用于安裝二進(jìn)制代碼程序的系統(tǒng),包括優(yōu)化表檢索裝置,用 于檢索待安裝二進(jìn)制代碼程序中的代碼的安裝優(yōu)化表;參數(shù)收集裝置,用于收集目標(biāo)計(jì)算 裝置的執(zhí)行環(huán)境參數(shù);優(yōu)化裝置,用于根據(jù)所述安裝優(yōu)化表和所述執(zhí)行環(huán)境參數(shù),對(duì)所述待 安裝的二進(jìn)制代碼程序中的代碼執(zhí)行優(yōu)化;以及安裝裝置,用于安裝優(yōu)化后的二進(jìn)制代碼 程序。 本發(fā)明還提供了一種生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的系統(tǒng),包括優(yōu)化 代碼確定裝置,用于確定根據(jù)執(zhí)行環(huán)境參數(shù)需要進(jìn)一步優(yōu)化的二進(jìn)制代碼程序中的代碼; 優(yōu)化方法確定裝置,用于確定與所述需要進(jìn)一步優(yōu)化的代碼相應(yīng)的代碼優(yōu)化方法;代碼位 置確定裝置,用于確定需要進(jìn)一步優(yōu)化的代碼在所述二進(jìn)制代碼程序中的位置;以及優(yōu)化 表形成裝置,用于將需進(jìn)一步優(yōu)化的代碼的位置及其相應(yīng)的代碼優(yōu)化方法加入一安裝優(yōu)化 表。 通過本發(fā)明,安裝后的二進(jìn)制代碼程序?qū)⒈贿M(jìn)一步的優(yōu)化從而提高了性能。
圖1示出了根據(jù)本發(fā)明一實(shí)施例的二進(jìn)制代碼程序的安裝方法。 圖2示出了根據(jù)本發(fā)明另一實(shí)施例的生成安裝優(yōu)化表的方法。 圖3示出了根據(jù)本發(fā)明另一實(shí)施例的利用安裝優(yōu)化表執(zhí)行的安裝流程。 圖4示出了根據(jù)本發(fā)明一實(shí)施例的用于安裝二進(jìn)制代碼程序的系統(tǒng)方框圖。 圖5示出了根據(jù)本發(fā)明一實(shí)施例的生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的系
統(tǒng)方框圖。
具體實(shí)施例方式以下參照按照本發(fā)明實(shí)施例的方法、裝置描述本發(fā)明。其中,流程圖和/或框圖的
每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)
算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,
從而生產(chǎn)出一種機(jī)器,使得通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行的這些指令,產(chǎn)生
實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置(means)。 也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能指令計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置
以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生一個(gè)包
括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)
的制造品o 還可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置上,使得在計(jì) 算機(jī)或其它可編程數(shù)據(jù)處理裝置上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而 在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令就提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定 的功能/操作的過程。 圖1示出了根據(jù)本發(fā)明一實(shí)施例的二進(jìn)制代碼程序的安裝方法。在步驟S110開 始執(zhí)行。在參數(shù)收集步驟S120,收集目標(biāo)計(jì)算裝置的執(zhí)行環(huán)境參數(shù)。該執(zhí)行環(huán)境的參數(shù)包 括硬件參數(shù)和/或軟件參數(shù)。其中,軟件參數(shù)可以包括用戶數(shù)和用戶密鑰、虛擬存儲(chǔ)的參
5數(shù)、執(zhí)行環(huán)境中軟件處理能力,如執(zhí)行環(huán)境中軟件處理圖像的能力等等。硬件參數(shù)可以包括 中央處理單元(CPU)、緩存、內(nèi)存、輸入輸出子系統(tǒng)以及矢量化計(jì)算等方面的參數(shù)。例如,硬 件參數(shù)可以包括以下參數(shù)的一種或多種CPU的種類以及每種CPU的個(gè)數(shù)、CPU支持的指令 集、矢量化參數(shù)、一級(jí)緩存的大小、二級(jí)緩存大小,內(nèi)存的總?cè)萘亢蛢?nèi)存頁(yè)的大小、顯示分辨 率(該參數(shù)對(duì)于3D圖形顯示的程序很有用,將分辨率設(shè)置為常量可以提高運(yùn)算速度)。根 據(jù)在安裝時(shí)需要進(jìn)行的優(yōu)化,該該執(zhí)行環(huán)境的參數(shù)可以包括一種或多種參數(shù)。例如,對(duì)于需 要進(jìn)行循環(huán)分塊優(yōu)化的情況,可以收集目標(biāo)計(jì)算裝置的一級(jí)緩存的大小、二級(jí)緩存大小、內(nèi) 存頁(yè)的大小組成的組中的一種或多種。 在優(yōu)化表檢索步驟S130,在待安裝二進(jìn)制代碼程序代碼中檢索安裝優(yōu)化表。本領(lǐng) 域的技術(shù)人員可以理解,該安裝優(yōu)化表也可以存儲(chǔ)該待安裝的二進(jìn)制代碼程序代碼之外。 對(duì)于優(yōu)化二進(jìn)制的安裝程序代碼,直接分析其二進(jìn)制代碼以便進(jìn)行優(yōu)化是非常困難的。本 發(fā)明采用一安裝優(yōu)化表來明確有可能進(jìn)一步優(yōu)化的代碼。因此,該安裝優(yōu)化表包括將要被 優(yōu)化的代碼在所述二進(jìn)制代碼程序中的位置以及優(yōu)化目標(biāo)代碼的方法。該安裝優(yōu)化表還可 以包括為了優(yōu)化,需要收集的執(zhí)行環(huán)境參數(shù)。安裝優(yōu)化表中的上述內(nèi)容,可以由編譯器在編 譯源代碼時(shí)產(chǎn)生,也可以由目標(biāo)代碼連接器產(chǎn)生。在本發(fā)明的附圖3及其描述中,將詳細(xì)描 述編譯器在編譯源代碼時(shí)產(chǎn)生安裝優(yōu)化表。本領(lǐng)域的技術(shù)人員可以理解,安裝優(yōu)化表也可 以由程序員根據(jù)具體需要編輯產(chǎn)生。因?yàn)榫幾g器和目標(biāo)代碼連接器相對(duì)比較固定,一般由 專門的公司提供,不易根據(jù)需要來及時(shí)改變,而程序員可以根據(jù)實(shí)際針對(duì)系統(tǒng)需要來創(chuàng)建 優(yōu)化目標(biāo)代碼的方法。 在優(yōu)化步驟S140,用于根據(jù)安裝優(yōu)化表和執(zhí)行環(huán)境參數(shù),對(duì)所述待安裝的程序代 碼執(zhí)行優(yōu)化。其中,優(yōu)化步驟可以包括編譯器所能進(jìn)行的多種優(yōu)化,包括但不限于循環(huán) 分塊優(yōu)化(Loop tiling optimization)、矢量化優(yōu)化(vectorization optimization)、 常量消除優(yōu)化(constant foldingoptimization)、循環(huán)展開優(yōu)化(loop unrolling optimization)、相同常量易'J除優(yōu)化(merge duplicate constants)、單指令多數(shù)據(jù) (simdizationoptimization)、無用代碼移除優(yōu)化(dead code elimination)等等。以循環(huán) 分塊優(yōu)化(Loop tiling optimization)為例,二進(jìn)制的目標(biāo)代碼一般由源代碼編譯產(chǎn)生, 該目標(biāo)代碼需要支持多種計(jì)算裝置的執(zhí)行環(huán)境。因此,在編譯時(shí)需要采用多種計(jì)算裝置都 支持的參數(shù),或保守的參數(shù)以便能支持大多數(shù)的執(zhí)行環(huán)境。對(duì)于循環(huán)分塊的大小,編譯時(shí)通 常采用一個(gè)很小的固定尺寸以支持老式的執(zhí)行環(huán)境。但是,安裝該軟件的計(jì)算裝置的硬件 配置卻是多種多樣,小的固定尺寸的循環(huán)分塊不能發(fā)揮出新式硬件的全部潛力。循環(huán)分塊 大小如果與目標(biāo)計(jì)算裝置的硬件配置相匹配,如目標(biāo)計(jì)算裝置的一級(jí)緩存的大小、二級(jí)緩 存大小,內(nèi)存頁(yè)大小相匹配,將使得循環(huán)操作得到優(yōu)化。從而節(jié)約計(jì)算裝置的資源和軟件的 執(zhí)行時(shí)間。 對(duì)于涉及矢量計(jì)算的情況,可以根據(jù)參數(shù)收集步驟S120所收集的矢量化參數(shù)來 執(zhí)行優(yōu)化。例如,有的計(jì)算裝置的硬件,如CPU支持矢量化運(yùn)算,例如對(duì)128位向量計(jì)算 的支持,而有的計(jì)算裝置的硬件不支持矢量化運(yùn)算。因此,在優(yōu)化步驟S140中,可以根據(jù) 安裝優(yōu)化表和執(zhí)行環(huán)境參數(shù),對(duì)所述待安裝的二進(jìn)制代碼程序中的代碼執(zhí)行矢量化優(yōu)化 (Vectorization optimization)。 另,不同的計(jì)算環(huán)境的硬軟件參數(shù)不同,這些參數(shù)反映到應(yīng)用程序中就是涉及計(jì)
6算環(huán)境的常量。因此,在收集到目標(biāo)計(jì)算機(jī)的執(zhí)行環(huán)境參數(shù)后,可以在優(yōu)化步驟中根據(jù)安 裝優(yōu)化表和執(zhí)行環(huán)境參數(shù),對(duì)所述待安裝的二進(jìn)制代碼程序中的代碼執(zhí)行常量消除優(yōu)化 (constant folding optimization)。 另,計(jì)算裝置的CPU的種類不同,有IBM提供的Power系列CPU, Cell芯片,Intel 提供的CPU,也有AMD提供的CPU。此外,CPU有單核的、雙核的以及多核的。 一個(gè)計(jì)算環(huán)境 中可以包括多種CPU,而每種CPU的個(gè)數(shù)也可以不同。此外,計(jì)算裝置屏幕的分辨率或者執(zhí) 行環(huán)境的圖像處理能力,也可以作為參數(shù)用于優(yōu)化。在優(yōu)化步驟S140中可以根據(jù)這些執(zhí)行 環(huán)境參數(shù)的一種或多種,對(duì)所述待安裝的二進(jìn)制代碼程序中的代碼執(zhí)行優(yōu)化。例如,在本發(fā) 明的一實(shí)施例中,執(zhí)行環(huán)境參數(shù)包括至少兩種CPU的種類及其個(gè)數(shù)。不同種類的CPU的多 種處理能力不同,其代碼需要不同的優(yōu)化。例如,在一個(gè)計(jì)算環(huán)境中包括Power系列CPU和 Cell,則可以針對(duì)這兩種CPU的特點(diǎn)將代碼劃分為由不同的CPU處理,并分別對(duì)這些代碼執(zhí) 行不同的優(yōu)化方法。此外,CPU支持的指令集、顯示分辨率,對(duì)于3D圖形顯示的程序很有用, 將分辨率設(shè)置為常量可以提高運(yùn)算速度。 此外,根據(jù)執(zhí)行環(huán)境中的軟件參數(shù),也可以對(duì)待安裝程序進(jìn)行優(yōu)化。如上文提到的 軟件參數(shù)可以包括用戶數(shù)和密鑰、虛擬存儲(chǔ)的參數(shù)、執(zhí)行環(huán)境中軟件處理能力,如執(zhí)行環(huán)境 中軟件處理圖像的能力等等。 在軟件安裝的過程中,可以偵測(cè)目標(biāo)計(jì)算機(jī)系統(tǒng)上的軟件參數(shù),并基于此對(duì)所安 裝軟件的程序進(jìn)行優(yōu)化,以獲得更好的執(zhí)行效率。 例如,數(shù)據(jù)加密是一類復(fù)雜而費(fèi)時(shí)的離散數(shù)值軟件運(yùn)算,在數(shù)據(jù)量大的時(shí)候尤甚。 在某些使用場(chǎng)景中,密鑰往往是長(zhǎng)時(shí)間固定不變的。例如,在電子郵件的客戶端軟件中用 于簽名(signing)的私有密鑰對(duì)于一個(gè)用戶來說通常是不會(huì)變化的,如果在安裝時(shí)可以確 定,則在待安裝軟件中的該密鑰參數(shù)可以用該密鑰替換為常數(shù),用于在二進(jìn)制的安裝程序 中來將涉及密鑰的算法優(yōu)化。 在這些場(chǎng)景中,依據(jù)本發(fā)明,我們可以在安裝軟件的時(shí)候?qū)Υa施行優(yōu)化,將加密
算法中牽扯到密鑰的變量用密鑰常量代替,而且在這之后還可以進(jìn)一步的優(yōu)化加密解密算
法。例如,可以對(duì)數(shù)據(jù)執(zhí)行加密算法的優(yōu)化。在加密算法中,模運(yùn)算(mod,%)是一種常見
的運(yùn)算??紤]如下的C代碼片段 for(i = 0 ;i < key—size ;i++) for(j = 0 ;j < data—size ;j++) result[j] = data[j]% key[i]; 在已有技術(shù)中,因?yàn)閗ey是變量,所以無法進(jìn)一步的進(jìn)行優(yōu)化,而將這段C代碼編 譯為相應(yīng)的二進(jìn)制代碼。依據(jù)本發(fā)明的一實(shí)施例,可以將key在安裝時(shí)用用戶的固定的密 鑰代替,使之成為常量。首先,用戶密鑰的長(zhǎng)度是固定的,則上述循環(huán)可以被展開優(yōu)化為
result
= data[O] % key[O];
result[l] = data[l]% key[l];
result [2] = data[2] % key [2];
......result [n] = (kte[n]% key[n]; 這樣做的好處首先是可以避免循環(huán)語(yǔ)句的開銷。進(jìn)一步,安裝時(shí)優(yōu)化還可以根據(jù)key的每一個(gè)字節(jié)的具體數(shù)值進(jìn)行更進(jìn)一步的優(yōu)化。例如可以將取2的整數(shù)倍模的運(yùn)算優(yōu)
化為右移運(yùn)算,大幅減少運(yùn)算量。假設(shè)key的首字節(jié)為8,則上述第一條指令 result
= data[O] % 8 ; 可以被進(jìn)一步優(yōu)化為 result
= data[O] >> 3 ; 這樣,在安裝時(shí),可以通過執(zhí)行上述優(yōu)化方法,而將與上述C代碼相應(yīng)的二進(jìn)制代 碼進(jìn)一步進(jìn)行優(yōu)化為與上述優(yōu)化后的代碼相應(yīng)的二進(jìn)制代碼。 通過上述優(yōu)化,加密算法在處理大數(shù)據(jù)輸入的時(shí)候可以獲得顯著的性能提升。
在本發(fā)明的另一實(shí)施例中,移動(dòng)設(shè)備的嵌入式操作系統(tǒng)的功能往往很有限,或?qū)?有些功能的支持不完整。已有技術(shù)中,軟件供應(yīng)商往往要為不同廠商的不同型號(hào)的移動(dòng)設(shè) 備提供不同的安裝文件。但是市面上有成千上萬(wàn)種移動(dòng)設(shè)備,軟件供應(yīng)商不可能為每一種 型號(hào)的設(shè)備都發(fā)行特定的優(yōu)化版本,所以往往軟件只能使用某類設(shè)備之間共有的功能,而 不能將每種設(shè)備的潛力最大的發(fā)揮出來。例如,并不是所有的移動(dòng)設(shè)備的操作系統(tǒng)都可以 處理gif, ico,png和jpg格式的圖片。據(jù)此,對(duì)于為類似于移動(dòng)電話的嵌入式設(shè)備而設(shè)計(jì) 的軟件,在安裝的時(shí)候偵測(cè)目標(biāo)系統(tǒng)的軟件功能,如果其不支持對(duì)于png和/或j pg格式 圖片的處理,就可以施行安裝時(shí)優(yōu)化,將使用png和/或jpg格式圖片的代碼移除,或采用 軟件自身的解碼算法實(shí)現(xiàn)。類似的,這種方法可以用于其他的場(chǎng)景中。
在執(zhí)行所需要的優(yōu)化之后,在安裝步驟S150,安裝優(yōu)化后的程序。在優(yōu)化的過程中 也可以同時(shí)進(jìn)行安裝過程。 本領(lǐng)域的技術(shù)人員可以理解,優(yōu)化表檢索步驟和參數(shù)收集步驟,可以根據(jù)具體需 要來確定先后執(zhí)行的順序。如果參數(shù)收集步驟需要根據(jù)安裝優(yōu)化表來確定需要收集的參 數(shù),則先執(zhí)行優(yōu)化表檢索步驟。如果沒有依賴關(guān)系,哪個(gè)步驟在前均可。這時(shí)參數(shù)收集步驟 可以根據(jù)需要收集全部或部分環(huán)境參數(shù)。 圖2示出了根據(jù)本發(fā)明另一實(shí)施例的生成安裝優(yōu)化表的方法。在步驟S210,編譯 器開始編譯。 本領(lǐng)域的技術(shù)人員根據(jù)上文的描述可以理解,該安裝優(yōu)化主要針對(duì)的對(duì)象是執(zhí)行 性能與執(zhí)行環(huán)境相關(guān)的程序代碼。根據(jù)本發(fā)明的一個(gè)實(shí)施例,編譯器編譯源代碼(source code)時(shí),函數(shù)可以在整個(gè)源代碼文件中進(jìn)行嵌入(inlined),并進(jìn)行優(yōu)化。如消除無用代 碼(dead code),全局?jǐn)?shù)據(jù)分配,可以同時(shí)在全部程序的多個(gè)部分同時(shí)進(jìn)行。安裝程序的大 部分優(yōu)化都是由編譯器完成,因此,可以重新利用在編譯器中被編譯的軟件的架構(gòu)。換言 之,可以將涉及執(zhí)行環(huán)境參數(shù)的代碼或代碼段的位置記錄下來,并將編譯器中用于對(duì)該代 碼或代碼段優(yōu)化的指令記錄下來。 現(xiàn)代很多編譯器的設(shè)計(jì)都包括多個(gè)編譯步驟和多個(gè)優(yōu)化步驟,每個(gè)步驟往往是由 一個(gè)相對(duì)獨(dú)立的模塊實(shí)現(xiàn)。優(yōu)化步驟可以進(jìn)一步分為優(yōu)化分析步驟和優(yōu)化執(zhí)行步驟。這樣, 優(yōu)化模塊進(jìn)一步可以分為優(yōu)化分析模塊和優(yōu)化執(zhí)行模塊。編譯器優(yōu)化分析模塊對(duì)代碼進(jìn)行 優(yōu)化分析后,把編譯器中優(yōu)化執(zhí)行模塊中具體用于執(zhí)行優(yōu)化操作的指令,即與需要優(yōu)化的 代碼相關(guān)的優(yōu)化執(zhí)行指令記錄下來,并寫入優(yōu)化表。 另,如果編譯器中用于執(zhí)行優(yōu)化的指令為可執(zhí)行的二進(jìn)制代碼,可以直接使用。否 則,可以轉(zhuǎn)化為可執(zhí)行的二進(jìn)制代碼。或者,如果編譯器的優(yōu)化模塊是由其他代碼組成的,在將執(zhí)行優(yōu)化的指令記錄下來的同時(shí),還可以在安裝程序中加入其對(duì)應(yīng)代碼的解釋引擎。
這樣,就可以在安裝時(shí)這些參數(shù)被進(jìn)一步確定之后,利用優(yōu)化執(zhí)行指令進(jìn)一步 執(zhí)行相應(yīng)的優(yōu)化。編譯器進(jìn)行的優(yōu)化一般包括但不限于以下幾種優(yōu)化。常量消除優(yōu)化 (constant folding optimization),編譯器評(píng)估包括常量的程序代碼并進(jìn)行優(yōu)化,以便 使得計(jì)算簡(jiǎn)化。循環(huán)分塊優(yōu)化(Loop tilingoptimization)循環(huán)分塊將循環(huán)的迭代空間 (loop' s iteration space)劃分成多個(gè)塊,以便使得一個(gè)循環(huán)使用的數(shù)據(jù)在整個(gè)循環(huán)過 程中保存在高速緩存或內(nèi)存中。矢量化優(yōu)化(vectorization optimization),是將一組適 當(dāng)?shù)膯蝹€(gè)操作轉(zhuǎn)換成較少數(shù)量的支持SIMD(Single Instruction, Multiple Data,單指令 多數(shù)據(jù))的操作,以便減少運(yùn)行所需的系統(tǒng)時(shí)間,如CPU時(shí)間。 在步驟S220,確定根據(jù)執(zhí)行環(huán)境參數(shù)需要進(jìn)一步優(yōu)化的代碼。在進(jìn)行編譯時(shí),在確 定一段代碼或一個(gè)函數(shù)的執(zhí)行與執(zhí)行環(huán)境參數(shù)相關(guān)后,將該段代碼或函數(shù)編譯為二進(jìn)制的 目標(biāo)代碼。該二進(jìn)制的目標(biāo)代碼就可以作為需要進(jìn)一步優(yōu)化的代碼。本領(lǐng)域的技術(shù)人員容 易理解,可以根據(jù)編譯的需要但非必須,執(zhí)行必要的編譯階段的優(yōu)化。 在步驟S230,確定與所述需要進(jìn)一步優(yōu)化的代碼相應(yīng)的代碼優(yōu)化方法。在該步驟 中,將編譯器中用于對(duì)該需進(jìn)一步優(yōu)化的代碼的優(yōu)化方法或優(yōu)化指令記錄下來。如上文所 述,在已有技術(shù)中,編譯器采用這些優(yōu)化方法,一般采用多種計(jì)算裝置都支持的參數(shù),或保 守的參數(shù)以便能支持大多數(shù)的執(zhí)行環(huán)境。而本發(fā)明的實(shí)施例,將這些優(yōu)化方法記錄下來,用 于在安裝時(shí)使用。 根據(jù)本發(fā)明的另一實(shí)施例,對(duì)于確定哪些方法將被用于安裝時(shí)使用,可以確定采 用不同執(zhí)行環(huán)境參數(shù)優(yōu)化后的目標(biāo)代碼的執(zhí)行性能或效率。如果采用不同執(zhí)行環(huán)境參數(shù)優(yōu) 化后,目標(biāo)代碼的執(zhí)行性能或效率相差很大,如1. 3倍或1. 5倍以上,則可以將該段代碼確 定為需要進(jìn)一步優(yōu)化的代碼,并記錄下相應(yīng)的優(yōu)化方法。否則,在編譯階段可以直接對(duì)該段 代碼進(jìn)行優(yōu)化。這主要是為了降低計(jì)算裝置安裝軟件的工作負(fù)擔(dān)。還可以根據(jù)優(yōu)化任務(wù)的 計(jì)算復(fù)雜度和/或?qū)τ?jì)算資源的需求來確定是否將該段代碼在安裝時(shí)進(jìn)行進(jìn)一步的優(yōu)化。 或者,還可以根據(jù)進(jìn)一步其它的優(yōu)化策略來確定進(jìn)行進(jìn)一步優(yōu)化的代碼和優(yōu)化方法。
在步驟S240,確定需要進(jìn)一步優(yōu)化的代碼的位置。在該步驟,將上述需要進(jìn)一步優(yōu) 化的代碼在編譯后的目標(biāo)代碼中的位置記錄下來。如果還需要進(jìn)一步的連接,則將連接器 對(duì)多個(gè)編譯后的代碼執(zhí)行連接后的位置。 在步驟S250,將需進(jìn)一步優(yōu)化的代碼的位置及其相應(yīng)的代碼優(yōu)化方法加入一安裝 優(yōu)化表。該優(yōu)化表將在安裝時(shí)為進(jìn)一步的優(yōu)化提供必要的信息。在步驟S260,將安裝優(yōu)化 表存儲(chǔ)到編譯后的目標(biāo)代碼中。本領(lǐng)域的技術(shù)人員可以理解,該安裝優(yōu)化表也可以與安裝 文件分開存儲(chǔ)。只要在安裝時(shí),安裝軟件可以通過適當(dāng)?shù)姆绞秸{(diào)用該優(yōu)化表即可。例如,優(yōu) 化策略可以確定為通過一服務(wù)器安裝軟件時(shí),可以將該安裝優(yōu)化表放置到該服務(wù)器。
根據(jù)本發(fā)明的一實(shí)施例中生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,其中, 由編譯器確定根據(jù)執(zhí)行環(huán)境參數(shù)需要進(jìn)一步優(yōu)化的代碼。 根據(jù)本發(fā)明的另一實(shí)施例中生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,其 中,可以進(jìn)一步包括將與需要進(jìn)一步優(yōu)化的代碼相應(yīng)的執(zhí)行環(huán)境參數(shù)存儲(chǔ)到所述安裝優(yōu)化 表。 根據(jù)本發(fā)明的另一實(shí)施例中生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,其中,所述執(zhí)行環(huán)境參數(shù)可以包括軟件參數(shù)和/或硬件參數(shù)。 根據(jù)本發(fā)明的另一實(shí)施例中生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,其 中,進(jìn)一步包括對(duì)所述安裝優(yōu)化表進(jìn)行加密的步驟。 根據(jù)本發(fā)明的另一實(shí)施例中生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,其中 可以進(jìn)一步包括將所述安裝優(yōu)化表存儲(chǔ)到所述二進(jìn)制代碼安裝程序中。 根據(jù)本發(fā)明的另一實(shí)施例中生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,其 中,所述執(zhí)行環(huán)境參數(shù)可以包括執(zhí)行環(huán)境的一級(jí)緩存的大小、二級(jí)緩存大小、內(nèi)存頁(yè)的大小 組成的組中的一種或多種。 根據(jù)本發(fā)明的另一實(shí)施例中生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,其 中,所述執(zhí)行環(huán)境參數(shù)可以包括CPU的種類以及每種CPU的個(gè)數(shù)。 根據(jù)本發(fā)明的另一實(shí)施例中生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,其 中,所述執(zhí)行環(huán)境參數(shù)可以包括矢量化參數(shù)。 圖3示出了根據(jù)本發(fā)明另一實(shí)施例的利用安裝優(yōu)化表執(zhí)行的安裝流程。在步驟 S310,開始二進(jìn)制代碼程序的安裝。在步驟S320,在待安裝二進(jìn)制代碼程序代碼中檢索安裝 時(shí)優(yōu)化表并進(jìn)行解密。本領(lǐng)域的技術(shù)人員可以理解,該安裝時(shí)優(yōu)化表也可以存儲(chǔ)在在待安 裝二進(jìn)制代碼程序代碼中或其它適宜的位置??梢詫?duì)安裝優(yōu)化表進(jìn)行單獨(dú)的加密,來為待 安裝的軟件提供進(jìn)一步的保護(hù)。在這種情況下,需要對(duì)安裝優(yōu)化表進(jìn)行相應(yīng)的解密。在這 種情況下,也可以允許在沒有解密的情況下進(jìn)行安裝,但是安裝后的軟件占用的空間較大, 并且軟件運(yùn)行性能較低。 在步驟S330,收集目標(biāo)計(jì)算機(jī)的執(zhí)行環(huán)境參數(shù)。要收集哪些參數(shù)可以取決于優(yōu)化 表中用到了哪些參數(shù)。該安裝優(yōu)化表還可以包括為了優(yōu)化,需要收集的執(zhí)行環(huán)境參數(shù)。該 安裝過程可以用于執(zhí)行環(huán)境參數(shù)有多種配置或變化較多的系統(tǒng)。在步驟S340,根據(jù)收集的 執(zhí)行環(huán)境參數(shù),獲取安裝優(yōu)化表中的項(xiàng)目entry [i]。在步驟S350,確定項(xiàng)目entry [i]中將 要被優(yōu)化的代碼涉及的指令及其在二進(jìn)制代碼程序中的位置。在步驟S360,根據(jù)優(yōu)化指令 對(duì)確定的代碼進(jìn)行優(yōu)化。在優(yōu)化完成后,在步驟S370,刪除安裝優(yōu)化表。本領(lǐng)域的技術(shù)人員 可以理解,該刪除過程也可以邊安裝邊進(jìn)行,或者邊優(yōu)化邊刪除已經(jīng)執(zhí)行完成的優(yōu)化項(xiàng)目 和相應(yīng)的優(yōu)化方法。在步驟S380,安裝優(yōu)化后的程序。在步驟S390,結(jié)束安裝過程。
根據(jù)本發(fā)明的一實(shí)施例,在安裝時(shí)當(dāng)目標(biāo)程序運(yùn)行環(huán)境的信息已知時(shí),使用編譯 器中的方法用于優(yōu)化可執(zhí)行文件。 圖4示出了根據(jù)本發(fā)明一實(shí)施例的用于安裝二進(jìn)制代碼程序的系統(tǒng)方框圖。該用 于安裝二進(jìn)制代碼程序的系統(tǒng)400包括優(yōu)化表檢索裝置410,用于檢索待安裝二進(jìn)制代碼 程序中的代碼的安裝優(yōu)化表;參數(shù)收集裝置420,用于收集目標(biāo)計(jì)算裝置的執(zhí)行環(huán)境參數(shù); 優(yōu)化裝置430,用于根據(jù)所述安裝優(yōu)化表和所述執(zhí)行環(huán)境參數(shù),對(duì)所述待安裝的二進(jìn)制代碼 程序中的代碼執(zhí)行優(yōu)化;以及安裝裝置440,用于安裝優(yōu)化后的二進(jìn)制代碼程序。
圖5示出了根據(jù)本發(fā)明一實(shí)施例的生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的系 統(tǒng)方框圖。該用于二進(jìn)制代碼程序的安裝優(yōu)化表的系統(tǒng)500包括優(yōu)化代碼確定裝置510, 用于確定根據(jù)執(zhí)行環(huán)境參數(shù)需要進(jìn)一步優(yōu)化的二進(jìn)制代碼程序中的代碼;優(yōu)化方法確定裝 置520,用于確定與所述需要進(jìn)一步優(yōu)化的代碼相應(yīng)的代碼優(yōu)化方法;代碼位置確定裝置 530,用于確定需要進(jìn)一步優(yōu)化的代碼在所述二進(jìn)制代碼程序中的位置;以及優(yōu)化表形成裝置540,用于將需進(jìn)一步優(yōu)化的代碼的位置及其相應(yīng)的代碼優(yōu)化方法加入一安裝優(yōu)化表。
編譯器在編譯各部分文件或單個(gè)文件時(shí),可以進(jìn)行大部分的優(yōu)化工作。因此,根據(jù) 本發(fā)明的實(shí)施例能夠重復(fù)利用編譯器中已經(jīng)存在的大部分優(yōu)化方法,在安裝時(shí)進(jìn)一步對(duì)軟 件進(jìn)行優(yōu)化。 了解其執(zhí)行環(huán)境的具體參數(shù)可能需要一定的專業(yè)知識(shí),根據(jù)本發(fā)明用戶可以不必 了解這些,而由安裝程序本身來執(zhí)行。軟件服務(wù)商僅能提供粗粒度的不同安裝軟件。此外, 有些優(yōu)化由于優(yōu)化的粒度根據(jù)不同的執(zhí)行環(huán)境變化很大,執(zhí)行環(huán)境的眾多參數(shù)可以演變出 許多種具有個(gè)性的配置。有些執(zhí)行環(huán)境的變化很難預(yù)料,軟件服務(wù)商很難提供相應(yīng)的具有 針對(duì)性的安裝軟件。此外,編譯器和連接器相對(duì)比較固定,一般由專門的公司提供,不易根 據(jù)需要及時(shí)改變來提供必要的優(yōu)化。而根據(jù)本發(fā)明,可以為編譯器不斷附加可以優(yōu)化的功 能或方法確是可行的。將許多優(yōu)化操作在安裝時(shí)進(jìn)行,提高了優(yōu)化效率并為不同的執(zhí)行環(huán) 境提供了細(xì)粒度的個(gè)性化優(yōu)化,軟件服務(wù)商的安裝軟件分類也可以變得相對(duì)簡(jiǎn)單。
附圖中的流程圖和框圖,圖示了按照本發(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è)接連地表示的方框?qū)嶋H上可 以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意 的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí) 行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令 的組合來實(shí)現(xiàn)。 所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明可以體現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。 因此,本發(fā)明可以具體實(shí)現(xiàn)為以下形式,即,可以是完全的硬件、完全的軟件(包括固件、駐 留軟件、微代碼等)、或者本文一般稱為"電路"、"模塊"或"系統(tǒng)"的軟件部分與硬件部分的 組合。此外,本發(fā)明還可以采取體現(xiàn)在任何有形的表達(dá)介質(zhì)(medium of e鄧ression)中的 計(jì)算機(jī)程序產(chǎn)品的形式,該介質(zhì)中包含計(jì)算機(jī)可用的程序碼。 可以使用一個(gè)或多個(gè)計(jì)算機(jī)可用的或計(jì)算機(jī)可讀的介質(zhì)的任何組合。計(jì)算機(jī)可 用的或計(jì)算機(jī)可讀的介質(zhì)例如可以是——但不限于——電的、磁的、光的、電磁的、紅外線 的、或半導(dǎo)體的系統(tǒng)、裝置、器件或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的更具體的例子(非窮舉的 列表)包括以下有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器 (RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁 盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、諸如支持因特網(wǎng)或內(nèi)部網(wǎng)的傳輸介質(zhì)、或者磁存儲(chǔ)器 件。注意計(jì)算機(jī)可用的或計(jì)算機(jī)可讀的介質(zhì)甚至可以是上面印有程序的紙張或者其它合適 的介質(zhì),這是因?yàn)椋缈梢酝ㄟ^電掃描這種紙張或其它介質(zhì),以電子方式獲得程序,然后 以適當(dāng)?shù)姆绞郊右跃幾g、解釋或處理,并且必要的話在計(jì)算機(jī)存儲(chǔ)器中存儲(chǔ)。在本文件的語(yǔ) 境中,計(jì)算機(jī)可用的或計(jì)算機(jī)可讀的介質(zhì)可以是任何含有、存儲(chǔ)、傳達(dá)、傳播、或傳輸供指令 執(zhí)行系統(tǒng)、裝置或器件使用的或與指令執(zhí)行系統(tǒng)、裝置或器件相聯(lián)系的程序的介質(zhì)。計(jì)算機(jī) 可用的介質(zhì)可包括在基帶中或者作為載波一部分傳播的、由其體現(xiàn)計(jì)算機(jī)可用的程序碼的 數(shù)據(jù)信號(hào)。計(jì)算機(jī)可用的程序碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括——但不限于——無線、電線、光纜、RF等等。 用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī)程序碼,可以以一種或多種程序設(shè)計(jì)語(yǔ)言的任何 組合來編寫,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言——諸如Java、 Smalltalk C++之類,還包括常規(guī)的過程式程序設(shè)計(jì)語(yǔ)言——諸如"C"程序設(shè)計(jì)語(yǔ)言或類似的程序設(shè)計(jì) 語(yǔ)言。程序碼可以完全地在用戶的計(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ī)可以通過任何種類的網(wǎng)絡(luò)——包括局域 網(wǎng)(LAN)或廣域網(wǎng)(WAN)——連接到用戶的計(jì)算機(jī),或者,可以(例如利用因特網(wǎng)服務(wù)提供 商來通過因特網(wǎng))連接到外部計(jì)算機(jī)。 以上結(jié)合優(yōu)選法方案對(duì)本發(fā)明進(jìn)行了詳細(xì)的描述,但是可以理解,以上實(shí)施例僅 用于說明而非限定本發(fā)明。本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明的所示方案進(jìn)行修改而不脫離 本發(fā)明的范圍和精神。
1權(quán)利要求
一種二進(jìn)制代碼程序的安裝方法,包括檢索待安裝二進(jìn)制代碼程序中的代碼的安裝優(yōu)化表;收集目標(biāo)計(jì)算裝置的執(zhí)行環(huán)境參數(shù);根據(jù)所述安裝優(yōu)化表和所述執(zhí)行環(huán)境參數(shù),對(duì)所述待安裝的二進(jìn)制代碼程序中的代碼執(zhí)行優(yōu)化;以及安裝優(yōu)化后的二進(jìn)制代碼程序。
2. 根據(jù)權(quán)利要求1所述的方法,其中安裝優(yōu)化表包括將要被優(yōu)化的代碼在所述二進(jìn)制 代碼程序中的位置以及相應(yīng)的用于優(yōu)化代碼的方法。
3. 根據(jù)權(quán)利要求1所述的方法,其中收集目標(biāo)計(jì)算裝置的執(zhí)行環(huán)境參數(shù)進(jìn)一步配置為 根據(jù)所述安裝優(yōu)化表收集目標(biāo)計(jì)算裝置的執(zhí)行環(huán)境參數(shù)。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述執(zhí)行環(huán)境參數(shù)包括軟件參數(shù),所述對(duì)所述待 安裝的二進(jìn)制代碼程序中的代碼執(zhí)行優(yōu)化進(jìn)一步配置為根據(jù)所述安裝優(yōu)化表和所述軟件 參數(shù),對(duì)所述待安裝的二進(jìn)制代碼程序中的代碼執(zhí)行優(yōu)化。
5. 根據(jù)權(quán)利要求1所述的方法,其中所述安裝優(yōu)化表存儲(chǔ)在所述待安裝二進(jìn)制代碼程 序的代碼中,所述檢索待安裝二進(jìn)制代碼程序中的代碼的安裝優(yōu)化表進(jìn)一步配置為在所述 待安裝二進(jìn)制代碼程序的代碼中檢索所述安裝優(yōu)化表。
6. 根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其中所述安裝優(yōu)化表是加密的,所述方法進(jìn) 一步包括對(duì)所述安裝優(yōu)化表進(jìn)行解密。
7. 根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其中對(duì)所述待安裝的二進(jìn)制代碼程序中的 代碼執(zhí)行優(yōu)化進(jìn)一步配置根據(jù)安裝優(yōu)化表和執(zhí)行環(huán)境參數(shù),對(duì)所述待安裝的二進(jìn)制代碼程 序中的代碼執(zhí)行循環(huán)分塊優(yōu)化(Loop tilingoptimization)。
8. 根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其中所述執(zhí)行環(huán)境參數(shù)包括矢量化參 數(shù),所述對(duì)所述待安裝的二進(jìn)制代碼程序中的代碼執(zhí)行優(yōu)化進(jìn)一步配置根據(jù)所述安裝 優(yōu)化表和所述矢量化參數(shù),對(duì)所述待安裝的二進(jìn)制代碼程序中的代碼執(zhí)行矢量化優(yōu)化 (Vectorization optimization)
9. 根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其中對(duì)所述待安裝的二進(jìn)制代碼程序中的 代碼執(zhí)行優(yōu)化進(jìn)一步配置根據(jù)安裝優(yōu)化表和執(zhí)行環(huán)境參數(shù),對(duì)所述待安裝的二進(jìn)制代碼程 序中的代碼執(zhí)行常量擴(kuò)展優(yōu)化(constant foldingoptimization)。
10. 根據(jù)權(quán)利要求7所述的方法,其中執(zhí)行環(huán)境參數(shù)包括一級(jí)緩存的大小、二級(jí)緩存大 小,內(nèi)存頁(yè)的大小組成的組中的一種或多種。
11. 根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其中執(zhí)行環(huán)境參數(shù)包括CPU的種類以及每 種CPU的個(gè)數(shù)。
12. 根據(jù)權(quán)利要求11所述的方法,其中執(zhí)行環(huán)境參數(shù)包括至少兩種CPU的種類及其個(gè)數(shù)。
13. 根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,進(jìn)一步包括響應(yīng)于對(duì)所述待安裝的二進(jìn)制 代碼程序中的代碼執(zhí)行優(yōu)化完畢,刪除安裝優(yōu)化表。
14. 一種生成用于二進(jìn)制代碼程序的安裝優(yōu)化表的方法,包括 確定根據(jù)執(zhí)行環(huán)境參數(shù)需要進(jìn)一步優(yōu)化的二進(jìn)制代碼程序中的代碼; 確定與所述需要進(jìn)一步優(yōu)化的代碼相應(yīng)的代碼優(yōu)化方法;確定需要進(jìn)一步優(yōu)化的代碼在所述二進(jìn)制代碼程序中的位置;以及 將需進(jìn)一步優(yōu)化的代碼的位置及其相應(yīng)的代碼優(yōu)化方法加入一安裝優(yōu)化表。
15. 根據(jù)權(quán)利要求14所述的方法,其中由編譯器確定根據(jù)執(zhí)行環(huán)境參數(shù)需要進(jìn)一步優(yōu) 化的代碼。
16. 根據(jù)權(quán)利要求14所述的方法,其中進(jìn)一步包括將與需要進(jìn)一步優(yōu)化的代碼相應(yīng)的 執(zhí)行環(huán)境參數(shù)存儲(chǔ)到所述安裝優(yōu)化表。
17. 根據(jù)權(quán)利要求14所述的方法,其中所述執(zhí)行環(huán)境參數(shù)包括軟件參數(shù)。
18. 根據(jù)權(quán)利要求14所述的方法,其中進(jìn)一步包括對(duì)所述安裝優(yōu)化表進(jìn)行加密。
19. 根據(jù)權(quán)利要求14或18所述的方法,其中進(jìn)一步包括將所述安裝優(yōu)化表存儲(chǔ)到所述 二進(jìn)制代碼程序中。
20. 根據(jù)權(quán)利要求14所述的方法,其中所述執(zhí)行環(huán)境參數(shù)包括執(zhí)行環(huán)境的一級(jí)緩存的 大小、二級(jí)緩存大小、內(nèi)存頁(yè)的大小組成的組中的一種或多種。
21. 根據(jù)權(quán)利要求14所述的方法,其中所述執(zhí)行環(huán)境參數(shù)包括CPU的種類以及每種 CPU的個(gè)數(shù)。
22. 根據(jù)權(quán)利要求14所述的方法,其中所述執(zhí)行環(huán)境參數(shù)包括矢量化參數(shù)。
23. —種計(jì)算系統(tǒng),包括配置為用于執(zhí)行前述任一方法權(quán)利要求所述的方法的多個(gè)裝置。
全文摘要
本發(fā)明提供了一種二進(jìn)制代碼程序的安裝方法和系統(tǒng)。該方法包括檢索待安裝二進(jìn)制代碼程序代碼的安裝優(yōu)化表;用于收集目標(biāo)計(jì)算裝置的執(zhí)行環(huán)境參數(shù);根據(jù)所述安裝優(yōu)化表和所述執(zhí)行環(huán)境參數(shù),對(duì)所述待安裝的程序代碼執(zhí)行優(yōu)化;以及安裝優(yōu)化后的程序。通過本發(fā)明,安裝后的二進(jìn)制代碼程序?qū)⒈贿M(jìn)一步的優(yōu)化從而提高了性能。
文檔編號(hào)G06F9/45GK101727335SQ200810174629
公開日2010年6月9日 申請(qǐng)日期2008年10月31日 優(yōu)先權(quán)日2008年10月31日
發(fā)明者于維英, 李研, 鄭勇, 齊堯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司