詳細:予約機構(Reservation Stations)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/06/02 00:56 UTC 版)
「レジスタ・リネーミング」の記事における「詳細:予約機構(Reservation Stations)」の解説
これはAMD K7とK8で整数部分に使われた形式である。 リネーミング段階では、読み込み参照されるアーキテクチャ上のレジスタはアーキテクチャ上の番号でインデックスされたFuture Fileとリネームファイルを参照して得る。そのレジスタに書き込もうとしている命令がなければ、Future Fileを読めばそのレジスタの値が得られる(つまりその値はレディ状態である)。命令が発行キューに置かれると、Future Fileから読んだ値は予約機構内の対応するエントリに書き込まれる。命令によるレジスタへの書き込みは新たなレディでないタグを生成し、リネームファイルに書き込まれる。タグ番号は命令の順番に付けられる。つまり、フリータグFIFOは不必要となる。 タグインデックス形式と同様、発行キューはレディでないオペランドが全体通知されるタグとマッチするのを待つ。タグインデックス形式と違うのは、タグがマッチしたときに対応する予約機構のエントリにも値が書き込まれることである。 発行された命令は予約機構から引数を読み、実行する。前述したように予約機構のレジスタファイルは一般に小さく、8エントリほどしかない。 実行結果はReorder Bufferに書き込まれ、予約機構にも書き込まれ(発行キューのエントリがマッチするタグを持っている場合)、Future Fileにも書き込まれる(それがそのアーキテクチャ上のレジスタをターゲットとした最新の値の場合)。 完了処理ではReorder Bufferからアーキテクチャ上のレジスタファイルに値をコピーする。アーキテクチャ上のレジスタファイルの唯一の存在理由は例外と分岐予測失敗のリカバリを簡単にするためである。 例外と分岐予測失敗は完了処理で認識され、アーキテクチャ上のレジスタファイルをFuture Fileにコピーして、リネームファイル内のレジスタを全てレディ状態に変更する。一般にデコードと完了の間の状態の命令についての中間状態を再構築する方法はないので、分岐予測失敗を早めにリカバリすることはできない。
※この「詳細:予約機構(Reservation Stations)」の解説は、「レジスタ・リネーミング」の解説の一部です。
「詳細:予約機構(Reservation Stations)」を含む「レジスタ・リネーミング」の記事については、「レジスタ・リネーミング」の概要を参照ください。
- 詳細:予約機構のページへのリンク