首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >x86非时态指令:线程本地数据是否需要隔离?

x86非时态指令:线程本地数据是否需要隔离?
EN

Stack Overflow用户
提问于 2016-03-01 18:04:10
回答 1查看 436关注 0票数 1

在x86/x64上,非时态存储指令(如MOVNTIMOVNTPS )比“常规”存储提供更弱的内存排序保证。我知道,当共享内存时,栅栏(例如SFENCE)是必要的,它将被写入线程间的非临时内存中。然而,对于线程本地内存来说,栅栏指令是否是必需的?如果我通过MOVNTPS写入到某个位置,是否保证在没有任何栅栏指令的情况下,在同一线程中的后续指令中可以看到该写?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-01 18:22:21

是的,它们没有栅栏就能看得见。请参阅8.2.2节P6中的内存排序,以及英特尔64和IA-32架构软件开发人员手册第3A卷:系统编程指南(第1部分)中最近的处理器系列,其中除其他外:

对于定义为可写回缓存的内存区域,.读取可以用旧的写入到不同的位置重新排序,但不能用旧的写入到相同的位置。

对内存的写入不会与其他写入重新排序,只有以下例外情况:-流存储(写)执行非时态移动指令(MOVNTI、MOVNTQ、MOVNTDQ、MOVNTPS和MOVNTPD);

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35730136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档