• 検索結果がありません。

I 乗除算 I MUDIDL I 固定小数点乗算・除算の演算遅延

ドキュメント内 九州大学学術情報リポジトリ (ページ 33-43)

③差

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

ドキュメント内 九州大学学術情報リポジトリ (ページ 33-43)

関連したドキュメント