【最初の注意】
本記事は、私が2002年当時に今はなき「XWIN II Web Page」で掲載したものを、基本的にそのままの形で再掲載したものです。では、どうぞ。
この前の記事「Dual Xeon 2.20GHz ベンチマーク編 III」
巻頭言 974 「Windows XP Home EditionでHyper-Threadingは有効になるか?」
今回の巻頭言は、Hyper-Threadingの有用性について検討する予定としていたが、まだまだベンチマークテストとして追加すべきものをいくつか考えたので(検討を行う過程で、新たなテスト方法を追加すべきという考えに達したため)、これを行ってからHyper-Threadingテクノロジの有用性については考察していきたい。
そこで、時間のかかるベンチマークテストを行うには、今回の巻頭言には間に合わないことから、特別企画(別名、穴埋めあるいは埋め草とも言う)として取り上げるものは、表題のとおり、「Windows XP Home EditionでHyper-Threadingは有効になるか?」ということについてである。
Windows XPの二つのEdition。Home Editionは、シングルプロセッサのみにライセンスされるものであり、もう一方のProfessional Editionは、シングル及びデュアルプロセッサにライセンスされるとなっている。Windows XP Professionalの前バージョンとなるWindows 2000 Professionalや、さらにその前のWindows NT 4.0 Workstationも、デュアルプロセッサまでというライセンス条件に違いはない。
Windows XP ProfessionalやWindows 2000 Professional、Windows NT 4.0 Workstationは、OSインストール時にハードウェア環境を確認し、シングルプロセッサ環境であれば、Uni Processor Kernelをセットアップし、デュアルプロセッサ環境であれば、Multi Processor Kernelがセットアップされることは、これらのOSをインストールされた方なら自明であろう。
しかし、Hyper-ThreadingテクノロジをサポートしたWindows XPでは、たとえシングルプロセッサ環境にあっても、Multi Processor Kernelが必要になる。Hyper-ThreadingテクノロジをサポートしていないWindows 2000以前のOSであれば、もちろんUni Processor Kernelで問題はないが(物理プロセッサ数=論理プロセッサ数のため)、一粒で二度おいしい……ではなく、一つのプロセッサであっても二つと認識する Windows XPなのだから、Uni Processor Kernelではそれを活かすことができなくなってしまうからである。
Windows XP Home Editionは、シングルプロセッサのみのライセンスではあるが、これは物理プロセッサのことであるのはいうまでもない。なぜなら、デュアルプロセッサまでのライセンスとされているWindows XP Professionalで4つのプロセッサを認識・実行しているのだから、Microsoft社がこのあたりの制限を存置したままリリースしたとは考えにくいという理由からである。これを確認するには、4-way以上のPCにWindows XP Professionalをインストールし、物理的に4つのプロセッサを有効にできるか否かで行えるが、残念ながら自宅にそんな剛毅なマシンはないので確認できない。なので、確実にそうだと断言できるものではないが、そうだと推測して話を進めることにする。
なぜ、こういうことにこだわるかというと、一般的にシングルプロセッサのみをサポートするということは、Uni Processor Kernelだけでいいはずである。だが、Hyper-Threadingテクノロジの登場によって、シングルプロセッサなのに論理プロセッサとしてはデュアルプロセッサと同等となるということは、つまり、Home EditionでもMulti Processor Kernelが要求されるからである。このあたりのことが既に製品としてサポートされているのかを確認するには、とにもかくにもWindows XP Home EditionをDual Xeon 2.20GHzマシンにクリーンインストールしてみるのが一番である。
ということで、早速パーティションを一つ作り、Windows XP Home Editionをクリーンインストールを行った。Windows XP Professionalのクリーンインストールはこれまで何度も、いや何十度も行ってきているが、Home Editionの方は、実質二度目くらいである。とは言いつつも、Professional EditionとHome Editionのクリーンインストールにこれといった違いはないに等しいので、Home Editionだからと特筆すべきものもなく、無事にクリーンインストールが終了した。さて、早速確認すべきは、Uni Processor Kernelなのか、Multi Processor Kernelなのか……。
イベントビューアのシステムログ情報からわかるMulti Processor Kernelサポート
イベントビューア(システム)情報よりログを確認してみると、上記のとおり、「Multiprocessor Free」の文字が…。本来、シングルプロセッサだけをサポートするのであれば、「Uniprocessor Free」となるはずが、そうなってはいない。こうなれば、「Ctrl+Alt+Delete」でタスクマネージャを呼び出し、パフォーマンスモニタで CPU使用率を確認するしかない。でその結果は…、
Windows XP Home Editionにおけるパフォーマンスモニタの結果
しっかりと2つのCPUとしてサポートされている。そう、Windows XP Home Editionは、シングルプロセッサのみのライセンスでありながら、デュアルプロセッササポートを実現しているのである。Hyper- Threadingテクノロジをサポートしているとするなら、こういう結果となるのは明らかではあるが、シングルプロセッサとしてリリースされるものの中に、Hyper-Threadingテクノロジをサポートしているものは一つもないのが現状であるが、OSの方では「Ready!」状態となっているわけである。
(もっとも、Windows XPのリリース日を考えれば、この時、Hyper-Threadingテクノロジをサポートしたプロセッサすらリリースされていないのだから→正確に言えば現在でもそうだが…、驚くに値しないとも言える。だが、そうなると、Home EditionとProfessional Editionの敷居がまた一つなくなったとなるだろう。)
これは、デバイスマネージャを見ると、よりはっきりと確認できるものである。
Windows XP Home Editionにおけるデバイスマネージャの結果
「ACPIマルチプロセッサ PC」とあるが、もちろんハードウェア上ではそうなっているものの、Windows XP Home Editionでは、物理プロセッサを一つのみサポートしているだけであるので、これがHyper-Threadingテクノロジをサポートしていないプロセッサ(例えばDual Xeon 1.70GHz)ではこうはならない。「ACPI (Advanced Configuration and Power Interface) PC」などという表記に変わり、シングルプロセッサを対象としたシステムになるだけの話である。
ところが、Hyper-Threadingテクノロジをサポートしたプロセッサであれば、物理的に一つのプロセッサであっても論理的には二つのプロセッサとなるので、デバイスマネージャではこれをマルチプロセッサPCとみなすようになる。これはなかなか凄いことだと思うが、デバイスマネージャの表示に一部疑問が残るものもある。
それは、Windows XP Home Editionのデバイスマネージャにもプロセッサが二つ出ていることである。デュアルプロセッサをサポートし、4つのCPUが実現されている Windows XP Professionalのデバイスマネージャでも、以前に示したようにこうなっているからだ。
Windows XP Professional Edition(4CPU認識)におけるデバイスマネージャの結果
このように、まったく同じなのである。これは、物理的に接続されているプロセッサのみを示すと考えていたのだが、Home Editionの結果も同じものだとすると、考え方を変えなくてはならないのかもしれない。それとも、Home Editionでも、実は物理的に2つのプロセッサを認識しているのだろうか。物理的に一つなのか二つなのか、これを確認するためには、前回巻頭言で示したSuper πによるベンチマークテストを行ってみればわかるだろう。CPU 0とCPU 1にそれぞれSuper πの実行スレッドを2つずつ持たせ、計4つを同時実行し、結果を比較すればはっきりする。早速テストを行ってみよう。
上は、Super πを4つ同時実行させているときのパフォーマンスモニタの様子であるが、CPU 0、CPU 1いずれも使用率は最高となり、全体としての使用率も100%に届いていた。では、結果である。
CPU 0とCPU 1に二つずつ実行スレッドを割り当てた場合(Windows XP Home Edition)
なお、Windows XP Professionalで、Hyper-ThreadingをOFF(boot.iniで、/numproc=2を指定)にしたデュアルプロセッサ環境では、以前にも示したように次のとおりとなっている。
CPU 0とCPU 1に二つずつ実行スレッドを割り当てた場合(Windows XP Professionalで
Hyper-ThreadingをOFF)
見かけ上は同じデュアルプロセッサだが、やはり物理プロセッサ二つと論理プロセッサ二つでは勝負にならない。このことから明らかなように、Windows XP Home Editionでは物理プロセッサのサポートは一つであることが確認できたが、このHome Editionの結果は、Professional Editionの4CPUサポート状態で、CPU 0とCPU 2に割り当てた結果と酷似していることも確認できる。
CPU 0とCPU 2に二つずつ実行スレッドを割り当てた場合(Windows XP Professionalで
Hyper-ThreadingをON)
つまり、先のHome Editionの結果に対応物理プロセッサを表記すれば、
CPU 0とCPU 1に二つずつ実行スレッドを割り当てた場合(Windows XP Home Edition)
のようになるので、これは、4CPU時におけるCPU 0とCPU 2への割り当てと同じように、物理プロセッサに4つの実行スレッドを割り当てているのと同様だからといえるだろう。Home EditionとProfessional Editionのわずかながらの差は、物理プロセッサがもう一つあるかないかの差異と思われる。
閑話休題的に話を進める予定だったのだが、思わぬ結果(いや、予想通りか)となったため、それなりのボリュームとなってしまった。というわけで、 Windows XP Home Editionにも最初からマルチプロセッサ対応が確認できたことを示したことで、今回の巻頭言は終わりとしよう。明日は、どうしようか……。(2002/1/19)
【当時を思い起こして】
Windows XP Home Editionを確認する作業によって、よりHyper-Threading Technologyへの理解が深まると同時に、Professional Editionとの違いがどのように作られたのかを垣間見ることができた。しかし、この頃はよくOSのインストール作業を繰り返し行っていたものだと感心する(苦笑)。
コメント