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

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

3.2.4. TLB 構成

TLB はオペレーティング・システムのページテーブルのキャッシュとして機能します。MMU がある Nios II プロセッサーでは、1 つのメイン TLB が命令およびデータアクセスにより共有されます。TLB はオンチップ RAM に格納され、命令フェッチとデータアクセスを実行する命令の変換を処理します。

TLB は、n ウェイ・セット・アソシアティブ方式のキャッシュとして編成されています。ソフトウェアは、新しいエントリーをロードするときのウェイ ( セット ) を指定します。

注: Qsys の Nios II Processor パラメーター・エディターで TLB エントリーの数と TLB のウェイ数 ( セット・アソシアティビリティー ) を設定できます。デフォルトでは、TLB は 16 ウェイキャッシュです。エントリーのデフォルト数は、ターゲットデバイスによって次のように異なります。
  • Cyclone III®、Stratix III®、Stratix IV—256 エントリー、 requiring 1 つの M9K RAM が必要

    詳しくは、「Nios II プロセッサー・リファレンス・ハンドブック」の「Nios II プロセッサーのインスタンス化」の章を参照してください。

オペレーティング・システム・ソフトウェアは、複数の TLB エントリーが同じ仮想アドレスをマッピングしないことを保証する役割があります。複数のエントリーが同じ仮想アドレスをマップする場合、ハードウェアの動作は未定義です。

各 TLB エントリーは、タグとデータ部分で構成されます。これは、命令キャッシュとデータキャッシュのタグとデータ部分に類似しています。

命令キャッシュおよびデータキャッシュについて詳しくは、「Nios II プロセッサー・リファレンス・ハンドブック」の「Nios II コア実装の詳細」の章を参照してください。

TLB エントリーのタグ部分は、仮想アドレスを TLB エントリーに一致させる際に使用される情報を含みます。

表 11.  TLB タグ部分のコンテンツ
フィールド名 説明
VPN VPNは仮想ページナンバー・フィールドであり、仮想アドレスの上位 20 ビットと比較されます。
PID PIDはプロセス識別子フィールドであり、tlbmiscコントロール・レジスターに格納されている現在のプロセス ID の値と比較され、事実上仮想アドレスが拡張されます。フィールドサイズは、Nios_II Processor パラメーター・エディターで設定可能で、8 ~ 14 ビットになります。
G Gはグローバルフラグです。G = 1 のとき、PID は TLB ルックアップが無視されます。

TLB データ部分は、一致する仮想アドレスから物理アドレスへの変換方法を決定します。

表 12.  TLB データ部分のコンテンツ
フィールド名 説明
PFN PFNは物理フレームナンバー・フィールドであり、物理アドレスの上位ビットを指定します。このフィールドのサイズは、システムに存在する物理アドレスの範囲に依存します。最大サイズは 20 ビットです。
C Cはキャッシュ可能フラグであり、デフォルトのデータ・キャッシャビリティーのページを決定します。Nios II の I/O ロード / ストアー命令ファミリーを使用してデータアクセスを上書きできます。
R Rはリード可能なフラグであり、ロード命令がページを読み出すことができます。
W Wはライト可能なフラグであり、ストアー命令がページに書き込むことができます。
X Xは実行可能なフラグであり、ページからの命令フェッチが可能です。
注: TLB エントリーに「有効なビット」がないため、オペレーティング・システム・ソフトウェアは仮想アドレスの I/O パーティションから各 TLB エントリーに一意の VPN 値を書き込んで TLB を無効にします。