IntelのNehalem EX
4コアのNehalem EPについてはすでに出荷されており、最近発表される多くの2ソケットのサーバで採用されている。また、Nehalem EXも2009年2月のISSCCで発表されており、あまり新しい情報は無いのではないかと思っていたのであるが、幾つかサプライズがあった。
Nehalem EXは、2スレッドのHyperThreadingをサポートするNehalemコアを8個と、24MBという巨大なL3キャッシュを1チップに集積し、さらに2つのメモリコントローラと6.4GT/sのQPIを4本サポートしている。
このようなチップの半分程度を占める巨大なキャシュは物理的にも大きく、端から端まで信号が伝播するだけで数サイクルを必要としてしまい、単一のモノリシックなキャッシュとして動作させるのは効率が悪い。このため、Nehalem EXでは各コアが3MBずつのキャッシュを持つ形に区分し、全コアが自分の3MBをアクセスする場合には並列に動作できるようにして3次キャッシュからコアへのデータ転送バンド幅を稼いでいる。各コアはまず、自分の3MBのキャッシュにアクセスし、それがミスした場合には他のコアの3次キャッシュにアクセスするという構造になっていると推測される。
AMDのMagny-Coursの3次キャッシュは2次キャッシュを追い出された情報を格納するVictim Cacheであるが、Nehalem EXのキャッシュは伝統的なInclusion Cacheで、1次や2次のキャッシュに入っているラインは、すべて3次キャッシュにも入っているという構造であり、他のチップからのスヌープは3次キャシュのタグだけを見れば、チップ全体にキャッシュされているかどうかがチェックできる構造であり、AMDのプロセサとは対照的である。 Nehalem EXの場合は、EPと同一のコアとするとL2キャッシュは256KBであり8コアあわせても2MBである。したがって24MBのL3キャッシュの内の2MBが重複してデータを格納するロスよりも、上位キャッシュまでスヌープに行く方がロスが大きいという判断であろう。
このコア対応のローカルな3MBのL3キャッシュブロックは、互いに逆方向に回る2つのリングバスで接続されていることが今回明らかになった。より詳しく言うと、データ伝送は2つの32バイト幅のリング、これとは別にプロトコルの伝送には4つのリングがある。そして、このリングにキャシュコヒーレンスを司るQPI Caching Agentも接続されている。
リングバスは、リングストップ間の伝送に1サイクルを必要とするが、複数のリング区間に別のデータを載せることができる。このため、単方向リングの4倍のバンド幅になり、250GB/s以上のバンド幅になるという。
これまでQPIはディレクトリベースのキャッシュコヒーレンシをサポートしていると発表されてきたが、今回の発表では、要求元が全ノードにスヌープ(AMDのプローブと同じ)を送り、各ノードはスヌープ応答をホームノードに送り、ホームノードから要求元ノードにデータを送るというソーススヌープ方式であることが明らかになった。ただし、I/O Hubチップはこのソーススヌープには対応していないので、I/O用にはディレクトリをもっており、全体的にはHybrid方式と説明された。
この件についてPeter Glaskowsky氏に質問すると、Davidの方が詳しいといってDavid Kanter氏を紹介してくれた。Kanter氏によると、本格的なディレクトリ方式のコヒーレンス機構は大型のシステムでないと意味がないので、ディレクトリはQPIを共用するItanium向けだということであった。そして、Caching Agent、Home Agentと4つのQPIポートをクロスバで接続している。
また、Nehalem EXではメモリ系もEPとは異なっている。EPではDDR3メモリをCPUチップに直結する構造であるが、EXでは、Scalable Memory Buffer(SMB)と呼ぶバッファチップを経由してDIMMを接続する。SMBは2チャネルのDDR3 DIMMを接続することができ、 Nehalem EXチップとは高速のシリアルバスに接続される。そして各チャネルには2枚のDIMMが接続できるので、全体ではDDR3 8チャネル、16DIMMとなり、Nehalem EPが3チャネル6DIMMであったのと比較すると3倍近くメモリバンド幅と容量を向上させている。
ということで、Nehalem EXはEPと比較するとコア数が2倍になっただけでなく、3次キャッシュ周りとメモリインタフェースが強化されている。ただし、この部分に関してNehalem EPの詳細は発表されていないので、3次キャッシュとCaching Agentなどをリングバスで接続する構造は、Nehalem EPでも同じである可能性もある。
そして、従来のハイエンドサーバ用のプロセサであるXeon 7400と比較すると、Nehalem EXのメモリバンド幅は9倍であり、データベース性能では2.5倍以上、整数系のプログラムのスループットは1.7倍以上、浮動小数点プログラムのスループットは2.2倍以上に向上していると発表された。