オペレーティング システムの資料を読んでいます。「マルチコアとは、複数の論理 CPU コアを持ち、同時に複数の命令を実行できるコンピュータまたはプロセッサを指します。」
「論理CPUコア」とは何ですか、それはプロセッサですか? それは物理的なものに対応していますか、それとも論理CPUコアを見るのはOSですが、実際には論理CPUコアよりも物理プロセッサが少ないのですか?
オペレーティング システムの資料を読んでいます。「マルチコアとは、複数の論理 CPU コアを持ち、同時に複数の命令を実行できるコンピュータまたはプロセッサを指します。」
「論理CPUコア」とは何ですか、それはプロセッサですか? それは物理的なものに対応していますか、それとも論理CPUコアを見るのはOSですが、実際には論理CPUコアよりも物理プロセッサが少ないのですか?
論理 CPU コアには、ユニプロセッサの完全なアーキテクチャ コンテキストが含まれています。これは、OS がスケジューリングを行い、例外のアドレスなどのアーキテクチャ状態を制御できる単位です (そのようなハードウェアを配線しないアーキテクチャの場合)。
物理コアと 1 対 1 で対応しない一般的なケースが 2 つあります。第 1 に、1 つの物理コアで複数の仮想プロセッサ (Intel のハイパースレッディングなど) を実装できます。この場合、OS スケジューラは、仮想プロセッサが命令フェッチ、命令スケジューリング ハードウェア、実行ユニットなどのさまざまなリソースを共有する可能性があることに注意する必要があります。これは、通常、パフォーマンスを最大化するために、タスクを個別の物理コアにスケジュールする必要があることを意味します。(この問題は、L2 キャッシュを共有する個別のコアにもある程度適用されます。このような懸念は、マルチ CPU コンピューターの NUMA 最適化に多少関連しています。)
2 番目のケースでは、ハイパーバイザーによるハードウェアの仮想化により、任意の数のコアを OS に提示できます。ハイパーバイザーは通常、ハードウェアによって提供されるよりも多くの論理プロセッサをゲスト OS に表示しませんが (つまり、ハードウェア マルチスレッドに関連付けられた仮想プロセッサを含む)、理論的には、ハイパーバイザーは OS に任意の数のプロセッサを提示できます (ちょうど OS がタイムスライスを使用して、任意の数のプロセッサの印象をアプリケーション層に提示します)。このようなソフトウェア仮想化のコンテキストでは、ハイパーバイザーはプロセッサの性質を OS に公開しない可能性があるため、OS はプロセッサをスケジューリングの抽象的な単位としてしか扱うことができませんでした。
この分割をいくらか複雑にしているのは、ハードウェアが各スレッドに完全な仮想プロセッサを提供せずにマルチスレッドを実装することも可能です. たとえば、MIPS Multithreading Application Specific Extension は、仮想処理要素 (アーキテクチャ状態に関して別個のプロセッサとして動作する) とスレッド コンテキスト (同じ VPE 内のスレッド間でシステム コプロセッサを共有する) を区別します。さらに複雑なことに、スレッド コンテキストが VPE 間で移行される可能性があります。たとえば、物理プロセッサ コアには 2 つの VPE と 5 つのスレッド コンテキストがあり、OS は特定の TC をいずれかの VPE に割り当てて、いずれかの VPE が 1 ~ 4 個の TC を持つことができる場合があります。加えて、
MIPS MT-ASE の場合、OS は通常、スレッド コンテキストのみに関係しますが、実際のハードウェア構成をより完全に把握することで、いくつかの最適化が可能になり、スレッド コンテキストが仮想処理要素として扱われる場合、いくつかの正確性の問題が発生する可能性があります。