CN102306092A - 超标量处理器实现指令缓存路选择的方法及装置 - Google Patents
超标量处理器实现指令缓存路选择的方法及装置 Download PDFInfo
- Publication number
- CN102306092A CN102306092A CN201110216544A CN201110216544A CN102306092A CN 102306092 A CN102306092 A CN 102306092A CN 201110216544 A CN201110216544 A CN 201110216544A CN 201110216544 A CN201110216544 A CN 201110216544A CN 102306092 A CN102306092 A CN 102306092A
- Authority
- CN
- China
- Prior art keywords
- road
- getting
- pointer
- finger
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000008569 process Effects 0.000 claims description 9
- 230000000052 comparative effect Effects 0.000 claims description 6
- 230000004927 fusion Effects 0.000 claims description 3
- 238000005265 energy consumption Methods 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 description 23
- 238000013461 design Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101000685982 Homo sapiens NAD(+) hydrolase SARM1 Proteins 0.000 description 1
- 102100023356 NAD(+) hydrolase SARM1 Human genes 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 239000000849 selective androgen receptor modulator Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明披露了超标量处理器实现指令缓存路选择的方法及装置,其中方法包括:至少根据指令的取指请求判断取指模式;根据取指模式属于顺序取指场景采用路历史模式进行路预测,根据取指模式属于非顺序取指场景采用路预测模式进行路预测。本发明使得超标量处理器从整体上取得了更好的能效性;由于避免了大量非必要路的Tag比较及Data访问,以及由于使用额外资源较少,故使得处理器的整体能耗降低。
Description
技术领域
本发明涉及现代微处理器及其应用系统的设计,尤其涉及超标量处理器实现指令缓存路选择的方法及装置。
背景技术
当前处理器的设计不再以性能或能耗为唯一目标,而是综合考虑两种设计要素,以高能效为主要设计目标。为充分发掘超标量处理器的指令级并行度,对处理器的指令缓存(ICache,Instruction 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、数据RAM以及顺序路指针RAM的使能信号中的一种或多种;
N是缓存的组相联度。
进一步地,根据取指模式属于顺序取指场景采用路历史模式进行路预测,还包括:
若判断取指模式属于非对齐取指,即取指模式为所述顺序取指,且同一个取指组的指令分布在地址连续的两个缓存行中,当判断取指组保存在不同的SRAM中,则通过产生两个数据RAM使能的SRAM使能信号同时获取分布于两个缓存行中的指令;若判断取指组保存在相同的SRAM中,则通过产生一个数据RAM使能的SRAM使能信号取回当前缓存行的指令。
进一步地,根据取指模式属于非顺序取指场景采用路预测模式进行路预测,具体包括:
若取指模式属于非顺序取指,即当前指令与下一条指令的地址不连续,则在分支目标缓冲器的每一项中扩展分支预测位,当分支目标缓冲器访问命中时,通过分支预测位获取预测的分支目标地址和在缓存中预测的路,并通过路预测模式直接访问该预测的路。
进一步地,在分支目标缓冲器的每一项中扩展分支预测位,当分支目标缓冲器访问命中时,通过分支预测位获取预测的分支目标地址和在缓存中预测的路,并通过路预测模式直接访问该预测的路,具体包括:
在建立分支目标缓冲器的新项的同时扩展分支预测位,该分支预测位的位数为LogN,N是缓存的组相联度;
在取指过程中,若分支目标缓冲器访问命中,则通过分支预测位同时得到分支目标地址和预测的路,通过产生SRAM使能信号直接访问该预测的路,SRAM使能信号包括标签RAM和/或数据RAM的使能信号;并通过路预测访问模式进行路预测检查;
如果检查所述路预测正确,则继续下一组指令的取指操作;如果检查路预测错误,则暂停下一组指令的取指操作,在下一周期通过执行传统缓存访问选出正确的路,并更新分支预测位。
进一步地,判断取指模式还包括:根据SRAM使能信号的反馈进行判断。
为了解决上述技术问题,一种超标量处理器实现指令缓存路选择的装置,其特征在于,包括取指请求逻辑单元和路选择融合缓存模块,其中:
取指请求逻辑单元,用于至少根据缓存取指请求判断取指模式;
路选择融合缓存模块,用于根据取指模式属于顺序取指场景采用路历史模式进行路预测,根据取指模式属于非顺序取指场景采用路预测模式进行路预测。
进一步地,路选择融合缓存模块包括在取指单元中添加的当前路指针寄存器、在分支目标缓冲器中添加的分支预测位阵列,还包括路访问模式选择单元和SRAM使能逻辑单元,其中:
当前路指针寄存器,用于在取指模式属于顺序取指令场景,即取指模式为顺序取指且当前指令与下一指令在同一缓存行中,记录当前指令在缓存中所在的路及其是否有效,并输出给路访问模式选择单元;
分支预测位阵列,用于在取指模式属于非顺序取指场景,即当前指令与下一条指令的地址不连续,并且在分支目标缓冲器访问命中时,指明分支目标地址指令在缓存中所在的路,并将相应项的分支预测位输出给路访问模式选择单元;
路访问模式选择单元,用于在输入的当前路指针有效且下一指令为连续取指时,选择当前路指针作为路预测的访问模式输出,或者,在输入的当前路指针无效或下一指令为非连续取指,则选择分支预测位作为路预测的访问模式;
SRAM使能逻辑单元,用于根据路预测的访问模式产生SRAM使能信号,包括Tag RAM和/或Data RAM的使能信号,并反馈给取指请求逻辑单元。
进一步地,路选择融合缓存模块还包括添加在缓存中的顺序路指针阵列,以及添加在路访问模式选择单元和SRAM使能逻辑单元之间的顺序路指针选择单元和路指针选择单元,其中:
路访问模式选择单元将缓存中通过标签访问相应数据的路序号传输给顺序路指针选择单元,并将选择的当前路指针或分支预测位作为路预测的访问模式输出给路指针选择单元;
顺序路指针阵列,用于在取指模式属于顺序行间取指场景,即取指模式为顺序取指且当前指令与下一指令不在同一缓存行中,根据标签比较历史记录中比较的命中路数,指明相应的缓存行最后一条指令顺序执行时下一条指令所在的路及其是否有效,并输出给顺序路指针选择单元;
顺序路指针选择单元,用于根据路序号从顺序路指针阵列中选择相应的顺序路指针,并输出给路指针选择单元;
路指针选择单元,用于在下一指令为连续取指并与当前指令处于同一缓存行中时,选择路访问模式选择单元输出的当前路指针为路指针输出,或者在下一指令为连续取指以及与当前指令处于不同缓存行中,则选择顺序路指针选择单元输出的顺序路指针作为路指针输出;或者,在下一指令为非连续取指,则选择路访问模式选择单元输出的分支预测位为路指针输出;
SRAM使能逻辑单元在路指针选择单元输出的路指针为顺序路指针时,若判断该顺序路指针有效,则根据该顺序路指针指出的路产生标签RAM、数据RAM以及顺序路指针RAM的三种使能信号中的一种或多种作为SRAM使能信号反馈给取指请求逻辑单元;当判断该顺序路指针无效,则产生标签RAM、数据RAM以及顺序路指针RAM三种使能信号作为SRAM使能信号反馈给取指请求逻辑单元,并更新该顺序路指针。
进一步地,
SRAM使能逻辑单元在路指针选择单元输出的所述路指针为顺序路指针时,若判断为非对齐取指,即为顺序取指的下一指令与当前指令处于同一取指组且分布在地址连续的两个缓存行中,则将本缓存行的顺序路指针与当前路指针进行比较,根据比较结果为不同判断取指组保存在不同的SRAM中,则将产生的两个相应的数据RAM使能信号作为SRAM使能信号;根据比较结果为相同判断取指组保存在相同的SRAM中,则将产生的一个数据RAM使能信号作为SRAM使能信号;将SRAM使能信号反馈给取指请求逻辑单元。
进一步地,
当前路指针包括第一预测位和第一有效位,其中,第一预测位的位数为LogN,用于记录当前指令在所述缓存中所在的路;第一有效位的位数至少为1,用于判断记录的所述的路是否有效;顺序路指针包括第二预测位和第二有效位,其中,第二预测位的位数为LogN,用于指明缓存行最后一条指令顺序执行时下一条指令所在的路;第二有效位的位数至少为1,用于判断指明的路是否有效;分支预测位的位数为LogN,用于指明分支目标地址指令在缓存中所在的路;
N是所述缓存的组相联度。
进一步地,
取指请求逻辑单元还根据SRAM使能逻辑单元反馈的SRAM使能信号判断取指模式。
本发明通过融合路选择技术将路预测和路历史二者结合起来,针对不同取指场景分成多个不同路选择策略供选择,因而使得超标量处理器从整体上取得了更好的能效性。由于指令缓存中绝大部份为路选择访问,从而避免了大量非必要路的Tag比较及Data访问,另一方面由于使用额外资源较少,使处理器的整体能耗降低。
本发明提供的路选择融合技术虽然也会受到预测错误的影响,但是这种影响只有在非顺序取指时才可能发生,所占比例很小;并且,该技术有效地缩短了非对齐取指组的取指延迟,减少了取指队列(IFQ,Instruction Queue)空闲的情况,从而避免了其造成的流水线发射暂停,因此性能上相对于基础处理器也有所上升。
附图说明
图1为现有的路预测技术示意图;
图2为现有的路历史技术与路预测技术的比较示意图;
图3为本发明的超标量处理器实现指令缓存路选择的装置实施例的结构示意图;
图4为本发明的超标量处理器实现指令缓存路选择的方法实施例流程图。
具体实施方式
以下结合附图和实施例对本发明的技术方案进行详细地说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明的技术方案。
本发明在传统的ICache结构上融合了路预测和路历史两种路选择技术,根据不同的取指场景选择不同的路选择策略,提供了超标量处理器实现指令缓存路选择的方法实施例及相应的装置实施例。
其中,本发明的方法实施例的流程如图3所示,包括如下步骤:
101:根据取指请求和SRAM使能信号判断取指模式;
102~116:根据取指模式分别属于顺序取指场景或非顺序取指场景,相应地采用路历史模式或路预测模式进行路预测。
在上述方法实施例中,根据取指模式属于顺序取指场景采用路历史模式进行路预测,具体包括:
102~105、109:若判断取指模式属于顺序行内取指,即取指模式为顺序取指且当前指令与下一指令在同一Cache行中,则在指令取指单元(IFU,Instruction Fetch Unit)中增加当前路指针(CWL,Current Way Linker),用于记录当前指令在ICache中所在的路,通过产生SRAM使能信号直接访问CWL指向的路;
每一个CWL包括预测位和有效位,其中,预测位的位数为LogN,N是ICache的组相联度;有效位的位数至少为1。
SRAM使能信号包括Tag RAM和/或Data RAM的使能信号,来访问CWL所指向的路。
106~108、109:若判断取指模式属于顺序行间取指,即取指模式为顺序取指且当前指令与下一指令不在同一Cache行中,则在ICache中的每一个Cache行增加顺序路指针(SWL,Sequential Way Linker),用于指明的该Cache行最后一条指令顺序执行时下一条指令所在的路;当判断当前指令所在Cache行的SWL有效,则通过产生SRAM使能信号直接访问该SWL指明的路;否则,采用传统的ICache访问方式下一条指令,并更新该Cache行的SWL;
SRAM使能信号包括Tag RAM、Data RAM以及SWL RAM的使能信号中的一种或多种,来访问SWL所指明的路。
110、108、111:若判断取指模式属于非对齐取指,即取指模式为顺序取指且一个取指组的指令分布在地址连续的两个Cache行中,若判断非对齐取指组保存在不同的SRAM中,则通过SRAM使能逻辑同时产生两个Data RAM来获取分布于两个Cache行中的指令;若判断非对齐取指组保存在相同的SRAM中,则取回当前Cache行的指令。
在上述顺序行间取指模式下,
每一个SWL包括预测位和有效位,其中,预测位的位数为LogN,N是ICache的组相联度;有效位的位数至少为1。
如果判断SWL有效,即其有效位的值为有效,则下一指令在ICache中的位置是唯一确定的,则可直接访问该确定位置下的数据,无需采用路历史访问模式下对所有Tag以及其它路Data的访问;否则,即SWL的有效位的值为无效,对下一条指令采用传统的ICache访问方式。
在上述非对齐取指模式下,
每一个CWL或SWL包括预测位和有效位,其中,预测位的位数为LogN,N是ICache的组相联度;有效位的位数至少为1。
在每次取指时,根据程序计数器(PC)中的低位地址值,判断该取指组为非对齐,并在每次进入一新Cache行取指时,读取并保存其SWL;
比较本Cache行的SWL与CWL,当据SWL与CWL均有效且相应预测位的值不同判断出非对齐取指组中的指令保存在不同的SRAM时,通过SARM使能逻辑产生2个Data RAM的使能信号来同时获取分布于两个Cache行中的指令;否则,均假设两个SRAM相同,将在当前Cache行的指令取回。
本发明使用以上方法的优点在于,只利用现有部件,而不对ICache的结构进行修改,譬如进行更改数据排布方式或增加读口的修改。
在上述方法实施例中,根据取指模式属于非顺序取指场景,采用路预测模式进行路预测,具体包括:
113~116、109:若判断取指模式属于非顺序取指,即当前指令与下一条指令的地址不连续,则通过在BTB中的每一项扩展的分支预测位(BWP,Branch Way Predictor)在BTB访问命中时获取预测的分支目标地址和在ICache中预测的路,通过路预测模式直接访问该BWP预测的路。
在上述非顺序取指模式下,
每一个BWP的预测位的位数为LogN,N是ICache的组相联度。
在建立BTB新项时建立BWP;
在取指过程中,如果访问BTB命中,则同时得到预测的分支目标地址和BWP预测位预测的ICache的路,并通过SRAM使能逻辑直接访问该BWP预测的路,以及通过路预测访问模式进行检查;如果检查预测正确,则继续下一组指令的取指;如果检查预测错误,则暂停下一组指令的取指,下一周期执行传统ICache访问,选出正确的路,并更新BTB中BWP。
SRAM使能逻辑通过产生Tag RAM、Data RAM以及SWL RAM的使能信号中的一种或多种访问该BWP预测的路。
本发明的装置实施例的结构如图4所示,包括取指请求逻辑单元和本发明的路选择融合缓存模块实施例,其中:
取指请求逻辑单元,用于根据ICache取指请求和路选择融合缓存装置反馈的SRAM使能信号判断取指模式;
路选择融合缓存模块,用于根据取指模式分别属于顺序取指场景或非顺序取指场景,相应地采用路历史模式或路预测模式进行路预测。
在本发明的上述装置实施例中,路选择融合缓存模块实施例包括ICache、在取指单元(图4中未示出)中加入的CWL寄存器、在BTB中加入的BWP阵列,还包括Mode Sel单元和SRAM使能逻辑单元,其中:
ICache,用于通过标签(Tag)访问相应Cache行地址下的数据;
CWL寄存器,用于在取指模式属于顺序取指令场景时,记录当前指令在ICache中所在的路及其是否有效,并输出给Mode Sel单元;
BWP阵列,用于在取指模式属于非顺序取指场景且BTB访问命中时指明分支目标地址指令在ICache中所在的路,并将相应项的BWP输出给ModeSel单元;
Mode Sel(路访问模式选择)单元,用于在输入的CWL有效且下一指令为连续取指,则选择CWL为路预测的访问模式输出,或者在输入的CWL无效或下一指令为非连续取指,则选择BWP为路预测的访问模式输出;
SRAM使能逻辑单元,用于根据不同的路预测的访问模式产生SRAM使能信号,包括Tag RAM和/或Data RAM,并反馈给取指请求逻辑单元。
上述装置实施例中,还包括添加在ICache中的SWL阵列,以及添加在Mode Sel单元和SRAM使能逻辑单元之间的SWL Sel单元和Linker Sel单元,其中:
Mode Sel单元将ICache通过Tag访问相应数据的路序号传输给SWL Sel单元,并将选择的路预测的访问模式输出给Linker Sel单元;
SWL阵列,用于在取指模式属于顺序行间取指场景下根据Tag比较历史记录的结果(即记录的比较命中路数),指明相应的Cache行最后一条指令顺序执行时下一条指令所在的路及其是否有效,并输出给SWL Sel单元;
SWL Sel(顺序路指针选择)单元,用于根据Mode Sel单元传输的路序号从SWL阵列中选择相应的SWL,并输出给Linker Sel单元;
Linker Sel(路指针选择)单元,用于在下一指令为连续取指以及处于同一Cache行中,则选择Mode Sel单元输出的CWL为路指针,或者在下一指令为连续取指以及处于不同Cache行中,则选择SWL Sel单元输出的SWL为路指针;或者,在下一指令为非连续取指,则选择Mode Sel单元输出的BWP为路指针;
SRAM使能逻辑单元在Linker Sel单元选择的路指针为SWL时,若判断该SWL有效,则根据SWL指出的路产生Tag RAM、Data RAM以及SWL RAM三种使能信号中的一种或多种反馈给取指请求逻辑单元;当判断该SWL无效,则产生Tag RAM、Data RAM以及SWL RAM三种使能信号给取指请求逻辑单元,并对SWL进行更新。
SRAM使能逻辑单元在Linker Sel单元选择的路指针为SWL时,若判断为非对齐取指,即为顺序取指下一指令与当前指令处于同一取指组且分布在地址连续的两个Cache行中,则将本Cache行的SWL与CWL进行比较,根据比较结果为不同判断非对齐取指组保存在不同SRAM中,则产生两个相应的Data RAM使能信号反馈给取指请求逻辑单元;根据比较结果为相同判断非对齐取指组保存在相同SRAM中,则产生一个Data RAM使能信号反馈给取指请求逻辑单元。
本发明的面向超标量处理器中的指令缓存装置,融合了两种路选择技术,能够根据不同取指场景中使用不同路选择策略,因而从整体上取得了更好的能效性。一方面,由于指令缓存中几乎全部为路选择访问,从而避免了绝大部分的Tag比较以及几乎全部的非必要路的Data访问;另一方面,由于指令缓存使用额外资源少,故从整体上降低了处理器能耗。
本发明的指令缓存装置虽然也会受到预测错误的影响,但是这种影响只有在非顺序取指时才可能发生,故所占比例很小;并且,由于有效地缩短了非对齐取指组的取指延迟,减少了取指队列空闲的情况,从而避免了由其造成的流水线发射暂停,因此性能就是相对于基础处理器也有所上升。
对于本领域的专业人员来说,在了解了本发明内容和原理后,能够在不背离本发明的原理和范围的情况下,根据本发明的方法进行形式和细节上的各种修正和改变,但是这些基于本发明的修正和改变仍在本发明的权利要求保护范围之内。
Claims (13)
1.一种超标量处理器实现指令缓存路选择的方法,包括:
至少根据指令的取指请求判断取指模式;
根据所述取指模式属于顺序取指场景采用路历史模式进行所述路预测,根据所述取指模式属于非顺序取指场景采用路预测模式进行所述路预测。
2.按照权利要求1所述的方法,其特征在于,根据所述取指模式属于顺序取指场景采用路历史模式进行所述路预测,具体包括:
若所述取指模式属于顺序行内取指,即所述取指模式为顺序取指且当前指令与下一指令在同一缓存行中,则在指令取指单元中增加当前路指针来记录当前指令在缓存中所在的路及其是否有效,通过产生SRAM使能信号直接访问所述当前路指针指向的路;
若所述取指模式属于顺序行间取指,即所述取指模式为顺序取指且当前指令与下一指令不在同一缓存行中,则在每一缓存行增加顺序路指针来指明的该缓存行最后一条指令顺序执行时下一条指令所在的路及其是否有效;当判断当前指令所在的缓存行的所述顺序路指针有效,通过产生SRAM使能信号直接访问该顺序路指针指明的路;否则,采用传统的缓存访问方式访问下一条指令,并更新该缓存行的顺序路指针。
3.按照权利要求2所述的方法,其特征在于,
在所述取指模式属于顺序行内取指的场景下,所述当前路指针包括第一预测位和第一有效位,其中,第一预测位的位数为LogN,用于记录所述当前指令在所述缓存中所在的路;所述有效位的位数至少为1,用于判断记录的所述的路是否有效;所述SRAM使能信号包括标签RAM和/或数据RAM的使能信号;
在所述取指模式属于顺序行间取指的场景下,所述顺序路指针包括第二预测位和第二有效位,其中,第二预测位的位数为LogN,用于指明所述缓存行最后一条指令顺序执行时下一条指令所在的路;第二有效位的位数至少为1,用于判断指明的路是否有效;所述SRAM使能信号包括标签RAM、数据RAM以及顺序路指针RAM的使能信号中的一种或多种;
所述N是所述缓存的组相联度。
4.按照权利要求2所述的方法,其特征在于,根据所述取指模式属于顺序取指场景采用路历史模式进行所述路预测,还包括:
若判断所述取指模式属于非对齐取指,即所述取指模式为所述顺序取指,且同一个取指组的指令分布在地址连续的两个缓存行中,当判断所述取指组保存在不同的SRAM中,则通过产生两个数据RAM使能的SRAM使能信号同时获取分布于两个缓存行中的指令;若判断所述取指组保存在相同的SRAM中,则通过产生一个数据RAM使能的SRAM使能信号取回当前缓存行的指令。
5.按照权利要求1所述的方法,其特征在于,根据所述取指模式属于非顺序取指场景采用路预测模式进行所述路预测,具体包括:
若所述取指模式属于非顺序取指,即当前指令与下一条指令的地址不连续,则在分支目标缓冲器的每一项中扩展分支预测位,当所述分支目标缓冲器访问命中时,通过分支预测位获取预测的分支目标地址和在缓存中预测的路,并通过路预测模式直接访问该预测的路。
6.按照权利要求5所述的方法,其特征在于,所述在分支目标缓冲器的每一项中扩展分支预测位,当所述分支目标缓冲器访问命中时,通过分支预测位获取预测的分支目标地址和在缓存中预测的路,并通过路预测模式直接访问该预测的路,具体包括:
在建立所述分支目标缓冲器的新项的同时扩展所述分支预测位,该分支预测位的位数为LogN,所述N是所述缓存的组相联度;
在取指过程中,若所述分支目标缓冲器访问命中,则通过所述分支预测位同时得到所述分支目标地址和所述预测的路,通过产生SRAM使能信号直接访问该预测的路,所述SRAM使能信号包括标签RAM和/或数据RAM的使能信号;并通过路预测访问模式进行路预测检查;
如果检查所述路预测正确,则继续下一组指令的取指操作;如果检查所述路预测错误,则暂停所述下一组指令的取指操作,在下一周期通过执行传统缓存访问选出正确的路,并更新所述分支预测位。
7.按照权利要求2至6任一项所述的方法,其特征在于,所述判断取指模式还包括:根据所述SRAM使能信号的反馈进行所述判断。
8.一种超标量处理器实现指令缓存路选择的装置,其特征在于,包括取指请求逻辑单元和路选择融合缓存模块,其中:
取指请求逻辑单元,用于至少根据缓存取指请求判断取指模式;
路选择融合缓存模块,用于根据所述取指模式属于顺序取指场景采用路历史模式进行所述路预测,根据所述取指模式属于非顺序取指场景采用路预测模式进行所述路预测。
9.按照权利要求8所述的装置,其特征在于,所述路选择融合缓存模块包括在取指单元中添加的当前路指针寄存器、在分支目标缓冲器中添加的分支预测位阵列,还包括路访问模式选择单元和SRAM使能逻辑单元,其中:
当前路指针寄存器,用于在所述取指模式属于顺序取指令场景,即所述取指模式为顺序取指且当前指令与下一指令在同一缓存行中,记录当前指令在缓存中所在的路及其是否有效,并输出给路访问模式选择单元;
分支预测位阵列,用于在所述取指模式属于非顺序取指场景,即当前指令与下一条指令的地址不连续,并且在分支目标缓冲器访问命中时,指明分支目标地址指令在所述缓存中所在的路,并将相应项的分支预测位输出给路访问模式选择单元;
路访问模式选择单元,用于在输入的所述当前路指针有效且下一指令为连续取指时,选择所述当前路指针作为路预测的访问模式输出,或者,在输入的所述当前路指针无效或所述下一指令为非连续取指,则选择所述分支预测位作为路预测的访问模式;
SRAM使能逻辑单元,用于根据所述路预测的访问模式产生SRAM使能信号,包括Tag RAM和/或Data RAM的使能信号,并反馈给所述取指请求逻辑单元。
10.按照权利要求9所述的装置,其特征在于,所述路选择融合缓存模块还包括添加在所述缓存中的顺序路指针阵列,以及添加在所述路访问模式选择单元和所述SRAM使能逻辑单元之间的顺序路指针选择单元和路指针选择单元,其中:
所述路访问模式选择单元将所述缓存中通过标签访问相应数据的路序号传输给顺序路指针选择单元,并将选择的所述当前路指针或所述分支预测位作为所述路预测的访问模式输出给路指针选择单元;
顺序路指针阵列,用于在所述取指模式属于顺序行间取指场景,即所述取指模式为顺序取指且当前指令与下一指令不在同一缓存行中,根据标签比较历史记录中所述比较的命中路数,指明相应的缓存行最后一条指令顺序执行时下一条指令所在的路及其是否有效,并输出给顺序路指针选择单元;
顺序路指针选择单元,用于根据所述路序号从所述顺序路指针阵列中选择相应的顺序路指针,并输出给路指针选择单元;
路指针选择单元,用于在下一指令为连续取指并与当前指令处于同一缓存行中时,选择所述路访问模式选择单元输出的所述当前路指针为路指针输出,或者在下一指令为连续取指以及与当前指令处于不同缓存行中,则选择顺序路指针选择单元输出的所述顺序路指针作为路指针输出;或者,在下一指令为非连续取指,则选择所述路访问模式选择单元输出的所述分支预测位为路指针输出;
所述SRAM使能逻辑单元在所述路指针选择单元输出的所述路指针为所述顺序路指针时,若判断该顺序路指针有效,则根据该顺序路指针指出的路产生标签RAM、数据RAM以及顺序路指针RAM的三种使能信号中的一种或多种作为所述SRAM使能信号反馈给所述取指请求逻辑单元;当判断该顺序路指针无效,则产生标签RAM、数据RAM以及顺序路指针RAM三种使能信号作为所述SRAM使能信号反馈给所述取指请求逻辑单元,并更新该顺序路指针。
11.按照权利要求10所述的装置,其特征在于,
所述SRAM使能逻辑单元在所述路指针选择单元输出的所述路指针为所述顺序路指针时,若判断为非对齐取指,即为顺序取指的下一指令与当前指令处于同一取指组且分布在地址连续的两个缓存行中,则将本缓存行的所述顺序路指针与所述当前路指针进行比较,根据比较结果为不同判断所述取指组保存在不同的SRAM中,则将产生的两个相应的数据RAM使能信号作为所述SRAM使能信号;根据比较结果为相同判断所述取指组保存在相同的SRAM中,则将产生的一个数据RAM使能信号作为所述SRAM使能信号;将所述SRAM使能信号反馈给取指请求逻辑单元。
12.按照权利要求10所述的装置,其特征在于,
所述当前路指针包括第一预测位和第一有效位,其中,第一预测位的位数为LogN,用于记录所述当前指令在所述缓存中所在的路;第一有效位的位数至少为1,用于判断记录的所述的路是否有效;所述顺序路指针包括第二预测位和第二有效位,其中,第二预测位的位数为LogN,用于指明所述缓存行最后一条指令顺序执行时下一条指令所在的路;第二有效位的位数至少为1,用于判断指明的路是否有效;所述分支预测位的位数为LogN,用于指明所述分支目标地址指令在所述缓存中所在的路;
所述N是所述缓存的组相联度。
13.按照权利要求9至12任一项所述的装置,其特征在于,
所述取指请求逻辑单元还根据所述SRAM使能逻辑单元反馈的所述SRAM使能信号判断所述取指模式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110216544.8A CN102306092B (zh) | 2011-07-29 | 2011-07-29 | 超标量处理器实现指令缓存路选择的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110216544.8A CN102306092B (zh) | 2011-07-29 | 2011-07-29 | 超标量处理器实现指令缓存路选择的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102306092A true CN102306092A (zh) | 2012-01-04 |
CN102306092B CN102306092B (zh) | 2014-04-09 |
Family
ID=45379958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110216544.8A Active CN102306092B (zh) | 2011-07-29 | 2011-07-29 | 超标量处理器实现指令缓存路选择的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102306092B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
CN102841857A (zh) * | 2012-07-25 | 2012-12-26 | 龙芯中科技术有限公司 | 缓存预测执行的处理器与装置及方法 |
WO2015165017A1 (zh) * | 2014-04-28 | 2015-11-05 | 华为技术有限公司 | 一种数据处理装置及方法 |
WO2017107811A1 (zh) * | 2015-12-21 | 2017-06-29 | 阿里巴巴集团控股有限公司 | 数据库操作方法及装置 |
CN111459549A (zh) * | 2020-04-07 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
CN111459551A (zh) * | 2020-04-14 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN112559049A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置 |
CN112612519A (zh) * | 2020-12-11 | 2021-04-06 | 海光信息技术股份有限公司 | 一种取指方法、装置、电子设备及存储介质 |
CN115328821A (zh) * | 2022-10-18 | 2022-11-11 | 北京红山微电子技术有限公司 | 基于GPU的可重构Cache系统、访存系统及访存方法 |
CN115809207A (zh) * | 2023-01-19 | 2023-03-17 | 北京象帝先计算技术有限公司 | Cache中地址标记方法、装置、图形处理系统及电子设备 |
CN117472798A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 高速缓存的路预测方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1675626A (zh) * | 2002-08-12 | 2005-09-28 | 皇家飞利浦电子股份有限公司 | 用于转移目标的指令高速缓冲存储器通路预测 |
US20060224870A1 (en) * | 1999-09-29 | 2006-10-05 | Tago Shin-Ichiro | Information processing device |
CN1890631A (zh) * | 2003-12-03 | 2007-01-03 | 先进微装置公司 | 于卷标边界自指令缓存至追踪缓存的转换 |
-
2011
- 2011-07-29 CN CN201110216544.8A patent/CN102306092B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060224870A1 (en) * | 1999-09-29 | 2006-10-05 | Tago Shin-Ichiro | Information processing device |
CN1675626A (zh) * | 2002-08-12 | 2005-09-28 | 皇家飞利浦电子股份有限公司 | 用于转移目标的指令高速缓冲存储器通路预测 |
CN1890631A (zh) * | 2003-12-03 | 2007-01-03 | 先进微装置公司 | 于卷标边界自指令缓存至追踪缓存的转换 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
US9880937B2 (en) | 2012-05-02 | 2018-01-30 | Huawei Technologies Co., Ltd. | Dynamic set associative cache apparatus for processor and access method thereof |
CN102841857A (zh) * | 2012-07-25 | 2012-12-26 | 龙芯中科技术有限公司 | 缓存预测执行的处理器与装置及方法 |
CN102841857B (zh) * | 2012-07-25 | 2015-02-25 | 龙芯中科技术有限公司 | 缓存预测执行的处理器与装置及方法 |
WO2015165017A1 (zh) * | 2014-04-28 | 2015-11-05 | 华为技术有限公司 | 一种数据处理装置及方法 |
CN105308557A (zh) * | 2014-04-28 | 2016-02-03 | 华为技术有限公司 | 一种数据处理装置及方法 |
CN105308557B (zh) * | 2014-04-28 | 2018-06-15 | 华为技术有限公司 | 一种数据处理装置及方法 |
WO2017107811A1 (zh) * | 2015-12-21 | 2017-06-29 | 阿里巴巴集团控股有限公司 | 数据库操作方法及装置 |
CN112559049A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 用于指令高速缓存的路预测方法、访问控制单元以及指令处理装置 |
CN111459549A (zh) * | 2020-04-07 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具有高度领先分支预测器的微处理器 |
US11379243B2 (en) | 2020-04-07 | 2022-07-05 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Microprocessor with multistep-ahead branch predictor |
CN111459551A (zh) * | 2020-04-14 | 2020-07-28 | 上海兆芯集成电路有限公司 | 具高度领先分支预测器的微处理器 |
CN112612519A (zh) * | 2020-12-11 | 2021-04-06 | 海光信息技术股份有限公司 | 一种取指方法、装置、电子设备及存储介质 |
CN112612519B (zh) * | 2020-12-11 | 2022-06-21 | 成都海光微电子技术有限公司 | 一种取指方法、装置、电子设备及存储介质 |
CN115328821A (zh) * | 2022-10-18 | 2022-11-11 | 北京红山微电子技术有限公司 | 基于GPU的可重构Cache系统、访存系统及访存方法 |
CN115328821B (zh) * | 2022-10-18 | 2022-12-23 | 北京红山微电子技术有限公司 | 基于GPU的可重构Cache系统、访存系统及访存方法 |
CN115809207A (zh) * | 2023-01-19 | 2023-03-17 | 北京象帝先计算技术有限公司 | Cache中地址标记方法、装置、图形处理系统及电子设备 |
CN115809207B (zh) * | 2023-01-19 | 2023-04-18 | 北京象帝先计算技术有限公司 | Cache中地址标记方法、装置、图形处理系统及电子设备 |
CN117472798A (zh) * | 2023-12-28 | 2024-01-30 | 北京微核芯科技有限公司 | 高速缓存的路预测方法、装置、电子设备及存储介质 |
CN117472798B (zh) * | 2023-12-28 | 2024-04-09 | 北京微核芯科技有限公司 | 高速缓存的路预测方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102306092B (zh) | 2014-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102306092B (zh) | 超标量处理器实现指令缓存路选择的方法及装置 | |
US7594131B2 (en) | Processing apparatus | |
JP3784766B2 (ja) | 多ポート統合キャッシュ | |
KR101710116B1 (ko) | 프로세서, 메모리 관리 장치 및 방법 | |
CN104731719B (zh) | 一种缓存系统和方法 | |
CN110069285A (zh) | 一种检测分支预测的方法及处理器 | |
CN102855121B (zh) | 分支处理方法与系统 | |
CN101493762B (zh) | 处理数据的方法和设备 | |
CN102841857B (zh) | 缓存预测执行的处理器与装置及方法 | |
CN108287730A (zh) | 一种处理器流水线结构 | |
CN103198026A (zh) | 指令高速缓存功耗降低 | |
US5774710A (en) | Cache line branch prediction scheme that shares among sets of a set associative cache | |
JP2006134331A (ja) | ブランチ目的アドレスを利用してキャッシュウェイを予測するプロセッサ及びその方法 | |
CN102968294B (zh) | 用于低复杂性指令预取系统的方法和设备 | |
CN102117198A (zh) | 一种分支处理方法 | |
CN1725175A (zh) | 分支目标缓冲器及其使用方法 | |
KR100955433B1 (ko) | 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법 | |
US9552032B2 (en) | Branch prediction power reduction | |
CN103377036A (zh) | 分支预测功率降低 | |
CN102662640A (zh) | 双重分支目标缓冲器和分支目标处理系统及处理方法 | |
CN101501635B (zh) | 用于减少在分支目标地址高速缓冲存储器中查找的方法和设备 | |
US20140115264A1 (en) | Memory device, processor, and cache memory control method | |
GB2386448A (en) | Prediction of instructions in a data processing apparatus | |
CN106843816B (zh) | 一种分支预测控制方法及装置 | |
CN101189574B (zh) | 指令存储器单元和操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160330 Address after: 100080 Beijing City, Haidian District Zhongguancun No. 151 North Street Yanyuan resources building room 1107 Patentee after: Beijing Zhongzhi core technology Co. Ltd. Address before: 100080, Beijing Haidian District Zhongguancun 151 North Street, building 11, resources Patentee before: Beida Zhongzhi Microsystem Science and Technology Co., Ltd., Beijing |