ITサービスマネージャ 2014年 午前2 問19
問題文
パイプラインハザード対策に関する記述のうち、アウトオブオーダ実行方式を用いたものはどれか。
選択肢
ア:演算に必要なデータがそろうまで実行が待たされている命令によって、後続の命令の実行が待たされることを防ぐために、既にデータがそろっている後続の命令があれば、それを先に実行する。(正解)
イ:条件分岐命令の判定結果が分かるまで分岐後の命令実行が待たされることを防ぐために、分岐する確率が高い方の命令を先読みして実行する。
ウ:前の命令の演算結果がレジスタに書き込まれるまで次の命令の実行が待たされることを防ぐために、プロセッサ内にバイパス経路を設け、演算結果を演算器に直接入力して次の命令を実行する。
エ:レジスタへのアクセスが競合して後続の命令の実行が待たされることを防ぐために、クロックサイクルを細分化し、サイクル前半を書込み、後半を読出しとすることで競合なく命令を実行する。
🔒 解説は解答すると表示されます
アウトオブオーダ実行【午前2解説】
正解の理由
アウトオブオーダ実行とは、命令の並び順にかかわらず、実行に必要なデータがそろった命令から先に処理する方式です。
アは、データ待ちで停止している命令があっても、後続の命令に必要なデータがそろっていれば、その命令を先に実行すると説明しています。これは、実行可能な命令を順序を入れ替えて処理するアウトオブオーダ実行に該当します。
解法ステップ
- 選択肢にある「待たされている命令」と「後続の命令」に注目します。
- 後続の命令を先に実行するという説明なら、命令の順序を入れ替えて実行する方式です。
- したがって、アウトオブオーダ実行を示すのはアです。
選択肢別の誤答解説
- ア:データがそろった後続命令を先に実行します。アウトオブオーダ実行の説明です。
- イ:分岐結果が確定する前に、分岐先などの命令を先読みして実行する「投機実行」や「分岐予測」の説明です。
- ウ:演算結果をレジスタへの書込みを待たずに次の演算器へ渡す「フォワーディング(バイパス)」の説明です。データハザードへの対策ですが、命令の実行順序を入れ替える方式ではありません。
- エ:クロックサイクルの前半で書込み、後半で読出しを行い、レジスタアクセスの競合を避ける方法です。アウトオブオーダ実行の説明ではありません。
よくある誤解
- パイプラインハザード対策はすべて同じではありません。 分岐予測、フォワーディング、アウトオブオーダ実行は、それぞれ対処する問題が異なります。
- 後続命令を先に実行しても、プログラム上の順序が無視されるわけではありません。 実行の順番を調整しつつ、最終的な結果が正しい順序で得られるよう制御します。
- フォワーディングは命令の順序変更ではありません。 演算結果を次の処理へ直接渡すことで、データの受渡しを速める方法です。
補足コラム
アウトオブオーダ実行では、実行可能な命令を先に処理することで、データ待ちによるプロセッサの停止を減らします。一方、命令を順不同で実行すると結果を正しい順序で扱う必要があるため、一般にリオーダバッファなどを用いて、命令の完了や結果の確定を管理します。
FAQ
Q. アウトオブオーダ実行では、後続の命令なら必ず先に実行されますか?
A. いいえ。必要なデータがそろっているなど、実行可能な条件を満たしている場合に先に実行されます。
A. いいえ。必要なデータがそろっているなど、実行可能な条件を満たしている場合に先に実行されます。
Q. 分岐予測も、命令を順番どおりに実行しない方式ですか?
A. 分岐結果が確定する前に、予測した分岐先の命令を先読み・実行する方式です。データ待ちの後続命令を先に実行するアウトオブオーダ実行とは、目的が異なります。
A. 分岐結果が確定する前に、予測した分岐先の命令を先読み・実行する方式です。データ待ちの後続命令を先に実行するアウトオブオーダ実行とは、目的が異なります。
関連キーワード: アウトオブオーダ実行、パイプラインハザード、データハザード、フォワーディング、分岐予測、投機実行

\ せっかくなら /
ITサービスマネージャを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

