CN103003796B - 线程级推测中的动态数据同步 - Google Patents

线程级推测中的动态数据同步 Download PDF

Info

Publication number
CN103003796B
CN103003796B CN201180027637.4A CN201180027637A CN103003796B CN 103003796 B CN103003796 B CN 103003796B CN 201180027637 A CN201180027637 A CN 201180027637A CN 103003796 B CN103003796 B CN 103003796B
Authority
CN
China
Prior art keywords
dependence
sync bit
thread
whereabouts
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201180027637.4A
Other languages
English (en)
Other versions
CN103003796A (zh
Inventor
W·刘
吴友峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN103003796A publication Critical patent/CN103003796A/zh
Application granted granted Critical
Publication of CN103003796B publication Critical patent/CN103003796B/zh
Expired - Fee Related 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
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • 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

Landscapes

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

Abstract

在一个实施例中,本发明介绍一种推测引擎,用于通过从串行指令创建独立的线程并插入处理器指令,以在依赖源之前设置同步位,并在依赖源之后清除同步位来使串行指令并行化,其中该同步位被设计成停止依赖性去向在独立核上运行的线程。描述并要求保护其他的实施例。

Description

线程级推测中的动态数据同步
背景技术
在现代处理器中,通常具有多个能够并行执行的计算核。然而,很多顺序或串行的应用和程序不能有效地利用并行架构。线程级推测(Thread-level speculation TLS)是一种使顺序程序并行化的有希望的技术,其利用静态或动态编译器和硬件以便在错误推测发生时恢复。然而在依赖加载和存储指令之间没有适当同步的情况下,例如,加载可在存储之前执行并导致数据违背,这破坏推测线程并且需要对于重新加载的数据的重新执行。
附图简述
图1是根据本发明一个实施例的示例系统的框图。
图2是根据本发明一实施例的示例推测引擎的框图。
图3A和3B是根据本发明一实施例的示例软件代码的框图。
图4是根据本发明的一实施例的线程级推测中的动态数据同步的流程图。
图5是根据本发明实施例的系统的框图。
详细描述
在各实施例中,引入具有推测高速缓存的处理器,该推测高速缓存具有同步位,该同步位被设置时可使高速缓存线或字的读取停止。本领域的技术人员将意识到这可防止错误的推测和相关的被破化线程的无效。还介绍了设置和清除同步位的处理器指令。编译器可利用这些指令来同步数据依赖性。本发明旨在实施在可包括附加并行和/或线程推测特征的处理器和系统中。
现在参见图1,所示为根据本发明的一个实施例的示例系统的框图。如图1所示,系统100可包括处理器102和存储器104,诸如动态随机存取存储器(DRAM)。处理器102可包括核106-110、推测高速缓存112和推测引擎118。核106-110能够彼此独立地执行指令且可包括任意类型的架构。尽管被示为包括三个核,然而处理器102可具有任意数量的核且可包括未示出的其它组件或控制器。在一个实施例中,处理器102是芯片上系统(SOC)。
推测高速缓存112可包括任意数量的独立高速缓存且可包含任意数量的实体。尽管期望作为低等待时间一级高速缓存,然而推测高速缓存112可在任意架构级下以任意存储器技术来实现。推测高速缓存112包括与高速缓存线或字116相关联的同步位114。当同步位114被设置时,如下文更详细描述的,线或字116可能不能被核加载,因为例如另一个核可能要执行加载依赖的存储。在一个实施例中,当同步位114被设置时试图从高速缓存线或字116加载的核将停止直到同步位114被清除。
推测引擎118可实现用于线程级推测中的动态数据同步的方法,例如参考图4描述的,且可具有参考图2描述的架构。推测引擎118可与处理器102分离且可被实现为硬件、软件或硬件和软件的组合。
现在参见图2,所示为根据本发明的一实施例的示例推测引擎的框图。如图2所示,推测引擎118可包括并行化服务202、并行输出代码204和串行输入代码206。并行化服务202可提供推测引擎118,具有使串行指令并行化并在线程级推测中增加动态数据同步的能力。
并行化服务202可包括线程服务208、同步集服务210和同步清除服务212,其可分别从串行指令创建并行线程、插入处理器指令以在依赖性来源(dependence source)之前设置同步位、并插入处理器指令以在依赖性来源之后清除同步位。并行化服务202可从串行输入代码206(例如如图3A所示)创建并行输出代码204(例如如图3B所示)。
现在参考图3A和3B,示出的是根据本发明一实施例的示例软件代码的框图。如图3A所示,顺序指令300包括串行前进的各种加载和存储,且旨在由处理器的单个核执行。顺序指令300可用作推测引擎118的串行输入代码206。如图3B所示,并行指令302可表示推测引擎118的并行输出代码204。线程304-308能够由核106-110单独地执行。
线程304-308可各自包括处理器指令(例如,标记_通信_地址mark_comm_addr),该指令在被执行时在诸如存储指令之类的依赖性来源之前设置关于特定高速缓存线或字116的同步位114。线程304-308还可各自包括对应的处理器指令(例如,清除_通信_地址clear_comm_addr),该指令在被执行时在依赖性来源之后清除同步位114。可在线程304和308中看到数据依赖的示例,其中依赖性去向(dependence sink)将要等待依赖性来源完成并清除同步位。在这种情况下,加载310将停止线程308的前进直到存储312完成且线程304清除相关联的同步位。
现在参考图4,示出根据本发明的一实施例的线程级推测中的动态数据同步的流程图。如图4所示,方法开始于从串行指令创建(402)并行线程。在一个实施例中,线程服务208被调用以从顺序指令300生成并行指令302。在另一个实施例中,所生成的线程(304-308)的数量至少部分地基于处理器中核(106-110)的数量。
该方法继续,插入(404)处理器指令以设置和清除同步位。在一个实施例中,当生成地址时,同步设置服务210在依赖性来源或潜在的依赖性来源之前的早期点将指令(标记_通信_地址)插入线程304-308。在另一个实施例中,同步清除服务212在依赖性来源或潜在的依赖性来源之后将指令(清除_通信_地址)插入线程304-308。
该方法以在多核处理器的核上执行(406)并行线程结束。在一个实施例中,线程304-308分别在核106-110上执行。在一个实施例中,核110的执行可停止在加载310上,直到同步位114被核106上执行的线程304清除为止。
各实施例可在许多不同的系统类型中实现。现在参见图5,所示为根据本发明实施例的系统的框图。如图5所示,多处理器系统500是点对点互连系统,并且包括经由点对点互连550耦合的第一处理器570和第二处理器580。如图5所示,处理器570和580中的每一个都可以是多核处理器,包括第一和第二处理器核(即,处理器核574a与574b以及处理器核584a与584b)。每个处理器可包括根据本发明的实施例的动态数据同步线程级推测硬件、软件和固件。
仍参考图5,第一处理器570还包括存储器控制器中枢(MCH)572与点对点(P-P)接口576和578。类似地,第二处理器580包括MCH 582与P-P接口586和588。如图5所示,MCH 572和582将各处理器耦合到相应的存储器,即存储器532和存储器534,这些存储器可以是主存储器(例如,动态随机存取存储器(DRAM))的本地附连到相应处理器的部分,其中的每一个可包括根据本发明的一个实施例的扩展页表。第一处理器570和第二处理器580可分别经由P-P互连552和554耦合到芯片组590。如图5所示,芯片组590包括P-P接口594和598。
此外,芯片组590包括将芯片组592与高性能图形引擎538耦合的接口590。接着,芯片组590可经由接口596耦合到第一总线516。如图5所示,各种I/O设备514可连同总线桥518一起耦合到第一总线516,总线桥518将第一总线516耦合到第二总线520。各种设备可被耦合到第二总线520,这些设备包括例如键盘/鼠标522、通信设备526以及诸如磁盘驱动器或其它大容量存储设备之类的数据储存器单元528,在一个实施例中该数据储存器单元可包括代码530。此外,音频I/O 524可耦合到第二总线520。
各实施例可以用代码实现,并可存储在其上存储有指令的存储介质上,这些指令可用来对系统编程以执行这些指令。存储介质可包括但不限于任何类型的磁盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘,半导体器件,比如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM),磁卡或光卡,或适于存储电子指令的任何其它类型的介质。
尽管本发明已针对有限数量的实施例作了描述,然而本领域技术人员将会从其中领会到许多修改和变型。所附权利要求旨在覆盖所有这样的修改和变型,只要其落在本发明的真实精神和范围内。

Claims (17)

1.一种用于线程级推测中的动态数据同步的系统,包括:
存储介质,以及
访问机器,所述访问机器用于:
在多核处理器的单独核中执行指令;
在包含依赖源的第一线程中通过执行处理器指令以在依赖性来源之前在推测高速缓存中设置同步位,所述推测高速缓存的所述同步位被设置时使高速缓存线或字的读取停止;
在所述依赖性来源之后通过执行处理器指令清除所述同步位;以及
在包含依赖性去向的第二线程中,如果和所述依赖性去向中的数据相关联的同步位被设置,则等待访问所述数据。
2.如权利要求1所述的系统,其特征在于,所述依赖性去向包括加载指令。
3.如权利要求1所述的系统,其特征在于,所述依赖性去向包括存储指令。
4.如权利要求1所述的系统,其特征在于,与所述数据相关联的所述同步位包括高速缓存线位。
5.如权利要求1所述的系统,其特征在于,与所述数据相关联的所述同步位包括高速缓存字位。
6.如权利要求1所述的系统,其特征在于,用于通过执行处理器指令设置同步位的内容包括用于在生成依赖性来源地址时设置同步位的内容。
7.一种系统,包括:
处理器,其包括用于执行指令的第一核和第二核;
推测高速缓存,用于存储用于所述处理器的数据和指令,所述推测高速缓存包括同步位以指示相关联的数据是否经受依赖性来源,并且当同步位被设置时,通过使高速缓存线或字的读取停止,从而停止依赖性去向的操作;
耦合到所述处理器的动态随机存取存储器DRAM,所述DRAM存储串行指令;以及
推测引擎,所述推测引擎用于使串行指令并行化,所述并行化包括从串行指令创建独立线程,并在所述线程中插入处理器指令以在依赖性来源之前设置同步位,
所述推测引擎还用于插入相应的处理器指令以在依赖性来源之后清除所述同步位,
其中,在包含依赖性去向的线程中,如果和依赖性去向中的数据相关联的同步位被设置,则等待访问所述数据。
8.如权利要求7所述的系统,其特征在于,所述依赖性来源包括存储指令。
9.如权利要求7所述的系统,其特征在于,所述依赖性去向包括加载指令。
10.如权利要求7所述的系统,其特征在于,所述同步位包括高速缓存线位。
11.如权利要求7所述的系统,其特征在于,所述同步位包括高速缓存字位。
12.一种由专门的推测引擎执行的方法,包括:
从串行指令集创建数个并行化线程;
在所述并行化线程中插入处理器指令,以在依赖性来源之前设置同步位,并在依赖性来源之后清除所述同步位,其中所述同步位被设计成在被设置时,通过使高速缓存线或字的读取停止,从而停止依赖性去向;以及
在多核处理器的数个核上执行所述数个并行化线程,其中,在执行包含依赖性去向的并行化线程时,如果和依赖性去向中的数据相关联的同步位被设置,则等待访问所述数据。
13.如权利要求12所述的方法,其特征在于,所述依赖性来源包括存储指令。
14.如权利要求12所述的方法,其特征在于,所述依赖性去向包括加载指令。
15.如权利要求12所述的方法,其特征在于,所述同步位包括高速缓存线位。
16.如权利要求12所述的方法,其特征在于,所述同步位包括高速缓存字位。
17.如权利要求12所述的方法,其特征在于,在所述并行化线程中插入处理器指令以在依赖性来源之前设置同步位包括插入处理器指令以在生成依赖性来源地址时设置同步位。
CN201180027637.4A 2010-06-29 2011-06-27 线程级推测中的动态数据同步 Expired - Fee Related CN103003796B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/826,287 2010-06-29
US12/826,287 US20110320781A1 (en) 2010-06-29 2010-06-29 Dynamic data synchronization in thread-level speculation
PCT/US2011/042040 WO2012006030A2 (en) 2010-06-29 2011-06-27 Dynamic data synchronization in thread-level speculation

Publications (2)

Publication Number Publication Date
CN103003796A CN103003796A (zh) 2013-03-27
CN103003796B true CN103003796B (zh) 2017-08-25

Family

ID=45353688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180027637.4A Expired - Fee Related CN103003796B (zh) 2010-06-29 2011-06-27 线程级推测中的动态数据同步

Country Status (8)

Country Link
US (1) US20110320781A1 (zh)
EP (1) EP2588959A4 (zh)
JP (1) JP2013527549A (zh)
KR (1) KR101460985B1 (zh)
CN (1) CN103003796B (zh)
AU (1) AU2011276588A1 (zh)
TW (1) TWI512611B (zh)
WO (1) WO2012006030A2 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9697003B2 (en) * 2013-06-07 2017-07-04 Advanced Micro Devices, Inc. Method and system for yield operation supporting thread-like behavior
CN112130898A (zh) * 2019-06-24 2020-12-25 华为技术有限公司 一种插入同步指令的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101088075A (zh) * 2004-12-27 2007-12-12 英特尔公司 用于多核处理器中非一致性高速缓存的系统和方法
CN101449250A (zh) * 2006-05-30 2009-06-03 英特尔公司 用于高速缓存一致性协议的方法、装置及系统
US7930695B2 (en) * 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US6785803B1 (en) * 1996-11-13 2004-08-31 Intel Corporation Processor including replay queue to break livelocks
US6282637B1 (en) * 1998-12-02 2001-08-28 Sun Microsystems, Inc. Partially executing a pending atomic instruction to unlock resources when cancellation of the instruction occurs
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
WO2001061480A1 (en) 2000-02-14 2001-08-23 Intel Corporation Processor having replay architecture with fast and slow replay paths
US6862664B2 (en) * 2003-02-13 2005-03-01 Sun Microsystems, Inc. Method and apparatus for avoiding locks by speculatively executing critical sections
US7340569B2 (en) * 2004-02-10 2008-03-04 Wisconsin Alumni Research Foundation Computer architecture providing transactional, lock-free execution of lock-based programs
JP2005284749A (ja) * 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ
US7882339B2 (en) 2005-06-23 2011-02-01 Intel Corporation Primitives to enhance thread-level speculation
US7587555B2 (en) * 2005-11-10 2009-09-08 Hewlett-Packard Development Company, L.P. Program thread synchronization
US8719807B2 (en) * 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
EP2159702B1 (en) * 2007-06-20 2013-04-17 Fujitsu Limited Cache control device and control method
US8855138B2 (en) * 2008-08-25 2014-10-07 Qualcomm Incorporated Relay architecture framework
JP5320618B2 (ja) * 2008-10-02 2013-10-23 株式会社日立製作所 経路制御方法及びアクセスゲートウェイ装置
US8732407B2 (en) * 2008-11-19 2014-05-20 Oracle America, Inc. Deadlock avoidance during store-mark acquisition
CN101657028B (zh) * 2009-09-10 2011-09-28 新邮通信设备有限公司 一种建立s1接口连接的方法、设备及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101088075A (zh) * 2004-12-27 2007-12-12 英特尔公司 用于多核处理器中非一致性高速缓存的系统和方法
US7930695B2 (en) * 2006-04-06 2011-04-19 Oracle America, Inc. Method and apparatus for synchronizing threads on a processor that supports transactional memory
CN101449250A (zh) * 2006-05-30 2009-06-03 英特尔公司 用于高速缓存一致性协议的方法、装置及系统

Also Published As

Publication number Publication date
CN103003796A (zh) 2013-03-27
US20110320781A1 (en) 2011-12-29
JP2013527549A (ja) 2013-06-27
TW201229893A (en) 2012-07-16
AU2011276588A1 (en) 2013-01-10
WO2012006030A2 (en) 2012-01-12
TWI512611B (zh) 2015-12-11
WO2012006030A3 (en) 2012-05-24
KR101460985B1 (ko) 2014-11-13
EP2588959A4 (en) 2014-04-16
EP2588959A2 (en) 2013-05-08
KR20130040957A (ko) 2013-04-24

Similar Documents

Publication Publication Date Title
US9424009B2 (en) Handling pointers in program code in a system that supports multiple address spaces
US8570333B2 (en) Method and system for enabling managed code-based application program to access graphics processing unit
US8392669B1 (en) Systems and methods for coalescing memory accesses of parallel threads
US8436862B2 (en) Method and system for enabling managed code-based application program to access graphics processing unit
CN110427337B (zh) 基于现场可编程门阵列的处理器内核及其运行方法
US20110078418A1 (en) Support for Non-Local Returns in Parallel Thread SIMD Engine
CN105474183A (zh) 存储器管理
JP5391422B2 (ja) メモリ管理方法、計算機システム及びプログラム
CN103003796B (zh) 线程级推测中的动态数据同步
US20120216017A1 (en) Parallel computing apparatus and parallel computing method
TW201246068A (en) Methods and systems for mapping a function pointer to the device code
US7237043B2 (en) System for improving PCI write performance
CN113791822A (zh) 多内存通道的内存存取装置、方法和数据处理设备
US20100180101A1 (en) Method for Executing One or More Programs on a Multi-Core Processor and Many-Core Processor
TW201712534A (zh) 關於包括指令組的大小之指令組的資訊解碼
CN102375801A (zh) 一种多核处理器存储系统装置及方法
US20230185991A1 (en) Multi-processor simulation on a multi-core machine
JP2018507489A (ja) Tigersharc dspブート管理チップおよび方法
CN113791770B (zh) 代码编译器、代码编译方法、代码编译系统和计算机介质
US8694975B2 (en) Programming system in multi-core environment, and method and program of the same
WO2016201699A1 (zh) 指令处理方法及设备
CN112631955A (zh) 数据处理方法、装置、电子设备以及介质
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
EP2709003A1 (en) Loopback structure and data loopback processing method for processor
CN111522600B (zh) 一种在dsp上的异构计算框架构建方法及系统

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170825

Termination date: 20200627

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