Hyper Threading Technology の足枷?
Windows 7ではHyper-Threading technologyをより効率的に扱える
という記事が、北森瓦版で出ていたので、HTTについてちょっとした議論になりました。
Aさん: HTつけるとノリしろに相当する部分が出てくるので微妙に遅くなる Bさん: のりしろのほうが 大きいソフト(w) 翼: うちのASUSUノートHTで使ってるけど遅くはなってないなぁ Aさん: ソフトによるんだよ 翼: うーん例えば? Aさん: 顕著に差が出るのは 翼: ぜひ試してみたい Aさん: エンコ、Tmpgencとか 翼: ふむふむ。XPとのデュアルブートなので試してみるかな Aさん: 2CPUとして使えるし、もしくは1CPUとしても使えるのでHTならどっちが早いか計測してみるといいよ。よっぽどのことがない限り1CPU(HT切り)のほうがはやい 翼: HTは1つのコアを擬似的に2コアで使うだけなので実際は、2倍にならなくて、1.2倍程度にしかならないんだけどね。パイプライン処理の優位性で高速化してるだけだから Aさん: そもそも1CPUで100%使用するものを2CPU化することで、 翼: マルチスレッドアプリじゃないと意味ないね Bさん: Athlon3400+ 2.4G (754 シングルコア) あれは 神CPUだった (そういえば...) Aさん: のりしろの部分が、無駄になるので 翼: Superpiなんかだと意味がないという Aさん: 5~10%ぐらいダウンする。XeonのHTは悲しかったよ。あと3.06GのHT Yさん: こんばんわー Aさん: HTが不評だったからHTが無くなったものだと信じております Aさん: こん 翼: Corei-7にはHTTがあるのは? Aさん: あるよね。8CPUにしてるけど Bさん: 今 もしも 9980円で 4GHz シングルコア CPU出したら ヒット商品になるかな....(遠い目) Aさん: 4じたいそもそも分割されまくっているので 翼: 次世代6コアも8コアもHTらしいよ Aさん: 8になったところでHTの欠点も大して問題にならないんじゃないの? Aさん: もしくは 翼: でも Aさん: シラン間にHTが改善されたか 翼: 次買うなら クアッドデュアルだな Bさん: PCのひとつの問題点...(ぼそ) Aさん: ATOM330持ってないから、ためしようがないしね。Corei7の64Bitでぶいぶい言わせるのに特に不満がないので 翼: INTEL5x00がDDR3-1600対応になったら考える Aさん: 8CPUです Yさん: すんませ~ん ちょっとXPのことでお尋ねしていいですかー? |
要するに、Vista 含む、Windows 2000とXPはHTTに最適化されていないから、HTTを切った方が速いってことなのでしょうか?
取り敢えず、Tmpgencを使うと、差が如実に出るということだったので、試してみることにしたのでした。
取り敢えず、今まで認識している事をまとめてみます。
・HTT は 擬似的にリソース(レジスタなど)の空き時間を利用して1つのコア、もしくはプロセッサを2つあるように見せかけて高速化する技術だが、同じリソースを同時に使用できない制約があるため、2倍には高速化せず、実質120%位の高速化が期待できる技術。
・KB936357(マイクロコード信頼性の更新が利用可能な Intel プロセッサを使用しているシステムの信頼性を向上させる) などのマイクロコードアップデートは BIOSが新しいリビジョンに対応していれば、Windows XP でも、2000でも大差なくなる。つまり、KB909944(ゲームのパフォーマンスは、 dual-core プロセッサを使用している Windows XP ベースのコンピュータで不十分かもしれません。) に関する問題は、Windows2000でも、BIOSやChipsetDriverサポートしていれば解決するらしい。
・Windows XP SP2(HotFixで修正された)とWindows2000には HTTやEISTを使っているとカーネルパワーマネージャーに問題が発生して、CPUの速度低下を引き起こすことがある。(KB896256やKB835730)
・Windows 2000はSP4 Roll-Up1を適用すると HTT機能のあるCPUや デュアルコア以上のCPUを使用すると異常過熱を引き起こす。KB919521) のでAuto-HLTアプリケーション(CPU Idle やRightMark CPU)を使用するかれじしないと、パフォーマンスが低下する。
取り敢えず、以下実験環境。
・TMPGEnc 2.525.64.184 を使用。環境は優先度高で全て実行。
・リカバリしてWindows Update を適用した IE6環境のクラシックスタイルのXPを用意。
・Windows2000 は上記環境に HLTモード有効化した環境をHTT有効と無効で2つ準備。なお、ProcessorAffinityMaskは 3に設定。
まず、Windows 2000でHTT有効の場合 4分59秒
こちらはWindows 2000のCPU負荷グラフ
こちらはWindows XPのCPU負荷グラフ
XPの場合は 5分12秒
Windows 2000で HTT無効化した場合、7分31秒。
ほぼCPU100%で張り付いてるのがわかります。
ちなみに、Auto-HLTをOFFにして CrystalCPUID のマネジメント機能だけ有効にしてやると Windows 2000でも、 5分30秒になりました。でも、思ったほどの速度低下ではないですね。
結果
・ 今回のHTTの実効率は 150%
・ Windows 2000の方が XPより 4%程度高速だった。おそらく、XPは KB936357 で2スレッドのタスクの負荷を均等化しようとする最適化が行われているため( 1スレッドアプリを動作させても、ほぼ2CPUに均等化されるらしい) オーバーヘッドがWindows2000より大きいのではないだろうか。
・ HTT対応アプリを使う分には、Windows 2000でも、HTT有効&Auto-HLT ONで XPとほぼ変わらない動作が期待できるようだ。
・ CrystalCPUID のみだけで Auto-HLTをOFFにしても1割程度の速度低下で済んだのは atomの発熱が少ないので、温度プロテクションがあまり機能しなかったため。恐らく、Pentium4のHTTモデルならば、 Auto-HLTを使っていない環境では 速度が HTT OFFにした方が高速な可能性がある。
ちなみに、インテルプロセッサ識別ユーティリティで CPUのリビジョンを見てみたところ、XPも2000も A20 になっていたので、update.sys の適用の影響はほぼ無いようでした。
一般的に XPでも Vista でも普通に使っていると、 HTTを有効にしている方がパフォーマンスが落ちるという話があるみたいなので、こういう場合は、 ProcessorAffinityMask を1に設定して、やたらタスクが 切り替わらないようにした方が 使い勝手がいいのかもしれないですね。
ただ、Windows 2000でBIOS非対応のマザーボードでHTTを使用している場合、クロックが変更できないケースがあるようなので注意が必要です。
さらに、HTTをWindows2000で使った場合、Cpuの動作クロックが 正常に読み出せないケースがあって、実は低倍率で動いてるのに、最高クロックで固定表示になっていたということがあります。この場合、Auto-HLTが有効でも、HTTを無効にした方が速く感じるというケースがあるかもしれません(atom US15Wで体験したことが(^^; )
取り敢えず 今まで、Windows 2000はHTT非対応でパフォーマンスも劣ると思っていたので、意外な結果でした。
Windows7ではHTTに最適化されてるそうなので、楽しみですね。
関連記事:
Windows 2000をマルチコアで最適化する
Windows 2000 Advanced ServerでCore i7の性能を引き出してみる実験
関連リンク:
ITmediaニュース:Intelのハイパースレッディングに深刻な脆弱性
セレロン1.7GHzからペンティアム3.4EGHzに換装しました。 - KUMA TYPE
【特集】完全版!! 「Core i7」極限検証 - 詳細性能ベンチマーク編 (1) PCMark Vantage v1.0 - Overall
Windows Server 2003、Windows 2000 Server、または Windows NT 4.0 実行しているコンピュータで複数のプロセッサのプロセッサの負荷が分散できません。
うちの2000たんの環境だと、最近HT有効にしているとたまにしか起動してくれなくなったので(‘∀`;)今は切っているのですが、HT有効にしてると重くなりにくくていいのですが、記憶が正しければ動画を次々にクリックしたときに、WMPで動画の切り替えが超もっさりになってしまったような記憶があります。GyaOからGASでダウンロードしたDRM付きの動画なのが何か関係してたりしなかったりするのかなー?ないのかなー?
あ、それからHT最適化されたWindows 7とAtom330の組み合わせは面白そうですね。(*‘ω‘ *)
Windows7の最適化は、HTTによる仮想コアと物理コアを判別し、優先度を物理コアより低くすることで、現状の無差別にタスクを振ると言うことを無くしている…みたいな話を聞きました。
現状では、特に指定しない限りは物理コア0/論理コア0/物理コア1/論理コア1…の順に使われてしまう為、高速な物理コアが遊んでしまう可能性があり、それをなくすという理屈らしいのですが(汗
それだと、Windows2000でもできそうですね。
ちょっと、思いついたことがあるので、実験してみようと思います。
HT有効にしてるとCPUが厚くなりすぎて起動しないとか、重い処理をすると加熱しすぎて温度制限でクロックダウンかかるとか言う気がしますです|゚ー゚)
くまっちさん、たしかAuto-HLT適用してなかったような。