CN105934743A - 用于检测暂停的逻辑分析器 - Google Patents

用于检测暂停的逻辑分析器 Download PDF

Info

Publication number
CN105934743A
CN105934743A CN201480070694.4A CN201480070694A CN105934743A CN 105934743 A CN105934743 A CN 105934743A CN 201480070694 A CN201480070694 A CN 201480070694A CN 105934743 A CN105934743 A CN 105934743A
Authority
CN
China
Prior art keywords
arb
register module
label tube
logic
snapshot
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.)
Granted
Application number
CN201480070694.4A
Other languages
English (en)
Other versions
CN105934743B (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.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
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 Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Publication of CN105934743A publication Critical patent/CN105934743A/zh
Application granted granted Critical
Publication of CN105934743B publication Critical patent/CN105934743B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • 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/073Error 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 in a memory management context, e.g. virtual memory or cache management
    • 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/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Abstract

一种微处理器,包括:高速缓冲,包括标签阵列;标签管线,其仲裁对标签阵列的存取;以及模式检测器。模式检测器包括:快照捕捉逻辑,其捕捉标签管arb的快照——包括关于标签管arb是加载、监听、存储还是其它arb类型以及标签管arb是完成还是重新执行的信息——以及多个可配置的寄存器模块,其可操作来存储用户配置的快照模式。配置逻辑使得用户能够为每个可配置寄存器模块指定用于模式检测器检测的标签管arb的属性,以及配置寄存器模块之间的从属关系。如果标签管arb或者标签管arb的模式满足用户为寄存器模块指定的属性,并且如果寄存器模块从属于的任何其它寄存器模块也处于触发状态,则寄存器模块变为触发。

Description

用于检测暂停的逻辑分析器
技术领域
本发明涉及暂停(hang)检测逻辑,并且更特别地,涉及用于末层高速缓冲的暂停检测逻辑。
背景技术
末层高速缓冲(LLC)的标签管线提供存取标签、MESI和LRU阵列的方式。标签管线(在此也被称为标签管)将请求区分优先次序,并且对如何响应某些请求做出决定。例如来自诸如L1D的较低层高速缓冲的加载请求,会引发队列条目被推入以达成跟踪状态的目的。数据加载队列条目然后仲裁对于标签管线的所有权。一旦它被授予对标签管线的所有权,队列条目就存取标签MESI队列阵列来看它的地址是否在队列阵列中。如果它在,那么在管线末尾,队列条目基于地址是否在高速缓冲中并且基于由哪个其它的高速缓冲具有该线,来决定命中还是失中(miss)或者是否需要监听(snoop)其它高速缓冲。
用于仲裁对LLC存取的逻辑可以导致暂停(hang),对于程序员来说,该暂停既不是编码错误的故障,也不是可预测的。例如,当单个请求或请求对(pair of requests)没有完成时会发生死锁,因该请求重复地在管线中仲裁和重新执行。死锁的一个共同原因是等待某种外部刺激的请求,另一共同原因是依赖链的存在,在该链中请求对的每一个正在等待另一个请求完成。
另一个共同示例是当在多线程程序中每个线程竞争相同的共享资源时发生的活的暂停和不足(starvation)。在代码上,如果资源可用,则所有权通常用为0的变量做信号通知,而如果资源不可用(即,已经被一个线程拥有),则用为1的变量做信号通知。线程读取该比特同时也将该比特设定为1,来看它们是否能够得到所有权。如果线程读取0但是设定1,则那个线程现在得到所有权。当一个线程得到所有权时,其它线程会时常对此位置进行读取-修改-写入,以等待第一线程释放共享的资源。在线程0拥有资源,并且它的任务结束,但是却防止线程1以及2试图以重复的读取-修改-写入0来释放资源时将发生暂停的情形。这些种类的不足状态,是确定加载相对于其它加载的优先次序的架构中的非计划特征,并且难以预测。
实际上,在成本、处理速度和逻辑复杂度方面,创建检测并响应于共同死锁状况的微处理器,比创建从不或很少发生死锁状况的微处理器可能更高效。因此,需要基于启发式的标签管传输监视逻辑来检测指示暂停的模式,还需要响应于检测到的暂停并力图解决它们的逻辑。
发明内容
本发明可以用很多形式来表示。它可以被表示的一种形式是作为微处理器,其包括:高速缓冲,包括标签阵列;标签管线,其仲裁对标签阵列的存取;以及模式检测器。
在大量时钟的过程中,例如,一千个时钟,死锁频繁地表示为这样的传输模式:很少的完成(如果有的话),大多数的重新执行,以及仅仅一或二个不同种类的arb。提供模式检测器来识别这样的传输模式。
模式检测器包括:快照捕捉逻辑,其捕捉标签管arb(即,存取标签阵列的传输)的快照,以及多个可配置寄存器,可操作来存储用户配置的快照模式。具体地,快照捕捉逻辑可以获得关于标签管是加载、监听、存储还是其它arb类型的信息,以及标签管arb被完成还是重新执行。快照捕捉逻辑可以被耦接到标签管线的级,通过该点已经确定arb是否要重新执行、完成以及/或者要求其它队列推入。
模式检测器还包括配置逻辑,该配置逻辑使得用户能够为每个可配置寄存器模块指定用于模式检测器检测的标签管arb的属性。模式检测器的配置逻辑还使得用户能够指定可配置的寄存器模块之间的一个或多个从属关系。
此外,每个寄存器模块可以一旦满足一个或多个预定条件就可操作在触发状态,并且向其它寄存器模块的每个提供指示它的触发状态的信号。所述一个或多个预定条件中的一个是检测到满足用户指定的关于寄存器模块的属性的标签管arb或者标签管arb的模式。如果寄存器模块被指定为取决于另外的寄存器模块,那么另外的预定条件是其它寄存器模块处于触发状态。此外,配置逻辑可以使得用户能够为每个从属的寄存器模块可选地指定和配置超时时段。当寄存器指示它处于触发状态时,超时时段开始。在超时时段期满之后,模式检测器禁止任何从属的寄存器模块进入触发状态。
模式检测器还可以被配置为:如果没有其它寄存器模块以其为条件的寄存器模块进入触发状态,则触发信息存储例程或恢复例程。
本发明还可以用很多其它形式来表示,其中一些形式可以比上面表示的形式更宽。因此,不应该假设上面表示的形式反映本发明在权利要求中所表示的形式。
附图说明
图1是具有共享的LLC的多核心微处理器的一个实施例的框图。
图2是图1的LLC的框图。
图3是关于图2的LLC的标签管分级架构的一个实施例的框图。
图4示出LLC和暂停检测架构的一个实施例的顶层视图的框图。
图5示出图4的逻辑分析器的框图。
图6示出由图5的逻辑分析器捕捉的快照的一个实施例的内容。
图7示出图4的模式检测器的框图。
图8示出合并到图7的模式检测器中的累加寄存器的一个实施例内容。
图9示出图7的有条件的模式检测器的操作的功能性框图。
图10示出图4的有条件的模式检测器的框图。
图11示出图10的可配置寄存器之一的一个实施例的内容。
图12示出用于检测一个或多个可能的不足、活锁或死锁状况的分布式暂停逻辑架构的一个实施例。
图13示出多个恢复例程的功能性框图。
具体实施方式
现在参照图1,示出了图示多核心微处理器100的框图。微处理器100包括多个处理核心102、共享的末层高速缓冲(LLC)存储器120和总线接口单元(BIU)122。
在图1的示范性实施例中,存在被表示为核心0 102-0、核心1 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存取LLC120。微处理器100是包括系统存储器和外围设备(未示出)的大型计算系统(也未示出)的一部分,LLC 120经由总线接口单元122通过系统总线124与其通信。虽然图1的实施例示出具有4个核心102的处理器100,但是具有不同数量的核心102的其它实施例是仍被本发明考虑在内的。所有核心102共享LLC 106。
每个处理核心102包括指令高速缓冲104、指令翻译器106(其包括微代码108)、执行单元110、架构寄存器112和存储子系统114(例如,存储次序缓冲器、数据高速缓冲和表步行引擎)。执行单元110可以包括整数单元、浮点单元、媒体单元、分支单元、加载单元和存储单元。其它功能单元(未示出)可以包括分布其间的表步行引擎,其执行翻译表步行来生成虚拟到物理地址翻译;分支预测器;重命名单元;重排序缓冲器;保留站;指令取得单元;指令解码器;指令调度器;指令分派器、数据预取单元;和非架构寄存器。各种微架构特征可以被包括在核心102中。例如,核心102可以是超标量体系结构——能够每个时钟周期向执行单元110发布多个指令用于执行——或标量。又例如,核心102可以按次序或不按次序执行指令,后者使得指令能够不按程序次序被发布用于执行。在一个实施例中,核心102基本上符合x86指令集架构,虽然核心102不限于特定的指令集架构,并且可以包括其它存储器请求代理器,诸如图形处理单元(GPU)或现场可编程门阵列(FPGA)。
每个核心102-0、102-1、102-2、102-3还包括各自的专用高速缓冲存储器层级116-0、116-1、116-2、116-3,其被统称为专用高速缓冲存储器层级116,并且一般地单独称为专用高速缓冲存储器层级116。优选地,专用高速缓冲存储器层级116的高速缓冲存储器小于LLC 120,并且具有相对小的存取延迟。在一个实施例中,专用高速缓冲存储器层级116包括层-1(L1)指令高速缓冲(L1I)和L1数据高速缓冲(L1D)。
图2示出微处理器的末层高速缓冲(LLC)120的高层框结构。LLC 120包括若干子模块,所述子模块包括核心和总线接口126和128(其包含保存瞬时传输状态的队列130),保存标签、MESI、LRU和数据信息的阵列132-136,以及一个或多个标签管线140(也被称为“标签线”)以及数据管线160(也被称为“数据管”),其允许队列以适合的定时方式来存取共享的阵列。
在图2的实施例中,两个标签管140,标签管A和标签管B,被描绘为支持四核处理器的LLC。两个核心参与仲裁以取得标签管A的所有权,并且另外两个核心参与仲裁以取得标签管B的所有权。在另一实施例(未示出)中,提供单个的标签管140用于LLC。在又另外的实施例(也未示出)中,提供三个或更多的标签管140。
标签管140独有的特性是它们在操作上几乎是所有LLC传输经过的中心点。每个标签管140提供存取到最近最少使用的(LRU)和标签/MESI阵列132和134,并且为到标签管140中的每个队列条目的仲裁做出行动决定。这种特性使得标签管140在检测和避免暂停方面有用。
LLC的队列130可以被分组成核心接口队列和外部接口队列。核心接口队列的示例包括从L1高速缓冲(或中间高速缓冲)到LLC处理加载的加载队列,将从L1高速缓冲到LLC处理逐出的逐出队列,以及从LLC处理到L1高速缓冲处理监听的监听队列。在一个实施例中,对于数据和代码提供分开的加载、逐出和监听队列。在另一个实施例中,为处理器的每个核心提供这样的核心接口队列的群组。
外部接口队列包括处理到LLC中的新的分配以及从LLC的逐出的填充缓冲器,处理源自总线的监听的监听队列,以及(在其它事情当中)处理从核心的总线写入的写入队列。
LLC还包括其它小框,包括状态机、认证特征和运用Forth程序(Forthprogram)的PPU 139。
从外部世界进入LLC中的传输(例如,数据加载)或者在LLC之内部执行(例如,预取)会将条目推到它们相应的队列130中。通过为到它们的标签或数据管线140或160中进行仲裁、与外部框通信或者两者,队列130然后负责维持完成传输所需的状态。
微处理器给予一些类型的传输比一些其它类型的传输更高的优先级。在一个实施例中,在LLC中最高优先级的传输是L1d加载。当LLC检测到新的加载请求时,它以并行的方式执行正常队列推入并且将加载请求信号直接发送到仲裁逻辑中,以允许LLC一检测到请求,加载就开始仲裁。
图3描绘了被划分成并分别指定为A、B、C、D和E的多个主要级141-145的标签管140的一个实施例。存取高速缓冲的传输(在此被称为“标签管arb”)通过标签管140的级。在A级141期间,传输仲裁到标签管140中。在B级142期间,标签被发送到阵列。在C级期间,从阵列接收MESI信息以及对于标签在LLC中是命中还是失中的指示。在D级期间,鉴于从阵列接收的信息,对于采取什么行动进行确定。在E级期间,行动决定(完成/重新执行,推入填充等)被发送回到请求队列。
在一个实施例中,标签管140还包括后续的级,但是这些仅为了在D级中提供从更旧的请求到更新的请求的转向路径的目的而存在。因此,在图3的实施例中,使用一个或多个类型的检测器150来监视E级145是有用的。然而,例如,在具有更多或更少级的实施例中,监视的最佳级将随着标签管设计而变化。因而,在图4中,“级N”149象征包含关于arb的充足信息数量的标签管级——特别是,arb是否要重新执行、完成和/或要求其它队列推入——来使能对暂停的检测和分析。
图4是示出末层高速缓冲和暂停检测架构170的一个实施例的顶层视图的框图。LLC和暂停检测架构170包括一个或多个数据阵列136、一个或多个标签阵列132和仲裁逻辑172。耦接到请求队列130和数据管160的仲裁逻辑172仲裁对数据阵列136中的存取。耦接到标签管140的仲裁逻辑172仲裁对标签/MESI阵列132的存取。三个不同的暂停检测器——逻辑分析器200、模式检测器300和状况模式检测器400——耦接到标签管140的级N 149来检测一个或多个不足、活锁或死锁状况。耦接到请求队列130的分布式暂停检测逻辑500提供多个恢复例程来从暂停中恢复。
图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包括暂停或者导致暂停。
如图6中所示,每个快照220包括存储关于标签管arb的相关信息的多个比特。传输标识符222识别arb的队列索引。例如,传输标识符222可以是在0和15之间的数字。传输类型字段224标识相应的标签管arb是加载、监听、逐出还是其它arb类型。事件字段226指示标签管arb被完成还是重新执行。指派字段228标识关于arb的其它有用信息,例如,相应的arb被指派到的集合和路径或者与arb相关联的寄存器体(bank)。这有助于识别可能来自指定arb所指派集合和路径所引发的暂停。
图7是图4的模式检测器300的一个实施例的框图。模式检测器300包括快照捕捉逻辑301、存储寄存器316、多个可配置设置322和比较逻辑318。
快照捕捉逻辑301包括连接到标签管140的级N 149、用以捕捉标签管arb的快照的arb读取逻辑302。快照捕捉逻辑301还包括线路解码器304,该线路解码器304将通过标签管140的arb的x数字传输标识符222和传输类型224,解码成以2x比特字段表示的传输标识符和类型。累加器306然后将解码的传输标识符和类型累加到累加寄存器314中。
例如,当通过arb读取逻辑302恢复原状时,传输类型224可以以X比特(例如,4比特)二进制代码的形式来表示。解码器342将X比特传输标识符解码成Y比特(例如,16比特)字段,其中2x-1<Y<=2x,以便Y比特字段的每一比特表示不同种类(或相似种类的类别)的标签管arb。因为累加器306通过传输标识符(传输标识符中最近解码数值者)的最近累加值的逻辑或布尔等效函数来累加传输标识符,所以累加器306将在用户配置时段期间通过标签管140的每个种类的标签管arb的位掩码累加到累加寄存器314中。
模式检测器300还包括对某些事件计数的多个算术累加器308。例如,一个算术累加器308对在配置时段期间完成的arb传输的数量进行计数。另一个算术累加器308对在该时段期间重新执行的arb的数量进行计数。又另一累加器308累加在该时段期间遇到的重新执行类型的位掩码。
图8示出累加寄存器314的一个实施例的内容,其包括比特0-10的字段341以记录通过算术累加器310计数的重新执行的数量,包括比特11-18的字段343以记录由算术累加器308计数的完成的数量,包括比特19-31的字段345以记录在该时段期间检测到的重新执行类型,包括比特32-47的字段347以记录在该时段期间遇到的传输标识符(例如,队列索引),包括比特48-63的字段349以记录从累加器306接收的解码的arb状态。
模式检测器300提供用户可配置的设置322来操作模式检测器300。这些设置可以包括,例如,时钟周期的配置数量323或者穿过标签管140的有效传输(未示出)的配置数量。这些设置还可以包括分别关于计数的完成和计数的重新执行的数量的阈值325和327,来信号通知暂停。
图9示出图6的模式检测器300的操作。在框350中,arb读取逻辑302生成在级N 149处的arb的快照。在框352中,模式检测器300将快照累加到寄存器314中。在框354中,模式检测器300检查用户配置的时段是否已经完成。如果否,则模式检测器300继续将快照累加到寄存器314中。如果用户配置时段完成,那么在框356中,模式检测器300在一个存储寄存器316中将寄存器314的累加的比特保存为存储的历史。微处理器还清除寄存器314,将它准备好来为后续的时段累加新的位掩码。
在框358、360和362中,模式检测器300中的比较逻辑318执行一个或多个预定的和/或配置的比较。例如,模式检测器300可以评价完成的数量是否低于用户配置的阈值225(框358),重新执行的数量是否满足或超过在用户配置设置322中设定的重新执行阈值327(框360),并且/或者比较两个最近保存的寄存器的重新执行数据来确定两个寄存器中的重新执行的计数的数量是否相同或几乎相同(框362)。模式检测器300还可以,或者在替换例中,评价计数的重新执行的数量和计数的完成的数量之间的差是否超过阈值。如果在框364中满足一个或多个预定的和/或配置的条件,那么在框366中,模式检测器300用信号通知暂停,而该暂停将依次触发一个或多个恢复或捕捉例程320(框368)。
图10是图4的有条件的模式检测器400的一个实施例的框图。有条件的模式检测器400是图7的模式检测器300的更复杂且可配置的形式。检测器400包括快照捕捉逻辑401,该快照捕捉逻辑401如同图7的快照捕捉逻辑301一样具有arb读取逻辑402和掩码逻辑404来捕捉标签管arb的快照。检测器400提供多个可配置触发寄存器模块410。每个触发寄存器模块410具有用于检测具有指定属性的传输的多个可配置字段,可选地取决于另一触发寄存器模块410而处于触发状态。多个触发寄存器模块410可一起配置来检测用户指定的模式的arb,并且在模式被检测到时触发L2捕捉和/或恢复响应432。
每个触发寄存器模块410具有三个输出。触发寄存器模块410被触发时,第一输出422将信号提供给每个其它触发寄存器模块410。第二输出424用信号通知下游逻辑420来触发L2捕捉,即,开始捕捉穿过标签管140的每件事物。每个触发寄存器模块410的触发L2捕捉输出424被“或”在一起,如“或”框428所示。第三输出426用信号通知下游逻辑430触发PPU中断,其依次导致一个或多个恢复例程432得到执行。每个触发寄存器模块410的触发PPU输出426也是被“或”在一起,如“或”框429所示。
图11示出可配置的触发寄存器模块410的一个实施例的内容。触发寄存器模块410提供字段用于指定重新执行矢量413、arb类型414、触发相关位图416和超时值417。如果寄存器模块具有指定的超时时段,那么超时时段在寄存器指示它处于触发状态时开始。在超时时段期满之后,模式检测器禁用任何从属的寄存器模块进入触发状态中。
触发寄存器模块410还提供每个在长度上为1比特的字段418和419,来使得触发寄存器模块410能够触发下游逻辑来触发PPU中断或L2捕捉。字段411指示触发是否被使能。字段421指定一旦寄存器触发,它是否将保持被使能。可配置的寄存器模块410可以支持更多专门的字段,例如,标签管选择器415。
图12示出用于检测一个或多个可能的不足、活锁或死锁状况的多处理器微处理器中的分布式暂停逻辑架构500的一个实施例。每个包含多个队列条目512的多个队列130(图2),包含关于存取高速缓冲的传输和旁路高速缓冲的传输(例如,不可高速缓冲的加载)的瞬时传输状态信息。多个检测器520监视多个队列条目512的一个或多个可能的不足、活锁或死锁状况。多个恢复逻辑模块530被分布在微处理器中。当检测器520检测到可能的不足、活锁或死锁状况时,它与最近的恢复逻辑模块530通信它的状况(例如,“ImHung(我被暂停)”信号)。当耦接的检测器520识别到可能的不足、活锁或死锁状况时,每个恢复逻辑模块530(其在一个实施例中组成有限状态机)被配置为实现一个或多个局部恢复例程535。
在一个实施例中,请求仲裁到末层高速缓冲标签管140中的每个队列条目512与相应检测器520相关联。还有在一个实施例中,检测器520包括饱和的计数器。配置逻辑550被提供来指定一个或多个条件550来计数。
在一个实施例中,当相关联的队列条目512被新分配时,分布式暂停逻辑架构500被配置为重置每个饱和的计数器,并且每当相关联的队列条目512被重新执行时,就增加饱和计数器。在第二实施例中,每当相关联的队列条目请求仲裁,但是不给予仲裁时,每个饱和计数器增加。在第三实施例中,每当相关联的队列条目在请求仲裁之前等待某种外部刺激时,每个饱和计数器增加。在第四实施例中,每个饱和计数器在可配置的阈值饱和。
分布式暂停逻辑架构500还包括中央恢复逻辑540,该中央恢复逻辑540在一个实施例中也是有限状态机。当恢复逻辑模块530被检测器520通知可能的不足、活锁或死锁状况时,恢复逻辑模块530与中央恢复逻辑540通信。中央恢复逻辑540响应性地指令多个恢复逻辑模块530的每个执行一个或多个它们自己的局部恢复例程。
恢复例程535被配置为处理来自相关联的队列条目的仲裁请求以便尝试解决检测到的暂停。图13是提供给恢复逻辑540的恢复例程560的集合的一个实施例的框图。
一个恢复例程562包括透过系统地阻挡仲裁请求来将鼓泡(bubble)插入到标签管线中。第二恢复例程564包括透过将它们的请求去资格(dequalify)来阻挡预定的请求队列条目的集合。第三恢复例程566包括透过使得相关联的队列条目将它们的仲裁请求去资格,来阻挡与没有设置可能的不足、活锁或死锁状况的检测器相关联的所有请求者。第四恢复例程568包括循环的请求去资格,其中来自个别的队列或队列条目的对于仲裁的请求仅仅被允许连续地进行。在一个实施例中,恢复逻辑执行一个恢复例程,并且在执行下一个恢复例程之前重新检查暂停条件。然而,除非在权利要求中如此指定,否则本发明不将这些恢复例程限制于任何特定的恢复例程的集合,或者恢复例程的任何特定的排序。
虽然已经在此描述了本发明的各种实施例,但是应该理解,它们已经作为示例被呈现,而非限制。对于相关计算机领域的技术人员来说将显然的是,在此可以进行形式和细节上的各种改变而不脱离本发明的范围。例如,软件可以使能在此描述的装置和方法的功能、制作、建模、模拟、描述和/或测试。这可以通过使用以下来完成:通用编程语言(例如,C、C++)、硬件描述语言(HDL)(包括Verilog HDL、VHDL等)或者其它可用程序。这样的软件可以被部署在任何已知的计算机可用介质中,诸如磁带、半导体、磁盘或光盘(例如,CD-ROM、DVD-ROM等)、网络、有线、无线或其它通信介质。在此描述的装置和方法的实施例可以被包括在半导体知识产权核心中,诸如微处理器核心(例如,嵌入的,或专用的,用HDL),并且在集成电路的生产中被转换成硬件。另外,在此描述的装置和方法可以被具体化为硬件和软件的组合。因而,本发明不应该被在此描述的任何示范性实施例所限制,而是应该仅根据所附的权利要求及其等价物来定义。具体地,本发明可以在可以用在通用计算机中的微处理器设备之内被实现。最后,本领域技术人员应该理解,他们可以容易地使用所公开的构思和特定实施例作为设计和修改用于实行本发明的相同目的的其它结构的基础,而不脱离由所附权利要求定义的本发明的范围。

Claims (20)

1.一种微处理器,包括:
高速缓冲,包括标签阵列;
标签管线,其仲裁对标签阵列的存取;以及
模式检测器,该模式检测器包括:
快照捕捉逻辑,其捕捉标签管arb的快照,其中标签管arb是存取标签阵列的传输;
多个可配置寄存器模块,可操作以存储用户配置的快照模式;以及
配置逻辑,其使得用户能够为每个可配置寄存器模块指定用于模式检测器检测的标签管arb的属性;
可配置逻辑还使得用户能够指定可配置的寄存器模块之间的一个或多个从属关系;
其中模式检测器被配置为检测匹配用户指定的属性以及在可配置寄存器模块中阐述的从属关系的arb的模式。
2.如权利要求1所述的微处理器,其中快照俘获逻辑获得关于标签管arb是加载、监听、存储还是其它arb类型的信息。
3.如权利要求1所述的微处理器,其中快照捕捉逻辑获得关于标签管arb被完成还是重新执行的信息。
4.如权利要求1所述的微处理器,其中每个寄存器模块可操作来被触发,并且向其它寄存器模块的每个提供指示它的触发状态的信号。
5.如权利要求1所述的微处理器,其中第一寄存器模块被配置为一旦满足一个或多个预定条件则处于触发状态。
6.如权利要求5所述的微处理器,其中所述一个或多个预定条件中的一个是检测到满足用户指定的关于第一寄存器模块的属性的标签管arb或者标签管arb的模式。
7.如权利要求6所述的微处理器,其中如果第一寄存器模块被指定为从属于第二寄存器模块,那么另外的预定条件是第二寄存器模块处于触发状态。
8.如权利要求7所述的微处理器,其中:
配置逻辑使得用户能够为第二寄存器模块可选地指定和配置超时时段,其中当第二寄存器模块指示它处于触发状态时,超时时段开始;以及
在超时时段期满之后,模式检测器可操作来禁止第一寄存器模块进入触发状态。
9.如权利要求1所述的微处理器,其中快照捕捉逻辑被耦接到标签管线的级,通过该点已经确定arb是否要重新执行、完成以及/或者要求其它队列推入。
10.如权利要求1所述的微处理器,其中模式检测器被配置为:如果没有其它寄存器模块以其为条件的寄存器模块进入触发状态,则触发信息存储例程或恢复例程。
11.一种在具有高速缓冲的微处理器中检测arb的模式的方法,其中高速缓冲包括标签阵列、仲裁对标签阵列的存取的标签管线以及模式检测器,所述方法包括:
捕捉标签管arb的快照,其中标签管arb是存取标签阵列的传输;
将用户配置的快照模式存储在多个可配置的寄存器模块中;
为每个可配置的寄存器模块指定用于模式检测器检测的标签管arb的属性;以及
指定可配置的寄存器模块之间的一个或多个从属关系。
12.如权利要求11所述的方法,其中快照包括关于标签管arb是加载、监听、存储还是其它arb类型的信息。
13.如权利要求11所述的方法,其中快照包括关于标签管arb被完成还是重新执行的信息。
14.如权利要求11所述的方法,还包括向从属于它的每个其它的寄存器模块提供指示寄存器模块的触发状态的信号。
15.如权利要求11所述的方法,还包括一旦满足一个或多个预定的条件,则将寄存器模块中的第一个配置为处于触发状态。
16.如权利要求15所述的方法,其中所述一个或多个预定条件中的一个是满足为第一寄存器模块指定的属性的标签管arb或者标签管arb的模式。
17.如权利要求16所述的方法,还包括将第一寄存器模块指定为从属于第二寄存器模块,其中另外的预定条件是第二寄存器模块处于触发状态。
18.如权利要求17所述的方法,进一步包括:
为第二寄存器模块配置超时时段,其中当第二寄存器模块指示它处于触发状态时,超时时段开始;
并且在超时时段期满之后,禁止第一寄存器模块进入触发状态。
19.如权利要求11所述的方法,还包括如果没有其它寄存器模块以其为条件的寄存器模块进入触发状态,则触发信息存储例程或恢复例程。
20.一种计算机程序产品,被编码在与计算设备使用的至少一个非瞬时性计算机可读介质中,该计算机程序产品包括:
嵌入在所述介质中的计算机可读程序代码,用于指定具有如下的微处理器:
高速缓冲,包括标签阵列;
标签管线,其仲裁对标签阵列的存取;以及
模式检测器,该模式检测器包括:
快照捕捉逻辑,其捕捉标签管arb的快照,其中标签管arb是存取标签阵列的传输;
多个可配置寄存器模块,可操作以存储用户配置的快照模式;以及
配置逻辑,其使得用户能够为每个可配置寄存器模块指定用于模式检测器检测的标签管arb的属性;
可配置逻辑还使得用户能够指定可配置的寄存器模块之间的一个或多个从属关系;
其中模式检测器被配置为检测匹配用户指定的属性以及在可配置寄存器模块中阐述的从属关系的arb的模式。
CN201480070694.4A 2014-12-13 2014-12-13 一种微处理器及在其中检测arb的模式的方法 Active CN105934743B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2014/003181 WO2016092346A1 (en) 2014-12-13 2014-12-13 Conditional pattern detector for detecting hangs

Publications (2)

Publication Number Publication Date
CN105934743A true CN105934743A (zh) 2016-09-07
CN105934743B CN105934743B (zh) 2019-06-04

Family

ID=56106782

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480070694.4A Active CN105934743B (zh) 2014-12-13 2014-12-13 一种微处理器及在其中检测arb的模式的方法

Country Status (3)

Country Link
US (1) US9753799B2 (zh)
CN (1) CN105934743B (zh)
WO (1) WO2016092346A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157353A (zh) * 2021-04-19 2021-07-23 河南科技大学 一种有限状态自动机的状态锁的检测方法及系统

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016092344A1 (en) 2014-12-13 2016-06-16 Via Alliance Semiconductor Co., Ltd. Pattern detector for detecting hangs
WO2016092345A1 (en) 2014-12-13 2016-06-16 Via Alliance Semiconductor Co., Ltd. Logic analyzer for detecting hangs
CN105980978B (zh) 2014-12-13 2019-02-19 上海兆芯集成电路有限公司 用于检测暂停的逻辑分析器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6543002B1 (en) * 1999-11-04 2003-04-01 International Business Machines Corporation Recovery from hang condition in a microprocessor
US7051131B1 (en) * 2002-12-27 2006-05-23 Unisys Corporation Method and apparatus for recording and monitoring bus activity in a multi-processor environment
US20090077425A1 (en) * 2007-09-13 2009-03-19 Michael Gschwind Method and Apparatus for Detection of Data Errors in Tag Arrays
US8103833B2 (en) * 2007-09-04 2012-01-24 Freescale Semiconductor, Inc. Cache memory and a method for servicing access requests
CN103268276A (zh) * 2012-03-29 2013-08-28 威盛电子股份有限公司 微处理器及微处理器死锁或活锁状态解除方法

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61233849A (ja) 1985-04-08 1986-10-18 Hitachi Ltd デ−タベ−ス排他制御方法
US5692152A (en) 1994-06-29 1997-11-25 Exponential Technology, Inc. Master-slave cache system with de-coupled data and tag pipelines and loop-back
US5987561A (en) 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US5848287A (en) 1996-02-20 1998-12-08 Advanced Micro Devices, Inc. Superscalar microprocessor including a reorder buffer which detects dependencies between accesses to a pair of caches
US6490658B1 (en) 1997-06-23 2002-12-03 Sun Microsystems, Inc. Data prefetch technique using prefetch cache, micro-TLB, and history file
US6073199A (en) 1997-10-06 2000-06-06 Cisco Technology, Inc. History-based bus arbitration with hidden re-arbitration during wait cycles
US6553512B1 (en) 2000-02-16 2003-04-22 Hewlett Packard Development Company, L.P. Method and apparatus for resolving CPU deadlocks
US6904431B2 (en) 2002-01-25 2005-06-07 Openwave Systems Inc. Algorithm for dynamic selection of data locking granularity
US7028166B2 (en) 2002-04-30 2006-04-11 Advanced Micro Devices, Inc. System and method for linking speculative results of load operations to register values
US7000047B2 (en) 2003-04-23 2006-02-14 International Business Machines Corporation Mechanism for effectively handling livelocks in a simultaneous multithreading processor
US7496918B1 (en) 2004-06-01 2009-02-24 Sun Microsystems, Inc. System and methods for deadlock detection
US7508836B2 (en) 2004-12-01 2009-03-24 Arm Limited Data processing apparatus and method for handling transactions
US7343476B2 (en) 2005-02-10 2008-03-11 International Business Machines Corporation Intelligent SMT thread hang detect taking into account shared resource contention/blocking
US7873795B2 (en) 2005-03-22 2011-01-18 Hewlett-Packard Development Company, L.P. Multi-process support in a shared register
US7627807B2 (en) 2005-04-26 2009-12-01 Arm Limited Monitoring a data processor to detect abnormal operation
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
US20080091883A1 (en) 2006-10-12 2008-04-17 International Business Machines Corporation Load starvation detector and buster
US7657693B2 (en) 2007-09-28 2010-02-02 Intel Corporation Router to use three levels of arbitration for a crossbar channel
JP4888839B2 (ja) 2008-10-03 2012-02-29 日本電気株式会社 キャッシュメモリを備えるベクトル計算機システム、及びその動作方法
US8660816B2 (en) 2009-05-07 2014-02-25 Oracle International Corporation Method, system, and computer program product for determining a hang state and distinguishing a hang state from an idle state
US8789173B2 (en) 2009-09-03 2014-07-22 Juniper Networks, Inc. Protecting against distributed network flood attacks
US8977730B2 (en) 2010-11-18 2015-03-10 International Business Machines Corporation Method and system for reducing message passing for contention detection in distributed SIP server environments
JP2012198803A (ja) 2011-03-22 2012-10-18 Fujitsu Ltd 演算処理装置及び演算処理方法
JP2012209755A (ja) 2011-03-29 2012-10-25 Fujitsu Ltd 演算回路及び2進数の変換方法
US9336125B2 (en) * 2011-08-24 2016-05-10 University Of Washington Through Its Center For Commercialization Systems and methods for hardware-assisted type checking
US9298469B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Management of multiple nested transactions
US9026705B2 (en) 2012-08-09 2015-05-05 Oracle International Corporation Interrupt processing unit for preventing interrupt loss
US9052911B2 (en) 2012-08-14 2015-06-09 Oracle International Corporation Mechanism for consistent core hang detection in a a processor core
US9129071B2 (en) 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
WO2016092344A1 (en) 2014-12-13 2016-06-16 Via Alliance Semiconductor Co., Ltd. Pattern detector for detecting hangs
WO2016092345A1 (en) 2014-12-13 2016-06-16 Via Alliance Semiconductor Co., Ltd. Logic analyzer for detecting hangs
CN105980978B (zh) 2014-12-13 2019-02-19 上海兆芯集成电路有限公司 用于检测暂停的逻辑分析器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6543002B1 (en) * 1999-11-04 2003-04-01 International Business Machines Corporation Recovery from hang condition in a microprocessor
US7051131B1 (en) * 2002-12-27 2006-05-23 Unisys Corporation Method and apparatus for recording and monitoring bus activity in a multi-processor environment
US8103833B2 (en) * 2007-09-04 2012-01-24 Freescale Semiconductor, Inc. Cache memory and a method for servicing access requests
US20090077425A1 (en) * 2007-09-13 2009-03-19 Michael Gschwind Method and Apparatus for Detection of Data Errors in Tag Arrays
CN103268276A (zh) * 2012-03-29 2013-08-28 威盛电子股份有限公司 微处理器及微处理器死锁或活锁状态解除方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157353A (zh) * 2021-04-19 2021-07-23 河南科技大学 一种有限状态自动机的状态锁的检测方法及系统

Also Published As

Publication number Publication date
US20160350167A1 (en) 2016-12-01
WO2016092346A1 (en) 2016-06-16
CN105934743B (zh) 2019-06-04
US9753799B2 (en) 2017-09-05

Similar Documents

Publication Publication Date Title
CN105849705B (zh) 用于检测暂停的逻辑分析器
Ghose et al. Improving memory scheduling via processor-side load criticality information
CN103299273B (zh) 数据处理装置的追踪
US8103910B2 (en) Local rollback for fault-tolerance in parallel computing systems
US20130297912A1 (en) Apparatus and method for dynamic allocation of execution queues
CN104750459B (zh) 带有事务功能以及报告事务操作的日志记录电路的处理器
CN107851020A (zh) 用于指令存储器效率的设备和处理架构
WO2005020067A2 (en) Multi-core multi-thread processor
CN105934743A (zh) 用于检测暂停的逻辑分析器
CN105980978B (zh) 用于检测暂停的逻辑分析器
CN110869914B (zh) 硬件预取器的基于利用率的节流
CN104156197A (zh) 微处理器以及微处理器操作方法
CN107003894A (zh) 用于硬件事务内存程序的剖析器的装置和方法
CN105980979B (zh) 用于检测暂停的逻辑分析器
Li et al. Inter-core locality aware memory scheduling
CN104050051B (zh) 一种星载计算机的故障诊断方法
CN114091384A (zh) 数据处理电路及人工智能芯片、数据处理方法和装置
CN101211280B (zh) 用于异步控制转移的方法、设备和系统
CN101587434A (zh) 在推测多线程计算系统中处理访存请求的方法及其设备
Dublish Managing the memory hierarchy in GPUs
CN115408060A (zh) 流水线请求顺序与时序的控制方法、处理器、装置及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.

CP03 Change of name, title or address