PR

当初、軽量Rubyプロジェクトでは、Rubyチップについて、(1)GCのアクセラレーションと、(2)メソッド探索時のハッシュ演算のアクセラレーション、この二つを目標にされていました。ただ、プロジェクトの途中でGCの方のアクセラレーションはなくなったとお聞きしました。

軽量版のmrubyを開発したまつもと氏(写真:新関 雅士)
軽量版のmrubyを開発したまつもと氏(写真:新関 雅士)
[画像のクリックで拡大表示]

 mrubyのGCにインクリメンタルGCを採用したことで、ハードウエアのアクセラレータの利用により即座に性能が良くなるというケースが(GCに関しては)少なくなってしまいました。費用対効果が悪くなってしまったといいますか。国のプロジェクトとしてやるのであれば、そのあたりも重要です。

 インクリメンタルGCのアルゴリズムというのは複雑なものなので、それ自身をハードウエアに実装することは難しい。当初の計画であった(インクリメンタルGCではない)シンプルなGCであれば、アクセラレータの導入により性能が伸びる余地もあったのですが、結果的に(インクリメンタルGCの採用下では)そこまでの伸びは見込めなくなったので、今回の(軽量Rubyプロジェクトの)2年間の中では間に合わないだろうという判断だったようです。

 (Rubyチップの)今後については田中先生のご判断にお任せするつもりですが、研究を継続される中で、例えば(インクリメンタルGCの全体でなくとも)GCのごく一部をハードウエアでアクセラレーションするというのは、今後もありうるのではないかなとは思っています。

 例えば、GCで繰り返し行っている処理をハードウエアの1命令で叩けるようにするですとか、mrubyのVM内部で何百命令か掛けているテーブル参照の部分を1命令に置き換えるであるとか、そういうことをやる余地は残っていると思います。

 ただ、経済産業省の助成によるプロジェクト自体は(2012年3月で)終了しましたので、私の方からお願いできるものではないのですが…。ただし、(mrubyの)GC全体をハードウエアで実施するというのは、今後もないと思っています。