忍者ブログ
情報処理技術者試験の合格を目指す全受験者のための、1問1問「徹底解説」ブログです。単なる過去問の暗記ではなく、なぜその答えになるのかを本質的に理解できるよう解説します。書籍などでは学べない最新用語やトレンドを踏まえてご紹介します。

【コンピュータ】CPUの先読みの知恵!「分岐予測」と高速化の仕組み|情報処理問題1000本ノック

現代のCPUは、プログラムが次にどう動くかを「予測」しながら超高速で先回りして仕事をこなしています。プロセッサの高速化技法である「分岐予測」の仕組みを攻略しましょう。

1. 【 問題 】:プロセッサの高速化技術(分岐予測)

【 問題 】 CPUの高速化技法の一つである「分岐予測」を説明したものとして、最も適切なものはどれでしょうか?

① 同時実行可能な複数の命令において、別々のレジスタに対して同一の名称(論理レジスタ名)を割り当てることで、レジスタの競合を回避する。
② プログラムの記述順序にとらわれず、データの依存関係がない(他の命令の結果を待つ必要がない)命令から前倒しで並列に実行する。
③ 条件分岐命令が実行される際に、過去の実行履歴などに基づいて、次に分岐すべき方向をあらかじめ予想する。
④ 条件分岐命令の結果が確定する前に、分岐先になると予想される側の命令を先回りしてあらかじめ実行しておく。

2. 正解:

正解: ③ 条件分岐命令が実行される際に、過去の実行履歴などに基づいて、次に分岐すべき方向をあらかじめ予想する。

3. 解説:「予測」と「実行」の境界線を見極める

CPUには、命令をパイプライン(ベルトコンベアのような流れ作業)で次々と処理する仕組みがあります。しかし、途中で「もし〜ならAへ、そうでなければBへ」という条件分岐命令に出会うと、どちらに進むかが決まるまで後ろの命令をベルトコンベアに流せなくなり、CPUのスピードが落ちてしまいます。
そこで、どちらに進むかを事前に「予想する」仕組みが分岐予測です。

【他の選択肢の重要キーワード解説】 ← ココも試験に出る!

★ ① レジスタリネーミングの説明です。限られたハードウェアのレジスタ(一時的な記憶場所)を効率よく使い回し、命令同士のバッティングを防ぐ技術です。
★ ② アウトオブオーダ実行(Out-of-Order)の説明です。プログラムに書かれた「順番通り」ではなく、準備ができた命令から勝手に実行してしまう賢い高速化技法です。
★ ④ 投機実行(Speculative Execution)の説明です。今回の「分岐予測」によって『こっちに進むだろう』と予想した先の命令を、結果が決まる前にフライングして実際に実行してしまう技術のことです。

1. 理解のコツ: 「迷路の先読み」に例えてみましょう。
・迷路を走っていて、右と左の分かれ道(条件分岐)に来ました。普通なら「看板」を見てどっちが正解か確認してから進みますが、それではタイムロスになります。
・ここで、「今までの経験上、このパターンの迷路は『右』が正解の確率が高いぞ」と頭の中でアタリをつけること、これが分岐予測(選択肢③)です。
・そして、その予測を信じて、看板を確認しきる前に右側の道を猛ダッシュで走り出してしまう行動、これが投機実行(選択肢④)です。もし予測が的中していればものすごいスピードアップになりますが、予測が外れたら元の分かれ道までダッシュで戻り、やり直す必要があります。
2. 試験対策の視点: 試験問題文を読むときは、末尾の言葉に注目してください。「方向を予想する」と書かれていれば分岐予測が正解になり、「あらかじめ実行する」と書かれていれば投機実行が正解になります。この2つはセットで機能する技術ですが、概念としては明確に区別されているため、午前試験の引っ掛け問題として非常に狙われやすいポイントです。


4. まとめ

「条件分岐の実行結果がわかる前に、次にどちらの処理に進むかを過去のパターンから高確率で予想するプロセッサの高速化技術」。これが分岐予測です。CPUがいかにして「パイプラインの隙間(ロス)」を無くそうと知恵を絞っているか、その周辺技術(アウトオブオーダや投機実行)と一緒に頭の引き出しに入れておきましょう!


PR