一種Java處理器的體系結(jié)構(gòu)設(shè)計(jì)與研究
發(fā)布時(shí)間:2020-06-14 19:46
【摘要】:隨著普適計(jì)算和移動(dòng)計(jì)算的發(fā)展,嵌入式系統(tǒng)得到越來越廣泛的應(yīng)用。各種嵌入式設(shè)備的不斷涌現(xiàn),對(duì)系統(tǒng)的可移植性和開發(fā)效率提出了更高的要求。與傳統(tǒng)的開發(fā)語(yǔ)言C/C++相比,java語(yǔ)言由于其具有可移植性,安全性能高以及簡(jiǎn)單易學(xué)等一系列優(yōu)勢(shì),得到了越來越廣泛的應(yīng)用。 然而由于java語(yǔ)言固有的解析執(zhí)行的特點(diǎn),其執(zhí)行效率也限制了其在實(shí)時(shí)領(lǐng)域的應(yīng)用。即使目前java虛擬機(jī)都引入了即時(shí)編譯技術(shù)(JIT),然而該技術(shù)是以消耗更多的內(nèi)存為代價(jià)的。在嵌入式系統(tǒng)內(nèi)存稀缺的狀況下,該技術(shù)實(shí)際給系統(tǒng)帶來的好處也是值得商榷的。同時(shí)java程序需要在實(shí)際執(zhí)行前,完成class文件加載和解析等一些列操作,也在一定程度上限制了系統(tǒng)的執(zhí)行效率。因此如何設(shè)計(jì)一種能夠提高java程序運(yùn)行效率的方案,成為現(xiàn)在研究的熱點(diǎn)和難點(diǎn)。 實(shí)時(shí)java平臺(tái)主要由執(zhí)行引擎和支持實(shí)時(shí)性的軟件環(huán)境組成。執(zhí)行引擎有多種實(shí)現(xiàn)方式,包括基于軟件的解析執(zhí)行;即時(shí)編譯;java硬件加速器以及java處理器等。根據(jù)國(guó)家自然科學(xué)基金項(xiàng)目---高可靠實(shí)時(shí)系統(tǒng)的計(jì)算平臺(tái)(SoPC)研究(基金號(hào):60703106)[1]。本研究小組設(shè)計(jì)并實(shí)現(xiàn)了一種Java處理器引擎——Jpor32(Java Processor Optimized for RTSJ)。該實(shí)時(shí)java平臺(tái)主要包括:class文件轉(zhuǎn)換器;Java處理器的實(shí)現(xiàn)以及相關(guān)類庫(kù)的實(shí)現(xiàn)。 在本文中,將詳細(xì)論述如何將不適合在硬件平臺(tái)直接執(zhí)行的class文件轉(zhuǎn)換為一種適合在硬件環(huán)境下執(zhí)行的文件。同時(shí)基于該種可執(zhí)行文件的結(jié)構(gòu),設(shè)計(jì)出一種高效的硬件執(zhí)行引擎來代替?zhèn)鹘y(tǒng)的java虛擬機(jī)的執(zhí)行,已達(dá)到加速java執(zhí)行的目的。同時(shí)還詳細(xì)描述了基于該平臺(tái)的垃圾收集庫(kù)的具體實(shí)現(xiàn)。
【學(xué)位授予單位】:復(fù)旦大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2011
【分類號(hào)】:TP368.1
【圖文】:
代替java虛擬機(jī)是不現(xiàn)實(shí)的,因此在我們的設(shè)計(jì)中,整個(gè)傳統(tǒng)的java虛擬機(jī)將被粗略的劃分為:dass文件轉(zhuǎn)換器部分和硬件執(zhí)行引擎部分,下兩章節(jié)將詳細(xì)的描述這兩部分的具體實(shí)現(xiàn)。圖2一1是整個(gè)java虛擬機(jī)的結(jié)構(gòu)框架圖。類加載子系統(tǒng)需要完成定位和導(dǎo)入二進(jìn)制文件外,還必須完成校驗(yàn)類的正確性,為類變量分配初始化的內(nèi)存,以及符號(hào)解析等一系列動(dòng)作。而這些步驟必須嚴(yán)格按照如下的順序進(jìn)行191:1.裝載—裝載相應(yīng)的二進(jìn)制數(shù)據(jù)。2.鏈接—執(zhí)行驗(yàn)證,準(zhǔn)備,解析等過程。首先其需要確保導(dǎo)入類型的正確性,為類變量分配內(nèi)存以及將相關(guān)的域初始化為默認(rèn)值。并且需要將符號(hào)引用轉(zhuǎn)換為直接引用。c/‘伏、/了/獷t、心爭(zhēng)r丫卜rr不下卜rr,rrr丫r丫卜卜‘r,李‘‘于護(hù)幾卜‘‘去...,‘..,琴代丁卜.卜.幾卜..幾.t.卜巨卜﨑﨑口.﨑﨑口..甘.卜.﨑..卜卜j毛一、夏生5轟aCksr勺atlVC一11C畜!lods導(dǎo);Ick、rLzn走i一 11edata公rCaSA丫戶7(211、1亡刀了clh(夕‘li
加載階段存儲(chǔ)在方法區(qū),而在實(shí)際執(zhí)行g(shù)etfield指令時(shí),虛擬機(jī)需要以index為關(guān)鍵字在方法區(qū)中屬于該類的數(shù)據(jù)結(jié)構(gòu)中查找該域的實(shí)際偏移量,從而最終完成取數(shù)據(jù)操作。圖2一2是heap區(qū)和method區(qū)常見的一種聯(lián)系方式。 2.3Java棧在Java程序中每一個(gè)線程都會(huì)對(duì)應(yīng)于一個(gè)屬于自己的棧。棧中不僅包括了方法的局部變量,入口和返回參數(shù)區(qū)域,以及方法調(diào)用需要保存的相關(guān)數(shù)據(jù),更為重要的是 javabytecode都是基于棧操作的,因此與傳統(tǒng)的基于寄存器的體系結(jié)構(gòu)不同,棧充當(dāng)
本文編號(hào):2713268
【學(xué)位授予單位】:復(fù)旦大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2011
【分類號(hào)】:TP368.1
【圖文】:
代替java虛擬機(jī)是不現(xiàn)實(shí)的,因此在我們的設(shè)計(jì)中,整個(gè)傳統(tǒng)的java虛擬機(jī)將被粗略的劃分為:dass文件轉(zhuǎn)換器部分和硬件執(zhí)行引擎部分,下兩章節(jié)將詳細(xì)的描述這兩部分的具體實(shí)現(xiàn)。圖2一1是整個(gè)java虛擬機(jī)的結(jié)構(gòu)框架圖。類加載子系統(tǒng)需要完成定位和導(dǎo)入二進(jìn)制文件外,還必須完成校驗(yàn)類的正確性,為類變量分配初始化的內(nèi)存,以及符號(hào)解析等一系列動(dòng)作。而這些步驟必須嚴(yán)格按照如下的順序進(jìn)行191:1.裝載—裝載相應(yīng)的二進(jìn)制數(shù)據(jù)。2.鏈接—執(zhí)行驗(yàn)證,準(zhǔn)備,解析等過程。首先其需要確保導(dǎo)入類型的正確性,為類變量分配內(nèi)存以及將相關(guān)的域初始化為默認(rèn)值。并且需要將符號(hào)引用轉(zhuǎn)換為直接引用。c/‘伏、/了/獷t、心爭(zhēng)r丫卜rr不下卜rr,rrr丫r丫卜卜‘r,李‘‘于護(hù)幾卜‘‘去...,‘..,琴代丁卜.卜.幾卜..幾.t.卜巨卜﨑﨑口.﨑﨑口..甘.卜.﨑..卜卜j毛一、夏生5轟aCksr勺atlVC一11C畜!lods導(dǎo);Ick、rLzn走i一 11edata公rCaSA丫戶7(211、1亡刀了clh(夕‘li
加載階段存儲(chǔ)在方法區(qū),而在實(shí)際執(zhí)行g(shù)etfield指令時(shí),虛擬機(jī)需要以index為關(guān)鍵字在方法區(qū)中屬于該類的數(shù)據(jù)結(jié)構(gòu)中查找該域的實(shí)際偏移量,從而最終完成取數(shù)據(jù)操作。圖2一2是heap區(qū)和method區(qū)常見的一種聯(lián)系方式。 2.3Java棧在Java程序中每一個(gè)線程都會(huì)對(duì)應(yīng)于一個(gè)屬于自己的棧。棧中不僅包括了方法的局部變量,入口和返回參數(shù)區(qū)域,以及方法調(diào)用需要保存的相關(guān)數(shù)據(jù),更為重要的是 javabytecode都是基于棧操作的,因此與傳統(tǒng)的基于寄存器的體系結(jié)構(gòu)不同,棧充當(dāng)
【參考文獻(xiàn)】
相關(guān)期刊論文 前2條
1 柴志雷;高麗強(qiáng);陳章龍;涂時(shí)亮;;一種用于硬實(shí)時(shí)Java處理器的類轉(zhuǎn)換器設(shè)計(jì)及實(shí)現(xiàn)[J];小型微型計(jì)算機(jī)系統(tǒng);2006年12期
2 葉新棟;柴志雷;涂時(shí)亮;;一種Java處理器的體系結(jié)構(gòu)設(shè)計(jì)與研究[J];小型微型計(jì)算機(jī)系統(tǒng);2011年03期
本文編號(hào):2713268
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2713268.html
最近更新
教材專著