cache操作:clean、invalidate与flush
(2024-03-19 12:07:08)
标签:
it |
分类: 技术 |
cache line
cache line是cache的基本访问单元。
cache line一般都会包含valid和dirty两个状态位,如下图的v和d。
valid位表示当前cache line的内容是否有效。
dirty位表示当前cache line的内容是否比内存上的要更新(即是否修改过)。
cache操作
clean和invalidata两个操作都可以在ARM官方文档上找到描述,但是flush没找到。而RISC-V则都没找到。
clean
clean表示把cache line的dirty位清0,并把cache
line的数据同步到内存上,目的是保证cache与内存的数据一致性。仅适用于使用回写(write-back)策略的D-cache。
Applies to write-back data caches, and means that if the cache
line contains stored data that has not yet been written out to main
memory, it is written to main memory now, and
the line is marked as clean.
invalidate
invalidate表示把cache line的valid位清0。
Means that the cache line (or all the lines in the cache) is
marked as invalid, so that no cache hits occur
for that line until it is re-allocated to an
address. For write-back data caches, this
does not include cleaning the
cache line unless that is also stated.
flush
flush有查到两种含义:
flush = invalidate
在《arm system developer's guide》中有描述到:
The term invalidate is sometimes used in place of the term
flush.
flush = clean + invalidate

加载中…