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

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

8.5.46. flushda

命令 データ・キャッシュ・アドレスのフラッシュ
演算

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

アセンブラー構文

flushda IMM16(rA)

flushda -100(r6)

説明

Nios II プロセッサーが直接マッピングされているデータキャッシュを実装している場合、flushdaはラインがダーティーであれば指定されたアドレスにマップされているデータ・キャッシュ・ラインをメモリーに書き戻し、データ・キャッシュ・ラインをクリアーする。flushdとは異なり、flushdaはアドレス指定されたデータが現在のキャッシュがある場合にのみ、ダーティーデータをメモリーに書き戻す。このプロセス配下のステップで行われる。

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

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

使用法

アドレス指定されたメモリー位置がキャッシュにない場合にのみ、flushdaを使用してダーティーラインをメモリーに書き戻し、キャッシュラインをフラッシュする。対照的に、他のキャッシュクリアー・オプションについては、「flushd のデータ・キャッシュ・アドレスのフラッシュ」、「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 0x1b