マルチプロセッシング
密結合マルチプロセッサシステムはバスレベルで結合された複数のCPUを持つ。そのプロセッサ群は共通の共有メモリにアクセスする(SMP)。あるいはメモリにローカルと共有の二階層を設ける(NUMA)。IBM p690 RegattaはハイエンドのSMPシステムの一例である。チップ上のマルチプロセッサであるマルチコア処理では、ひとつのチップ上に複数のプロセッサが実装されており、最も進んだ形式の密結合マルチプロセッシングと言う事ができる。メインフレームのマルチプロセッサシステムは密結合であることが多い。
この問題はプログラミング技法で何とかなる話ではなく、ハードウェアで何らかのキャッシュ同期機構を設けなければならない。キャッシュ同期を可能とする解決法はいくつかあって非常に複雑である。以下に例を挙げる。
メモリへの書き込みの際にキャッシュに書き込むと同時にバスにそれをブロードキャストする。ただし、アドレスだけでありメモリには書き込まない。
書き込みを行ったプロセッサ以外は、通知されたアドレスに対応したキャッシュラインを自分が持っていたら、それを消す。
メモリリードでキャッシュミスが発生したとき、メモリを読みに行くが、それにメモリではなく最新の内容を持っているプロセッサのキャッシュが自動的に応答する。
より簡単な方式として、他のプロセッサが読みに来たキャッシュラインをメモリに書き戻し(シュートダウン)し、使用する際にメモリから読ませる手法があるが、性能は劣化する。いずれにしても、キャッシュを同期させようとするとシングルプロセッサよりもバスを使用する頻度が多くなるため、バスの高性能化がシステム性能の向上に必要となる。つまり、単一バスに多数のプロセッサを接続するとバスがボトルネックとなって性能が頭打ちとなる。