一种基于指令流和访存模式学习的缓存替换系统及方法技术方案

技术编号:32135073 阅读:44 留言:0更新日期:2022-01-29 19:42
本发明专利技术提供一种基于指令流和访存模式学习的缓存替换系统,包括分支预测模块,其对指令流进行预测并写入取指地址队列;访存指令记录模块,其依次记录已经提交的访存指令的信息并写入到其访存指令缓冲中;同时查询得到访存指令序列;访存模式学习模块,其将访存指令序列记录在其访存历史缓冲中,据此对访存模式进行学习,随后预测访存指令的访存物理地址并写入访存地址队列;缓存替换决策模块,其接收缓存替换候选项的物理地址并用其检索取指地址队列或访存地址队列,根据得到的重用距离选择一个缓存替换候选项作为踢出项反馈给一级缓存。本发明专利技术还提供相应的方法。本发明专利技术的缓存替换系统能避免乱序执行和缓存预取的干扰,提高访存序列预测的准确性。访存序列预测的准确性。访存序列预测的准确性。

【技术实现步骤摘要】
一种基于指令流和访存模式学习的缓存替换系统及方法


[0001]本专利技术涉及计算机体系结构
,尤其涉及一种基于指令流和访存模式学习的缓存替换系统及方法。

技术介绍

[0002]缓存是现代处理器中的一种重要机制,将常用数据从内存拷贝到缓存中,后续数据访问可以直接从缓存读取,从而减少慢速DRAM内存的访问次数,提升处理器性能。缓存的容量是有限的,在实际使用中发生缓存内容的替换是不可避免的,缓存的性能受缓存替换策略的影响很大。
[0003]缓存访问行为是复杂的,处理器中缓存系统接收到的访存序列会受到处理器乱序执行和缓存预取机制的干扰,这进一步增大了在缓存系统中预测访存行为的难度。
[0004]具体来说,传统的缓存替换方法依据缓存系统接收到的访存序列学习访存行为模式。但是在缓存系统中接收到的访存序列是若干条访存指令交织在一起的组合结果,不同指令间的执行次序以及每条指令的行为模式都将对缓存系统最终接收到的访存序列产生影响。在这样复杂多变的访存序列基础上学习访存行为模式是困难的,要面对很大的不确定性。
[0005]现有的缓存替本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于指令流和访存模式学习的缓存替换系统,其特征在于,包括分支预测模块、取指地址队列、访存指令记录模块、访存模式学习模块、访存地址队列和缓存替换决策模块;所述分支预测模块设置为采用提前预测技术,对目标程序的指令流进行预测并将预测结果写入取指地址队列中;所述访存指令记录模块设置为依次记录已经提交的访存指令的信息,将这些访存指令的信息写入到其访存指令缓冲中;同时,每当取指地址队列写入新的条目项时,用该条目项所对应的指令块的起始地址查询所述访存指令缓冲,以通过查询尝试得到访存指令序列并将其输出至访存指令学习模块和访存地址队列;所述访存模式学习模块设置为将访存指令序列记录在其访存历史缓冲中,根据访存历史缓冲中保存的历史信息对访存指令的访存模式进行学习,并根据学习到的访存模式来预测访存指令序列中每条访存指令的访存物理地址并写入访存地址队列;所述缓存替换决策模块设置为接收一级缓存发出的所有缓存替换候选项的物理地址,使用这些物理地址检索所述取指地址队列或访存地址队列,得到每个缓存替换候选项的重用距离,根据重用距离选择一个缓存替换候选项作为踢出项反馈给一级缓存。2.根据权利要求1所述的基于指令流和访存模式学习的缓存替换系统,其特征在于,所述分支预测模块设置为将预测结果以指令块为粒度写入取指地址队列中;且所述分支预测模块设置为执行:步骤A1:在每个周期,将当前预测地址所在的指令块作为当前指令块,将当前预测地址作为当前指令块的预测起始地址;根据当前指令块的预测起始地址确定从当前指令块开始的固定预测窗口;步骤A2:在获得当前指令块的预测起始地址后,在当前指令块中对分支指令进行检索和预测,以判断当前指令块是否命中跳转的分支指令;步骤A3:根据判断结果,若当前指令块未命中跳转的分支指令,说明当前指令块中没有分支指令或者识别到的分支指令均未跳转,则将当前指令块的信息作为分支预测模块的预测结果写入取指地址队列;随后,确定下一指令块的预测起始地址,并将下一指令块作为新的当前指令块,并回到步骤A2,直到当前指令块为固定预测窗口中的最后一个指令块,此时当前预测地址根据固定预测窗口中的指令块的个数自增,以进入下一个周期;否则,从命中的跳转的分支指令中选择线性地址最小的第一个跳转的分支指令作为当前指令块的结尾地址,将当前指令块的信息作为预测结果写入取指地址队列,同时将当前预测地址更新为第一个跳转的分支指令的跳转地址,以进入下一个周期或者,所述分支预测模块设置为将预测结果以指令块为粒度写入取指地址队列中;且所述分支预测模块设置为执行如下步骤:步骤A1

:在每个周期,将当前预测地址所在的指令块作为当前指令块,将当前预测地址作为当前指令块的预测起始地址;随后,根据当前指令块的预测起始地址确定从当前指令块开始的固定预测窗口中的所有指令块的预测起始地址;步骤A2

:根据各个指令块的预测起始地址,在各个指令块中对分支指令进行检索和预测,以判断各个指令块是否命中跳转的分支指令;步骤A3

:根据判断结果,若所有指令块均未命中跳转的分支指令,则将所有指令块的
信息作为分支预测模块的预测结果依次写入取指地址队列;当前预测地址根据固定预测窗口中的指令块的个数自增,以进入下一个周期;否则,若存在至少一个指令块命中至少一个跳转的分支指令,则从命中的跳转的分支指令中选择线性地址最小的第一个跳转的分支指令作为当前指令块的结尾地址,将当前指令块及其前面的所有指令块的信息作为预测结果写入取指地址队列,同时将当前预测地址更新为第一个跳转的分支指令的跳转地址,以进入下一个周期。3.根据权利要求2所述的基于指令流和访存模式学习的缓存替换系统,其特征在于,指令块的信息包括指令块的行线性地址、行物理地址、起始偏移、结束偏移以及跳转位;在将指令块的信息写入取指地址队列时,将指令块的预测起始地址拆分为高位的行线性地址和低位的起始偏移,并通过行线性地址查询TLB得到行物理地址,并将得到的行线性地址、行物理地址和起始偏移写入取指地址队列的条目项中的对应域;此外,如果指令块命中的跳转的分支指令,则第一个跳转的分支指令的末尾字节偏移作为结束偏移写入取指地址队列;否则,取指地址队列中的结束偏移设置为63。4.根据权利要求1所述的基于指令流和访存模式学习的缓存替换系统,其特征在于,所述取指地址队列每一条目项的结构为:<valid,line_addr,phys_addr,begin_offset,end_offset,taken>,其中,valid表示有效位;line_addr表示行线性地址;phys_addr表示行物理地址;begin_offset表示起始偏移;end_offset表示结束偏移;taken表示跳转位;所述...

【专利技术属性】
技术研发人员:王玉庆杨秋松李明树
申请(专利权)人:中国科学院上海高等研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1