next up previous
: マルチサイクルのデータパス : マイクロプロセッサ演習 : マイクロプロセッサ演習

単一サイクルのデータパスの欠点

前回は単一サイクルのデータパスについて学んだ。 これは、図 1(a) のように、一つの命令を 単一サイクルで実行するデータパスであった。
図 1: 一命令を (a) 単一サイクルで (b) マルチサイクルで処理する。
\includegraphics[scale=0.8]{eps/clock}
今回はそれとは異なり、一命令を複数クロックで実行するマルチサイクルのデータパス について学ぶ。

まず、単一サイクルのデータパスでは、命令によって表 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日