在需要高性能的编程中,需要注意多核 CPU 的缓存一致性 MESI 协议吗?

2017-09-28 11:15:19 +08:00
 aheadlead
2028 次点击
所在节点    问与答
6 条回复
ipconfiger
2017-09-28 11:18:57 +08:00
需要
aheadlead
2017-09-28 11:26:00 +08:00
@ipconfiger 愿闻其详
希望能给出一些参考资料,或者类似游戏引擎的代码参考,谢谢
clearbug
2017-09-28 12:33:33 +08:00
这个东西不是都会在编程语言层面处理的么?我看 java 好像是这样的!楼主说的编程是用什么语言?
gogohigh
2017-09-28 12:54:52 +08:00
Java 有 JMM 处理
xxzs
2017-09-28 19:40:46 +08:00
可以看看 folly, 比如 ProducerConsumer Queue 里面就对 cache line 做了特别处理,
char pad0_[CacheLocality::kFalseSharingRange];
const uint32_t size_;
T* const records_;

FOLLY_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned int> readIndex_;
FOLLY_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned int> writeIndex_;

char pad1_[CacheLocality::kFalseSharingRange - sizeof(writeIndex_)];
};
xxzs
2017-09-28 19:41:58 +08:00
有兴趣还可以研究一下 C++的 std::memory_order

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/394275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX