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

Slides:



Advertisements
Similar presentations
CPU設計と パイプライン.
Advertisements

基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
VLSI設計論第4回 アキュムレータマシンと 仮遅延シミュレーション
計算機システムⅡ 主記憶装置とALU,レジスタの制御
5.3 各種カウンタ 平木.
高性能コンピューティング学講座 三輪 忍 高性能コンピューティング論2 高性能コンピューティング論2 第4回 投機 高性能コンピューティング学講座 三輪 忍
CPU実験 第1回中間発表 4班 瀬沼、高橋、津田、富山、張本.
Handel-C基礎 および 7セグとマウスのハンドリング
Verilog HDL 12月21日(月).
テープ(メモリ)と状態で何をするか決める
ソフトウェアを美味しく 解析する方法 Security Ark
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
計算機構成 第7回 サブルーチンコールとスタック テキストp85-90
計算機システムⅡ 命令セットアーキテクチャ
ロジック回路学習ボード MLCTB-BASE 説明書 NAND 7400 NOT 7404 AND 7408 OR 7432
4.2.2 4to1セレクタ.
プロセッサ設計教育のための 命令セット・スーパースカラシミュレータの試作と評価
プログラムはなぜ動くのか.
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
第7回 2006/6/12.
計算機工学特論A 第4回 論理合成 山越研究室 増山 知東 2007年11月7日 .
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
ハードウェア記述言語による 論理回路設計とFPGAへの実装 2
計算機科学実験及演習 3A SIMPLEアーキテクチャ のプロセッサの実装
Advanced Computer Architecture
・ディジタル回路とクロック ・プロセッサアーキテクチャ ・例外処理 ・パイプライン ・ハザード
言語プロセッサ2007 平成19年9月26日(水) (Ver.2 平成19年10月3日変更)
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
条件分岐と繰り返し.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
巡回冗長検査CRC32の ハード/ソフト最適分割の検討
第6回 6/4/2011 状態遷移回路とシングルサイクルCPU設計
計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章
ディジタル回路の設計と CADによるシステム設計
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
VLSI設計論第3回 順序回路の記述と論理合成
08. メモリ非曖昧化 五島 正裕.
計算機構成 第8回 POCOの構造とVerilog記述 テキスト第5章-第6章
計算機構成 第11回 マルチサイクルCPU 慶應大学 天野英晴.
計算機構成 第5回 RISCの命令セットアーキテクチャ テキスト第4章
コンピュータアーキテクチャ 第 11 回.
コンピュータアーキテクチャ 第 10 回.
09. メモリ・ディスアンビギュエーション 五島 正裕.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
計算機工学特論 スライド 電気電子工学専攻 修士1年 弓仲研究室 河西良介
コンピュータアーキテクチャ 第 10 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
プロセッサ設計支援ツールを用いた 独自プロセッサの設計
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 11 回.
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

主記憶,レジスタ,フラグ 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

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

14 命令フォーマット opop opop rg1 rg2 imm opopop code: rg2: dst reg # rg1: src reg # imm1 824 imm1: immediate 1 imm0: immediate 0 opop opop rg1 rg2 imm imm1 24 imm2 0 imm B : 6B : 40

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 sim nop 824 opop opop rg1 rg2 simm B : 6B : 40

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 im opop opop rg1 rg2 im B : 6B : 40

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 sim nop 824 opop opop rg1 rg2 simm B : 6B : 40

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 sim nop 824 opop opop rg2 simm B : 6B : 40

3. 制御委譲命令 (条件)分岐命令  zBcc tttn, sim8/32# if (tttn) PC = PC + 3/6 + sim8 19 opop opop tttn sim nop 824 opop opop tttn simm B : 6B :

nop 3. 制御委譲命令 ジャンプ命令(レジスタ間接)  zJR rg2 # PC = r[rg2] 20 opop opop rg2 nop nop 824 opop opop rg B : 6B : nop 40

nop 4. プッシュ / ポップ プッシュ命令  zPUSH rg2# sp -= 4; rg2 = *sp ポップ命令  z POP rg2# *sp = rg2; sp += 4 21 opop opop rg2 nop nop 824 opop opop rg B : 6B : nop 40

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

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

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

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

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

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

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

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

DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW IR Reg File rg1 rg2 104 SRTR add221ld flags DR ld

DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW IR Reg File rg1 rg2 104 SRTR add221ld flags DR2 31 ld

DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW IR Reg File rg1 rg2 104 SRTR 200 add221ld flags DR2 32 ld

DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW IR Reg File rg1 rg2 104 SRTR 200 add221ld flags DR ld

DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW IR Reg File rg1 rg2 104 SRTR add221ld flags DR ld218

DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW IR Reg File rg1 rg2 104 SRTR 1000 add-21ld flags DR ld218 add-21

DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW IR Reg File rg1 rg2 104 SRTR add-21ld flags DR add

DR MDR PC Main Memory 1000 MA MD FF RR MM WW IR Reg File rg1 rg2 104 SRTR add-21ld flags DR2 37 XX add-21

DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW IR Reg File rg1 rg2 104 SRTR add-21ld flags DR add

DR MDR PC Main Memory 1000 MA MD FF RR XX MM WW IR Reg File rg1 rg2 104 SRTR add-21ld flags DR add

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

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

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; 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

教科書に良くあるシングルサイクルプロセッサ (ただしこの絵は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 << regDestregWrite srcImm memRead memWrite

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

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

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

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