2016-04-22 5 views
1

キャッシュされたデータメモリとキャッシュメモリから部分的に動作するプログラムをデバッグしようとしています。そのようなメモリを調べようとするとき、デバッガがどのように動作するのかという疑問があります。特定の場所を調べるときにキャッシュされたコピーにアクセスしますか?そうであれば、実際にキャッシュを修正しますか?一度データが欠落したらそれをフェッチする必要がありますか?デバッガの下でプログラムの動作が異なる場合があることを意味しますか?デバッガがキャッシュに影響を与えることなく、キャッシュ関連の問題をデバッグする方法はありますか?
更新:特定のCPUコアはARM Cortex-A5です。デバッガはDSTREAM/DS-5ですデバッガメモリwatch /キャッシュメモリのチェック

+0

キャッシュ自体の問題を(EEとして)調査していますか?または、キャッシュが問題を引き起こしている可能性があると思われるプログラムロジックの問題ですか? – wallyk

+0

キャッシュの使用方法やハードウェアのバグが間違っている可能性があります。私はそれが元のことを望む。 –

答えて

2

DS-5は、CPUに接続されたJTAGプローブを使用します。 CPUのアドレス指定可能なメモリを読み取るには、メモリをフェッチするためのマイクロ操作によってCPUを実行する必要があります。これは、CPUが単純にプログラムを実行していた場合とは異なり、キャッシュを混乱させます。

重要(疑わしい)コードの後までCPUを停止させずに、レジスタとメモリの内容から何が起こったのかをまとめて、効果を最小限に抑えることができます。プログラムが最初からブレークポイントまで実行できる場合、特に10,000 +命令の場合は、キャッシュはおそらく正しい状態になります。非同期アクティビティがない限り

キャッシュに問題があるかどうかを確認するには、単にキャッシュを無効にすることができますか?

+0

ありがとうございます。無効化は実際に問題を解決しています。これが疑わしい理由です。 –

+0

SoCにCoresight Debug Access Portなどがある場合は、停止したCPUを混乱させることなく、物理メモリの読み出しと周辺機器のポークを行うことが可能です。 DS-5のキャッシュ認識は、非破壊的にも(キャッシュRAMを突き止める)ことができるはずです(http://infocenter.arm.com/help/topic/com.arm.doc.ddi0433c/BABEJGAD.html)。 。 – Notlikethat

+0

@Notlikethatええ、私はこれらの指示について知っていますが、キャッシュにどのように影響するのだろうかと思います。また、残念ながら、A5はデバッガでキャッシュ認識を提供していません。 –

3

私はCPUに依存するので、質問は少し一般的だと思います。

しかし、いくつかの非常にグローバルなルール:

  • デバッガは、データ・キャッシュ上のキャッシュ検索が含まれており、CPUはデータアクセスに見ているかを確認しようとします。
  • これは、命令キャッシュでは異なります。通常、デバッガはデータアクセスを実行するときにルックアップを行いません。しかし、これは通常、命令キャッシュにダーティデータが含まれていないため、問題ではありません。デバッガによっては、データが書き込まれると、DCacheを消去し、対応するICache行を無効にすることができます。
  • デバッグアクセスは侵入しないようにし、ミスの場合にラインフィルが実行されないモードを強制することができます。しかし、これは本当にCPUに依存しており、グローバルルールではありません。
+0

Cortex-A5について具体的なことを教えてください。 –

関連する問題