首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存屏障/栅栏的开销

内存屏障/栅栏的开销
EN

Stack Overflow用户
提问于 2009-11-29 19:24:07
回答 1查看 2.8K关注 0票数 7

我目前正在编写C++代码,并且在代码中使用了很多内存屏障/栅栏。我知道,MB命令编译器和硬件不要重新排序读写操作。但我不知道这个操作在运行时对处理器来说有多复杂。

我的问题是:这种屏障的运行时开销是多少?我在谷歌上没有找到任何有用的答案...开销可以忽略不计吗?或者导致大量使用MBs导致严重的性能问题?

诚挚的问候。

EN

回答 1

Stack Overflow用户

发布于 2009-11-29 19:34:34

试着想一想指令是做什么的。它不会让CPU在逻辑上做任何复杂的事情,但它会强制CPU等待,直到所有的读和写都提交到主存中。因此,成本实际上取决于访问主内存的成本(以及未完成的读/写操作的数量)。

访问主存通常是非常昂贵的(10-200个时钟周期),但在某种意义上,这项工作也必须在没有障碍的情况下完成,它可以通过同时执行一些其他指令来隐藏,这样你就不会感受到太大的成本。

它还限制了CPU(和编译器)重新调度指令的能力,因此也可能存在间接成本,因为附近的指令不能交错,否则可能会产生更有效的执行调度。

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

https://stackoverflow.com/questions/1815282

复制
相关文章

相似问题

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