森/RPR2009/chapter2.4/日本語
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[森/RPR2009/chapter2.4]]
**Dynamic scheduling [#g954bdc4]
-adevantage
--動的スケジュールは、依存性がコンパイル時に不明のときいくつかのケースを可能にする。
--コンパイラを簡単化する。
--最も重要なのは恐らく、動的スケジュールがプロセッサが予測不可能な遅延を許容することを可能にする。
--また、もうひとつの最も重要なものは動的スケジュールはパイプラインによってコンパイルされたコードが異なるパイプラインで効果的に実行することを可能にする。
-動的にスケジュールされたプロセッサーはデータフローを変更することはできないが、そのプロセッサーは依存関係が存在するときのストールを回避するようにしようとする。
-対照的に、コンパイラーによる静的なパイプラインスケジュールは、分けられている依存性のある命令がハザードを起こさないようにすることによって、最小のストールにしようとする。
**Dynamic Scheduling: The Idea [#t13963ab]
-簡単なパイプライン技術の重要な制限は、順々の命令の問題とプログラムの要求によって命令が発行され、もし命令がパイプラインでストールされたら、そのあとの命令は始めることができない。
-それゆえ、もし、2つの密集した命令がパイプラインにの間に依存性があれば、これはハザードを導き、ストールが生じる。
-もし、複数の機能のユニットがあるとしたら、働いていない状態になる可能性がある。
-このハザードは、要求されていない命令によって、プログラムを実行するために、削除されるかもしれないという制限を形成する。
-クラシックな5ステージのパイプラインでは、構造、データハザードの両方が、IDステージで確認される。1つの命令がハザードなしに実行されているとき、その命令は、すべての命令がハザードを解決したというデータを含むIDステージから、発行される。
-私たちが、上の例のSUB.Dの実行を始めることを許可されるためには、私たちは問題のプロセスを幾つかの構造ハザードを確認することと、データハザードがなくなるのを待つことの2つに分けなければならない。
-それゆえ、私たちはまだ順々に命令を使えない。しかし、私たちは1つの命令にデータの演算対象が使用可能になったらすぐに演算を始めてほしい。パイプラインの
out-of-order実行は、out-of-orderの終了を暗に意味している。
-out-of-orderの実行はWAR、WAWハザードの可能性を導入する、それは、5ステージの整数型のパイプラインでは存在しない、その論理的に順次の浮動小数パイプライン延長
も存在しない。
+DIV.D F0, F2, F4
+ADD.D F6, F0, F8
+SUB.D F8, F10, F14
+MUL.D F6, F10, F8
-ADD.DとSUB.Dとの間には、依存関係はなく、そしてもしパイプラインがADDを実行する前にSUBを実行するなら、非依存性を邪魔するでしょう。WARハザードに従うことで。
-同様に出力の依存性の邪魔することを回避する、WAWのハザードを対処されなければならない。
-これらのハザードは、レジスタリネーミングによって回避できる。
-故障の終了は例外を取り扱う複雑さを作る。
-故障の終了を取り扱う動的スケジューリングは、例外の振る舞いを保護しなければならない
-動的スケジューリングされたプロセッサは、例外のふるまいは、命令はプロセッサーが例外が動作することがないことをわかるまで、例外を生成する保護しなければならない。
-例外の振る舞いは保護されなければならないが、動的スケジューリングされたプロセッサーは不正確な例外を生成するかもしれない。
-例外が発生が、まるで完全に命令が正確に動作したかのようには全く見えない場合に1つの例外は不正確だ。
-不正確な例外はこの2つの要因によって引き起こされる可能性がある。
+このパイプラインはすでに例外を引き起こす命令よりプログラムが要求している方が古い命令が終了しているかもしれない。
+このパイプラインはまだいくつかのプログラムが要求している方が例外を引き起こす方より早い命令が終わっていないかもしれない。
-不正確な例外はこれを難しくする例外が終わった後に再び実行することを。
-
#comment
終了行:
[[森/RPR2009/chapter2.4]]
**Dynamic scheduling [#g954bdc4]
-adevantage
--動的スケジュールは、依存性がコンパイル時に不明のときいくつかのケースを可能にする。
--コンパイラを簡単化する。
--最も重要なのは恐らく、動的スケジュールがプロセッサが予測不可能な遅延を許容することを可能にする。
--また、もうひとつの最も重要なものは動的スケジュールはパイプラインによってコンパイルされたコードが異なるパイプラインで効果的に実行することを可能にする。
-動的にスケジュールされたプロセッサーはデータフローを変更することはできないが、そのプロセッサーは依存関係が存在するときのストールを回避するようにしようとする。
-対照的に、コンパイラーによる静的なパイプラインスケジュールは、分けられている依存性のある命令がハザードを起こさないようにすることによって、最小のストールにしようとする。
**Dynamic Scheduling: The Idea [#t13963ab]
-簡単なパイプライン技術の重要な制限は、順々の命令の問題とプログラムの要求によって命令が発行され、もし命令がパイプラインでストールされたら、そのあとの命令は始めることができない。
-それゆえ、もし、2つの密集した命令がパイプラインにの間に依存性があれば、これはハザードを導き、ストールが生じる。
-もし、複数の機能のユニットがあるとしたら、働いていない状態になる可能性がある。
-このハザードは、要求されていない命令によって、プログラムを実行するために、削除されるかもしれないという制限を形成する。
-クラシックな5ステージのパイプラインでは、構造、データハザードの両方が、IDステージで確認される。1つの命令がハザードなしに実行されているとき、その命令は、すべての命令がハザードを解決したというデータを含むIDステージから、発行される。
-私たちが、上の例のSUB.Dの実行を始めることを許可されるためには、私たちは問題のプロセスを幾つかの構造ハザードを確認することと、データハザードがなくなるのを待つことの2つに分けなければならない。
-それゆえ、私たちはまだ順々に命令を使えない。しかし、私たちは1つの命令にデータの演算対象が使用可能になったらすぐに演算を始めてほしい。パイプラインの
out-of-order実行は、out-of-orderの終了を暗に意味している。
-out-of-orderの実行はWAR、WAWハザードの可能性を導入する、それは、5ステージの整数型のパイプラインでは存在しない、その論理的に順次の浮動小数パイプライン延長
も存在しない。
+DIV.D F0, F2, F4
+ADD.D F6, F0, F8
+SUB.D F8, F10, F14
+MUL.D F6, F10, F8
-ADD.DとSUB.Dとの間には、依存関係はなく、そしてもしパイプラインがADDを実行する前にSUBを実行するなら、非依存性を邪魔するでしょう。WARハザードに従うことで。
-同様に出力の依存性の邪魔することを回避する、WAWのハザードを対処されなければならない。
-これらのハザードは、レジスタリネーミングによって回避できる。
-故障の終了は例外を取り扱う複雑さを作る。
-故障の終了を取り扱う動的スケジューリングは、例外の振る舞いを保護しなければならない
-動的スケジューリングされたプロセッサは、例外のふるまいは、命令はプロセッサーが例外が動作することがないことをわかるまで、例外を生成する保護しなければならない。
-例外の振る舞いは保護されなければならないが、動的スケジューリングされたプロセッサーは不正確な例外を生成するかもしれない。
-例外が発生が、まるで完全に命令が正確に動作したかのようには全く見えない場合に1つの例外は不正確だ。
-不正確な例外はこの2つの要因によって引き起こされる可能性がある。
+このパイプラインはすでに例外を引き起こす命令よりプログラムが要求している方が古い命令が終了しているかもしれない。
+このパイプラインはまだいくつかのプログラムが要求している方が例外を引き起こす方より早い命令が終わっていないかもしれない。
-不正確な例外はこれを難しくする例外が終わった後に再び実行することを。
-
#comment
ページ名: