为了测试缓存系统,我需要特定进程的内存访问(读取和写入)列表。缓存代码用verilog编写。我的应用程序是用于媒体处理,但是我也对其他应用程序开放。到目前为止,我一直在用于PNG解码的C ++代码中添加地址引用(这里可用http://lodev.org/lodepng/)...
这是一个非常繁琐的过程,我正在寻找替代方案。我甚至尝试过像简单标量这样的基准测试以及阅读故障转储,但无济于事......
提前致谢!
答案 0 :(得分:1)
只要您在x86上运行,可能值得花时间研究一下英特尔Pin。
他们的手册an example如何使用Pin来检测二进制文件以生成内存跟踪。
答案 1 :(得分:0)
查看https://lwn.net/Articles/257209/
一个工具是Cachegrind
(valgrind的一部分)。它很慢,但可以告诉你有关内存访问的确切统计信息,因为它模拟了虚拟处理器上的整个程序。
另一个工具是Oprofile。它是一个使用统计抽样来获取数据的内核模块。它不那么准确,但重量要轻得多。