[發(fā)明專利]熱點方法識別方法及裝置有效
| 申請?zhí)枺?/td> | 201410812093.8 | 申請日: | 2014-12-23 |
| 公開(公告)號: | CN105786586B | 公開(公告)日: | 2018-10-30 |
| 發(fā)明(設(shè)計)人: | 傅杰;靳國杰;高翔;王劍 | 申請(專利權(quán))人: | 龍芯中科技術(shù)有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455 |
| 代理公司: | 北京同立鈞成知識產(chǎn)權(quán)代理有限公司 11205 | 代理人: | 楊貝貝;黃健 |
| 地址: | 100095 北京市海淀*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 熱點 方法 識別 裝置 | ||
本發(fā)明實施例提供一種熱點方法識別方法及裝置,其中,所述熱點方法識別方法包括:若偵測到第一方法的調(diào)用次數(shù)超過預設(shè)的熱點識別閾值,則判斷當前編譯隊列是否已滿,其中,所述當前編譯隊列所能容納的待編譯的方法的數(shù)目為預設(shè)的常量;若所述當前編譯隊列已滿,則將所述當前編譯隊列中的一個或多個待編譯的方法刪除;并將所述第一方法加入到所述當前編譯隊列。本發(fā)明實施例提供的熱點方法識別方法及裝置,能夠避免對熱點方法的過度識別,降低編譯開銷,提升虛擬機的性能,同時增強虛擬機的魯棒性。
技術(shù)領(lǐng)域
本發(fā)明實施例涉及虛擬機技術(shù),尤其涉及一種熱點方法識別方法及裝置。
背景技術(shù)
虛擬機(Virtual Machine,簡稱VM)指通過軟件(或者輔以少量硬件支持)的方法來虛擬出一臺具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的完整計算機,并且這臺虛擬的計算機通常還支持一套自己的指令集,稱為虛擬機指令集。虛擬機依托于本地的物理機,通過其執(zhí)行引擎對給定的虛擬機指令序列(即目標程序)在本地機器上模擬執(zhí)行。虛擬機的執(zhí)行引擎一般包括解釋器和編譯器兩種類型。解釋器以一條虛擬機指令為單位進行取指令、譯碼和執(zhí)行,解釋器具有可移植性高、實現(xiàn)代價低和內(nèi)存占用少等特點,因而大多數(shù)虛擬機的執(zhí)行引擎都包含解釋器,但是,解釋器的單純解釋執(zhí)行過程帶來大量重復的取指令和譯碼操作,導致解釋執(zhí)行性能低下。鑒于此,虛擬機中引入了動態(tài)編譯系統(tǒng)以提升虛擬機性能。其中,編譯器是動態(tài)編譯系統(tǒng)的核心,編譯器以一組連續(xù)的虛擬機指令序列(基本塊、函數(shù)或方法)為單位整體編譯成本地CPU指令序列(所生成的本地CPU指令序列也稱為本地方法),然后由硬件直接執(zhí)行編譯后的本地方法;編譯器由于避免了大量重復的取指令和譯碼的過程,同時又在編譯時進行了大量卓有成效的優(yōu)化,因而編譯器的性能可以達到解釋器的性能的10倍以上。和傳統(tǒng)C/C++等靜態(tài)編譯不同,編譯器是在程序運行過程中進行動態(tài)編譯的,故又將其稱為即時編譯器(Just-in-time Compiler,簡稱JIT)。
虛擬機的動態(tài)編譯會引入額外的運行時開銷。如果編譯的方法過多,動態(tài)編譯占用大量的計算機資源,使得程序的正常執(zhí)行受到影響,導致虛擬機對外界的響應變得遲鈍,總的運行效率下降。相反,如果編譯的方法過少,大多數(shù)方法以效率低下的解釋模式執(zhí)行,造成程序運行速度同樣非常緩慢。因此,為了降低編譯開銷,虛擬機僅對檢測到的執(zhí)行頻度較高的方法(也稱為熱點方法,或程序熱點)進行編譯,可見,針對動態(tài)編譯系統(tǒng),對程序中熱點方法的有效識別顯得非常關(guān)鍵。
熱點方法識別一直都是一個開放性難題,現(xiàn)有虛擬機系統(tǒng)中均設(shè)計了專門的熱點識別系統(tǒng),其核心思想是通過程序過去的執(zhí)行特征預測將來的行為。
一種常見的熱點方法識別方法是基于熱點閾值的一次性判別準則:解釋器會對每個方法的調(diào)用次數(shù)進行計數(shù);當虛擬機偵測到方法m的調(diào)用次數(shù)超過虛擬機中預先設(shè)定的熱點識別閾值(記為HotThreshold)時,則判定方法m為熱點方法,并將m加入到虛擬機的編譯隊列中等待編譯。為了獲得一個理想的熱點閾值,虛擬機開發(fā)人員通常會利用大量的測試集,對許多不同的熱點閾值進行試驗,選取綜合性能最優(yōu)的值作為最終的熱點閾值。但是,這種從測試集中通過試驗的方法得出的熱點閾值并不具備普遍適用性;由于程序行為的復雜多變性,單一固定的熱點閾值缺乏自適應的調(diào)節(jié)能力,無法保證在某些測試集上性能較高的熱點閾值對實際應用系統(tǒng)同樣有效。
另一種常見的熱點方法識別方法是動態(tài)自適應的熱點閾值方法:虛擬機中的熱點識別閾值并非固定不變的,而是隨程序行為的變化自動進行調(diào)整,例如,根據(jù)當前虛擬機中等待編譯的方法數(shù)目來調(diào)節(jié)熱點閾值:當?shù)却幾g的方法數(shù)目過多時,增大熱點識別閾值;而當?shù)却幾g的方法數(shù)目較少時,則適當降低熱點識別閾值。動態(tài)自適應的熱點閾值方法容易導致虛擬機對程序中熱點方法的過度識別。當虛擬機中等待編譯的方法數(shù)目較少時(例如在程序啟動時),熱點識別閾值相對較低,可能使得許多短期內(nèi)執(zhí)行頻度較高,但總體上對程序性能影響微弱的方法被虛擬機錯誤地判別為熱點方法。熱點方法的過度識別,不僅使得虛擬機浪費寶貴的資源去編譯對性能影響不大的方法,還導致對重要的熱點方法進行識別的延遲增大,嚴重降低虛擬機性能。
發(fā)明內(nèi)容
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于龍芯中科技術(shù)有限公司,未經(jīng)龍芯中科技術(shù)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410812093.8/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





