首页 > 代码库 > OR1200中数据Cache的使用情景分析

OR1200中数据Cache的使用情景分析

以下内容摘自《步步惊芯——软核处理器内部设计分析》一书

 

13.7 DCache使用情景之一——存储指令执行阶段DCache失靶

      存储指令执行阶段DCache失靶这种情景在通写法、回写法策略下有不同的执行过程,在通写法策略下直接写存储器中对应的地址,不操作DCache。在回写法策略下,首先判断目的地址对应的DCache中目录表的line是否被修改,如果是(Dirty1),则将该line写回到内存,然后将目的地址所在的内存块读入DCache,填充到对应line,然后再修改DCache中对应目的地址的数据;如果目的地址对应的line没有被修改(Dirty0),那么直接将目的地址所在的内存块读入DCache,填充到对应line,然后再修改DCache中对应目的地址的数据。如图13.7所示。

 

(具体分析过程参考书中正文)

13.8 DCache使用情景之二——存储指令执行阶段DCache命中

      存储指令执行阶段DCache命中这种情景在通写法、回写法策略下也有不同的执行过程,在通写法策略下,既要写DCache中目录表对应的line,还要写内存中对应的地址,在回写法策略下,只是写DCache中目录表对应的line。如图13.11所示。

(具体分析过程参考书中正文)

 

13.9 DCache使用情景之三——l.mtspr指令写DCache中特殊寄存器

      DCache中有三个特殊寄存器:DCBIRDCBFRDCBWR,其作用在13.3节已说明。从代码分析中可以发现,在通写法策略下,只能使用DCBIRDCBFR,在回写法策略下,可以使用全部三个特殊寄存器。这也是很好理解的,在通写法策略下,DCache目录表中line的标志位Dirty始终为0,所以DCBIRDCBFR的作用是一样,并且没必要存在DCBWR寄存器,所以本章将指令l.mtsprDCache中特殊寄存器这一情景又分为如下四种情景:

      (1)通写法策略下,指令l.mtsprDCBIRDCBFR

      (2)回写法策略下,指令l.mtsprDCBIR

      (3)回写法策略下,指令l.mtsprDCBWR

      (4)回写法策略下,指令l.mtsprDCBFR

(具体分析过程参考书中正文)

 

13.10 DCache分析小结

      DCache有多种使用情景,本章只是分析了其中的三种,但这已经足够我们了解DCache的工作过程了,其余情景的处理过程与此是类似的。笔者个人感觉DCache模块是OR1200中最复杂的模块,因为要考虑到加载、存储指令,还要考虑采用的写策略是通写法、回写法,还要考虑DCache中对应目录项的标志位VDirty的情况,所以很复杂。为此,在本章最后分别给出在通写法、回写法情况下,DCache的工作流程图,如图13.1813.19所示,其中也给出了DC_FSM模块中有限状态机各个状态之间的转换情况。