(19)国家知识产权局
(12)发明 专利申请
(10)申请公布号
(43)申请公布日
(21)申请 号 202111356734.X
(22)申请日 2021.11.16
(71)申请人 中国科学院上海高等研究院
地址 201210 上海市浦东 新区张江高科技
园区海科路9 9号
(72)发明人 王玉庆 杨秋松 李明树
(74)专利代理 机构 上海智信专利代理有限公司
31002
专利代理师 杨怡清
(51)Int.Cl.
G06F 12/0862(2016.01)
G06F 9/38(2006.01)
G06N 20/00(2019.01)
(54)发明名称
基于指令流混合模式学习的低污染缓存预
取系统及方法
(57)摘要
本发明提供一种基于指令流混合模式学习
的低污染缓存预取系统, 包括分支预测模块, 其
对指令流进行预测并写入取指地址队列; 访存指
令记录模块, 其记录已经提交的访存指令的信息
并写入访存指令缓冲中; 同时查询得到访存指令
序列; 访存模式学习模块, 其将访存指令序列记
录在其访存历史缓冲中进行学习, 预测访存指令
的访存物理地址并写入访存地址队列; 预取请求
生成模块, 其检索取指地址队列和访存地址队
列, 生成一级缓存的预取请求; 预取请求写回模
块, 其暂存拿到数据的预取请求, 根据指令提交
情况等待写回或者立即写回。 本发 明还提供相应
的方法。 本发 明的低污染缓存预取系统减少了访
存序列预测过程中所面对的不确定性, 提高预取
地址预测的准确性。
权利要求书4页 说明书20页 附图6页
CN 114579479 A
2022.06.03
CN 114579479 A
1.一种基于指令流混合模式学习的低污染缓存预取系统, 其特征在于, 包括主流水线
和分支预测子流水, 所述分支预测子流水包括分支预测模块、 取指地址队列、 访 存指令记录
模块、 访存 模式学习模块、 访存地址队列、 预 取请求生成模块和预 取请求写回模块;
所述分支预测模块设置为采用提前预测技术, 对目标程序的指令流进行预测并将预测
结果写入取指地址队列中;
所述访存指令记录模块设置为依次记录已经提交的访存指令的信 息, 将这些访存指令
的信息写入到其访存指令缓冲中; 同时, 每当取指地址队列写入新的条目项时, 用该条目项
所对应的指令块的起始 地址查询所述访 存指令缓冲, 以通过查询尝试得到访存指 令序列并
将其输出至访存指令学习模块和访存地址队列;
所述访存模式学习模块设置为将访存指令序列记录在其访存历史缓冲中, 根据访存历
史缓冲中保存的历史信息对访 存指令的访存模式进行学习, 并根据学习到的访 存模式来预
测访存指令序列中每条访存指令的访存物理地址并写入访存地址队列;
所述预取请求生成模块设置为在一级数据缓存接收到新的请求 时, 检索所述取指地址
队列和访存地址队列, 为即将进入主流水线的指令块分别生成一级指 令缓存和一级数据缓
存的预取请求并将其发送到缓存系统中, 以获取拿到数据的预 取请求;
所述预取请求写回模块设置为将拿到数据的预取请求暂存在其预取队列中, 使得位于
预取队列头部的拿到数据的预取请求根据所述预取请求之前的指令提交情况等待写回或
者立即写回至一级缓存。
2.根据权利要求1所述的基于指令流混合模式学习的低污染缓存预取系统, 其特征在
于, 所述分支预测模块设置为将预测结果以指令块为粒度写入取指地址队列中; 且所述分
支预测模块设置为执 行:
步骤A1: 在每个周期, 将当前预测地址所在的指令块作为当前指令块, 将当前预测地址
作为当前指令块的预测起始 地址; 根据当前指 令块的预测起始 地址确定从当前指 令块开始
的固定预测窗口;
步骤A2: 在获得当前指令块的预测起始地址后, 在当前指令块中对分支指令进行检索
和预测, 以判断当前指令块是否命中跳转的分支指令;
步骤A3: 根据判断结果, 若当前指令块未命中跳转的分支指令, 说明当前指令块中没有
分支指令或者识别到的分支指 令均未跳转, 则将当前指令块的信息作为分支预测模块的预
测结果写入取指地址队列; 随后, 确定下一指 令块的预测起始 地址, 并将下一指 令块作为新
的当前指 令块, 并回到步骤A2, 直到 当前指令块为固定预测窗口中的最后一个指 令块, 此时
当前预测地址根据固定预测窗口中的指令块的个数自增, 以进入下一个周期;
否则, 从命中的跳转的分支指令 中选择线性地址最小的第 一个跳转的分支指令作为当
前指令块的结尾地址, 将当前指令块的信息作为预测结果写入取指地址队列, 同时将当前
预测地址更新 为第一个跳转的分支指令的跳转 地址, 以进入下一个周期;
或者, 所述分支预测模块设置为将预测结果以指令块为粒度写入取指地址队列中; 且
所述分支预测模块设置为执 行:
步骤A1’: 在每个周期, 将当前预测地址所在的指令块作为当前指令块, 将当前预测地
址作为当前指令块的预测起始地址; 随后, 根据当前指令块的预测起始地址确定从当前指
令块开始的固定预测窗口中的所有指令块的预测起始地址;权 利 要 求 书 1/4 页
2
CN 114579479 A
2步骤A2’: 根据各个指令块的预测起始地址, 在各个指令块中对分支指令进行检索和预
测, 以判断各个指令块是否命中跳转的分支指令;
步骤A3’: 根据判断结果, 若所有指令块均未命中跳转的分支指令, 则将所有指令块的
信息作为分支预测模块的预测结果依次写入取指地址队列; 当前预测地址根据固定预测窗
口中的指令块的个数自增, 以进入下一个周期;
否则, 若存在至少一个指令块命中至少一个跳转的分支指令, 则从命中的跳转的分支
指令中选择线性地址最小的第一个跳转的分支指 令作为当前指 令块的结尾地址, 将当前指
令块及其前面的所有指 令块的信息作为预测结果写入取指地址队列, 同时将当前预测地址
更新为第一个跳转的分支指令的跳转 地址, 以进入下一个周期。
3.根据权利要求2所述的基于指令流混合模式学习的低污染缓存预取系统, 其特征在
于, 所述主流水线包括依次连接的取指单元、 译码单元、 执行单元、 访 存单元和写回单元, 在
所述分支预测模块中, 所述指令块的位宽等同于所述取指单 元在取指时的位宽;
所述指令块的信 息包括指令块的行线性地址、 行物 理地址、 起始偏移、 结束偏移以及跳
转位; 在将指令块的信息写入取指地址队列时, 将指令块的预测 起始地址拆分为高位的行
线性地址和 低位的起始偏移, 并通过行线性地址查询TLB得到行物理地址, 并将得到的行线
性地址、 行物理地址和起始偏移写入取指地址队列的条目项中的对应域; 此外, 如果指 令块
命中的跳转的分支指 令, 则第一个跳转的分支指 令的末尾字节偏移作为结束偏移写入取指
地址队列; 否则, 取指地址队列中的结束偏移设置为6 3。
4.根据权利要求1所述的基于指令流混合模式学习的低污染缓存预取系统, 其特征在
于, 所述取指地址队列每一条目项的结构为:
<valid,line_addr,phys_ad dr,begin_offset,end_of fset,taken>,
其中, valid表示有效位; line_addr表示行线性地址; phys_addr表示行物理地址;
begin_offset表示起始偏移; end_of fset表示结束偏移; taken表示跳转 位;
所述取指地址队列还设有提交指针, 读指针和写指针; 取指地址队列的提交指针指向
下一个将提交的指 令所在的指 令块在取指地址队列中的条目项; 取指地址队列的读指 针指
向下一个将读取的指 令所在的指令块在取指地址队列中的条目项; 取指地址队列的写指 针
指向分支预测模块下一次写入的位置; 在处理器的主流水线刷新 发生后, 根据刷新类型, 取
指地址队列的读指针和写指针回滚到分支刷新的位置或者 提交指针的位置;
所述访存指令缓冲的每一个表项的结构为:
<LineAddr,PhyAd dr,InstType,Memlen>,
其中, LineAddr表示访存指令的指令线性地址; PhyAddr表示访存指令在上一次执行时
的访存物理地址; InstType表明访存指令的类型, InstType∈{DirectInst ,
InDirectInst}, 其中DirectInst表示直接访存指令, InDirectInst表示间接访存指令;
Memlen表明访存指令的访存长度;
所述访存历史缓冲是一个由访存指令的PC作为索引的阵列, 访存历史缓冲中的每一个
表项都记录有同一访存指令过去12次的访存物理地址;
且所述访存地址队列中每一条目项的结构为:
<valid,inst_line_addr,mem_phys_ad dr,memlen,i nst_queue_i ndex>,
其中, valid表示有效位; inst_line_addr表示指令线性地址; mem_phys_addr表示访存权 利 要 求 书 2/4 页
3
CN 114579479 A
3
专利 基于指令流混合模式学习的低污染缓存预取系统及方法
文档预览
中文文档
31 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共31页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 19:01:55上传分享