ハイパースレッドはどの程度の速度向上をもたらしますか?(理論的には)


38

ハイパースレッドCPUによる理論的な高速化はどうなっているのだろうか。100%の並列化と0の通信を想定すると、2つのCPUで2倍の速度が得られます。ハイパースレッドCPUはどうですか?

回答:


59

他の人が言ったように、これはタスクに完全に依存します。

これを説明するために、実際のベンチマークを見てみましょう。

ここに画像の説明を入力してください

これは修士論文(現在オンラインでは入手できません)から取られました。

これは、文字列照合アルゴリズムの相対的なスピードアップ1を示しています(すべての色は異なるアルゴリズムです)。アルゴリズムは、ハイパースレッディングを備えた2つのIntel Xeon X5550クアッドコアプロセッサで実行されました。つまり、合計8つのコアがあり、それぞれが2つのハードウェアスレッド(=「ハイパースレッド」)を実行できます。したがって、ベンチマークでは、最大16スレッド(この構成で実行できる同時スレッドの最大数)までの速度向上をテストします。

4つのアルゴリズムのうちの2つ(青とグレー)は、全範囲にわたってほぼ線形にスケーリングします。つまり、ハイパースレッディングの恩恵を受けます。

他の2つのアルゴリズム(赤と緑、色覚異常の人には残念な選択)は、最大8スレッドまで線形にスケーリングします。その後、彼らは停滞します。これは、これらのアルゴリズムがハイパースレッディングの恩恵を受けないことを明確に示しています。

理由?この特定のケースでは、メモリの負荷です。最初の2つのアルゴリズムは、計算により多くのメモリを必要とし、メインメモリバスのパフォーマンスによって制約されます。つまり、1つのハードウェアスレッドがメモリを待機している間、他のスレッドは実行を継続できます。ハードウェアスレッドの主要なユースケース。

他のアルゴリズムでは、必要なメモリが少なく、バスを待つ必要がありません。それらはほぼ完全に計算限界であり、整数演算のみを使用します(実際にはビット演算)。したがって、並列実行の可能性はなく、並列命令パイプラインの利点もありません。


1つまり、4の高速化係数は、アルゴリズムが1つのスレッドのみで実行される場合の4倍の速度で実行されることを意味します。したがって、定義により、1つのスレッドで実行されるすべてのアルゴリズムの相対スピードアップ係数は1です。


ベストアンサー:-)
Sklivvz

1
コアの数に対してプロットされたアルゴリズムの実際の速度はどのくらいですか?つまり、これらのテストで最速のアルゴリズムの速度向上とは何ですか?ただ疑問に思う:)。
crazy2be

@ crazy2be青い線(Horspoolのアルゴリズム)の場合、実行時間は4.16秒から16スレッドで0.35秒になります。したがって、スピードアップは11.74です。ただし、それはハイパースレッディングの場合です。コアの数に対してプロットすると、このアルゴリズムの高速化は8コアで7.17です。
コンラッドルドルフ

5
この答えの唯一の問題は、1回しか投票できないことです。主観的な質問に対する驚くほど客観的な答え;)
ジャーニーマンオタク


20

問題は、タスクに依存することです。

ハイパースレッディングの背後にある概念は、基本的に、すべての最新のCPUに複数の実行の問題があるということです。通常、今では十数個近くになります。整数、浮動小数点、SSE / MMX /ストリーミング(今日の呼び方)に分かれています。

さらに、各ユニットには異なる速度があります。すなわち、何かを処理するには整数演算ユニット3サイクルかかりますが、64ビット浮動小数点除算には7サイクルかかります。(これらは何にも基づいていない神話上の数字です)。

順不同の実行は、さまざまなユニットをできるだけいっぱいに保つのに役立ちます。

ただし、1つのタスクですべての実行ユニットが使用されるわけではありません。スレッドの分割でさえ完全に役立つわけではありません。

したがって、理論は、2番目のCPUがあるふりをして、別のスレッドが実行される可能性があり、オーディオトランスコーディングなどで使用されていない使用可能な実行ユニットを使用します。いくつかのものを除いてアイドル状態。

私にとって、これは単一のCPUの世界でより理にかなっています。2つ目のCPUを偽造することで、この偽の2つ目のCPUを処理するための追加コーディングをほとんど必要とせずに、スレッドがそのしきい値を簡単に超えることができます。

6/8/12/16 CPUを備えた3/4/6/8コアの世界では、助けになりますか?ダンノ できるだけ多く?手元のタスクに依存します。

したがって、実際に質問に答えるには、プロセスのタスク、使用している実行ユニット、およびCPUで、どの実行ユニットがアイドル/未使用で、その2番目の偽CPUで利用できるかに依存します。

いくつかの計算クラスの「クラス」は、利益をもたらすと言われています(漠然と一般的に)。しかし、厳格なルールはありません。クラスによっては、速度が低下します。


2
「1.7倍の高速化」のようなものを探していましたが、この問題は白黒の外観を平手打ちしていないので、この答えはとてもいいです。
ミハイル

@Mikhail:ポイントは単純な要素がないということです-それは人生でよくあるように依存します:-)。
-sleske

4
要点は正しいです。しかし、1つのげた言葉:単一のコアが複数のコアよりもハイパースレッディングの恩恵を受けるべきであるという先験的な理由はありません。間違ったタスクでは、どちらの利益もありません。適切なタスクのために、両方が同じ要因で利益を上げます。
コンラッドルドルフ

@Konrad:私が得ていたポイントは、1つのコアと2つのコアの違いが、4と8または2と4の違いよりも価値があるかもしれないと思うことです。もうちょっと。
-geoffc

「スレッドの悪いアプリの場合」–それが重要なビットです。しかし現実的には、ほとんどのアプリケーションのスレッド化サポートは貧弱なので、ポイントがあります。
コンラッドルドルフ

5

私は実際にハイパースレッディングを備えたCore i7 CPU(4コア)を持ち、ビデオトランスコーディングで少し遊んだという点でgeoffcの答えに追加する逸話的な証拠がありますが、これは通信と同期の量を必要とするが十分なタスクですシステムを効果的に完全にロードできる並列性。

一般的に4つのハイパースレッド「追加」コアを使用してタスクに割り当てられたCPUの数で遊んだ私の経験は、約1 CPU分の処理能力に相当します。余分な4つの「ハイパースレッド」コアは、3〜4個の「実際の」コアと同等の使用可能な処理能力を追加しました。

すべてのエンコーディングスレッドがCPUの同じリソースを奪い合う可能性が高いため、これは厳密に公正なテストではありませんが、全体的な処理能力は少なくともわずかに向上しました。

本当に役立つかどうかを示す唯一の本当の方法は、ハイパースレッディングが有効または無効になっているシステムでいくつかの異なる整数/浮動小数点/ SSEタイプのテストを同時に実行し、制御されたシステムで利用可能な処理能力を確認することです環境。


1
明確なポイント-アプリケーションに依存します。コア0とコア0-hは低速のRAMを使用せずに同じキャッシュを介して通信するため、高度な通信コンピューティングを高速化できると確信しています。
ミハイル

1
@Mikhail、問題は、両方のスレッドに大量の処理能力が必要な場合、両方のスレッドが同じリソースを奪い合い、CPU共有L3キャッシュ(i7にはL1&L2キャッシュがある)を介して通信する方がはるかに良いことですコアごとおよび共有L3キャッシュ)またはシステムメモリでさえ、それらのタスクを個別に実行します。それはすべて大規模なスイングとラウンドアバウトの練習です...
木梅

3

他の人が言ったように、それはCPUとワークロードに大きく依存します。

Intelによると

ハイパースレッディングテクノロジーを搭載したインテル®Xeon®プロセッサーMPで測定されたパフォーマンスは、このテクノロジーの一般的なサーバーアプリケーションベンチマークで最大30%のパフォーマンス向上を示しています

(これは私にとって少し保守的なようです。)

そして、ここにもっと数字のある別の長い論文があります(まだすべてを読んでいません)。この論文の興味深い点の1つは、ハイパースレッディングによって一部のタスクでシンが遅くなることです。

AMDのブルドーザーアーキテクチャは興味深いかもしれません。各コアは事実上1.5コアと説明されています。パフォーマンスに対する自信の程度に応じて、一種の極端なハイパースレッディングまたは標準以下のマルチコアです。その部分の数字は、0.5倍から1.5倍のコメントの高速化を示唆しています。

最後に、パフォーマンスはオペレーティングシステムにも依存します。OSは、CPUになりすましているだけのハイパースレッドよりも、実際の CPUにプロセスを送信することを望んでいます。それ以外の場合、デュアルコアシステムでは、1つのアイドルCPUと、2つのスレッドがスラッシングする非常にビジーなコアが1つあります。もちろん、これはWindows 2000でも起こったことを思い出すようです。もちろん、すべての最新のOSは適切に機能します。


1
OSは、スレッドが互いにクロックをブロックしないことを確認する必要があります:)
ミハイル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.