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 2020-11-27 14:10:47 +08:00
没毛病,天下武功唯快不破
|
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 学习的高潮啊
|