🏇

私が理解してるHT(ハイパースレッディング・テクノロジー)の話

2 min read

先日職場の後輩が今度自作するというので話をしていた時にCPUのHTに関する話になりました

簡単に書くと彼はHTについて

HT無しの6コア6スレッドのCPUより
HT有りの4コア8スレッドの方が6対8なんだから良いよね

という認識だったので

いや同じコアなんだったらHT無し6コアのほうが良いと思うよ

という話をしたので同じような認識をしてる人がいるかも知れないので
その時の説明をここにも書いておこうと思う

HTの実行効率は意外と低い

ざっくり私が理解してるHTの内容は

CPUは命令を解釈する為の装置が複数あって色々な装置を経由して命令を処理する

HTがない場合は1つの命令を処理しきるまで他の命令は待たされる

HTがある場合は1つの命令を処理中に空いてる装置を活用してもう一個同時に命令を処理しようと試みるが命令間の依存関係が前後したりして上手いことできなかったりすると二度手間になったり同じ装置を使う命令が続くと処理待ちが発生したりと色々ボトルネックが発生する

というのがコア毎に行われてるという感じで理解してます

じゃあHTのボトルネックを考慮したら結局HTでどれくらい実行効率が上がるんだよって話が主題になるんですがそれはこの資料が参考になります

https://www.intel.co.jp/content/dam/www/public/ijkk/jp/ja/documents/developer/vol6iss1_art01_j.pdf

色々書いてますが要するにHTしたら16%〜30%位性能向上が見られたよ
HT搭載するのにかかるコストに対してこんだけ性能上がるならお得だよねみたいな事書いてます

またこんな資料も有ります

https://www.isus.jp/others/insights-to-hyper-threading/

ここではHTによる実行効率の向上は1.25で仮定しています

制限の理解とパフォーマンスの最大化

の項目を見ればわかるとおり逆にHTによりパフォーマンスが悪化するケースも有るので最低でも16%性能上がるというわけではなく場合によっては逆にマイナスの結果になる可能性もあるって事なんで高すぎる気もしますが平均25%UP位の性能は出るんじゃないのかって感じで理解して良いかと思います(計算もしやすいしね)

どっちの資料もインテルのものなので甘い採点してる感も否めませんが

結論

以上を踏まえて冒頭の彼の認識に対して

HT有りの4コアは4*1.25=5コア程度の性能なのでHT無し6コアの方が良いと思うよ

と単純にHTで性能が2倍になるわけじゃないですよという説明をしたときのお話でした

多分大多数の人にはなんの興味もない話だったとは思いますがもし参考になったという人がいれば幸いです

それでは皆さん良い自作ライフをー

しゃみしゃっきりー

尚、参考にしてる資料見てもらったらわかると思うけどそもそも私の知ってる知識が古すぎて
今は違う可能性があるので実は今はこうですよみたいな話を知ってる人が居たら訂正して欲しい。。。
あと自分の理解力不足でそもそも資料の理解が間違ってるとかもありそうなのでなにかおかしなこと書いてあったら指摘欲しいです

P.S.

ちなみに世代、アーキテクチャ、プロセスルール、動作周波数等色んな要件でCPUの性能は変わるので世代落ちの6コアと最新の4コア8スレCPU比べたら4コアのほうがベンチ早いとかは普通にあります

そもそもベンチマークってパイプライン壊れづらそうだからかなりHTに有利に動くとも思いますが

なので最終的にCPU選ぶならHTがどうのこうのよりCPUに出せる金額でベンチマークランキングみて現状一番コスパとワッパが優れたやつ選べばいいよって話も続きでしてたりします

でもコスパって難しいよね
Intelだとグレードアップ時にCPUとマザボは両方取っ替える可能性高いけどAMDはCPUだけ載せ替えで済むこと多いのでそこら辺も考慮したりすると結構変動する。。
でも時期的に次変える時はDDR5が主流になってそうな気がするしどっちにしろAMDでもマザボ取り替えなきゃだめかな。。。。
GPUは最近内蔵のが結構いい感じだよなぁグラボ買うかどうかでもかなり値段変わるし。。。
内蔵GPU使うとメインメモリ共有だしメモリもっと早いのに変えたほうが。。。
じゃあグラボ買うとしてGeforceならIntelの方が。。。。。
とか考え出したら関連パーツの組み合わせ色々出てきて大変です
まぁそれも含めて自作の楽しさだと思うのでここらへんが楽しいかどうかが
自作に向いてるか向いてないかの分水嶺かもしれませんね

Discussion

ログインするとコメントできます