定義させてください:
-
分岐遅延スロット:通常、アセンブラは、分岐命令の直後にいくつかの命令を移動するように命令を並べ替えます。これにより、移動した命令は、分岐するかどうかに関係なく、常に実行されます。システムを不整合な状態のままにすることなく、取得されるかどうか。
-
分岐予測プリフェッチ:分岐条件の結果を予測し、結果の場所から命令をプリフェッチして、分岐命令の直後に実行されるようにします。
、以下の実行シーケンスについて考えてみましょう(以下、F
:命令フェッチ、D
:命令デコード、X
:eXecute、M
:メモリアクセス、W
:書き戻し):
BRANCH F D X M W INSTR1 F D X M W INSTR2 F D X M W INSTR3 F D X M W
通常、分岐条件が評価され、実行されますXステージで。この段階までに、INSTR1
とINSTR2
はすでに開始されており、これらは分岐遅延を使用するかどうかの選択によって影響を受ける可能性のある命令です。スロットまたは分岐予測プリフェッチ、あるいはその両方。これを明確に説明するテキストは見つかりませんでした。だから私はそれを以下のように推測しようとしました:
両方を使用する場合、命令シーケンスは次のようになります:
BRANCH: branch-instruction INSTR1: branch-delay-slot INSTR2: branch-prediction-prefetch
分岐予測のみを使用する場合、命令シーケンスは次のようになります。
BRANCH: branch-instruction INSTR1: branch-prediction-prefetch-1 INSTR2: branch-prediction-prefetch-2
分岐遅延スロットのみを使用する場合、命令シーケンスは次のようになります。
BRANCH: branch-instruction INSTR1: branch-delay-slot-1 INSTR2: branch-delay-slot-2
これで正しいですか?これは実際にさまざまなケースでどのように発生するのでしょうか?または、もう少し詳細がありますか?
コメント
- 私は' " branch "シーケンスのみを使用する場合:brach-delay-slotsを使用するにはどうすればよいですか?また、ヘッダーにあると思われるアセンブラーを表示すると、わかりやすくなります。
- (1)"私は' "ブランチ"シーケンスのみを使用する場合:brach-delay-slotsを使用するにはどうすればよいですか?"-文を修正しましたが、誤って不完全なままにしました。それが今理にかなっていることを願っています。 (2)これを取得できませんでした:"また、ヘッダーにあると思われるアセンブラーを表示すると、明確になります。"実行つまり、使用しているアセンブラを指定する必要がありますか?はいの場合:パターソンの本"コンピューターの構成と設計"のパイプラインの章を読んでいます。したがって、純粋な理論を扱い、運動の問題を解決します。
回答
はい、そうなる可能性があります。予測スロットと遅延スロットを組み合わせたアーキテクチャは覚えていませんが、予測がある場合は、実行ステップと並行して実行できるため(小さなメモリでルックアップ)、遅延スロットは必要ありません。
コメント
- このようなシナリオは、パターソンによるコンピュータアーキテクチャの本の演習問題でカバーされているため、確認していただきありがとうございます。説明なしで直接的な解決策を提供します。どちらの章もありません。内容はこれについて議論します。