眾所周知,蘋果正在進行將旗下的電腦從 Intel 處理器切換到自傢的 Apple Silicon 處理器,首當其沖的就是新近推出的 Apple M1 筆電和 iMac mini,按照蘋果的計劃,整個切換工作大概需要一年半左右(時間基本上和當年 PowerPC to Intel 相當)。

處理器切換帶來的主要問題是 M1 采用的是 ARMv8 指令集,現有的 Intel64 應用不能直接運行,為瞭盡量平滑化這個過渡,蘋果推出瞭名為 Rosetta 2 的動態二進制轉換器,可以先把 Intel64 的二進制代碼先行轉譯為 ARMv8 指令,從而實現接近無縫的切換。

類似的技術其實在以往就有,例如當年 DEC 的 FX!32、Intel 的 IA-32 轉 EPIC 等,此外還有像 NVIDIA Tegra K1 Denver 內置瞭 x86 轉換 ARM 的硬件譯碼器(需要與軟件轉碼器結合)。

華為這邊也有自己的 x86 動態二進制翻譯器——ExaGear。


華為的 x86/ARM 動態二進制翻譯器 ExaGear


ExaGear 是一個軟件包,安裝到華為自己的 ARM 系統(鯤鵬 920 硬件平臺 + Linux)後,執行起來就會讓主機看起來像一個 AMD64 環境。

按照華為自己的介紹,在 ExaGear 裡跑 SPEC CPU 2006,相比直接跑 ARM 指令的性能損失大約為 20%,這有點類似與 Rosetta 2 的情況。

比較有意思的是,目前這個東西已經可以在非華為的 ARM 系統上運行,例如 NVIDIA 的 Tegra K1 64-bit 和 Tegra Xavie,但是需要設置一個參數 SMO_MODE=none。

創作者介紹
創作者 3C王者 的頭像
3C王者宇晨

3C王者

3C王者宇晨 發表在 痞客邦 留言(0) 人氣( 0 )