AMD new coreを発表

後藤さんの記事からAMDのnew coreの発表について。以前から情報が漏れていたものの、AMDのコードネームがコロコロ変わるし、途中でポシャルものが多いらしく情報が錯綜する。でも、シリコンになったようだし、ここまでくれば確実そうだ。結局、4 coreは浮動少数点演算器を強化したnew coreを使うらしい。

このnew coreではキャッシュの帯域、命令のフェッチ、デコードの帯域を倍にし、SSE演算器を倍にするようで、IntelのC2での強化に似ている。Windows Vistaでは、1命令のビット数が増えてしまうし、浮動点少数演算の利用がSSEに移る。次世代のOSに合わせると同じ方向になるのかもしれない。
演算器の性能はC2Dとほとんど同じなので、AMDの方がキャッシュが少なくてレイテンシが多い分ベンチマークは不利だろう。でもスケジューラや分岐予測のメモリ容量を増加しているので、今でさえプログラムの好き嫌いの少ないCPUだったのに、更に雑食に強いCPUになりそうだ。処理の重いサーバで利点だろうが、私のような明らかに潰せる分岐をそのままにしている日曜プログラマーにもうれしい。

SSE演算器の強化といえば、C2DではSSEをよく使っていると思うエンコードベンチマークでもCore Duoと比べてあまり上がっていない。クロックにある程度比例してベンチマークが上がっているけど、これは巨大なL2キャッシュのおかげだろうなぁ。
DOS/V POWER REPORTのTMEPG, MPEG2エンコードのベンチマーク記事をみるとE6700(2.66GHz):309sec, E6600(2.4GHz):314sec, E6300(2.13GHz):383secとなっている。処理性能(クロック)を相対値に直すと、1.239(1.249):1.220(1.127):1(1)になる。クロックが10%上昇するとエンコード性能が1.5%上昇し、キャッシュが2Mから4Mに増えると20%上昇する。MPEG2エンコード程度の処理では、ボトルネックがメモリ帯域となることが明らかだ。

どんぶり勘定すると、128bitでデータを処理するとCPUが2GHzで4回に1回くらいメモリにアクセスできる。2R/Wでデータ処理を行うとすると1回の処理にスループットで12クロックかかることになる。2つの128bitデータに対して12回の演算を行わないと演算器が空いてしまう、こんなに処理を行わないなぁ。実際のメモリ帯域は6-7割だから1クロックあたり0.5-1回のSSE命令がやっとのメモリ帯域だ。
SSE4命令の追加をみていると行列演算だけでなくてループ展開にも使っていくつもりのようだから、メモリ帯域の確保が更に重要になる。それと、これらの機能強化か効果的な科学演算、統計解析を使うプログラム、推敲を行うプログラムでの有効性を確認できるベンチマークが必要になる。(今は、ベンチマークがまるでないので。噂を聞くくらいしか選択方法がない。)


単体のプロセッサの処理が上がってくれないと、さすがに困るのだけど、ここにきてx86系CPUのクロックの上昇が年1.1倍ていどになってしまった。メモリ帯域が延びないのも痛い、このままでは次世代くらいでメモリ帯域がボトルネックになってしまいベクトル演算するメリットが消失するかも。そうすると複数プロセッサを利用するしかなり、プログラムの手間が増大してしまう。特にデータ構造を決めるのが難しい。プログラムの論理設計と実際のプログラムの間を埋めてくれるような補助ソフトが必要かもしれん。