
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
1 leewi9coder 2020-11-27 10:32:04 +08:00 只要快就行了吧 |
2 szq98 2020-11-27 14:05:00 +08:00 via iPhone a12z 中就有相关硬件了,那说明 2018 年 a12x 的设计就考虑到了 Rosetta 另外,m1 好像可以用小核模拟,很多 Rosetta 后跑分的多核倍率都超过了 4 |
3 lly0514 2020-11-27 14:08:02 +08:00 可能这就是 M1 仿真 X86 速度快的原因,所以 iPad 的 A 系列芯片装 MacOS,Rosetta 可能会拉胯。。 |
4 CommandZi 2020-11-27 14:09:28 +08:00 专用芯片实锤了 |
5 Tink PRO 没毛病,天下武功唯快不破 |
6 jry 2020-11-27 14:43:16 +08:00 你就说快不快吧 |
7 20015jjw 2020-11-27 14:58:39 +08:00 via Android 挺好 意思是做了个 x86 还比 x86 省电 /快咯 |
8 maemolee 2020-11-27 18:05:39 +08:00 这么一说,感觉苹果真的牛逼。 |
9 longaiwp 2020-11-27 18:15:46 +08:00 这都能拿出来吹嘘一把,服了。 |
10 12101111 2020-11-27 18:18:56 +08:00 不是,前面几楼就强行尬吹? 弱内存序本身就能让芯片更快,因为不需要加额外的电路来同步缓存了,x86 用强内存序是因为有 x86 的时候还没有 SMP 呢,甚至 L2 缓存都是外置的芯片, 强内存序除了让有 bug 的程序也能跑以外没有什么优点 有关 WMO 和 TSO 的区别可以看 https://zhuanlan.zhihu.com/p/142658824 |
11 f6x 2020-11-27 18:25:05 +08:00 无情~~~ 无情嘲讽牙膏厂 apple 这么魔改, 要弄成 x86 超集么? |
12 akring 2020-11-27 22:43:04 +08:00 感觉苹果这次发布掀起了一波 arm 学习的高潮啊 |