i3或i7处理器中的clflush()

时间:2013-06-22 07:19:00

标签: caching assembly x86

是否可以在i3 / i7处理器中使用clflush指令/功能来刷新缓存并检查缓存是否为空?如果是这样 - 请建议正确的使用格式(直接使用C语言或使用C语言进行内联汇编)

有人告诉我clflush在核心2双核处理器之外可以正常工作。 在从此链接(下方)重定向后,我正在陈述这个问题------->

¨Is there a way to check whether the processor cache has been flushed recently?¨

我的结果与预期不符。这就是我得到这些结果:

花了83个小时

花了66个滴答

flush:花了52个滴答

需要45个滴答

------------------->刷新缓存后,cpu如何减少滴答? (参考我得到的结果的第2和第3行)

1 个答案:

答案 0 :(得分:5)

rdtsc不是序列化指令,因此测量不准确。作为快速黑客,你可以插入一个cpuid电话,注意更新clobber列表:

asm volatile ("cpuid; rdtsc" : "=a" (a), "=d" (d) : : "ebx", "ecx");

至少对我来说,这改变了输出以符合预期。