Cache Flushといった時、それによって指し示す意味はCacheのInvalidateなのでしょうか。
それとも、CacheのWriteback Invalidateなのでしょうか。
例えば、x86の命令であるINVD(Invalidate Internal Caches)の説明には、下記のような説明がありあたかもInvalidateとFlushが同じ概念のように記載されています。
"Invalidates (flushes) the processor’s internal caches and issues a special-function bus cycle that directs external caches to also flush themselves. Data held in internal caches is not written back to main memory."
http://www.felixcloutier.com/x86/INVD.html
一方、同じx86の命令であるclflush(CLFLUSH—Flush Cache Line)の説明は下記のようになっており、WriteBack Invalidateの意味で使われているようです。
"If, at any level of the cache hierarchy, the line is inconsistent with memory (dirty) it is written to memory before invalidation. The source operand is a byte memory location."
概念的には、Writeback InvalidateとInvalidateはかなり違うものと思っているので、Cache Flushといったあいまいな単語が使われているのに気持ち悪さを感じるのですが、どのような概念の単語なのか解説いただければ幸いです。
Linux用語では、キャッシュ操作は、以下の3種類です。
Linuxメモ : キャッシュ操作(Invalidate、clean、flush)の意味
キャッシュ操作(Invalidate、clean、flush)の意味
・Invalidate (discard)
書き戻しを行わずにキャッシュラインを無効化する。
・Clean (write back)
キャッシュラインを書き戻す。キャッシュラインは有効で、物理メモリの内容と一致する。
・flush (Clean and invalidate)
キャッシュラインを書き戻し、かつ、キャッシュラインを無効化する。
コメント(0件)