用以预测有条件非分支指令的不执行的方法和设备的制作方法

文档序号:6350194阅读:174来源:国知局
专利名称:用以预测有条件非分支指令的不执行的方法和设备的制作方法
技术领域
本发明大体来说涉及处理器的领域,且特定来说涉及支持有条件非分支指令的处理器。
背景技术
例如手机、膝上型计算机、个人数据助理(PDA)等许多便携式产品利用执行例如通信和多媒体程序等程序的处理系统。用于此类产品的处理系统可包括多个处理器、用于存储指令和数据的复杂存储器系统、控制器、例如通信接口等外围装置和配置于(例如)单芯片上的固定功能逻辑块。同时,便携式产品具有呈电池形式的有限能源,常常需要所述电池支持处理系统进行的高性能操作。为了增加电池寿命,需要尽可能有效地执行这些操作。 还正在开发具有有效设计以在总能量消耗降低的情况下操作的许多个人计算机。处理器使用具有指令集的管线式架构,所述指令集大体上包括有条件分支指令。 程序可使用有条件分支指令来控制程序操作的流程。然而,执行有条件分支指令可引起在相关联分支条件的管线待决解析中出现泡(biAble),通常直到处理器的管线深处才可确定所述相关联分支条件。许多处理器还包括有条件非分支指令以帮助减轻有条件分支指令的性能抢夺(performance robbing)性质。非分支指令的有条件执行允许程序设计师基于先前产生的机器状态来指定是否将执行指令。使用有条件非分支指令帮助降低对有条件分支指令的需要且借此改进性能。当有条件指令的相关联条件经评估且指示不执行指令时,可能已消耗与有条件指令相关联的资源。举例来说,可能已提取有条件非分支指令执行所需的寄存器操作数。并且,有条件非分支指令可能已不必要地将管线相依性引入处理器管线中。举例来说,有条件指令可在管线中暂停同时等待解析其条件,借此引起暂停波动(ripple)到视所述有条件指令的执行而定的所有指令。另外,有条件指令可存在于软件回路中,其中有条件指令的条件解析性质针对回路的每一反复以类似方式出现,从而可引起显著性能降级。

发明内容
在本发明的若干方面中,从本发明可认识到,提供用于预测有条件非分支指令的不执行的更有效的方法和设备可改进性能且降低处理器系统中的功率要求。为实现此类目的,本发明的一实施例提出一种用于不执行已发出的有条件非分支指令的方法。将有条件非分支指令识别为入选以用于预测,所述预测指示所述入选有条件非分支(ECNB)指令将不会执行。所述ECNB指令响应于所述ECNB指令将不会执行的所述预测而作为无操作(NOP) 指令执行。另一实施例提出一种用于预测有条件非分支指令将不会执行的设备。所述设备具有第一电路,其用于将有条件非分支指令识别为入选以用于预测。所述设备具有第二电路, 其用于响应于满足评估准则而预测所述入选有条件非分支(ECNB)指令是否将不会执行。另一实施例提供一种用于预测有条件非分支指令将不会执行的方法。识别入选以用于预测是否将执行的有条件非分支指令。响应于满足评估准则而预测所述入选有条件非分支(ECNB)指令将不会执行。应理解,对于所属领域的技术人员来说,本发明的其它实施例将从以下详细描述而变得容易显而易见,在以下详细描述中,以说明的方式来展示和描述本发明的各种实施例。将了解,本发明容许其它和不同的实施例且其若干细节容许在其它各方面加以修改,以上所有均不偏离本发明的精神和范围。因此,应将图式和详细描述视为本质上为说明性而非限制性的。


在附图中通过实例而非通过限制来说明本发明的各个方面,附图中图1说明无线通信系统;图2展示预测是否执行有条件非分支指令的示范性处理器系统;图3说明示范性入选有条件非分支(ECNB)指令预测电路;图4A说明用于预测ECNB指令的执行的第一过程;图4B说明用于预测ECNB指令的执行的第二过程;图5说明用于预测ECNB指令的执行的第三过程;以及图6说明用于预测ECNB指令的执行的第四过程。
具体实施例方式下文结合附图所阐述的详细描述希望作为对本发明的各种示范性实施例的描述, 且不希望表示可实践本发明的仅有实施例。详细描述包括出于提供对本发明的彻底理解的目的的特定细节。然而,对于所属领域的技术人员将显而易见,本发明可在无这些特定细节的情况下实践。在一些例子中,以框图形式展示众所周知的结构和组件,以避免使本发明的概念模糊。图1说明可有利地使用本发明的实施例的示范性无线通信系统100。出于说明的目的,图1展示三个远程单元120、130和150以及两个基站140。将认识到,常用无线通信系统可具有更多远程单元和基站。分别包括硬件组件、软件组件或其两者(由组件125A、 125C、125B和12OT表示)的远程单元120、130、150和基站140已经调适以体现本发明,如下文进一步论述。图1展示从基站140到远程单元120、130和150的前向链路信号180以及从远程单元120、130和150到基站140的反向链路信号190。图1中,远程单元120经展示为移动电话,远程单元130经展示为便携式计算机且远程单元150经展示为无线区域回路系统中的固定位置远程单元。通过实例,远程单元或者可为手机、寻呼机、对讲机、手持式个人通信系统(PCQ单元、例如个人数据助理等便携式数据单元,或例如仪表读取设备等固定位置数据单元。尽管图1说明根据本发明的教示的远程单元,但本发明不限于这些所说明的示范性单元。本发明的实施例可适用于具有有条件非分支指令的处理器中。图2展示预测是否执行有条件非分支指令的示范性处理器系统200。处理器系统 200包括处理器210、高速缓冲存储器系统212、系统存储器214以及输入和输出(I/O)系统 216。举例来说,处理器210包含指令管线220和有条件非分支预测逻辑电路222。举例来说,高速缓冲存储器系统212包含指令高速缓冲存储器(Icache) 224、存储器控制器2 和数据高速缓冲存储器(Dcache) 228。系统存储器214提供未在Icache 2 或Dcache 228 中发现的指令和数据的存取。应注意,高速缓冲存储器系统212可与处理器210集成且可进一步包括阶层式组织中的多个层级的高速缓冲存储器。I/O系统216包含与处理器210 介接的多个I/O装置,例如I/O装置240和M2。指令管线220由例如提取级230、解码级231、发出级232、执行级233和完成级234 等一系列级组成。所属领域的技术人员将认识到,指令管线220中的每一级230-234可(例如)视处理器的操作频率和每一级中所需的操作的复杂性而包含许多额外管线级。并且, 执行级可由例如加法器、乘法器、逻辑运算、移位与旋转操作等一个或一个以上指令执行级电路组成。此类指令执行级电路可与有条件非分支指令相关联。管线级中的每一者可在不偏离本文中所描述的有条件预测方法和设备的情况下具有变化的实施方案。提取级230根据计算机程序流程从指令高速缓冲存储器(Icache) 224提取指令以供执行,所述指令可包括有条件分支指令和有条件非分支指令。大体来说,所提取的有条件分支指令使用分支预测逻辑来预测是否将进行所述有条件分支。所提取的非分支指令(其不是有条件非分支指令)进行到解码级231以供解码,在发出级232中发出以供执行,在执行级233中执行且在完成级234中引退(retire)。所提取的有条件非分支指令利用如本文中所描述的有条件非分支预测逻辑电路222来确定是否应不执行所述指令。未经执行的有条件非分支指令并不改变在遇到有条件非分支指令前处理器所具有的状态。有条件非分支预测逻辑电路222包含检测逻辑电路246、具有过滤器250和有条件历史表252的监视逻辑电路M8,以及预测与固定逻辑电路254。在一个实施例中,假设大部分有条件非分支指令的条件针对软件回路的大多数反复通常解析为相同值。在一个实施例中,检测逻辑电路246充当软件回路检测器,其基于软件回路中所使用的有条件分支指令的动态特性而操作。在具有单一入口和单一出口的软件回路中,回路结束分支通常为有条件分支指令,其针对回路的除最后反复外的所有反复形成分支返回到软件回路的开始,所述最后反复退出软件回路。检测逻辑电路246可具有用于软件回路的检测的多个实施例,如下文和转让给本申请案的受让人的题目为“通过回路结束分支 WM^^W(Suppressing Update of a Branch History Register by Loop-Ending Branches) ”的第11/066,508号美国专利申请案中更详细描述,所述专利申请案的全文并入本文中。根据一个实施例,假设具有小于有条件分支指令地址的分支目标地址的每一有条件分支指令(且因此视为向后分支)为回路结束分支指令。此实施例在确定分支目标地址时需要地址比较。由于并非所有向后分支均为回路结束分支,因此存在可能需要考虑的一定程度的不准确性。在另一实施例中,在简单回路中,可通过辨识对相同分支指令的重复执行来检测回路结束分支。通过将最后向后分支指令的程序计数器值存储于专用寄存器中且将此所存储的值与下一向后分支指令的指令地址进行比较,可在两个指令地址匹配时辨识回路结束分支。由于代码可包括软件回路内的有条件分支指令,因此回路结束分支指令的确定可变得更复杂。在此情形下,可以硬件实体化多个专用寄存器以存储每一有条件分支指令的指令地址。通过比较所有存储值,可针对回路结束分支确定匹配。
回路结束分支还可由编译程序或汇编程序来静态标记。举例来说,在一个实施例中,通过使用唯一操作码或设定仅用于回路结束分支的特定格式位字段,编译程序产生特定类型的分支指令。在解码特定分支指令后,确定回路结束分支。监视逻辑电路248包含过滤器250、有条件历史表(CHT) 252和相关联的监视逻辑。在一个实施例中,监视过程保存预先指定的条件事件的状态信息,所述预先指定的条件事件可能已在对具有入选以用于预测的有条件非分支指令的软件回路的一次或一次以上先前执行过程中发生。在一个实施例中,可能所有的有条件非分支指令均不入选以用于预测。举例来说,出于实施方案复杂性的原因而通过微代码实施的有条件非分支指令可能不入选以用于预测的执行操作。并且,有条件分支指令将不入选以用于有条件非分支指令预测,因为所述分支指令通常具有其自身的以与本文中所描述的预测技术不同的方式操作的预测硬件和方法。使用历史信息来预测何时入选有条件非分支(ECNB)指令将不会执行。如以下更详细描述,使用一些途径来以高置信度确定是否将执行ECNB指令。确定高置信度预测方法的途径是有利的,因为预测应当执行的ECNB指令不执行的损失比预测不应执行的ECNB指令执行要严重得多。举例来说,经预测为不执行的ECNB指令将改变与所述ECNB指令相关联的管线操作,从而通过不执行选定ECNB操作来最小化功率和/或改进性能,所述选定ECNB 操作在预测ECNB指令不执行时为不需要的。举例来说,如果预测有条件载入指令不执行, 那么将无需提取由所述有条件载入指令指定的存储器操作数。对于经预测为不执行的此 ECNB指令来说,管线将在适当管线级处改变(例如)为不提取所述指令执行所需的任何寄存器或存储器操作数,从而降低功率且改进性能。然而,如果由所预测的ECNB指令指定的条件指示不正确预测,那么管线必须至少清空到所提取代码中的可校正归因于不正确预测的效应的点。当不应执行的ECNB指令被预测执行时无需管线清空,而是对于不正确预测的状况来说,终止指令使得不影响处理器状态。条件评估过程评估预先指定的条件事件的所保存状态信息,且在满足预先指定的评估准则时,针对当前入选有条件非分支(ECNB)指令在回路中的下一次执行启用其预测。 举例来说,预先指定的条件事件可包括软件回路将被执行的预先指定的次数以及是否曾基于相关联条件的状态执行一个或一个以上先前ECNB指令。举例来说,预先指定的评估准则可包括满足软件回路的设定的反复数目以及具有如下先前状态不执行在先前所设定数目个回路反复中曾遇到的先前ECNB指令。举例来说,预先指定的评估准则可能需要不执行在软件回路的两次先前执行中曾遇到的先前ECNB指令。在此状况下,将预测在软件回路的下一次反复中不执行当前ECNB指令。为支持此监视逻辑电路M8,过滤器250确定所提取的有条件非分支指令是否入选以用于所预测的执行。如果所提取的指令不入选以用于所预测的执行,那么如在无预测信息的辅助的情况下处理器的架构所指定来执行所提取的指令。如果所提取的指令入选以用于所预测的执行,那么启用CHT 252。选择CHT 252中的与ECNB指令相关联的条目以将预测信息提供到预测逻辑,所述预测逻辑为预测与固定逻辑电路2M的一部分。举例来说, 当ECNB指令移动通过管线时,通过管线级232-234追踪此预测信息。CHT 252的条目记录入选以用于所预测执行的所提取指令的执行历史。举例来说, 每一 CHT条目可包含来自执行状态计数器的计数值与状态位(其为到预测逻辑的输入)的组合。CHT 252还可包含索引逻辑以允许对所提取的ECNB指令标以索引到与所提取的ECNB 指令相关联的CHT 252中的条目中,因为软件回路中可能存在多个ECNB指令。举例来说, 通过从软件回路的顶部对ECNB指令数目进行计数,所述计数可用作到CHT 252中的索引。 监视逻辑电路248包括回路计数器,用于对软件回路的反复进行计数且确保执行状态计数器具有在表示(例如)强力不执行状态的指定计数值下饱和(saturate)的机会。如果执行状态计数器已饱和,那么启用预测逻辑以预测在回路的下一次反复中不执行相关联所提取的有条件非分支指令。预测与固定逻辑2M产生预测信息,所述预测信息在发出级232、执行级233和完成级234处于追踪寄存器发出(TrI)沈2、追踪寄存器执行(TrE) 263和追踪寄存器完成 (TrC) 264中被追踪。举例来说,在预测ECNB指令不执行时,在管线级232-234中将ECNB指令有效地视为(例如)无操作(NOP)指令。通过将ECNB指令视为NOP,如果执行ECNB指令时需要,则不读取通用寄存器(GPR),因为执行所预测的NOP指令不需要所述通用寄存器。 如果ECNB指令为载入或存储存储器存取指令,那么不将存储器存取操作起始为所预测的 NOP指令。举例来说,响应于不执行的预测,在执行级233中操作的操作数提取电路235将不提取ECNB指令执行所需的操作数。通过不读取GPR或不存取存储器,可降低处理器210 中的功率。并且,通过不读取GPR或不存取存储器和不必等待在ECNB指令被预测为NOP时将不需要的操作数,可改进处理器性能。在到达执行级233后,如果针对ECNB指令所指定的执行条件已评估与其预测相反,那么即刻校正所预测的NOP指令的管线执行。举例来说,对管线的校正可包括清空在进行预测的级处开始的管线中的指令。在替代实施例中,可从最初提取ECNB指令的开始提取级清空管线。并且,也可在不正确预测后校正适当CHT条目。图3说明示范性入选有条件非分支(ECNB)指令预测电路300。ECNB预测电路300 说明电路和电路之间的控制信号路径。更详细来说,ECNB指令预测电路300包括检测电路 304、监视器电路306和预测与固定电路308。监视器电路306包含过滤器电路310和有条件历史表(CHT)电路312。预测与固定电路308包含预测电路314、追踪电路316和校正电路 318。充当回路检测器的检测电路304操作以检测回路结束分支,如上文关于检测逻辑电路246所论述。举例来说,回路结束分支通常为有条件分支指令,其针对回路的除最后反复外的所有反复形成分支返回到回路的开始,所述最后反复退出回路。将与每一所识别的回路有关的信息传递到过滤器电路310。在一个实施例中,过滤器电路为(例如)回路计数器,其提供软件回路已发生设定数目次反复的指示,例如特定回路的三次反复。对于回路的每一反复来说,过滤器确定有条件非分支指令是否入选以用于预测。如果回路中存在入选有条件非分支(ECNB)指令,那么将执行ECNB指令的状态记录于有条件历史表(CHT)电路312中。举例来说,可使用执行状态计数器来记录ECNB指令的先前尝试执行的执行历史。可在一个方向上更新执行状态计数器以指示ECNB指令曾有条件地执行,且在相反方向上更新所述执行状态计数器以指示 ECNB指令未曾有条件地执行。举例来说,可使用两位执行状态计数器,其中不执行状态使计数器递减且执行状态使计数器递增。向执行状态计数器的输出状态(例如)指派“11”输出以指示先前ECNB指令强力指示为已执行,指派“ 10”输出以指示先前ECNB指令较弱地指示为已执行,指派“01”输出以指示先前ECNB指令较弱地指示为尚未执行,以及“00”输出指示先前ECNB指令强力指示为尚未执行。执行状态计数器的“11”输出和“00”输出将为饱和的输出值。执行状态计数器将与所检测到的软件回路中的每一 ECNB指令相关联或提供所述ECNB指令的状态。然而,特定实施方案可能限制实施方案中所使用的执行状态计数器的数目且因此限制可预测的ECNB指令的数目。检测电路304通常在首次进入软件回路后使执行状态计数器复位。或者,停用预测旗标而非执行状态计数器可与待预测的每一 ECNB指令相关联。如果先前已确定已执行相关联ECNB指令,那么将停用预测旗标设定为作用中的以停用预测。 具有已执行的先前ECNB指令暗示预测ECNB指令的不执行情形的置信度等级将低于可接受的等级。索引计数器也可与CHT 312—起使用以确定软件回路中正在对哪一 ECNB指令进行计数或评估。举例来说,在具有五个或五个以上ECNB指令的回路中,第一 ECNB指令可具有索引“000”且第四入选非分支指令可具有索引“011”。索引表示进入CHT 312以存取相应ECNB指令的所存储执行状态计数器值的地址。预测电路314接收ECNB指令的预测信息(例如,执行状态计数器输出值),且在 (例如)图2的解码级231期间预测ECNB指令将不会执行。在替代实施例中,预测电路314 可预测由ECNB指令所指定的条件评估为不执行状态。预测电路314将预测决策传递到追踪电路316,预测决策可包括所预测的相关联ECNB指令和相应CHT条目内容。如果未预测 ECNB指令,那么预测信息指示常规执行。如果预测将ECNB指令作为NOP指令执行,那么追踪信息向校正电路318通知执行状态和相关联条件评估以确定是否产生不正确预测。如果产生不正确预测,那么校正电路318清空管线,更新CHT 312中的适当执行状态计数器,且在一个实施例中标记相关联CHT条目以指示从此点开始不预测此特定ECNB指令。在另一实施例中,校正电路318还可(例如)在确定ECNB指令被误预测后改变预先指定的评估准贝U,以由此点开始使预测准则更稳妥。应认识到,可译码回路中的入选有条件非分支(ECNB)指令的序列使得每一指令视相同条件解析而定。在此状况下,可将ECNB指令的序列视为与有条件历史表(CHT)中的单一条目有关的群组。在此状况下,当预测指示不执行时,将ECNB指令的序列视为无操作 (NOP)指令的序列。举例来说,ECNB指令的群组可包括两个有条件载入操作数指令,之后是有条件算术指令,所述有条件算术指令指定对两个载入操作数执行的运算。此外,三个ECNB 指令视相同条件解析而定。在管线式处理器中,可较早在管线中将这三个指令识别为具有相同条件解析的有条件群组。在一个实施例中,管线中的所述群组的第一有条件载入指令触发预测评估且CHT中的条目可标记为与ECNB指令的此群组相关联。以此方式,ECNB指令的所述群组与到CHT中的单一索引相关联,使得ECNB群组的所有指令评估为相同索引。应认识到,可在回路外辨识入选有条件非分支(ECNB)指令且也可有利地将所述指令预测为不执行。充当地址范围检测电路的检测电路304检测将评估ECNB指令预测所处的地址范围。每当提取进入地址范围的代码时,启用ECNB指令预测电路300且监视并评估地址范围内的ECNB指令。当满足评估准则时,通过以与先前描述类似的方式操作的追踪和校正来预测是否执行ECNB指令。进一步认识到,并非所有回路或地址范围具有类似特性。如果特殊回路或地址范围提供不良预测结果,那么可标记所述回路或地址范围以停用预测。以类似方式,特殊回路或地址范围可在一个操作情形集合下以优良预测操作且可在一不同操作情形集合下以不良预测操作。在此状况下,对操作情形的辨识允许启用预测、停用预测或在适用于操作情形的不同评估准则下启用预测。图4A说明用于预测ECNB指令的执行的第一过程400。在框402处,监视处理器代码执行以检测软件回路。在决策框404处,做出是否已到达代码中已检测到软件回路的点的确定。如上所述,可(例如)通过识别到回路的开始处的向后分支来确定软件回路。如果尚未识别到软件回路,那么第一过程400返回到框402。如果已识别到软件回路,那么在代码中此点处,已执行软件回路的第一循环且可准备开始软件回路的下一循环。在决策框406处,在软件回路的下一循环中,做出在(例如)管线解码级(例如, 图2的解码级231)期间是否已检测到ECNB指令的确定。如果尚未检测到ECNB指令,那么过程400进行到决策框408。在决策框408处,做出是否已完成对软件回路的遍历的确定。 可通过(例如)到达在决策框404处识别软件回路的向后分支来确定对软件回路的第一次遍历。如果尚未完成对软件回路的遍历,那么第一过程400返回到决策框406以继续检查ECNB指令。在决策框406处,如果已检测到ECNB指令,那么第一过程400进行到决策框 410。在决策框410处,在处理器解码级231期间做出(例如)是否满足此ECNB指令的预先指定的评估准则的确定。预先指定的评估准则可为(例如)回路反复计数是否大于或等于预先指定的值(例如,3)。如果不满足预先指定的评估准则,那么第一过程400进行到框 412。在框412处,执行此ECNB指令且更新此ECNB指令的执行状态。举例来说,如果ECNB 指令曾有条件地执行,那么设定停用预测旗标。一旦设定停用预测旗标,则(例如)直到完成软件回路才可对其进行复位。在决策框408处,做出是否已完成对软件回路的遍历的确定。如果已完成对软件回路的遍历,那么第一过程400进行到决策框414。在决策框414处,做出软件回路是否完结的确定。如果软件回路未结束,那么第一过程400进行到框416。在框416处,对回路反复进行计数且第一过程400返回到决策框406以保持检查ECNB指令。如果软件回路结束, 那么第一过程400进行到框418。在框418处,使第一过程400中所使用的预测电路复位。 此复位允许在每次进入软件回路时预测评估以重新初始化的电路而开始。或者,可在每当检测到新软件回路时进行复位。接着,第一过程400返回到框402以开始搜索下一软件回路。返回到决策框410,如果满足预先指定的准则,那么第一过程400进行到决策框 420。在决策框420处,做出关于是否满足此ECNB指令的执行条件的确定。举例来说,执行条件可采用用于此ECNB指令的停用预测旗标的形式。每当ECNB指令的例项有条件地执行时,通常将设定停用预测旗标。一旦设定此停用预测旗标,则(例如)直到完成软件回路才可对其进行复位。返回到决策框420,如果停用预测旗标处于指示先前曾执行ECNB指令的停用预测状态,那么第一过程400返回到框412。如果停用预测旗标处于指示先前尚未执行 ECNB指令的启用预测状态,那么第一过程400进行到框421。在框421处,预测将此ECNB 指令作为NOP指令执行。在框422处,在处理器管线中追踪预测。在决策框似4处,在确定与此ECNB指令相关联的条件的管线级处,做出框420的预测是否正确的确定。如果预测正确,那么过程400返回到框408,因为可能需要评估软件回路中的其它ECNB指令。如果预测不正确,那么第一过程400进行到框426。在框似6处,起始处理器管线的清空以移除经不正确预测的ECNB指令和管线中可能受到所预测操作影响的任何指令。在框似6处,将管线校正到检测此ECNB指令的点。接着,过程400返回到框412,其中可接着执行此ECNB指令且更新其相关联执行状态。图4B说明用于预测ECNB指令的执行的第二过程450。在框452处,监视处理器代码执行以检测ECNB指令。在决策框4M处,做出在(例如)管线解码级(例如,图2的解码级231)期间是否已检测到ECNB指令的确定。如果尚未检测到ECNB指令,那么第二过程 450返回到框452。如果已检测到ECNB指令,那么第二过程450进行到决策框456。在决策框456处,在处理器解码级231期间做出(例如)是否满足此ECNB指令的预先指定的评估准则的确定。预先指定的评估准则可为(例如)与ECNB指令相关联的回路反复计数是否大于或等于预先指定的值(例如,3)。如果尚未满足预先指定的评估准则,那么第二过程 450进行到框458。在框458处,执行此ECNB指令且更新此ECNB指令的执行状态计数器。在决策框460处,做出是否已检测到软件回路的确定。如上所述,可通过(例如) 识别代码中的向后分支来确定软件回路。如果尚未检测到软件回路,那么第二过程450返回到框452以检查另一 ECNB指令。如果已检测到软件回路,那么第二过程450进行到框 462。在框462处,初始化不为所检测到的回路的部分的ECNB指令的执行状态计数器,因为在第二过程450中,仅预测软件回路中的ECNB指令。图4B涵盖在具有回路外的其它ECNB 指令的代码序列中检测到所述回路的预期状况。回路外的其它ECNB指令影响CHT容量且可限制在所检测到的回路中评估的ECNB指令的数目。因此,重新起始回路外的所遇到的ECNB 指令的执行状态计数器且如以下进一步详细描述来调整CHT逻辑。可从ECNB指令的地址和软件回路的地址范围来确定不为所检测到的软件回路的部分的ECNB指令。调整有条件历史表(CHT)的开始条目以表示软件回路中检测到的ECNB 指令。还应注意,可将不为所检测到的回路的部分的ECNB指令的执行状态计数器重新分配到CHT以增加用于软件回路内ECNB指令的CHT容量。在决策框464处,做出软件回路是否完结的确定。如果软件回路未结束,那么第二过程450进行到框466。在框466处,对回路反复进行计数且过程返回到框452。如果软件回路结束,那么第二过程450进行到框468。 在框468处,使第一过程400中所使用的预测电路复位。此复位允许在每次进入软件回路时通过重新起始的电路开始预测评估。或者,可在每当检测到新软件回路时进行复位。返回到决策框456,如果满足预先指定的准则,那么第二过程450进行到决策框 470。在决策框470处,做出是否将此ECNB指令作为无操作(NOP)指令执行的确定。举例来说,可预测此ECNB指令执行由所述ECNB指令指定的功能。在此状况下,第二过程450进行到框458。或者,可预测将此ECNB指令作为NOP指令执行。在框472处,在处理器管线中追踪预测。在决策框474处,在确定与此ECNB指令相关联的条件的管线级处,做出框470 的预测是否正确的确定。如果预测正确,那么第二过程450返回到框460。如果预测不正确,那么第二过程450进行到框476。在框476处,起始处理器管线的清空以移除经不正确预测的ECNB指令和管线中可能受到所预测操作影响的任何指令。在框478处,由于发现正被评估的软件回路中的不正确预测而使第二过程450中所使用的预测电路复位。接着,第二过程450返回到框452。或者,可对ECNB指令状态计数器进行校正以反映不正确预测且过程可继续。
图5说明用于预测ECNB指令的执行的第三过程500。在框502处,监视处理器代码执行以确定处理器是否正执行从预先指定的地址范围提取的代码。举例来说,编译程序或其它软件工具可识别代码区段中的ECNB指令且使用所识别的ECNB指令的地址来一般化预先指定的地址范围。在决策框504处,做出在(例如)管线提取级(例如,图2的提取级 230)期间是否检测到预先指定的地址范围的确定。如果尚未检测到预先指定的地址范围, 那么第三过程500返回到框502。如果已检测到预先指定的地址范围,那么第三过程500进行到框506。在框506处,更新地址范围计数器以指示进入特定地址范围的次数。在框508 处,监视处理器代码以检测ECNB指令。在决策框510处,做出在(例如)管线解码级(例如,图2的解码级231)期间是否已检测到ECNB指令的确定。如果尚未检测到ECNB指令, 那么第三过程500进行到决策框512。在决策框512处,做出处理器是否仍在执行预先指定的地址范围内的代码的确定。如果处理器并非正在执行预先指定的地址范围内的代码,那么第三过程500进行到框502。如果处理器正在执行预先指定的地址范围内的代码,那么第三过程500进行到框508。返回到决策框510处,如果已检测到ECNB指令,那么第三过程500进行到决策框 514。在决策框514处,在图2的处理器解码级231期间做出(例如)是否满足此ECNB指令的预先指定的评估准则的确定。选择预先指定的评估准则以提供预测将ECNB指令作为 NOP执行的高置信度。举例来说,在一个实施例中,可设置预先指定的评估准则以要求ECNB 指令的至少两次先前尝试执行具有强力不执行状态。如果不满足预先指定的评估准则,那么第三过程500进行到框516。在框516处,执行此ECNB指令且更新此ECNB指令的执行状态计数器。接着,第三过程500返回到决策框512以确定处理器是否仍在执行预先指定的地址范围内的代码,且如果确定结果为肯定的,那么返回到框508,否则返回到框502。返回到决策框514,如果满足预先指定的评估准则,那么第三过程500进行到框 520。在框520处,此ECNB指令的执行经预测以作为NOP指令执行。在框522处,在处理器管线中追踪预测。在决策框5M处,在确定与此ECNB指令相关联的条件的管线级处,做出框520的预测是否正确的确定。如果预测正确,那么第三过程500返回到决策框512以确定处理器是否仍在执行预先指定的地址范围内的代码,且如果确定结果为肯定的,那么返回到框508,否则返回到框502。返回到决策框524,如果预测不正确,那么第三过程500进行到框528。在框528 处,起始处理器管线的清空以移除经不正确预测的ECNB指令和管线中可能受到所预测操作影响的任何指令。在框530处,更新用于此ECNB指令的预测电路。接着,过程500返回到框508。图6说明用于预测ECNB指令的执行的第四过程600。第四过程600评估ECNB指令是否重复地识别为在相同ECNB指令的识别之间具有相对较短或相对较长的处理器循环周期。相对较短的处理器循环周期可指示ECNB指令位于软件回路中。相对较长的处理器循环周期可指示ECNB指令位于主要归因于被调用例程而执行(例如,当用户下载用于显示的视频时)的地址范围内。在此状况下,可调用具有ECNB指令的MPEG解码例程。在框602处,监视处理器代码执行以检测ECNB指令。在决策框604处,做出在(例如)管线解码级(例如,图2的解码级231)期间是否已检测到ECNB指令的确定。如果尚未检测到ECNB指令,那么第四过程600返回到框602。如果已检测到ECNB指令,那么第四
12过程600进行到决策框606。在决策框606处,做出先前是否已识别到此ECNB指令的确定。 如果此识别为对此ECNB指令的第一次识别,那么第四过程600进行到框608。在框608处, 记录此ECNB指令的地址。在框610处,将“命中”计数器起始为(例如)计数1。在框612 处,开始经过循环计数器(elapsed cycle counter)以对多次遇到此ECNB指令之间经过的循环的数目进行计数。应注意,在与中断例程和直接存储器存取操作相关联的循环就其预期目的来说影响计数准确性的程度上,可能需要过滤所计数的循环数目以考虑这些其它操作。在框614处,执行此ECNB指令且更新执行状态计数器。接着,第四过程600返回到框 602。返回到决策框606,如果先前已识别此ECNB指令,那么第四过程600进行到框 618。在框618处,评估已遇到此ECNB指令的次数和多次遇到之间经过的循环的数目。在框619处,更新“命中”计数器,存储当前经过循环计数,且重新开始经过循环计数器以对下一周期中多次遇到之间经过的循环的数目进行计数。在决策框620处,做出是否评估预先指定的评估准则的确定。在一个实施例中,可设置预先指定的评估准则以要求在执行状态计数器中至少两次先前尝试执行具有强力不执行状态,其中两次遇到之间的处理器循环少于X个。在另一实施例中,可设置预先指定的评估准则以要求至少三次先前尝试执行,每一次先前尝试执行在执行状态计数器中具有强力不执行状态,其中三次遇到中的每一者之间的处理器循环至少为Y个,其中Y大于X。如果不满足预先指定的评估准则,那么第四过程 600返回到框614,其中执行此ECNB指令且更新执行状态计数器。接着,过程返回进行到 602。返回到决策框620,如果满足预先指定的评估准则,那么第四过程600进行到框 624。在框6M处,预测此ECNB指令的执行;例如,预测将此ECNB指令作为NOP指令执行。 在框6 处,在处理器管线中追踪预测。在决策框6 处,在确定与此ECNB指令相关联的条件的管线级处,做出框624的预测是否正确的确定。如果预测正确,那么第四过程600返回到框602。如果预测不正确,那么第四过程600进行到框632。在框632处,起始处理器管线的清空以移除经不正确预测的ECNB指令和管线中可能受到预测操作影响的任何指令。在框634处,使用于此ECNB指令的预测电路复位。接着,过程600返回到框602。结合本文中所揭示的实施例所描述的各种说明性逻辑块、模块、电路、元件和/或组件可利用以下各项来实施或执行通用处理器、数字信号处理器(DSP)、专用集成电路 (ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件,或其经设计以执行本文中所描述的功能的任何组合。通用处理器可为微处理器,但在替代方案中,处理器可为任何常规的处理器、控制器、微控制器或状态机。还可将处理器实施为计算组件的组合,例如,DSP与微处理器的组合、多个微处理器的组合、结合DSP核心的一个或一个以上微处理器或适于所要应用的任何其它此类配置。结合本文中所揭示的实施例所描述的方法可直接以硬件、以由处理器执行的软件模块或以两者的组合体现。软件模块可驻留于RAM存储器、快闪存储器、ROM存储器、EPROM 存储器、EEPROM存储器、寄存器、硬盘、可装卸盘、⑶-ROM或此项技术中已知的任何其它形式的存储媒体中。存储媒体可耦合到处理器,使得所述处理器可从所述存储媒体读取信息且可将信息写入到所述存储媒体。在替代方案中,存储媒体可与处理器成一体式。举例来说,处理器210可经配置以在存储于计算机可读存储媒体上的程序的控制下执行包括有条件非分支指令的指令,所述计算机可读存储媒体(例如)在本地与处理器直接相关联(例如,可经由指令高速缓冲存储器获得)或可经由I/O装置(例如,I/O装置 240或对2中的一者)存取。I/O装置还可存取驻留于在本地与处理器直接相关联的存储器装置(例如,Dcache 228)中或可从另一处理器的存储器存取的数据。计算机可读存储媒体可包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器 (SDRAM)、快闪存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、紧密光盘(CD)、数字影音光盘(DVD)、 其它类型的可装卸盘或任何其它合适的存储媒体。 尽管在说明性实施例的情境中揭示本发明以在处理器系统中使用,但应认识到, 所属领域的一般技术人员可使用与上文论述和所附权利要求书相一致的广泛多种实施方案。举例来说,固定功能实施方案也可利用本发明的各种实施例。
权利要求
1.一种用于不执行已发出的有条件非分支指令的方法,所述方法包含将有条件非分支指令识别为入选以用于预测,所述预测指示所述入选有条件非分支 ECNB指令将不会执行;以及响应于所述ECNB指令将不会执行的所述预测,将所述ECNB指令作为无操作NOP指令执行。
2.根据权利要求1所述的方法,其中响应于所述预测而不提取所述ECNB指令执行所需的源操作数。
3.根据权利要求1所述的方法,其中响应于所述预测而不保留通用寄存器文件中的寄存器以含有所述ECNB指令的结果。
4.根据权利要求1所述的方法,其进一步包含响应于停用预测旗标而预测所述ECNB指令不执行,所述停用预测旗标指示在所述预测所基于的入选周期期间未发生所述ECNB指令的先前成功执行。
5.根据权利要求1所述的方法,其进一步包含在历史寄存器中记录所述ECNB指令是否曾执行;以及响应于所述历史寄存器指示所述ECNB指令的至少一次先前所尝试执行未曾执行而预测下一 ECNB指令不执行。
6.根据权利要求5所述的方法,其中在软件回路中曾遇到所述ECNB指令的所述至少一次先前所尝试执行。
7.根据权利要求5所述的方法,其中在预先指定的地址范围中曾遇到所述ECNB指令的所述至少一次先前所尝试执行。
8.根据权利要求5所述的方法,其中在所识别数目的处理器循环内曾遇到所述ECNB指令的所述至少一次先前所尝试执行。
9.根据权利要求1所述的方法,其进一步包含比较评估准则与ECNB指令执行状态计数器的计数值输出以产生所述预测,其中所述 ECNB指令执行状态计数器在第一计数值下饱和,所述第一计数值指示所述ECNB指令的先前所尝试执行被强力不执行的历史。
10.根据权利要求9所述的方法,其进一步包含在第一方向上更新所述ECNB指令执行状态计数器以指示所述ECNB指令的先前所尝试执行曾有条件地执行;以及在与所述第一方向相反的第二方向上更新所述ECNB指令执行状态计数器以指示所述 ECNB指令的先前所尝试执行未曾有条件地执行。
11.根据权利要求9所述的方法,其中所述评估准则为所述第一计数值。
12.根据权利要求9所述的方法,其中在软件回路中曾遇到所述ECNB指令的所述先前所尝试执行。
13.一种用于预测有条件非分支指令将不会执行的设备,所述设备包含第一电路,其用于识别有条件非分支指令入选以用于预测;以及第二电路,其用于响应于满足评估准则而预测所述入选有条件非分支ECNB指令是否将不会执行。
14.根据权利要求13所述的设备,其进一步包含操作数提取电路,其响应于不执行的所述预测而不提取所述ECNB指令执行所需的操作数。
15.根据权利要求13所述的设备,其进一步包含管线追踪电路,其用以在用于预测的管线级之后的管线级中追踪所述预测;以及 ECNB指令执行级电路,其响应于不执行的所述预测而不执行所述ECNB指令。
16.根据权利要求13所述的设备,其进一步包含ECNB指令执行状态计数器,其具有与所述评估准则进行比较的计数值输出,其中所述计数值在第一方向上经更新以指示ECNB指令曾有条件地执行并在指示强力执行历史的第一计数值下饱和,且在第二方向上经更新以指示ECNB指令未曾执行并在指示强力不执行历史的第二计数值下饱和。
17.根据权利要求16所述的设备,其中所述评估准则为所述第二计数值。
18.根据权利要求13所述的设备,其中所述评估准则为处于非作用中状态的停用预测旗标,其中所述停用预测旗标的所述非作用中状态指示预测经启用,其中在任何时候确定所述ECNB指令已在与所述ECNB指令相关联的软件回路中有条件地执行的情况下将所述停用预测旗标设定为停用状态。
19.一种用于预测有条件非分支指令将不会执行的方法,所述方法包含 识别入选以用于预测有条件非分支指令是否将执行;以及响应于满足评估准则而预测所述入选有条件非分支ECNB指令将不执行。
20.根据权利要求19所述的方法,其中响应于满足所述评估准则而不提取所述ECNB指令执行所需的源操作数。
21.根据权利要求19所述的方法,其中响应于满足所述评估准则而将所述ECNB指令作为无操作NOP指令执行。
22.根据权利要求19所述的方法,其中满足所述评估准则包含记录在软件回路内曾遇到的所述ECNB指令的先前所尝试执行的执行状态的历史;以及将所述历史与所述评估准则进行比较以指示是否已满足所述评估准则。
全文摘要
本发明描述用于不执行已发出的有条件非分支指令的有效技术。将有条件非分支指令识别为入选以用于预测,所述预测指示所述入选有条件非分支ECNB指令将不会执行。所述ECNB指令响应于所述ECNB指令将不会执行的所述预测而作为无操作NOP指令执行。所述ECNB指令执行所需的源操作数响应于不执行的所述预测而不被提取。
文档编号G06F9/38GK102483696SQ201080036831
公开日2012年5月30日 申请日期2010年8月18日 优先权日2009年8月19日
发明者布莱恩·M·斯坦普尔, 戴维·J·曼德扎克, 托马斯·A·萨托里乌斯, 罗德尼·W·史密斯, 詹姆斯·N·迪芬德尔弗尔 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1