本記事は、日経WinPC2013年10月号に掲載した連載「PC技術興亡史」を再掲したものです。社名や肩書などは掲載時のものです。

 80386とMS-DOSはマーケットシェアを獲得したものの、MotorolaのMC68000系に対抗するため、Intelは性能を高く引き上げる必要性を感じていた。

 80386はIntelで初めてパイプライン処理を実現した製品だ。Intelは「ParallelPipeline(並列パイプライン)」と呼んだが、実態はごく普通のパイプライン処理である。

 80286までは1つの命令のフェッチ(読み出し)/デコード/実行という一連の作業が終わって、ようやく次の命令のフェッチに取りかかる仕組みだった。80386は命令の処理をいくつかの段階に切り分けた上で、並行して処理できる(図1)。バスユニットは1つ目の命令のフェッチが終わったら、すぐに2つ目の命令をフェッチする。デコードユニットもひたすらデコード処理を繰り返す。これにより、1つ目の命令の処理が終わるまでの時間こそ変わらないものの、1つ目の実行が終わるとすぐ2つ目の実行が始まる。

図1 80386は、IntelのCPUとしては、初めて各ステージが並列に動作した。当時、これを表現して「Parallel Pipeline」(並列パイプライン)と呼んだが、パイプラインの構造としてはごく一般的だ。ここでは4ステージで 示したが、実際のパイプラインは6段だった。
図1 80386は、IntelのCPUとしては、初めて各ステージが並列に動作した。当時、これを表現して「Parallel Pipeline」(並列パイプライン)と呼んだが、パイプラインの構造としてはごく一般的だ。ここでは4ステージで 示したが、実際のパイプラインは6段だった。
[画像のクリックで拡大表示]

 実は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だった。