Upload
buikiet
View
267
Download
0
Embed Size (px)
Citation preview
Kagamimochi: 三段パイプラインプロセッサ
Group No: 01
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
1Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 83.5 MHz, クロック周期 11.976 = 1000/83.5 nsec• プログラムの実行サイクル数: 270388 サイクル
• プロセッサ性能: 11.976 x 270388 / 1000,000,000 = 0.003238 sec
2
m_regfilem_regs
(32bit x 32)
+
w_rs
w_rtw_rrs
w_rrt
w_rd
w_rslt
+
r_pc
4
m_amemorym_imem
(32bit x 4096)r_pc[13:2]
32
32
12
32
3232
5
5
5
IF IDEX
MEM
w_imm16
SignExtImm
Mux
w_imm32
Pipeline register
Mux
w_rd2m_amemory
m_dmem(32bit x 4096)
WB
Mux
32
32
12
w_rslt2
w_ldd32
+
Mux
Shiftleft 2
w_npc
32
32
32
!=w_taken
1
w_pc4
w_tpc
設計したプロセッサのブロック図
Processor Design Contest Presentation Slide (2/4)
IfId_pc4
w_rslt2IfId
w_op
IdEx
IfId_pc
w_rd2
IdEx_pc
IdEx_rrs
IdEx_rrt2
IdEx_rrt
w_we
IfId
_ir
w_w
IdEx_opIdEx_rd2IdEx_wIdEx_we
Mux
w_frrs
Mux
w_frrt
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
パイプライン化、フォワーディングによる性能の向上
• 3ステージのパイプライン [IF] , [ID] , [EX,MEM,WB]
• 分岐命令での比較用のフォワーディング
• EX,MEM,WBを統合したため、addでのフォワーディング不要
3Processor Design Contest Presentation Slide (3/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
実装できなかった反省点、考察
• 計算結果が0と表示されてしまった。(サイクル数は正しく表示)
原因箇所:パイプライン実装時にLW,SW命令が正しく動作しなかった。
(フォワーディング,add,addi,bneは正しい動作確認済み)
4Processor Design Contest Presentation Slide (4/4)
2044:Vivadoの設定をいじったプロセッサ
Group No: 02
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
5Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
Mux m_memory
m_dmem(32bit x 4096)
設計したプロセッサと性能
• 動作周波数: 92.50 (210) MHz, クロック周期 10.81 = 1000/92.50 nsec• プログラムの実行サイクル数: サイクル
• プロセッサ性能: 10.81 x 270390 / 1000,000,000 = 2,922,915.90 sec
6
+w_rt
w_rd
+
r_pc
4
m_amemorym_imem
(32bit x 4096)
w_ir
r_pc[13:2]
32
32
32
12
32
325
5
5
IF ID EX MEM
w_imm16
SignExtImm w_imm32
Mux
WB
3232
32
+Mux Shiftleft 2
w_npc
3232
32!=/ ==w_pc4
w_tpc
設計したプロセッサのブロック図
Mux
Mux
Mux
m_regfilem_regs
(32bit x 32)
Mux
Mux
Mux
Mux
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
工夫した点
• Vivadoの設定を変えた• SynthesisとImplementationの設定を最適化
• Vivado公式ドキュメントより
• ステップ数を変更しようと試みた
• 時間がなかったので実装はできなかった
7Processor Design Contest Presentation Slide (3/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
考察
• 使わないデータパスが存在したため、遅くなってしまった
• 実機では90MHzでしか動かないはずが、実際に200MHz以上で動くのは実際に使わないデータパスが存在するからだと考えられる
• 実行を早くしすぎたり、物理的配置の最適をしすぎると、命令のタイミングが合わないため、結果が出ないと考えられる
8Processor Design Contest Presentation Slide (4/4)
MIPSS: 計算分散とモジュール分解の高速化を用いたパイプラインプロセッサ
Group No: 03
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
9Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 161 MHz, クロック周期 Y = 1000/161 nsec (y = 1000/260)• プログラムの実行サイクス数: 270390 サイクル (270390 サイクル)• プロセッサ性能: 6.21 x 270390/ 1000,000,000 = 0.00168 sec
(3.85 × 270390/ 1000,000,000 = 0.00104 sec)
10
m_regfilem_regs
(32bit x 32)
+
w_rs
w_rt
w_rrs
w_rrt
w_rd
w_r
slt
+
r_pc
4
m_imemorym_imem
(32bit x 4096)
IfId
_ir
r_pc[13:2]
32
32
32
12
32
3232
5
5
5
IF IDEX MEM
w_imm
16
SignExtImm
Mux
w_imm32
w_r
rt2Mux
w_rd2m_dmemory
m_dmem(32bit x 4096)
WB
Mux32
32
12
MeWb_rslt
MeW
b_ld
d
32
+Mux
Shiftleft 2
w_npc
3232
32==
w_taken
1w_pc4
w_tpc
設計したプロセッサのブロック図
Processor Design Contest Presentation Slide (2/4)
Mux
Mux
w_rslt2
IfId_pcw_opw_rd2
IdEx_pcIdEx_opIdEx_rd2IdEx_wIdEx_weIdEx_rsIdEx_rt
ExMe_pcExMe_opExMe_rd2ExMe_wExMe_we
MeWb_pcMeWb_opMeWb_rd2MeWb_w
WbId_rd2
IdEx_rrt ExMe_rrt
ExMe_rslt
w_r
slt2
WbId_rd2
w_rslt2
ExMe_rslt
w_r
rs2
w_r
rt3MeWb_rd2
5
w_ww_wew_rsw_rt
グレーは制約を満たさない場合の限界
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
パイプラインによる動作周波数の向上(工夫した点)
Processor Design Contest Presentation Slide (3/4) 11
WbId_rd2
• ハザード対処 -3つのフォワーディング
• 赤 Exの1命令前
• 青 Exの2命令前,LW/SW
• 緑 Exの3命令前
• レジスタに書き込まれる前に読みたいとき
• 赤→青 (→緑) の順に条件判定
• 緑のためにWBの後にレジスタを配置
• 緑は,rtがMeWb_rd2と等しいときはIDに
• フォワーディングによるMuxの計算をIDとExに分散
m_regfilem_regs
(32bit x 32)
+
w_rrs
w_rrt
w_r
slt
32
3232
EX MEM
Mux
w_imm32
w_r
rt2
m_dmemorym_dmem
(32bit x 4096)
WB
Mux32
32
12
MeWb_rslt
MeW
b_ld
d
32
Mux
Mux
w_rslt2
WbId_rd2
IdEx_rrt ExMe_rrt
ExMe_rslt
w_r
slt2
w_rslt2
ExMe_rslt
w_r
rs2
w_r
rt3
ID
5
MeWb_rd2
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
• メモリを2種類に分解
• 読み込み専用と書き込み専用
• m_imemory –読み込み専用
• 命令列を格納
• m_dmemory –書き込み専用
• 計算結果を格納
• プログラムをハードウェア資源で援助
• その他
• 動作周波数を二分探索
モジュール分解による動作周波数の向上(工夫した点2)
Processor Design Contest Presentation Slide (4/4)
m_imemorym_imem
(32bit x 4096)
IfId_ir
r_pc[13:2] 32
12
12
m_dmemorym_dmem
(32bit x 4096) 32
12MeWb_ldd
ExMe_rrt
5
ExMe_rslt
MeWb_rd2
m_imemory
m_dmemory
04: シングルサイクルプロセッサ
Group No: 04
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
13Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 60 MHz, クロック周期 16.6 = 1000/60 nsec• プログラムの実行サイクル数: 215,814 サイクル
• プロセッサ性能: 16.6 x 215,814 / 1000,000,000 = 0.00358 sec
14
m_regfilem_regs
(32bit x 32)
+
w_rs
w_rtw_rrs
w_rrt
w_rd
w_rslt
+
r_pc
4
m_amemorym_imem
(32bit x 4096)
w_ir
r_pc[13:2]
32
32
32
12
32
3232
5
5
5
IF ID EX MEM
w_imm16
SignExtImm
Mux
w_imm32
w_rrt2
Mux
w_rd2m_amemory
m_dmem(32bit x 4096)
WB
Mux
32
32
12
w_rslt2
w_ldd32
+Mux Shiftleft 2
w_npc
3232
32
== w_taken
1w_pc4
w_tpc
設計したプロセッサのブロック図
Processor Design Contest Presentation Slide (2/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
ステージ分割による動作周波数の向上(工夫したい点)
15Processor Design Contest Presentation Slide (3/4)
最も長い時間を要するステージがプロセッサの動作周波数を決める. ⇒さらに分割することによる動作周波数の向上.
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
条件分岐の予想による実行サイクル数の削減(工夫したい点2)
16Processor Design Contest Presentation Slide (4/4)
繰り返し処理の条件分岐では, 分岐するかしないかの比率は偏りが大きい. ⇒同じ条件分岐に出会ったらループの可能性を考え,
前回と同じ結果を予想することによる実行サイクル数の削減.
シングルプロセッサMk-Ⅱ: addiの同時実行による高速化を用いた少し早いシ
ングルプロセッサ
Group No: 05
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
17Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 50 MHz, クロック周期 20 = 1000/50 nsec• プログラムの実行サイクル数: 184368 サイクル
• プロセッサ性能: 20 x 184368 / 1000,000,000 = 0.00369 sec
18
m_regfilem_regs
(32bit x 32)
+
w_rs
w_rtw_rrs
w_rrt
w_rd
w_rslt
+
r_pc
4
m_amemorym_imem
(32bit x 4096)
w_ir
r_pc[13:2]
32
32
32
12
32
32
32
5
5
5
IFID
EX MEM
w_imm16
SignExtImm
Mux
w_imm32
w_rrt2
Mux
w_rd2m_amemory
m_dmem(32bit x 4096)
WB
Mux
32
32
12
w_rslt2
w_ldd32
+Mux Shiftleft 2w_npc
3232
32
== w_taken
1w_pc4
w_tpc
Processor Design Contest Presentation Slide (2/4)
+
4Mux
SignExtImm
+
Mux
w_imm32next
16
w_imm32next
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
addi同時実行による実行サイクル数の削減(工夫した点)
• X = X + aX = X + a
• まとめた場合、プログラムカウンタ1つ進めて同じ計算を行わないようにする
• 結果 : サイクル数の大幅削減(245814 → 184368)動作周波数の微減(50MHz時のWNS 0.644ns→0.241ns)実行時間の短縮(0.00492sec → 0.00369sec)
19Processor Design Contest Presentation Slide (3/4)
X = X + a + aまとめて計算
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
さらなる改善の見込み
• パイプライン構造と組み合わせる
プログラミング力が足りなかった
• addiだけでなくあらゆる命令でも同時に実行できるようにする
• addiを4つまとめる
サイクル数はさらに減少した(147501サイクル)しかし、45MHzでも制約を満たさず(40MHzなら満たす)総合的に見るとあまり変わらない(0.00368sec)
20Processor Design Contest Presentation Slide (4/4)
助さん: A pipelined processor with scheduling
Group No: 06
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
21Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 195 MHz, クロック周期 5.1 nsec• プログラムの実行サイクル数: 245818 サイクル
• プロセッサ性能: 1.25 msec
22
m_regfilem_regs
(32bit x 32)
+
w_rs
w_rt
w_rrs
w_rrt
w_rd
w_rslt+
r_pc
4
m_amemorym_imem
(32bit x 4096)r_pc[13:2]
32
32
12
32
32 32
5
5
5
IF ID EX MEM
w_imm
16
SignExtImm
Mux
w_imm32
w_r
rt2
Mux
w_rd2m_amemorym_dmem
(32bit x 4096)
WB
Mux32
w_rslt2
w_ldd
+Mux Shiftleft 2
w_npc
3232
32
== || !=
w_taken
w_pc4
w_tpc
設計したプロセッサのブロック図
Processor Design Contest Presentation Slide (2/4)
IfId
_ir
IfId_tpc2 32
32
+
20 w_pc20[13:2]
12
IfId_pc20
Mux8
-12 +
16
32
IfId_pc24
32
IdEx_rrt
32
32
IdEx_imm32
Mux
MuxIdEx_rrs
32
Mux
32
w_rrs2
32
32 w_rrt3
32 w_rrt4
32
ExMe_rslt
ExMe_rrt3
32
ExMe_rrs2
32
1
ExMe_rrt
32
ExMe_rslt
32
MeWb_rd2
12
5
MeId_rslt
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
助さんの特徴
パイプラインの実装
命令スケジューリングの実装
分岐命令は分岐先が決まるまでストールが発生
分岐命令を先に実行することでストールを削減
23Processor Design Contest Presentation Slide (3/4)
スケジューリング前 スケジューリング後
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
その他工夫点
フォワーディングの実装
ストールが発生することなくデータハザードを回避
クリティカルパスの分割
レジスタから値を読みだすIDステージがクリティカルパス
IDステージの処理を他のステージに移動
ストラテジーの変更
ストラテジーとは配置配線の方針のこと
速度を優先したり、消費電力を抑えたりできる
今回は速度を優先してPerformance_HighUtilSLRsを採用
Worst Negative Slackが-0.010nsから0.016nsになった
5MHzの高速化に成功
24Processor Design Contest Presentation Slide (4/4)
XX: パイプラインプロセッサ
Group No: 07
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
25Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH 26Processor Design Contest Presentation Slide (2/4)
設計したプロセッサと性能• 動作周波数: 265 MHz, クロック周期 1000/265 = 3.77 nsec• プログラムの実行サイクル数: 270390 サイクル
• プロセッサ性能: 3.77 x 270390 / 1000,000,000 = 0.00102 sec
Mux
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
解説
27Processor Design Contest Presentation Slide (3/4)
1つ前、2つ前、3つ前のアドレスを見て比べる。
1つ前:IdEx_rsとExMe_rd2
2つ前:IdEx_rsとMeWb_rd23つ前: w_rsとMeWb_rd2
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
• パイプラインプロセッサを実装することにより動作周波数をできるだけ上げた。
• ストールを挟まず、フォワーディングを実装したので、サイクル数が比較的小さくなった。
28Processor Design Contest Presentation Slide (4/4)
TUBAME プロセッサー
Group No: 08
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
29Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数:160 MHz, クロック周期 6.25= 1000/160 nsec• プログラムの実行サイクル数: 270390サイクル(10進数)• プロセッサ性能: 6.25 x 270390 / 1000,000,000 =
30
m_regfilem_regs
(32bit x 32)
+
w_rs
w_rtw_rrs
w_rrt
w_rd
+
r_pc
4
m_memorym_imem
(32bit x 4096)
w_ir
r_pc[13:2]
32
32
32
12
32
325
5
5
IF ID EX MEM
w_imm16
SignExtImm
Mux
w_imm32
w_rrt2
Mux
w_rd2m_memorym_dmem
(32bit x 4096)
WB
Mux
32
32
w_rslt2
w_ldd32
+Mux Shiftleft 2
w_npc
3232
32==
1w_pc4
w_tpc
設計したプロセッサのブロック図
Processor Design Contest Presentation Slide (2/4)
W_rslt
Mux
Mux
Mux
Mux
0.0016 secsec
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
工夫した点
31Processor Design Contest Presentation Slide (3/4)
IDステージにマルチプレクサを導入
m_regfilem_regs
(32bit x 32)
+
w_rs
w_rtw_rrs
w_rrt
w_rd
w_ir
32
5
5
5
w_imm16
SignExtImm
Mux
w_imm32
Mux
w_rd2
_memorym_dmem
(32bit x 4096) 3232
+ 32
32
==
1
w_tpc
W_rslt2
Mux
Mux
W_rslt
ID EX
Mux
Mux
Shiftleft 2
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
工夫した(工夫しようとした)点
IDステージを二つに分割
32Processor Design Contest Presentation Slide (4/4)
+
r_pc
4
m_memorym_imem
(32bit x 4096)
32
12
IF
Mux
w_npc
w_pc4
設計した(したかった)プロセッサのブロック図
m_regfilem_regs
(32bit x 32)
w_rt
w_rrs
w_rrt
w_rd
5
5
5
ID EX
w_imm16
SignExtImm w_imm32
Mux
+
Shiftleft 2
32
=!=
w_tpc
Mux
Mux
Proc09: 分岐の高速化を用いたパイプラインプロセッサ
Group No: 09
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
33Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 290 MHz, クロック周期 3.45 nsec• プログラムの実行サイクル数: 270404 サイクル
• プロセッサ性能: 0.000932428 sec
34
設計したプロセッサのブロック図
Processor Design Contest Presentation Slide (2/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
パイプライン、分岐予測による実行サイクル数の削減
• パイプラインの実装• フォワーディング
• MEM(優先), WB → EX• WB → ID (レジスタ内)
• 分岐命令の処理をEXで行う
• ID時点ではレジスタの値は不定
• 分岐予測
• ストールによる分岐実装
• BNE1つにつき3命令消費
• コード内のBNEの条件はほぼ満たされる
• 全て条件を満たすものとして予測
• (2 + 4095 * 6)/(3 + 4096 * 6)• IDでBNEを検知し, PCを書き換え
• コストは1程度(NOP)
35Processor Design Contest Presentation Slide (4/4)
→ ストールほぼなしでの実行が可能
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
ボトルネックの解消による動作周波数の向上
• 各パイプの処理時間
• ID• レジスタ内にフォワーディング機能
• 遅延なしで読み込み可能
• 各ステージの遅延はレジスタへの代入のみ
• 動作周波数の二分探索
• 人力による地道な探索
• 100MHz○ → 500MHz× → 300MHz× → 200MHz○→ 250MHz○ → 275MHz○ → 280, 285, 290MHz
36Processor Design Contest Presentation Slide (3/4)
パイプライン処理による動作周波数の向上
● フォワーディングによりデータハザードを解消
○ 参照レジスタのアドレスと、各Stageで得られ
る結果の格納先アドレスを比較
● ID Stageで一括してフォワーディング
○ 機能のモジュール化
○ 煩雑の解消
stallによるデータハザードの回避
● stallを使うアプローチで設計を開始した
● 当初の3サイクルの遅延をstallのみでの解消を試みた結果、必要サイクル数がかな
り増えた
● stall以外にExとMemを統合することによって1サイクルの遅延を解消することが
できた
● さらにフォワーディングによって1サイクルの遅延を解消し、3サイクルの遅延を
解消することができた(結局フォワーディングに頼った)
● 動作周波数: 100MHz● クロック周期: 10nsec● 実行サイクル数: 60045サイクル
● プロセッサ性能: 0.0006sec
パイプラインプロセッサ: パイプラインによる高速化を用いたプロセッサ
Group No: 11
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
41Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 120 MHz, クロック周期 Y = 1000/120 nsec• プログラムの実行サイクル数: 270390 サイクル
• プロセッサ性能: 8.33 x 270390 / 1000,000,000 = 0.00225325 sec
42
設計したプロセッサのブロック図
Processor Design Contest Presentation Slide (2/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
パイプラインによる動作周波数の向上
43Processor Design Contest Presentation Slide (3/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
フォワーディング
フォワーディングが必要となる場合
• add,addiによるレジスタの変化時
• lwによるレジスタの変化時
add,addiによるレジスタ変化に対するフォワーディング
add,addi命令の 1個次の命令にはwbからexにフォワーディング
2個次の命令にはmemからidにフォワーディング
3個次の命令にはwbからidにフォワーディング
lwによるレジスタ変化に対するフォワーディング
lw命令の 2個次の命令にはwbからexにフォワーディング
wbからidにフォワーディング
44Processor Design Contest Presentation Slide (4/4)
processor12: パイプラインを用いたプロセッサ
Group No: 12
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
45Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH 46
m_regfilem_regs
(32bit x 32)
+
w_rs
w_rt
w_rrs
w_rrt
w_rd
+
r_pc
4
m_amemorym_imem
(32bit x 4096)r_pc[13:2]
32
32
12
32
325
5
5
ID
w_imm16
SignExtImm
Mux
w_imm32
Mux
w_rd2m_amemory
m_dmem(32bit x 4096)
Mux
32
32
w_rslt2
MeWb_ldd
+
Mux
Shiftleft 232 3232
w_pc4
w_tpc
Processor Design Contest Presentation Slide (2/4)
設計したプロセッサと性能
• 動作周波数: 150 MHz, クロック周期 1000/150 nsec• プログラムの実行サイクル数: 270390 サイクル
• プロセッサ性能: (1000/150) x 270390 / 1000,000,000 = 0.0018026 sec
IF
EX
MEM WBw_npc
設計したプロセッサのブロック図
IfId
IfId_pc4
IfId_ir
!=W_taken
1
IfId_pcW_opW_rd2W_wW_weW_rsW_rt
IdEx
IdEx_pcIdEx_opIdEx_rd2IdEx_wIdEx_we
MuxMux
W_rlt2
ExMe_pcExMe_opExMe_rd2ExMe_wExMe_we
MeWb_pcMeWb_opMeWb_w
ExMe_rslt
5
MeWb_rslt
MeWb_rd2
12
IdEx_rrt32
W_rs
lt
ExMe_rrt
ExMe MeWb
フォワーディング・ユニット
IdEx_rs
IdEx_rt
forwardA
forwardB
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
パイプラインの実装
• 処理を平行して行うことで時間短縮を狙う。
• 命令フェッチ、命令デコード、実行、メモリアクセス、書き込みの5ステージに分割して並行して行う。
• 今回は足し上げるのが目的であり、足し算を行う際にひとつ前の結果が必要となるので、データハザードが発生する。
47Processor Design Contest Presentation Slide (3/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
データハザードの対策
• フォワーディングを用いてこれを回避する。
• フォワーディングの条件は、Aに対し、
(ExMe_rd2 != 0) && (ExMe_op == ‘ADDI || ExMe_op == ‘ADD) &&(IdEx_op == ‘ADDI) && (IdEx_rs != 0) && (ExMe_rd2 == IdEx_rs)が真であるとき、ALUの第一オペランドがひとつ前のALUの結果から先送りされてくる。
48Processor Design Contest Presentation Slide (4/4)
遅延処理:命令先読みの高速化を用いたパイプラインプロセッサ
Group No: 13
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
49Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
imem
設計したプロセッサと性能
• 動作周波数: 149.490 MHz, クロック周期 6.68941 = 1000/149.49 nsec• プログラムの実行サイクル数: 270391 サイクル
• プロセッサ性能: 6.6894 x 270391 / 1000,000,000 = 1808.75μ sec
50
+
w_rs
w_rt
rrs
rrt
w_rd
w_rslt
+
r_pc
4
ir
IF
ID EX MEM
w_imm
SignExt
w_rd2dmem
WB
Mux
Wb_rslt2ldd
+
Mux
Shift
!=
w_taken
w_pc4
設計したプロセッサのブロック図
Processor Design Contest Presentation Slide (2/4)
regfile
Mux
Mux
Mux
+
4
Mux
r_taken
FW
tirir2
w_npc
w_tpc
tpc4
w_tpc
tpc4
rrt
rrs
w_rrtfix
w_rrsfix
rd2 rd2 rd2
rslt rslt
pc4
Wb_rslt2MeWb_rsltExMe_rsltMeWb_rsltWb_rslt2
w_taken
w_rslt2w_rslt
w_imm32
rrt2
rrs
imm32
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
• データハザードと制御ハザードに対応。フォワーディング処理はFWステージを新たに作り分離。
• takenの計算を後回しにして分岐の高速化
• regfileを2入力同時書き込み仕様に。遅延書き込みによるWrite backの高速化
w_rslt2 が必要
MeWb_rslt, MeWb_ldd が必要
パイプライン化による動作周波数の向上(工夫した点)
51Processor Design Contest Presentation Slide (3/4)
MeWb_rslt
MeWb_ldd
w_rslt2
書き込み
dmemアクセス
OK
OK
Mux OK
Write back
MeWb_rslt, MeWb_ldd が必要
MeWb_rslt
MeWb_ldd
w_rslt2
Wb_rslt2
書き込み1
書き込み2
dmemアクセス
OK
OK
Mux OK
Write back1
Write back2
OK 更新
とりあえずrsltを書き込み、1サイクル後にrslt2へ修正。(修正が必要なのはlw命令の場合)
w_rrs, w_rrt が必要
w_rrsw_rrt
w_taken
regfileアクセス OK
!= OK
w_rrsw_rrt
IdFw_rrsIdFw_rrt
w_taken
regfileアクセス OK
!= OK
OK 更新
※ただし遅延分岐が2サイクル遅れる。時間
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
命令先読みによる実行サイクル数の削減(工夫した点2)
• 前述の工夫により、w_takenが届くのが2サイクル遅れてしまう。→imemを2命令同時読み込み仕様に。
IFステージで 「今の命令 / 1つ前の命令の分岐先」を同時にフェッチし、IDステージでどちらをデコードするか決める。w_takenが届いたら、r_pcを分岐先の次へセットする。
→本来の命令列が再現される。
52Processor Design Contest Presentation Slide (4/4)
(下の例)…
bne L1nopnop
…
L1: addaddi
…
IF bne nop nop add addi
ID bne nop nop addFW bne nop nopEX bne nop
IF bne/? nop/? nop/add addi/?
ID bne nop addFW bne nopEX bne
時間
命令の流れ
bneの分岐先↑
taken! taken!
nopを強制的に1つ増やすことでも対応できるが…
14: パイプラインの高速化を用いたプロセッサ
Group No: 14
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
53Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
パイプラインによる動作周波数の向上(工夫した点)
• 動作周波数: 268 MHz, クロック周期 Y = 3731 nsec• プログラムの実行サイクス数: 0x42036 サイクル
• プロセッサ性能: Y x Z / 1000,000,000 = 1.008825090 sec
54Processor Design Contest Presentation Slide (3/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
パイプラインの実装
• 資料通りに実装した
• フォワーディングした
• 3つ前までの命令で変更されたレジスタのアドレスを保持し、それが使用される場合についてそれぞれ条件分岐をした
• クロックの立ち上がり時にレジスタが更新されるので、1つ前の命令の結果を保存してフォワーディングに利用した
55Processor Design Contest Presentation Slide (4/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
• 取り組むのが遅かった
• ツラかった
• コミュニケーション不足
• チーム開発はツラい
反省点
いちご: 最適化の先の究極プロセッサ
Group No: 15
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
57Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 150 MHz, クロック周期 6.67 = 1000/150 nsec• プログラムの実行サイクル数: 270390 サイクル
• プロセッサ性能: 6.67 x 270390 / 1000,000,000 = 0.0018 sec
58
m_regs
+w_rs,w_rt
w_rrs
w_rrt
w_rslt
+
r_pc
4
m_imemIfId_ir
IF ID EX MEM
w_imm16符号拡張
w_imm32
m_dmem
WB
Mux
w_rslt2
MeWb_ldd
+Mux
Shiftleft 2
w_npc
==
w_taken
w_pc4
設計したプロセッサのブロック図
Processor Design Contest Presentation Slide (2/4)
w_taken
IfId_pc4
w_clkw_clk
w_clk
Mux
Mux
w_op
Mux
Mux
Mux
Mux
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
XXによる動作周波数の向上(工夫した点)
• いっぱい最適化した
• EXステージでのフォワーディングの条件をIDステージで予め計算することでEXステージの律速を取り除いた
• IFステージでも律速するのでワイヤーを16bitにしたら速くなった
• EXステージは32bitの加算で時間がかかる。そのため、2,3段のフォワーディングはIDステージで受けるようにした(1段のフォワーディングはEXステージで受けないといけない)
59Processor Design Contest Presentation Slide (3/4)
IF ID EX MEM WB
忙しいよ~
がんばる~
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
XXによる実行サイクル数の削減(工夫した点2)
• 命令アドレスは12bitだから32bitの計算は無駄なので、16bit加算にした(12bit加算はなぜか遅くなった)
• オペコードの条件はAND, OR形式になるよう最適化した。
• その他、要らない配線を消したり、条件を最適化してマルチプレクサの段数を減らしたりした
60Processor Design Contest Presentation Slide (4/4)
proc16: 4サイクルによる簡略化
Group No: 16
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
61Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 217.5 MHz, クロック周期 Y = 4.598nsec• プログラムの実行サイクル数: 270389 サイクル
• プロセッサ性能: 4.598 x 270389 / 1000,000,000 = 0.001243 sec
62
m_regfilem_regs
(32bit x 32)
w_rs
w_rt
r_rrs
w_rd
+
r_pc
4
m_amemorym_imem
(32bit x 4096) IfId_irr_pc[13:2]
16
16
125
5
5
IF ID EX/MEM
w_imm16
SignExtImm
Mux
w_imm32
w_rrt2
Mux
w_rd2
WB
+Mux Shiftleft 2
w_npc
1616
32
w_rpc4
w_tpc
Processor Design Contest Presentation Slide (2/4)
IfId-npc
Mux
Mux
!=
w_taken
w_rrs_
w_rrt_
Mux
Mux
+
Mux
Mux
w_rrs3
w_rrt3
IdEx_rrs
IdEx_rrt2
w_rslt MeWb_rslt
MeWb-ldd
w_rslt2
Mewb-ldd
MeWb_rslt
IdEx_rrt
32
m_amemorym_imem
(32bit x 4096
16
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
構造の簡略化による動作周波数の向上(工夫した点)
• 4サイクルプロセッサの導入
• EXとMEMを1サイクルで処理する。
• ALUの処理が加算のみなのでクリティカルパスにならない
->フォワーディング機構を簡略化できた。
ちなみに、4サイクルプロセッサの実行サイクル数は270389サイクルであるが、5サイクルプロセッサの実行サイクル数は270390サイクルである。
63Processor Design Contest Presentation Slide (3/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
動作周波数の向上による性能向上(工夫した点2)
• プログラムカウンタの変更
• クリティカルパスのプログラムカウンタの計算箇所を32ビット加算器から16ビット加算器に変更
• ->動作周波数が200MHzから217.5MHzに改善
64Processor Design Contest Presentation Slide (4/4)
パイプラインプロセッサ
Group No: 17
Course number: CSC.T341Processor Design Contest (2018-05-31) Presentation Slide
65Processor Design Contest Presentation Slide (1/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
設計したプロセッサと性能
• 動作周波数: 50 MHz, クロック周期 20 = 1000/50 nsec• プログラムの実行サイクル数: 270390 サイクル
• プロセッサ性能: 20 x 270390 / 1000,000,000 = 0.0054078 sec
66Processor Design Contest Presentation Slide (2/4)
CSC.T341 Computer Logic Design, Department of Computer Science, TOKYO TECH
17による動作周波数の向上(工夫した点)
• 必要のないワイヤを極力削った
67Processor Design Contest Presentation Slide (3/4)