BrainFuckマシーンリリース なう!
FPGA上で動くBrainfuckマシーンが完成しました。
Nios Development Board, Cyclone EditionでBrainfuckが動く!
(1)特徴
・最大100MHzの高速動作(Altera社、Cyclone使用時)
・シリアルポートを標準入出力として使用可能
・移植性を考慮したデザイン。ROM、RAMのサイズ、容量が可変。UNICODEにも対応。
・335LEの超小型CPU(シリアルポートを含む)
・未定義命令を検出したとき自動的にHALTモードに遷移
・Brainfuckソースコードから、Altera MIFファイルへの変換ツール付属
・全Verilogソースコード、Veritakでのテストベンチ付属
・長門モード搭載
(2)アーキテクチャ
・命令用、データ用のメモリが分離されたハーバードアーキテクチャ
・スーパースカラ機構と組み合わされた投機的インクリメント/デクリメント
+/- 命令時、あらかじめ両方の計算を先に済ませておき高速化を実現しています。
(3)長門モード
入力ピンNAGATO_MODE を1にすることで、Brainfuckは長門モードとして動作します。
・起動時に長門プロンプト「YUKI.N>」を表示
・プログラム中に改行コード(0x0a)を出力すると、改行後再び長門プロンプトを表示
長門モードにおける出力は、全てハードウェアで行うため、長門プログラミングをするときにROM容量が節約できます。
・長門プロンプト専用FIFOを搭載
送信FIFOが長門プロンプトに最適化されているため、理論値の最大速度で「YUKI.N>」を表示します。長門プロンプトを1nsでも早く表示させたい人に最適な構造になっています。
(4)動作例
Hello Worldの出力。
(http://www.kmonos.net/alang/etc/brainfuck.php のソースを使用いたしました。)
長門モードでのHello Worldの出力(右はイメージ画像)
(5)ロードマップ
2008年
Stratix3、Virtex5サポート、動作速度200MHzへ
64bit拡張
Brainfuck コンパイラサポート (サードパーティより提供)
2009年 Mona OSのサポート
マルチプロセッササポート
にょろーん☆ちゅるやさんモードサポート
ダウンロードはここ
The comments to this entry are closed.
Comments
RTL読ませていただきました.おお,本当に長門モードがステートマシンでHW実装されてるw
]の戻りアドレスは何かのバッファに積んでおくと効率が良さそうです.あと,複数命令同時フェッチ&実行とかやると,世界最速brainfuckの名を欲しいままにできるかもしれませんw ++++とか----とか,一度で実行したいところですよね.制御が大変になりそうですが...
Posted by: おおさわ | 2008.03.16 11:18 AM
最速という響きに魅かれますね。
別の日記に書きましたが、BrainFuckはアクセスの局所性が非常に高いので、まだまだ
面白い最適化があると思います。
関数型言語マシーンについては思うところがあるので、ぼちぼち書いていきます。
Posted by: なつたん | 2008.03.17 09:51 PM