Tomasuloのアルゴリズム
発行のステージでは、全てのデータとreservation stationの準備ができていれば命令が実行にまわされ、そうでなければ一時停止する。レジスタの名前はこの時点で変更され、WAR と WAW によるハザードを発生させないようにする。
命令キューの先頭から次の命令を取り出す
命令で処理するデータがレジスタに入っている場合 使用していない reservation station がある(すなわち機能ユニットが利用できる)場合 命令を発行 使用していない reservation station がない(すなわち機能ユニットが利用できない)場合 reservation station やバッファの準備ができるまで命令の実行を停止
命令で処理するデータがレジスタに入っていない場合 仮想的な値を使用して、結果を計算する機能ユニットの状態を追跡
各命令は、発行した時から実行が完了する時まで以下の3つのステージを流れる。