一种超前指针法实现前端流水线中指令预取的方法技术

技术编号:24330659 阅读:47 留言:0更新日期:2020-05-29 19:29
本发明专利技术公开了前端流水线技术领域的一种超前指针法实现前端流水线中指令预取的方法,该超前指针法实现前端流水线中指令预取的方法如下:在底层硬件通过超前预取指针超前访问cache的tag逻辑实现提前预知cache miss以及预知fetch的pc所要访问的数据在data sram中的具体位置以及超前分支预测提前预知分支跳转,因此可以减少由于分支跳转而擦除icache模块中流水访问的数据,进一步减少了icache的功耗,缩短了前端流水线的流水级数以及当预知icache miss后可以做到真正pc指向miss的cache line之前提前将数据L2调度回来,因此很大程度上减少了前端流水线上由于icache miss造成的流水线bubble,提高了前端流水线的执行效率。

【技术实现步骤摘要】
一种超前指针法实现前端流水线中指令预取的方法
本专利技术公开了一种超前指针法实现前端流水线中指令预取的方法,具体为前端流水线

技术介绍
由于目前绝大多数关于cpu在体系结构设计中,CPU的前端流水线采用icache和分支预测同时进行的方式,而icache/分支预测无论采用串行或者并行访问,通常需要2-3个时钟的延时,也就是说假设分支指令跳转的情况下,需要在访问完icache和分支预测器之后才能知道指令跳转结果,如果跳转此时需要擦除在这条跳转指令之前访问icache的三级流水,这样势必浪费期间产生的动态功耗,另外当icache发生cachemiss时才去访问L2cache,此时的icache缺失代价会使前端流水线产生相应等cycle的bubble,因此需要解决上述问题,需要对icache的tag逻辑在体系结构的算法流程上进行改进,也就是需要一个硬件预取pc对cache的tagindex以及分支预测器进行快速访问并将访问的结果存入预取缓存中,当instructionbuffer有空闲entry时才基于预取缓冲中取出cache的位置信息访问cache的dataram将数据真正的取出,因此这种方式fetch访问icache只有一级流水,并且由于预取缓存的填充是在分支预测之后,因此真正的icache数据访问已经过滤掉了分支跳转的那些线性访问icache的pc,因此降低了由于分支跳转造成的icache的功耗浪费,综合考虑采用硬件预取pc超前访问解决了传统流水线暴露的三个问题,1.传统pc访问方式icache会由于分支指令跳转造成icache内部指令流水被擦除,因此浪费大量线性访问所做的功,2.分支预测错误造成的代价过大,由于传统设计中为了解决icachemiss后需要较长时间才能够将指令从L2cache中取回,因此需要一个较深的instructionbuffer,但是代价是一旦发生分支预测错误就需要将前端流水线擦除,因此instructionbuffer越深,擦除流水线的代价就越大,造成大量的功耗浪费,而现有方式中由于预取缓存中只有除pc外的额外4个bit的开销就可以等效代替预取缓存中存储的一个line的指令,因此当分支预测错误擦除流水线时也只需要额外擦除这4bit相比于擦除256bit大大节省了功耗开销。3.由于无法预知cachemiss因此icachemiss会将大量bubble送入前端流水线,影响前端流水线的执行效率。
技术实现思路
本专利技术的目的在于提供一种超前指针法实现前端流水线中指令预取的方法,以解决上述
技术介绍
中提出的传统pc访问方式icache会由于分支指令跳转造成icache内部指令流水被擦除,分支预测错误造成的代价过大,无法预知cachemiss因此icachemiss会将大量bubble送入前端流水线,影响前端流水线的执行效率的问题。为实现上述目的,本专利技术提供如下技术方案:一种超前指针法实现前端流水线中指令预取的方法,该超前指针法实现前端流水线中指令预取的方法如下:Fetch发送1个节拍的访问模式,连续的采用预取模式访问cache和分支预测器,分支预测器将访问结果以及icache_tag访问结果返回给fetch之后fetch基于访问结果决定下一步操作;如果分支预测器方向预测不跳转并且cache命中则将分支预测方向结果以及cache_tag命中哪一路的信息以及当前pc写入预取缓存;如果方向预测器预测跳转,则访问目标地址预测器之后生成新的pc再次采用预取模式访问icache得到icache_tag的结果后连同new_pc的预测结果一起写入预取缓存;如果icahce返回的是cachemiss,则fetch需要访问L2_cache将数据取出。优选的,所述访问模式为fetch至icache_tag至icache_data。优选的,所述数据访问过程不经过fetch内部的预取缓存。与现有技术相比,本专利技术的有益效果是:1)本专利技术提前预知pc指针即将发生的cachemiss提前将数据从L2cache数据取出送回流水线,提高了前端流水线的执行效率;2)本专利技术解决传统方式中由于分支预测器预测跳转产生的功耗开销,传统体系结构中由于icache采用流水的工作方式,因此跳转地址会将icache流水线内有若干级数据置于跳转偏移之前的路径上,因此这些结果在分支预测器预测出跳转地址之后应该从流水线抹掉,因此这造成了功耗浪费,而新的预取模式,分支预测器被超前访问,预取结果写入预取缓存是在分支预测之后,由于已经得到分支预测结果同时cacheline数据取出绝大部分时间是在预取缓存中取出,因此不存在上述功耗浪费问题;3)本专利技术减少硬件逻辑开销,由于传统流水线工作方式需要较大的instructionbuffer以缓存指令,保证cachemiss之后缓存内扔有多条指令供后续流水线消化,采用预取模式则不需要较深的指令缓存,预取缓存在一定程度可以等效代替指令缓存,指令缓存的作用仅限于保证流水线不被冲断,因此在很大程度上减少了硬件电路开销;4)本专利技术减少分支预测错误所造成的代价,传统方式由于指令缓存较大较深,cache数据大量被取出存入指令缓存,因此cache相对做功较大,一旦发生分支预测错误,icache以及指令缓存中的数据都将被抹掉,浪费大量功耗,新的预取模式大量已经被确定存储位置的pc信息被存入预取缓存,这种方式代替了将cacheline真正取出,因此分支预测错误只需要将预取缓存中的信息清空即可,预取缓存中pc+位置信息就可以映射一个cacheline,因此分支预测错误的动态功耗开销对比pw=(pc+位置/cacheline长度)*pz,假设pc地址为64位,cache为4路组相连,cacheline长度为256bit则pw=(64+4/256)*原有动态功耗。附图说明图1为本专利技术流水线算法流程图;图2为本专利技术传统流水线算法流程图;图3为本专利技术系统上电过程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。2.请参阅图1和3,本专利技术提供一种技术方案:一种超前指针法实现前端流水线中指令预取的方法,该超前指针法实现前端流水线中指令预取的方法如下:Fetch发送1个节拍的访问模式,之后第二个节拍pc指针由预取缓存的内部寄存器决定,原有的pc计数器成为预取计数器,连续的采用预取模式访问cache和分支预测器,分支预测器将访问结果以及icache_tag访问结果返回给fetch之后fetch基于访问结果决定下一步操作;如果分支预测器方向预测不跳转并且cache命中则将分支预测方向结果以及cache_tag命中哪一路的信息以及当前pc写入预取缓存;如果方向预测器本文档来自技高网
...

【技术保护点】
1.一种超前指针法实现前端流水线中指令预取的方法,其特征在于:该超前指针法实现前端流水线中指令预取的方法如下:/nFetch发送1个节拍的访问模式,连续的采用预取模式访问cache和分支预测器,分支预测器将访问结果以及icache_tag访问结果返回给fetch之后fetch基于访问结果决定下一步操作;/n如果分支预测器方向预测不跳转并且cache命中则将分支预测方向结果以及cache_tag命中哪一路的信息以及当前pc写入预取缓存;/n如果方向预测器预测跳转,则访问目标地址预测器之后生成新的pc再次采用预取模式访问icache得到icache_tag的结果后连同new_pc的预测结果一起写入预取缓存;/n如果icahce返回的是cache miss,则fetch需要访问L2_cache将数据取出。/n

【技术特征摘要】
1.一种超前指针法实现前端流水线中指令预取的方法,其特征在于:该超前指针法实现前端流水线中指令预取的方法如下:
Fetch发送1个节拍的访问模式,连续的采用预取模式访问cache和分支预测器,分支预测器将访问结果以及icache_tag访问结果返回给fetch之后fetch基于访问结果决定下一步操作;
如果分支预测器方向预测不跳转并且cache命中则将分支预测方向结果以及cache_tag命中哪一路的信息以及当前pc写入预取缓存;
如果方向预测器预测跳转,则访问目标地址预测器之后生成新的pc再次采用预取...

【专利技术属性】
技术研发人员:费晓龙
申请(专利权)人:华夏芯北京通用处理器技术有限公司
类型:发明
国别省市:北京;11

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

1