超标量处理器实现指令缓存路选择的方法及装置制造方法及图纸

技术编号:7032806 阅读:187 留言:0更新日期:2012-04-11 18:40
本发明专利技术披露了超标量处理器实现指令缓存路选择的方法及装置,其中方法包括:至少根据指令的取指请求判断取指模式;根据取指模式属于顺序取指场景采用路历史模式进行路预测,根据取指模式属于非顺序取指场景采用路预测模式进行路预测。本发明专利技术使得超标量处理器从整体上取得了更好的能效性;由于避免了大量非必要路的Tag比较及Data访问,以及由于使用额外资源较少,故使得处理器的整体能耗降低。

【技术实现步骤摘要】

本专利技术涉及现代微处理器及其应用系统的设计,尤其涉及超标量处理器实现指令缓存路选择的方法及装置
技术介绍
当前处理器的设计不再以性能或能耗为唯一目标,而是综合考虑两种设计要素, 以高能效为主要设计目标。为充分发掘超标量处理器的指令级并行度,对处理器的指令缓存(ICacheJnstruction Cache)的取指带宽和取指延迟均有着较高的要求,需要在处理器每个指令周期向流水线不间断地提供多条指令。而指令缓存的组相联结构(即指令缓存中使用多个路结构保存指令)往往会造成大量非命中路的能耗损失。因此,如何优化超标量处理器的指令缓存结构,使得在有效地降低取指能耗的同时能够缩短取指延迟,从而获得更高的能效性,是微处理器设计人员重点关注的问题。路选择技术是根据指令缓存的取指历史只对指令缓存的一路进行访问,主要包括路预测技术与路历史技术两类。路预测技术针对顺序行间取指情况和非顺序取指情况,分别在每个Cache行 (Cache Line)和分支目标缓冲器(BTB, Branch Target Buffer)的每一项中加入预测位, 如图1所示。其中,在顺序行间取指时,当前Cache行的预测位负责预测下一条指令所在的路(Way),如图1中实线箭头所指;在非顺序取指时,当前BTB项的预测位负责预测分支目标地址所在的路,如图1中虚线箭头所指。当进行路预测时,读取该预测路相应Cache行的标签(Tag),并比较该Tag和相应Cache行的地址,以验证路预测的正确性。此时能耗开销为对单路的Tag和数据的访问。如果发现预测错误,则舍弃本周期取得的指令,在下一周期执行传统的ICache访问,并更新之前使用的预测位,此时会造成一个周期的取指延迟和一路访问能耗损失。路历史技术是对路预测技术的拓展,如图2右端所示。对Cache行为和结构的分析表明,通常,只有当ICache进行行替换时才有可能破坏已有的路预测关联,导致预测错误。 路历史技术利用此特性,对路预测的每个预测位增加有效位,以标识该预测是否正确。该有效位与预测位合称为路指针,置该有效位为有效或无效,相应地表示置路指针为有效或无效。在ICache出现行替换时,需将所有在ICache和BTB中指向替换行的路指针置为无效, 以避免使用这些无效的路指针引起取指错误。当路指针被置为无效时,使用传统的ICache 访问机制进行访问,更新路指针并设置有效位。当路指针被置为有效时,直接访问数据,无需Tag的读取与比较。路历史技术与路预测技术的区别如图2所示。从以上两类技术的执行过程可以看出,两类技术对于不同的取指场景会表现出不同的性能第一,在顺序行间取指时,两种路选择技术在取指延迟上存在差异。路预测会因预测错误而增大取指延迟;而路历史避免了预测错误情况。当出现 Cache行替换需要进行更新时,路历史直接在索引连续的上一个Set中(请参见图1),通过Tag比较找到指向被替换的Cache行的路指针,并将其置无效。该过程易于实现,且可以隐藏在Cache行替换过程中,因而不会增大取指延迟。第二,对于超标量处理器中特有的非对齐取指情况(特殊的顺序行间取指情况,图1中实线箭头所指),已有的路选择方法均未能很好的予以解决。当一个取指组的指令分布在两个地址连续的Cache行中时,会出现取指组非对齐情况(Fetch Group Misalignment),此时处理器需要二次取指才可将全部指令取回。该问题是超标量处理器中 ICache获得最大取指带宽的重要障碍。现有的路历史方法只有当取到Cache行最后一条指令时,才会读取路指针对下一次取指所在的路进行预测,因此无法同时读取两部分指令 (即指两个地址连续的Cache行中的指令)。而已有路预测方法还可能由于预测错误,导致前上述两部分指令中后一部分指令无法读出。第三,在非顺序取指时,路历史技术的更新机制较为复杂,会导致取指暂停以及丢失有用路指针的问题。这是因为在使用路历史技术时,BTB中会有多个路指针指向同一个Cache行。当 ICache出现行替换时,需要立即将所有指向被替换Cache行的路指针置无效。根据已有研究的分析,由于可能出现BTB中大量路指针指向同一个Cache行的情况,因此必须实现BTB 中对整体路指针置无效的操作,这样就有可能将其中本来有效的路指针也置为无效。由于超标量处理器的分支转移预测部件一般较大,全部路指针置无效需要的周期数很多。在完成对BTB中整体路指针置无效前,分支指令不能进行预测而需要停顿,否则会出现本应被置无效的路指针被错误使用的情况。分支预测停顿会引起取指暂停,由此影响流水线中指令的发射效率。另外,由于对BTB中整体路指针置无效操作也会将与Cache行替换无关的有效路指针置无效,导致这些有效路指针无法正常使用,从而降低路选择访问的比例。对于非顺序取指,一方面路预测技术相比路历史技术而言,无需对BTB中整体路指针置无效的操作;另一方面针对路历史技术的已有研究发现,当进行Cache行替换时, BTB中需要置无效的路指针在整个路指针中所占的比例较小;这两方面均说明非顺序取指时预测错误的可能性较小,性能影响不大。由于现有的路历史方法只针对单发射处理器进行了探讨和实验,并都假设在 ICache出现行替换时对路指针的更新操作可以被忽略;而且现有的路选择技术均未在进行路选择过程中针对取指模式将路预测和路历史两种技术结合起来使用,因此未能充分发挥两者的优势。
技术实现思路
本专利技术所要解决的技术问题是提供一种超标量处理器实现指令缓存路选择的方法及装置,能够融合路预测和路历史技术而优化处理器的能效。为了解决上述技术问题,本专利技术提供了一种超标量处理器实现指令缓存路选择的方法,包括至少根据指令的取指请求判断取指模式;根据取指模式属于顺序取指场景采用路历史模式进行路预测,根据取指模式属于非顺序取指场景采用路预测模式进行路预测。进一步地,根据取指模式属于顺序取指场景采用路历史模式进行路预测,具体包括若取指模式属于顺序行内取指,即取指模式为顺序取指且当前指令与下一指令在同一缓存行中,则在指令取指单元中增加当前路指针来记录当前指令在缓存中所在的路及其是否有效,通过产生SRAM使能信号直接访问当前路指针指向的路;若取指模式属于顺序行间取指,即取指模式为顺序取指且当前指令与下一指令不在同一缓存行中,则在每一缓存行增加顺序路指针来指明的该缓存行最后一条指令顺序执行时下一条指令所在的路及其是否有效;当判断当前指令所在的缓存行的顺序路指针有效,通过产生SRAM使能信号直接访问该顺序路指针指明的路;否则,采用传统的缓存访问方式访问下一条指令,并更新该缓存行的顺序路指针。进一步地,在取指模式属于顺序行内取指的场景下,当前路指针包括第一预测位和第一有效位,其中,第一预测位的位数为LogN,用于记录当前指令在缓存中所在的路;有效位的位数至少为1,用于判断记录的的路是否有效;SRAM使能信号包括标签RAM和/或数据RAM的使能信号;在取指模式属于顺序行间取指的场景下,顺序路指针包括第二预测位和第二有效位,其中,第二预测位的位数为LogN,用于指明缓存行最后一条指令顺序执行时下一条指令所在的路;第二有效位的位数至少为1,用于判断指明的路是否有效;SRAM使能信号包括标签RAM、数据本文档来自技高网
...

【技术保护点】
1.一种超标量处理器实现指令缓存路选择的方法,包括:至少根据指令的取指请求判断取指模式;根据所述取指模式属于顺序取指场景采用路历史模式进行所述路预测,根据所述取指模式属于非顺序取指场景采用路预测模式进行所述路预测。

【技术特征摘要】

【专利技术属性】
技术研发人员:程旭谢子超宋天宝陆俊林佟冬
申请(专利权)人:北京北大众志微系统科技有限责任公司
类型:发明
国别省市:11

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

1