![]() |
|
|||||
![]() |
今回は、3ヶ月空いてしまいましたが、「コンピュータの頭脳CPUの進化(内部構造編 その1)」の続編をお話させて頂こうと思います。
現在利用されているCPUのほとんどは、高速化のためにパイプライン処理を採用しています。パイプラインと聞くと、自動車製造を思い浮かべる方もおられるでしょう。
まさに、皆様がお使いのPC、携帯電話やタブレットPCのCPU内では、自動車製造のパイプラインと同様のことが行われているのです!
「内部構造編 その1」でお伝えしたCPUの基本的なフローは以下のとおりです。
(1)入力データをメモリから読み込む
(2)CPUで実行する命令(加算命令や乗算命令など)をメモリから読み込む
(3)入力データに対して命令を実行
(4)結果をメモリへ書き出す
このフローに対応する非常に簡単なモデルで、CPUのパイプライン処理を説明させていただきます。CPUは(1)から(4)に対応する4つのステージで構成されています。一般的に、パイプラインのサイズはステージ数で決まり、○段パイプラインと呼ばれます。図1の場合は4段パイプラインと呼ばれます。
図2は、図1での実行の様子を示しています。各ステージは1msで完了するものとします。タスクAが“命令の実行”に至る(最初の3ms間)までは、全ステージが稼働していませんが、“データの書き込み”を行った時点で全ステージが稼働します。各ステージのタスクが他のタスクに依存していないため、各ステージは独立して稼働できるのです。これは、ある時刻においては4つのタスクが並列処理していることを意味します。その結果、開始から4ms後から1ms毎に各タスクが完了します。
簡略化のために常に全ステージが稼働しているように描きましたが、実際にはこんなにもスムーズにはいきません。可能な限り全ステージを稼働させるために、何十年も前からこの研究が行われています。
図2 図1でのパイプライン実行
一方、図3はパイプラインを利用していない時の様子を示しています。パイプライン処理を行っていないため、各タスクが完了するまでは他のタスクを実行させることができません。その結果、4ms毎にしか各タスクが完了しません。
図3 パイプライン化されていない場合の実行
とても単純なモデルですが、パイプライン処理により4倍も高速化しています。
図2と図3をよく見てみましょう。タスクの観点からすると1タスクが完了する時間は図2と図3で変わりません。CPUをパイプライン化しただけで高速化できたのです。これは、プログラマがプログラムに何も手を加えずに、パイプライン化されているCPUに変えただけで高速化できたということです。
パイプラインが高速化に非常に効果的であることがお分かりいただけたでしょうか。
さて、世の中に存在するCPUは何段のパイプラインで構成されているのでしょう?
インテル社のCPUを表1にまとめてみました。近年になるほどステージ数が増加しています。これは、CPU内部はどんどん複雑になっていることを示しています。例えば、Intel Core i7では14-19段となっています。実はIntel Core i7内には複数のパイプラインが存在しており、状況によって利用するパイプラインを変えています。
CPU名 | Intel 80486 | Intel Pentium Pro | Intel Pentium 4 (Prescott) |
Intel Core i7 (Haswell) |
---|---|---|---|---|
発表年 | 1989 | 1997 | 2004 | 2013 |
ステージ数 | 5 | 14 | 20 | 14-19 |
今回はCPUのパイプライン処理についてお話させていただきました。次回は、CPUの動作周波数の向上がもたらした様々な事象についてお伝えする予定です。