コヒーレンシとは
コヒーレンシ(Coherency)とは、メインメモリとキャッシュメモリのデータにおける一貫性のことである。コヒーレンシが保たれないとデータの完全性が失われシステムとして不完全なものになってしまいます。
コヒーレンシはマルチコアプロセッサと呼ばれる複数のコアでキャッシュを取り扱う処理方式において重要な役割を果たしています。はじめにコヒーレンシが保たれない例を紹介すると
コアA,BとデータX(数値5を保持する)がメインメモリにあり、データXにコアAとコアBの計算をする
- コアAはデータXを操作するためにデータXをコアAのキャッシュメモリにコピーする。
- コアAのキャッシュメモリのデータXの値を+3する。
- コアBはデータXを操作するためにデータXをコアBのキャッシュメモリにコピーする。
- コアBのキャッシュメモリのデータXの値を+2する。
- コアAはキャッシュメモリのデータXをメインメモリに反映する。
- コアBはキャッシュメモリのデータXをメインメモリに反映する。
この操作の結果、メインメモリのデータXには7が格納されています。このような形で計算の一部が反映されない状態がコヒーレンシが保たれていない状態です。
コヒーレンシを保つ方法はいくつかあります。
1つ目は、キャッシュメモリとメインメモリを同時に書き出す方法(ライトスルー方式)です。
2つ目は、コア間のキャッシュメモリの値の更新状態を確認してデータを共有する方法(スヌープキャッシュ)です。
コメント