開発メモ : Core i7/Core i9は遅いのではないのか

Core i7のL2は小さすぎる。Core 2シリーズでは4MB前後あったL2が、次のようになっている。


L2:256KB×4
L3:8MB


L2がコアごとに256KBしかないので、コンピュータ将棋で使うような利きを求めるためのlook upテーブルすらL2には載るかどうか怪しい。Magic BitboardsなんかまずL2に載らないだろう。


コンピュータ将棋用として使うならNehalem(Core i7/Xeon 5500系)は要注意である。正直、Nehalemはコンピュータ将棋向きではないと思う。


来年5月の大会(世界コンピュータ将棋選手権)用なら、Core i9が来年3,4月ごろに発売されるらしいので、これのXeon版(6コア×Dual = 12コア)しか大会上位に残るつもりなら選択肢がないのだが、こちらも


L2 : 256KBx6
L3 : 12MB


という噂だ。L2は非共有で、L3は共有ということだろう。L3が大きくなったので、少し安心感が増したが、L2が小さいのは相変わらずだ。しかし、これしか選択肢がないのだから、嫌々ながら、これを使わざるを得ない。


よって、いまから、コンピュータ将棋を作るなら、どのテーブルをL2に収めるのか綿密に評価し、計算しながらテーブルサイズを決定していかなければならない。


理想的には、置換表と評価関数用のテーブルへのアクセスの9割ぐらいがL3にヒットして(残り1割はキャッシュミス)、残りのテーブル類はすべてL2に収まって欲しいが、そんなことは不可能だろう。


L1/L2/L3のlatencyは、The PC Journal( → http://pcjuornal.com/topics/AMD_PhenomII_X4-3.html )によると、Core i7-965で、4サイクル / 11サイクル / 42サイクルとある。たぶん、Core i9でもこの値は大幅には変わらないと思われるので、この値だとして考える。


利きを計算する場合など、L3に入っているテーブルを1回アクセスするより、L2に入っているテーブルを3回アクセスしてbitwise orを取ったりするほうが高速だということを意味している。こういうこともあって、私はCore i7/i9ではMagic Bitboardsを使うべきではないと判断した。


ところで上のThe PC Journalのlatencyの表の値はどうもおかしい気がする。例えば、Core i7-965のL1がlatencyが4とあるが、こちらの記事(→ http://journal.mycom.co.jp/special/2008/nehalem02/013.html )では2ぐらいとある。前者は正味のlatencyで後者はthrouhtputなのかも知れない。