web-dev-qa-db-ja.com

ハイパースレッディングとは何ですか?どのように機能しますか?

最近、ハイパースレッディングという用語が少し出てきたと聞きましたが、ハイパースレッディングとは正確には何ですか、なぜそれが重要なのですか?

46

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

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

43
Earlz

ハイパースレッディング は、2つのスレッドが1つのシングルスレッドコアで実行できる場所です。問題のコアのスレッドが停止または停止状態の場合、ハイパースレッディングにより、コアは2番目のスレッドで動作します。

ハイパースレッディングにより、OSはプロセッサのコア数が2倍であると見なし、多くの場合パフォーマンスが向上しますが、全体で15〜30%の領域のみです。 <20%)。

現在、ほとんどのAtomチップとすべてのi7(およびXeonと同等のチップ)は、一部の古いP4と同様にハイパースレッディングを備えています。Atomの場合、これは、消費電力が大幅に増加します。i7の場合は、i5チップと区別されます。

複雑な処理作業はHTから大きなメリットは得られませんが、ビデオエンコーディングなどの特定の(シンプルで高度にマルチスレッド化された)タスクはHTからメリットを得ます。 実際には、多くはありません...

14
CJM

シングルコアがデュアルコアとして機能できる場合

ハイパースレッディング

詳細に

Intelによる同時マルチスレッディングの実装は、ハイパースレッディングテクノロジーまたはHTテクノロジーとして知られています。

HTテクノロジーは、ソフトウェアの
複数の論理プロセッサとしての視点。これにより、オペレーティングシステムとアプリケーションは、論理プロセッサへの複数のスレッドを次のようにスケジュールできます。
それらはマルチプロセッサシステムで使用されます。


ハイパースレッディングにより、シングルプロセッサは2つのスレッドを同時に実行できますが、すべての条件で実行できるわけではありません。

ハイパースレッディングは、システムのパフォーマンスを2倍にするものではありません。アイドルリソースをより有効に利用してパフォーマンスを向上させ、特定の重要なワークロードタイプのスループットを向上させることができます。ビジーコアの1つの論理プロセッサで実行しているアプリケーションは、ハイパースレッド化されていないプロセッサで単独で実行しているときに得られるスループットの半分以上を期待できます。ハイパースレッディングのパフォーマンス向上はアプリケーションに大きく依存しており、多くのプロセッサリソース(キャッシュなど)が論理プロセッサ間で共有されるため、一部のアプリケーションではハイパースレッディングのパフォーマンスが低下する可能性があります。

インテルハイパースレッディングテクノロジーにより、各コアは、メモリキャッシュや機能ユニットなど、コアのほとんどのリソースを共有する2つの論理プロセッサーを持つことができます。

主な機能

ハイパースレッディングの目的は、パイプライン内の独立した命令の数を増やすことです。複数の命令が個別のデータを並列に操作するスーパースカラーアーキテクチャを利用します。

インテルは、ハイパースレッディングはアイドル状態または十分に活用されないリソースを使用するため、非常に効率的であると述べています。

リンク:

Wikipedia
StackOverflow
マルチコアプログラミングDigital_Edition pg#8

enter image description here

Intel Image

5
Johnny Blaze

すでに述べたことを拡張すると、ハイパースレッディングとは、単一のCPUコアが2つの個別の実行コンテキストを維持し、それらをすばやく切り替えて、ハードウェアレベルで2つのコアを効果的にエミュレートできることを意味します。

通常のシングルコアと比較した場合、マルチスレッドワークロードの速度はそれほど大きくありません。ただし、2つの独立したコアを持つことの利点にはほど遠いものです。パフォーマンスに関しては、2つのコアに近いパフォーマンスではなく、単一のコアに比べてマルチスレッドのパフォーマンスが少し向上すると考えるのが最善です。速度向上のサイズはワークロードによって異なります。実際、一部のワークロードでは、パフォーマンスの向上はかなりまともです。

ハイパースレッドコアのメイン実行ユニットは1つだけですが、実行状態の処理と維持のための命令の準備に関連するCPUの他の特定の部分が重複しています。

プロセッサコアには命令パイプラインがあります。これは、実行される将来の命令のキューであり、常に更新されており、CPUがそのキューの先頭で命令を実行する準備ができています。 CPUはこれらを使用して、これらの将来の命令を調べ、可能な場合はそれらに対していくつかの単純な低レベルの前処理を行うことで実行速度を最適化します(このような最適化には、「順不同実行」と「分岐予測」が含まれます)。

ハイパースレッドコアには2つの命令パイプラインがあり、これと2番目のレジスタセットを組み合わせることで、マルチスレッドワークロードの速度を向上させることができます。

あなたのシステムが一度にいくつかの異なるスレッドを実行しているとしましょう。システムは各スレッドを仮想プロセッサに割り当て、そのスレッドは仮想プロセッサを他のスレッドと共有しますが、仮想プロセッサがこれらのスレッド間を切り替えるたびに、基本的にそのスレッドの実行コンテキスト全体を破棄し、別のスレッドをロードする必要があります。

しかし、ハイパースレッディングでは、コアが常に1つのスレッドの状態を保持するだけでなく、そのコアが2つのスレッドの実行状態を一度に保持できるため、はるかに少ない時間で2つのスレッドを切り替えることができます。パイプラインまたはレジスターをスローせず、他のスレッドのパイプラインとレジスターは準備ができて「ホット」なままなので、切り替えてすぐに使用できます。仮想プロセッサよりも多くのスレッドを実行している場合でも、ハードスイッチングを実行する必要がありますが、実行状態が保持される特定の時点のスレッド数が多いため、頻度は低くなります。

5
thomasrutter