コンテンツにスキップ

キャッシュコヒーレンシとは

キャッシュコヒーレンシとは、同じ番地のデータの写しが複数の場所にあるとき、その内容をそろえておくことです。 写しは速さのために作られますが、写しである以上、原本とずれる余地がついて回ります。

キャッシュは、速くするために写しを持つ仕組みです。

電子情報通信学会の公開知識ベース『知識の森』6群4編4章「記憶」は、いちど参照した番地の中身を速い記憶装置へ写しておけば、同じ番地を次に参照するときが速くなると述べています。さらに、写す単位をある程度の大きさの塊にしておけば、その近くの番地を参照するときも速く済むとしています。

キャッシュにあるのは写しです。原本は主記憶にあります。読み出しだけなら、2つは同じ内容のまま並びます。

書き込んだ時点で、食い違います

Section titled “書き込んだ時点で、食い違います”

同章は続けて、キャッシュへ書き込みが起きた時点で新しい値がキャッシュ側だけにある状態になるため、キャッシュ側の変更を主記憶へ反映させる必要があると記しています。

反映の仕方として、同章は2つを挙げています。

ひとつはストアスルー(ライトスルー)で、キャッシュを書き換えると同時に、主記憶へも同じ書き換えを流す方式です。原本がすぐ最新になり、制御もこみ入らずに済みます。引き換えに主記憶への書き込みが毎回走るため、主記憶の待ち時間から切り離すにはライトバッファのような受け皿が要ります。

もうひとつはライトバックで、書き込みの時点ではキャッシュだけを直し、その塊が主記憶とずれていることを覚えておく方式です。塊がキャッシュから追い出される段になって、はじめて内容を主記憶へ返します。同じ塊を何度書き換えても主記憶へ返すのは一度で足りるため、主記憶への書き込み回数を切り詰められます。以上は同章の記述です。

ライトバックの速さには代償があります。最新の値がキャッシュだけにある時間が生まれます。

写しを作った時点から、キャッシュと主記憶がずれる余地が生まれます
同じ番地の値が、2つになります① 主記憶から写しますキャッシュ 42主記憶 42② キャッシュだけを書き換えますキャッシュ 99主記憶 42③ どちらが正しいのかが問われますキャッシュ 99同じ番地に、値が2つ並びます主記憶 42主記憶へ反映する仕方は、2通りありますライトスルー 同じ更新を主記憶へも行いますすぐ反映され、制御も比較的単純です毎回の主記憶書き込みで性能が落ちますライトバック 追い出されるときに主記憶へ返します主記憶への書き込み回数を抑えられます最新の値がキャッシュだけにある時間が生じます
写しを作るところまでは、値はひとつです。キャッシュだけを書き換えた時点で同じ番地に2つの値が並び、どちらを正とするかの決まりが要ります。反映の仕方は、すぐ返すか、あとで返すかの2通りです。

誰が一致を保証するのでしょうか

Section titled “誰が一致を保証するのでしょうか”

食い違いを直す役目は、どこかが引き受ける必要があります。

ルネサス エレクトロニクスのSH-4Aコア拡張機能 ユーザーズマニュアル ハードウェア編は、キャッシュ操作命令の節で、キャッシュと外部メモリとのコヒーレンシはソフトウェアで保証するよう求めています。同社のSH-4Aコアについての記述です。

そのために用意されている命令として、同マニュアルは6つを挙げています。OCBIはオペランドキャッシュを無効にし、写しをそのまま捨てます。OCBPは、内容を外部メモリへ返したうえで無効にします。OCBWBは、内容を外部メモリへ返します。MOVCA.Lはオペランドキャッシュを確保します。ICBIは命令キャッシュを無効にします。SYNCOはデータ転送の完了を待ちます。

無効にすることと、内容を外部メモリへ返すことは、別の操作です。写しを捨てるのか、写しの内容を原本へ返すのかで、目的が違います。この2つを区別している点に、コヒーレンシの考え方がよく表れています。

ハードウェアが引き受ける箇所もあります

Section titled “ハードウェアが引き受ける箇所もあります”

同じマニュアルには、逆向きの記述もあります。

同マニュアルは、オペランドキャッシュのコヒーレンシ制御のために、SuperHywayバスから届くPURGEおよびFLUSHトランザクションを受け付けられるとしています。PURGEでは、オペランドキャッシュを検索して当たった行を無効にし、その行が書き換え済み(ダーティ)であれば内容を外部メモリへ返します。FLUSHでは、当たった行が書き換え済みであれば内容を外部メモリへ返し、行そのものは有効なまま残します。

さらに同マニュアルは、内蔵メモリのうちUメモリの読み出しバッファについて、DMACなどのバスマスタがUメモリを書き換えた場合にもハードウェアが無効化を行うため、ここはソフトウェアでコヒーレンシを保証しなくてよいと記しています。いずれも同じSH-4Aコアについての記述です。

同じ内蔵メモリでも、命令を配置するILメモリでは、ソフトウェア側の手順が1つ増えます。同マニュアルは、ILメモリへ命令を書き込んだあと、書き換え後の命令へ分岐する前にSYNCOとICBIを実行するよう求めています。

ひとつのチップの中で、保証する側が箇所ごとに決まっています。

同じチップの中で、保証する側が箇所ごとに決まります
ルネサスのSH-4A向け資料には、両方が書かれていますソフトウェアが保証する箇所キャッシュと外部メモリとの一致は、プログラムが命令を発行して保ちますOCBI 無効にします(写しを捨てます)OCBP 外部メモリへ返してから無効にしますOCBWB 内容を外部メモリへ返しますICBI 命令キャッシュを無効にしますSYNCO 転送の完了を待ちます命令を発行する責任は、プログラム側にありますハードウェアが保証する箇所バスから届く指示を、キャッシュが自分で受け付けますPURGE 当たった行を無効にし、    書き換え済みなら外部メモリへ返しますFLUSH 書き換え済みなら外部メモリへ返し、    行は有効なまま残します内蔵Uメモリの読み出しバッファは、DMACが書き換えてもハードウェアが無効にしますこの箇所は、ハードウェア側で保たれます
同じ資料の中に、ソフトウェアが保証するよう求める箇所と、ハードウェアが引き受けると書かれた箇所が並んでいます。コヒーレンシは、どこまでを誰が引き受けるかの線引きでもあります。

そろえる相手は増えていきます

Section titled “そろえる相手は増えていきます”

写しのある場所は、増える一方です。

JEITAの半導体用語集は、マルチコアの見出し語で、仕事を複数のコアへ割り振って進めること、コアどうしは基本的に別々に動くものの、2次キャッシュのように共有される部分もあることを記しています。

電子情報通信学会の同知識ベース6群5編2章も、チップマルチプロセッサ(マルチコアプロセッサ)は1つのチップに複数のコアを載せた形であり、演算器やレジスタといった計算資源はコアごとに別々に持つと述べています。

実機の構成にも同じことが起きます。理化学研究所 計算科学研究センターのシステム紹介は、スーパーコンピュータ「富岳」の1ノードに計算コアが48個あり、L1データキャッシュがコアあたり64KiB、L2がCMG(Core Memory Group)あたり8MiBで、CMGが4つあると記載しています。学会の記述は2010年時点のもの、理化学研究所の値は同センターの公表値です。

同じ番地のデータが、あるコアのL1にも、CMGのL2にも、主記憶にも同時に存在し得ます。そこへDMACのような転送装置も加わります。写しの数だけ、そろえる相手が増えます。

保証に条件が付く場面もあります

Section titled “保証に条件が付く場面もあります”

一致には条件が付きます。

ルネサスの同マニュアルは、命令TLB多重ヒット例外やデータTLB多重ヒット例外が発生するとリセットになり、キャッシュのコヒーレンシは保証の対象外だと記しています。同じくSH-4Aコアについての記述です。

どの範囲で、誰が、どの操作によって一致を保つのでしょうか。資料がそこまで書き分けているのは、条件ごとに責任の所在を示す必要があるからです。

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

同じ番地のデータの写しが複数の場所にあるとき、その内容をそろえておくことです。ルネサス エレクトロニクスのSH-4A向けマニュアルは、キャッシュと外部メモリとのコヒーレンシという言い方でこの関係を記しています。

なぜ写しができるのですか?

速くするためです。電子情報通信学会の公開知識ベースは、いちど参照した番地の中身を速い記憶装置へ写しておけば、同じ番地を次に参照するときが速くなると述べています。

キャッシュと主記憶の値は、いつずれるのですか?

書き込んだときです。同知識ベースは、キャッシュへ書き込みが起きると、新しい値はキャッシュ側だけにあり、主記憶には書き込み前の値が残るとしています。

ライトスルーとライトバックの使い分けはどうなりますか?

主記憶へ反映する時点が別です。同知識ベースによれば、ライトスルーは同じ更新を主記憶にも行い、ライトバックはキャッシュだけを更新して、そのブロックが追い出されるときに主記憶へ返します。

一致は誰が保証するのですか?

箇所ごとに決まっています。ルネサスの同マニュアルは、キャッシュと外部メモリとのコヒーレンシをソフトウェアで保証するよう求める一方、内蔵メモリのうちUメモリの読み出しバッファについてはハードウェアが無効化を引き受けるとしています。

マルチコアでは何が変わりますか?

写しのある場所が増えます。JEITAの半導体用語集は、マルチコアではコアどうしが基本的に別々に動くものの、2次キャッシュのように共有される部分もあると述べています。

保証に条件が付くことはありますか?

あります。ルネサスの同マニュアルは、命令TLB多重ヒット例外やデータTLB多重ヒット例外が発生するとリセットになり、キャッシュのコヒーレンシは保証の対象外だと記しています。

この記事の事実は、誰でも読める公開資料を根拠とし、各URLの到達可否をこちらで実測しています。したがって、リンク先が移動または消滅した場合は、その旨をこのページへ反映します。

  • ルネサス エレクトロニクス「SH-4A コア拡張機能 ユーザーズマニュアル ハードウェア編」Rev.2.00、2013年8月 公開PDF(2026年8月30日にリンク生存を実測、200、application/pdf)── キャッシュと外部メモリとのコヒーレンシはソフトウェアで保証するよう求めていること、そのための6命令(OCBI・OCBP・OCBWB・MOVCA.L・ICBI・SYNCO)とそれぞれの働き、コヒーレンシ制御のためにSuperHywayバスからのPURGEおよびFLUSHトランザクションを受け付けられること、PURGEがヒットしたエントリを無効化しダーティなら内容を外部メモリへ返すこと、FLUSHがダーティなら内容を外部メモリへ返したうえでヒットしたエントリを有効なまま残すこと、内蔵メモリのうちUメモリの読み出しバッファはDMACなどのバスマスタが書き換えた場合もハードウェアが無効化を担いソフトウェアでのコヒーレンシ保証が不要であること、一方でILメモリに命令を配置した場合は書き換え後の命令へ分岐する前にSYNCOとICBIの実行を求めていること、命令TLB多重ヒット例外およびデータTLB多重ヒット例外の発生時はリセットとなりキャッシュのコヒーレンシが保証の対象外となること
  • 電子情報通信学会『知識の森』6群4編4章「記憶」公開PDF(2026年8月30日にリンク生存を実測、200、application/pdf)── いちど読んだ番地の中身を速い記憶装置へ写しておけば同じ番地の再読み出しが速くなること、写す単位をある程度の大きさの塊にすること、キャッシュへの書き込みが起きると新しい値がキャッシュ側だけにある状態になりキャッシュ側の変更を主記憶へ反映させる必要があること、ストアスルー(ライトスルー)は主記憶へも同じ書き換えを流すため反映が早く制御も簡素である一方で毎回の主記憶書き込みにより性能が落ちうること、ライトバックはキャッシュだけを直して追い出し時に主記憶へ返すため主記憶への書き込み回数を切り詰められること
  • JEITA(電子情報技術産業協会)半導体部会「半導体用語集」(2026年8月30日にリンク生存を実測、200)── マルチコアの見出し語の記述(仕事を複数のコアへ割り振って進めること、コアどうしは基本的に別々に動くが2次キャッシュのように共有される部分もあること)。あわせてキャッシュメモリの見出し語の記述(よく使うデータを一時的にためておく小容量・高速の記憶装置であり、CPUと主記憶装置の間に位置づけられること)
  • 電子情報通信学会『知識の森』6群5編2章「スレッドレベル並列コンピュータ」公開PDF(2026年8月30日にリンク生存を実測、200、application/pdf)── チップマルチプロセッサ(CMP)がマルチコアプロセッサとも呼ばれ1つのチップに複数のコアを載せた形であること、演算器やレジスタといった計算資源をコアごとに別々に持つこと。2010年時点の記述です
  • 理化学研究所 計算科学研究センター「システム紹介」(2026年8月30日にリンク生存を実測、200)── 「富岳」の1ノードに計算コアが48個あること、CMG(Core Memory Group)が4つあること、L1データキャッシュがコアあたり64KiB・4way、L2がCMGあたり8MiB・16wayであること
回答待ち 更新中 公開Q&A

このページの質問窓口

AIに疑問を送る

「匿名で送信する」を押して内容を送ると、受付ID付きの回答URLを発行します。URLでは進捗を追うことができ、通常は1日以内に回答します。個人情報を取り除いて編集した質問と回答だけを、承認済み資料の出典リンクとともに公開Q&A一覧へ掲載します。

通常、1日以内に回答します 回答待ち 更新中

  1. 匿名で送る 分かりにくい箇所、指摘、追加してほしい内容を書きます。
  2. 受付IDと回答URLを保存する 送信後に発行されるURLへ、進捗が順次反映されます。
  3. 進捗と回答を追う URLには、受付済み、回答作成中、解決済みの状態と回答が載ります。
公開Q&A一覧へ 5〜4,000文字。氏名・連絡先などの個人情報、秘密情報は入力禁止です。

このフォームは匿名です。氏名・連絡先・応募情報などの個人情報、秘密情報、社外秘情報、契約情報、非公開資料の入力は禁止です。投稿原文は運営用DBに保存し、公開面には、個人情報・秘密情報・危険な命令を除く安全審査と読みやすい文章への編集を経た質問文と回答だけを載せます。状態は「受付済み」「回答作成中」「解決済み」の3段階です。安全審査の結果によっては公開を保留します。サイト側の機械検査を通った内容だけを運営側のAI回答作成環境へ送り、回答案の作成と、それとは独立したAI審査に使います。機械検査には見落としの可能性があり、回答作成と審査の履歴は利用中の環境に保持されます。IPアドレスや端末情報は送信対象外です。回答URLは公開Q&A用で、共有先からも開けます。送信により、この利用条件と審査後のQ&A公開に同意したものとします。