コンパイラ
コンパイラの命令スケジューリングの主な目的はどれか。
- Aプログラムの結果が変わっても、とにかく命令の数を減らすこと
- B結果を変えずに命令を並べ替え、待ち時間を埋めること
- C実行する命令を、OSのスケジューラが選んだ順番に並べ直すこと
答えと解説を見る
正解:B. 結果を変えずに命令を並べ替え、待ち時間を埋めること
読み込みや掛け算の結果がすぐには使えない場合、その結果を使う命令を直後に置くとCPUは待たされます。命令スケジューリングは、データの依存関係を守って結果を変えない範囲で、依存のないほかの命令を間に入れるように順番を並べ替え、待ち時間を有効に使えるようにします。順番どおりに実行するCPUで特に効果が大きくなります。結果を変える変換は許されず、OSのスケジューラはプロセスの切り替えを決めるもので別のしくみです。
- A. 結果を変える変換は許されません。
- B. 正しい。依存を守って並べ替え、待ち時間を埋めます。
- C. OSのスケジューラはプロセスの切り替えを決める別のしくみです。