プロセッサを高速化させる技術

プロセッサの命令実行は1つずつ順番に実行する逐次制御方式が基本です。

しかしこの方法では実行中の命令に関係しない回路はずっと待機状態となっていて非効率です。そこでプロセッサの処理効率を上げる技術としてパイプライン方式が採用されています。

パイプライン方式

パイプライン方式とは複数の命令を並列化して実行することで回路の待機時間をなくして処理を高速化する方法です。

例えば上の図ではまず命令1のF(Fetch:命令の読み出し)を処理した後にD(Decode:命令の解読)に移ります。このとき命令1のDの処理以外の回路は待機状態となるため、命令1が実行終了する前に命令2を先読みしてFの処理を並行して行うことで効率化しています。

パイプラインの実行時間

パイプライン方式における処理の実行時間はパイプラインの深さ(同時に実行する最大命令数)をD、パイプラインのピッチをP、命令数をIとすると処理時間は次の式で表されます。

(I + D ー 1)× P

例えばパイプラインの深さが4で5つの命令を実行するとき、処理時間は(5+4-1)×P=8Pとなります。

逐次制御方式では実行時間がDIP=20Pであるため、パイプライン方式によって2.5倍も効率化できていることがわかります。

パイプライン処理の問題点

パイプライン処理はスムーズに動作すれば高速化が図れますが、実際には次から次へと命令を先読みしているため分岐命令などが出てくると先読みした命令が無駄となってしまい処理が乱れてしまうことがあります。

これをパイプラインハザードといい対応策として下のような技法が取られています。

投機実行分岐命令の結果が決定する前に分岐先を予測して実行する
遅延分岐分岐の前の命令で分岐後に移動しても変わらない処理を後に移す

そのほかの高速化技術

そのほかにもプロセッサの代表的な高速化技術として次の3つが挙げられます。

  • スーパーパイプライン
  • スーパースカラ
  • VLIW

スーパーパイプラインは各ステージをより細かいステージに分割することでパイプライン処理の効率を上げる手法です。

スーパースカラはパイプラインを複数用意して複数の命令を同時に実行する手法です。

VLIW(Very Long Instruction Word)はコンパイルの段階で同時に実行可能な複数の動作をまとめて1つの命令として実行うすることで高速化を図ります。

マルチコアプロセッシング

以上はプロセッサの処理方法を工夫することによって高速処理を図りましたが、とはいえ単一のプロセッサでの高速処理は限界があります。現代ではさらなる高速化のためにプロセッサを複数使用したマルチ(コア)プロセッサが採用されています。

マルチプロセッサは名前の通りプロセッサを複数用いた方式です。しかし消費電力の観点から現在では一つのプロセッサ内で演算装置(コア)単位で並列化したマルチコアプロセッサが搭載されています。

コメント

タイトルとURLをコピーしました