| 氏名 | : | 佐渡山 陽 |
| 学籍番号 | : | 985727D |
| 指導教官 | : | 河野 真治 |
| メールアドレス | : | j98027@ie.u-ryukyu.ac.jp |
CからVUへのコンパイラは存在するが、高度なパイプライン構成と、 水平マイクロプログラムに似た並列実行機能を持つVUの能力を フルに発揮することは出来ない。
しかし、VU独自のアセンブラを直接プログラムすることは、 非常に難しく、記述性も低い。
そこで、本研究室で開発中のCの下位言語であるCbC(Continuation
based C)を用いて、記述性とVUの能力表現を両立させる手法に付いての
研究を行う。
CbCとは、状態遷移単位での処理の記述を行う言語である。
2 CbCとは
インタフェースと呼ばれる構造体に、状態遷移を管理するための情報を格納し、 codeというCbCの実行単位(状態遷移)へ引き渡す。 codeでは、引き渡されたインタフェースをもとに現在の状態を判定し、 それに伴う処理を行う。 処理後、状態に変化があれば、それをインタフェースへと反映させてから、 次のcodeへと引き渡す。
つまり、code(状態遷移)の集まりと、
状態を表すインタフェースからなる記述法が、CbCである。
VU(ベクターユニット)とは、PS2のメインプロセッサであるEEを構成する
ユニットの一つである、VPUのコアとなる部分の事である。
VUは、EEのメインCPU(EE Core)とは独立して動作するベクトル演算専用のユニットで、
そのためのプログラムメモリとデータメモリを内部に持っている。
VUをいかに効率的に使うかが、EEの能力を最大限に引き出すポイントである。
(VUの詳細解説)
3 VUとは
また、CbCによるシミュレーションは、かならずしもPS2上で行う必要が無い。
ハイスペックなPC上でシミュレーションを行えば、
そのスペックの分の能力を発揮出来る。
更に、C言語と互換性を持っているため、デバッグが容易である。
4.2 CbC からVUへのコンパイル
CbCのステイトメントは、VUの命令を更に細かく分解した表現と言える。
つまり、CbCで記述したVUのアセンブラをコンパイルする事により、
Cをアセンブラにコンパイルした場合や、アセンブラで直接プログラミングを
行った場合よりも、更に高度な最適化を行う事が出来る。
5 VUプログラミングにおけるCbCの利点5.1 C言語との互換性
CbCによるVUプログラムの記述は、
プログラマーの視点から見るとC言語に近い形式であり、
アセンブラでプログラミングを行うよりも断然容易である。
5.2 レジスタへのデータ展開
CbCは、インタフェースを通して、飛び先へ状態を伝える。
そして、そのインタフェースの値は、全てレジスタに展開される。
一方、VUにおける演算処理でも、使用するデータを
全てメモリからレジスタに格納してから行う。
という事は、VUとCbCのレジスタに関する仕様が一致しており都合が良い。
5.3 最適化への貢献
CbCのソースは、見た目はC言語に近いが、
Cよりも低レベルで、実際の最適化はアセンブラレベルに近い所で行われる。
通常、C等に代表される高等言語上での最適化より、
アセンブラレベルでの最適化を行った方が、より大きな効果を得られる。
つまり、CbCを使用したVUプログラミングでは、
高等言語的な人が理解し易いプログラミング形式でありながら、
アセンブラレベルでの最適化が得られる、という成果を期待出来る。
ここで、アセンブラをCbCで書くとどうなるのか、実例を示す。
ある処理を行うプログラムを、C・アセンブラ・CbC、
それぞれについてを記述した。
6 CbC記述の実例
CbCで記述されたプログラムからVUのアセンブラを出力するコンパイラを
実際に作成する。
7 これから
1 研究課題
2 CbCとは
3 VUとは
3 CbCとVUの関係/h3>
4.1 CbC によるシミュレーション実行
4.2 CbC からVUへのコンパイル
5 VUプログラミングにおけるCbCの利点
5.1 C言語との互換性
5.2 レジスタへのデータ展開
5.3 最適化への貢献
6 CbC記述の実例
7 これから
参考文献