CN101401066B - 将处理器置于渐缓运行模式的发出单元 - Google Patents

将处理器置于渐缓运行模式的发出单元 Download PDF

Info

Publication number
CN101401066B
CN101401066B CN2007800091545A CN200780009154A CN101401066B CN 101401066 B CN101401066 B CN 101401066B CN 2007800091545 A CN2007800091545 A CN 2007800091545A CN 200780009154 A CN200780009154 A CN 200780009154A CN 101401066 B CN101401066 B CN 101401066B
Authority
CN
China
Prior art keywords
control logic
logic device
livelock
instruction
issue unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2007800091545A
Other languages
English (en)
Other versions
CN101401066A (zh
Inventor
C·M·阿伯内西
K·A·费斯特
A·J·小万诺斯特兰
R·哈尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101401066A publication Critical patent/CN101401066A/zh
Application granted granted Critical
Publication of CN101401066B publication Critical patent/CN101401066B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Power Sources (AREA)

Abstract

本发明提供了一种用于将处理器置于逐渐减速的运行模式的发出单元。所述逐渐减速的运行模式包括处理器中的发出单元的多个减速运行阶段,其中根据分段方案减慢指令的发出。所述处理器的逐渐减速使得处理器能够中止活锁状况。此外,由于减速是逐渐进行的,因此处理器可以灵活地避免各种程度的活锁状况。通过在不太严重的活锁状况时施加很小的性能影响并仅在活锁状况更严重时才增加处理器性能影响,示例性实施例的机制可根据活锁状态的严重度来影响处理器的整体性能。

Description

将处理器置于渐缓运行模式的发出单元
技术领域
本发明一般地涉及改进的数据处理系统和方法。具体地说,本发明涉及用于将处理器置于渐缓运行模式的系统和方法。处理器的慢速运行模式用于中止处理器核心中的活锁状况。 
背景技术
在现代处理器设计中,尤其是在同步多线程(SMT)处理器设计中,活锁状况是在设计阶段最难发现并解决的问题之一,通常直到随后在硬件中实现设计时才能发现。活锁状况可以描述为处理器重复执行同一指令集而没有取得任何实际进展。进入活锁状况的根本原因之一是由于一个处理器单元与另一处理器单元之间“和谐的”固定周期交互。活锁状况的其他原因是指令的重复刷新和重新取回以及重复地从发出队列重新发出,并且由于在已满的资源上出现重复的刷新状况或存在无法释放的繁忙状况而使指令永远无法完成。 
“和谐的”固定周期交互实际上是处理器管线中使用固定的周期数来处理和完成指令执行的产物。将在处理器管线中以和谐的方式处理来自多个线程的指令,以便每个线程中的每个指令几乎同时完成处理。如果执行线程之间存在相关性,使得一个线程需要另一执行线程中的指令结果,则可能出现活锁状况,因为两个指令都通过处理器管线在同一时间进行处理,并且存在资源和相关性冲突。相关指令将无法完成,因为其他线程中的指令的结果尚不可用。如果其他线程中的指令遇到资源冲突,则来自两个线程的指令将被重复刷新并重新发出到管线。 
图6A和6B中示出了导致活锁状况的代码和双指令发出处理器设计的实例。图6A示出了SMT和双指令发出处理器管线设计,其中每隔一个周 期从每个线程发出两个指令。图6B示出了示例性用户代码,当所述代码在图6A中示出的处理器管线上执行时,将导致两个线程都尝试访问处理器的专用寄存器(SPR)。线程0使用Branch-Not-Equal(bneq)指令进行编码以便等待线程1代码完成其SPR访问。线程0代码将一直返回分支并一直检查线程1的“store”指令是否完成。 
图6A中示出的处理器管线设计中的SPR队列只能同时支持两个SPR指令。因此,将一直刷新并重新发出线程1中的第三SPR指令以及第三SPR指令之后的所有指令。如果线程0和线程1中的指令都按照下表1中示出的顺序进行编译,则位于“mt sprC R1”指令之前的所有线程1指令都将完成。最初将刷新线程1的“mt sprC R1”,因为SPR队列忙于“mtsprA R3”和“mt sprB R2”。只要线程1的“store R40×100”不执行,便会发出和刷新位于“bneq CheckThread1SPR”之后的所有线程0的指令。 
  
发出周期 发出槽0 发出槽1
N   1d R5、0×100
n+1   1d R1、0×2C00
n+2 cmp R4、R5 bneq CheckThread1SPR
n+3 mt sprA R3 mt sprB R2
n+4 mt sprD R6 mt sprE R7(因分支预测错误而刷新线程0)
n+5 mt sprC R1 store R40×100(因SPR队列满而刷新线程1)
n+6 Mt sprE R8  
n+7 b R10  
表1产生活锁状况的实例代码流 
表2示出了由于两个线程中的其余指令被重新发出、刷新以及再次重新发出,因此在n+1和n+3处的线程1的指令完成之后出现的新代码序列。如表2所示,线程1的“mt sprC R1”将再次被刷新,因为线程0的 “mt sprD R6”和“mt sprE R7”在线程1的“mt mt sprC R1”之前发出。由于分支预测错误,因此最终将刷新线程0中的这两个“move to SPR”指令。来自两个线程的这两个刷新状况(线程0的分支预测错误刷新和线程1的第三move-to-SPR指令)继续执行刷新操作并且发出单元位于“和谐的”窗口中。因此,表2中的两个线程0和线程1的指令将一次又一次地被重新发出和刷新。这会强制处理器进入活锁状况。 
  发出周期   发出槽0   发出槽1
  N     1d R5、0×100
  n+1    
  n+2   cmp R4、R5   bneq CheckThread1SPR
  n+3    
  n+4   Mt sprD R6   mt sprE R7(因分支预测错误而刷新线程0)
  n+5   Mt sprC R1   store R40×100(因SPR队列满而刷新线程1)
  n+6   Mt sprE R8  
  n+7   b R10  
表2产生活锁状况的实例代码流 
在处理器硬件上运行实际应用时,将经常检测到上述活锁状况。此时修复设计通常成本很高并且为时已晚。因此,将通用方法置于处理器核心之内来检测和解决此类在硬件验证期间发现的意外活锁状况很重要。 
通常,提供了可以硬编码到处理器设计本身(例如在处理器的发出单元内)的基于硬件的检测机制来检测此类活锁状况。检测机制检测活锁状况的方式取决于特定的实施方式。例如,检测机制可以通过对在未完成的情况下特定指令的刷新次数或指令重新发出的次数进行计数来检测活锁状况。这种情况指示没有进展的情况下的状态变化并且因此是潜在的活锁情况。 
美国专利公开US 2006/064695披露了检测同时具有多个线程的处理 器中的活锁状况。由跟踪逻辑处理器线程的指令退役的线程活锁单元来检测活锁状况,由此跟踪所述线程是否具有任何进展。所述线程活锁单元通过对自其逻辑处理器使指令退役以来的周期数进行计数来确定是否缺乏进展。 
在公知设计中,响应于使用活锁检测机制检测到活锁状况的出现,处理器管线被置于单步运行模式,以便在一个或多个线程之间一次仅完成一个指令。但是,在每次检测到活锁状况时将处理器管线置于单步模式会显著影响处理器的整体性能,因为在执行程序期间可能非常频繁地出现活锁状况。如果此活锁状况具有仅包括几个处理器周期的活锁窗口(即,其中在处理器中继续检测到活锁状况的时间段),则这种方法还会进一步影响性能。 
发明内容
示例性实施例提供了一种用于将处理器置于逐渐减速的运行模式的发出单元。处理器的逐渐减速使得处理器能够中止活锁状况。此外,由于减速是逐渐进行的,因此处理器可以灵活地避免各种程度的活锁状况。通过在不太严重的活锁状况时施加很小的性能影响并仅在活锁状况更严重时才增加处理器性能影响,示例性实施例的机制可根据活锁状态的严重度来影响处理器的整体性能。 
借助示例性实施例的机制,提供了多个活锁状况检测阶段及其关联的活锁状况处理逻辑。所述关联的活锁状况处理逻辑使用尝试中止活锁状况的不同操作。所述多个阶段中的每个后续阶段都与一个增加的活锁状况严重度关联。较早的阶段与仅包括几个处理器周期的活锁窗口关联,而较晚的阶段与长得多的活锁窗口关联。在每个阶段,处理器的性能将逐渐降低,但是中止活锁状况的可能性将增加。 
在一个示例性实施例中,在处理器管线的发出单元中提供了减速模式控制逻辑。所述减速模式控制逻辑与负责根据预定准则(例如,在未完成的情况下特定指令的刷新次数或指令重新发出的次数)检测活锁状况的挂起检测控制逻辑相连。响应于检测到活锁状况,所述挂起检测控制逻辑向所述减速模式控制逻辑发出指示存在活锁状况的信号。所述减速模式控制逻辑启动处理器的逐渐减速运行。 
根据逐渐减速运行,所述减速模式控制逻辑输出信号来停止通过处理器管线的指令流。该输出信号例如通过‘或’门在逻辑上与诸如数据相关 性控制逻辑之类的其他控制逻辑的输出信号相组合。因此,如果所述减速模式控制逻辑或其他控制逻辑输出信号来停止处理器管线中的指令移动,则停止指令。当没有发出这些信号时,允许指令以正常的方式通过管线。 
所述减速模式控制逻辑根据硬连线或编程到所述减速模式控制逻辑内的分段方案输出信号来停止指令流。例如,如果所述挂起检测控制逻辑检测到活锁(或挂起)状况,即在没有提交指令的情况下存在X次刷新(其中可以在硬件验证之后编程X),则所述减速模式控制逻辑可以减缓发出单元的速度,以便发出单元每N个处理器周期才发出一个指令,其中可以在硬件验证之后编程N。可以通过发出信号停止通过管线的指令移动来减缓发出单元的速度。可在预定的周期数(例如,N个周期)中一直发出此信号,以便每N个处理器周期仅发出一个指令。 
如果再次出现此相同的活锁状况,即在没有提交指令的情况下刷新X次,则再次减缓发出单元的速度,以便发出单元每2N个处理器周期发出一个指令。如果再次检测到活锁状况,则再次减缓发出单元的速度,以便发出单元每4N个处理器周期发出一个指令。此后,如果仍旧检测到活锁状况,则确定处理器处于严重的活锁状况。在这种情况下,强制发出单元进入顺序单步模式,所述顺序单步模式仅允许发出一个指令,并且在上一指令未完成之前,不允许发出任何其他指令。当发出单元排出发出单元的发出和分派管线内的全部指令后,处理器将返回正常的全速运行模式。如果不再检测到活锁状况,则处理器在分段方案的任何先前阶段内返回该正常的全速运行模式。 
在一个示例性实施例中,提供了一种发出单元,所述发出单元包括:活锁检测控制逻辑装置、与所述活锁检测控制逻辑装置相连的慢速模式控制逻辑装置,以及与所述活锁检测控制逻辑装置和慢速模式控制逻辑装置相连的发出和分派管线。所述活锁检测控制逻辑装置可以检测所述发出和分派管线内的活锁状况。所述慢速模式控制逻辑装置可以通过增加的处理周期数来逐渐停止在所述发出和分派管线中移动指令,同时所述活锁检测控制逻辑装置继续检测所述活锁状况。所述慢速模式控制逻辑装置可以使 数据处理设备返回全速运行模式以响应检测到已中止所述活锁状况。 
所述活锁检测控制逻辑装置可以监视与所述发出单元关联的处理器的完成单元,以判定在未成功完成指令的情况下是否发生了预定数量的处理器周期。所述活锁检测控制逻辑装置可以包括计数器,所述计数器用于对在如所述完成单元指示的未成功完成指令的情况下已发生的处理器周期数进行计数。响应于所述计数器达到预定阈值,将检测到活锁状况。 
所述慢速模式控制逻辑装置可以包括计数器,所述计数器用于对所述活锁检测控制逻辑装置检测到所述活锁状况的连续次数的数量进行计数。所述慢速模式控制逻辑装置可以根据所述计数器的递增来增加停止在所述发出和分派管线中移动指令的处理周期数。 
所述发出单元还可以包括用于转移或停止所述发出和分派管线中的指令移动的所述发出单元的其他控制逻辑装置。所述发出单元还可以包括与所述其他控制逻辑装置和所述慢速模式控制逻辑装置相连的逻辑门,其中所述逻辑门从所述其他控制逻辑装置和所述慢速模式控制逻辑装置接收指示是停止还是转移所述发出和分派管线中的指令的输入。所述逻辑门可以将输出信号发送到所述发出和分派管线以便停止或转移所述发出和分派管线中的指令。 
所述慢速模式控制逻辑装置可以通过下列操作来逐渐停止在所述发出和分派管线中移动指令:根据分段方案将所述发出单元设置为减速运行模式以响应所述活锁检测控制逻辑装置检测到所述活锁状况。所述分段方案具有多个阶段,所述多个阶段将在所述发出和分派管线中的指令移动减慢不同的处理周期数。 
所述慢速模式控制逻辑装置通过下列操作将所述发出单元设置为减速运行模式:使所述发出单元处于第一减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟第一处理周期数;以及判定在使所述发出单元处于所述第一减速运行阶段之后,是否由所述活锁检测控制逻辑装置继续检测到了所述活锁状况。如果在使所述发出单元处于所述第一减速运行阶段之后,由所述活锁检测控制逻辑装置继续检测到了所述活锁状况,则所 述慢速模式控制逻辑使所述发出单元处于第二减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟大于所述第一处理周期数的第二处理周期数。 
所述分段方案的最后阶段将所述发出单元设置为顺序单步运行模式,所述顺序单步运行模式仅允许从所述发出和分派管线发出一个指令,并且在该指令完成之前,不允许从所述发出和分派管线发出任何其他指令。 
在包括所述发出单元作为一个部件的处理器的硬件制造之后,可以将用于检测所述活锁状况的准则编程到所述活锁检测控制逻辑装置内。此外,在包括所述发出单元作为一个部件的处理器的硬件制造之后,可以将在所述分段方案的每个阶段根据其延迟指令发出的基本处理周期数编程到所述慢速模式控制逻辑装置内。 
在另一个示例性实施例中,提供了一种提供数据处理设备的处理器内的发出单元的方法。所述方法可以例如包括:提供活锁检测控制逻辑装置,提供与所述活锁检测控制逻辑装置相连的慢速模式控制逻辑装置,以及提供与所述活锁检测控制逻辑装置和慢速模式控制逻辑装置相连的发出和分派管线。所述活锁检测控制逻辑装置检测所述发出和分派管线中的活锁状况。所述慢速模式控制逻辑装置可以通过增加的处理周期数来逐渐停止在所述发出和分派管线中移动指令,同时所述活锁检测控制逻辑装置继续检测所述活锁状况。所述慢速模式控制逻辑装置可以使所述数据处理设备返回全速运行模式以响应检测到已中止所述活锁状况。 
所述方法还可以包括为所述活锁检测控制逻辑装置提供用于监视与所述发出单元关联的处理器的完成单元的逻辑装置,以判定在未成功完成指令的情况下是否发生了预定数量的处理器周期。所述方法可以包括在所述活锁检测控制逻辑装置中提供计数器,所述计数器用于对在如所述完成单元指示的未成功完成指令的情况下已发生的处理器周期数进行计数。响应于所述计数器达到预定阈值,将检测到活锁状况。 
所述方法还可以包括在所述慢速模式控制逻辑装置中提供计数器,所述计数器用于对所述活锁检测控制逻辑装置检测到所述活锁状况的连续次 数的数量进行计数。所述慢速模式控制逻辑装置可以根据所述计数器的递增来增加停止在所述发出和分派管线中移动指令的处理周期数。 
所述方法还可以包括提供用于转移或停止所述发出和分派管线中的指令移动的所述发出单元的其他控制逻辑装置。此外,所述方法可以包括提供与所述其他控制逻辑装置和所述慢速模式控制逻辑装置相连的逻辑门。所述逻辑门可以从所述其他控制逻辑装置和所述慢速模式控制逻辑装置接收指示是停止还是转移所述发出和分派管线中的指令的输入。所述逻辑门可以将输出信号发送到所述发出和分派管线以便停止或转移所述发出和分派管线中的指令。 
所述方法还可以包括为所述慢速模式控制逻辑装置提供通过下列操作来逐渐停止在所述发出和分派管线中移动指令的逻辑装置:根据分段方案将所述发出单元设置为减速运行模式以响应所述活锁检测控制逻辑装置检测到所述活锁状况。所述分段方案可以具有多个阶段,所述多个阶段将在所述发出和分派管线中的指令移动减慢不同的处理周期数。 
所述方法还可以包括为所述慢速模式控制逻辑装置提供通过下列操作将所述发出单元设置为减速运行模式的逻辑装置:使所述发出单元处于第一减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟第一处理周期数。所述逻辑装置还可以判定在使所述发出单元处于所述第一减速运行阶段之后,是否由所述活锁检测控制逻辑继续检测到了所述活锁状况,并且如果在使所述发出单元处于所述第一减速运行阶段之后,由所述活锁检测控制逻辑继续检测到了所述活锁状况,可以使所述发出单元处于第二减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟大于所述第一处理周期数的第二处理周期数。 
所述分段方案的最后阶段可以将所述发出单元设置为顺序单步运行模式,所述顺序单步运行模式仅允许从所述发出和分派管线发出一个指令,并且在该指令完成之前,不允许从所述发出和分派管线发出任何其他指令。在包括所述发出单元作为一个部件的处理器的硬件制造之后,可以将用于检测所述活锁状况的准则编程到所述活锁检测控制逻辑装置内。此外,在 包括所述发出单元作为一个部件的处理器的硬件制造之后,可以将在所述分段方案的每个阶段根据其延迟指令发出的基本处理周期数编程到所述慢速模式控制逻辑装置内。 
本发明的上述和其他特性和优点将在下面对本发明的示例性实施例的详细说明中进行描述,或者鉴于下面对本发明的示例性实施例的详细说明,本发明的上述和其他特性和优点将对本领域中的技术人员显而易见。 
附图说明
在所附权利要求中说明了被认为是本发明特性的新颖特征。当结合附图阅读时,通过参考以下对示例性实施例的详细说明,可以最佳地理解发明本身以及优选使用方式,进一步的目的和优点,这些附图是: 
图1是其中可实现示例性实施例的各方面的分布式数据处理系统的示例图; 
图2是其中可实现示例性实施例的各方面的数据处理设备的示例性方块图; 
图3是示出根据一个示例性实施例的处理器管线的示例图; 
图4是示出根据一个示例性实施例的发出单元的细节的示例图; 
图5是示出根据一个示例性实施例的活锁状况检测和减缓机制的运行的分段放案的示例图; 
图6A示出了其中每隔一个周期从每个线程发出两个指令的SMT和双指令发出处理器管线设计; 
图6B示出了示例性用户代码,所述代码在图6A中示出的处理器管线上执行时,将导致两个线程都尝试访问处理器的专用寄存器(SPR);以及 
图7是示出根据一个示例性实施例的检测活锁状况和减缓处理器管线的运行的示例性操作的流程图。 
具体实施方式
示例性实施例提供了一种将处理器置于逐渐减速的运行模式以便中止 活锁状况的系统和方法。所述示例性实施例可以在任何计算设备的任何处理器中实现。例如,所述示例性实施例可以在服务器计算设备、客户机计算设备、通信设备、便携式计算设备或类似设备中的任一设备中使用。此后将提供图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上执行的JavaTM程序或应用来提供对操作系统的 调用(Java是Sun Microsystems,Inc.在美国和/或其他国家/地区的商标)。作为服务器,数据处理系统200可以例如是在高级交互执行
Figure G2007800091545D00121
操作系统或
Figure G2007800091545D00122
操作系统上运行的
Figure G2007800091545D00123
eServerTM 
Figure G2007800091545D00124
计算机系统(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以及传输型介质,诸如数字和模拟通信链路、使用诸如例如射频和光波传输之类的传输形式的有线或无线通信链路。所述计算机可读介质可以采取编码格式的形式,可以对其解码以便在特定的数据处理系统中实际使用。 
出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说,许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。

Claims (20)

1.一种发出单元(330),所述发出单元包括:
活锁检测控制逻辑装置(420);其特征在于:
与所述活锁检测控制逻辑装置相连的慢速模式控制逻辑装置(430);以及
与所述活锁检测控制逻辑装置和慢速模式控制逻辑装置相连的发出和分派管线,其中所述活锁检测控制逻辑装置检测所述发出和分派管线中的活锁状况,所述慢速模式控制逻辑装置通过增加的处理周期数来逐渐停止在所述发出和分派管线中移动指令,同时所述活锁检测控制逻辑装置继续检测所述活锁状况,并且其中所述慢速模式控制逻辑装置使数据处理设备返回全速运行模式以响应检测到已中止所述活锁状况。
2.根据权利要求1的发出单元,其中所述活锁检测控制逻辑装置(420)监视与所述发出单元关联的处理器的完成单元,以判定在未成功完成指令的情况下是否发生了预定数量的处理器周期。
3.根据权利要求2的发出单元,其中所述活锁检测控制逻辑装置(420)包括计数器,所述计数器用于对在如所述完成单元指示的未成功完成指令的情况下已发生的处理器周期数进行计数,并且其中响应于所述计数器达到预定阈值,将检测到活锁状况。
4.根据权利要求1、2或3的发出单元,其中所述慢速模式控制逻辑装置(430)包括计数器,所述计数器用于对所述活锁检测控制逻辑装置检测到所述活锁状况的连续次数的数量进行计数,并且其中所述慢速模式控制逻辑装置根据所述计数器的递增来增加停止在所述发出和分派管线中移动指令的处理周期数。
5.根据权利要求1、2或3的发出单元,还包括:
用于转移或停止所述发出和分派管线中的指令移动的所述发出单元的其他控制逻辑装置;以及
与所述其他控制逻辑装置和所述慢速模式控制逻辑装置相连的逻辑门,其中所述逻辑门从所述其他控制逻辑装置和所述慢速模式控制逻辑装置接收指示是停止还是转移所述发出和分派管线中的指令的输入,并且其中所述逻辑门将输出信号发送到所述发出和分派管线以便停止或转移所述发出和分派管线中的指令。
6.根据权利要求1、2或3的发出单元,其中所述慢速模式控制逻辑装置(430)通过下列操作来逐渐停止在所述发出和分派管线中移动指令:
根据分段方案将所述发出单元设置为减速运行模式以响应所述活锁检测控制逻辑装置检测到所述活锁状况,其中所述分段方案具有多个阶段,所述多个阶段将在所述发出和分派管线中的指令移动减慢不同的处理周期数。
7.根据权利要求6的发出单元,其中所述慢速模式控制逻辑装置(430)通过下列操作将所述发出单元设置为减速运行模式:
使所述发出单元处于第一减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟第一处理周期数;
判定在使所述发出单元处于所述第一减速运行阶段之后,是否由所述活锁检测控制逻辑装置继续检测到了所述活锁状况;以及
如果在使所述发出单元处于所述第一减速运行阶段之后,由所述活锁检测控制逻辑装置继续检测到了所述活锁状况,则使所述发出单元处于第二减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟大于所述第一处理周期数的第二处理周期数。
8.根据权利要求6的发出单元,其中所述分段方案的最后阶段(550)将所述发出单元设置为顺序单步运行模式,所述顺序单步运行模式仅允许从所述发出和分派管线发出一个指令,并且在该指令完成之前,不允许从所述发出和分派管线发出任何其他指令。
9.根据权利要求1、2或3的发出单元,其中在包括所述发出单元作为一个部件的处理器的硬件制造之后,将用于检测所述活锁状况的准则编程到所述活锁检测控制逻辑装置内。
10.根据权利要求6的发出单元,其中在包括所述发出单元作为一个部件的处理器的硬件制造之后,将在所述分段方案的每个阶段根据其延迟指令发出的基本处理周期数编程到所述慢速模式控制逻辑装置内。
11.一种提供数据处理设备的处理器内的发出单元(330)的方法,所述方法包括:
提供活锁检测控制逻辑装置(420);其特征在于:
提供与所述活锁检测控制逻辑装置相连的慢速模式控制逻辑装置(430);以及
提供与所述活锁检测控制逻辑装置和慢速模式控制逻辑装置相连的发出和分派管线,其中所述活锁检测控制逻辑装置检测所述发出和分派管线中的活锁状况,所述慢速模式控制逻辑装置通过增加的处理周期数来逐渐停止在所述发出和分派管线中移动指令,同时所述活锁检测控制逻辑装置继续检测所述活锁状况,并且其中所述慢速模式控制逻辑装置使所述数据处理设备返回全速运行模式以响应检测到已中止所述活锁状况。
12.根据权利要求11的方法,还包括:
为所述活锁检测控制逻辑装置(420)提供用于监视与所述发出单元关联的处理器的完成单元的逻辑装置,以判定在未成功完成指令的情况下是否发生了预定数量的处理器周期。
13.根据权利要求12的方法,还包括:
在所述活锁检测控制逻辑装置中提供计数器(422),所述计数器用于对在如所述完成单元指示的未成功完成指令的情况下已发生的处理器周期数进行计数,其中响应于所述计数器达到预定阈值,将检测到活锁状况。
14.根据权利要求11、12或13的方法,还包括:
在所述慢速模式控制逻辑装置(430)中提供计数器(432),所述计数器用于对所述活锁检测控制逻辑装置检测到所述活锁状况的连续次数的数量进行计数,其中所述慢速模式控制逻辑装置根据所述计数器的递增来增加停止在所述发出和分派管线中移动指令的处理周期数。
15.根据权利要求11、12或13的方法,还包括:
提供用于转移或停止所述发出和分派管线中的指令移动的所述发出单元的其他控制逻辑装置(440);以及
提供与所述其他控制逻辑装置和所述慢速模式控制逻辑装置相连的逻辑门,其中所述逻辑门从所述其他控制逻辑装置和所述慢速模式控制逻辑装置接收指示是停止还是转移所述发出和分派管线中的指令的输入,并且其中所述逻辑门将输出信号发送到所述发出和分派管线以便停止或转移所述发出和分派管线中的指令。
16.根据权利要求11、12或13的方法,还包括:
为所述慢速模式控制逻辑装置(430)提供通过下列操作来逐渐停止在所述发出和分派管线中移动指令的逻辑装置:
根据分段方案将所述发出单元设置为减速运行模式以响应所述活锁检测控制逻辑装置检测到所述活锁状况,其中所述分段方案具有多个阶段,所述多个阶段将在所述发出和分派管线中的指令移动减慢不同的处理周期数。
17.根据权利要求16的方法,还包括:
为所述慢速模式控制逻辑装置(430)提供通过下列操作将所述发出单元设置为减速运行模式的逻辑装置:
使所述发出单元(330)处于第一减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟第一处理周期数;
判定在使所述发出单元处于所述第一减速运行阶段之后,是否由所述活锁检测控制逻辑装置继续检测到了所述活锁状况;以及
如果在使所述发出单元处于所述第一减速运行阶段之后,由所述活锁检测控制逻辑装置继续检测到了所述活锁状况,则使所述发出单元处于第二减速运行阶段,其中在所述发出和分派管线中的指令移动被延迟大于所述第一处理周期数的第二处理周期数。
18.根据权利要求16的方法,其中所述分段方案的最后阶段(550)将所述发出单元设置为顺序单步运行模式,所述顺序单步运行模式仅允许从所述发出和分派管线发出一个指令,并且在该指令完成之前,不允许从所述发出和分派管线发出任何其他指令。
19.根据权利要求11、12或13的方法,其中在包括所述发出单元作为一个部件的处理器的硬件制造之后,将用于检测所述活锁状况的准则编程到所述活锁检测控制逻辑装置内。
20.根据权利要求16的方法,其中在包括所述发出单元作为一个部件的处理器的硬件制造之后,将在所述分段方案的每个阶段根据其延迟指令发出的基本处理周期数编程到所述慢速模式控制逻辑装置内。
CN2007800091545A 2006-04-14 2007-03-27 将处理器置于渐缓运行模式的发出单元 Expired - Fee Related CN101401066B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/279,777 2006-04-14
US11/279,777 US7437539B2 (en) 2006-04-14 2006-04-14 Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
PCT/EP2007/052903 WO2007118769A1 (en) 2006-04-14 2007-03-27 An issue unit for placing a processor into a gradual slow mode of operation

Publications (2)

Publication Number Publication Date
CN101401066A CN101401066A (zh) 2009-04-01
CN101401066B true CN101401066B (zh) 2012-10-10

Family

ID=38179469

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800091545A Expired - Fee Related CN101401066B (zh) 2006-04-14 2007-03-27 将处理器置于渐缓运行模式的发出单元

Country Status (7)

Country Link
US (2) US7437539B2 (zh)
EP (1) EP2013712B1 (zh)
JP (1) JP4608590B2 (zh)
CN (1) CN101401066B (zh)
AT (1) ATE441148T1 (zh)
DE (1) DE602007002189D1 (zh)
WO (1) WO2007118769A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626194B2 (en) 2004-09-23 2017-04-18 Intel Corporation Thread livelock unit
US7748001B2 (en) * 2004-09-23 2010-06-29 Intel Corporation Multi-thread processing system for detecting and handling live-lock conditions by arbitrating livelock priority of logical processors based on a predertermined amount of time
US7434033B2 (en) 2006-04-14 2008-10-07 International Business Machines Corporation Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US7437539B2 (en) 2006-04-14 2008-10-14 International Business Machines Corporation Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US8131980B2 (en) * 2006-09-11 2012-03-06 International Business Machines Corporation Structure for dynamic livelock resolution with variable delay memory access queue
US7500035B2 (en) * 2006-09-19 2009-03-03 International Business Machines Corporation Livelock resolution method
US8171448B2 (en) * 2006-09-19 2012-05-01 International Business Machines Corporation Structure for a livelock resolution circuit
US20090182986A1 (en) * 2008-01-16 2009-07-16 Stephen Joseph Schwinn Processing Unit Incorporating Issue Rate-Based Predictive Thermal Management
US7953932B2 (en) * 2008-02-13 2011-05-31 International Business Machines Corporation System and method for avoiding deadlocks when performing storage updates in a multi-processor environment
US8006013B2 (en) * 2008-08-07 2011-08-23 International Business Machines Corporation Method and apparatus for preventing bus livelock due to excessive MMIO
US10102002B2 (en) * 2014-09-30 2018-10-16 International Business Machines Corporation Dynamic issue masks for processor hang prevention
US9747109B2 (en) 2014-10-15 2017-08-29 Cavium, Inc. Flexible instruction execution in a processor pipeline
US9690590B2 (en) * 2014-10-15 2017-06-27 Cavium, Inc. Flexible instruction execution in a processor pipeline
GB2551524B (en) * 2016-06-20 2018-08-22 Imagination Tech Ltd Livelock detection in a hardware design using formal verification

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999021081A1 (en) * 1997-10-23 1999-04-29 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US20040215933A1 (en) * 2003-04-23 2004-10-28 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US20060064695A1 (en) * 2004-09-23 2006-03-23 Burns David W Thread livelock unit

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785803B1 (en) * 1996-11-13 2004-08-31 Intel Corporation Processor including replay queue to break livelocks
US6532574B1 (en) * 2000-08-17 2003-03-11 International Business Machines Corporation Post-manufacture signal delay adjustment to solve noise-induced delay variations
US6651158B2 (en) * 2001-06-22 2003-11-18 Intel Corporation Determination of approaching instruction starvation of threads based on a plurality of conditions
US6968431B2 (en) * 2001-11-15 2005-11-22 International Business Machines Corporation Method and apparatus for livelock prevention in a multiprocessor system
US20030115559A1 (en) * 2001-12-13 2003-06-19 International Business Machines Corporation Hardware validation through binary decision diagrams including functions and equalities
US7065596B2 (en) 2002-09-19 2006-06-20 Intel Corporation Method and apparatus to resolve instruction starvation
US20040093198A1 (en) * 2002-11-08 2004-05-13 Carbon Design Systems Hardware simulation with access restrictions
US7434033B2 (en) 2006-04-14 2008-10-07 International Business Machines Corporation Placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline
US7437539B2 (en) 2006-04-14 2008-10-14 International Business Machines Corporation Issue unit for placing a processor into a gradual slow mode of operation in response to a detected livelock condition within a processor pipeline

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999021081A1 (en) * 1997-10-23 1999-04-29 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US20040215933A1 (en) * 2003-04-23 2004-10-28 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US20060064695A1 (en) * 2004-09-23 2006-03-23 Burns David W Thread livelock unit

Also Published As

Publication number Publication date
CN101401066A (zh) 2009-04-01
JP2009533738A (ja) 2009-09-17
ATE441148T1 (de) 2009-09-15
US7437539B2 (en) 2008-10-14
DE602007002189D1 (de) 2009-10-08
EP2013712A1 (en) 2009-01-14
WO2007118769A1 (en) 2007-10-25
US20070245129A1 (en) 2007-10-18
US20090006820A1 (en) 2009-01-01
US8200946B2 (en) 2012-06-12
JP4608590B2 (ja) 2011-01-12
EP2013712B1 (en) 2009-08-26

Similar Documents

Publication Publication Date Title
CN101401066B (zh) 将处理器置于渐缓运行模式的发出单元
CN100530109C (zh) 用于将处理器置于逐渐缓慢的操作模式的系统和方法
US11210099B2 (en) Persistent commit processors, methods, systems, and instructions
CN108463826A (zh) 用于在环转变期间保护栈的处理器扩展
CN101950259A (zh) 在硬件中登记用户处理程序以用于事务存储器事件处理
US20140173222A1 (en) Validating Cache Coherency Protocol Within a Processor
CN101187862A (zh) 用于硬件锁定取消的临界区检测和预测机制
CN104050026A (zh) 使对共享存储器存取的同步松弛的处理器、方法及系统
US7395418B1 (en) Using a transactional execution mechanism to free up processor resources used by a busy-waiting thread
US10013257B2 (en) Register comparison for operand store compare (OSC) prediction
US8078843B2 (en) Facilitating processing in a computing environment using an extended drain instruction
US8260995B2 (en) Processor interrupt command response system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: INTEL CORP .

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION

Effective date: 20130522

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20130522

Address after: American California

Patentee after: Intel Corporation

Address before: American New York

Patentee before: International Business Machines Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121010

Termination date: 20180327

CF01 Termination of patent right due to non-payment of annual fee