以下の各「CPU」に対応するコアはどれですか?
コア1、2、3、および4があると仮定すると、CPU4およびCPU5はコア3を表します。
(たとえば)以下のCPU 6とCPU 7は1つのコアを表しますか?HTと実際のコア?
2つの間に違いはありません-両方ともCPUへの物理ハードウェアインターフェイスを持ち、論理インターフェイスはハードウェアに実装されます(詳細については、Intel Core Processorデータシート、ボリューム1を参照してください)。基本的に、各コアには2つの個別の実行ユニットがありますが、それらの間でいくつかの共通リソースを共有します。これが、特定の場合にハイパースレッディングが実際にパフォーマンスを低下させる理由です。
たとえば、CPU 6が実際のコアを表し、CPU 7がHTコアを表す場合、CPU7だけに割り当てられたスレッドは、実際のコアのリソースだけを残しますか?(コアが他のタスクを実行していると仮定)
上記を参照。ONLY CPU6またはONLY CPU7に割り当てられたスレッドは、まったく同じ速度で実行されます(スレッドが同じ作業を行い、プロセッサ内の他のコアがアイドル状態であると仮定します)。WindowsはHT対応プロセッサについて知っており、プロセススケジューラはこれらのことを考慮します。
スレッドが内部でジャグリングされるように、ハイパースレッドは完全にプロセッサ内で管理されていますか?その場合、それはCPUスコープまたはコアスコープですか?例:CPU 6と7が1つのコアを表す場合、CPUは実行中のスレッドに適切にリソースを割り当てるため、どのプロセスに割り当てられるかは問題になりませんか?
両方。実際のハードウェア自体は、プログラムを実行するコアをスケジュールしません。それがオペレーティングシステムの仕事です。ただし、CPU自体が実際の実行ユニット間でリソースを共有する役割を担っています。Intelは、これを可能な限り効率的にするためのコードの記述方法を指示しています。
少なくともタスクマネージャーによれば、長時間実行されているシングルスレッドプロセスがコアの周りでかなり跳ね返っていることがわかります。これは、プロセスを単一のコアに割り当てると、パフォーマンスが少し向上することを意味しますか(コンテキストの切り替えやキャッシュの無効化などを回避することにより)?もしそうなら、「仮想コアだけ」に割り当てていないことを知ることができますか?
これは通常の動作であり、いいえ、単一のコアに割り当ててもパフォーマンスは向上しません。そうは言っても、何らかの理由で単一のプロセスが単一の物理コアでのみ実行されるようにする場合は、単一の論理プロセッサに割り当てます。
プロセスが「跳ね返る」理由は、プロセススケジューラが原因です。これは通常の動作であり、プロセススケジューラーは、すべての制限が課せられた状態で動作するようになりますので、プロセスが実行できるコアの数を制限することで(スレッドの数に関係なく)パフォーマンスが低下する可能性が高くなります。はい、ほとんどの場合、このペナルティは無視できますが、最終的な理由は、これを行う理由がない限りです。