スレッドとは何ですか?プロセッサで何をしますか?


27

Intel Pentium e5700 CPUの統計を見ていました。

2つのコアと2つのスレッドがあります。スレッドはプロセッサに対して何をしますか?コアの数とスレッドの数の間に関係はありますか?スレッドはシステム全体にどのような目的を果たしますか?


CPUが一度に処理できるスレッドの数か、Intelが発明した何らかの偽の統計情報のいずれかです。
digitxp

3
IMOとして終了することは一般的すぎると投票しました-「ただGoogleするだけ」と言うのはいつもためらいますが、スーパーユーザー(および同様のサイト)の目的は技術用語の辞書ではなく、本当の質問に答えることですより適切なリソースで簡単に検索できます。
新井

3
@Shinrai私はこれを編集して一般的ではないようにしました
サイモンシーハン

回答:


21

コアカウントはCPUダイ自体のコアの物理的な数であり、スレッドカウントはCPU自体で同時に実行できる個々のアプリケーションスレッドの数です。追加または特別なハードウェアがない場合、これはコア数に等しくなります。ただし、一部のプロセッサには、コアよりも多くのスレッドがあります。

一部のIntel CPUには、ハイパースレッディングと呼ばれる機能があります。これにより、オペレーティングシステムは、物理コアあたりの論理コアの量を2倍にすることができます。これにより、オペレーティングシステムは2倍の量のスレッドを同時にスケジュールして実行できるため、上記にリンクしたCPUの場合、4つの物理コアがありますが、8つの論理コアがあります(したがって、8つのスレッドを同時に実行できます)。

オペレーティングシステムで実行されている個々のアプリケーションは、シングルスレッドまたはマルチスレッドのいずれかです(各スレッドを「サブアプリケーション」と考えてください)。マルチスレッドアプリケーションには多数のサブスレッドが同時に実行されますが、シングルスレッドアプリケーションではCPUで実行するのに1つのスレッドのみが必要です。追加のコアまたはハイパースレッディングにより、より多くのアプリケーションスレッドを同時に実行できます。

これにより、CPU上で複数のスレッドを一度に実行できるため、マルチスレッド(シングルスレッドではない)アプリケーションの実行速度が大幅に向上します。


最後に、ハイパースレッディングは、専用に最適化された一部のマルチスレッドアプリケーションのパフォーマンスを向上させます(論理コアの数は物理コアの数の半分に過ぎないため)。場合によっては、ハイパースレッディングを無効にすると、アプリケーションの実行速度が向上する場合があります(ただし、多くのアプリケーション恩恵を受けます)。ハイパースレッディングに関係なく、物理コアの数を増やすと、常にマルチスレッドアプリケーションにメリットがあります。


1
スレッドがプロセッサに対して何をするのか説明していただけますか?ハイパースレッディングに言及するための+1は、現在非常に一般的であるため(すべてのi3にあるようです)
サイモンシーハン

各プロセスには少なくとも1つのスレッドがあります。プロセスがCPUをオンにすると、CPUがオンになるまでメインスレッドが実行されます。プロセスは別のスレッドを生成でき、同じプロセスの2つの部分が実行され、CPUターンを要求します。すべてのプロセスはプログラムであり、このメカニズムを使用すると、同じプログラム内の2つのことを一度に実行できます。新しいプロセスを作成する(つまり、新しいプログラムをフォークまたはロードする)よりも高速ですが、安全性は低くなります。プロセスは互いに分離されていますが、プロセスのスレッドは分離されていません。
ローレンス

50個の同時スレッドを実行するマルチスレッドJavaプログラムを作成し、4つのコアと8つのスレッドを持つIntel i7-4790Kで実行している場合はどうなりますか。これは、Javaアプリケーションの50スレッドのうち8スレッドのみが実際に同時に実行され、残りがキューにあることを意味しますか?どのようにその仕事
ドナート

オペレーティングシステムの@Donatoは、実行中のスレッドを中断して、他のスレッドが作業を完了するまでの時間を確保します。CPUで実行されているスレッドは常に8つだけであり、各コアは異なるスレッド間で絶えず切り替えています。それらを「ジョブ」と考えると便利です(ジョブに優先順位を割り当てることもできます)。各コアは特定のスレッドに対して何らかの作業を行い、その後、オペレーティングシステムのタスクスケジューラによって中断されて、別のジョブに移動したり、そのジョブに対して何らかの作業を行ったりします。
ブレークスルー

@Breakthrough、Re "で、8つのスレッドを同時に実行できます "、個々の実際のコアによって提供される真の同時性と比較した場合、そのような同時性の制限は何ですか?また、「ハイパースレッディングが無効になっていると、アプリケーションがより高速に実行される可能性があります
-Pacerier

9

「コア」は、それ自体で処理を処理できるプロセッサの実際の物理サブセットを表しますが、「スレッド」は、プロセッサが一度に処理できる実際のプロセスの数です。Intelは、「ハイパースレッディング」とラベル付けした技術を開発しました。この技術により、1つの物理コア(通常、一度に1つのスレッドしか処理できません)で2つのスレッドを同時に処理できるようになります。

スレッドは、プロセッサが処理する必要があるタスクです。簡単な説明のために、開いているすべてのアプリケーション(ペイント、メモ帳、メディアプレーヤーなど)には独自のスレッドがあると仮定できます。プロセッサとOSが「スレッドの切り替え」で非常に高速で動作し、開いているすべてのアプリケーションのニーズを処理するため、2つのアプリケーションを同時に実行します。これで、すべての作業をより多くのコアプロセッサに提供できるため、より多くのコアでより良いパフォーマンスが得られます。

たとえば、職場のコンピューターにはi7があります。i7には4つの物理コアがありますが、各コアは「ハイパースレッディング」を実行できるため、このプロセッサーは一度に8つのスレッドを処理できます。そのため、タスクマネージャーを開くと、プロセッサパフォーマンススケールの8つのボックスが表示されます。

一般的な経験則では、より多くの物理コアがより多くのスレッドよりも優れているということです。したがって、4つのコアと4つのスレッドを備えたプロセッサを比較する場合、2つのコアと4つのスレッドよりも優れています。ただし、プロセッサが処理できるスレッドが多いほど、マルチタスク中のパフォーマンスが向上し、非常に集中的なアプリケーション(ビデオ編集、CAD、CAM、圧縮、暗号化など)自体で一度に複数のコアを利用します。


「ボックス」とはどういう意味ですか?
-Pacerier


-1

IEまたはChromeの記事内のリンクをクリックし、クリックするたびにスレッドを作成します。リンクをクリックするほど、スレッドが増えます。4コアのCPUを使用すると、最大8つのスレッドがあり、問題が発生する前に8つのリンクを開くことができます。インターネット接続を無視します。そのため、各コアは、開いているこれらのリンク(スレッド)の2つをカバーしています。それがIMOのアイデアです。これが誰にとっても理にかなっている場合。


いいえ、これはCPUのコンテキストでのスレッドや、尋ねられた質問ではありません。
music2myear
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.