繁体   English   中英

如何从C / C ++程序获取商用UNIX OS上的缓存行大小?

[英]How to obtain cache line size on commercial UNIX OSes from a C/C++ program?

在网上找到Windows,Linux和OSX的答案很容易,但是在商业UNIX操作系统(如AIX(在POWER上),HP-UX(在Itanium上)和Solaris(在SPARC上)上如何呢? 尝试使用错误的缓存行共享代码不是我想要的答案。

编辑:添加了CPU体系结构。

如果您要优化性能,那么基准测试正是您应该做的。 有关示例,请参见ATLAS

如果您不打算优化性能,那么为什么还要关心高速缓存行的大小,还关心行数和关联性?

您需要支持哪些CPU架构?

对于Solaris(在SPARC和x86体系结构上),可以使用该命令:

$ prtpicl -v -c cpu | grep -i cache-line-size
  :l1-dcache-line-size   0x40 
  :l1-icache-line-size   0x40 
  :l2-cache-line-size    0x40 

您可以看一下hwloc库(BSD许可证),它为不同的系统和体系结构提供了此类信息。 您可以使用命令行工具lstopo或提供的API(请参阅文档 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM