AlteraのQuartusII 5.0 WebEdition(無償版[*1])を使って、各々のデバイスの現在最高のスピードグレイド品[*2]を使い、且つ最適化設定を速度優先[*3]にしてビルドを行い、クリティカルパスと消費したリソースについて調べてみると次の様になった(但し、フロアプランニングによる手動最適化は全く行っていない)。

--
a) StratixII(EP2S15F672C3) : 23.724[ns] 26[logic levels]
   10,047ALUTs, 407FFs, 11,200bits(Nett)  72,576bits(Gross:17%)
b) CycloneII(EP2C35F672C6) : 36.215[ns] 41[logic levels]
   12,025 LUTs, 407FFs, 11,200bits(Nett) 354,816bits(Gross:73%)
--

このMarcの指手生成回路に限って言えば、StratixIIはCycloneIIの1.5倍程度速く動作出来ることが判る。なお、Virtexと比べるとRAMのリソース消費が大きく異なるが、これはAlteraのFPGAとXilinxのFPGAのアーキテクチャの違いに因る。XilinxのFPGAの場合は、各LUTを(制限付きではあるが)非常に容量の小さなRAMとして使用できる機構を持っている[*4]。その為、AlteraのFPGAよりメモリ資源の消費量が少なく見えるのだが、リソースが足りず実装できないという深刻な状況ではないので、ここでは厳密な議論を省くことにする。


さて、指手生成回路だけで見れば、StratixII(a)の結果からは、1サイクルを(23.724[ns]の1/3の)約7.9[ns]にすることが出来るので、およそ126[MHz]動作が可能になり、フロアプランニングを巧く行えば更にその約20%増の150[MHz]程度で動作出来る可能性がある。単純に、Marcのベンチ結果の約4倍の速度で探索出来る潜在性能があるわけだ[*5]。また、廉価版CycloneII(b)の結果からは、1サイクルを約12.15[ns]にすることが出来るので、およそ82[MHz]動作となり、フロアプランニングによっては100[MHz]近くまで上げられる可能性があることになる。勿論、これは3サイクルを当てた場合の話で、サイクル数を減らしたい場合は、その分基準となる動作周波数を落とすことになるが、何れにせよクリティカルパスの時間が、その回路の性能を決める。


以上はあくまでチェスが前提の話で、しかも指手生成回路に限っての話だ。次項では、この手法を将棋へ適用し、且つ局面評価と探索制御についても考慮した場合を考えてみることにする。

-- 続く --


[*1] 機能が制限された無償版だけを用いた。これは、サードパーティの開発支援ツールを全く使ってないという意味で、相当辛い開発環境である。予算があれば強力な開発環境を構築出来る(性能を上げるための最適化ツールが色々あったりする)。
[*2] 但し無償版では、StratixIIならEP2S15*、CycloneIIなら EP2C35*しか選べないようになっている。

[*3] 速度優先以外には、エリア優先、それらをミクスチャしたバランス重視、それ以外にも様々な設定がある。一般に速度優先に設定すると、リソースの消費量がエリア優先と比べ数割増えるので注意が必要。
[*4] Xilinxでは、これを"DistributedRAM"と呼んでいる。AlteraのFPGAではそのようなことは出来ないのだが、その代わりに総容量としては大きなBlock型のRAMを用意している。特にStratix系では、そのブロックサイズが大・中・小3種類と豊富になっている。XilinxのFPGAではVirtex4でもBlock型は1種類しかないので、微小サイズのRAMに対しては、LUTをDistributedRAMに換えて用いる。

[*5] Marcが試したXilinxのXCV800-4は、初代Virtexで非常に古く、StratixIIが4倍の動作速度で動いても不思議ではないし、それくらいの性能が出せないと意味がない。