『パイプラインなんなのさ?』

はじめに

CPUの説明によく登場するパイプラインという言葉。このサイトでも何かと登場しているのですがここにすこしまとめてみることにしました。ただ、非常に技術的なもののようで私自身もよくわかってないというのが事実なので説明といってもお粗末なものですが。。。

パイプラインってなに?

パイプラインというのはどうやら並列処理のことのようです。例えば自動車を作るとしましょう。

昔は一つひとつ作っていきました。まず骨組み、次にエンジンを作ってのように順を追って作っていって一台完成したら次に二台目を作る感じです。

しかし、これでは効率が悪いですよね?そこで、何人かで分担して骨組みを作る人、エンジンを作る人、ハンドルを作る人…と分担して同時に作り始めて完成したら組み立てるのです。これが要するにパイプライン処理なのです。パイプライン処理を行うCPUは複雑な計算をするに当たっていくつかの要素に分解して同時に処理し始めるます。こうすることで各処理の重みが減るので処理が速くできるようになります。

上の例でいくと、パイプラインなしだと車一台を組み立てるのに順を追っていくのでかなり大変ですが、パイプライン処理を行うと各担当の仕事が簡略化できるのできっと車一台を組み立てるのにパイプライン処理なしに比べて速くなる、というワケです。車一台を組み立てるのを1クロックとするとパイプライン処理をした方がクロックを速くすることが簡単になるのは予想がつきます。パイプラインはCPUのクロック向上技術の一つなのです。

すごい技術のパイプラインなんだから多い方が速いよね?

車は作る物がいつも一緒なので同じ物を作っていればパイプラインは正常に動作しますが、CPUの場合は処理する内容がそのつど変わるのでパイプラインで処理する内容も変わってきますからパイプライン処理はできないことになります。とすると、上の例でいうならば骨組みが決まらないならエンジンの形状も決められず次の処理に移れないということになります。

そこで先読みという方法を行います。要するに一つめのパイプラインの処理結果を予想して一つめのパイプラインの結果が出る前に次のパイプラインを走らせてしまうのです。まぁデジタルの世界なんざ所詮0と1しかないので単純計算でも1/2ですから、ある程度予測すればあたるというワケです。

こうやって一気に並列処理してしまうわけですが、当然予想をしている以上ハズレる確率もあり、はずれてしまった場合は最初から計算をやり直す必要があるのでかなり遅くなってしまいます。となると、予想する回数が多いほど予想が外れる確率が上がるので遅くなってしまうことになります。つまりパイプラインの数が増えれば増えるほどはずれる確率も上がって遅くなるかもしれないということなのなのです。

Pentium 4が同じ周波数のPentium IIIよりも性能が低いのはパイプラインの数が多いためにこの先読みに失敗する確率が高いからなのです。

結局のところ、パイプラインによってあげられるクロックとパイプラインによって引き起こされる先読みミスによる速度低下のバランスが重要になってくるというわけなのです。