用于取消对循环的数据预取请求的方法和设备的制造方法_2

文档序号:9355152阅读:来源:国知局
存取步幅设定的操作数地址的预取请求。例如,数据预取逻辑121可包含步幅电路119,所述步幅电路经配置以监视加载指令的重复执行,从而确定加载指令的每一执行的操作数地址之间的差,所述差表示步幅值。步幅电路119也可包含加法函数,所述加法函数经配置以将所确定的步幅值与最近执行的加载指令的操作数地址相加以产生下一操作数地址。与将步幅值作为预测地址相对比,已预取条件分支指令使用分支预测逻辑(例如,含于预测逻辑电路122中)以预测是否将采用条件分支且预测分支地址。已提取非分支指令前进到解码级131以供解码,在指令发出级132中经发出以供执行,在执行级134中经执行,且在完成级135中被淘汰。
[0021]预测逻辑电路122包括用于监视事件的检测逻辑电路146、筛选器150和条件历史表152。在一个实施例中,假定大部分条件分支指令通常针对软件循环的大多数反复而使其条件解析为同一值。
[0022]在一个实施例中,检测逻辑电路146充当软件循环检测器,所述软件循环检测器基于用于如关于图2A所描述的软件循环中的条件分支指令的动态特性而操作。检测逻辑电路146也可检测从被呼叫软件函数的退出,如关于图2B所描述。
[0023]在具有单一进入点和单一退出点的软件循环中,循环结束分支通常为针对循环的除最后反复外的所有反复而分支返回到软件循环的开始处的条件分支指令,所述最后反复退出软件循环。检测逻辑电路146可具有关于软件循环的检测的多个实施例,如下文更详细地且在题为“通过循环结束分支抑制分支历史寄存器的更新(Suppressing Update of aBranch History Register by Loop-Ending Branches) ”、让渡给本申请案的受让人的美国专利申请案11/066,508中所描述,所述案的全文以引用的方式并入本文中。
[0024]根据一个实施例,检测逻辑电路146识别条件分支指令,所述条件分支指令具有小于条件分支指令地址的分支目标地址,且因此被视为反向分支,且假定标记软件循环的结束。由于并非所有反向分支皆为循环结束分支,因此存在可需要由(例如)额外监视机制解决的某种程度的不准确性。
[0025]又,如关于图2B所描述,可检测函数返回指令(通常命名为RET)。根据一个实施例,对函数返回的检测适用于触发任何非必要预取请求的预取消除。也响应于程序流信息(例如,检测到循环退出)而进行预取请求的取消。
[0026]在另一实施例中,在简单循环中可通过辨识同一分支指令的重复执行而检测循环结束分支。通过将最后反向分支指令的程序计数器值存储于特殊用途寄存器中和比较此所存储值与下一反向分支指令的指令地址,可在两个指令地址匹配时辨识出循环结束分支。由于代码可包含软件循环内的条件分支指令,因此循环结束分支指令的确定可变得更为复杂。在此情形下,可以硬件例示多个特殊用途寄存器以存储每一条件分支指令的指令地址。通过与所有所存储值比较,可针对循环结束分支确定匹配。通常,循环分支为具有从程序计数器(PC)的固定位移的条件反向直接分支。这些类型的分支将不需要用于检测循环退出的地址比较。实情为,一旦基于条件反向直接分支检测到程序循环,便从分支的谓词的解析来确定循环退出。例如,如果谓词解析到用于返回到循环的真条件,那么将在谓词解析到假条件时指示循环退出。为了使得将存在未决预取,程序循环将已执行数次以触发预取硬件。数据预取逻辑121需要数次暖机必要加载以在其开始预取之前辨识模式。
[0027]又,也可由编译器或组译器静态标记循环结束分支。例如,在一个实施例中,编译器通过使用唯一操作码或通过设定仅用于循环结束分支的特殊格式位字段来产生特定类型的分支指令。接着可易于在管线执行期间(例如,在管线中的解码级期间)检测循环结束分支。
[0028]预测逻辑电路122包括筛选器150、条件历史表(CHT) 152和相关联的监视逻辑。在一个实施例中,监视过程保存预先指定的条件事件的状态信息,所述条件事件已在具有适合于预测的条件分支指令的软件循环的一或多次先前执行中发生。为支持预测逻辑电路122,筛选器150确定是否已接收已提取条件分支指令且是否启用CHT 152。选择CHT 152中的条目以提供在指令通过管线时(例如)由管线级132到135追踪的预测信息。
[0029]CHT 152条目记录适用于预测执行的已提取指令的执行历史。例如,每一 CHT条目可合适地包括来自执行状态计数器的计数值与状态位的组合,所述状态位为到预测逻辑的输入。CHT 152也可包括索引逻辑以允许已提取条件分支指令索引到CHT 152中与已提取指令相关联的条目,这是因为多个条件分支指令可存在于软件循环中。例如,通过对来自软件循环的顶部的条件分支指令的数目进行计数,所述计数可用作CHT 152的索引。预测逻辑电路122包含循环计数器,所述循环计数器用于对软件循环的反复进行计数且确保执行状态计数器已有机会饱和于表示(例如)强不执行状态的指定计数值。如果执行状态计数器已饱和,那么预测逻辑经启用以对相关联的已提取条件分支指令在循环的下一反复上的分支方向作出预测。
[0030]预测逻辑电路122产生分别在追踪寄存器发出(TrI) 162、追踪寄存器操作数提取163、追踪寄存器执行(TrE) 164和追踪寄存器完成(TrC) 165中在指令发出级132、操作数提取级133、执行级134和完成级135处追踪的预测信息。当(例如)在处理器管线中的执行级134期间检测到具有指示循环结束的失败谓词或函数返回的条件反向分支时,产生取消未决预取请求信号155。在另一实施例中,基于由分支预测逻辑产生的条件分支预测而取消未决预取请求。每一条件分支通常由分支预测逻辑预测采用或不采用所述条件分支。例如,在预测信息指示采用条件分支(在此实例中,此情形使程序循环继续)的情况下,指令提取器以推测方式提取由所述预测指示的程序循环上的指令。预测信息也耦合到可驻留于提取和预取电路130中的取消未决预取请求逻辑电路141。取消未决预取请求逻辑电路141可接着基于指示不需要未决预取请求的程序流信息而以推测方式取消未决预取请求。例如,处理器可经配置以基于弱预测性循环退出而不取消未决预取请求。通过取消一或多个未决数据预取请求,在处理器110中减少了数据高速缓存污染且减少了用以处理此污染的功率。取消未决预取请求信号155耦合到处理器指令管线120(如图1中所展示),且由取消未决预取请求逻辑电路141接受,所述取消未决预取请求逻辑电路使得取消除必要预取请求外的未决预取请求。又,通过不将不必要的数据存储于可具有将已被提取的已收回数据的数据高速缓冲存储器中,改善了处理器性能,且现在替代地产生命中。
[0031]在到达执行级134后,如果已将指定用于循环结束条件分支指令的执行条件评估为与其预测相反,那么(例如)通过清空管线来校正错误指令路径上的指令的任何管线推测性执行,此校正可包含取消与错误指令路径相关联的未决预取。例如,在一个实施例中,对管线的校正包含清空管线中在作出预测的级处开始的指令。在一替代实施例中,从最初提取循环结束条件分支指令的开始提取级清空管线。又,也可在不正确预测之后校正适当CHT条目。
[0032]充当循环检测器的检测电路146操作以检测循环结束分支。例如,循环结束分支通常为针对循环的除最后反复外的所有反复而分支返回到循环的开始处的条件分支指令,所述最后反复退出所述循环。关于每一识别到的循环的信息经传递到筛选器电路150,且在识别到循环退出情形后,取消未决预取请求逻辑电路141响应于每一识别到的循环退出而取消未决非必要预取请求。
[0033]在一个实施例中,筛选器电路150 (例如)为循环计数器,所述循环计数器提供已发生软件循环的设定数目个反复(例如,特定循环的三个反复)的指示。对于循环的每一反复,筛选器确定条件分支指令是否适合于预测。如果入选条件分支(CB)指令在循环中,那么将执行CB指令的状态记录于条件历史表(CHT)电路152中。例如,执行状态计数器可用以记录入选CB指令的先前例程执行的执行历史。在一个方向上更新执行状态计数器以指示按条件执行CB指令,且在相反方向上更新执行状态计数器以指示按条件不执行CB指令。例如,可使用两位执行状态计数器,其中不执行状态引起计数器的递减且已执行状态引起计数器的递增。例如,执行状态计数器的输出状态被指派输出“11”以指示先前CB指令被强指示为已执行,被指派输出“10”以指示先前CB指令被弱指示为已执行,被指派输出“01”以指示先前CB指令被弱指示为尚未执行,
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1