版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
小型JIT編譯器之最佳化技術(shù)評(píng)估指導(dǎo)教授:單智君老師指導(dǎo)學(xué)長:喬偉豪學(xué)長組員:鍾懿軒,蔣季融,李國丞小型JIT編譯器之最佳化技術(shù)評(píng)估指導(dǎo)教授:單智君老師1Outline觀察-----------------------------------鍾懿軒動(dòng)機(jī)-----------------------------------鍾懿軒目標(biāo)-----------------------------------鍾懿軒初步設(shè)計(jì)-----------------------------李國丞修改過的設(shè)計(jì)------------------------蔣季融未來進(jìn)度-----------------------------蔣季融Outline觀察---------------------2觀察Java是用stack運(yùn)算。因?yàn)榈讓訖C(jī)器是register-based非stack-based,用interpreter執(zhí)行,performance不佳。加入JIT將bytecode轉(zhuǎn)換為register-based的指令,可以增進(jìn)performance。若於JIT中加入一些機(jī)制,增進(jìn)其效能,則可進(jìn)一步增進(jìn)javaperformance。觀察Java是用stack運(yùn)算。3動(dòng)機(jī)加入的機(jī)制若能產(chǎn)生IR,使JITcompiler後端處理更方便。就有可能增進(jìn)JIT的速度。folding機(jī)制:讀入bytecode產(chǎn)生register-based的IR,簡便後段處理。因此決定於JIT中加入folding機(jī)制。動(dòng)機(jī)加入的機(jī)制若能產(chǎn)生IR,使JITcompiler後端處4目標(biāo)將folding機(jī)制加入JIT中,以最少的overhead,fold最多的pattern,達(dá)到增加performance的目的。目標(biāo)將folding機(jī)制加入JIT中,以最少的overhea5初步設(shè)計(jì)架構(gòu)圖Bytecode分類Pattern統(tǒng)計(jì)遇到的問題初步設(shè)計(jì)架構(gòu)圖6舊架構(gòu)圖舊架構(gòu)圖7舊folding架構(gòu)圖舊folding架構(gòu)圖8Bytecode分類1.定義:參考kim’spaper(AdvancedPOCModel-BasedJavaInstructionFoldingMechanism)P:非operation含有push。Op:operation含有push不含pop。Oc:operation含有pop不含push。C:非operation含有pop。On:不含pushpop,無法分類者。Bytecode分類1.定義:9Bytecode分類(續(xù))參考學(xué)長的paper(stackoperationsfoldinginjavaprocessors)P:transferingdatafromConstantRegisterorLocalVariabletotheoperandstack。O:getsdatafromtheoperandstackandthenperformsdifferenttasksOe:ALUtypeoperatorthatwritestheresultbacktotheoperandstack。Ob:Branchtypeoperator。Oc:Complextypeoperatorincludingarrayaccess,constantpoolaccess。Ot:unableorhardtojointhefoldingoperation。C:consumesdatafromtheoperandstack,andstoresdatabackintothelocalvariable。Bytecode分類(續(xù))參考學(xué)長的paper(stack10Bytecode分類(續(xù))2.統(tǒng)計(jì)bytecodepush/pop數(shù):檢視kvmsourcecode(bytecodes.c):查看每道bytecode的執(zhí)行碼中有多少push,pop的動(dòng)作。檢視jvmspec(chapter6)每道bytecode都已規(guī)定好stack情況,可直接紀(jì)錄。Bytecode分類(續(xù))11AnalyzepatternspossibilityinJavaclassfileGetinformationfromJavaclassfileDoitourself(inC++)BCELlibraryforJava
(/bcel)
Analyzepatternspossibilityi12Possibilityofpatterns(1)KIM所統(tǒng)計(jì)出的Patterns及出現(xiàn)百分比(2)自行統(tǒng)計(jì)”EmbeddedCaffeineMark”的結(jié)果
Possibilityofpatterns(1)KIM所13ProblemsClassificationcansavetimeofstringmatchingUsing“Hashing”isbetterthanstringmatching!Benefitofclassificationnolongerexistswhenusing“Hashing”!使用stringmatchingsequentialsearch:Toomuchfindingoverhead。ProblemsClassificationcansav14修改過的設(shè)計(jì)新架構(gòu)圖Folding方法修改過的設(shè)計(jì)新架構(gòu)圖15Structureof“JVMwithJIT”JavacodesourceJAVAcompilerJavabytecodeClassloaderBytecodeverifierHardwareOperatingSystemJavaclasslibrariesHotspotInterpretNativecodeJVMInterpreterJITYNStructureof“JVMwithJIT”Jav16Interactionbetween
Interpreter&JITTimeOnemethodHotspotDetectInterpretTimeComplicatedcodeJITEndofmethod(Startofmethod)CodeblockCodeblockInteractionbetween
Interpret17StrutureofourJITJITIRgeneratorFoldingCodegeneratorIR1IR2NativecodeMethodStrutureofourJITIRgenerato18方法(4-1)-OverviewO-oriented.
SearchbytecodesforO-typebytecodethenfindfoldingpatternforthisO-typebytecode.Datastructure:array.Table:Usedforstoringinformationofbytecodes.方法(4-1)-OverviewO-oriented.
Se19方法(4-2)-DataStructureTable:usebytecodeIDnumberasindex.Buffer:length=4;Bytecodeinformation:TypeP_num:PushnumberPostive,stackgrowC_num:PopnumberNegative,stackfall方法(4-2)-DataStructureTable:u20方法(4-3)-Algorithm經(jīng)由bytecode定義可得:P-type:C_num=0,P_num=1.C-type:P_num=0,C_num=1.O-type:不一定,視其功能而定。以O(shè)-type的attribute為尋找pattern的依據(jù)。P_num:向後尋找P_num個(gè)bytecodesC_num:向前尋找C_num個(gè)bytecodes方法(4-3)-Algorithm經(jīng)由bytecode定義可21方法(4-4)Match:向前找C_num個(gè)bytecodes的P_num剛好和O-type的C_num相抵銷。向後找P_num個(gè)bytecodes的C_num剛好和O-type的P_num相抵銷。整個(gè)pattern的attribute和要為零。無法match放棄此O-typebytecode,繼續(xù)找下一個(gè)。針對(duì)continuouspattern設(shè)計(jì)。方法(4-4)Match:22未來進(jìn)度TracingcodeModifyingcodeSimulationPerformance未來進(jìn)度Tracingcode23TracingcodeEnvironmentconfigurationTracecodeConcentrateon“HowtoaddFoldingintoJIT?”TracingcodeEnvironmentconfig24ModifyingcodeAddingFoldingtoJITModulizingFoldingandaddingitintoJITbetween“IRgenerator”and“Codegenerator”IRGeneratorCodeGeneratorBytecodeNativecodeFoldingModifyingcodeAddingFoldingt25SimulationRunbenchmarkonARMsimulatoronLinuxworkstationBenchmark:”EmbeddedCaffeineMark”SimulationRunbenchmarkonARM26PerformanceFindout“PerformanceSpeedup”afterusingfoldingSpeedup=
(time_with_folding)/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 實(shí)數(shù)考試?yán)}解析及答案
- 商法機(jī)考考試題及答案
- 汽車美容保養(yǎng)試題及答案
- 水泥廠培訓(xùn)課件教學(xué)
- 2025 小學(xué)三年級(jí)科學(xué)下冊保存磁鐵防止消磁的方法課件
- 《GAT 1054.6-2017公安數(shù)據(jù)元限定詞(6)》專題研究報(bào)告
- 2026 年初中英語《感嘆詞》專項(xiàng)練習(xí)與答案 (100 題)
- 《GAT 488-2020道路交通事故現(xiàn)場勘查車載照明設(shè)備通 用技術(shù)條件》專題研究報(bào)告
- 2026年深圳中考物理電熱的計(jì)算專項(xiàng)試卷(附答案可下載)
- 2026年大學(xué)大二(家具設(shè)計(jì)與工程)家具設(shè)計(jì)心理學(xué)綜合測試題及答案
- 小區(qū)配電室用電安全培訓(xùn)課件
- 醫(yī)院科室文化建設(shè)與禮儀
- 2025貴州磷化(集團(tuán))有限責(zé)任公司12月招聘筆試參考題庫及答案解析
- 征信修復(fù)合同范本
- 2025年公安部遴選面試題及答案
- 中煤集團(tuán)機(jī)電裝備部副部長管理能力考試題集含答案
- 化工廠設(shè)備維護(hù)保養(yǎng)培訓(xùn)
- 福建省網(wǎng)絡(luò)安全事件應(yīng)急預(yù)案
- 五育融合課件
- 意識(shí)障礙的判斷及護(hù)理
- 儲(chǔ)能電站安全管理與操作規(guī)程
評(píng)論
0/150
提交評(píng)論