我有一个任务,我需要测量访问L1,L2和L3缓存中的数据的延迟,以及主内存.这将在C中完成.
我花了几个小时研究测量缓存延迟的方法,并且调整得很少.我已经下载了一些基准测试工具,这些工具给了我缓存访问时间,但在我自己的代码中实现它时,我还没有得到任何结论.我知道缓存中发生的事情在C中不符合我的要求.
我的下一个想法是,如果我可以强制使用来自x86程序集的东西填充缓存(首先想到)然后只对我刚刚加载的数据做一个clock(),access(),clock(),据说时间就是准确的(是)访问时间,因为我知道它应该在缓存中找到,因为我只是用我的内联asm或类似的方法把它放在那里...
如果有人能够在这里为我的任务提供见解,那将是非常棒的.是否告诉我,我因为想要使用asm在缓存中加载某些东西而疯狂,或者向我介绍可能对我有帮助的其他东西.
非常感谢!