Presentation is loading. Please wait.

Presentation is loading. Please wait.

プロセッサの設計と実装 後期実験 プロセッサの設計と実装 1 コンピュータの論理設計 「コンピュータを作る」 –仕様設計 –論理設計 –回路・レイアウト –物性・デバイス 後期実験 プロセッサの設計と実装 2 この実験では 課題として IA-32 サブセット仕様が与えられる 各自 RTL 設計 →

Similar presentations


Presentation on theme: "プロセッサの設計と実装 後期実験 プロセッサの設計と実装 1 コンピュータの論理設計 「コンピュータを作る」 –仕様設計 –論理設計 –回路・レイアウト –物性・デバイス 後期実験 プロセッサの設計と実装 2 この実験では 課題として IA-32 サブセット仕様が与えられる 各自 RTL 設計 →"— Presentation transcript:

1

2 プロセッサの設計と実装 後期実験 プロセッサの設計と実装 1

3 コンピュータの論理設計 「コンピュータを作る」 –仕様設計 –論理設計 –回路・レイアウト –物性・デバイス 後期実験 プロセッサの設計と実装 2 この実験では 課題として IA-32 サブセット仕様が与えられる 各自 RTL 設計 → ツールで論理合成 FPGA を対象とした配置配線をツールが算出 FPGA ボードへのダウンロード QuartusIIModelsim テスト

4 実験の流れ Wiki –www.mtl.t.u-tokyo.ac.jp/~jikken/cpu/wiki/ 1.環境構築,FPGA動作テスト 2.ハードウェア記述入門 3.プロセッサ設計の理解 4.プロセッサ実装 1.カウントアッププログラム 2.フィボナッチ数計算プログラム(再帰) 3.エラトステネスのふるい 5.最終報告,アピール 後期実験 プロセッサの設計と実装 3

5 スケジュール:1日目 講義:実験の流れ インストールと動作 –Quartus2 –ModelSim –7segを光らせるソースをDL 開発環境への読み込み FPGAボードの動作確認 後期実験 プロセッサの設計と実装 4

6 スケジュール:2日目 講義:前回のVerilogソースコード説明 各自改変して好きな物を表示してみる 必要ファイルや手順の把握 –シミュレーション,ダウンロード 後期実験 プロセッサの設計と実装 5

7 スケジュール:3日目 講義:プロセッサの設計と今回の仕様 仕様の把握 目標バイナリの確認 –3種類 モジュール構成の設計 後期実験 プロセッサの設計と実装 6

8 スケジュール:4日目 講義:モジュールとその機能 モジュールを一つ実装してみる –モジュール単位のテストのやりかたを身につける 後期実験 プロセッサの設計と実装 7

9 スケジュール:5日目~8日目 必要モジュールを実装する 順次統合 –レジスタ –デコーダ –フェッチユニット(無条件分岐にも対応) –ALU までできればカウントアップは動くはず –メモリまわり までできればfibが動くはず –条件分岐まわり までできればエラトステネスが動くはず 後期実験 プロセッサの設計と実装 8

10 スケジュール:9日目 デバッグ,追い込み 後期実験 プロセッサの設計と実装 9

11 最終日 デバッグ,追い込み 発表,愛機のアピールプレゼン 後期実験 プロセッサの設計と実装 10

12 アーキテクチャ仕様 IA-32の独自サブセット –IA-32z-4B(6B) IA-32のイヤな部分をできるだけ解消 –(でもフラグレジスタとか残ってる) –固定長 –一命令で単一操作 –ロードストアアーキテクチャ 仕様はWikiに 後期実験 プロセッサの設計と実装 11

13 主記憶,レジスタ,フラグ 12 主記憶  2 32 Bytes (最大) 32bit x 8 本  eax, ebx, ecx, edx, esi, edi, esp, ebp 順番に注意 マクロの引数は e 抜きで フラグ  Sign, Zero, Carry, Overflow rg1/rg2Name 000ax 001cx 010dx 011bx 100sp 101bp 110si 111di

14 命令の種類 13 分類: 1. ロード / ストア命令 2. 演算命令 1. 算術論理演算 (ALU: Arithmetic Logic Unit) 2. シフト 3. 制御移譲 (control transfer) 命令(広義の分岐命令) 1. 分岐 (branch) 命令: PC 相対 2. ジャンプ命令 :絶対 4. プッシュ / ポップ (オプション) 5. コール / リターン (オプション) 6. その他

15 14 命令フォーマット opop opop rg1 rg2 imm0 0 31 161922 opopop code: rg2: dst reg # rg1: src reg # imm1 824 imm1: immediate 1 imm0: immediate 0 opop opop rg1 rg2 imm0 47 16 3538 imm1 24 imm2 0 imm3 832 4B : 6B : 40

16 1. ロード / ストア命令 ロード命令  zLD sim8/32, rg2, rg1# r[rg1] = *(r[rg2] + sim8/32) ストア命令  zST rg1, sim8/32, rg2# *(r[rg2] + sim8/32) = r[rg1] 15 opop opop rg1 rg2 sim8 0 31 161922 nop 824 opop opop rg1 rg2 simm32 47 16 3538 24 08 32 4B : 6B : 40

17 1. 即値ロード命令 即値ロード命令  zLI im32, rg2# r[rg2] = im32  zLIL im16, rg2# r[rg2] = (r[rg2] & 0xFFFF0000) | im16 little-endian のため, im16 は, [15:8] が下位, [7:0] が上位 16 opop opop rg1 rg2 im16 0 31 161922824 opop opop rg1 rg2 im32 47 16 3538 24 08 32 4B : 6B : 40

18 2. 演算命令 レジスタ ― レジスタ 算術論理演算 ( ALU, Arithmetic Logic Unit) 命令  zADD rg1, rg2 # r[rg2] += r[rg1]  zSUB rg1, rg2 # r[rg2] -= r[rg1]  zCMP rg1, rg2 # r[rg2] - r[rg1] # 比較のみ  zAND rg1, rg2 # r[rg2] &= r[rg1]  … 17 opop opop rg1 rg2 sim8 0 31 161922 nop 824 opop opop rg1 rg2 simm32 47 16 3538 24 08 32 4B : 6B : 40

19 2. 演算命令 レジスタ ― 即値 算術論理演算 ( ALU, Arithmetic Logic Unit) 命令  zADDI sim8/32, rg2# r[rg2] += sim8/32  … シフト命令  zSLL sim8/32, rg2# r[rg2] <<= sim8/32  … 18 opop opop rg2 sim8 0 31 161922 nop 824 opop opop rg2 simm32 47 16 3538 24 08 32 4B : 6B : 40

20 3. 制御委譲命令 (条件)分岐命令  zBcc tttn, sim8/32# if (tttn) PC = PC + 3/6 + sim8 19 opop opop tttn sim8 0 31 16 20 nop 824 opop opop tttn simm32 47 16 3640 24 08 32 4B : 6B :

21 nop 3. 制御委譲命令 ジャンプ命令(レジスタ間接)  zJR rg2 # PC = r[rg2] 20 opop opop rg2 nop 0 31 161922 nop 824 opop opop rg2 47 16 3538 24 08 32 4B : 6B : nop 40

22 nop 4. プッシュ / ポップ プッシュ命令  zPUSH rg2# sp -= 4; rg2 = *sp ポップ命令  z POP rg2# *sp = rg2; sp += 4 21 opop opop rg2 nop 0 31 161922 nop 824 opop opop rg2 47 16 3538 24 08 32 4B : 6B : nop 40

23 5. コール / リターン 22 PC 相対コール命令( 6B エンコーディングのみ)  zCALLsim32# zPUSH PC; PC = PC + 6 + sim32 レジスタ間接ジャンプ & リンク命令  zJALR rg2# zPUSH PC; PC = r[rg2] リターン命令  z RET# PC = z POP;

24 プロセッサの実装 モジュール構成 各モジュールの実装 後期実験 プロセッサの設計と実装 23

25 命令の実行フェーズ 24 1.F 命令フェッチ 2.R 命令デコード / レジスタ読み出し 3.X 実行 4.M メモリ・アクセス 5.W レジスタ書き戻し (Write-Back)

26 コンポーネント 25 略称 名称 説明 アーキテクチャ ステート RF レジスタ・ファイル PC プログラム・カウンタ MM メイン・メモリ メモリ・バス MA メモリ・アドレス・バス MD メモリ・データ・バス アーキテクチャ ステートではない レジスタ IR 命令レジスタフェッチした命令を格納 SR ソース・レジスタソース・オペランドを格納 TR ターゲット・レジスタ ※ 1 ↑ DR データ・レジスタ演算の結果を格納 MAR メモリ・アドレス・レジス タ ※ 2 ロード / ストア命令で MM へのアドレスを格納 MDR メモリ・データ・レジスタロード命令で MM から読み出したデータを格納 ※ 1 : ターゲット・レジスタという名称は必ずしも一般的ではない. ※ 2 : この資料のブロック図では DR で代用している.

27 26 DR MDR PC Main Memory MA MD FF RR XX MM WW IR Reg File rg1 rg2 SRTR flags

28 27 DR MDR PC Main Memory MAMD FF RR XX MM WW IR Reg File rg1 rg2 SRTR flags MAR

29 28 DR PC Main Memory MAMD FF RR XX MM WW IR Reg File rg1 rg2 SRTR flags DR2 SR2

30 29 実行例 zADDI 1, dx 100zLD cx, 8, dx 104 # r2 += 1 # r2 = *(r1 + 8)

31 DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW 100 208 IR Reg File rg1 rg2 104 SRTR add221ld218 0 200 100 flags DR2 30 100 ld218 104

32 DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW 100 208 IR Reg File rg1 rg2 104 SRTR add221ld218 0 200 104 flags DR2 31 ld218 2008

33 DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW 100 208 IR Reg File rg1 rg2 104 SRTR 200 add221ld218 0 200 104 8 8 flags DR2 32 ld218 208

34 DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW 100 208 IR Reg File rg1 rg2 104 SRTR 200 add221ld218 0 200 104 8 8 flags DR2 33 208 ld218 1000 208

35 DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW 100 208 IR Reg File rg1 rg2 104 SRTR add221ld218 0 200 104 flags DR2 34 1000 200 208 8 8 1000 ld218

36 DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW 100 208 IR Reg File rg1 rg2 104 SRTR 1000 add-21ld218 0 200 flags DR2 35 104 200 208 8 8 1000 108 ld218 add-21

37 DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW 100 208 IR Reg File rg1 rg2 104 SRTR add-21ld218 0 200 108 flags DR2 36 1000 200 208 8 8 1000 add-21 1000 1 1

38 DR MDR PC Main Memory 1000 MA MD FF RR MM WW 100 208 IR Reg File rg1 rg2 104 SRTR add-21ld218 0 200 108 flags DR2 37 XX 1000 208 1 1 1000 1001 add-21

39 DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW 100 208 IR Reg File rg1 rg2 104 SRTR add-21ld218 0 200 108 flags DR2 38 1000 1001 1 1 1000 add-21 1001

40 DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW 100 208 IR Reg File rg1 rg2 104 SRTR add-21ld218 0 200 108 flags DR2 39 1000 1001 1 1 1000 1001 add-21 1001

41 フェーズ・フロー・チャート 40

42 PC 周辺 41 F フェーズ  インクリメント W フェーズ  分岐成立なら, DR をロード 1 dr[31 : 2] we ct_taken phase[`ph_f] pc[31:2] phase[`ph_w]

43 PC 周辺 (Verilog) 42 module pc(phase, ct_taken, dr, pc, clk, n_rst); input [`ph_w : `ph_f]phase; // フェーズ信号. input ct_taken;// 分岐成立. zB, zJR などでも 1 input [31:0] dr;// 分岐先 output [31:0] pc;// PC 本体の出力 input clk, n_rst;// リセットは負論理 reg [31:0] pc; always @(posedge clk or negedge n_rst) begin if (n_rsts == 0) pc <= 0; else if (phase[`ph_f] == 1) pc <= pc + 4; else if (phase['ph_w] == 1 && ct_taken == 1) pc <= dr; end // always endmodule

44 教科書に良くあるシングルサイクルプロセッサ (ただしこの絵はMIPS風 ) 後期実験 プロセッサの設計と実装 43 PC 4 命令メモ リ ++ ++ #rs1 npc inst. [31-0] データメモリ ALU memData aluFunc Taken (br & 0) #rs2 [25-21] [20-16] rd result [15-11] [15-0] sign ext. rs1 rs2 <<2 1 0 1 0 regDestregWrite srcImm 1 0 1 0 memRead memWrite

45 レポートについて 1.紙媒体 –レポート表紙 2.ソースコード –TAさんに提出 3.レポート本文 –PDFまたはtxt –irie@mtl.t.u-tokyo.ac.jpirie@mtl.t.u-tokyo.ac.jp サブジェクトを必ず「2015PEX-(学籍番号)」とすること –設計の概要,とくに工夫/苦労した実装について詳細,性能評価 簡潔でOK ただし上の3点が分かるようになっていること 〆切:実験終了から2週間後 後期実験 プロセッサの設計と実装 44

46 性能評価? まずは課題プログラムがどこまで動いたか,正確 な結果がでたか 性能評価指標…? –クロック数 –プログラム毎のMIPSとか 性能改善にむけて –どのようにすればどれくらい良くなりそうか –実際にやってみた結果 後期実験 プロセッサの設計と実装 45

47 提出方法 紙媒体 –表紙だけなのでできれば最終日に提出 –そこで出し損ねたら研究室まで ソースコード –とりあえず最終日に回収 –その後もコーディング続けたければ研究室までどうぞ で,二週間後に提出 レポート –サブジェクトに気をつけてメールで提出 後期実験 プロセッサの設計と実装 46

48 研究室での継続・提出 11F112B ふらっと来てくれて構いませんが 入江までアポイントとってからの方が確実です 後期実験 プロセッサの設計と実装 47


Download ppt "プロセッサの設計と実装 後期実験 プロセッサの設計と実装 1 コンピュータの論理設計 「コンピュータを作る」 –仕様設計 –論理設計 –回路・レイアウト –物性・デバイス 後期実験 プロセッサの設計と実装 2 この実験では 課題として IA-32 サブセット仕様が与えられる 各自 RTL 設計 →"

Similar presentations


Ads by Google