CN105242962A - 基于异构众核的轻量级线程快速触发方法 - Google Patents

基于异构众核的轻量级线程快速触发方法 Download PDF

Info

Publication number
CN105242962A
CN105242962A CN201510828182.6A CN201510828182A CN105242962A CN 105242962 A CN105242962 A CN 105242962A CN 201510828182 A CN201510828182 A CN 201510828182A CN 105242962 A CN105242962 A CN 105242962A
Authority
CN
China
Prior art keywords
coprocessor
program
core
thread
isomery
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
CN201510828182.6A
Other languages
English (en)
Other versions
CN105242962B (zh
Inventor
沈莉
漆锋滨
李中升
肖谦
钱宏
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.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology Institute
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 Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN201510828182.6A priority Critical patent/CN105242962B/zh
Publication of CN105242962A publication Critical patent/CN105242962A/zh
Application granted granted Critical
Publication of CN105242962B publication Critical patent/CN105242962B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明提供了一种基于异构众核的轻量级线程快速触发方法,包括:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码;运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器;程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置。

Description

基于异构众核的轻量级线程快速触发方法
技术领域
本发明涉及计算机技术领域,更具体地说,本发明涉及一种基于异构众核的轻量级线程快速触发方法。
背景技术
异构众核是目前高性能计算硬件平台发展的趋势,但是在该体系结构下,主核和从核差异导致内存映射、指令集编码均需要不同处理和设计,基于多核的线程运行管理和触发装置等软件必须依托操作系统核心的参与和管理进行线程的创建,这种方式已经无法继续在异构环境下高效实用,需要针对该架构定制一套针对异构环境下轻量级线程和管理和触发装置,以便更好的在该平台下进行高性能计算、提高程序运算性能。
目前主流的软件线程API(ApplicationProgrammingInterface,应用程序编程接口)、例如Solaris线程API和Pthread线程API均可理解为针对同一种线程机制中的不同实现方案,且运行的平台均为同构结构的多核处理器,必须支持同一套内存映射和指令集机制,在线程触发上需要每个等价多核均有操作系统支撑以完成线程的创建,即使是在单核架构下,也是在底层调用操作系统的线程复制(clone)机制来实现线程上下文环境的创建。如果以此源码作为移植异构众核线程API基础,则首先要完成众核架构下协处理器的操作系统底层软件的开发和配套,增加了开发的成本,且多核线程创建机制并不能完全胜任异构线程的需求。
目前主流的异构众核架构,例如Intel的MIC软件架构,同样是针对异构众核的线程管理和触发上,均是基于每个MIC卡上都有独立的操作系统,才能完成线程的创建和管理。在实时线程创建上,需要专门的API接口来完成数据传输(例如存储器直接访问DMA)和上下文的创建和切换。同样,该平台也是需要没给MIC卡上有独立的操作系统支持,则需要为操作系统配套相关的硬件设备,增加了软件和硬件设计的成本
以上技术的同性在于线程的管理和创建均需要操作系统的介入,并需要相关硬件的支持,从设计成本上软硬件均需要同时考虑,且在有限线程功能需求的协处理器上,有些线程功能存在冗余性,降低了健壮性。
发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种基于异构众核的轻量级线程快速触发方法,能够在没有操作系统管理的协处理器上,完成轻量级线程的触发和管理,降低了硬件和软件的开发成本,降低了线程运行的维护成本,提高了异构众核下线程的运行性能。
为了实现上述技术目的,根据本发明,提供了一种基于异构众核的轻量级线程快速触发方法,包括:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码;运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器;程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置。
优选地,符合ELF格式的段信息包括主处理器指令、协处理器指令、主处理器数据和协处理器数据。
优选地,将协处理器第一条指令的配置为任务等待操作的入口程序计数器值,使得协处理器持续进行任务等待操作,直到协处理器在判断协处理器程序计数器寄存器非空时,判断主处理器创建了新任务,使得协处理器跳转到该新任务入口的程序计数器值;在完成该新任务返回后,清空协处理器程序计数器寄存器,并继续进行任务等待操作,等待主处理器的下一次任务的分配。
优选地,协处理器核心没有运行标准操作系统,无法通过标准的execve函数的方式启动程序。
优选地,程序加载器运行在运算控制核心系统区,而且程序加载器将用户可执行程序映像进行解析,加载到核组内存。
优选地,程序加载器进行核组资源、存储空间、堆栈的申请和初始化,而且程序加载器进行运行时初始状态的配置。
优选地,程序加载器支持异构众核融合轻量级线程模式、单协处理器进程模式、单主处理器进程模式三种加载方式。
优选地,一个协处理器上不支持运行多个线程。
由此,本发明提供了一种基于异构众核的轻量级线程快速触发方法,其实现时的软硬件开发成本低,无需考虑协处理器上关于操作系统的软硬件支持。在轻量级线程支持上,本发明摒弃复杂的多核平台下的线程管理机制,只需提供高效的线程触发、回收、数据传输API即可,降低了线程维护成本。此外,本发明基于轻量级线程的快速触发装置能够更快的启动线程,降低了线程运行时启动和回收开销,提高了用户程序的运行速度。而且,本发明基于轻量级线程的快速触发装置能够在在启动线程前就完成资源的分配和管理,根据用户的课题需求进行线程硬件资源适配,并提供多种程序运行减少运行时的作业管理。
附图说明
结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
图1示意性地示出了异构众核线程创建程序示例。
图2示意性地示出了异构众核程序加载器流程图。
图3示意性地示出了协处理器任务等待例程。
图4示意性地示出了根据本发明优选实施例的基于异构众核的轻量级线程快速触发方法的流程图。
需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
本发明涉及两个部分组成的协同处理:
1)基于异构众核的轻量级线程库——例如Athread库
2)基于异构众核的程序装载器——例如Mixrun装置
两部分协同处理,共同完成基于异构众核的轻量级线程的触发和管理过程。
<轻量级线程库>
基于异构众核的轻量级线程库(Athread库)的设计原理,为了让用户能够在没有操作系统管理的协处理器上,方便、快捷地对线程进行控制和调度,从而更好地发挥协处理器加速性能而开发的一种轻量级线程库。在该装置中,每个线程的启动绑定在一个协处理器资源,在线程创建前,通过基于异构众核的程序装载器(Mixrun装置)来检查所有的可用协处理器可用资源。
其中:
a)轻量级线程库中的轻量级线程必须使得每个线程绑定一个协处理器,不支持一个协处理器上运行多个线程;
b)轻量级线程库支持不满核线程资源调度,每个核组资源支持多线程组启动;
c)轻量级线程库实现了CPU内任务的绑定调度、混合调度和抢占调度等多种调度模式,解决了众核内任务负载不均、访存延迟长、消息阻塞等问题。
用户在使用时,通过图1方式进行线程的调用。
<异构众核程序装载器>
协处理器核心没有运行标准操作系统,无法通过标准的execve函数(该函数的作用就是去执行一个文件)方式启动程序,而在特殊的异构架构下,需要对该核心资源和众核的层次空间进行申请和管理以及异构程序的启动。为此,本发明在操作系统和可执行程序之间独立出一个程序加载器Mixrun,以完成异构程序的转载和线程的触发。
图2示意性地示出了异构众核程序加载器流程图。如图2所示,异构众核程序加载器流程包括:
对输入程序进行ELF文件解析,提取文件和段信息,而且进行参数处理;
检查核组资源,根据输入形状进行申请,对核组空间进行划分与申请;
对用户程序参数、环境变量、系统辅助信息等进行处理;
进行指令空间、多层次存储空间、栈空间的映射;
执行系统相关信息的告知(作业管理,特定系统调用辅助信息等);
执行运行时特定信息处理(线程私有空间、动态分配空间起止设置等);
执行运算核心运行时信号的挂载:系统调用、运算核心异常、退出等;
判断单运算控制核心、异构混合、单运算核心代码;
跳转到相应启动代码,结束加载。
也就是说,存在如下主要步骤:a)异构众核程序加载器运行在运算控制核心系统区,它将用户可执行程序映像进行解析,加载到核组内存;b)异构众核程序加载器进行核组资源、存储空间、堆栈的申请和初始化以及用户参数、环境变量等运行时初始状态的配置;c)异构众核程序加载器支持异构众核融合轻量级线程模式、单协处理器进程模式、单主处理器进程模式三种加载方式。
<轻量级线程触发装置原理>
1)硬件前提
为了能够快速在没有操作系统的协处理器上进行线程管理和触发,需要硬件提供一个能进行程序执行第一条指令的IO(输入输出)寄存器,程序加载器可以通过写该IO寄存器来控制协处理器的第一条指令的运行入口PC(programcounter,程序计数器)值,以启动协处理器核心程序。
2)软件前提
如上所述,需要有个针对异构众核的轻量级线程库以及异构众核的程序装载器。
3)操作步骤
图4示意性地示出了根据本发明优选实施例的基于异构众核的轻量级线程快速触发方法的流程图。
如图4所示,根据本发明优选实施例的基于异构众核的轻量级线程快速触发方法包括:
第一步骤S1:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用(该编程模式与pthread编程模式类似),然后完成程序代码的编译,生成一个异构融合的可执行代码a.out。例如,具体示例如如图1所示。
第二步骤S2:运行该a.out可执行码。首先执行程序加载器Mixrun,该程序加载器的运行是在主处理器上执行(隐含有操作系统的程序装载Mixrun本身的操作),再将可执行代码a.out作为参数传入给程序加载器Mixrun。
例如:$Mixrun<配置选项>./a.out
第三步骤S3:程序加载器Mixrun将整个a.out当做一个文件读入,然后解析出主处理器指令、协处理器指令、主处理器数据、协处理器数据等符合ELF(ExecutableandLinkingFormat)格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置,详细流程可如图2所示。
具体地,首先,将协处理器第一条指令的配置为任务等待操作(Waiting_for_task例程)的入口程序计数器值,使得协处理器持续进行任务等待操作,直到协处理器在判断协处理器程序计数器寄存器Slave_PC非空时,表示主处理器创建了新任务,则协处理器跳转到该任务入口的程序计数器值,当完成任务返回后,清空协处理器程序计数器寄存器Slave_PC,并继续进行任务等待操作,等待主处理器的下一次任务的分配。软件流程示例如图3所示。
如上所述,主处理器有显式的协处理器线程触发和回收接口,如图1中异构众核线程创建程序示例中的athread_spawn所示,slave_fun()函数就是协处理器的任务函数,athread_spawn的主要功能就是登记该线程的属性并将slave_fun的值填入Slave_PC中。最终完成该轻量级线程的触发。
本发明无需设计协处理器针对操作系统配套的相关支持,降低了软件和硬件的设计和维护成本。而且,本发明能够快速启动和回收线程,无需经过操作系统处理,提高程序性能。此外,本发明能够在运行前对轻量级线程提前进行软硬适配,例如可用协处理器占用、栈空间大小调整、可用内存空间调整等,减少了用户编程代码的复杂度。
本发明在没有软硬件操作系统支撑机制下的协处理器线程运行机制,而且没有软硬件操作系统支撑机制下的协处理器线程触发装置。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

Claims (8)

1.一种基于异构众核的轻量级线程快速触发方法,其特征在于包括:
在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码;
运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器;
程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置。
2.根据权利要求1所述的基于异构众核的轻量级线程快速触发方法,其特征在于,符合ELF格式的段信息包括主处理器指令、协处理器指令、主处理器数据和协处理器数据。
3.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,将协处理器第一条指令的配置为任务等待操作的入口程序计数器值,使得协处理器持续进行任务等待操作,直到协处理器在判断协处理器程序计数器寄存器非空时,判断主处理器创建了新任务,使得协处理器跳转到该新任务入口的程序计数器值;在完成该新任务返回后,清空协处理器程序计数器寄存器,并继续进行任务等待操作,等待主处理器的下一次任务的分配。
4.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,协处理器核心没有运行标准操作系统,无法通过标准的execve函数的方式启动程序。
5.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,程序加载器运行在运算控制核心系统区,而且程序加载器将用户可执行程序映像进行解析,加载到核组内存。
6.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,程序加载器进行核组资源、存储空间、堆栈的申请和初始化,而且程序加载器进行运行时初始状态的配置。
7.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,程序加载器支持异构众核融合轻量级线程模式、单协处理器进程模式、单主处理器进程模式三种加载方式。
8.根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,一个协处理器上不支持运行多个线程。
CN201510828182.6A 2015-11-24 2015-11-24 基于异构众核的轻量级线程快速触发方法 Active CN105242962B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510828182.6A CN105242962B (zh) 2015-11-24 2015-11-24 基于异构众核的轻量级线程快速触发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510828182.6A CN105242962B (zh) 2015-11-24 2015-11-24 基于异构众核的轻量级线程快速触发方法

Publications (2)

Publication Number Publication Date
CN105242962A true CN105242962A (zh) 2016-01-13
CN105242962B CN105242962B (zh) 2018-07-03

Family

ID=55040617

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510828182.6A Active CN105242962B (zh) 2015-11-24 2015-11-24 基于异构众核的轻量级线程快速触发方法

Country Status (1)

Country Link
CN (1) CN105242962B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109716730A (zh) * 2016-09-09 2019-05-03 微软技术许可有限责任公司 生产应用的自动化性能调试
CN109871512A (zh) * 2019-01-27 2019-06-11 中国人民解放军国防科技大学 面向异构融合体系结构的矩阵乘加速方法
CN110262900A (zh) * 2019-06-20 2019-09-20 山东省计算中心(国家超级计算济南中心) 一种基于申威众核处理器的主核与核组之间通信锁同步运行加速方法
CN110399124A (zh) * 2019-07-19 2019-11-01 浪潮电子信息产业股份有限公司 一种代码生成方法、装置、设备及可读存储介质
CN110569067A (zh) * 2019-08-12 2019-12-13 阿里巴巴集团控股有限公司 用于多线程处理的方法、装置及系统
CN111837104A (zh) * 2019-02-21 2020-10-27 华为技术有限公司 一种在多个处理器之间调度软件任务的方法和装置
CN112445581A (zh) * 2019-08-28 2021-03-05 无锡江南计算技术研究所 针对异构众核的快速线程启动方法
CN112558978A (zh) * 2019-09-26 2021-03-26 无锡江南计算技术研究所 支撑异构众核全芯片视角的加速编程和编译方法
CN112631662A (zh) * 2019-09-24 2021-04-09 无锡江南计算技术研究所 众核异构架构下的多类型目标代码的透明加载方法
WO2021098257A1 (zh) * 2019-11-24 2021-05-27 浪潮电子信息产业股份有限公司 一种基于异构计算平台的业务处理方法
US11216278B2 (en) 2019-08-12 2022-01-04 Advanced New Technologies Co., Ltd. Multi-thread processing
CN114385261A (zh) * 2021-12-23 2022-04-22 湖南小算科技信息有限公司 一种进程内装载程序的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101373434A (zh) * 2007-08-22 2009-02-25 国际商业机器公司 在多处理器系统中快速加载和运行程序映像的方法和系统
CN102955737A (zh) * 2012-11-06 2013-03-06 无锡江南计算技术研究所 异构处理器体系的程序调试方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101373434A (zh) * 2007-08-22 2009-02-25 国际商业机器公司 在多处理器系统中快速加载和运行程序映像的方法和系统
CN102955737A (zh) * 2012-11-06 2013-03-06 无锡江南计算技术研究所 异构处理器体系的程序调试方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘丹丹: "面向异构多核处理器的统一编程及分开编辑设计与实现", 《中国优秀硕士学位论文全文数据库》 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109716730A (zh) * 2016-09-09 2019-05-03 微软技术许可有限责任公司 生产应用的自动化性能调试
CN109871512A (zh) * 2019-01-27 2019-06-11 中国人民解放军国防科技大学 面向异构融合体系结构的矩阵乘加速方法
CN111837104A (zh) * 2019-02-21 2020-10-27 华为技术有限公司 一种在多个处理器之间调度软件任务的方法和装置
CN111837104B (zh) * 2019-02-21 2024-04-12 华为技术有限公司 一种在多个处理器之间调度软件任务的方法和装置
CN110262900A (zh) * 2019-06-20 2019-09-20 山东省计算中心(国家超级计算济南中心) 一种基于申威众核处理器的主核与核组之间通信锁同步运行加速方法
CN110262900B (zh) * 2019-06-20 2023-09-29 山东省计算中心(国家超级计算济南中心) 一种基于申威众核处理器的主核与核组之间通信锁同步运行加速方法
CN110399124B (zh) * 2019-07-19 2022-04-22 浪潮电子信息产业股份有限公司 一种代码生成方法、装置、设备及可读存储介质
CN110399124A (zh) * 2019-07-19 2019-11-01 浪潮电子信息产业股份有限公司 一种代码生成方法、装置、设备及可读存储介质
CN110569067A (zh) * 2019-08-12 2019-12-13 阿里巴巴集团控股有限公司 用于多线程处理的方法、装置及系统
CN110569067B (zh) * 2019-08-12 2021-07-13 创新先进技术有限公司 用于多线程处理的方法、装置及系统
US11216278B2 (en) 2019-08-12 2022-01-04 Advanced New Technologies Co., Ltd. Multi-thread processing
CN112445581A (zh) * 2019-08-28 2021-03-05 无锡江南计算技术研究所 针对异构众核的快速线程启动方法
CN112631662A (zh) * 2019-09-24 2021-04-09 无锡江南计算技术研究所 众核异构架构下的多类型目标代码的透明加载方法
CN112631662B (zh) * 2019-09-24 2022-07-12 无锡江南计算技术研究所 众核异构架构下的多类型目标代码的透明加载方法
CN112558978B (zh) * 2019-09-26 2022-11-25 无锡江南计算技术研究所 支撑异构众核全芯片视角的加速编程和编译方法
CN112558978A (zh) * 2019-09-26 2021-03-26 无锡江南计算技术研究所 支撑异构众核全芯片视角的加速编程和编译方法
WO2021098257A1 (zh) * 2019-11-24 2021-05-27 浪潮电子信息产业股份有限公司 一种基于异构计算平台的业务处理方法
CN114385261A (zh) * 2021-12-23 2022-04-22 湖南小算科技信息有限公司 一种进程内装载程序的方法

Also Published As

Publication number Publication date
CN105242962B (zh) 2018-07-03

Similar Documents

Publication Publication Date Title
CN105242962A (zh) 基于异构众核的轻量级线程快速触发方法
KR101759266B1 (ko) 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법
KR101255382B1 (ko) 운영체제에 친숙한 부트로더
US8972699B2 (en) Multicore interface with dynamic task management capability and task loading and offloading method thereof
US9830176B2 (en) Methods, systems, and media for binary compatible graphics support in mobile operating systems
CN100511156C (zh) 强制性地终止输入/输出操作阻止的线程的设备和方法
CN110673853B (zh) 一种编译方法、装置及系统
US20120222019A1 (en) Control Flow Graph Operating System Configuration
CN112463123B (zh) 任务编译方法、装置、网络节点、系统及存储介质
CN103793255B (zh) 可配置的多主模式多os内核实时操作系统架构的启动方法
US20230205561A1 (en) Managing containers across multiple operating systems
US9990216B2 (en) Providing hypercall interface for virtual machines
Goransson Efficient android threading: Asynchronous processing techniques for android applications
CN102364442A (zh) 将Wine从x86移植到ARM平台的方法
US7228527B1 (en) Method and system for structuring a procedure
US10496433B2 (en) Modification of context saving functions
CN101176061A (zh) 数字信号处理器上多任务的实现
Vella Seamless parallel computing on heterogeneous networks of multiprocessor workstations
US11435989B2 (en) Thread-local return structure for asynchronous state machine
CN110083469B (zh) 一种异构硬件组织运行统一内核方法及系统
Andrus et al. Binary compatible graphics support in Android for running iOS apps
US20180357095A1 (en) Asynchronous sequential processing execution
US20240020133A1 (en) Systems and methods to bridge platforms
Troelsen et al. Multithreaded, Parallel, and Async Programming
Krook et al. Higher-Order Concurrency for Microcontrollers

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