Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
さわって分かるオープンソースプロセッサ「RISC-V」の世界
Search
msyksphinz
December 28, 2017
Technology
4.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
さわって分かるオープンソースプロセッサ「RISC-V」の世界
msyksphinz
December 28, 2017
More Decks by msyksphinz
See All by msyksphinz
オープンソースでどこまでできる?フォーマル検証チャレンジ
msyksphinz
0
480
LiteXとオレオレCPUで作る自作SoC奮闘記
msyksphinz
0
2.1k
ハイパフォーマンスCPUの作り方_アーカイブ用.pdf
msyksphinz
0
89
作って学ぶ コンピュータアーキテクチャ 出版にあたっての経験談
msyksphinz
1
1.8k
次世代を担うオープン命令セットアーキテクチャRISC-Vの最新動向
msyksphinz
3
5.7k
Rustで作るフルスクラッチQEMU型エミュレータ
msyksphinz
8
4.9k
ハードウェア記述言語Chiselを もっと活用するためのDiplomacy概説
msyksphinz
1
1.9k
ますます注目される オープンCPUアーキテクチャ RISC-Vの最新動向
msyksphinz
2
3k
オープンソースCPUアーキテクチャ 「RISC-V」を中心に変わる半導体の世界
msyksphinz
1
2.8k
Other Decks in Technology
See All in Technology
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
4
640
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
940
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
120
CLIライブラリ開発を支える技術
htnabe
0
120
What the customer really needed
kawaguti
PRO
3
210
おい、エージェントを使って終わらせろ
nwiizo
1
620
2026_devsumi_ozono.pdf
o3
3
520
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
5
640
SREは、MCPとAutopilotをこう使え!
kazumax55
3
870
映像変換サーバーなしで端末内でHLSを生成してライブ配信
hikarusato
0
120
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
130
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
230
Featured
See All Featured
My Coaching Mixtape
mlcsv
0
310
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Fireside Chat
paigeccino
43
4k
New Earth Scene 8
popppiees
4
2.6k
Paper Plane
katiecoart
PRO
4
53k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
GraphQLとの向き合い方2022年版
quramy
50
15k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
Game over? The fight for quality and originality in the time of robots
wayneb77
1
280
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
We Are The Robots
honzajavorek
0
380
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Transcript
さわって分かる オープンソースプロセッサ 「RISC-V」の世界 FPGA開発日記 著者 @msyksphinz_dev http://msyksphinz.hatenablog.com 2017年10月13日 デザインソリューションフォーラム トラックB3
12:00 – 12:40
今回の発表について • RISC-Vは何となく聞いたことあるけど、積極的に触っ たことが無い方をターゲットに • 3年間、RISC-Vについて調査し続けた発表者の体験から紹介 何故注目を 浴びているのか? まず何から始めれば良いのか? Rocket-Chip
HiFive1
RISC-Vの概要と、発展の歴史
RISC-Vとは • カリフォルニア大学バークレイ校(UCB)が2011年から公開して いる新しい命令セットアーキテクチャ • シンプルかつオープン、しかしLinuxが動くまでにはしっかりしている • かつ、自由にカスタマイズ可能 • MIPSと少し似ているが、MIPSの「膿」を除去し現代向けに再設計
• 例 : 遅延スロットは無い, 乗除算向けのHILOレジスタが無い、など • RISC-Vの仕様を決定する非営利団体”RISC-V Foundation” • GoogleやnVIDIAなどがメンバーに加入し注目を浴びる • RISC-Vを商用化するベンチャー企業 “SiFive” • 世界初のRISC-V向けASICチップを商用化する 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
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開催 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
手っ取り早くRISC-Vを試すために (情報収集方法) RISC-V メーリングリスト, github Wikiなど sifive.com メーリングリスト 書籍、雑誌など ブログなど
1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
再編は続いても、拡大し続ける半導体市場 一方でプロセスが進むごとに 開発コストは急増 新製品の開発コストは微細化と共に増加 出典:IBS、Semiconductor Engineering https://www.semiconportal.com/archive/editorial/industry/140424-chipcost.html 大型プレーヤーでないと先端 プロセスを使えない時代に。 RISC-Vの発展の歴史を見る中で…
最近の半導体市場ってどうよ? 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
半導体産業はより一強化 & かつてのソフトウェア企業も参入 • 最先端プロセスは巨大企業しか追従できない • IP, EDA, ウェハ製造費, パッケージ費
… • 中小企業は追従できず、アイデアはあってもチャンス減 • なるべく自社の「売りの部分」に時間を掛けたい • それ以外の部分(制御コア, 外部I/F)などはなるべく時間を掛けたくない • (本音) CPUなんかに時間掛けていられない • もはや組み込み業界で、制御用CPUに価値を置くことは無いのでは?(予想) • だったら、アリモノで早く作って、 「本当に価値のあるところ」に注力したい • 共通の制御コアはRISC-Vでさっさと終わらせよう! • タダだし、(そこそこ)性能良いし、 ソフトウェアスタックもある程度揃っている。 という選択肢もあるのでは 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
無理に”RISC-V”に注目する必要はない、ただ • お金がない中小企業こそ、「RISC-V」に目を向けてほしい • 理由その1. コスト面 • すべてオープン (すべてのソース・ドキュメントはgithubに置いてある) •
ソフトウェアもそれなりにある (Linux動く) • 理由その2. 充実したデザイン・設計環境 • UCBの設計したデザインでも複数種類ある 「Rocket Core」「BOOMv1」「BOOMv2」 • FPGAがあれば、すぐさまダウンロードして試行できる環境がある • 番外編: 企業とか関係なく、純粋に「RISC-V」が面白い理由 • RISC-Vの仕様が公開されたのはまだ数年前の話 • 仕様はまだバージョンアップしています (最近は落ち着きました) • 2015年当初は、制御レジスタの仕様が公開されたばかりだった。 • メーリングリストがかなり活発。様々な人が意見を出して、仕様が決まって いく。 すぐさま!誰でも!始められます CPUを自分で育てられる!なかなか無い体験! 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
手っ取り早くRISC-Vを試すために (ボード編) • 既存のもの、UCBからリリースされているものを中心に紹介 • 何はともあれ使ってみたい、という方向け。 • 趣味の成果の紹介なので「やってみた」感はあることにご注意 Arduino互換 RISC-Vチップ
HiFive-1 FPGAで動くカスタマイズ可能な 64-bit RISC-Vデザイン Rocket-Chip
世界初のRISC-V商用チップ HiFive1
初の商用RISC-V評価ボード “HiFive1” • SiFive社から発売 • 日本だとボード1枚につき10,000円で入手可 • Raspberry-Pi3よりも高い • 主な仕様
• RV32IMAC (32bitモード、HW Mult/Div搭載、Atomic搭載、Compact命 令搭載) • 64bitアドレッシング搭載なし、FPU搭載なし • シングルコアなのにAtomic搭載、と言われてもなあ • 最大動作周波数320MHz, L1IC 16kB, L1DC 16kB • SPIフラッシュ 128Mbit (L2,L3が無いのでL1とのギャップがヒドい) • あくまでフラグシップボードなので細かい仕様は見逃してやるか… • 高速動作の割にインタフェースが少ないので、何に使うん だと迷った人も多いのでは 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
様々な開発環境を用意している • RISC-Vのアピールチップだと思えば 何ということはない • HiFive1を制御するアプローチはさまざま • Windows, Linux, MacOSどれでも可
• GUI, CUIなど様々な環境が用意されている • Lチカ、ベンチマークプログラム動作 くらいなら一瞬で出来る • 立ち上げは超お手軽 • GUIでも開発できる • Freedom Studio • Windows • Linux • MacOS 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
GUIが嫌いな人のための、”Freedom-SDK”開発環境 • https://github.com/sifive/freedom-e-sdk • HiFive1構成用riscv-tools、ベンチマークプログラム、サンプルプログラムなど 一通り揃う • printf、getc的な物も使える freedom-e-sdk bsp
openocd riscv-gnu-toolchain software demo_gpio dhrystone welcome local_interrupt led_fade mnist ここにプログラムを追加 # software/demo_gpioをコンパイル $ make software PROGRAM=demo_gpio # software/demo_gpio を Hifive1にupload $ make upload PROGRAM=demo_gpio # HiFive1のコンソールを出力を取得 $ screen /dev/ttyUSB1 115200 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
HiFive1を使ってちょっと複雑なプログラムを実行してみたい • 最近流行りのニューラルネットワークをHiFive1に移植して動作させる • ターゲットアプリケーション: MNIST (数字文字認識) • 今回は推論の部分のみ •
学習フェーズはx86で実施 パラメータを抽出 参考にした本: ゼロから学ぶDeep Learning 全部Pythonで書いてあるのでC言語に移植 ※ 発表者はディープラーニング初心者なので、あまり詳細な ことは知りません。 性能評価などもあまり突っ込んだことはしていません… 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip 入力値 Batch_Size 28x28 重み W0 28x28 Hidden_size × Affine1 出力 Batch_Size Hidden_Size 1. Affine1 Affine1 出力 Batch_Size Hidden_Size ReLU 出力 Batch_Size Hidden_Size 2. ReLU Batch_Size 重み W1 Hidden_Size 10 × ReLU 出力 Batch_Size Hidden_Size 3. Affine2 Batch_Size 10 Batch_Size 4. Softmax Affine2 出力 10 Affine2 出力 10 Softmax 出力 重み b0 + 重み b1 + 図. 実装した主な演算
MNISTを動かした! • x86と同等の認識率を、HiFive1上の実装でも確認 • 90%以上の認識率で動作 • Arduino互換チップとしてはなかなか強力 • 320MHzで動くArduinoチップは他に無いのでは? •
課題: • L1Dキャッシュが小さい & SPIフラッシュメモリへのアクセスが遅い • 学習済みパラメータのアクセスが異常に遅くなって しまう。 • SPIフラッシュのRead: Latency=160cycle程度 • 28x28 (MNISTの画像1枚)x10バイトのデータに 必要なアクセスサイクル • 1220472サイクル。想定するレイテンシよりもちょっ と長すぎる。 L1D以外にデータ格納領域が(SPIしか)無いので、L1Dを溢れさせないように注 意して実行する必要がある。 キャッシュ容量を増やしてほしい & 2次大容量キャッシュを! 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
HiFive1で「ちょっとだけ」複雑なプログラムを動かした感想 • まだまだ「お遊びガジェット」の領域を抜けない • 320MHz高速動作の割に、足回りが弱すぎる & SPIが無駄にでかい • 個人的にHiFive2(?), 3
…に期待すること • キャッシュ強化, DDRなど接続できること希望 • (Officialに)オペレーティングシステムをサポートして欲しい • 64bitアドレッシングモードをサポートして欲しい • とは言え、RISC-Vプラットフォームの幅広さを感じさせる一品 • Eclipse, GDB, Arduino, Baremetal, … • HiFive1をさらに小型に!”LoFive1” 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
でも、RISC-Vは進化しています E31 Coreplex E51 Coreplex U54-MC Coreplex RV32IMAC: 32bit RISC-V
Core Integer only, Hardware Multiplier, など RV64IMAC: 64bit RISC-V Core Integer only, Hardware Multiplier, など NEW! SiFiveからQuad CoreのSoC環境がリリースされた。 SiFiveボードとして発売して欲しい! RV64IMAFD x4: 64bit RISC-V Core, Integer, Float, Doubleなど RV64IMAC: 64bit RISC-V Core 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
カスタム可能なRISC-V実装 Rocket Chip
RISC-V Implementationの代表格「Rocket-Chip」 • UCBの開発したRISC-V Implementation • XilinxのFPGAボードならばサポート ZedBoard Zybo ZC706
HiFive1の中身も実際は Rocket Chip(32-bit) RISC-V RV32IMAC SiFiveの提供するCoreplex-IPも実体は Rocket Chip(32-bit, 64-bit) Rocket-ChipのRTLシミュレーションと ソフトウェアデバッグの様子 無料 ソースコード公開 最新仕様に(かなり)追従 開発が活発 Chiselって何? どうやって動かすの? カスタマイズの方法が分からん 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
Rocket-Chipの実装言語 “Chisel” • Scalaをベースとしたハードウェア記述言語 • Rocket Chipはすべて”Chisel”で実装してある • 最終的にはVerilogに変換される •
Chiselを使うことにより、合成用言語Verilogと分離する • Chisel→FIRRTL(中間言語)と変換することで、 VHDLなども出せる(一応) • 検証で有利 • Verilogシミュレータを走らせなくても Chisel(≒Scala)で検証パタンを書ける→高速 FIRRTL Verilog 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
FPGA への実装 • ZedBoard向けに論理合成→インプリメント • UCBのfpga-zynqリポジトリが便利 • (https://github.com/ucb-bar/fpga-zynq) • インプリメントの手順は非常に単純
• cd zedboard; make • 合成後binファイル (.bin) • FSBL, U-Boot, BOOT.binなどZynqの起動に必要なもの • PS部(ARM)で動作させるPeta-Linuxのビルド • RISC-Vで動作させるLinuxのビルド • 全部自動でやってくれる! • このフレームワークはRISC-Vだけで 使うのはもったいない • SDカードに書き込むファイル群が ディレクトリにまとめて生成させるので、 SDカードにコピーするだけ fpga-zynq rocket-chip zedboard zynq zc706 sub-repo 合成ディレクトリ 合成ディレクトリ 合成ディレクトリ 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
Rocket-Chipの拡張機能 RoCC • 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 のレジスタデータ ・デコード情報など 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
Dot Product Acceleratorを作って Rocket Coreに接続した × 2つの行列のアドレスと長さを指定して、 自動的にデータをフェッチ+MAD処理をするアクセラレータ = 要素1つ
分計算 実装はgithubに公開してあります。 http://github.com/msyksphinz/xxx ハードウェアを使って、メモリ のフェッチ処理とデータの演算 処理をオーバラップさせること で高速化を狙う CMD RESP RESP CMD Rocket Core L1 D-cache Accelerator CMD RESP External H_addr MAD V_addr 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
性能評価 ZedBoardで動作させた SW: ソフトウェアで実行 HW1: ハードウェアで実行
行列積を「行」「列」の順番で実行 HW2: ハードウェアで実行 行列積を「列」「行」の順番で実行 行列のサイズが大きくなると、約4倍の性能向上 行列積の計算の順番で、キャッシュのヒット率が変わる? 0 20000 40000 60000 80000 100000 120000 140000 160000 180000 2 x 2 x 2 4 x 4 x 4 8 x 8 x 8 16 x16 x16 17 x23 x27 サイクル数 行列サイズ Dot Product Acceleratorを使った行列積 サイクル数 SW HW1 HW2 0.0 1.0 2.0 3.0 4.0 5.0 2 x 2 x 2 4 x 4 x 4 8 x 8 x 8 16 x16 x16 17 x23 x27 性能比率 行列サイズ ソフトウェア実行を1とした場合の、 ハードウェア実行の性能向上率 SW/SW SW HW1 HW2 2 x 2 x 2 221 145 178 4 x 4 x 4 1284 512 539 8 x 8 x 8 8336 2510 2590 16 x16 x16 66735 16099 16161 17 x23 x27 164199 39571 39877 表1. サイクル数 SW/SW HW1/SW HW2/SW 2 x 2 x 2 1.000 1.524 1.242 4 x 4 x 4 1.000 2.508 2.382 8 x 8 x 8 1.000 3.321 3.219 16 x16 x16 1.000 4.145 4.129 17 x23 x27 1.000 4.149 4.118 表2. 性能向上比率 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
Chisel+Rocket Chipでアクセラレータを作った感想 • Chiselは「高位合成言語」ではない • Chiselの学習コスト ××× • Chiselで開発するとき、脳内は「Verilogモード」 •
ほとんどの高位合成系だってそうだと思いますが。CだろうがPythonだろうが… • インタフェースは仕様として公開されて いるので、Verilog得意な人はVerilogで 書いた方がベター • その方が過去の資産なども 使いまわしやすいでしょう。 • RoCCのインタフェース自体は 非常に便利なので積極的に活用すべき Chisel勉強+簡単なデザ インをChiselで動かす 行列積のアイデアを固める ソフトで実装 Chiselで実装 RTLSim → FPGA動作 学習コストさえ 払えば、Chiselの利用やRoCC の開発は障壁は高くない 1. RISC-Vの概要 2. HiFive1 3. Rocket-Chip
まとめ: RISC-Vは弱い者の味方 • お金が無くてもRISC-Vってトライできる • いろんな手段が用意されてます! • FPGAボードを使う : カスタムデザインでゴリゴリに最適化
• 評価ボードを買う : 簡単にアプリケーション評価可能 • まずは資料を探してみよう • https://riscv.org/specifications/ (RISC-Vの仕様書一覧) • https://www.sifive.com (SiFiveのWebSite) • https://github.com/freechipsproject/rocket-chip (Rocket Chip) • https://github.com/sifive/freedom-e-sdk (Freedom SDK) • http://msyksphinz.hatenablog.com (発表者のブログ)