免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: zylthinking
打印 上一主题 下一主题

[CPU及多核] 如何从 MESI 角度理解数据依赖屏障 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-01-26 19:46 |只看该作者
回复 2# 塑料袋

不知道能不能請您解釋一下下面這段:
2)若这个queue中的各个请求可以一定程度重排序,这个一定程度指的是invalidate request和read reply都挂在一个queue中,可以重排序各invalidate request,但应将read reply视做边界。即:

後面所接的1 & 2是什麼意思?
reply1,invalidate1,invalidate2,reply2可以重拍序为
為何可以?
reply1,invalidate2,invalidate1,reply2,但绝不能重排序为
為何不行?
invalidate1,reply1,invalidate2,reply2。
这样的话,CPU1~N即使将invalidate p的request重排序在了invalidate b的request前边,但read p的reply也在invalidate b的request后边, 必然是先真正执行了invalidate b的request,然后才能读到p。这时CPU1~N不需要rmb,这个不仅仅是模型,而是很多实际情况如此。



   

论坛徽章:
0
12 [报告]
发表于 2013-01-27 12:30 |只看该作者
过来学习的

论坛徽章:
0
13 [报告]
发表于 2013-01-29 14:38 |只看该作者
塑料袋 发表于 2013-01-25 12:09
我很是怀疑学这些东西有没有用,好久不看这些了,不过既然说起这些,就勉为作答:

“在 CPU 0 上, wmb  ...


mobai:
请教两个问题:

这个wmb的含义是:CPU1~N都是先收到invalidate b的请求,再收到invalidate p的请求,创造了若能感知到p,则必能感知到b的先决条件。
CPU收到invalidate的请求后,并不是马上作废相应的cache line,而是将这个invalidate请求挂入一个queue,然后就回应invalidate的应答。
》》》》》》》》》》》》》》》》
是不是这个意思,是每条写内存指令,都会触发一个invalidate请求发送给其他cpu。如果cpu0先执行A,然后执行B,那么其他cpu就会先收到invalidate A,然后收到invalidate B的请求?
那么wmb其实这里防止cpu乱序执行,所以cpu0先执行A,然后执行B,从而其他cpu就会先收到invalidate A,然后收到invalidate B的请求。

若这个queue中的各个请求可以一定程度重排序,这个一定程度指的是invalidate request和read reply都挂在一个queue中,可以重排序各invalidate request,但应将read reply视做边界。即:
reply1,invalidate1,invalidate2,reply2可以重拍序为
》》》》》》》》》》》》》》》》
其他cpu对收到的请求可以进行排序,如果现在收到了inv A, inv B两个顺序请求,可能会排序成inv B, inv A。那么可能其他cpu获取到了B,但是A此时还是旧的值。那么rmb,read dependence这里实际上的作用是防止乱序,并且在本地cpu插入一个上面所说的read reply。从而,防止cpu对请求进行过渡排序,这样即使在read reply之前,乱序成inv B,invA。但是在reply之后,A肯定已经是罪新的了。



论坛徽章:
0
14 [报告]
发表于 2013-01-30 09:37 |只看该作者
wo ding ding

论坛徽章:
0
15 [报告]
发表于 2013-01-31 10:29 |只看该作者
cheng xia qu le
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP