スポンサーリンク

問題の解答・解説ページ

このページは解説の閲覧モードです。
実力試しをしたい方は、下のボタンからクイズに挑戦してください!

この問題をクイズ形式で解く
問題 No.4195
コンピュータのプロセッサにおける投機的実行(Speculative Execution)に関する記述として不適切なものはどれか。

【正解の解説】

投機的実行によって誤った予測に基づいて処理が行われた場合でも、内部状態の更新は予測確定後に行われるため、プログラムの実行結果に影響を与えることはなく、処理性能の低下を防ぐためのオーバーヘッドやペナルティは一切発生しない。

レストランの注文を先読みして料理を作り始める状況に似ています。お客さんが予測と違うものを頼んだ場合、作った料理を捨てる手間と時間がかかりますよね。これと同じで、投機的実行でも予測が外れれば無駄になった作業をやり直す必要があり、わずかながら性能低下のペナルティが発生します。

スポンサーリンク

【その他の選択肢の解説】

条件分岐命令の次に実行される命令の方向性を過去の実行履歴に基づいて動的に予測し、分岐結果が確定する前に後続の命令を先取りして並列に実行する仕組みである。

初心者は「先読みして処理をする」という部分だけを見ると不安になりますが、これはCPUが待ち時間を減らして高速化を図るための正当な技術です。この選択肢自体は投機的実行の定義を正確に述べており、不適切ではないため不正解となります。

プロセッサのパイプライン処理において、条件分岐の成立確率が事前に分からない場合でも両方の処理経路を同時に進め、予測が外れた場合には不要になった結果を破棄して正常な状態に復旧させる。

分かれ道に差し掛かったとき、どちらに行くか迷いながらも両方の可能性の準備を進めておくイメージです。予測が外れたら片方を捨てて正しい道に戻るという手順を踏むため、この説明は投機的実行の挙動として完全に正しく、問題文が求める不適切な記述ではありません。

分岐予測が外れた場合には不要となった演算結果やレジスタの状態を廃棄して正しい処理経路へ巻き戻す必要があるため、予測ミスが発生した場合には一定の処理遅延や性能低下のペナルティが生じる。

先読みが外れた場合のペナルティについて述べており、選択肢Aの「ペナルティは一切発生しない」という嘘を論理的に裏付ける正しい内容です。CPUの世界でも人間の仕事と同じで、賭け(投機)が外れたときの尻拭いには必ずコストがかかるという点を押さえておきましょう。