6.13 MMU のデバッグについて

DS-5デバッガ は、メモリ管理ユニット(MMU)に関連する問題をデバッグするためのさまざまな機能を備えています。

メモリ管理ユニットは、仮想アドレスから物理アドレスへの変換、アクセスパーミッション、およびメモリ属性を制御するハードウェア機能です。MMU の設定は、メモリに格納されているシステム制御レジスタおよび変換テーブルを介して行われます。

デバイスには、MMU を必要な数だけいくつでも含めることができます。デバイスが MMU をカスケードした場合、一方の MMU の出力アドレスはもう一方の MMU への入力アドレスとして使用されます。指定される変換は、変換が発生したコンテキストや変換で渡された MMU の設定によって異なります。

例えば、Cortex-A15 などの ARMv7A ハイパーバイザ拡張機能を実装するプロセッサには、少なくとも 3 つの MMU が含まれます。通常、ハイパーバイザメモリ用に 1 つ、仮想化用に 1 つ、OS 内の通常のメモリアクセス用に 1 つ使用されます。ハイパーバイザ状態の場合、メモリアクセスはハイパーバイザ MMU のみをパススルーします。通常の状態の場合、メモリアクセスは最初に通常の MMU をパススルーしてから仮想化 MMU をパススルーします。詳細については、『ARM アーキテクチャリファレンスマニュアル』を参照して下さい。

DS-5デバッガ は、ARM アーキテクチャの一部のバージョン用の、MMU 変換テーブルの可視性を提供します。DS-5デバッガでは、MMU 関連の問題のデバッグに役立つ以下の操作を実行できます。

これらの機能にアクセスするには、グラフィカルデバッガの[MMU]ビューを使用するか、コマンドラインから MMU コマンドを使用します。

DS-5 デバッガのキャッシュおよび MMU のデータ

特定の状況では、ターゲット状態の表示制限が原因で、DS-5デバッガで変換テーブルをすべて正確に表示できません。

ターゲット上の MMU ハードウェアは、1 つ以上の変換テーブルルックアップを実行して、変換テーブルウォークを実行します。これらのルックアップは、物理アドレス(または 2 段変換のための中間物理アドレス)を使ってメモリにアクセスする必要があります。ただし CPU は、変換テーブルエントリを読み出しまたは変更するために、仮想アドレスを使ってメモリにアクセスします。それぞれの場合において、アクセスされた変換テーブルエントリは、CPU のデータキャッシュに存在できます。つまり、変換テーブルエントリがキャッシュ可能なライトバックとしてマークされるメモリの領域に存在する場合に、CPU のデータキャッシュが有効であると、変換テーブルエントリへのすべての変更が、物理メモリに即座には書き込まれない場合があります。これは、CPU のデータキャッシュを認識する MMU ハードウェアにとっては問題ではありません。

変換テーブルウォークを実行するには、DS-5デバッガは物理アドレスを使ってメモリにアクセスすることも必要です。MMU を無効にすることでこれを行います。MMU が無効になっているため、これらのメモリアクセスは CPU のデータキャッシュの内容を考慮しない可能性があります。このため、物理メモリアクセスは古いデータを返すことがあります。

DS-5デバッガで古い変換テーブルエントリが生成されないようにするには、以下のようにします。

  • デバッガがデータのキャッシュを認識している変換テーブルウォークを実行したときに、キャッシュ認識の物理メモリアクセスを有効にすることができます。以下のコマンドを使用します。

    set mmu use-cache-for-phys-reads true

  • 変換テーブルエントリに古いデータが含まれている場合は、デバッガを使用して、手動でクリーニングを行い、CPU キャッシュの内容を無効にすることができます。以下のコマンドを使用します。

    cache flush

    注:

    大量のキャッシュのクリアは、時間がかかることがあります。
非機密扱いPDF file icon PDF 版ARM DUI0446ZJ
Copyright © 2010–2016 ARM.All rights reserved.