CN103699458A - 一种降低动态冗余多线程性能和功耗开销的方法及系统 - Google Patents

一种降低动态冗余多线程性能和功耗开销的方法及系统 Download PDF

Info

Publication number
CN103699458A
CN103699458A CN201310682554.XA CN201310682554A CN103699458A CN 103699458 A CN103699458 A CN 103699458A CN 201310682554 A CN201310682554 A CN 201310682554A CN 103699458 A CN103699458 A CN 103699458A
Authority
CN
China
Prior art keywords
instruction
avf
power consumption
processor
register
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
CN201310682554.XA
Other languages
English (en)
Other versions
CN103699458B (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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201310682554.XA priority Critical patent/CN103699458B/zh
Publication of CN103699458A publication Critical patent/CN103699458A/zh
Application granted granted Critical
Publication of CN103699458B publication Critical patent/CN103699458B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种降低动态冗余多线程性能和功耗开销的方法,包括指令译码阶段,读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一;指令发射阶段,读取寄存器时,使用寄存器号索引记录表,将相应标志位置0;指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为0或1,在指令提交阶段,都将标志位置1。程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF;当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。

Description

一种降低动态冗余多线程性能和功耗开销的方法及系统
技术领域
本发明涉及处理器可靠性技术领域,尤其涉及一种降低动态冗余多线程性能和功耗开销的方法和系统。
背景技术
在集成电路中,不断降低的供电电压、越来越高的工作频率、持续减小的节点电容和高速增长的芯片复杂度使得电路对环境的影响越来越敏感。高能粒子(主要来源于宇宙辐射、核辐射、大气和封装材料)轰击半导体器件,以及外界环境中的噪声和干扰,导致逻辑位发生翻转,引起集成电路发生逻辑故障。由于这种故障具有瞬态、可恢复、发生位置和时间随机等特点,不会引起器件永久性的故障,因此,称为软错误。随着摩尔定律的继续有效,单芯片的软错误率也呈现指数增长趋势,在16nm工艺下,单芯片的用户可见错误率高达一天一次。因此,不论是在宇宙环境中,还是在地面环境中,甚至对商用处理器,软错误问题都带来了极大的危害,成为限制微处理器发展的一个重要问题。
利用SMT(Simultaneously and Redundantly Threading)硬件资源或多核处理器,通过冗余技术检测或恢复软错误,统称为冗余多线程技术RMT(Redundant Multithreading)。在RMT技术中,同时运行两个相同的线程,只有当两个线程的输出相等时,程序才能继续执行。尽管RMT技术能有效检测软错误,但是带来了非常大的性能、功耗和面积开销。Mukherjee发现,利用多核处理器资源,使用RMT技术检测软错误,会导致单线程程序性能平均降低30%,多线程程序平均降低32%,功耗、面积开销增大一倍。因此,过度保护的商用处理器会导致其在价格和性能上毫无竞争力。然而,如果没有采取足够的保护措施,又会导致处理器因为不可靠而变得无法使用。实际上,并不是所有由于外部带电粒子引起的翻转都会导致程序的执行发生错误。因此,仅仅考虑芯片原始错误率会导致过度保护。芯片的失效率是其原始软错误率与部件的弱点因子的乘积,而弱点因子又是时序弱点因子TVF(Timing Vulnerability Factor)和体系结构弱点因子AVF(ArchitecturalVulnerability Factor)的乘积。芯片的原始错误率和TVF是由工艺和芯片制造技术决定的。处理器部件的AVF指的是处理器部件中的一位翻转会导致用户可见的错误的概率,与体系结构特性和应用程序特性有关。
在程序执行过程中,AVF呈现明显的动态变化特性和阶段特性。因此,当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。因此,在动态冗余多线程技术中,准确预测处理器的AVF是非常重要的。
现有技术需要在一个大小为4万条指令的分析窗口,检测动态死指令,这在硬件实现上是不可行的,而且分析复杂度高和分析时间长。所以,现有技术没有将动态死指令的统计特征作为处理器部件AVF预测模型的输入。但是,如果不考虑动态死指令的影响,而仅仅根据处理器部件的大小以及占用率预测AVF,会导致高估AVF,开启不必要的冗余线程,带来不必要的性能和功耗开销。因为计算处理器部件的占用率时,并没有去除处理器部件中可能驻留的动态死指令(在程序执行过程中,动态死指令发生软错误不会影响程序执行结果),从而高估了处理器部件的有效占用率,但是占用率是预测处理器部件AVF的关键特征,当处理器部件占用率高时,其预测AVF很可能高。
发明内容
为了解决上述技术问题,本发明的目的在于公开一种通过增加动态死指令统计信息和NOP指令统计信息这两种体系结构无关特征作为输入,构建机器学习预测模型,提高处理器部件的AVF预测准确性,从而降低动态冗余多线程开销的方法及系统。
本发明分别对整型和浮点寄存器的每一个寄存器,增加一位标志位,构成寄存器读写记录表,高效实时检测动态死指令。在程序运行过程中,指令译码阶段,读取指令操作码,识别NOP指令,NOP指令统计量加一;指令发射阶段,读取寄存器时,使用寄存器号索引记录表(即寄存器的标志位进行列表),将相应标志位置0;指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一。无论标志位内容为0或1,在指令提交阶段,都将标志位置1。程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及处理器部件占用率输入预测模型,预测处理器部件的AVF。当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
本发明通过提高处理器部件AVF预测准确性,在满足软错误率设计要求的同时,减少冗余多线程的运行时间,降低动态冗余多线程的性能和功耗开销。
附图说明
图1为寄存器读写记录表;
图2为冗余多线程示意图;
图3为处理器部件AVF动态变化图;
图4为动态冗余多线程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明的实现进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了缓解软错误问题,工业界经常使用冗余技术,尤其是冗余多线程技术。利用SMT硬件资源或多核处理器,同时运行两个相同的线程,只有当两个线程的输出相等时,程序才能继续执行,如图2所示。
在程序运行的整个过程中,冗余线程始终在检测软错误,保证了所有软错误都会被检测到。可是实际上并不需要在程序运行的整个生命期内都使用如此高代价的检测措施。在程序运行过程中,处理器部件AVF呈现明显的动态变化特性和阶段特性,如图3所示。当处理器部件的AVF低时,取消冗余线程以提高性能,降低功耗,仍然能够满足处理器软错误率要求。当处理器部件的AVF高时,则开启冗余线程以提高可靠性,如图4所示。根据AVF的高低,实时开启或关闭冗余线程,使得在满足处理器软错误率要求的同时,减少冗余多线程的运行时间,降低动态冗余多线程的性能和功耗开销。所以,能够准确预测AVF的高低则显得尤为重要。(动态死指令统计信息和NOP指令统计信息,这两种体系结构无关特征是能够准确预测处理器部件AVF的关键特征。动态死指令是它的结果在后续程序执行过程中从来没有被其他指令读取使用的指令。例如,当两条连续的指令A和B写同一个寄存器R1,而期间没有其他指令读取过寄存器R1,则指令A为动态死指令。
本发明增加动态死指令统计信息和NOP指令统计信息作为处理器部件AVF预测模型的输入特征。在SPEC2000Alpha指令级的基准程序中,动态死指令的比例高达9%,NOP指令的比例为10%。本实施例对26个SPEC2000基准测试程序做了大量的统计分析,从200个可能与处理器部件AVF相关的统计量中,选择出最相关的统计量,构建能够准确预测处理器部件AVF的线性回归模型,也可以采用其他的机器学习模型。本实例发现,处理器部件占用率和动态死指令和NOP指令统计信息都是能够准确预测处理器部件AVF的关键特征。
线性回归方程,如公式1所示。
y=b0+b1·x1+b2·x2+bi·xi...+bn·xn
其中x1,x2,...xn表示自变量,y表示应变量。在本发明中,xi表示第i个统计量,y表示处理器相应部件的AVF。
处理器相应部件的AVF的残差平方和,如公式2所示。
Q=∑[yi-(b0+b1·x1+b2·x2+bi·xi...+bn·xn)]2
通过min(Q),得到回归系数B向量的最优值。常用的方法有最小二乘法和梯度下降法。
为了构建预测模型,每个程序运行前10个simpoint程序片段。在每一个simpoint程序片段运行过程中,每400万条指令,计算一次处理器主要部件的AVF,并将相应的200个统计量记录下来,比如cache缺失率,分支预测准确率,动态死指令比例,NOP指令比例等。
本发明选取SPEC2000中的22个程序的数据作为训练数据,其他4个程序,两个浮点程序(apsi和galgel)以及两个整型程序(mcf和twolf),作为测试程序。
本发明首先计算每个统计量xi与处理器部件AVFy的协方差平方,选择出最相关的统计量。协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。比如与ROB AVF最相关的统计量是ROB的占用率,协方差平方为0.9。然后依次将其余的199个统计量的其中一个与最相关统计量做二元线性回归。预测差值最小的二元线性方程所包含的另一个自变量,即第二个自变量。以此类推,一次添加一个自变量,直到穷尽所有统计量。经过全面的回归分析,使用前几个自变量构成的线性回归预测模型已经可以比较准确的预测处理器主要部件的AVF,其中动态死指令和NOP指令统计信息都是很重要的统计量。
本发明分别对整型和浮点寄存器的每一个寄存器,增加一位标志位,构成寄存器读写记录表,高效实时检测动态死指令。
在程序运行过程中,指令译码阶段,读取指令操作码,识别NOP指令,NOP指令统计量加一;指令发射阶段,读取寄存器时,使用寄存器号索引记录表,将相应标志位置0;指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一。无论标志位内容为0或1,在指令提交阶段,都将标志位置1。
程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量(比如,处理器部件占用率等)输入已经构建的线性回归预测模型,预测处理器部件的AVF。当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。本发明通过提高处理器部件AVF预测准确性,在满足软错误率设计要求的同时,减少冗余多线程的运行时间,降低动态冗余多线程的性能和功耗开销。
综上,本发明公开了一种降低动态冗余多线程性能和功耗开销的方法,包括如下步骤:
步骤1、指令译码阶段,读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一;
步骤2、指令发射阶段,读取寄存器时,使用寄存器号索引记录表,将相应标志位置0;
步骤3、指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为0或1,在指令提交阶段,都将标志位置1。
步骤4、程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF;
步骤5、当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
步骤3前包括:
步骤30、分别对整型和浮点寄存器的每一个寄存器,增加一位标志位,构成寄存器读写记录表,高效实时检测动态死指令。
步骤4前包括:
步骤41、构建预测处理器部件AVF的线性回归模型步骤。
步骤41具体包括:
步骤411、统计处理器相应部件的AVF;
步骤412、计算残差平方和;
步骤413、选择残差平方和的最小值,得到回归系数B向量的最优值;
步骤414、计算每个统计量与处理器部件AVF的协方差平方,选择出最相关的统计量;协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。
步骤41中计算处理器相应部件的AVF的线性回归方程为:
y=b0+b1·x1+b2·x2+bi·xi...+bn·xn
其中:x1,x2,...xn表示自变量,y表示应变量,xi表示第i个统计量,y表示处理器相应部件的AVF。
步骤41中处理器相应部件的AVF的残差平方和计算公式为:
Q=∑[yi-(b0+b1·x1+b2·x2+bi·xi...+bn·xn)]2
本发明还公开了一种降低动态冗余多线程性能和功耗开销的系统,包括:
指令译码模块,用于读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一;
指令发射模块,用于读取寄存器时,使用寄存器号索引记录表,将相应标志位置0;
指令提交模块,用于使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为0或1,在指令提交阶段,都将标志位置1。
预测模块,用于程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF;
控制模块,用于当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
所述降低动态冗余多线程性能和功耗开销的系统,还包括线性回归模型构建模块,用于构建预测处理器部件体系结构弱点因子的线性回归模型。
所述降低动态冗余多线程性能和功耗开销的方法,线性回归模型构建模块还计算残差平方和;计算残差平方和的最小值,得到回归系数B向量的最优值;计算每个统计量与处理器部件体系AVF的协方差平方,选择出最相关的统计量;协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。
本发明通过提高处理器部件AVF预测准确性,在满足软错误率设计要求的同时,减少冗余多线程的运行时间,降低动态冗余多线程的性能和功耗开销。

Claims (9)

1.一种降低动态冗余多线程性能和功耗开销的方法,其特征在于,包括如下步骤:
步骤1、指令译码阶段,读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一;
步骤2、指令发射阶段,读取寄存器时,使用寄存器号索引记录表,将相应标志位置0;
步骤3、指令提交阶段,使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为0或1,在指令提交阶段,都将标志位置1;
步骤4、程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF;
步骤5、当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
2.如权利要求1所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤3前包括:
步骤30、分别对整型和浮点寄存器的每一个寄存器,增加一位标志位,构成寄存器读写记录表,高效实时检测动态死指令。
3.如权利要求1所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤4前包括:
步骤41、构建预测处理器部件AVF的线性回归模型步骤。
4.如权利要求3所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤41具体包括:
步骤412、计算残差平方和;
步骤413、选择残差平方和的最小值,得到回归系数B向量的最优值;
步骤414、计算每个统计量与处理器部件AVF的协方差平方,选择出最相关的统计量;协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。
5.如权利要求3所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤41中计算处理器相应部件的AVF的线性回归方程为:
y=b0+b1·x1+b2·x2+bi·xi...+bn·xn
其中:x1,x2,...xn表示自变量,y表示应变量,xi表示第i个统计量,y表示处理器相应部件的AVF。
6.如权利要求5所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,步骤41中处理器相应部件的AVF的残差平方和计算公式为:
Q=∑[yi-(b0+b1·x1+b2·x2+bi·xi...+bn·xn)]2
7.一种降低动态冗余多线程性能和功耗开销的系统,其特征在于,包括:
指令译码模块,用于读取程序运行过程中指令操作码,识别NOP指令,NOP指令统计量加一;
指令发射模块,用于读取寄存器时,使用寄存器号索引记录表,将相应标志位置0;
指令提交模块,用于使用寄存器号索引记录表,查看相应标志位,如果内容为1,则表明之前写寄存器的指令为动态死指令,死指令统计量加一;无论标志位内容为0或1,在指令提交阶段,都将标志位置1;
预测模块,用于程序每运行一定数量的指令,将动态死指令和NOP指令统计信息以及其他关键统计量输入已构建线性回归预测模型,预测处理器部件的AVF;
控制模块,用于当处理器部件的AVF高时,则开启冗余线程以提高可靠性;当处理器部件的AVF低时,则关闭冗余线程以提高性能,降低功耗。
8.如权利要求7所述降低动态冗余多线程性能和功耗开销的系统,其特征在于,还包括线性回归模型构建模块,用于构建预测处理器部件体系结构弱点因子的线性回归模型。
9.如权利要求8所述降低动态冗余多线程性能和功耗开销的方法,其特征在于,线性回归模型构建模块还包括计算残差平方和;计算残差平方和的最小值,得到回归系数B向量的最优值;计算每个统计量与处理器部件体系AVF的协方差平方,选择出最相关的统计量;协方差平方值越大,表示该统计量与处理器相应部件的AVF越相关。
CN201310682554.XA 2013-06-28 2013-12-12 一种提高动态冗余多线程性能和降低功耗开销的方法及系统 Active CN103699458B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310682554.XA CN103699458B (zh) 2013-06-28 2013-12-12 一种提高动态冗余多线程性能和降低功耗开销的方法及系统

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN201310269189.X 2013-06-28
CN201310269189 2013-06-28
CN201310269189X 2013-06-28
CN201310682554.XA CN103699458B (zh) 2013-06-28 2013-12-12 一种提高动态冗余多线程性能和降低功耗开销的方法及系统

Publications (2)

Publication Number Publication Date
CN103699458A true CN103699458A (zh) 2014-04-02
CN103699458B CN103699458B (zh) 2017-02-01

Family

ID=50360996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310682554.XA Active CN103699458B (zh) 2013-06-28 2013-12-12 一种提高动态冗余多线程性能和降低功耗开销的方法及系统

Country Status (1)

Country Link
CN (1) CN103699458B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313551A (zh) * 2016-06-21 2019-02-05 超威半导体公司 使用编译器插入的转换代码对冗余线程进行指纹识别

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070234125A1 (en) * 2006-03-31 2007-10-04 Chuen-Der Lien Logic soft error rate prediction and improvement
CN101719087A (zh) * 2009-11-26 2010-06-02 中国科学院计算技术研究所 微处理器可靠性评测方法及其系统
CN102063289A (zh) * 2010-09-07 2011-05-18 中国科学技术大学 串行程序线程级推测执行能力评估方法和评估器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070234125A1 (en) * 2006-03-31 2007-10-04 Chuen-Der Lien Logic soft error rate prediction and improvement
CN101719087A (zh) * 2009-11-26 2010-06-02 中国科学院计算技术研究所 微处理器可靠性评测方法及其系统
CN102063289A (zh) * 2010-09-07 2011-05-18 中国科学技术大学 串行程序线程级推测执行能力评估方法和评估器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
成玉、马安国等: "一种快速有效的L2 Cache可靠性预测方法", 《计算机研究与发展》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313551A (zh) * 2016-06-21 2019-02-05 超威半导体公司 使用编译器插入的转换代码对冗余线程进行指纹识别
CN109313551B (zh) * 2016-06-21 2021-02-23 超威半导体公司 使用编译器插入的转换代码对冗余线程进行指纹识别的方法和设备

Also Published As

Publication number Publication date
CN103699458B (zh) 2017-02-01

Similar Documents

Publication Publication Date Title
Feng et al. Shoestring: probabilistic soft error reliability on the cheap
CN101416163B (zh) 通过选择重新执行来检测瞬态错误
CN103513964B (zh) 循环缓冲器打包
US8490095B2 (en) Method and system for detecting program deadlock
Fu et al. Sim-SODA: A unified framework for architectural level software reliability analysis
CN108491317B (zh) 一种基于指令脆弱性分析的sdc错误检测方法
Sayadi et al. A data recomputation approach for reliability improvement of scratchpad memory in embedded systems
Sridharan et al. Using pvf traces to accelerate avf modeling
US9252804B2 (en) Re-aligning a compressed data array
Papadimitriou et al. Anatomy of on-chip memory hardware fault effects across the layers
Vera et al. Selective replication: A lightweight technique for soft errors
CN103699458A (zh) 一种降低动态冗余多线程性能和功耗开销的方法及系统
US20160179611A1 (en) Low overhead error checking and correction apparatus and method
CN103984632A (zh) 一种基于错误传播分析的sdc脆弱指令识别方法
JP6045351B2 (ja) 検証装置及び検証方法
CN102541738B (zh) 加速多核cpu抗软错误测试的方法
CN1322415C (zh) 用于重放转换的指令的方法和装置
CN104112032B (zh) 时钟控制电路与方法
Sadi et al. An efficient approach towards mitigating soft errors risks
Farazmand et al. FEDC: Control Flow Error Detection and Correction for embedded systems without program interruption
CN203260043U (zh) 超高频rfid的pie解码与crc校验同步进行的电路
Cong et al. Impact of loop transformations on software reliability
Weigel et al. Kernel vulnerability factor and efficient hardening for histogram of oriented gradients
Filippou et al. Recovery of performance degradation in defective branch target buffers
US20150379175A1 (en) Ic design synthesis using slack diagrams

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant