Reservation Station
Reservation Station とは、CPUのマイクロアーキテクチャにおいてレジスタ・リネーミングを可能にするための機能で、動的な命令スケジューリングを行うTomasuloのアルゴリズムで使用される。
![](http://up.wiki.x.io/wikipedia/commons/thumb/6/64/Intel_Nehalem_arch.svg/220px-Intel_Nehalem_arch.svg.png)
Reservation station を設けると、演算器によって計算されたデータがレジスタに格納された後再度ロードされるのを待つことなく、計算された直後にデータを取り出し再利用することを可能になる。これによって、複数の命令が同じレジスタに書き込む必要がある場合にも、論理的に最後の命令のみの書き込みを行い他の命令は先に進むことができる。
Tomasuloのアルゴリズムでは、各機能ユニット(加算器、乗算器など)に、それぞれ専用の Reservation Station を持たせる。機能ユニットの出力は Common Data Bus に接続され、Reservation Station が処理対象のデータを利用できるかどうか監視する。命令は Reservation Station に対して順次発行され、Reservation Station は命令そのものとその処理対象をバッファする。処理の対象データがまだ利用できない場合には、Reservation Station は Common Data Bus を監視し、対象が利用できるようになると、実行が可能な状態にする。 Reservation station は、実行を開始する前に処理対象のデータが利用できるかどうか(RAW ハザードが発生していないか)実行ユニットが空いているかどうか(構造的ハザードが発生していないか)を確認する。準備ができると命令は実行され、結果は命令を実行した機能ユニットを元に識別される。機能ユニットから返される全ての結果を Reservation Station が保持する全てのアドレスと比較するフルアソシアティブな構造であるため、比較器の演算コストが非常に高くなるという問題がある。