- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java协同处理器上之虚拟机器
Java協同處理器上之虛擬機器
Java Virtual Machine on ARM with CCL Java Coprocessor
摘要
本篇論文首先描述從軟體研發人員的角度, 和CPU團隊共同製定Java協同處理器時, 所進行的研究方法及發現. 本團隊將Java虛擬機器移植至ARM 7搭配Java協同處理器之平台, 並進行效能提升, 效果可達到8倍.
關鍵詞
Java Virtual Machine Java虛擬機器
Java Coprocessor Java協同處理器
ARM ARM處理器
1. 前言
2. Methodology (Steps)
2.1 決定支援的位元碼
2.2 效能預估
2.3 issues
3. Encountered Problems
4. 大函式框的處理機制
5. 指令摺疊(Paul)
前言
Java是一個物件導向式的程式語言,具有跨平台及位元碼簡潔的特性。傳統的程式語言,原始碼經由編譯器轉換成某處理器特定的機器碼,該機器碼只能在特定的處理器上執行。如果想在不同的處理器上執行同樣的程式,必須再度使用編譯器將原始碼轉換成另一處理器之機器碼。
Java程式語言達成跨平台的方式則是藉由在編譯時將原始碼轉換成位元碼,該位元碼並不是特定處理器之指令,而是虛擬機器之指令。執行Java程式時,可使用位元碼直譯器逐一將位元碼轉換為特定處理器之指令。因此Java程式語言編譯為位元碼之後,可以在任何硬體平台及任何作業系統下運行,只要該平台存在一Java虛擬機器。
Java程式語言的缺點在於執行速度。傳統程式語言編譯好的機器碼可以直接在處理器上執行,但Java程式語言編譯出來的位元碼必須經過Java虛擬機器先翻譯成機器碼,然後才能在處理器上運作,多了一道手續。
一種解決方式是採用Java處理器。Java處理器可以直接執行位元碼,不需要經過位元碼直譯器的翻譯手續,因此可加速Java程式的運作。Java處理器基本上可分為以下三種型式。第一類是獨立式處理器(stand-alone Java processor),可獨立運作而不需要搭配另一顆處理器,Sun的picoJava及aJile的aJ-80與aJ-100屬於此類。第二類是協同處理器(Java coprocessor),需要搭配一顆主處理器來運作,平常運作於主處理器之模式下,需要執行Java程式時,透過協同處理器介面將Java協同處理器喚醒,本身可直接進行Java位元碼的解譯,inSilicon的JVXtreme屬於此類。第三類我們稱為內嵌式轉譯器(embedded Java translator),內嵌於主處理器之內,在主處理器欲至記憶體存取Java位元碼時,便即時將Java位元碼翻譯為主處理器之機器碼,ARM的Jazelle及Nazomi的JSTAR屬於此類。
電通所發表過獨立式Java處理器,這一類處理器的優點是不需要搭配另一顆處理器,本身即可獨立運作,可節省硬體成本,缺點是需要為處理器開發一系列的發展工具,而且使用者必須花時間學習這一套工具。
本論文要介紹的,是電通所對於Java協同處理器的設計。這一類處理器的優點是可使用主處理器上現有之發展工具,使用者不需要學習新的工具。缺點是硬體成本較高。我們的Java協同處理器所搭配的主處理器是ARM7 TDMI。
設計方法
2.1 決定支援的位元碼
首先我們必須決定Java協同處理器所支援的位元碼集合,支援的位元碼越多,大部份的情況下加速的效果會越好(例外的情況在於對於複雜的指令,有時由主處理器進行處理,比起由Java協同處理器進行處理,反而所需的時間要來得短),但硬體成本亦將隨之提高。
3.
4. 大函式框的處理機制
由Java協同處理器對於堆疊快取的設計所致,運行於其上之Java虛擬機器僅能支援函式框大小(該函式之區域變數,框節構及最大堆疊的總合) 在60個項目以下的Java函式。但在Java程式的執行過程中,少數的情況下會遇到函式框大於60的Java函式,因此我們的KVM必須透過軟體的方式來解決這個問題。當函式框大於60,以下稱為大函式框,其他情況則稱為小函式框。
我們需要設計及修改的地方包括了:
Java協同處理器對於大函式框的處理
執行緒的切換
與pushFrame,popFrame,throwException相關的部分
4.1 Java協同處理器對於大函式框的處理
我們為Java協同處理器之狀態暫存器新增一位元,稱為FSO位元(Frame Size Overflow)。當FSO位元被清除時,Java協同處理器遇到可以處理之位元碼,會直接執行,遇到無法處理的位元碼,才交由函式表格內指定之函式進行處理,此時的行為如同原本之Java協同處理器,此模式稱為非FSO模式。而當FSO位元被設定時,Java協同處
文档评论(0)