Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オープンソースCPUアーキテクチャ 「RISC-V」を中心に変わる半導体の世界

オープンソースCPUアーキテクチャ 「RISC-V」を中心に変わる半導体の世界

FPGA開発日記 著者
@msyksphinz_dev
2019/05/28 10:00 – 11:30 慶應義塾大学 藤原洋記念ホール
http://msyksphinz.hatenablog.com

msyksphinz

May 28, 2019
Tweet

More Decks by msyksphinz

Other Decks in Technology

Transcript

  1. RISC-Vとは • カリフォルニア大学バークレイ校(UCB)が2011年から公開している 新しい命令セットアーキテクチャ • シンプルかつオープン、しかしLinuxが動くまでにはしっかりしている • かつ、自由にカスタマイズ可能 • RISC-Vの仕様を決定する非営利団体”RISC-V

    Foundation” • ISA仕様と特定の企業を完全に分離する。 • GoogleやNVIDIAなどがメンバーに加入し注目を浴びる • 2019年5月現在で加盟団体・企業は250に迫る 2019/9/18 3 RISC-V Foundationの加盟団体数の推移
  2. RISC-V Foundation Board of Directorsを中心に、ISAの各 分野でWorking Groupが存在している。 RISC-V Foundation Working

    Group ボード・ プラットフォーム SIMD拡張 Privileged Spec セキュリティ メモリモデル ソフトウェアツー ルチェイン … Board of Directors RISC-V ISA Manual 2019/9/18 4 特許問題などに対して非常に慎重に対応 CPUの歴史は特許抗争の歴史? RISC-Vの命令セット自体は、他社の特許 を侵害しないように慎重に設計されている。 Working GroupでのDiscussion ↓ 最終的な命令仕様に追加? Or 各種RISC-Vをベースとしたプラット フォームのディスカッション
  3. RISC-V発展の歴史 2011 2012 2013 2014 2015 2016 2017 RISC-V Processor

    Raven-1 7th RISC-V Workshop 6th RISC-V Workshop RISC-V Processor Raven-2 RISC-V Processor Raven-3 5th RISC-V Workshop 4th RISC-V Workshop 3th RISC-V Workshop 1th RISC-V Workshop 2th RISC-V Workshop User-Level ISA Ver. 1.0 User-Level ISA Ver. 2.0 User-Level ISA Ver. 2.1 User-Level ISA Ver. 2.2 Privileged ISA Ver. 1.7 Privileged ISA Ver. 1.9 Privileged ISA Ver. 1.10 世界発の商用 RISC-Vボード 研究チップの制御 プロセッサとして 利用 ヘネパタ第6版は RISC-Vで刷新 パタヘネのRISC-V 版が登場 約半年に1回の頻度で Workshop開催 8th RISC-V Workshop in Barcelona RISC-V Day in Shanghai 9th RISC-V Workshop in Chennai RISC-V Day in Tokyo RISC-V Day in MICRO51 RISC-V Summit in Santa Clara Linuxが動作する RISC-Vボード 2018 ◼ 2015年から定期的にWorkshopを開催 ◼ トップカンファレンスにRISC-Vネタで 通している。 ◼ パタヘネ・ヘネパタはRISC-Vに移行 ◼ 2017年/2018年に日本でイベント開催 2019/9/18 5
  4. 2019年も激しく活動中 6 8th RISC-V Workshop in Barcelona RISC-V Day in

    Shanghai 9th RISC-V Workshop in Chennai RISC-V Day in Tokyo RISC-V Day in MICRO51 RISC-V Summit in Santa Clara Linuxが動作する RISC-Vボード 2018 2019 RISC-V Day in Taiwan RISC-V Day in Zurich CARRV 2019 RISC-V North America Roadshow RISC-V North China Roadshow HiFive RevB Wireless Coprocessor の乗ったRISC-Vボード ◼ RISC-V Tokyo 2019 → SiFive Tech Symposium? しかし海外と比べると日本はかなり遅れている印象… 2019/9/18
  5. 気づかぬ間に浸透しています “RISC-V” According to the LinkedIn profile, work on the

    Exynos 9820 began in January this year, and the Samsung engineer appears to have been working on a 5G RF chip based on the RISC-V architecture ever since May 2017, which could reinforce a 2019 release for the 5G smartphones. (https://www.notebookcheck.net/Samsung-Exynos-9820-SoC-and-5G-RF-chips-already-in-the- works.295886.0.html) WD、同社製品搭載のプロセッサ/コントローラなどをRISC-Vへ移行 (https://pc.watch.impress.co.jp/docs/news/1094891.html) NVIDIA gave a presentation about how its proprietary Falcon (Fast Logic CONtroller) core will be replaced by RISC-V cores. (https://www.electronicdesign.com/industrial-automation/rise-risc-v-display-workshop) Internal Project to demonstrate ability to easily develop custom RISC-V implementation by leveraging Rocket Chip. (https://content.riscv.org/wp-content/uploads/2018/05/13.15-13.30-matt-Cockrell.pdf) 2019/9/18 9
  6. 各種CPUアーキテクチャがオープン化 この流れを作ったのはやはりRISC-Vでは? Arm Cortex-Mシリーズの一部が無料で使用できる or FPGA向けのIPが無料で提供される。 Cortex-A5を低価格で使用でき、低価格でテープアウトすることができる。 Wave Computing® Launches

    the MIPS Open Initiative To Accelerate Innovation for the Renowned MIPS® Architecture https://www.mipsopen.com/press/wave-computing-launches-the-mips-open-initiative-to-accelerate-innovation-for-the-renowned- mips-architecture/ Wave Computing® Creates MIPS Open™ Advisory Board https://www.mipsopen.com/press/wave-computing-creates-mips-open-advisory-board/ Wave Computing Releases First MIPS Open Program Components to Accelerate Innovation for Next-Generation System on Chip Designs https://www.mipsopen.com/press/wave-computing-releases-first-mips-open-program-components-to-accelerate-innovation-for- next-generation-system-on-chip-designs/ 2019/9/18 11
  7. 機械学習だってオープンハードウェア : NVDLA https://github.com/nvdla/hw NVDLA : Nvidia Deep Learning Accelerator

    NVIDIAの発表した、オープンソースの Deep Learning Accelerator • 2017-Q3にソースコードがGitHubにアップロードされる。 • FPGA、AWS F1インスタンス上で動かす環境が提供されている。 • QEMU上でNVDLAを動作させるソフトウェア環境が提供されている。 • CaffeのモデルをNVDLAのバイナリに変換させるツール “nvdla_compiler” • ソースが公開されていないので、NVDLAへの変換方法がいまいち不明。 2019/9/18 12
  8. 研究者・学生こそ「RISC-V」に目を向けてほしい • 理由その1. コスト面 • すべてオープン (すべてのソース・ドキュメントはgithubに置いてある) • 理由その2. 充実したデザイン・設計環境

    • UCBの設計したデザインでも複数種類ある 「Rocket Core」「Freedom」「BOOMv1」「BOOMv2」 • FPGAがあれば、すぐさまダウンロードして試行できる環境がある • 純粋に研究の土台として優れる。 • ソフトウェアもそれなりにある (Linux動く) • アーキテクチャ・組み込みのターゲットアーキテクチャとして優れる。 • RISC-Vの仕様が公開されたのはまだ数年前の話 • 仕様はまだバージョンアップしています (最近は落ち着きました) • 様々なワーキンググループでRISC-Vの仕様を拡張するディスカッションが展開され ている。 • テストセットもすべて公開されている • ISAのテストパタン riscv-tests / riscv-torture • ~な高速化技法試してみようかな→ 一旦テストセットで全部リグレッションを動かして確認 2019/9/18 14
  9. RISC-V命令セットアーキテクチャ形態について 18 • RISC-Vは大きく「基本命令セット」と 「拡張命令セット」に分かれる。 • 基本命令セット : RV32I /

    RV32E / RV64I / RV128I • 拡張命令セット : 基本命令セット+特定向け命令 • 浮動小数点とか、ベクトル命令とか “A” atomic拡張 “C” 16bit短縮命令 “F” 単精度浮動小数点 “D” 倍精度浮動小数点 “L” 10進数浮動小数点 “Q” 4倍精度浮動小数点 “M” 乗除算命令 “S” スーパバイザモード “P” Packed SIMD “V” Vector拡張 “N” ユーザレベル割り込み RV32I RV32E RV64I RV128I 拡張命令 基本命令 RV32I RV32E RV64I RV128I + M A F D + + + M A F D C = RV32G = RV64GC ▪ RISC-V アーキテクチャの呼び方 アーキテクチャ識別子を付加して呼ぶ 2019/9/18
  10. RISC-Vの特権モードと動作モード • 3種類の動作モードが定義されている • 最初の版では4種類だったが削減されて3種類 • ユーザモード • 最も権限の少ないモード。アプリケーションを動かすためのモード •

    スーパバイザモード • OSが例外処理などを行うための権限の高いモード。 • ハイパーバイザモード • 正式な仕様には入っていないが、現在Draft作成中。 • マシンモード • 最も権限が高い。マシンモード。何でもできる • モード間の遷移について • 外部から割り込み挿入 or 命令実行中に例外発生 • ECALL命令によるSupervisor Call • 例外処理後に実行するMRET / SRET / URET 19 マシンモード スーパバイザモード ユーザモード 2019/9/18
  11. なんでCompressed命令が必要なの? 21 ・RV32 / RV64は他のISAに比べて コードサイズが大きい → フェッチサイズが大きい。 ・そこで、RV32C /

    RV64Cという 圧縮命令を活用する。 → フェッチサイズを圧縮できる。 Computer Architecture Research with RISC-V Krste Asanovic より抜粋 ISA Shootout: Comparing RISC-V, ARM, and x86 on SPECInt 2006 より抜粋 RV32GC / RV64GCでは、多くの ベンチマークプログラムで他の 命令セットよりも優れる。 2019/9/18
  12. 仮想メモリ • RISC-Vの仮想メモリは(比較的)複雑 • Sv32 : VA 32bit → PA

    : 34bit • Sv39 : VA 39bit → PA : 56bit • Sv48 : VA 48bit → PA : 56bit 24 Bare Sv32 Bare Sv39 Sv48 RV32 RV64 SATP vpn[2] vpn[1] vpn[0] offset ppn[1] ppn[0] + + ppn[1]ppn[0] + ppn[1]ppn[0] + Supervisor Address Translation and Protection Register 物理メモリ アドレス 仮想メモリ アドレス 2019/9/18
  13. ベクタ命令 • RISC-VではSIMD命令よりもベクタ命令が先行して定義されている • https://github.com/riscv/riscv-v-spec • 少し面白い仕様 25 RISC-V Readerでも先に紹介されているのは

    SIMDではなくVector命令 動的レジスタ・タイピング プレディケート・レジスタ CSRレジスタの拡張 以降の説明は”RISC-V Reader”およびRISC-V User-Level ISA V2.2をベースに説明しますが、 今後変更される可能性があります。 2019/9/18
  14. 動的レジスタ・タイピング • 普通のベクトル命令・SIMD命令 • 命令が取り扱う「型」を決める。 • RISC-Vのベクトル命令 • レジスタが「型」を持つ 26

    ADD.I.W4 : 整数レジスタについて、4-way SIMD の加算を実行する ADD.F.W2 : 単精度浮動小数点レジスタについて、 2-way SIMDの加算を実行する v0 v1 v2 v3 v31 int32 float double int32 int64 ベクトルレジスタ vp0 vp1 vp7 … … プレディケート・レジスタ 型がバラバラなレジスタで、ベクトルレジスタ長を どのように定義するのか? → MVL(Maximum Vector Length)レジスタを使う 各ベクトルレジスタがどの型を持っているのか? → CSRとしてvctypeレジスタを用意 2019/9/18
  15. RISC-Vベクタ命令のプログラミング例 27 # 32ビット整数型どうしのベクトル配列の加算コード # ベクトルレジスタは32ビット整数型をサポートするように構成されて いるものとする。 # a0 :

    ベクトル長Nを保持している。 # a1 : 加算結果を格納するベクトルのポインタを保持している。 # a2 : 加算するベクトル1つ目のポインタを保持している。 # a3 : 加算するベクトル2つ目のポインタを保持している。 loop: setvl t0, a0 # Nをvlに設定する。t0に現在のvlの値を設定する。 vld v0, a2 # v0に1つ目のベクトルをロードする。 sll t1, t0, 2 # t1はベクトル長Nに相当するバイト数を返す # (32ビット整数なので×4) add a2, t1 # a2をロードしたバイト数だけ進める vld v1, a3 # v1に2つ目のベクトルをロードする。 add a3, t1 # a3をロードしたバイト数だけ進める。 vadd v0, v1 # v0とv1を加算し、その結果をv0に格納する。 sub a0, t0 # ベクトル命令で処理した分だけa0の値を減らす。 vst v0, a1 # 加算した結果をメモリにストアする。 add a1, t1 # 結果ベクトルのポインタを進める。 bnez a0, loop # ベクトル要素が残っていればループを繰り返す。 # そうでなければ終了する。 setvl命令に対象データの長さ を設定すると、 同時に処理できる最大長の長 さがMVLに 設定される。 例 : 最大で処理できるベクタ長が128で、 N=1000のとき → MVL =128 あとは、N=1000からMVL=128を毎回 減算し、N=0になるまで処理を繰り返す。 2019/9/18
  16. 仕様書を読んで感じた、 RISC-Vのすごいところ(仕様編) • 命令デコードがシンプルだが、C命令(Compressed命令)の理解は必須 • デコーダの設計はかなりシンプルで自動化できる • RISC-Vの真の性能を発揮したいなら、C命令はサポートすべき • スーパバイザに権限を移譲する”Delegation(移譲)”

    • Machine Modeで処理するのが面倒な例外はSupervisor Modeに移譲して動 かす • コンテキストスイッチ時にレジスタ退避を簡略化するための仕組み • XS / FSビットフィールドにより、レジスタの書き換え発生を記憶している • mstatusシステムレジスタは過去の実行モードを記憶することが可能 • 例外処理に入る→復帰の処理が割と容易 スーパバイザモード マシンモード 例外発生 移譲 例外処理 例外から戻る ユーザモード スーパバイザモード マシンモード 例外発生 例外受付 動作モード変更 例外処理 例外から戻る ユーザモード 割り込み・例外の移譲を使う場合 割り込み・例外の移譲を使わない場合 こちらも参考になります : https://www.sifive.com/blog/2017/10/23/all-aboard-part-7-entering-and-exiting-the-linux-kernel-on-risc-v/ 2019/9/18 28
  17. 仕様書を読んで感じた、 RISC-Vのすごいところ(仕様編) • 現代的(?)なプログラミングパラダイムのサポート • JALR rd, rs1, offset //

    PC ← x[rs1]+offset, x[rd] ← PC • リンクレジスタとしてx1/x5が指定可能 • rd=x1/x5, rs1=x1/x5, かつ rd != rs1の場合 • RAS(Return Address Stack) にPush / Popを同時実行 • コルーチン動作をサポートするため 2019/9/18 29 コルーチンはいったん処理を中断した後、続 きから処理を再開できる。接頭辞 co は協調を 意味するが、複数のコルーチンが中断・継続 により協調動作を行うことによる。 Wikipedia より https://ja.wikipedia.org/wiki/コルーチン
  18. RISC-Vが拡充するCHIPS Alliance • Linux Foundationが中心となり、オープン ソースハードウェアを中心としたCPU・SoCの 製品化を促進する UVM(Universal Verification Methodology)

    ベースの命令ストリームジェネレータの提供 オープンソースハードウェア 記述言語Chiselの開発 オープンバスプロトコル TileLinkの開発 SystemVerilogで記述されたDual- Issue RISC-Vプロセッサの開発 2019/9/18 34
  19. バスプロトコル TileLink • RISC-Vの実装でよく出てくるバスプロトコル • OCP, AXI, TileLink… • キャッシュコヒーレントをサポート

    • MOESIプロトコルに相当 • RISC-Vの実装”Rocket-Chip”がこの プロトコルを使っている。 2019/9/18 35
  20. オフチップ間通信技術OmniXtend • RISC-Vを中心とするオフチップ間通信のプロトコルを開発 • Western Digitalを中心に。 “CPU Project in Western

    Digital: From Embedded Cores for Flash Controllers to Vision of Datacenter Processors with Open Interfaces” RISC-V Summit 2019 https://content.riscv.org/wp-content/uploads/2018/12/13.10-Bandic-Golla-Vucinic-CPU- Project-in-Western-Digital-From-Embedded-Cores-for-Flash-Controllers-to-Vision-of- Datacenter-Processors-with-Open-Interf.pdf より抜粋 2019/9/18 36
  21. RISC-VコアRocketの設計のために作られた ハードウェア記述言語Chisel GoogleのAIチップ Edge TPUの設計に 使用されたことで、(日本)でにわかに 脚光を浴びる Chisel(Based on Scala)

    IR Verilog Chisel Compiler FIRRTL ハードウェア記述言語 Verilog-HDL / SystemVerilogの圧倒的な生産性の低さに辟易する • シミュレータが遅い。商用のシミュレータはライセンスが高い。 • 抽象的・高位の記述ができない。ジェネリックな記法ができない。 • → ChiselはScalaをベースとしており、 よりソフトウェア的な記法が可能。 2019/9/18 37
  22. Chisel Compiler, FIRRTLは ハードウェア記述コンパイラとして面白い Chisel3 Syntax Analyzer FIR Emitter FIR

    (Flexible Intermediate Representation) FIRRTL Make Syntax Tree Passes Passes Passes Passes Verilog Emitter Verilog 2019/9/18 38 ただ聞いている話だと まだいろいろ不備があり 改善が必要… ただ聞いている話だと まだいろいろ不備があり 改善が必要…
  23. RISC-V ISAに対する数学的アプローチ • RISC-V Specification in Coq • https://github.com/samuelgruetter/riscv-coq •

    HaskellベースのISA Formal記述をCoqに変換 • RISC-V Formal Verification Framework • https://github.com/SymbioticEDA/riscv-formal • RISC-VコアをFormalに検証するためのフレームワーク • コアのインターフェースに対してFormalな動作を検証する。 2019/9/18 39
  24. SiFive Core Designer WebでSoC設計 (経験上の)これまでのSoC設計 CPUベンダのフロントエンドの 営業と打ち合わせ フロントエンドが本社設計 チームに問い合わせ カスタマイズコアを

    本社が生成開始 カスタマイズコアがリリース IPを接続する&検証 性能検証 レイアウト テープアウト 1週間経過 1週間経過 1週間経過 WebでSoCのカスタマイズをする その環境をダウンロードする IPを接続する & 検証 性能検証 レイアウト テープアウト Core Designerでのクラウド設計 2019/9/18 42
  25. AWSを使ってRISC-Vを動かしLinuxをブートする FireSim お値段 : f1.2xlarge (Rocket-ChipならばSingle-Core) : 1.65USD/h f1.16xlarge (Rocket-Chipならば8-Core)

    : 13.20USD/h Single使用なら 個人でも何とか… (ちょっと見えにくいけど) AWS F1上でRISC-V Linuxがブート RISC-Vと関係なく、とりあえずAWSインスタンスを 試したいということも可能: AWS FPGAリポジトリ : https://github.com/aws/aws-fpga 2019/9/18 44
  26. Open-Hardwareの目指すところ • 命令セットだけじゃない、ハードウェア設計・CPUアーキ テクチャをオープンに議論できる環境を構築する • 例: Meltdown / Spectre •

    例: Memory Consistency Model of RISC-V • RISC-Vのメモリコンシステンシモデルのバグを大学が発見 多くの人が開発に参加できるように 多くの人が議論に参加できるように ハードウェア開発の参入障壁が下がる ハードウェア開発に関わる人が増える ハードウェア開発者のすそ野が広がる 2019/9/18 45
  27. 現状入手可能なRISC-Vボード SiFive : HiFive Unleashed RISC-V 64-bit(RV64GC) x4 + RISC-V

    64-bit (RV64GC) SiFive : HiFive1 RISC-V 32-bit(RV32GC) SiFive : HiFive1 Rev.B RISC-V 32-bit(RV32GC) Wireless Module Sipeed : MAIX GO RISC-V 64-bit (RV64IMAFDC) 2019/9/18 48
  28. HiFive Unleashed 50 • SiFive社がリリースしているRISC-Vボード • U54 RV64GCアプリケーションコア x4 •

    最大動作周波数1.5GHz • E51 RV64IMAC管理コア x1 • コヒーレント2MB L2 Cache • 8GB DDR-SDRAM • Gigabit Ethernetポート • 32MB Quad SPI フラッシュメモリ • MicroSD カードコネクタ 2019/9/18
  29. Fedora + GNOME + HiFive Unleashedで Desktop Linux https://abopen.com/news/western-digital-releases-fedora-desktop-on-risc-v-tutorial/ SiFive

    presentation at RISC-V Workshop in Barselona, 2018 May https://content.riscv.org/wp-content/uploads/2018/05/09.25-09.55-tate-of-RISC-V-Software-RISC-V-Workshop-at-Barcelona-May-2018-1.pdfより抜粋 2019/9/18 53
  30. Debianを立ち上げてみる Welcome to Buildroot buildroot login: root Password: [sifive] #

    mount /dev/mmcblk0p2 /mnt # mount -t proc /proc /mnt/proc # cp /etc/resolv.conf /mnt/etc/resolv.conf # chroot /mnt/ /bin/bash # cat /etc/debian_version 10.0 ntpdate ntp.nict.jp export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true export LC_ALL=C LANGUAGE=C LANG=C dpkg --configure -a 2019/9/18 54
  31. Coremarkベンチマークを実行 & マルチコアプログラミング root@buildroot:~/work/riscv/coremark# less ./run2.log 2K validation run parameters

    for coremark. CoreMark Size : 666 Total ticks : 13323 Total time (secs): 13.323000 Iterations/Sec : 2251.745102 Iterations : 30000 Compiler version : GCC8.3.0 Compiler flags : -O3 -DPERFORMANCE_RUN=1 -lrt Memory location : Please put data memory location here (e.g. code in flash, data on heap etc) seedcrc : 0x18f2 [0]crclist : 0xe3c1 [0]crcmatrix : 0x0747 [0]crcstate : 0x8d84 [0]crcfinal : 0xff48 Correct operation validated. See README.md for run and reporting rules. CMK/MHz = 2251.724 / 1500 = 1.5011 あまりにも公称値とずれ過ぎている… CMK/MHz = 2251.724 / 1000 = 2.251 これでも公称値とかなり差異がある… 2019/9/18 55
  32. HiFive Unleashedで マルチコアプログラミングに挑戦 コア0 コア1 コア2 コア3 std::vector<std::thread> threads; for(size_t

    i = 0; i < num_threads; ++i){ double start = static_cast<double>(i) / num_threads; threads.emplace_back(std::thread(worker, start, start + length)); } for(auto& thread : threads){ thread.join(); } 0 2000 4000 6000 8000 1-core 2-cores 4-cores 8-cores 実行時間[ms] 使用コア数 使用コア数を変えたときの 実行時間 2019/9/18 56
  33. 単体FPGAで動かす時代から クラウドでFPGAを動かす時代へ 高性能なFPGAを使いたい… 購入するのはコストがかかりすぎる AWSクラウド上でFPGAを動かすF1インスタンス The best guidance on this

    is to either align with the Freedom repositories that target Arty and ZC707 boards or to use Firesim and migrate to an AWS worflow. Alternatively, you can write your own FPGA shell for whatever board you want to use and build up your own infrastructure and workflow. Fpga-zynq is deprecated, but should be fine if you use it's exact submodules and rebuild everything. Deviating from that will, likely, require modifications on your end (e.g., if you try to use rocket-chip master inside fpga-zynq master). 手元のZYNQボードを騙し騙し使ってRocket-Chipを 動かしていた私に届いた衝撃のメール ただしインスタンスをきちんと管理しないと… 2019/9/18 58
  34. FireSim Easy-to-use, FPGA-accelerated Cycle-accurate Hardware Simulation in the Cloud マネージャインスタンス

    ビルドファーム FPGAデザイン 合成用サーバ c4インスタンス c4インスタンス c4インスタンス c4インスタンス FPGA f1インスタンス FPGA f1インスタンス FPGA f1インスタンス m4インスタンス RISC-Vコアが 動作する FPGA マルチクラスタを構成する場合は m4インスタンスがネットワークスイッ チをエミュレートする。 Amazon Web Service クラウド ランファーム 2019/9/18 59
  35. FireSim FireChip FireChip カスタム アクセラレータ Rocketコア FireChip環境でRocket-Chipを改造する。 FireSimにカスタマイズしたFireSimを組み込み、 オリジナルのコンフィグレーションを作成する。 オリジナル

    FireSimデザイン オリジナルのFireSimデザインを Vivadoで論理合成し、AGFIをAWSクラウド上に 作成する FPGA FireSimデザインをクラウドからダウンロードし、 FPGAインスタンスに書き込む FPGA SW ベンチマークプログラムを実行する。 FireSimでRISC-Vコアを 実行する仕組み 2019/9/18 60
  36. FPGA ワークロード1 Linux ワークロード2 Linux テストしたい コマンド ワークロード3 ベンチマーク1 ベンチマーク2

    ベンチマーク3 FireSim コンフィグ1 FireSim コンフィグ2 FireSim コンフィグ1 FireSimでベンチマークを動かす仕組み: Workloads 2019/9/18 61
  37. 拡張機能RoCCを使ってRocket-Chipをカスタマイズ • RoCC (Rocket Custom Coprocessor) • Rocket Coreとダイレクトに接続 (L1DC,

    External MemoryIFに接続) • RISC-Vのカスタム命令の仕様と直結 CMD RESP RESP CMD Rocket Core L1 D-cache Accelerator CMD RESP External ここを自作することで、 オリジナル命令を作成できる custom0 rd, rs1, rs2 ・rd, rs1, rs2のレジスタアドレス情報 ・rs1, rs2 のレジスタデータ ・デコード情報など × 2つの行列のアドレスと長さを指定して、 自動的にデータをフェッチ+MAD処理をするアクセラレータ = 要素1つ分 計算 2019/9/18 62
  38. FireSimでテストコードの Workloadsを作って実行 FPGA ワークロード3 ベンチマーク1 ベンチマーク2 matrixmul 行列積ベンチマーク FireSim コンフィグ1

    Rocket-Chip Custom- Accelerator 0 0.5 1 1.5 2 2.5 3 3.5 4 2 x 2 x 2 4 x 4 x 4 8 x 8 x 8 16x16x16 18x24x28 性能比率 SWを1とした場合の HW実行の性能向上率 SWに対する性能向上率 HWに対する実行性能 SW実行 HW実行 2 x 2 x 2 327 219 4 x 4 x 4 1024 488 8 x 8 x 8 7041 2527 16x16x16 54559 16118 18x24x28 154808 43806 2019/9/18 63
  39. RISC-V系の学会に出てみたい • https://riscv.org/events/upcoming-events/ を参照されたい。 CARRV 2019 (Third Workshop on Computer

    Architecture Research with RISC-V https://carrv.github.io/ ISCAと併設。 Phoenix, AZ, USA, June 22, 2019 UCBの研究室の人たちがまとめてここで発表してくる。 CHIPS Alliance Workshop https://events.linuxfoundation.org/events/chips-alliance-workshop-2019/register/ CHIPS Allianceのワークショップ June 19, 2019 Sunnyvale, CA Hosted by The Linux Foundation RISC-V Workshop Zurich https://tmt.knect365.com/risc-v-workshop-zurich/ 何回目か分からなくなったRISC-V Workshop。4か月に1回くらい? June 11 - 13, 2019 ETH Zurich, Zurich Hot-ChipsでもRISC-Vのチュートリアルをするらしい。 https://www.hotchips.org/program/ 2019/9/18 66
  40. (おまけ)何かをアウトプットするということ • 毎日ブログを書き続けた結果 毎日ブログを書く あるシンポジウムに呼ばれる(当 時RISC-Vを調べている人はほとん どいなかったので) RISC-V Day Tokyoに呼ばれる

    CQ出版「インターフェース」で 連載の話をもらう MICRO 51(福岡)に呼ばれる xSIG 2019に呼ばれる 自分のやっていることに自信がなければ、とりあえず外部にアウトプットしてみよう。 • 論文を書く、勉強会で発表する、ブログを書く … 何かを継続した、という事実は、きっと自分の大きな自信になります。 2019/9/18 67
  41. まとめ • RISC-Vを取り巻く最新動向についてご紹介しました。 • RISC-Vの開発環境の構築方法について簡単にご説明しまし た。 • RISC-Vボード HiFive Unleashedを使ったプログラミング

    • AWS F1インスタンスを使ったRISC-Vコアカスタマイズ • RISC-Vと、オープンハードウェアで作られるエコシステム が向かう未来について、その一端をご紹介しました。 2019/9/18 68