マルチプロセッサアーキテクチャでは、レジスタはどのように編成されていますか?
たとえば、4コアプロセッサでは、一度に少なくとも4つのプロセスを実行できます。
スタックポインタ、プログラムステータスレジスタ、およびプログラムカウンタはどのように編成されていますか?
他の汎用レジスタはどうですか?
私の推測では、各コアには個別のレジスタセットがあります。
マルチプロセッサアーキテクチャでは、レジスタはどのように編成されていますか?
たとえば、4コアプロセッサでは、一度に少なくとも4つのプロセスを実行できます。
スタックポインタ、プログラムステータスレジスタ、およびプログラムカウンタはどのように編成されていますか?
他の汎用レジスタはどうですか?
私の推測では、各コアには個別のレジスタセットがあります。
それぞれがシングルコアCPUを搭載した4台の完全に独立したコンピューターを想像してみてください。4コアコンピュータはそのようなものです。それ外:
これのほとんどは、ほとんどのソフトウェアには「見えない」ものです。電源管理を制御するOSの一部を作成している場合を除き、電源管理がCPU間で共有されているかどうかを気にする必要はありません。OS /カーネルの低レベルのIRQ処理を記述しているのでない限り、IRQがデバイスドライバーなどに到達する方法を気にする必要はありません。
同じことが実際に存在するCPUの数にも当てはまります。OS /カーネルは通常、アプリケーションがより高いレベルの抽象化(「スレッド」など)のみを気にする必要があることを保証します。この高レベルの抽象化がどのように機能するかはOSによって異なります。通常(ほとんどのOSの場合)、OS /カーネルは、スレッドを「十分に迅速に」切り替えることで、すべてのスレッドが同時に実行されているという錯覚を与えようとします(CPUが4つしかない場合)。最大4つのスレッドが実際にはまったく同時に実行されます)が、通常はこれよりもはるかに複雑であり(スレッドの優先順位、プリエンプションルールなどが含まれます)、(比較的まれですが)非常に異なる場合があります(たとえば、一部のシステムでは、障害耐性/冗長性の目的で、同じスレッドが複数のCPUで同時に実行される場合があります。一部のシステムでは、関数とそのデータのキューがあり、複数の関数が同時に実行される場合があります。等)。
マルチプロセッサとは、同じプラットフォーム上に少なくとも2つのディスクリートプロセッサが存在することを意味します。通常は同じマザーボード上にあります。
マルチコアとは、CPUのほとんどまたはすべてがシングルチップ上で何度も複製されることを意味します。-これは、スタック、ステータス、プログラムカウンター、およびすべての汎用レジスターが複製されることも意味します。
マルチプロセッシングとは、OSレベルで、プロセスが構成するすべてのものが時々切り替えられることを意味します。
マルチスレッドはマルチプロセッシングの軽量な変形であり、スレッドは同じコードセグメントと同じデータセグメント、同じファイル記述子などを共有しますが、一意のスタック(そしてもちろん一意のステータスレジスタとプログラムカウンター)を持っています