欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于mips的java虛擬機(jī)硬件無(wú)關(guān)化平臺(tái)及其無(wú)關(guān)化改進(jìn)方法

文檔序號(hào):6525460閱讀:253來(lái)源:國(guó)知局
一種基于mips的java虛擬機(jī)硬件無(wú)關(guān)化平臺(tái)及其無(wú)關(guān)化改進(jìn)方法
【專利摘要】本發(fā)明公開了一種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái)及其無(wú)關(guān)化改進(jìn)方法,該平臺(tái)包括:處理器抽象引擎模塊、內(nèi)存管理接口模塊、任務(wù)調(diào)度和本地調(diào)用模塊、編譯引擎、輸入/輸出模塊等,改進(jìn)方法包括如下步驟:1、啟動(dòng)虛擬機(jī),并處理命令行輸入;2、初始化虛擬機(jī)運(yùn)行環(huán)境;3、調(diào)入并加載Class文件;4、格式化內(nèi)存存儲(chǔ)frame;5、執(zhí)行Java程序。本發(fā)明具備的有益技術(shù)效果是:以清晰的模塊化的方式設(shè)計(jì)了虛擬機(jī)的HAL層,方便了平臺(tái)遷移,實(shí)現(xiàn)了硬件接口平臺(tái)無(wú)關(guān)化,提高了開發(fā)效率,降低了遷移難度。
【專利說(shuō)明】—種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái)及其無(wú)關(guān)化改進(jìn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái)及其無(wú)關(guān)化改進(jìn)方法?!颈尘凹夹g(shù)】
[0002]Java源程序經(jīng)過編譯器編譯后生成由字節(jié)碼組成的類文件class,執(zhí)行時(shí)首先由類裝載器裝入來(lái)自類文件的字節(jié)碼,經(jīng)過檢驗(yàn)器安全驗(yàn)證后,由Java虛擬機(jī)讀取字節(jié)碼,轉(zhuǎn)換為特定的平臺(tái)指令,并在相應(yīng)的CPU中運(yùn)行。
[0003]Java虛擬機(jī)是Java程序運(yùn)行的心臟,Java的許多優(yōu)異特性都來(lái)源于Java虛擬機(jī)的概念和實(shí)現(xiàn),Java虛擬機(jī)是一種建立在實(shí)際處理器基礎(chǔ)上的抽象的計(jì)算機(jī),Java虛擬機(jī)運(yùn)行的是從Class類文件中讀入的字節(jié)碼,所以Java虛擬機(jī)也可以看成是以Java字節(jié)碼為指令集的軟件CPU。
[0004]在Java平臺(tái)的結(jié)構(gòu)中,Java虛擬機(jī)處在核心的位置,它的下方是移植接口,移植接口有2部分,其中依賴于平臺(tái)的部分為適配器,Java虛擬機(jī)通過移植接口在具體的平臺(tái)和操作系統(tǒng)上實(shí)現(xiàn)。
[0005]在最初的Java代碼是解釋執(zhí)行的,當(dāng)虛擬機(jī)發(fā)現(xiàn)某個(gè)方法或代碼塊運(yùn)行特別頻繁,就會(huì)把這些代碼認(rèn)定為“熱點(diǎn)代碼”(Hot Spot Code),為了提高熱點(diǎn)代碼的執(zhí)行效率,在運(yùn)行時(shí),虛擬機(jī)將會(huì)把這些代碼編譯成與本地平臺(tái)相關(guān)的機(jī)器碼,并進(jìn)行各種層次的優(yōu)化,完成這個(gè)任務(wù)的編譯器稱為即時(shí)編譯器JIT。
[0006]在現(xiàn)有的Hotspot編譯器中,Client Compiler實(shí)現(xiàn)的是一個(gè)簡(jiǎn)單的快速三段式編譯器,主要的關(guān)注點(diǎn)在于局部性的優(yōu)化,而放棄了許多耗時(shí)較長(zhǎng)的全局優(yōu)化手段。
[0007]在第一個(gè)階段,一個(gè)平臺(tái)獨(dú)立的前端將字節(jié)碼構(gòu)造成一種高級(jí)中間代碼表示HIR。HIR使用靜態(tài)單分配SSA的形式來(lái)代表代碼值,這可以使得一些在HIR的構(gòu)造過程之中和之后進(jìn)行的優(yōu)化動(dòng)作更容易實(shí)現(xiàn)。在此之前編譯器會(huì)在字節(jié)碼上完成一部分基礎(chǔ)優(yōu)化,如方法內(nèi)聯(lián),常量傳播等優(yōu)化將會(huì)在字節(jié)碼被構(gòu)造成HIR之前完成。
[0008]在第二階段,一個(gè)平臺(tái)相關(guān)的后端從HIR中產(chǎn)生低級(jí)中間代碼表示LIR,而在此之前會(huì)在HIR上完成另外一些優(yōu)化,如空值檢查消除,范圍檢查消除等,以便讓HIR達(dá)到更高效的代碼表示形式。
[0009]最后的階段是在平臺(tái)相關(guān)的后端使用線性掃描算法在LIR上分配寄存器,并在LIR上做窺孔優(yōu)化,然后產(chǎn)生機(jī)器代碼。
[0010]在傳統(tǒng)的虛擬機(jī)設(shè)計(jì)中,這3個(gè)階段的代碼和處理器的匯編指令集密切相關(guān),有大量的處理器相關(guān)代碼集中于CPU和0S_CPU目錄中,經(jīng)粗略統(tǒng)計(jì),涉及的代碼量達(dá)到110776行。這造成了針對(duì)一款新的CPU移植的工作量非常巨大,移植后的代碼魯棒性和健壯性都有巨大的隱患。

【發(fā)明內(nèi)容】
[0011]本發(fā)明的目的在于:通過有針對(duì)性的對(duì)傳統(tǒng)虛擬機(jī)移植方案進(jìn)行研究,針對(duì)傳統(tǒng)的hotspot歷史遺留代碼多,各個(gè)代碼塊之間耦合程度相當(dāng)高,涉及到CPU細(xì)節(jié)多,且匯編代碼量大,代碼之間調(diào)用關(guān)系復(fù)雜造成的移植工作量大、移植難度大且移植后魯棒性降低的問題,在MIPS平臺(tái)的移植中,提供一種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái)及其無(wú)關(guān)化改進(jìn)方法,解決現(xiàn)有技術(shù)存在的缺憾。
[0012]本發(fā)明采用如下技術(shù)方案實(shí)現(xiàn):
[0013]一種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái),其特征在于,該平臺(tái)包括:
[0014]處理器抽象引擎模塊:包括基于堆棧的處理器和基于寄存器的處理器,所述處理器抽象引擎模塊遵循基于堆棧的傳統(tǒng),提供基于寄存器的執(zhí)行引擎來(lái)模擬具體硬件的實(shí)現(xiàn),提供堆棧調(diào)用的抽象接口 ;
[0015]內(nèi)存管理接口模塊:用于負(fù)責(zé)內(nèi)存的分配和回收;
[0016]任務(wù)調(diào)度和本地調(diào)用模塊:采取適配策略,直接實(shí)現(xiàn)抽象接口和原h(huán)otspot的代碼適配器;
[0017]編譯引擎:該編譯引擎提取編譯接口,使用固定的IR中間碼來(lái)代替原有的HIR和LIR,最后根據(jù)新的接口,把編譯部分單獨(dú)提取出來(lái)編譯成一個(gè)獨(dú)立的模塊來(lái)調(diào)用。
[0018]進(jìn)一步的,還包括輸入/輸出模塊,所述輸入/輸出模塊采取適配策略,直接實(shí)現(xiàn)抽象接口和原h(huán)otspot代碼的適配器。
[0019]一種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái)改進(jìn)方法,其特征在于,該方法包括如下步驟:
[0020]虛擬機(jī)從讀入Class文件到執(zhí)行完畢的全過程為一個(gè)生命周期,該周期按功能不同,可分為五個(gè)階段:
[0021]1、啟動(dòng)虛擬機(jī),并處理命令行輸入;
[0022]2、初始化虛擬機(jī)運(yùn)行環(huán)境;
[0023]3、調(diào)入并加載Class文件;
[0024]4、格式化內(nèi)存存儲(chǔ)frame ;
[0025]5、執(zhí)行 Java 程序。
[0026]本發(fā)明具備的有益技術(shù)效果是:以清晰的模塊化的方式設(shè)計(jì)了虛擬機(jī)的HAL(硬件抽象層,下同),方便了平臺(tái)遷移,實(shí)現(xiàn)了硬件接口平臺(tái)無(wú)關(guān)化,提高了開發(fā)效率,降低了遷移難度。
【專利附圖】

【附圖說(shuō)明】
[0027]圖1是改進(jìn)前的hotspot架構(gòu)。
[0028]圖2是本發(fā)明重構(gòu)了的架構(gòu)。
【具體實(shí)施方式】
[0029]通過下面對(duì)實(shí)施例的描述,將更加有助于公眾理解本發(fā)明,但不能也不應(yīng)當(dāng)將 申請(qǐng)人:所給出的具體的實(shí)施例視為對(duì)本發(fā)明技術(shù)方案的限制,任何對(duì)部件或技術(shù)特征的定義進(jìn)行改變和/或?qū)φw結(jié)構(gòu)作形式的而非實(shí)質(zhì)的變換都應(yīng)視為本發(fā)明的技術(shù)方案所限定的保護(hù)范圍。[0030]圖1是改進(jìn)前的hotspot架構(gòu),圖中可以清晰地看出,解釋器和編譯器一層層的調(diào)用0S_CPU和CPU模塊,幾個(gè)模塊交織在一起。由圖2可以看出,在重構(gòu)了的架構(gòu)中解釋器和編譯器作為獨(dú)立的模塊已經(jīng)被剝離出來(lái)。
[0031]本發(fā)明的優(yōu)選實(shí)施例是:
[0032]一種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái),該平臺(tái)包括:
[0033]處理器抽象引擎模塊:根據(jù)運(yùn)算數(shù)據(jù)交換平臺(tái)的不同,主要有基于堆棧的處理器和基于寄存器的處理器兩種抽象引擎,在堆棧建立在內(nèi)存的情況下,前者運(yùn)行時(shí)對(duì)系統(tǒng)資源的消耗要遠(yuǎn)小于后者,盡管后者的運(yùn)行速度要快于前者,但因?yàn)閔otspot的傳統(tǒng)架構(gòu)基于堆棧模式,因此本處理器抽象引擎仍然遵循基于堆棧的傳統(tǒng),提供基于寄存器的執(zhí)行引擎來(lái)模擬具體硬件的實(shí)現(xiàn),提供堆棧調(diào)用的抽象接口來(lái)保持在處理函數(shù)調(diào)用和遞歸等問題上的傳統(tǒng)優(yōu)勢(shì)。虛擬寄存器是系統(tǒng)的核心,MIPS虛擬機(jī)通過寄存器之間的運(yùn)算來(lái)執(zhí)行字節(jié)碼指令,在本實(shí)施例中根據(jù)多款CPU的共同點(diǎn)抽象出統(tǒng)一的標(biāo)準(zhǔn)寄存器接口,如通用寄存器用來(lái)存儲(chǔ)和轉(zhuǎn)換數(shù)據(jù)和地址,指針寄存器指向堆棧段的棧頂位置,段寄存器則標(biāo)識(shí)出代碼段,數(shù)據(jù)段和堆棧段之間的界限。
[0034]內(nèi)存管理接口模塊:程序指令和數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式有兩種:大端和小端。大端是指數(shù)據(jù)的高位字節(jié)存放在內(nèi)存中的低位地址中;小端則相反,數(shù)據(jù)的低位字節(jié)存放在內(nèi)存中的低位地址中。內(nèi)存管理負(fù)責(zé)內(nèi)存的分配和回收問題,由于Java語(yǔ)言的規(guī)定顯示內(nèi)存管理法EMM并不適用于虛擬機(jī),自動(dòng)內(nèi)存管理法AMM的實(shí)現(xiàn)接口是本方法所關(guān)注的重點(diǎn)。為了提高內(nèi)存的使用效率,在虛擬內(nèi)存的管理上采取先預(yù)讀后分配的原則來(lái)開辟虛擬內(nèi)存,即先對(duì)字節(jié)碼文件的大小進(jìn)行分析,根據(jù)其大小再?gòu)奈锢韮?nèi)存中分配足夠的內(nèi)存作為虛擬內(nèi)存,如果剩余的物理內(nèi)存無(wú)法滿足需要,則退出本次分配。
[0035]任務(wù)調(diào)度和本地調(diào)用模塊:原系統(tǒng)的模塊設(shè)計(jì)成熟度比較高,在本實(shí)施例中采取適配策略,直接實(shí)現(xiàn)抽象接口和原h(huán)otspot的代碼適配器。
[0036]編譯引擎:當(dāng)虛擬機(jī)在混合模式下解釋運(yùn)行某一段Java代碼達(dá)到一定的次數(shù)以后,會(huì)啟動(dòng)編譯模式,把經(jīng)常運(yùn)行的代碼編譯后,進(jìn)行OSR操作,以后每次運(yùn)行都會(huì)進(jìn)入編譯后的代碼,提高運(yùn)行效率。在舊版虛擬機(jī)代碼中,本模塊是涉及到匯編代碼最多的部分,為了達(dá)到模塊化的效果,首先提取編譯接口,其次使用固定的IR中間碼來(lái)代替原有的HIR和LIR,減少運(yùn)行的層次和復(fù)雜度。最后根據(jù)新的接口,把編譯部分單獨(dú)提取出來(lái)編譯成一個(gè)獨(dú)立的模塊來(lái)調(diào)用,即達(dá)到了高度的模塊化,又方便了對(duì)編譯引擎的優(yōu)化和替換。
[0037]在本實(shí)施例中,還包括輸入/輸出模塊,虛擬機(jī)依托于宿主平臺(tái),因此輸入/輸出功能實(shí)現(xiàn)相對(duì)較簡(jiǎn)單,在系統(tǒng)調(diào)用基礎(chǔ)上的標(biāo)準(zhǔn)輸入/輸出即可勝任。在本方案中,輸入/輸出模塊采取適配策略,直接實(shí)現(xiàn)抽象接口和原h(huán)otspot代碼的適配器,雖然運(yùn)算速度有所限制,但無(wú)需接觸機(jī)器級(jí)的中斷調(diào)用和輸入/輸出操作。
[0038]一種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái)改進(jìn)方法,該方法包括如下步驟:
[0039]虛擬機(jī)從讀入Class文件到執(zhí)行完畢的全過程為一個(gè)生命周期,該周期按功能不同,可分為五個(gè)階段:
[0040]1、啟動(dòng)虛擬機(jī),并處理命令行輸入;
[0041 ] 2、初始化虛擬機(jī)運(yùn)行環(huán)境;
[0042]3、調(diào)入并加載Class文件;[0043]4、格式化內(nèi)存存儲(chǔ)frame ;
[0044]5、執(zhí)行 Java 程序。
[0045]其中第二階段和第五階段是整個(gè)程序運(yùn)行的核心。
[0046]在MIPS平臺(tái)移植hotspot的過程中,在本實(shí)施例中所用的方法產(chǎn)生HAL層進(jìn)行跨CPU的遷移,大大縮短了遷移時(shí)間,取得了良好的效果,在實(shí)現(xiàn)中使用的模塊設(shè)計(jì)如下所示:
[0047]HALMemoryManager:內(nèi)存管理抽象接口
[0048]HALStack:堆棧接 口
[0049]HALCodeBuffer:代碼緩沖區(qū)接口
[0050]HALCompiler:編譯引擎抽象接口
[0051]HALregister:處理器寄存及抽象接口
[0052]通過使用以上接口重構(gòu)原h(huán)otspot代碼,并把編譯引擎模塊化的方法,順利完成了平臺(tái)的遷移工作,并得到了一組通用的硬件接口實(shí)現(xiàn)。
[0053]本發(fā)明以清晰的模塊化的方式設(shè)計(jì)了虛擬機(jī)的HAL層,方便了平臺(tái)遷移,實(shí)現(xiàn)了硬件接口平臺(tái)無(wú)關(guān)化,提高了開發(fā)效率,降低了遷移難度。本發(fā)明的核心是Java Hotspot虛擬機(jī)中以模塊化的抽象硬件HAL層隔離實(shí)際的硬件層。
[0054]當(dāng)然,本發(fā)明還可以有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員可以根據(jù)本發(fā)明做出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái),其特征在于,該平臺(tái)包括: 處理器抽象引擎模塊:包括基于堆棧的處理器和基于寄存器的處理器,所述處理器抽象引擎模塊遵循基于堆棧的傳統(tǒng),提供基于寄存器的執(zhí)行引擎來(lái)模擬具體硬件的實(shí)現(xiàn),提供堆棧調(diào)用的抽象接口; 內(nèi)存管理接口模塊:用于負(fù)責(zé)內(nèi)存的分配和回收; 任務(wù)調(diào)度和本地調(diào)用模塊:采取適配策略,直接實(shí)現(xiàn)抽象接口和原h(huán)otspot的代碼適配器; 編譯引擎:該編譯引擎提取編譯接口,使用固定的IR中間碼來(lái)代替原有的HIR和LIR,最后根據(jù)新的接口,把編譯部分單獨(dú)提取出來(lái)編譯成一個(gè)獨(dú)立的模塊來(lái)調(diào)用。
2.根據(jù)權(quán)利要求1所述的基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái),其特征在于,還包括輸入/輸出模塊,所述輸入/輸出模塊采取Adapter的策略,直接實(shí)現(xiàn)抽象接口和原h(huán)otspot代碼的適配器。
3.一種基于MIPS的JAVA虛擬機(jī)硬件無(wú)關(guān)化平臺(tái)改進(jìn)方法,其特征在于,該方法包括如下步驟: 虛擬機(jī)從讀入Class文件到執(zhí)行完畢的全過程為一個(gè)生命周期,該周期按功能不同,可分為五個(gè)階段: (O啟動(dòng)虛擬機(jī),并處理命令行輸入; (2)初始化虛擬機(jī)運(yùn)行環(huán)境; (3)調(diào)入并加載Class文件; (4)格式化內(nèi)存存儲(chǔ)frame; (5)執(zhí)行Java程序。
【文檔編號(hào)】G06F9/455GK103777997SQ201310723797
【公開日】2014年5月7日 申請(qǐng)日期:2013年12月25日 優(yōu)先權(quán)日:2013年12月25日
【發(fā)明者】王定健, 陳魯, 符興斌, 李鎖在, 劉向軍, 黃明, 李亮, 胡堅(jiān)升, 李賀, 徐志亮, 劉國(guó)強(qiáng), 韓鵬, 鄭永飛, 孫樹剛, 胡春玲, 魯振, 王偉, 劉濤, 張志剛, 孟璐 申請(qǐng)人:中軟信息系統(tǒng)工程有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
海淀区| 龙门县| 繁峙县| 临泉县| 宣武区| 华亭县| 沧源| 白山市| 军事| 太白县| 兴安县| 阳新县| 增城市| 阳江市| 恩施市| 濉溪县| 广灵县| 绥江县| 岳池县| 峡江县| 南靖县| 格尔木市| 环江| 青川县| 河东区| 会同县| 曲水县| 竹北市| 永嘉县| 兴城市| 宝应县| 班玛县| 洞口县| 铅山县| 乐昌市| 乐陵市| 通江县| 龙口市| 庆安县| 九台市| 龙川县|