FPGAでmrubyを動かす

  • 624 views
Uploaded on

Kansai.rb 2014 Dec でのLT発表資料です

Kansai.rb 2014 Dec でのLT発表資料です

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
624
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Kansai.mrb 2014 Dec FPGAでmrubyを動かす @kimu_shu (きむしゅ)
  • 2. 自己紹介 twitter: @kimu_shu (きむしゅ/木村 修太)  趣味でマイコンとか使って電子工作する人。 ここ数年はFPGAをいじってます。  仕事は組み込み機器のOS、ドライバ、BIOSなど。  Ruby好き。マイコン工作に応用できるmruby楽しい!  “Word boxing”をmruby本家に入れた人 1
  • 3. FPGAにソフトコアCPU(Nios II)を載せ、mrubyを動かす例。 ボードには terasic DE0 を利用。USBキーボードを接続し、 直接Rubyスクリプトを入力して即実行可能。 Ogaki Mini Maker Faireやコミケで展示してきました。 作ったもの紹介 mirb実行中 • Altera CycloneIII (EP3C16F484) • SDRAM 8MB • SD-Card • USB Keyboard etc. 2
  • 4. ねらい • 単にNiosII上で動かすだけなら、コンパイラをnios2-elf- gccにしてmrubyをクロスコンパイルするだけですが(※)、 それだけでは面白くない。 • FPGAでしかできない工夫をしよう。  RiteVMを丸ごとハード実装するのは大変なのでパス。ソフトコア CPUを載せる。  あたりまえのように大容量DRAMがついているので、 メモリ削減はあまり考えない。  ハードウェア化することで、高速化・DRAMアクセス量削減がで きないか? 3 ※コンパイラを変えてビルドするだけで動くのも、素晴らしいことではあります。NiosII万歳!
  • 5. どんな仕組み?(1/2) mrubyを実行するソフトコアCPU(NiosII)の命令バスに、 「Rite to Nios II Converter」なる独自のロジックを接続。 4 Data Bus (Avalon-MM) M S Cn M Instruction Bus (Avalon-MM) SM Rite to Nios II Converter Nios II Embedded Processor Instruction DataRite Nios II SDRAM Controller 64Mbit SDRAM M Cn LCD Controller Graphic LCD S Cn SD Card SPI Master S Boot ROM S Cn USB Keyboard USB Host
  • 6. どんな仕組み?(2/2) irepの実行(mrb_context_runのRite命令解釈+実行)を、 Rite命令からNiosIIの命令にハードウェアで変換させて実現。 5 Data Bus (Avalon-MM) M S Cn M Instruction Bus (Avalon-MM) SM Rite to Nios II Converter Nios II Embedded Processor Instruction DataRite Nios II SDRAM Controller 64Mbit SDRAM M Cn LCD Controller Graphic LCD S Cn SD Card SPI Master S Boot ROM S Cn USB Keyboard USB Host 例) Rite命令 OP_LOADI A,sBx を入力 例) Nios II命令 movi r2,(sBx-1) slli r2, r2, 1 addi r2, r2, 3 stw r2, A*4(rSTK) を出力
  • 7. 結果  遅くなりましたorz  mrbtestの実行時間比較 (後日掲載…)  敗因は?  GiveUp時のオーバーヘッドが大きい? (Rite✕1命令をNiosII✕4命令に変換できない場合)  GiveUpせずに処理できる命令の割合が少ない。  そもそもmrb_context_runの占有時間はトップではな い。kh_get_n2s(主にメソッドの検索)がトップ。 6
  • 8. 今後の予定 PERIDOTプロジェクトへの統合に取り組み中。 7 “PERIDOT(ペリドット)プロジェクトとは、シンプル&コンパクトをコ ンセプトに開発中の新しいFPGAボードと、その統合開発環境です。 こ のFPGAボードはArduinoフォームファクタで、Arduino向けに作られた シールドと互換製があります。” ─ https://peridotcraft.com/ Chrome AppCloud デザインの 共有とコンパイル RBF Writer (FPGAデザインの書き込み) mruby sketch (mrbc+転送)