水曜日 11 16, 2005
水曜日 11 16, 2005
石(CPU)のことも好きだとか言っておいて全然書いていないのと、 波に乗り遅れないために...
Niagaraと呼ばれていた新しいSPARC CPUが発表になり、 公式の名前がUltraSPARC T1となりました。 すでにblogs.sun.comでも多くの人が(日本語でも)取りあえげているので、 一般的な話ではなく、 私の個人的に興味を引いた点を取り上げてみたいと思います (たんなる戯言ともいいます :-)。
UltraSPARC T1においてSunがAfara Websystemsを買収したこともよく知られていますが、 実はこの会社の創設者にはUlrtaSPARC-Iを設計した人がいたということです。 (おそらく)この人はシングルスレッドから得られる並列性はUltraSPARC-Iから 大幅に向上することはないということで、 Afaraで8CPUコアを積むチップをなどという大胆な賭にでたのだと思います。 SunはUltraSPARC-Iの後かなりこの路線を発展させてはいますが、 確かにクロックあたり倍とかの性能がでているわけではありません (むしろクロックがあがった分だけでも実際に性能がでるように腐心している感じでしょう)。 UltraSPARC T1(Niagara)はこのAfaraで設計していたものを基本に作られた ものです(ほとんど同じと聞いています)。
さて、UltraSPARC T1をみていると1.2GHzで8CPU、 個々のCPUが4スレッドサポートで32スレッドをサポートというと、 UltraSPARC-I/IIで実現された最大構成のシステムがStarFireの64CPU 構成ですから、 クロックが高くなっている分をおまけするとほぼこの(かなり大きな)冷蔵庫 一台分のマシンを構成していたCPUが一つのチップになってしまったともいえます (まあ、かなり無理矢理ですけど)。 しかし、 もう少し細かくみてみるとStarFireの場合は各CPUに8MBのキャッシュがついていますし、 メモリーのコントローラも4CPUのボードごとについていたわけですから、 かなりスケーラビリティが違いそうに思えます。 しかしそうでしょうか?
UltraSPARC T1には3MBという2次キャッシュしかありませんが、 UltraSPARC -I/IIとは違ってオンダイ(CPUと同じチップに搭載) なのでかなり高速です (かつてIntelがPentium IIIのキャッシュをオンダイにしたときに容量は半分に なったけども多くのベンチマークで20%位速くなったという例があります)。 しかもこのキャッシュは8つのCPUから共有されるだけの帯域があります。 それでも8MB*64のStarFireには全然かないそうもありません。 はたしてStarFireのシステムで8MB*64という風に計算したものと、 UltraSPARC T1における8CPU共有の3MBをどう比べればよいのでしょうか? *64というのが胡散臭い感じがします。 SMPの環境において多くのスレッドが忙しく動いている状況を 考えてみるとそれぞれのCPUが持っているキャッシュメモリの 内容は重複している分が少なくないのではないでしょうか? 少なくとも実行しているコードはかなり同じページにある 場合があるでしょう(カーネルなんかまさにそうですね)。 またスレッドやプロセス間で通信するためにメモリをよく使いますが、 この場合StarFireなどのようなSMPの場合、 一つのCPUが書いたキャッシュの内容をDRAMに一度書き込んでから、 再度別のCPUが読むか、 あるいはキャッシュからキャッシュへの転送ということをしないといけないです。 ところが、UltraSPARC T1の場合は同じ2次キャッシュを共有しているので、 単に2次キャッシュから読んでくるだけですみます (どちらの場合も実際にはもっと複雑な処理をしていますが)。 こういった違いがありStarFireとUltraSPARC T1は単純には比べられませんが、 ぱっと見た目の数字だけではわからないと思います。
DRAM(メモリ)へのアクセスはどうでしょうか? StarFireはシステムボードの数に応じてメモリのコントローラが増え、 かなり速そうです。 しかし、これもUltraSPARC T1の場合はDDR2のコントローラがオンダイで しかも、128bit(+ECC)が4チャンネルついています (XEONとかは通常64bitのチャネルなので、XEONが2チャンネルでも4倍くらいの 帯域があることになります)。 一方StarFireは確か(うろ覚え)FPDRAMであるとか、 CPUからメモリーまで遠い(途中複数のチップを通る)など 帯域がある程度あっても遅延がかなりあります (SMPのマシンで当時としては速かったのですが)。 Opteronの例をあげるまでもなくメモリのアクセスの遅延が システムのパフォーマンスに及ぼす影響は大きいですので、 ここでもUltraSPARC T1はかなりがんばっているといえます。
ということで、単純比較はできませんが、UltraSPARC T1を 使ったシステムはStarFireのような10年前の大規模なシステムを 一つのチップにしてしまったといえなくはなく、大変興味深いシステムだと思います。 キャッシュの特性のように今までのSMPとは違う新たなパフォーマンスレベルを発揮すると思われます。 と書くとわかるかもしれませんが、まだ、使ったことないです。 噂ではお試し用のシステムが何台も社内にあるけど、 あっという間にお客の先に行ってしまうようです。 実際に使える日を楽しみにしています :-)