このページの本文へ

塩田紳二のWindows 8 IN-N-OUT 第14回

Windows 8は最大で640個の論理CPUに対応可能

2012年08月03日 12時00分更新

文● 塩田紳二

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

Windows 8は最大で640の
論理プロセッサーに対応

 Windows 7(とWindows Server 2008R2)では最大256LPを実現するために、NUMAノードを複数まとめる「プロセッサーグループ」という単位を作った。例えば128LPの場合、2つのグループを使う(図2)。

図2 グループを使うことでWindows 7系のカーネルでは、64個を超えるLPを扱うことが可能になった。こちらは128LPを構成する場合の概念図

 WindowsではCPUの最小単位としてLPを使うが、その物理的な配置、つまりどのソケットにどのLPがあるのかを考慮してソフトウェアを実行している。例えば、他のソケットのメモリー内にあるスレッドを、別のソケットから実行することは処理効率を落とすことになる。そのためWindowsでは、「近所」のプロセッサーをまとめて管理する。

 このときに64bit版Windowsは、64bitのデータ構造の各bitにLPを割り当てて、LPがアイドル状態であるかどうかを表す「Idle Processor Mask」と呼ぶパラメータを使う(図3)。そのためWindows Vistaまでは、64LPが最大のプロセッサー数だった。

図3 Windowsではスレッドやプロセスを実行するときに、メモリーアクセスが遅くならない近くにあるプロセッサーを利用する。そのために使うデータとして「Idle Processor Mask」を持つ

 Windows 7ではこれを拡張するために、プロセッサーグループを作った。Windows 7では最大4グループをサポートし、各プロセッサーグループごとに「Idle Processor Mask」を持つので、最大256LPが実現できた。グループは任意に構成できるものの、「1グループで64LP」という制限を超えることはできない。また、ひとつのNUMAノードが複数のグループにまたがることもできない。そのため実質的には、NUMAノードも64LPを超えられないわけだ。

 Windows 8ではこの仕組みを拡張し、最大10グループの640LPを実現している。ただし、これはあくまでカーネルが持つ最大性能であり、実際にはエディションにより、利用できる最大ソケット数などが制限される可能性がある。Windows 7では最大256LPを扱う能力があったものの、Windows 7 Starterは1ソケットまで、それ以外のエディションでは2ソケットまでという制限があった。

 ちなみにWindows 7と同じカーネルを使うWindows Server 2008 R2でも同様に、エディションによってソケット数の制限がある。Standard版は4ソケット、Enterprise版で8ソケットまでになっている。

 ただしエディションによる制限は、あくまでソケット単位である。例えば、1コアがSMTによって2LPとなる場合、4コアのCore i7なら1ソケットが8LPになるし、8コアのXeon E7-2830では16LPになる。Windows 7でもLPに対しての制限はないので、2ソケットまで可能ということは、8コアのCPUを2個使えば、Windows 7で32LPを利用できるということだ。

 複数ソケットを持つマザーボードは特殊な製品でもあり、基本的にはサーバー向けとなるので、Windows 8で使うことはあまり多くないだろう。そう考えると、Windows 8(通常版)やWindows 8 Pro版では、Windows 7同様の2ソケット程度が上限となる可能性が高い。現状のコンシューマー向けパソコンのCPUならば、1ソケットで最大8~12LP程度が可能となる。2ソケットマザーボードを使えば16~24LPが可能となる。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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