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

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

8.5.50. initda

命令 データ・キャッシュ・アドレスの初期化
演算

現在キャッシュしているアドレス rA + σ(IMM16) のデータ・キャッシュ・ラインを初期化する

アセンブラー構文

initda IMM16(rA)

initda -100(r6)

説明

Nios II プロセッサーがダイレクト・マップ・データキャッシュを実装している場合、initdaは指定されたアドレスにマップされたダーティーデータ・キャッシュラインをメモリーにチェックイン ( または書き込み ) せずに、データ・キャッシュ・ラインをクリアーする。initdとは異なり、initdaは指定されたデータが現在キャッシュされている場合にのみキャッシュラインをクリアーする。このプロセスは、次のステップで行われる :

  • rA の値と符号付き 16 ビット即値の和で指定された有効アドレスを計算する。
  • 計算された有効アドレスに関連付けられたデータ・キャッシュ・ラインを特定する。各データキャッシュの有効アドレスは、tagフィールドとlineフィールドを含む。ラインを特定するとき、initdatagフィールドとlineフィールドの両方を使う。
  • アドレス指定されたデータが現在キャッシュ場合、cache line タグを有効アドレスと比較する。tagフィールドが一致しない場合は、有効アドレスは現在キャッシュされていないため、命令は何も実行しない。
  • データ・キャッシュ・ラインがダーティーであるかのチェックをスキップする。initdはダーティー・キャッシュ・ラインのチェックをスキップするため、プロセッサーによりデータは変更されるが、まだメモリーに書き込まれていないデータは失われる。
  • ラインの有効ビットをクリアーする。

    Nios II プロセッサー・コアにデータキャッシュがない場合、initda命令は演算を何も実行しない。

使用法

initdaを使用してダーティーラインをメモリーに書き戻すことをスキップし、アドレス指定されたメモリー位置が現在キャッシュにある場合にのみキャッシュラインをフラッシュする。これとは対照的に、他のキャッシュ消去オプションについては、「flushd のデータ・・キャッシュ・ラインのフラッシュ」、「flushda のデータ・キャッシュ・アドレスのフラッシュ」、および「initd のデータ・キャッシュ・ラインの初期化」を参照。initdaは、ダーティーデータを書き戻さないため、慎重に使用する必要がある。

Nios II のデータキャッシュについて詳しくは、「Nios II ソフトウェア開発ハンドブック」の「キャッシュおよび密結合メモリー」の章を参照。

例外

スーパーバイザー専用データアドレス

高速 TLB ミス ( データ )

ダブル TLB ミス ( データ )

MPU 領域違反 ( データ )

未実装命令

命令型

I

命令フィールド

A = オペランド rA のレジスター・インデックス

IMM16 = 16 ビットの符号付き即値

ビットフィールド
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
A 0 IMM16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
IMM16 0x13