孫光輝 王麗娟
摘要:在動態(tài)二進制翻譯系統(tǒng)的基本塊級,有三種優(yōu)化機會:死碼刪除、冗余加載/存儲刪除和內(nèi)存訪問優(yōu)化,這些優(yōu)化機會均可在譯碼階段發(fā)現(xiàn)。為此,提出了一種優(yōu)化機制,基于譯碼制導的動態(tài)翻譯技術,分為譯碼和翻譯兩階段工作,譯碼階段充分收集信息, 翻譯階段直接生成優(yōu)化后的代碼,從而提高AB(Architecture Bridge)系統(tǒng)的啟動和執(zhí)行速度。實驗結果表明,在X86體系結構下,該機制使得申威平臺上的SPEC CPU2000 INT測試套件的翻譯執(zhí)行時間平均縮短了 10%-20%。
關鍵詞:動態(tài)二進制翻譯;譯碼制導;動態(tài)優(yōu)化
中圖分類號:TP311 ? ?文獻標識碼:A
文章編號:1009-3044(2019)24-0256-02
開放科學(資源服務)標識碼(OSID):
Research on Decoding-directed Dynamic Binary Translation Optimization
SUN Guang-hui , WANG Li-juan
(College of Computer and Electrical Engineering, Hunan University of Arts and Science, Changde 415000, China)
Abstract: The basic block level in the dynamic binary translation system is mainly Dead code deleted, redundant load/store delete, access to optimize the three kinds of optimization opportunities, These optimization opportunities can be found in the decoding? phase. For this purpose, an instruction dynamic translation optimization mechanism based on decoding-directed is proposed, and the two phase operation mode is adopted, In the decoding? phase to collect information fully, in the translation phase directly to generate the target code optimization, so as to improve the speed of the AB system and the speed of implementation. Experimental analysis shows that the mechanism makes the SPEC architectfure CPU2000 INT X86 test set in the application platform to translate the execution time on average reduced by 10%-20%.
Key words: Dynamic binary translation; Decoding-directed; Dynamic optimization
1 引言
動態(tài)二進制翻譯技術用來解決軟件兼容性的問題,具有良好的平臺移植性,可以對不同體系之間的二進制程序動態(tài)地翻譯,大大減少軟件開發(fā)成本,擴大軟件應用范圍,在許多領域得到廣泛應用。然而,動態(tài)二進制翻譯依然存在一些問題,例如:翻譯速度慢、冗余碼擴展等。如何改進翻譯性能和更好地服務于軟件跨平臺遷移,已成為一個熱點研究領域。許多研究表明,基本塊之間的跳轉指令的處理是影響動態(tài)二進制翻譯系統(tǒng)性能的一個重要因素。對于不同的問題,提出不同的解決方案,例如:動態(tài)優(yōu)化方面,優(yōu)化重復寄存器存取指令和讀取操作以避免冗余負載/存儲器命令的生產(chǎn)等,譯碼階段指令的識別和存取,確定不會發(fā)生異常,可以大大減少冗余碼。
2 標志位信息識別
制導優(yōu)化技術通過擴展基本塊結構,完成譯碼階段的信息收集。在基本塊中,給每條指令添加MS標識,用來指示標志位是否有效,添加US標識,用來判斷是否使用標志位,添加IS標識,檢查寄存器信息,添加OS標識,輸出寄存器信息,以及ES是否觸發(fā)異常標識指令導致異常。
如圖1所示,在x86處理器中,這是一個用于存儲條件標志和控制標志的寄存器,0號位放置進位標志CF(Carry Flag)、2號位放置奇偶標志PF (Parity Flag)、4號位放置AF (Auxiliary Carry Flag)輔助進位標志、6號位放置零標志ZF (Zero Flag)、7號位放置符號標志SF (Sign Flag)、11號位放置溢出標志OF (Overflow Flag)、8號位放置陷阱標志TF (Trap Flag)、9號位放置中斷標志IF (Interrupt Flag)、10號位放置方向標志DF (Direction Flag)。譯碼階段,識別指令信息分兩個步驟,首先,統(tǒng)計指令是否影響標志位;其次,通過對統(tǒng)計結果進行分析,找出對標志位的操作有效的指令。
標志位信息收集算法流程如圖2所示:
使用上述算法,AB系統(tǒng)對標志位信息進行分析,統(tǒng)計出對修改標志位有效的操作指令,在翻譯模塊中,生成相應指令的目標碼。
3 異常信息識別
在x86體系結構中,正常情況下,處理器對寄存器的操作不會出錯。但是,在訪問內(nèi)存時,可能會出錯,例如:缺頁、內(nèi)存保護等。
在源處理器體系結構中,大多數(shù)異常都可以由硬件解決。但是,對AB系統(tǒng)而言,可以用軟件替代硬件過程,對異常進行處理由高級語言實現(xiàn)。在傳統(tǒng)的動態(tài)二進制翻譯系統(tǒng)中,訪存出現(xiàn)異常時,調(diào)用異常處理函數(shù)。通常將源處理器中的數(shù)據(jù)進行轉移,保存到目標機器中去,同時,對寄存器信息進行恢復,執(zhí)行異常處理函數(shù)。這個過程中會產(chǎn)生較多的目標代碼,這些代碼會被循環(huán)執(zhí)行,導致代碼執(zhí)行效率低下。在操作系統(tǒng)中,異常的發(fā)生通常是小概率事件,因此,如果能夠首先對異常情況進行識別,那么,在翻譯時就可以避開異常,不需要時時調(diào)用異常處理函數(shù),能夠大幅提升AB系統(tǒng)執(zhí)行效率。
4 測試與分析
實驗方案在Alpha處理器上進行測試,翻譯系統(tǒng)為優(yōu)化后的基于Alpha處理器的系統(tǒng)級動態(tài)二進制翻譯平臺,圖3表示運用優(yōu)化技術前后,加載操作系統(tǒng)時的代碼膨脹率對比,我們可以很明顯的發(fā)現(xiàn),經(jīng)過優(yōu)化后,代碼膨脹率有明顯下降。
使用優(yōu)化技術后,翻譯系統(tǒng)在加載不同操作系統(tǒng)所用的時間和原來用時的對比如表1所示,通過對比,我們可以發(fā)現(xiàn),優(yōu)化后的執(zhí)行速度提升了12%左右。
5 結語
本文通過對基本塊結構的擴充分析,提出了一種優(yōu)化機制,釆用譯碼制導技術對動態(tài)翻譯過程進行優(yōu)化,整個過程分譯碼和翻譯兩個階段,譯碼階段充分收集信息,翻譯階段直接生成優(yōu)化的代碼。在申威平臺上的測試結果表明,該優(yōu)化能有效提高翻譯過程執(zhí)行效率。
參考文獻:
[1] 李劍慧,馬湘寧,朱傳琪.動態(tài)二進制翻譯與優(yōu)化技術研究[J].計算機研究與發(fā)展,2007,44(1):161-168.
[2] 徐金龍,蔣烈輝,董衛(wèi)宇,等. 動態(tài)二進制翻譯緩存的分區(qū)管理機制研究[J]. 計算機工程,2012,38(2):60-62.
[3] 張龍龍. 動態(tài)二進制翻譯優(yōu)化技術研究[D].杭州:解放軍信息工程大學,2013.
[4] 董衛(wèi)宇,王瑞敏,戚旭衍,等. 譯碼制導的動態(tài)二進制翻譯優(yōu)化[J].計算機科學,2015,42(6):189-192.
[5] 包云程,梁阿磊,管海兵. 動態(tài)二進制翻譯基礎平臺crossbit的設計與實現(xiàn)[J].計算機工程,2007,33(23):100-101.
【通聯(lián)編輯:梁書】