David's random thoughts – Telegram
David's random thoughts
1.74K subscribers
273 photos
1 video
31 files
175 links
个人想法合集,主要同步来自Twitter (𝕏)、博客等账号发布的内容。

注:本频道并非纯粹包含技术相关内容(虽然以它们为主),本人不会刻意回避政治观点表达。可能包含一些直言不讳的主观评价,慎入。

个人博客:https://blog.hjc.im
Download Telegram
解决了一个好多年前的疑惑

AMD Zen 2的软件优化手册上把dispatch对象称为micro-ops (uop),而Zen 3手册上则是称之为macro-ops (mop)。以前我一直以为这两个架构在这方面没有太大的差异,单纯是文档由不同团队制作导致(AMD的文档质量懂的都懂),但最近经过实际测试发现两个文档的描述都是正确的。

从架构简介上看,Zen 2/3都是6-wide架构,但Zen 2是发射6个uops到后端,Zen 3则是发射6个mops。虽然都是叫6-wide但是背后的含金量完全不同,mop与x86指令基本一一对应(特殊情况下有一对多的fastpath double/ucode和2对1的fused mop),uop则是跟处理器后端具体执行单元的功能一一对应。

那么我们写一个简单的测试来探一探这个区别:测试5条指令的IPC,其中4条采用add指令;由于两个架构都只有4个scalar ALU,这样程序的IPC被限死在5。然后我们在不超过4*add+2*LD+1*ST的前提下,通过调节mem operand占比和剩下的一条指令来生成不同uop数量的程序,观察处理器单周期uop的吞吐。最终观察到Zen 3/4处理器可以单周期发射7个uop(甚至更多,特殊的指令组合可以让x86 ipc达到8),而Zen 2则是被严格限定在了6个uop,超过6个uop之后观察到明显的吞吐下降。

所以其实Zen 2的后端是一个更接近RISC的处理器,指令在流水线非常早期就被拆解成具体执行单元运行的uop进入dispatch/scheduler。Zen 3/4则是完全另一种思路下的产物(更接近Intel?),就连scheduler里存的都还是经过rename后的比x86更CISC的mop指令,scheduler向执行单元发送指令时才会变成具体的uop。如果说Zen 3是6-wide处理器,那么Zen 2实际上更接近4到5-wide;如果说Zen 2是6-wide处理器,那么Zen 3/4则是接近7到8-wide。
👍20
再来一个小彩蛋,由于fused macro ops的存在,x86处理器的x86指令IPC可以超过实际rename的宽度。例如下面这一组指令在Zen 3/4上运行可以跑出接近8的IPC,虽然x86 ISA有memory operand的情况下还这么load纯属凑数,并没有什么意义。。
👍12
经过我的不断努力,美国在我的知乎推荐时间线上的解体次数已经从每日4-5次降低到每日1-2次。可喜可贺,感觉每一个美国人都应该感谢我。当然马斯克的星舰肯定是会持续爆炸的,这个没救。
😁39
感觉有点玩明白知乎这个推荐算法了。。遇到什么反智推送,最好的应对方法并不是点踩/不感兴趣或者屏蔽该内容,而是点进问题去点赞一个反驳这个内容的回答,这样一段时间内都不太会有跟这个话题相关的内容。看起来点赞的权重远高于其它动作🤣

🙃就这么想做内容下沉去跟抖音快手抢市场,成为根正苗红的NYSE上市的爱国生意企业?
😁16💯4
回想过去半年,高通一直在循环往复地做一件事:发Oryon/Snapdragon X Elite的PPT,然后弄几个ES闭门跑分给指定媒体发出去,再跟上代x86比功耗曲线显得自己非常的光鲜亮丽。

结果现在OEM机器大量泄露Geekbench的跑分一看,IPC都给菊厂K9010爆了,更别提最新的Cortex-X,哈哈……
😁18
X1跟X3在排除缓存之类差异之后实际ipc差距也就个位数百分比,这点差异还没到刷分的境界(可以参考我之前测的都是8M L3的SD8cx gen3的X1和SD8 gen2的X3)

https://www.zhihu.com/pin/1767155181534502912
Sen0Kaibutsu: 基本上实锤TSV130刷分了 | TSV130在Geekbench6里的IPC表现逼近Cortex-X3
但是在spec_06在内的详细测试中仅相当于Cortex-X1
Geekbench6定向优化实锤了
难不成真是学A13,CPU加AMX?
但你这AMX加上去别不是只是为了刷分啊
再谈大家耳熟能详的Geekbench,以GB5为例:

GB5的整数子项普遍对ILP极其友好且内存压力偏小。与之前分析的SPEC17区别在于,它太过于顺从超标量流水线处理器设计,缺乏类似mcf/omnetpp/leela这种魔鬼测试。

我想这也是为什么主打低频/宽架构/高IPC的ARM阵营喜欢用它,以及高频IPC几乎没有损失的原因。

GB6我没买license就懒得做分析了(除非谁送我一个)
10
David's random thoughts
再谈大家耳熟能详的Geekbench,以GB5为例: GB5的整数子项普遍对ILP极其友好且内存压力偏小。与之前分析的SPEC17区别在于,它太过于顺从超标量流水线处理器设计,缺乏类似mcf/omnetpp/leela这种魔鬼测试。 我想这也是为什么主打低频/宽架构/高IPC的ARM阵营喜欢用它,以及高频IPC几乎没有损失的原因。 GB6我没买license就懒得做分析了(除非谁送我一个)
这种偏差其实现在已经不是一个小数字。例如,Cortex-A720的GB5 int同频性能比Phoenix Zen4高4%,但是SPEC CPU 2017 int则是Phoenix Zen4高4%,一来一去偏差已经有将近10%,快差出一代处理器的IPC提升幅度了。

这体现了两个跑分的偏向性不同,以及两者的IPC不可进行简单换算的特点。
上一条发出去15分钟就被群友送了GB6 pro,惊了……

那么说好的数据,GB6压缩把lzma换成lz4/zstd之后分支预测压力下降,IPC/内存压力上升;Navigation照搬GB5;HTML/PDF换了库,文件比GB5复杂但负载特征近似;Clang热代码变大。

总体上cache/mem压力变大,不过瓶颈的分布依然没有SPEC17那么均衡。
👍13
才发现Ubuntu最新LTS的内核版本比Debian sid还新,离谱🙃

Debian是缺人维护了吗……
🤔1
最近某些事情,让我觉得差不多是时候远离某品牌的所有产品了。虽然我很喜欢他们家的一部分产品(还有认识的人在做,最近还出了新东西),但是很遗憾只能如此。

以及事实查明前圈子里谁给我看到半点洗地/挽尊倾向将直接喜提永久拉黑和断绝联系,没有任何商量余地。不认识的人就算了,没那个精力理会🤣
🤔10👏6👍1
谈跑分性能和做PPT的时候解锁功耗墙再降ACLL降压,谈稳定性的时候全部按照标准来。不愧是赢特尔。

https://twitter.com/anandtech/status/1785122248040362166
🤣8😁1