[發(fā)明專利]二進(jìn)制翻譯器中線程共享目標(biāo)本地碼緩存替換方法及系統(tǒng)有效
| 申請?zhí)枺?/td> | 200810247438.4 | 申請日: | 2008-12-31 |
| 公開(公告)號: | CN101482851A | 公開(公告)日: | 2009-07-15 |
| 發(fā)明(設(shè)計)人: | 張盈;武成崗 | 申請(專利權(quán))人: | 中國科學(xué)院計算技術(shù)研究所 |
| 主分類號: | G06F12/12 | 分類號: | G06F12/12;G06F9/45 |
| 代理公司: | 北京律誠同業(yè)知識產(chǎn)權(quán)代理有限公司 | 代理人: | 祁建國;梁 揮 |
| 地址: | 100080北京*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 二進(jìn)制 翻譯器 線程 共享 目標(biāo) 本地 緩存 替換 方法 系統(tǒng) | ||
技術(shù)領(lǐng)域
本發(fā)明涉及二進(jìn)制翻譯器,尤其涉及二進(jìn)制翻譯器中線程共享code?cache(目標(biāo)本地碼緩存)的替換方法及系統(tǒng)。?
背景技術(shù)
二進(jìn)制翻譯是解決軟件移植問題中的一種重要技術(shù),它可以將一種指令集體系結(jié)構(gòu)(ISA)上的可執(zhí)行程序翻譯到另一種指令集體系結(jié)構(gòu)的計算機(jī)上執(zhí)行,并且具備很高的執(zhí)行效率。二進(jìn)制翻譯現(xiàn)也經(jīng)常用來將一種ISA上的可執(zhí)行程序翻譯到同種ISA的較高版本上執(zhí)行,以在同一個系列的計算機(jī)中使用高檔次的機(jī)器高效地運(yùn)行低檔次機(jī)器上開發(fā)的軟件。特別是隨著虛擬機(jī)技術(shù)的普及,二進(jìn)制翻譯技術(shù)的重要性也越來越大,很多虛擬機(jī)軟件中都不同程度的運(yùn)用了二進(jìn)制翻譯技術(shù)以保障虛擬機(jī)的運(yùn)行效率。?
許多多線程應(yīng)用屬于大型應(yīng)用,由于二進(jìn)制翻譯過程會帶來一定程度的代碼膨脹,普通大小的code?cache已經(jīng)無法滿足多線程程序的需要,如果不限制code?cache的大小并采取一定的替換策略,將會造成內(nèi)存空間大量占用,由操作系統(tǒng)進(jìn)行虛存管理的過程將對虛擬機(jī)的性能產(chǎn)生極大的影響。所以針對多線程程序code?cache的管理策略進(jìn)行研究成為支持多線程程序以及提高程序性能的關(guān)鍵。?
針對多線程程序的code?cache管理主要有兩種方法:線程獨立和線程共享。線程獨立的code?cache實現(xiàn)較簡單,code?cache管理帶來的競爭相對較小,而且能帶來較好的程序局部性,但是線程獨立的code?cache卻會增大翻譯的開銷,因為即使不同的線程執(zhí)行同樣的x86代碼,由于每個線程的code?cache是獨立的,我們也需要重新翻譯并為每個線程生成本地碼。同樣它也會帶來更大的代碼膨脹。線程共享的cache管理則較容易將帶來線程間同步和競爭的開銷,這個開銷來源于分配本地碼空間,以及翻譯出來的本地碼達(dá)到cache容量的上限時需要清除本地碼所帶來的線程掛起的開銷。而且直觀的來看由于不同的線?程都同時使用了一塊code?cache,代碼的排列的局部性將會受到影響。但是線程共享的code?cache卻可以最大地減少翻譯的開銷。因為一個線程翻譯出來的本地碼也可以被另一個線程訪問到。這樣代碼膨脹率較線程獨立的code?cache小。?
那么選擇線程獨立還是線程共享的管理策略的關(guān)鍵還是取決于我們所翻譯的目標(biāo)應(yīng)用程序的特征。如果各個線程之間共享代碼的比例不高,那么采用線程獨立的code?cache就可以了,例如各種桌面應(yīng)用。如果各個線程之間共享代碼的比例較高,那么采用線程共享的code?cache較好。例如大型的Server應(yīng)用。?
對于Server類的應(yīng)用程序來說,線程共享的code?cache對性能尤為關(guān)鍵。因為這樣的程序往往基于multi-threaded的結(jié)構(gòu)。線程數(shù)目多,線程之間共享的比例較高。如果采用線程獨立的code?cache將會造成大量的性能下降。因此線程共享的code?cache替換算法將使二進(jìn)制翻譯器適應(yīng)大多數(shù)的大型多線程應(yīng)用。?
發(fā)明內(nèi)容
為了解決上述的技術(shù)問題,提供了二進(jìn)制翻譯器中線程共享code?cache的替換方法及系統(tǒng),其目的在于,針對多線程共享的code?cache,當(dāng)其容量達(dá)到上限的時候?qū)ζ溥M(jìn)行替換,并通過高效地管理本地碼的手段來提高翻譯多線程程序的性能,在保持線程并發(fā)的基礎(chǔ)上保證了較低的code?cache管理開銷,同時達(dá)到較低的失效率以及較高的代碼局部性。?
本發(fā)明提供了二進(jìn)制翻譯器中線程共享code?cache的替換方法,包括:?
步驟10,將本地碼空間劃分成N個相同大小的可替換單元和一個永不替換單元,N為自然數(shù);可替換單元用于進(jìn)行普通本地碼的分配以及實施替換策略,永不替換單元用來保存與線程同步相關(guān)的本地碼;?
步驟20,從當(dāng)前可替換單元中分配本地碼,直到當(dāng)前可替換單元的容量達(dá)到上限時再從下一個可替換單元開始分配本地碼;?
步驟30,當(dāng)本地碼空間達(dá)到容量的上限時,以可替換單元為單位按照先進(jìn)先出策略進(jìn)行本地碼替換。?
步驟10中,本地碼空間是二進(jìn)制翻譯器事先分配好的一段內(nèi)存空間。?
可替換單元中含有多個基本塊的本地碼。?
步驟20中,在可替換單元內(nèi)和可替換單元間都對每個基本塊進(jìn)行本地碼鏈接。?
步驟30中,在進(jìn)行本地碼替換時,將N個可替換單元組成循環(huán)鏈表,按照先進(jìn)先出的順序,每次替換一個可替換單元的本地碼。?
與線程同步相關(guān)的本地碼為含有系統(tǒng)調(diào)用或者同步指令的基本塊生成的本地碼。?
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國科學(xué)院計算技術(shù)研究所,未經(jīng)中國科學(xué)院計算技術(shù)研究所許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200810247438.4/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 在多線程處理器中用于高速線程間中斷的方法和設(shè)備
- 一種多線程系統(tǒng)中實現(xiàn)實時監(jiān)控各線程狀態(tài)的方法
- 移動終端系統(tǒng)線程池實現(xiàn)方法及裝置
- 一種基于策略模式的信號發(fā)生器多線程管理方法
- 多線程并發(fā)處理方法和多線程并發(fā)處理系統(tǒng)
- 分布式系統(tǒng)的線程管理方法和裝置
- 線程執(zhí)行方法、裝置、終端及存儲介質(zhì)
- 線程監(jiān)控方法、裝置、電子設(shè)備及計算機(jī)可讀存儲介質(zhì)
- 一種多核系統(tǒng)中多線程調(diào)度方法、裝置及設(shè)備
- 線程間通信方法、裝置、電子設(shè)備及存儲介質(zhì)





