キャッシュを確認する動作を抑え、FSBの利用効率を上げる
スヌープフィルター
そこで登場したのがスヌープフィルターである。これは、FSB #1とFSB #2のそれぞれで、どんなメモリー領域がキャッシュされているかを自身のスヌープキャッシュに搭載している。また、スヌープキャッシュの管理や、スヌーピング自身のトラフィック管理を行なうスヌープコントローラーもチップセット側に追加されている。
さて、この状況でまたCPU #1がメモリーを書き換えたらどうなるだろうか。まずキャッシュのライトバックそのものは、図2と同じように行なわれる。変わるのはここからで、書き込みが完了したらCPU #1はスヌープの通知を発行するが、これはチップセットに入った段階でそのスヌープコントローラーが一旦受け取る(図4)。
ここでスヌープコントローラーはスヌープキャッシュを参照し、「このスヌープ通知をFSB #2に流す必要があるか」(CPU #2がそのメモリー領域をキャッシュしているかどうか)を確認する。
ここでもしキャッシュしていなければ、そもそもFSB #2にスヌープ通知を流す必要がないので破棄、一方もしキャッシュされていれば、スヌープコントローラーが改めてFSB #2にスヌープ通知を送り出す(図5)という仕組みである。
スヌープフィルターによるメリットは、不必要なスヌープ通知を削減できる可能性があることだ。2つのCPUがお互いに同じようなメモリー領域を書き換えながら処理を進めている状況ではスヌーピングを削減できないが、お互いが別々のメモリー領域にアクセスしながら処理しているような場合だと、スヌープ通知は不要だし、むしろオーバーヘッドになるだけである。
そもそもスヌープ通知をCPUではなくチップセットが出すような作りになっていれば、スヌーピングのトラフィックを最小にするようなことも可能だった。ところが、長らく共有バス方式を取ってきておりスヌープ通知の発行そのものもCPU側に搭載しているXeonの場合、過去との互換性を保つ必要があり、今更チップセットがスヌープを出すようには変更できない。それでも2本のFSBの間を分断するだけで、性能が改善すると見込めたのだろう。
スヌープフィルターという方式はGreencreekだけでなく、2007年に登場したClarksboroことIntel 7300 MCHや、AMDもHT Assistという名称でIstanburコアOpteronなどに実装するなど、それなりに普及した方法である。ちなみにAMDの場合、3次キャッシュの一部をスヌープキャッシュとして利用するという形の実装になっている。
スヌープフィルターを使うと
高負荷時以外は性能が低下する
こうしたスヌープフィルターを実装したGreencreekがなぜ黒歴史だったかというと、「スヌープフィルターを有効にすると遅くなる」からである。
インテルが当時発表した性能レポートを見ると、高負荷時には確かに効果的というレポートが出ていた。またインテル製品を利用したソリューションベンダーのレポート、例えばHPCテクノロジーズのこちらや、こちらを見ると、スヌープフィルターが効果的というレポートが示されるが、逆に低負荷時には性能が落ちるという話が頻発した。理由は単純で、スヌープコントローラーの処理が遅かったからだ。
スヌープコントローラーは以下の処理を行なう。
- スヌープ通知を受け取り、どのメモリ領域が対象か確認する。
- 自身のキャッシュを確認して、それがキャッシュ対象かを確認する。
- キャッシュ対象の場合にスヌープを反対側のFSBに発行する。
この判断のために毎回16MB分のキャッシュ領域を総なめする必要があった。おまけに、スヌープを発行すべきかどうかを判断するまで、反対側のCPUの処理を止めないと危険なため、頻繁にwaitが入ることになる。もしもスヌープ対象かどうかを判断中に、まさにその領域を別のCPUが書き換えた場合には、回復不能エラーになりかねないからだ。
また、メモリーの書き込みにあわせてスヌープキャッシュの更新も行なわなければならない。このため、メモリーの書き込み速度そのものがIntel 5000Pより遅いという、本末転倒な状況に陥ることになった。
高負荷時には、こうしたオーバーヘッドを埋めて余るほどスヌーピングのオーバーヘッドが大きいため効果があるが、そうでないとむしろ性能が低下するわけで、結果としてIntel 5000Xを導入したサイトの大多数がBIOSセットアップでスヌープフィルターの機能を殺し、単にIntel 5000P相当として利用するという結果になった。
インテルはこれに対してどう対処したかというと「何もしなかった」。というより何も出来なかったというほうが正解だろう。
こうなると、ファームウェアの改善などでどうにかなるレベルではない。幸いにも翌年には、1600MHz FSBや800MHz FB-DIMMなどに対応したSeaburgことIntel 5400チップセットがリリースされ、これに搭載されたスヌープフィルターはスヌープコントローラーとキャッシュを高速化したために問題が解決した。こうしてスヌープフィルターの問題は下火になった。
スヌープフィルター実装の第一世代だけに、問題が出るのは致し方ないことではあったろうが、鳴り物入りで発表されたにも関わらず、あっという間に引っ込められてしまったあたり(とはいえ、無かったことにはしないあたりはさすがインテルであるが)、初めから捨石扱いだった可能性が高い。
実のところIntel 5000シリーズチップセット全体が、RAMBUSによる特許問題※で登場が遅れてしまっており、結果この5000シリーズチップセットが出た翌月には、Core 2ベースの「Xeon 5100」シリーズが登場することになった。
※:FB-DIMMに搭載されているAMBというチップがRAMBUSの特許を侵害していると訴えられた問題。最終的にFB-DIMMベンダーが個別にRAMBUSとライセンスを結ぶことで解決した。
「Xeon 5100」でももちろんIntel 5000シリーズチップセットが利用できたが、本命のチップセットは翌年出るSeaburgであり、それまでの1年を繋げれば良い、ということで投入されたようだ。そういう意味では、最初からややかわいそうな子だったのかもしれない。
この連載の記事
-
第767回
PC
Lunar LakeはWindows 12の要件である40TOPSを超えるNPU性能 インテル CPUロードマップ -
第766回
デジタル
Instinct MI300のI/OダイはXCDとCCDのどちらにも搭載できる驚きの構造 AMD GPUロードマップ -
第765回
PC
GB200 Grace Blackwell SuperchipのTDPは1200W NVIDIA GPUロードマップ -
第764回
PC
B100は1ダイあたりの性能がH100を下回るがAI性能はH100の5倍 NVIDIA GPUロードマップ -
第763回
PC
FDD/HDDをつなぐため急速に普及したSASI 消え去ったI/F史 -
第762回
PC
測定器やFDDなどどんな機器も接続できたGPIB 消え去ったI/F史 -
第761回
PC
Intel 14Aの量産は2年遅れの2028年? 半導体生産2位を目指すインテル インテル CPUロードマップ -
第760回
PC
14nmを再構築したIntel 12が2027年に登場すればおもしろいことになりそう インテル CPUロードマップ -
第759回
PC
プリンター接続で業界標準になったセントロニクスI/F 消え去ったI/F史 -
第758回
PC
モデムをつなぐのに必要だったRS-232-CというシリアルI/F 消え去ったI/F史 -
第757回
PC
「RISC-VはArmに劣る」と主張し猛烈な批判にあうArm RISC-Vプロセッサー遍歴 - この連載の一覧へ