データパス２

# データパスのハードウエア

前回、下記のような図を用いてプロセッサの動作を説明した。ここでは、もっと具体的なプロセッサ（minimips　プロセッサ）のブロック図を説明する。
実際には、この程度のブロック図を作れれば、VHDLのようなハードウエア記述言語でプロセッサをすぐに記述できる。

図１：分岐無しの場合の動作説明用の図

図２： minimipsプロセッサのブロック図

## 部品の説明

部品名　 　 　説明
IROM
（命令ROM） 組合せ回路 図１では、ひとつのメモリ（メインメモリ）で、ある部分に命令（コード）を置き、他の部分にデータを置いたが、この実現例では命令用のメモリ（IROM）とデータ用メモリ（DRAM）の２つに分けている。
命令は自らのプログラム自身で内容を変更（セルフ･モディファイ･コード）しない方式が最近では普通であるので、読み出し専用メモリ（Read
Only Memory: ROM）で実現されているとする。
Addで指定された部分に命令がDoutに読み出される。
DRAM
（データRAM） 順序回路 DRAMはデータ部を記憶するメモリであり、読み出し及び書き込みの両方の機能が必要であるので、ランダム･アクセス･メモリ（Random
Access Memory:
RAM）で実現されている。
図で明記していなが、三角マークはCLOCK入力を示しており、CLOCKの立ち上がりエッジで、書き込み可能信号WE=1であるとき、Addで指定された場所にDinのデータが書き込まれる。
RFILE
（レジスタファイル） 順序回路 32ビット(ワード） X
３２のメモリです。このメモリに対して、同時に２つの場所のデータ読み出しと、ひとつの場所のデータ書き込みが可能です。
２つの場所の読み出しアドレスはそれぞれ、ra1,
ra2であり、読み出されたデータはdo1,
do2へ出力されます。
書き込みはCLOCKの立ち上がりエッジにて、waで指定されたアドレスにdinのデータが書き込まれます。
PC
（プログラムカウンタ） 順序回路 実行中の命令のアドレスを指定する32ビットレジスタで、中味は32個のD-FFです。
CLOCKの立ち上がりエッジにて、左からの入力を取り込み右へ出力します。
ALU
（算術論理計算ユニット） 組合せ回路 ２つの32ビットの数をsr1,
sr2で受け取り、CONTROLからの制御（図示なし）により、演算を行い結果をrstへ出力します。BEQ命令では引き算を行い、その結果が’０’であることを知るために、結果が’０’の時はzero出力（1ビット）が’１’となる。
＋
（加算器） 組合せ回路 加算器です。
SE
（サインエクステンド） 組合せ回路 16ビットの数（正数も負数も）を32ビットの数に変換します。
M
（マルチプレクサ） 組合せ回路 複数の入力から一つを選びます。制御信号（図示なし）はCONTROLからやってきます。
＆
（ビットの連接） 組合せ回路 入力の信号を束ねるだけで、実際にはゲートはなく、配線だけかもしれません。

図３：minimipsプロセッサの内部波形

図４：分岐ありの場合の動作説明用の図

#### 宿題５　：学籍番号､名前、日付を書いて提出のこと。

１）　図１に示すメモリ内の5命令を実行した時のminimipsプロセッサの内部波形を

図３の形式で示せ！（５サイクル分）

２）　図４に示すメモリ内の5命令を実行した時のminimipsプロセッサの内部波形を

図３の形式で示せ！（１３サイクル分）

３）minimipsプロセッサにCPIはいくらか？

４）図２に示すようにminimipsプロセッサのメモリを２つの同時に使用可能な、IROMとDRAM

で構成しているが、これをひとつのメモリで構成すると、CPIはどうなるか？