Scoreboarding
命令はインオーダーでデコードされ、以下の4つのステージを経て実行される。
発行: システムは命令によりどのレジスタを読み出すか、どのレジスタに書き込むかをチェックする。この情報は以降のステージで必要になるため記憶される。書き込み同士の依存関係(WAW ) を避けるため、命令は同じレジスタに書き込もうとしている命令が完了するまで停止する。また、命令は必要な機能ユニットが使用中である場合にも停止する。
オペランドの読み出し: 命令が発行され、すべての必要なハードウェアモジュールに対して割り当てられると、命令はすべてのオペランドが利用できるようになるまで待機する。この処理により、読み書きの真の依存関係を解決する(書き込み後の読み込み(RAW) )。他の命令で書き込もうとしているレジスタは、実際に書き込みが終わるまで「利用可能」でないとみなせるからである。
実行:すべてのオペランドが読み込まれ、機能ユニットが実行を開始する。演算結果が出ると、スコアボードは通知を受ける。
結果の書き込み: このステージで、演算結果が出力先のレジスタに書き込もうとする。しかし、この処理は以前の命令—この命令が書き込むレジスタを読み出そうとする—が「オペランド読み出し」のステージを完了するまで遅延される。このようにして、いわゆるデータ依存性(WAR - 読み込みの後の書き込み)を解決することができる。