マルチサイクルを用いた実現方式 マルチサイクル方式(1) 2つのデータパス実現方式 単一クロックサイクル: 1命令を1クロックサイクルで処理 マルチクロックサイクル: 1命令を複数クロックサイクルで処理 単一クロックサイクル方式は処理効率が悪い. CLK 処理時間 命令 命令 時間のかかる命令にクロック・サ イクル時間をあわさなければなら ない.→余り時間の発生 命令 命令 命令 クロック・サイクル 時間は一定. 九州大学工学部電気情報工学科 マルチサイクル方式(2) マルチクロックサイクル方式 1命令の実行を(同程度の処理量の)複数小作業に分割する 各小作業を1クロックサイクルで処理する 1命令は複数クロックサイクルで実行される クロック・サイクル時間を短くする(動作周波数を高くする) CLK 処理時間 命令 命令 命令 命令 命令 CLK 処理時間 九州大学工学部電気情報工学科 マルチサイクル処理例(1) + 4 RegWrite MemRead 25-21 20-16 rreg1 rreg2 P 命令メモリ inst C adrs a rd1 レジスタ ファイル wreg b rd2 A L U y adrs データメモリ wd wd 15-0 符号拡張 16 MemWrite 32 rd ALUctrl LW命令実行の場合 九州大学工学部電気情報工学科 マルチサイクル処理例(2) + 4 RegWrite MemRead 25-21 20-16 rreg1 rreg2 P 命令メモリ inst C adrs a rd1 レジスタ ファイル wreg b rd2 A L U y adrs データメモリ wd wd 15-0 符号拡張 16 MemWrite 32 rd ALUctrl LW命令実行の場合 九州大学工学部電気情報工学科 マルチサイクル処理例(3) + 4 RegWrite MemRead 25-21 20-16 rreg1 rreg2 P 命令メモリ inst C adrs a rd1 レジスタ ファイル wreg b rd2 A L U y adrs データメモリ wd wd 15-0 符号拡張 16 MemWrite 32 rd ALUctrl LW命令実行の場合 九州大学工学部電気情報工学科 マルチサイクル処理例(4) + 4 RegWrite MemRead 25-21 20-16 rreg1 rreg2 P 命令メモリ inst C adrs a rd1 レジスタ ファイル wreg b rd2 A L U y adrs データメモリ wd wd 15-0 符号拡張 16 MemWrite 32 rd ALUctrl LW命令実行の場合 九州大学工学部電気情報工学科 マルチサイクル処理例(5) + 4 RegWrite MemRead 25-21 20-16 rreg1 rreg2 P 命令メモリ inst C adrs a rd1 レジスタ ファイル wreg b rd2 A L U y adrs データメモリ wd wd 15-0 符号拡張 16 MemWrite 32 rd ALUctrl LW命令実行の場合 九州大学工学部電気情報工学科 マルチサイクル処理例(6) 1クロック・サイクルより長い時間 値を保持しなければならない信 号線には,レジスタを挿入する. + 4 RegWrite MemRead 25-21 20-16 rreg1 rreg2 P 命令メモリ inst C adrs a rd1 レジスタ ファイル wreg b rd2 A L U y adrs データメモリ wd wd 15-0 異なるクロック・サイ クルで動作するので, 共通化可能! 符号拡張 16 MemWrite 32 rd ALUctrl 九州大学工学部電気情報工学科 マルチサイクル・データパス(1) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 マルチサイクル・データパス(2) プログラムカウンタ(PC) 信号の意味 入出力 信号名 ビット幅 次のクロック・サイクルで更新するPCの 値 入力 32 記憶してる値(現在のPCの値) 出力 32 更新要求(1で要求) 入力 1 命令レジスタ(IR): メモリから読み出した命令を記憶する. 信号の意味 入出力 信号名 次のクロック・サイクルで記憶する命令 入力 32 記憶している命令(現在のIRの値) 出力 32 書き込み要求(1のとき要求) 入力 IRWrite ビット幅 1 九州大学工学部電気情報工学科 マルチサイクル・データパス(3) MDR(メモリデータレジスタ),A,B,ALUOut: いずれも通常のレ ジスタ(Dフリップフロップ) 信号の意味 入出力 信号名 ビット幅 次のクロック・サイクルで記憶するデータ 入力 32 現在記憶しているデータ 出力 32 九州大学工学部電気情報工学科 R形式命令の実行(命令取得とPC更新) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 R形式命令の実行(命令解読とレジスタ読出し) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 R形式命令の実行(演算の実行) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 R形式命令の実行(演算結果の書込み) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 lw命令の実行(命令取得とPC更新) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 lw命令の実行(命令解読とレジスタ読出し) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 lw命令の実行(アドレス計算) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 lw命令の実行(メモリへのアクセス) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 lw命令の実行(ロード結果の書込み) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 sw命令の実行(命令取得とPC更新) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 sw命令の実行(命令解読とレジスタ読出し) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 sw命令の実行(アドレス計算) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 sw命令の実行(メモリへのアクセス) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 beq命令の実行(命令取得とPC更新) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 beq命令の実行 (命令解読とレジスタ読出し,分岐先PCの計算) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 beq命令の実行(分岐条件判定とPC更新) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 j命令の実行(命令取得とPC更新) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 j命令の実行(命令の解読) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 j命令の実行(PC更新) PCWriteCond ALUOp 31-26 制御部 5-0 PCWrite 31-28 IRWrite P 0 IorD C MemRead メモリ adrs 1 wd rd 00 01 10 ALU 制御部 2bit 左シフト 25-0 MemWrite PCSource RegWrite 25-21 20-16 I R 0 M D R 15-111 1 0 rreg1 rreg2 rd1 レジスタ ファイル RegDst wreg rd2 A B wd MemToReg 15-0 符号拡張 16 32 0 ALUSrcA 1 ALUSrcB 00 01 4 10 11 ALUCtrl zero A L U A L U O u t 2bit 左シフト 九州大学工学部電気情報工学科 制御部の設計(1) R形式 第1サイクル lw sw j IorD=0; MemRead=1; IRWrite=1; ALUSrcA=0; ALUSrcB=01; ALUOp=00; PCSource=00; PCWrite=1 ALUSrcA=0 ALUSrcB=11 ALUOp=00 第2サイクル 第3サイクル ALUSrcA=1 ALUSrcB=00 ALUOp=10 ALUSrcA=1 ALUSrcB=10 ALUOp=00 ALUSrcA=1 ALUSrcB=10 ALUOp=00 第4サイクル RegDst=1 MemToReg=0 RegWrite=1 IorD=1 MemRead=1 IorD=1 MemWrite=1 第5サイクル beq ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCSource=01 PCWriteCond=1 PCSource=10 PCWrite=1 MemToReg=1 RegDst=0 RegWrite=1 九州大学工学部電気情報工学科 制御部の設計(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 やる必要はないが, やっても無害.やっ たほうが制御部が 簡潔になる. 九州大学工学部電気情報工学科 制御部の設計(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 ⑥ 第4サイクル 第5サイクル RegDst=1 MemToReg=0 RegWrite=1 ⑦ ① ② IorD=1 MemRead=1 ③ ALUSrcA=1 PCSource=10 ALUSrcB=00 PCWrite=1 ALUOp=01 ⑧ PCSource=01 ⑨ PCWriteCond=1 IorD=1 MemWrite=1 ⑤ MemToReg=1 RegDst=0 RegWrite=1 ④ 九州大学工学部電気情報工学科 制御部の設計(4) 状態遷移図 2 lw 3 4 sw lw/sw 0 1 5 R形式 6 7 beq j 8 9 九州大学工学部電気情報工学科 制御部の設計(5) 制御部 I R 31-26 組み合わせ 論理回路 状 態 レ ジ ス タ 各 制 御 信 号 次状態 九州大学工学部電気情報工学科 Created by Tsuneo Nakanishi, 2002-2004 (R1.00) Updated by Koji Inoue, 2005 (R1.01) Updated by Koji Inoue, 2007 (R1.02) 九州大学工学部電気情報工学科
© Copyright 2024 ExpyDoc