国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于動態(tài)二進制翻譯的硬件支持Profile技術(shù)

2010-07-25 08:44楊輝兵管海兵梁阿磊
微型電腦應(yīng)用 2010年5期
關(guān)鍵詞:體系結(jié)構(gòu)計數(shù)器寄存器

楊輝兵,管海兵,梁阿磊

0 引言

傳統(tǒng)上,軟件開發(fā)者已經(jīng)使用profile(程序輪廓)給編譯過程提供反饋。在profile開銷和由于profile而自然增加的穩(wěn)定狀態(tài)下的性能獲益之間,存在一個重要的性能權(quán)衡。Profile開銷由兩部分組成,一是為了放置程序分析探針而需要開始分析程序結(jié)構(gòu)的時間,二是實際收集profile數(shù)據(jù)的時間。獲益是由于更好的優(yōu)化代碼而減少的執(zhí)行時間[1]。

由于程序的動態(tài)行為對程序性能的影響是巨大的,同時動態(tài)行為又顯著地受到了輸入模式的影響,而靜態(tài)分析是無法預(yù)知程序的動態(tài)輸入模式的,因此有必要對靜態(tài)編譯生成的二進制代碼在程序的運行時刻,根據(jù)程序的動態(tài)輸入模式及相關(guān)的動態(tài)行為進行進一步的優(yōu)化,從而提高程序的運行效率[2]。

動態(tài)優(yōu)化技術(shù)是在應(yīng)用程序的運行時刻對程序的信息進行統(tǒng)計和分析,并對程序的關(guān)鍵段進行必要的優(yōu)化,從而提高程序的性能。由于在動態(tài)時刻對程序進行統(tǒng)計、分析、優(yōu)化等都要耗費時間,所以動態(tài)優(yōu)化必須及時發(fā)現(xiàn)程序的關(guān)鍵段,并采用快速而高效的分析、優(yōu)化方式,以得到理想的優(yōu)化效果[3]。現(xiàn)在大多數(shù)虛擬機的動態(tài)優(yōu)化技術(shù)是用純軟件的方式實現(xiàn)的,只有少數(shù)的系統(tǒng)級的虛擬機可能使用硬件來實現(xiàn) profiling(可譯為”剖分”)技術(shù),如 BOA[3]。

1 研究的背景

在軟硬件協(xié)同設(shè)計的虛擬機方面,研究的還不多,起步較晚,直到最近十幾年,隨著虛擬機的廣泛應(yīng)用和發(fā)展,企業(yè)界和學(xué)術(shù)界才開始對硬件支持的虛擬化技術(shù)做深入研究。正如IBM公司W(wǎng)atson實驗室的Leendertvan Doorn在2006年的ACM Virtual Execution Environment 大會上指出[6],硬件支持的虛擬化技術(shù)已經(jīng)成為一種趨勢。2008年召開的國際計算機體系結(jié)構(gòu)會議(ISCA),專門為虛擬機的核心技術(shù)-動態(tài)二進制翻譯設(shè)立了一個Workshop[7],其三大主題分別為:翻譯和代碼發(fā)現(xiàn)的硬件支持;優(yōu)化的硬件支持;運行時管理的硬件支持??梢?,硬件支持的虛擬化技術(shù)已經(jīng)受到學(xué)術(shù)界越來越多的關(guān)注。最著名的軟硬件協(xié)同設(shè)計虛擬機有IBM公司的DAISY[5], Intel公 司 的 VT(Virtualization Technology)[8]和Transmeta 公司的Crusoe處理器系統(tǒng)[9] [10]。

基于軟硬件協(xié)同方法的虛擬機設(shè)計,結(jié)合軟硬件協(xié)同設(shè)計和虛擬機技術(shù),通過在原有的處理器芯片上增加虛擬機協(xié)處理器,軟件和硬件的緊密耦合來實現(xiàn)進程虛擬機。軟硬件協(xié)同設(shè)計改變了傳統(tǒng)基于純軟件的虛擬機的結(jié)構(gòu)和各單元分工,充分發(fā)揮軟件和硬件各自的優(yōu)點,用硬件加速來緩解虛擬機的性能瓶頸,從而達到整體系統(tǒng)的更好的性能。相比純軟件實現(xiàn)的虛擬機性能有顯著的提高,并提高對用戶透明性。

在動態(tài)二進制翻譯系統(tǒng)中,動態(tài)優(yōu)化對提升系統(tǒng)整體性能是至關(guān)重要的。如果在動態(tài)優(yōu)化系統(tǒng)中得到硬件的支持,系統(tǒng)的整體性能將顯著的提高。本文針對動態(tài)二進制翻譯中的優(yōu)化階段,使用硬件支持的 profiling技術(shù)取代純軟件的profiling技術(shù)來降低整個系統(tǒng)的開銷,從而提高動態(tài)二進制翻譯的整體性能。該課題的研究目標(biāo)是基于自主開發(fā)的進程虛擬機 CrossBit[4],采用硬件支持的 profiling技術(shù)來降低CrossBit系統(tǒng)的開銷,從而提高系統(tǒng)的整體性能。

2 總體設(shè)計

在通過調(diào)研國內(nèi)外關(guān)于硬件支持 Profiling系統(tǒng)的基礎(chǔ)上,本文結(jié)合動態(tài)二進制翻譯技術(shù)進行了創(chuàng)新設(shè)計,使得我們的Profiling系統(tǒng)導(dǎo)致的開銷非常小,并且保證了收集到得Profile信息的準(zhǔn)確性。同時,我們的系統(tǒng)與傳統(tǒng)的基于Instrumentation的硬件支持的Profiling系統(tǒng)相比更具有通用性。這樣的基于Instrumentation的方法可以方便的移植到其他的動態(tài)二進制翻譯系統(tǒng)中去,同時也對以后的使用硬件來支持軟件監(jiān)視功能提供了一個基礎(chǔ)平臺的作用。

2.1 基于CrossBit的硬件支持Profiling系統(tǒng)的流程

基于 CrossBit的硬件支持 Profiling系統(tǒng)的流程如圖 1所示:

圖 1 基于CrossBit的硬件支持Profiling系統(tǒng)的流程

2.2 總體流程

在圖1中,位于系統(tǒng)總線的左邊是一個Profiling系統(tǒng)的軟件部分,右邊是Profiling系統(tǒng)的硬件部分,通過該總線進行交互。接下來的是對圖1的一個流程的具體步驟描述。

具體的步驟為:

1)加載MIPS體系結(jié)構(gòu)的可執(zhí)行程序到CrossBit的進程空間里,獲得此可執(zhí)行程序的入口地址。然后,以基本塊為單位劃分程序,一個基本塊通常以一條跳轉(zhuǎn)指令或系統(tǒng)調(diào)用指令所指向地址的指令為開始,以下一條跳轉(zhuǎn)指令為結(jié)束。完成基本塊的劃分之后,在每個基本塊中插入一條目標(biāo)體系結(jié)構(gòu)的存儲指令。其中,源寄存器域的值為裝載每個基本塊首地址源體系結(jié)構(gòu)程序計數(shù)器值的本地寄存器號,地址寄存器域的值為裝載有緩沖區(qū)模塊首地址值的寄存器號,偏移量的值為零。具體在基本塊的什么位置插入儲存指令是由CrossBit在獲得了裝載有基本塊的首地址源體系結(jié)構(gòu)程序計數(shù)器值的寄存器號后確定的,此儲存指令插入到含有基本塊的首地址源體系結(jié)構(gòu)程序計數(shù)器值的寄存器號的指令之后的第一條指令位置處。此寄存器號通過CrossBit里的寄存器分配來滿足。

2)在CrossBit中,分配一塊內(nèi)存區(qū)域存放一個計數(shù)器映射表,計數(shù)器映射表如圖2所示,計數(shù)器映射表包含有源體系結(jié)構(gòu)程序計數(shù)器和傳統(tǒng)計數(shù)器兩項,源體系結(jié)構(gòu)程序計數(shù)器項是存放每個基本塊首地址源體系結(jié)構(gòu)程序計數(shù)器值的項,傳統(tǒng)計數(shù)器項存放的是計數(shù)器值。在翻譯基本塊之前,在 CrossBit中嵌入一小段匯編代碼序列來傳遞計數(shù)器映射表的首地址值,該段代碼只執(zhí)行一次,該小段匯編代碼的最后一條是目標(biāo)體系結(jié)構(gòu)的儲存指令,其中源寄存器域的值為計數(shù)器映射表的首地址。

圖2 計數(shù)器映射表

其中傳統(tǒng)計數(shù)器mt_baseaddr變量存放了計數(shù)器映射表的首地址值,F(xiàn)IFO_baseaddr變量存放了 FIFO緩沖區(qū)的首地址。這段嵌入?yún)R編代碼為:

通過 profiling模塊獲得此計數(shù)器映射表的首地址值,profiling模塊如圖3所示,profiling模塊第一次從緩沖區(qū)模塊取到的值就是計數(shù)器映射表的首地址,在profiling模塊內(nèi)保存此值到一個寄存器里,從而可以保證接下來的源體系結(jié)構(gòu)程序計數(shù)器值的查找操作。

3)當(dāng)程序執(zhí)行到插入的儲存指令時,此指令觸發(fā)緩沖區(qū)模塊,把每個基本塊的首地址源體系結(jié)構(gòu)程序計數(shù)器值存儲在緩沖區(qū)模塊中。profiling模塊從緩沖區(qū)模塊中取出此源體系結(jié)構(gòu)程序計數(shù)器值,存放在第一寄存器中,根據(jù)一個取每個源體系結(jié)構(gòu)程序計數(shù)器值的后16位的哈希函數(shù)值,加上計數(shù)器映射表首地址的值來查找計數(shù)器映射表中對應(yīng)的源體系結(jié)構(gòu)程序計數(shù)器值,是否與從緩沖區(qū)模塊中取到的源體系結(jié)構(gòu)程序計數(shù)器值相等;如果相等,則更新第二寄存器中值對應(yīng)的寄存器映射表中的計數(shù)器值;如果不相等,再比較第一寄存器和第二寄存器中的源體系結(jié)構(gòu)程序計數(shù)器值的后16位值,如果后16位值不相等,則沒有沖突發(fā)生,把此第一寄存器中的源體系結(jié)構(gòu)程序計數(shù)器值寫入計數(shù)器映射表的相應(yīng)表項中,并設(shè)置相應(yīng)計數(shù)器的值為1,如果比較的兩源體系結(jié)構(gòu)程序計數(shù)器值的后16位相等,則沖突發(fā)生,寫入到本地內(nèi)存中的下一個計數(shù)器值的后16位值不相等的內(nèi)存中。

圖3 專用Profiling硬件模塊

4)程序執(zhí)行過程中,當(dāng)一個基本塊的profile

信息收集完畢后,將計數(shù)器映射表中的對應(yīng)基本塊的計數(shù)器值和設(shè)定的閾值相比較,如果比閾值小,則跳到后面基本塊繼續(xù)執(zhí)行,如果變量超過閾值,則生成相應(yīng)的超級塊或路徑跟蹤,從而集中進行程序的動態(tài)優(yōu)化。

3 實驗方案和數(shù)據(jù)

評測依據(jù)是采用SPEC2000基準(zhǔn)測試程序。評測范疇主要針對兩個方面:

◆ Profiling的開銷分析

◆ 收集到的Profile信息的準(zhǔn)確性

試驗硬件平臺為 XILINX ML300開發(fā)板(VIRTEX-II Pro):

CPU:PowerPC405硬核,300MHz(無浮點運算單元)

內(nèi)存:256MB

磁盤:1GB的CF(CompactFlash)卡

其中,1GB的CF卡分為3個區(qū),分別是FAT16格式的100MB,500MB的LINUX根分區(qū)和400MB的SWAP分區(qū)。因為該開發(fā)板只有256MB的DDR內(nèi)存,對動態(tài)二進制翻譯器CrossBit來說,最少需要512MB的內(nèi)存才能跑起來。所以,定制操作系統(tǒng)內(nèi)核時,就需要把支持 SWAP分區(qū)的工程編譯進去。根文件系統(tǒng)制作的時候也需要把 swapon、swapoff等命令編譯進去。

軟件環(huán)境:

本試驗采用的測試程序為 SPEC CPU2000,SPEC CPU2000是SPEC組織推出的一套CPU子系統(tǒng)評估軟件。

操作系統(tǒng)內(nèi)核采用的是Linux-xlnx-2.6.26(專門針對此開發(fā)板的內(nèi)核)。

3.1 Profiling開銷分析

收集Profile信息后做的優(yōu)化能夠帶來整體性能的提升,同時自身也有一定的開銷,性能的提升減去開銷就是熱路徑優(yōu)化的最終效果。我們主要對Profiling系統(tǒng)的開銷和收集到得Profile信息的準(zhǔn)確性很關(guān)心。這一節(jié)主要對 SPEC 2000中整數(shù)測試,集中于gzip, mcf, parser, bzip, twolf, crafty進行測試,觀察最終的效果。由于CrossBit的PowerPC后端實現(xiàn)的還不是很完善,有些SPEC程序還跑不通,所以我們有針對性的選擇了其中的6個作為我們實驗的測試程序。而且它們的輸入集都是test input(因為CPU的頻率只有300MHz,如果跑reference input,需要很長的時間,由于內(nèi)存的限制,有的時候可能會出現(xiàn)內(nèi)存不夠的情況),結(jié)果見表1。

從表1可以看出,測試集合代表了6種不同類型的程序,涵蓋了大部分程序運行的特性。由此可見, 只有 bzip2的開銷大于3.0% ,可能是因為需要很大的內(nèi)存空間,而開發(fā)板只有256MB的內(nèi)存,其它的空間需要通過SWAP從CF卡中交換過來。這樣交換的時間久占據(jù)了很大部分,從而導(dǎo)致開銷不斷增大。如果采用512MB的內(nèi)存,那么由于更少的交換分區(qū)操作的原因Profiling系統(tǒng)的開銷可能還會更少。其它的SPEC程序都小于等于3.0%,平均也只有2.7%。這對于一般的Profiling系統(tǒng)是一個非常小的開銷。在這樣的開銷下,做Profiling系統(tǒng)是非常有應(yīng)用前景的。因為一般不做軟件Profiling的原因就是因為開銷太大。如果需要再進一步分析的話,需要跑通更多的SPEC程序來驗證開銷結(jié)果。

與用純軟件在CrossBit上的實現(xiàn)相比,使用軟硬件協(xié)同設(shè)計的Profiling系統(tǒng)開銷更小。但是,這樣的比較是在不用硬件平臺下進行的,一個是通用的PC機,而另一個是嵌入式開發(fā)板,比較的意義不大。但是,在我們的設(shè)計中可以在IP核內(nèi)對Profile信息進行更多的處理。這樣,對基于邊的和基于路徑跟蹤的Profiling系統(tǒng)就可以節(jié)省更多的開銷。這樣,就更具有可執(zhí)行性。

相比于吳佑峰和李永豐做的系統(tǒng)[11] 的開銷0.6%來說,本文開發(fā)的系統(tǒng)開銷是平均2.7%,都是一個非常小的開銷。但是,[11]中的系統(tǒng)需要修改IA32的體系結(jié)構(gòu),雖然加的指令不多,但是那樣就失去了通用性。而本文設(shè)計開發(fā)的系統(tǒng)具有通用性,可以很容易的移植到其他虛擬機系統(tǒng)中,只需要修改一些具體的體系結(jié)構(gòu)相關(guān)的設(shè)計。

表1 有硬件支持Profiling系統(tǒng)與原始無Profiling系統(tǒng)的開銷比較

3.2 Profiling的準(zhǔn)確性分析

Profiling的開銷來自翻譯過的基本塊中插入代碼的執(zhí)行。收集到的 Profile信息放在了一個計數(shù)器映射表中,可以通過打印出其中的 SPC值和計數(shù)值來對比使用純軟件獲得的Profile信息。與純軟件Profiling系統(tǒng)收集到的Profile信息進行比較可以有一個較直接的數(shù)據(jù)比較。在我們的硬件支持的Profiling系統(tǒng)中,通過在每個基本塊中插入一條目標(biāo)體系結(jié)構(gòu)存儲指令可以使收集到的 Profile信息準(zhǔn)確,因為只要程序正常執(zhí)行就可以保證每個基本塊都可以被記錄。但是計數(shù)器映射表的大小有限,從而使收集到的 Profile信息與理想收集到的信息有一些不一致。

通過對比,可以看到我們使用軟硬件協(xié)同設(shè)計獲得的Profile信息和使用純軟件獲得的Profile信息絕大部分一致。我們只需要在IP核中加入一些必要的寄存器,就可以完全傳遞形成超級塊或路徑 tracing的信息,而且全部可以在硬件IP核中實現(xiàn)。這樣,就可以節(jié)省更多的開銷。

4 結(jié)論

通過實驗,我們已經(jīng)收集到了準(zhǔn)確的 profile信息,并且是以非常低的開銷來收集 profile信息。從而,以此技術(shù)實現(xiàn)的有超級快的profiling系統(tǒng)可以獲得更好的性能。如果需要做更進一步的擴展,可以使用硬件實現(xiàn)怎么利用這些信息進行超級塊或路徑tracing的工作。

[1] Smith J E and Nair R.Virtual Machines: Versatile Platforms for Systems and Process, Morgan Kaufman, 2005.

[2] 胡坤,動態(tài)二進制翻譯中的熱路徑優(yōu)化[D] .上海交通大學(xué)工學(xué)碩士論文,2008.12.

[3] Altman E,Gschuind M.etc,BOA:The Architecture of a Binary Translation Processor, Technical Report RC2166S,T J Watson Research Center, 2000.

[4] 包云程,構(gòu)建基于動態(tài)二進制翻譯技術(shù)的進程虛擬機[D] .上海交通大學(xué)工學(xué)碩士論文,2006.12.

[5] Ebcioglu K,Altman E.DAISY:Dynamic Compilation for 100% Architectural Compatibility,Proc.of the 24th Int’l Symp.on Computer Architecture, pp.26-37, Jun. 1997.

[6] Leendertvan Doorn, Hardware Virtualization Trends,ACM VEE 2006.

[7] 1st Workshop on Architectural and Microarchitectural Support for Binary Translation,Held in conjunction with the 35th Int'l Symposium on Computer Architecture,2008.

[8] Rich Uhlig,Gil Neiger,Dion Rodgers,Intel virtualization technology,IEEE Comupter Volume:38,2005.

[9] Klaiber A.The Technology Behind Crusoe Processors,Transmeta Technical Brief,2000.

[10] Dehnert J C.et al. The Transmeta Code Morphing Software: Using Speculation, Recovery, and Adaptive Retranslation to Address Real-Life Challenges, Proc. of the 1st Int’l Symp. on Code Generation and Optimizations, pp.15-24, Mar.2003.

[11] Youfeng Wu,YongFong Lee.Hardware-Software Collaborative Techniques for Runtime Profiling and Phase Transition Detection, Journal of Computer Science and Technology,2005.

猜你喜歡
體系結(jié)構(gòu)計數(shù)器寄存器
采用虛擬計數(shù)器的電子式膜式燃氣表
STM32和51單片機寄存器映射原理異同分析
關(guān)于74LS90計數(shù)器的Multisim仿真分析
Lite寄存器模型的設(shè)計與實現(xiàn)
基于粒計算的武器裝備體系結(jié)構(gòu)超網(wǎng)絡(luò)模型
作戰(zhàn)體系結(jié)構(gòu)穩(wěn)定性突變分析
算盤是個“小氣鬼”
基于DODAF的裝備體系結(jié)構(gòu)設(shè)計
基于云計算的航天器控制系統(tǒng)自組織體系結(jié)構(gòu)
光電脈沖計數(shù)器的制作與性能優(yōu)化
隆昌县| 拉孜县| 布尔津县| 额尔古纳市| 安仁县| 都昌县| 赤城县| 罗田县| 曲麻莱县| 扶绥县| 囊谦县| 伊春市| 共和县| 军事| 平陆县| 阜新市| 德州市| 黑水县| 兴业县| 凤凰县| 将乐县| 栖霞市| 东丰县| 库伦旗| 诸暨市| 定兴县| 庄浪县| 进贤县| 斗六市| 红河县| 吴桥县| 惠东县| 北辰区| 休宁县| 西乡县| 建昌县| 宁海县| 新龙县| 五家渠市| 鹿泉市| 华亭县|