1

マルチプロセッサアーキテクチャでは、レジスタはどのように編成されていますか?

たとえば、4コアプロセッサでは、一度に少なくとも4つのプロセスを実行できます。
スタックポインタ、プログラムステータスレジスタ、およびプログラムカウンタはどのように編成されていますか?

他の汎用レジスタはどうですか?

私の推測では、各コアには個別のレジスタセットがあります。

4

2 に答える 2

5

それぞれがシングルコアCPUを搭載した4台の完全に独立したコンピューターを想像してみてください。4コアコンピュータはそのようなものです。それ外:

  • すべてのCPUは同じ物理アドレス空間を共有します(すべて同じRAM、PCIデバイスなどを使用できます)
  • 割り込み/IRQコントローラは、OSがどのCPU/sをIRQによって割り込むべきかをOSが判断できるように設計できます。
  • CPUは通常、相互に信号を送ることができます(「プロセッサ間割り込み」など)。
  • 一部のCPUは一部のキャッシュを共有する場合があります
  • 一部のCPUは、一部の制御レジスタを共有する場合があります(たとえば、電力管理、キャッシュ構成など)
  • 最新のCPUの場合、一部のCPUは、一部またはすべての実行ユニット(SMT、ハイパースレッディングなど)を共有する場合があります。
  • 最新のシステム(メモリコントローラーが物理チップに組み込まれている)の場合、一部のCPUは同じメモリコントローラーを共有する場合があります

これのほとんどは、ほとんどのソフトウェアには「見えない」ものです。電源管理を制御するOSの一部を作成している場合を除き、電源管理がCPU間で共有されているかどうかを気にする必要はありません。OS /カーネルの低レベルのIRQ処理を記述しているのでない限り、IRQがデバイスドライバーなどに到達する方法を気にする必要はありません。

同じことが実際に存在するCPUの数にも当てはまります。OS /カーネルは通常、アプリケーションがより高いレベルの抽象化(「スレッド」など)のみを気にする必要があることを保証します。この高レベルの抽象化がどのように機能するかはOSによって異なります。通常(ほとんどのOSの場合)、OS /カーネルは、スレッドを「十分に迅速に」切り替えることで、すべてのスレッドが同時に実行されているという錯覚を与えようとします(CPUが4つしかない場合)。最大4つのスレッドが実際にはまったく同時に実行されます)が、通常はこれよりもはるかに複雑であり(スレッドの優先順位、プリエンプションルールなどが含まれます)、(比較的まれですが)非常に異なる場合があります(たとえば、一部のシステムでは、障害耐性/冗長性の目的で、同じスレッドが複数のCPUで同時に実行される場合があります。一部のシステムでは、関数とそのデータのキューがあり、複数の関数が同時に実行される場合があります。等)。

于 2012-11-05T09:41:23.267 に答える
1

マルチプロセッサとは、同じプラットフォーム上に少なくとも2つのディスクリートプロセッサが存在することを意味します。通常は同じマザーボード上にあります。

  • サブセットは分散マルチプロセッシングであり、たとえば2台のPCが2つのプロセッサを備えた単一のシステムとして表示されるようにプログラムされています。

マルチコアとは、CPUのほとんどまたはすべてがシングルチップ上で何度も複製されることを意味します。-これは、スタック、ステータス、プログラムカウンター、およびすべての汎用レジスターが複製されることも意味します。

マルチプロセッシングとは、OSレベルで、プロセスが構成するすべてのものが時々切り替えられることを意味します。

マルチスレッドはマルチプロセッシングの軽量な変形であり、スレッドは同じコードセグメントと同じデータセグメント、同じファイル記述子などを共有しますが、一意のスタック(そしてもちろん一意のステータスレジスタとプログラムカウンター)を持っています

  • 一般的なマルチプロセッシングも意味します(ハードウェアアーキテクチャ)
于 2012-11-05T09:40:19.593 に答える