TOPPERS RISC-V ワーキンググループ発足に向けて

TOPPERS RISC-V ワーキンググループ発足に向けて，短期・中期目標と計画について述べます．

## RISC-Vプロファイルについて

RISC-Vプロファイルについては，下記レポジトリに記載されています．

https://github.com/riscv/riscv-profiles

## TOPPERS RISC-V WG 提案

TOPPERS開発者会議2023での議論を踏まえて，RISC-V WGの目標案を下記のように提案しました．

### RISC-V WGの短期目標 (2023〜2024年度)

1.	32ビットプロセッサ
    1. 日本国内で入手できるRISC-V 32ビットプロセッサの拡張の状況を調査し，RVM23U32プロファイルが実態に沿っているかを確認し，中期目標を策定する
    2. 現行のOSS版の竹内氏によるRISC-V向けASPカーネルの実装を踏まえて，OSS版のRISC-V向けASP3カーネル整備の中期目標を立案する
2.	64ビットプロセッサ
    1. さまざまな拡張に対応したシミュレーション実行環境を整備する
    2. 命令数カウント命令rdinstret，命令サイクル数rdcycleを使用して，TOPPERSカーネルの性能を仮評価する方法を検討する(おそらくシミュレーション環境だとこれらの2つの命令は同じ結果を返す)

### 短期目標に対する補足説明・計画について

#### 32ビットプロセッサについて

RVM23U32プロファイルについては，前述のRISC-Vプロファイルレポジトリの下記ファイルにドラフトが記述されています．

https://github.com/riscv/riscv-profiles/blob/main/rvm23-profile.adoc

ここにも記載されているように，RVM23U32プロファイルは，マイクロコントローラ向けの32ビット標準プロファイルとして定義されるものです．

日本国内で入手できるRISC-V 32ビットプロセッサとして，筆頭に上がりそうなのは，ルネサスのRISC-V 32ビットプロセッサでしょう．

https://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/risc-v#parametric_options

ルネサスのRISC-V 32ビットプロセッサが，どのような拡張を備えているのかについて，調査が必要です．

他にも中国メーカーのものを中心に，様々なプロセッサが販売されており，広範な調査を行う必要がありそうです．

TOPPERS/ASPカーネルについては，竹内氏がRISC-V向けの実装を行なったということだそうです．下記のriscv_gccの部分です．

https://www.toppers.jp/asp-kernel.html


私がTOPPERSプロジェクトに主体的に関わろうと思ったきっかけとなったJAXAが採用しているTOPPERSカーネルは，下記のTOPPERS/HRMP3カーネルです．

https://www.toppers.jp/hrmp3-kernel.html

TOPPERS開発者会議2023にて助言があったのは，将来TOPPERS/HRMP3カーネルへRISC-Vの移植を行いたいということであれば，最初の着手点として，下記のTOPPERS/ASP3カーネルを選んだ方が良いだろうということでした．

https://www.toppers.jp/asp3-kernel.html

したがって，TOPPERS/ASP3カーネルの設計・実装を行なったメンバーにヒアリングしていく必要があります．

以上を踏まえると，32ビットプロセッサについての短期目標の達成のために，WGのメンバーとして招聘したいのは，次のような属性を持つTOPPERS会員となるでしょう．

* ルネサスの関係者
* RISC-Vプロセッサメーカーの有識者
* RISC-Vプロセッサに興味を持ち，調査に協力してくれる人
* TOPPERS/ASPカーネルのRISC-V依存部分を開発した竹内氏
* TOPPERS第3世代カーネル（ITRON系）統合仕様書に詳しい人
* TOPPERS/ASP3カーネルの開発者

#### 64ビットプロセッサについて

RISC-Vのさまざまな拡張に対応したシミュレーション実行環境を整備する点については，すでに次のような知見を確立しています．

https://qiita.com/zacky1972/items/0cbfdf4e400e0205aa7b

https://qiita.com/zacky1972/items/6d433bdbef737d1e300f

https://qiita.com/zacky1972/items/eabbcae5af04e24c2cc0

この後，必要なのは，RISC-Vのさまざまな拡張に対応したQEMUの実行環境を準備することだろうと考えられます．

命令数カウント命令`rdinstret`，命令サイクル数`rdcycle`を使用して，TOPPERSカーネルの性能を仮評価する方法を検討する点について，

まず，spikeとpkをシミュレーション環境として用いる場合には，これらの2つの命令は同じ結果を返すことがわかっています．

次に，QEMUについて実行環境を整備した後で，これら2つの命令がどのような挙動をするのかを調査する必要があります．

また，TOPPERS/ASP3カーネルについて，性能を測定するようなベンチマークプログラムが存在するのかを，TOPPERS/ASP3カーネル開発者を中心にヒアリングする必要があります．

もしそのようなベンチマークプログラムが存在しない場合，TOPPERS第3世代カーネル（ITRON系）統合仕様書に詳しい人とTOPPERS/ASP3カーネル開発者の意見を踏まえながら，標準ベンチマークプログラムを確立していく必要があります．

以上を踏まえると，64ビットプロセッサについての短期目標の達成のために，WGのメンバーとして招聘したいのは，次のような属性を持つTOPPERS会員となるでしょう．

* QEMUに詳しい人
* TOPPERS第3世代カーネル（ITRON系）統合仕様書に詳しい人
* TOPPERS/ASP3カーネルの開発者


### RISC-V WGの中期目標(2024年度〜2026年度)

1.	32ビットプロセッサ
    1. 1の方針・計画に従って，整備を進める．その際に，ボードや拡張固有の機能を抽象化・標準化し，できるだけ汎用性がある設計とする
    2. 次にHRP3/FMP3のどちらに取り組むかを決める
2.	64ビットプロセッサ
    1. FPUとベクタ拡張のそれぞれについて，コンテキスト・スイッチ時のレジスタ退避・復旧方法についてASP3カーネルに実装し，主要処理の実行命令数・サイクル数を評価する研究を実施する
    2. 次にHRP3/FMP3のどちらに取り組むかを決める

### 中期目標に対する補足説明・計画について

#### 32ビットプロセッサについて

RVM23U32プロファイルを参考にしつつ，それ以前の流通している32ビットのRISC-Vボードについて，調査を進めます．

その調査結果を踏まえて，ボードや拡張固有の機能を適切に抽象化・標準化していき，できるだけ汎用性のある設計に仕上げていきます．

また，次に取り組むのをTOPPERS/HRP3カーネルとするか，TOPPERS/FMP3カーネルとするかについて，設計者・実装者・有識者を交えてディスカッションします．

以上を踏まえると，32ビットプロセッサについての中期目標の達成のために，WGのメンバーとして招聘したいのは，短期目標のに加えて，次のような属性を持つTOPPERS会員となるでしょう．

* 32ビットRISC-Vボードに詳しい人，コレクタ
* TOPPERS/HRP3カーネル，TOPPERS/FMP3カーネルの設計者，実装者，有識者

#### 64ビットプロセッサについて

TOPPERSカーネルでコンテキスト・スイッチを行う際に，使用するレジスタを退避・復旧する必要があります．もしFPUレジスタやベクトルレジスタを使うのであれば，それらも退避の対象にしていく必要がありますが，それによりリアルタイム性を損ねる可能性があります．

この問題については，TOPPERSのみならず，LinuxやFreeRTOSなどにおいても問題になるので，リアルタイム・カーネルの実装方法についての研究として位置付けます．

TOPPERS/HRP3カーネルとTOPPERS/FMP3カーネルのどちらに次に取り組むのかについては，32ビットプロセッサと同様の議論になるでしょう．

以上を踏まえると，64ビットプロセッサについての中期目標の達成のために，WGのメンバーとして招聘したいのは，短期目標のに加えて，次のような属性を持つTOPPERS会員となるでしょう．

* TOPPERSカーネルを含むリアルタイム・カーネルの研究者
* TOPPERS/HRP3カーネル，TOPPERS/FMP3カーネルの設計者，実装者，有識者

## RISC-V WGのメンバーとして期待したいTOPPERS会員の属性

RISC-V WGのメンバーとして期待したいTOPPERS会員の属性は次のとおりになります．

* ルネサスの関係者
* RISC-Vプロセッサメーカーの有識者
* RISC-Vプロセッサに興味を持ち，調査に協力してくれる人
* TOPPERS/ASPカーネルのRISC-V依存部分を開発した竹内氏
* TOPPERS第3世代カーネル（ITRON系）統合仕様書に詳しい人
* TOPPERS/ASP3カーネルの開発者
* QEMUに詳しい人
* 32ビットRISC-Vボードに詳しい人，コレクタ
* TOPPERS/HRP3カーネル，TOPPERS/FMP3カーネルの設計者，実装者，有識者
* TOPPERSカーネルを含むリアルタイム・カーネルの研究者

## 運営方法案

2023年12月11日に開催された運営委員会にて議論し，WGの発足について承認されました．

運営委員会では，WGの議論を行うのをどこで行うかについて運営方法について議論しました．GitHubを第1候補とし，メーリングリストを併用するという案を提案しました．その方向で準備を進める予定です．