免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1885 | 回复: 7
打印 上一主题 下一主题

[内核同步] 前后连续两个内存操作中间插入中断,在memory order上相当于插入mfence 吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-23 17:45 |只看该作者 |倒序浏览
比如假设这样一种场景:
用户态代码中有前后连续的一个store和一个load,对于符合TSO的intel的cpu来说,在memory order上load可能先于store,但如果中间有mfence就不会发生reorder。
但在可以抢占的linux内核下,可能这两条指令执行的过程会是这样:
    假设线程初始在Processor A上执行了store,然后进入中断,而后某个时刻将这个线程切换到processor B上,然后执行load。在这种场景下,可以保证store在memory order上先于load吗?

论坛徽章:
0
2 [报告]
发表于 2013-09-23 22:22 来自手机 |只看该作者
iret可以保证

论坛徽章:
0
3 [报告]
发表于 2013-09-24 13:11 |只看该作者
回复 2# longddr


在intel SDV里看到了,iret是一个serializing instruction、多谢啊

论坛徽章:
0
4 [报告]
发表于 2013-09-24 13:56 |只看该作者
回复 2# longddr

http://wenku.it168.com/org/request
   

还有疑问,在之前提到的场景下iret发生在process B上,Iret保证了在processor B上load在memory order上落后与processor B上iret之前执行的指令,似乎并没有保证processor B上的这个load在memory order上落后与processor A上的store?

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
5 [报告]
发表于 2013-09-24 14:36 |只看该作者
如果是说store buffer,在中断和异常执行时就清完了

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
6 [报告]
发表于 2013-09-24 16:35 |只看该作者
本帖最后由 smalloc 于 2013-09-24 17:02 编辑

如果是不同地址,没必要保证order,同地址则处理器的memory-order模型已经保证order。
store发起在时间上必定先于中断,中断发起必定先于load.
而中断的signed是在指令的某个in-order状态或阶段,并且刷store-buffer,那么中断handler中的指令和中断前的指令是in-order的。
而中断后的指令因为inet也和handler中的指令是in-order的,于是store和loader是in-order的

论坛徽章:
0
7 [报告]
发表于 2013-09-24 18:12 来自手机 |只看该作者
iret串行的作用不是局限在单cpu的

论坛徽章:
0
8 [报告]
发表于 2013-09-24 19:25 |只看该作者
回复 7# longddr


    多谢两位不吝赐教,明了了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP