【最初の注意】
本記事は、私が2002年当時に今はなき「XWIN II Web Page」で掲載したものを、基本的にそのままの形で再掲載したものです。では、どうぞ。
この前の記事「Dual Xeon 2.20GHz インストール編」
巻頭言 971 「Dual Xeon 2.20GHz ベンチマーク編 I」
BIOS設定で、Hyper-Threadingテクノロジを使用しない(Jackson TechnologyをDisabled)にしておきながら、WCPUID 3.0fやIntel Processor Frequency ID Utility 4.00.20020109では4つのプロセッサとなっているが、これはタスクマネージャ内のパフォーマンスモニタでも同様であった。
このパフォーマンスモニタでのCPU使用率の変動も、4つがそれぞれ固有に動いており、これだけ見れば4つのプロセッサを搭載したシステムにしか見えない。が、いうまでもなく実際には、Xeon 2.20GHzは2つしかない。これがHyper-Threadingテクノロジをサポートした威力なのかと確認できるが、BIOSでDisableにしていながらこれでは、何のためのBIOS設定だろうかとなる。ちなみに、BIOS設定でHyper-Threadingを利用する設定にしても同じ結果(逆に異なる結果となる方がまずいが…)となるので、BIOSでの設定は単純に起動画面でBIOSのサポートプロセッサ数が2つなのか4つなのかという違いしかないようである。
(BIOS設定をJackson TechnologyをDisabledにした状態で、Windows XP Professionalをクリーンインストールしても、最初から4プロセッサとしてWindows XPでは認識されることは確認済みである。おそらく、Windows XP Professionalでは、BIOSの設定とは関係なく、CPUIDの28ビット目が立っていて(Hyper-Threadingが有効)、かつ、 EBXレジスタの16から23ビットで構成する8-bit値が十進表記で2(仮想プロセッサの個数で、現在はHyper-Threadingが有効の場合、1または2しかない)であれば、Hyper-Threadingテクノロジがサポートされていると判断しているのだろう。ちなみに WillametteやNorthwoodでは、Hyper-Threadingフラグは有効だが、仮想プロセッサ数は1となっている。)
ということがわかってしまえば、Windows XP ProfessionalでHyper-Threadingテクノロジを無効にするには、BIOS設定で行うのではなく、プロセッサ数を制限することで対応するしかない。その方法は、Windows XPが起動時に参照するboot.iniというファイルに記載される内容を書き換えるものである。
一般的に下記のようになっているところ(環境などによって当然違いがある)を
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
オプションとして「/numproc=2」(数字はプロセッサ数)と追加すればよいだけである(無論、再起動が必要)。
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /numproc=2
これで、Hyper-Threadingテクノロジは、結果としてOFFにできる。懸念されることとしては、2つのプロセッサということで、1つのプロセッサの中の仮想(論理)プロセッサが2つ有効になるというおそれがあるが、あとでふれるようにベンチマークテストの結果やSandraの情報等から、本物のプロセッサとして2つが有効となっているはずである。
(Windows XPがHyper-Threadingを有効にするのは、boot.iniを参照する後であるので、boot.ini参照時にプロセッサ数が2と限定されれば、当然物理プロセッサが2つあるのでこれがそのまま割り当てられることになる。ちなみに、Xeonが一つしか搭載されていない状態でプロセッサ数が2とされていれば、2つ目のプロセッサとしてHyper-Threadingにおける仮想プロセッサが有効にされるだろう。)
さて、このあたりでインストール話は中断して、Dual Xeon 2.20GHzとDual Xeon 1.70GHzとの比較をSiSoftware Sandra 2002.1.8.59で行ってみるとしよう。違いはプロセッサのみで、他はまったく変えていない。まずは、CPU Arithmetric Benchmarkである。
Sandra 2002.1.8.59 CPU Arithmetric Benchmarkの結果(Dual Xeon 2.20GHz)
Sandra 2002.1.8.59 CPU Arithmetric Benchmarkの結果(Dual Xeon 1.70GHz)
見方によっては、この比較は妥当なものとは言えない。なぜなら、Hyper-Threadingテクノロジが有効になっているXeon 2.20GHzのテストではスレッドが4つで、そうでないXeon 1.70GHzのテストではスレッドが2つだからである。だが、重要なのは、物理プロセッサ2つで同時実行がサポートできるスレッド数がいくつであるかという点であるので、むしろプロセッサリソースを有効に引き出すという点からは妥当であるとなるだろう。
結果はご覧のように、Dhrystone ALUではXeon 2.20GHzが10009MIPSに対して、Xeon 1.70GHzが6415MIPSと約1.56倍となっている。もう一方のWhetstoneは、FPUでXeon 2.20GHzが3537MFLOPSに対して、Xeon 1.70GHzが1759MFLOPSと約2.01倍。iSSE2とより優位な比較では、Xeon 2.20GHzが8616MFLOPSに対して、Xeon 1.70GHzが4131MFLOPSと約2.09倍。スレッド数の違いはあれど、ここまでのパフォーマンスブーストは凄まじいの一語に尽きる。
それでは引き続き、CPU Multi-Media Benchmarkの比較である。
Sandra 2002.1.8.59 CPU Multi-Media Benchmarkの結果(Dual Xeon 2.20GHz)
Sandra 2002.1.8.59 CPU Multi-Media Benchmarkの結果(Dual Xeon 1.70GHz)
このベンチマークテストもCPU Arithmetricと同じく、スレッド数に違いがある。とはいえ、これもあとでふれるが、単純にスレッド数を増やせば処理効率が上がるかといえば、必ずしもそうではない。要は、数多くのスレッドをどれだけ効率よくスケジューリングして実行できるかという、OS側の問題も考慮に入れておく必要がある。
というのがSandra 2002におけるプロセッサ関連のベンチマークテストの結果である。次回は、Super πを使いながら、Hyper-Threadingテクノロジの有効性を検証する予定である。この項、つづく。(2002/1/16)
【当時を思い起こして】
いよいよベンチマークテストを敢行したが、Hyper-Threading Technologyの実態を掴みながらの作業は、どのような結果を生むのか予想がつかなかったので、危険な意味ではなく未知への探求という意味においてスリリングであったことを思い出す。単純にクロックアップしただけではないという違いを見いだすには、どうすればいいのか?という試行錯誤も、懐かしい思い出だ。
コメント