竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS 制御転送命令(CTI,Control Transfer Instruction)

<<   作成日時 : 2013/03/14 04:51   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 メモリ上の命令列は命令1、命令2、命令3、……の様に並んだ順に実行される。これを制御しているのはプログラムカウンタ(PC、またはIP Instruction Pointer)で、プロセッサがある命令を取り込んだら、PCにある命令の長さ分加算して次の命令を指し示す。
 制御転送命令は条件によって、あるいは無条件にPCの値を変えることにより命令の流れを変える。また、戻り番地を保存することで、分岐した先の処理が終われば戻るサブルーチンが実現できる。
  分岐命令は分岐先に関する即値を伴う。これは2の補数であり、現在のPCに加算することによって当該命令から前後にある番地に相対的に分岐できる。相対値指定の分岐はPCを中心に飛び幅に制限がある。これは命令セットに伴う即値のビット幅に依存する。プログラムの局所性の性質から通常問題にならない。
 もうひとつはレジスタによる絶対番地の指定で、指定した場所に分岐する。
 条件付き分岐命令は、数値演算でレジスタを比較した結果によって分岐・非分岐を決定する。分岐条件の代表的なものは、ゼロ、非ゼロ、正、負、符号付きでより大きい・小さい、符号なしでより大きい・小さい、など。
 分岐命令はパイプライン実行を乱す。分岐が成立した場合は、連続して取り込んでいた後続の命令を破棄しなければならない。もし分岐する確率が高いのなら、分岐先の番地から命令を取り込み始めると無駄が減る。これを選択させるのが分岐予測機構であり、分岐命令に分岐をする・しないのヒントを埋め込むことがある。また、プログラムのループ構造の最後にある条件判断は前の番地に分岐する確率が多く、先の番地に分岐する確率は低いと推定することもできる。ハードウェアによる分岐予測機構はある番地の分岐命令の履歴を元に予測する。
 サブルーチンを実現する分岐命令は、当命令の次の番地を保存して分岐を実行する(CALL)。分岐先の命令列はプログラム実行後、保存された戻り番地を取り出してそこに無条件に分岐する(RETURN)。戻り番地の保存はレジスタに行うもの、スタックポインタで示される番地に保存するものがある。
 他には割り込みによる制御転送命令がある。通常は例外の事象が発生するとプロセッサは割り込みモードになり、割り込みの種類によって指定された番地に分岐する。割り込みはサブルーチンコールにも似ているが、割り込み前のプロセッサの状態を保存する必要があるため無制限に割り込むことはできない。

 PCがない命令の実行の形態もあり、プロセッサ内部の水平マイクロ命令が相当する。マイクロ命令には次に実行すべき命令の開始番地が埋め込まれており、PCを必要としない。分岐命令は複数の開始番地を埋め込み、条件によって分岐先を選択する。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




制御転送命令(CTI,Control Transfer Instruction) 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる