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

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

Info

Publication number
CN105849705A
CN105849705A CN201480070698.2A CN201480070698A CN105849705A CN 105849705 A CN105849705 A CN 105849705A CN 201480070698 A CN201480070698 A CN 201480070698A CN 105849705 A CN105849705 A CN 105849705A
Authority
CN
China
Prior art keywords
arb
depositor
microprocessor
label tube
tag
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
CN201480070698.2A
Other languages
English (en)
Other versions
CN105849705B (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 CN105849705A publication Critical patent/CN105849705A/zh
Application granted granted Critical
Publication of CN105849705B publication Critical patent/CN105849705B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency 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/0846Cache with multiple tag or data arrays being simultaneously accessible
    • 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
    • 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/0877Cache access modes
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/466Transaction processing
    • G06F9/467Transactional memory
    • 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/524Deadlock detection or avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache

Landscapes

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

Abstract

一种微处理器,包括:高速缓冲,包括标签阵列;标签管线,其仲裁对标签阵列的存取;以及模式检测器。模式检测器包括:寄存器;解码器,其解码通过标签管线的标签管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累加到寄存器中。
微处理器在用户可配置数量的时钟周期之后,或者在用户所配置数量的有效传输已经通过标签管之后,周期性地清除寄存器。在清除寄存器之前,模式检测器将在那个时段内累加到寄存器中的业务历史存储为存储的模式。
模式检测器还可以被配置为比较存储的业务历史与先前存储的业务历史,来检测暗示暂停状况的模式,并且如果存储的历史满足一个或多个预定的条件,则触发恢复例程。所述一个或多个预定的条件之一可以是计数的重新执行的数量与计数的完成的数量相比,超过一个或多个阈值。替换地或者另外,所述一个或多个预定的条件之一可以是在最近的时段内计数的重新执行的数量近似等于下一个最近的时段内计数的重新执行的数量。
本发明还可以用很多其它形式来表示,其中一些形式可以比上面表示的形式更宽。因此,不应该假设上面表示的形式反映本发明在权利要求中所表示的形式。
附图说明
图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 (22)

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的历史。
CN201480070698.2A 2014-12-13 2014-12-13 用于检测暂停的逻辑分析器 Active CN105849705B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2014/003149 WO2016092344A1 (en) 2014-12-13 2014-12-13 Pattern detector for detecting hangs

Publications (2)

Publication Number Publication Date
CN105849705A true CN105849705A (zh) 2016-08-10
CN105849705B CN105849705B (zh) 2019-06-04

Family

ID=56106780

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480070698.2A Active CN105849705B (zh) 2014-12-13 2014-12-13 用于检测暂停的逻辑分析器

Country Status (5)

Country Link
US (1) US9946651B2 (zh)
EP (1) EP3047380B1 (zh)
KR (1) KR101890021B1 (zh)
CN (1) CN105849705B (zh)
WO (1) WO2016092344A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108052296A (zh) * 2017-12-30 2018-05-18 惠龙易通国际物流股份有限公司 一种数据读取方法、设备及计算机存储介质
CN114035970A (zh) * 2022-01-10 2022-02-11 南京云信达科技有限公司 一种数据并发竞争冲突检测分析方法及系统

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753799B2 (en) 2014-12-13 2017-09-05 Via Alliance Semiconductor Co., Ltd. Conditional pattern detector for detecting hangs
US10324842B2 (en) 2014-12-13 2019-06-18 Via Alliance Semiconductor Co., Ltd Distributed hang recovery logic
CN105980979B (zh) 2014-12-13 2018-11-20 上海兆芯集成电路有限公司 用于检测暂停的逻辑分析器
US11030018B2 (en) 2017-12-05 2021-06-08 International Business Machines Corporation On-demand multi-tiered hang buster for SMT microprocessor
EP3935500A1 (en) * 2019-03-06 2022-01-12 Live Nation Entertainment, Inc. Systems and methods for queue control based on client-specific protocols
US20240111684A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Multi-level starvation widget

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553512B1 (en) * 2000-02-16 2003-04-22 Hewlett Packard Development Company, L.P. Method and apparatus for resolving CPU deadlocks
CN102103568A (zh) * 2011-01-30 2011-06-22 中国科学院计算技术研究所 片上多核处理器系统的高速缓存一致性协议的实现方法
CN103268276A (zh) * 2012-03-29 2013-08-28 威盛电子股份有限公司 微处理器及微处理器死锁或活锁状态解除方法

Family Cites Families (49)

* 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 デ−タベ−ス排他制御方法
US5301333A (en) * 1990-06-14 1994-04-05 Bell Communications Research, Inc. Tree structured variable priority arbitration implementing a round-robin scheduling policy
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
US6543002B1 (en) 1999-11-04 2003-04-01 International Business Machines Corporation Recovery from hang condition in a microprocessor
JP2001243070A (ja) * 2000-02-29 2001-09-07 Toshiba Corp プロセッサ及び分岐予測方法並びにコンパイル方法
US6697904B1 (en) * 2000-03-28 2004-02-24 Intel Corporation Preventing starvation of agents on a bus bridge
US20020169935A1 (en) * 2001-05-10 2002-11-14 Krick Robert F. System of and method for memory arbitration using multiple queues
US6918021B2 (en) * 2001-05-10 2005-07-12 Hewlett-Packard Development Company, L.P. System of and method for flow control within a tag pipeline
US6915396B2 (en) * 2001-05-10 2005-07-05 Hewlett-Packard Development Company, L.P. Fast priority determination circuit with rotating priority
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
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US7051131B1 (en) 2002-12-27 2006-05-23 Unisys Corporation Method and apparatus for recording and monitoring bus activity in a multi-processor environment
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
US7590825B2 (en) * 2006-03-07 2009-09-15 Intel Corporation Counter-based memory disambiguation techniques for selectively predicting load/store conflicts
US9304773B2 (en) * 2006-03-21 2016-04-05 Freescale Semiconductor, Inc. Data processor having dynamic control of instruction prefetch buffer depth and method therefor
TW200742452A (en) * 2006-04-26 2007-11-01 Avermedia Tech Inc Video storage and playback system and signal pickup method of the same
US7826399B2 (en) * 2006-06-27 2010-11-02 International Business Machines Corporation Structure for preventing starvation in a slotted ring data communications network
US7760669B2 (en) * 2006-06-27 2010-07-20 International Business Machines Corporation Method and apparatus for preventing starvation in a slotted ring data communications network
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
US8103833B2 (en) 2007-09-04 2012-01-24 Freescale Semiconductor, Inc. Cache memory and a method for servicing access requests
US7752505B2 (en) 2007-09-13 2010-07-06 International Business Machines Corporation Method and apparatus for detection of data errors in tag arrays
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
US8769357B1 (en) * 2009-07-23 2014-07-01 Gidel Ltd. System and method for evaluation of a field programmable gate array (FPGA)
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
US9753799B2 (en) 2014-12-13 2017-09-05 Via Alliance Semiconductor Co., Ltd. Conditional pattern detector for detecting hangs
US10324842B2 (en) 2014-12-13 2019-06-18 Via Alliance Semiconductor Co., Ltd Distributed hang recovery logic
CN105980979B (zh) 2014-12-13 2018-11-20 上海兆芯集成电路有限公司 用于检测暂停的逻辑分析器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6553512B1 (en) * 2000-02-16 2003-04-22 Hewlett Packard Development Company, L.P. Method and apparatus for resolving CPU deadlocks
CN102103568A (zh) * 2011-01-30 2011-06-22 中国科学院计算技术研究所 片上多核处理器系统的高速缓存一致性协议的实现方法
CN103268276A (zh) * 2012-03-29 2013-08-28 威盛电子股份有限公司 微处理器及微处理器死锁或活锁状态解除方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108052296A (zh) * 2017-12-30 2018-05-18 惠龙易通国际物流股份有限公司 一种数据读取方法、设备及计算机存储介质
CN108052296B (zh) * 2017-12-30 2021-02-19 惠龙易通国际物流股份有限公司 一种数据读取方法、设备及计算机存储介质
CN114035970A (zh) * 2022-01-10 2022-02-11 南京云信达科技有限公司 一种数据并发竞争冲突检测分析方法及系统
CN114035970B (zh) * 2022-01-10 2022-04-22 南京云信达科技有限公司 一种数据并发竞争冲突检测分析方法及系统

Also Published As

Publication number Publication date
CN105849705B (zh) 2019-06-04
KR20160086762A (ko) 2016-07-20
KR101890021B1 (ko) 2018-09-20
US9946651B2 (en) 2018-04-17
EP3047380A1 (en) 2016-07-27
US20160350224A1 (en) 2016-12-01
EP3047380A4 (en) 2017-07-19
EP3047380B1 (en) 2019-04-24
WO2016092344A1 (en) 2016-06-16

Similar Documents

Publication Publication Date Title
CN105849705A (zh) 用于检测暂停的逻辑分析器
Ghose et al. Improving memory scheduling via processor-side load criticality information
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
CN105980978B (zh) 用于检测暂停的逻辑分析器
US8103910B2 (en) Local rollback for fault-tolerance in parallel computing systems
JP5615927B2 (ja) データストリームのためのストアアウェアプリフェッチ
US20130297912A1 (en) Apparatus and method for dynamic allocation of execution queues
CN110869914B (zh) 硬件预取器的基于利用率的节流
CN104750459B (zh) 带有事务功能以及报告事务操作的日志记录电路的处理器
EP1660992A2 (en) Multi-core multi-thread processor
CN107003896B (zh) 具有共享事务处理资源的装置和数据处理方法
CN105934743B (zh) 一种微处理器及在其中检测arb的模式的方法
CN104156197A (zh) 微处理器以及微处理器操作方法
CN101401071A (zh) 利用存储和预留指令执行高速缓存线轮询操作的方法、系统、设备和产品
CN105980979B (zh) 用于检测暂停的逻辑分析器
CN114091384A (zh) 数据处理电路及人工智能芯片、数据处理方法和装置
CN101587434A (zh) 在推测多线程计算系统中处理访存请求的方法及其设备
CN117312190A (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