以cache为例,在写命中时只更新memory的一部分,而不是整个64bit数据
而在使用cache的scb时,需要先判断trans-beats,再按照single传输进行处理,判断地址是否命中
需要注意的是,INCR和WRAP的地址是不一样的,即把它们当作single的话每次传输的地址需要注意:
只有当前的cache-line为valid有效时,tag-timer才会计数,仿问过的cache-line的valid会标记为高
当valid为高且tag对应时,才会命中
读不命中可以分为两种情况,第一种是首次访问,即valid为低,cache会通过axi读数据,然后更新一整个cache-line的data_memory,(8个64bit数据),当然,当这两路cache-line已经填满数据,两路valid都为高,tag_timer会计数到nways,这个时候就需要有替换策略
替换掉计时时间最久的,也就是最早访问的那一路即可
当cache写命中时候,需要判断哪一路写命中,写命中会使当前这一路的tag-timer计数清零,使得另外一路计时时间增加(需要注意多次写命中使得tag-timer超越界限),因此设置最大值界限
写不命中时,直接写进下一级主存(写通的特点)