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

キャッシュコヒーレンスは、システムのデータセットにアクセスして複数のエージェントによって変更されたときに発生する自然な問題です。これが問題になるコンピューターアーキテクチャの主要な領域は、マルチプロセッサコンピューターにあります。マルチプロセッサコンピューターの各プロセッサには、ランダムアクセスメモリ(RAM)から情報をロードおよび保存する独自のキャッシュがあります。 2つのプロセッサが同じメモリの領域にアクセスすると、特定の予防措置が取られないとキャッシュコヒーレンスが失われます。

キャッシュコヒーレンスなしでは、マルチプロセッサシステムは機能できません。この問題に対処し、潜在的な問題を回避するために開発されたいくつかの方法があります。ディレクトリベースのコヒーレンス、スヌーピング、スナーフィングは、キャッシュコヒーレンスの損失を防ぐために使用される3つの方法です。

ディレクトリベースのコヒーレンスは、コヒーレンスを確保するためにフィルターとして機能します。データは、すべてのプロセッサがアクセスできるメモリの一部内に配置されます。私がその情報の場合メモリのその領域内に保存されているSが変更され、システムはキャッシュを更新するか、それらを無効にします。

スヌーピングでは、プロセッサがキャッシュされたメモリロケーションへのすべてのアクセスを監視する必要があります。これにより、プロセッサは書き込み操作がいつ発生したかを知ることができます。書き込み操作がいつ発生するかを知ることで、プロセッサはキャッシュを更新できます。

snarfingはスヌーピングと非常に似ています。 Snarfingには、キャッシュされたメモリ位置へのアクセスを監視するだけでなく、メモリに保存されている実際の情報を監視することも含まれます。メモリ書き込みが発生すると、新しい情報でキャッシュを更新できます。

ディレクトリベースのコヒーレンスシステムは比較的高いレイテンシを持ち、処理が遅くなります。帯域幅要件の低下により、ディレクトリベースのコヒーレンスシステムは、キャッシュコヒーレンスの大規模なアプリケーションで実用的になります。彼らシステムが使用する鉱石プロセッサは、ディレクトリベースのコヒーレンスシステムを使用することにより、より多くの利点があります。

スヌーピングははるかに高速な方法です。この方法には、ディレクトリベースのアプローチよりも多くの帯域幅が必要です。この方法は、比較的少ないプロセッサを持つシステムで効果的に使用できます。

snarfingは、通常、キャッシュコヒーレンスを維持する方法として使用されません。これは、主に、スヌーピングとディレクトリベースの両方の方法と比較して、より多くのリソースを使用する必要があるためです。 snarfingシステムを機能させるには、メモリアドレスとメモリの領域に保存されているデータの両方を追跡する必要があります。この方法で取り上げられる帯域幅と処理の量は、キャッシュコヒーレンスの維持のほとんどのアプリケーションでは望ましくありません。

他の言語

この記事は参考になりましたか? フィードバックをお寄せいただきありがとうございます フィードバックをお寄せいただきありがとうございます

どのように我々は助けることができます? どのように我々は助けることができます?