Cache学习小结

今天在做AXI4总线传输协议的时候,遇到AWCACHE和ARCACHE信号需要给赋值,发现有Write-through、Write-back和No-allocate、Read-allocate、Write-allocate、Read and Write-allocate分别排列组合等8种模式(还有4种别的模式这里先不提了),突然想起Cache学习了很久了也没进行过总结,这里总结一下。


Cache架构


这里先留出位置,这次先总结Cache读写机制,以后再补充


Cache读写机制


首先是Write-through和Write-back的区别:(这部分参考:http://witmax.cn/cache-writing-policies.html)

Write-through(直写模式、写透模式):数据更新时,同时写入Cache和下一级存储。不存在dirty问题。

优点:简单可靠,不涉及cahce一致性问题;缺点:速度慢(因为同时写下一级存储(比如DDR))。

Write-back(回写模式):数据更新时,只写Cache;当数据被替换出来时,才将该被修改的Cache数据写到下一级存储。涉及dirty这个概念。

优点:速度快;下一级存储没有副本,若出现意外情况数据将丢失。

顺便,dirty:是指cache某个位置数据被更新了,但是还没更新其对应的下一级存储位置(即cache不一致);相反

   clean:cache数据与下一级存储位置数据一致


而allocate是针对cache miss时的处理方式,下面是我的理解:

No-allocate:不论读、写操作,cache miss时,直接写下一级存储(如DDR)

Read-allocate:读操作,cache miss时,在cache中分配一个空间,从下一级存储读取该数据到cache分配的这个空间,最后读取该值。注意:对于Write-back模式,如果分配的这个位置原数据是dirty的,需要将该数据先写回下一级存储。

Write-allocate:写操作,cache miss时,在cache中分配一个空间,将数据先写入该位置,根据Write-back还是Write-through决定是否再写入下一级存储。注意:对于Write-back模式,如果分配的这个位置原数据是dirty的,需要将该数据先写回下一级存储。

下面为参考网址给出的2个示例图,第一个是Write-through Read-allocate,第二个是Write-back Read and Write-allocate

A Write-Through cache with No-Write AllocationA Write-Back cache with Write Allocation


简单总结一下该部分:Write-through和Write-back为写入cache的模式,区别是在写cache时是否还同时写下一级memory;allocate那堆只在cache miss时生效,负责分配cache空间给读和写中转用;另外,dirty只发生在Write-back模式,需要额外进行一步回写。

你可能感兴趣的:(学习笔记)