非对齐传输地址和数据计算

114 阅读1分钟

以cache为例,在写命中时只更新memory的一部分,而不是整个64bit数据

image.png

image.png

而在使用cache的scb时,需要先判断trans-beats,再按照single传输进行处理,判断地址是否命中

image.png 需要注意的是,INCR和WRAP的地址是不一样的,即把它们当作single的话每次传输的地址需要注意:

image.png 只有当前的cache-line为valid有效时,tag-timer才会计数,仿问过的cache-line的valid会标记为高

image.png 当valid为高且tag对应时,才会命中

image.png 读不命中可以分为两种情况,第一种是首次访问,即valid为低,cache会通过axi读数据,然后更新一整个cache-line的data_memory,(8个64bit数据),当然,当这两路cache-line已经填满数据,两路valid都为高,tag_timer会计数到nways,这个时候就需要有替换策略

image.png 替换掉计时时间最久的,也就是最早访问的那一路即可

image.png 当cache写命中时候,需要判断哪一路写命中,写命中会使当前这一路的tag-timer计数清零,使得另外一路计时时间增加(需要注意多次写命中使得tag-timer超越界限),因此设置最大值界限

image.png 写不命中时,直接写进下一级主存(写通的特点)

image.png