首页> 中国专利> 用于选择性地禁止猜测性的条件分支执行的方法和设备

用于选择性地禁止猜测性的条件分支执行的方法和设备

摘要

本发明公开了一种用于选择性地禁止猜测性的条件分支执行的方法、设备和计算机程序产品。选择特定类型的条件分支指令。在是所述特定类型的条件分支指令的每个指令内存储指示。然后处理器从要执行的代码中读取第一指令。作出关于所述第一指令是否包括所述指示的确定。响应确定所述指令包括所述指示:禁止所述第一指令的猜测性的执行,分辨所述第一指令将要转移到的实际位置,以及把所述代码的执行转移到所述实际位置。响应确定所述指令不包括所述指示,猜测性地执行所述第一指令。

著录项

  • 公开/公告号CN1782988A

    专利类型发明专利

  • 公开/公告日2006-06-07

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200510082635.1

  • 申请日2005-07-06

  • 分类号G06F9/38(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人王茂华

  • 地址 美国纽约阿芒克

  • 入库时间 2023-12-17 17:16:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-08-18

    未缴年费专利权终止 IPC(主分类):G06F9/38 授权公告日:20080220 终止日期:20160706 申请日:20050706

    专利权的终止

  • 2008-02-20

    授权

    授权

  • 2006-08-02

    实质审查的生效

    实质审查的生效

  • 2006-06-07

    公开

    公开

说明书

技术领域

本发明涉及数据处理系统。更具体地,本发明涉及一种用于选择性地禁止猜测性的条件分支执行的方法、设备和计算机程序产品。

背景技术

超标量处理器能够并发执行指令。超标量处理器能在对称多处理(SMP)系统、同时多线程(SMT)系统或其他类型的计算机系统内实现。对称多处理(SMP)数据处理系统具有是对称的多个处理器,各个处理器具有相同的处理速度和等待时间。SMP系统具有一个把工作分成多个任务的操作系统,通过每次向每个处理器调度工作的一个软件线程,这些任务被均匀地分配到各个处理器。因而,SMP系统中的处理器每次仅执行一个线程。

同时多线程(SMT)数据处理系统包括多个处理器,它们每个每次能并发地执行多于一个线程。当两个线程在相同处理器上运行时,SMT系统具有使一个线程比另一个更有利的能力。

包括SMP系统、SMT系统和其他系统的已知计算机系统典型地猜测性地执行条件分支指令,以便改进系统内的处理效率。处理器中的读取引擎猜测分支指令以后,以便为解码、调度和执行流水线提供连续指令流,以便保持潜在地可执行指令的较大窗口。

指令读取性能基于多个因素。分支预测准确性长期以来被认为是确定读取性能的重要因素。

现代微处理器程序地使用多种机制来改进它们的能力,以有效地读取分支指令以后。预测机制允许处理器在已知分支的结果之前,读取分支指令以外。例如,有些机制允许处理器在计算出分支的实际目标地址之前,猜测性地读取分支以外。这些技术使用运行时间历史来猜测性地预测实际目标地址将是什么。因而,这些技术通过预测实际目标地址将是什么,猜测性地预测应该读取哪些指令。

“条件分支”指令的执行可能会产生重大流水线延迟惩罚。条件分支指令是响应一个或多个其他指令的处理的特定结果,命令采用指定条件分支的指令。条件分支或者被采用或者不被采用。如果条件分支被采用,处理将转到一个特定目标地址,这个地址不是正在处理的代码中的下一个顺序地址。然后将处理从这个非顺序目标地址开始存储的指令。如果条件分支不被采用,处理将直接落到代码中的下一个顺序地址。然后处理从这个下一个顺序地址开始存储的指令。

通过预先预测条件分支指令是否将被采用或不被采用,能猜测性地处理条件分支指令。如果预测条件分支将被采用,则猜测性地执行从特定非顺序目标地址开始存储的指令。如果预测条件分支将不被采用,则猜测性地执行从下一个顺序地址开始存储的指令。当实际分辨条件分支指令时,则知道是否将采用条件分支指令。如果预测正确,则处理在完成猜测性地执行的指令下继续。如果预测不正确,则必须从处理器清除猜测性地执行的指令,并且重新取回和执行正确的指令。清除猜测性地执行的指令不必要地消耗功率和处理资源。

随着功率消耗正成为基于微处理器的系统设计的更关键方面,防止不必要工作的机制对于设计具有重大价值。目前微处理器因为不正确地预测分支指令而执行相当大量的不必要工作,其中读取、解码和执行分支以后的错误指令,而仅当发现预测目标地址原来不是实际目标地址时才清除这些错误指令。因而,猜测性地执行的指令处在错误路线。

在现代微处理器中,典型地早在指令处理的解码阶段预测分支指令将被采用或不被采用。如果分支所基于的实际条件原来与预测值相反,则跟随该分支的指令需要被清除,并且程序的执行需要用分支的正确路线恢复。

在功率敏感环境中,当预测准确性低时,对分支的猜测是性能与功率的较差权衡,因而使所用的功率的每瓦特的性能降低。当处理器在同时多线程(SMT)模式时,不准确猜测消耗功率以及处理器中另一个线程本来能利用的周期。

分支预测准确性可以基于许多因素广泛地变化。如果功率消耗是重要因素,关断分支预测能显著地减小功率,但是也可能显著地降低性能。

因此,需要一种方法、系统和计算机程序产品,用于对趋向于非可靠地预测的特定类型的分支指令,阻止猜测性的执行,以便节省功率和改进处理器性能。

发明内容

公开了一种用于选择性地禁止猜测性的条件分支执行的方法、设备和计算机程序产品。选择特定类型的条件分支指令。在是该特定类型的条件分支指令的每个指令内存储指示。然后处理器从要执行的代码中读取第一指令。通过检查该第一指令的操作码,作出关于该第一指令是否包括该指示的确定。响应确定该指令包括该指示:禁止该第一指令的猜测性的执行,分辨该第一指令将要转移到的实际位置,以及把该代码的执行转移到该实际位置。响应确定该指令不包括该指示,猜测性地执行该第一指令。

在以下详细写出的描述中,本发明的以上以及另外目的、特征和优点将变得显而易见。

附图说明

所附权利要求书阐述了被认为是本发明之特征的新颖特征。然而,通过连同附图一起阅读说明性的实施方式的下述详细描述,将更好地理解该发明本身、其优选使用方式、其它目的及其优点,其中:

图1是根据本发明的能用于实现本发明的超标量处理器的方块图;

图2是根据本发明的包括如图1所示那样的处理器的计算机系统的说明;

图3举例说明了一个高级流程图,它示出了根据本发明选择用于选择性的非猜测性的执行的条件分支指令的类型,并且改变用于这些选择类型的条件分支指令的操作码;

图4示出了一个高级流程图,它举例说明了根据现有技术执行条件分支指令;和

图5举例说明了一个高级流程图,它示出了根据本发明在一个其中允许猜测性的执行的处理器中,选择性地禁止选择类型的条件分支指令的猜测性的执行。

具体实施方式

通过参考附图,能更好地理解本发明的优选实施方式及其优点,相同标号用于附图的相同和对应部分。

本发明是一种用于选择性地禁止猜测性的条件分支执行的方法、设备和计算机程序产品。选择特定类型的条件分支指令。通过使用操作码中的先前不用位,修改所选择类型的条件分支指令的操作码。当对特定指令设置这个位时,该指令将不会被猜测性地执行。因而,在代码中跟随该特定指令的指令也将不会被猜测性地执行。当清除这个位时,该指令和跟随这个指令的指令可以被猜测性地执行。

当猜测性地执行条件分支时,预测该条件分支是否将被采用或不被采用。然后确定预测目标地址。位于代码中从这个目标地址开始的指令也将被猜测性地执行。然后分辨该条件分支,以确定该分支将要转移到的实际位置。如果预测正确并且目标地址和预测地址相同,则允许完成这些指令,它们包括该分支和跟随该分支的指令,其被猜测性地执行。如果预测不正确并且目标和预测地址不同,则清除从目标地址开始存储的猜测性地执行的指令。

实际位置将是代码中的下一个顺序地址,或将是一个非顺序地址,它是一个不是代码中的下一个顺序地址的地址。当条件分支被采用时,实际地址是非顺序目标地址。当条件分支不被采用时,实际地址是下一个顺序地址。

本发明禁止所选择类型的条件分支指令的猜测性的执行。当读取了一个条件分支指令时,检查指定位。如果该位被设置,该条件分支指令将不被猜测性地执行。如果该位被清除,该条件分支指令可以被猜测性地执行。

本发明在已经确定猜测性的指令很可能最终被清除的情况下,通过不执行猜测性的指令,节省处理器的功率。除节省功率外,本发明还给SMT处理器中的其他线程更多的处理周期。因而,在单线程处理器上,当该位被设置时不做猜测性的工作,从而节省功率。在多线程处理器例如SMT处理器上,代替在猜测性的工作上浪费周期从而功率,使处理器中的其他线程得到更多资源使用,以执行能产生结果的工作。

如果本发明在单线程处理器上实现,该处理器停止处理,直到计算出实际分支目标为止。如果本发明在多线程处理器例如SMT处理器上实现,SMT处理器的资源将给予正在处理器上执行的其他线程。

为非猜测性的处理选择特定类型的条件分支指令。这些指令是没有准确地预测的指令。任何已知方法可以用于追踪条件分支指令的预测准确性。例如,可以使用分支历史表、分支处理试探法或任何其他适当的方法。

根据本发明,指令能由程序设计员选择,或能在编译器内自动地选择,其可以编程成选择具有阈值之下的准确性预测率的指令。

超标量处理器在处理器流水线中包括多个阶段,如以下这样。在典型的第一阶段,称为指令读取阶段,从存储器或联合存储器结构读取指令,每个阶段包括一个或多个流水线。然后,在解码阶段,指令被解码成不同的控制位,它们一般指明(1)用于执行由指令所指定的操作的功能单元的类型,(2)用于操作的源操作数,和(3)用于操作结果的目的地。

在调度阶段,解码的指令按每个控制位被调度给具有执行阶段的单元,或可能调度给干预保留站(intervening reservationstation),它最终把指令发布给一个相关联的执行阶段(也称为“执行单元”)。

执行阶段处理如指令所指定的操作。执行由指令所指定的操作包括接受一个或多个操作数,并且产生一个或多个结果。指令时常是乱序的。

完成阶段处理从并发执行发生的程序次序问题,其中多个并发执行的指令可以把结果转储在单个寄存器中。它还处理从中断指令随后的指令产生的恢复问题,其把结果转储在它们的目的寄存器中。这个阶段有时也称为写回阶段,因为正是在此时把指令执行的结果写回到指定位置例如寄存器。

图1是根据本发明的能用来实现本发明的超标量处理器的方块图。如所示,超标量处理器10典型地包括系统总线11,与总线接口单元(“BIU”)12相连接。BIU 12控制处理器10与系统总线11之间信息的传送。BIU 12与处理器10的指令高速缓冲存储器14和数据高速缓冲存储器16连接。指令高速缓冲存储器14向定序器单元18输出指令。响应从指令高速缓冲存储器14的这样指令,定序器单元18选择性地向处理器10的其他执行电路输出指令。

除包括调度单元46和完成单元48的执行单元的定序器单元18外,在该优选实施方式中,处理器10的执行电路还包括多个执行单元,即分支单元20、定点单元A(“FXUA”)22、定点单元B(“FXUB”)24、复定点单元(“CFXU”)26、装载/存储单元(“LSU”)28和浮点单元(“FPU”)30。FXUA 22、FXUB 24、CFXU 26和LSU 28从通用体系结构寄存器(“GPR”)32和定点重命名缓冲器34输入它们的源操作数信息。而且,FXUA 22和FXUB 24从进位(“CA”)寄存器42输入“进位”。同样,CFXU 26从专用寄存器(“SPR”)40输入源操作数信息和向其输出目的操作数信息。

FPU 30从浮点体系结构寄存器(“FPR”)36和浮点重命名缓冲器38输入它的源操作数信息。FPU 30输出它的操作的结果(目的操作数信息),以存储在浮点重命名缓冲器38中的选择的条目。

图2是根据本发明的包括如图1所示那样的处理器的计算机系统的说明。数据处理系统200可以是对称多处理器(SMP)系统,包括多个与系统总线206连接的处理器202和204。可选择地,可以使用单处理器系统。每个处理器202和204可以是SMT允许的处理器。与系统总线206连接的还有存储器控制器/高速缓冲存储器208,它提供与局部存储器209的接口。I/O总线桥210与系统总线206连接,并且提供与I/O总线212的接口。存储器控制器/高速缓冲存储器208和I/O总线桥210可以如所示那样集成在一起。

与I/O总线212连接的外围元件互连(PCI)总线桥214提供与PCI局部总线216的接口。可以与PCI局部总线216连接多个调制解调器。典型PCI总线实现将支持四个PCI扩展槽或插入连接器。图1中到网络计算机108-112的通信链路可以通过经由插入板与PCI局部总线216连接的调制解调器218和网络适配器220提供。

网络适配器220包括物理层282,它调节输出到网络的模拟信号,例如通过R45连接器的以太网。在网络适配器220内包括媒体接入控制器(MAC)280。媒体接入控制器(MAC)280与总线216连接,并且处理数字网络信号。MAC 280用作总线216与物理层282之间的接口。MAC 280执行在数据分组的发送和接收中所包括的多个功能。例如,在数据发送期间,MAC 280把要传输的数据封装成具有地址和错误检测字段的分组。相反,在分组的接收期间,MAC 280解封装分组,并且执行地址检查和错误检测。另外,MAC 280典型地执行所传输的数字信号的编码/解码,并且执行前同步码生成/除去以及比特发送/接收。

另外的PCI总线桥222和224提供另外PCI总线226和228的接口,由此可以支持另外的调制解调器或网络适配器。按这样方式,数据处理系统200允许与多台网络计算机的连接。如所示那样,存储器映像的图形适配器230和硬盘232也可以直接或间接地与I/O总线212连接。

本领域技术人员将会理解图2所示的硬件可以变化。例如,除所示硬件外或代替所示硬件,也可以使用其他外围设备,例如光盘驱动器等。所示例子不意在暗示关于本发明的体系结构的限制。

图3举例说明了一个高级流程图,它示出了根据本发明选择用于选择性的非猜测性的执行的条件分支指令的类型,并且改变用于这些选择类型的条件分支指令的操作码。过程如所示那样由块300开始,并且其后转到块302,它示出了选择用于非猜测性的执行的条件分支指令的类型。其次,块304示出了对是该类型的条件分支指令的每个指令,设置操作代码(操作码)中的预指定位。因而,每次读取这个类型的指令,该指令的操作码将指示该条件分支指令不将猜测性地执行。然后过程如块306所示那样终止。

图4示出了一个高级流程图,它举例说明了根据现有技术执行条件分支指令。过程如所示那样以块400开始,并且其后转到块402,它示出了读取下一条指令。接下来,块404示出了确定所读取指令是否为条件分支指令。如果确定所读取指令不是条件分支指令,过程转到块406,它示出了解码和执行所读取指令。然后过程返回到块402。

再参考块404,如果确定该指令是条件分支指令,过程转到块408,它示出了确定是否允许猜测性的执行。根据现有技术,能允许或禁止猜测性的执行。当允许猜测性的执行时,所有条件分支指令猜测性地执行。当禁止猜测性的执行时,无条件分支指令猜测性地执行。

如果确定禁止猜测性的执行,过程转到块410,它示出了分辨条件分支指令,以便在执行条件分支之前,知道实际条件分支位置。因而,知道是否将执行这个条件分支指令。接下来,块412示出了通过转移到实际分支位置,执行条件分支指令。然后过程转到块414,它示出了执行位于实际位置的指令。然后,块416示出了完成条件分支指令和位于实际位置的指令(如块414所示那样)。然后过程返回到块402。

再参考块408,如果确定允许猜测性的执行,过程转到块418,它示出了预测条件分支是否将被采用。然后过程转到块420,它示出了通过转移到预测位置,猜测性地执行条件分支指令。当猜测性地执行条件分支指令时,预测条件分支指令将转移到什么地址。然后猜测性地执行从这个预测地址开始存储的指令。然后,块422示出了猜测性地执行跟随分支的指令。这些是位于预测分支位置的指令。接下来,块424示出了分辨条件分支,以便现在知道实际位置。

然后,块426示出了确定是否正确地预测了分支位置。当预测位置和实际位置相同时,正确地预测了分支位置。如果确定正确地预测了分支位置,过程转到块428,它示出了完成分支指令和猜测性地执行的指令。然后过程返回到块402。

再参考块426,如果确定预测并不正确,过程转到块430,它示出了清除被猜测性地执行的指令。接下来,块432示出了通过转移到实际分支位置,执行分支指令。此后,块434示出了执行现在跟随分支的指令。这些是位于实际位置的指令。接下来,块436示出了完成分支指令和位于实际位置的指令。然后过程返回到块402。

图5举例说明了一个高级流程图,它示出了根据本发明在一个其中允许猜测性的执行的处理器中,选择性地禁止选择类型的条件分支指令的猜测性的执行。过程如所示那样以块500开始,并且其后转到块502,它示出了从正在执行的代码中读取下一条指令。接下来,块504示出了确定指令是否为条件分支指令。如果确定指令不是条件分支指令,过程转到块506,它示出了解码和执行所读取指令。然后过程返回到块502。

再参考块504,如果确定指令是条件分支指令,过程转到块507,它示出了分析这个指令的操作码中的指定位。接下来,块508示出了确定这个分支指令的操作码中的预选位是否被设置。如果确定预选位没有被设置,过程转到块510,它示出了如图4所述的根据现有方法,猜测性地执行分支指令。然后过程返回到块502。

再参考块508,如果确定预选位被设置,过程转到块512,它示出了停止读取和执行这个分支指令以后的指令。这个分支指令以后的指令,不论是位于下一个顺序地址还是位于非顺序目标地址位置的指令,将不会被猜测性地执行。然后,块514示出了分辨这个条件分支指令,以便知道实际分支位置,即知道分支是否将被采用。此后,块516示出了通过转移到实际分支位置,执行分支指令。其后,块518示出了执行位于实际位置的指令。接下来,块520示出了完成分支指令和位于实际位置的指令。然后,块522示出了恢复读取和执行这个分支指令以后的指令。因而,执行了位于实际分支位置的指令。然后过程返回到块502。

根据本发明,当允许处理器内的猜测性的执行时,不猜测性地执行所选择的条件分支指令。不被准确地预测的条件分支指令被选择为非猜测性的执行。任何已知方法可以用来追踪条件分支指令的预测率。

根据本发明,设置所选择类型的条件分支指令的操作码中的一个位。当读取指令时,如果指令是一个条件分支指令,则分析该位。如果该位被设置,不猜测性地执行指令。如果该位被清除,猜测性地执行该指令。

重要的是请注意,尽管本发明是在全功能数据处理系统的情况下描述的,但是本领域的一般技术人员可以理解,可以以指令的计算机可读介质的形式,以及多种形式分布本发明的进程,并且不论实际完成分布的信号承载介质的特定类型,本发明同样适用。计算机可读介质的例子包括可记录类型的介质,如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,以及传输类型的介质,如数字和模拟通信链路,使用诸如射频和光波传输之类的传输形式的有线或无线通信链路。计算机可读介质可以采取编码的格式的形式,其中当在特定数据处理系统中实际使用时进行解码。

提供本发明的说明书的目的是为了说明和描述,而不是用来穷举或将本发明限制为所公开的形式。对本领域的一般技术人员而言,许多修改和变更都是显而易见的。选择并描述实施方式是为了更好地解释本发明的原理,其实际应用,并使本领域的其他一般技术人员理解带有各种修改的各种实施方式的本发明同样适用于设想的特定用途。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号