【发布时间】:2014-05-11 01:33:02
【问题描述】:
今天我和教授在并行编程课上对什么是“虚假共享”有了不同的理解。我的教授说的没有道理,所以我立即指出。她认为“虚假分享”会导致节目结果出现错误。
我说过,当不同的内存地址分配给同一个缓存行时,会发生“错误共享”,将数据写入其中一个会导致另一个被踢出缓存。如果处理器在两个虚假共享地址之间来回写入,则它们都无法停留在缓存中,因此所有操作都会导致对DRAM的访问。
到目前为止,这是我的看法。事实上,我也不确定我说的是什么……如果我有误解,请指出来。
所以有一些问题。缓存假定为 64 字节对齐、4 路组关联。
- 两个超过 64 字节的地址是否有可能是“虚假共享”?
- 单线程程序是否可能遇到“错误共享”问题?
- 重现“虚假共享”的最佳代码示例是什么?
- 一般来说,避免程序员“虚假共享”的注意事项有哪些?
【问题讨论】:
-
here是一个关于虚假分享的视频,希望对您有所帮助。没有50声望不能加评论,真的很尴尬。
标签: caching optimization parallel-processing computer-architecture false-sharing