CN103268276B - 微处理器及微处理器死锁或活锁状态解除方法 - Google Patents

微处理器及微处理器死锁或活锁状态解除方法 Download PDF

Info

Publication number
CN103268276B
CN103268276B CN201310110030.3A CN201310110030A CN103268276B CN 103268276 B CN103268276 B CN 103268276B CN 201310110030 A CN201310110030 A CN 201310110030A CN 103268276 B CN103268276 B CN 103268276B
Authority
CN
China
Prior art keywords
mentioned
unit
memory cache
main processor
arbitration
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.)
Active
Application number
CN201310110030.3A
Other languages
English (en)
Other versions
CN103268276A (zh
Inventor
罗德尼·E·虎克
道格拉斯·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.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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 Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN103268276A publication Critical patent/CN103268276A/zh
Application granted granted Critical
Publication of CN103268276B publication Critical patent/CN103268276B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种微处理器及微处理器死锁或活锁状态解除方法,该微处理器包括一主要处理器以及一服务处理器。服务处理器用以侦测和解除主要处理器的一死锁(或活锁)状态。服务处理器通过侦测主要处理器在一预定数量的时脉周期内尚未引退一指令或尚未完成一处理器总线传输而辨识死锁(或活锁)状态。回应所侦测到的主要处理器的死锁(或活锁)状态,服务处理器撷取对快取存储器的仲裁请求至一缓冲器中,分析所撷取的请求以侦测指示导致上述状态的错误的样式、以及执行与上述样式相关的动作以解除死锁(或活锁)状态。上述的动作包括抑制传送至快取存储器的仲裁请求、抑制快取存储器请求地址的比较、以及删除存取快取存储器的请求。

Description

微处理器及微处理器死锁或活锁状态解除方法
技术领域
本发明有关一种微处理器,特别有关一服务处理器侦测以及解除发生于主要处理器的死锁(或活锁)状态。
背景技术
发明人发现于微处理器设计中包含多个不同类别的错误(bug),因为当死锁(或活锁)状况发生于微处理器中的一快取存储器时,将导致微处理器发生悬置(hang)的情况(亦即不再执行指令)。举例来说,一错误可能导致处理器无法回复其快取存储器的一外部监听(external snoop),而不确定地造成“监听延迟(snoop stall)”,此将导致总线无法执行更进一步的总线周期(亦即“总线悬置”)。在另一个例子中,一错误可能导致处理器将无法响应监听而驱动数据以及不确定地发生“DBSY延迟”,此情况同样造成总线悬置。上述错误将明显地对具有微处理器的计算系统造成有害的影响。此外,当微处理器于死锁(或活锁)状态时,对上述的错误执行除错的动作是困难的。因此需要一种解除死锁(或活锁)状态的机制。
发明内容
本发明提供一微处理器,微处理器包括一主要处理器以及一服务处理器。服务处理器用以侦测以及解除发生于主要处理器的死锁(或活锁)状态。
另一方面,本发明更提供一方法,此方法包括通过微处理器的主要处理器执行指令。此方法还包括通过服务处理器侦测主要处理器的死锁(或活锁)状态,以及通过服务处理器解除主要处理器的死锁(或活锁)状态。
另一方面,本发明提供使用于一计算装置的可编码于一非暂态的计算机可读储存介质的计算机程序产品,此计算机程序产品具有计算机可读程序码并记录于上述计算机可读储存介质中,用以指定一微处理器。上述计算机可读程序码包括第一程序码用以设定一主要处理器,以及第二程序码用以设定一服务处理器,其中服务处理器的配置为侦测以及解除主要处理器的一死锁(或活锁)状态。
在一实施例中,服务处理器通过侦测主要处理器是否未于一预定的时脉周期内引退指令或完成一处理器总线传输以侦测死锁(或活锁)状态。响应于侦测主要处理器的死锁(或活锁)状态,服务处理器将引发对快取存储器的仲裁要求撷取于缓冲区的操作、分析所撷取的要求并侦测一可指出错误的样式、以及执行与样式相关的动作以解除死锁(或活锁)。此动作可能包括抑制对快取存储器的仲裁要求、抑制比较快取存储器要求地址、以及删除存取快取存储器的要求。
附图说明
图1显示包括处理器芯片的系统的方块图,其中处理器芯片具有一主要处理器以及一服务处理器(SPROC)。
图2显示图1所述快取存储器管线的细节方块图。
图3显示图1所述撷取缓冲器的项目方块图。
图4显示图1所述处理器的操作流程图。
具体实施方式
本发明的一处理器包括主要处理器(例如一x86处理器)以及服务处理器(SPROC),其中服务处理器可侦测以及解除主要处理器一死锁(或活锁)状态。当SPROC侦测到主要处理器不再引退指令时,将引发对快取存储器的仲裁要求撷取至缓冲区的操作、分析缓冲器的内容以侦测已知类型的错误的样式、以及根据相关于错误类型的处置(recipe)来控制发生错误的快取存储器以允许快取存储器解除其死锁(或活锁)状态,以中止总线周期以及减缓总线悬置的情况。于解除死锁(或活锁)状态后,允许总线继续发送周期,并允许设计者利用多个工具于模拟时复制错误,以作为除错设计的参考。于一实施例中,SPROC执行微程序,此微程序是可修正的,例如可通过BIOS修正。特别的是,SPROC微程序修正将包括一新的错误分类侦测样式和(或)其相关的处置。
通过SPROC根据相关的处置控制快取存储器以中止总线周期,其中上述动作将会(或将不会)导致数据的毁坏。假设上述动作将会导致数据的毁坏,那么针对此错误类型的技术将只能用于除错。无论如何,假设中止的动作并没有毁坏数据以及仍然允许解除死锁(或活锁),此技术将可作为一错误的硅修复(silicon fix)。
图1为一方块图,是有关一系统188包括一处理器芯片100,如本发明所述,处理器芯片100具有一主要处理器102以及一服务处理器(SPROC)134。处理器芯片100除了包括主要处理器102外还包括一服务处理器134。在此所述的“主要处理器”或“处理器”或“微处理器”指处理器芯片100在服务处理器134之外的部分。于一实施例中,主要处理器102为一x86(也作为IA-32)架构处理器102;然而,也可使用其余的处理器架构。假设一处理器可以正确地执行一用于x86处理器的主要应用程序,此处理器为一x86架构的处理器。假设此应用程序得到预期的结果,代表此应用程序有正确地执行,尤其是主要处理器102可执行x86架构以及x86使用者可见(user-visible)暂存器指令集。
SPROC 134经由主要处理器102的SPROC界面106与部分主要处理器102通讯。SPROC界面106包括控制暂存器以及状态暂存器,其中上述的暂存器可通过SPROC 134以及部分主要处理器102读取以及写入,以使两者的通讯更行畅顺。更具体地,SPROC 134可与主要处理器102的一快取存储器进行通讯以及控制该快取存储器以解决死锁(或活锁)状态。同时,SPROC 134可以与主要处理器102的一引退单元184以及总线界面单元126通讯,以侦测主要处理器102是否为中止的状态。最后,SPROC134可以与主要处理器102的请求队列186通讯,以指示是否需要删除位于其中的要求,以下将提出更详细的叙述。
主要处理器102包括一指令快取存储器108以及一微程序单元144,上述每一个单元将提供指令至执行单元122。主要处理器102还包括其余的功能单元,例如一指令转译器,一暂存器别名表,以及保留站等,但并不以此为限。
主要处理器102还包括一快取存储器146。快取存储器146包括一数据阵列174,用以储存由系统存储器194所快取而得的数据及/或指令的快取线。快取存储器146还包括一标签阵列176,用以储存数据阵列174中相应的快取线的地址标签。标签阵列176还储存快取线的状态数据,包括快取一致性的信息,例如MESI状态。快取存储器146还包括一撷取缓冲器172,用以储存有关于快取存储器146的请求154。图3描述有关撷取缓冲器172的一项目300。有利的是,SPROC134可分析储存于撷取缓冲器172的请求154信息,以侦测如前所述死锁(或活锁)的错误的分类。于一实施例中,撷取缓冲器172包括数据阵列174的一使用者禁访区(non-user-accessible)。快取存储器146还包括耦接至数据阵列174、标签阵列176以及撷取缓冲器172的一管线(pipeline)178,管线178根据请求154读取或写入数据阵列174以及标签阵列176,其中请求154为来自主要处理器102的其他功能单元,尤其是来自主要处理器102的请求队列186。请求队列186所产生的请求154可相互仲裁以存取快取存储器146。管线178同样根据SPROC 134的指令写入和读取撷取缓冲器172。特别是,管线178可选择性地抑制对快取存储器146的仲裁请求154,选择性地抑制地址比较结果,以及删除对快取存储器146的请求154,即为在未执行请求154的预期功能下将其完成。图2将针对管线178提出详细的叙述。主要处理器102可包括一阶层化的快取存储器;较佳地,具有解决一死锁(或活锁)状况的快取存储器146,是位于快取存储器阶层架构中占有相对较大的快取存储器,例如一第二级快取存储器或第三级快取存储器,因此相较于全部的快取存储器而言,由此所组成的额外死锁(或活锁)解除电路的尺寸以及功率消耗较小。无论如何,快取存储器阶层架构中将有多于一个或所有的快取存储器具有解除死锁(或活锁)状态的能力。
执行单元122执行接收自指令快取存储器108以及微程序单元144及/或所转译的微指令。执行单元122可能包括整数单元、浮点单元、载入单元、储存单元、分支单元等等。执行单元122耦接至快取存储器146,接下来将针对执行单元122作详述。执行单元122包括请求队列186,例如一载入队列以及一储存队列,但并不以此为限,举例来说,其将使仲裁请求154可以存取快取存储器146以载入或储存数据。此外,请求队列186可能存在于总线界面单元126中以及快取存储器146本身,例如一监听队列、一重播队列、或一回收队列之中,举例来说,可使仲裁请求154得以存取快取存储器。请求队列186包括项目,用以指定仲裁请求154对于快取存储器146所欲执行的功能,例如读取、写入或查询快取存储器146。有利的是,在请求队列186中每一个项目可包括一可由SPROC134设置的一删除位(kill bit)168,以在SPROC 134同意存取快取存储器146时,删除位168可致能SPROC 134请求快取存储器146删除仲裁请求154,接下来将提出更详细的叙述。
主要处理器102还包括一引退单元184,其耦接至执行单元122,以引退完成的指令。引退单元184提供一指示元(indicator)以指示一指令已引退(另一种更好的做法为计算出有多少指令自每一个时脉周期引退)。有利的是,经由SPROC界面106提供引退指示元至SPROC 134以致能SPROC 134去判断主要处理器102是否未在引退指令,亦即主要处理器102为悬置的,可能为一死锁(或活锁)状态。
主要处理器102还包括一总线界面单元126,作为主要处理器102处理器总线的中介单元,总线界面单元126耦接至一芯片128而耦接至系统存储器194。
SPROC134具有本身执行的编码132以及用以储存错误分类样式以及处置198的RAM136(以下将做更详细的叙述)。有利的是,使用者可对主要处理器102的特别模块暂存器(model specific register,MSR)104进行编码以修正SPROC编码132(以及微编码144)。于一实施例中,可如下所述利用SPROC RAM 136来修正SPROC编码132。对主要处理器102的MSR104进行写入(例如通过系统固体写入,例如BIOS或系统软件)将导致主要处理器102执行微编码144并侦测所提供的修正。修正信息包括修正编码以及SPROC 134所需的SPROC 134指令指标值,以使SPROC 134执行修正编码而非由指令指标值所指示的SPROC编码132。微编码144于SPROC RAM136一非使用的区块写入修正编码。微编码144接着设定一SPROC 134指令中断点项目,于SPROC 134指令指标值达到修正信息所设定的值时,使SPROC134跳跃至SPROC RAM136的位置(即为修正编码所驻留的位置)。
由于SPROC 134执行独立于主要处理器102之外的编码132,故其可侦测到当主要处理器102为悬置时,例如可能由死锁(或活锁)状态所导致,以及独立地尝试解决死锁(或活锁)状态。修正的SPROC编码132包括一用以侦测仲裁请求154中的样式198的样式侦测器182,使撷取缓冲器172撷取快取存储器146的相关预定死锁(或活锁)错误分类,以及通过处置198执行动作以解决死锁(或活锁)状态,以协助主要处理器102的除错和(或)修正如前所述的错误。根据一实施例,处置198包括一连串的动作,包括:(1)抑制各个仲裁请求154尝试对快取存储器做存取的仲裁;(2)抑制与仲裁请求154相关的各个地址比较结果;以及(3)标记请求队列186中的各个请求,其中可通过设定相关的删除位168以删除各个请求。
图2为一方块图,有关图1所述的快取存储器146的管线178。管线178包括管线控制逻辑222,当仲裁请求154进入管线178时,管线控制逻辑222用以处理仲裁请求154并传送到管线的下一级。特别是,管线控制逻辑222控制数据阵列174、标签阵列176以及撷取缓冲器172的存取;另外,管线控制逻辑222于每一个仲裁请求154产生一状态232,并将其提供回请求者。
管线178包括一仲裁请求抑制器202,用以接收传送自执行单元122的仲裁请求154以及回应地产生抑制仲裁请求216,其中抑制仲裁请求216提供至管线控制逻辑222。有利的是,SPROC134可于仲裁请求抑制器202中经由SPROC界面106对暂存器进行编码以设定各个仲裁请求输入154,并根据与一样式198相关的处置198抑制各个仲裁请求154,其中样式198又与一预定的死锁(或活锁)错误分类有关。也就是说,SPROC 134将选择性地以及暂时有效地避免一特定请求者(举例来说,一特定请求队列186)请求存取快取存储器146,这将有助于改变对快取存储器146进行存取的请求154的混合或顺序,利用此方式可扰乱一活锁序列并解决它。假设SPROC 134侦测到选择性的仲裁请求154抑制可解决活锁问题,SPROC 134将接着重新致能先前抑制的请求者以请求存取快取存储器146,而处理器芯片100的操作将得以功能正确的方式持续进行。于一实施例中,仲裁请求抑制器202包括多个双输入AND门,每一个双输入AND门的一输入接收仲裁请求154其中之一而另一输入则接收自暂存器的一相应位,其中相应位具有一SPROC 134所写入的错误值其能抑制每一个仲裁请求154。响应于被抑制的仲裁请求216,管线控制逻辑222将产生仲裁请求允许信号218送回至请求实体,以指出哪一个请求者154于一预定时脉周期内被允许存取快取存储器146。有利的是,一个被抑制请求154将不会被允许存取快取存储器146,这对解除死锁(或活锁)状态有帮助,不论是其自己本身或搭配在此所述的其他可能动作来做解除。
管线178还包括地址比较器224,其耦接至一地址比较结果抑制器204。地址比较器224通过由仲裁请求154所指定的存储器地址(允许对快取存储器进行存取的地址),以及于主要处理器102的管线中较旧的存储器操作的存储器地址226的比对,以产生地址比较结果214并提供至地址比较结果抑制器204。地址比较可包括完整的地址比较,以及可只包括完整存储器地址的部分子集合的比较。地址比较结果214还可包括仲裁请求地址154与标签阵列176中的标签的比较结果。地址比较结果抑制器204接收地址比较结果214以及回应地产生提供至管线控制逻辑222的抑制地址比较结果210。也就是说,一特定抑制地址比较结果210将指出一错误值(亦即地址比对错误),即使其相应的地址比较结果214具有一正确值(即为一正确的地址比对),如果SPROC134为此编码地址比较结果抑制器204这样做的话。也就是说,就如同SPROC 134导致快取存储器146对所选取地址的比较结果“说谎”般。举例来说,样式侦测器182可侦测撷取缓冲器172中的样式,其中此撷取缓冲器172无法继续处理一特定仲裁请求154,原因在于此特定仲裁请求154的地址因为某些原因而对应至于其之前的仲裁请求154,因而此特定仲裁请求154无法继续或完成执行。典型地,抑制一地址比较结果214将导致一功能性错误,所以此特定死锁(或活锁)解决指令基本上不能用来修正错误,但仍可用来寻找错误。SPROC 134可经由SPROC界面106于地址比较结果抑制器204中对一暂存器进行编码,以通过相关于所侦测样式的处置198来分别指定需被抑制的地址比较结果214,其中所侦测样式198又与一预定分类的死锁(或活锁)错误有关。于一实施例中,地址比较结果抑制器204包括多个双输入AND门,其中一输入接收一地址比较结果214,而另一输入则接收自暂存器的相应位,其中相应位具有一SPROC 134所写入的错误值,其能抑制每一个地址比较结果214。响应于其他输入值而抑制地址比较结果218,管线控制逻辑222决定下一个动作以及产生请求154的状态232传回至请求实体。假设因为抑制而导致一个或以上的结果218指出地址比对错误时,则状态232在地址比较结果214不被抑制时将具有不同于应有的值,亦即地址比较将在其他时候指出正确的地址比对。另外,在地址比较结果214不被抑制的情形下,管线控制逻辑222本身即可根据所指示的地址错误而执行不同的动作。有利的是,由请求实体所接收的修正状态232及/或由管线控制逻辑222所接收的修正动作,将有利于解除死锁(或活锁)状态,不论是通过本身或使用在此所提及的一或多个动作的结合来解决此问题。可能有一些错误的活锁状态不能通过前述的仲裁请求154解决。举例来说,快取存储器146可能被设计为在两个或以上的共存队列项目间建立一环状相依关系,因此抑制仲裁请求将无法解决活锁状态的问题。在这种状况下,暂时抑制地址比较结果能解决活锁状态、亦可解决死锁状态的问题。
另外,管线控制逻辑222自图1的请求队列186接收删除位168,并回应地删除任何删除位168被设置的仲裁请求154。有利的是,SPROC 134可于一请求队列186项目中根据与一侦测样式198有关的处置198设定一删除位168,其中样式198又与死锁(或活锁)错误的分类有关,以使管线控制逻辑222删除相关的仲裁请求154。当管线控制逻辑222删除一仲裁请求154时,其在不执行请求154所欲达成的功能下完成请求154。举例来说,假设被删除的请求154是为某些排序做配置,而其欲达成的功能为更新上传标签阵列176以及数据阵列174,于是管线控制逻辑222在不执行标签阵列176和数据阵列174的更新下完成请求154。管线控制逻辑222禁止请求154的预期功能被执行并指示其状态232完成,以使请求154不会继续尝试存取快取存储器146。假设删除一仲裁请求154,若不删除状态232的话,状态232可能具有一不同的值。基本上,删除一请求154将导致一功能性错误,这样将使得死锁(或活锁)解决动作不能用来修正错误,但仍可用来寻找错误。有利的是,删除一请求154可对解除死锁(或活锁)状态有帮助,不论是通过本身或使用在此所提及的一或多个动作的结合来解决此问题。
图3显示一方块图,是有关图1所述撷取缓冲器172的一项目300。每一个项目300,包括与被项目300所撷取的仲裁请求有关的一时序(或顺序)栏位302,一请求来源栏位304,一请求地址栏位306,以及一请求类型栏位308。
时序(或顺序)栏位302暂时地指出相较于其它仲裁请求154(与撷取缓冲器172中的项目300有关),一仲裁请求154的发生时间,其指示一绝对时间、自处理器芯片100重置后的绝对时脉周期数、或者与项目300相关的一序列或顺序的数字。
请求来源栏位304指出仲裁请求154的来源,例如一载入队列、一储存队列、总线界面单元126、快取存储器中的一重播队列、一回收队列或一监听队列,但并不以此为限。
请求地址栏位306是由仲裁请求154指出存储器地址。
请求类型栏位308指出仲裁请求154所执行的动作类型,例如载入、储存、快取线回收、监听查询、储存完成、快取线回收完成、载入完成、或监听查询。此外,每一种类型更设定快取存储器的阶层。
图4显示一流程图,其是图1所述处理器的操作。方块402为流程的起始。
于方块402,SPROC 134侦测主要处理器102为是否悬置。于一实施例中,SPROC 134通过引退单元184在一预定数量的时脉周期中并未引退任何指令,及/或总线界面126指出处理器总线192在一预定数量的时脉周期未完成任何传输的方式来侦测主要处理器102是否为悬置。上述的两个预定数量的时脉周期是可编码的,例如,可经由BIOS、由操作系统或其他软件(例如经由上述的MSR为基础的修正机制)、或是直接通过与SPORC耦接的外部总线、或是经由专为此目的而构筑的微处理器镕丝来达成。接着进入方块404。
于方块404,根据方块402侦测悬置的状态,SPROC 134致能快取存储器146以开始撷取对缓冲器172的项目300的仲裁请求154信息。快取存储器146的回应为开始撷取对缓冲器的仲裁请求154。接着进入方块406。
于方块406,SPROC 134等待一预定时间(例如,一预定数字的时脉周期)以使被撷取仲裁请求154的信息得以累积于撷取缓冲器172,以及接着去能快取存储器146使其无法撷取仲裁请求154至撷取缓冲器172。于另一实施例中,SPROC 134在撷取一预定数量的仲裁请求154至撷取缓冲器172后、或当撷取缓冲器172已满时使快取存储器去能。接着进入方块408。
于方块408,SPROC 134的样式侦测器182分析在方块406中撷取于撷取缓冲器172的仲裁请求154信息以侦测样式信息198,其将指出在相关于样式198的已知错误集合的样式中,所相关的一已知分类的死锁(或活锁)错误。举例来说,处理器芯片100的设计者可预先确认一个外部监听早于相同快取线的第一级数据快取存储器(level-1data cache)被回收的错误。于另一实施例中,监听可能指向快取存储器146中同一集合但不同快取线作为回收快取线。接着进入方块412。
方块412,SPROC 134通过执行如处置198所述的一连串动作以控制快取存储器146的行为,用以解除于方块402所侦测到的死锁(或活锁)状态,其中动作与方块408所侦测到的错误类型有关。如前所述,一连串解除死锁(或活锁)可能的动作包括(1)通过对仲裁请求抑制器202进行编码以抑制各个的仲裁请求154;(2)通过对地址比较结果抑制器204进行编码以抑制各个地址比较结果214;以及(3)通过设定各个请求的相关删除位168以标记请求队列186中需删除的各个请求。方块412的流程结束。
虽然实施例已叙述主要处理器具有一信号处理核心,但于其它实施例中主要处理器可具有多个处理核心,即为一多核处理器。于上述的实施例中,处理器芯片对于每一个主要处理器核心皆具有相应的SPROC,或一单一SPROC可监视以及控制所有处理器核心。此外,虽然前述的实施例提到SPROC侦测以及解决于一阶层化快取存储器中的一特定快取存储器的死锁(或活锁)状态,其它实施例中SPROC也可于不同阶层的快取存储器中执行同样的动作。此外,虽然实施例已叙述快取存储器的通道为一单一管线,其它实施例中快取存储器可包括多个管线。以及,虽然实施例已叙述特定数据以及标签阵列的配置,其它实施例中前述的标签阵列可为多个阵列,每一个阵列皆具有不同的信息。最后,虽然实施例已叙述主要处理器为一x86架构的处理器,其它实施例中主要处理器可为一不同架构的处理器。
必须了解的是,以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化。举例来说,可使用软件表示某些功能的目的,例如函数(function)、制造(fabrication)、制造模型(modeling)、模拟(simulation)、叙述(description)和(或)装置的测试以及方法。上述的功能可利用一般编码软件(例如C、C++)、硬件描述语言(HDL)包括Verilog HDL、VHDL以及其它程序。上述的程序可执行于任意计算机可读储存介质,例如磁带、半导体、磁片或光盘(例如CD-ROM、DVD-ROM等)、网络、单线路(wire line)、无线网络或其它通讯介质。实施例所述的装置及方法可包括于一知识产权核(semiconductorintellectual property core)中,例如一微处理器核心(例如具体化于一硬件描述语言中)以及转变为一硬件于一集成电路。此外,实施例所述的装置以及方法可为软件与硬件的结合。更具体地,本发明可实现于一计算机的微处理器装置中。最后,本发明的保护范围当视前附的申请专利范围所界定者为准。
本申请优先权的申请是美国专利申请案(申请号:13/758,924,申请日:2013年2月4日,名称为使用服务处理器处理死锁/活锁(Deadlock/Livelock Resolution UsingService Processor)),该案整体皆纳入本申请参考。
本申请与美国专利临时申请案(申请号:61/617,406,申请日:2012年3月29日,名称为使用服务处理器处理死锁/活锁(Deadlock/Livelock Resolution Using ServiceProcessor);以及申请号:61/755,685,申请日:2013年1月23日,名称为使用服务处理器处理死锁/活锁(Deadlock/Livelock Resolution Using Service Processor))有关,都具有相同的申请日,每一临时申请案整体皆纳入本案参考。
附图中的符号简单说明如下:
100:处理器芯片
102:主要处理器
104、134:服务处理器
106:SPROC界面
108:指令快取存储器
122:执行单元
126:总线界面单元
128:芯片
132:编码
136:RAM
144:微程序单元
146:快取存储器
154:请求
168:删除位
172:撷取缓冲器
174:数据阵列
176:标签阵列
178:管线
182:样式侦测器
184:引退单元
186:请求队列
188:系统
192:处理器总线
194:系统存储器
198:处置
202:仲裁请求抑制器
204:地址比较结果抑制器
210:抑制地址比较结果
214:地址比较结果
216:抑制仲裁请求
218:仲裁请求允许信号
222:管线控制逻辑
224:地址比较器
226:存储器地址
232:状态
300:管线
302:时序(或顺序)栏位
304:请求来源栏位
306:请求地址栏位
308:请求类型栏位
402、404、406、408、412:方块图。

Claims (15)

1.一种微处理器,其特征在于,包括:
一主要处理器;
一服务处理器,用以执行独立于上述主要处理器之外的编码;
一快取存储器;
一缓冲器,用以储存与通过上述主要处理器的功能单元对上述快取存储器进行的仲裁请求相关的信息;以及
存储器,用以存储修正信息和多个错误分类样式,每一个错误分类样式具有相关的处置,
其中,上述修正信息包括上述编码以及指令指标值,上述服务处理器通过使用上述指令指标值来确定上述编码在上述存储器中的位置,
其中,响应于上述主要处理器中的死锁状态或活锁状态的侦测,上述服务处理器撷取与上述功能单元对上述快取存储器进行的仲裁请求相关的信息至上述缓冲器中,
上述服务处理器还分析在上述缓冲器中所储存的与该仲裁请求相关的信息,以从上述多个错误分类样式中侦测上述功能单元对上述快取存储器的仲裁请求的样式,以及
上述服务处理器还控制由与侦测出的样式相关的处置所指定的上述快取存储器的一个或多个动作,以解除上述主要处理器中的上述死锁状态或上述活锁状态。
2.根据权利要求1所述的微处理器,其特征在于,还包括:
一引退单元,用以引退一指令;
其中上述服务处理器通过侦测上述引退单元在至少一预定数量的时脉周期内尚未引退一指令而辨识上述主要处理器中的上述死锁状态或上述活锁状态。
3.根据权利要求1所述的微处理器,其特征在于,还包括:
一总线界面单元,用以执行一处理器总线上的上述主要处理器与一外部存储器的传输,
其中上述服务处理器通过侦测上述总线界面单元在一预定数量的时脉周期内未完成上述处理器总线的传输而辨识上述主要处理器中的上述死锁状态或上述活锁状态。
4.根据权利要求1所述的微处理器,其特征在于,还包括:
上述存储器耦接至上述服务处理器并与上述主要处理器分离,所述多个错误分类样式表示与多个上述错误分类样式相关的死锁或活锁错误的分类,
其中,上述服务处理器分析上述缓冲器中所储存的仲裁请求信息,以从上述多个错误分类样式中侦测上述功能单元对上述快取存储器的仲裁请求的样式。
5.根据权利要求1所述的微处理器,其特征在于,
上述服务处理器用以控制上述快取存储器以暂时抑制一个或多个功能单元的仲裁请求,以暂时避免对上述一个或多个功能单元被允许存取上述快取存储器进行抑制,以解除上述主要处理器中的上述死锁状态或上述活锁状态。
6.根据权利要求1所述的微处理器,其特征在于,
上述服务处理器控制上述快取存储器以暂时对来自多个功能单元中的被允许存取上述快取存储器的一个功能单元的请求所指定的地址与上述主要处理器中对上述快取存储器请求存取的较旧地址的一个或多个比较结果进行抑制,以使上述快取存储器生成被允许存取上述快取存储器的上述一个功能单元的修正状态,以解除上述主要处理器中的上述死锁状态或上述活锁状态。
7.根据权利要求1所述的微处理器,其特征在于,
上述服务处理器还控制所述快取存储器,以使所述快取存储器的管线控制逻辑禁止功能单元之一的仲裁请求的预期功能被执行并指示上述功能单元该仲裁请求已完成,以解除上述主要处理器中的上述死锁状态或上述活锁状态。
8.根据权利要求1所述的微处理器,其特征在于,上述服务处理器所执行的编码采用新的侦测样式来修正,并与上述快取存储器的、能够由上述服务处理器控制以解除上述死锁状态或上述活锁状态的一个或多个动作相关。
9.一种微处理器死锁或活锁状态解除方法,其特征在于,包括:
通过一微处理器的一主要处理器执行指令;
将修正信息和多个错误分类样式存储到存储器,每一个错误分类样式具有相关的处置,其中上述修正信息包括由服务处理器所执行的编码以及指令指标值,上述服务处理器通过使用上述指令指标值来确定上述编码在上述存储器中的位置;
通过上述微处理器的上述服务处理器执行独立于上述主要处理器之外的上述编码;
通过上述服务处理器侦测上述主要处理器中一死锁状态或一活锁状态;
通过上述服务处理器,响应于上述主要处理器中的死锁状态或活锁状态的侦测,撷取与上述主要处理器的功能单元对上述主要处理器的快取存储器进行的仲裁请求相关的信息至缓冲器中,
通过上述服务处理器,分析在上述缓冲器中所储存的与该仲裁请求相关的信息,以从上述多个错误分类样式中侦测上述功能单元对上述快取存储器的仲裁请求的样式,以及
通过上述服务处理器,控制由与侦测出的样式相关的处置所指定的上述快取存储器的一个或多个动作,以解除上述主要处理器中的上述死锁状态或上述活锁状态。
10.根据权利要求9所述的微处理器死锁或活锁状态解除方法,其特征在于,还包括:
上述服务处理器侦测上述主要处理器的引退单元在至少一预定数量的时脉周期内尚未引退一指令而辨识上述死锁状态或上述活锁状态。
11.根据权利要求9所述的微处理器死锁或活锁状态解除方法,其特征在于,所述微处理器还包括:
一总线界面单元,用以在一处理器总线执行上述主要处理器与一外部存储器的传输,
其中,上述服务处理器通过侦测上述总线界面单元在一预定数量的时脉周期内尚未完成上述处理器总线的传输而辨识上述主要处理器中的上述死锁状态或上述活锁状态。
12.根据权利要求9所述的微处理器死锁或活锁状态解除方法,其特征在于,还包括:
在耦接至上述服务处理器并与上述主要处理器分离的上述存储器中存储多个错误分类样式,所述多个错误分类样式表示与多个上述错误分类样式相关的死锁或活锁错误的分类,以及
通过上述服务处理器,分析上述缓冲器中所储存的仲裁请求信息,以从上述多个错误分类样式中侦测上述功能单元对上述快取存储器的仲裁请求的样式。
13.根据权利要求9所述的微处理器死锁或活锁状态解除方法,其特征在于,还包括:
通过上述服务处理器,控制上述快取存储器以暂时抑制一个或多个功能单元的仲裁请求,以暂时避免对上述一个或多个功能单元被允许存取上述快取存储器进行抑制,以解除上述主要处理器中的上述死锁状态或上述活锁状态。
14.根据权利要求9所述的微处理器死锁或活锁状态解除方法,其特征在于,还包括:
通过上述服务处理器,控制上述快取存储器以暂时对来自多个功能单元中的被允许存取上述主要处理器的上述快取存储器的一个功能单元的请求所指定的地址与上述主要处理器中对上述快取存储器请求存取的较旧地址的一个或多个比较结果进行抑制,以使上述快取存储器生成被允许存取上述快取存储器的上述一个功能单元的修正状态,以解除上述主要处理器中的上述死锁状态或上述活锁状态。
15.根据权利要求9所述的微处理器死锁或活锁状态解除方法,其特征在于,还包括:
通过上述服务处理器控制所述快取存储器,以使所述快取存储器的管线控制逻辑禁止功能单元之一的仲裁请求的预期功能被执行并指示上述功能单元该仲裁请求已完成,以解除上述主要处理器中的上述死锁状态或上述活锁状态。
CN201310110030.3A 2012-03-29 2013-03-29 微处理器及微处理器死锁或活锁状态解除方法 Active CN103268276B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261617406P 2012-03-29 2012-03-29
US61/617,406 2012-03-29
US201361755685P 2013-01-23 2013-01-23
US61/755,685 2013-01-23
US13/758,924 2013-02-04
US13/758,924 US9575816B2 (en) 2012-03-29 2013-02-04 Deadlock/livelock resolution using service processor

Publications (2)

Publication Number Publication Date
CN103268276A CN103268276A (zh) 2013-08-28
CN103268276B true CN103268276B (zh) 2017-03-01

Family

ID=47900776

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310110030.3A Active CN103268276B (zh) 2012-03-29 2013-03-29 微处理器及微处理器死锁或活锁状态解除方法

Country Status (4)

Country Link
US (1) US9575816B2 (zh)
EP (1) EP2645237B1 (zh)
CN (1) CN103268276B (zh)
TW (1) TWI497278B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150033242A1 (en) * 2013-07-29 2015-01-29 Andriy Michailovich Stepanchuk Method for Automatic Parallel Computing
US9237019B2 (en) 2013-09-25 2016-01-12 Amazon Technologies, Inc. Resource locators with keys
US9524227B2 (en) * 2014-07-09 2016-12-20 Intel Corporation Apparatuses and methods for generating a suppressed address trace
US9600179B2 (en) * 2014-07-30 2017-03-21 Arm Limited Access suppression in a memory device
CN105980978B (zh) * 2014-12-13 2019-02-19 上海兆芯集成电路有限公司 用于检测暂停的逻辑分析器
CN105934743B (zh) * 2014-12-13 2019-06-04 上海兆芯集成电路有限公司 一种微处理器及在其中检测arb的模式的方法
WO2016092345A1 (en) * 2014-12-13 2016-06-16 Via Alliance Semiconductor Co., Ltd. Logic analyzer for detecting hangs
EP3047380B1 (en) * 2014-12-13 2019-04-24 VIA Alliance Semiconductor Co., Ltd. Pattern detector for detecting hangs
CN105740079A (zh) * 2016-01-27 2016-07-06 浪潮(北京)电子信息产业有限公司 一种死锁处理方法与系统
US10783011B2 (en) 2017-09-21 2020-09-22 Qualcomm Incorporated Deadlock free resource management in block based computing architectures
TWI739556B (zh) * 2020-08-19 2021-09-11 瑞昱半導體股份有限公司 時脈死結檢測系統、方法以及非暫態電腦可讀取媒體

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5940826A (en) * 1997-01-07 1999-08-17 Unisys Corporation Dual XPCS for disaster recovery in multi-host computer complexes
US6526485B1 (en) * 1999-08-03 2003-02-25 Sun Microsystems, Inc. Apparatus and method for bad address handling
US6745321B1 (en) * 1999-11-08 2004-06-01 International Business Machines Corporation Method and apparatus for harvesting problematic code sections aggravating hardware design flaws in a microprocessor
US6553512B1 (en) 2000-02-16 2003-04-22 Hewlett Packard Development Company, L.P. Method and apparatus for resolving CPU deadlocks
US6721871B2 (en) * 2002-04-02 2004-04-13 Nokia Corporation Method and apparatus for synchronizing data stores with respect to changes in folders
US20090063780A1 (en) * 2004-10-19 2009-03-05 Koninklijke Philips Electronics N.V. Data processing system and method for monitoring the cache coherence of processing units
US20060184770A1 (en) * 2005-02-12 2006-08-17 International Business Machines Corporation Method of implementing precise, localized hardware-error workarounds under centralized control
US7627807B2 (en) 2005-04-26 2009-12-01 Arm Limited Monitoring a data processor to detect abnormal operation
US20070088939A1 (en) * 2005-10-17 2007-04-19 Dan Baumberger Automatic and dynamic loading of instruction set architecture extensions
US7590784B2 (en) * 2006-08-31 2009-09-15 Intel Corporation Detecting and resolving locks in a memory unit
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
US7769958B2 (en) * 2007-06-22 2010-08-03 Mips Technologies, Inc. Avoiding livelock using intervention messages in multiple core processors
US8719555B2 (en) * 2008-01-31 2014-05-06 Arm Norway As Method for overcoming livelock in a multi-threaded system
US8732407B2 (en) * 2008-11-19 2014-05-20 Oracle America, Inc. Deadlock avoidance during store-mark acquisition
CN101937365B (zh) * 2009-06-30 2013-05-15 国际商业机器公司 并行程序的死锁检测方法和系统

Also Published As

Publication number Publication date
EP2645237A3 (en) 2015-05-27
TW201342038A (zh) 2013-10-16
US20130318530A1 (en) 2013-11-28
US9575816B2 (en) 2017-02-21
EP2645237A2 (en) 2013-10-02
EP2645237B1 (en) 2021-11-10
CN103268276A (zh) 2013-08-28
TWI497278B (zh) 2015-08-21

Similar Documents

Publication Publication Date Title
CN103268276B (zh) 微处理器及微处理器死锁或活锁状态解除方法
US11379234B2 (en) Store-to-load forwarding
US8549468B2 (en) Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model
CN106030533B (zh) 通过拆分过程执行自动重试事务
CN104375958B (zh) 高速缓存存储器管理事务性存储器访问请求
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
CN103597457B (zh) 避免设备中的非公布请求死锁
US9996394B2 (en) Scheduling accelerator tasks on accelerators using graphs
US9152474B2 (en) Context aware synchronization using context and input parameter objects associated with a mutual exclusion lock
CN106030546B (zh) 计算机程序的方法
CN108268331B (zh) 虚拟机系统
CN105793832A (zh) 快取管理请求合并
US8495344B2 (en) Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information
CN105074656B (zh) 管理并发谓词表达式的方法和装置
US9875108B2 (en) Shared memory interleavings for instruction atomicity violations
CN105706063A (zh) 用于检测竞争条件的技术
JP2010160704A (ja) デバッグ支援装置
TW200907679A (en) Leveraging transactional memory hardware to accelerate virtualization and emulation
CN101901177A (zh) 多核微处理器及其除错方法
CN107003894A (zh) 用于硬件事务内存程序的剖析器的装置和方法
CN107003897B (zh) 监控事务处理资源的利用率
JP6963552B2 (ja) ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ
US20120059997A1 (en) Apparatus and method for detecting data race
JP6192858B2 (ja) ハングを検出するためのロジック・アナライザ
US11243873B2 (en) Concurrency testing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Hooker Rodney E

Inventor after: Douglas R Reed

Inventor before: Hooker Rodney E

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: HOOKER RODNEY E. TO: HOOKER RODNEY E. REED DOUGLAS R.

GR01 Patent grant
GR01 Patent grant