关于伪共享与Cache对齐的几个问题想请教

drzhouweiming 2008-04-24 12:35:12
关于伪共享与Cache对齐的几个问题想向Intel的专家请教


问题1:
把内存读入Cache的规则是不是每个Cache行对应的首地址一定是Cache行大小的整数倍?


问题2:
有两块同样大小的内存
第一块内存如果位于一个Cache行里,内存首地址刚好位于Cache行首。
第二块内存位于两个Cache中。
在没有伪共享问题的情况下,写第一块内存的效率和写第二块内存的效率是否有区别?

问题3:
TBB中的cache_aligned_allocator.cpp文件中,
NFS_Allocate()的代码中,感觉并不能保证分配的两块相邻内存不在同一Cache行里。

不知是代码有Bug还是我理解错了。
...全文
246 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
drzhouweiming 2008-04-25
  • 打赏
  • 举报
回复
非常感谢!
intel_www 2008-04-24
  • 打赏
  • 举报
回复
问题1:
把内存读入Cache的规则是不是每个Cache行对应的首地址一定是Cache行大小的整数倍?

是的。Cache load总是line对齐的。


问题2:
有两块同样大小的内存
第一块内存如果位于一个Cache行里,内存首地址刚好位于Cache行首。
第二块内存位于两个Cache中。
在没有伪共享问题的情况下,写第一块内存的效率和写第二块内存的效率是否有区别?


情况比较复杂,取决于内存区域的属性和系统其他处理器当前是否在读取同一cache line。如果此时并没有其他处理器读取相同区域,那么两者效率没有区别。详细的情况请参考 处理器系统编程手册。

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧