在我们的系统中,我尝试使用
__attribute__((__aligned__(CACHE_LINE_SIZE)))
它实际上并没有提高任何性能。我们如何使用缓存对齐并衡量它的帮助?
在我们的系统中,我尝试使用
__attribute__((__aligned__(CACHE_LINE_SIZE)))
它实际上并没有提高任何性能。我们如何使用缓存对齐并衡量它的帮助?
仅当数据在线程间错误共享时,缓存对齐才能提高性能。这意味着什么?如果您有 2 个字段,其中一个经常共享和更新,一个不经常共享和更新,并且它们位于同一缓存行中,则访问“冷”字段(不经常更新的字段)与访问“热”字段具有相同的惩罚一,因为“热”字段的更新使其他线程(CPU线程)整个缓存行无效,因此也使“冷”字段无效。类似的情况是两个“热”字段共享高速缓存行并彼此无效。
对于其他情况,高速缓存对齐不会提高性能,实际上可能会因增加数据大小而损害性能。
要考虑缓存对齐,您需要:
我推荐 Scott Meyer 的演讲CPU Caches 和 Why You Care。