NEDO事業の研究開発成果により、京都マイクロコンピュータがRISC-Vに対応したリアルタイム開発プラットフォームを開発しました
RISC-V採用時の開発環境習得時間の大幅な削減と、導入コスト低減に貢献
NEDOは「省エネAI半導体及びシステムに関する技術開発事業」において、AIエッジコンピューティングの産業応用を加速するための技術開発を進めています。このたび、京都マイクロコンピュータ株式会社(以下、KMC)は、NEDO事業の研究成果を活用することで、組み込みシステムのソフトウエア開発用に広く商用利用可能なリアルタイム開発プラットフォーム(製品名「SOLID」)において、オープンアーキテクチャであるRISC-Vプロセッサに対応したバージョン4.0を新たにリリースしました。
「SOLID」は、ソフトウエア開発環境とランタイムソフトウエアが連携し、自動バグ検出や分割開発機能など、大規模組み込みソフトウエアを安全に開発するための機能が特徴です。今回、「SOLID」がRISC-Vに対応することで、既存のArm®プロセッサ向け組み込みソフトウエアを開発する際の機能や使い勝手に匹敵する開発環境をRISC-Vにおいても利用できるようになります。これにより、新たにRISC-Vプロセッサを採用した際の開発環境習得時間の大幅な削減と、導入コスト低減に貢献します。

1.概要
組み込み機器に新たなプロセッサを採用する場合、ソフトウエア開発環境を新規にそろえ、使い方を学習する期間が必要になります。そのため組み込み機器開発現場では、開発環境が整備されていることや、特に日本においては日本語でサポート可能な商用の開発環境が望まれています。また、日本が得意としている産業用ロボットやデジタルカメラなどに代表される、メカ制御を伴う高機能・高性能な電子機器においては、ソースコードが数百万行にもおよぶ大規模なリアルタイムソフトウエアを開発することが珍しくなく、バグの自動検出やソースコードの分割開発など、安全なソフトウエア開発環境が重要になっています。
RISC-Vプロセッサは、その命令セット仕様が公開されたオープンアーキテクチャであり、複数の命令セットプロファイルによってさまざまな用途に最適化が可能であることから、特にIoT/AIエッジで求められる非常に高い計算処理能力を低消費電力で実現するための有力なソリューションであると考えられます。しかし、日本国内においてはマイコンのような小規模なシステムへの採用事例は見られるものの、大規模な組み込み機器にRISC-Vプロセッサを正式採用する大きな動きはあまりないのが実態です。その一つの要因として、開発環境が十分に整備されていないことが大きな課題でした。
NEDOが実施している「省エネAI半導体及びシステムに関する技術開発事業」において、この課題解決に取り組むため、KMCは「RISC-Vシステム設計プラットフォームの研究開発」(以下、本事業※1)を国立大学法人東京科学大学、国立大学法人東京大学、セイコーエプソン株式会社、株式会社デンソー、株式会社OTSLと共同で進めており、2025年度をめどに東京科学大学内にRISC-V設計拠点の構築を目指しています。
KMCは本事業の研究成果を活用し、リアルタイムOS、統合開発環境、コンパイラ、デバッガが連携したソフトウエア開発プラットフォーム「SOLID」※2バージョン4.0において、新たにRISC-Vプロセッサに対応しました。これにより、組み込みソフトウエア開発者は、バグの自動検出や分割開発機能を活用した、大規模なRISC-Vリアルタイムシステムソフトウエアを安全に開発できるようになりました。また、KMCはRISC-Vプロセッサの特徴であるカスタム命令に対して、コンパイラをカスタマイズするサービス受託にも対応します。「SOLID」バージョン4.0は、本日2月26日よりバージョンアップサービスを開始します。
2.今回の成果
(1)RISC-Vプロセッサ用コンパイラ・デバッガの開発
オープンソースであるLLVM※3/Clang※4コンパイラに対して、インラインアセンブラ※5およびイントリンシック関数※6としてベクトル命令※7が処理できるLLVMを開発しました。またLLVMの機能と連携したデバッガインターフェースを開発し、通常では検出しにくいメモリ破壊や配列の領域外参照といったバグなどの異常を実行時に検出できるよう、デバッグ用ランタイムソフトウエア※8生成を行い、JTAGデバッガ※9と連携させました。
上記の研究開発を通して、LLVM/ClangコンパイラにRISC-Vプロセッサ向けの商用コンパイラツールチェイン※10としての機能整備を行い、さらにRISC-Vのベンダ独自命令をコンパイラ対応する技術を確立しました。
またRISC-Vのベクトル命令拡張対応では、オープンソースであるLLVM/Clangプロジェクトにソースコードを提供し、広く標準化される活動を実施しました。
さらに商用コンパイラとして市場に広く採用いただけるよう、商用のコンパイラ評価テストスイート※11を用いて、本事業で作成したコンパイラツールチェインの品質検証を行いました。
(2)RISC-Vプロセッサ用ベアメタルソフトウエア開発環境構築
RISC-Vプロセッサに対して、開発環境のGUI上で設定したメモリマップ指定により、MMU(Memory Management Unit)の設定を自動的に行い、プロセッサが正常に動作するベアメタル※12ソフトウエア開発プラットフォーム構築を実施しました。
MMUとは、実存するメモリ(物理アドレス)空間を拡張し、仮想的なメモリ空間(仮想アドレス)に配置する機能を有しており、仮想アドレスにおいてメモリ属性(書き込み禁止、キャッシュ割付など)を設定することで、物理メモリを安全かつ有効に使用できる便利で重要な機能です(図2)。

MMUの設定は、プロセッサの仕様に依存した必須の処理であり、プロセッサの基本的な動作を設定するものです。しかし、MMUの設定を間違えると、ソースコードの通りにプログラムが動作しないこともあるため、実行時のデバッグが非常に困難です。近年の組み込みプロセッサでは、MMUを搭載する高機能なプロセッサが増えており、RISC-Vプロセッサでも同様の傾向が見られます。KMCでは、Linuxなどの高級OSを使わないベアメタルソフトウエア環境や、組み込みリアルタイムOS環境においては、MMU設定のハードルが高く、機能を使い切れていないと考え、この問題を開発環境と専用のベアメタルランタイムの専用設計でMMUを使いやすくできるようにしました。
組み込みソフトウエア開発者は、開発環境のGUI上の簡単な操作で、MMUの物理アドレス・論理アドレスのマップを作成します。開発環境側では、MMUマップからテーブルを生成し、コンパイル時にそのテーブルに従い、MMUを初期化するためのランタイムを自動生成し、プログラム実行時に指定された通りのMMU設定を初期化プログラムとして実行します。
このようにMMU設定を開発環境のGUI操作だけで行うことで、組み込みソフトウエア開発者が理解しやすく、検証しやすい方法で安全にMMU設定ができ、極端にいえばプロセッサのMMU仕様書を読まなくてもソフトウエアの開発が進められるメリットがあります(図3)。

今回、RISC-V版で提供する、プロセッサの初期設定やMMUの初期化を行うランタイムソフトウエア「SOLID」は、1万行以上のソースコードが用意されており、利用者が開発環境で設定を行うことで、それらのソースコードの中から必要な機能をピックアップし、自動設定を行っての利用が可能です。今回、SOLIDがRISC-Vに対応することで、既存のArm®プロセッサ向け組み込みソフトウエアを開発する際の機能や使い勝手に匹敵する開発環境を利用できるようになります。プロセッサのMMUなどの機能の学習時間や機能の作成・テスト時間を減らし、同様のものを新規に開発することに比べて、開発時間を大幅に削減することが可能です。
3.今後の予定
KMCは、2025年2月26日からSOLIDバージョン4.0のバージョンアップサービスを開始します。今後は開発環境としての使い勝手の向上や、RISC-Vプロセッサの追加命令に対応したコンパイラの開発サービスなど、組み込みソフトウエア開発環境の充実を継続していくことで、RISC-Vプロセッサで自由度の高い設計という特徴を生かしたIoT/AIエッジ向けの有力なソリューション提供に貢献していきます。
【注釈】
※1 本事業
事業名:省エネAI半導体及びシステムに関する技術開発事業/AIエッジコンピューティングの産業応用加速のための設計技術開発/RISC-Vシステム設計プラットフォームの研究開発
事業期間:2022年度~2024年度
事業概要:省エネAI半導体及びシステムに関する技術開発事業
※2 SOLID
京都マイクロコンピュータ株式会社の製品名です。開発環境とOS、ランタイムソフトウエアが連携して、MMUなどのプロセッサの高度な機能を簡単に利用したり、プログラムのバッファオーバーランの自動検出や、実行時のカバレッジ取得などを簡単に実現したりできます。SOLID紹介ページ
※3 LLVM
さまざまなプログラミング言語(のコンパイラ)に対し、そのコードをさまざまなコンピュータやOSに対応させることができる共通の基盤を提供するソフトウエアのことです。
※4 Clang
C/C++で記述されたソースコードを入力として字句解析を行い、中間表現と呼ばれる抽象的なデータに置き換えるソフトウエアのことです。
※5 インラインアセンブラ
C言語のコードの途中に中央演算処理装置(CPU)依存のアセンブリ言語を組み込む記述方法のことです。
※6 イントリンシック関数
プログラミング言語などの仕様にあらかじめ用意されている標準関数で、コンパイラなどの言語処理系に実装された関数でコードサイズの削減や実行効率向上が可能になります。
※7 ベクトル命令
一度に複数のデータに対する計算処理を行える命令です。通常のスカラ命令が一度に一つのデータに対する計算処理しか行えないのに対し、ベクトル命令では同時に多くのデータを処理できることが特徴です。
※8 デバッグ用ランタイムソフトウエア
SOLIDを構成するソフトウエアの一部で、組み込みプロセッサ側で動作するものになります。組み込みプロセッサが不正動作を行い、例外処理が発生した場合などにデバッガを通してユーザーに通知する機能を持ちます。
※9 JTAGデバッガ
基板上に実装されたプロセッサを、JTAG(Joint Test Action Group) 仕様のインターフェースを介して接続し、プロセッサに実行制御や内部のレジスタの参照をするための装置のことです。京都マイクロコンピュータ製のPARTNER-Jet2などがあります。
※10 コンパイラツールチェイン
プログラミング言語のソースコードをコンパイラで翻訳し、実行可能なバイナリコードに変換する一連のプログラムの集合のことです。
※11 コンパイラ評価テストスイート
Solid Sands社のSuperTestを使用しています。 Solid Sands社のSuperTestページ
※12 ベアメタル
OSなどのソフトウエアが実装されていない状態のことです。
このプレスリリースには、メディア関係者向けの情報があります
メディアユーザー登録を行うと、企業担当者の連絡先や、イベント・記者会見の情報など様々な特記情報を閲覧できます。※内容はプレスリリースにより異なります。
すべての画像