Global Sources
電子工程專輯
 
電子工程專輯 > 嵌入式技術
 
 
嵌入式技術  

利用Jazelle技術提高嵌入式系統Java性能

上網時間: 2006年06月19日     打印版  Bookmark and Share  字型大小:  

關鍵字:Java  embedded device  Jazelle DBX  嵌入式系統  MIDlet 

Java已經在各個領域得到了廣泛的應用,特別是無線行動領域,全球超過100家行動廠商已推出Java下載服務。Java也正成為其它嵌入式設備的支援標準,如視訊轉換盒。Java應用的快速成長源於以下幾點:首先是儘管Java的可移植性一直有爭論,但無庸置疑的是其快速上市的優勢,開發和發佈Java應用都很便捷;其次是Java有著廣泛的支援網路,眾多的第三方供應商正在開發各種Java應用;最後是Java平台固有的安全性適合網路下載。

Java遊戲已經發展成一項產業,3D影像、多人連線等高階支援也屢見不鮮。網路廠商和手機製造商希望出現更具特色的遊戲,甚至跳出遊戲應用進一步開發像商務、定位、視訊等各式增值服務,以帶來更多收入。

為支援這些新服務,J2ME平台必須快速發展,整合新的API(如行動3D)並融入新特性,如能執行多個MIDlet。要在行動設備上執行Java必須先處理好兩個問題,即Java分化和在資源有限的設備上如何保證Java的性能。

隨著電信業者與手機製造商不斷擴充標準Java API,目前Java的分裂情況已對Java的進一步應用造成影響,產業鏈中的所有廠商都必須投資更多成本以支援這些擴充。為此,Sun設立了JCP (Java Community Process)試圖減少這種分裂,並努力跟上嵌入式設備中Java的應用和變化腳步。目前許多JSR擴充規格都是經由JCP提出的,這證實JCP對分裂問題具有正面作用。

圖1:指令管線示意圖。

嵌入式Java虛擬機的設計限制

目前市場上已具備大量宣稱支援Java的手機,從技術上來看,許多中低階手機是以相對較慢的速度在30~50MHz ARM7TDMI處理器上執行小型軟體虛擬機器碼(bytecode)的編譯。這對許多Java小遊戲來說已經足夠,因為其性能是由系統的繪圖處理能力決定的,對Java的要求並不高。但市場發展變化很快,越來越多Java應用需要更強的繪圖處理能力,以及一個強大的Java虛擬機。

幾種加速Java執行速度的傳統方法包括幾種軟體方案,如虛擬機器碼直譯器最佳化、即時(just-in-time,JIT)編譯器、預(ahead-of-time,AOT)編譯器等;硬體方案則有專用Java處理器和Java協處理器。這些方法在提高性能的同時通常會增加對功耗及對記憶體的需求,從而影響系統平台的成本,特別是硬體部份。

JIT或AOT編譯器能夠直接在目標設備上編譯程式碼。AOT編譯器能在應用程式下載完成後編譯所有程式碼,但實際上某些程式碼很可能根本不會執行。JIT編譯器則是在執行某段程式碼之前僅對這一段作即時編譯。但JIT編譯方法會導玫在應用啟動前令人無法忍受的等待時間。此外,研究顯示動態編譯會導致程式碼膨脹4~6倍。因此,除了減緩應用程式啟動速度,無論JIT還是AOT方案,都需要大量額外記憶體以儲存編譯過的程式碼。

動態編譯技術

一種彌補JIT編譯器缺點的方法是採用通常被稱為動態自適應編譯(DAC)的混合軟體方案,這種方案結合了JIT編譯器和虛擬機器碼直譯器。在開始階段,虛擬機器碼會以直譯方式執行,而軟體則同時分析程式碼並決定要編譯的關鍵程式碼。在識別出關鍵程式碼後,隨即編譯它們並以原生碼執行。

採用DAC方案可能會減少JIT編譯器的問題,但實際上JIT方案可實現的最佳速度性能仍會被啟動時間與程式碼持續膨脹等問題牽連。

圖2:採用ARM處理器的Java應用嵌入式系統架構。

在完成關鍵程式碼分析前,應用程式必須執行在較慢的直譯器模式下,並暫停後再進行編譯。當應用程式啟動時,許多序列僅會執行一次,因此在理想情況下,這些程式碼不應該被編譯。從用戶角度來看,這種影響非常明顯,特別是在應用程式啟動階段,在較長時間內用戶不會感覺到任何響應。

由於純軟體直譯速度很慢,因此大多數DAC方案僅做少量分析,並立即編譯幾乎所有的序列,這相當於賭注此一序列會執行很多次。但要證實這個賭注是正確的代價非常高昂,不僅會花費更多編譯時間,且編譯出的程式碼也會耗貴記憶體資源。

最後,當記憶體執行速度減慢時,DAC必須丟棄一些已編譯的程式碼,而且可能必須再度編譯它們。這將導致性能的流暢度問題,因為在執行中,若DAC重新編譯或編譯新的程式碼,則程式會暫停執行。

儘管仍存在一些缺點,但嵌入式設備中的RAM或ROM容量也愈來愈大,因此像DAC甚至一些AOT方案正變得愈來愈有吸引力。然而,目前系統平台也出現了以Java撰寫的發展趨勢,許多可下載的應用程式均以Java撰寫,同時執多個Java程式的需求也開始產生。這意味著Java對記憶體的需求將永無止境。

硬體加速

硬體Java加速方案通常需要增加額外的晶片,且功耗更高。由於需使用額外記憶體,因此無法實現最大化速度。專用的Java處理器可直接執行Java虛擬機器碼。儘管性能看來不錯,但系統整合與開發複雜度卻大幅上升。因為Java處理器並不支援現有作業系統和應用程式,它必必須與其他嵌入式處理器搭配使用。

Java協處理器負責將Java虛擬機器碼翻譯成主處理器的指令。這種加速處理需整合大量軟硬體,而且很難與現有作業系統共同使用。協處理器同時需要額外的電路板空間及額外操作功耗,而製造成本昂貴。另外,協處理器與核心處理器之間的鬆散耦合也使其執行速度相對較慢。

硬體架構擴展

在處理器核心中直接擴展架構可執行Java虛擬機器碼,能為作業系統與應用程式相容性提供最佳化性能,而無需使用額外的硬體或記憶體。透過在處理器中附加一套指令集,架構擴展方案能再使用現有處理器資源,而不會增加額外硬體成本、功耗或記憶體資源。一個擴展過的核心可同時執行Java虛擬機器碼及原生碼,開發者可充分利用已有的作業系統、應用程式開發技術,在Java程式可移植性和性能之間取得良好平衡。

傳統的ARM處理器都支援32位元ARM指令集和16位元Thumb指令集。採用Thumb指令集的程式碼大小約為ARM程式碼的35~40%,但會稍微降低程式性能。指令集能在ARM和Thumb程式碼間支援程序調用,程式設計師可在編譯時分別考慮性能和程式碼密度,以決定將不同部份的程式碼編譯成ARM或Thumb(圖1)。

Jazelle是一種架構擴展技術,為ARM處理器導入了第三套指令集─Java虛擬機器碼。新指令集設立了一種新的狀態,處理器在此狀態下處理Java虛擬機器碼的擷取及解碼,並維護Java運算元堆疊。

為降低晶片尺寸並提高性能,Jazelle並未以傳統微引擎形式設計,而是在ARM管線中以一個有限狀態機來實現。與協處理器或專用處理器不同之處在於,Jazelle和主處理器共用快取記憶體,這對功耗和性能帶來了更多益處。另一項重要設計考量是確保Jazelle技術不會影響即時中斷性能,而且會在作業系統中維持與現有ARM例外程式碼的相容性。

Jazelle技術增加了一條新的‘Branch-to-Java’指令以進入Java狀態。該指令首先會執行其中一個條件程式碼的測試。如果條件符合,就會讓處理器進入Java狀態,隨後分支到指定目標位址並開始執行Java虛擬機器碼。

在Java狀態下,ARM PC暫存器會延伸到32位元以滿足Java虛擬機器碼。虛擬機器碼的擷取、解碼則分別在兩個階段完成。一個新的處理器狀態暫存器(CPSR)位元可記錄處理器狀態。這非常重要,因為在處理中斷或其它異常時,CPSR會自動保存或恢復程式執行狀態。Jazelle技術允許所有的Java指令是‘可重新開始’的。

在Java狀態下,處理器會分配數個ARM暫存器的功能給Java機。這種硬體再使用特性僅需使用很少的額外邏輯(約12,000閘)就能實現Java機。。把所有Jazelle擴展所需的狀態用ARM暫存器保存,也能保證與現有作業系統、中斷處理程式和例外程式碼的相容性。

Jazelle技術把Java虛擬機器碼分為三類:直接執行、模擬和未定義。主要的Java虛擬機器碼(ARM926EJ-S中有134個)可由硬體直接執行,其他則由一些簡短的高度最佳化ARM指令序列模擬執行。把原先虛擬機中的直譯器去掉,替換以ARM專有的程式碼(稱為VMZ,這些程式碼甚至比替掉的程式碼更小)。

統計分析顯示,在一段標準程式碼中,需模擬執行的虛擬機器碼不會超過5%。這意味著大約需要12,000閘來實現ARM Java的擴展,而大多數的專用Java處理器或協處理器通常有6萬到10萬閘。這樣的設計策略把硬體邏輯的複雜度減到最小、功耗低、系統整合難度低,卻仍能表現出很高的整體Java性能。

未定義的虛擬機器碼與模擬執行的虛擬機器碼截然不同。一旦執行到未定義的虛擬機器碼,處理器就會退出Java狀態,進入ARM狀態執行例外處理。有了這樣的機制,就能以軟體修補方式支援未來可能擴展的Java虛擬機器碼。

作者:Chris Porthouse

執行環境產品經理

ARM公司




投票數:   加入我的最愛
我來評論 - 利用Jazelle技術提高嵌入式系統Java性...
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首