命令サイクル 【実行サイクル】 instruction cycle
CPUは機械語のプログラムに書かれた命令(インストラクション)を一つずつ順番に実行する。一つの命令の実行は「ステージ」と呼ばれる複数の段階の組み合わせとなっており、実行の開始から集結までの一連の工程の流れをサイクルという。
一般的なサイクルは、プログラムカウンタが指し示すメモリ番地からの命令の読み出し(命令フェッチ)に始まり、命令の解読・解釈(命令デコード)、命令が対象とするデータ(オペランド)の場所を特定するアドレス計算、オペランドの読み出し、演算など具体的な処理内容の実行、実行結果の書き出し、プログラムカウンタ)の加算や書き換え、といったステージで構成される。
説明の仕方によって、アドレス計算とデータ読み出しを一つにまとめたり、処理の実行と結果の書き出しを一つにまとめる場合もある。メインメモリに対する読み出しや書き込みは、制御回路によってキャッシュメモリに対する読み出しや書き込みに自動的にすり替わる場合もある。
パイプラインによる高速化
単純な構成のCPUはこのサイクルを一つずつ順番に実行していくが、各ステージは異なる回路を使用することが多いため、「前の命令がデコードに移ったら次の命令のフェッチを始める」といったようにステージの数だけ命令を並行して実行させることができる。
そのような高速化手法を「パイプライン処理」という。複数のパイプラインを用意して依存関係(前後関係)にない複数の命令を同時に実行する手法もあり「スーパースカラ」方式と呼ばれる。並列処理とは異なり、複数のプログラムを並列に実行するのではなく、プログラムを構成する命令を並列に実行する。
(2023.10.24更新)