80386とMS-DOSはマーケットシェアを獲得したものの、MotorolaのMC68000系に対抗するため、Intelは性能を高く引き上げる必要性を感じていた。
80386はIntelで初めてパイプライン処理を実現した製品だ。Intelは「ParallelPipeline(並列パイプライン)」と呼んだが、実態はごく普通のパイプライン処理である。
80286までは1つの命令のフェッチ(読み出し)/デコード/実行という一連の作業が終わって、ようやく次の命令のフェッチに取りかかる仕組みだった。80386は命令の処理をいくつかの段階に切り分けた上で、並行して処理できる(図1)。バスユニットは1つ目の命令のフェッチが終わったら、すぐに2つ目の命令をフェッチする。デコードユニットもひたすらデコード処理を繰り返す。これにより、1つ目の命令の処理が終わるまでの時間こそ変わらないものの、1つ目の実行が終わるとすぐ2つ目の実行が始まる。
実は80286や8086でもパイプライン自体は実装されていた。ただし、命令の並行処理が事実上できていなかった。これが80386で「Parallel」と呼んだ理由だ。ちゃんと並行して、複数の命令をパイプラインの全ステージで同時処理できるようになったのが80386だった。
80386の性能上のボトルネックになったのは、デコードユニットと実行ユニットだった。80386は1.5μmプロセスで27万5000トランジスターとかなり大規模な構成だった。製造を容易にするために、トランジスター数を減らす必要があった。このため多くの命令がマイクロコードを使ってデコードされていた。負荷軽減のために、3命令分のデコード済み命令キューを備えていた。
実行ユニットは主要な命令が1クロックで処理できなかった。通常のALU命令は平均2クロック、ロード/ストアは4/2クロック、分岐命令は9クロックも処理にかかった。実際、Intelによれば80386の平均命令所要クロック(CPI:Clocks PerInstruction)は4.9だった。