: マルチサイクルのデータパス
: マイクロプロセッサ演習
: マイクロプロセッサ演習
前回は単一サイクルのデータパスについて学んだ。
これは、図 1(a) のように、一つの命令を
単一サイクルで実行するデータパスであった。
図 1:
一命令を (a) 単一サイクルで (b) マルチサイクルで処理する。
|
今回はそれとは異なり、一命令を複数クロックで実行するマルチサイクルのデータパス
について学ぶ。
まず、単一サイクルのデータパスでは、命令によって表 1 のようなパスを通って
演算が行なわれた。
表 1:
単一サイクルのデータパスにおける機能ユニットの利用。
命令のタイプ |
使用される機能ユニット |
R 形式 |
命令フェッチ |
レジスタアクセス |
ALU |
レジスタアクセス |
|
ロード命令 (lw) |
命令フェッチ |
レジスタアクセス |
ALU |
メモリアクセス |
レジスタアクセス |
ストア命令 (sw) |
命令フェッチ |
レジスタアクセス |
ALU |
メモリアクセス |
|
分岐 (beq 等) |
命令フェッチ |
レジスタアクセス |
ALU |
|
|
ジャンプ (j) |
命令フェッチ |
|
|
|
|
|
表からわかるように、命令に応じて処理の内容が異なる。
このように様々な命令を全て一サイクルで実行するためには、
クロック・サイクル時間を最も時間のかかる命令に合わせねばならない。
表では、ロード命令 (lw) 命令が実行可能なように、クロック・サイクルを
長く取る必要があるが、これでは、他の命令を実行する際に無駄が生ずる
(表の空欄)。
さらに、この表には書かれていないような複雑な命令
(例えば浮動小数点命令など。教科書 346 ページ例題参照) の
実行も考慮すると、無駄はさらに大きくなる。
そのため、現代のコンピュータでは単一サイクルによるデータパスは
まず採用されない。
これを解決するのは図 1 のように、一命令の実行に複数のサイクル
をかけるるようなデータ処理方式であり、
それを行なうのが今回学ぶマルチサイクルのデータパスである。
これは、ラフに言えば、表 1 において「R 形式には 4 サイクル」「ロード命令には 5 サイクル」かけるようなデータ処理方式である。
また、単一サイクルのデータパスにはもう一つ欠点がある。
全ての命令を一サイクルで実行しなければならないため、
一つの機能ユニットを一命令に一回しか使えないことである。
前回の単一サイクルのデータパスにおいて、
メモリを「命令メモリ」と「データメモリ」に分けていたのはそのためであるし、
ALU に関しても、「ALU ユニット 1 つ、加算ユニット 2 つ」が存在し、
これではユニット数が多くなり無駄が多い。
マルチサイクルのデータパスを用いると、一つのユニットを一命令で複数回用いる
ことができるようになる。
平成17年1月17日