V2EX dahakawang
 dahakawang 最近的时间轴更新
dahakawang

dahakawang

V2EX 第 107983 号会员,加入于 2015-03-29 13:44:51 +08:00
dahakawang 最近回复了
2023-11-25 19:49:09 +08:00
回复了 lwjef 创建的主题 程序员 高通 CPU 浮点这么快吗。。。
7.4G 的数据量,即便不考虑内存不够的情况,也有可能是内存性能 bounded 的原因,不妨试试比较用 cache 大小的数据量进行多轮 benchmark ?
2023-11-12 19:47:53 +08:00
回复了 stardustree 创建的主题 生活 哎,早产的娃严重脑出血,要放弃治疗了...
最近刚做了爸爸,真是看不得这样的事情,楼主节哀。。
2022-06-25 12:12:16 +08:00
回复了 simbaCheng 创建的主题 问与答 如何理解《Intel#IA-32》文档中的 assert?
2022-04-09 02:14:59 +08:00
回复了 dangyuluo 创建的主题 C++ CPU 指令重排是 cache 同步太慢的表征么?
哈哈,睡太晚了发觉居然把文章名字搞混了,我上面是说《 Memory Barriers: a Hardware View for Software Hackers 》另一篇不少人推荐的教程... 但是结论不变 :-)
2022-04-09 01:54:23 +08:00
回复了 dangyuluo 创建的主题 C++ CPU 指令重排是 cache 同步太慢的表征么?
看见很多同学推荐了 A Primer on Memory Consistency and Cache Coherence 。这是个很好的教程,但是它可能不能直接用来回答 OP 的问题。因为全文是基于一个假想的 CPU 架构(或者说,至少实现上不见得是和任何一种现实的 CPU 完全一致的),一个例子是随着教程引入了 store buffer 和 invalidate queue 的概念之后,在文中所述的架构中,例子代码需要添加两个 barrier 才能确保正确(section 4.3),然而在 x86 下那两个 barrier 并不是必要的,因特尔关于他们内存模型的白皮书中有过一样的例子。。。

所以除非 OP 真的只是在讨论某一个教程中的架构,如果我们要讨论任何一个真实的架构的话,就回到我之前的观点了,对于 OP 的问题解答,我们很难去诉诸某个架构的某个 specific implementation ( store buffer 也好,invalidate queue 也罢),因为外人很难知道 CPU vendor 具体的实现是啥。唯一公开的只有前文提到的那个约定, 或者叫它某个 CPU 架构的内存一致性模型,OP 的问题可能只能诉诸于具体某个架构实现的某种一致性模型。(当然,模型反过来也某种程度上 imply 了实现)
2022-04-08 23:22:29 +08:00
回复了 dangyuluo 创建的主题 C++ CPU 指令重排是 cache 同步太慢的表征么?
这个和缓存的一致性协议(e.g. MESI)没有关系,主要是和 x86 的内存一致性模型的约定有关。

为了实现的简便,或者优化的方便,计算机领域一个非常重要的 trick 就是[as if rule]( https://en.wikipedia.org/wiki/As-if_rule)。编译器和硬件可以不按照实际的程序 /指令执行,只要最终不会产生**软件可以观察到**的差异就行了。

具体来看,如果我们更多的在聊 Intel 的话,x86-TSO 的内存一致性模型主要有下面这么几个约定,而 OP 的例子正是很多人用来说明第 4 点的比较常用的例子:
1. Loads are not reordered with other loads.
2. Stores are not reordered with other stores.
3. Stores are not reordered with older loads.
4. Loads may be reordered with older stores to different locations but not with older stores to the same location.

仔细想想,这样的约定正是尽量较少软件可观察的差异体现。作为软件,我们期待写一个变量下一次读出同样的值,所以约定 Store/Load 在同一个内存地址不会有 reorder 。与此同时,写一个变量然后读取另一个变量会有 reorder ,这似乎对软件产生的麻烦就小很多。


最后,为啥非要 reorder ?那当然是硬件那边优化和实现的考虑了,CPU 一般会通过[store buffer]( https://en.wikipedia.org/wiki/Write_buffer)来批量写内存提升效率,不难想象,Store/Load reorder 的存在,不就是顺理成章的事情了嘛。当然,这里对为什么这么约定的解释,更多只是举一个例子的意思,没人真正知道这是不是 Intel 选择上述约定的动机或者唯一动机,重要的只是这个约定是啥样,和我们如何用这个约定解释程序行为。
2022-03-01 20:45:21 +08:00
回复了 zhoudaiyu 创建的主题 问与答 NAT 穿透为什么要用 UDP 协议?
2021-10-27 00:53:22 +08:00
回复了 abc8678 创建的主题 Windows 更新 win11 后, sandboxie 内打不开资源管理器了
and this is by far the most interesting thing. wit
2020-11-14 11:17:31 +08:00
回复了 isno 创建的主题 程序员 V2 的程序员们,学学法律吧
想起了之前也有类似的案例: https://www.zhihu.com/question/308203318
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3395 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 11ms UTC 05:07 PVG 13:07 LAX 21:07 JFK 00:07
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86