マイクロアーキテクチャ
一般的に全てのCPUは、シングルチップでもマルチチップのマイクロプロセッサでも、プログラムを走らせるとき次のような段階的な演算をする。
命令の読み込みとデコード
命令と必要なデータとの関連付け
命令の実行
出力結果の書き出し
一見簡単に見える一つながり処理の連続を複雑なものにしているのは、メインメモリとハードディスクなど不揮発性記憶装置(プログラムの命令とデータが保存される)などで形成される階層的な記憶装置が、常にプロセッサ本体より低速であるという事実である。ステップ2はしばしばコンピュータのバスからデータが到着する際に(CPUの世界では)長大な遅延を発生させる。こうした遅延を可能な限り回避できるような設計のために、膨大な量の研究結果が費やされている。長い間、一つの中心的な目標は、複数の命令を並列に実行させ、実効的なプログラムの実行速度を向上させることであった。こうした努力により複雑な論理回路や回路構造が導入された。当初はそのような手法は、必要な回路の規模から高価なメインフレームやスーパーコンピュータにのみ適用可能であった。半導体生産技術が進歩するにつれ、こうした手法が1つの半導体のチップにより多く搭載できるようになった。
CPUの記事に、CPUの処理の基本についてより詳細な議論がある。
en:History of general purpose CPUs の記事に、CPU発展の歴史についてより詳細な議論がある。
以下は、現代的なCPUに一般的なマイクロアーキテクチャ技術についての調査である。
命令レベルの並列化により高い性能を実現する上で障壁となるのが、分岐によるパイプラインのストールとフラッシュである。通常、条件分岐が発生するかどうかは、レジスタの演算結果に依存するためパイプラインの後段にならないと分からない。プロセッサの命令デコーダが条件分岐命令に出会った時点から、問題となるレジスタの値が読み出せるようになるまでの時間、パイプラインは数サイクル停止する可能性がある。平均的には、命令の五分の一は分岐であり、つまり高い頻度でストールが発生する。実際に分岐が行われると事態はより深刻で、パイプラインにあった以降すべての命令を廃棄する必要がある。
分岐予測や投機実行などの手法が分岐によるペナルティを軽減させるために用いられる。分岐予測はハードウェアがある特定の分岐が起こるかどうかを推測する。推測により、プリフェッチ命令はレジスタの読み出しを待たなくてもよくなる。投機実行はこれを大きく発展させたもので、予測された経路のコードを、分岐が発生するかどうかがわかる前に実行してしまうものである。