用于检测暂停的逻辑分析器的制造方法

文档序号:10494377阅读:199来源:国知局
用于检测暂停的逻辑分析器的制造方法
【专利摘要】一种微处理器,包括:高速缓冲,包括标签阵列;标签管线,其仲裁对标签阵列的存取;以及模式检测器。模式检测器包括:寄存器;解码器,其解码通过标签管线的标签管arb的传输类型标识符;以及累加器,其将通过标签管线的多个标签管arb的传输类型标识符累加到寄存器中。
【专利说明】
用于检测暂停的逻辑分析器
技术领域
[0001]本发明涉及暂停(hang)检测逻辑,并且更特别地,涉及用于末层高速缓冲的暂停检测逻辑。
【背景技术】
[0002]末层高速缓冲(LLC)的标签管线提供存取标签、MESI和LRU阵列的方式。标签管线(在此也被称为标签管)将请求区分优先次序,并且对如何响应某些请求做出决定。例如来自诸如LlD的较低层高速缓冲的加载请求,会引发队列条目被推入以达成跟踪状态的目的。数据加载队列条目然后仲裁对于标签管线的所有权。一旦它被授予对标签管线的所有权,队列条目就存取标签MESI队列阵列来看它的地址是否在队列阵列中。如果它在,那么在管线末尾,队列条目基于地址是否在高速缓冲中并且基于由哪个其它的高速缓冲具有该线,来决定命中还是失中(miss)或者是否需要监听(snoop)其它高速缓冲。
[0003]用于仲裁对LLC存取的逻辑可以导致暂停(hang),对于程序员来说,该暂停既不是编码错误的故障,也不是可预测的。例如,当单个请求或请求对(pair of requests)没有完成时会发生死锁,因该请求重复地在管线中仲裁和重新执行。死锁的一个共同原因是等待某种外部刺激的请求,另一共同原因是依赖链的存在,在该链中请求对的每一个正在等待另一个请求完成。
[0004]另一个共同示例是当在多线程程序中每个线程竞争相同的共享资源时发生的活的暂停和不足(starvat1n)。在代码上,如果资源可用,则所有权通常用为O的变量做信号通知,而如果资源不可用(即,已经被一个线程拥有),则用为I的变量做信号通知。线程读取该比特同时也将该比特设定为I,来看它们是否能够得到所有权。如果线程读取O但是设定I,则那个线程现在得到所有权。当一个线程得到所有权时,其它线程会时常对此位置进行读取-修改-写入,以等待第一线程释放共享的资源。在线程O拥有资源,并且它的任务结束,但是却防止线程I以及2试图以重复的读取-修改-写入O来释放资源时将发生暂停的情形。这些种类的不足状态,是确定加载相对于其它加载的优先次序的架构中的非计划特征,并且难以预测。
[0005]实际上,在成本、处理速度和逻辑复杂度方面,创建检测并响应于共同死锁状况的微处理器,比创建从不或很少发生死锁状况的微处理器可能更高效。因此,需要基于启发式的标签管传输监视逻辑来检测指示暂停的模式,还需要响应于检测到的暂停并力图解决它们的逻辑。

【发明内容】

[0006]本发明可以用很多形式来表示。它可以被表示的一种形式是作为微处理器,其包括:高速缓冲,包括标签阵列;标签管线,其仲裁对标签阵列的存取;以及模式检测器。模式检测器包括:寄存器;解码器,其解码通过标签管线的标签管arb的传输类型标识符,其中标签管arb是存取标签阵列的传输;以及累加器,其将通过标签管线的多个标签管arb的传输类型标识符累加到寄存器中。
[0007]在大量时钟的过程中,例如,一千个时钟,死锁频繁地表;^为这样的传输模式:很少的完成(如果有的话),大多数的重新执行,以及仅仅一或二个不同种类的arb。提供模式检测器来识别这样的传输模式。
[0008]传输类型标识符包括关于标签管arb是加载、监听、存储还是其它类型的信息。模式检测器可以包括另一累加器,其将完成或被重新执行的众多标签管arb累加到寄存器中。
[0009]微处理器在用户可配置数量的时钟周期之后,或者在用户所配置数量的有效传输已经通过标签管之后,周期性地清除寄存器。在清除寄存器之前,模式检测器将在那个时段内累加到寄存器中的业务历史存储为存储的模式。
[0010]模式检测器还可以被配置为比较存储的业务历史与先前存储的业务历史,来检测暗示暂停状况的模式,并且如果存储的历史满足一个或多个预定的条件,则触发恢复例程。所述一个或多个预定的条件之一可以是计数的重新执行的数量与计数的完成的数量相比,超过一个或多个阈值。替换地或者另外,所述一个或多个预定的条件之一可以是在最近的时段内计数的重新执行的数量近似等于下一个最近的时段内计数的重新执行的数量。
[0011]本发明还可以用很多其它形式来表示,其中一些形式可以比上面表示的形式更宽。因此,不应该假设上面表示的形式反映本发明在权利要求中所表示的形式。
【附图说明】
[0012]图1是具有共享的LLC的多核心微处理器的一个实施例的框图。
[0013]图2是图1的LLC的框图。
[0014]图3是关于图2的LLC的标签管分级架构的一个实施例的框图。
[0015]图4示出LLC和暂停检测架构的一个实施例的顶层视图的框图。
[0016]图5示出图4的逻辑分析器的框图。
[0017]图6示出由图5的逻辑分析器捕捉的快照的一个实施例的内容。
[0018]图7示出图4的模式检测器的框图。
[0019]图8示出合并到图7的模式检测器中的累加寄存器的一个实施例内容。
[0020]图9示出图7的有条件的模式检测器的操作的功能性框图。
[0021 ]图10示出图4的有条件的模式检测器的框图。
[0022]图11示出图10的可配置寄存器之一的一个实施例的内容。
[0023]图12示出用于检测一个或多个可能的不足、活锁或死锁状况的分布式暂停逻辑架构的一个实施例。
[0024]图13示出多个恢复例程的功能性框图。
【具体实施方式】
[0025]现在参照图1,示出了图示多核心微处理器100的框图。微处理器100包括多个处理核心102、共享的末层高速缓冲(LLC)存储器120和总线接口单元(BIU)122。
[0026]在图1的示范性实施例中,存在被表示为核心O 102-0、核心I 102_1、核心2 102-2和核心3 102-3的4个核心102,其被统称为核心102,并且一般地单独称为核心102。每个核心 102-0、102-1、102-2、102-3经由各自的接口 118-0、118-1、118-2、118-3存取LLC 120,所述接口被统称为接口 118,并且一般地单独称为接口 118。总线接口单元122也经由接口 118-4存取LLC 120。微处理器100是包括系统存储器和外围设备(未示出)的大型计算系统(也未示出)的一部分,LLC 120经由总线接口单元122通过系统总线124与其通信。虽然图1的实施例示出具有4个核心102的处理器100,但是具有不同数量的核心102的其它实施例是仍被本发明考虑在内的。所有核心102共享LLC 106。
[0027]每个处理核心102包括指令高速缓冲104、指令翻译器106(其包括微代码108)、执行单元110、架构寄存器112和存储子系统114(例如,存储次序缓冲器、数据高速缓冲和表步行引擎)。执行单元110可以包括整数单元、浮点单元、媒体单元、分支单元、加载单元和存储单元。其它功能单元(未示出)可以包括分布其间的表步行引擎,其执行翻译表步行来生成虚拟到物理地址翻译;分支预测器;重命名单元;重排序缓冲器;保留站;指令取得单元;指令解码器;指令调度器;指令分派器、数据预取单元;和非架构寄存器。各种微架构特征可以被包括在核心1 2中。例如,核心1 2可以是超标量体系结构——能够每个时钟周期向执行单元110发布多个指令用于执行——或标量。又例如,核心102可以按次序或不按次序执行指令,后者使得指令能够不按程序次序被发布用于执行。在一个实施例中,核心102基本上符合x86指令集架构,虽然核心102不限于特定的指令集架构,并且可以包括其它存储器请求代理器,诸如图形处理单元(GPU)或现场可编程门阵列(FPGA)。
[0028]每个核心102-0、102-1、102-2、102-3还包括各自的专用高速缓冲存储器层级116-
0、116-1、116-2、116-3,其被统称为专用高速缓冲存储器层级116,并且一般地单独称为专用高速缓冲存储器层级116。优选地,专用高速缓冲存储器层级116的高速缓冲存储器小于LLC 120,并且具有相对小的存取延迟。在一个实施例中,专用高速缓冲存储器层级116包括层-1 (LI)指令高速缓冲(LlI)和LI数据高速缓冲(LlD)。
[0029]图2示出微处理器的末层高速缓冲(LLC)120的高层框结构。LLC120包括若干子模块,所述子模块包括核心和总线接口 126和128 (其包含保存瞬时传输状态的队列130),保存标签、MES1、LRU和数据信息的阵列132-136,以及一个或多个标签管线140(也被称为“标签线”)以及数据管线160(也被称为“数据管”),其允许队列以适合的定时方式来存取共享的阵列。
[0030]在图2的实施例中,两个标签管140,标签管A和标签管B,被描绘为支持四核处理器的LLC。两个核心参与仲裁以取得标签管A的所有权,并且另外两个核心参与仲裁以取得标签管B的所有权。在另一实施例(未示出)中,提供单个的标签管140用于LLC。在又另外的实施例(也未示出)中,提供三个或更多的标签管140。
[0031]标签管140独有的特性是它们在操作上几乎是所有LLC传输经过的中心点。每个标签管140提供存取到最近最少使用的(LRU)和标签/MESI阵列132和134,并且为到标签管140中的每个队列条目的仲裁做出行动决定。这种特性使得标签管140在检测和避免暂停方面有用。
[0032]LLC的队列130可以被分组成核心接口队列和外部接口队列。核心接口队列的示例包括从LI高速缓冲(或中间高速缓冲)到LLC处理加载的加载队列,将从LI高速缓冲至IjLLC处理逐出的逐出队列,以及从LLC处理到LI高速缓冲处理监听的监听队列。在一个实施例中,对于数据和代码提供分开的加载、逐出和监听队列。在另一个实施例中,为处理器的每个核心提供这样的核心接口队列的群组。
[0033]外部接口队列包括处理到LLC中的新的分配以及从LLC的逐出的填充缓冲器,处理源自总线的监听的监听队列,以及(在其它事情当中)处理从核心的总线写入的写入队列。
[0034]LLC还包括其它小框,包括状态机、认证特征和运用Forth程序(Forth program)的PPU 139ο
[0035]从外部世界进入LLC中的传输(例如,数据加载)或者在LLC之内部执行(例如,预取)会将条目推到它们相应的队列130中。通过为到它们的标签或数据管线140或160中进行仲裁、与外部框通信或者两者,队列130然后负责维持完成传输所需的状态。
[0036]微处理器给予一些类型的传输比一些其它类型的传输更高的优先级。在一个实施例中,在LLC中最高优先级的传输是LId加载。当LLC检测到新的加载请求时,它以并行的方式执行正常队列推入并且将加载请求信号直接发送到仲裁逻辑中,以允许LLC一检测到请求,加载就开始仲裁。
[0037]图3描绘了被划分成并分别指定为A、B、C、D和E的多个主要级141-145的标签管140的一个实施例。存取高速缓冲的传输(在此被称为“标签管arb”)通过标签管140的级。在A级141期间,传输仲裁到标签管140中。在B级142期间,标签被发送到阵列。在C级期间,从阵列接收MESI信息以及对于标签在LLC中是命中还是失中的指示。在D级期间,鉴于从阵列接收的信息,对于采取什么行动进行确定。在E级期间,行动决定(完成/重新执行,推入填充等)被发送回到请求队列。
[0038]在一个实施例中,标签管140还包括后续的级,但是这些仅为了在D级中提供从更旧的请求到更新的请求的转向路径的目的而存在。因此,在图3的实施例中,使用一个或多个类型的检测器150来监视E级145是有用的。然而,例如,在具有更多或更少级的实施例中,监视的最佳级将随着标签管设计而变化。因而,在图4中,“级N” 149象征包含关于arb的充足信息数量的标签管级一一特别是,arb是否要重新执行、完成和/或要求其它队列推入一一来使能对暂停的检测和分析。
[0039]图4是示出末层高速缓冲和暂停检测架构170的一个实施例的顶层视图的框图。LLC和暂停检测架构170包括一个或多个数据阵列136、一个或多个标签阵列132和仲裁逻辑172。耦接到请求队列130和数据管160的仲裁逻辑172仲裁对数据阵列136中的存取。耦接到标签管140的仲裁逻辑172仲裁对标签/MESI阵列132的存取。三个不同的暂停检测器——逻辑分析器200、模式检测器300和状况模式检测器400—一耦接到标签管140的级N 149来检测一个或多个不足、活锁或死锁状况。耦接到请求队列130的分布式暂停检测逻辑500提供多个恢复例程来从暂停中恢复。
[0040]图5示出图4的逻辑分析器200的一个实施例。逻辑分析器200包括连接到标签管140的级N 149的arb读取逻辑202,其读取并捕捉标签管arb的快照220。配置逻辑208使得用户能够选择性地配置逻辑分析器200,来在开始指示指标212和结束指示指标214之间读取和/或存储信息,或者指示是否执行滚动捕捉216,并且选择性地忽视某些传输218。逻辑分析器200的压缩逻辑204采用由arb读取逻辑202所捕捉的快照220并且将不同类型的重新执行条件一起进行逻辑“或”。存储逻辑206将压缩的快照存储到微处理器的专用随机存取存储器(PRAM)中。这个被加强的信息用于确定什么标签管arb包括暂停或者导致暂停。
[0041]如图6中所示,每个快照220包括存储关于标签管arb的相关信息的多个比特。传输标识符222识别arb的队列索引。例如,传输标识符222可以是在O和15之间的数字。传输类型字段224标识相应的标签管arb是加载、监听、逐出还是其它arb类型。事件字段226指示标签管arb被完成还是重新执行。指派字段228标识关于arb的其它有用信息,例如,相应的arb被指派到的集合和路径或者与arb相关联的寄存器体(bank)。这有助于识别可能来自指定arb所指派集合和路径所引发的暂停。
[0042]图7是图4的模式检测器300的一个实施例的框图。模式检测器300包括快照捕捉逻辑301、存储寄存器316、多个可配置设置322和比较逻辑318。
[0043]快照捕捉逻辑301包括连接到标签管140的级N149、用以捕捉标签管arb的快照的arb读取逻辑302。快照捕捉逻辑301还包括线路解码器304,该线路解码器304将通过标签管140的arb的X数字传输标识符222和传输类型224,解码成以2X比特字段表示的传输标识符和类型。累加器306然后将解码的传输标识符和类型累加到累加寄存器314中。
[0044]例如,当通过arb读取逻辑302恢复原状时,传输类型224可以以X比特(例如,4比特)二进制代码的形式来表示。解码器342将X比特传输标识符解码成Y比特(例如,16比特)字段,其中2Χ_1〈Υ〈 = 2Χ,以便Y比特字段的每一比特表示不同种类(或相似种类的类别)的标签管arb。因为累加器306通过传输标识符(传输标识符中最近解码数值者)的最近累加值的逻辑或布尔等效函数来累加传输标识符,所以累加器306将在用户配置时段期间通过标签管140的每个种类的标签管arb的位掩码累加到累加寄存器314中。
[0045]模式检测器300还包括对某些事件计数的多个算术累加器308。例如,一个算术累加器308对在配置时段期间完成的arb传输的数量进行计数。另一个算术累加器308对在该时段期间重新执行的arb的数量进行计数。又另一累加器308累加在该时段期间遇到的重新执行类型的位掩码。
[0046]图8示出累加寄存器314的一个实施例的内容,其包括比特0-10的字段341以记录通过算术累加器310计数的重新执行的数量,包括比特11-18的字段343以记录由算术累加器308计数的完成的数量,包括比特19-31的字段345以记录在该时段期间检测到的重新执行类型,包括比特32-47的字段347以记录在该时段期间遇到的传输标识符(例如,队列索引),包括比特48-63的字段349以记录从累加器306接收的解码的arb状态。
[0047]模式检测器300提供用户可配置的设置322来操作模式检测器300。这些设置可以包括,例如,时钟周期的配置数量323或者穿过标签管140的有效传输(未示出)的配置数量。这些设置还可以包括分别关于计数的完成和计数的重新执行的数量的阈值325和327,来信号通知暂停。
[0048]图9示出图6的模式检测器300的操作。在框350中,arb读取逻辑302生成在级N149处的arb的快照。在框352中,模式检测器300将快照累加到寄存器314中。在框354中,模式检测器300检查用户配置的时段是否已经完成。如果否,则模式检测器300继续将快照累加到寄存器314中。如果用户配置时段完成,那么在框356中,模式检测器300在一个存储寄存器316中将寄存器314的累加的比特保存为存储的历史。微处理器还清除寄存器314,将它准备好来为后续的时段累加新的位掩码。
[0049]在框358、360和362中,模式检测器300中的比较逻辑318执行一个或多个预定的和/或配置的比较。例如,模式检测器300可以评价完成的数量是否低于用户配置的阈值225(框358),重新执行的数量是否满足或超过在用户配置设置322中设定的重新执行阈值327(框360),并且/或者比较两个最近保存的寄存器的重新执行数据来确定两个寄存器中的重新执行的计数的数量是否相同或几乎相同(框362)。模式检测器300还可以,或者在替换例中,评价计数的重新执行的数量和计数的完成的数量之间的差是否超过阈值。如果在框364中满足一个或多个预定的和/或配置的条件,那么在框366中,模式检测器300用信号通知暂停,而该暂停将依次触发一个或多个恢复或捕捉例程320(框368)。
[0050]图10是图4的有条件的模式检测器400的一个实施例的框图。有条件的模式检测器400是图7的模式检测器300的更复杂且可配置的形式。检测器400包括快照捕捉逻辑401,该快照捕捉逻辑401如同图7的快照捕捉逻辑301 —样具有arb读取逻辑402和掩码逻辑404来捕捉标签管arb的快照。检测器400提供多个可配置触发寄存器模块410。每个触发寄存器模块410具有用于检测具有指定属性的传输的多个可配置字段,可选地取决于另一触发寄存器模块410而处于触发状态。多个触发寄存器模块410可一起配置来检测用户指定的模式的arb,并且在模式被检测到时触发L2捕捉和/或恢复响应432。
[0051 ]每个触发寄存器模块410具有三个输出。触发寄存器模块410被触发时,第一输出422将信号提供给每个其它触发寄存器模块410。第二输出424用信号通知下游逻辑420来触发L2捕捉,S卩,开始捕捉穿过标签管140的每件事物。每个触发寄存器模块410的触发L2捕捉输出424被“或”在一起,如“或”框428所示。第三输出426用信号通知下游逻辑430触发PPU中断,其依次导致一个或多个恢复例程432得到执行。每个触发寄存器模块410的触发PPU输出426也是被“或”在一起,如“或”框429所示。
[0052]图11示出可配置的触发寄存器模块410的一个实施例的内容。触发寄存器模块410提供字段用于指定重新执行矢量413、arb类型414、触发相关位图416和超时值417。如果寄存器模块具有指定的超时时段,那么超时时段在寄存器指示它处于触发状态时开始。在超时时段期满之后,模式检测器禁用任何从属的寄存器模块进入触发状态中。
[0053]触发寄存器模块410还提供每个在长度上为I比特的字段418和419,来使得触发寄存器模块410能够触发下游逻辑来触发PPU中断或L2捕捉。字段411指示触发是否被使能。字段421指定一旦寄存器触发,它是否将保持被使能。可配置的寄存器模块410可以支持更多专门的字段,例如,标签管选择器415。
[0054]图12示出用于检测一个或多个可能的不足、活锁或死锁状况的多处理器微处理器中的分布式暂停逻辑架构500的一个实施例。每个包含多个队列条目512的多个队列130(图2),包含关于存取高速缓冲的传输和旁路高速缓冲的传输(例如,不可高速缓冲的加载)的瞬时传输状态信息。多个检测器520监视多个队列条目512的一个或多个可能的不足、活锁或死锁状况。多个恢复逻辑模块530被分布在微处理器中。当检测器520检测到可能的不足、活锁或死锁状况时,它与最近的恢复逻辑模块530通信它的状况(例如,“ImHung(我被暂停)”信号)。当耦接的检测器520识别到可能的不足、活锁或死锁状况时,每个恢复逻辑模块530(其在一个实施例中组成有限状态机)被配置为实现一个或多个局部恢复例程535。
[0055]在一个实施例中,请求仲裁到末层高速缓冲标签管140中的每个队列条目512与相应检测器520相关联。还有在一个实施例中,检测器520包括饱和的计数器。配置逻辑550被提供来指定一个或多个条件550来计数。
[0056]在一个实施例中,当相关联的队列条目512被新分配时,分布式暂停逻辑架构500被配置为重置每个饱和的计数器,并且每当相关联的队列条目512被重新执行时,就增加饱和计数器。在第二实施例中,每当相关联的队列条目请求仲裁,但是不给予仲裁时,每个饱和计数器增加。在第三实施例中,每当相关联的队列条目在请求仲裁之前等待某种外部刺激时,每个饱和计数器增加。在第四实施例中,每个饱和计数器在可配置的阈值饱和。
[0057]分布式暂停逻辑架构500还包括中央恢复逻辑540,该中央恢复逻辑540在一个实施例中也是有限状态机。当恢复逻辑模块530被检测器520通知可能的不足、活锁或死锁状况时,恢复逻辑模块530与中央恢复逻辑540通信。中央恢复逻辑540响应性地指令多个恢复逻辑模块530的每个执行一个或多个它们自己的局部恢复例程。
[0058]恢复例程535被配置为处理来自相关联的队列条目的仲裁请求以便尝试解决检测到的暂停。图13是提供给恢复逻辑540的恢复例程560的集合的一个实施例的框图。
[0059]一个恢复例程562包括透过系统地阻挡仲裁请求来将鼓泡(bubble)插入到标签管线中。第二恢复例程564包括透过将它们的请求去资格(dequalify)来阻挡预定的请求队列条目的集合。第三恢复例程566包括透过使得相关联的队列条目将它们的仲裁请求去资格,来阻挡与没有设置可能的不足、活锁或死锁状况的检测器相关联的所有请求者。第四恢复例程568包括循环的请求去资格,其中来自个别的队列或队列条目的对于仲裁的请求仅仅被允许连续地进行。在一个实施例中,恢复逻辑执行一个恢复例程,并且在执行下一个恢复例程之前重新检查暂停条件。然而,除非在权利要求中如此指定,否则本发明不将这些恢复例程限制于任何特定的恢复例程的集合,或者恢复例程的任何特定的排序。
[0060]虽然已经在此描述了本发明的各种实施例,但是应该理解,它们已经作为示例被呈现,而非限制。对于相关计算机领域的技术人员来说将显然的是,在此可以进行形式和细节上的各种改变而不脱离本发明的范围。例如,软件可以使能在此描述的装置和方法的功能、制作、建模、模拟、描述和/或测试。这可以通过使用以下来完成:通用编程语言(例如,C、C++)、硬件描述语言(HDL)(包括Verilog HDL、VHDL等)或者其它可用程序。这样的软件可以被部署在任何已知的计算机可用介质中,诸如磁带、半导体、磁盘或光盘(例如,CD-ROM、DVD-ROM等)、网络、有线、无线或其它通信介质。在此描述的装置和方法的实施例可以被包括在半导体知识产权核心中,诸如微处理器核心(例如,嵌入的,或专用的,用HDL),并且在集成电路的生产中被转换成硬件。另外,在此描述的装置和方法可以被具体化为硬件和软件的组合。因而,本发明不应该被在此描述的任何示范性实施例所限制,而是应该仅根据所附的权利要求及其等价物来定义。具体地,本发明可以在可以用在通用计算机中的微处理器设备之内被实现。最后,本领域技术人员应该理解,他们可以容易地使用所公开的构思和特定实施例作为设计和修改用于实行本发明的相同目的的其它结构的基础,而不脱离由所附权利要求定义的本发明的范围。
【主权项】
1.一种微处理器,包括: 高速缓冲,包括标签阵列; 标签管线,其仲裁对标签阵列的存取;以及 模式检测器,该模式检测器包括: 寄存器; 解码器,其解码通过标签管线的标签管arb的传输类型标识符,其中标签管arb是存取标签阵列的传输;以及 累加器,其将通过标签管线的多个标签管arb的传输类型标识符累加到寄存器中; 其中模式检测器累加通过标签管线的各种标签管arb的历史。2.如权利要求1所述的微处理器,其中传输类型标识符包括关于标签管arb是加载、监听、存储还是其它类型的信息。3.如权利要求1所述的微处理器,还包括另外的累加器,该累加器将完成或被重新执行的众多标签管arb累加到寄存器中。4.如权利要求1所述的微处理器,其中微处理器在可配置数量的时钟周期之后周期性地清除寄存器。5.如权利要求1所述的微处理器,其中微处理器在可配置数量的有效的传输已经通过标签管之后周期性地清除寄存器。6.如权利要求1所述的微处理器,其中微处理器在连续的时钟周期时段或连续的传输完成之后周期性地清除寄存器,并且模式检测器被配置为将在那个周期内累加到寄存器中的历史存储为存储的历史。7.如权利要求6所述的微处理器,其中所述时段是用户配置的值。8.如权利要求6所述的微处理器,其中模式检测器被配置为比较存储的历史与先前存储的历史来检测暗示暂停状况的存在的模式。9.如权利要求1所述的微处理器,其中模式检测器被配置为如果存储的历史满足一个或多个预定的条件,则触发捕捉或者恢复例程。10.如权利要求9所述的微处理器,其中所述一个或多个预定条件的一个是计数的重新执行的数量与计数的完成的数量相比,超过一个或多个阈值。11.如权利要求10所述的微处理器,其中所述一个或多个预定条件之一是在最近的时段内的计数的重新执行的数量近似等于在下一个最近的时段内的计数的重新执行的数量。12.—种在具有高速缓冲的微处理器中检测可能的不足、活锁或死锁状况的方法,其中高速缓冲包括标签阵列和仲裁对标签阵列的存取的标签管线,所述方法包括: 解码通过标签管线的标签管arb的传输类型标识符,其中标签管arb是存取标签阵列的传输;以及 将通过标签管线的多个标签管arb的传输类型标识符累加到寄存器中。13.如权利要求12所述的方法,其中传输类型标识符包括关于标签管arb是加载、监听、存储还是其它类型的信息。14.如权利要求12所述的方法,还包括将完成或被重新执行的众多标签管arb累加到寄存器中。15.如权利要求12所述的方法,还包括在配置数量的时钟周期之后周期性地清除寄存器。16.如权利要求12所述的方法,还包括在可配置数量的有效的传输已经通过标签管线之后周期性地清除寄存器。17.如权利要求12所述的方法,进一步包括: 在连续的传输或连续的时钟周期的时段完成之后周期性地清除寄存器;以及 将在那个时段内累加到寄存器中的历史存储为存储的历史。18.如权利要求17所述的方法,还包括比较存储的历史与先前存储的历史来检测可能的暂停状况。19.如权利要求12所述的方法,还包括如果存储的历史满足一个或多个预定的条件,则触发恢复例程。20.如权利要求19所述的方法,其中所述一个或多个预定条件的一个是计数的重新执行的数量与计数的完成的数量相比,超过一个或多个阈值。21.如权利要求19所述的方法,其中所述一个或多个预定条件之一是在最近的时段内的计数的重新执行的数量近似等于在下一个最近的时段内的计数的重新执行的数量。22.—种计算机程序产品,被编码在与计算设备一起使用的至少一个非瞬时性计算机可读介质中,该计算机程序产品包括: 嵌入在所述介质中的计算机可读程序代码,用于指定具有如下的微处理器: 高速缓冲,包括标签阵列; 标签管线,其仲裁对标签阵列的存取;以及 模式检测器,该模式检测器包括: 寄存器; 解码器,其解码通过标签管线的标签管arb的传输类型标识符,其中标签管arb是存取标签阵列的传输;以及 累加器,其将通过标签管线的多个标签管arb的传输类型标识符累加到寄存器中; 其中模式检测器累加通过标签管线的各种标签管arb的历史。
【文档编号】G06F12/00GK105849705SQ201480070698
【公开日】2016年8月10日
【申请日】2014年12月13日
【发明人】罗德尼.E.虎克, 道格拉斯.R.瑞德
【申请人】上海兆芯集成电路有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1