嵌入式實(shí)時(shí)Java處理器及API系統(tǒng)的實(shí)現(xiàn)
發(fā)布時(shí)間:2020-07-09 12:42
【摘要】: 近年來(lái)嵌入式系統(tǒng)發(fā)展極其迅速,正逐步滲透于人類生活的各個(gè)方面,這對(duì)嵌入式系統(tǒng)的性能及開發(fā)效率也提出了更高的要求。和桌面系統(tǒng)的軟件開發(fā)相比,嵌入式軟件開發(fā)普遍還使用比較傳統(tǒng)的C/C++甚至匯編語(yǔ)言進(jìn)行,難以適應(yīng)嵌入式系統(tǒng)的迅猛發(fā)展,因此需要新的開發(fā)方法和開發(fā)手段來(lái)解決。Java語(yǔ)言的面向?qū)ο、跨平臺(tái)、語(yǔ)言級(jí)并發(fā)支持、安全等特性不僅使它在互聯(lián)網(wǎng)領(lǐng)域得到廣泛應(yīng)用,也引起了嵌入式領(lǐng)域研究人員的高度重視,他們希望能將Java語(yǔ)言改造成嵌入式及實(shí)時(shí)系統(tǒng)開發(fā)的主流語(yǔ)言來(lái)提高開發(fā)效率及增加系統(tǒng)安全性。 由于嵌入式系統(tǒng)多數(shù)為實(shí)時(shí)系統(tǒng),傳統(tǒng)Java技術(shù)應(yīng)用于嵌入式系統(tǒng)的主要不足之處表現(xiàn)為:由于Java虛擬機(jī)是在運(yùn)行中對(duì)引用到的類進(jìn)行動(dòng)態(tài)裝載、解析和連接,影響了系統(tǒng)的實(shí)時(shí)性;垃圾收集器(GC)的自動(dòng)運(yùn)行導(dǎo)致了任務(wù)執(zhí)行時(shí)間的不可預(yù)測(cè)性。針對(duì)傳統(tǒng)Java技術(shù)在實(shí)時(shí)方面的不足,Sun公司聯(lián)合IBM、Microware等公司制定了實(shí)時(shí)Java規(guī)范(RTSJ),為實(shí)時(shí)Java平臺(tái)的實(shí)現(xiàn)提供了參考。 隨著實(shí)時(shí)Java規(guī)范的推出,如何實(shí)現(xiàn)適用于嵌入式系統(tǒng)的高效實(shí)時(shí)Java平臺(tái)就成為了研究熱點(diǎn)。目前,常見(jiàn)的實(shí)時(shí)Java平臺(tái)實(shí)現(xiàn)方式有解釋方式(在實(shí)時(shí)操作系統(tǒng)RTOS之上用軟件方式來(lái)解釋執(zhí)行Java字節(jié)碼);提前編譯(字節(jié)碼被提前編譯生成機(jī)器碼或中間代碼,如C);硬件加速(用硬件方式執(zhí)行一部分常用字節(jié)碼來(lái)提高整體性能);硬件翻譯(用硬件單元把字節(jié)碼實(shí)時(shí)翻譯成機(jī)器碼)以及Java處理器方式(字節(jié)碼直接作為機(jī)器代碼在處理器硬件上執(zhí)行)。同其它實(shí)現(xiàn)方式相比,Java處理器免除了把Java字節(jié)碼轉(zhuǎn)換為機(jī)器代碼的工作同時(shí)還可以針對(duì)Java虛擬機(jī)特點(diǎn)提供特殊的硬件支持。因此具有能夠直接硬件執(zhí)行Java字節(jié)碼、執(zhí)行效率高、內(nèi)存占用少、功耗低等特點(diǎn),所以更適合用于資源受限的嵌入式設(shè)備。 目前國(guó)外已有一些針對(duì)嵌入式實(shí)時(shí)Java處理器的研究,如JOP、aJ-80、aJ-100及FemtoJava等。國(guó)內(nèi)研究機(jī)構(gòu)也有過(guò)一些針對(duì)Java處理器及Java芯片的研究,如JE-Java、JC104,但其重點(diǎn)是提高系統(tǒng)整體性能而不是實(shí)時(shí)性,一個(gè)原因也是因?yàn)楫?dāng)時(shí)實(shí)時(shí)Java規(guī)范尚未推出。 根據(jù)對(duì)國(guó)家自然科學(xué)基金項(xiàng)目—高可靠實(shí)時(shí)系統(tǒng)的計(jì)算平臺(tái)(SoPC)研究(基金號(hào):60703106)[1]的研究,本文設(shè)計(jì)了一種能在低成本FPGA芯片中實(shí)現(xiàn)的實(shí)時(shí)嵌入式Java處理器PRTEJ(Pipelined Real-Time Embedded Java Processor),目標(biāo)是實(shí)現(xiàn)具有實(shí)時(shí)特性的嵌入式Java處理器并對(duì)實(shí)時(shí)Java規(guī)范提供有效支持。該處理器實(shí)現(xiàn)基于FPGA的可六級(jí)流水的嵌入式硬件Java處理器,并定義了特殊的流水線流程、指令集、內(nèi)存管理機(jī)制。并通過(guò)對(duì)實(shí)時(shí)Java規(guī)范的分析,在內(nèi)存管理、CConvertor、API系統(tǒng)中,我們建立從硬件機(jī)制到軟件機(jī)制對(duì)RTSJ的支持。
【學(xué)位授予單位】:復(fù)旦大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2008
【分類號(hào)】:TP332
【圖文】:
2.2Java虛擬機(jī) 2.2.1Java虛擬機(jī)運(yùn)行時(shí)結(jié)構(gòu)圖2.1描述了Java虛擬機(jī)的運(yùn)行時(shí)結(jié)構(gòu),類裝載器子系統(tǒng)負(fù)責(zé)把用到的類從Class文件中讀取并裝載到Java虛擬機(jī)的運(yùn)行時(shí)數(shù)據(jù)區(qū)。執(zhí)行引擎通過(guò)和運(yùn)行時(shí)數(shù)據(jù)區(qū)的交互取得指令和數(shù)據(jù)并執(zhí)行。Java虛擬機(jī)的運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分為不同的區(qū)域,不同的數(shù)據(jù)被分配到不同的區(qū)域。有的數(shù)據(jù)區(qū)可以在多線程之間進(jìn)行共享,有的則不能。Cl掛、,文件類裝載器子系統(tǒng)回口困困因巧們,卜!致州!又執(zhí)行粼攀應(yīng)一本地方法庫(kù)圖2.1:JVM運(yùn)行時(shí)結(jié)構(gòu)類裝載器子系統(tǒng):類裝載器子系統(tǒng)負(fù)責(zé)查找并裝載Class文件到相應(yīng)的運(yùn)行時(shí)區(qū)域。它除了要定位和導(dǎo)入二進(jìn)制ClasS文件外,還必須負(fù)責(zé)驗(yàn)證被導(dǎo)入類的正確性,為類變量分配內(nèi)存空間,解析符號(hào)引用等工作。虛擬機(jī)本身提供的類裝載器稱為啟動(dòng)類裝載器,而用戶自己寫的叫做用戶自定義類裝載器。執(zhí)行引擎:執(zhí)行引擎負(fù)責(zé)從JVM運(yùn)行時(shí)區(qū)域中取出所需要的指令、數(shù)據(jù)并用軟件或硬件的方式執(zhí)行
月UTl口圖3.2:單親規(guī)則示意圖如圖3.2,線程Tl在內(nèi)存區(qū)域。中創(chuàng)建了一個(gè)對(duì)象X,在a中保存了X的引用變量X八。線程TZ在b中創(chuàng)建了一個(gè)對(duì)象Y,在a中保存了Y的引用變量Y人。單獨(dú)就T1和TZ來(lái)說(shuō),都符合對(duì)象引用規(guī)則。但圖3一1中,a的雙親分別是c和b,違犯了單親規(guī)則。假設(shè)T1線程退出c后,沒(méi)有其它線程使用,c被釋放掉。這時(shí)a中的XA就成了懸空引用。所以在多線程共享區(qū)域內(nèi)存的情況下
第3章PRTEJ處理器總體設(shè)計(jì)ual,5,0,0;根據(jù)方法起始地址獲得被調(diào)用方法的局部變度maxIocalsua一,6,o,o:max--一oea一s+廿=>Sp;在此點(diǎn)開始保存息rtua一,7,o,0;保存pCrtua一,s,o,o;保存其他信息rtual,9,o,o;保存LVrtua一,10,o,o:保存pre一研rtua一,11,0,0:保存Thisrtua一,12,o,o;繼續(xù)從方法鏡像中讀取執(zhí)行方法所需存器,異常表的信息不讀到寄存器,只要把起始地址和項(xiàng)數(shù)。ual,1,0,0;把方法鏡像當(dāng)前地址送Pc,下一周期將開
本文編號(hào):2747470
【學(xué)位授予單位】:復(fù)旦大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2008
【分類號(hào)】:TP332
【圖文】:
2.2Java虛擬機(jī) 2.2.1Java虛擬機(jī)運(yùn)行時(shí)結(jié)構(gòu)圖2.1描述了Java虛擬機(jī)的運(yùn)行時(shí)結(jié)構(gòu),類裝載器子系統(tǒng)負(fù)責(zé)把用到的類從Class文件中讀取并裝載到Java虛擬機(jī)的運(yùn)行時(shí)數(shù)據(jù)區(qū)。執(zhí)行引擎通過(guò)和運(yùn)行時(shí)數(shù)據(jù)區(qū)的交互取得指令和數(shù)據(jù)并執(zhí)行。Java虛擬機(jī)的運(yùn)行時(shí)數(shù)據(jù)區(qū)劃分為不同的區(qū)域,不同的數(shù)據(jù)被分配到不同的區(qū)域。有的數(shù)據(jù)區(qū)可以在多線程之間進(jìn)行共享,有的則不能。Cl掛、,文件類裝載器子系統(tǒng)回口困困因巧們,卜!致州!又執(zhí)行粼攀應(yīng)一本地方法庫(kù)圖2.1:JVM運(yùn)行時(shí)結(jié)構(gòu)類裝載器子系統(tǒng):類裝載器子系統(tǒng)負(fù)責(zé)查找并裝載Class文件到相應(yīng)的運(yùn)行時(shí)區(qū)域。它除了要定位和導(dǎo)入二進(jìn)制ClasS文件外,還必須負(fù)責(zé)驗(yàn)證被導(dǎo)入類的正確性,為類變量分配內(nèi)存空間,解析符號(hào)引用等工作。虛擬機(jī)本身提供的類裝載器稱為啟動(dòng)類裝載器,而用戶自己寫的叫做用戶自定義類裝載器。執(zhí)行引擎:執(zhí)行引擎負(fù)責(zé)從JVM運(yùn)行時(shí)區(qū)域中取出所需要的指令、數(shù)據(jù)并用軟件或硬件的方式執(zhí)行
月UTl口圖3.2:單親規(guī)則示意圖如圖3.2,線程Tl在內(nèi)存區(qū)域。中創(chuàng)建了一個(gè)對(duì)象X,在a中保存了X的引用變量X八。線程TZ在b中創(chuàng)建了一個(gè)對(duì)象Y,在a中保存了Y的引用變量Y人。單獨(dú)就T1和TZ來(lái)說(shuō),都符合對(duì)象引用規(guī)則。但圖3一1中,a的雙親分別是c和b,違犯了單親規(guī)則。假設(shè)T1線程退出c后,沒(méi)有其它線程使用,c被釋放掉。這時(shí)a中的XA就成了懸空引用。所以在多線程共享區(qū)域內(nèi)存的情況下
第3章PRTEJ處理器總體設(shè)計(jì)ual,5,0,0;根據(jù)方法起始地址獲得被調(diào)用方法的局部變度maxIocalsua一,6,o,o:max--一oea一s+廿=>Sp;在此點(diǎn)開始保存息rtua一,7,o,0;保存pCrtua一,s,o,o;保存其他信息rtual,9,o,o;保存LVrtua一,10,o,o:保存pre一研rtua一,11,0,0:保存Thisrtua一,12,o,o;繼續(xù)從方法鏡像中讀取執(zhí)行方法所需存器,異常表的信息不讀到寄存器,只要把起始地址和項(xiàng)數(shù)。ual,1,0,0;把方法鏡像當(dāng)前地址送Pc,下一周期將開
【共引文獻(xiàn)】
相關(guān)博士學(xué)位論文 前1條
1 柴志雷;Java實(shí)時(shí)性及嵌入式實(shí)時(shí)Java處理器研究[D];復(fù)旦大學(xué);2006年
相關(guān)碩士學(xué)位論文 前6條
1 王新雨;Java虛擬機(jī)異常機(jī)制及其實(shí)時(shí)性的研究與實(shí)現(xiàn)[D];江南大學(xué);2008年
2 南兆闊;嵌入式實(shí)時(shí)JAVA研究[D];江南大學(xué);2008年
3 程瀟;支持RTSJ的Java處理器的研究與設(shè)計(jì)[D];江南大學(xué);2008年
4 李陽(yáng);Java的實(shí)時(shí)性研究[D];江南大學(xué);2008年
5 徐志強(qiáng);Java虛擬機(jī)內(nèi)存管理及其實(shí)時(shí)性的研究[D];江南大學(xué);2009年
6 王雪冰;勝利油田井下器材管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D];天津大學(xué);2012年
本文編號(hào):2747470
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2747470.html
最近更新
教材專著