c语言测绘编程,如何用C编写程序来测量缓存的速度?

Michael Dorg..

5

您需要提出一种启发式方法,强制100%(或非常接近)缓存未命中(希望您有缓存失效操作码?)和100%缓存命中.Hooray,适用于1级缓存.现在,如何对2级和3级做同样的事情?

严肃地说,如果没有连接到CPU和内存的特殊硬件和跟踪,可能没有办法100%可靠地完成这项工作,但这就是我要做的事情:

将一堆"东西"写入内存中的1个位置 - 足以让您确定它是一致地命中L1缓存并记录时间(这会影响缓存,所以要小心).你应该在没有分支的情况下进行这组写操作,以试图摆脱分支预测的不一致性.那是最好的时间.现在,每隔一段时间,将缓存行的数据写入已知位置末尾的RAM中的随机远程位置并记录新时间.希望这需要更长的时间.在不同时间继续进行此录制,希望您会看到几个倾向于分组的时间.这些组中的每一个"都可以"显示L2,L3和存储器访问时序的时序.问题是还有很多其他的东西妨碍了.操作系统可以上下文切换你并搞砸你的缓存.中断可能会出现并通过你的时间关闭.会有很多东西可以抛弃这些价值.但是,希望您在数据中获得足够的信号以查看它是否有效.

这可能更容易在一个更简单的嵌入式系统上进行,其中操作系统(如果有的话)不会妨碍你.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值