③差
11 I 乗除算 I MUDIDL I 固定小数点乗算・除算の演算遅延
エントリ川 複数のデータ項目を持つ配列や構造体のーデータ項目
5 4
5 5
なお, ページテーブルの構成等についての前提条件は, 3.3.2 で述べる.
3. 3 評価手法
3. 3. 1 RISCアクセス状態データ生成手法2
ベンチマークのアドレス解決済のR4000用のロードモジュールを入力し て, ロードモジュール内の入口t也点( エントリポイント)からベンチマー ク内の命令を, 一つずつ, ソフトウェアによりエミュレートし, 表3. 3 の RISCアクセス状態データを生成する手法を, ここでは, RISCアクセス状態 データ生成手法2とよぶ.
そのエミュレーションでは, 一般に以下の点に留意が必要である.
① 論理空間の反映: エミュレータは, 評価環境( ここでは, 以下, UN IXを仮定)上で動作し, UNIXの論理アドレス( 以下, UNIXアドレスと略記〉
で動作する. ベンチマークは, キャ ッシュやTLBのシミュレーションを正 確に行うために, ロードモジュール内に設定されているRTSの論理アドレ ス(以下, RTSアドレスと略記)を使用して, エミュレートされなければ ならない.
② ベンチマークの起動パラメータ: エミュレーション時に, ベンチマ ークに供給されなければならない.
③ 物理アドレス: RISCアクセス状態データに必要な物理アドレスの情 報は, ベンチマークのロードモジュール内には存在しないので, 何らかの 方法で与える必要がある.
④ システムコールのシミュレーション: ベンチマークの測定ループ以 外における, RTSのシステムコールの発行は, エミュレーションでは, ベ ンチマークの正常性確認のために, UNIXのシステムコールにすり替えが必
要.
上記①の論理空間の反映は, 以下により行う.
(1)ロードモジュール内のプログラムとデータを, UNIX上の空間にロー ドする際に, その先頭のUNIXアドレスと, 先頭のRTSアドレスと. ロード
5 6
エリアの大きさの一覧表を作る.
(2) 命令のフェ ッチやロード命令やストア命令のエミュレーション時に,
上記の一覧表により, RTSアドレスを, そのアドレスを含むエリアの先頭 のRTSアドレス+その先頭アドレスに対する相対アドレス(オフセット〉
に変換し, UNIXアドレスヘアクセスする.
上記②の起動パラメータは, エミュレータのパラメータとして与え(表 3.4 No2), 仮想のスタックエリア本lに格納する. そしてベンチマークのエ ミュレーションを開始するときに, そのRTSアドレスを, エミュレートさ れているスタックポインタ波2であるレジスタの内容として与えることによ
スタックエリア* 1 関数等のプログラム単位が呼び出されるときに渡され るデータを格納しておくための, メモリ上の一時的なエリア.
スタックポインタ* 2 スタックエリアの最後をポイントするポインタ.
表3. 3 R I SCアクセス状態データの主な内容 No 項目 説明(用途)
論理7ドレス 命令/デ-7 7ェ汁の論理7ドレス(一次ft1Jュ行番 号決定と7うンチの有無等判定とTLB �スの判定の ため)
2 物理了ドレス 命令/デイ7エッチ の物理7ドレス(二次キャリュ行番 号決定とキヤ7シュ のは判定のため)
3 7ェ'1+種別 命令71けかデ-7 7エヴチかを示す
4 命令ニーモニッ? 命令ニーモニけ名(MUDIDL とペナルティ有無判定等の 名 ため) ,第2章の手法で、は英小文字, 当手法で
は英大文字(新・ 旧デイの判定のため)
5 リードライト種別 デイリード7ェけかデ-7 =;イト7ェけかを示す 7ェッナ長
デ-7 7ェけ長(PWWRDLペナルティ有無判定のため) 7 レジスタ情報 レジスタ番号毎の参照更新有無を示す(LOADDL,MU
DIDLのペナルティの有無判定のため)
8 タスクID R4000のASID(アド‘レス空間ID)に対応
5 7
り実現する.(但し, これは汎用性のためであり, 当評価では使用しない.) 上記③の物理アドレスは, 表3.4 のNo8 ""' No9"のようにパラメータとし て与えることにより実現する.
上記④のシステムコールのシミュレーションは, 表3.4のNo6 --7のよ うに, その外部名等をパラメータで指定し, エミュレータは, ロードモジ ュール内にある外部名の情報により, システムコール命令 を実際に発行す るルーチン (言語" インド用ルーチン)のRTSアドレスに変換し, ジャン プ命令(]AL)等のエミュレーション時に, UNIXアドレス上でのUNIXシステ ムコールの実行にすり替えることにより実現する. その場合, システムコ
表3. 4 R I SCアクセス状態データ生成手法2の入力パラメータ
No 項目名 説明
ロードモグュール77イル名 ベンチマークの7ドレス解決済ロードモジュールの77イル名
2 ベンチ7-7起動パうj-j ベンチマー?に与える起動バうj-J 3 トレース開始7ドレス 測定ループの先頭命令の論理7ドレス 4 トレース終了7ドレス 測定ループ終了時の命令の論理7ドレス
5 エiュレーション終了7ドレス エiュレーションを終了する命令の論理了ドレス 6 システムコール名a トンネル化するシステムコール名
システムコール リターン値 トンネル化するシステムコール のリターン値
7 システムコール名b UNIXのシステムコールにパュレーションされるシステム コール名 (対応するオウンコーディング部必要)
8 論理7ドレスc 物理7ドレスを与えるための先頭論理7ドレス 8' 頁数c 論理7ドレスcより連続して昇順に与えら
れる物理7ドレスのペ-j数 物理7ドレスc 頁数Cの先頭物理7ドレス
論理7ドレスd 物理7ドレスを与えるための先頭論理7ドレス 頁数d 論理7ドレスdより連続して逆順に与えら
れる物理7ドレスのページ数
9 " 物理7ドレスd 頁数dの先頭物理7ドレス
(注)No内のn. n' , n" は, 一つの文で一括して与える.
5 8
ールに渡される値(アーギュメント) のスタックのアドレスも, UNIXアド レスに変換する. 但し, 測定ループの直前にあるコンソールへの出力用の システムコール(printf)については, その出力のための割込み処理等が 測定ループに影響を与える可能性があるので, ベンチマークを変更して,
それらの出力はメモリ上に行い, 測定ループの終了後に, メモリよりファ イルへ出力する.
3. 3. 2 TLBのシミュレーション手法
当シミュレーションは, 第2章のシミュレータに追加したものである.
R4000 におけるTLB ミスは, 小型のRTSを前提とした場合, オーバヘッド の観点から, 次の二つに分類できる.
(1) UTLBミス: TLB ミスが発生した場合, iそのミスに対して専用のベ クターテーブル本lのエントリを使用する」ようなTLB ミス(TLB不一致例外
[6] )を, ここでは, UTLBミスとよぶ. 専用のベクターテープルのエントリ を使用すので, そのオーバヘッドは少ない.(文献[6]p.118表6-3 "TLB不一 致, EXL=O" に対応.)
(2) PTLBミス: TLB ミスの処理中に別のTLB ミスが発生した場合{すな わちページテーブル(PT)[12] の参照でミスが発生した場合)のTLB ミス を, ここではPTLBミスとよぶ. PTLBミスは, 共用のベクターテーブルのエ ントリを使用するため, UTLBミスに比べて, PTLBミスであることの判定等 に余分なオーバヘッドが必要であるべ文献[6]p.118表6-3"その他"に対応.) なお文献[6 ]のiTLB 無効例外(p.123)JやiTLB 変更例外(p.124) Jに
ついては, 以下を前提とする.
(A) OSは, タスクの切替え(ディスパッチ)時に, 積極的にTLB を無効
ベクターテーブル本1 . 例外や割込み等の事象が発生した場合に制御を渡す ベきルーチンのアドレスを, 複数個まとめて格納している配列. そのエ ントリには 複数の事象で共用されるものと 単一の事象で使用される
専用のものとがある
5 9
にする必要はない. {アドレス空間ID(ASID )[6] さえ正確に反映しておけ ばTLB不一致例外で処理が可能} . 従って, 後述のようなウォームスター トでの評価では, TLB無効例外は発生しない. (コールドスタート時にのみ
発生. )
(B) TLB変更例外を起こすためのiTLBの書込み不可ビット」は, ODP 等のメモリの負荷の制御で使用するものであり, RTSのオンラインのサー
ビス中には, 通常, ODP等は動作不要なように設計するので, 該ビットは 通常ONであり, 該例外は発生しない.
一方, TLBの1エントリでポイントされる 2ページのエリアは, 8 MB分 のPTのエントリ(PTE) を格納でき (詳細, 文献[12]の4.1), また, ワイヤ ードレジスタの値は, 当論文では 8 であるので, PTE を置くエリアをTLB のエントリo ""'エントリ7の 8個で処理するように設計しておけば, 64MB
以内のメモリを使用する限り, オーバヘッドが大きいPTLBミスは, ほとん ど発生しない. この64MBという値は, 当論文が前提 としている小型計算機 においては, 十分な大きさである.
更に, 後述のようにウォームスタートを前提する場合は, タスクのディ スパッチが存在する場合(後述3. 4. 5 の場合〉にのみ, PTLBミスが発生す る.
以上を前提として, ソフトウェアにより, TLBミスの状態を忠実にシミ
ュレートする.
なお第2章で述べた CISC上のRTSと, 当評価の実測で使用したRISC上の RTSとでは, 論理空間の構成が全く異なり, また後者のRISCアクセス状態 データは, TLBを全く使用しない空間へのアクセスを含むので, 当シミュ レータは, 両者の論理空間の構成等を内部情報として保持しており,表3.3 のNo4 により, 適切な内部情報を選択して使用する.
3. 3. 3 評価用ベンチマークの作成手法
[ 1 ] TLBミス測定用ベンチマークの作成手法
6 0
第2章で述べたように, ドライストーンベンチマークのキャ ッシュのヒ ット率は, ほほ10 0[%Jである. TLBミス測定用ベンチマークは, TLBミス の影響を見え易いようにするために, キャ ッシュのヒット率をなるべく低 下させず, TLBのヒット率のみを低下させた「ドライストーンベンチマー
クの変形」により実現する.
それらは参照するデータ等を散在させた三つのベンチマークからなる.
具体的には, 表3. 5のNo1 のようなコーディングを, 同表No 2 のように変 更する. する と, TLBの1エントリは 2ページをポイントし, long intの 配列要素は 4 バイトであるから, 配列Aの大きさは124 (=31x4 )から8192 (= 2 048 x 4 )バイトに変化する. 従って, 該コーディングの次にある変数へ のアクセスは, 配列A とは異なるTLBのエントリを使用することになる.
このような変更の数を変えることにより, TLBのヒット率を変化させる.
シミュレーシ ョ ンにより求めたiTLBミス測定用ベンチマークの特性」
の概要を, 表3. 6 に示す.
該表より, キャ ッシュのヒット率はほとんど同じであるが, TLBの一命
令当りのミスの回数が, それぞれ, およそ 2. 5倍 と4. 0倍になった, 三つ のTLBミス測定用ベンチマークを実現できたことがわかる.
表3. 5 TLBのヒット率を低下させるための手法例 No 項目 コー子ィングの内容
変更前 long int A[31];
2 変更後 long int A[2048];
6 1