发明内容
示例性实施例提供了一种用于将处理器置于逐渐减速的运行模式的发出单元。处理器的逐渐减速使得处理器能够中止活锁状况。此外,由于减速是逐渐进行的,因此处理器可以灵活地避免各种程度的活锁状况。通过在不太严重的活锁状况时施加很小的性能影响并仅在活锁状况更严重时才增加处理器性能影响,示例性实施例的机制可根据活锁状态的严重度来影响处理器的整体性能。
借助示例性实施例的机制,提供了多个活锁状况检测阶段及其关联的活锁状况处理逻辑。所述关联的活锁状况处理逻辑使用尝试中止活锁状况的不同操作。所述多个阶段中的每个后续阶段都与一个增加的活锁状况严重度关联。较早的阶段与仅包括几个处理器周期的活锁窗口关联,而较晚的阶段与长得多的活锁窗口关联。在每个阶段,处理器的性能将逐渐降低,但是中止活锁状况的可能性将增加。
在一个示例性实施例中,在处理器管线的发出单元中提供了减速模式控制逻辑。所述减速模式控制逻辑与负责根据预定准则(例如,在未完成的情况下特定指令的刷新次数或指令重新发出的次数)检测活锁状况的挂起检测控制逻辑相连。响应于检测到活锁状况,所述挂起检测控制逻辑向所述减速模式控制逻辑发出指示存在活锁状况的信号。所述减速模式控制逻辑启动处理器的逐渐减速运行。
根据逐渐减速运行,所述减速模式控制逻辑输出信号来停止通过处理器管线的指令流。该输出信号例如通过‘或’门在逻辑上与诸如数据相关 性控制逻辑之类的其他控制逻辑的输出信号相组合。因此,如果所述减速模式控制逻辑或其他控制逻辑输出信号来停止处理器管线中的指令移动,则停止指令。当没有发出这些信号时,允许指令以正常的方式通过管线。
所述减速模式控制逻辑根据硬连线或编程到所述减速模式控制逻辑内的分段方案输出信号来停止指令流。例如,如果所述挂起检测控制逻辑检测到活锁(或挂起)状况,即在没有提交指令的情况下存在X次刷新(其中可以在硬件验证之后编程X),则所述减速模式控制逻辑可以减缓发出单元的速度,以便发出单元每N个处理器周期才发出一个指令,其中可以在硬件验证之后编程N。可以通过发出信号停止通过管线的指令移动来减缓发出单元的速度。可在预定的周期数(例如,N个周期)中一直发出此信号,以便每N个处理器周期仅发出一个指令。
如果再次出现此相同的活锁状况,即在没有提交指令的情况下刷新X次,则再次减缓发出单元的速度,以便发出单元每2N个处理器周期发出一个指令。如果再次检测到活锁状况,则再次减缓发出单元的速度,以便发出单元每4N个处理器周期发出一个指令。此后,如果仍旧检测到活锁状况,则确定处理器处于严重的活锁状况。在这种情况下,强制发出单元进入顺序单步模式,所述顺序单步模式仅允许发出一个指令,并且在上一指令未完成之前,不允许发出任何其他指令。当发出单元排出发出单元的发出和分派管线内的全部指令后,处理器将返回正常的全速运行模式。如果不再检测到活锁状况,则处理器在分段方案的任何先前阶段内返回该正常的全速运行模式。
在一个示例性实施例中,提供了一种发出单元,所述发出单元包括:活锁检测控制逻辑装置、与所述活锁检测控制逻辑装置相连的慢速模式控制逻辑装置,以及与所述活锁检测控制逻辑装置和慢速模式控制逻辑装置相连的发出和分派管线。所述活锁检测控制逻辑装置可以检测所述发出和分派管线内的活锁状况。所述慢速模式控制逻辑装置可以通过增加的处理周期数来逐渐停止在所述发出和分派管线中移动指令,同时所述活锁检测控制逻辑装置继续检测所述活锁状况。所述慢速模式控制逻辑装置可以使 数据处理设备返回全速运行模式以响应检测到已中止所述活锁状况。
所述活锁检测控制逻辑装置可以监视与所述发出单元关联的处理器的完成单元,以判定在未成功完成指令的情况下是否发生了预定数量的处理器周期。所述活锁检测控制逻辑装置可以包括计数器,所述计数器用于对在如所述完成单元指示的未成功完成指令的情况下已发生的处理器周期数进行计数。响应于所述计数器达到预定阈值,将检测到活锁状况。
所述慢速模式控制逻辑装置可以包括计数器,所述计数器用于对所述活锁检测控制逻辑装置检测到所述活锁状况的连续次数的数量进行计数。所述慢速模式控制逻辑装置可以根据所述计数器的递增来增加停止在所述发出和分派管线中移动指令的处理周期数。
所述发出单元还可以包括用于转移或停止所述发出和分派管线中的指令移动的所述发出单元的其他控制逻辑装置。所述发出单元还可以包括与所述其他控制逻辑装置和所述慢速模式控制逻辑装置相连的逻辑门,其中所述逻辑门从所述其他控制逻辑装置和所述慢速模式控制逻辑装置接收指示是停止还是转移所述发出和分派管线中的指令的输入。所述逻辑门可以将输出信号发送到所述发出和分派管线以便停止或转移所述发出和分派管线中的指令。
所述慢速模式控制逻辑装置可以通过下列操作来逐渐停止在所述发出和分派管线中移动指令:根据分段方案将所述发出单元设置为减速运行模式以响应所述活锁检测控制逻辑装置检测到所述活锁状况。所述分段方案具有多个阶段,所述多个阶段将在所述发出和分派管线中的指令移动减慢不同的处理周期数。
所述慢速模式控制逻辑装置通过下列操作将所述发出单元设置为减速运行模式:使所述发出单元处于第一减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟第一处理周期数;以及判定在使所述发出单元处于所述第一减速运行阶段之后,是否由所述活锁检测控制逻辑装置继续检测到了所述活锁状况。如果在使所述发出单元处于所述第一减速运行阶段之后,由所述活锁检测控制逻辑装置继续检测到了所述活锁状况,则所 述慢速模式控制逻辑使所述发出单元处于第二减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟大于所述第一处理周期数的第二处理周期数。
所述分段方案的最后阶段将所述发出单元设置为顺序单步运行模式,所述顺序单步运行模式仅允许从所述发出和分派管线发出一个指令,并且在该指令完成之前,不允许从所述发出和分派管线发出任何其他指令。
在包括所述发出单元作为一个部件的处理器的硬件制造之后,可以将用于检测所述活锁状况的准则编程到所述活锁检测控制逻辑装置内。此外,在包括所述发出单元作为一个部件的处理器的硬件制造之后,可以将在所述分段方案的每个阶段根据其延迟指令发出的基本处理周期数编程到所述慢速模式控制逻辑装置内。
在另一个示例性实施例中,提供了一种提供数据处理设备的处理器内的发出单元的方法。所述方法可以例如包括:提供活锁检测控制逻辑装置,提供与所述活锁检测控制逻辑装置相连的慢速模式控制逻辑装置,以及提供与所述活锁检测控制逻辑装置和慢速模式控制逻辑装置相连的发出和分派管线。所述活锁检测控制逻辑装置检测所述发出和分派管线中的活锁状况。所述慢速模式控制逻辑装置可以通过增加的处理周期数来逐渐停止在所述发出和分派管线中移动指令,同时所述活锁检测控制逻辑装置继续检测所述活锁状况。所述慢速模式控制逻辑装置可以使所述数据处理设备返回全速运行模式以响应检测到已中止所述活锁状况。
所述方法还可以包括为所述活锁检测控制逻辑装置提供用于监视与所述发出单元关联的处理器的完成单元的逻辑装置,以判定在未成功完成指令的情况下是否发生了预定数量的处理器周期。所述方法可以包括在所述活锁检测控制逻辑装置中提供计数器,所述计数器用于对在如所述完成单元指示的未成功完成指令的情况下已发生的处理器周期数进行计数。响应于所述计数器达到预定阈值,将检测到活锁状况。
所述方法还可以包括在所述慢速模式控制逻辑装置中提供计数器,所述计数器用于对所述活锁检测控制逻辑装置检测到所述活锁状况的连续次 数的数量进行计数。所述慢速模式控制逻辑装置可以根据所述计数器的递增来增加停止在所述发出和分派管线中移动指令的处理周期数。
所述方法还可以包括提供用于转移或停止所述发出和分派管线中的指令移动的所述发出单元的其他控制逻辑装置。此外,所述方法可以包括提供与所述其他控制逻辑装置和所述慢速模式控制逻辑装置相连的逻辑门。所述逻辑门可以从所述其他控制逻辑装置和所述慢速模式控制逻辑装置接收指示是停止还是转移所述发出和分派管线中的指令的输入。所述逻辑门可以将输出信号发送到所述发出和分派管线以便停止或转移所述发出和分派管线中的指令。
所述方法还可以包括为所述慢速模式控制逻辑装置提供通过下列操作来逐渐停止在所述发出和分派管线中移动指令的逻辑装置:根据分段方案将所述发出单元设置为减速运行模式以响应所述活锁检测控制逻辑装置检测到所述活锁状况。所述分段方案可以具有多个阶段,所述多个阶段将在所述发出和分派管线中的指令移动减慢不同的处理周期数。
所述方法还可以包括为所述慢速模式控制逻辑装置提供通过下列操作将所述发出单元设置为减速运行模式的逻辑装置:使所述发出单元处于第一减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟第一处理周期数。所述逻辑装置还可以判定在使所述发出单元处于所述第一减速运行阶段之后,是否由所述活锁检测控制逻辑继续检测到了所述活锁状况,并且如果在使所述发出单元处于所述第一减速运行阶段之后,由所述活锁检测控制逻辑继续检测到了所述活锁状况,可以使所述发出单元处于第二减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟大于所述第一处理周期数的第二处理周期数。
所述分段方案的最后阶段可以将所述发出单元设置为顺序单步运行模式,所述顺序单步运行模式仅允许从所述发出和分派管线发出一个指令,并且在该指令完成之前,不允许从所述发出和分派管线发出任何其他指令。在包括所述发出单元作为一个部件的处理器的硬件制造之后,可以将用于检测所述活锁状况的准则编程到所述活锁检测控制逻辑装置内。此外,在 包括所述发出单元作为一个部件的处理器的硬件制造之后,可以将在所述分段方案的每个阶段根据其延迟指令发出的基本处理周期数编程到所述慢速模式控制逻辑装置内。
本发明的上述和其他特性和优点将在下面对本发明的示例性实施例的详细说明中进行描述,或者鉴于下面对本发明的示例性实施例的详细说明,本发明的上述和其他特性和优点将对本领域中的技术人员显而易见。
具体实施方式
示例性实施例提供了一种将处理器置于逐渐减速的运行模式以便中止 活锁状况的系统和方法。所述示例性实施例可以在任何计算设备的任何处理器中实现。例如,所述示例性实施例可以在服务器计算设备、客户机计算设备、通信设备、便携式计算设备或类似设备中的任一设备中使用。此后将提供图1-2作为其中可以实现示例性实施例的各示例性方面的分布式数据处理环境和计算设备的实例。图1-2仅作为示例,并非旨在申明或暗示对其中实现示例性实施例的计算设备类型的任何限制。相反,所述示例性实施例可以在任何处理器中实现,与处理器最终运行所在的特定机器或计算设备无关。
现在参考附图,图1示出了其中可以实现示例性实施例的各方面的示例性分布式数据处理系统的图形表示。分布式数据处理系统100包括其中可以实现示例性实施例的各方面的计算机网络。分布式数据处理系统100包含至少一个网络102,网络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,图2示出了其中可实现示例性实施例的各方面的示例性数据处理系统的方块图。数据处理系统200是计算机(如图1中的服务器104或客户机110)的实例,实现本发明的示例性实施例的过程的计算机可用代码或指令可以位于其中。
在所示实例中,数据处理系统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-ROM230、通用串行总线(USB)端口以及其他通信端口232,以及PCI/PCIe设备234通过总线238和总线240与SB/ICH204相连。PCI/PCIe设备可以例如包括以太网适配器、外接卡以及笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe则不使用。ROM224可以例如是闪速二进制输入/输出系统(BIOS)。
HDD226和CD-ROM230通过总线240与SB/ICH204相连。HDD226和CD-ROM230可以例如使用集成驱动器电子设备(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO)设备236可以与SB/ICH204相连。
操作系统在处理单元206上运行。所述操作系统执行协调并提供对图2中的数据处理系统200内的各种组件的控制。作为客户端,操作系统可以是诸如
XP(Microsoft和Windows是MicrosoftCorporation在美国和/或其他国家/地区的商标)之类的商用操作系统。诸如JavaTM编程系统之类的面向对象的编程系统可以与操作系统一起运行并从在数据处理系统200上执行的Java
TM程序或应用来提供对操作系统的 调用(Java是Sun Microsystems,Inc.在美国和/或其他国家/地区的商标)。作为服务器,数据处理系统200可以例如是在高级交互执行
操作系统或
操作系统上运行的
eServerTM
计算机系统(eServer、pSeries和AIX是国际商业机器公司在美国和/或其他国家/地区的商标,而LINUX是Linus Torvalds在美国和/或其他国家/地区的商标)。数据处理系统200可以是在处理单元206中包括多个处理器的对称多处理器(SMP)系统。备选地,可以采用单处理器系统。
操作系统、面向对象的编程系统以及应用或程序的指令位于诸如HDD226之类的存储设备上,并可以加载到主存储器208中以便由处理单元206来执行。本发明的示例性实施例的过程可以由处理单元206使用计算机可用程序代码来执行,所述程序代码可以位于诸如主存储器208、ROM204之类的存储器之中,也可以位于一个或多个外围设备226和230中。
诸如图2中示出的总线238或总线240之类的总线系统可以包括一条或多条总线。当然,所述总线系统可使用在与通信结构或体系结构相连的不同组件或设备之间提供数据传输的任何类型的结构或体系结构来实现。诸如图2中的调制解调器222或网络适配器212之类的通信单元可以包括一个或多个用于传输和接收数据的设备。存储器可以例如是主存储器208、ROM224或诸如在图2的NB/MCH202中找到的高速缓存。
本领域中的技术人员将理解,图1-2中的硬件可以根据实施方式而不同。除了图1-2中所示的硬件以外,或替代图1-2中所示的硬件,还可以使用诸如闪存、等效的非易失性存储器或光盘驱动器之类的其他内部硬件或外围设备。同样,在不偏离本发明的精神和范围的情况下,除了上述SMP系统之外,示例性实施例的各过程还可以应用于多处理器数据处理系统。
此外,数据处理系统200可采取包括客户端计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或其他通信设备、个人数字助理(PDA)等在内的大量不同数据处理系统中的任何系统的形式。在某些示例性实例中,数据处理系统200可以是便携式计算设备,其具备闪存来提供操作系统文件和/或用户产生的数据的非易失性存储。本质上,数据处理系统200 可以是任何公知或未来开发的数据处理系统而没有任何体系结构限制。
图3是示出根据一个示例性实施例的处理器管线的示例图。如图3所示,处理器300包括包含取回地址复用器304、取回单元310、解码单元320、发出单元330、执行单元340、完成单元350以及分支单元360的处理器管线。处理器300与存储子系统370、主机总线380、总线控制单元390、主存储单元392以及诸如图2中所示的那些其他处理器和外部设备394相连。
使用上述元素排列,通常可以将活锁状况描述为在不通过提交任何指令取得任何实际进展的情况下,一次又一次地通过刷新地址路径323从取回地址复用器304到取回单元310、解码单元320、发出单元330、完成单元350,然后返回取回地址复用器340的处理器流中的同一指令集。如上所述,导致此类活锁状况的根本原因之一是在一个处理器单元与另一处理器单元之间的“和谐的”固定周期交互,指令被重复地刷新和重新取回,或被重复地从发出单元330的发出队列重新发出,并且由于在已满的资源上出现重复的刷新状况或存在无法释放的繁忙状况而使指令永远无法完成。
所述示例性实施例提供了一种使发出单元330逐渐停止指令的发出以响应检测到活锁状况的机制。在一个示例性实施例中,在发出单元330中提供了多个活锁状况检测阶段以及关联的活锁状况处理逻辑。所述关联的活锁状况处理逻辑使用尝试中止活锁状况的不同操作。所述多个阶段中的每个后续阶段都与一个增加的活锁状况严重度关联。较早的阶段与仅包括几个处理器周期的活锁窗口关联,而较晚的阶段与长得多的活锁窗口关联。在每个阶段中,处理器的性能将逐渐降低,但是中止活锁状况的可能性将增加。
在一个示例性实施例中,在处理器管线的发出单元330中提供了减速模式控制逻辑。所述减速模式控制逻辑与负责根据预定准则(例如,在未完成的情况下特定指令的刷新次数或指令重新发出的次数)检测活锁状况的活锁(或挂起)检测控制逻辑相连。响应于检测到活锁状况,活锁检测 控制逻辑向减速模式控制逻辑发出信号来指示存在活锁状况。所述减速模式控制逻辑通过停止从发出单元330发出指令来启动处理器300的逐渐减速运行。
根据逐渐减速运行,所述减速模式控制逻辑输出信号来停止通过处理器管线的指令流。该输出信号通过‘或’门在逻辑上与诸如数据相关性控制逻辑之类的发出单元330的其他控制逻辑的输出信号相组合。因此,如果所述减速模式控制逻辑或其他控制逻辑输出信号来停止在发出单元330的发出和分派管线中的指令移动,则停止指令。当没有发出这些信号时,允许指令以正常的方式通过发出单元330的发出和分派管线。
所述减速模式控制逻辑根据硬连线或编程到所述减速模式控制逻辑内的分段方案输出信号来停止指令流。例如,如果所述活锁检测控制逻辑检测到活锁(或挂起)状况,即在没有提交指令的情况下存在X次刷新(其中可以在硬件验证之后编程X),则所述减速模式控制逻辑可以减缓发出单元330的速度,以便发出单元330每N个处理器周期才发出一个指令,其中可以在硬件验证之后编程N。可以通过发出信号停止通过发出单元330的指令移动来减缓发出单元330的速度。可在预定的周期数(例如,N个周期)中一直发出此信号,以便每N个处理器周期仅发出一个指令。
发出单元330停止的周期数可以随着后面每次检测到相同的活锁状况而增加。换句话说,随着在后面每次连续重新发出指令时检测到活锁状况,可以增加发出单元停止的周期数。当检测到活锁状况达预定次数时,便判定处理器300处于严重的活锁状况。在此情况下,可以强制发出单元330进入顺序单步模式,所述单步模式仅允许发出一个指令,并且在上一指令未完成之前,不允许发出任何其他指令。
当发出单元330排出发出单元330的发出和分派管线内的全部指令后,处理器300返回正常的全速运行模式。如果不再检测到活锁状况,则处理器300在分段方案的任何先前阶段内返回该正常的全速运行模式。
图4是示出根据一个示例性实施例的发出单元的细节的示例图。如图4所示,发出单元330包括多个寄存器410-414,所述寄存器共同包括发出 单元330的发出和分派管线。发出单元330还包括活锁(或挂起)检测控制逻辑420、慢速模式控制逻辑430以及其他控制逻辑440来控制在发出和分派管线中的指令移动。慢速模式控制逻辑430和其他控制逻辑440的输出被提供给‘或’门450,‘或’门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然后可以将此类信息传送给发出单元350。
活锁检测控制逻辑420可以包括计数器422或其他逻辑以便维护完成单元350提交的各指令间经过的处理器周期数的计数。例如,此计数器422或其他逻辑可以在每次刷新发出和分派管线和将指令重新发出到发出单元330的发出和分派管线时递增。当计数器422或其他逻辑达到预定数量的刷新阈值X且没有因为提交指令而被重置时,活锁检测控制逻辑420将慢速模式信号发出给慢速模式控制逻辑430,指示慢速模式控制逻辑430应转变为处理器300的下一个减速控制状态。例如,当计数器值达到计数阈值时,可以递增慢速模式控制逻辑430中的计数器432并将相应的停止信号发出到‘或’门450。
所述停止信号导致通过发出和分派管线(即寄存器410-414)的指令流停止一个处理器周期。慢速模式控制逻辑430可以在后续处理器周期继续发出停止指令,一直到处理器周期的阈值数(counter)xN,其中N是要停止的基本处理器周期阈值数。因此,例如如果N为4,则当第一次将慢速模式信号发出给慢速模式控制逻辑430时,慢速模式控制逻辑430将发出停止信号达4个处理器周期,然后才允许发出单元330发出指令,也就是说,允许指令在发出和分派管线中的寄存器410-414之间转移,直到从发出单元330发出一个指令。下一指令必须等待4个处理周期才能发出。要停止的基本处理器周期阈值数N可以例如在硬件验证之后被编程到慢速模式控制逻辑430内。
以这种方式,将减缓发出和分派管线的速度,以便每N个处理器周期 数才允许发出单元330发出一个指令。可以重复此过程且活锁检测控制逻辑420继续监视指令是否被提交以及被提交的指令间的刷新次数。
发出慢速模式信号之后,活锁检测控制逻辑420将其计数器重置回初始值并开始对被提交指令间的发出和分派管线的刷新次数进行计数。每当活锁检测控制逻辑420中的计数器达到预定数量的刷新阈值X,活锁检测控制逻辑420就将慢速模式信号发出给慢速模式控制逻辑430。慢速模式控制逻辑430中的计数器433将递增,并且新的计数器值用于使慢速模式控制逻辑430将通过发出和分派管线的指令移动停止(counter)xN个处理器周期。
考虑上述实例值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中示出的情况。假设该情形在程序执行过程中经常出现并且假设在发出和分派管线中具有12个指令。如果活锁窗口仅为4个处理器周期,则会在第二move-to-spr指令mt sprE R7之后的4个周期内发出第三move-to-spr指令mt sprC R1时出现活锁状况。如果每个指令需要10个处理器周期才能完成,则当处理器从全速模式转变为顺序单步模式之后,需要将近120个周期才能排出发出和分派管线中的全部指令。
但是,使用此处所述的示例性实施例,如果在处理器减速阶段1520中将N设置为4,则可以使用少于60个的处理器周期排出全部指令。因此,与立即转变为顺序单步运行模式的已知机制相比,所述示例性实施例可使处理器的性能翻倍。当此类活锁状况经常在程序中出现时,所述示例性实施例将显著减小活锁状况对处理器整体性能的影响。
图7是示出根据一个示例性实施例的检测活锁状况和减慢处理器管线运行的示例性操作的流程图。可以在诸如上面图3和图4中的发出单元330之类的处理器发出单元内执行图7中示出的操作。因此,可以在处理器硬件中实现图7中示出的各种操作。处理器可以位于单处理器系统或多处理器系统中。在一个示例性实施例中,处理器可以是微处理器或片上系统的一部分。所述微处理器或片上系统包括运行相同或不同指令集的多个处理器。例如,所述微处理器或片上系统可以是异构设备,其中某些处理器使用诸如RISC指令集之类的第一指令集运行,而其他处理器使用诸如向量指令集之类的第二指令集运行。其中实现处理器的设备的类型和布置不受此描述或本发明的精神和范围的限制。
如图7所示,操作从处理器中以全速运行模式运行的发出单元开始(步骤710)。所述发出单元判定是否检测到活锁状况(步骤720)。如果否,则操作返回步骤710并且处理器和发出单元继续以全速运行。如果如图4中的活锁检测控制逻辑420所判定的那样检测到活锁状况,则处理器和发出单元转变为其中仅每N个处理器周期才发出一个指令的处理器减速阶段1(步骤730)。如图7所示,可以基于活锁检测控制逻辑420检测到在不提交一个指令的情况下发生X次刷新来判定存在活锁状况。
此后,发出单元判定是否再次检测到活锁状况(步骤740)。如果否,则处理器和发出单元可以返回全速运行模式(步骤710)。如果再次检测到活锁状况,则处理器和发出单元转变为其中每2N个处理器周期发出一个指令的处理器减速阶段2(步骤750)。如图所示,例如,可以基于活锁检测控制逻辑420检测到在不提交一个指令的情况下发生2X次刷新来判定是否再次检测到活锁状况。
此后,发出单元再次判定是否检测到活锁状况(步骤760)。如果否,则处理器和发出单元可以返回全速运行模式(步骤710)。如果再次检测到活锁状况,则处理器和发出单元转变为其中每4N个处理器周期发出一个指令的处理器减速阶段3(步骤770)。如图所示,例如,可以基于活锁检测控制逻辑420检测到在不提交一个指令的情况下发生3X次刷新来判定是否再次检测到活锁状况。
此后,发出单元判定是否再次检测到活锁状况(步骤780)。如果否,则处理器和发出单元返回全速运行模式(步骤710)。如果再次检测到活锁状况,则处理器和发出单元转变为其中发出单元进入现有技术中公知的顺序单步运行模式的处理器减速阶段4(步骤790)。如图所示,例如,可以基于活锁检测控制逻辑420检测到在不提交一个指令的情况下发生4X次刷新来判定是否再次检测到活锁状况。
此后,将通过本领域中公知的顺序单步运行模式中止活锁状况。因此,处理器和发出单元返回全速运行模式(步骤710)。此操作在处理器运行时继续,并且当处理器离线时,可以终止此操作。
因此,所述示例性实施例提供了通过提供用于减慢处理器中指令发出的逐渐减速机制来中止处理器中活锁状况的机制。提供了活锁检测控制逻辑来检测是否出现活锁状况,并且提供了慢速模式控制逻辑来将处理器的发出单元从减速分段方案中的一个减速阶段转变到下一减速阶段。在所述减速分段方案的任何阶段中,如果不再检测到活锁状况,则处理器和发出单元将转变回全速运行模式。以这种方式,通过不立即转变为顺序单步运行模式,可以获得更多的处理器性能。
如上所述的处理器电路可以是集成电路芯片设计的一部分。芯片设计可以使用图形计算机编程语言创建并存储于计算机存储介质(例如,盘、磁带、物理硬驱动器或诸如存储存取网络中的虚拟硬驱动器)中。如果设计者未制造芯片或用于制造芯片的光刻掩模,则设计者通过物理方法(例如,提供存储设计的存储介质的副本)或电子方法(例如,通过互联网)直接或间接地将结果设计传输到此类实体。然后将存储的设计转换为适当 的格式(例如,GDSII)以便制造光刻掩模,它通常包括要在晶片上形成的所述芯片设计的多个副本。所述光刻掩模用于限定要蚀刻或要以其他方式处理的晶片(和/或其上的层)的区域。
制造者可以以原始晶片形式(即,作为具有多个未封装芯片的单晶片)、作为裸小片或以封装的形式分发所得到的集成电路芯片。在后者的情况中,以单芯片封装(例如,引线固定到母板的塑料载体或其他更高级别的载体)或多芯片封装(例如,具有一个或两个表面互连或掩埋互连的陶瓷载体)来安装芯片。在任何情况下,所述芯片然后都作为(a)中间产品(如母板)或(b)最终产品的一部分与其他芯片、分离电路元件和/或其他信号处理装置集成。最终产品可以是任何包括集成电路芯片的产品,范围从玩具和其他低端应用到具有显示器、键盘或其他输入设备及中央处理器的高级计算机产品。此外,其中可以提供集成电路芯片的终端产品可以包括游戏机、游戏控柄、手持计算设备、个人数字助理、诸如无线电话之类的通讯设备、膝上计算设备、台式计算设备、服务器计算设备、或任何其他计算设备。
重要的是指出,虽然在完整功能的数据处理系统的上下文中说明了本发明,本领域的技术人员将理解,可以以指令的计算机可读介质的形式和各种形式来发布本发明的诸过程,并且本发明均可等同地适用而与实际用于执行发布的信号承载介质的特定类型无关。计算机可读介质的实例包括可记录型介质,诸如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM以及传输型介质,诸如数字和模拟通信链路、使用诸如例如射频和光波传输之类的传输形式的有线或无线通信链路。所述计算机可读介质可以采取编码格式的形式,可以对其解码以便在特定的数据处理系统中实际使用。
出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说,许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。