欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于解碼可執(zhí)行代碼的方法和相關(guān)設(shè)備的制作方法

文檔序號(hào):6654871閱讀:188來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):用于解碼可執(zhí)行代碼的方法和相關(guān)設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種用于解碼諸如VLIW處理器之類(lèi)的處理器中的可執(zhí)行代碼的方法和相關(guān)設(shè)備,特別是在尤其用于加載和再定位存儲(chǔ)器中的處理器可執(zhí)行代碼的運(yùn)行期(run-time)操作系統(tǒng)中。
背景技術(shù)
隨著采用多媒體處理的增加,已經(jīng)開(kāi)發(fā)了能夠支持大而復(fù)雜的多媒體應(yīng)用的大功率處理器。
在關(guān)于這類(lèi)應(yīng)用的可執(zhí)行代碼能夠被運(yùn)行之前,有必要將可執(zhí)行映像加載到存儲(chǔ)器中并且隨后再定位。這種再定位是二進(jìn)制打補(bǔ)丁(binary-patching)的過(guò)程以便將可執(zhí)行代碼中的地址的引用與實(shí)際加載的地址空間相配。對(duì)這種地址的引用通常可以包括可執(zhí)行文本片段中的決策樹(shù)的起始地址,或者data、datal或bss片段中的數(shù)據(jù)地址。
可從Philips那里購(gòu)買(mǎi)到TriMedia處理器是VLIW處理器的例子。TriMedia可執(zhí)行代碼是如上所述的這類(lèi)代碼的例子,并且在可執(zhí)行代碼打補(bǔ)丁之后,包含TriMedia可執(zhí)行代碼的文本片段必須被位洗牌(bit-shuffled)以便允許處理器以高速緩存高效方式解碼可執(zhí)行代碼,特別地是在運(yùn)行期。然而,這種位洗牌包括密集存儲(chǔ)器、計(jì)算昂貴的操作,并且也將發(fā)現(xiàn)與正在加載的程序尺寸成比例。
當(dāng)從存儲(chǔ)器中加載可執(zhí)行代碼時(shí),比如例如從高速緩存的文件系統(tǒng)中加載,人們發(fā)現(xiàn)上述的位洗牌操作形成經(jīng)受的加載時(shí)間的主要組成部分。
在運(yùn)行期操作系統(tǒng)中,比如在有人需要頻繁地加載可執(zhí)行代碼的情況下,或者在大靜態(tài)鏈接程序?qū)⒈患虞d的情況下,這種位洗牌操作被認(rèn)為表示對(duì)性能的重要限制。

發(fā)明內(nèi)容
本發(fā)明設(shè)法提供一種用于解碼運(yùn)行期操作系統(tǒng)中的可執(zhí)行代碼的方法和相關(guān)設(shè)備,并且顯示出優(yōu)于已知這種方法和設(shè)備的優(yōu)點(diǎn)。
根據(jù)本發(fā)明的第一方面,提供了一種用于解碼包括位洗牌代碼的處理系統(tǒng)中的可執(zhí)行代碼的方法,并且包括下列步驟將代碼劃分成多個(gè)子部分;標(biāo)識(shí)能夠在處理之前被位洗牌的代碼的子部分;以及在處理之前對(duì)所述標(biāo)識(shí)子部分進(jìn)行位洗牌以便減少所需的處理位洗牌。
本發(fā)明能夠被優(yōu)選地應(yīng)用于預(yù)洗牌二進(jìn)制代碼的處理階段,例如在稍后的鏈接時(shí)間段期間鏈接預(yù)洗牌的二進(jìn)制目標(biāo)代碼。
在一個(gè)特定設(shè)備中,所述處理系統(tǒng)包括運(yùn)行期操作系統(tǒng)并且包含在運(yùn)行期的位洗牌以及標(biāo)識(shí)能夠在運(yùn)行期之前被位洗牌的子部分。
優(yōu)選地,所述一部分代碼的預(yù)洗牌可能導(dǎo)致在20-25%的數(shù)量級(jí)內(nèi)運(yùn)行期洗牌延遲的減少并且優(yōu)選地用來(lái)增加可執(zhí)行代碼加載和再定位時(shí)間。
因此能夠?qū)崿F(xiàn)運(yùn)行期性能改善并且將會(huì)認(rèn)識(shí)到的是,本發(fā)明證明當(dāng)處理TriMedia程序和可執(zhí)行代碼時(shí)尤其是有利的。
優(yōu)選地,所述方法包括下列步驟在鏈接時(shí),產(chǎn)生用于加載和再定位代碼的再定位補(bǔ)丁表。
此外,在上述鏈接的末尾檢查再定位補(bǔ)丁表以便確定打補(bǔ)丁代碼中的哪一個(gè)地址。
優(yōu)選地,所述方法包括下列步驟產(chǎn)生將打補(bǔ)丁的子部分的記錄并且在運(yùn)行期按位圖(bitmap)的形式洗牌。
本發(fā)明也可以包括下列步驟讀取程序加載器內(nèi)的代碼元素以供執(zhí)行所述程序。
接著,程序加載器能夠被設(shè)置成讀取再定位補(bǔ)丁表和可執(zhí)行代碼并且在可執(zhí)行代碼內(nèi)寫(xiě)回所述結(jié)果。
根據(jù)本發(fā)明的另一個(gè)方面,提供了用于解碼處理器中的可執(zhí)行代碼的解碼設(shè)備,并且包括用于位洗牌代碼的裝置,所述設(shè)備還包括用于將代碼劃分成多個(gè)子部分的裝置;標(biāo)識(shí)能夠在處理之前被位洗牌的代碼的子部分的裝置;和在處理之前對(duì)所述標(biāo)識(shí)子部分進(jìn)行位洗牌以便減少處理所需的位洗牌的裝置。
優(yōu)選地,所述處理器包括運(yùn)行期操作系統(tǒng)。
優(yōu)選地,所述應(yīng)用包括用于產(chǎn)生再定位補(bǔ)丁表的裝置,所述補(bǔ)丁表用于在鏈接時(shí)加載和再定位代碼。
此外,本發(fā)明能夠包括用于在鏈接時(shí)位洗牌已標(biāo)識(shí)的子部分的裝置。
優(yōu)選地,提供用于產(chǎn)生將在運(yùn)行期按位圖的形式打補(bǔ)丁和洗牌的子部分的記錄的裝置。
在一個(gè)實(shí)施例中,包含程序加載器并且將其設(shè)置成讀取再定位補(bǔ)丁表和可執(zhí)行代碼并且在可執(zhí)行代碼內(nèi)寫(xiě)回結(jié)果。
本發(fā)明還提供一種用于這種解碼的控制和用于提供上面所示的這種方法步驟的計(jì)算機(jī)程序單元和產(chǎn)品。


在下文中僅僅以舉例的方式參照附圖進(jìn)一步描述本發(fā)明,其中圖1包括舉例說(shuō)明根據(jù)本發(fā)明實(shí)施例的程序可執(zhí)行映像的產(chǎn)生的示意性框圖;圖2是舉例說(shuō)明加載和再定位圖1的程序可執(zhí)行映像的示意性框圖。
具體實(shí)施例方式
正如將從本發(fā)明的上述定義認(rèn)識(shí)到的是,有利地操縱位洗牌操作以便相對(duì)于所述代碼的子部分實(shí)施洗牌操作,其中所述子部分優(yōu)選地包括高速緩存尺寸塊。例如,供TriMedia處理之用,特別是TriMedia1300,所述代碼能夠按64字節(jié)的塊的形式被分解為指令高速緩存尺寸塊。
通過(guò)采用本發(fā)明,人們發(fā)現(xiàn)可執(zhí)行映像中的75-80%數(shù)量的高速緩存尺寸塊需要在運(yùn)行期打補(bǔ)丁和位洗牌。正如將認(rèn)識(shí)到的是,這留下20-25%未打補(bǔ)丁的,從而正如本發(fā)明確定的那樣,能夠在運(yùn)行期之前被位洗牌,特別是當(dāng)程序正在被鏈接以形成可執(zhí)行映像時(shí)。
由此,注意這種未打補(bǔ)丁的64個(gè)字節(jié)塊的預(yù)洗牌優(yōu)選地用于按通常經(jīng)驗(yàn)經(jīng)減少運(yùn)行期洗牌開(kāi)銷(xiāo)的20-25%,從而導(dǎo)致可執(zhí)行加載和再定位時(shí)間方面的優(yōu)勢(shì)增加。
注意本發(fā)明優(yōu)選地在運(yùn)行期之前并且在程序正在被鏈接時(shí)提供位洗牌。因此,在鏈接時(shí),鏈接器優(yōu)選地被設(shè)置成產(chǎn)生用于在運(yùn)行期加載和再定位可執(zhí)行代碼的再定位補(bǔ)丁表。
在這種鏈接的末尾,鏈接器被設(shè)置成檢查再定位補(bǔ)丁表以確定文本片段中的哪一個(gè)地址接著被打補(bǔ)丁。通過(guò)標(biāo)識(shí)這種已打補(bǔ)丁的片段,很容易識(shí)別出64字節(jié)塊中的哪一塊需要在運(yùn)行期被打補(bǔ)丁和洗牌。
不受打補(bǔ)丁影響的64字節(jié)的塊接著在鏈接時(shí)被預(yù)洗牌,哪些塊將在運(yùn)行期被打補(bǔ)丁和洗牌的記錄是由鏈接器按位圖的形式產(chǎn)生的,這有利于被添加到可執(zhí)行映像。
這種位圖可以?xún)?yōu)選地按表示可執(zhí)行文本片段中的64字節(jié)塊的每一單個(gè)位排列。位圖中的每一位接著充當(dāng)對(duì)于加載器來(lái)說(shuō)容易識(shí)別是否位洗牌與它相關(guān)聯(lián)的特定的64字節(jié)塊的標(biāo)志。由此,位圖中的第N位表示可執(zhí)行文本片段中的第N個(gè)64字節(jié)塊。
因此,對(duì)于N字節(jié)的可執(zhí)行文本片段,需要位圖中的(N+63)/64位。利用8位的字節(jié),這僅僅將(N+63)/512添加到整個(gè)可執(zhí)行代碼。
現(xiàn)在轉(zhuǎn)向圖1,以示意性塊的形式舉例說(shuō)明了根據(jù)本發(fā)明的用于產(chǎn)生具有預(yù)洗牌部分代碼的程序可執(zhí)行映像的設(shè)備。
圖1中舉例說(shuō)明的設(shè)備10包括程序鏈接器12,其被設(shè)置成讀取對(duì)象文件14A、14B以便將所述對(duì)象鏈接在一起并由此形成所需的程序可執(zhí)行映像。
根據(jù)這個(gè)舉例說(shuō)明的本發(fā)明的實(shí)施例,并且在鏈接過(guò)程期間,在鏈接器12內(nèi)形成將被打補(bǔ)丁的文本片段的地址的表16并且接著利用文本片段預(yù)洗牌器20通過(guò)參考文本片段補(bǔ)丁地址18的表16來(lái)對(duì)在運(yùn)行期不需要打補(bǔ)丁的文本片段的64字節(jié)塊進(jìn)行預(yù)洗牌。
當(dāng)結(jié)束這個(gè)過(guò)程時(shí),可執(zhí)行代碼22能夠繼而沿箭頭B的方向被讀出并且例如包含a.out或ELF首部的可執(zhí)行首部24、指示文本片段的哪一個(gè)64字節(jié)塊仍需要在運(yùn)行期洗牌的洗牌位圖26、設(shè)置成能在運(yùn)行期打補(bǔ)丁文本和數(shù)據(jù)段的再定位補(bǔ)丁表28、文本和數(shù)據(jù)片段30,32以及BSS片段34。
現(xiàn)在轉(zhuǎn)向圖2,將會(huì)認(rèn)識(shí)到如何有利地根據(jù)需要加載圖1中舉例說(shuō)明的可執(zhí)行代碼22。
如上所述,所述可執(zhí)行代碼22包括相同的片段,尤其是洗牌位圖26,標(biāo)識(shí)再定位補(bǔ)丁表28以及文本片段30以便于引用。
TriMedia可執(zhí)行文本片段的加載和再定位按如下進(jìn)行。
程序加載器36被設(shè)置用于按箭頭B和C所示的那樣從可執(zhí)行映像22中讀取再定位補(bǔ)丁表和洗牌位圖以及可執(zhí)行文本代碼并且用來(lái)按箭頭D所示的那樣再定位圖像以及將此作為再定位后的文本片段30寫(xiě)回。
程序加載器36接著按箭頭A指示的那樣逐位讀取洗牌位圖,并且這確定是否文本片段的每一個(gè)64字節(jié)塊都需要被程序加載器36內(nèi)的文本片段洗牌器38洗牌。如果識(shí)別出正在考慮的片段需要洗牌,則文本片段洗牌器38能夠按箭頭C所示的從文本片段中讀取64字節(jié)塊然后對(duì)它進(jìn)行洗牌,并按箭頭D所示的將其寫(xiě)回。
正如將會(huì)認(rèn)識(shí)到的是,本發(fā)明帶來(lái)的優(yōu)點(diǎn)是可適用于供運(yùn)行期操作系統(tǒng)內(nèi)所需的任何可執(zhí)行代碼(諸如必須在執(zhí)行之前加載和再定位的TriMedia可執(zhí)行代碼)使用。
本發(fā)明不僅應(yīng)用于程序可執(zhí)行代碼而且還應(yīng)用于可運(yùn)行庫(kù),比如TriMedia動(dòng)態(tài)鏈接庫(kù)(DLL)。
正如將認(rèn)識(shí)到的是,程序和庫(kù)的加載通常是由例如pSOS實(shí)時(shí)操作系統(tǒng)中的加載器庫(kù)擔(dān)任的,或者是由諸如在UNIK類(lèi)操作系統(tǒng)(比如,Linux)或?qū)崟r(shí)操作系統(tǒng)的整體內(nèi)核中的二進(jìn)制加載器函數(shù)擔(dān)任的。因此,將會(huì)認(rèn)識(shí)到的是,本發(fā)明的尤其有利的使用就是與必須加載和再定位TriMedia可執(zhí)行代碼的操作系統(tǒng)一起使用。
本發(fā)明不局限于上述實(shí)施例的細(xì)節(jié)。具體來(lái)講,所述原理不局限于與運(yùn)行期操作系統(tǒng)一起使用而是同樣地例如適用于預(yù)洗牌的二進(jìn)制的處理階段,比如在稍后鏈接時(shí)段期間列出預(yù)洗牌的二進(jìn)制目標(biāo)代碼。
權(quán)利要求
1.一種用于解碼包括位洗牌代碼的處理器系統(tǒng)中的可執(zhí)行代碼的方法,并且包括下列步驟-將代碼劃分成多個(gè)子部分;-標(biāo)識(shí)能夠在處理之前被位洗牌的代碼的子部分;以及-在處理之前對(duì)所述標(biāo)識(shí)的子部分進(jìn)行位洗牌以便減少所需的處理位洗牌。
2.根據(jù)權(quán)利要求1所述的方法,其中所述系統(tǒng)包括運(yùn)行期操作系統(tǒng),并且所述已標(biāo)識(shí)的子部分在運(yùn)行期之前被位洗牌。
3.根據(jù)權(quán)利要求2所述的方法,并且包括下列步驟,在鏈接時(shí)產(chǎn)生用于加載和再定位代碼的再定位補(bǔ)丁表。
4.根據(jù)權(quán)利要求3所述的方法,并且包括下列步驟,在上述鏈接的末尾檢查再定位補(bǔ)丁表以便確定代碼中的哪一個(gè)地址被打補(bǔ)丁。
5.根據(jù)權(quán)利要求2、3或4所述的方法,其中所述已標(biāo)識(shí)的子部分在鏈接時(shí)被位洗牌。
6.根據(jù)權(quán)利要求2-5中任何一項(xiàng)或多項(xiàng)所述的方法,并且包括下列步驟產(chǎn)生將在運(yùn)行期按位圖的形式打補(bǔ)丁和洗牌的子部分的記錄。
7.根據(jù)權(quán)利要求6所述的方法,并且包括下列步驟將所述位圖添加到可執(zhí)行代碼。
8.根據(jù)權(quán)利要求2-7中任何一項(xiàng)或多項(xiàng)所述的方法,并且包括下列步驟標(biāo)識(shí)不需要在運(yùn)行期打補(bǔ)丁的代碼的子部分以便標(biāo)識(shí)預(yù)洗牌的子部分。
9.根據(jù)權(quán)利要求2-8中任何一項(xiàng)或多項(xiàng)所述的方法,并且包括下列步驟讀取程序加載器內(nèi)的代碼元素以執(zhí)行程序。
10.根據(jù)權(quán)利要求9所述的方法,其中程序加載器被設(shè)置成讀取再定位補(bǔ)丁表和可執(zhí)行代碼并且在可執(zhí)行代碼內(nèi)寫(xiě)回結(jié)果。
11.根據(jù)權(quán)利要求2-10中任何一項(xiàng)或多項(xiàng)所述的方法,其中所述可執(zhí)行代碼包括具有包含TriMedia可執(zhí)行代碼的文本片段的TriMedia程序。
12.根據(jù)權(quán)利要求2-11中任何一項(xiàng)或多項(xiàng)所述的方法,其中代碼的每一個(gè)子部分包括高速緩存尺寸塊。
13.根據(jù)權(quán)利要求12所述的方法,其中每一個(gè)高速緩存尺寸塊包括64字節(jié)的塊。
14.根據(jù)權(quán)利要求2-13中任何一項(xiàng)或多項(xiàng)所述的方法,用于需要在執(zhí)行之前加載和再定位的任何形式的TriMedia可執(zhí)行映像。
15.根據(jù)權(quán)利要求1所述的方法,并且包括在稍后鏈接時(shí)段期間的預(yù)洗牌代碼的鏈接。
16.用于解碼處理器中的可執(zhí)行代碼并且包括用于位洗牌代碼的裝置的解碼設(shè)備,所述設(shè)備還包括-用于將代碼劃分成多個(gè)子部分的裝置;-標(biāo)識(shí)能夠在處理之前被位洗牌的代碼的子部分的裝置;和-在處理之前對(duì)所述標(biāo)識(shí)子部分進(jìn)行位洗牌以便減少所需的處理位洗牌的裝置。
17.根據(jù)權(quán)利要求16所述的設(shè)備,其中所述系統(tǒng)包括運(yùn)行期操作系統(tǒng),并且已標(biāo)識(shí)的子部分是那些能夠在運(yùn)行期之前被位洗牌的子部分。
18.根據(jù)權(quán)利要求17所述的設(shè)備,并且包括用于在鏈接時(shí)產(chǎn)生用于加載和再定位代碼的再定位補(bǔ)丁表的裝置。
19.根據(jù)權(quán)利要求17或18所述的設(shè)備,并且包括用于在鏈接時(shí)位洗牌已標(biāo)識(shí)的子部分的裝置。
20.根據(jù)權(quán)利要求17、18或19所述的設(shè)備,并且包括用于產(chǎn)生將在運(yùn)行期按位圖的形式打補(bǔ)丁和洗牌的子部分的記錄的裝置。
21.根據(jù)權(quán)利要求17、18、19或20所述的設(shè)備,并且包括代碼元素被讀取到其中以供程序執(zhí)行的程序加載器。
22.根據(jù)權(quán)利要求21所述的設(shè)備,其中程序加載器被設(shè)置成讀取再定位補(bǔ)丁表和可執(zhí)行代碼并且在可執(zhí)行代碼內(nèi)寫(xiě)回結(jié)果。
23.根據(jù)權(quán)利要求17所述的設(shè)備,其中代碼的每一個(gè)子部分包括高速緩存尺寸塊。
24.根據(jù)權(quán)利要求17所述的設(shè)備,其中每一個(gè)高速緩存尺寸塊包括64字節(jié)的塊。
25.根據(jù)權(quán)利要求16所述的設(shè)備,并且被設(shè)置用于在稍后鏈接時(shí)間段期間鏈接預(yù)洗牌代碼。
26.一種包括計(jì)算機(jī)程序代碼裝置的計(jì)算機(jī)程序單元,所述計(jì)算機(jī)程序代碼裝置令計(jì)算機(jī)執(zhí)行解碼包括位洗牌代碼的處理器中的可執(zhí)行代碼的過(guò)程,并且用于-將代碼劃分成多個(gè)子部分;-標(biāo)識(shí)能夠在處理之前被位洗牌的代碼的子部分;以及-在處理之前對(duì)所述標(biāo)識(shí)的子部分進(jìn)行位洗牌以便減少所需的處理位洗牌。
27.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)程序單元,并且被設(shè)置成控制運(yùn)行期操作系統(tǒng)中的解碼。
28.根據(jù)權(quán)利要求26所述的計(jì)算機(jī)程序單元,并且被設(shè)置成控制在稍后鏈接時(shí)間段期間的預(yù)洗牌代碼的鏈接。
29.一種包括計(jì)算機(jī)可讀介質(zhì)并且包括如權(quán)利要求26、27或28所述的程序單元的計(jì)算機(jī)程序產(chǎn)品。
30.一種包括如權(quán)利要求26、27或28所述的計(jì)算機(jī)程序單元的計(jì)算機(jī)可讀介質(zhì)。
全文摘要
本發(fā)明提供了一種用于解碼處理系統(tǒng)(例如,運(yùn)行期操作系統(tǒng))中的可執(zhí)行代碼(包括運(yùn)行期的位洗牌代碼)的方法和相關(guān)設(shè)備以及控制程序,并且包括下列步驟將代碼劃分成多個(gè)子部分,標(biāo)識(shí)能夠在所述運(yùn)行期之前被位洗牌的代碼的子部分并且在運(yùn)行期之前對(duì)所述已標(biāo)識(shí)的子部分進(jìn)行位洗牌以便減少在運(yùn)行期所需的位洗牌。
文檔編號(hào)G06F9/445GK1910551SQ200580002293
公開(kāi)日2007年2月7日 申請(qǐng)日期2005年1月11日 優(yōu)先權(quán)日2004年1月13日
發(fā)明者C·I·金 申請(qǐng)人:皇家飛利浦電子股份有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
牡丹江市| 普兰县| 丹巴县| 建昌县| 安泽县| 夹江县| 乳源| 垦利县| 金溪县| 蚌埠市| 兴山县| 鹤岗市| 嘉峪关市| 东兰县| 竹溪县| 新化县| 滁州市| 台北县| 宝兴县| 疏勒县| 安塞县| 景泰县| 岳阳县| 宿州市| 荥阳市| 克山县| 涡阳县| 紫金县| 祁连县| 长岭县| 通渭县| 鹤庆县| 开阳县| 阿勒泰市| 湖南省| 嘉定区| 通海县| 宜兴市| 德惠市| 舞钢市| 仁化县|