1.はじめに
最近、RISC-VをFPGAで評価したい、そのようなご要望をお伺いする機会が増えてきています。また、ハードウェア、およびFPGAに不慣れなソフトウェアエンジニアでも手軽にFPGA上でRISC-Vを評価することができる環境が徐々に整いつつあります。今回は少し基本に立ち返って、RISC-V Core IPについてご説明した上で、FPGA上にRISC-Vを実装する際に役立つ、SoCジェネレータについてご紹介したいと思います。
2.RISC-V Core IPの概要
RISC-V(リスク・ファイブ)は、オープンソースの命令セットアーキテクチャ(ISA)です。ISAは、プログラマやソフトウェア側からコンピュータを見た時、利用できるレジスタの種類や命令を実行した際の動作を定義したものです。RISC-V ISAは回路設計を規定していない、いわば仕様書になります。半導体設計者はこの仕様書を元に任意の方法で回路実装し、RISC-Vプロセッサを開発する事ができます。
2.1.IPとは
ソフトウェアエンジニアの方は、IPと聞くとInternet Protocolを想像される方が多いかもしれません。半導体の世界でのIPとは、Intellectual Property(インテレクチュアル プロパティ)の略で、日本語では再利用可能な設計資産、知的財産と訳す事ができます。半導体の開発では、全てをゼロから作る事はなく、同じ機能の回路は設計資産(IP)として再利用します。IPにはプロセッサIP、メモリIP、ペリフェラルIP等があり、必要なIPを組み合わせる事でLSIの開発を効率化する事が可能になります。
2.2.RISC-V Core IPとは
まず、RISC-Vプロセッサとは、オープンソースのRISC-V ISAを採用して設計されたプロセッサの事を指し、IPとして多くの実現例が存在しています。よくRISC-Vはロイヤリティフリー(無料)かつオープンであることから、RISC-VのプロセッサIP (Core IP)も無料であると誤解されるケースがありますが、必ずしも無料ではありません。また、RISC-VやRISC-V Core IPをLSIそのものと誤解される事がありますが、LSI自体を意味するものではありません。
2.3.オープンソースのRISC-V Core IP
RISC-V Core IPにはオープンソース、商用、それぞれ様々なものがすでに提供されています。少し古い情報になりますが、RISC-V Internationalが公開しているこちらを参照していただくと、数多くのRISC-V Core IPが存在することがわかります。この中で、オープンソースのRISC-V Core IPとして人気の高いものを3つほどご紹介します。
Rocket | Boom | VexRiscv | |
---|---|---|---|
提供 | UCB Bar(※3) | UCB Bar(※3) | Chrles Papon |
命令 | インオーダ―実行 | アウトオーダー実行 スーパースカラ(※4) | インオーダー実行 |
パイプライン(※1) | 5ステージ | 7ステージ | 5ステージ |
記述言語(※2) | Chisel | Chisel | SpinalHDL |
バス | TileLink | TileLink | AXI4 |
※1 1つの命令を処理するのに複数サイクルかかる場合でも、実質1命令1サイクルで実行することができる仕組み
※2 一般的にハードウェア記述言語は、VHDLとVerilog HDLがよく使われますが、ここに挙げたChisel,SpinalHDLといったハードウェア記述言語は、Scala(スカラ)と呼ばれる関数型とオブジェクト指向型の両方を扱えるプログラミング言語をベースにしたものが使われています。
※3 カリフォルニア大学バークレー校アーキテクチャ研究グループ
※4 パイプラインを複数持ち、同時に実行できる命令を増やす仕組み
これらのRISC-V Core IPは、オープンソースで提供されていることから、誰でも手軽に入手、評価を行うことができます。しかしながらCore IPを入手しただけでは、LSIとして機能させる事ができない点は注意が必要です。プログラムを格納するROM、演算データを格納するRAM、メモリコントローラ、PCとの間で通信するためのインタフェース等の部品や、さらにCore IPとこれらの部品を接続するバスも準備する必要があります。こうした設計作業は、手軽に評価を行うには難易度が高い作業と言えます。
3.RISC-V Core IPに対応したSoCジェネレータ
前述のように、RISC-V Core IPだけを用意してもLSIとしての機能を実現することはできません。例えばFPGA上に実装する場合、Core IPとメモリや各種周辺機能を接続したSoCのデザインが必要です。RISC-Vの世界では、この様なSoCデザインを手軽に生成するツール(ジェネレータ)が準備されています。
3.1.SoCジェネレータ
RISC-Vに対応したSoCジェネレータは、RISC-V Internationalが公開しているこちらに示されるように、多くのものが存在します。RISC-V Core IP同様に、オープンソースで提供されるものが数多く存在することがわかります。
3.2.Litexとは
SoCジェネレータの一つとして、Litex(ライテックス)(※5)が挙げられます。Litexは利用するための情報量が豊富で、FPGAで動作させるためのビットストリームデータを生成することができます。
Litexは、主に以下のような特徴を持っています。
- オープンソースのハードウェア設計フレームワーク
Litexはオープンソースであり、自由にアクセスでき、カスタマイズや拡張が容易です。 - ソフトウェアとハードウェアの統合
ソフトウェア、ハードウェアの統合が容易であり、シームレスな開発が可能です。 - FPGAおよびASIC向けの設計をサポート
LitexはFPGAやASIC向けの設計をサポートしており、FPGAで動作させるためのビットストリームデータを容易に生成することができます。 - 豊富な周辺機能のサポート
Ethernet,USB,UART,SPI,I2Cなどの多くの周辺機能をサポートしています。
※5 こちらではSoC builder frameworkと表現されていますが、統一的な名称は存在しないようです。
4.まとめ
今回は改めてRISC-Vについての振り返りと、RISC-V Core IPについての説明、RISC-V Core IPに対応したSoCジェネレータをご紹介しました。また、SoCジェネレータの中でも手軽に利用することができそうなLitexについてご紹介しました。次回は実際にLitexを使ってRISC-V Core IPを含んだSoCデザインをFPGAボードで動作させる様子をお伝えする予定です。
本ブログについてのより詳しい内容のご質問は、こちらまでお問合せください。
info-lsi@dts-insight.co.jp
著作権および商標
その他、本ブログに記載する製品名は、一般に各開発メーカーの商標または登録商標です。
なお、本文中には™ および ® マークは表記していません。
■■DTSインサイトの「システムLSI設計ソリューションサービス」■■
DTSインサイトでは、システムLSI/FPGA設計の受託も行っています。
当社のノウハウを活かした、ソフトウェアの移行(マイグレーション)
サービスも提供しておりますので、お気軽にご相談ください。
システムLSI設計ソリューションサービス紹介は こちら