コマンドプロセッサに並んで、Radeon HD 2000シリーズにおけるインテリジェントかつ重要なユニットが、このウルトラスレッド・ディスパッチプロセッサ(Ultra-Threaded Dispatch Processor、以下ディスパッチプロセッサ)だ。全体ブロックダイアグラムでは、セットアップエンジンの下に位置している単一の横長のマスになっているが、実際にはもっと複雑な構造になっている。
図はこのディスパッチプロセッサの内部を拡大図解したものだ。
ディスパッチプロセッサは、多量に用意した汎用シェーダを、実際に、どのタイプ(頂点/ジオメトリ/ピクセル)のプログラマブルシェーダとして起用するかを管理/制御する機能を果たす。
ディスパッチプロセッサの拡大図を見てほしい。
セットアップエンジンから送り込まれた頂点シェーダ用のコマンドとデータ、ジオメトリシェーダ用のコマンドとデータ、ピクセルシェーダ用のコマンドとデータはそれぞれ対応した処理キューに積まれていく。このキューにたくさん積まれたタスクほど処理の緊急性が高く、もたついていては処理ボトルネックとなりやすいことを示す。ディスパッチプロセッサは、汎用シェーダの空き状況をチェックし、空いている汎用シェーダを、その緊急度の高いタスクのシェーダとして起用していくことになる。
実際にこの起用を行うのが図中の「調停ユニット」(Arbiter)だ。
この調停ユニットの下には「シーケンサ」(Sequencer)と呼ばれるユニットがある。これは簡単に言えばCPUにおけるプログラムカウンタ(プログラムの実行場所ポインタ)を管理するユニットになる。
しかし、図をよく見ると、調停ユニットとシーケンサは2基ずつあって、これがその先の汎用シェーダユニットのブロックへと接続されていることに気が付く。これはどういうことなのか。ここは重要かつ複雑なので、じっくりと解説していこう。