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

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

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

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

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

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

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

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

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

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

(1)通写法策略下,指令l.mtspr写DCBIR、DCBFR

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

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

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

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

13.10 DCache分析小结

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

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

时间: 2024-10-05 13:57:29

OR1200中数据Cache的使用情景分析的相关文章

OR1200中指令Cache的结构

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 12.3 ICache结构 OR1200中实现ICache的文件有or1200_ic_top.v.or1200_ic_fsm.v.or1200_ic_tag.v.or1200_ic_ram.v.or1200_spram.v,分别实现了ICache模块.IC_FSM模块.IC_TAG模块.IC_RAM模块.单口RAM.在ICache中例化了IC_FSM.IC_TAG.IC_RAM模块,在IC_TAG.IC_RAM模块中例化了单口RAM.如图

OR1200数据Cache运用情景分析

以下摘录<步骤吓得核心--软-core处理器的室内设计与分析>一本书 13.7DCache使用情景之中的一个--存储指令运行阶段DCache失靶 存储指令运行阶段DCache失靶这样的情景在通写法.回写法策略下有不同的运行过程,在通写法策略下直接写存储器中相应的地址,不操作DCache. 在回写法策略下.首先推断目的地址相应的DCache中文件夹表的line是否被改动,假设是(Dirty为1).则将该line写回到内存,然后将目的地址所在的内存块读入DCache,填充到相应line,然后再改动

OR1200数据Cache介绍

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 上一章剖析了ICache模块.本章将剖析DCache模块,首先指出DCache模块相比ICache的特别之处,因为这些不同,所以DCache的分析相对复杂.接着分析了OR1200中DCache的结构,给出了构成DCache的四个模块的关系,将这四个模块分为数据部分.控制部分,介绍了数据部分的工作过程.13.3节说明了DCache中特殊寄存器的作用与格式.13.4节指出使用到DCache的7种情景,13.5节给出一个示例程序,其中涉及了DC

OR1200数据Cache的通写、回写应用举例

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 13.3 DCache中的特殊寄存器 在DCache中定义了三个特殊寄存器:DCBFR. DCBIR.DCBWR,这三个寄存器都是只可写寄存器,即只能使用指令l.mtspr操作这三个特殊寄存器.其中在通写法策略下只能使用DCBIR.DCBFR,在回写法策略下可以使用全部三个特殊寄存器.各特殊寄存器的含义如表13.1所示,格式都如表13.2所示. 当使用指令l.mtspr向数据缓存块刷新寄存器DCBFR中写入地址时,有如下几种情况: 如果该

or1200中IMMU分析

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 1 IMMU结构 OR1200中实现IMMU的文件有or1200_immu_top.v.or1200_immu_tlb.v.or1200_spram.v,其中使用or1200_immu_top.v实现了IMMU模块,使用or1200_immu_tlb.v实现了ITLB模块,or1200_spram.v是一个单口RAM,使用其实现了ITLB的表项.如图10.5所示.本小节将分别介绍IMMU模块与其余模块的连接关系.ITLB结构. 1.1 I

Cache基本知识与OR1200中ICache简介

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 12.1 Cache基本知识 12.1.1 Cache的作用 处理器的设计者一般会声称其设计的处理器一秒钟能做多少次乘法.每条指令只占用xx个时钟周期,可是当我们实际使用处理器时,就会发现并不是那么回事,比如在第11章,从图11.8中可以发现,当程序运行在简单SOPC上时,原先设计在执行阶段只需要一个时钟周期的指令l.movhi却使用了6个时钟周期才完成执行,造成实际情况与设计不符的原因是由于实际情况是一个由多个模块.设备组成的系统,读者

or1200中IMMU分析(再续)

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 ITLB代码分析 ITLB是IMMU中的主要模块,其实现也相对独立.简单.本节对ITLB的代码进行分析.ITLB的输入输出接口如图10.10所示,图中左边是输入接口,右边是输出接口. 因为在ITLB中实现了第2组特殊寄存器,所以有spr_cs.spr_write.spr_addr.spr_dat_i.spr_dat_o等接口,这些接口的含义在分析特殊寄存器类指令的时候已经学习过,应该是非常熟悉的.剩下的输入输出接口含义如下: tlb_en

or1200中IMMU分析(续)

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 2 IMMU中的特殊寄存器 OR1200处理器中的IMMU包含第2组特殊寄存器,如表10.1所示. ITLBW0MRx是指令TLB匹配寄存器,其格式如表10.2所示. 表10.2是OpenRISC 1000规范中的定义,实际在OR1200处理器中只实现了其中一部分字段,包括VPN(Virtual Page Number)的一部分.V(Valid标志位).ITLBW0MRx对应图10.7中MR_RAM的表项,每一个表项对应一个ITLBW0M

典型问题分析4—StaticLinkList中数据元素删除时的效率问题

StaticLinkList中数据元素删除时的效率问题 void destroy(Node* pn) { SNode* space = reinterpret_cast<SNode*>(m_space); SNode* psn = dynamic_cast<SNode*>(pn);//从父类指针,转换为子类指针,直接调用dynameic_cast for(int i=0; i<N; i++) { if(psn == (space + i)) { m_used[i] = 0;