2018 年度 ( 平成 30 年度 ) 版 Ver. 2018-10-14a Course number: CSC.T363 コンピュータアーキテクチャ演習 (3) Computer Architecture Exercise(3) 情報工学系吉瀬謙二 Kenji Kise, Department co Computer Science kise_at_c.titech.ac.jp CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 1
コンピュータアーキテクチャ演習 (Exercise) の注意点 演習は情報工学系の計算機室 ( 学術国際情報センター 3 階 ) でおこないます. 演習には出席点があります. 休まずにきちんと出席しましょう.( もちろん講義にもきちんと出席しましょう.) 演習スライドにチェックポイントの図がある場所は,TAに作業を確認してもらう場所です. すべてのチェックポイントをクリアしましょう. 演習時間以外もコンピュータや FPGA ボードを利用できます. 独自のハードウェア設計などに挑戦しましょう. ただし, 計算機室が利用できる時間に限ります. CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 2
Exercise(3) Project_24 コンテストで利用する環境に慣れる. この内容は, この演習中に終わらせること. CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 3
Project_24 CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 4
Create new project Invoke Vivado 2016.4 Download and unzip project_24.zip in Z:/Lecture Open the project file main.xpr in project_24 This project has some IPs for clock management and dram controller CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 5
Reference Design 論理合成してFPGAをコンフィギュレーションすることで, 右端のLEDが点滅する. Seven-segment display がゼロを表示する. CPU RESET ( 赤色のボタン ) を押すことで回路をリセットできる. この初期状態から, シリアル通信により 512KB のデータを受け取ることで, プロセッサの処理を開始する. プロセッサの処理が終了すると, それまでに要したサイクル数をSeven-segment display に表示する ( Seven-segment display のインクリメントが停止する ). リセットボタン 点滅する CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 6
Tera Term Setting Tera Term を起動する. シリアルポートを選択. 複数のポートが選択できる場合には最も大きい番号を選択. 設定, シリアルポートを選択し, ボー レートに 1000000 を入力する. CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 7
サンプルアプリケーションの実行 NEXYS4 DDRのFPGAをコンフィギュレーションする. Tera Term サンプルアプリケーション 310sort512.bin を転送する. ファイル -> ファイル送信 -> オプションバイナリにチェック ( 必ず ) バイナリファイル ( 例 :310sort512.bin) を選択し, 送信する. 5 秒ほどで転送が完了する. リファレンスデザインは,512KB のファイルを受信するとアプリケーションの実行を開始する. 310sort512.bin を選択 注 : このチェックを入れること CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 8
Elapsed Time 310sort512.bin (quick sort) Operating frequency: 50Mhz LED: 0x1C9350dE, 479416542 Check Point 6 動作周波数 : 50 MHz, クロック周期 Y = 1000/50 = 20.00 nsec プログラムの実行サイクス数 : Z = 479416542 サイクル Elapsed Time: E = Y x Z / 1000000 = 20.00 x 479416542/1000000 = 9588 msec CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 9
Memory Map of the Reference Design Data memory Instruction memory 128MB DRAM 0x00000000 0x00000000 512KB Init 0x00000000 64KB User 0x00000000 0x0000FFFF 0x07FFFFFF 128MB User 128MB User 0x0007FFFF 0x00080000 0x07FFFFFF 0x07FFFFFF 64KB User 0x00000000 0x0000FFFF 0xFFFFFFFF 4GB bit address space 128MB 27bit physical address space 512KB Init 0x0007FFFF 512KB MEMORY IMAGE CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 10
Memory Map of the Reference Design NEXYS4 DDRボードには,128MBのDRAMが搭載されている. 512KBのデータをシリアル通信でFPGAに送信する. リファレンスデザインでは, 受信した512KBのデータをDRAMの 0 番アドレスから順に格納する. 0x00000000 ~ 0x0007FFFF に,512KBのデータが格納される. リファレンスデザインでは, プロセッサが実行する命令を格納するために,FPGA 内部に64KBの命令メモリを実装する. 512KBのデータの先頭の64KBのみが, この命令メモリに格納される. プロセッサが実行する全ての命令は, この命令メモリに格納される. 命令メモリはDRAMとは独立に動作し, 書き換えできないメモリとして利用される. CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 11
Memory Mapped I/O of the Reference Design リファレンスデザインのプロセッサは, アドレス 4 にストアすることで実行が終了したと見なして, クロックサイクルのカウントを止める. FPGAからの主な出力としてシリアル通信を使う. リファレンスデザインのプロセッサは, アドレス 0 にストアすると, そのデータがシリアル通信で送信される. 例えば,Cのアプリケーションプログラムで次の記述により A がターミナルに表示されます. { } volatile int *uart_txd = (int*)0; *uart_txd = A ; ただし, シリアル通信のモジュールは送信バッファを持たないため, 複数の文字を送信する場合には, ソフトウェアでウェイトを入れる. { } volatile int *uart_txd = (int*)0; *uart_txd = A ; mylib_wait(); /* user defined function */ *uart_txd = B; CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 12
プロセッサがサポートする命令 コンテストでは,define.v に定義される次の命令を処理できるプロセッサを実装すること. `define SLL 6'd02 `define SRL 6'd03 `define SRA 6'd04 `define SLLV 6'd05 `define SRLV 6'd06 `define SRAV 6'd07 `define JR 6'd08 `define JALR 6'd09 `define ADD 6'd14 `define ADDU 6'd15 `define SUB 6'd16 `define SUBU 6'd17 `define AND 6'd18 `define OR 6'd19 `define XOR 6'd20 `define NOR 6'd21 `define SLT 6'd22 `define SLTU 6'd23 `define J 6'd24 `define JAL 6'd25 `define BEQ 6'd26 `define BNE 6'd27 `define ADDI 6'd28 `define ADDIU 6'd29 `define SLTI 6'd30 `define SLTIU 6'd31 `define ANDI 6'd `define ORI 6'd33 `define XORI 6'd34 `define LUI 6'd35 `define LW 6'd38 `define SW 6'd43 `define BLEZ 6'd44 `define BGTZ 6'd45 `define BLTZ 6'd46 `define BGEZ 6'd47 CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 13
リファレンスデザインに含まれるプロセッサ Operating frequency: 50MHz リファレンスデザインには,5 段パイプライン処理の典型的なMIPSプロセッサ ( のサブセット ) が採用されている. 下の図からレジスタ名などが変わっているので注意. IF ID EX MEM WB Mux Shift left 2 + r_pc 4 + m_memory m_imem 16 5 5 5 Mux SignExtImm w_rs m_regfile m_regs (bit x )!= 1 Mux Mux Mux + 12 m_memory m_dmem 5 Mux Pipeline register IfId IdEx ExMe MeWb CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 14
リファレンスデザインの特徴 プロセッサの動作周波数は50MHzと低速. プロセッサのアーキテクチャは5 段の標準的なパイプライン処理. データメモリとしてDRAMを用いる. キャッシュを搭載していない. 分岐予測を用いていない. Vivadoの最適化オプションが性能重視になっていない. DRAMの動作周波数は200MHzと低速. これらを修正することで, 高速化できる可能性がある. CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 15
References CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 16
References Computer Architecture support page http://www.arch.cs.titech.ac.jp/lecture/ca/ Computer Logic Design support page http://www.arch.cs.titech.ac.jp/lecture/cld/ CS Computer Room http://www.csc.titech.ac.jp/ Xilinx Vivado Design Suite https://japan.xilinx.com/products/design-tools/vivado.html Digilent Nexys 4 DDR Atrix-7 FPGA https://store.digilentinc.com/nexys-4-ddr-artix-7-fpga-trainerboard-recommended-for-ece-curriculum/ Verilog HDL https://ja.wikipedia.org/wiki/verilog CSC.T363 Computer Architecture, Department of Computer Science, TOKYO TECH 17