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. オープンソースCPUアーキテクチャ
    「RISC-V」を中心に変わる半導体の世界
    FPGA開発日記 著者
    @msyksphinz_dev
    2019/05/28 10:00 – 11:30 慶應義塾大学 藤原洋記念ホール
    http://msyksphinz.hatenablog.com
    2019/9/18 1

    View full-size slide

  2. 目次

    RISC-Vの概要
    RISC-Vの命令セット仕様
    RISC-Vで広がるエコシステム
    HiFive Unleashedを動かしてみる
    クラウドRISC-V環境FireSimを
    動かしてみる
    まとめ
    ALL PLAY CHAPTER
    2019/9/18 2

    View full-size slide

  3. RISC-Vとは
    • カリフォルニア大学バークレイ校(UCB)が2011年から公開している
    新しい命令セットアーキテクチャ
    • シンプルかつオープン、しかしLinuxが動くまでにはしっかりしている
    • かつ、自由にカスタマイズ可能
    • RISC-Vの仕様を決定する非営利団体”RISC-V Foundation”
    • ISA仕様と特定の企業を完全に分離する。
    • GoogleやNVIDIAなどがメンバーに加入し注目を浴びる
    • 2019年5月現在で加盟団体・企業は250に迫る
    2019/9/18 3
    RISC-V Foundationの加盟団体数の推移

    View full-size slide

  4. 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をベースとしたプラット
    フォームのディスカッション

    View full-size slide

  5. 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

    View full-size slide

  6. 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

    View full-size slide

  7. Turing Award 2017 を受賞した
    David A. PattersonがRISC-Vを推す
    7
    https://sdtimes.com/devexec/john-l-hennessy-david-patterson-awarded-2017-acm-m-
    turing-award-risc-approach/
    David Patterson & Andrew Waterman
    “RISC-V Reader : An Open Architecture Atlas”
    2019/9/18

    View full-size slide

  8. コンピュータアーキテクチャの教科書が次々とRISC-Vに移行
    8
    コンピュータの構成と設計 Computer Architecture:
    A Quantitative
    RISC-V原典
    オープンアーキテクチャのススメ
    原本: RISC-V Reader
    Patterson先生が書いた。10/22新発売
    2019/9/18

    View full-size slide

  9. 気づかぬ間に浸透しています “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

    View full-size slide

  10. 急速に脚光を浴びる
    「オープンソースハードウェア」
    • CPUコアは高い
    • ハードウェア設計をするのはコストが高い
    • 最先端プロセスを使うのは非常にコストがかかる
    ソフトウェア業界に比べてハードウェア業界は参入の敷居が高い(気がする)。
    少しずつ状況は変わりつつある、気がする
    • CPUコア・デジタル部はオープンソース化が進む
    2019/9/18 10

    View full-size slide

  11. 各種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

    View full-size slide

  12. 機械学習だってオープンハードウェア : 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

    View full-size slide

  13. オープンハードウェアがもたらすメリット
    アーキテクチャの研究がしたい。
    新しいキャッシュのアルゴリズムを考えた!
    検証しなきゃ。
    ターゲットアーキテクチャをどうしようかなあ…
    Arm? ライセンス高くて使えない。改造できない…
    自分でArmプロセッサを作るのは(ISAのライセンス的にダメだし)
    時間がかかるし…
    MIPS?メジャーでないISA(失礼)を使って
    検証するのはどうだろう。
    仕様が複雑だし…
    ISAとプロセッサ自分で作る?
    コンパイラはどうするの?
    OS、ライブラリは?
    2019/9/18 13

    View full-size slide

  14. 研究者・学生こそ「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

    View full-size slide

  15. RISC-Vの仕様を少し
    眺めてみる
    2019/9/18 15

    View full-size slide

  16. RISC-Vはシンプルな命令セット仕様
    16
    ARM Manual
    6000ページくらい
    RISC-V Manual
    200ページくらい
    どっちが良いかは別にして…
    もはや凶器
    2019/9/18

    View full-size slide

  17. RISC-Vの命令セットを
    Webで参照できるページを作りました
    17
    https://msyksphinz.github.io/riscv-isadoc/html/index.html

    View full-size slide

  18. 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

    View full-size slide

  19. RISC-Vの特権モードと動作モード
    • 3種類の動作モードが定義されている
    • 最初の版では4種類だったが削減されて3種類
    • ユーザモード
    • 最も権限の少ないモード。アプリケーションを動かすためのモード
    • スーパバイザモード
    • OSが例外処理などを行うための権限の高いモード。
    • ハイパーバイザモード
    • 正式な仕様には入っていないが、現在Draft作成中。
    • マシンモード
    • 最も権限が高い。マシンモード。何でもできる
    • モード間の遷移について
    • 外部から割り込み挿入 or 命令実行中に例外発生
    • ECALL命令によるSupervisor Call
    • 例外処理後に実行するMRET / SRET / URET
    19
    マシンモード
    スーパバイザモード
    ユーザモード
    2019/9/18

    View full-size slide

  20. C命令系列 (Compressed命令)
    • RISC-Vの通常命令は32-bit
    • C命令系列は16ビット長
    • RISC-Vの命令種はシンプルな分、命令密度が低い
    • 16-bit長命令を使ってマイクロアーキテクチャの面で効率を上げる
    20
    RD  RD + RS1
    RD  RD + IMM
    Stack-relative Store
    Compact Load
    Compact Store
    Compact Jump
    2019/9/18

    View full-size slide

  21. なんで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

    View full-size slide

  22. その他にも、性能方向に振るなら頑張ってね
    22
    そもそも命令密度において優位性が無いので、マイクロアーキテクチャにより
    実行性能を上げるしかない。
    実行時に複数命令をFusionさせて発行することで、性能を向上させる
    → Micro-Op Fusion
    Computer Architecture Research with RISC-V より抜粋
    2019/9/18

    View full-size slide

  23. RISC-Vの拡張命令
    • RISC-Vの命令系列にはカスタム領域が存在する
    • 将来のための予約領域 (現時点では好き勝手に使うことも?)
    23
    実はRISC-Vの命令セットは64-bit長の領域が定義されている
    2019/9/18

    View full-size slide

  24. 仮想メモリ
    • 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

    View full-size slide

  25. ベクタ命令
    • 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

    View full-size slide

  26. 動的レジスタ・タイピング
    • 普通のベクトル命令・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

    View full-size slide

  27. 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

    View full-size slide

  28. 仕様書を読んで感じた、
    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

    View full-size slide

  29. 仕様書を読んで感じた、
    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/コルーチン

    View full-size slide

  30. RISC-Vと
    エコシステム
    2019/9/18 30

    View full-size slide

  31. 作られるのはISAだけじゃない
    2019/9/18 31

    View full-size slide

  32. RISC-Vを見ておけば、コンピュータ
    サイエンス技術全般を網羅できる
    2019/9/18 32

    View full-size slide

  33. RISC-Vを中心に発展するエコシステム
    • RISC-Vを中心としたセキュリティプラットフォームの開発
    「RISC-Vの狙いと、IoT、AIエッジセキュリティの実現」より抜粋
    ET/IoT Technology NAGOYA 2019【K-1】 2019/02/06
    http://www.jasa.or.jp/etnagoya/seminar/doc/doc_k01.pdf
    RISC-V Summit 2018 “Keystone Enclave”より抜粋
    https://keystone-enclave.org/files/keystone-risc-v-summit.pdf
    2019/9/18 33

    View full-size slide

  34. RISC-Vが拡充するCHIPS Alliance
    • Linux Foundationが中心となり、オープン
    ソースハードウェアを中心としたCPU・SoCの
    製品化を促進する
    UVM(Universal Verification Methodology)
    ベースの命令ストリームジェネレータの提供
    オープンソースハードウェア
    記述言語Chiselの開発
    オープンバスプロトコル
    TileLinkの開発
    SystemVerilogで記述されたDual-
    Issue RISC-Vプロセッサの開発
    2019/9/18 34

    View full-size slide

  35. バスプロトコル TileLink
    • RISC-Vの実装でよく出てくるバスプロトコル
    • OCP, AXI, TileLink…
    • キャッシュコヒーレントをサポート
    • MOESIプロトコルに相当
    • RISC-Vの実装”Rocket-Chip”がこの
    プロトコルを使っている。
    2019/9/18 35

    View full-size slide

  36. オフチップ間通信技術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

    View full-size slide

  37. 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

    View full-size slide

  38. 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
    ただ聞いている話だと
    まだいろいろ不備があり
    改善が必要…
    ただ聞いている話だと
    まだいろいろ不備があり
    改善が必要…

    View full-size slide

  39. 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

    View full-size slide

  40. SiFive Core DesignerでWebでSoC設計
    2019/9/18 41
    https://www.sifive.com/core-designer

    View full-size slide

  41. SiFive Core Designer
    WebでSoC設計
    (経験上の)これまでのSoC設計
    CPUベンダのフロントエンドの
    営業と打ち合わせ
    フロントエンドが本社設計
    チームに問い合わせ
    カスタマイズコアを
    本社が生成開始
    カスタマイズコアがリリース
    IPを接続する&検証
    性能検証
    レイアウト
    テープアウト
    1週間経過
    1週間経過
    1週間経過
    WebでSoCのカスタマイズをする
    その環境をダウンロードする
    IPを接続する & 検証
    性能検証
    レイアウト
    テープアウト
    Core Designerでのクラウド設計
    2019/9/18 42

    View full-size slide

  42. コアの検証どうすんのさ?
    実チップ?FPGA?いえいえ、AWS
    大規模FPGAの購入にはかなりのコスト高。200~300万円
    FPGAを常に手元に置いておく必要がない。
    必要な時に必要な分だけコストがかかる。
    → コストダウン・参入障壁を下げる一要因になることを期待
    名前 FPGA vCPU Memory SSD Storage Cost/h
    f1.2xlarge 1 8 122 GB 470 GB 1.65 USD
    f1.4xlarge 2 16 244 GB 940 GB 3.30 USD
    f1.16xlarge 8 64 976 GB 4 x 940 GB 13.20 USD
    2019/9/18 43

    View full-size slide

  43. 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

    View full-size slide

  44. Open-Hardwareの目指すところ
    • 命令セットだけじゃない、ハードウェア設計・CPUアーキ
    テクチャをオープンに議論できる環境を構築する
    • 例: Meltdown / Spectre
    • 例: Memory Consistency Model of RISC-V
    • RISC-Vのメモリコンシステンシモデルのバグを大学が発見
    多くの人が開発に参加できるように 多くの人が議論に参加できるように
    ハードウェア開発の参入障壁が下がる
    ハードウェア開発に関わる人が増える
    ハードウェア開発者のすそ野が広がる
    2019/9/18 45

    View full-size slide

  45. 「俺にはRISC-V関係ない」と思っていても、
    自分の研究分野に関連する項目が
    ちょっとはあるはず。
    2019/9/18 46

    View full-size slide

  46. 9/18/2019
    RISC-Vを
    動かしてみましょう
    47

    View full-size slide

  47. 現状入手可能な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

    View full-size slide

  48. RISC-V PC
    https://abopen.com/news/building-a-risc-v-pc/
    2019/9/18 49

    View full-size slide

  49. 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

    View full-size slide

  50. Linuxも立ち上がる
    • デフォルトでBuildrootのインストールされた
    uSDカードがついてくる。
    • 他のLinux Distributionも立ち上げることができる
    • Debian GNU/Linux
    • Fedora
    2019/9/18 51

    View full-size slide

  51. DebianがRISC-Vに急速に対応
    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
    Debian GNU/Linux is imported
    and “apt-get” worked!
    2019/9/18 52

    View full-size slide

  52. 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

    View full-size slide

  53. 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

    View full-size slide

  54. 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

    View full-size slide

  55. HiFive Unleashedで
    マルチコアプログラミングに挑戦
    コア0 コア1 コア2 コア3
    std::vector threads;
    for(size_t i = 0; i < num_threads; ++i){
    double start = static_cast(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

    View full-size slide

  56. クラウド+FPGAで
    より多くのチャンスを
    2019/9/18 57

    View full-size slide

  57. 単体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

    View full-size slide

  58. 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

    View full-size slide

  59. 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

    View full-size slide

  60. FPGA
    ワークロード1
    Linux
    ワークロード2
    Linux
    テストしたい
    コマンド
    ワークロード3
    ベンチマーク1
    ベンチマーク2
    ベンチマーク3
    FireSim
    コンフィグ1
    FireSim
    コンフィグ2
    FireSim
    コンフィグ1
    FireSimでベンチマークを動かす仕組み:
    Workloads
    2019/9/18 61

    View full-size slide

  61. 拡張機能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

    View full-size slide

  62. 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

    View full-size slide

  63. まとめ
    2019/9/18 64

    View full-size slide

  64. コンピュータアーキテクチャの研究者へ
    • これからはコンピュータアーキテクチャの時代?
    「ムーアの法則は収束する。これからはコンピュータアーキテクチャの時代だ」
    10年後
    私「ムーアの法則全然収束しとらんやないか。なんや3nmって。」
    RISC-Vの研究をする、というよりもその周辺のエコシステムで勝負だ。
    できることはたくさんある。アーキテクチャ、コンパイラ、ハードウェア
    生成、ベンチマークプログラム、オペレーティングシステム、チップ内バ
    スプロトコル、チップ間プロトコル、セキュリティ機能、機械学習、クラ
    ウド設計、SoCの自動生成…
    2019/9/18 65

    View full-size slide

  65. 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

    View full-size slide

  66. (おまけ)何かをアウトプットするということ
    • 毎日ブログを書き続けた結果
    毎日ブログを書く
    あるシンポジウムに呼ばれる(当
    時RISC-Vを調べている人はほとん
    どいなかったので)
    RISC-V Day Tokyoに呼ばれる
    CQ出版「インターフェース」で
    連載の話をもらう
    MICRO 51(福岡)に呼ばれる
    xSIG 2019に呼ばれる
    自分のやっていることに自信がなければ、とりあえず外部にアウトプットしてみよう。
    • 論文を書く、勉強会で発表する、ブログを書く …
    何かを継続した、という事実は、きっと自分の大きな自信になります。
    2019/9/18 67

    View full-size slide

  67. まとめ
    • RISC-Vを取り巻く最新動向についてご紹介しました。
    • RISC-Vの開発環境の構築方法について簡単にご説明しまし
    た。
    • RISC-Vボード HiFive Unleashedを使ったプログラミング
    • AWS F1インスタンスを使ったRISC-Vコアカスタマイズ
    • RISC-Vと、オープンハードウェアで作られるエコシステム
    が向かう未来について、その一端をご紹介しました。
    2019/9/18 68

    View full-size slide