応用情報技術者 2015年 秋期 午前2 問08
問題文
CPUのパイプライン処理を有効に機能させるプログラミング方法はどれか。ここで、CPUは命令の読込みとデータのアクセスを分離したアーキテクチャとする。
選択肢
ア:CASE 文を多くする。
イ:関数の個数をできるだけ多くする。
ウ:分岐命令を少なくする。(正解)
エ:メモリアクセス命令を少なくする。
CPUのパイプライン処理を有効に機能させるプログラミング方法【午前2 解説】
要点まとめ
- 結論:CPUのパイプライン処理を効率化するには分岐命令を少なくすることが重要です。
- 根拠:分岐命令はパイプラインの流れを乱し、命令の取り消しや再取得が発生しやすいため処理効率が低下します。
- 差がつくポイント:命令の読込みとデータアクセスが分離されたアーキテクチャでは、分岐によるパイプラインの停止を避ける工夫が特に効果的です。
正解の理由
ウ: 分岐命令を少なくする。が正解です。パイプライン処理は複数の命令を同時に段階的に処理する仕組みですが、分岐命令があると次に実行すべき命令が不確定になり、パイプラインの流れが止まる「パイプラインハザード」が発生します。これにより命令の再取得や無駄な処理が増え、性能が低下します。分岐命令を減らすことでパイプラインの流れをスムーズに保ち、CPUの処理効率を高められます。
よくある誤解
分岐命令を減らすことが難しい場合もありますが、単に関数の数を増やしたりCASE文を多用することはパイプライン効率の改善には直結しません。メモリアクセス命令の削減も重要ですが、パイプラインの流れを止める分岐命令の影響の方が大きいです。
解法ステップ
- パイプライン処理の基本動作を理解する(命令を段階的に処理する仕組み)。
- 分岐命令がパイプラインに与える影響を把握する(命令の流れが不確定になる)。
- 選択肢の中でパイプラインの流れを妨げる要因を探す。
- 分岐命令を減らすことがパイプライン効率向上に直結することを確認する。
- 正解として「分岐命令を少なくする」を選択する。
選択肢別の誤答解説
- ア: CASE文を多くする。
→ CASE文は分岐命令を多用するため、パイプラインの流れを乱しやすく逆効果です。 - イ: 関数の個数をできるだけ多くする。
→ 関数の数が多いこと自体はパイプライン効率に直接関係せず、むしろ呼び出し回数が増えるとオーバーヘッドが増えます。 - ウ: 分岐命令を少なくする。
→ パイプラインの流れを止める分岐命令を減らすことで効率が向上します。 - エ: メモリアクセス命令を少なくする。
→ メモリアクセスは重要ですが、パイプラインの停止原因としては分岐命令の影響の方が大きいです。
補足コラム
パイプライン処理はCPUの性能向上に欠かせない技術で、命令の読み込み、実行、書き込みを並行して行います。分岐予測技術も発展していますが、根本的には分岐命令を減らすプログラミングが効率化に寄与します。また、命令の読込みとデータアクセスが分離されたアーキテクチャ(ハーバードアーキテクチャ)では、命令とデータのアクセス競合が減るため、分岐命令の影響がより顕著になります。
FAQ
Q: なぜ分岐命令がパイプラインの効率を下げるのですか?
A: 分岐命令は次に実行すべき命令が不確定になるため、パイプラインの命令取り消しや再取得が必要になり処理が遅れます。
A: 分岐命令は次に実行すべき命令が不確定になるため、パイプラインの命令取り消しや再取得が必要になり処理が遅れます。
Q: CASE文を多用すると何が問題ですか?
A: CASE文は多くの分岐命令を含むため、パイプラインの流れを頻繁に止めてしまい効率が悪化します。
A: CASE文は多くの分岐命令を含むため、パイプラインの流れを頻繁に止めてしまい効率が悪化します。
関連キーワード: パイプライン処理、分岐命令、CPUアーキテクチャ、ハーバードアーキテクチャ、パイプラインハザード

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

