C/C++程序的内存访问分析[已关闭]

9rygscc1  于 2023-04-01  发布在  C/C++
关注(0)|答案(1)|浏览(165)

**已关闭。**此问题正在寻求有关书籍、工具、软件库等的建议。它不符合Stack Overflow guidelines。当前不接受答案。

我们不允许问题寻求有关书籍、工具、软件库等的推荐。你可以编辑问题,以便可以使用事实和引用来回答问题。
3天前关闭。
Improve this question
我正在探索C/C++程序的内存访问分析。我想知道内存访问何时开始,执行内存访问需要多长时间,以及访问的内存类型(L1/L2/L3/DRAM)。
我使用了一个名为 lmbench 的工具来执行内存访问延迟分析。lmbench中的“lat_mem_rd”基准测试测量顺序内存读取的延迟。该基准测试在指定的内存块上执行一系列顺序内存读取,并报告每次读取的平均延迟。延迟以纳秒为单位测量。而较低的值表示较好的内存访问性能。使用这个工具我可以得到访问L1,L2,L3,DRAM内存的延迟。
我知道 *CPU架构 * 和 * 编译器优化 * 在程序优化中起着关键作用,这可能会影响整体内存访问延迟。OS上下文切换也会增加内存访问延迟。
是否有任何可用的分析工具或已知的经过验证的技术来获得近乎准确的内存访问分析信息?

dfty9e19

dfty9e191#

  • 英特尔VTune放大器:这是一个性能分析工具,可以分析英特尔处理器上C/C++程序的内存访问行为。
  • AMD CodeXL:这是一个性能分析工具,可以分析在AMD处理器上运行的C/C++程序。
  • HPCToolkit:这是一个开源性能分析工具,可以分析各种架构上的C/C++程序,包括x86、ARM和PowerPC。

您还可以使用大多数现代CPU上提供的硬件性能计数器来深入了解内存访问性能。这些性能计数器可以跟踪内存访问事件,例如缓存命中/未命中、内存带宽使用情况等。

相关问题