首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了防止指令的重排外,内存障碍还会执行哪些任务?

除了防止指令的重排外,内存障碍还会执行哪些任务?
EN

Stack Overflow用户
提问于 2017-03-08 07:47:41
回答 2查看 115关注 0票数 3

我知道,内存障碍阻止了指令从前到后以及从后到后的重新排序,例如,如果我有以下说明:

代码语言:javascript
复制
instruction 1
instruction 2
instruction 3
memory barrier
instruction 4
instruction 5
instruction 6

这些指令可以按以下顺序执行:

代码语言:javascript
复制
instruction 3
instruction 1
instruction 2
memory barrier
instruction 6
instruction 5
instruction 4

但它们永远不会按以下顺序执行:

代码语言:javascript
复制
instruction 1
instruction 2
instruction 5
memory barrier
instruction 4
instruction 3
instruction 6

但是,我不确定以下任务是否也是由内存屏障执行的:

  • 在内存屏障完成之前,所有挂起的操作都已完成。
  • 清除内存屏障之前的写操作中仍然存在于缓存中的所有数据。
EN

回答 2

Stack Overflow用户

发布于 2017-03-08 08:43:09

至少对于IBM的powerPC来说,收尾并不一定,c.f。IBM文档

eieio指令的执行或完成并不意味着由eieio之前的指令引起的存储访问已经完成。指令创建的屏障将确保所有由屏障分隔的访问都按照指定的顺序执行,但在屏障之前发出的访问可能要到eieio指令完成很久后才能执行。

票数 0
EN

Stack Overflow用户

发布于 2017-03-10 03:20:59

从技术上讲,内存屏障不会强制执行指令。它限制了指令中的命令,其他观察人员可以看到执行命令。

不需要刷新内存,而且确实会大大减慢基于缓存的体系结构。例如,考虑一个核心,它维护挂起的内存操作的私有队列,并与其他内核共享一个连贯的缓存。当它到达一个屏障时,它可以在允许任何更多的内存操作进入其队列之前耗尽它的内存操作队列。它不必耗尽它的缓存--缓存一致性将处理其余部分。有关这些协议如何工作的详细说明,请参见记忆一致性和缓存一致性初探

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

https://stackoverflow.com/questions/42665704

复制
相关文章

相似问题

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