Gun*_*iez 52
幸运的是,有多种方法可以显式刷新缓存.
指令"wbinvd"写回修改的高速缓存内容并将高速缓存标记为空.它执行一个总线周期,以使外部缓存刷新其数据.不幸的是,这是一项特权指导.但是,如果可以在DOS之类的东西下运行测试程序,那么这就是要走的路.这具有将"OS"的高速缓存占用空间保持为非常小的优点.
此外,还有"invd"指令,它使缓存无效而不将它们刷回主存储器.这违反了主内存和缓存的一致性,因此您必须自己处理.不是真的推荐.
出于基准测试的目的,最简单的解决方案可能是将大内存块复制到标有WC(写入组合)而不是WB的区域.图形卡的存储器映射区域是一个很好的候选区域,或者您可以通过MTRR寄存器自己将区域标记为WC.
您可以在测试程序中找到有关基准测试短程序的一些资源,以测量时钟周期和性能监控.
有x86汇编指令强制CPU刷新某些缓存行(例如CLFLUSH),但它们非常模糊.CLFLUSH特别只刷新L1缓存中的选定地址.
像大记忆一样偷偷摸摸的东西?
是的,这是最简单的方法,并确保CPU刷新所有级别的缓存.只需从您的工作台中排除缓存刷新时间,您就应该知道您的程序在缓存压力下的执行情况.
| 归档时间: |
|
| 查看次数: |
32704 次 |
| 最近记录: |