五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【轉(zhuǎn)】蘋果的 Rosetta 2 的實現(xiàn)原理大概是怎樣的?

2023-10-09 22:38 作者:小林家的垃圾王R  | 我要投稿


蘋果的 Rosetta 2 的實現(xiàn)原理大概是怎樣的?

是從x86匯編編譯到arm匯編嗎?

還是有其他的黑科技?

2 個回答

宋子明

不負責(zé)修電腦

沒有內(nèi)幕消息,也沒用過蘋果

設(shè)備,以下都是從網(wǎng)上搜索來的,結(jié)合了一些自己的分析。

Rosetta 2 可以將 x86 指令翻譯成 ARM 指令,支持 JIT(Just-In-Time)和 AOT(Ahead-Of-Time)兩種模式。JIT 在程序運行的時候動態(tài)翻譯指令,類似于 JVM。AOT 在軟件安裝的時候直接翻譯成 ARM 指令,Android 也有類似的技術(shù)。

x86 指令集

雖然復(fù)雜,但 Rosetta 2 只需要支持其中的子集,也就是用戶態(tài)指令。特權(quán)指令、虛擬化擴展則不支持,我猜測 SSE、AVX 這類指令也不支持。M1 是一個 64 位的處理器

,翻譯的也是 64 位的 x86_64 指令,相似度很高。

Rosetta 2 的目的是運行 MacOS 軟件,操作系統(tǒng)

已經(jīng)有了 ARM 版,還需要轉(zhuǎn)換系統(tǒng)調(diào)用。畢竟轉(zhuǎn)換前后都是跑在 MacOS 上的,系統(tǒng)調(diào)用都一樣,只要把傳參方式

從 x86 換成 ARM 就行。

其實,x86 切換 ARM 有一個重大優(yōu)勢,那就是兩套指令集都是小端法(little-endian

),翻譯指令的時候不需要做字節(jié)序反轉(zhuǎn)(byteswap)。蘋果上一次從 PowerPC 切換到 x86 就沒有這種運氣,因為 PowerPC 是大端法(big-endian

),轉(zhuǎn)換起來要麻煩許多。

不過,這回遇到了一個新問題,x86 與 ARM 的內(nèi)存一致性模型(memory consistency model)不一樣,會導(dǎo)致多線程

軟件運行結(jié)果出現(xiàn)差異,這也是 ARM 模擬 x86 的最大困難。蘋果用了最暴力的辦法,直接在芯片里做了 Intel 版本的內(nèi)存模型,運行 Rosetta 2 的時候,通過一個后門開關(guān)切換到 Intel 內(nèi)存模型,運行原生 ARM 程序的時候使用正常的 ARM 內(nèi)存模型(見附圖的第4條)。估計這一點才是 Rosetta 2 性能好的最大貢獻。


編輯于 2020-12-07 20:48

真誠贊賞,手留余香

還沒有人贊賞,快來當(dāng)?shù)谝粋€贊賞的人吧!

沙洛特紹

極左極右之間反復(fù)橫跳

原理應(yīng)該和華為收購來這個在鯤鵬處理器

上面跑的ExaGear差不多,看起來是在aarch64上面直接運行了一套amd64的子系統(tǒng)

果子貍7778:菊花的動態(tài)二進制翻譯工具(Exagear)性能簡測22 贊同 · 8 評論文章


編輯于 2020-12-17 16:48


【轉(zhuǎn)】蘋果的 Rosetta 2 的實現(xiàn)原理大概是怎樣的?的評論 (共 條)

分享到微博請遵守國家法律
临城县| 临潭县| 马尔康县| 章丘市| 红安县| 巴东县| 枣阳市| 惠东县| 临清市| 灌南县| 西丰县| 正蓝旗| 泽普县| 茂名市| 芦溪县| 无极县| 泸水县| 青州市| 平顶山市| 嘉兴市| 乌鲁木齐市| 汕头市| 舒城县| 阜康市| 鲁山县| 顺平县| 荣昌县| 辛集市| 平远县| 通辽市| 垫江县| 天气| 靖西县| 伊春市| 四川省| 南投县| 延寿县| 团风县| 凤翔县| 景谷| 长春市|