[發(fā)明專利]用于Java編程中的循環(huán)中止的系統(tǒng)和方法有效
| 申請?zhí)枺?/td> | 201480064229.X | 申請日: | 2014-11-05 |
| 公開(公告)號: | CN105765521B | 公開(公告)日: | 2019-03-19 |
| 發(fā)明(設(shè)計)人: | 黃海濤;高麗萍;齊歆瑜;簡寧勝 | 申請(專利權(quán))人: | 馬維爾國際貿(mào)易有限公司 |
| 主分類號: | G06F7/38 | 分類號: | G06F7/38 |
| 代理公司: | 北京市金杜律師事務(wù)所 11256 | 代理人: | 酆迅;張曦 |
| 地址: | 巴巴多斯*** | 國省代碼: | 巴巴多斯;BB |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 用于 java 編程 中的 循環(huán) 中止 系統(tǒng) 方法 | ||
系統(tǒng)和方法被提供用于循環(huán)過程中止。與循環(huán)過程相關(guān)聯(lián)的一個或多個循環(huán)指令被加載在代碼高速緩存中。代碼高速緩存中的與循環(huán)過程的分支相關(guān)聯(lián)的一個或多個分支指令被確定。中止事件被檢測。一經(jīng)檢測到中止事件,在代碼高速緩存中,分支指令被替換為一個或多個跳轉(zhuǎn)指令。如果跳轉(zhuǎn)指令在代碼高速緩存中被執(zhí)行,則代碼高速緩存中的分支指令被恢復(fù),并且循環(huán)過程被中止。與中止事件相關(guān)聯(lián)的一個或多個中止指令在解釋器中被執(zhí)行。
本公開內(nèi)容要求對2013年11月25日提交的美國臨時專利申請No.61/908,429的優(yōu)先權(quán)和來自該美國臨時專利申請的權(quán)益,它的整體通過引用并入本文。
技術(shù)領(lǐng)域
本專利文件中所描述的技術(shù)一般性地涉及計算機(jī)編程并且更特別地涉及Java編程。
背景技術(shù)
Java程序可以運(yùn)行在Java虛擬機(jī)(JVM)正在其上執(zhí)行的任何機(jī)器上。在JVM(例如,Dalvik)中,在Java程序的啟動時,可以使用解釋器(interpreter)來執(zhí)行Java字節(jié)代碼。例如,在Java程序被執(zhí)行之前,程序的源代碼被分解為Java字節(jié)代碼。在運(yùn)行時,JVM的Java解釋器對字節(jié)代碼進(jìn)行解釋。作為一種備選,JVM可以選擇不對字節(jié)代碼進(jìn)行解釋,而是將字節(jié)代碼編譯分為本機(jī)(native)代碼。JVM然后促使本機(jī)代碼直接由一個或多個處理器執(zhí)行。例如,頻繁使用的字節(jié)代碼被編譯為本機(jī)代碼以改進(jìn)運(yùn)行性能。
即時(Just-in-time)編譯(JIT)(也被稱為動態(tài)轉(zhuǎn)換)是程序或應(yīng)用在運(yùn)行時的執(zhí)行期間而不是在執(zhí)行之前進(jìn)行的編譯。經(jīng)常地,JIT牽涉到向用于Java程序的本機(jī)代碼的轉(zhuǎn)換/編譯。例如,本機(jī)代碼(例如,軌跡(trace))被放入到JIT代碼高速緩存中以用于執(zhí)行。如圖1中所示出的,JIT代碼高速緩存100包括通常使用的子例程(例如,TEMPLATE_CMP_LONG)和本機(jī)代碼(例如,軌跡-1)。
發(fā)明內(nèi)容
根據(jù)本文所描述的教導(dǎo),系統(tǒng)和方法被提供用于循環(huán)過程中止。與循環(huán)過程相關(guān)聯(lián)的一個或多個循環(huán)指令被加載在代碼高速緩存中。代碼高速緩存中的與循環(huán)過程的分支相關(guān)聯(lián)的一個或多個分支指令被確定。中止事件被檢測。一經(jīng)檢測到中止事件,在代碼高速緩存中,分支指令被替換為一個或多個跳轉(zhuǎn)指令。如果跳轉(zhuǎn)指令在代碼高速緩存中被執(zhí)行,則代碼高速緩存中的分支指令被恢復(fù),并且循環(huán)過程被中止。與中止事件相關(guān)聯(lián)的一個或多個中止指令在解釋器中被執(zhí)行。
在一個實施例中,一種用于循環(huán)過程中止的系統(tǒng)包括:代碼高速緩存,被配置為存儲與循環(huán)過程相關(guān)聯(lián)的一個或多個循環(huán)指令;監(jiān)測器組件,被配置為確定代碼高速緩存中的與循環(huán)過程的分支相關(guān)聯(lián)的一個或多個分支指令,并且一經(jīng)檢測到中止事件,在代碼高速緩存中將分支指令替換為一個或多個跳轉(zhuǎn)指令;運(yùn)行組件,被配置為響應(yīng)于跳轉(zhuǎn)指令在代碼高速緩存中被執(zhí)行,恢復(fù)代碼高速緩存中的分支指令并且中止循環(huán)過程;以及解釋器組件,被配置為執(zhí)行與中止事件相關(guān)聯(lián)的一個或多個中止指令。
在另一實施例中,一種用于循環(huán)過程中止的系統(tǒng)包括:代碼高速緩存,被配置為存儲與循環(huán)過程相關(guān)聯(lián)的一個或多個循環(huán)指令;以及一個或多個數(shù)據(jù)處理器。這些數(shù)據(jù)處理器被配置為:確定代碼高速緩存中的與循環(huán)過程的分支相關(guān)聯(lián)的一個或多個分支指令;檢測中止事件;一經(jīng)檢測到中止事件,在代碼高速緩存中將分支指令替換為一個或多個跳轉(zhuǎn)指令;在代碼高速緩存中執(zhí)行跳轉(zhuǎn)指令;恢復(fù)代碼高速緩存中的分支指令;中止循環(huán)過程;以及在解釋器中執(zhí)行一個或多個中止指令,這些中止指令與中止事件相關(guān)聯(lián)。
附圖說明
圖1描繪了示出JIT代碼高速緩存的示例示圖。
圖2描繪了示出循環(huán)過程中止的示例示圖。
圖3描繪了示出循環(huán)過程中止的另一示例示圖。
圖4(A)和圖4(B)描繪了示出用于循環(huán)過程中止的代碼布局(layout)的示例示圖。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于馬維爾國際貿(mào)易有限公司,未經(jīng)馬維爾國際貿(mào)易有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201480064229.X/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F7-00 通過待處理的數(shù)據(jù)的指令或內(nèi)容進(jìn)行運(yùn)算的數(shù)據(jù)處理的方法或裝置
G06F7-02 .比較數(shù)字值的
G06F7-06 .將單個記錄載體上的數(shù)據(jù)進(jìn)行排序、選擇、合并或比較的裝置
G06F7-22 .用于排序或合并在連續(xù)記錄載體
G06F7-38 .只利用數(shù)制表示,例如利用二進(jìn)制、三進(jìn)制、十進(jìn)制表示來完成計算的方法或裝置
G06F7-58 .隨機(jī)數(shù)或偽隨機(jī)數(shù)發(fā)生器
- 基于支持類的標(biāo)識來下載Java應(yīng)用的方法、系統(tǒng)和計算機(jī)程序產(chǎn)品
- 啟動JAVA應(yīng)用的方法及裝置
- Java虛擬機(jī)的管理方法、監(jiān)控系統(tǒng)和監(jiān)控代理模塊
- 一種運(yùn)行Java程序的方法和裝置
- 一種保護(hù)java程序的方法
- Java卡的Java代碼補(bǔ)丁方法
- 一種基于中間件架構(gòu)下java棧的多線程實現(xiàn)方法
- 一種支持JAVA卡補(bǔ)丁函數(shù)的智能卡
- 一種改進(jìn)的Java卡初始化方法和Java卡
- JavaEE平臺構(gòu)建方法、JavaEE平臺及云端系統(tǒng)





