• 検索結果がありません。

ソフトウェア基礎技術研修

N/A
N/A
Protected

Academic year: 2021

シェア "ソフトウェア基礎技術研修"

Copied!
36
0
0

読み込み中.... (全文を見る)

全文

(1)

マルチサイクルを用いた実現方式

(教科書5.4節)

(2)

マルチサイクル方式(1)

2つのデータパス実現方式

z 単一クロックサイクル: 1命令を1クロックサイクルで処理

z マルチクロックサイクル: 1命令を複数クロックサイクルで処理

単一クロックサイクル方式は処理効率が悪い.

CLK

命令

命令

命令

命令

命令

処理時間

クロック・サイクル

時間は一定.

時間のかかる命令にクロック・

サイクル時間をあわさなければ

(3)

マルチサイクル方式(2)

マルチクロックサイクル方式

CLK

命令

命令

命令

命令

命令

処理時間

z 1命令の実行を(同程度の処理量の)複数小作業に分割する

z

各小作業を1クロックサイクルで処理する

z

1命令は複数クロックサイクルで実行される

z クロック・サイクル時間を短くする(動作周波数を高くする)

CLK

処理時間

(4)

マルチサイクル処理例(1)

データメモリ 符号拡張

+

4 MemRead MemWrite adrs レジスタ ファイル RegWrite rreg1 rreg2 wreg wd rd1 rd2 ALUctrl 命令メモリ 25-21 20-16 inst a 15-0 b adrs wd rd y P C A L U 32 16

(5)

マルチサイクル処理例(2)

データメモリ 符号拡張

+

4 MemRead MemWrite adrs レジスタ ファイル RegWrite rreg1 rreg2 wreg wd rd1 rd2 ALUctrl 命令メモリ 25-21 20-16 inst a 15-0 b adrs wd rd y P C A L U 32 16

LW命令実行の場合

(6)

マルチサイクル処理例(3)

データメモリ 符号拡張

+

4 MemRead MemWrite adrs レジスタ ファイル RegWrite rreg1 rreg2 wreg wd rd1 rd2 ALUctrl 命令メモリ 25-21 20-16 inst a 15-0 b adrs wd rd y P C A L U 32 16

(7)

マルチサイクル処理例(4)

データメモリ 符号拡張

+

4 MemRead MemWrite adrs レジスタ ファイル RegWrite rreg1 rreg2 wreg wd rd1 rd2 ALUctrl 命令メモリ 25-21 20-16 inst a 15-0 b adrs wd rd y P C A L U 32 16

LW命令実行の場合

(8)

マルチサイクル処理例(5)

データメモリ 符号拡張

+

4 MemRead MemWrite adrs レジスタ ファイル RegWrite rreg1 rreg2 wreg wd rd1 rd2 ALUctrl 命令メモリ 25-21 20-16 inst a 15-0 b adrs wd rd y P C A L U 32 16

(9)

マルチサイクル処理例(6)

データメモリ 符号拡張

+

4 MemRead MemWrite adrs レジスタ ファイル RegWrite rreg1 rreg2 wreg wd rd1 rd2 ALUctrl 命令メモリ 25-21 20-16 inst a 15-0 b adrs wd rd y P C A L U 32 16

1クロック・サイクルより長い時間

値を保持しなければならない信

号線には,レジスタを挿入する.

異なるクロック・サイ

クルで動作するので,

共通化可能!

(10)

マルチサイクル・データパス(1)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 P C 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource 制御部 ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 31-26 2bit 左シフト 2bit 左シフト

(11)

マルチサイクル・データパス(2)

信号の意味

入出力

信号名

ビット幅

次のクロック・サイクルで更新するPCの

入力

32

記憶してる値(現在のPCの値)

出力

32

更新要求(1で要求)

入力

1

プログラムカウンタ(PC)

信号の意味

入出力

信号名

ビット幅

次のクロック・サイクルで記憶する命令

入力

32

記憶している命令(現在のIRの値)

出力

32

書き込み要求(1のとき要求)

入力

IRWrite

1

命令レジスタ(IR): メモリから読み出した命令を記憶する.

(12)

マルチサイクル・データパス(3)

信号の意味

入出力

信号名

ビット幅

次のクロック・サイクルで記憶するデータ

入力

32

現在記憶しているデータ

出力

32

MDR(メモリデータレジスタ),A,B,ALUOut: いずれも通常のレ

ジスタ(Dフリップフロップ)

(13)

R形式命令の実行(命令取得とPC更新)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 P C 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 2bit 左シフト 2bit 左シフト

(14)

R形式命令の実行(命令解読とレジスタ読出し)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(15)

R形式命令の実行(演算の実行)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(16)

R形式命令の実行(演算結果の書込み)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(17)

lw命令の実行(命令取得とPC更新)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(18)

lw命令の実行(

命令解読とレジスタ読出し

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(19)

lw命令の実行(アドレス計算)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(20)

lw命令の実行(メモリへのアクセス)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(21)

lw命令の実行(ロード結果の書込み)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(22)

sw命令の実行(命令取得とPC更新)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(23)

sw命令の実行(

命令解読とレジスタ読出し

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(24)

sw命令の実行(アドレス計算)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(25)

sw命令の実行(メモリへのアクセス)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(26)

beq命令の実行(命令取得とPC更新)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(27)

beq命令の実行

(命令解読とレジスタ読出し,分岐先PCの計算)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 ALUSrcA PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(28)

beq命令の実行(分岐条件判定とPC更新)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(29)

j命令の実行(命令取得とPC更新)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(30)

j命令の実行(命令の解読)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 ALUSrcA PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(31)

j命令の実行(PC更新)

25-21 20-16 15-11 A L U レジスタ ファイル 符号拡張 メモリ adrs 15-0 zero rreg1 rreg2 wreg wd rd1 rd2 16 A B 4 A L U O u t I R M D R 32 25-0 RegWrite 0 1 RegDst 1 0 MemToReg 00 01 10 11 0 1 00 01 10 PCSource ALU 制御部 ALUCtrl ALUSrcA ALUSrcB ALUOp IRWrite PCWrite 0 1 IorD wd rd MemWrite MemRead 5-0 PCWriteCond 31-28 制御部 31-26 P C 2bit 左シフト 2bit 左シフト

(32)

制御部の設計(1)

R形式

lw

sw

beq

j

第1サイクル

IorD=0; MemRead=1; IRWrite=1; ALUSrcA=0; ALUSrcB=01; ALUOp=00; PCSource=00; PCWrite=1

第2サイクル

ALUSrcA=0 ALUSrcB=11 ALUOp=00

第3サイクル

ALUSrcA=1 ALUSrcB=00 ALUOp=10 ALUSrcA=1 ALUSrcB=10 ALUOp=00 ALUSrcA=1 ALUSrcB=10 ALUOp=00 ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCSource=01 PCWriteCond=1 PCSource=10 PCWrite=1

第4サイクル

RegDst=1 MemToReg=0 RegWrite=1 IorD=1 MemRead=1 IorD=1 MemWrite=1

第5サイクル

MemToReg=1 RegDst=0 RegWrite=1

(33)

制御部の設計(2)

R形式

lw

sw

beq

j

第1サイクル

IorD=0; MemRead=1; IRWrite=1; ALUSrcA=0; ALUSrcB=01; ALUOp=00; PCSource=00; PCWrite=1

第2サイクル

ALUSrcA=0 ALUSrcB=11 ALUOp=00 ALUSrcA=0 ALUSrcB=11 ALUOp=00 ALUSrcA=0 ALUSrcB=11 ALUOp=00 ALUSrcA=0 ALUSrcB=11 ALUOp=00 ALUSrcA=0 ALUSrcB=11 ALUOp=00

第3サイクル

ALUSrcA=1 ALUSrcB=00 ALUOp=10 ALUSrcA=1 ALUSrcB=10 ALUOp=00 ALUSrcA=1 ALUSrcB=10 ALUOp=00 ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCSource=01 PCWriteCond=1 PCSource=10 PCWrite=1

第4サイクル

RegDst=1 MemToReg=0 RegWrite=1 IorD=1 MemRead=1 IorD=1 MemWrite=1

第5サイクル

MemToReg=1 RegDst=0 RegWrite=1

やる必要はないが,

やっても無害.やっ

たほうが制御部が

簡潔になる.

共通

(34)

制御部の設計(3)

R形式

lw

sw

beq

j

第1サイクル

IorD=0; MemRead=1; IRWrite=1; ALUSrcA=0; ALUSrcB=01; ALUOp=00; PCSource=00; PCWrite=1

第2サイクル

ALUSrcA=0; ALUSrcB=11; ALUOp=00

第3サイクル

ALUSrcA=1 ALUSrcB=00 ALUOp=10 ALUSrcA=1 ALUSrcB=10 ALUOp=00 ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCSource=01 PCWriteCond=1 PCSource=10 PCWrite=1

第4サイクル

RegDst=1 MemToReg=0 RegWrite=1 IorD=1 MemRead=1 IorD=1 MemWrite=1

第5サイクル

MemToReg=1 RegDst=0 RegWrite=1

(35)

制御部の設計(4)

状態遷移図

0

1

2

3

4

5

7

6

8

9

lw/sw

sw

lw

R形式

beq

j

(36)

制御部の設計(5)

制御部

状態レ

組み合わせ

論理回路

次状態

31-26

各制御信号

参照

関連したドキュメント

シートの入力方法について シート内の【入力例】に基づいて以下の項目について、入力してください。 ・住宅の名称 ・住宅の所在地

機器名称 相 銘板容量(kW) 入力換算 入力容量(kW) 台数 現在の契約電力.

被保険者証等の記号及び番号を記載すること。 なお、記号と番号の間にスペース「・」又は「-」を挿入すること。

サンプル 入力列 A、B、C、D のいずれかに指定した値「東京」が含まれている場合、「含む判定」フラグに True を

パキロビッドパックを処方入力の上、 F8特殊指示 →「(治)」 の列に 「1:する」 を入力して F9更新 を押下してください。.. 備考欄に「治」と登録されます。

(2)

・電源投入直後の MPIO は出力状態に設定されているため全ての S/PDIF 信号を入力する前に MPSEL レジスタで MPIO を入力状態に設定する必要がある。MPSEL

理由:ボイラー MCR範囲内の 定格出力超過出 力は技術評価に て問題なしと確 認 済 み で あ る が、複数の火力