1

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

有人告诉我 clflush 在 core 2 duo 处理器之外确实可以正常工作。我从这个链接(下面)重定向后陈述这个问题------->

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

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

用了 83 个滴答声

用了 66 个滴答声

同花顺:花费了 52 个滴答声

用了 45 个滴答声

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

4

1 回答 1

5

rdtsc不是序列化指令,因此测量不准确。作为一个快速破解,您可以插入一个cpuid呼叫,同时注意更新clobber列表:

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

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

于 2013-06-23T13:49:41.780 回答