基于Trace的CMinus語言即時(shí)編譯技術(shù)研究
發(fā)布時(shí)間:2017-07-29 20:01
本文關(guān)鍵詞:基于Trace的CMinus語言即時(shí)編譯技術(shù)研究
更多相關(guān)文章: 即時(shí)編譯 基于熱蹤 CMinus 環(huán)境切換 運(yùn)行時(shí)環(huán)境 Java虛擬機(jī)
【摘要】:在網(wǎng)絡(luò)環(huán)境下,一些網(wǎng)頁腳本、分布式查詢等可能動(dòng)態(tài)生成查詢請(qǐng)求或程序。這類查詢或程序通常難以提前對(duì)其進(jìn)行靜態(tài)編譯,如XQuery、JavaScript、Python、MATLAB等,它們一般是以解釋執(zhí)行方式運(yùn)行。為了加快解釋執(zhí)行效率,可以通過即時(shí)編譯技術(shù),動(dòng)態(tài)識(shí)別出程序中頻繁執(zhí)行的代碼,對(duì)其進(jìn)行編譯處理后執(zhí)行生成的目標(biāo)代碼,從而提高整個(gè)程序的執(zhí)行效率。即時(shí)編譯技術(shù)按照編譯的應(yīng)用對(duì)象不同可以分為兩種:基于函數(shù)(Method)的即時(shí)編譯技術(shù)和基于蹤跡(Trace)的即時(shí)編譯技術(shù);诤瘮(shù)的即時(shí)編譯技術(shù)以函數(shù)為編譯單元,編譯粒度較粗。而基于Trace的即時(shí)編譯技術(shù)按照控制流中頻繁執(zhí)行的路徑作為即時(shí)編譯的對(duì)象,能夠完成更加細(xì)粒度的程序優(yōu)化,并減少了對(duì)函數(shù)內(nèi)非頻繁代碼進(jìn)行編譯的開銷,在相當(dāng)多的場景下能夠更加有效的提高程序整體的執(zhí)行效率。然而,基于Trace的即時(shí)編譯系統(tǒng)涉及很多底層代碼的優(yōu)化,導(dǎo)致其開發(fā)難度較大。如果針對(duì)每一種程序設(shè)計(jì)語言都構(gòu)造一個(gè)支持該優(yōu)化技術(shù)的執(zhí)行引擎,勢(shì)必加大開發(fā)成本,導(dǎo)致該技術(shù)的應(yīng)用范圍受到一定限制。如果能夠構(gòu)造一個(gè)引入該技術(shù)的通用的執(zhí)行引擎,便可快捷的將該技術(shù)擴(kuò)展到其他語言的優(yōu)化中。因此,為了擴(kuò)展基于Trace的即時(shí)編譯技術(shù)的應(yīng)用范圍,本文提出了一種針對(duì)CMinus語言程序的熱蹤編譯技術(shù)。利用該熱蹤編譯技術(shù)及其支撐工具,任何開發(fā)語言編寫的程序只要能夠翻譯為CMinus程序都可以使用該技術(shù)提高其執(zhí)行效率。本文的主要工作和貢獻(xiàn)有:1)提出了針對(duì)CMinus語言程序的熱點(diǎn)Trace探測技術(shù):能夠在運(yùn)行時(shí)探測并識(shí)別CMinus程序代碼中的熱點(diǎn)Trace,并進(jìn)行編譯處理;2)設(shè)計(jì)了熱點(diǎn)Trace的探測和動(dòng)態(tài)合并方法:在運(yùn)行時(shí)將對(duì)熱點(diǎn)Trace進(jìn)行探測并將出現(xiàn)重復(fù)節(jié)點(diǎn)的熱點(diǎn)Trace進(jìn)行動(dòng)態(tài)合并,以降低運(yùn)行時(shí)多個(gè)Trace間在重復(fù)節(jié)點(diǎn)處頻繁地進(jìn)行環(huán)境切換的開銷;3)設(shè)計(jì)了不同運(yùn)行時(shí)環(huán)境間的切換技術(shù):能夠保證程序運(yùn)行過程中不同執(zhí)行方式下運(yùn)行時(shí)環(huán)境的一致性;4)設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Trace的CMinus語言通用即時(shí)編譯系統(tǒng),任何可以翻譯為CMinus的語言都可以利用該技術(shù)提高執(zhí)行效率,擴(kuò)展了該技術(shù)的應(yīng)用范圍。實(shí)驗(yàn)結(jié)果表明這種即時(shí)編譯技術(shù)能夠顯著地提高程序的執(zhí)行效率,同時(shí)具有較好的可用性。
【關(guān)鍵詞】:即時(shí)編譯 基于熱蹤 CMinus 環(huán)境切換 運(yùn)行時(shí)環(huán)境 Java虛擬機(jī)
【學(xué)位授予單位】:北京工業(yè)大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2016
【分類號(hào)】:TP314
【目錄】:
- 摘要4-5
- Abstract5-10
- 第1章 緒論10-16
- 1.1 課題背景10-11
- 1.2 研究目的與意義11
- 1.3 相關(guān)研究11-14
- 1.3.1 HotSpot即時(shí)編譯技術(shù)11-12
- 1.3.2 基于Trace的即時(shí)編譯技術(shù)12-14
- 1.3.3 Java虛擬機(jī)語言14
- 1.4 課題來源14
- 1.5 本文研究工作和創(chuàng)新點(diǎn)14-15
- 1.6 本文組織結(jié)構(gòu)15-16
- 第2章 背景知識(shí)與概念16-22
- 2.1 即時(shí)編譯技術(shù)16-17
- 2.1.1 即時(shí)編譯分類16
- 2.1.2 熱點(diǎn)代碼判斷策略16-17
- 2.2 Java虛擬機(jī)17-19
- 2.2.1 虛擬機(jī)結(jié)構(gòu)17-18
- 2.2.2 棧幀(Stack Frame)18
- 2.2.3 Java虛擬機(jī)指令18-19
- 2.3 CMinus簡介19-20
- 2.3.1 CMinus文法19
- 2.3.2 示例程序19-20
- 2.4 本章小結(jié)20-22
- 第3章 CMinus即時(shí)編譯系統(tǒng)22-30
- 3.1 系統(tǒng)框架22
- 3.2 基本塊流圖生成22-25
- 3.2.1 基本塊結(jié)構(gòu)22-23
- 3.2.2 基本塊流圖轉(zhuǎn)換規(guī)則23-25
- 3.3 CMinus解釋執(zhí)行25-29
- 3.3.1 基本結(jié)構(gòu)25-26
- 3.3.2 表達(dá)式執(zhí)行規(guī)則26-27
- 3.3.3 函數(shù)調(diào)用27-29
- 3.4 本章小結(jié)29-30
- 第4章 基于Trace的熱點(diǎn)探測技術(shù)30-38
- 4.1 基本概念30-32
- 4.1.1 Trace定義30-31
- 4.1.2 錨點(diǎn)識(shí)別31-32
- 4.2 基于Trace的熱點(diǎn)探測32-36
- 4.2.1 Trace探測整體流程32-33
- 4.2.2 Trace探測33-35
- 4.2.3 Trace合并35-36
- 4.3 本章小結(jié)36-38
- 第5章 目標(biāo)代碼生成及執(zhí)行38-52
- 5.1 目標(biāo)代碼的選擇38
- 5.2 目標(biāo)代碼設(shè)計(jì)及生成38-44
- 5.2.1 目標(biāo)代碼類設(shè)計(jì)39-40
- 5.2.2 輔助信息收集40
- 5.2.3 目標(biāo)代碼生成40-44
- 5.3 環(huán)境切換44-49
- 5.3.1 解釋執(zhí)行到編譯執(zhí)行45-46
- 5.3.2 編譯執(zhí)行到解釋執(zhí)行46-49
- 5.4 執(zhí)行目標(biāo)代碼49-50
- 5.5 本章小結(jié)50-52
- 第6章 系統(tǒng)設(shè)計(jì)及測試52-64
- 6.1 系統(tǒng)設(shè)計(jì)52-55
- 6.1.1 CMinus即時(shí)編譯引擎設(shè)計(jì)52-54
- 6.1.2 基本塊流圖類體系54-55
- 6.2 測試方案55-56
- 6.3 功能測試56
- 6.4 性能測試56-61
- 6.4.1 解釋執(zhí)行和基于Trace即時(shí)編譯比較57-60
- 6.4.2 循環(huán)次數(shù)對(duì)加速比的影響60-61
- 6.4.3 編譯閾值影響61
- 6.5 本章小結(jié)61-64
- 結(jié)論64-66
- 參考文獻(xiàn)66-70
- 附錄 A70-78
- 附錄 B78-84
- 攻讀碩士學(xué)位期間發(fā)表的學(xué)術(shù)論文84-86
- 致謝86
本文編號(hào):590823
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/590823.html
最近更新
教材專著