リオーダー・バッファ - 百科事典
再順序バッファ(ROB)は、タオマスロのアルゴリズムの拡張に使用されるハードウェアユニットで、並行実行と推測実行をサポートするために使用されます。この拡張は、命令が順序どおりコミットされることを強制します。
バッファは、FIFOの命令順序キューを提供する環状バッファ(配列/ベクターとして実装され、結果が並行して完了する場合に命令に対して結果を記録することを可能にします)です。
タオマスロのアルゴリズムには3つのステージがあります:「発行」、「実行」、「結果書き込み」。アルゴリズムの拡張には追加の「コミット」ステージがあります。コミットステージでは、命令結果がレジスタやメモリに格納されます。「結果書き込み」ステージは、結果を再順序バッファに配置するように変更されます。各命令は、その目的のためにロックステーションにROB内のインデックスでタグ付けされます。
バッファの内容は、バッファにスケジュールされた他の命令のデータ依存関係に使用されます。バッファのヘッドは、その結果が有効になったら一旦コミットされます。依存関係は既に計算およびコミットされていますが、バッファ内の命令よりも前にある必要があります。命令間のデータ依存関係は、命令が依存する値を待っている間にパイプラインを停止させることが通常です。ROBは、結果が順序どおりコミットされることを確保しつつ、パイプラインが他の命令を処理し続けることができます。
バッファの各エントリには、拡張アルゴリズムをサポートするための追加フィールドがあります:
命令タイプ(ジャンプ、メモリへのストア、レジスタへのストア)
目的(メモリアドレスまたはレジスタ番号)
結果(目的に向かって行く値または(不)成功ジャンプの指示)
有効性(結果はすでに存在しますか?)
再順序バッファの影響には、正確な例外処理と、ターゲットアドレスのミス予測(ブランチまたはジャンプ)に対する簡単なロールバック制御があります。ジャンプ予測が正しくない場合や、インストラクションストリームで復旧できない例外が発生した場合、ROBはすべての命令(環状キューの尾をヘッドに設定することで)をクリアされ、ロックステーションが再初期化されます。
参考文献
外部リンク
ハードウェアベースの推測 - Ben H. Juurlink教授
再順序バッファ