1

i3/i7 プロセッサで clflush 命令/関数を使用してキャッシュをフラッシュし、キャッシュが空かどうかを確認することは可能ですか?? もしそうなら - 正しい使用形式を提案してください (C で直接または C でのインライン アセンブリで)

clflush は、コア 2 デュオ プロセッサを超えて適切に動作すると言われました。このリンク(下記)からリダイレクトされた後、私はこの質問を述べています ------->

¨プロセッサのキャッシュが最近フラッシュされたかどうかを確認する方法はありますか? ¨

結果が期待どおりに一致しません。これは私がこれらの結果を得ているものです:

83ティックかかりました

66ティックかかりました

フラッシュ: 52 ティックかかりました

45ティックかかりました

-------------------> キャッシュをフラッシュした後、CPU のティック数を減らすにはどうすればよいですか? (私が得た結果の2行目と3行目を参照してください)

4

1 に答える 1

5

rdtscはシリアル化命令ではないため、測定は正確ではありません。簡単なハックとして、cpuidclobber リストも更新するように注意して、呼び出しを挿入できます。

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

少なくとも私にとっては、期待に合うように出力が変更されました。

于 2013-06-23T13:49:41.780 に答える