VectorC {VU} 概要
CodeplayのPlayStation®2コンパイラ第一号は、VectorC {VU}です。
これは、PlayStation®2ベクターユニット(VU0とVU1)にマイクロモード(micro-mode)コードを生成するC/C++言語用
コンパイラです。これは、現在アセンブリ言語でのプログラミングを必要としている、PlayStation®2の中枢的要素
であるVU専用のコンパイラです。
ベクター・ユニットは、今日要求されるようなエンターテインメント・ソフトウェアに必要とされる徹底的な
コンピューター的ルーチーンを実行させるため、通常小さなローレベルプログラミングを実行します。
しかし、ベクター・ユニットのためだけにアセンブリ言語でプログラムする必要性もあり、時間を多大に消費するプロセス
であることも否めません。ラーニングカーブも高く、開発者は以前に扱ったことがあるようなアセンブリ言語とは
異なる新しい命令セットを学習する必要性に直面するのが実状でしょう。
そこで、VectorC {VU}によって開発者が普段使い慣れたC/C++言語により、ベクター・ユニット用プログラミングを
行うことができます。この為、PlayStation®2タイトルまたは他のタイトルを再利用するなど、これらのC++言語ソース
を自分自身またはチーム全体が簡単に解読し管理することができます。
VectorC {VU}のリリース予定は、このページを参照して下さい。
VU0
VU0
は、ファンクションを処理するような小さな複雑な数学計算に最適です。
例えば、物体を描くマトリックスを計算するような場合、アニメーション・ブレンディング、衝突検出、
物理計算とAIなどです。しかし、アセンブリで計算するにはちょっと困難なことから、
通常これらのルーチンは、EEで行われているのが実状でしょう。VectorC は、このようなコードをEEからVU0
に移行させてルーチンを実行させることが可能なのです。そして、それをファンクションとして、
EE側から呼び出すことができるのです。この利点は以下の通りです。
- VU0は、インストラクションを速く実行し、より優れたベクトルサポートが揃っています。
- VectorC {VU} が、EEよりVUに対して、VUにベクトル命令とメモリアクセスのフレキシブルさ
という点で、優れたベクトル化機能を持っています。
- VU0 メモリは速い(でも小さい) - I-キャッシュやD-キャッシュ・ミスの心配なし
- VU0 は、EEとは独立して実行する為に、2倍の命令を実行させることができる
VU1
VU1
は、一般的にGSに最終的なレンダリングを行う前に使用されます。全てアセンブリで書かれた
VU1クリッパーがないというソフトウェアの開発会社はないでしょう。しかし、これはパワフルなプロセッサーを
むしろ使い切れていない可能性があります。しかし、VU1にもっと複雑なコードを処理させるというのは、
アセンブリでは簡単な作業ではないでしょう。(クリッパーを書くのは、本当にアセンブリでかくより、
VectorCで書いた方がラクなのです!) VectorC は、VU1によって実行されるレンダリング・パイプライン
をEEよりも使用します。VU1用のデモは、繊細な描写を可能にした水の効果を実証していますので、そちらも参照して下さい。
VectorC {VU}
- 複雑なVU1コード: アセンブリ言語ではプログラミングしにくい機能の実行ができる。
- プロトタイピング: 直接VUにコード、チェンジ、再コンパイルを簡単にできる。
- EEからVUへ: VUにより多くのパイプラインをレンダリングし、EEのボトルネックを削減できる。
- 既存のコード: 既存のコードを再利用するインライン・サポート。
- 保全性: C言語によって、誰でもVUコードを作成、 向上、拡張することができる。
VectorC {VU} の特徴リスト
VectorC {VU} FAQ
VectorC {VU} デモ
VectorC {VU} コード具体例
VectorC {VU} 価格表
PlayStation は、Sony Computer Entertainment Inc.の登録商標です。
|