利索能及
我要发布
收藏
专利号: 2022100967989
申请人: 广东省新一代通信与网络创新研究院
专利类型:发明专利
专利状态:已下证
更新日期:2026-06-16
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.指令预取方法,其特征在于,包括以下步骤:获取第一PC,将第一PC添加到取指队列尾端,并将第一PC发送至分支预测单元进行分支预测,获取第一阶段分支预测结果和第二阶段分支预测结果,其中,第一阶段分支预测结果指一个周期后获取的预测结果,第二阶段分支预测结果指两个周期后获取的预测结果;

判断第二阶段分支预测结果是否覆盖第一阶段分支结果,若覆盖,则将第二阶段分支预测结果保存在分支预测输出队列中,若不覆盖,则将第一阶段分支预测结果保存在分支预测输出队列中;

将取指队列顶部PC传送至高速指令缓存读取标签,探测高速指令缓存I‑Cache是否缺失;

若高速指令缓存I‑Cache未缺失,则同时将取指队列顶部PC传送至转译后备缓冲单元进行地址转换;比较高速指令缓存中每一路标签和物理地址得到数据所在路,选出高速指令缓存对应路中的数据;获得高速指令缓存的响应数据进行分支译码,同时读取分支预测输出队列顶部的预测结果配合分支译码;将分支译码完成后获得的指令信息写入指令buffer保存,将分支预测信息写入FTQ保存;

若高速指令缓存I‑Cache缺失,则高速指令缓存I‑Cache向下一级缓存发出读请求,在下一级缓存响应之前,执行标签探测和提前译码,其中,标签探测包括顺序取PC进行地址转换,探测高速指令缓存中的标签是否与地址转换的结果相匹配,标签探测中所取PC为取指队列内经过初步过滤且未探测高速指令缓存的PC,提前译码包括提取取指队列内已经过探测的提前译码PC,读取高速指令缓存中的数据,执行快速译码,并与分支预测输出队列中相应的预测结果进行比较,若预测结果有误,则对取指队列和分支预测输出队列中该PC之后的条目执行无效操作,且当前取指流水线中的提前译码PC都无效;若预测结果无误,则继续进行当前取指流水线中的提前译码。

2.根据权利要求1所述的指令预取方法,其特征在于,所述第一PC为处理器决策得到,所述第一PC的顺序优先级从高到低为:后端冲刷/重定向PC、分支译码阶段重定向PC、NPC逻辑决策PC。

3.根据权利要求2所述的指令预取方法,其特征在于,所述NPC逻辑决策PC的确定方法包括,

获取第一阶段分支预测结果和第二阶段分支预测结果,判断第二阶段分支预测结果是否覆盖第一阶段分支预测结果,

若覆盖,则采用第二阶段分支预测结果中的跳转预测为NPC逻辑决策PC;

若不覆盖,则根据第一阶段分支预测结果判断是否在第一阶段分支预测中产生了跳转预测;

若产生了跳转预测,则采用第一阶段分支预测结果中的跳转预测为NPC逻辑决策PC;

若未产生跳转预测,则采用PC+N为NPC逻辑决策PC,其中,N表示取指宽度*指令byte宽度。

4.根据权利要求1所述的指令预取方法,其特征在于,在标签探测时将标签的信息进行记录。

5.根据权利要求1所述的指令预取方法,其特征在于,在提前译码中,还包括,若预测结果有误,根据提前译码的信息对分支预测单元进行更新。

6.指令预取装置,用于实现权利要求1‑5中任一所述指令预取方法,其特征在于,包括:第一PC获取单元,用于获取第一PC,将第一PC添加到取指队列尾端,并将第一PC发送至分支预测单元进行分支预测;

分支预测单元,用于进行第一PC的分支预测,获取第一阶段分支预测结果和第二阶段分支预测结果,其中,第一阶段分支预测结果指一个周期后获取的预测结果,第二阶段分支预测结果指两个周期后获取的预测结果;并判断第二阶段分支预测结果是否覆盖第一阶段分支结果,若覆盖,则向分支预测输出队列中输出第二阶段分支预测结果,若不覆盖,则向分支预测输出队列中输出第一阶段分支预测结果;

分支预测输出队列,用于保存分支预测单元输出的第一阶段分支预测结果或第二阶段分支预测结果;

探测单元,用于将取指队列顶部PC传送至高速指令缓存读取标签和数据,探测高速指令缓存I‑Cache是否缺失;

取指单元,用于在高速指令缓存I‑Cache未缺失时,将取指队列顶部PC传送至高速指令缓存读取标签和数据,并传送至转译后备缓冲单元进行地址转换;比较每一路标签和物理地址得到数据所在路,选出高速指令缓存对应路中的数据;

分支译码单元,用于在高速指令缓存I‑Cache未缺失时,获得高速指令缓存的响应数据进行分支译码,同时读取分支预测输出队列顶部的预测结果配合分支译码;将分支译码完成后获得的指令信息写入指令buffer保存,将分支预测信息写入FTQ保存;

指令buffer,用于保存分支译码完成后获得的指令信息;

FTQ,用于保存分支预测信息;

标签探测与提前译码单元,用于在高速指令缓存I‑Cache缺失时,当高速指令缓存向下一级缓存发出读请求,在下一级缓存响应之前,执行标签探测和提前译码,其中,标签探测包括顺序取PC进行地址转换,探测高速指令缓存中的标签是否与地址转换的结果相匹配,标签探测中所取PC为取指队列内经过初步过滤且未探测高速指令缓存的PC,提前译码包括提取取指队列内已经过探测的提前译码PC,根据探测信息读取高速指令缓存中的数据,执行快速译码,并与分支预测输出队列中相应的预测结果进行比较,若预测结果有误,则对取指队列和分支预测输出队列中该PC之后的条目执行无效操作,且当前取指流水线中的提前译码PC都无效;若预测结果无误,则继续进行当前取指流水线中的提前译码。

7.根据权利要求6所述的指令预取装置,其特征在于,还包括,第一PC决策单元,用于通过决策得到第一PC,所述第一PC的顺序优先级从高到低为:后端冲刷/重定向PC、分支译码阶段重定向PC、NPC逻辑决策PC。

8.根据权利要求7所述的指令预取装置,其特征在于,还包括NPC逻辑决策PC确定单元,用于获取第一阶段分支预测结果和第二阶段分支预测结果,判断第二阶段分支预测结果是否覆盖第一阶段分支预测结果,

若覆盖,则采用第二阶段分支预测结果中的跳转预测为NPC逻辑决策PC;

若不覆盖,则根据第一阶段分支预测结果判断是否在第一阶段分支预测中产生了跳转预测;若产生了跳转预测,则采用跳转预测为NPC逻辑决策PC;若未产生跳转预测,则采用PC+N为NPC逻辑决策PC,其中,N表示取指宽度*指令byte宽度。

9.根据权利要求6所述的指令预取装置,其特征在于,在标签探测与提前译码单元中,在标签探测时将标签的信息进行记录。

10.根据权利要求6所述的指令预取装置,其特征在于,还包括分支预测更新单元,用于在提前译码中,当预测结果有误时,根据提前译码的信息对分支预测单元进行更新。