午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

語言虛擬機(jī)中熱點(diǎn)中間代碼的識(shí)別方法以及裝置的制造方法

文檔序號(hào):9750623閱讀:225來源:國知局
語言虛擬機(jī)中熱點(diǎn)中間代碼的識(shí)別方法以及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及編譯技術(shù),具體涉及一種熱點(diǎn)中間代碼的識(shí)別方法以及裝置。
【背景技術(shù)】
[0002]在代碼的執(zhí)行過程中,為了屏蔽平臺(tái)的差異性,首先要把源代碼轉(zhuǎn)換為中間代碼,然后運(yùn)行在各自的語言虛擬機(jī),語言虛擬機(jī)為運(yùn)行中間代碼的虛擬機(jī),例如執(zhí)行JAVA的中間代碼(字節(jié)碼)的JAVA虛擬機(jī)(JVM,Java Virtual Machine ) —般包括解釋器(Interpreter)、即時(shí)(JIT,Just In Time)編譯器。在中間代碼的執(zhí)行過程中,解釋器用于在程序啟動(dòng)時(shí),對(duì)中間代碼進(jìn)行逐個(gè)翻譯并執(zhí)行,執(zhí)行效率比較低,即時(shí)編譯器用于將中間代碼編譯為用于被調(diào)用執(zhí)行的本地代碼,本地代碼的執(zhí)行效率比較高。一些即時(shí)編譯器又可以細(xì)分為輕量級(jí)編譯器、重量級(jí)編譯器。重量級(jí)編譯器相比輕量級(jí)編譯器優(yōu)化手段更豐富,編譯效果更好,但編譯時(shí)開銷更大。
[0003]然而,在不能有效地識(shí)別熱點(diǎn)的中間代碼(執(zhí)行頻率高的中間代碼)時(shí),使得即時(shí)編譯器編譯出執(zhí)行頻率低的本地代碼,這些執(zhí)行頻率低的本地代碼占據(jù)了大量存儲(chǔ)空間,會(huì)影響接下來的執(zhí)行頻率高的中間代碼的編譯過程,造成了存儲(chǔ)空間浪費(fèi)且嚴(yán)重影響語言虛擬機(jī)整體運(yùn)行性能。

【發(fā)明內(nèi)容】

[0004]本發(fā)明的目的在于提供一種熱點(diǎn)中間代碼的識(shí)別方法以及裝置,用于識(shí)別熱點(diǎn)的中間代碼。
[0005]上述目標(biāo)和其它目標(biāo)將通過獨(dú)立權(quán)利要求中的特征來達(dá)成。進(jìn)一步的實(shí)現(xiàn)方式在從屬權(quán)利要求、說明書和附圖中體現(xiàn)。
[0006]第一方面,提供一種熱點(diǎn)中間代碼的識(shí)別裝置,所述裝置包括:
[0007]獲取電路,用于在待識(shí)別函數(shù)被語言虛擬機(jī)執(zhí)行時(shí),獲取指令計(jì)數(shù)器中的指令地址;
[0008]第一判斷電路,用于根據(jù)所述獲取電路獲取的所述指令計(jì)數(shù)器中的指令地址,判斷所述指令計(jì)數(shù)器中的指令地址對(duì)應(yīng)的本地指令是否為所述待識(shí)別函數(shù)的本地指令;
[0009]更新電路,用于在所述第一判斷電路確定所述指令計(jì)數(shù)器中的指令地址對(duì)應(yīng)的本地指令為所述待識(shí)別函數(shù)的本地指令時(shí),將所述待識(shí)別函數(shù)的當(dāng)前的熱度值增加預(yù)設(shè)值,以更新所述待識(shí)別函數(shù)的熱度值;
[0010]第二判斷電路,用于判斷所述更新電路得到的所述待識(shí)別函數(shù)的更新后的熱度值是否大于或等于所述待識(shí)別函數(shù)的熱度閾值,在所述待識(shí)別函數(shù)的更新后的熱度值大于所述待識(shí)別函數(shù)的熱度閾值時(shí),將所述待識(shí)別函數(shù)的中間代碼作為熱點(diǎn)中間代碼。
[0011]其中,更新所述待識(shí)別函數(shù)的熱度值指的是用新的熱度值來替換當(dāng)前的熱度值,當(dāng)前的熱度值在更新前后會(huì)發(fā)生改變,更新之后的當(dāng)前的熱度值,或者說更新后的熱度值就變成了更新前的那個(gè)新的熱度值。
[0012]該裝置通過獲取指令計(jì)數(shù)器中的指令地址,判斷所述指令計(jì)數(shù)器中的指令地址對(duì)應(yīng)的本地指令是否為所述待識(shí)別函數(shù)的本地指令,使得可以實(shí)現(xiàn)在解釋器或是即時(shí)編譯執(zhí)行代碼的過程中識(shí)別出熱點(diǎn)中間代碼。
[0013]根據(jù)第一方面,在所述裝置第一種可能的實(shí)現(xiàn)方式中,所述第一判斷電路用于:
[0014]判斷所述指令計(jì)數(shù)器中的指令地址是否在所述待識(shí)別函數(shù)的本地指令空間的地址范圍內(nèi),所述待識(shí)別函數(shù)的本地指令空間中的本地指令包括所述待識(shí)別函數(shù)的本地指令,并且所述待識(shí)別函數(shù)的本地指令空間中的本地指令不包括用于實(shí)現(xiàn)所述語言虛擬機(jī)功能的本地指令。該實(shí)現(xiàn)方式可以有效區(qū)分當(dāng)前正在執(zhí)行的指令是用于實(shí)現(xiàn)語言虛擬機(jī)自身功能的本地指令,還是語言虛擬機(jī)執(zhí)行的函數(shù)的本地指令,從而簡(jiǎn)單且有效的實(shí)現(xiàn)判斷所述指令計(jì)數(shù)器中的指令地址對(duì)應(yīng)的本地指令是否為所述待識(shí)別函數(shù)的本地指令。其中函數(shù)也可以稱為方法,用于實(shí)現(xiàn)語言虛擬機(jī)自身功能的本地指令也可以稱為主機(jī)端代碼中的指令,語言虛擬機(jī)執(zhí)行的函數(shù)的本地指令也可以稱為客戶端代碼中的指令。
[0015]根據(jù)第一方面的第一種實(shí)現(xiàn)方式,在所述裝置第二種可能的實(shí)現(xiàn)方式中,所述語言虛擬機(jī)包括解釋器,所述待識(shí)別函數(shù)的本地指令空間中的本地指令包括用于中的本地指令包括所述解釋器翻譯的中間指令對(duì)應(yīng)的本地指令,所述用于所述解釋器翻譯的中間指令對(duì)應(yīng)的本地指令包括所述待識(shí)別函數(shù)的本地指令。
[0016]相應(yīng)的,所述待識(shí)別函數(shù)被執(zhí)行可以包括:所述待識(shí)別函數(shù)的中間代碼被執(zhí)行。
[0017]在語言虛擬機(jī)中的解釋器翻譯中間代碼的過程中,所有中間指令對(duì)應(yīng)的本地指令被存儲(chǔ)在連續(xù)的存儲(chǔ)空間,也就是可通過所述解釋器翻譯獲得的本地指令的存儲(chǔ)空間,所述存儲(chǔ)空間可以是內(nèi)存空間,所述本地代碼可以是匯編代碼,所述中間代碼也可以是字節(jié)碼,通過判斷當(dāng)前執(zhí)行的本地指令的指令地址是否在可通過所述解釋器翻譯獲得的本地指令的存儲(chǔ)空間的地址范圍內(nèi),可實(shí)現(xiàn)解釋器翻譯階段中判斷所述指令計(jì)數(shù)器中的指令地址對(duì)應(yīng)的本地指令是否為所述待識(shí)別函數(shù)的本地指令。
[0018]根據(jù)第一方面的第一種實(shí)現(xiàn)方式,在所述裝置第三種可能的實(shí)現(xiàn)方式中,所述語言虛擬機(jī)包括及時(shí)編譯器,所述待識(shí)別函數(shù)的本地指令空間用于存儲(chǔ)所述待識(shí)別函數(shù)的本地代碼,所述待識(shí)別函數(shù)的本地指令為所述待識(shí)別函數(shù)的本地代碼中的指令,所述待識(shí)別函數(shù)的本地代碼通過所述及時(shí)編譯器編譯獲得。
[0019]相應(yīng)的,所述待識(shí)別函數(shù)被執(zhí)行可以包括:所述待識(shí)別函數(shù)的本地代碼被執(zhí)行。
[0020]即時(shí)編譯器編譯獲得的所述待識(shí)別函數(shù)的本地代碼,會(huì)以所述待識(shí)別函數(shù)為一個(gè)整體,將所述待識(shí)別函數(shù)的本地代碼存儲(chǔ)在用于存儲(chǔ)所述待識(shí)別函數(shù)的本地代碼的存儲(chǔ)空間,其中,該存儲(chǔ)空間可以是內(nèi)存,例如,該存儲(chǔ)空間可以是代碼緩沖區(qū)(code cache),其中所述待識(shí)別函數(shù)的本地代碼可以是通過及時(shí)編譯器中的輕量級(jí)編譯器獲得的所述待識(shí)別函數(shù)的輕量級(jí)本地代碼,也可以是通過及時(shí)編譯器中的重量級(jí)編譯器獲得的所述待識(shí)別函數(shù)的重量級(jí)本地代碼。在所述待識(shí)別函數(shù)的本地代碼為輕量級(jí)本地代碼時(shí),通過判斷當(dāng)前執(zhí)行的本地指令的指令地址是否在用于存儲(chǔ)所述待識(shí)別函數(shù)的本地代碼的存儲(chǔ)空間的地址范圍內(nèi),可實(shí)現(xiàn)在輕量級(jí)本地代碼被執(zhí)行階段中,判斷所述指令計(jì)數(shù)器中的指令地址對(duì)應(yīng)的本地指令是否為所述待識(shí)別函數(shù)的本地指令;在所述待識(shí)別函數(shù)的本地代碼為重量級(jí)本地代碼時(shí),通過判斷當(dāng)前執(zhí)行的本地指令的指令地址是否在用于存儲(chǔ)所述待識(shí)別函數(shù)的本地代碼的存儲(chǔ)空間的地址范圍內(nèi),可實(shí)現(xiàn)在重量級(jí)本地代碼被執(zhí)行階段中,判斷所述指令計(jì)數(shù)器中的指令地址對(duì)應(yīng)的本地指令是否為所述待識(shí)別函數(shù)的本地指令,從而實(shí)現(xiàn)對(duì)重量級(jí)本地代碼的執(zhí)行頻率的統(tǒng)計(jì)。
[0021]根據(jù)第一方面,或以上第一方面的任意一種實(shí)現(xiàn)方式,在所述裝置第四種可能的實(shí)現(xiàn)方式中,所述更新電路包括熱度值計(jì)數(shù)器,所述熱度值計(jì)數(shù)器用于:將所述熱度值計(jì)數(shù)器中的所述待識(shí)別函數(shù)的熱度值加I。該熱度值計(jì)數(shù)器為計(jì)數(shù)器,可以通過輸入的電平(例如,通過電平變化的上升沿)來觸發(fā)計(jì)數(shù),從而替代軟件計(jì)數(shù)的實(shí)現(xiàn)方式,從而減輕軟件實(shí)現(xiàn)的負(fù)擔(dān)。并且由于是電路直接實(shí)現(xiàn),使得執(zhí)行效率更高。
[0022]根據(jù)第一方面的第四種實(shí)現(xiàn)方式,在所述裝置第五種可能的實(shí)現(xiàn)方式中,所述第二判斷電路包括減法器和用于存儲(chǔ)所述待識(shí)別函數(shù)的熱度閾值的閾值寄存器,所述減法器與所述閾值寄存器相連,所述減法器與所述熱度值計(jì)數(shù)器相連,所述減法器用于獲取所述熱度值計(jì)數(shù)器中的所述待識(shí)別函數(shù)的熱度值減去所述閾值寄存器中的所述待識(shí)別函數(shù)的熱度閾值的差值,其中,所述差值大于O指示所述待識(shí)別函數(shù)的更新后的熱度值大于或等于所述待識(shí)別函數(shù)的熱度閾值。
[0023]通過將減法器、閾值寄存器以及熱度值計(jì)數(shù)器相連,通過電路實(shí)現(xiàn)判斷所述待識(shí)別函數(shù)的更新后的熱度值是否大于或等于所述待識(shí)別函數(shù)的熱度閾值的功能,從而進(jìn)一步降低了代碼的運(yùn)算量,進(jìn)一步使得執(zhí)行效率更高。
[0024]根據(jù)第一方面的第四種實(shí)現(xiàn)方式,在所述裝置第六種可能的實(shí)現(xiàn)方式中,所述第二判斷電路包括第一比較器和用于存儲(chǔ)所述待識(shí)別函數(shù)的熱度閾值的閾值寄存器,所述第一比較器與所述閾值寄存器相連,所述第一比較器與所述熱度值計(jì)數(shù)器相連,所述第一比較器用于判斷所述熱度值計(jì)數(shù)器中的所述待識(shí)別函數(shù)的更新后的熱度值是否大于或等于所述閾值寄存器中的所述待識(shí)別函數(shù)的熱度閾值。
[0025]通過將第一比較器、閾值寄存器以及熱度值計(jì)數(shù)器相連,通過電路實(shí)現(xiàn)判斷所述待識(shí)別函數(shù)的更新后的熱度值是否大于或等于所述待識(shí)別函數(shù)的熱度閾值的功能,從而減輕軟件實(shí)現(xiàn)的負(fù)擔(dān),進(jìn)一步使得執(zhí)行效率更高。
[0026]根據(jù)第一方面的第五種或第六種實(shí)現(xiàn)方式,在所述裝置第七種實(shí)現(xiàn)方式的一種可能的實(shí)現(xiàn)方式中,所述裝置還包括處理器和存儲(chǔ)器;所述存儲(chǔ)器用于存儲(chǔ)代碼;所述處理器通過讀取所述存儲(chǔ)器中存儲(chǔ)的所述代碼,以用于:
[0027]在所述待識(shí)別函數(shù)被所述語言虛擬機(jī)調(diào)用時(shí),加載所述待識(shí)別函數(shù)的當(dāng)前的熱度值到所述熱度值計(jì)數(shù)器;
[0028]在所述待識(shí)別函數(shù)被所述語言虛擬機(jī)返回時(shí),保存所述熱度值計(jì)數(shù)器中的所述待識(shí)別函數(shù)的更新后的熱度值到所述存儲(chǔ)器。
[0029]僅在所述待識(shí)別函數(shù)被執(zhí)行期間,令熱度值計(jì)數(shù)器中的值為所述待識(shí)別函數(shù)的熱度值,使得在所述待識(shí)別函數(shù)不被執(zhí)行期間,熱度值計(jì)數(shù)器可以被用于其它功能,優(yōu)化了存儲(chǔ)資源的使用。
[0030]根據(jù)上述第一方面第七種可能的實(shí)現(xiàn)方式,作為第一方面第七種實(shí)現(xiàn)方式的另一種實(shí)現(xiàn)方式,所述處理器還可以用于在所述待識(shí)別函數(shù)被所述語言虛擬機(jī)調(diào)用時(shí),加載所述待識(shí)別函數(shù)的熱度閾值到所述閾值寄存器,以適用于不同函數(shù)具有不同的熱度閾值的情況,應(yīng)理解,在待識(shí)別函數(shù)被所述語言虛擬機(jī)返回之后,閾值寄存器可以用于除存儲(chǔ)待識(shí)別函數(shù)的熱度閾值之外的其它用途。
[0031]根據(jù)上述第一方面第七種可能的實(shí)現(xiàn)方式,作為第一方面第七種實(shí)現(xiàn)方式的另一種實(shí)現(xiàn)方式,所述處理器還可以用于在所述待識(shí)別函數(shù)被所述語言虛擬機(jī)返回時(shí),保存所述閾值寄存器中的所述待識(shí)別函數(shù)的熱度閾值到所述存儲(chǔ)器,以適用于待識(shí)別函數(shù)在執(zhí)行期間閾值寄存器中的熱度閾值發(fā)生改變的情況。
[0032]根據(jù)第一方面的第七種實(shí)現(xiàn)方式,在所述裝置第八種可能的實(shí)現(xiàn)方式中,所述處理器還用于:在所述待識(shí)別函數(shù)被所述語言虛擬機(jī)調(diào)用時(shí),保存所述熱度值計(jì)數(shù)器中的主調(diào)函數(shù)的更新后的熱度值到所述存儲(chǔ)器,所述待識(shí)別函數(shù)為所述主調(diào)函數(shù)的子函數(shù);
[0033]在所述待識(shí)別函數(shù)被所述語言虛擬機(jī)返回時(shí),加載所述主調(diào)函數(shù)的當(dāng)前的熱度值到所述熱度值計(jì)數(shù)器。使得主調(diào)函數(shù)以及待識(shí)別函數(shù)的熱度值可以區(qū)分處理。
[0034]在不同函數(shù)具有不同的熱度閾值時(shí),所述處理器還可以用于在所述待識(shí)別函數(shù)被所述語言虛擬機(jī)返回時(shí),加載所述主調(diào)函數(shù)的熱度閾值到所述閾值寄存器,在所述主調(diào)函數(shù)執(zhí)行期間,閾值寄存器中的熱度閾值會(huì)發(fā)生改變時(shí),所述處理器還可以用于在所述待識(shí)別函數(shù)被調(diào)用時(shí),保存所述閾值寄存器中的所述主調(diào)函數(shù)的熱度閾值到所述存儲(chǔ)器。
[0035]根據(jù)第一方面,或以上第一方面的任意一種實(shí)現(xiàn)方式,在所述裝置第九種可能的實(shí)現(xiàn)方式中,所述獲取電路包括與指令計(jì)數(shù)器相連接的指令地址寄存器,所述指令地址寄存器通過接收觸發(fā)電平,觸發(fā)所述獲取指令計(jì)數(shù)器中的指令地址的動(dòng)作,所述指令地址寄存器還用于存儲(chǔ)所述指令計(jì)數(shù)器中的指令地址。
[0036]通過電路實(shí)現(xiàn)獲取指令計(jì)數(shù)器中的指令地址的功能,從而減輕軟件實(shí)現(xiàn)的負(fù)擔(dān),進(jìn)一步使得執(zhí)行效率更高。
[0037]根據(jù)第一方面的第九種實(shí)現(xiàn)方式,在所述裝置第十種可能的實(shí)現(xiàn)方式中,所述待識(shí)別函數(shù)的本地指令空間為地址連續(xù)的存儲(chǔ)空間,所述待識(shí)別函數(shù)的本地指令空間的地址范圍用所述待識(shí)別函數(shù)的本地指令空間的起始地址和所述待識(shí)別函數(shù)的本地指令空間的終止地址來表示,其中,所述待識(shí)別函數(shù)的本地指令空間的終止地址大于或等于所述待識(shí)別函數(shù)的本地指令空間的起始地址;
[0038]所述第一判斷電路包括用于存儲(chǔ)所述待識(shí)別函數(shù)的本地指令空間的起始地址的起始地址寄存器,和用于存儲(chǔ)所述待識(shí)別函數(shù)的本地指令空間的終止地址的終止地址寄存器,第三比較器和第二比較器,所述第三比較器與所述指令地址寄存器連接,所述第三比較器與所述起始地址寄存器連接,所述第三比較器用于:比較所述指令地址寄存器中的所述指令計(jì)數(shù)器中的指令地址是否大于或等于所述起始地址寄存器中的所述待識(shí)別函數(shù)的本地指令空間的起始地址;
[0039]所述第二比較器與所述指令地址寄存器連接,所述第二比較器與所述終止地址寄存器連接,所述第二比較
當(dāng)前第1頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1