共有メモリ領域といくつかの GPIO/IRQ によってのみ接続された 2 つの CPU を持つアーキテクチャに取り組んでいます。それらは完全に分離されているため、キャッシュを共有しません。ただし、計画では、両方を共有メモリ内の同じ Linux OS イメージから実行する予定です。共有メモリやシグナルなどの IPC メカニズムはどのように機能するのでしょうか? 2 つの CPU は同じ RAM から実行されているため、これらのメカニズムが RAM に保持されている限り、1 つの CPU が共有メモリ領域の状態をチェックするために行ったときに、コヒーレンシの問題がない限り機能すると思います。この種のセットアップでは、信号 (ソフトウェア割り込み) はどのように機能しますか? すべてRAMで処理されますか?一貫性の問題はありますか?
1 に答える
複数の CPU を備えたほとんどのデスクトップ/ローエンド サーバー マシンである SMP 構成について話していると仮定すると、共有メモリの大きな領域でパフォーマンスの問題に直面する可能性はありますが、コヒーレンシの問題は発生しません。たとえば、各プロセッサ (セット {0, 1}) のキャッシュにメモリ ラインがあり、プロセッサ 0 がそのラインに書き込むと、そのキャッシュが更新されます。メモリ位置がマーク付きに設定されている場合、そのメモリ位置にライトスルーする必要があり、他のプロセッサのメモリ コントローラーはそのラインのキャッシュを再ロードまたは無効にします。
現在の CPU では、各 CPU モジュールに独自のメモリ コントローラがあり、そのため独自の専用メモリがあるため、これはやや複雑です。そのため、どのキャッシュ ラインを共有するかをネゴシエートし、プロセッサ コアによって変更された場合に共有キャッシュ ラインを無効にするのは、チップ内のメモリ コントローラー次第です。デフォルトを知りたい場合は、Intel Xeon CPU が複数のプロセッサ モジュール システムでキャッシュの一貫性を維持するために使用するMESIF プロトコルを参照してください。しかし、結論として、SMP システムでは、一貫性のない共有メモリの状態が発生することはありません。複数のコアが同じメモリ領域を攻撃している場合にのみ、パフォーマンスが低下します。