パイプライン処理
逐次制御方式で命令を実行していくと
命令の取り出し、命令の解読、対象データの呼び出し、命令実行どれか一つが動いているがそれ以外は動いていないことになる。
そうすると、動いていないところは無駄になってしまう。
そのために複数の命令を同時に行うことによって無駄を無くして、命令の速度を速くできる。
これをパイプライン処理
という。
例で3つの命令を実行すると12クロック掛かるがパイプライン処理を行うと、6クロックでできる。
命令実行手順の各段階のことをステージ
と言う。
気づき
CPUは大変だな。
パイプライン処理は忙しいけどすごいな。
ステージはgitみたいだ。
分岐予測と分岐実行
次から次へと命令を先読みしている。分岐命令が出できた場合は先読み分が無駄になったしまう。これを分岐ハザード
と言う。
この分岐ハザードを防止するためにこの分岐命令が実施される場合次の命令がどれかを予測
する。
これを分岐予測
という。
そうすることで無駄な待ち時間を生じさせないようにする。
それでその予測に基づいて分岐先の命令を実行開始
する手法を投機実行
と言う。
気づき
予測をする予測をもとに命令を実行する。しかし予測が外れると分岐ハザードになるのかな。
予測の精度が高くなるほど分岐予測が生きてくるのか。
スーパーパイプラインとスーパースカラ
パイプライン処理をさらに拘束させるための手法
スーパーパイプライン
- 各ステージの中身をさらに細かいステージに分割する
- 1/2クロック単位で実行する方式。論理的には1クロックで2命令を実行可能で、ステージ数が増えれば、各ステージで行う処理はより単純稲荷、動作周波数を上げやすくなる。
出典 https://gihyo.jp/book/2022/978-4-297-12375-8
気づき
各ステージを細分化させるとはどうやってするのだろうか?
スーパースカラ
パイプライン処理を行うカイロを複数持たせることで同時に複数の命令を実行できるようにする。
気づき
CPUが複数あるのかな?
CISCとRISC
CPUのアーキテクチャ(基本設計・設計思想)を紹介
CISC
CPUに高機能な命令を持たせる。一つの命令で複雑な処理を実現するアーキテクチャ
-
高機能な命令が実現
できる。 - 命令の追加や変更が
容易
- 機械語の
プログラム作成が楽
- 命令の実行速度は
遅い
- 命令の長さや実行速度が
バラバラ
RISC
CPU内部に単純な命令しか持たないしかしハードウェアのみで実装して一つ一つの命令を高速に処理するアーキテクチャ
-
ワイヤードロジック
によって全ての命令をハードウェア的に実装
- 命令の追加や変更は
難しい
- 単純な命令があるだけなので手作業による機械語の
プログラム作成は困難
- 命令の実行速度が
速い
- 命令の長さや実行速度が
ほどんど等しい
- パイプライン処理の実行効率が高くなる
疑問 ワイヤードロジックとは?
-
ワイヤードロジックとは、マイクロプロセッサ(CPU/MPU)などの内部で命令を実行する際、演算や処理を物理的な素子や配線を組み合わせた論理回路によって直に行うこと。
-
チップ内に各命令に対応する回路群を組み込み、これを用いて処理を行う。高速に実行できるが命令ごとに物理的な回路を用意しなければならないため、命令セットが大きいと比例して回路が大規模化してしまう。
-
単純な命令に絞り込んだRISC(Reduced Instruction Set Computer)方式のプロセッサの実行部などで用いられる。
出典 https://e-words.jp/w/%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%BC%E3%83%89%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF.html#:~:text=%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%BC%E3%83%89%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%E3%81%A8%E3%81%AF%E3%80%81%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD,%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E7%9B%B4%E3%81%AB%E8%A1%8C%E3%81%86%E3%81%93%E3%81%A8%E3%80%82 -
複雑な処理を行なわない小規模なプロセッサーや、特に高速性を要求される場合に採用される。
出典 https://www.wdic.org/w/SCI/%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%BC%E3%83%89%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF
マイクロプログラム
マイクロプロセッサーの内部処理方法は二通りしかなく、一つはマイクロプログラムで実行する方法、もう一つはこのワイヤードロジックで実行する方法である。
出典 https://www.wdic.org/w/SCI/%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%BC%E3%83%89%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF
出典