SlideShare une entreprise Scribd logo
1  sur  28
Synthesijer で作る
FORTH仮想マシン
2015/8/2
有限会社シンビー
鈴木量三朗
発表がとりの前の前で光栄です
Who are you?
• わたし:すずきりょうざぶろう
• Twitter: @ryos36
• 生涯一プログラマ
本も書きました
FPGA の仕事します
今回の主役は
FORTH
まずは Synthesijer の紹介
• Java でプログラム
でコンパイル
FPGA 上で
動く!!
私の CPU 作成履歴
• 過去に パタヘネ の RISC にチャレンジ
あっさり挫折
Synthesijer でならCPUを作れる!!
• 今回作ったのは FORTH の VM(Virtual Machine)
ん?バーチャル?(細かいことは気にしない)
ん?FORTH って CPU だっけ? (細かいことは気にしない)
僕にもできた!!
余談:Eclipse のプラグインを作ってみた
• Synthesijer すげー
– 世の中に広めるべきだ(by わたし)
メニューをたしただけ、、、
要望があるなら
公開します。
(プラグインとしてあまり
レベルは高くない)
FORTH 入門
• 逆ポーランド
• スタック型
• スレッデッドコード
今回移植したのは正確には RETRO 言語という
FORTH 系の言語
LT だからキーワード
だけね
余談:逆ポーランドといえばこれ
Wikipedia より
HP-41C
逆ポーランド方式の電卓
1981年当時 70,000 円超でした
FORTH 入門 ~ その2~
> 3
> 5
> +
> putn
8
3 3
5
8
RETRO では p ではなくて
putnを使って表示。
FORTH VM
• VM だからオペコードがある(30個)
Java での実装
switch case
による実装
Stack は int の配列
Synthesijer のための変更
• VM 的にはほとんどなし!!
• 入出力の変更有
– UART (サンプルを参考に実装)
– イメージの入出力(イメージは初期値で持つ)
作業を始めて土日で(徹夜せずに)完成!!
実際に SP605 で動く!!
すいません。手抜きで AWK をつかってごにょごにょっとしてます。
ここが便利 Synthesijer
Printf 的なデバッグが可能!!
CUI も可能
ここが便利 Synthesijer
ソフトで使われるデバッグ手法が可能
Printf 的なデバッグが可能!!
動いたぜ!!FORTH
結果がジミすぎてすいません。
必要RAMサイズはミニマムで 12KB(もっと絞れるかも)
FORTH 入門 ~その3~
• 断片的なコード(Threaded Code)
: (コロン) ではじまり
; (セミコロン) で終わる
• 頭の中でコンパイル
している(= ハンドコン
パイル的発想)
So What?
• で、FPGA の中に FORTH が入って何がうれし
いの?
Synthesijer の使い方のコツ
• Java であらかじめプログラムのバグをつぶす
• HDL 的な考えをしない
簡単すぎて
M子もびっくり
広がる妄想 with
• いろんなVM/CPUつくれるのでは?
• ソフトからハードに移植できるのでは?
• FORTH を極める
広がる妄想 with
• いろんなVM/CPUつくれるのでは?
• ソフトからハードに移植できるのでは?
• FORTH を極める
• JavaScript
• ruby/mruby
• erlang
広がる妄想 with
• いろんなVM/CPUつくれるのでは?
• ソフトからハードに移植できるのでは?
• FORTH を極める• ハードの分野と思われていな
かったもの? (早い者勝ちだ!!)
– httpd
– ファイルシステム
– DB
広がる妄想 with
• いろんなVM/CPUつくれるのでは?
• ソフトからハードに移植できるのでは?
• FORTH を極める
May
The FORTH
Be With You
ご清聴ありがとうございました
[量]

Contenu connexe

Tendances

OSS事例から学んだ プロジェクトを進める技術
OSS事例から学んだ プロジェクトを進める技術OSS事例から学んだ プロジェクトを進める技術
OSS事例から学んだ プロジェクトを進める技術Daisuke Kondo
 
多忙な暇人が4時間でLeapMotionゲームを作ってみた
多忙な暇人が4時間でLeapMotionゲームを作ってみた多忙な暇人が4時間でLeapMotionゲームを作ってみた
多忙な暇人が4時間でLeapMotionゲームを作ってみたhima_zinn
 
Unityでleap motionを使ってみる~アセットまみれのLT大会~
Unityでleap motionを使ってみる~アセットまみれのLT大会~Unityでleap motionを使ってみる~アセットまみれのLT大会~
Unityでleap motionを使ってみる~アセットまみれのLT大会~hima_zinn
 
猫とまいんどすとーむのつぶやき Slide share
猫とまいんどすとーむのつぶやき Slide share猫とまいんどすとーむのつぶやき Slide share
猫とまいんどすとーむのつぶやき Slide sharefurugen098
 
randmap.enchant.js github公開
randmap.enchant.js github公開randmap.enchant.js github公開
randmap.enchant.js github公開shizuru123
 
Mueue
MueueMueue
Mueueigjit
 
UE4 Grass Interaction
UE4 Grass InteractionUE4 Grass Interaction
UE4 Grass InteractionItsuki Inoue
 
本格的に始めるzsh
本格的に始めるzsh本格的に始めるzsh
本格的に始めるzshHideaki Miyake
 
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)Kazuhito Miura
 
Hereditary disposition hachibei kaionji
Hereditary disposition hachibei kaionjiHereditary disposition hachibei kaionji
Hereditary disposition hachibei kaionjiKyoya OGURI
 
コンピュータビジョン最終課題
コンピュータビジョン最終課題コンピュータビジョン最終課題
コンピュータビジョン最終課題solt9029
 
大好きなPecoの話
大好きなPecoの話大好きなPecoの話
大好きなPecoの話YusukeSasajima
 
ejectLT @ NT金沢
ejectLT @ NT金沢ejectLT @ NT金沢
ejectLT @ NT金沢ahiru3
 
UE4よちよち勉強会オリエンテーション資料
UE4よちよち勉強会オリエンテーション資料UE4よちよち勉強会オリエンテーション資料
UE4よちよち勉強会オリエンテーション資料拓 小林
 
Rubyだけでチンチロをつくる
RubyだけでチンチロをつくるRubyだけでチンチロをつくる
RubyだけでチンチロをつくるK K
 
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略Hiroki Nakahara
 

Tendances (17)

OSS事例から学んだ プロジェクトを進める技術
OSS事例から学んだ プロジェクトを進める技術OSS事例から学んだ プロジェクトを進める技術
OSS事例から学んだ プロジェクトを進める技術
 
多忙な暇人が4時間でLeapMotionゲームを作ってみた
多忙な暇人が4時間でLeapMotionゲームを作ってみた多忙な暇人が4時間でLeapMotionゲームを作ってみた
多忙な暇人が4時間でLeapMotionゲームを作ってみた
 
Rosjp37 live ros
Rosjp37 live rosRosjp37 live ros
Rosjp37 live ros
 
Unityでleap motionを使ってみる~アセットまみれのLT大会~
Unityでleap motionを使ってみる~アセットまみれのLT大会~Unityでleap motionを使ってみる~アセットまみれのLT大会~
Unityでleap motionを使ってみる~アセットまみれのLT大会~
 
猫とまいんどすとーむのつぶやき Slide share
猫とまいんどすとーむのつぶやき Slide share猫とまいんどすとーむのつぶやき Slide share
猫とまいんどすとーむのつぶやき Slide share
 
randmap.enchant.js github公開
randmap.enchant.js github公開randmap.enchant.js github公開
randmap.enchant.js github公開
 
Mueue
MueueMueue
Mueue
 
UE4 Grass Interaction
UE4 Grass InteractionUE4 Grass Interaction
UE4 Grass Interaction
 
本格的に始めるzsh
本格的に始めるzsh本格的に始めるzsh
本格的に始めるzsh
 
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
 
Hereditary disposition hachibei kaionji
Hereditary disposition hachibei kaionjiHereditary disposition hachibei kaionji
Hereditary disposition hachibei kaionji
 
コンピュータビジョン最終課題
コンピュータビジョン最終課題コンピュータビジョン最終課題
コンピュータビジョン最終課題
 
大好きなPecoの話
大好きなPecoの話大好きなPecoの話
大好きなPecoの話
 
ejectLT @ NT金沢
ejectLT @ NT金沢ejectLT @ NT金沢
ejectLT @ NT金沢
 
UE4よちよち勉強会オリエンテーション資料
UE4よちよち勉強会オリエンテーション資料UE4よちよち勉強会オリエンテーション資料
UE4よちよち勉強会オリエンテーション資料
 
Rubyだけでチンチロをつくる
RubyだけでチンチロをつくるRubyだけでチンチロをつくる
Rubyだけでチンチロをつくる
 
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
 

En vedette

FPGA+Synthesijerでヴォコーダを作ってみた
FPGA+Synthesijerでヴォコーダを作ってみたFPGA+Synthesijerでヴォコーダを作ってみた
FPGA+Synthesijerでヴォコーダを作ってみたRyota Suzuki
 
90分 Scheme to C(勝手に抄訳版)
90分 Scheme to C(勝手に抄訳版)90分 Scheme to C(勝手に抄訳版)
90分 Scheme to C(勝手に抄訳版)ryos36
 
20周遅れ
20周遅れ20周遅れ
20周遅れryos36
 
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編Shuichi Tsutsumi
 
クラシフィケーション・ツリー法入門
クラシフィケーション・ツリー法入門クラシフィケーション・ツリー法入門
クラシフィケーション・ツリー法入門H Iseri
 
Hdmits fpgax6-v0
Hdmits fpgax6-v0Hdmits fpgax6-v0
Hdmits fpgax6-v0aomtoku
 
Synthesijer fpgax 20150201
Synthesijer fpgax 20150201Synthesijer fpgax 20150201
Synthesijer fpgax 20150201Takefumi MIYOSHI
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)Shinya Takamaeda-Y
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6Kentaro Ebisawa
 
高位合成でDeep learning
高位合成でDeep learning高位合成でDeep learning
高位合成でDeep learningMori Labo.
 
増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識なおき きしだ
 
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)Kei Nakazawa
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi愛美 林
 
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待Seiya Tokui
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向Shinya Takamaeda-Y
 
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法Kentaro Sano
 
なにわTech20170218(tpu) tfug
なにわTech20170218(tpu) tfugなにわTech20170218(tpu) tfug
なにわTech20170218(tpu) tfugNatsutani Minoru
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)Hiroki Nakahara
 

En vedette (20)

FPGA+Synthesijerでヴォコーダを作ってみた
FPGA+Synthesijerでヴォコーダを作ってみたFPGA+Synthesijerでヴォコーダを作ってみた
FPGA+Synthesijerでヴォコーダを作ってみた
 
90分 Scheme to C(勝手に抄訳版)
90分 Scheme to C(勝手に抄訳版)90分 Scheme to C(勝手に抄訳版)
90分 Scheme to C(勝手に抄訳版)
 
20周遅れ
20周遅れ20周遅れ
20周遅れ
 
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
 
クラシフィケーション・ツリー法入門
クラシフィケーション・ツリー法入門クラシフィケーション・ツリー法入門
クラシフィケーション・ツリー法入門
 
Hdmits fpgax6-v0
Hdmits fpgax6-v0Hdmits fpgax6-v0
Hdmits fpgax6-v0
 
Synthesijer fpgax 20150201
Synthesijer fpgax 20150201Synthesijer fpgax 20150201
Synthesijer fpgax 20150201
 
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
コンピュータアーキテクチャ研究の最新動向〜ISCA2015参加報告〜 @FPGAエクストリーム・コンピューティング 第7回 (#fpgax #7)
 
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
 
高位合成でDeep learning
高位合成でDeep learning高位合成でDeep learning
高位合成でDeep learning
 
$30で始めるFPGA
$30で始めるFPGA$30で始めるFPGA
$30で始めるFPGA
 
増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識増え続ける情報に対応するためのFPGA基礎知識
増え続ける情報に対応するためのFPGA基礎知識
 
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
15.06.27 実録 ソフトウェア開発者が FPGAを独習した最初の3歩@RTLを語る会(9)
 
FPGAX6_hayashi
FPGAX6_hayashiFPGAX6_hayashi
FPGAX6_hayashi
 
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
 
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
 
なにわTech20170218(tpu) tfug
なにわTech20170218(tpu) tfugなにわTech20170218(tpu) tfug
なにわTech20170218(tpu) tfug
 
なにわTech20160827
なにわTech20160827なにわTech20160827
なにわTech20160827
 
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)2値化CNN on FPGAでGPUとガチンコバトル(公開版)
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
 

Plus de ryos36

Pycairo を使ってみる その1
Pycairo を使ってみる その1Pycairo を使ってみる その1
Pycairo を使ってみる その1ryos36
 
ストーリーとは
ストーリーとはストーリーとは
ストーリーとはryos36
 
CNN でテニス選手の動きを解析する
CNN でテニス選手の動きを解析するCNN でテニス選手の動きを解析する
CNN でテニス選手の動きを解析するryos36
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)ryos36
 
Polyphony の並列化
Polyphony の並列化Polyphony の並列化
Polyphony の並列化ryos36
 
Polyphony 新機能ツアー
Polyphony 新機能ツアーPolyphony 新機能ツアー
Polyphony 新機能ツアーryos36
 
Polyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGAPolyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGAryos36
 
Stellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイドStellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイドryos36
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門ryos36
 
数値計算のための Python + FPGA
数値計算のための Python + FPGA数値計算のための Python + FPGA
数値計算のための Python + FPGAryos36
 
Polyphony IO まとめ
Polyphony IO まとめPolyphony IO まとめ
Polyphony IO まとめryos36
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングryos36
 
SDSoC でストリーム
SDSoC でストリームSDSoC でストリーム
SDSoC でストリームryos36
 
Analog Devices の IP コアを使う
Analog Devices の IP コアを使うAnalog Devices の IP コアを使う
Analog Devices の IP コアを使うryos36
 
SDSoC と Vivado
SDSoC と VivadoSDSoC と Vivado
SDSoC と Vivadoryos36
 
高速化のポイント
高速化のポイント高速化のポイント
高速化のポイントryos36
 
並列計算への道 2015年版
並列計算への道 2015年版並列計算への道 2015年版
並列計算への道 2015年版ryos36
 
NiosII と RTOS について
NiosII と RTOS についてNiosII と RTOS について
NiosII と RTOS についてryos36
 

Plus de ryos36 (18)

Pycairo を使ってみる その1
Pycairo を使ってみる その1Pycairo を使ってみる その1
Pycairo を使ってみる その1
 
ストーリーとは
ストーリーとはストーリーとは
ストーリーとは
 
CNN でテニス選手の動きを解析する
CNN でテニス選手の動きを解析するCNN でテニス選手の動きを解析する
CNN でテニス選手の動きを解析する
 
Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)Polyphony の行く末(2018/3/3)
Polyphony の行く末(2018/3/3)
 
Polyphony の並列化
Polyphony の並列化Polyphony の並列化
Polyphony の並列化
 
Polyphony 新機能ツアー
Polyphony 新機能ツアーPolyphony 新機能ツアー
Polyphony 新機能ツアー
 
Polyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGAPolyphony: Python ではじめる FPGA
Polyphony: Python ではじめる FPGA
 
Stellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイドStellaris を使った組み込みアプリ開発ガイド
Stellaris を使った組み込みアプリ開発ガイド
 
研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門研究者のための Python による FPGA 入門
研究者のための Python による FPGA 入門
 
数値計算のための Python + FPGA
数値計算のための Python + FPGA数値計算のための Python + FPGA
数値計算のための Python + FPGA
 
Polyphony IO まとめ
Polyphony IO まとめPolyphony IO まとめ
Polyphony IO まとめ
 
PYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミングPYNQ 祭り: Pmod のプログラミング
PYNQ 祭り: Pmod のプログラミング
 
SDSoC でストリーム
SDSoC でストリームSDSoC でストリーム
SDSoC でストリーム
 
Analog Devices の IP コアを使う
Analog Devices の IP コアを使うAnalog Devices の IP コアを使う
Analog Devices の IP コアを使う
 
SDSoC と Vivado
SDSoC と VivadoSDSoC と Vivado
SDSoC と Vivado
 
高速化のポイント
高速化のポイント高速化のポイント
高速化のポイント
 
並列計算への道 2015年版
並列計算への道 2015年版並列計算への道 2015年版
並列計算への道 2015年版
 
NiosII と RTOS について
NiosII と RTOS についてNiosII と RTOS について
NiosII と RTOS について
 

Synthesijer で作るFORTH仮想マシン