マルチスレッドとハイパースレッドの違いは何ですか?[閉まっている]


10

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


2
直接比較できないものを比較しようとしています。ちょうど関連しています。「足と靴の違いは何ですか?」と尋ねるようなものです。それはさておき、あなたの研究はこれまでに何を明らかにしましたか?インターネットから簡単に収集された定義に基づいて、違いを正確に判断するために、どこでハングアップしていますか?
Ƭᴇcʜιᴇ007


1
私は、マルチスレッドやハイパースレッディングでもないが、私は彼らを知っているように求めてる置くかわからない
バラ

1
スタックオーバーフローナチスがトピックを「オフトピック」として閉じました...非常に良い質問であり、人気があるので閉じないでください..
Robbo_UK

回答:


19

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

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

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


一方、ハイパースレッディングとは、単一のプロセッサコアが複数の実行スレッドをより効率的にインターリーブできるようにする、Intelによって作成された非常に特定のハードウェアテクノロジーを指します。言い換えると、ハイパースレッディングを備えたCPUは、ハイパースレッディングを備えていないCPUと同じであるが、ハイパースレッディングを備えていないCPUよりもパフォーマンスがいくらか向上します。方法)特定のコアでの実行のスレッド。

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

次の例を見てください。「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を選択します。


2
正確には、マルチスレッドとマルチプロセッシングは同じものではありません。スレッドは、関連付けられているプロセスと実行コンテキストを共有しますが、プロセスには独自の実行コンテキストがあります。ただし、この回答では、この区別はそれほど重要ではありません。
Tero Kilkanen 14

1
ハイパースレッディングテクノロジーは「インテルが作成」したものではありません。メインラインx86の場合、これは同時マルチスレッド化の商標名にすぎません。Alpha 21464が生産されていれば、SMTの最初の著名なユーザーの1人でした。Intelは最初にリリースされたSMT(あまり知られていないプロセッサを除外する可能性があります)をいくつかのPentium 4で作成しましたが、基本的なアイデアはIntelの発明ではありませんでした。
ポールA.クレイトン

2
不可解:ハイパースレッディングは、個別のコアよりも厳密に遅くはありません。L1キャッシュを共有する方がコアのリソースをフルに活用するよりも大きな利点である(人為的な)ケースを考案できます。別の特異なケースとして、1つのスレッドが永続的にアクティブであり、別のスレッドが一時的に断続的なイベントを処理する場合があります。コアを断続的に起動することは、アクティブなコアでスレッドを起動するよりもコストがかかります。ILPが非常に低いスレッドの場合、キャッシュの競合が問題にならない場合は、シングルコアを使用することでエネルギー効率が向上し、ターボブーストが向上します(パフォーマンスが向上します)。
ポールA.クレイトン

3
回答はSUで編集できるので、改善したい場合はお気軽にどうぞ。また、OPの見かけの知識レベルも覚えておいてください。私の答えだけでも、おそらく彼らが期待したり、望んだりするよりも技術的です。説明を簡単にするために、一部の詳細については意図的に光沢を付けました。OPがすぐにプロセッサを設計し、必死にこれらすべての詳細を知る必要があるかどうかは疑問です。それでも興味深いコメント。
allquixotic 2014

1
コンテンツを変更する提案された編集(つまり、文法/タイプミスの修正や明確にするための言い換えだけではない)は、拒否される可能性があります。
ポールA.クレイトン

4

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.