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
4k
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
470
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
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
1
520
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
130
Railsのように考える: See through the Master
snoozer05
PRO
3
840
あるけみー式LTスライド作成術
alchemy1115
1
210
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
240
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
400
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
100
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
8
920
AI時代、データエンジニアが一番おもろい
genshun9
0
600
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
320
LLMに渡さなかった仕事
nanaism
0
170
Screen Lens - 今見てる画面を翻訳する
komagata
0
290
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
RailsConf 2023
tenderlove
30
1.5k
The SEO Collaboration Effect
kristinabergwall1
1
560
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
From π to Pie charts
rasagy
1
370
Deep Space Network (abreviated)
tonyrice
0
310
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
940
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
The SEO identity crisis: Don't let AI make you average
varn
0
560
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Transcript
RISC-V オープンソース ハードウェア 概説 「FPGA開発日記」 著者 : @msyksphinz_dev 2017/12/18 RISC-V
Day Tokyo 2017 http://msyksphinz.hatenablog.com
RISC-Vちょっと知ってる人のために、 簡単にトライできるオープンソースハードウェアの紹介 • 各社がRISC-Vに対応したコアを発表している中で、UCBの発表した オープンソースコアが提供されている • 手っ取り早くRISC-Vを試すためにはオープンソースデザインがお勧め。 • 最新の仕様に追従しているのでスタート地点としてはおススメ •
オープンソース・ハードウェアについて紹介 RISC-Vに 興味がある? RISC-Vで何を試して みたい? FPGAを持っている? No そんな馬鹿な!? Yes アクセラレータを接続して、 アプリケーションをゴリゴリに最適化したい RISC-Vの仕様について勉強し、 簡単なアプリケーションを動かしてみたい ZedBoard HiFive1でアプリケーション開発 Rocket-ChipとFPGAで 動かして評価 Rocket-ChipをRTL シミュレーション スタート
RISC-Vのオープンソースハードウェアは 半導体業界にとってチャンス • 最先端プロセスは巨大企業しか追従できない • IP, EDA, ウェハ製造費, パッケージ費 …
• 中小企業は追従できず、アイデアはあってもチャンス減 • なるべく自社の「売りの部分」に時間を掛けたい • それ以外の部分(制御コア, 外部I/F)などはなるべく時間を掛けたくない • CPUというSoCの中心部の、実装コストを最小化させる • CPU以外にもチップ内で注力したい部分はたくさんあるはず。 • だったら、CPUはアリモノで早く作って、 「本当に価値のあるところ」に注力したい • 共通の制御コアはRISC-Vでさっさと終わらせよう! • 無料、性能は商用コアに引けを取らない。 ソフトウェアスタックもある程度揃っている。 という選択肢について考えてみてください。
GitHub上に”RISC-V”のすべてが公開されている • コンパイラ・オペレーティングシステム • GCC 7.1でRISC-VがMainstreamに取り込まれた • LLVM/ClangのRISC-Vサポートが lowRISCプロジェクトにより進行中 •
Linuxカーネルは最新のVersion 4.15に対応済み • 各種LinuxディストリビューションがRISC-Vのサポート進行中 • ハードウェアとしては、SiFiveのU54-MC(64bitマルチコアRISC-V SoC)がLinuxをサポート • Linuxだけでなく、BSDもRISC-V対応が進む • 多くのプログラミング言語がRISC-Vへのポートを進めている • 非公式プロジェクトも多いが • C/C++, Go, Rust, Ocaml, Java, Pascal… • GNUライブラリ (Glibc, NewLibなど)もRISC-V移植済み • ※ 筆者もMicroPythonのRISC-V移植を試行 • ISSで動作するところまで確認した。 ※ https://riscv.org/software-status に詳しくまとめられている
RISC-V 開発環境 • 命令セットシミュレータ・エミュレータ • UCB Official Spike Simulator /
Gem5 • QEMU • Angel (JavaScript RISC-V simulator!) • RISCVEMU : QEMU開発者がRISC-V専用 シミュレータを作ってしまった! • SiFiveの提供するFreedom Studio • Eclipseベース • Linux, Mac, Windows対応 • RISC-VボードHiFive1 • Arduino IDEから制御可能 • もちろんただのCPUなのでC/C++のプログラムも実行できる • Freedom-E-SDK • CUIでのプログラム開発。HiFive, Freedom SoC PlatFormに対応 freedom-e-sdk bsp openocd riscv-gnu-toolchain software demo_gpio dhrystone welcome local_interrupt led_fade
オープンソース RISC-Vコア Rocket-Core, BOOM SoC環境 Rocket-Chip Generator, Freedom SoC •
UCBの開発したRISC-V Implementation • Single Issueの5段パイプライン “Rocket-Core” • 2-way/4-wayのOoOコア “BOOMv1”, “BOOMv2” • Rocket-Core, BOOM実装環境 Rocket-Chip Generator • Rocket-CoreやBOOMを内蔵してRTLSim, FPGAで評価することができる。 • SiFive社の開発したSoC環境 Freedom SoC Environment • SiFiveのサポートあり、GitHubからダウンロードできる無料版もある。 • Rocket-Chip Generatorよりも使えるI/Oが揃っている。 無料 ソースコード公開 最新仕様に追従 開発が活発 Rocket-Chip Generator Rocket-Core BOOMv1 BOOMv2 Freedom SoC E31 Core Complex E51 Core Complex U54-MC Core Complex Chiselで記述さ れている
Rocket-Chipの実装言語 “Chisel” • Scalaをベースとしたハードウェア記述言語 • Rocket Chipはすべて”Chisel”で実装してある • 最終的にはVerilogに変換される •
Chiselを使うことにより、合成用言語Verilogと分離する • Chisel→FIRRTL(中間言語)と変換することで、 VHDLなども出せる(一応) • 検証で有利 • Verilogシミュレータを走らせなくても Chisel(≒Scala)で検証パタンを書ける→高速 FIRRTL FPGA Verilog C++ Simulator FIRRTL ASIC Verilog
Rocket-Chip Generator, Freedom SoCの構成方法 • 高いポータビリティ • Chisel(Scala拡張)によるモジュールの切り離し、コンフィグレーションの 構成変更が容易 •
Xilinx ZYNQ FPGA, Arty, Virtex Ultrascaleなどに対応した構成を作成可能 Xilinx ARTY FPGA E300 Freedom SoC E3 Coreplex RV32E/IMACN ROM Debug AON UART SPIFlash SPI GPIO PWM I2C I-Cache 4kB D-Cache 16kB Custom Coprocessor Xilinx ZYNQ FPGA Rocket-Chip Generator RV64GC ROM Debug I-Cache 4kB D-Cache 16kB Custom Coprocessor AXI2TileLink ARM DRAM I/O class DefaultConfig extends Config( new WithNBigCores(1) ++ new BaseConfig) class TinyConfig extends Config( new WithNMemoryChannels(0) ++ new WithIncoherentTiles ++ new With1TinyCore ++ new BaseConfig) Chiselを使って、Rocketの 構成を簡単に変更できる
Chiselを使って お手軽にオリジナルRISC-Vコアを作成 class WithNBigCores(n: Int) extends Config((site, here, up) =>
{ case RocketTilesKey => { val big = RocketTileParams( core = RocketCoreParams(mulDiv = Some(MulDivParams( mulUnroll = 8, mulEarlyOut = true, divEarlyOut = true))), dcache = Some(DCacheParams( rowBits = site(SystemBusKey).beatBits, nMSHRs = 0, blockBytes = site(CacheBlockBytes))), icache = Some(ICacheParams( ... } }) class With1TinyCore extends Config((site, here, up) => { case XLen => 32 case RocketTilesKey => List(RocketTileParams( core = RocketCoreParams( useVM = false, fpu = None, mulDiv = Some(MulDivParams(mulUnroll = 8))), btb = None, dcache = Some(DCacheParams( rowBits = site(SystemBusKey).beatBits, nSets = 256, // 16Kb scratchpad nWays = 1, nTLBEntries = 4, nMSHRs = 0, blockBytes = site(CacheBlockBytes), scratch = Some(0x80000000L))), … blockBytes = site(CacheBlockBytes))))) }) class TinyConfig extends Config( new WithNMemoryChannels(0) ++ new WithIncoherentTiles ++ new With1TinyCore ++ new BaseConfig) Chiselを使って、コアの部品を簡単に着脱・ カスタマイズできる。 ベースのコンフィグレーションに対して、 カスタマイズを行っていく。 VM Support メインパイプライン FPU DIV I-cache 構成 D-cache 構成 I/F
FPGAでの実行環境が用意されている • ZedBoard向けに論理合成→インプリメント • UCBのfpga-zynqリポジトリが便利 • https://github.com/ucb-bar/fpga-zynq • FPGAでのRTLSim高速化なら MIDASの方が良い?
• (https://github.com/ucb-bar/midas-top-release) • インプリメントの手順は非常に単純 • 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 合成ディレクトリ 合成ディレクトリ 合成ディレクトリ
Rocket-Chip Generatorの RTLシミュレーション・FPGAインテグレーション • RTLシミュレーション環境 • VCS/Verilator対応 • ChsielのデザインをVerilogに変換し、シミュレーション実行 •
FPGAで合成して評価する場合 • SRAMの置き換えなどに注意すること • ASIC向け : rocket-chipのリポジトリでは emulator/generated-src/*.behav_srams.v • FPGA向け : Behavior SRAMをBlockRAMに正しく置き換えること • 生成したVerilogの中で配列の部分を抽出して、 モデルとして生成させることも出来る Verilog 0 10000 20000 30000 40000 50000 0 20000 40000 60000 80000 100000 120000 140000 Rocket Default Rocket Small Freedom-E300 BOOM v1 BOOM v2 RISC-V Design 合成結果 Vivado v.2016.2 ZYNQ 7z020-clg484 Total LUT FF FPGA Design RTL Simulation RTLシミュレーション実行の様子
RISC-Vの備えるアクセラレータインタフェースについて • 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 のレジスタデータ ・デコード情報など
Rocket-Chipのカスタマイズ例: Dot Product Acceleratorを作ってRocket Coreに接続 2つの行列のアドレスと長さを指定して、 自動的にデータをフェッチ+MAD処理をするアクセラレータ RoCC I/F は64bitなので、uint32_tを2つフェッチして2-waySIMDで計算した
× = 2-way SIMDで 要素2つ分計算 実装はgithubに公開してあります。 https://github.com/msyksphinz/rocket-chip/tree/feature/matrix32 ハードウェアを使って、メモリのフェッ チ処理とデータの演算処理をオーバラッ プさせることで高速化を狙う CMD RESP RESP CMD Rocket Core L1 D-cache Accelerator CMD RESP External H_addr MAD V_addr Chiselで記述
Rocket-Chipのカスタマイズ例:性能評価 ZedBoardで動作させた SW: ソフトウェアで実行 HW1: ハードウェアで実行
行列積を「行」「列」の順番で実行 HW2: ハードウェアで実行 行列積を「列」「行」の順番で実行 行列のサイズが大きくなると、8倍以上の性能向上 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 2 x 2 x 2 4 x 4 x 4 8 x 8 x 8 16 x16 x16 18 x24 x28 性能比率 行列サイズ ソフトウェア実行を1とした場合の、 ハードウェア実行の性能向上率 SW/SW HW1/SW HW2/SW SW HW1 HW2 2 x 2 x 2 233 119 139 4 x 4 x 4 1094 325 310 8 x 8 x 8 7299 1287 1296 16 x16 x16 58610 8258 7122 18 x24 x28 172256 19581 19565 SW/SW HW1/SW HW2/SW 2 x 2 x 2 1.0 1.958 1.676 4 x 4 x 4 1.0 3.366 3.529 8 x 8 x 8 1.0 5.671 5.632 16 x16 x16 1.0 7.097 8.229 18 x24 x28 1.0 8.797 8.804 ソフトウェア実行を1とした場合 のハードウェア実行の性能向上率 Dot Product Acceleratorを使った 行列積サイクル数 Acceleratorを使って 8倍高速化
まとめ: RISC-V オープンソースデザインは 弱い者の味方 • オープンソースのデザインでRISC-Vをトライ • お金が無くても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 (発表者のブログ)