スレッドとは何か、プロセッサの中で何をするのか?
Intel Pentium e5700 CPUの統計を見ていました。
2つのコアと2つのスレッドを持っています。スレッドはプロセッサにとって何をしているのでしょうか?コア数とスレッド数には何か関係があるのでしょうか?また、スレッドはシステム全体ではどのような目的で使用されているのでしょうか?
Intel Pentium e5700 CPUの統計を見ていました。
2つのコアと2つのスレッドを持っています。スレッドはプロセッサにとって何をしているのでしょうか?コア数とスレッド数には何か関係があるのでしょうか?また、スレッドはシステム全体ではどのような目的で使用されているのでしょうか?
コア数はCPUダイ自体の物理的なコア数であり、スレッド数はCPU自体で同時に実行できる個々のアプリケーションスレッドの数である。追加や特別なハードウェアがなければ、これはコア数と同じです。ただし、一部のプロセッサでは、コア数よりも多くのスレッド数を持つことになります。 一部のIntel CPU には、 ハイパースレッディング と呼ばれる機能があり、これによりオペレーティングシステムは物理コアあたりの論理コアの量を2倍に見ることができます。これにより、オペレーティングシステムは2倍の量のスレッドを同時にスケジュールして実行することができるので、上にリンクしたCPUの場合、物理コアは4つですが、論理コアは8つあります(だから8つのスレッドを同時に実行することができます)。
オペレーティングシステムで実行されている個々のアプリケーションには、シングルスレッドかマルチスレッドのどちらかがあります(各スレッドは「サブアプリケーション」と考えてください)。シングルスレッドのアプリケーションは、CPU上で実行するために1つのスレッドだけを必要としますが、マルチスレッドのアプリケーションは多数のサブスレッドを同時に実行します。追加コア、つまりハイパースレッディングを使用すると、より多くのアプリケーションスレッドを一度に同時に実行することができます。
これにより、マルチスレッド(_シングルスレッドではない)のアプリケーションを、CPU上で複数のスレッドを同時に実行できるため、より高速に実行することが可能になります。
最後の注意点として、ハイパースレッディングは、ハイパースレッディング用に特別に最適化された _一部のマルチスレッドアプリケーションのパフォーマンスを向上させます(物理コアの数が論理コアの数の半分しかないため)。様々なケースでは、ハイパー スレッディングを無効にした方がアプリケーションの動作が速くなることがあります(多くのアプリケーションはハイパー スレッディングの恩恵を受けていますが)。ハイパースレッディングに関わらず、物理コア数の増加は、マルチスレッドアプリケーションに常に利益をもたらします。
コア」とは、それ自体で処理を処理できるプロセッサの実際の物理的なサブセットを意味し、「スレッド」とは、プロセッサが一度に処理できる実際のプロセスの数を意味します。Intelは「ハイパースレッディング」と呼ばれる技術を開発しました。この技術により、1つの物理コア(通常は一度に1つのスレッドしか処理できない)が2つのスレッドを同時に処理できるようになりました。
スレッドとは、プロセッサが処理しなければならないタスクのことです。簡単に説明すると、あなたが開いているすべてのアプリケーション(ペイント、メモ帳、メディアプレーヤーなど)には、それぞれのスレッドがあると仮定することができます…これは、同時に2つのアプリケーションしか開けないという意味ではありません。より多くのコアプロセッサにすべての作業を任せることができるようになったため、より多くのコアでより良いパフォーマンスを体験することができるようになりました。
例えば、私の仕事用コンピュータにはi7が搭載されています。i7には4つの物理コアがありますが、各コアは「ハイパースレッディング」を行うことができ、このプロセッサは一度に8つのスレッドを処理することができます。そこでタスクマネージャを開くと、プロセッサの性能を表す8つのボックスが表示されます。
一般的な経験則として、物理コアの数が多い方がスレッド数が多いよりも良いということがあります。だから、あなたが4コアと4スレッドを持っていたプロセッサを比較していた場合、2コア4スレッドよりも良いでしょう。しかし、あなたのプロセッサが扱うことができるより多くのスレッドは、より良いそれはマルチタスクといくつかの非常に集中的なアプリケーション(ビデオ編集、CAD、CAM、圧縮、暗号化など)のために、それ自体が一度に複数のコアを利用している間に実行されます。