web-dev-qa-db-ja.com

ハイパースレッディングとマルチコアの違いは何ですか?

ネットワーク管理者との会話で、私のマシンはデュアルコアであると述べました。彼はそうではなかったと私に言った。タスクマネージャーを起動し、[パフォーマンス]タブに移動して、2つのCPU使用率グラフがあることを彼に示しました。自宅にクアッドコアマシンがあり、4つのグラフがあります。ハイパースレッディングのため、この特定のマシンには2つのグラフがあると彼は言いました。私はかつてハイパースレッドペンティアム4プロセッサを使用していましたが、その意味を完全には理解していませんでした。では、ハイパースレッディングとデュアルコアの違いは何ですか?そして、どのようにあなたが持っているかをどのように見分けますか?

42
Josh Stodola

ハイパースレッディング は、単一の物理CPUコアに対して複数の論理コアを公開します。簡単に言うと、ハイパースレッディングは context-switching を各CPUコアでより効率的にします。

一方、デュアルコアチップには、実際には異なるプロセスを同時に実行できる2つの物理CPUコアがあります。

2つ以上のコアを持つマルチコアチップも他にもあり、Svishが述べたように、インテルの最新のマルチコア製品はすべてのコアでハイパースレッディングもサポートしています。

CPU-Z などのCPU識別ユーティリティを使用して、コアの数を確認できます。スクリーンショットの下の方にあるように、この場合のCPUには2つの物理コアがあります。スレッド数がコア数より多い場合、ハイパースレッディングが有効になります。現在のところ、ハイパースレッディングを備えたすべてのコンシューマ指向のCPUにはコアあたり2スレッドがあるため、HTが有効になっている場合、スレッドの数はコアの数の2倍になります。

enter image description here

Intel CPUをお持ちの場合は、代わりに IntelのCPU IDユーティリティ をダウンロードできます。

21
rob

ハイパースレッディングは、プロセッサが2つの物理プロセッサコアを装っていますが、1つといくつかの余分なジャンクしかありません。

ハイパースレッディングのポイントは、プロセッサでコードを実行しているときに、アイドル状態になっているプロセッサの部分が何度もあるということです。 CPUレジスタの追加セットを含めることにより、プロセッサは2つのコアを持つかのように動作し、プロセッサのすべての部分を並行して使用できます。 2つのコアの両方でプロセッサの1つのコンポーネントを使用する必要がある場合、1つのコアは当然待機します。これが、デュアルコアおよびそのようなプロセッサーを置き換えることができない理由です。

参照: この質問

16
Earlz

ハイパースレッディングは、デュアルコアを使用するよりも安価で低速です

インテルマニュアルボリューム3システムプログラミングガイド-325384-056US 2015年9月 8.7「インテルハイパースレッディングテクノロジーアーキテクチャ」では、HTについて簡単に説明しています。次の図が含まれています。

enter image description here

実際のアプリケーションでは、TODOは平均で何パーセント遅くなりますか?

最新のシングルCPUコアはすでに命令パイプラインで複数の命令を一度に実行するため、ハイパースレッディングが可能です https://en.wikipedia.org/wiki/Instruction_pipelining

命令パイプラインは、メモリの読み取り、命令のデコード、命令の実行など、回路の各部分がいつでも使用されるようにするための単一コア内の機能の分離です。

ハイパースレッディングは、以下を使用して機能をさらに分離します。

  • パイプラインで実際に命令を実行する単一のバックエンド。

    デュアルコアには2つのバックエンドがあり、コストとパフォーマンスの向上を説明しています。

  • 2つのフロントエンド。2つの命令ストリームを受け取り、 hazards を回避することで単一のバックエンドのパイプライン使用を最大化する方法でそれらを順序付けます。

    デュアルコアには、各バックエンドに1つずつ、2つのフロントエンドもあります。

    命令の並べ替えによるメリットがなく、ハイパースレッディングが役に立たないEdgeのケースがあります。しかし、それは平均して大幅な改善をもたらします。

1つのコアの2つのハイパースレッドは、L3のみを共有する2つの異なるコアよりもさらに多くのキャッシュレベル(TODOの数?L1?)を共有します。以下を参照してください。

各ハイパースレッドがオペレーティングシステムに公開するインターフェイスは、実際のコアのインターフェイスに似ており、両方を個別に制御できます。したがって、cat /proc/cpuinfoは、2つのハイパースレッドを持つ2つのコアしかないにもかかわらず、4つのプロセッサを示しています。

ただし、オペレーティングシステムは、同じコア上にあるハイパースレッドを把握して、特定のプログラムの複数のスレッドを単一のコア上で実行できるため、キャッシュの使用率が向上する可能性があります。

このLinusTechTipsビデオには、技術的ではない簡単な説明が含まれています。 https://www.youtube.com/watch?v=wnS50lJicXc