まず、Pentium4の概要から。Pentium4は、1つのインストラクションを複数のmicro-operation (uOP) に変換し、実行ユニットはuOPをOut-of-orderで実行します。
Power 970の場合も、インストラクションをinternal operation (IOP) に変換するところまではPentium4と同じです。ところが、この後IOPは「グループ」と呼ばれる単位にまとめられます。グループは、最大5つ(POWER7では最大6つ)のIOPから成り、Out-of-orderは(各IOP単位ではなく)グループ単位で制御されます。こうすることで、Out-of-orderに必要なモジュール(reservation stationとかreorder bufferとか)を小さくして、トランジスタを削減できます。
ただし、この「グループ」の構成にはいろいろ制約があるようです。
- スロット0からスロット4に入るIOPはプログラム順でなくてはならない
- 分岐IOPはスロット4にしか入れられない。また、スロット4には分岐IOPしか入れられない
- 1つの命令を構成する複数のIOPは、複数のグループに分割できない
同じOut-of-orderでも、Pentium4はuOP単位で処理しているので効率が良さそうです。「グループ」のメリットはトランジスタの削減なんでしょうが、トランジスタを減らせても実効性能も落ちてしまったら意味ないと思うんですが・・・。IBMがあえてそういう設計にしたからには、NOPはあまり挟まれない(グループのスロットはたいてい埋まる)ということなんでしょうね。
0 件のコメント:
コメントを投稿