Cache 的一致性特性
即使内存区域满足了cache的使用条件,要正确的使用cache,仍然可能会碰到cache一致性的问题,由于cache会使得某一确定的时刻,cpu看到的储存内容和内存中的实际内容不一致,如果仅仅只是CPU来操作这片区域,这不会产生任何问题,担当有其他外设也参与读写的时候,就会产生以下两种情况的cache一致性问题。
1、储存位置被其它外设修改
以网卡为例,网卡会将接收到的数据包写入到指定的内存中(A处地址),而如果此内存带cache,且cache中刚刚存A处地址内存的缓存,此时,CPU访问这段内存的时候cache并不知道这段内存已经被网卡更新,CPU获得的数据还是cache中缓存的内容,也就是说获取的不是最新数据包的内容。
2、外设需要看到CPU对某块区域储存的修改
以网卡发送为例,CPU将要发送的数据包写入指定的内存,然后通知网卡将此内存中的数据发送出去,如果此内存带cache,CPU写入到此内存的数据可能还停留在cache中,内存的数据还未更新,网卡就发送了错误的数据。
确保Cache一致性的操作
对应于产生cache一致性问题的两种情况,确保cache一致性的操作主要有:
1、cache 无效:cache无效是将cache中指定的区域的缓存标记为无效,当CPU再次访问这个区域时,将强制cache从这个区域重新缓存数据。
2、cache 刷新:cache刷新时指立即将cache中指定区域的内容写入到内存。
原文地址:https://www.cnblogs.com/hujingzheng/p/11512439.html
时间: 2024-10-10 17:38:20