Nios II Gen2 プロセッサー・リファレンス・ガイド

ID 683836
日付 10/28/2016
Public
ドキュメント目次

3.5.1. MPU 領域の読み出しおよび書き込み動作

MPU 領域の読み出しおよび書き込み動作は、mpubaseおよびmpuaccコントロール・レジスターを介して MPU 領域の属性にアクセスします。MPU 領域の属性には、mpubase.BASEmpuacc.MASKmpuacc.LIMITmpuacc.C、およびmpuacc.PERMフィールドが含まれます。

MPU 領域の読み出し動作は、領域の属性での現在の値を取得します。各 MPU 領域読み出し動作は、次の動作から成ります。

  • mpubase.INDEXmpubase.Dフィールドが MPU 領域を識別する設定ように設定された状態でのmpubaseレジスターへのwrctl命令の実行
  • mpuacc.RDフィールドを 1 に設定し、mpuacc.WRフィールドをゼロにクリアーした状態でのmpuaccレジスターへのwrctl命令の実行。この動作はmpubaseレジスターとmpuaccレジスターの値をロードする
  • mpubaseレジスターへのrdctl命令を実行し、ロードしたmpubaseレジスター値を読み出す
  • mpuaccレジスターへのrdctl命令を実行し、ロードしたmpuaccレジスター値を読み出す

MPU 領域の読み出し動作ではmpubase.BASEmpuacc.MASKまたはmpuacc.LIMITmpuacc.C、およびmpuacc.PERMの値を取得します。

注: mpubaseレジスタの値は、mpuaccレジスターへのwrctl命令が実行されるまで実際には取得されません。

MPU 領域の書き込み動作は領域の属性の新しい値を設定します。各 MPU 領域の書き込み動作は、次の動作から成ります。

  • mpubase.INDEXmpubase.Dフィールドが MPU 領域を識別する設定ように設定された状態でのmpubaseレジスターへのwrctl命令の実行
  • mpuacc.WRフィールドを 1 に設定し、mpuacc.RDフィールドをゼロにクリアーした状態でのmpuaccレジスターへのwrctl命令の実行

MPU 領域の書き込み動作では、MPU 領域での新しい属性としてmpubase.BASEmpuacc.MASKまたはmpuacc.LIMITmpuacc.C、およびmpuacc.PERMの値を設定します。

通常、wrctl命令はパイプラインをフラッシュし、コントロール・レジスターの書き込みによる影響がwrctl命令実行の完了直後に発生することを保証します。ただし、wrctl命令はmpubasempuaccコントロール・レジスターが自動的にパイプラインをフラッシュしないように指示します。代わりに、システム・ソフトウェアは、必要に応じて ( パイプラインをフラッシュするレジスターにflushp命令またはwrctl命令を使用して ) パイプラインをフラッシュする役割があります。コンテクストスイッチは、通常、新しいスレッド用に MPU 領域を再プログラミングする必要があるため、各wrctl命令でパイプラインをフラッシュすると不要なオーバーヘッドが発生します。