4

現在、スーパースカラー RISC CPU は通常、分岐予測と投機的実行によるアウトオブオーダー実行をサポートしています。彼らは仕事を動的にスケジュールします。

アウトオブオーダー CPU の動的スケジューリングと比較して、コンパイラ命令スケジューリングの利点は何ですか? コンパイル時の静的スケジューリングは、順不同の CPU の場合、または単純な順序の CPU の場合にのみ問題になりますか?

現在、ほとんどのソフトウェア命令スケジューリング作業は、VLIW または単純な CPU に焦点を当てているようです。GCC wiki のスケジューリング ページも、gcc のスケジューリング アルゴリズムの更新にあまり関心を示していません。

4

2 に答える 2

3

静的 (コンパイラー) スケジューリングの利点:

  • 時間制限がないため、非常に複雑なアルゴリズムを使用できます。
  • 指示ウィンドウに制限はありません。これにより、たとえば、命令を関数呼び出しのループ全体と交換できます。

動的 (プロセッサー・スケジューリング) の利点:

  • 実際の環境 (キャッシュ、別のハイパースレッドによる演算装置の使用中) に注意してください。
  • アーキテクチャのアップグレードごとに強制的にコードを再コンパイルしないでください。

今のところ思いつくのはこれくらいです。

于 2014-02-21T07:52:33.413 に答える
0

まず、現在の RISC アーキテクチャは最初にコンパイルしてから再スケジュールを行うことに注意してください。これは、「高レベル」のアセンブリ コマンドがより小さな RISC コマンドにコンパイルされるためです。少なくとも x86/x64 アーキテクチャには当てはまります。

次に、実行サイクルを次のように想像できます: コンパイル - 最適化/再スケジュール - 縮小スケール - コンパイル - 最適化/再スケジュール.

この種の質問に対する答えは、コンパイラーはアプリケーションに対する可視性の範囲がはるかに広いため、主にマクロレベル (アプリケーションコマンドのブロック) を最適化し、プロセッサーは主にミクロレベル (RISC コマンドのブロック) を最適化します。

于 2014-02-21T07:53:51.013 に答える