ここでは、CPUの高速化として、パイプライン、スーパースカラ(スパースケーラ)、VLIW、マルチプロセッサ、マルチコアについて解説します。 CPUの高速化で最も単純な方法は動作周波数を早くすることであるが、一定以上の動作周波数になると、メモリアクセスがボトルネック(フォンノイマン ボトルネック)になり周波数を早くしても高速化につながらない。(動作周波数を早くすると、消費電力や熱などの問題もある。)
●パイプライン上の図を見ての通り、1つの命令を処理するのに5サイクルかかっているが、各ステージの処理は独立しているため効率的でないので、これを処理を行う部分を複数個用意し並列に処理に処理することで、見かけ上1サイクル毎に実行するようにしたものがパイプラインである。
そのため、分岐命令を処理する場合、次の命令を処理してから実際の分岐を行うことでパイプラインの有効利用する方法(遅延分岐)や、命令解析時に分岐命令だった場合、分岐すると予測して分岐先の命令をパイプラインにセットする方法(分岐予測、投機実行)が採用されている。 ※以前は、遅延分岐を採用したCPUが多かったが、最近は分岐予測を採用したCPUも増えてきている。(Pentium系では第6世代のPentiumProから分岐予測を採用している。) ●スーパースカラ(スーパスケーラ)CPU内で命令を処理する演算論理装置(Arithmetic Logic Unit、ALU)を複数個にし、並列処理できるようにしたものがスーパースカラ(スーパスケーラ)である。
ちなみに、スパースからでは連続した命令が並列処理可能かどうかは実行時にCPUが行っている。
●VLIW(Very Long Instruction Word、超長命令語)CPUが命令を読み込むときに、複数の命令(群)を読み処理し、1回の実行で複数命令を並列処理するのが、VLIWである。
そのため、VLIWではプログラムの実行モジュールを作成するときにコンパイルが並列処理可能な命令を集め命令群を作り出すことを行っている。 VLIWを採用したCPUには、Itanium(Intel)などがある。 ●マルチプロセッサ、マルチコアスーパースカラ技術などで高速化が実現されたが、さらなる高速化への要求と消費電力、発熱(放熱のためのファンの騒音)などの問題から、1つのボード(基板)上に複数のCPUを実装したマルチプロセッサや、1つのCPU内に複数のコアを封入したマルチコアの技術が考え出された。
複数のジョブを同時に実行するマルチスレッドでは、命令の並列性などを考慮することなく、マルチプロセッサ(マルチコア)を容易に使用できるので、高速化や消費電力、熱などの問題を高レベルで解決できる技術として、普及が進んでいる。(シングルスレッドの処理をマルチプロセッサで実行させるにはスーパースカラやVLIWのように命令の並列性が問題になる。)
|