FPGAで作るコンピュータ将棋

FPGAは、ひとことで言えばプログラマブル論理回路である。簡単に回路構成を変更できるうえに、最近のFPGAはLE(Logic Element)が多いので、CPU自体を作ってしまうことも出来る。


1chip MSX*1にもFPGAが用いられている。PC-8001*2やX1*3MZ-700*4を作った人もいる。


特定の処理に関しては現代のプロセッサよりも高速に実行できる可能性があり、「FPGAで××する」という内容の論文が近年増えてきている。こういう論文はお手軽(?)だし、それでいて新規性があって、現在のパソコンでは到底実現できないことが実現できるのだから、価値もあるのだろう。「FPGAで××する」という論文はうんざりするほど読んだという人もいるのではないか。


FPGA用の言語としては、VerilogHDLかVHDLが一般的で*5C/C++などが使えるプログラマならすぐに習得できるだろう。FPGAのプログラムにアナログの電気回路を扱うような知識は不要なので、プログラムの書ける人なら評価ボードを買えばすぐにチャレンジできる。


私も実験用に10万LEぐらいのFPGAボード(10万円台で買える)を一つ買おうかと思っていた矢先、コンピュータ将棋の思考ルーチンをFPGAだけで書く人が現れた。(アマ4段を超える―コンピュータ将棋の進歩〈4〉詰将棋プログラムをFPGAに実装する記事が載っているので興味のある人はそちらも参考にされたし。)

更に調子にのって深さ15では70秒368Mpos。深さ16で465秒2.7Gpos。
だいたい5.5-6Mp/s程度は出るみたい。

http://aleag.cocolog-nifty.com/blog/2008/01/post_444a.html

Bonanzaで私のパソコン(PentiumD 2.8GHz)では400Kp/s程度だったはずなので10倍ぐらい速い。


コンピュータ将棋の局面評価は(駒得、王の固さなどの評価値を足し合わせていくような方式なら)FPGAによる並列化がしやすいので、局面の評価を精緻にすればするほどFPGAに軍配があがると思う。

EP3C80 LE 40,294 / 81,264 (50%) Fmax 14.35MHz

http://aleag.cocolog-nifty.com/blog/2007/12/post_a09e.html

4万LE程度でもコンピュータ将棋がプログラムできるのだというのは非常に興味深い。


コンピュータ将棋の思考ルーチンによく見られるαβ探索の変種は、局面探索自体を並列化してもあまり効果が現れない。N倍に並列化しても、√N 倍程度の効果しかない。だからプロセッサがどれだけmulti coreになってもコンピュータ将棋マシンとしては、あまり意味がない。


FPGAのLE数は2年で倍ぐらいになっているし、クロックの伸びもまだまだ期待できるので、今後10年ぐらいのスパンにおいて、(コンピュータ将棋マシンとしての)FPGAがパソコンの進化に追いつかれることはまずあり得ない。


だから、人間の名人に勝つコンピュータ将棋は、間違いなくFPGAを使ったものではないかと思う。そんなわけでコンピュータ将棋プログラマは、みんなFPGAにLet's Challenge!!


以下、私が持っているFPGA関連の書籍のうちお勧めのものを挙げておく。(入手困難なものは除く。) 使用する言語は大きく、Verilog HDLとVHDLに分かれるが、いまから勉強しようと言う人にはまずはVHDLのほうを勉強されることをお勧めする。

VHDLとCPLDによるロジック設計入門―現実のハードウェアとシミュレーションで豊富な実例を学ぼう! (Design wave basic)VHDLデジタル回路設計 標準講座FPGAボードで学ぶ論理回路設計作って学ぶCPU設計入門 - エミュレータでよくわかる!内部動作とAHDL設計・FPGA実装初歩のHDL設計学習帳   トランジスタ技術SPECIAL 79VHDLによるマイクロプロセッサ設計入門―パソコンによるシミュレーションから論理合成、配置配線まで (Design Wave Booksシリーズ)ディジタル数値演算回路の実用設計―四則演算、初等超越関数、浮動小数点演算の作りかた (Design Wave Advanceシリーズ)


FPGAボードで学ぶ論理回路設計」の付属のボードはEIAJ統一極性の電源アダプタ(外形φ4 , 内径φ1.7のセンタープラスのやつ)が必要だ。あと、パラレルケーブル(Dサブ25ピンオス - メス)も必要。オス - メスなんてパラレルケープルなかなか売ってないのでDサブ25ピンオス-オスのを買って(デジットで300円前後)ジェンダー変換器(秋月で400円)を買うのがよさげ。電源はピンヘッダになっていて、基板側のDサブはメスのほうが良かったと思うのだが、何故こんな設計にしたんだろうか。


追記)
この電源アダプタとしてPSP用の電源アダプタが使える。100円ショップで売っているパソコンのUSB端子からPSPの充電をするケーブルも使える。

*1: http://www.msx.d4e.co.jp/

*2:http://www.geocities.jp/kwhr0/hard/pc8001.html

*3:http://members.at.infoseek.co.jp/x1resource/

*4:http://www.retropc.net/ohishi/mzbyfpga/

*5:最近ではSystemC(Cライクな言語)やSystemVerilog(Verilogの拡張言語)も使われるようになってきたが。