Apple Silicon 的 Rosetta 2 使用了特殊的硬件指令

2020-11-27 10:29:47 +08:00
 icyalala

x86 使用的是 TSO (Total Store Ordering), 而 ARM 是 weak memory ordering 。

苹果在 Apple Silicon (M1/A12Z)中内置了一个状态寄存器来模拟 TSO,这个操作是 per-thread 的,且只能运行在大核上。

这是代码: https://github.com/saagarjha/TSOEnabler

这是最近的讨论: https://www.reddit.com/r/hardware/comments/i0mido/apple_silicon_has_a_runtime_toggle_for_tso_to/

这是几个月前的讨论: https://www.realworldtech.com/forum/?threadid=193883&curpostid=193883

3749 次点击
所在节点    Apple
12 条回复
leewi9coder
2020-11-27 10:32:04 +08:00
只要快就行了吧
szq98
2020-11-27 14:05:00 +08:00
a12z 中就有相关硬件了,那说明 2018 年 a12x 的设计就考虑到了 Rosetta
另外,m1 好像可以用小核模拟,很多 Rosetta 后跑分的多核倍率都超过了 4
lly0514
2020-11-27 14:08:02 +08:00
可能这就是 M1 仿真 X86 速度快的原因,所以 iPad 的 A 系列芯片装 MacOS,Rosetta 可能会拉胯。。
CommandZi
2020-11-27 14:09:28 +08:00
专用芯片实锤了
Tink
2020-11-27 14:10:47 +08:00
没毛病,天下武功唯快不破
jry
2020-11-27 14:43:16 +08:00
你就说快不快吧
20015jjw
2020-11-27 14:58:39 +08:00
挺好
意思是做了个 x86 还比 x86 省电 /快咯
maemolee
2020-11-27 18:05:39 +08:00
这么一说,感觉苹果真的牛逼。
longaiwp
2020-11-27 18:15:46 +08:00
这都能拿出来吹嘘一把,服了。
12101111
2020-11-27 18:18:56 +08:00
不是,前面几楼就强行尬吹? 弱内存序本身就能让芯片更快,因为不需要加额外的电路来同步缓存了,x86 用强内存序是因为有 x86 的时候还没有 SMP 呢,甚至 L2 缓存都是外置的芯片, 强内存序除了让有 bug 的程序也能跑以外没有什么优点

有关 WMO 和 TSO 的区别可以看 https://zhuanlan.zhihu.com/p/142658824
f6x
2020-11-27 18:25:05 +08:00
无情~~~ 无情嘲讽牙膏厂
apple 这么魔改, 要弄成 x86 超集么?
akring
2020-11-27 22:43:04 +08:00
感觉苹果这次发布掀起了一波 arm 学习的高潮啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/729761

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX