i3或i7处理器中的clflush()

use*_*142 1 x86 assembly caching

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

我被告知clflush在核心2双核处理器之外可以正常工作.从这个链接(下面)------->重定向后,我正在说明这个问题

¨ 有没有办法检查最近是否刷新了处理器缓存?¨

我的结果不符合预期.这就是我得到这些结果:

花了83个蜱虫

花了66个蜱虫

同花顺:花了52个蜱虫

花了45个蜱虫

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

Jes*_*ter 5

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

asm volatile ("cpuid; rdtsc" : "=a" (a), "=d" (d) : : "ebx", "ecx");
Run Code Online (Sandbox Code Playgroud)

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