1

x86 ベースのアーキテクチャの CPU キャッシュの内容を表示またはダンプするにはどうすればよいですか? キャッシュ フラッシュが発生するたびに、何が/どこでフラッシュされたかを確認するにはどうすればよいですか?

4

2 に答える 2

1

できません、本当に。CPU キャッシュは、CPU で実行されているコードに対して透過的になるように設計されています。コードの実行を高速化する効果がありますが、CPU はキャッシュに関するすべてを管理します。キャッシュに何を保持するか、何を追い出すか、いつキャッシュから読み取るかなど、すべてです。プログラマがアクセスできるようには設計されていません (ただし、Intel/AMD は、このような情報をクエリするために特別なデバッグ レジスタを検査できるデバッグ ツールを提供する場合があります)。

于 2013-10-16T18:21:17.393 に答える
1

オプションはありますが、実装するのは簡単ではありません。

アイデアは、キャッシュの状態を壊さずにキャッシュをダンプする必要があるということです。言うは易く行うは難しですが、原理的には簡単です: 最後の L3 キャッシュの変更をトリガーしたアドレスからすべての内容を書き出してから、外部の値に触れることなく、すべての値を読み取るまで L3 キャッシュ幅全体を移動します。そこから、より高いレベルのキャッシュに進むことができます。その論文では、彼らがこれをどのように行っているかについてはあまり言及されていませんが、私が示唆したように、ボトムアップではなく、キャッシュを介してトップダウンで機能することを暗示しているようです。繰り返しになりますが、これらすべての重要な部分は、キャッシュを破損させないことです。

それにもかかわらず、アプリのパフォーマンスが 100 ~ 1000 分の 1 に大幅に低下します。その論文が触れている側面の 1 つは、データ量が多いため、ハードウェア圧縮です。

于 2014-04-15T09:17:38.043 に答える