令和3年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問1
【問題1】
パイプラインハザード対策に関する記述のうち、アウトオブオーダ実行方式を用いたものはどれか。
演算に必要なデータがそろうまで実行が待たされている命令によって、後続の命令の実行が待たされることを防ぐために、既にデータがそろっている後続の命令があれば、それを先に実行する。
条件分岐命令の判定結果が分かるまで分岐後の命令実行が待たされることを防ぐために、分岐する確率が高い方の命令を先読みして実行する。
前の命令の演算結果がレジスタに書き込まれるまで次の命令の実行が待たされることを防ぐために、プロセッサ内にバイパス経路を設け、演算結果を演算器に直接入力して次の命令を実行する。
レジスタへのアクセスが競合して後続の命令の実行が待たされることを防ぐために、クロックサイクルを細分化し、サイクル前半を書き込み、後半を読み出しとすることによって競合なく命令を実行する。
【解説】
ア: 演算に必要なデータがそろうまで実行が待たされている命令によって、後続の命令の実行が待たされることを防ぐために、既にデータがそろっている後続の命令があれば、それを先に実行する。
正しい。アウトオブオーダ実行(Out-of-Order Execution)は、命令の実行順序を動的に変更し、実行可能な命令を優先して実行することで、パイプラインの停滞を防ぐ仕組みです。
イ: 条件分岐命令の判定結果が分かるまで分岐後の命令実行が待たされることを防ぐために、分岐する確率が高い方の命令を先読みして実行する。
誤り。これは分岐予測(Branch Prediction)の説明です。
ウ: 前の命令の演算結果がレジスタに書き込まれるまで次の命令の実行が待たされることを防ぐために、プロセッサ内にバイパス経路を設け、演算結果を演算器に直接入力して次の命令を実行する。
誤り。これはデータフォワーディング(Data Forwarding)の説明です。
エ: レジスタへのアクセスが競合して後続の命令の実行が待たされることを防ぐために、クロックサイクルを細分化し、サイクル前半を書き込み、後半を読み出しとすることによって競合なく命令を実行する。
誤り。これはクロックサイクルを利用したリソースの競合回避方法の説明であり、アウトオブオーダ実行ではありません。
【答え】
ア: 演算に必要なデータがそろうまで実行が待たされている命令によって、後続の命令の実行が待たされることを防ぐために、既にデータがそろっている後続の命令があれば、それを先に実行する。
出典:令和3年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問1