コンパイラ

ソフトウェアパイプライン化(ソフトウェアパイプライニング)の説明として正しいものはどれか。

  1. ACPUのパイプラインの段数を、ソフトウェアで増やす技術
  2. Bループを関数に分けて、複数のスレッドで並列に実行する技術
  3. C異なる繰り返しの処理を重ね、待ち時間を埋める技術
答えと解説を見る

正解:C. 異なる繰り返しの処理を重ね、待ち時間を埋める技術

ソフトウェアパイプライン化では、ループの1回の処理を「読み込み・計算・書き込み」のような段階に分け、例えばi回目の書き込み、i+1回目の計算、i+2回目の読み込みを同じ繰り返しの中で行うように命令を並べます。読み込みの待ち時間の間に、ほかの繰り返しの計算を進められるので、演算器を休ませずに済みます。ループの前後には準備と後片付けのコードが必要です。CPUの段数を変えたり、スレッドで並列化したりする技術ではありません。

  • A. CPUのパイプラインの段数はハードウェアで決まっています。
  • B. スレッドによる並列化とは別の技術です。
  • C. 正しい。異なる繰り返しの処理を重ね、待ち時間を埋めます。
この分野を解く 分野ページへ

コンパイラのほかの問題

  1. コンパイラが、浮動小数点数の足し算 (a + b) + c を、厳密な設定のもとでは a + (b + c) に勝手に並べ替えない理由として正しいものはどれか。
  2. コンパイラの自動ベクトル化で使われる命令の種類として正しいものはどれか。
  3. コンパイラの最適化が守らなければならない基本的な条件として正しいものはどれか。
  4. コード生成の段階の一つである命令選択(インストラクションセレクション)の説明として正しいものはどれか。
  5. クロスコンパイラの説明として正しいものはどれか。