用于将处理器置于逐渐缓慢的操作模式的系统和方法

文档序号:6608579阅读:227来源:国知局

专利名称::用于将处理器置于逐渐缓慢的操作模式的系统和方法
技术领域
:本发明总体涉及一种改进的数据处理系统和方法。具体地,本发明涉及一种用于将处理器置于逐渐缓慢的操作模式(gradualslowmodeofoperation)的系统和方法。处理器的缓慢操作模式被用于摆脱处理器核内的活锁状态(livelockcondition)。
背景技术
:在现代处理器设计中,尤其在同步多线程(SMT)处理器设计中,活锁状态是在设计阶段最难以发现和解决的问题之一,常常是直到后来在该设计实施在硬件中时才被发现。活锁状态可被描述为处理器重复地执行相同指令集而不做任何实际前进。进入活锁状态的根本原因之一是由于在一个处理器单元和另一个之间的“谐和(harmonic)”固定周期交互(interaction)。活锁状态的其它原因是指令的重复刷新和重新读取、来自发行队列的重复的重新发行以及由于在不能够腾出的资源满或者忙状态时发生重复刷新(flush)状态而从来没有完成指令。“谐和”固定周期交互是下述事实的产物在处理器流水线中,固定数目的周期被用于处理和完成指令的执行。来自个多线程的指令将以谐和方式通过该处理器流水线而被处理,使得每个线程中的每个指令以基本上相同的时间完成处理。如果在执行的线程之间具有从属性(dependency),使得一个线程需要另一个执行的线程中的指令的结果,则活锁状态可能发生,因为两个指令同时通过该处理器流水线被处理以及存在资源和从属性的冲突。由于另一个线程中的指令的结果尚未获得,因此从属指令将不能够完成。如果另一个线程中的指令遇到资源冲突,则来自两个线程的指令将被重复地刷新并重新发行到该流水线。图6A和6B示出了导致活锁状态的代码的例子和双指令发行处理器设计。图6A表示SMT和双指令发行处理器流水线设计,其中,每隔一个周期就从每个线程发行两个指令。图6B表示示例性的用户代码,当其在图6A所示的处理器流水线上被执行时,导致两个线程试图访问处理器的专用寄存器(SPR)。线程0用不相等分支(Branch-Not-Equal)(bneq)指令编码以等待线程1代码完成其SPR访问。线程0代码将坚持分支返回(branching)并坚持检查线程1的“存储”指令是否完成。图6A所示的处理器流水线设计中的SPR队列每次仅仅能够支持两个SPR指令。因此,线程1中的第三个SPR指令以及在第三个SPR指令后面的所有指令将一直被刷新和重新发行。如果线程0和线程1两者的指令以下面表1中所示的顺序进行编译,则在“mtsprCR1”前面的所有线程1的指令将完成。线程1的“mtsprCR1”将最初被刷新,因为该SPR队列忙于“mtsprAR3”和“mtsprBR2”。只要线程1的“存储R40x100”不被执行,在“bneqCheckThread1SPR”后面的所有的线程0的指令都将被发行和刷新。表1-产生活锁状态的示例性代码流表2表示由于在由于两个线程中的剩余指令被重新发行、刷新和再次重新发行而导致在n+1和n+3处的线程1的指令完成之后发生的新代码序列。如表2中所示,由于线程0的“mtsprDR6”和“mtsprER7”在线程1的“mtsprCR1”的前面发行,因此线程1的“mtsprCR1”将再次得到刷新。由于分支错误预测,线程0中的这两个“移动到SPR”指令将最终得到刷新。来自两个线程的这两个刷新状态(线程0的分支错误预测刷新和线程1的第三个移动到SPR指令)连续地刷新并且该发行单元(issueunit)处于“谐和”窗口。因此,表2中的线程0和线程1两者的指令将一再地重新发行和刷新。这将迫使处理器进入活锁状态。表2-产生活锁状态的示例性代码流诸如上述的活锁状态经常会在真实应用程序在处理器硬件上运行时被检测到。此刻来确定该设计常常是既昂贵又太迟了。因此,重要的是,在处理器核内建立一种通用方法来检测和解决在硬件有效期中发现的这种不希望的活锁状态。通常,采用基于硬件的检测机制来检测这种活锁状态,该检测机制可以被硬编码在处理器设计本身中,诸如被硬编码在处理器的发行单元中。该检测机制可以检测活锁状态的方式取决于特定的实施手段(implementation)。例如,该检测机制可以通过计数特殊指令的刷新数目或者指令在没有完成的情况下重新发行的次数来检测活锁状态。这种情况表示没有向前前进的状态改变,并且因此表示一种潜在的活锁情况(scenario)。在已知设计中,响应于使用该活锁检测机制检测到活锁状态的发生,处理器的流水线被置于单步操作模式中,使得在一个或多个线程上每次仅仅完成一个指令。但是,在每次检测到活锁状态时将处理器的流水线置于单步模式中会显著地影响处理器的整体性能,因为该活锁状态在程序的执行中会非常频繁地发生。如果这个活锁状况具有活锁窗口,即具有仅仅少数处理器周期的其中活锁状态将在处理器中继续被检测的时间段,则这个方法也是不必要的过度行为(overkill)。
发明内容示例性实施例提供了一种用于将处理器置于一种逐渐减慢的操作模式的系统和方法。处理器的逐渐减慢允许处理器摆脱活锁状态。而且,由于减慢是渐渐的,因此处理器可以灵活地避免各种程度的活锁状态。通过对不严重的活锁状态采取小的性能影响以及仅仅在活锁状态是更严重时增加该处理器性能影响,示例性实施例的机智基于活锁状态的严重性来影响整体处理器性能。采用示例性实施例的机制,伴随相关的活锁状态处理逻辑一起提供了活锁状态检测的多个阶段。相关的活锁状态处理逻辑使用试图摆脱活锁状态的不同动作。多个阶段中的每个随后阶段与活锁状态的增加严重性相关联。早期阶段与仅仅是少数处理器周期的活锁窗口相关联,而后期阶段与更长的活锁窗口相关联。对于每个阶段,处理器的性能被逐渐地降低,而摆脱活锁状态的可能性增加。在一个示例性实施例中,减慢模式控制逻辑被设置在处理器流水线的发行单元中。该减慢模式控制逻辑耦接到悬停(hang)检测控制逻辑,该悬停检测控制逻辑负责基于预定准则,例如特殊指令刷新数目或者指令在没有完成的情况下重新发行的次数,来检测活锁状态。响应于检测到活锁状态,该悬停检测控制逻辑向该减慢模式控制逻辑发出一个表示存在活锁状态的信号。该减慢模式控制逻辑开始处理器的逐渐减慢的操作。根据该逐渐减慢的操作,所述减慢模式控制逻辑输出信号以减缓(stall)通过处理器流水线的指令的流动。该输出信号诸如通过或门与来自诸如数据从属性控制逻辑的其它控制逻辑的输出信号逻辑地组合。因此,如果所述减慢模式控制逻辑或者其它控制逻辑输出信号以减缓通过处理器流水线的指令的移动,则该指令被减缓。当这些信号没有被发出时,则该指令允许以正常方式流动通过该流水线。根据被硬连接到或者编程到该减慢模式控制逻辑中的分阶段方案,该减慢模式控制逻辑输出该信号以减缓指令的流动。例如,如果所述悬停检测控制逻辑检测到活锁(或者悬停)状态,即在没有指令被提交(commit)的情况下存在X刷新数目(这里X可以在硬件确认之后被编程),则减慢模式控制逻辑可以减慢发行单元,使得发行单元仅仅每隔N个处理器周期发行指令(这里N可以在硬件确认之后被编程)。发行单元的减慢可以通过发出信号来减缓通过流水线的指令的移动来实现。这个信号可以针对预定数目的周期例如N个周期被发出,使得每隔N个处理器周期仅仅一个指令被发行。如果这种相同的活锁状态再次发生,即在没有指令被提交的情况下存在X次刷新数目,则发行单元被再次减慢,使得发行单元可以每隔2N个处理器周期发行一个指令。如果活锁状态被再次检测到,则发行单元被再次减慢,使得发行单元可以每隔4N个处理器周期发行一个指令。此后,如果活锁状态被再一次检测到,则处理器被确定为处于严重的活锁状态。在这种情况下,发行单元被强制进入连续单步模式,该连续单步模式允许仅仅一个指令发行,而不允许发行其它指令,直到在前一指令完成为止。当该发行单元排出了该发行单元的发行和调度流水线中的所有指令时,该处理器被恢复到正常的全速操作模式。如果该活锁状态不再被检测到,则该处理器在所述分阶段方案的任何一个在前阶段中被恢复到该正常的全速操作模式。在一个示例性实施例中,提供一种用于摆脱活锁状态的方法。该方法包括例如检测数据处理装置中的活锁状态以及在持续检测到所述活锁状态的同时,使得由数据处理装置进行的指令的处理逐渐地减缓增加数目的处理器周期。该方法还可以包括响应于检测到所述活锁状态已被打破,使得所述数据处理装置恢复到全速操作模式。所述使得由数据处理装置进行的指令的处理逐渐地减缓可以包括根据分阶段方案,响应于检测到所述活锁状态,将数据处理装置设置到减速操作模式。所述分阶段方案可具有多个阶段,所述多个阶段按照不同的处理周期数量来减慢指令的处理。所述将数据处理装置设置到减速操作模式包括将由数据处理装置进行的指令的处理减慢到一第一操作减慢阶段,以及确定所述活锁状态在减慢由数据处理装置进行的指令的处理之后是否持续。所述将数据处理装置设置到减速操作模式还可包括如果所述活锁状态在将指令的处理减慢到第一操作减慢阶段之后持续,则将由数据处理装置进行的指令的处理减慢到一第二操作减慢阶段。与第一操作减慢阶段相比,第二操作减慢阶段使得由数据处理装置进行的指令的发行延迟更大数目的处理周期。第二操作减慢阶段使得由数据处理装置进行的指令的发行延迟的处理周期数目是第一操作减慢阶段使得由数据处理装置进行的指令的发行延迟的处理周期数目的2倍。与第一操作减慢阶段相比,第二操作减慢阶段与更严重的活锁状态相关联。所述检测数据处理装置中的活锁状态可以包括检测在没有完成指令的情况下达到预定阈值的特殊指令刷新的数目。而且,所述检测数据处理装置中的活锁状态还可以包括在没有完成指令的情况下达到预定阈值的指令重新发行的次数。所述分阶段方案的最后阶段可将由数据处理装置进行的指令的处理减慢到连续的单步操作模式,该连续的单步操作模式仅仅允许一个指令发行,而不允许其它指令发行,直到所述一个指令完成为止。所述数据处理装置是处理器,并且其中由处理器进行的指令的处理通过延迟处理器流水线中的指令的发行而被逐渐地减缓。该方法在处理器的发行单元中实施。由处理器进行的指令的处理通过减缓通过所述发行单元的发行和调度流水线的指令的移动而被逐渐地减缓。在数据处理装置的硬件制造之后,用于检测活锁状态的准则被编程到该数据处理装置中。而且在数据处理装置的硬件制造之后,针对所述分阶段方案的每个阶段使得指令的发行延迟的处理周期的基本数目被编程到数据处理装置中。在另一个示例性实施例中,提供了一种计算机程序产品,其包括具有计算机可读程序的计算机可用介质。该计算机可读程序在计算装置上被执行时,使该计算装置完成相对于上述示例性实施例方法而在上面概括出的操作中的各种操作以及组合。在又一个示例性实施例中,提供了一种用于摆脱活锁状态的系统。该系统可以包括发行单元和耦接到所述发行单元的处理器流水线。所述发行单元可以检测处理器流水线中的活锁状态;在持续检测到所述活锁状态的同时,使得由处理器流水线进行的指令的处理逐渐地减缓增加数目的处理器周期;以及响应于检测到所述活锁状态已被打破,使得所述处理器流水线恢复到全速操作模式。而且,该发行单元还可以完成相对于上述方法示例性实施例而在上面概括出的操作的各种操作和组合。鉴于本发明示例性实施例的下面详细说明,对于本领域普通技术人员来说,本发明的上述和其它特征及优点将被说明或者将变得清楚。在所附权利要求中给出了认为为本发明特征的新颖特征。然而,当结合附图阅读时,通过参考示例性实施例的下述详细说明,将更好地理解本发明自身以及其使用的优选模式、其它目的和优点,其中图1是其中可以实现示例性实施例的各个方案的分布式数据处理系统的示例性示意图;图2是其中可以实现示例性实施例的各个方案的数据处理装置的示例性方框图;图3是表示根据一个示例性实施例的处理器流水线的示例性示意图;图4是表示根据一个示例性实施例的发行单元的细节的示例性示意图;图5是表示根据一个示例性实施例的用于活锁状态检测和减慢机制的操作的分阶段方案(stagingscheme)的示例性示意图;图6A表示SMT和双指令发行处理器流水线设计,其中每隔一个周期就从每个线程发行两个指令;图6B表示示例性的用户代码,当其在图6A所示的处理器流水线上被执行时,导致两个线程企图访问处理器的专用寄存器(SPR);以及图7是概括用于根据一个示例性实施例检测活锁状态和减慢处理器流水线操作的示例性操作的流程图。具体实施例方式各个示例性实施例提供了一种用于将处理器置于逐渐减慢的操作模式以便摆脱活锁状态的系统和方法。这些示例性实施例可以在任何计算装置的任何处理器中实现。例如,这些示例性实施例可以被用在服务器计算装置、客户计算装置、通信装置、便携式计算装置等的任何一个中。图1-2此后作为其中可以实现这些示例性实施例的各个示例性方案的分布式数据处理环境和计算装置的例子。图1-2仅仅是示例性的,并不是为了说明或暗示对于可以实现这些示例性实施例的计算装置的类型的任何限制。相反,这些示例性实施例可以被实现在任何处理器中,而与其中处理器最终正在操作的特殊机器或者计算装置无关。现在参考附图,图1描述了其中可以实现示例性实施例的各个方案的示例性分布式数据处理系统的图示表示。分布式数据处理系统100可以包括其中可以实现这些示例性实施例之实施例的计算机的网络。该分布式数据处理系统100包含至少一个网络102,其是用于在分布式数据处理系统100内在各种装置和连接在一起的计算机之间提供通信链路的中介。网络102可以包括诸如电线、无线通信链路或者光缆的连接。在描述的例子中,服务器104和服务器106与存储单元108一起被连接到网络102。另外,客户机110,112和114也被连接到网络102。这些客户机110,112和114例如可以是个人计算机、网络计算机等。在描述的例子中,服务器104将诸如根文件、操作系统图像和应用程序的数据提供给客户机110,112和114。客户机110,112和114在所描述的例子中是针对服务器104的客户机。分布式数据处理系统100可以包括另外的服务器、客户机以及其它没有示出的装置。在描述的例子中,分布式数据处理系统100是因特网,其具有表示全球网络集合的网络102和使用传输控制协议/因特网协议(TCP/IP)套装协议以相互通信的网关。因特网的中心是在主节点或者主计算机之间的高速数据通信线路的主干网,由路由数据和消息的成千上万个商业、政府、教育和其它的计算机系统构成。当然,分布式数据处理系统100还可以被实现为包括若干不同类型的网络,诸如例如为内部网络、局域网络(LAN)、广域网络(WAN)等。如上述,图1是用作为例子,而不是用作为对于本发明不同实施例的体系结构限制。因此,图1中所示的特殊部件不应当被认为是对于其中可以实现本发明各个示例性实施例的环境的限制。现在参考图2,其中示出了其中可以实现各个示例性实施例的各个方案的示例性数据处理系统的方框图。数据处理系统200是诸如图1中服务器104或者客户机110的计算机的例子,其中可以位于(locate)用来实现用于本发明示例性实施例的各个处理的计算机可用代码或者指令。在描述的例子中,数据处理系统200采用集线器体系结构,包括北桥和存储器控制器集线器(NB/MCH)202以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208和图形处理器210被连接到NB/MCH202。图形处理器210可以通过加速图形端口(AGP)被连接到NB/MCH202。在描述的例子中,局域网络(LAN)适配器212连接到SB/ICH204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口和其它通信端口232、以及PCI/PCIe装置234通过总线238和总线240连接到SB/ICH204。PCI/PCIe装置可以包括例如以太网适配器、内插卡、以及用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe不使用。ROM224可以是例如闪烁二进制输入/输出系统(BIOS)。HDD226和CD-ROM驱动器230通过总线240连接到SB/ICH204。HDD226和CD-ROM驱动器230可以使用例如集成驱动器电子设备(IDE)或者串行先进技术附加装置(SATA)接口。超级I/O(SIO)装置236可以被连接到SB/ICH204。操作系统在处理单元206上运行。操作系统在图2的数据处理系统200内协调和提供各种部件的控制。作为客户机,操作系统可以是商业上可获得的操作系统,例如为MicrosoftWindowsXP(Microsoft和Windows是微软公司在美国、其它国家或者两者都注册的商标)。面向对象的编程系统,诸如JavaTM编程系统可以与操作系统协作运行,并且提供从在数据处理系统200上执行的JavaTM程序或者应用程序中调用操作系统(Java是太阳微系统公司在美国、其它国家或者两者都注册的商标)。作为服务器,数据处理系统200可以是例如IBMeServerTMpSeries计算机系统,运行先进交互执行(AIX)操作系统或者LINUX操作系统(eServer、pSeries和AIX是国际商用机器公司在美国、其它国家或者两者注册的商标,而LINUX是LinusTorvalds在美国、其它国家或者两者注册的商标)。数据处理系统200可以是在处理单元206中包括多个处理器的对称多处理器(SMP)系统。选择地,可以采用单处理器系统。用于操作系统、面向对象的编程系统、以及应用程序或者程序的指令可以位于在诸如HDD226的存储装置上,并且可以被装载到主存储器208中用于由处理单元206执行。用于本发明各个示例性实施例的处理可以由使用计算机可用程序代码的处理单元206执行,所述计算机可用程序代码可以被位于在诸如例如主存储器208、ROM224的存储器中或者在例如一个或多个外围装置226和230中。诸如图2中所示的总线238或者总线240的系统总线可以由一个或多个总线构成。当然,使用任何类型的通信结构或者体系结构都可以实现该总线系统,其用于在连接到所述结构或者体系结构的不同部件或者装置之间的数据的传递。诸如图2的调制解调器222或者网络适配器212的通信单元可以包括用于发送和接收数据的一个或者多个装置。存储器可以是例如主存储器208、ROM224、或者诸如在图2的NB/MCH中发现的高速缓存器。本领域的普通技术人员将会理解图1-2中的硬件可以根据实现方案而改变。除了或者替代图1-2中描述的硬件,可以使用其它的内部硬件或者外围装置,诸如闪存器、等效非易失性存储器、或者光盘驱动器等。而且,在不脱离本发明的精神和范围的情况下,除了前面述及的SMP系统,示例性实施例的处理还可以被应用于多处理器数据处理系统。而且,数据处理系统200可以采取若干个不同数据处理系统的任何形式,所述不同数据处理系统包括客户机计算装置、服务器计算装置、图形输入(tablet)计算机、膝上型计算机、电话或者其它通信装置、个人数字助手(PDA)等。在一些示例性例子中,数据处理系统200可以例如是配置有闪存器的便携式计算装置,以提供用于存储操作系统文件和/或用户产生数据的非易失性存储。实质上,数据处理系统200可以是任何公知的或者后来开发的数据处理系统,没有体系结构限制。图3是表示根据一个示例性实施例的处理器流水线的示例性示意图。如图3中所示,处理器300包括处理器流水线,由读取地址多路复用器304、读取单元310、解码单元320、发行单元330、执行单元340、完成单元350、和分支单元360构成。处理器300例如耦接到存储器子系统370、主机总线380、总线控制单元390、主存储器单元392、以及其它处理器和外部装置394、诸如图2中描述的那些部件。通过部件的上述配置,活锁状态通常被描述为处理器中相同的指令集一再多次地从读取地址多路复用器304流到读取单元310、解码单元320、发行单元330、完成单元350和通过刷新地址路径323返回到读取地址多路复用器304,而不通过提交(committing)任何指令来进行任何实际的前进。如上所述,这种活锁状态的根本原因之一是在一个处理器单元和另一个之间的“谐和”固定周期交互、指令重复地刷新和重新读取、或者由于在不能够腾出的资源满或者忙状态的时候发生的重复的刷新(flush)状态而从发行单元330的发行队列重复地进行重新发行并永不完成。示例性实施例提供了一种用于响应于活锁状态的检测缓慢地减缓由发行单元330进行的发行的指令的机制。在一个示例性实施例中,活锁状态检测的多个阶段(stages)与相关的活锁状态处理逻辑一起被设置在发行单元330中。该相关的活锁状态处理逻辑使用试图摆脱活锁状态的不同动作。所述多个阶段中的每个随后阶段与活锁状态的增加的严重性相关联。早期阶段与仅仅是少数处理器周期的活锁窗口相关联,而后期阶段与更长的活锁窗口相关联。对于每个阶段,处理器的性能被逐渐地降低,而摆脱活锁状态的可能性增加。在一个示例性实施例中,减慢模式控制逻辑被设置在处理器流水线的发行单元330中。该减慢模式控制逻辑耦接到活锁(或者悬停)检测控制逻辑,该活锁检测控制逻辑负责基于预定准则,例如特殊指令刷新数目或者指令在没有完成的情况下重新发行的次数,来检测活锁状态。响应于检测到活锁状态,该活锁检测控制逻辑向该减慢模式控制逻辑发出一个表示存在活锁状态的信号。该减慢模式控制逻辑通过减缓来自发行单元330的指令的发行开始处理器300的逐渐减慢的操作。根据该逐渐减慢的操作,所述减慢模式控制逻辑输出信号以减缓通过处理器流水线的指令的流动。该输出信号诸如通过或门与来自发行单元330的诸如数据从属性控制逻辑的其它控制逻辑的输出信号逻辑地组合。因此,如果所述减慢模式控制逻辑或者其它控制逻辑输出信号以减缓通过发行单元330的发行和调度流水线的指令的移动,则该指令被减缓。当这些信号没有被发出时,则该指令允许以正常方式流动通过发行单元330的发行和调度流水线。根据被硬连接到或者编程到该减慢模式控制逻辑中的分阶段方案,该减慢模式控制逻辑输出该信号以减缓指令的流动。例如,如果所述活锁检测控制逻辑检测到活锁(或者悬停)状态,即在没有指令被提交(commit)的情况下存在X刷新数目(这里X可以在硬件确认之后被编程),则减慢模式控制逻辑可以减慢发行单元330,使得发行单元330仅仅每隔N个处理器周期发行指令(这里N可以在硬件确认之后被编程)。发行单元330的减慢可以通过发出信号来减缓通过发行单元330的指令的移动来实现。这个信号可以针对预定数目的周期例如N个周期被发出,使得每隔N个处理器周期仅仅一个指令被发行。发行单元330被减缓的周期的数目可以随着每个随后检测到该相同活锁状态而增加。换言之,当用指令的每个随后连续的重新发行检测到该活锁状态时,发行单元被减缓的周期的数目就增加。当活锁状态被检测到预定数目的次数时,处理器300可以被确定为处于严重的活锁状态。在这种情况下,发行单元300可以被强制进入连续单步模式,该连续单步模式允许仅仅一个指令发行,而不允许发行其它指令,直到在前一指令完成为止。当该发行单元330排出了该发行单元330的发行和调度流水线中的所有指令时,该处理器300被恢复到正常的全速操作模式。如果该活锁状态不再被检测到,则该处理器300在所述分阶段方案的任何一个在前阶段中被恢复到该正常的全速操作模式。图4是表示根据一个示例性实施例的发行单元的细节的示例性示意图。如图4所示,发行单元330包括多个寄存器410-414,其共同构成发行单元330的发行和调度流水线。发行单元330还包括活锁(或者悬停)检测控制逻辑420、慢模式控制逻辑430、以及用于控制通过所述发行和调度流水线的指令的移动的其它控制逻辑440。来自该慢模式控制逻辑430和其它控制逻辑440的输出被提供给或门450,该或门将减缓/移位信号输出到寄存器410-414,以将这些寄存器中存储的指令移位到所述发行和调度流水线中的下一个寄存器(或者将指令发行到执行单元340),或者使得该指令减缓处理器周期。采用图4中所示的处理器流水线,多路复用器304从程序计数器地址输入321、来自分支单元360的分支地址输入322、复位地址325、来自完成单元350的刷新地址323、或者来自完成单元350的打破地址324中选择指令读取地址。该读取地址被提供给从存储器中读取合适指令的读取单元310。该读取单元310通常将试图从L1指令高速缓存器中读取指令,并且在该指令没有出现在L1指令高速缓存器中时,该读取单元310将企图从L2存储器高速缓存器中获取该指令。如果该指令也不出现在L2存储器高速缓存器中,则读取单元310将从较慢的系统存储器中获取该指令。在读取单元310读取指令之后,读取单元310将该指令提供给解码单元320。解码单元320负责确定特定指令做什么。解码单元320查阅在处理器300内存在的存储器(未示出),例如只读存储器(ROM),其存储了处理器理解的每个指令的微码。用于指令的微码对于该特殊指令将如何由处理器300的例如执行单元340的执行单元执行提供了一步一步的指导。例如,如果装载的指令是a+b,则微码将告诉解码单元320其需要两个参数即a和b。然后,解码单元320将请求读取单元310获取在接着的两个存储位置上出现的适合于a和b之值的数据。在解码单元320已经解码和“翻译”该指令、并且检索了用于执行该指令的所有所需的数据之后,该数据和该解码的指令被传递到发行单元330。该指令和数据被置于发行和调度流水线的第一寄存器410中,并且除非减缓状态被活锁检测控制逻辑420或者其它控制逻辑440检测到,否则该指令和数据被允许用每个处理器周期通过流水线从一个寄存器移位到另一个,直到该指令和数据被发行到执行单元340为止。为了简便起见,尽管图4示出了单个执行单元340,但应当理解,大多数现代计算机具有超过一个的相同或者不同类型的执行单元340。因此,执行单元340意味着表示例如为整数、浮点等相同或者不同类型的一个或者多个执行单元。所述活锁检测控制逻辑420监控所述完成单元350以确定在指令没有被成功地完成的情况下是否已经发生了预定数目的处理器周期。就是说,基于由执行单元340执行的指令的处理,所述执行单元340通知所述完成单元350是否已发生了例外、所述发行和调度流水线的刷新是否应当被执行、或者指令是否将被提交,即是否成功地完成。然后,完成单元350可以将这种信息通信到发行单元330。所述活锁检测控制逻辑420可以包括计数器422或者其它逻辑,用于维持计算在由完成单元350提交的指令之间消逝了多少处理器周期。例如,每次在所述发行和调度流水线被刷新和指令被重新发行到发行单元330的发行和调度流水线时,可以递增(increment)这个计数器422或者其它逻辑的计数。当计数器422或者其它逻辑到达预定数目的刷新阈值X而没有因指令被提交而导致被重置时,所述活锁检测控制逻辑420就向所述慢模式控制逻辑430发出慢模式信号,该慢模式信号指示所述慢模式控制逻辑430应当转换到处理器300的减慢控制的下一个状态。例如,当计数器值达到计数阈值时,所述慢模式控制逻辑430中的计数器432可以被递增,并且向与门450发出适当的减缓信号。该减缓信号使通过发行和调度流水线,即寄存器410-414,的指令的流动减缓一个处理器周期。所述慢模式控制逻辑430在高达阈值数目的处理器周期(计数器)×N的随后处理器周期内持续发出减缓指令,其中N是要减缓的处理器周期的基本阈值数目。因此,例如,如果N是4,则在该慢模式信号被发出到所述慢模式控制逻辑430的第一时间,所述慢模式控制逻辑430将发出用于4个处理器周期的减缓信号并且随后允许指令从发行单元330中发行,即允许该指令从寄存器移位到在发行和调度流水线中的寄存器410-414,直到一个指令从发行单元330中发行为止。下一个指令在能够被发行之前不得不等待4个处理器周期。例如,要减缓的处理器周期的基本阈值数目N可以在硬件确认之后被编程到所述慢模式控制逻辑430中。这样,所述发行和调度流水线被减慢,使得每隔N个数目的处理器周期,仅仅一个指令被允许从发行单元330发行。通过所述活锁检测控制逻辑420继续监控指令是否被提交以及在被提交的指令之间的刷新数目,这个处理可以重复。在发出慢模式信号之后,所述活锁检测控制逻辑420将其计数复位回到初始值并开始计数发行和调度流水线在提交指令之间的刷新数目。每次在所述活锁检测控制逻辑420中的计数器422达到预定刷新数目的阈值时,所述活锁检测控制逻辑420就给所述慢模式控制逻辑430发出慢模式信号。所述慢模式控制逻辑430中的计数器433被递增,并且新的计数器值被用于使所述慢模式控制逻辑430将通过发行和调度流水线的指令的移动减缓(计数器)×N个处理器周期。以上述N即4个处理器周期为例,在所述活锁检测控制逻辑420检测到活锁状态的第一时间,由寄存器410-414构成的发行和调度流水线中的指令被减缓4个处理器周期。此后,根据随后活锁检测,这些指令被减缓倍数个4个处理器周期,例如为8、12、和16个处理器周期。一旦计数器432的值达到预定的严重活锁状态的阈值,所述慢模式控制逻辑430就使发行和调度流水线被置于连续的单步操作模式。该连续的单步操作模式类似于公知单步操作模式,在公知单步操作模式中,仅仅一个指令被允许发行,直到其成功地完成为止。一旦发行和调度流水线中的所有指令被发行,发行单元330才被允许返回到全速操作模式,在全速操作模式中,指令被允许流过发行和调度流水线直到再一次地检测到活锁状态为止。类似地,在每个减慢阶段即在慢模式信号发出之后的每次减慢中,如果在没有看见没有一个指令被提交的情况下的X次刷新的情况下,发行和调度流水线中的所有指令被排出,则发行单元330被允许返回到全速模式。图5概括出当检测到更严重的活锁状态时所述慢模式控制逻辑420所行进的各种减慢阶段。应当注意,尽管示例性实施例使用了在被提交的指令之间的刷新数目的特殊倍数以及用来减缓发行和调度流水线中的指令的处理器周期数目的特殊倍数,但本发明不局限于这种倍数。相反,在不脱离本发明的精神和范围的情况下,可以使用用于在被提交的指令之间的刷新数目或者对于每一个阶段要减缓的处理器周期数目的任何值。事实上,在一些示例性实施例中,这些值可以根本不是彼此的倍数,并且可以被编程到所述活锁检测控制逻辑420和/或慢模式控制逻辑430中的特定值。图5是表示根据一个示例性实施例的用于活锁状态检测和减慢机制的操作的分阶段方案的示例性示意图。如图5中所示,通常,处理器,即处理器的发行单元,以全速操作模式510操作。当检测到第一活锁状态时,即在没有一个指令提交的情况下存在刷新数目X时,该处理器将转换到处理器减慢阶段1520。在处理器减慢阶段1520中,发行单元将每隔N个周期仅仅发行一个指令。如果在没有看见在没有一个指令被提交的情况下的X次刷新的状态的情况下,发行单元排出了发行和调度流水线中的所有指令的话,则处理器返回到全速操作模式510。否则,处理器转换到处理器减慢阶段2530,在该阶段,发行单元将每隔2N个周期发行一个指令。在处理器减慢阶段2530中,如果在没有看见在没有一个指令被提交的情况下的X次刷新的状态的情况下,发行单元排出了发行和调度流水线中的所有指令的话,则处理器返回到全速操作模式510。否则,处理器转换到处理器减慢阶段3540,在该阶段中,发行单元将每隔4N个周期仅仅发行一个指令。如果在没有看见在没有一个指令被提交的情况下的X次刷新的状态的情况下,发行单元排出了发行和调度流水线中的所有指令的话,则处理器返回到全速操作模式510。如果遇到了在没有一个指令被提交的情况下出现X次刷新的状态,则处理器被确定为处于严重的活锁状态,并且转换到处理器减慢阶段4550。在处理器减慢阶段4550中,发行单元被强制进入到连续的单步操作模式,在该连续的单步操作模式中,仅仅一个指令被发行直到其完成为止。当发行单元排出了发行和调度流水线中的所有指令时,处理器随后返回到全速操作模式510。作为示例性实施例的操作例子,再次考虑在上述本发明背景中讨论的图6A和6B中所示的情形(scenario)。假设这种情况在程序的执行中经常发生并且在发行和调度流水线中有12个指令。如果活锁窗口仅仅是4个处理器周期,则在第三个move-to-spr(移动到spr)指令mtsprCR1在第二个move-to-spr(移动到spr)指令mtsprER7之后的4个周期内被发行时,活锁状态将出现。如果每个指令完成要花费10个处理器周期,则当处理器从全速模式转换到连续单步模式时,从发行和调度流水线中排出所有指令将大约花费120个周期。但是,根据这里说明的示例性实施例,如果在处理器减慢阶段1520中N被设置为4,则排出所有指令可以花费少于60个处理器周期。因此,与立即转换到连续的单步操作模式的公知机制相比较,本示例性实施例加倍了处理器的性能。当这个类型的活锁状态在程序中经常发生时,本示例性实施例显著地将活锁状态对处理器整体性能的冲击最小化。图7是概括根据一个示例性实施例的用于检测活锁状态和减慢处理器流水线操作的示例性操作的流程图。图7中概括的操作可以在例如处理器的发行单元诸如上述图3和4的发行单元330中执行。因此,图7中所示的各种操作可以在处理器的硬件中实现。处理器可以为单处理器系统或者多处理器系统。在一个示例性实施例中,处理器可以是微处理器或者芯片上系统的一部分。微处理器或者芯片上系统可以包括对相同或者不同指令集进行操作的多个处理器。例如,微处理器或者芯片上系统可以是异构型装置(heterogeneousdevice),其中一些处理器使用第一指令集例如RISC指令集来操作,而同时其它处理器使用第二指令集例如向量指令集来操作。其中可以实现处理器的装置的类型和配置不受到本发明的该说明或者精神和范围的限制。如图7中所示,操作以运行在全速操作模式的处理器并且这样的发行单元开始(步骤710)。发行单元确定是否检测到活锁状态(步骤720)。如果没有,则操作返回到步骤710,并且处理器和发行单元继续以全速运行。如果检测到活锁状态,例如如在图4中所述活锁检测控制逻辑420所确定的那样,则处理器和发行单元转换到处理器减慢阶段1,在该阶段,每隔N个处理器周期才发行指令(步骤730)。如图7中所示,活锁状态出现的确定可以基于例如活锁检测控制逻辑420检测到在没有提交一个指令的情况下已经发生了X次的刷新。之后,发行单元确定是否再次检测到活锁状态(步骤740)。如果没有,则处理器和发行单元可以返回到全速操作模式(步骤710)。如果再次检测到活锁状态,则处理器和发行单元转换到处理器减慢阶段2,在该阶段,每隔2N个处理器周期发行一个指令(步骤750)。如图所示,活锁状态是否再次被检测到的确定可以基于例如所述活锁检测控制逻辑420检测到在没有提交一个指令的情况下已经发生了2X次的刷新。之后,发行单元再次确定是否检测到活锁状态(步骤760)。如果没有,则处理器和发行单元可以返回到全速操作模式(步骤710)。如果再次检测到活锁状态,则处理器和发行单元转换到处理器减慢阶段3,在该阶段,每隔4N个处理器周期发行一个指令(步骤770)。如图所示,活锁状态是否再次被检测到的确定可以基于例如所述活锁检测控制逻辑420检测到在没有提交一个指令的情况下已经发生了3X次的刷新。之后,发行单元确定是否再次检测到活锁状态(步骤780)。如果没有,则处理器和发行单元可以返回到全速操作模式(步骤710)。如果再次检测到活锁状态,则处理器和发行单元转换到处理器减慢阶段4,在该阶段,发行单元进入到诸如在现有技术中普遍公知的连续的单步操作模式(步骤790)。如图所示,活锁状态是否再次被检测到的确定可以基于例如所述活锁检测控制逻辑420检测到在没有提交一个指令的情况下已经发生了4X次的刷新。此后,通过如在本领域普遍公知的连续的单步操作模式,活锁状态将被打破。因此,处理器和发行单元被返回到全速操作模式(步骤710)。这个操作在处理器运作时继续,并且当处理器脱机时可以被终止。因此,通过在提供一种用于减慢处理器中指令发行的逐渐减慢机制,示例性实施例提供了一种用于摆脱处理器中的活锁状态的机制。活锁检测控制逻辑用于检测活锁状态的发生,慢模式控制逻辑用于在减慢分阶段方案中使得处理器的发行单元从一个减慢阶段转换到下一个。在所述减慢分阶段方案的任何阶段中,如果活锁状态不再被检测到,则处理器和发行单元可以被转换回到全速操作模式。这样,通过不立即转换到连续的单步操作模式,能够获得更好的处理器性能。上述处理器电路可以是集成电路芯片的设计的一部分。芯片设计可以在图形计算机编程语言中创建,并且被存储在计算机存储媒体中(诸如盘、磁带、物理硬驱动器、或者诸如在存储访问网络中的虚拟硬驱动器)。如果设计者不制作芯片或者用于制作芯片的光刻掩模,则设计者通过物理手段(例如通过提供存储该设计的存储媒体的拷贝)或者电子方式(例如通过因特网)将所得的设计直接或者间接地传输给这种实体(entity)。所存储的设计然后可以被转换成合适的格式(例如GDSII)用于光刻掩模的制作,其通常包括要被形成在晶片上的所述芯片设计的多个拷贝。光刻掩模被用于限定将要被刻蚀的或者否则要被处理的晶片(和/或者其上的各层)的区域。所得集成电路芯片可以以作为裸模的未加工晶片形式(即作为具有多个未封装芯片的单个晶片)或者以封装形式由制作者分发。在后者的情况下,芯片可以被安装在单个芯片封装中(诸如塑料载体,具有被附着到母板或其它更高级载体上的引线)或者在多芯片封装中(诸如具有表面互相连接或者嵌置(buried)互相连接的任何一个或者两者的陶瓷载体)。在任何情况下,该芯片然后可以作为(a)诸如母板的中间产品或者(b)最终产品的一部分与其它芯片、分立电路元件、和/或者其它信号处理装置集成。最终产品可以是包括集成电路芯片的任何产品,范围是从玩具和其它低档应用到具有显示器、键盘或其它输入装置以及中央处理器的高级计算机产品。而且,其中可以提供集成电路芯片的最终产品可以包括游戏机、游戏控制台、手持计算装置、个人数字助手、诸如无线电话等的通信装置、膝上型计算装置、台面计算装置、服务器计算装置、或者任何其它计算装置。重要的是注意尽管本发明已经在完全功能数据处理系统的上下文中进行了说明,但是本领域普通技术人员将会理解,本发明的处理能够以指令的计算机可读媒体的形式和各种形式来分发,并且本发明可相等地应用而不管实际用于实现该分发的信号承载媒体的特殊类型。计算机可读媒体的例子包括诸如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM的可记录类型媒体以及诸如数字和模拟通信链路、使用诸如例如无线电频率和光波传输之传输形式的有线或者无线通信链路。计算机可读媒体可以采用编码格式的形式,其被解码用于特殊的数据处理系统。本发明的说明是为了示例和描述的目的而展现的,它不是详尽的或者以公开的形式来限定本发明。对于本领域技术人员来说,许多改进和改变将是显然的。选择和描述实施例,目的是更好解释本发明的原理、实际应用以及当适合于预期特殊使用时对于具有各种改进的各种实施例,使得本领域其它的普通技术人员能够理解本发明。权利要求1.一种在数据处理装置中用于摆脱活锁状态的方法,包括检测所述数据处理装置中的活锁状态;在持续检测到所述活锁状态的同时,使得由数据处理装置进行的指令的处理逐渐地减缓增加数目的处理器周期;以及响应于检测到所述活锁状态已被打破,使得所述数据处理装置恢复到全速操作模式。2.如权利要求1所述的方法,其中,所述使得由数据处理装置进行的指令的处理逐渐地减缓包括根据分阶段方案,响应于检测到所述活锁状态,将数据处理装置设置到减速操作模式,其中,所述分阶段方案具有多个阶段,所述多个阶段按照不同的处理周期数量来减慢指令的处理。3.如权利要求2所述的方法,其中,所述将数据处理装置设置到减速操作模式包括将由数据处理装置进行的指令的处理减慢到一第一操作减慢阶段;确定所述活锁状态在减慢由数据处理装置进行的指令的处理之后是否持续;和如果所述活锁状态在将指令的处理减慢到第一操作减慢阶段之后持续,则将由数据处理装置进行的指令的处理减慢到一第二操作减慢阶段。4.如权利要求3所述的方法,其中,与第一操作减慢阶段相比,第二操作减慢阶段使得由数据处理装置进行的指令的发行延迟更大数目的处理周期。5.如权利要求4所述的方法,其中,第二操作减慢阶段使得由数据处理装置进行的指令的发行延迟的处理周期数目是第一操作减慢阶段使得由数据处理装置进行的指令的发行延迟的处理周期数目的2倍。6.如权利要求3所述的方法,其中,与第一操作减慢阶段相比,第二操作减慢阶段与更严重的活锁状态相关联。7.如权利要求1所述的方法,其中,所述检测数据处理装置中的活锁状态包括检测在没有完成指令的情况下特殊指令刷新的数目达到预定阈值以及在没有完成指令的情况下指令重新发行的次数达到预定阈值中的至少一个。8.如权利要求2所述的方法,其中,所述分阶段方案的最后阶段将由数据处理装置进行的指令的处理减慢到连续的单步操作模式,该连续的单步操作模式仅仅允许一个指令发行,而不允许其它指令发行,直到所述一个指令完成为止。9.如权利要求1所述的方法,其中,所述数据处理装置是处理器,并且其中由处理器进行的指令的处理通过延迟处理器流水线中的指令的发行而被逐渐地减缓。10.如权利要求9所述的方法,其中,该方法在处理器的发行单元中实施。11.如权利要求10所述的方法,其中,由处理器进行的指令的处理通过减缓通过所述发行单元的发行和调度流水线的指令的移动而被逐渐地减缓。12.如权利要求4所述的方法,其中,在数据处理装置的硬件制造之后,用于检测活锁状态的准则被编程到该数据处理装置中,并且其中,在数据处理装置的硬件制造之后,针对所述分阶段方案的每个阶段使得指令的发行延迟的处理周期的基本数目被编程到数据处理装置中。13.一种用于摆脱活锁状态的系统,包括发行单元;和耦接到所述发行单元的处理器流水线,其中,所述发行单元检测处理器流水线中的活锁状态;在持续检测到所述活锁状态的同时,使得由处理器流水线进行的指令的处理逐渐地减缓增加数目的处理器周期;以及响应于检测到所述活锁状态已被打破,使得所述处理器流水线恢复到全速操作模式。14.如权利要求13所述的系统,其中,所述发行单元通过下述步骤逐渐地减缓由处理器流水线进行的指令的处理根据分阶段方案,响应于检测到所述活锁状态,将处理器流水线设置到减速操作模式,其中,所述分阶段方案具有多个阶段,所述多个阶段按照不同的处理周期数量来减慢指令的处理。15.如权利要求14所述的系统,其中,所述发行单元通过下述步骤将处理器流水线设置到减速操作模式将由处理器流水线进行的指令的处理减慢到一第一操作减慢阶段;确定所述活锁状态在减慢由处理器流水线进行的指令的处理之后是否持续;和如果所述活锁状态在将指令的处理减慢到第一操作减慢阶段之后持续,则将由处理器流水线进行的指令的处理减慢到一第二操作减慢阶段。16.如权利要求15所述的系统,其中,与第一操作减慢阶段相比,第二操作减慢阶段使得由处理器流水线进行的指令的发行延迟更大数目的处理周期。17.如权利要求16所述的系统,其中,第二操作减慢阶段使得由处理器流水线进行的指令的发行延迟的处理周期数目是第一操作减慢阶段使得由处理器流水线进行的指令的发行延迟的处理周期数目的2倍。18.如权利要求15所述的系统,其中,与第一操作减慢阶段相比,第二操作减慢阶段与更严重的活锁状态相关联。19.如权利要求13所述的系统,其中,所述发行单元通过下述步骤检测处理器流水线中的活锁状态检测在没有完成指令的情况下特殊指令刷新的数目达到预定阈值以及在没有完成指令的情况下指令重新发行的次数达到预定阈值中的至少一个。20.如权利要求14所述的系统,其中,所述分阶段方案的最后阶段将由处理器流水线进行的指令的处理减慢到连续的单步操作模式,该连续的单步操作模式仅仅允许一个指令发行,而不允许其它指令发行,直到所述一个指令完成为止。21.如权利要求13所述的系统,其中,所述发行单元通过减缓通过所述发行单元的发行和调度流水线的指令的移动而逐渐地减缓由处理器流水线进行的指令的处理。22.如权利要求16所述的系统,其中,在数据处理装置的硬件制造之后,用于检测活锁状态的准则被编程到该数据处理装置中,并且其中,在处理器流水线的硬件制造之后,针对所述分阶段方案的每个阶段使得指令的发行延迟的处理周期的基本数目被编程到数据处理装置中。全文摘要本发明提供了一种用于将处理器置于逐渐减慢的操作模式的系统和方法。所述逐渐减慢的操作模式包括处理器中发行单元的多个阶段的减慢操作,其中指令的发行根据分阶段方案被减慢。处理器的逐渐减慢使得处理器能摆脱活锁状态。而且,由于减慢是渐渐的,因此处理器可以灵活地避免各种程度的活锁状态。通过对不严重的活锁状态采取小的性能影响以及在活锁状态很严重时仅仅增加处理器性能影响,示例性实施例的机制基于活锁状态的严重性来影响整体处理器性能。文档编号G06F9/46GK101055531SQ20071009678公开日2007年10月17日申请日期2007年4月12日优先权日2006年4月14日发明者罗纳德·霍尔,克里斯托弗·M·阿伯纳西,库尔特·A·费斯特,小阿尔伯特·J·范诺斯特兰申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1