Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

コアの検証どうすんのさ? 実チップ?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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

まとめ 2019/9/18 64

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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