14
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

#NervesJPAdvent Calendar 2022

Day 11

Elixirの未来トーク1-1「ElixirChip:FPGA or HW化されたElixir」研究開発を進めてわかったこと (Nxバックエンド勉強会#8)

Last updated at Posted at 2022-12-05

Nxバックエンド勉強会#8でお話しする内容のポジショントークです.

シリーズ

関連記事

はじめに

私が表題のようなことを言うのは今回が初出ではなくて,次のような記事で既に書いていました.

研究開発を進めていくにしたがって,これらの方向性がより具体性を帯びてきたので,改めてこの未来トークでお知らせしようとするものです.そのうち,この記事では研究を進めてわかってきたことをつらつらと書いてみたいと思います.

研究開発を進めてわかってきたこと

既存のオープンソースのRISC-VソフトコアCPUにはマルチコアのものがない模様

下記で探したのですが,既存のオープンソースのRISC-VソフトコアCPUにはマルチコアのものがない模様です(もちろんオープンソースではない商用ライセンスのものであれば存在します).

※ 後者はアーカイブされたようです

FPGAに合わせて設計を最適化しないとクロック周波数を高く駆動することができない

試しに,ある既存のオープンソースのシングルコアのRISC-VソフトコアCPUをFPGAで動かしてみたのですが,ボトルネックがあり,クロック周波数を高く駆動することができませんでした.クロック周波数を抜本的に向上させるには一から設計をやり直した方が早いのではないかという感触を得ました.

ASICにしたときの性能はFPGA向けの論理合成から推定できる

ASICにしたときの性能はFPGA向けの論理合成をもとに推定できるのだそうです.

既存のErlang VMや互換VMの開発体制の中に入っていくことが難しかった

詳細は書きませんが,アプローチしてみて,私のような外部の人間が,これらの開発体制の中に入っていくのは難しいという感触を得ました.

Erlang/Elixirの関数を使うとBEAMのバイトコードを容易に読み込むことができる

Erlang の code モジュールbeam_lib モジュールを使うと,簡単にBEAMのバイトコードを読むことができます.

参考記事

ElixirからCコードを生成してJITコンパイルできる

Pelemayで確立した技術ですが,ElixirからCコードを生成してJITコンパイルすることができるようになりました.

ElixirからのFPGA利用の性能を向上させるためには,ElixirとFPGAを接続するインタフェースを工夫する必要がある

安直にElixirのリスト構造をそのままFPGAに渡して大量データ処理をさせようとすると,ソフトウェアでリストを読み込むのにリストの長さに応じた時間がかかるので,性能が出ないということが明らかになりました.

Nxで行なっているような,バイナリでデータを扱うというようなことが必要だと考えられます.なので,Nxを基調とするとよいのでしょう.

現在のBEAMの仕組みでは,セキュリティとリアルタイム性に課題がある

Nerves ProjectのFrank Hunlethさんと意見交換したのですが,現状のBEAMの仕組みでは,軽量プロセスごとにセキュリティやリアルタイム性を設定することができません.

セキュリティについては,Dist Filteringという仕組みが提案されて,Erlang OTPにPull requestまで送られたのですが,OTPチームがいくつか理由を挙げてこのPRのマージを拒絶しています.

まとめと次の話

以上のようなことを踏まえたとき,次のような基礎技術を自分で持っておくことが重要だと改めて認識しました.

  • マルチコアのRISC-VソフトコアCPUをフルスクラッチで開発すること
  • BEAM(Erlang VM)をフルスクラッチで開発すること
  • RTOSを開発もしくは移植し,上記で動かすこと

つまり,自作CPU,自作OS,自作プログラミング言語処理系を開発できるようになっておかないといけないということですね.

ただ,これらが必要ですとは言うものの,私は研究者としてはアマチュアではなくプロフェッショナルであるため,この方向性の研究を単に自分の興味で進めるのではなく,研究費を調達して,新規性ある学術研究として,もしくは産業界に貢献する応用研究として,仕上げていくことが必要になってきます.

次のコラムでは,この方向性の研究について,出口となる応用領域は何か?について検討したいと思います.

14
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?