華碩低價位帶手機ZenFone一推出就掀起市場話題,除台灣訂價與規格在中國發表之後掀起一陣波濤,許多人也對ZenFone所採用的Intel Atom處理器有所意見,深怕其相容性問題無法正確執行應用程式App,這究竟是怎麼回事呢?
Intel近幾年一直很想進軍手機或是平板的行動市場,特別是採用Android作業系統這一塊大餅(忘了MeeGo吧!),所採取的戰術便是盡量降低Atom系列處理器的功耗,使其符合手機長時間待機的要求,實際使用第一世代的產品即為Atom Z24x0系列,而Asus ZenFone則是採用第二世代的產品,Atom Z25x0系列。相較於前代,Z25x0變成雙核心四執行緒,GPU的部分則是從PowerVR SGX540大幅升級至PowerVR SGX544MP2。
ARM在手機上奠定基礎
Android起初發展之際,並沒有限定在何種平台上執行,只不過在當時的時空環境背景因素下,第一台市售Android手機HTC Dream(G1)採用了Qualcomm MSM7201A,這是款ARMv6指令集的產品。
之後的情形大家都曉得了,ARM開始如日中天,絕大部分Android手機皆採用相容ARM指令集的應用處理器(少數為MIPS指令集),Apple的iPhone和iPad系列產品更是全程採用。在這後PC時代,Intel於行動裝置市場的影響力實在不大,過去還有XScale這個產品線可在PDA上佔有一席之地,甚至它的高效能吸引了不少人指定購買,但之後Intel把XScale賣給了Marvell,也就沒有適合手機使用的處理器了。
Atom被抓來打ARM
在2011年9月時,Intel和Google共同發表聲明,兩者將一同最佳化未來Android版本在x86系統上的表現;也就是說,原本用在netbook和UMPC上的Atom處理器,現在也要進軍手機市場了。
不過針對半路殺出的Intel x86架構,市場上已經有許多應用程式針對ARM最佳化,若是像採用MIPS架構的Android裝置一樣,程式相容性不佳的話,大概也就能直接判斷Atom出師未捷身先死,所以Intel製作了Binary Translation這個中介轉譯層,用以相容ARM最佳化的程式。

▲如果Android程式以Java寫成並丟入Dalvik虛擬機執行,在使用Intel Atom的Android手機中執行絕大部分沒有問題。
▲如果Android程式以Java寫成並丟入Dalvik虛擬機執行,在使用Intel Atom的Android手機中執行絕大部分沒有問題。
x86架構如何相容ARM程式
要了解Binary Translation的原理,首先要了解Android程式是如何運作的。起先Android程式皆使用Eclipse開發環境和Android SDK,以Java語言寫成,經過封裝轉換成Bytecode後丟入Android裝置中,1個稱為Dalvik的虛擬機器中執行。
不過稍微了解程式運作的人都知道,虛擬機雖然能夠帶來跨平台、不限硬體規格執行的好處,但同時也會因為虛擬機器的轉換,降低執行效率。因此後來Andriod除了SDK(Software Development Kit)以外,也推出NDK(Native Development Kit),讓開發人員能夠繞過Dalvik轉譯造成的效能損失,同時又能夠使用Java以外的程式語言撰寫(如C/C++)。
由於程式經過NDK轉譯之後,出來的東西是硬體能夠直接執行的機器碼,執行效率較高,但同時帶來了相容性的問題--編譯給ARM處理器的機器碼一定跟編譯給x86處理器的不一樣,這就導致Intel的Atom處理器無法正常執行部分程式(通常是3D遊戲,因為這些程式對於效能要求較高)。如果Intel放棄掉這些程式,想必消費者絕對無法接受,於是便有了Binary Translation這個中介轉譯層,可把ARM的機器碼轉給x86執行。

▲Intel Binary Translator用來轉換那些使用ARM NDK的應用程式,讓他們能夠在Intel Atom上正確執行。
▲Intel Binary Translator用來轉換那些使用ARM NDK的應用程式,讓他們能夠在Intel Atom上正確執行。
沒有留言:
張貼留言