Skip to main content

キャッシュコヒーレンスとは何ですか?

CACHEコヒーレンスは、システムデータセットにアクセスして複数のエージェントによって変更されたときに発生する自然な問題です。これが問題になるコンピューターアーキテクチャの主要な領域は、マルチプロセッサコンピューターにあります。マルチプロセッサコンピューターの各プロセッサには、ランダムアクセスメモリ(RAM)から情報をロードおよび保存する独自のキャッシュがあります。2つのプロセッサが同じメモリの領域にアクセスすると、特定の予防措置が取られないとキャッシュコヒーレンスが失われます。この問題に対処し、潜在的な問題を回避するために開発されたいくつかの方法があります。ディレクトリベースのコヒーレンス、スヌーピング、スナーフィングは、キャッシュコヒーレンスの損失を防ぐために使用される3つの方法です。データは、すべてのプロセッサがアクセスできるメモリの一部内に配置されます。メモリのその領域内に保存されている情報が変更されると、システムはキャッシュを更新するか、それらを無効にします。snoopingスヌーピングでは、プロセッサがキャッシュされたメモリロケーションへのすべてのアクセスを監視する必要があります。これにより、プロセッサは書き込み操作がいつ発生したかを知ることができます。書き込み操作がいつ発生するかを知ることで、プロセッサはキャッシュを更新できます。Snarfingには、キャッシュされたメモリ位置へのアクセスを監視するだけでなく、メモリに保存されている実際の情報を監視することも含まれます。メモリの書き込みが発生すると、新しい情報でキャッシュを更新できます。directoryディレクトリベースのコヒーレンスシステムは比較的高いレイテンシを持ち、処理が遅くなります。帯域幅要件の低下により、ディレクトリベースのコヒーレンスシステムは、キャッシュコヒーレンスの大規模なアプリケーションで実用的になります。システムが使用するプロセッサが多いほど、ディレクトリベースのコヒーレンスシステムを使用することでより多くの利点があります。この方法には、ディレクトリベースのアプローチよりも多くの帯域幅が必要です。この方法は、比較的少数のプロセッサを持つシステムで効果的に使用できます。Snarfingは通常、キャッシュコヒーレンスを維持する方法として使用されません。これは、主に、スヌーピングとディレクトリベースの両方の方法と比較して、より多くのリソースを使用する必要があるためです。snarfingシステムを機能させるには、メモリアドレスとメモリの領域に保存されているデータの両方を追跡する必要があります。この方法で取り上げられている帯域幅と処理の量は、キャッシュコヒーレンスの維持のほとんどのアプリケーションでは望ましくありません。