メモリの一貫性は、2つ以上のプロセッサまたはコアが共通のメモリ領域を共有するコンピュータシステムの設計に影響を与える問題です。[1] [2] [3] [4]
ユニプロセッサシステム (コアが 1 つだけ存在するシステム)では、すべての作業を実行する処理要素が1 つだけ存在するため、特定のメモリ位置に対して読み取りまたは書き込みを実行できる処理要素は 1 つだけです。その結果、値が変更されると、対応するメモリ位置に対するその後のすべての読み取り操作では、キャッシュされていても更新された値が表示されます。
逆に、マルチプロセッサ(またはマルチコア) システムでは、2 つ以上の処理要素が同時に動作しているため、同じメモリ位置に同時にアクセスすることが可能です。いずれもこの位置のデータに変更を加えない限り、データを無期限に共有し、好きなようにキャッシュすることができます。しかし、1 つがその位置を更新するとすぐに、他の処理要素は、たとえばローカル キャッシュ内にある古いコピーで作業する可能性があります。したがって、共有値の変更をすべての処理要素に通知するための何らかの方式が必要です。このような方式はメモリ コヒーレンス プロトコルと呼ばれ、このようなプロトコルが採用されているシステムはコヒーレント メモリを備えていると言われます。
メモリの一貫性の正確な性質と意味は、一貫性プロトコルが実装する一貫性モデルによって決まります。正しい並行プログラムを作成するには、プログラマはシステムで採用されている一貫性モデルを正確に把握している必要があります。
ハードウェアに実装される場合、コヒーレンス プロトコルは、たとえば、ディレクトリ ベースまたはスヌーピングベース (スニッフィングとも呼ばれる) になります。具体的なプロトコルには、 MSI プロトコルとその派生であるMESI、MOSI、およびMOESIがあります。
参照
参考文献
- ^ Censier, LM; Feautrier, P. (1978 年 12 月)。「マルチキャッシュ システムにおけるコヒーレンス問題に対する新しいソリューション」。IEEE Transactions on Computers。C - 27 (12): 1112–18。doi : 10.1109 /TC.1978.1675013。S2CID 5898229 。
- ^ Smith, Alan Jay (1982 年 9 月). 「キャッシュ メモリ」. ACM Computing Surveys . 14 (3): 473–530. doi :10.1145/356887.356892. S2CID 6023466.
- ^ Li, Kai; Hudak, Paul (1989 年 11 月). 「共有仮想メモリ システムにおけるメモリの一貫性」. ACM Transactions on Computer Systems . 7 (4): 321–59. doi : 10.1145/75104.75105 . S2CID 1678750.
- ^ Stenstrom, Per (1990 年 6 月). 「マルチプロセッサのキャッシュ コヒーレンス スキームの調査」. IEEE Computer . 23 (6): 12–24. doi :10.1109/2.55497.
