• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于LLVM的多目標(biāo)高性能動(dòng)態(tài)二進(jìn)制翻譯框架

      2020-02-04 07:28石磊田娜康爍
      航空科學(xué)技術(shù) 2020年8期

      石磊 田娜 康爍

      摘要:動(dòng)態(tài)二進(jìn)制翻譯技術(shù)是構(gòu)造高性能異構(gòu)虛擬機(jī)的關(guān)鍵技術(shù),而代碼翻譯的質(zhì)量則是動(dòng)態(tài)二進(jìn)制翻譯性能的關(guān)鍵。本文實(shí)現(xiàn)了一種基于LLVM動(dòng)態(tài)二進(jìn)制翻譯框架,利用LLVM優(yōu)化技術(shù)以及多目標(biāo)編譯的特點(diǎn),實(shí)現(xiàn)了可以針對(duì)多個(gè)目標(biāo)體系結(jié)構(gòu)的高性能動(dòng)態(tài)二進(jìn)制翻譯。基于開源Skyeye實(shí)現(xiàn)了這種翻譯框架,并在兩種目標(biāo)體系結(jié)構(gòu)ARM和PowerPC上驗(yàn)證了框架的可移植性和運(yùn)行效率,與QEMU在ARM目標(biāo)平臺(tái)上做了性能對(duì)比,結(jié)果表明該模擬器比Qemu性能平均快10%以上。

      關(guān)鍵詞:動(dòng)態(tài)二進(jìn)制翻譯;異構(gòu)虛擬機(jī);翻譯性能;LLVM;多目標(biāo)編譯

      中圖分類號(hào):TP314文獻(xiàn)標(biāo)識(shí)碼:ADOI:10.19452/j.issn1007-5453.2020.08.012

      基金項(xiàng)目:航空科學(xué)基金(2017ZD12013)

      測(cè)試性驗(yàn)證是指“為確定裝備是否達(dá)到規(guī)定的測(cè)試性要求而進(jìn)行的試驗(yàn)與評(píng)價(jià)工作”。當(dāng)前絕大多數(shù)測(cè)試驗(yàn)證通過(guò)硬件來(lái)實(shí)現(xiàn),受制于硬件條件,在硬件平臺(tái)下基于目標(biāo)碼的異常、傷害性驗(yàn)證無(wú)法實(shí)現(xiàn),軟件測(cè)試的充分性無(wú)法保證。而基于目標(biāo)碼的虛擬測(cè)試驗(yàn)證則是建模仿真技術(shù)在測(cè)試性領(lǐng)域的一個(gè)具體應(yīng)用[1],已成為驗(yàn)證技術(shù)的重要發(fā)展方向之一,核心技術(shù)包括中央處理器(CPU)虛擬化、芯片虛擬化、接口虛擬化等,重點(diǎn)是CPU虛擬化,其實(shí)現(xiàn)目標(biāo)機(jī)與主機(jī)(PC)的即時(shí)翻譯,保證PC能夠正確識(shí)別與運(yùn)行目標(biāo)機(jī)的目標(biāo)碼程序。

      動(dòng)態(tài)二進(jìn)制翻譯技術(shù)是一種即時(shí)翻譯(JIT)技術(shù),是把某種指令體系結(jié)構(gòu)的二進(jìn)制代碼在運(yùn)行過(guò)程中翻譯成另外一種指令集體系結(jié)構(gòu)的技術(shù)[2]。目標(biāo)平臺(tái)與PC體系結(jié)構(gòu)相同,則為同構(gòu)二進(jìn)制翻譯器,一般有兩種用途:(1)實(shí)現(xiàn)熱點(diǎn)執(zhí)行路徑優(yōu)化,達(dá)到加速程序的目的,如Dynamo[3];(2)對(duì)程序執(zhí)行行為進(jìn)行剖析,達(dá)到確定程序性能瓶頸的目的,如 DynamoRIO,PIN,Valgrind等[4]。

      當(dāng)翻譯目標(biāo)指令集體系結(jié)構(gòu)不同于PC指令集體系結(jié)構(gòu),則為異構(gòu)二進(jìn)制翻譯器[5]。如谷歌的Android模擬器,使用Qemu二進(jìn)制翻譯技術(shù),把ARM體系結(jié)構(gòu)翻譯成PC指令集體系結(jié)構(gòu)(X86或者X86_64)[6],其他還包括FX!32[7]、UQDBT[8]和Walkabout[9]等??砂岩粋€(gè)特定硬件平臺(tái)的應(yīng)用移植到另外一個(gè)異構(gòu)的硬件平臺(tái),或者提供一個(gè)硬件平臺(tái)無(wú)關(guān)的虛擬運(yùn)行環(huán)境[10],或者利用多物理域仿真技術(shù)構(gòu)建仿真運(yùn)行環(huán)境[11]。

      彈載軟件大多數(shù)是嵌入式系統(tǒng),若要實(shí)現(xiàn)目標(biāo)碼的解釋與運(yùn)行,需構(gòu)建一個(gè)多目標(biāo)的異構(gòu)二進(jìn)制翻譯器,實(shí)現(xiàn)對(duì)多目標(biāo)架構(gòu)所有指令集的解釋翻譯。實(shí)踐表明,由于實(shí)現(xiàn)過(guò)程的高復(fù)雜性、通用性差,需要大量的時(shí)間、人力和優(yōu)化才有可能完成[12]。

      針對(duì)上述問題,利用LLVM[13]構(gòu)建一個(gè)多目標(biāo)高性能二進(jìn)制翻譯器Dyncom,目標(biāo)是利用LLVM的代碼優(yōu)化和生成完成二進(jìn)制翻譯過(guò)程中不同目標(biāo)架構(gòu)代碼的優(yōu)化以及生成本地指令等較為復(fù)雜又影響執(zhí)行性能的操作,實(shí)現(xiàn)多目標(biāo)、高性能翻譯的目的,生成高效的PC二進(jìn)制代碼。

      為了提高動(dòng)態(tài)翻譯執(zhí)行性能又降低實(shí)現(xiàn)的復(fù)雜性,Dyncom的代碼優(yōu)化基于LLVM中間語(yǔ)言實(shí)現(xiàn),其是一種硬件無(wú)關(guān)語(yǔ)言,通過(guò)優(yōu)化可用于所有不同目標(biāo)指令集體系結(jié)構(gòu)的翻譯,大幅減少對(duì)不同目標(biāo)指令架構(gòu)的優(yōu)化實(shí)現(xiàn)難度。主要有三個(gè)優(yōu)化:帶有一定閾值的混合執(zhí)行、基于蹤跡(trace)的超級(jí)塊構(gòu)造以及基于寄存器映射的冗余讀寫消除。

      1 Dyncom:設(shè)計(jì)和實(shí)現(xiàn)

      Dyncom以LLVM為基礎(chǔ),包含指令翻譯和通用框架,前者把目標(biāo)體系結(jié)構(gòu)的指令集逐條翻譯為L(zhǎng)LVM的中間語(yǔ)言,后者實(shí)現(xiàn)中間語(yǔ)言到PC指令的翻譯,總體體系結(jié)構(gòu)如圖1所示。

      1.1 LLVM模塊

      LLVM是一種類精簡(jiǎn)指令集架構(gòu)的低級(jí)語(yǔ)言,加入一些高級(jí)語(yǔ)言特性,如類型系統(tǒng)、矢量表示和矢量運(yùn)算等。借助類型,可對(duì)LLVM中間代碼進(jìn)行直接優(yōu)化,而這在只有二進(jìn)制信息的代碼上是無(wú)法做到的,類型可分為基本類型(整型、浮點(diǎn)型、Void類型和標(biāo)記類型等)和衍生類型(復(fù)合類型、Function類型和指針類型等)。Dyncom的中間語(yǔ)言為L(zhǎng)LVM的虛擬指令集,目的是降低開源項(xiàng)目風(fēng)險(xiǎn)、降低開發(fā)成本以及易于各種虛擬機(jī)的開發(fā)。

      LLVM中間語(yǔ)言指令有50條左右,包括二元、位、矢量、內(nèi)存和終止操作指令等。例如,終止指令用于改變程序的執(zhí)行流程,內(nèi)存指令完成復(fù)雜內(nèi)存操作,二元指令用于處理支持條件執(zhí)行的架構(gòu)指令集。

      1.2翻譯過(guò)程

      Dyncom指令翻譯使用LLVM的虛擬指令集實(shí)現(xiàn)目標(biāo)每一條指令翻譯,是一個(gè)目標(biāo)平臺(tái)指令到LLVM指令間地址的一對(duì)多變換過(guò)程,包含三個(gè)部分:寄存器獲取與條件執(zhí)行檢查、指令主體與條件標(biāo)志更新以及寄存器寫回。首先獲取寄存器結(jié)構(gòu)體指針,獲取到相應(yīng)通用寄存器/狀態(tài)寄存器值,對(duì)于ARM架構(gòu),通過(guò)檢查對(duì)應(yīng)狀態(tài)寄存器值決定是否執(zhí)行指令,通過(guò)指令主體完成操作映射,通過(guò)條件標(biāo)志更新完成通用寄存器值和PC更新,最后將其寫回到對(duì)應(yīng)結(jié)構(gòu)體中。

      ARM和SPARC(scalable processor ARChitecture)兩條指令翻譯過(guò)程示例見表1。

      指令翻譯以基本塊(basic block,BB)為粒度,使用bb表示將被分析的BB塊。第一行的SPARC指令不支持條件執(zhí)行,對(duì)add指令的翻譯按照一對(duì)多且不需要更新條件標(biāo)志的步驟實(shí)現(xiàn)。第二行的ARM指令包含條件執(zhí)行,在運(yùn)行時(shí)對(duì)相應(yīng)的標(biāo)志進(jìn)行判斷,變換時(shí),首先需要加載狀態(tài)寄存器值,根據(jù)判斷指令是否執(zhí)行,其次生成兩個(gè)bb塊:L2和L3,L2包含and指令的翻譯以及執(zhí)行后Z和N標(biāo)志位的更新,L3則是PC的更新,即無(wú)論and指令是否執(zhí)行,PC都會(huì)更新。

      指令翻譯是一個(gè)中間無(wú)跳轉(zhuǎn)指令的順序指令流,當(dāng)前端翻譯到函數(shù)調(diào)用、跳轉(zhuǎn)、返回指令時(shí),即從上一個(gè)bb塊結(jié)束后的第一條指令到該條指令為止劃分為一個(gè)基本塊,Dyncom則使用指令執(zhí)行蹤跡的方式將多個(gè)基本塊組成一個(gè)包含控制流的超級(jí)塊,其具體實(shí)現(xiàn)如圖2所示。

      整個(gè)翻譯過(guò)程被拆分成兩個(gè)部分,標(biāo)記(tag)和翻譯(translate),對(duì)代碼進(jìn)行兩次掃描,第一遍是預(yù)先分析代碼的性質(zhì),識(shí)別基本塊和超級(jí)塊,保存每一條目標(biāo)代碼指令的信息;第二遍對(duì)真正的掃描代碼進(jìn)行翻譯。經(jīng)過(guò)統(tǒng)計(jì),掃描代碼并打tag所占的時(shí)間是微乎其微的,會(huì)消耗一定量的內(nèi)存,但為真正的翻譯提供了必要的信息,簡(jiǎn)化了系統(tǒng)的復(fù)雜度,降低了開發(fā)難度和風(fēng)險(xiǎn)。翻譯完成后,將每個(gè)基本塊的地址作為哈希值記錄到哈希表中,該哈希表被稱為全局映射表,用于每個(gè)JIT執(zhí)行退出返回到Dyncom時(shí),查找下一個(gè)要執(zhí)行的bb塊所在的JIT入口地址。

      1.3執(zhí)行過(guò)程

      Dyncom采用混合執(zhí)行方式,先使用解釋模式執(zhí)行目標(biāo)指令的基本塊,對(duì)執(zhí)行過(guò)的目標(biāo)指令塊做統(tǒng)計(jì)。當(dāng)發(fā)現(xiàn)某個(gè)基本塊執(zhí)行到一個(gè)閾值,認(rèn)為該基本塊是一個(gè)熱點(diǎn),然后使用Dyncom進(jìn)行指令翻譯,其翻譯過(guò)程如上所述。指令繼續(xù)解釋執(zhí)行直到翻譯完成,并且執(zhí)行到當(dāng)前基本塊結(jié)束,下一個(gè)跳轉(zhuǎn)的基本塊位于JIT中,此時(shí)開始動(dòng)態(tài)執(zhí)行,該方法可有效利用解釋執(zhí)行時(shí)間掩蓋動(dòng)態(tài)翻譯的時(shí)間過(guò)載。

      JIT內(nèi)部執(zhí)行則需要依靠本地映射表的存在,用來(lái)解析基本塊的地址到本地代碼。本地映射表在JIT中為一個(gè)dispatch基本塊,其由一個(gè)大的switch指令構(gòu)成,類似于C語(yǔ)言的switch控制流。每次進(jìn)入JIT后,就會(huì)進(jìn)入該基本塊,dispatch根據(jù)PC的值確定在本地映射表中選擇需要執(zhí)行的基本塊地址并跳轉(zhuǎn)執(zhí)行,基本塊執(zhí)行完畢后再次回到dispatch塊,直到PC值不存在于本地映射表中,直接退出,將控制權(quán)交給Dyncom,通過(guò)全局映射表決定跳到下一個(gè)JIT執(zhí)行還是進(jìn)行翻譯操作。至此,目標(biāo)二進(jìn)制程序不斷被動(dòng)態(tài)翻譯并執(zhí)行。

      1.4目標(biāo)架構(gòu)ARM和PowerPC

      選擇軍工領(lǐng)域常用的ARM和PowerPC架構(gòu),用于驗(yàn)證動(dòng)態(tài)二進(jìn)制翻譯框架對(duì)多目標(biāo)架構(gòu)的支持。通過(guò)Dyncom能夠較為容易地把ARM指令或者PowerPC指令的應(yīng)用程序翻譯為中間語(yǔ)言,而從中間語(yǔ)言翻譯到PC指令(X86或者X86_ 64)則由LLVM的后端完成。同理,如果需要支持更多目標(biāo)體系結(jié)構(gòu),只需要把該目標(biāo)體系結(jié)構(gòu)的指令利用Dyncom翻譯為L(zhǎng)LVM的中間指令即可,本方案可以實(shí)現(xiàn)動(dòng)態(tài)二進(jìn)制翻譯框架對(duì)多目標(biāo)翻譯的支持,具有良好的通用性。

      2運(yùn)行時(shí)優(yōu)化

      2.1 JIT跳轉(zhuǎn)優(yōu)化

      Dyncom動(dòng)態(tài)翻譯執(zhí)行的粒度是逐塊(block-by-block)方式,每執(zhí)行完一個(gè)基本塊,就回到基本塊,通過(guò)本地映射表確定下一個(gè)跳轉(zhuǎn)塊,JIT中基本塊沒有控制流,而是構(gòu)成了一個(gè)基本塊同其他所有基本塊組成的一個(gè)樹狀結(jié)構(gòu)。LLVM對(duì)這種情況的優(yōu)化程度有限,因此,本文對(duì)跳轉(zhuǎn)類型分類,對(duì)能夠在JIT內(nèi)跳轉(zhuǎn)的情況不再調(diào)度,減少本地映射表中存儲(chǔ)地址的數(shù)量。

      Dyncom的分支類型有兩類:直接分支是在JIT編譯時(shí)目的地址已知的分支,間接分支是在JIT編譯時(shí)未知目的地址的分支。當(dāng)翻譯到一個(gè)分支時(shí),會(huì)有以下情況:

      (1)直接分支

      若目標(biāo)分支不在JIT區(qū)域內(nèi),直接返回,由全局映射表決定執(zhí)行步驟。

      (2)直接分支

      若目標(biāo)分支在JIT區(qū)域內(nèi),直接跳轉(zhuǎn)到目標(biāo)基本塊,不再調(diào)度,從本地映射表中刪除目標(biāo)項(xiàng)。

      (3)間接分支

      直接跳轉(zhuǎn)到基本塊處理。

      經(jīng)過(guò)跳轉(zhuǎn)分類處理后JIT內(nèi)部能夠?qū)Ψ种D(zhuǎn)情況形成控制流,獲取更多信息,分析發(fā)現(xiàn),優(yōu)化跳轉(zhuǎn)后JIT代碼體積明顯變小,性能有一定提升。

      2.2全局寄存器映射

      雖然LLVM中間表示(IR)提供了無(wú)窮虛擬寄存器,但其是靜態(tài)單一賦值(SSA)形式,且目標(biāo)架構(gòu)的寄存器運(yùn)行時(shí)狀態(tài)值會(huì)一直變化,很難維護(hù)運(yùn)行時(shí)狀態(tài),因此不能把每個(gè)目標(biāo)架構(gòu)的寄存器都匹配到一個(gè)LLVM寄存器。Dyncom通過(guò)指針將寄存器結(jié)構(gòu)體傳入JIT,每次獲取寄存器值時(shí),首先獲取相應(yīng)寄存器對(duì)應(yīng)的地址,再通過(guò)加載指令獲取到對(duì)應(yīng)的值。分析發(fā)現(xiàn),生成的IR中包含大量的地址計(jì)算,屬于冗余指令。

      使用LLVM的alloca指令實(shí)現(xiàn)JIT基本的寄存器的映射,用于在程序棧上分配空間給局部變量,一般用于處理函數(shù)參數(shù)。在JIT的entry基本塊,首先獲取所有寄存器對(duì)應(yīng)的地址,其次使用alloca指令分配??臻g并將寄存器地址存入后,再次讀取該棧空間的值,后續(xù)使用時(shí),直接通過(guò)load指令讀取該地址的值即可,該優(yōu)化可減少每次獲取寄存器值時(shí)需要的地址計(jì)算,且只在entry基本塊中存儲(chǔ)和加載。

      2.3基本塊粒度冗余指令消除

      經(jīng)過(guò)全局映射優(yōu)化處理后的JIT,雖然地址計(jì)算大大減少,但在基本塊中,對(duì)于寄存器狀態(tài)的處理過(guò)程一般為在基本塊起始位置讀入寄存器到內(nèi)存的臨時(shí)變量中,然后對(duì)其進(jìn)行操作,在基本塊運(yùn)行結(jié)束之前再將對(duì)應(yīng)臨時(shí)變量的值寫回到原有寄存器,而且指令與指令操作數(shù)之間原有的依賴導(dǎo)致通過(guò)LLVM原有的優(yōu)化策略無(wú)法消除由于SSA形式產(chǎn)生冗余指令的情況。

      本文是針對(duì)單一執(zhí)行流的基本塊進(jìn)行冗余指令的優(yōu)化,更大范圍的交由LLVM處理。翻譯過(guò)程中,為每個(gè)基本塊建立一個(gè)LLVM虛擬寄存器到目標(biāo)寄存器的映射表,每次加載寄存器之前,先掃描映射表,若表中沒有,則加載,并存入到表中,若存在,則直接使用。寫回寄存器之前,同樣掃描映射表,若表中沒有,則存入;否則,更新表中存在的值。當(dāng)基本塊翻譯結(jié)束時(shí),將表中所有已標(biāo)記值寫回到對(duì)應(yīng)寄存器,同時(shí)清空映射表。該項(xiàng)優(yōu)化減少了大量包含依賴關(guān)系的load/store指令,性能提升較大。

      3試驗(yàn)以及評(píng)估

      為評(píng)估Dyncom的性能,進(jìn)行對(duì)比試驗(yàn),試驗(yàn)環(huán)境見表2。

      使用基于LLVM 2.8的Skyeye 1.3.4-rc1同QEMU 2.0.0進(jìn)行性能比對(duì)測(cè)試,測(cè)試用例為EEMBC的cjpeg1000,運(yùn)行結(jié)果以時(shí)間秒為單位,為了減少誤差,樣本運(yùn)行100次,并取平均值。運(yùn)行結(jié)果見表3,結(jié)果顯示,優(yōu)化后平均性能比QEMU高10%以上。

      4結(jié)論

      本文首先闡述了動(dòng)態(tài)二進(jìn)制翻譯的基本概念,說(shuō)明Dyncom使用LLVM作為動(dòng)態(tài)二進(jìn)制翻譯框架的原因。其次,分析Dyncom的實(shí)現(xiàn)框架和工作原理,詳述翻譯過(guò)程和執(zhí)行過(guò)程,并在LLVM IR層次實(shí)現(xiàn)跳轉(zhuǎn)優(yōu)化和基本塊粒度的冗余消除優(yōu)化,提升了性能。最后,通過(guò)與QEMU進(jìn)行對(duì)比,證明基于LLVM的Dyncom動(dòng)態(tài)翻譯的高性能,以及多目標(biāo)翻譯框架代碼的可實(shí)現(xiàn)性。

      相比于QEMU,Dyncom只關(guān)注目標(biāo)體系架構(gòu)到LLVM中間指令的翻譯過(guò)程,中間語(yǔ)言到PC體系架構(gòu)的指令翻譯由LLVM自動(dòng)完成。在最新的LLVM 10.0版本中,LLVM支持常用的ARM、PowerPC、X86、RiscV等不同的體系結(jié)構(gòu),幾乎不用做任何移植工作,即可把目標(biāo)體系架構(gòu)翻譯為L(zhǎng)LVM支持的數(shù)十種后端體系結(jié)構(gòu),但QEMU支持新的PC體系結(jié)構(gòu)則需要大量的手動(dòng)翻譯的編碼實(shí)現(xiàn),由此可見,Dyncom的可移植性遠(yuǎn)高于QEMU。

      Dyncom在冗余消除粒度上仍然過(guò)小,JIT中仍然有很多冗余指令,由于其操作數(shù)跨基本塊使用,導(dǎo)致無(wú)法對(duì)其進(jìn)行刪除,另外由于局部映射表對(duì)所有的基本塊都進(jìn)行了存儲(chǔ),也限制了處理能力,本文后續(xù)將從這兩點(diǎn)入手進(jìn)行優(yōu)化。

      參考文獻(xiàn)

      [1]張勇,邱靜,劉冠軍,等.面向測(cè)試性虛擬驗(yàn)證的功能-故障-行為-測(cè)試-環(huán)境一體化模型[J].航空學(xué)報(bào),2012,33(2):273-286. Zhang Yong, Qiu Jing, Liu Guanjun, et al.Integrated functionfault-behavior-test-environment model for virtual testability verfication[J]. Acta Aeronautica et Astroautica Sinica, 2012,33(2):273-286.(in Chinese)

      [2]Tom S,Harry W,Bj?rn F,et al. Efficient code generation in a region-based dynamic binary translator[C]// LCTES 14:Proceedings of the 2014 SIGPLAN/SIGBED Conference on Languages,Compilers and Tools for Embedded Systems. Edinburgh,United Kingdom,2014:3-12.

      [3]Hsu C C,Liu P,Wu J J,et al. Improving dynamic binary optimization through early-exit guided code region formation[C]// Proceedings of the 9th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments. New York,United States,2013:23-32.

      [4]Rodríguez R J,Artal J A,Merseguer J. Performance evaluation of dynamic binary instrumentation framework[J]. IEEE LatinAmerica Transactions,2014,12(8):1572-1580.

      [5]Hsu C C,Liu P,Wang C M,et al. Lnq:Building high performance dynamic binary translators with existing compiler backends[C]// 2011 International Conference on Parallel Processing. Taipei,Taiwan,2011:226-234.

      [6]Hsu C C,Hong D Y,Hsu W C,et al. A dynamic binary translation system in a client/server environment[J]. Journal of SystemsArchitecture,2015,61(7):307-319.

      [7]李劍慧,馬湘寧,朱傳琪.動(dòng)態(tài)二進(jìn)制翻譯與優(yōu)化技術(shù)研究[J].計(jì)算機(jī)研究與發(fā)展, 2007, 44(1): 161-168. Li Jianhui, Ma Xiangning, Zhu Chuanqi. Dynamic binary translation and optimization[J]. Journal of Computer Research and Development, 2007, 44(1): 161-168.(in Chinese)

      [8]Ung D,Cifuentes C. Dynamic binary translation using runtime feedbacks[J]. Science of Computer Programming,2006,60(2):189-204.

      [9]Cristina C,Brian L,David U. Walkabout:A retargetable dynamic binary translation framework[R]. Forth Workshop on Binary Translation. Virginia,United States,2002:1-30.

      [10]董衛(wèi)宇,劉金鑫,戚旭衍,等.基于熱例程的動(dòng)態(tài)二進(jìn)制翻譯優(yōu)化[J].計(jì)算機(jī)科學(xué), 2016 (5):27-41. Dong Weiyu, Liu Jinxin, Qi Xuyan, et al. Hot-routine based optimization of dynamic binary translation[J]. Computer Science, 2016 (5): 27-41.(in Chinese)

      [11]聶同攀.基于模型的機(jī)電系統(tǒng)多物理域仿真技術(shù)應(yīng)用研究[J].航空科學(xué)技術(shù), 2017(7):68-72. Nie Tongpan. The simulation technology application research ofmodel-basedelectromechanicalsystemsmuti-physical domain[J].Aeronautical Science & Technology,2017(7):68-72.(in Chinese)

      [12]陳頊顥,鄭重,沈立,等.二進(jìn)制翻譯中代碼生成的子圖覆蓋算法[J].計(jì)算機(jī)科學(xué)與探索, 2011, 5(7):613-623. Chen Xuhao, Zheng Zhong, Shen Li, et al. Subgraph covering for efficient code generation in binary translation[J]. Journal of Frontiers of Computer Science and Technology, 2011, 5(7): 613-623.(in Chinese)

      [13]Carsten S,F(xiàn)lorian M,Stephan F. LLBMC:a bounded model checkerforLLVMsintermediaterepresentation[C]// International Conference on Tools and Algorithms for the Construction and Analysis of Systems. Tallinn,Estonia,2012:542-544.(責(zé)任編輯陳東曉)

      作者簡(jiǎn)介

      石磊(1978-)男,碩士,高級(jí)工程師。主要研究方向:彈載軟件測(cè)試驗(yàn)證技術(shù)。

      Tel:15538868517

      E-mail:smxsuperboy@126.com

      田娜(1983-)女,學(xué)士,工程師。主要研究方向:嵌入式系統(tǒng)、處理器驗(yàn)證。

      Tel:13501153049

      E-mail:tianna@digiproto.com

      康爍(1978-)男,碩士,工程師。主要研究方向:處理器仿真及驗(yàn)證,軟件安全。

      Tel:13651119140

      E-mail:ksh@skyeye.org

      LLVM-Based Multiple Targets High-Performance Dynamic Binary Translation Framework

      Shi Lei1,*,Tian Na2,Kang Shuo3

      1. China Air to Air Missile Research Institute,Luoyang 471000,China

      2. Beijing Digiproto Technology Co.,Ltd.,Beijing 100085,China

      3. Research Institute of Information Technology,Tsinghua University,Beijing 100084,China

      Abstract: Dynamic binary translation is a key technology of constructing high-performance heterogeneous virtual machine, while the quality of the code translation is the key of dynamic binary translation performance. An LLVMbased dynamic binary translation framework is implemented. Utilizing LLVM optimization technology and the features of multiple target compiling, the high performance dynamic binary translation for multiple target architectures is implemented. The dynamic binary translation framework is implemented based on open source software Skyeye. The portability and performance were verified on two target architectures ARM and PowerPC. Compared with Qemu on ARM target platform, experiment results show that the average performance is faster than QEMU by over 10%.

      Key Words: dynamic binary translation; heterogeneous virtual machine; translation performance; LLVM; multiple targets translation

      平陆县| 剑阁县| 阿拉善左旗| 邵武市| 玉环县| 方山县| 道真| 长海县| 镇安县| 开平市| 舒城县| 洛南县| 弥勒县| 哈尔滨市| 三台县| 含山县| 石泉县| 兴安县| 沙河市| 黔西县| 颍上县| 陆良县| 汕头市| 昂仁县| 乡宁县| 湘阴县| 府谷县| 包头市| 北海市| 南丹县| 松桃| 凤城市| 温州市| 怀集县| 湄潭县| 得荣县| 正阳县| 新邵县| 郸城县| 濉溪县| 铜鼓县|