Java协同处理器上之虚拟机器_第1页
Java协同处理器上之虚拟机器_第2页
Java协同处理器上之虚拟机器_第3页
Java协同处理器上之虚拟机器_第4页
Java协同处理器上之虚拟机器_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java協同處理器上之虛擬機器Java Virtual Machine on ARM with CCL Java Coprocessor摘要本篇論文首先描描述從軟體研研發人員的角角度, 和CCPU團隊共共同製定Jaava協同處處理器時, 所進行的研研究方法及發發現. 本團團隊將Javva虛擬機器器移植至ARRM 7搭配配Java協協同處理器之之平台, 並並進行效能提提升, 效果果可達到8倍倍.關鍵詞Java Viirtuall Machhine JJava虛擬擬機器Java Cooproceessor Java協協同處理器ARM ARMM處理器1. 前言2. Methhodoloogy (SS

2、teps)2.1 決定定支援的位元元碼2.2 效能預預估2.3 isssues3. Encoounterred Prroblemms4. 大函式框框的處理機制制5. 指令摺疊疊(Paull)前言個式言平碼性傳統的程程式語言,原原始碼經由編編譯器轉換成成某處理器特特定的機器碼碼,該機器碼碼只能在特定定的處理器上上執行。如果果想在不同的的處理器上執執行同樣的程程式,必須再再度使用編譯譯器將原始碼碼轉換成另一一處理器之機機器碼。語平則編始位位是器而器執a可碼一轉處令a語位可硬任統只存v器語在度式好可處行v言的須v器機後理多續是va器執不位器續加a作a本以式是理alJps可而配理no及e8-於二處ao

3、e)配理平主模要v透理J同醒直a碼iiJe此類內器e sr於之處記J元即v翻理碼的la的R電通所發表過獨v這器不另器可可成是理系工使花這的所v理這器可理之使要工是較的協所處RD設計方法2.1 決定支支援的位元碼碼首先我們必須決決定Javaa器位支碼部下果例在雜有理理JJava同行而間)成之3.4. 大函式框框的處理機制制由Java協同同處理器對於於堆疊快取的的設計所致,運運行於其上之之Java虛虛擬機器僅能能支援函式框框大小(該函函式之區域變變數,框節構構及最大堆疊疊的總合) 在60個項項目以下的JJava函式式。但在Jaava程式的的執行過程中中,少數的情情況下會遇到到函式框大於於60的Ja

4、ava函式,因因此我們的KKVM必須透透過軟體的方方式來解決這這個問題。當當函式框大於於60,以下下稱為大函式式框,其他情情況則稱為小小函式框。我們需要設計及及修改的地方方包括了:Java協同處處理器對於大大函式框的處處理執行緒的切換與pushFrrame,ppopFraame,thhrowExxceptiion相關的的部分4.1 Javva協同處理理器對於大函函式框的處理理a協同之器元Saivo被J協同同到之會遇理才表之處的原v協同此非而被J協同同到碼接交格理函處式O此利)函式式框運行於非而函式框運運行於O在KVM中針針對大函式框框我們增加了了幾個全域變變數來儲存大大函式框的執執行狀態,分分

5、別是lp_globaal,sp_globaal,fp_globaal,各代表表大函式框執執行時的區域域變數指標,堆堆疊頂端指標標,目前函式式框指標(ccurrennt fraame poointerr)。另外亦亦增加了一FFSO變數,其其意義等同於於協同同態之元,而其存在在是為了加速速用,可不必必每次都得透透過a協同介F,可可節省協同處的當虛擬機器遇到到函式呼叫之之位元碼時(invokkevirttual, invokkespeccial, invokkestattic, iinvokeeinterrface),若經判斷斷必須進入大大函式框之狀狀態,便會將將Java協協同處理器的的堆疊快取清清

6、空,存入記記憶體中,並並且抑能堆疊疊快取,設定定Java協協同處理器,讓讓她進入大函函式框的執行行狀態。此後後之堆疊存取取便由軟體來來負責,執行行位元碼的時時候還是透過過JAExeecuteJJava,只只不過在大函函式框的執行行模式下,JJava協同同處理器並不不會真的去執執行位元碼,只只是按照一般般小函式框的的模式把程式式計數器的值值作累加,也也把該位元碼碼對應的函式式指標傳遞給給KVM,讓讓虛擬機器來來執行該位元元碼。另外需要修改JJava協同同處理器的介介面函式,原原本直接對JJava 協協同處理器下下命令的動作作,現在必須須判斷是大函函式框或是小小函式框而採採取不同的動動作。JAPu

7、shSStack,JJAPopSStack,JJAWritteStacckEntrry,JARReadSttackEnntry必須須增加FSOO的判斷式來來決定要對送送出協同處理理器指令(mmcr/mrrc)請Jaava協同處處理器做處理理或是直接對對記憶體進行行操作。除此此之外還有JJAReaddLocallVaribbale和JJAWritteLocaalVariibale,JJAReaddFrameeEntryy,JAWrriteFrrameEnntry亦必必須加入FSSO的判斷式式。另外geetSP322(),geetLP322(),geetFP322()這三個個函式,當遇遇到大函式框

8、框時,就改成成直接傳回ssp_gloobal,llp_gloobal,ffp_gloobal。透過修改Javva協同處理理器的介面,好好處就是可以以讓處理大函函式框和小函函式框的程式式碼幾乎是一一樣的,因為為判斷的部分分在介面的部部分處理掉了了。4.2 執行緒緒的切換主要是修改thhread.c中的looadExeecutioonEnviironmeent函式,執執行JALooadThrreadCoontextt之後如果LLoad進來來的執行緒是是在大函式框框中執行,那那麼必須將ssp,fp,llp,設定給給sp_gllobal,ffp_gloobal,llp_gloobal,並並且將FSOO

9、設為 1。4.3 與puushFraame,poopFramme,thrrowExcceptioon相關的部部分這部分定義在fframe.c裡,除了了pushFFrame和和popFrrame這兩兩個函式之外外還有excceptioon處理的部部分,fraame.c中中的throowExceeptionn。根據目前的函式式是大函式框框或小函式框框,以及即將將執行的函式式是大函式框框或小函式框框,可以分成成四種情況。小函式框切換到到大函式框小函式框切換到到小函式框大函式框切換到到大函式框大函式框切換到到小函式框當進行函式呼叫叫的處理時,在在pushFFrame 函式中必須須考慮到這四四種情況。當

10、當進行函式返返回的處理時時,在poppFramee函式中亦必必須考慮到這這四種情況。此此外,在進行行例外處理時時,在thrrowExcceptioon函式中亦亦必須考慮到到這四種情況況。虛擬機器中,ppopFraame函式的的處理方式如如下所述:透過FSO的值值,我們可以以知道目前執執行的函式屬屬於大函式框框或是小函式式框。由大函式框返回回大函式框當目前處於大函函式框的狀態態,由於Jaava堆疊都都在記憶體中中,所以透過過fp_gllobal指指向框結構中中的prevviousFFp,就可以以知道之前的的函式是大函函式框或是小小函式框。此此時之前的函函式亦是大函函式框,因此此堆疊仍然存存在記憶

11、體中中,我們只需需調整sp_globaal,fp_globaal,lp_globaal,設定CCP,IP之之後便完成ppopFraame的動作作。由大函式框返回回小函式框若之前的函式是是小函式框,則則我們取得之之前的函式的的sp,lpp,fp之後後必須將之轉轉成7bitt的格式放到到CurreentThrread的JJA_CTRRL變數,取取消FSO 位元,打開開SPILLL_FILLL_BIT,再再呼叫loaadExeccutionnEnvirronmennt將這些變變數設定到JJava協同同處理器之中中,設定CPP,IP便完完成了SmaallFraame的設定定。由小函式框返回回小函式框若

12、FSO的值為為0,我們可可得知目前是是小函式框,透透過硬體取得得之前的prreviouusFp可以以得知之前的的函式是大函函式框或是小小函式框。若若是小函式框框,則按照JJava協同同處理器的設設計,這是預預設的情況,透透過硬體的指指令便可以完完成。由小函式框返回回大函式框若之前是大函式式框,則需呼呼叫storreExeccutionnEnvirronmennt將整個JJava 協協同處理器包包含的堆疊快快取清空,存存放至記憶體體中,設定ssp_gloobal,ffp_gloobal,llp_gloobal,CCP,IP之之後便完成ppop動作。虛擬機器中,ppushFrrame的處處理情形如

13、下下所述:透過FSO的值值,可得知目目前的函式屬屬於大框函式式或是小框函函式。計數下下一個函式框框的大小(最最大堆疊數加加上區域變數數個數加上框框結構之大小小)便可得知知下一個函式式屬於大框函函式或是小框框函式。由大框函式呼叫叫大框函式由於堆疊已放於於記憶體中,因因此設定新的的函式框,調調整 fp_globaal,sp_globaal,lp_globaal,設定JJava協同同處理器新的的CP,IPP,便完成ppushFrrame的動動作。由大框函式呼叫叫小框函式此時需要進入硬硬體執行的模模式,必須設設定CurrrentThhread的的JA_CTTRL,將新新的sp,llp,fp轉轉成7 b

14、iits設定至至Java協協同處理器,關關掉FSO位位元,開啟SSPILL_FILL_BIT,將將FSO變數數設為0,設設定新的函式式框,設定硬硬體 CP,IIP之後,呼呼叫loaddExecuutionEEnviroonmentt,讓Javva協同處理理器重新開始始執行。由小框函式呼叫叫大框函式由於要進入大框框函式,因此此需呼叫sttoreExxecutiionEnvvironmment將堆堆疊快取清空空,並存放至至記憶體中,設設定新的函式式框,調整llp_gloobal,ffp_gloobal,ssp_gloobal,開開啟FSO位位元,關掉SSPILL_FILL_BIT,將將FSO變數數

15、設為1,如如此便完成呼呼叫BigFFrame的的動作。由小框函式呼叫叫小框函式這是最單純的情情況,設定JJava協同同處理器的ttmpregg0,tmppreg1,ttmpregg2後呼叫JJAPushhFramee便完成。虛擬機器中,tthrowEExcepttion處理理情況如下所所述:當Excepttion發生生時,首先呼呼叫storreExeccutionnEnvirronmennt將堆疊快快取清空,並並存放至記憶憶體中,再由由記憶體中的的資料來處理理。在找尋例例外處理函式式(exceeptionn handdler)的的過程中,我我們可能會一一直推出(ppop)函式式框,由於這這時候

16、是在記記憶體中處理理,所以不論論目前處於大大框函式或是是小框函式,處處理方式皆相相同。如果找找到了例外處處理函式,虛虛擬機器需要要執行該函式式框之例外處處理函式,此此時便要重新新進行設定,讓讓Java協協同處理器可可以執行大框框函式及小框框函式。之前前在不斷推出出函式框的過過程中,透過過函式框中的的previiousFPP,我們可以以得知要進入入的函式是大大框函式或是是小框函式,因因此當找到例例外處理函式式時,有兩種種可能的狀況況需要處理:例外處理函式位位於大框函式式內由於目前的Jaava堆疊已已經存在於記記憶體中,因因此僅需要調調整sp_ggloball,fp_ggloball,lp_ggloball,設定Jaava協同處處理器新的CCP,IP,將將例外物件(excepp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论