逐次的アドレッシングモード
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/04 05:50 UTC 版)
「アドレッシングモード」の記事における「逐次的アドレッシングモード」の解説
逐次的実行 PCを意図的に変更する命令以外は、メモリ上で一般に現在実行している命令に続いている命令のアドレスをPCに設定するので、メモリ上の次の命令を逐次的に実行することになる。これは自動的に行われるため、一般にアドレッシングモードとは見なされない。例えばNOP命令は何もしないと言われるが、PCだけはインクリメントする。ほとんどの命令は逐次的に実行することになるため、CPU設計においては逐次的実行の高速化を最優先とし、分岐命令を実行すると性能が低下するような設計にすることが多い。条件分岐命令は条件によって分岐する場合と分岐しない場合があり、分岐しない場合は逐次的実行となり、分岐する場合はアドレッシングモードで指定された分岐先を使用する。最近のCPUは命令プリフェッチ、命令パイプライン、アウト・オブ・オーダー実行といった機能を備えているが、アドレッシングモードの観点からは命令を1つ実行して、完了したら次の命令を実行しているかのように振る舞う(内部の動作は異なる)。逐次的命令だけが並んでいる「基本ブロック」は、時間的にも空間的にも参照の局所性を備えている。 プログラムカウンタ (PC) による逐次的実行を行わないCPUはほとんど存在しないが、各命令が常に次に実行すべき命令のアドレスを指定するというアーキテクチャのCPUも存在する。そのようなCPUは指定されたアドレスを保持する命令ポインタは持つが、それはカウントアップする性質はないのでプログラムカウンタではない。例えば、磁気ドラムメモリを主記憶とする一部のコンピュータ、SECDマシン、RTX 32P などがある。さらにフォン・ノイマン・ボトルネックを回避するためにプログラムカウンタの代替となる機構を採用するアーキテクチャもある。 条件付き実行 ARMやx86(条件付ロード命令)など一部のアーキテクチャは、分岐命令以外にも条件付きの命令を備えている。それによって分岐を不要とし、命令パイプラインが乱れるのを防ぐことができる。比較命令でステータスレジスタの条件コードを設定し、その後の命令列でその条件コードを使い、各命令を実際に実行するか否かを決定する。 スキップ 比較命令の一種で、比較結果によって次の命令を実行するか否かを決定する命令を持つアーキテクチャもある。スキップ・アドレッシングは、オフセットが "+1" に固定されている特殊なPC相対アドレッシングモードと見なすことができる。条件分岐命令と同様、レジスタを1本指定する場合(reg1=0ならスキップ)や2本指定する場合(reg1=reg2ならスキップ)、ステータスレジスタの条件コードを設定する命令と条件コードを参照するスキップ命令が分かれている場合などがある。指定したレジスタの特定のビット位置が "1" か "0" かで判断する命令もある(reg12のビット7が0ならスキップ)。スキップ命令は命令パイプラインを乱さないが、スキップされた命令の実行ステージは無視され、そのサイクルは無駄になる。
※この「逐次的アドレッシングモード」の解説は、「アドレッシングモード」の解説の一部です。
「逐次的アドレッシングモード」を含む「アドレッシングモード」の記事については、「アドレッシングモード」の概要を参照ください。
- 逐次的アドレッシングモードのページへのリンク