Windows 8は最大で640の
論理プロセッサーに対応
Windows 7(とWindows Server 2008R2)では最大256LPを実現するために、NUMAノードを複数まとめる「プロセッサーグループ」という単位を作った。例えば128LPの場合、2つのグループを使う(図2)。
WindowsではCPUの最小単位としてLPを使うが、その物理的な配置、つまりどのソケットにどのLPがあるのかを考慮してソフトウェアを実行している。例えば、他のソケットのメモリー内にあるスレッドを、別のソケットから実行することは処理効率を落とすことになる。そのためWindowsでは、「近所」のプロセッサーをまとめて管理する。
このときに64bit版Windowsは、64bitのデータ構造の各bitにLPを割り当てて、LPがアイドル状態であるかどうかを表す「Idle Processor Mask」と呼ぶパラメータを使う(図3)。そのためWindows Vistaまでは、64LPが最大のプロセッサー数だった。
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が可能となる。
この連載の記事
-
第34回
PC
Windows 8の狙いは、UIの変化よりもAPIの変化が本質 -
第33回
PC
Windows 8が動作しなくなった? 新しくなった修復機能 -
第32回
PC
Windows 8でIMEに求められる新しい要素とはなにか? -
第31回
PC
Windows 8の無線LANをコマンドラインで細かく制御 -
第30回
PC
Windows 8をマウスで使いやすくするレジストリの小技 -
第29回
PC
周辺機器・アプリがWindows 8/RTで動くか確認する方法 -
第28回
PC
Windows 8のキーボードショートカットを全公開 -
第27回
PC
Windows 8が使いにくい? マウスを変えると印象も変わる -
第26回
PC
実はNFCに対応しているWindows 8 ただしアプリは不足 -
第25回
PC
実は扱いがまったく異なるWindows 8でのタッチパネル -
第24回
PC
Surfaceから見えるWindows RTの実像と、将来PCへの影響 - この連載の一覧へ