
フォワーディングを考慮した命令依存距離の抽出        
平岡 佑介

  

石浦 菜岐佐今井 正治

       はじめに 

コンパイラのパイプラインスケジューリングにおいて
 つの命令間にデータ依存関係がある場合には これらを何サイクルか離さなければならない 本稿ではこのサイクル数を命令依存距離と呼ぶ 命令依存距離は コン
パイラの命令スケジューリングだけでなく サイクル精度の命令レベルシミュレーションを正確に行うためにも   では命令全ての組必要となる  
み合わせに対して命令依存距離を人手で記述する必要がある     ではプロセッサ記述から命令依存距離の抽出を行っているが この際フォワーディングは考慮していない これに対し本研究ではフォワーディングまで考慮した命令依存距離の抽出手法を提案する 本稿では  開発環境   のプロセッサ記述 サイクル精度の動作記述 中のフォワーディングを分析し 正確な命令依存距離を求める手法を示す



 命令依存距離
本研究では 複数の命令スロットを持ち 最大でスロット数だけの命令を一度に発行できる !" 型プロセッ
サを対象とする 各命令に対し その命令が発行されるスロットは一意に決まっているものとし 各命令はレジスタに対する複数の # と $  が行える 各 # と$  は それぞれ何サイクル目でどのレジスタにアクセスするかの情報を持つ 以下にその表記を列挙する
%
命令の集合
に対し
%命令  が使用するスロット %
命令  の # の集合 % 命令  の $  の集合 に対し %
 が # するレジスタ  %  が レジスタを # するサイクル  に対し
 %が $  するレジスタ  %がレジスタへ $  するサイクル
このとき     に対し 命令  と  の と  に関する命令依存距離    は次式で与えられる   &       ' Ý 関西学院大学 理工学部 情報科学科

ÝÝ 大阪大学 大学院情報科学研究科 情報システム工学専攻     
               !"     !"  #$% !& "  #$% !& "    %& %   !&"  #$% ! &"  #$% ! &"  #$% ! &"  #$% ! &" '   #$% '! &"  #$% '! &"  #$% '! &"  #$% '! &"   ! &"図 フォワーディングを含む命令の動作記述 フォワーディングを考慮した命令依存距離
 フォワーディングの記述とモデル化
図  に フォワーディングを考慮した命令の記述の例を示す ここでは ハードウェア資源グループ ()*を用いる  命令の動作をステージ毎に記述している+  でレジスタファイル ( の ) 番目
 番目のデータをそれぞれ ,- .) ,- . に読み込むがフォワーディングがある場合には フォワーディングユ
ニット /"* /"* からデータを読み込む + で *## による演算結果 -0 を +  で (の # 番目に書き込むが 演算結果が得られる + からレジスタ書き込みが行われる +  の間 /"*)   /"* を通じて演算結果をフォワーディングしている
フォワーディングユニット /"* は # 側に接続されるポート  と $  側に接続される複数のポート        を持ち $  側に # 側と同じレジスタの値が  つでもフォワードされれば それを  に出力する 複数のポートに同じレジスタの値がフォワードされるときは         の順に優先される




  なる  に対してフォワーディングは次のように定式化できる %
 が # する /"*  %  が /"* を # するサイクル
 %のフォワーディングの集合 に対し %
 が $  する /"*% が $  する /"* のポート  %  がフォワーディングするサイクル/"* の $  側のポート  に対し   を次のように定義する
 

&

これはフォワーディングに 4飛び5 がないことを意味するこの  条件が成立するとき フォワーディングを考慮した命令依存距離    は 次のように定義できる  なるが /"*  に行うフォワーディングの中で そのサイクルの最小値    を   &   

¾      &    &   

例えば図  において &      であるが これは   が共に  サイクル目でポート にフォワーディングを行うことを表す

 とすると&¾   

    

  &   のとき       ' 

それ以外



まとめと今後の課題

本稿では フォワーディングのモデル化から命令依存距離の抽出法を提案した 本手法を用いれば 動作記述から接続関係を抽出し フォワーディングの設計検証を行った上で命令依存距離を抽出できる
命令の数が多くなるにつれ命令依存距離のデータ量は膨大になるが その削減が今後の課題である また" $  3
#"" $  3 $  ハザードの対応等も課題として挙げられる
謝辞
本研究に際し ご助言・ご討論頂きました大阪大学の武内良典助教授 今井研究室の関係諸氏 および関西学院大学 石浦研究室の諸氏に感謝致します
参考文献

図 % 複数の命令からのフォワーディング

正しいフォワーディングの条件と命令依存距離以上の定式化を行うと 命令依存距離の抽出に先立ちフォワーディングの設計 記述ミスの検証が行える フォワーディングが正しく行われるためには 次の条件が成立しなければならない     3, 

& に対し ( - 60

0-% 4

(%  0+, &  .

  ⇒     ' 1#%

9 , +-+

9 , 5 

 A 0  - 

?

3,

#   .,-,

:0 3 , . ( .? .- 099 <) ,1

;;; "?09 

 6,?-( .? #( B -6 8 -#   %4C

 . , ,3 Æ.   -. , .?#-0  3 ,D8.0-  ,.,,#0 5G A-# % G,:8?

4 -0,H( ,I+- :0 !" ,#0 D, #
6" .

9 , # " A-.?

# B#, D,+ 8? J:0

,,0 (  , 5    99 <; 9  ))

フォワーディングが +-0     なる  に対し
: 99 E><F 9 ))

これは  の要素が 同じサイクルで同じポートにフォワーディングを行わないことを意味する .,  , ,3  1 ,  &   &    &  



#  99 ;;<)

?9%@@$$$

とき&  & +: 0 8 5               である     &        とする

6,,

      ⇒   

フォワーディングが .,2 . 3 =- ;;>

これはフォワーディングの優先順位が正しく守られることを意味する6#7 8  

4%   -. ,  .

フォワーディングが 10 #

( 