web-dev-qa-db-ja.com

シングルスレッドクアッドコア対ハイパースレッディングデュアルコア

2つのCPUがあるとします。1つは4コアのクアッドコア3.2 Ghzであり、2つのコアが各コアに2つのスレッドを持つハイパーコア3.2 Ghz(ハイパースレッディング)です。プログラマーとしての私の仮定は、4つのコアをエミュレートするために2番目のCPUがスレッド間を切り替える必要があり、最初のCPUはそれぞれのような切り替えを実行する必要がないため、4コア4スレッドは2コア4スレッドよりも高速に実行する必要があります。コアは独立して個別に実行できます。

私の仮定が正しいことを確認したいのですが、そうでない場合は、一方が他方よりも優れている理由を説明してください。

10
David

ハイパースレッディングはいくつかの要素、特にメインの実行リソースを共有するため、これらのリソースが解放されるのを待たずに、一度に4つのフルスレッドを実行できると思います。

HTのポイントは、ダイ領域の使用量を減らしてパフォーマンスを向上させることです。クアッドコアは通常、非HTデュアルコアチップのほぼ2倍の大きなチップになります。HTデュアルコアチップは、 5%大きい。クアッドコアは、適切な作業負荷で最大2倍の速度を実現できます(ただし、ほとんどの場合、フルスレッドで4つのスレッドを実行することはおそらくないため、ほとんどありません)一方で、デュアルコアHTプロセッサーは15-30%向上します。デュアルコア非HTプロセッサよりもパフォーマンス( wikipediaによると )。

通常、実際のコアが多いほど優れています。

10
Journeyman Geek

ハイパースレッディングでは、タスクAのコアのアイドル時間(このコアはディスクにデータを要求し、ディスクがプラッターの領域を探し、データを読み取ってコアに送り返すのを待つことができます。 )は、別のタスクBを実行するために利用されます。そのため、タスクBがいわゆるスレッド2によって処理されている場合、タスクAによるデータフェッチ要求が完了しても、タスクAはコアがスレッド2を完了するまで待機する必要があります。両方のスレッドを1つのコアで同時に実行することはできません。繰り返しになりますが、HTは、コア/プロセッサとコンピューター内のさまざまなサブシステム間の速度の不一致を利用します。 HTはコアをフルキャパシティまで使用します...それはフルキャパシティ使用率のようなものです。したがって、ブラウザで4つのタブを開くと、各タブは4コアシステムのコアを持ち、2つのタブは2コアシステムのコアを共有する必要があります。

1
Siva

Wikipedia から:

ハイパースレッディングは、プロセッサの特定のセクション(アーキテクチャーの状態を格納するセクション)を複製することで機能しますが、メインの実行リソースは複製しません。これにより、ハイパースレッディングプロセッサを通常の「物理」プロセッサとして、またホストオペレーティングシステムに追加の「論理」プロセッサとして表示でき(HTT非対応オペレーティングシステムは2つの「物理」プロセッサを参照)、オペレーティングシステムは2つのスレッドをスケジュールできます。または同時に適切に処理します。ハイパースレッディングのないプロセッサで現在のタスクが実行リソースを使用しない場合、特にプロセッサがストールしている場合、ハイパースレッディングを備えたプロセッサは、それらの実行リソースを使用して別のスケジュールされたタスクを実行できます。 (プロセッサは、キャッシュミス、分岐予測ミス、またはデータ依存性のために停止する可能性があります。)

クアッドコアシステムを使用している場合、4つのスレッドをそれぞれフルコアで実行できます。デュアルコアハイパースレッディングシステムを使用している場合、フルコアで2つのスレッドをそれぞれ実行できますが、4つのスレッドでは、スレッド1と2が1つのコアを共有し、スレッド3と4がもう1つのコアを共有します。ハイパースレッディングは、2つのスレッドが同じプロセッサリソースを使用しない場合に、並列で(のみ)実行できるようにします。したがって、理想的なケースでは、高度な並列化が得られる可能性がありますが、Wikipediaによると、パフォーマンスの向上は100%ではなく、15〜30%です。

1
Werner Henze