Windows2000 performance
(Hyper Threading Technology
対応CPU)
 


標題の話は私のPCCPUを交換しなければならなくなった事から始まります。もともとCPUの載せ変えの必要が生じたのは2nd(2ndとはアマチュア無線家の間で使われる言葉でSecond Harmonics“第2高調波”から採り、“子供”のこと)のCPUCeleron 700MHz)を早くしようとしたためです。PentiumVの800Mhzにしたところ非常に不安定になってしまい、しかたなく、現行主力機のCeleron1.7Aを払い下げる?ことにしました。CPU478-TypeであるためM/Bごと払下げねばならず後継機を策定することになったわけです。

後継機のM/BはAopenAX4SGULIntel 865G)に決めましたがFSB800CPUNorthwoodのみサポートし、現行のCeleron1.7A Willeamett)は動かないと書いてあります。従ってCPUもこれに合わせてPentiumW2.60Cにしました。Northwoodceleronもありますがこの際奮発してPentiumW2.60Cしましたがこれが間違いの元でした。

CPU MB載せ替え>

Windows2000ASUSMBからそのままAopenに載せ換えても例の青い画面で止まります。WindowsMEで同様のことをtestしましたがWindowsMEの場合は騙しながら載せ変えてゆくと上手くゆくようですが...

そこで仕方なく再インストールすることにし、CD-ROMからUPDATEインストールを行いました。インストールしてあるプログラム、Fileは問題なく使えるようです。

と思っていたらTVチューナが動きません。調べてみるとCyberLinkPower VCRPower DVDが実行時にエラーになります。CPUが変ったためにエラーになるようです。CyberLinkに問い合わせたところPentiumW2.60Cが持っているようなHyper Threading Technologyには対応していないとの回答でした。Hyper Threading Technology機能とは平たく言うと「1つのCPUが複数(2つ)の擬似?CPUとして働く機能」です。更に調べてみるとWindows2000もこの機能には対応していません。BIOSHyper Threading機能のONOFFにあるコメントにはWindowsXPLinuxカーネルの2.4にのみ対応すると書いてあります。それで今回Hyper Threading Technology機能付きCPUWindows2000で使用するとどうなるかを検証してみました。

Windows2000は物理的なマルチプロセッサを含む様々なCPU環境に対応するために HALHardware Abstraction Layer)と呼ばれるmoduleを複数用意してCPUに最適なそれを選んでインストールしています。Hyper Threading Technology機能付きCPUを搭載してWindoows2000をインストールするとmoduleはマルチプロセッサ用のそれがが選択される(M/Bにもよるかも知れませんがが...)ようです。物理的に複数のCPUがあると判断してしまうのでしょうがこれはCPUが実際に複数あるシステムを想定しており、PentiumW2.60cのような1つのCPUでの擬似マルチプロセッサ機能ではありません。すなわちWindows2000にはHyper Threading Technologyを処理するModuleは無いわけです。

選択されたマルチプロセッサ用のHAL「ACPIマルチプロセッサ(ACPI : Advanced Configuration and Power Interface)」という名前がついていますがこれをそのまま使うとHyper Threading Technologyを持つCPUに対しては「効果なし」よりも「Overhead損」になるようです。

現在使用中のHAL[コントロールパネル]-[システム]-[ハードウエア]-[デバイスマネージャ]または[マイコンピュータを右クリック]-[管理]-[デバイスマネージャ]で表示されるツリーから「コンピュータ」のアイコンをクリックすることで確認できます。

<計測条件>

今回はこのあたりを検証するために「ACPIマルチプロセッサ」「ACPIユニプロセッサ」「ACPIプロセッサ」の3つについて処理時間を計測しperformanceを比較しました。「ACPIマルチプロセッサ」についてはM/B側のBIOSにあるHyper Threading TechnologyEnableDisable両方について計測しています。他はHyper Threading TechnologyDisableです。計測用のプログラムですがよく考えると作成用のtoolを何も持っていません。仕方がないのでExcelVBAを使って10万回の加算を複数回行うプログラムを作り、計測しました。
プログラムは末尾に載せておきます。

<計測環境>
1 BIOS Hyper-Threading Technology  Enable
CPU 2.60c Northwood
OS  Windows2000 (HAL= ACPI Multi Prosessor)
2 BIOS Hyper-Threading Technology  Disable
CPU 2.60c Northwood
OS  Windows2000 (HAL= ACPI Multi Prosessor)
3 BIOS Hyper-Threading Technology  Disable
CPU 2.60c Northwood
OS  Windows2000 (HAL= ACPI Prosessor)
4 BIOS Hyper-Threading Technology  Disable
CPU 2.60c Northwood
OS  Windows2000 (HAL= ACPI Uni Prosessor)
  HAL : Hardware Abstraction Layer
  ACPI : Advanced Configuration and Power Interface

上記4つのパターンで計測した結果のサマリーを次に掲げておきます


<結果>

処理時間  (h:mm:ss) 2004年1月25日
1   BIOS  HT Enable    W2k HAL= ACPI Multi Prosessor 平均ヘイキン
@ time  1回目 0:01:09  2回目 0:01:10  3回目 0:01:15  4回目 0:01:16 0:01:13
A time  1回目 0:01:10  2回目 0:01:11  3回目 0:01:15  4回目 0:01:16 0:01:13
                  ソウ平均ヘイキン 0:01:13
2   BIOS  HT Disable    W2k HAL= ACPI Multi Prosessor 平均ヘイキン
@ time  1回目 0:00:57  2回目 0:00:59  3回目 0:01:03  4回目 0:01:03 0:01:01
A time  1回目 0:00:58  2回目 0:00:58  3回目 0:01:03  4回目 0:01:04 0:01:01
                  ソウ平均ヘイキン 0:01:01
3   BIOS  HT Disable    W2k HAL= ACPI Prosessor 平均ヘイキン
@ time  1回目 0:00:57  2回目 0:00:58  3回目 0:01:00  4回目 0:01:02 0:00:59
A time  1回目 0:00:55  2回目 0:00:57  3回目 0:01:01  4回目 0:01:02 0:00:59
                  ソウ平均ヘイキン 0:00:59
4   BIOS  HT Disable    W2k HAL= ACPI Uni Prosessor 平均ヘイキン
@ time  1回目 0:00:54  2回目 0:00:55  3回目 0:00:59  4回目 0:01:00 0:00:57
A time  1回目 0:00:55  2回目 0:00:56  3回目 0:00:59  4回目 0:01:00 0:00:58
                  ソウ平均ヘイキン 0:00:57
<計測ケイソク方法ホウホウ>
@PCを起動キドウして10分後フンゴに100,000カイ加算カサンを3カイオコナい、処理ショリ時間ジカン平均ヘイキンモトめる
A10フン同様ドウヨウ計算ケイサンオコナい、処理ショリ時間ジカン平均ヘイキンモトめるとともにスベての平均値ヘイキンチモトめる(赤字は総平均値)

簡単に言えばHyper Threading Technology機能を使わない方が早いということです。このような測定のやりかたではOverhead時間分だけ遅くなるものと思われます。ACPIUNIプロセッサとACPIプロセッサの違いは前者がAPICAdvanced Programmable Interrupt Controller :ACPIではない...Hi )ベースの割り込み(IRQ16以上あります)を使っているのに対し、後者はPICベースの割り込み(IRQ15まで)を使っているという事です。

参考までに200,000回の結果はこれです。

<考察>

@WindowsXPはHyper Threading Technologyに対応していますが、不特定多数のUserがアクセスするサーバではなくPersonal useに導入した場合はHyper Threading Technologyに対応したアプリケーションの少ない現状ではWindows2000を使用したのと同じ結果を示すと思われます。

A
Hyper Threading Technologyは複数のアプリケーションがCPUの競合で待たされることを少なくするための機能でしょうから、本来このような単一のアプリケーションでperformanceを計測することはOSOverhead Timeのみを強調する事になりかねません。この結果はこれを示しているのかも知れませんがWindows2000Hyper Threading Technologyに対応していないことを前提にWindows2000performanceを計測しているのですからこの差がOverheadによるものであっても良いわけです。

BOperating Systemは元々アプリケーションプログラムから複雑なH/Wのコントロールを開放するのが目的であったはずですが今回のケースはH/Wの仕様変更の影響をアプリケーションプログラムがまともに被っています。新機能を引き出すためにアプリケーションをOptimizeする必要はあると思いますが動かなくなるというのは納得できません。メモリが足りないとかCPUの処理スピードが遅いとかOSの処理範疇を越えるものに関しては仕方がありませんがH/Wの機能をOSが吸収していないのは問題です。

C上述のことに関連しますがWindows2000にももう一つ適当なHALを加えてほしいものです。サポート対象のOSなのですから...。
尤も、
XPを買わせるためのCompany Policyなら怒髪天を突くことになりますが...どうもそのようですね...。

<付録>

測定はこれで行いました
いろいろ変更してテストしてみてください。但し結果に対してはいかなる責任も負いかねます。 Hi

WindowsXPにかかる、?万円の投資はそれに見合う効果が期待できそうにない(勝手にそう思っています...Hi)ので暫くはこのままにしておきます。
それよりCyberLinkでは対応の見通しは立っていないないとのことでしたのでPC上で作業をしながらテレビが見られないことのほうが重大です。Hi Hi