2009-03-01 18 views
18

私は、デュアルコアCPUでどのように割り込みが処理されるかについて考えています。複数の物理プロセッサが搭載されたボード上で割り込み処理がどのように実装されているのか疑問に思っていました。デュアルプロセッサマシンではどのように割り込みが処理されますか?

物理ボードの構成によって割り込みの責任が決まりますか?各プロセッサは、ディスクI/Oのようないくつかのタイプの割り込みを処理できなければなりません。適切なプロセッサに割り込みを管理しディスパッチする回路がないかぎり、私の推測では、すべてのプロセッサとコアが割り込みハンドラを実行できるように、このスキームはプロセッサに中立でなければならないということです。

コアがディスクの読み取りを待機している場合、そのコアがディスクの準備ができたら割り込みハンドラを実行するコアになりますか?

+1

を提供することができます。しかし、読み込みが終了したら、そのプロセッサ上にまだデータがキャッシュされている可能性があるため、以前と同じプロセッサ上で新しく読み込まれたスレッドを実行する方が良いようです。 – jeffD

答えて

8

各CPUはまた、相互にルーティングデバイスがローカルAPIC(登録商標)に割り込み処理するI/O APICに配線されている独自のローカルAPIC(高度プログラマブル割り込みコントローラ)を取得します。

OSは、どの割り込みがどのCPUにルーティングされるか(またはAPICがその決定を下せるように)決定するために、APICをプログラムすることができます。

私は、マルチコアCPUに各コアのローカルAPICがあると想像していますが、正直なところそれについてはわかりません。

は、詳細については以下のリンクを参照してください:何に興味を持っていることはSMPプロセッサのアフィニティは

0

私はそれがハードウェア製造元に依存すると言うでしょう...

しかしthis linkは、私はほとんどが、おそらく主要なプロセッサおよび/または第一のコアによって処理されていると信じています。 x86システムで

Another link

3

です。 HereはLinuxでどのように処理されるかに関する優れた記事です。 Advanced Programmable Interrupt Controller (APIC)は、最新のシステムでこれを管理する方法です。基本的には、このインターフェイスを利用してOSを適切に設定していない限り、デフォルトはすべてプロセッサ0になります。また、特定の割り込みを待つコマンドを発行したコアが必ずしも必要ではありません。ロードの少ないコアには、それを受け取ることが必要です。

+0

ありがとう、LinuxのSMPのリンクは面白かったです。この方法でサーバーを変更することが可能であることを知っておくとよいでしょう。 – jeffD

1

私はすでにこの質問をしばらく前に聞いてきました。多分それはあなたが、私は今、コアは決して読み取り、スレッドが待機で待機していないことがわかり、いくつかの洞察:)

how do interrupts in multicore/multicpu machines work

+0

プログラム上のディスクI/OがセクタI/O操作と関連する割り込みに分割される方法に関する有用な情報。 – jeffD

関連する問題