このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第210回

チップセット黒歴史 負荷低減策が負荷を招いたIntel 5000X

2013年07月08日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/

  • この記事をはてなブックマークに追加
  • 本文印刷

スヌープフィルター搭載の
Intel 5000Xチップセット

 Blackford-VSとは別に、Blackfordとまったく同じタイミングで投入されたのが、今回のテーマであるGreencreekことIntel 5000Xチップセットである。

 当時の説明としては、Blackfordはサーバー向けということで、Bensleyプラットフォームと呼ばれるサーバー用のリファレンスが提供された。

 一方Greencreekは、ワークステーション向けという扱いで、Glidewellというワークステーション用のリファレンスが提供されているが、実のところパッケージも互換で、外部のI/Fなどに関してはIntel 5000Pと同じであり、ワークステーション向けというよりは、HPCサーバー向けなどに、5000シリーズチップセットのハイエンド品として導入されることが多かったようだ。

 このIntel 5000Xチップセット、当初はIntel 5000Pとなにが違うのかあまり明確ではなく、わずかに拡張バスの構成が違う程度としか認識されていなかった。

 しかし、2006年9月にサンフランシスコで開催されたIDF Fall 2006のテクニカルセッションの中で、Greencreekにはスヌープフィルターが搭載されていることが明らかになった。わざわざコード名を変えたのは、ダイそのものがご覧のようにまったく違うことに起因する。

左がBlackford、右がGreencreekのダイ。Greencreekは、上側にキャッシュエリアが追加されているのがわかる

マルチプロセッサーの足かせとなる
スヌーピング

 このスヌープフィルターについて説明しよう。元々、マルチプロセッサ環境で必要な処理の中にスヌーピングというものが存在する。例えば図1のような環境があるとする。

図1

 2つのプロセッサはそれぞれ独自の処理を行なっているわけだが、仮にここでCPU #1があるデータを書き換えたとする(図2)。

図2

 その場合処理は以下の流れになる。

  1. CPUコアがキャッシュ中の領域を書き換える。
  2. キャッシュはチップセット経由で、該当するメモリ領域にそれを書き戻す。

 ここで問題になるのは、CPU #2がメモリー領域をキャッシュしていた場合にどうなるかである。その場合、CPU #2のキャッシュ領域はメモリーと内容が食い違っていることになる。それをCPU #2は自分では検知できないので、CPU #1が他のCPUに教えてやらなければいけない。

 そこで、キャッシュへの書き戻しと同じタイミング(正確にはキャッシュへの書き込みが完了したタイミング)で、今度はCPU #1からCPU #2に対し、「メモリーのXXXXというアドレスを書き換えた」という通知が送られる(図3)。

図3

 通知を受けたCPU #2は、自身のキャッシュがこのアドレスをキャッシュ対象としているかを確認、もしキャッシュ対象にしていた場合はそれを無効化する。この一連の過程をスヌーピングと呼ぶ。

 マルチプロセッサーの場合は、煩雑にスヌーピングが発生する。特に、バリバリとメモリーに書き込むような処理を行なっている場合、スヌーピングが占めるトラフィックの割合が馬鹿にならない。

 それぞれのCPUも、仮にスヌープの通知を受け取った場合、直ちに自分のキャッシュを確認しないといけない。もし自身がそこをキャッシュしていたとすると、直ちに正しい値に置き換えないと以後の処理がおかしくなってしまうからだ。これの負荷も馬鹿にならない。

 スヌーピングそのものを省くことはできないが、可能ならもう少しトラフィックや処理負荷を減らせれば、システム全体の性能改善に役立つことになる。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン