「Hydra考」を続けようと思っていたのだが、いくつかハッキリしない疑問が出て来たので現在Chrillyに問い合わせている最中である。返答を貰える保証はないが[*1]数日待ってみて改めて書こうと思う。


さて、先のMarcの指手生成回路を分析してみた。まず、この指手生成回路の論文に書かれてある諸元を要約すると次のようになる。

--
・33MHz動作。
・デバイスは Xilinx Virtex XCV800-4 を用いた。
・フロアプランニング[*2]を行うことで17%高速化した。
・回路のリソース消費状況は、
 1)の記述: 7,000LUTs,1000FFs, 2BlockRAMs。
 2)の記述:10,100LUTs, 800FFs, 350の32x1bit(Distributed)RAMs。
・非合法手を含めて、毎秒140万着手を生成。
・合法手に限れば、 毎秒 90万着手(テストプログラムを走らせて計測)を生成。
・αβ枝刈を行った上で、 毎秒28万局面を探索。
・FPGAを使わない版では、毎秒 5万局面を探索。
・それ自身は(通信オーバヘッド除)、非合法手を含んで毎秒約450万着手を生成。
--
ここで、最後の「毎秒約450万着手を生成」の示す意味について考えてみる。
この数字から逆算すると、1回の指手生成には約222[ns]が掛かっていることになる。手の生成はFindVictim, FindPivot, FindAggressor の3段階を踏む必要があるので、各々約74[ns]以内で処理を終らせる必要があることになる。つまりはこの時間がクリティカルパスの最大となる。各処理には3サイクルを当てているので、1サイクルは約24.7[ns]以上が必要だが、33Hz動作の1サイクル分は30[ns]なので問題はない。最大の遅延時間である約74[ns]は、2サイクル=60[ns]では駄目だ(処理が終らない)が、3サイクル=90[ns]なら無問題というわけだ。
注目すべきは、この「クリティカルパスが約74[ns]」という点にある。この時間を短くすることが出来れば、生成効率を上げることが出来る、つまりは探索速度を上げることに直結するからだ。
次項では、この指手生成回路をAlteraのデバイスへ移植した場合にどうなるかを分析してみることにする。

-- 続く --


[*1] というより、スパムと思われた可能性の方が高過ぎる気がする。
[*2] 回路の物理的な配置を(一般には大まかに)手動で指定すること。