在推测性处理器中减少执行涉及不可靠数据的指令的系统与方法

文档序号:6430809阅读:159来源:国知局

专利名称::在推测性处理器中减少执行涉及不可靠数据的指令的系统与方法
技术领域
:本发明一般地涉及计算机处理器体系结构,更具体地说,本发明涉及一种系统与方法,用于在推测执行(speculativeexecution)期间标记寄存器以区别可用数据和不可用数据。
背景技术
:在过去,计算机处理器以指令出现在处理器中的顺序每次一个地执行指令。随着处理器的发展,流水线、预见(lookingahead)、乱序处理(outoforderprocessing)和推测执行等概念已经被引入到多数通用计算器处理器中,包括那些在个人计算机中使用的处理器。这些技术允许计算机处理器在等待其它高延时指令产生它们的结果的同时,执行独立的指令。在等待高延时指令时继续执行指令以及使用执行资源的能力,对于在当前处理器中实现高性能来说很重要。尽管处理器设计方面的进展已经显著改善了一般处理器指令的延时,但是,必须访问存储器的指令的延时只有很小的改善。例如,在某些当前处理器中,处理器执行涉及高速缓存未命中(cachemiss)的“加载(load)”所需的时间与处理“加”所需的时间相比,前者超过后者1000倍。这是因为高速缓存未命中需要处理器从存储器取回所需数据以完成加载指令的执行。如此,当实现上述性能日渐增强的技术时,在发生高速缓存未命中的时候,处理器具有大量可以进行工作的时间。由处理器执行的某些推测执行创建不准确且必须作为无用数据而被删除的数据。这样,处理器可能不必要地推测执行许多指令。例如,临时模式执行(scratchmodeexecution)通过允许处理器在高速缓存未命中之后推测性地执行指令,可以考虑基于分支预测(branchprediction)的执行。然而,在许多环境中,基于加载的目的地寄存器中保持的无效数据,所述执行继续,其中所述加载未命中高速缓存。由高速缓存未命中产生的无效数据可以通过多级指令传播,所述多级指令最终依赖所述无效数据。这样,无效数据致使这些指令或指令序列的结果通常无用。因此,执行消耗由高速缓存未命中而产生的值的指令,可能对通过推测执行而实现的益处产生负面影响。依赖于无效数据的加载不提供任何预取(prefetch)益处,并且可能引起转换表缓冲器(translationlook-asidebuffer)和/或高速缓存的污染。此外,依赖于无效数据的分支通常被错误地决定,从而使临时模式执行偏离由分支预测器指示的分支路径,并且/或者导致结果无用。通过阅读下面详细的说明并参考附图,本发明的其它优点将变得清楚。图1A图示了一个硬件环境,其中可以实现这里所描述的系统与方法;图1B根据这里所描述的系统与方法,图示了具有SVal标签的处理器具体实施例方式提供了一种系统与方法,用于区别在计算机处理器的推测执行期间产生的不可用、不可靠数值和可用、可靠数值。这种推测执行例如包括流水线、预见、无序处理和临时模式执行。在一个实施例中,使能一个处理器来有选择地取消涉及高速缓存未命中而产生的相关数据的指令和分支。结果是降低了处理器的功耗,节约了处理器的执行资源,并且增加了处理器的吞吐量。在一个实施例中,单个位形式的标签被添加到处理器的每个数据存储区域,包括寄存器、判定位(predicate)、标志位(flag)等,以提供成本有效的方法来提高性能并降低功耗。在某些处理器中,通过在重新排序缓冲器(ROB)中缓冲推测性指令直到所述指令变为非推测性,来实现乱序(OOO)执行。所述直到所述指令变为非推测性即,直到指令所涉及的数据,无论是源还是目的地,都是可用或可访问的。当指令变为非推测性的时候,这些指令可以被执行并随后退出(retire)。由于指令只有在变为非推测性时才能够退出,所以在被执行和退出之前,它们可能缓存在ROB中数百个时钟周期。由于每个新指令在可以被执行之前都必须分配一个ROB条目,所以可能需要数百到数千个ROB条目,以让处理器在等待完成高延时指令的同时继续工作。临时模式执行(SME)是推测执行的一种形式,它让处理器容许高延时指令的延时,而不需要许多的ROB条目来进行提前的工作。与当今的乱序(OOO)执行处理器类似,SME通过继续执行独立指令而不等待高延时指令的正确结果,来处理高延时指令。与OOO执行不同的是,SME不缓冲推测性指令。作为替代,SME执行推测性指令,并且仅仅保留结果直到寄存器被另一指令重写。由于SME不作任何记录来确保推测执行的指令能够退出,所以所有推测执行的指令都会被处理器丢弃并被处理器重新执行。然而,由于许多高延时指令(例如,加载与分支)具有副作用,例如分支预测器的更新和高速缓存分配,所以通过重新执行,通常显著减少了这些指令的延时。在这里的讨论中,由高速缓存未命中产生的无效数据,以及由依赖该无效数据的指令和数据产生的所有数据数值,被称为临时数值(SVal)。并非源自SVal的其它数据数值称为可靠数值(RVal)。通常,执行依赖于SVal的指令是无效的并且是起反作用的。一份研究表明,在临时模式期间执行的所有指令有40%是依赖于SVal的,并且可以全部被忽略。这里描述的方法涉及区别地操作依赖于SVal的指令以及依赖于RVal的指令。在一个实施例中,通过防止SVal加载访问高速缓存,并且通过允许分支预测器不理会(override)基于Sval的分支决定,提供了显著的性能增益。图1A图示了一个硬件环境,其中可以实现这里所描述的系统与方法。在一个实施例中,可以在计算设备100上实现这里所描述的方法。计算设备100可以是个人计算机、服务器、个人数字助理(PDA)、计算机图形输入卡(tablet)、机顶盒(set-topbox)、游戏机(gameconsole)、蜂窝电话工作站或其它计算设备。计算设备100包括处理器110、存储器112、存储设备114和其它设备,所有这些设备都耦合到总线118。为简单起见,只描述了一条总线作为讨论,尽管计算设备100中可以包括多条总线,例如包括数据总线、指令总线、例如外围组件互连(PCI)和加速图形端口(AGP)的外围总线,等等。通常,当处理器执行软件程序时,软件程序可以从存储设备114中取得。当处理器110执行特定的软件程序时,并且对处理器来说数据和/或指令不是在处理器的高速缓冲存储器中立即可得时,处理器可能阻塞,并且等待从芯片外(off-chip)的源(例如存储设备和主存储器)加载指令和/或数据。考虑到现有处理器的速度,如果处理器将等待从存储设备或存储器取得指令和/或数据的话,处理器将浪费大量的时间。这些浪费的时间是由于总线延时和从相对低速设备读取信息所固有的延时。(总线速度、存储器速度和存储设备速度每个都比处理器速度慢得多)这样的延时可能是数千个时钟周期。众所周知,包括预见、流水线、乱序处理、临时模式执行和推测执行的各种技术,允许处理器在等待数据从存储器或存储设备恢复时继续运行。所有这些技术在这里将通称为推测处理。当处理器110等待从存储器112和存储设备114加载数据或以其他方式取得数据的同时推测性地执行指令的时候,基于不可靠SVal处理了各种数据数值,采取了分支,并且进行了其它执行。为了减少基于或涉及SVal的指令的无用执行,根据这里所描述的方法,SVal标签被添加到诸如处理器110的处理器中的寄存器、标志位、判定位和其它数据存储单元上。在一个实施例中,用单个位形式的SVal标签来扩充处理器中的每个数据存储单元。在本实施例中,每个寄存器、判定位、标志位等可以具有额外添加的位,该位称为SVal标签位。举例来说,如果SVal标签位被设定为一(1),则关联数据是临时数值或SVal。如果该位被设定为零(0),则标记/关联数据是可靠数值或RVal。应当理解在另一个实施例中,作为选择,SVal标签位数值可以被一致地设定为相反的数值,从而,位数值一(1)表示可靠数值而位数值零(0)表示临时数值。在一个实施例中,判定位与标志位也可以具有类似的关联SVal标签。在一个实施例中,当具有临时数值操作数的指令向判定位或标志位写的时候,与该标志位或判定位相关联的SVal标签被设定为一(1)。当使用具有SVal标签的标志位或判定位来确定分支的时候,忽略所计算的分支结果,并且由分支预测单元来确定分支的方向。此外,还可以使用被称为Sval制表(tab)位的单个位形式的SVal标签来扩充指令。在本实施例中,如果SVal位被设定为一(1),则关联的指令产生临时数值;如果SVal位被设定为零(0),则关联的指令产生可靠数值。在其它实施例中,与每个寄存器、判定位、标志位、指令等相关联的SVal标签可以具有两个或多个位。图1B根据这里所描述的系统与方法,图示了具有SVal标签的处理器实施例的内部组件。在一个实施例中,处理器110可以包括各种寄存器130,每个寄存器含有寄存器数据132和寄存器SVal标签134。只要基于Sval的指令创建将要写入寄存器的数据,则寄存器的SVal标签将被设定为例如是一(1)。在多个实施例中,SVal标签可以是单个位、两个位或更大的实体。应当意识到,分配给SVal的位的数目越小,由此得到的处理器越有效率,这是由于支持SVal标签所需的处理器管芯上的空间更小。处理器110还可以包括标志位140,其中由多个对应于标志位数据141中的每个标志位的标志位SVal标签142来扩充多个标志位数据141。类似地,判定位144包括判定位数据145和对应的SVal标签146。此外,处理器110包括诸如判定预测单元148、分支预测单元(BPU)150、转换表缓冲器(TLB)152、执行单元154、片上高速缓存156和重新排序缓冲器158等公知组件。执行单元154可以是单个或多个出现的加法器、浮点乘数累加器以及其它执行单元。处理器110可以包括其它公知组件以及示出组件的多个示例,这些组件和示例并没有示出以避免混淆这里所描述的发明。例如,处理器可以具有两个或多个片上高速缓冲存储器。为了利用处理器中的额外的SVal标签,可以写入处理器的内部执行引擎160以实现这里所描述的方法。执行引擎可以包含硬件逻辑的硬件组件配备在处理器中,或者由编程计算机组件和定制硬件组件的结合来实现。在另一个实施例中,执行引擎可以作为指令或微代码以机器可读形式存储在机器可读介质中,并且随后传送到处理器110。机器可读介质包括可以本地耦合或者远程访问,并且可以通过电、光、声或其它传播信号形式(例如,载波、红外信号、数字信号等)可用的只读存储器(ROM)设备、随机访问存储器(RAM)设备、可擦可编程只读存储器(EPROM)设备、电可擦除只读存储器(EEPROM)设备、诸如硬盘驱动器的磁盘存储介质、诸如光盘只读存储器(CD-ROM)的光存储介质、闪存设备等,以及适合存储指令、微代码等任何其它类型的机器可读介质。图2A根据这里所描述的系统与方法并遵照IntelIA-32体系结构,图示了具有SVal标签的处理器实施例。在一个实施例中,SVal标签可以扩充处理器内部的寄存器、标志位和其它有关数据存储区域,其中处理器遵照被称为IA-32的32位Intel体系结构。有关IA-32体系结构的其它信息参见IA-32IntelArchitectureSoftwareDeveloper’sManual,修订版2(2001年2月)。在一个实施例中,处理器200可以包括由对应的通用寄存器SVal212扩充的通用寄存器210。此外,段寄存器214可以由段寄存器SVal标签216来扩充。并且,E标志位220可以由E标志位SVal标签222来扩充。如处理器200所示出的,对应于每个寄存器和每个标志位的每个SVal标签可以是单个位。在其它实施例中,SVal标签可以是两个位或更多位。图2B根据这里所描述的系统与方法并遵照IntelIA-64体系结构,图示了具有SVal标签的处理器实施例。在一个实施例中,SVal标签可以被添加到处理器内部的相关寄存器、判定位、标志位和其它内部数据贮存器的每个中,所述寄存器包括浮点寄存器、分支寄存器、数据寄存器和通用寄存器,其中处理器遵照被称为IA-64的Intel64位体系结构。有关IA-64体系结构的更多信息参见IA-64IntelArchitectureSoftwareDeveloper’sManual,修订版1.1(2000年7月),该手册可从加州圣克拉拉市的Intel公司获得。在本实施例中,通用寄存器262可以由通用寄存器SVal标签264来扩充,浮点寄存器266可以由浮点SVal标签268来扩充,判定位270可以由判定位SVal标签272来扩充,分支寄存器274可以由分支寄存器SVal标签276来扩充,并且应用寄存器380可以由应用寄存器SVal标签282来扩充。如处理器260所示出的,每个SVal标签可以是单个位。在其它实施例中,SVal标签可以是两个位或更多位。图3根据这里所描述的方法实施例,图示了在处理指令及其操作数时所采取的动作的一般流程图。该动作流程可以由处理器,更具体地说由处理器内部的执行引擎来实现。如框310所示,获得了当前指令。在一个实施例中,当新指令被装入流水线时,指令的SVal标签初始设为零(0)。随后如框320所示,检查指令的操作数是否存在SVal。当指令的操作数已知时,根据指令操作数的SVal标签数值来设定指令的SVal标签。如果指令操作数的SVal标签都没有被设定为一(1),则指令的SVal标签保持它的初始数值零(0)。如框324所示,如果当前指令的至少一个操作数是SVal,则SVal标签被传送到目的地,从而该目的地的SVal标签被设定为一(1)。如框330所示,如果至少一个指令操作数的SVal标签为SVal,即它被设定为一(1),则与该指令相关联的SVal标签被设定为一(1)。如框340所示,如果指令的至少一个操作数具有设定为1的SVal,则绕过该指令的执行。如框350所示,可以进行校验来确定是否已绕过指令。如框360所示,如果还没有绕过该指令,则执行该指令。如框370所示,如果已经绕过了该指令的执行,则获取下一个指令,并且动作流程继续框320。类似地,在执行了当前指令(如框360所示)之后,获得下一个指令(如框370所示),并且动作流程继续框320。当指令执行时,指令的AVal标签数值被复制到(多个)目的地寄存器。当指令为加载且加载未命中高速缓存时,它的目的地寄存器SVal标签被设定为一(1)。当指令为加载且加载命中了高速缓存但其源操作数之一的SVal标签被设定为一(1)时,它的目的地寄存器的SVal标签被设定为一(1)。具有立即可用操作数的指令的SVal标签被设定为零(0)。在一个实施例中,如果在推测执行期间使用了存储缓冲器,则SVal标签可以通过存储缓冲器来传送。在该实施例中,可以用单个位形式的SVal标签来扩充存储缓冲器。当存储指令向存储缓冲器写的时候,该指令的SVal标签被传送到该存储缓冲器。当加载指令从该存储缓冲器读的时候,在该存储缓冲器条目中找到的SVal标签和从该存储缓冲器取得的数据一起被复制。在一个实施例中,存储指令在被允许向存储缓冲器写之前被存储为两类。存储指令的第一类包括这样的存储指令它的地址生成寄存器操作数是临时数值。存储指令的第二类包括被标记为临时数值的存储指令,它的地址生成寄存器操作数不是临时数值。对于第一类,由于目的地地址未知,所以不传送SVal标签。对于第二类,由于目的地地址已知,所以将SVal标签传送给存储缓冲器。正常处理加载。图4根据这里所描述的方法实施例,图示了在推测性处理器中执行指令时所采取的动作流程。指令的SVal标签影响指令在流水线中被推测性处理器中的调度器操作的方式。根据SVal标签被设定为零(0)或别的值,区别地操作指令。在一个实施例中,硬件设计者可以选择是否传送SVal标签。在另一个实施例中,不传送SVal标签,除非所传送的数值很有可能是不可靠的。在一个实施例中,在获得指令(如框410所示)之后,进行校验以确定指令的SVal标签是否被设定为一(1),如框412所示。如果指令的SVal标签没有被设定为一(1),即它为零(0),则指令进行正常处理,如图414所示。否则,动作流程基于指令种类而继续进行,如框420所示。如框430所示,如果指令是加载指令,则该指令被取消并发送SVal标签到目的地,如框432所示。如框440所示,如果指令为存储,则校验目的地地址以确定它是否是SVal,如框442所示。如果目的地地址是SVal,则取消该指令(即,存储)。如果存储数值(即,数据)源自SVal,则SVal标签被传送到目的地,如框446所示。如果地址和数值都不是SVal,则正常地执行存储。在一个实施例中,图框480所示,如果指令是算数运算,则取消该指令并且不传送SVal标签到目的地,如框482所示。如框460所示,如果指令为直接分支(directbranch),如果该直接分支依赖的标志位或寄存器是SVal,则使用分支目标,但是分支的方向得自分支预测器,如框462所示。即向分支依赖的标志位或判定位写入从分支预测器得到的数值。类似地,向代表分支依赖的标志位或判定位的补码的标志位或判定位写入从分支预测器得到的数值的补码。例如,所采取的“如果不相等则分支(BNE)”判定可以使得不相等标志位或条件被设定为真(true),并且可以将“假(false)”写入相等标志位或判定位。当标志位或判定位数值是得自分支预测器的时候,清除标志位或判定位上的SVal标签,并且将来的分支服从分支预测器。如框450所示,如果指令是间接分支(indirectbranch),则从分支预测单元获得分支目标,如框452所示。如框470所示,如果指令是条件性的,则通过服从分支预测单元来决定与该指令相关联的判定位与标志位。然而,当判定位或标志位未知时,判定位指令和条件性移动的目的地被标记为SVal。即,进行校验以确定相关判定位和标志位是否已知,如框472所示。如果它们未知,则目的地SVal被设定为一(1),如图474所示。如果判定位已知,则仍然服从判定预测器和/或分支预测器,如框476所示。这样,避免了基于可靠性有问题的判定位的路径,并且使用了基于判定预测器和/或分支预测器的更可靠的路径选择。在一个实施例中,可以用类似于处理源操作数的方式来处理判定位和条件,从而,如果判定位或条件具有被设为一(1)的SVal标签,则该SVal标签被传送到目的地。在一个实施例中,与仅仅将数据和指令标记为SVal和RVal不同,可以使用额外的标记。在一个实施例中,可以添加预测数值(PVal),从而具有数值零(0)的SVal标签为RVal,具有数值一(1)的SVal标签为SVal,而具有数值二(2)的SVal标签为PVal。这样,可以使用用于近似正确数值的正确数据数值的数值预测或有损表示(lossyrepresentation)来代替临时数值。在该实施例中,可以用预测数值来完成具有PVal标签的指令的执行。这样,处理器可以基于内部算法、逻辑、方案和其它技术作出如何继续运行的智能选择,所述技术都是公知和/或专有的。图5图示了根据这里所描述的系统与方法的一个实施例的状态机。在一个实施例中,根据状态机,处理器可以实现上面讨论的指令贴标签过程。在分支预测器510选择下一步执行哪个指令511之后,译码该指令,如框512所示。随后读取含有指令所需数据的寄存器516以及相关SVal标签518,如框514所示。如果寄存器具有用于指示相关寄存器中的数据是临时数值或不可靠数值的SVal标签,则该SVal标签被传送给当前指令的所有目的地的SVal标签,如路径522所示。如上文所讨论的,SVal标签也可以通过判定位、标志位等被传送。此外,SVal标签被传送到指令自身。如路径524所示,如果当前指令的至少一个操作数由SVal标签指示为SVal,则当前指令根据SVal执行策略来特别地执行,如框530所示。即,通常取消指令的执行。如果操作数寄存器通过SVal标签指示该操作数是Rval,则该指令的执行继续进行,如框532所示。如果在框532中执行指令的期间必须采用一个分支,并且该分支是从SVal得到的,则发送分支错误预测信号534到分支预测器。在执行指令之后,可以通过寄存器写回单元将指令的结果写回寄存器516,如框540所示。在上面的说明书中,已经参考具体实施例描述了本发明。很明显,在不脱离所附权利要求阐明的本发明的较宽泛的精神和范围的条件下,可以对其进行各种修改和变化。因此,说明书和附图被认为是示例性的而非限制性的。权利要求1.一种方法,包括识别在处理器的推测执行期间产生的临时数值;以及设定与所述处理器的至少一个数据区域相关联的至少一个标签,以指示所述数据区域保存临时数值。2.如权利要求1所述的方法,其中所述设定步骤包括当具有寄存器作为目的地的指令导致高速缓存未命中的时候,设定所述寄存器的所述标签。3.如权利要求1所述的方法,还包括绕过对多个指令中的一些指令的执行,其中所述一些指令具有的至少一个操作数含有指示所述操作数是临时数值的相关联标签。4.如权利要求1所述的方法,还包括绕过对如下算术指令的执行所述算术指令具有的作为至少一个操作数的寄存器含有指示所述寄存器包含的数据是临时数值的相关联标签;以及绕过对如下存储指令的执行所述存储指令涉及从所述寄存器得到的数值,所述寄存器含有指示所述寄存器包含的数据是临时数值的相关联标签。5.如权利要求1所述的方法,还包括使用分支预测器以不理会由分支指令基于含有标签的数据而产生的计算分支结果,其中所述标签指示所述数据是临时数值。6.如权利要求1所述的方法,还包括用标签来标记流水线中的每个指令,以指示所述指令是否涉及临时数值。7.如权利要求1所述的方法,还包括如果地址生成寄存器没有指示所述地址生成寄存器保存临时数值,则通过存储缓冲器传送所述标签。8.一个处理器,包括多个寄存器,具有对应的多个寄存器标签以指示存储在所述寄存器中的数据是否保存临时数值;多个标志位,具有对应的多个标志位标签以指示由所述标志位反映的数据是否是基于临时数值的;多个判定位,具有对应的多个判定位标签以指示由所述判定位反映的数据是否是基于临时数值的。9.如权利要求8所述的处理器,所述处理器具有指令集,所述指令集包括多个指令,每个指令由指令标签扩充,以指示所述指令是否涉及临时数值。10.如权利要求9所述的处理器,其中所述寄存器标签、标志位标签、判定位标签和指令标签具有一个位的大小。11.如权利要求9所述的处理器,其中所述寄存器标签、标志位标签、判定位标签和指令标签至少具有两个位的大小。12.一个处理器,包括至少两个算术单元;转换表缓冲器;分支预测单元;以及具有多个指令的执行引擎,所述指令被执行时引起所述处理器执行以下动作识别在处理器的推测执行期间产生的临时数值,以及设定与所述处理器的至少一个数据区域相关联的至少一个标签,以指示所述数据区域保存临时数值。13.如权利要求12所述的处理器,其中所述设定动作包括当具有寄存器作为目的地的指令导致高速缓存未命中的时候,设定所述寄存器的所述标签。14.如权利要求12所述的处理器,其中所述执行引擎具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作绕过对多个指令中的一些指令的执行,其中所述一些指令具有的至少一个操作数含有指示所述操作数是临时数值的相关联标签。15.如权利要求12所述的处理器,其中所述执行引擎具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作绕过对如下算术指令的执行所述算术指令具有的作为至少一个操作数的寄存器含有指示所述寄存器包含的数据是临时数值的相关联标签;以及绕过对如下存储指令的执行所述存储指令涉及从所述寄存器得到的数值,所述寄存器含有指示所述寄存器包含的数据是临时数值的相关联标签。16.如权利要求12所述的处理器,其中所述执行引擎具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作使用分支预测器以不理会由分支指令基于含有标签的数据而产生的计算分支结果,其中所述标签指示所述数据是临时数值。17.如权利要求12所述的处理器,其中所述执行引擎具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作用标签来标记流水线中的每个指令,以指示所述指令是否涉及临时数值。18.如权利要求12所述的处理器,其中所述执行引擎具有其它指令,所述其它指令被执行时还引起所述处理器执行以下动作如果地址生成寄存器没有指示所述地址生成寄存器保存临时数值,则通过存储缓冲器传送所述标签。19.一种系统,包括存储器、存储设备和处理器,其中每个都耦合到总线;所述处理器包括具有指令的执行引擎,所述指令被所述处理器执行时,引起所述处理器执行以下动作识别在处理器的推测执行期间产生的临时数值,以及设定与所述处理器的至少一个数据区域相关联的至少一个标签,以指示所述数据区域保存临时数值。20.如权利要求19所述的系统,其中所述设定动作包括当具有寄存器作为目的地的指令导致高速缓存未命中的时候,设定所述寄存器的所述标签。21.如权利要求19所述的系统,其中所述执行引擎具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作绕过对多个指令中的一些指令的执行,其中所述一些指令具有的至少一个操作数含有指示所述操作数是临时数值的相关联标签。22.如权利要求19所述的系统,其中所述执行引擎具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作绕过对算术指令的执行,所述算术指令具有的作为至少一个操作数的寄存器含有指示所述寄存器包含的数据是临时数值的相关联标签;以及绕过对存储指令的执行,所述存储指令涉及从所述寄存器得到的数值,所述寄存器含有指示所述寄存器包含的数据是临时数值的相关联标签。23.如权利要求19所述的系统,其中所述执行引擎具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作使用分支预测器以不理会由分支指令基于含有标签的数据而产生的计算分支结果,其中所述标签指示所述数据是临时数值。24.如权利要求19所述的系统,其中所述执行引擎具有其它指令,所述其它指令被执行时还引起所述处理器执行以下动作用标签来标记流水线中的每个指令,以指示所述指令是否涉及临时数值。25.如权利要求19所述的系统,其中所述执行引擎具有其它指令,所述其它指令被执行时还引起所述处理器执行以下动作如果地址生成寄存器没有指示所述地址生成寄存器保存临时数值,则通过存储缓冲器传送所述标签。26.一种机器可读介质,其上存储了指令,所述指令被处理器执行时,引起所述处理器执行以下动作识别在处理器的推测执行期间产生的临时数值,以及设定与所述处理器的至少一个数据区域相关联的至少一个标签,以指示所述数据区域保存临时数值。27.如权利要求26所述的机器可读介质,其中所述设定动作包括当具有寄存器作为目的地的指令导致高速缓存未命中的时候,设定所述寄存器的所述标签。28.如权利要求26所述的机器可读介质,还具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作绕过对多个指令中的一些指令的执行,其中所述一些指令具有的至少一个操作数含有指示所述操作数是临时数值的相关联标签。29.如权利要求26所述的机器可读介质,还具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作绕过对如下算术指令的执行所述算术指令具有的作为至少一个操作数的寄存器含有指示所述寄存器包含的数据是临时数值的相关联标签;以及绕过对如下存储指令的执行所述存储指令涉及从所述寄存器得到的数值,所述寄存器含有指示所述寄存器包含的数据是临时数值的相关联标签。30.如权利要求26所述的机器可读介质,还具有其它指令,当所述其它指令被执行时还引起所述处理器执行以下动作使用分支预测器以不理会由分支指令基于含有标签的数据而产生的计算分支结果,其中所述标签指示所述数据是临时数值。全文摘要一种用于在推测性处理器中减少执行涉及不可靠数据的指令的系统与方法。该方法包括识别在处理器的推测执行期间产生的临时数值,并且设定与处理器的至少一个数据区域相关联的至少一个标签,以指示该数据区域保存临时数值。该数据区域包括寄存器、判定位和标志位等。指令也可以被类似地贴标签。所述方法可以由计算机处理器中的执行引擎来执行。文档编号G06F9/30GK1582429SQ02821875公开日2005年2月16日申请日期2002年10月25日优先权日2001年11月5日发明者克里斯托弗·威尔克森申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1