AMD MicroBlaze Vプロセッサ: FPGA向け柔軟なRISC-Vソフトコア
(xilinx.com)- AMD MicroBlaze Vは、AMD adaptive SoCおよびFPGAに組み込んで使用するソフトコアRISC-VプロセッサIPで、VivadoおよびVitisの設計フローに統合されている
- 既存のMicroBlaze設計とのハードウェア互換性を維持しつつ、RISC-V ISAベースのソフトウェア移植性とオープンソースエコシステムの活用を狙っている
- RV32I・RV64Iの基本命令セットを構成でき、M/A/F/C拡張とZBa, ZBB, ZBc, ZBsビット操作拡張を選択可能
- マイクロコントローラからアプリケーションプロセッサまでプリセット構成が用意され、4種類のパイプラインオプションとdual-core lockstep、TMRなどの安全機能を含む
- Vivado Design SuiteがサポートするすべてのAMD adaptive SoCまたはFPGAデバイスを追加費用なしでターゲットにできるが、RV64IとMemory Protection UnitはEarly Accessで、Memory Management Unitはロードマップ段階にある
AMD adaptive SoCとFPGA向けRISC-Vソフトプロセッサ
- AMD MicroBlaze Vは、AMD adaptive SoCおよびFPGA向けのソフトコアRISC-VプロセッサIP
- RISC-V命令セットアーキテクチャ(ISA)を基盤とし、組み込みシステムアプリケーションに合わせてモジュール式に構成可能なアーキテクチャを提供する
- 開発者は、Vivado Design SuiteがサポートするAMD adaptive SoCまたはFPGAデバイスにMicroBlaze Vを追加費用なしでターゲットできる
- RISC-Vは、非営利団体のRISC-V Foundationが管理するオープンソース標準ISAであり、AMDは2020年からメンバーとなっている
RISC-V ISA構成と移植性
- MicroBlaze Vは、業界全体のソフトウェアおよびソリューションエコシステムに支えられたオープンソースISAを基盤とする
- 設計目標は、既存のMicroBlazeプロセッサ設計のハードウェア移行を容易にし、RISC-V設計のソフトウェア移植性を高めることにある
- 構成可能なISAサポート範囲:
- RV32IおよびRV64I Base Integer Instruction Set
- 乗算・除算のためのM拡張
- 原子的命令のためのA拡張
- 浮動小数点のためのF拡張
- コード圧縮のためのC拡張
- ビット操作のためのZBa, ZBB, ZBc, ZBs拡張
- コード圧縮機能は、コードサイズを縮小し、設計メモリを節約するために使われる
アーキテクチャ、性能、安全機能
- マイクロコントローラからアプリケーションプロセッサまで、さまざまなアプリケーション範囲に合わせたプリセット構成を選択できる
- 面積または性能の最適化に向けて4種類のパイプラインオプションを提供する
- 安全性が重要なシステム向けの選択式安全機能も含まれる
-
Dual-core lockstep
- Triple modular redundancy(TMR)
-
Vivado・Vitisベースの設計フローと周辺機器
- MicroBlaze Vは、Vivado Design SuiteおよびVitis software toolsに統合された設計フローを提供する
- Vivado設計ツールがサポートするすべてのAMD adaptive SoCとFPGAに対応する
- グラフィカルユーザーインターフェイス(GUI)とコマンドラインインターフェイス(CLI)で利用できる
- 最適化されたIPを活用し、プログラマブルロジック内に統合MicroBlaze Vプロセッササブシステムを配置でき、システム構成要素数と開発時間の削減を目指す
- ドラッグ&ドロップ方式で追加できる主な周辺機器カテゴリ:
- General Purpose: Multichannel DMA, Streaming FIFO, Timer / Watchdog, Mutex / Mailbox
- I/O: UART, USB 2.0, SPI, GPIO, PWM
- Video: HDMI Camera/Display Interface, MIPI-CSI, MIPI-DSI, Video DMA
- Memory: DDR, Quad SPI, SDRAM
- Networking: Ethernet Subsystem, Controller Area Network
例示構成、文書、サポート状況
- 例示設計構成は、MicroBlaze V MicrocontrollerとMicroBlaze V with Memory Protection Unitの2種類
-
MicroBlaze V Microcontroller構成
- 32-bit Processor Core RV32IMAFC
- JTAG Debug Interface
- Tightly Coupled Local Memory
- SPI controller, I2C Controller, UART
- Interrupt Controller, Timer, GPIO
-
MicroBlaze V with Memory Protection Unit構成
- Microcontroller Preset Blocks全体
- Instruction Cache
-
Memory Protection Unit
- Data Cache
- Memory Controller
-
サポート文書とリソース
- MicroBlaze V Processor Quick Start Guide: プロセッサプリセット設計を使って基本的なAMD MicroBlaze Vプロセッサシステムを構築する手順を案内
- MicroBlaze V Processor Reference Guide: AMD Vivado Design Suiteに含まれる32ビットおよび64ビットMicroBlaze Vソフトプロセッサの情報を提供
- MicroBlaze Debug Module V Product Guide: 1つ以上のMicroBlaze VプロセッサをJTAGベースでデバッグできるようにするMDM Vコア設計仕様を提供
- Webinar: Getting Started with Zephyr® RTOS on the AMD MicroBlaze™ V Processor: Zephyrの設定、構成、MicroBlaze V向けアプリケーションビルドを扱う
- Documentation: MicroBlaze Vのユーザーガイドと製品ガイドの一覧
- Wiki: 必要な周辺機器、メモリ、インターフェイスの組み合わせを選べる柔軟性を扱う
-
サポート状況
- Microcontroller configurationはProductionとして提供される
- AMD MicroBlaze VのRV64IおよびMemory Protection UnitはEarly Access
- AMD MicroBlaze VのMemory Management Unitはロードマップにある
1件のコメント
Hacker Newsの意見
AMDが最近 Xilinxを買収したことを覚えていないと混乱するかもしれない
今後、新しいXilinx製品にAMDの名前が付くことが増える可能性が高い
Intel側の対応物はAltera NIOS IIと考えればよい
Redditのコメント[1]によると、これは既存の MicroBlaze RTL の前段に RISC-V命令デコーダ を付けたもののようだという
「最高のRISC-Vコアを作ろう」という観点では筋が通らないように見えるが、Xilinx/AMDの目標はもともとそういうものではなかった
MicroBlazeは、退屈なニッチに収まる退屈なインオーダー実行RISC CPUの好例で、FPGAベンダーにとってソフトコアは半分は客寄せ商品だ。シリコンの販売には役立つが、それ自体で儲かるものではない。性能を左右するFPGA領域というより「統合のための接着剤」に近い技術なので、「十分に良い」ならそれで十分だ
AMDが本当にMicroBlaze RTLを再利用するなら、既存のファームウェア(コア、FPU、デバッグ、周辺機器など)とソフトウェア(HAL、コンパイラ、ドライバ)を維持できる。供給側にとっても、新しいMicroBlazeコアへ苦痛なく移行したいユーザーにとっても非常に魅力的だ
1: https://old.reddit.com/r/FPGA/comments/17mdcyt/microblaze_go...
その情報に頼るつもりはない
ただし既存のMicroBlazeと同じ外部インターフェースを持っているので、ハードウェアの観点では既存設計にそのまま差し込める代替品ではある
だからXilinxとAlteraの億万長者CEOたちは、Jensen HuangがNvidiaのソフトウェアスタックに継続的に資金を注ぎ込んでいるのを聞くと、残念そうに首を振るのだ。いつか本当の価値がどこにあるのか学ぶだろう
この発表が RISC-V にとってどれほど重要なのか説明できる?
もちろんGitHub上のサードパーティ製コアも多く使われているが、IDEやツールに公式に統合され、サポートされることは多くの顧客にとって意味がある
MicroSemiは2017年からRISC-Vソフトコアを提供し、2020年末からはPolarFire SoCのようなハードコアも提供していた。例えば新しいBeagleBoard FireやIcicleなどがある
Latticeは2020年6月ごろに初の公式RISC-Vソフトコアを発表し、2019年12月にはSiFiveとの協業を発表しており、2021年半ばには800 LUTコアのような改良版も出した
Intelは2021年10月にNios Vを導入した
TensilicaやARCのようなものも、この領域で多くの付加価値を失った。実際にMicroBlazeへカーネルをポーティングした立場から見ると、おおよそ2万ゲート規模の古典的なパイプラインRISCで、MIPSとSH4の中間あたりだ
今回の発表で最も興味深いのは、AMD/Xilinxが新しい名前を作って既存のMicroBlaze更新を継続的にサポートする代わりに、商標付きの「MicroBlaze」という用語そのものを再定義するほど深く踏み込んだ点だ
入出力はばらばらで、ボード搭載DRAMも使えなかった。Artix-7で公式サポートされる RV32ソフトコア が見られるなら素晴らしいと思う
以前MicroBlazeをかなり問題なく使ったことがあるが、非常にクローズドだったので、テストや教育以外で使おうとは思わなかった。RISC-Vの熱烈な支持者ではないが、この分野にはよく合っている。「すでに投資しているかもしれない命令セットを使うツールを提供し、そのツールチェーンまで囲い込もうとはしない」という形だからだ
AMD/Xilinxが命令セットより下の部分で囲い込むのは、ある程度受け入れられる。いずれにせよFPGAを買うにせよ、いつか出るかもしれないカタログ部品を買うにせよ、ハードウェア費用を払う可能性が高いからだ
RISC-VでTMR自体が新しいわけではないが、すでにMicroBlazeを使っている多くのプロジェクトや、これからMicroBlazeを使いたいプロジェクトが、今後RISC-Vを使えるようになるという意味がある
RISC-Vはすでにその市場でかなり人気がある
MicroBlaze Vの用途が、例えばSERV https://serv.readthedocs.io/en/latest/servant.html と比べてどうなのか気になる
つまり、チップメーカーのお墨付き以外でMicroBlaze Vがもたらす唯一の利点は速度のように見える。FPGA CPUは普通、それほど時間に敏感でない作業に使うのではないだろうか? 高速で時間に敏感な処理は、オンチップI/Oインターフェースとともに FPGAファブリック が担うのが目的だと思う
MicroBlazeは、さまざまな設定オプションと周辺機器を選んでドラッグ&ドロップすることで、文字通り自分のソフトコアを構成できるようにしてくれる。ユーザーアプリケーション向けSDKや、問題の原因を見つけるためのデバッグツールも含まれる
SERVで開発すると、ツールの成熟度が低いという理由だけでも、開発時間が数桁長くなっても驚かない
新しいソフトコアが出るのはいいが、わざわざ名前空間を汚す必要があるのかとは思う
MicroBlazeはすでに誰かが検索しうるアーキテクチャ名だ
普通にAMDcoreVみたいな呼び方でよかったのでは
再コンパイルするだけでよく、今回は貧弱で独占的なカスタムの低品質ツールを扱う必要がなく、gcc、binutils、llvmのような信頼できる業界標準ツールを使える
PSPやMEに相当するものは入っているのか?安全でなくパッチも当てられない怪しいブラックボックスCPUにはもううんざりだ
コア自体はオープンソースなのか?
使用料が必要だったなら、無料の代替があるのでこの発表に関心はなかったはずだ
このコアはXilinx FPGAのリソースを効率よく使うよう十分に最適化されていると見てよく、それが代替に対する利点である可能性が高い
ソースコードのコメントすら削除されていなかった
こうしたRISC-Vソフトコアを一目で比較できる概要があるといい
オープンソースかどうか、CoreMarkスコアがどの程度か、サイズはどれくらいか、といったものだ
neorv、serv、vexrisc、nios v、microblaze vなど
これを触ってみられる開発キットはある?どう始めればいい?
Xilinx FPGA設計なので、Xilinx開発ボードから始めるのが妥当だ
https://www.xilinx.com/products/boards-and-kits/cost-optimiz...
必要なのがRISC-Vソフトコアだけなら、Xilinxエコシステムの外にも選択肢は多い。個人的にはyosys/nextpnrがよくサポートしているボードを好む
0. https://www.joelw.id.au/FPGA/CheapFPGADevelopmentBoards
これは第一歩で、良い兆候だ
ただ、32ビットコアよりは64ビットコアだったらよかった。64ビットRISC-Vアセンブリコードのパスを書けば、デスクトップ、サーバー、組み込みで実際に再利用できるからだ
64ビットコアを望むなら、対象市場に属していないのだと思う
64ビットRISC-Vアセンブリをデスクトップ、サーバー、組み込みで再利用するというのも現実的ではない。デスクトップ・サーバーは事実上64ビット専用で、組み込みは大半が32ビットコアなので重なる部分は多くない
32ビットと64ビットの違いだけでなく、システムの複雑さ、ブート手順、外部とのやり取りの方法など、プログラミング環境も大きく異なる
要するに、対象デバイスを選び、それに合わせてコーディングする必要がある。複数種類のデバイス間で簡単に移植したいなら、アセンブリではなく別の言語で書くべきだ