パイプライン処理
一般的なマイクロプロセッサは、クロック同期設計であり、バッファのある同期パイプラインを使っている。この場合のステージ間のバッファを「パイプラインレジスタ」と呼び、全体がクロックによって同期されている。クロックサイクルは、パイプラインの各ステージで最長の時間がかかる部分より長く設定する。それによって、前のステージの結果がパイプラインレジスタに書き込まれてから、次のステージがそれを利用して処理することができる。
ロード(メモリの読み出し)・ストア(メモリへの書き込み)を行う
時間的に隣り合うサイクルのステージが互いに独立した実装方式を採用した例としてimagination社のMetaがある。Metaは、最大で4つまでのハードウェアスレッドを実現している。4つの独立したプログラムカウンタを保持、時間的に隣り合うサイクルのステージに依存関係がないため、分岐命令実行ペナルティも存在しない。
プロセッサが命令を実行するためには、命令解釈・演算・メモリアクセス等を行う必要があり、各々の処理をこなす回路のユニットが存在するが、1つの命令がこれら全てのステップを終えてから次の命令を実行する方式(逐次実行方式)では命令が現在いるステップ以外のユニットは仕事をしない。
これらのユニットを有効利用するために、ユニット間にフリップフロップを挿入して分割し、クロック毎に各ユニットが独立して動作できるようにした上で次々に命令を投入・並列実行する方式をパイプライン処理と言う。これにより各ユニットのハードウェア資源を有効に活用することができ、処理速度が向上する。
最初のステージで命令を読み込む(フェッチする)。
読み終えたら(ここで1クロックが経過)そのステージは命令を次のステージに移し、次の命令をフェッチする。その間、2番目のステージでは読み込まれた命令のデコードがはじまる。
それが終わると(さらに1クロックが経過)すべての命令を次のステージに移し、1番目のステージは次の命令をフェッチ、2番目のステージではデコードを行う。