通過 Bochs 讓高性能的 Android 手機流暢運行 Windows 虛擬機是否可行?

現在Android手機的配置越來越高,四核2G內存的配置已經遠遠超越了windows xp流行時代的硬體需求。硬體配置理論上來說已經完全能夠滿足windows的運行需求,因此在ARM架構的Android手機上安裝虛擬機軟體後運行x86的windows系統,讓Android手機變成一台可移動的PC主機,通過遠程桌面訪問手機中的windows系統,利用裡面的office等常用軟體進行辦公,目前來說是一件很酷的事情。

事實上Bochs已經實現了運行windows xp等系統,參看以下鏈接。

http://zh.wikipedia.org/wiki/Bochs

http://bochs.sourceforge.net/

BOCHS:安卓上模擬WINDOWS

安卓bochs運行xp、98、95的詳細教程,附上修改過的xp鏡像_Android 綜合資源交流/討論

啟動後可以自行安裝軟體,目前的問題是啟動太慢(小米2,小米3都需要5分鐘才能顯示windows桌面),運行不夠流暢,應該是沒有充分利用硬體以及指令翻譯的性能不足。

在不考慮耗電等附加不利影響,僅從指令翻譯的損耗和性能優化角度,如果依據手機的多核CPU和內存,理論上能否讓目前的高性能Android手機(四核2.3G,2G內存)能夠流暢地運行windows xp系統?

為了簡化問題,限定了bochs,限定了手機的硬體並聚焦在windows xp系統,其他諸如linux,windows RT系統也可以探討。


上面有人說「異構虛擬機(客戶CPU不等於主CPU架構)的效率一般在 20-30 分之一的水平」,不敢苟同。

在我曾參與的模擬器項目中(dolphin emu),從powerpc到x86/x64的JIT模擬大約性能損失是500%~700%,而不是幾十分之一。而這還是用registerfile比較小的x86去模擬RISC。

如果用RISC去模擬x86,一方面RISC registerfile比較大,這樣模擬的時候可以減少register banking的操作,另一方面得承認x86固有的複雜性,兩者相抵。

同時,目前ARM都是thumb2指令集,這大量降低了內存帶寬的需求,也使得模擬效率會比較高。

但是以上討論不涉及到浮點和SIMD操作,這塊絕壁是ARM的短板。


@pansz 說的不完全對。

ppsspp 這個項目已經成功在 ARM 安卓上模擬 PSP,這可是異構虛擬。在 ppsspp 中大量使用了 JIT(事實上遊戲機模擬器可以代表 JIT 的頂尖水平),現場將 MIPS 指令翻譯成 ARM,同時還會處理圖形指令(PSP 的繪圖指令非常獨特),讓遊戲圖形順暢。

考慮到 XP 發布時 x86 CPU 的水平可能還不如 PSP,也許真能做出一個基於 JIT 的 x86 模擬器。


技術層面的解釋 @pansz 大神已經介紹的很清楚了,我想重點說說手機搭載桌面版本windows辦公這件事。。。。

圖上這款「神機」便是世界上唯一一款搭載桌面windows的手機(win7家庭高級版)ATOM Z510的CPU X86架構,肯定比虛擬機運行的效率高吧,但是它為什麼沒有火起來呢?因為windows桌面版太臃腫了,硬碟耗費大不說資源耗費也喪心病狂,導致3000mah的電池只能待機1小時(是的你沒有看錯),這能用?

我覺得無論是win7 還是win8都不適合在手機上運行,更別說辦公了,那麼小的屏幕拖動excel表格不蛋疼嗎?

我認為未來手機辦公應該是利用底座連接顯示器,實現輕量級辦公,但是一旦連上顯示器系統就不再是安卓或者ios了,應該是手機里內置的一個適合辦公的系統,但是這個系統在平時用手機功能的時候你是看不見的(其實就是雙系統)下了班直接從底座上拿下手機往兜里一揣,go home~

底座應大概是這樣的(me860的)還可以擴展USB和充電~~(我相信未來會把無線充電底座和dock融合)

這就是連上顯示器以後的樣子,安卓系統成了一個APP樣式的窗口,你可以回簡訊和正常使用手機功能但是也可以一邊辦公看視頻~~~

但是目前做這些努力的貌似只有 Ubuntu for Android這個項目了,我相信這就是未來移動辦公的趨勢~

以上


首先,arm 架構頂級手機的八核 CPU 性能與主流雙核 x86 桌面機仍然有很大差距,差距沒有量化,大約在 3-5 倍的水平。

其次,大家可能認為 vmware 之類虛擬機在性能上與真機相差不大,但那屬於同構虛擬(x86虛擬x86)。Bochs 的機制決定了它屬於異構虛擬,而異構虛擬機(客戶CPU不等於主CPU架構)的效率一般在 20-30 分之一的水平,也就是說,用 arm 架構虛擬 x86 架構 CPU,與原生系統大約相差 數十倍的性能。反之也一樣,用 x86 虛擬 arm 的性能,也差數十倍。

把兩個因素相乘,目前的手機跑 XP ,性能在 PC 的百分之一。

為了避免有人 argue 堅持認為手機性能與主流雙核 PC 差不多,好吧,就算你堅持認為手機性能跟 PC 差不多,但是依然無法跨越「異構虛擬」的這一坎,所以數十倍的性能差距依然存在。

結論:異構虛擬具有巨大的性能差距,所以,要讓 android 手機流暢運行 XP ,要麼是把 android 手機的 CPU 變成 x86 的,要麼是把 XP 編譯出 arm 的版本,然後使用基於同構虛擬的技術,克服了「異構虛擬」的這個巨大鴻溝,才能談所謂性能問題。


最前面的兩個答案並沒有看清楚問題,問題限定了bochs。如果限定是bochs,那麼20~30分之一的速度確實就是這樣的。3Ghz的i3,一秒鐘大概能夠運行1000萬條指令。bochs是不帶jit技術的,並且bochs本身只支持x86(x64),不能夠模擬其它指令。

我想還是建議提問者不要做在android上跑xp,這點並不酷,沒有滑鼠鍵盤實在太難受了。如果如果非要在android上跑xp,還是使用qemu吧,自帶jit,性能大概就是7~8分之一的速度。


就手機移動端運行桌面系統這件事情上,如果電池技術沒有突破性的進展,還是覺得手機遠程桌面訪問pc更加靠譜。如果沒有固定ip,可以嘗試teamviewer,網速保證的前提下,運行流暢!


如果你的目的只是玩玩可以用vnc試試看。

其實我手機上一直有vnc客戶端,為的是緊急故障時候連接圖形終端,但是一年都不會用幾次,因為操作起來太痛苦。其實在手機上操作字元終端都很痛苦。


推薦閱讀:

針對平板電腦的 Android ROM 應該如何提高用戶體驗?
為什麼嗶哩嗶哩安卓客戶端體驗比優酷都好呢?
如何面試 Android 工程師?
pwa的出現會對移動端原生開發造成什麼影響?
Android系統的後台程序和後台自啟動程序和後台推送到底是個什麼關係?

TAG:手機 | MicrosoftWindows | Android |