CPUの投機実行とは?分岐予測の仕組みを解説!【備忘録-基本情報技術者試験対策 #13】

基本情報技術者試験

※ 本記事では、基本情報技術者試験の対策として私が勉強したことを備忘録的にまとめておきたいと思います。
少しでも参考になれば嬉しいです。

はじめに

さて今回は、CPUの投機実行についてまとめます。

投機??字面だけでは分かりにくいですよね。パイプライン処理や分岐予測と関係しているワードになります。

どんなことをしているのか、しっかりと図をイメージして覚えるようにしましょう!

ちなみに私はこの参考書を使って勉強してました。

漫画形式で読みやすく、分かりやすい内容になっているため、無理なく学習を進められると思います。

過去問を解きまくり、不明点があれば参考書で知識を補う、このサイクルで試験対策するのが私のオススメです!

最新版はこちらです。

少し内容が異なる部分もあるかもしれませんが、大まかには変わらないはずですので、安心して下さい。

投機実行とは

CPUの投機実行とは、分岐処理において、分岐先を予測し、前もって分岐先の処理を実行していく方式です。

前もって実行しておくことが投機実行です。予め分岐を予測して“機”械(CPU)にタスクを“投”げるということですね。

言葉だけでは分かりにくいと思いますので、例を考えましょう。

例として、ある処理Aと、ある処理Aの結果を受けて動作する分岐処理B・分岐処理Cを考えましょう。

簡単に、

  • 処理Aの結果が0 → 分岐処理Bを実行
  • 処理Aの結果が1 → 分岐処理Cを実行

とします。

基本的な動作としては、処理Aの結果を待ち、その結果を受けて分岐処理B or 分岐処理Cを実行するのが一般的ですよね。

しかしここで、あらかじめ処理Aの結果が0になる可能性が高いと分かっていたらどうでしょうか。すなわち、分岐処理Bが実行される可能性が高いと分かっていた場合です。

その場合、処理Aと並行して分岐処理Bを実行しておきます。

仮にこの予想が当たっていた場合、処理Aの結果を待って、分岐処理Bを実行するという無駄な処理時間を削減することができます
そう、いちいち結果を待たなくていい分、処理を早く終わらせることが可能になるわけです。

この予測精度が高ければ高いほど、先読み先読みで処理を実行できるので、全体の処理スピードはどんどん早くなります

このように、分岐先を予測して前もって実行していく方式が投機実行になります。

ただしこれは、あくまでも予測です。外れることもあります。

そのような場合でも、特に問題はありません。

その結果を受けて予測が外れていたら、正しい処理を行えばいいだけなのです。

本来実行すべき処理をただ行うだけなので、外した場合はより長い時間がかかってしまうなんてリスクは全くありません。

本来実行にかかる時間が早くなるか、そのままか、たったこれだけなのです。

※2023/9/3更新・・・

よくよく調べてみると、どうやら「あらかじめ実行すること」が投機実行みたいです。

分岐先を予測していくことは、その名の通り分岐予測という技術です。

記事でもまとめていますのでそちらをご覧ください!

また、これら投機実行や分岐予測は、パイプライン処理において非常に重要な要素です。

パイプライン処理に関する記事も合わせてご覧いただければ、どうして必要なのかもご理解いただけると思います。

パイプライン処理の進化形??であるスーパーパイプラインやスーパースカラに関する記事も是非!

これだけは覚えよう!

さて、今回はCPUの投機実行とは何なのかという説明をしました。

覚えることはたった1つだけです。

★投機実行
分岐先の結果を予測し(これは分岐予測)、あらかじめ実行しておく方式

しっかりと図もイメージして知識を定着させましょう。目指せ試験合格!

前回まとめた記事も読んでもらえると嬉しいです!

基本情報以外の勉強記事も是非!

オススメ参考書 & Udemy講座

オススメ参考書

私が勉強する際に使用していたオススメ参考書は以下です。

上記シリーズの最新版は以下です。(内容はそこまで変わらないはずですが・・・)

Udemy講座

私がぜひオススメしたい、Udemyの講座もいくつかピックアップしておきます。

誰かに解説してもらった方が分かりやすい場合もありますからね~

画像でもボタンでも、どちらを押下しても講座へ飛べるようにしてありますので是非!

コメント

タイトルとURLをコピーしました