#コア= 4、#スレッド= 4で、ハイパースレッディングサポートがないこのようなプロセッサがあるとします。
これは、4つのプログラム/プロセスを同時に実行できることを意味します(コアは1つのスレッドしか実行できないため)?それとも、4 x 4 = 16のプログラム/プロセスを同時に実行できるということですか?
私の掘り下げから、ハイパースレッディングがない場合、コアごとに1つのスレッド(プロセス)しかありません。私が間違っている場合は私を訂正してください。
#コア= 4、#スレッド= 4で、ハイパースレッディングサポートがないこのようなプロセッサがあるとします。
これは、4つのプログラム/プロセスを同時に実行できることを意味します(コアは1つのスレッドしか実行できないため)?それとも、4 x 4 = 16のプログラム/プロセスを同時に実行できるということですか?
私の掘り下げから、ハイパースレッディングがない場合、コアごとに1つのスレッド(プロセス)しかありません。私が間違っている場合は私を訂正してください。
スレッドはプロセスとは異なります。プロセスは多くのスレッドを持つことができます。スレッドは、特定の順序を持つ一連のコマンドです。論理コアは、一連のコマンドで実行できます。オペレーティングシステムは、すべてのスレッドを使用可能なすべての論理コアに分散します。コアよりも多くのスレッドがある場合、スレッドは高速キューで処理され、コアは非常に高速に切り替わります。
実際にOSがCPU時間をスレッド間で分散すると、すべてのスレッドが同時に実行されているように見えます。
複数のコアがあると、1つの単一コアに配置される同時スレッドが少なくなり、スレッド間の切り替えが少なくなるという利点があります=速度が向上します。
ハイパースレッディングは、1つの物理コア上に2つの論理コアを作成し、スレッド間の切り替えをはるかに高速化します。
これは基本的に正しいことです。ほとんどのオペレーティングシステムでは、コアやスレッドよりもはるかに多くのタスクを同時に実行できます。これは、命令の実行をインターリーブすることで実現されます。
ハイパースレッディングを備えたシステムには、通常、物理コアの2倍のハードウェアスレッドがあります。
スレッドという用語は、一般に、他のスレッドとは独立して実行される可能性のあるオペレーティングシステムの概念の説明として使用されます。そうするかどうかは、何らかのイベント(ディスクまたは画面のI / O、メッセージキュー)を待機してスタックしているかどうか、または他の待機していない状態で実行できる十分な物理CPU(ハイパースレッドかどうか)があるかどうかによって異なります。スレッド。
ハイパースレッディングはCPUベンダーの用語であり、単一のコアを意味し、2つの計算間で注意を多重化できます。ハイパースレッドコアについて考える簡単な方法は、2つの実際のCPUがあるかのようです。どちらも、製造元がコアで実際に実行できると言っているよりもわずかに低速です。
基本的にこれはOS次第です。スレッドは、命令ポインターを保持する高レベルの構造であり、OSが適切な論理プロセッサー上でスレッドの実行を配置します。したがって、4つのコアを使用すると、基本的に4つの命令を並行して実行できます。一方、スレッドには、実行する命令とメモリ内の命令の配置に関する情報が含まれているだけです。
アプリケーションは通常、実行中に単一のプロセスを使用し、OSはプロセスを切り替えて、すべてのプロセスに「等しい」プロセス時間を与えます。アプリケーションが複数のスレッドをデプロイする場合、プロセスは実行用に複数のスロットを割り当てますが、スレッド間でメモリを共有します。
通常、同時実行と並列実行を区別します。並列実行とは、実際に複数の論理プロセッサの命令を物理的に実行する場合であり、同時実行とは、単一の論理プロセッサを頻繁に切り替えて並列実行のように見せることです。