next up previous
: 問題 : マイクロプロセッサ演習 : 単一サイクルのデータパスの欠点

マルチサイクルのデータパス

単一サイクルのデータパスの欠点を補うのが図 4 に示した マルチサイクルのデータパスである。
図 2: マルチサイクルのデータパス。状態論理要素として振舞う機能ユニットを緑色で囲った。教科書 351 ページ図 5.32 と同等である。
\includegraphics[scale=1.0]{eps/multidatapath2}
前回も触れたように、このマルチサイクルのデータパスは 図 3 のようにクロックエッジことに状態論理要素に 書き込みを行ないながら演算処理を行なう。
図 3: マルチサイクルのデータパスによるデータ処理の模式図。
\includegraphics[scale=0.8]{eps/clockedge}
そのことが分かりやすいように、 図 4 のデータパスのうち状態論理要素を 緑色で囲った。新たな状態論理要素として が追加され、値が保持できるようになっていることに注意しよう。 また、前回触れたようにメモリとレジスタファイルは 「読み出し時は組合せ論理回路として、書き込み時は状態論理要素として」 振舞うことに注意しよう。

このデータパスにおいて、代表的な命令の実行は表 2 に基づいて行なわれる。

表 2: 命令を実行する 5 つのステップの命令タイプ別の要約。縦に時間が進む。 略号は以下を表す。IR:命令レジスタ (Instruction Register)、MDR: メモリデータレジスタ (Memory Data Register)。教科書 359 ページ 図 5.35 と同等である。
ステップ名 R 形式命令 メモリ参照命令 (lw/sw) 分岐命令 ジャンプ命令 (j)
命令フェッチ IR = メモリ[PC]
PC=PC+4
命令デコードと
レジスタのフェッチ
A = レジスタ[IR[25-21]]
B = レジスタ[IR[20-16]]
ALUOut = PC + (符号拡張 (IR[15-0]) $<<$ 2)
(j 命令用。2 ビットシフトは 4 倍)
実行、
メモリアドレス計算
分岐/ジャンプ完了
ALUOut
= A 演算子 B
ALUOut
= A + 符号拡張 (IR[15-0])
if(A==B) then
PC = ALUOut
PC= PC[31-28] $\Vert$
(IR[25-0]$<<$2)
メモリアクセス
または
R 形式命令完了
レジスタ[IR[15-11]]=ALUOut ロード:MDR=メモリ[ALUOut]、
ストア:メモリ[ALUOut]= B
   
メモリ読み出し完了   レジスタ[IR[20-16]]= MDR (lw のみ)    


縦に時間が進み、一行あたり一クロックがかかることに注意。 すなわち、R 形式命令の実行には 4 クロック、ロード命令の実行には 5 クロック、ストア命令の実行には 4 クロックかかる。

以上を元に、いくつかの命令について、データパスをたどって動作を理解せよ。 この際、クロックごとに状態論理要素に書き込みを行なうので、 状態論理要素に着目して動作を追って行くと理解が容易である。


next up previous
: 問題 : マイクロプロセッサ演習 : 単一サイクルのデータパスの欠点
平成17年1月17日