指令発行ポリシーの設計空間とは何ですか?
スーパースカラー命令発行は、スーパースカラー演算の最も重要なタスクです。発行ポリシーは、発行プロセス中に依存関係をどのように管理するかを決定します。発行レートは、スーパースカラープロセッサが各サイクルで発行できる命令の最大数を定義します。
発行ポリシーの設計空間は複雑です。図に示すように、4つの主要な側面から構成されています。最初の2つは、命令発行中に偽のデータと未解決の制御依存関係をどのように処理するかを定義します。どちらの場合も、レジスタのリネーミングと投機的なブランチ処理を使用して、命令発行中にそれらを防止することが設計オプションです。
3番目の条件は、シェルフ方式によって発行ブロッキングが大幅に削減されるかどうかを決定し、最後の条件は、発行ブロッキングをどのように処理するかを定義します。
**偽のデータ依存関係** − 最初の条件のような発行ポリシーの設計空間は、プロセッサが偽のデータ依存関係をどのように処理するかを決定します。偽の依存関係は、発行される命令と実行中の命令、または発行される命令間に出現します。
リネーミングによって登録されたデータ間の偽のデータ依存関係を排除する原則は基本です。WAWまたはWAR依存関係が発生すると、プロセッサは依存関係を作成する宛先レジスタの名前を変更します。
**制御依存関係** − 発行ポリシーの2番目の条件は、制御依存関係の処理方法を決定します。条件付き制御転送命令は、パイプライン化された命令処理中に深刻な問題を引き起こします。
**シェルフ方式または間接発行** − 発行ポリシーの3番目の条件は、シェルフ方式の使用に関するものです。これは、発行ブロッキングを回避するための適切な手法です。ブロッキング発行は、直接発行とも呼ばれます。これは、依存関係に関連付けられた厳格なアプローチです。このスキームは、図に示すように、依存関係に対して発行されるデコードされた命令を制御します。依存関係が発生すると、命令発行はブロックされます。
依存関係のチェックは、いわゆる発行ウィンドウで行われます。発行ウィンドウはn命令幅で、nは発行レートです。発行ウィンドウには、命令バッファの最後のnエントリが含まれています。依存関係がない場合、ウィンドウ内のすべての命令は直接実行ユニットに発行されます。
シェルフ方式による発行は、間接発行とも呼ばれます。これは、命令発行と依存関係チェックを分離します。この手法は、特別な命令バッファ(一般的に予約ステーションと呼ばれる)が定義されており、実行ユニットの前にサポートされていることを前提としています。シェルフ方式では、図に示すように、基本的に依存関係チェックの必要なく、命令は最初にシェルフバッファに発行されます。
シェルフ方式を使用する場合、発行ウィンドウ内の命令と実行中の命令間で依存関係チェックは実行されません。このタイプの依存関係チェックは、ディスパッチと呼ばれる次の処理ステップに遅延されます。
**発行ブロッキングの処理** − 命令発行の設計空間の最後の側面は、発生する発行ブロッキングの処理方法を宣言します。命令発行は、シェルフ方式を使用する場合と使用しない場合の両方でブロックされる可能性があります。シェルフ方式を使用しない限り、発行ウィンドウで検出された依存関係は、すぐに命令の発行をブロックします。これとは対照的に、シェルフ方式を使用する場合、データと未解決の制御依存関係による発行ブロッキングは回避されます。