发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种用于嵌入式系统的二级缓存控制方法及装置,目的在于解决进一步提高嵌入式系统效率的问题。
为达到以上目的,本发明采取的技术方案是:
一种用于嵌入式系统的二级缓存控制方法,其特征在于,其具体步骤如下:
步骤15:客户写请求处理:
步骤15.1,客户写请求、写请求对应信息和要写入片外动态随机存储器14的数据由嵌入式微处理器13按AMBA总线协议转换成AHB接口信号,所述写请求对应信息至少包括地址和步长;
步骤15.2,客户写请求接口模块4接收步骤15.1得到的AHB接口信号;
步骤15.3,客户写请求接口模块4锁存客户写请求、写请求对应信息和要写入片外动态随机存储器14的数据:客户写请求接口模块4将客户写请求、写请求对应信息按先后顺序放入同一个FIFO寄存器,客户写请求接口模块4将要写入片外动态随机存储器14的数据放在两块RAM中,完成锁存操作;
步骤15.4,客户写请求接口模块4向端口仲裁和冲突检测模块6发出写请求,由端口仲裁和冲突检测模块6完成地址相关性检测,所有的客户写请求都需经过地址相关性检测,无冲突后才被执行;
步骤16:客户读请求处理:
步骤16.1,客户读请求和读请求对应信息由嵌入式微处理器13按AMBA总线协议转换成AHB接口信号,所述读请求对应信息至少包括客户读地址;
步骤16.2,客户读请求接口和产生预读模块5接收步骤16.1得到的AHB接口信号;
步骤16.3,在客户读请求能被立即响应的情况下,不锁存客户读请求,向端口仲裁和冲突检测模块6发出读请求;
步骤16.4,若有地址相关性的数据竞争,客户读请求不能被立即响应,则锁存客户读请求和读请求对应信息直到该读请求对应地址的相关性的数据竞争消除后,才响应该客户读请求;所述地址相关性的数据竞争至少包括读后读RAR和先写后读RAW;
步骤17:当步骤16中有地址相关性的数据竞争的读请求被响应后,客户读请求接口和产生预读模块5产生预读操作,向端口仲裁和冲突检测模块6发出预读请求;
步骤18:端口仲裁和冲突检测模块6接收步骤15、步骤16和步骤17输出的写请求和/或读请求和/或预读请求后,根据优先级机制和地址相关性准则,仲裁出一个请求到下游模块,并给出响应到对应的上游模块,所述下游模块包括探测结果和更新控制模块10和写访存模块11,所述上游模块包括客户写请求接口模块4和客户读请求接口和产生预读模块5;
所采用的优先级机制为:写请求>读请求>预读请求,
所述端口仲裁和冲突检测模块6提供了相关性的消除机制,端口仲裁和冲突检测模块6将接收到请求根据优先级机制和地址相关性准则,挑选出一个请求,发出读TAG探测,将仲裁出的请求给到探测结果和更新控制模块10;
所述端口仲裁和冲突检测模块6有三个地址状态寄存器表:写请求地址状态寄存器表、读请求地址状态寄存器表、预读请求地址状态寄存器表,这三个表用于相关性检测和相关性消除;
步骤18.1,若为写请求,将写请求对应地址与读请求地址状态寄存器表、写请求地址状态寄存器表和预读请求地址状态寄存器表中有效地址进行比较,若与其中一个地址相等,则有地址相关性;若都不等,则无冲突,转步骤18.2;
步骤18.2,无冲突时,给出客户写请求接口模块4响应,同时给标记随机存储器7发读TAG探测使能,并将该写地址放入写请求地址状态寄存器表,将该地址对应寄存器有效位置高,直到该地址对应数据写入片外动态随机存储器14才拉低有效位;若与其中某一地址相等,则有冲突,要等对应该地址的有效位变低后才发该地址的读TAG探测使能,所述标记随机存储器采用两组相联的缓存结构,由两块1R1W的RAM组成,用于存储标记,即TAG值;
步骤18.3,若为读请求或预读请求,请求对应地址需与写请求地址状态寄存器表和预读请求地址状态寄存器表中的有效地址进行比较,看是否有地址相关性的数据竞争,所述地址相关性的数据竞争至少包括读后读RAR和先写后读RAW;
若有地址相关性的数据竞争,则等待之前地址相关性的请求操作完成,消除地址相关性的数据竞争后,才将请求转出去;
步骤19:如果步骤18仲裁出读请求或预读请求,则执行以下步骤:
探测结果和更新控制模块10接受端口仲裁和冲突检测模块6给出的请求和来自标记随机存储器TAG RAM的两个TAG值,将来自标记随机存储器的两个TAG值与请求地址中的TAG值比较,两个来自标记随机存储器的TAG值中有一个与读请求地址中的TAG值相等,则判断为读命中,若两个来自标记随机存储器的TAG值中没有一个与读请求地址中的TAG值相等,则判断为读不命中;
若相等判断为读命中,即请求地址要操作的数据就在存放数据的数据随机存储器DATA RAM中,若读命中,转至步骤21;
若不等则判断为读不命中,即请求地址要操作的数据不在数据随机存储器中,需操作片外动态随机存储器14,若读不命中,转至步骤22;所述数据随机存储器采用两组相联的缓存结构,由两块1R1W的RAM组成,用于存储数据;标记随机存储器和数据随机存储器构成二级缓存;
步骤20:如果步骤18仲裁出写请求,则执行以下步骤:
探测结果和更新控制模块10接受端口仲裁和冲突检测模块6给出的请求和来自标记随机存储器的两个TAG值,将来自标记随机存储器的两个TAG值与写请求地址中的TAG值比较,两个来自标记随机存储器的TAG值中有一个与写请求地址中的TAG值相等,则判断为写命中,若两个来自标记随机存储器的TAG值中没有一个与写请求地址中的TAG值相等,则判断为写不命中;
所述探测结果和更新控制模块10有一个寄存器,用于存放命中的写请求和写请求对应信息;
若相等判断为写命中,若写命中,转至步骤23;
若不等则判断为写不命中,若写不命中,转至步骤24;
步骤21:判断为读命中后,直接从数据随机存储器中读取客户所需数据返回给嵌入式微处理器13;即:直接读取数据随机存储器中的数据返回给嵌入式微处理器13;
步骤22:判断为读不命中后,需将客户读请求转化为外部存储区控制接口上的读请求信号,通过外部存储区控制接口从片外动态随机存储器14读回整块数据,在探测结果和更新控制模块10控制下将相应数据回填写入数据随机存储器中,同时给出客户所需数据返回给嵌入式微处理器13;
步骤23:判断为写命中后,根据探测结果和更新控制模块10中寄存器锁存的写请求对应信息,从客户写请求接口模块4中的两块数据RAM中的一块内取出对应数据直接写数据随机存储器,同时写访存模块11根据写请求对应信息,从客户写请求接口模块4中的另外一块数据RAM取出对应数据,转化为符合外部存储区控制接口的客户写请求信号和数据,写入片外动态随机存储器14;不管是否写命中,所有的写请求对应的数据都要写入片外动态随机存储器14;
步骤24:判断为写不命中后,写访存模块11将写请求对应信息和要写入片外动态随机存储器14的数据转化为符合外部存储区控制接口的客户写请求和数据,通过外部存储区控制接口写入片外动态随机存储器14。
在上述技术方案的基础上,步骤15.4中所述客户写请求的地址相关性检测的具体步骤如下:端口仲裁和冲突检测模块6将待执行的写请求对应的地址,与之前已发但读写操作未完成的地址进行比对,若有相等的情况,则认为地址相关,需等待之前地址相关性的请求对应的地址的读写操作完成后,才可将客户写请求、写请求对应信息转给探测结果和更新控制模块10和写访存模块11,此时,要写入片外动态随机存储器14的数据不跟随客户写请求、写请求对应信息往后走,而是存储在客户写请求接口模块4中。
在上述技术方案的基础上,步骤24具体操作如下:写访存模块11根据写请求对应信息把要写入片外动态随机存储器14的数据按步长和地址写入片外动态随机存储器14的对应地址中。
在上述技术方案的基础上,所述AHB接口信号是AMBA2.0的一个子集,只有某AHB端口被响应后才能切换到下一个AHB端口。
在上述技术方案的基础上,同一标记随机存储器地址对应两块构成标记随机存储器的RAM,但构成标记随机存储器的两块RAM中存放的TAG值不等,同一数据随机存储器地址对应两块构成数据随机存储器的RAM,但构成数据随机存储器的两块RAM中存放的数据也不同,以减少不命中率,
所述数据随机存储器地址格式如下:
组号(12bit) |
块内首地址(2bit,以字为单位) |
所述标记随机存储器地址格式如下:
所述组成标记随机存储器的RAM的内容分配是:
TAG(9bit) |
Valid(4bit,每位对应BYTE) |
所述AHB接口信号中包含的地址信息格式如下:
TAG(9bit) |
组号(12bit) |
块内首地址(2bit,以字为单位) |
地址内均包含组号信息,地址可唯一确定组号,但同一组号可能对应不同的地址。
在上述技术方案的基础上,通过寄存器配置,给定客户读地址与预读地址相差阈值参数pf_num_limit的取值,给定该阈值后,当客户读地址与预读地址相差超过阈值,则预读动作以当前客户读地址为基础进行预读,即停止向前预读,以免从片外动态随机存储器14超前预读的数据转头将先前预读的数据覆盖,造成客户读不命中的结果。
在上述技术方案的基础上,客户读请求接口和产生预读模块5根据客户读请求做预读动作,预读回客户将来要读的数据,客户读请求接口和产生预读模块5结合嵌入式系统读取数据时地址具局部性和连续性的特点,设计连续命中的预读地址图案,
读地址连续是指TAG值相等且组号相差为4或4以内,
预读地址图案通过以下步骤生成:
将当前客户读请求对应地址与上一轮客户读请求对应地址进行比较,TAG值相等且组号相差在4以内,且当前客户读请求对应地址与上轮发出的最后一个预读地址相差不超过阈值pf_num_limit,则认为地址关联;
由客户读请求启动一轮预读,若本轮客户读请求地址与上轮客户读请求地址关联,预读地址在上轮发出的最后一个预读地址基础上加4,作为新一轮预读首地址;若地址不关联,则预读地址以本轮读客户地址为基础加4,作为新一轮预读首地址。
在上述技术方案的基础上,某一时间段被频繁访问的数据,优先停留在二级缓存中:采用了LRU替换原则,其具体替换步骤如下:
对应每个标记随机存储器地址都有一个LRU位,当LRU为0,则将从片外动态随机存储器14取回的数据回填入数据随机存储器中的标号为1的RAM;
若LRU为1,则将从片外动态随机存储器14取回的数据回填入数据随机存储器中的标号为0的RAM;
每次访问标记随机存储器中的某行,如果命中,LRU值修改为命中行。
在上述技术方案的基础上,端口仲裁和冲突检测模块6提供了四种类型相关性的消除机制:读后读RAR、写后写WAW、先写后读相关RAW、先读后写相关WAR性消除策略。
一种实现上述用于嵌入式系统的二级缓存控制方法的装置,其特征在于:二级缓存及二级缓存控制装置12通过AMBA总线与嵌入式微处理器13连接,接受来自嵌入式微处理器13的读、写请求指令;
二级缓存及二级缓存控制装置12根据读、写请求指令对应地址从片外动态随机存储器14中读取或写入数据;
所述二级缓存及二级缓存控制装置12包括:
客户写请求接口模块4,接受嵌入式微处理器13发来的写请求、写请求对应信息和要写入片外动态随机存储器14的数据,其输出送至端口仲裁和冲突检测模块6,
客户读请求接口和产生预读模块5,接受嵌入式微处理器13发来的读请求和读请求对应信息,其输出送至端口仲裁和冲突检测模块6,
端口仲裁和冲突检测模块6,分别和标记随机存储器7、数据随机存储器8、探测结果和更新控制模块10、写访存模块11连接,
用于存储TAG值的标记随机存储器7,接收经LRU控制替换模块9发来的命中指示,接收经探测结果和更新控制模块10发来的数据作为标记随机存储器RAM的内容,所述标记随机存储器采用两组相联的缓存结构,由两块1R1W的RAM组成,
用于存储数据的数据随机存储器8,接收经LRU控制替换模块9发来的命中指示,接收经探测结果和更新控制模块10发来的数据,所述数据随机存储器采用两组相联的缓存结构,由两块1R1W的RAM组成,
LRU控制替换模块9,接收经探测结果和更新控制模块10发来的数据,
探测结果和更新控制模块10,与片外动态随机存储器14连接,
写访存模块11,与片外动态随机存储器14连接,
标记随机存储器和数据随机存储器构成二级缓存;
客户写请求接口模块4内设有两块RAM,两块RAM中存储的数据一致,一块RAM中的部分数据写入数据随机存储器,另一块RAM中的数据要写入片外动态随机存储器14;
客户写请求接口模块4内还设有一个FIFO寄存器;
所述探测结果和更新控制模块10有一个用于存放命中的写请求和写请求对应信息的寄存器。
本发明所述的用于嵌入式系统的二级缓存控制方法及装置,在嵌入式微处理器的指令地址连续时,将未来要读的数据通过预读操作,提前把数据从片外动态随机存储器中预读回来,除去数据流的首延迟,后续数据流中间无延迟,大大提高了嵌入式系统的效率并降低成本。其具有以下特色和优点:
1、所述嵌入式系统,从片外动态随机存储器中读取数据时地址具局部性和连续性;
2、嵌入式微处理器与二级缓存间的接口信号是AMBA2.0的一个子集;
3、给定客户读地址与预读地址相差阈值,避免预读动作超前太多导致客户读不命中;
4、构成二级缓存的标记随机存储器(TAG RAM)和数据随机存储器(DATA RAM)均采用两组相联的缓存结构,以提高命中率;
5、由客户读请求启动预读,预读回客户将来要读的数据;
6、提供了四种类型地址相关性的消除机制;
7、被客户频繁访问的数据,优先停留在二级缓存中。
具体实施方式
以下结合附图对本发明作进一步详细说明。
图1为嵌入式系统的存储子系统结构框图。如图1所示,二级缓存2与嵌入式微处理器1之间通过AMBA(高级微控制器总线架构)总线连接,二级缓存2与片外动态随机存储器(可简称为外存)3之间通过外部存储区控制接口连接。所述AMBA总线和外部存储区控制接口均可采用现有技术实现。
本发明所述的用于嵌入式系统的二级缓存控制方法,工作流程图如图3所示,其具体步骤如下:
步骤15:客户写请求处理:
步骤15.1,客户写请求、写请求对应信息和要写入片外动态随机存储器14的数据由嵌入式微处理器13按AMBA总线协议转换成AHB接口信号,所述写请求对应信息至少包括地址和步长;
步骤15.2,客户写请求接口模块4接收步骤15.1得到的AHB接口信号;
步骤15.3,客户写请求接口模块4锁存客户写请求、写请求对应信息和要写入片外动态随机存储器14的数据:客户写请求接口模块4将客户写请求、写请求对应信息按先后顺序放入同一个FIFO(先进先出)寄存器,客户写请求接口模块4将要写入片外动态随机存储器14的数据放在两块RAM中,完成锁存操作;
客户写请求、写请求对应信息和要写入片外动态随机存储器14的数据放在不同的地方的:客户写请求、写请求对应信息放在FIFO寄存器中,客户写请求接口模块4内设有两块RAM,数据存两份,均放在两块RAM中;所述FIFO(先进先出)寄存器可设置在客户写请求接口模块4内,亦可单独设置;
步骤15.4,客户写请求接口模块4向端口仲裁和冲突检测模块6发出写请求,由端口仲裁和冲突检测模块6完成地址相关性检测,所有的客户写请求都需经过地址相关性检测,无冲突后才被执行;
所述客户写请求的地址相关性检测的具体步骤如下:端口仲裁和冲突检测模块6将待执行的写请求对应的地址(所述待执行的写请求对应的地址来自写请求对应信息内),与之前已发但读写操作未完成的地址进行比对,若有相等的情况,则认为地址相关,需等待之前地址相关性的请求(这里的请求包括所有的已发出但未被响应的写请求、读请求和预读请求)对应的地址的读写操作完成后,才可将客户写请求、写请求对应信息转给探测结果和更新控制模块10和写访存模块11,此时,要写入片外动态随机存储器14的数据不跟随客户写请求、写请求对应信息往后走,而是存储在客户写请求接口模块4中:在客户写请求接口模块4中,有两块RAM(随机存储器)将要写入片外动态随机存储器14的数据存储起来,客户写请求接口模块4中的两块RAM中存储的数据一致,有写命中时探测结果和更新控制模块10才根据对应的客户写请求和写请求对应信息到其中一块RAM中取相应的数据,写访存模块11也会根据客户写请求和写请求对应信息到其中另一块RAM中取相应的数据;
步骤16:客户读请求处理:
步骤16.1,客户读请求和读请求对应信息由嵌入式微处理器13按AMBA总线协议转换成AHB接口信号,所述读请求对应信息至少包括客户读地址;
步骤16.2,客户读请求接口和产生预读模块5接收步骤16.1得到的AHB接口信号;
步骤16.3,在客户读请求能被立即响应的情况下,不锁存客户读请求,向端口仲裁和冲突检测模块6发出读请求;
步骤16.4,若有地址相关性的数据竞争,客户读请求不能被立即响应,则锁存客户读请求和读请求对应信息直到该读请求对应地址的相关性的数据竞争消除后,才响应该客户读请求;所述地址相关性的数据竞争至少包括读后读RAR和先写后读RAW;
步骤17:当步骤16中有地址相关性的数据竞争的读请求被响应后,客户读请求接口和产生预读模块5产生预读操作,向端口仲裁和冲突检测模块6发出预读请求;预读是为了保证客户读地址连续的读请求能连续命中;
步骤18:端口仲裁和冲突检测模块6接收步骤15、步骤16和步骤17输出的写请求和/或读请求和/或预读请求后,根据优先级机制和地址相关性准则,仲裁出一个请求到下游模块,并给出响应到对应的上游模块,所述下游模块包括探测结果和更新控制模块10和写访存模块11,所述上游模块包括客户写请求接口模块4和客户读请求接口和产生预读模块5;
所采用的优先级机制为:写请求>读请求>预读请求,
所述端口仲裁和冲突检测模块6提供了相关性的消除机制,端口仲裁和冲突检测模块6将接收到请求根据优先级机制(优先级原则)和地址相关性准则(地址相关性检测),挑选出一个请求,发出读TAG探测(标记探测),将仲裁出的请求给到探测结果和更新控制模块10;
所述端口仲裁和冲突检测模块6有三个地址状态寄存器表:写请求地址状态寄存器表、读请求地址状态寄存器表、预读请求地址状态寄存器表,这三个表用于相关性检测和相关性消除;
步骤18.1,若为写请求,将写请求对应地址与读请求地址状态寄存器表、写请求地址状态寄存器表和预读请求地址状态寄存器表中有效地址进行比较,若与其中一个地址相等,则有地址相关性;若都不等,则无冲突,转步骤18.2;
步骤18.2,无冲突时,给出客户写请求接口模块4响应,同时给标记随机存储器7发读TAG探测使能,并将该写地址放入写请求地址状态寄存器表,将该地址对应寄存器有效位置高,直到该地址对应数据写入片外动态随机存储器14才拉低有效位;若与其中某一地址相等,则有冲突,要等对应该地址的有效位变低后才发该地址的读TAG探测使能,所述标记随机存储器采用两组相联的缓存结构,由两块1R1W的RAM组成,用于存储标记(TAG值);
步骤18.3,若为读请求或预读请求,请求对应地址需与写请求地址状态寄存器表和预读请求地址状态寄存器表中的有效地址进行比较,看是否有地址相关性的数据竞争,所述地址相关性的数据竞争至少包括读后读RAR和先写后读RAW;
若有地址相关性的数据竞争,则等待之前地址相关性的请求操作完成,消除地址相关性的数据竞争后,才将请求转出去;
步骤19:如果步骤18仲裁出读请求或预读请求,则执行以下步骤:
探测结果和更新控制模块10接受端口仲裁和冲突检测模块6给出的请求和来自标记随机存储器(TAG RAM)的两个TAG值,将来自标记随机存储器的两个TAG值与请求地址中的TAG值比较,两个来自标记随机存储器的TAG值中有一个与读请求地址中的TAG值相等,则判断为读命中,若两个来自标记随机存储器的TAG值中没有一个与读请求地址中的TAG值相等,则判断为读不命中;
若相等判断为读命中,即请求地址要操作的数据就在存放数据的数据随机存储器(DATA RAM)中,若读命中,转至步骤21;
若不等则判断为读不命中,即请求地址要操作的数据不在数据随机存储器中,需操作片外动态随机存储器14,若读不命中,转至步骤22;所述数据随机存储器采用两组相联的缓存结构,由两块1R1W的RAM组成,用于存储数据;标记随机存储器(TAG RAM)和数据随机存储器(DATA RAM)构成二级缓存;
步骤20:如果步骤18仲裁出写请求,则执行以下步骤:
探测结果和更新控制模块10接受端口仲裁和冲突检测模块6给出的请求和来自标记随机存储器的两个TAG值,将来自标记随机存储器的两个TAG值与写请求地址中的TAG值比较,两个来自标记随机存储器的TAG值中有一个与写请求地址中的TAG值相等,则判断为写命中,若两个来自标记随机存储器的TAG值中没有一个与写请求地址中的TAG值相等,则判断为写不命中;
所述探测结果和更新控制模块10有一个寄存器,用于存放命中的写请求和写请求对应信息;若读不命中,从片外动态随机存储器14取回数据需在该模块控制下将相应数据回填写入数据随机存储器中,而写命中也要操作数据随机存储器,数据随机存储器由两块1R1W的RAM组成,共用写口,需避开冲突,故采用寄存器锁存写命中信息(存放命中的写请求和写请求对应信息);
若相等判断为写命中,若写命中,转至步骤23;
若不等则判断为写不命中,若写不命中,转至步骤24;
步骤21:判断为读命中后,直接从数据随机存储器中读取客户所需数据返回给嵌入式微处理器13;即:直接读取数据随机存储器中的数据返回给嵌入式微处理器13;
步骤22:判断为读不命中后,需将客户读请求转化为外部存储区控制接口上的读请求信号,通过外部存储区控制接口从片外动态随机存储器14读回整块数据,在探测结果和更新控制模块10控制下将相应数据回填写入数据随机存储器中,同时给出客户所需数据返回给嵌入式微处理器13;
步骤23:判断为写命中后,根据探测结果和更新控制模块10中寄存器锁存的写请求对应信息,从客户写请求接口模块4中的两块数据RAM中的一块内取出对应数据直接写(更新)数据随机存储器,同时写访存模块11根据写请求对应信息,从客户写请求接口模块4中的另外一块数据RAM取出对应数据,转化为符合外部存储区控制接口的客户写请求信号和数据,写入片外动态随机存储器14;不管是否写命中,所有的写请求对应的数据都要写入片外动态随机存储器14;
步骤24:判断为写不命中后,写访存模块11将写请求对应信息和要写入片外动态随机存储器14的数据转化为符合外部存储区控制接口的客户写请求和数据,通过外部存储区控制接口写入片外动态随机存储器14,具体操作如下:
写访存模块11根据写请求对应信息把要写入片外动态随机存储器14的数据按步长和地址写入片外动态随机存储器14的对应地址中。
在上述技术方案的基础上,所述AHB接口信号是AMBA2.0的一个子集,只有某AHB端口被响应后才能切换到下一个AHB端口。
在上述技术方案的基础上,所述构成二级缓存的标记随机存储器(TAG RAM)和数据随机存储器(DATA RAM)均采用两组相联的缓存结构,即:由两块1R1W的RAM组成标记随机存储器存放TAG值,两块1R1W的RAM组成数据随机存储器存放数据;
同一标记随机存储器地址对应两块构成标记随机存储器的RAM,但构成标记随机存储器的两块RAM中存放的TAG值不等,同一数据随机存储器地址对应两块构成数据随机存储器的RAM,但构成数据随机存储器的两块RAM中存放的数据也不同,以减少不命中率,
所述数据随机存储器地址格式如下:
组号(12bit) |
块内首地址(2bit,以字为单位) |
所述标记随机存储器地址格式如下:
所述组成标记随机存储器的RAM的内容分配是:
TAG(9bit) |
Valid(4bit,每位对应BYTE) |
所述AHB接口信号中包含的地址信息格式如下:
TAG(9bit) |
组号(12bit) |
块内首地址(2bit,以字为单位) |
地址内均包含组号信息,地址可唯一确定组号,但同一组号可能对应不同的地址。其中,标记存储器的地址就是组号,12位的组合加上9位TAG值,相当于是AHB接口地址了(没有块内首地址,只需看整个数据块是否在DATA RAM中即可,所以不需块地址),就能确定一个数据块是否在DATA RAM中了。
在上述技术方案的基础上,通过寄存器配置,给定客户读地址与预读地址相差阈值参数pf_num_limit的取值,该阈值避免因预读地址超过客户读地址太多,导致超前所做的预读动作无效;给定该阈值后,当客户读地址与预读地址相差超过阈值,则预读动作以当前客户读地址为基础进行预读,即停止向前预读,以免从片外动态随机存储器14超前预读的数据转头将先前预读的数据覆盖,造成客户读不命中的结果。
在上述技术方案的基础上,客户读请求接口和产生预读模块5根据客户读请求做预读动作,预读回客户将来要读的数据,客户读请求接口和产生预读模块5结合嵌入式系统读取数据时地址具局部性和连续性的特点,设计连续命中的预读地址图案,预读主要是保证客户读地址连续的读请求能连续命中,读地址连续是指TAG值相等且组号相差为4或4以内,即:在TAG值相等基础上,组号相差大于等于0且小于等于4即视为客户读地址连续,预读地址图案通过以下步骤生成:
将当前客户读请求对应地址与上一轮客户读请求对应地址进行比较,TAG值相等且组号相差在4以内,且当前客户读请求对应地址与上轮发出的最后一个预读地址相差不超过阈值pf_num_limit,则认为地址关联;
由客户读请求启动一轮预读,若本轮客户读请求地址与上轮客户读请求地址关联,预读地址在上轮发出的最后一个预读地址基础上加4,作为新一轮预读首地址;若地址不关联,则预读地址以本轮读客户地址为基础加4,作为新一轮预读首地址。
在上述技术方案的基础上,某一时间段被频繁访问的数据,优先停留在二级缓存中:采用了LRU替换原则,由于构成二级缓存的标记随机存储器(TAG RAM)和数据随机存储器(DATA RAM)均采用两组相联的缓存结构,当读不命中需从片外动态随机存储器14取数据回填数据随机存储器时,由于数据随机存储器包括有两块RAM,替换哪块数据不确定,如果不采用控制策略,可能被替换出去的数据正好是频繁被访问的数据,则导致后续不命中,降低了系统效率;
所述LRU替换原则是最近最少使用的条目被替换出去,其具体替换步骤如下:
对应每个标记随机存储器地址都有一个LRU位,当LRU为0,则将从片外动态随机存储器14取回的数据回填入数据随机存储器中的标号为1的RAM;
若LRU为1,则将从片外动态随机存储器14取回的数据回填入数据随机存储器中的标号为0的RAM;
每次访问标记随机存储器中的某行,如果命中,LRU值修改为命中行;
LRU控制中采用1R1W的RAM结构,这样的替换原则,保证了频繁用到的数据所在的RAM一直不被替换出去,提高命中率。
在上述技术方案的基础上,端口仲裁和冲突检测模块6提供了四种类型相关性的消除机制:读后读RAR(Read After Read)、写后写WAW(Write After Write)、先写后读相关RAW(Read After Write)、先读后写相关WAR(Write After Read)性消除策略;各种相关性的类别是根据客户读写请求和预读操作二级缓存(指的是整个技术方案,整个技术方案实现的就是个二级缓存的功能,在二级缓存中用两块数据随机存储器存储数据,用两块标记随机存储器存储标记)的先后次序不同,出现的竞争:
(1)读后读RAR(Read After Read):先后读同一地址的数据本不会引起数据冲突;出现竞争的步骤如下:
A0、对于两组相连的缓存结构,若先后读(先一次预读,后一次客户读)同一地址都是不命中,则都会从片外动态随机存储器14侧取对应数据,回填到二级缓存同一地址的两块不同RAM中,即标记随机存储器和数据随机存储器同一地址对应的TAG值和数据都相同;
A1、随后若再发生该地址的一次写操作,此时必写命中,随便写入哪块RAM都可以;
A2、随后再发生该地址的读操作,由于两块标记随机存储器的TAG值相等,能否读出写入的新数据不确定,而且同一地址两块RAM存放相同数据也是一种资源浪费;
读后读相关性的解决:读后读经端口仲裁和冲突检测模块挑选并发出一个读请求TAG探测后,该请求地址放入端口仲裁和冲突检测模块中的读地址比较队列寄存器,并将对应有效位拉高;后面再来读请求时,是否发出本轮读请求的读TAG探测,先与读地址比较寄存器中有效位为高的地址进行比较,都不等时才发出TAG探测;若相等,则等待之前同地址读操作完成后,即有效位拉低,才发出本轮读请求的读TAG探测;因为之前同地址读操作完成,表示已经从片外动态随机存储器14侧取回对应数据,并将对应TAG值和数据分别回填入标记随机存储器和数据随机存储器;本轮读请求的读TAG探测结果肯定为命中,则直接从数据随机存储器中读取数据,而不会从片外动态随机存储器14侧取数据;则避免了同地址先后从片外动态随机存储器14侧读取数据,也不会造成资源浪费;
(2)写后写WAW(Write After Write):先后写同一地址的数据本不会引起数据冲突;出现竞争的步骤如下:
B0、反复写同一地址的不同字节;
B1、有该地址的读请求;
若该地址写不命中,则需等该地址所有字节写请求写入片外存储之后,由片外的回馈信号才可拉低端口仲裁和冲突检测模块中的写地址比较队列寄存器中该地址的有效位;若写命中,为提高效率,此时的写命中信息也会拉低该地址对应的有效位,同时,片外的回馈信号也会拉低该地址对应的有效位,导致错误的拉低了该地址的有效位。再有该地址的读请求信号,错误发出读请求TAG探测,可能写命中的数据还未写入数据随机存储器,则读出的数据肯定不对。
WAW数据竞争的解决:同地址的写请求,等上一次写做完之后,下一个同地址不同字节的写才可做写请求TAG探测。同时,端口仲裁和冲突检测模块中的写地址比较队列寄存器中地址的有效位都由片外的回馈信号拉低,这样也不会出现错误的拉低有效位的情况。
(3)先写后读相关RAW(Read After Write):写请求和读请求操作同一地址,写请求还未将数据写入片外动态随机存储器14侧,读请求就读出一个不正确的旧数据,这是一种最普遍的数据竞争;
RAW数据竞争的解决:同地址的读请求等写请求做完后,才发出读请求的读TAG探测;写请求做完分两种情况:一种写不命中,即写请求的读TAG探测结果为写不命中,写请求对应数据需写入片外动态随机存储器14后,才算写请求做完;第二种情况写命中,即写请求的读TAG探测结果为写命中,写请求对应数据既写入数据随机存储器也写入片外动态随机存储器14,数据写入数据随机存储器就认为写请求做完,不会等到数据写入片外动态随机存储器14,减少等待时间,提高效率;等同地址的写请求做完后才发读请求的读TAG探测的操作,对整个系统效率有一定程度的影响,但保证了正确性;
(4)先读后写相关WAR(Write After Read):在二级缓存(L2CACHE)中用于存储数据的数据随机存储器采用1R1W RAM,读请求命中后可直接读取数据,而同一地址后来的写请求(同地址的读请求命中,则后来的写请求必为写命中),需进探测结果和更新控制模块的写命中队列来避开数据回填的冲突,将后来的写请求操作更加推迟,即不会出现先发的应读旧数据的读请求,却读出后发的写请求的新数据;但设计中采用了预读操作,即先发的读请求产生的预读请求可能会跟后来的写请求的地址相等;出现如下问题:若先发的读请求产生的预读请求为不命中,需向片外动态随机存储器14侧取数据,数据未写入数据随机存储器,还在返回途中时又有同地址的写请求,因为之前的该地址的预读不命中,则该地址的写请求TAG探测也为不命中;
设计采用“写通,写MISS不分配”模式,“写通”就是写命中的数据既写二级缓存同时也写片外动态随机存储器14,“不分配”表示写MISS的数据写入片外动态随机存储器14后不会再从片外动态随机存储器14返回二级缓存;写通模式意味写方向无真正意义上的二级缓存;故写不命中时,直接将数据写入片外动态随机存储器14,而同一地址的预读请求已将数据从片外动态随机存储器14中取出,准备回填入数据随机存储器;这就会出现对于同一地址,片外动态随机存储器14和二级缓存中数据却不一致的问题;若后续再有该地址的读请求,则读命中,但读出数据不对;
WAR数据竞争的解决:把同地址的读、预读和写请求串行做;即发出预读操作后,等该地址预读操作完成,才做写请求;预读操作完成也分两种情况:一种情况是预读请求的读TAG探测结果为命中,则就认为预读操作完成,这种情况也不会导致上述的问题;主要是第二种情况,预读请求的读TAG探测结果为不命中,则需等待从片外动态随机存储器14取回响应数据,并将该地址对应的TAG值和数据分别回填入标记随机存储器和数据随机存储器,回填完之后,才认为预读操作完成;此时,由于对应地址的TAG和数据回填完成,发写请求的读TAG探测时,肯定写命中,则采用写通模式,将写请求对应数据写二级缓存同时也写片外动态随机存储器14;若后续再有该地址的读请求,则读命中,读出数据亦正确。
图2为本发明所述的用于嵌入式系统的二级缓存控制装置的结构示意图,如图1、2所示,二级缓存及二级缓存控制装置12通过AMBA总线与嵌入式微处理器13连接,接受来自嵌入式微处理器13的读、写请求指令;
二级缓存及二级缓存控制装置12根据读、写请求指令对应地址从片外动态随机存储器14中读取或写入数据;
所述二级缓存及二级缓存控制装置12包括:
客户写请求接口模块4,接受嵌入式微处理器13发来的写请求、写请求对应信息和要写入片外动态随机存储器14的数据,其输出送至端口仲裁和冲突检测模块6,
客户读请求接口和产生预读模块5,接受嵌入式微处理器13发来的读请求和读请求对应信息,其输出送至端口仲裁和冲突检测模块6,
端口仲裁和冲突检测模块6,分别和标记随机存储器(TAG RAM)7、数据随机存储器(DATA RAM)8、探测结果和更新控制模块10、写访存模块11连接,
用于存储TAG值的标记随机存储器(TAG RAM)7,接收经LRU(最近最少使用)控制替换模块9发来的命中指示,接收经探测结果和更新控制模块10发来的数据作为标记随机存储器RAM的内容,所述标记随机存储器采用两组相联的缓存结构,由两块1R1W的RAM组成,
用于存储数据的数据随机存储器(DATA RAM)8,接收经LRU(最近最少使用)控制替换模块9发来的命中指示,接收经探测结果和更新控制模块10发来的数据,所述数据随机存储器采用两组相联的缓存结构,由两块1R1W的RAM组成,
LRU(最近最少使用)控制替换模块9,接收经探测结果和更新控制模块10发来的数据,
探测结果和更新控制模块10,与片外动态随机存储器14连接,
写访存模块11,与片外动态随机存储器14连接,
标记随机存储器(TAG RAM)和数据随机存储器(DATA RAM)构成二级缓存。
在上述技术方案的基础上,客户写请求接口模块4内设有两块RAM,两块RAM中存储的数据一致,一块RAM中的部分数据(即判断为写命中)写入数据随机存储器(DATA RAM),另一块RAM中的数据要写入片外动态随机存储器14。
在上述技术方案的基础上,客户写请求接口模块4内还设有一个FIFO(先进先出)寄存器。
在上述技术方案的基础上,所述探测结果和更新控制模块10有一个用于存放命中的写请求和写请求对应信息的寄存器。
在上述技术方案的基础上,二级缓存与片外动态随机存储器14容量比为4∶1000。以片外动态随机存储器14为例:如片外动态随机存储器14容量256Mb(16bit位宽),则选用大小为128KB的二级缓存,由8块1R1W宽度为8位深度为16384的RAM组成二级缓存。