問題
応用情報技術者 平成23年秋期 午前問9
CPUのパイプライン処理を有効に機能させるプログラミング方法はどれか。
- CASE文を多くする。
- 関数の個数をできるだけ多くする。
- 分岐命令を少なくする。
- メモリアクセス命令を少なくする。
答え
分岐命令を少なくする。
解説
パイプライン処理
パイプライン処理(パイプラインしょり)とは、コンピュータ等において、処理要素を直列に連結し、ある要素の出力が次の要素の入力となるようにして、並行(必ずしも並列とは限らない)に処理させるという利用技術である。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
命令パイプライン
命令パイプライン(英: Instruction pipeline)は、コンピュータなどのデジタル電子機器で命令スループット(単位時間当たりに実行できる命令数)を向上させる設計技法の1つで、命令レベルの並列性を高める1技法。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
パイプライン処理の中でも、命令パイプライン処理は、命令読出(フェッチ)、解読(デコード)、アドレス計算、オペランド呼出、実行 というような複数のステージに分け、各ステージを少しずつずらして並列に実行することで、処理時間全体を短縮させる技法です。自動車工場のラインで複数台の車を同時に流れ作業で製造しているイメージです。
しかし、実行するプログラム中に分岐命令があると、その実行が終わるまでは次に実行するべき命令を決定することはできません。以降の命令の実行を開始することができないため、パイプライン処理の効率が下がってしまいます。これを分岐ハザードと呼びます。
制御ハザード(分岐ハザード)
制御の依存に起因するハザードである。
時間 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
beq $1, $2, label | IF | ID | EX | MA | WB | ||||
and $4, $2, $5 | IF | ID | EX | MA | WB |
分岐命令がある場合、結果によって次に実行するべき命令がわからないため、パイプラインを止めて次に実行すべき命令が判明するのを待たなければならない。これを制御ハザード、または分岐ハザードという。MA→IFのステージに関係する。
出典: フリー百科事典『ウィキペディア(Wikipedia)』