web-dev-qa-db-ja.com

マルチスレッドとハイパースレッドの違いは何ですか?

ハイパースレッディングとマルチスレッディングという用語を聞いたことがありますが、それらの違いは何ですか?どのようなIntelプロセッサがそれらを使用していますか?

10
rose

マルチスレッドは、オペレーティングシステム内で複数の実行スレッドを実行する一般的なタスクを指します。マルチスレッドはより一般的に「マルチプロセッシング」と呼ばれ、複数のシステムプロセスを含めることができます(Windowsでの簡単な例は、たとえばInternet ExplorerとMicrosoft Wordを同時に実行することです)、または複数のthreadsを含む1つのプロセス。

マルチスレッディング(つまり、マルチプロセッシング)はソフトウェアの概念です。コンピュータにCPUコアが1つしかなく、そのコアがハイパースレッディングをサポートしていない場合でも、事実上、チューリングコンプリートCPUはマルチスレッドを実行できます。マルチプロセッシングをサポートするために、CPUはinterleave実行の異なるスレッドの実行を実行します。オペレーティングシステムは、利用可能な時間を「スライス」に分割し、各スレッドのおおよその時間(時間は同じである必要はありませんが、プロセスがより高い優先度を要求しない限り、通常はそれが行われる方法です)。

利用可能なhardware(同時)スレッドの実行よりも常に実行を試みるsoftware実行スレッドがある場合は、これらのソフトウェアスレッドが利用可能なコア間で「インターリーブ」。 「ユニプロセッサ」(ハイパースレッディングのない1つのCPUコア)の場合、複数のソフトウェアスレッドがある場合、それらはalwaysにインターリーブされます。ハイパースレッディング付きの4コアCPUがある場合、それは8つの「ハードウェアスレッド」です。つまり、CPUは同時に8つの実行スレッドを同時に実行できるため、8つのソフトウェアスレッドを実行しようとすると、すべて同時に実行できます。 ;ただし、9つのソフトウェアスレッドがある場合、ハードウェアスレッドの1つが1対のスレッドをインターリーブする必要があります(選択されるスレッドの正確なペアは、オペレーティングシステムのスケジューラーの実装によって異なります)。


一方、ハイパースレッディングは、Intelによって作成された非常に具体的なhardwareテクノロジーを指します。これにより、単一のプロセッサコアが複数の実行スレッドをより効率的にインターリーブできます。言い換えると、ハイパースレッディングを備えたCPUは、ハイパースレッディングを備えていないCPUと比べてパフォーマンスがいくらか向上します。ハイパースレッディングCPUは、同時に2つ(時にはそれ以上)のバランスを取ることができるためです。方法)特定のコアでの実行のスレッド。

ただし、ハイパースレッディングは、完全に別個の物理コアを使用するよりも厳密に低速です。これは、ハイパースレッディングのパフォーマンス上の利点を損なう可能性のある操作の種類と、完全に別個のコアでそのようなイベントを引き起こす可能性のある操作が少ないためです。

次の例を見てください。「1コア」はすべての例でまったく同じように動作すると想定されています。

例1:2コア、ハイパースレッディングなし。
例2:4コア、ハイパースレッディングなし。
例3:ハイパースレッディングを備えた2つのコア。
例4:ハイパースレッディングを備えた4つのコア。

この場合、例4が常に最速になります。例2は、ハイパースレッディングの最適化を利用するのに非常に適さないワークロードでは、例4と同じくらい速い場合があります。

一方、例3​​は、物理コアの数が半分であっても、ハイパースレッディングが最も有利なワークロードでは例2とほぼ同じ速度になる場合があります。

もちろん、例1はすべての例の中で最も遅くなりますが、ハイパースレッディングにあまり適していないワークロードを実行する場合、例3と同じくらい高速になることがあります。

最新のIntel CPUを使用した実際のベンチマークでは、通常、ハイパースレッディングによって、ハイパースレッディングがない場合と比べて、パフォーマンスが20〜40%向上することがわかります(「ハイパースレッディングなし」のケースは、 BIOS)。 時折ハイパースレッディングを無効にするとパフォーマンスが示されるワークロードがありますアドバンテージしかし、これらのワークロードは実際の使用ではまれな場合があります。ただし、ハイパースレッディングを備えた4コアまたは8コアのいずれかを選択した場合、各コア自体が同じパフォーマンスを持っていると仮定すると、毎回8コアCPUを選択します。

19
allquixotic

マルチスレッドとは、オペレーティングシステムレベルでの並列処理の用語です。プロセッサはマルチスレッドとは何の関係もありません。

ハイパースレッディングは、単一のプロセッサコアに複数のスレッドの「同時」処理を実装するIntelの概念です。オペレーティングシステムは2つのプロセッサコアを認識しますが、物理コアは1つしかありません。

4
Tero Kilkanen