CN111492343A - 浮点乘法运算处理的系统和方法 - Google Patents

浮点乘法运算处理的系统和方法 Download PDF

Info

Publication number
CN111492343A
CN111492343A CN201880081659.0A CN201880081659A CN111492343A CN 111492343 A CN111492343 A CN 111492343A CN 201880081659 A CN201880081659 A CN 201880081659A CN 111492343 A CN111492343 A CN 111492343A
Authority
CN
China
Prior art keywords
operand
floating
point
multiply
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.)
Granted
Application number
CN201880081659.0A
Other languages
English (en)
Other versions
CN111492343B (zh
Inventor
A·丹尼什
E·普朗德克
E·马胡林
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN111492343A publication Critical patent/CN111492343A/zh
Application granted granted Critical
Publication of CN111492343B publication Critical patent/CN111492343B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

处理器包括整数乘法器,整数乘法器被配置为执行整数乘法指令来将浮点乘法运算的至少一个浮点操作数的有效数字位相乘。该处理器还包括浮点乘法器,浮点乘法器被配置为关于浮点乘法运算的中间结果以及至少一个浮点操作数来执行专用浮点乘法累加指令,以生成最终的浮点乘法结果。

Description

浮点乘法运算处理的系统和方法
根据35 U.S.C.§119的优先权要求
本专利申请要求于2017年12月21日提交的、Albert Danysh等人的题为“SYSTEMAND METHOD OF FLOATING POINT MULTIPLY OPERATION PROCESSING”的美国非临时专利申请号15/851,390的优先权,其已被转让给本文的受让人,并且以其整体通过引用明确地并入本文。
技术领域
本公开总体上涉及处理器,并且更具体地涉及浮点乘法指令处理。
背景技术
技术的进步导致了更强大的计算设备。例如,诸如膝上型计算机、台式计算机和服务器的计算设备以及诸如便携式无线电话的无线计算设备具有改进的计算能力,并且能够执行越来越复杂的操作。增加的计算能力还增强了载各种其他应用中的设备功能。例如,交通工具可以包括处理设备,以支持全球定位系统操作或其他位置操作、自动驾驶操作、交互式通信和娱乐操作等。其他示例包括家用电器、安全相机、量测设备等,其也并入有计算设备以支持增强的功能(例如,物联网(IoT)设备之间的通信)。
计算设备可以包括用以执行程序指令的处理器。例如,作为例示性示例,处理器可以执行算术指令(例如,乘法指令)来执行图形处理、数据编码或加密。处理器可以对各种类型的数据(例如,整数或浮点数)进行运算。
浮点数通常由符号位(sign bit)、指数值和有效数字(尾数,mantissa)表示,有效数字(significand)由数字的有效的数位(significant digits)组成。两个浮点数的乘法包括指数值的加法和尾数的乘法。根据电子和电气工程师协会(IEEE)-754标准而被格式化为双精度数字的两个数字的相乘包括将两个53位的有效数字相乘,这可能需要处理器中的专用的64位乘法器,该处理器以其他方式被配置为在较小的值(例如,32位)上进行运算。备选地,处理器可以将双精度乘法指令转换为循环运算,循环运算执行较小值的多个部分乘法,并将这些部分结果进行组合来生成双精度结果。但是,包括专用的64位乘法器可能会增加处理器的尺寸和成本,而将指令转换为循环运算会给处理器带来附加的复杂性和路由逻辑。
发明内容
在一个特定方面中,处理器包括整数乘法器,整数乘法器被配置为执行整数乘法指令来对浮点乘法运算的至少一个浮点操作数的有效数字位相乘。处理器还包括浮点乘法器,浮点乘法器被配置为关于浮点乘法运算的中间结果以及至少一个浮点操作数来执行专用浮点乘法累加指令,以生成最终的浮点乘法结果。
在另一方面中,在处理器处执行浮点乘法运算的方法包括:执行多个整数乘法指令来生成中间结果。该方法还包括:关于浮点乘法运算的中间结果以及至少一个浮点操作数来执行专用浮点乘法累加指令,以生成浮点乘法结果。
在另一方面中,一种装置包括:用于执行多个整数乘法指令来生成中间结果的部件。该装置还包括用于关于中间结果以及至少一个浮点操作数来执行专用浮点乘法累加指令,以生成最终浮点乘法结果的部件。
在另一方面中,一种方法包括:将多操作数乘法运算的第一操作数标识为非规格的;以及响应于确定多操作数运算的第二操作数的指数大于阈值,修改第一操作数或第二操作数中的至少一项的值。
由所公开的各方面中的至少一个方面提供的一个特定优点是在无需具有足够的位宽来执行单周期浮点乘法的专用浮点乘法电路系统的情况下,执行浮点乘法运算的能力。例如,两个64位双精度数字的乘法可以使用整数乘法器、以及如下浮点乘法器来执行,该浮点乘法器被定制大小以将两个32位数字相乘。与使用具有更大宽度的、经专用化的浮点乘法电路相比,使用减小尺寸的组件使得能够降低处理器成本、面积和功耗。在审阅整个申请之后,本公开的其他方面、优点和特征将变得显而易见,整个申请包括以下部分:附图说明、具体实施方式和权利要求。
附图说明
图1是处理器的一个特定实现的框图,该处理器被配置为使用多个整数乘法指令和专用浮点乘法指令来执行浮点乘法运算。
图2是图示了图1的浮点乘法运算的一个特定实现的图。
图3是可以由图1的处理器执行的、使用多个整数乘法指令和专用浮点乘法指令来执行浮点乘法运算的方法的一个特定实现的流程图。
图4是操作处理器以修改可以由图1的处理器执行的乘法运算的非规格操作数的方法的一个特定实现的流程图。
图5是包括处理器的便携式设备的框图,该处理器包括图1的处理器。
具体实施方式
图1描绘了处理器100,处理器100包括指令转译器102、执行路径110和寄存器文件120。处理器100被配置为通过执行多个整数乘法指令138和专用浮点乘法累加(multiply-accumulate,MAC)指令140,来执行由浮点乘法指令130指示的浮点乘法运算。执行多个整数乘法指令138和专用浮点MAC指令140使得处理器100能够使用被配置为对具有较小位宽的操作数进行处理的组件,而将具有较大位宽的两个操作数相乘,从而与具有专用全精度乘法器的处理器相比,减少了处理器100的成本和尺寸,并且与使用“四重泵”(quadruplepump)循环运算来执行乘法指令130相比,减少了处理器路由逻辑和复杂性。
指令转译器102被配置为接收浮点乘法指令130,并且将浮点乘法指令130转译为多个整数乘法运算138和专用浮点乘法累加(MAC)指令140来执行。在一些实现中,指令转译器102是处理器100的调度单元内的指令解码器。
执行路径110被配置为执行多个指令138和专用浮点MAC指令140中的指令中的每个指令。执行路径110包括整数乘法器112和浮点乘法器114。整数乘法器112包括被配置为将整数值相乘来生成输出值的电路系统。浮点乘法器114包括被配置为将一个或多个浮点操作数相乘来生成浮点乘法结果的电路系统。
寄存器文件120被配置为保持值以对执行路径110是可访问的。例如,寄存器文件120可以包括一个或多个物理寄存器,一个或多个物理寄存器被配置为存储:与浮点乘法指令130的第一操作数122相对应的值、与浮点乘法指令130的第二操作数124相对应的值、由整数乘法器112作为执行多个整数乘法指令138中的一项或多项的结果而生成的一个或多个中间结果142、以及浮点乘法指令130的最终浮点乘法结果144。
多个整数乘法指令138包括第一指令132、第二指令134和第三指令136。指令132-136中的每一个指令被配置为使整数乘法器112将第一浮点操作数122的选定部分与第二浮点操作数124的另一选定部分相乘,其中选定部分具有比浮点操作数122、124少的位的数目。例如,由于浮点乘法可能需要这样的浮点乘法器,其具有是最大浮点操作数122或124尺寸的大约两倍的位宽,因此包含全尺寸浮点乘法器可能是极其昂贵。然而,通过对浮点操作数122、124的选定部分执行整数乘法,整数乘法指令132-136中的每一个指令将与操作数122、124相比具有减小的位宽的操作数相乘。专用浮点MAC指令140被配置为将第一浮点操作数122的最高有效(most significant)部分与第二浮点操作数124的最高有效部分相乘,并将乘积累加(添加)到中间结果142,中间结果142作为执行指令132-136的结果而生成。
因为在浮点乘法器114处执行的专用浮点MAC指令140使用浮点操作数122-124的一部分来执行,而不是使用浮点操作数122、124的整个位宽来执行,因此与全精度浮点乘法器相比,浮点乘法器114具有减小的位宽。因此,处理器100被配置为通过如下来执行浮点乘法运算:通过执行多个整数乘法指令138以生成中间结果142、并且关于中间结果142和浮点操作数122、124执行专用浮点MAC指令140以生成最终浮点乘法结果144。指令132-136和140的特定实现的进一步细节参考图2进一步描述。
尽管指令转译器102被描述为处理器100的组件,但在其他实现中,指令转译器102不是处理器100的组件,而是在处理器100执行之前对指令进行转译的组件。在一个特定实现中,指令转译器102在编译器内,并且被配置为将用户输入浮点乘法指令130转译为包括指令序列,其包括多个整数乘法指令138和专用浮点MAC指令140。
尽管整数乘法器112被图示为与浮点乘法器114不同,但是在一些实现中,一个或多个组件(例如,支持针对整数或浮点指令的乘法的乘法器电路)在整数乘法器112和浮点乘法器114之间共享。在例示性、非限制性示例中,执行路径110包括具有乘法器电路的整数乘法累加器(MAC)单元,该乘法器电路对应于整数乘法器112,并且由浮点乘法器114可访问以执行浮点乘法运算的至少一部分。整数乘法器112和浮点乘法器114中的每一项可以包括分别支持整数或浮点指令的分开的硬件,并且还可以包括共享的硬件资源(例如,整数MAC单元的乘法器)。
尽管为了清楚的解释,图1描绘了包括整数乘法器112和浮点乘法器114的单个执行路径110,但是在其他实现中,处理器100可以包括被配置为并行地执行指令的多个执行路径。在一些实现中,整数乘法器112和浮点乘法器114在分开的执行路径中、在多个执行路径中被复制。在一些实现中,整数乘法器112和浮点乘法器114被并入在单个乘法器电路中。尽管在一些实现中,指令132-140被执行为指令的串行流,但是在其他实现中,指令132-140中的两个或更多个指令被并行地执行。
图2描绘了根据一个特定实现的在处理器100处执行浮点乘法运算的示例200。浮点运算响应于接收到浮点乘法指令130,其用以将第一浮点操作数“A”122与第二浮点操作数“B”124相乘。操作数A 122包括第一32位部分211和第二32位部分212。第一部分211包括符号位214、指数值215和高阶有效数字位(high-order significand bits,Sig-Hi-A)216。第二部分212包括低阶有效数字位(low-order significand bits,Sig-Lo-A)217。例如,A的有效数字可以包括53位,其中21位在Sig-Hi-A 216中,32位在Sig-Lo-A 217中。操作数B124包括第一32位部分221和第二32位部分222。第一部分221包括符号位224、指数值225和高阶有效数字位(Sig-Hi-B)226。第二部分222包括低阶有效数字位(Sig-Lo-B)227。
乘法命令130被转译为(例如,替换为)整数乘法指令132、134、136和专用浮点乘法累加指令140。整数乘法指令132、134、136被执行以生成中间结果142,并且专用浮点乘法累加指令140被执行以生成最终浮点乘法结果144。
执行第一整数乘法指令132使整数乘法器112(在示例200中,其为32位乘法器)执行对第一操作数122的低阶有效数字位Sig-Lo-A217与第二操作数124的低阶有效数字位Sig-Lo-B 227的整数乘法,以生成64位值232。值232的32个低阶位被移除(例如,截断或舍入,truncated or rounded),以生成32位值233作为64位值232的长度减小的版本。“粘接位”(sticky bit)234也被生成作为专用位,以指示32位值233是否是不精确的(inexact,即,值232的32低阶位中的任一位是否具有值“1”)。32位值233和粘接位234形成33位值235。
在一个示例中,第一整数乘法指令132是双浮点乘法低-低(double floatmultiply low-low,DFMPYLL)指令,DFMPYLL指令将来自寄存器位置RssV.uw[0](例如,存储Sig-Lo-A 217的部分212)、以及RttV.uw[0](例如,存储Sig-Lo-B 227的部分222)的两个32位的无符号字(unsigned word,uw)操作数相乘,并且将33位值存储到寄存器RddV中,DFMPYLL指令如下所示:
Figure BDA0002544084250000071
示例1
执行第二整数乘法指令134使32位整数乘法器112对第一操作数的低阶有效数字Sig-Lo-A 217与第二操作数的高阶有效数字Sig-Hi-B 226执行整数乘法,以生成53位值242。53位值242被添加到32位值234来生成55位值244(包括粘接位235)。
在一个示例中,第二整数乘法指令134是双浮点乘法低-高(double floatmultiply low-high,DFMPYLH)指令,DFMPYLH指令将来自RssV.uw[0]的第一、32位操作数(例如,存储Sig-Lo-A 217的部分212)与来自RttV.uw[1]的第二、21位操作数(例如,来自部分221的Sig-Hi-B 226)相乘。乘法的结果与寄存器RxxV中的值累加(被添加到)。
在执行整数乘法之前,DFMPYLH应用掩码(mask)以将第二操作数的符号位(例如,符号位224)和指数(例如,Exp-B 225)置零,其在示例2中被描述为函数zxt_{20->64}。DFMPYLH还将隐藏的1位(implied 1bit)添加到第二操作数的有效数字部分(例如,Sig-Hi-B226),其在示例2中被描绘为十六进制值“00100000”的按位OR(bit-wise OR),以将“1”插入经掩码的第二操作数的第12位的位置。因为RxxV中的第0位被用作粘接位,DFMPYLH还在累加之前将乘积左移位一位。
Figure BDA0002544084250000081
示例2
执行第三整数乘法指令136使32位整数乘法器112对第一操作数122的高阶有效数字位Sig-Hi-A 216与第二操作数124的低阶有效数字位Sig-Lo-B 227执行整数乘法,以生成53位值252。值252被添加到值244,以生成55位中间结果142(和粘接位235)。在一个示例中,第三整数乘法指令136是如示例2中所描绘的DFMPYLH指令。中间结果142因此可以包括部分乘积(例如,值232、242和252)之和,并且在与指令132、134和136相关联的前三个运算中不使用指数。
专用浮点乘法累加指令140是关于中间结果142以及至少一个浮点操作数来执行的,以生成最终浮点乘法结果144。例如,指令140使处理器执行对操作数A 122的第一部分211(第一操作数的较高阶位)与操作数B 124的第一部分221(第二操作数的较高阶位)的浮点乘法,以生成浮点值的高阶有效数字位。为了例示,浮点乘法包括Sig-Hi-A 216与Sig-Hi-B 226的整数乘法,以生成42位值的部分尾数262。42位值262与中间结果142累加(例如,被添加到),以生成值263,值263进行舍入(round)以形成53位值264。执行指令140还包括将符号位214、224相乘来生成符号位274,并将指数215、225相加来生成指数275。最终浮点乘法结果144是64位数据字,其包括符号位274、指数275和53位值254作为有效数字(尾数)276。
在一个示例中,专用浮点乘法累加指令140是双浮点乘法高-高(double floatmultiply high-high,DFMPYHH)指令,DFMPYHH指令类似于使用第一操作数的较上部的(upper)20有效数字位(例如,Sig-Hi-A 216)和第二操作数的较上部的20有效数字位(例如,Sig-Hi-B 226)的单精度浮点乘法-加法(multiply-add)进行操作,将符号和指数字段置零,并以类似于示例2的方式设置每个操作数的隐藏位。乘积被对准并添加到第三操作数(例如,中间值142,55位加数(addend)),第三操作数包含先前指令132、134和136之和。最终符号、指数和分数字段被组合来形成最终结果144。
在另一方面,操作数A 122或B 124中的一个或两个是“非规格的”(denormal)(或“不规格的”,subnormal)。在“规格化”的(normalized)格式中,指数是非零的,并且隐藏的“1”位在有效数字的最高有效位之前。与规格化的格式相反,非规格的操作数具有指数215或225的全零值,并且不包括隐藏的“1”位。规格化指令270可以被执行以检测操作数A 122或操作数B 124是否为非规格的,并且以修改操作数A、操作数B或两者,使得对以下指令132、134、136和140的输入具有规格化的格式。
例如,规格化指令270可以使处理器100将多操作数(multi-operand)乘法运算的第一操作数(例如,操作数A 122)标识为非规格的,并且响应于确定多操作数运算的第二操作数(操作数B 124)的指数大于阈值,来修改第一操作数(例如,操作数A 122)或第二操作数(例如,操作数B 124)中的至少一项的值。例如,IEEE-754格式包括通过对指数添加1023来对双精度数的指数进行偏置,使得在指数字段中所支持的最低指数值(例如,-1023)被表示为0。如果操作数A 122的指数字段具有0的值(即,Exp-A 215为0),则操作数A 122的量级小于2-1023,并且操作数A 122被标识为非规格的。如果操作数B 124的量级也非常小(小于阈值,例如具有小于-511的无偏置指数),则操作数A 122和操作数B 124的乘积太小而无法以IEEE-754格式准确表示,并且可能返回0值。否则,操作数B 124的指数减小特定量,并且操作数A 122的指数增大特定量,使得两个操作数均不是非规格的。减小规格化的操作数的指数可以包括将操作数乘以第一比例因子,并且增加非规格操作数的指数可以包括将非规格操作数乘以第二比例因子,第二比例因子是第一比例因子的倒数(例如,A’=A*f,B’=B*(1/f),(其中f是比例因子>1),使得A'和B'均被规格化,并且A'*B'=A*B)。
在一个示例中,规格化指令270包括双浮点乘法固定(double float multiplyfix,DFMPYFIX)指令,DFMPYFIX指令采用两个双精度操作数并给出一个结果。DFMPYFIX被配置为使用两次,其中第二次操作数进行反转(reverse),使得两个操作数均经调整处理。例如,经修改的第一操作数R1'可以生成为R1'=DFMPYFIX(R1,R2),而经修改的第二操作数R2'可以生成为R2'=DFMPYFIX(R2,R1)。在一个特定实现中,如果操作数A 122具有非规格格式,并且操作数B 124具有大于或等于-511的无偏置指数,则DFMPYFIX(A,B)的结果为(操作数A)*1.0*2^52(即,A的指数增加了52)。如果操作数A具有大于或等于-511的无偏置指数,并且操作数B为非规格的,则DFMPYFIX(A,B)的结果为(操作数A)*(1.0)*(2^-52)(即,A的指数减少了52)。
示例200因此描绘了通过如下来生成将两个64位操作数相乘的最终乘法结果144:执行非规格化操作(经由执行规格化指令270),跟随有与三个整数乘法指令132、134和136、以及专用浮点乘法累加指令140相对应的四个乘法累加运算。乘法累加运算中的每一者使用32位(或更小)操作数,而响应于对应的指令132、134、136或140来执行。因此,乘法运算可以在不使用大的、全精度乘法器的情况下,并且在不使用复杂控制逻辑、以及多路复用以对32位乘法器进行“四重泵”的情况下执行。
尽管图2描绘了乘法指令130的两个操作数122、124,但是在其他实现(例如,其中乘法指令130是用于生成单个操作数的平方的指令的实现)中,乘法指令130具有单个操作数。在其他实现中,乘法指令130具有待相乘到一起的三个或更多个操作数,并且使用指令132-140进行处理来生成用于将其中两个操作数相乘的结果144,并且指令132-140再次被使用以将结果144与第三操作数相乘。
尽管图2描绘了其中处理器100支持规格化指令270的实现,但是在其他实现中,规格化指令270不被支持。在例示性示例中,处理器100在确定一个或多个操作数是不规格的时,引发中断来停止乘法运算的处理。
图3描绘了在处理器处执行浮点乘法运算的方法300的一个示例。例如,方法300可以由图1的处理器100执行。
方法300包括在302处执行多个整数乘法指令来生成中间结果。在一个特定实现中,多个整数乘法指令包括第一指令(例如,第一整数乘法指令132),用以执行第一操作数的低阶有效数字位与第二操作数的低阶有效数字位的整数乘法来生成第一值。在该特定实现中,多个整数乘法指令包括第二指令(例如,第二整数乘法指令134),用以执行第一操作数的高阶有效数字位与第二操作数的高阶有效数字位的整数乘法来生成第二值。在该特定实现中,多个整数乘法指令包括第三指令(例如,第三整数乘法指令136),用以执行第二操作数的低阶有效数字位与第一操作数的高阶有效数字位的整数乘法来生成第三值。
在一个例示性示例中,中间结果(例如,中间结果142)对应于第三值、第二值、以及第一值的长度减小的版本之和。在一些实现中,中间值包括专用位(例如,图2的粘接位235),其指示第一值的长度减小的版本是否是不精确的。
在304处,专用浮点乘法累加指令关于中间结果以及浮点乘法运算的至少一个浮点操作数来执行,以生成浮点乘法结果。在一个特定实现中,图1的专用乘法累加指令140使处理器执行浮点乘法,浮点乘法包括将第一操作数的高阶有效数字位(例如,Sig-Hi-A216)与第二操作数的高阶有效数字位(例如,Sig-Hi-B 226)相乘,来生成浮点值的高阶有效数字位,并将该高阶有效数字位与中间值(例如,中间结果142)累加来生成最终浮点乘法结果144。
在一些实现中,方法300包括在执行多个整数乘法指令之前,接收浮点乘法指令,并且用多个整数乘法指令、以及专用浮点乘法累加指令来替换浮点乘法指令。作为一个特定示例,指令转译器102(例如,解码器)将用多个整数乘法指令138、以及专用浮点MAC指令140来替换浮点乘法指令103。
在一些实现中,方法300还包括:响应于接收到浮点乘法指令,确定浮点乘法运算的第一操作数是否是非规格的。诸如参考图4进一步描述的,响应于确定第一操作数是非规格的、并且浮点乘法运算的第二操作数的指数大于阈值,修改(例如,经由执行图2的规格化指令270)第一操作数或第二操作数中的至少一项的值。
多个整数乘法指令和专用浮点乘法累加指令的执行使得处理器能够使用被配置为对具有较小位宽的操作数进行处理的组件,来将具有较大位宽的两个操作数相乘,从而与具有专用全精度乘法器的处理器相比,减少了处理器的成本和尺寸,并且与使用循环运算来执行乘法指令相比,减少了处理器路由逻辑和复杂度。
图4描绘了修改乘法运算的非规格操作数的方法400的一个示例。在一个特定示例中,方法400由图1的处理器100执行。
方法400包括在402处将多操作数乘法运算的第一操作数标识为非规格的。在一个特定示例中,处理器100检查第一操作数122和第二操作数124,来确定操作数中的一者(或两者)是否为非规格的,作为执行图2的规格化指令270的一部分。在一些实现中,将操作数标识为非规格的包括:确定操作数的指数值是零(指示操作数是非规格的)还是非零(指示操作数不是非规格的)。
在404处,响应于确定多操作数运算的第二操作数的指数大于阈值,第一操作数或第二操作数中的至少一项的值被修改。为了例示,处理器100执行规格化指令270,以通过增加非规格操作数的指数、并且减小另一(不是非规格)操作数的指数而将非规格操作数转换为规格操作数,使得经修改的两个操作数的乘积等于修改之前的两个操作数的乘积。
在一些实现中,在将非规格操作数规格化之后,方法400包括使用第一操作数或第二操作数中的上述至少一项的经修改的值,来执行多个整数乘法指令(例如,多个整数乘法指令138)以生成中间结果,并且关于中间结果以及至少一个浮点操作数来执行专用浮点乘法累加指令(例如,专用浮点MAC指令140)来生成最终浮点乘法结果。
修改指数值使得乘法能够在无需处理器支持针对非规格操作数的专用乘法指令的情况下执行。通过增加非规格操作数的指数、并且减小另一操作数的指数,在不影响最终浮点乘法结果的情况下,两个操作数均可以使用针对“规格”(normal)操作数的指令来处理。
参考图5,描绘了包括处理器100的电子设备的特定例示性实现的框图,并且总体上将该电子设备标记为500。电子设备500对应于任何种类的计算设备。尽管图5包括实现特定的组件(通过断线图示),其与电子设备500作为被配置为执行无线通信的移动设备的实现相关联,但是应清楚地理解的是,电子设备500不限于无线通信,并且不限于移动上下文。因此,在各种实现中,使用断线图示的一个或多个组件可以不被包括,一个或多个其他组件可以被添加,或其组合。在示例实现中,电子设备500对应于计算机(例如,服务器、膝上型计算机、平板计算机或台式计算机)、可穿戴电子设备(例如,个人相机、头戴式显示器或手表)、交通工具控制系统或控制台、家用电器、机顶盒、娱乐单元、导航设备、电视、监控器、调谐器、无线电(例如,卫星无线电)、音乐播放器(例如,数字音乐播放器、或便携式音乐播放器)、视频播放器(例如,数字视频播放器,诸如数字视频光盘(DVD)播放器或便携式数字视频播放器)、机器人、医疗保健设备、其他电子设备或其组合。
设备500包括处理器510(诸如,数字信号处理器(DSP))。在例示性示例中,处理器510使用处理器100来实现,并且被配置为通过执行多个整数乘法运算138和专用浮点MAC指令140来执行浮点乘法运算。处理器510包括解码器564(例如,指令转译器102),其将浮点乘法指令130替换为多个整数乘法指令138和专用浮点MAC指令140。
在一些实现中,存储器532耦合到处理器510或集成在处理器510内。存储器532可以包括随机存取存储器(RAM)、磁阻随机存取存储器(MRAM)、闪速存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、一个或多个寄存器、硬盘、可移除磁盘、只读光盘存储器(CD-ROM)、其他存储设备或其组合。存储器532存储一个或多个指令,其由处理器510可执行以执行诸如图3的方法300、图4的方法400或其组合的操作。
在一些实现中,显示控制器526耦合到数字信号处理器510和显示器528。在一些实现中,编码器/解码器(CODEC)534耦合到数字信号处理器510,并且扬声器536和麦克风538耦合到CODEC 534。
在一些实现中,无线控制器540耦合到处理器510和天线542。在一个特定实现中,处理器510、显示控制器526、存储器532、CODEC 534和无线控制器540包括在系统级封装或片上系统设备522中。在一个特定实现中,输入设备530和电源544耦合到片上系统设备522。此外,在一个特定实现中,如图5所示,显示器528、输入设备530、扬声器536、麦克风538、天线542和电源544在片上系统设备522的外部。但是,显示器528、输入设备530、扬声器536、麦克风538、天线542和电源544中的每一项可以耦合到片上系统设备522的组件(例如,接口或控制器)。
前述公开的设备和功能(例如,如参考图1至图5中的任一个或多个图所描述的)可以被设计和配置为计算机可读介质上所存储的计算机文件(例如,RTL、GDSII、GERBER等)。一些或所有这样的文件可以被提供给基于这些文件制备设备的制备操作者。所得产品包括半导体晶片,半导体晶片然后被切割成半导体裸片并封装到半导体芯片中。然后,芯片在上述设备中被采用。
结合所公开的示例,非暂态计算机可读介质(例如,存储器532)存储由处理器(例如,处理器100或处理器510)可执行的指令,以通过如下来执行浮点乘法运算:通过执行多个整数乘法指令来生成中间结果,并且关于中间结果以及至少一个浮点操作数执行专用浮点乘法累加指令以生成最终浮点乘法结果。例如,在一个特定方面,存储器532存储指令,以使处理器510执行图3的方法300、图4的方法400或其任何组合。
结合所公开的示例,一种装置包括:用于执行多个整数乘法指令来生成中间结果的部件。例如,用于执行多个整数乘法指令的部件可以对应于图1的整数乘法器112、用以执行多个整数乘法指令的一个或多个其他电路或器件,或其任何组合。
该装置还包括用于关于中间结果以及至少一个浮点操作数来执行专用浮点乘法累加指令,以生成最终浮点乘法结果的部件。例如,用于执行专用浮点乘法运算的部件可以对应于图1的浮点乘法器114、用以执行专用浮点乘法累加指令的一个或多个其他电路或器件或其任何组合。
在一些实现中,该装置包括用于用多个整数乘法指令、以及专用浮点乘法累加指令来替换浮点乘法指令的部件。例如,该装置可以包括图1的指令转译器102(例如,解码器),被配置为使用多个整数乘法指令、以及专用浮点乘法累加指令来替换浮点乘法指令的一个或多个其他电路或器件,或其任何组合。
在一些实现中,该装置包括用于存储中间结果的部件,并且中间结果对应于第三值、第二值、以及第一值的长度减小的版本之和。例如,用于存储中间结果的部件可以对应于一个或多个寄存器(例如,图1的寄存器文件126)、一个或多个其他锁存器、触发器、存储器设备(例如,随机存取存储器(RAM))、或被配置为存储中间结果的其他电路或器件或其任何组合。
本领域技术人员将进一步理解,结合本文所公开的实施例描述的各种例示性逻辑块、配置、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或其组合。上文已整体上就其功能性描述了各种例示性组件、块、配置、模块、电路和步骤。将这种功能性实现为硬件还是软件取决于特定应用和施加在整个系统上的设计约束。技术人员可以针对每个特定应用,以变化的方式来实现所描述的功能性,但是这样的实现决策不应被解释为导致脱离本公开的范围。
结合本文所公开的实施例描述的方法或算法的各部分可以直接以硬件、由处理器执行的软件模块或两者的组合来体现。软件模块可以驻留在随机存取存储器(RAM)、闪速存储器、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、寄存器、硬盘、可移动磁盘、只读光盘存储器(CD-ROM)或本领域已知的任何其他形式的存储介质中。示例性非暂态(例如,有形)存储介质耦合到处理器,使得处理器可以从存储介质读取信息并将信息写入存储介质。备选地,存储介质可以集成到处理器。处理器和存储介质可以驻留在专用集成电路(ASIC)中。ASIC可以驻留在计算设备或用户终端中。备选地,处理器和存储介质可以作为分立组件驻留在计算设备或用户终端中。
提供对所公开的实施例的先前描述,以使得本领域技术人员能够做出或使用所公开的实施例。对这些实施例的各种修改对于本领域技术人员将是显而易见的,并且在不脱离本公开的范围的情况下,本文中定义的原理可以应用于其他实施例。因此,本公开内容不旨在限于本文中所示的实施例,而是应被赋予与如所附权利要求书所限定的原理和新颖性特征相一致的最大范围。

Claims (20)

1.一种处理器,包括:
整数乘法器,被配置为执行整数乘法指令来将浮点乘法运算的至少一个浮点操作数的有效数字位相乘;以及
浮点乘法器,被配置为关于所述浮点乘法运算的中间结果以及所述至少一个浮点操作数来执行专用浮点乘法累加指令,以生成最终浮点乘法结果。
2.根据权利要求1所述的处理器,其中所述整数乘法指令包括以下至少一项:
第一指令,用以执行第一操作数的低阶有效数字位与第二操作数的低阶有效数字位的整数乘法以生成第一值;
第二指令,用以执行所述第一操作数的所述低阶有效数字位与所述第二操作数的高阶有效数字位的整数乘法以生成第二值;或者
第三指令,用以执行所述第二操作数的所述低阶有效数字位与所述第一操作数的高阶有效数字位的整数乘法以生成第三值。
3.根据权利要求2所述的处理器,进一步包括寄存器,被配置为存储所述中间结果,并且其中所述中间结果对应于所述第三值、所述第二值与所述第一值的长度减小的版本之和。
4.根据权利要求3所述的处理器,其中所述中间值包括专用位,所述专用位指示所述第一值的所述长度减小的版本是否是不精确的。
5.根据权利要求1所述的处理器,其中所述浮点乘法器被配置为通过以下操作来执行所述专用浮点乘法累加指令:
执行包括将第一操作数的高阶有效数字位与第二操作数的高阶有效数字位相乘的浮点乘法,以生成浮点值的高阶有效数字位;以及
将所述高阶有效数字位与所述中间值累加,以生成所述最终浮点乘法结果。
6.根据权利要求1所述的处理器,进一步包括解码器,被配置为用一组指令来替换所接收的浮点乘法指令,所述一组指令包括多个整数乘法指令以及所述专用浮点乘法累加指令。
7.根据权利要求6所述的处理器,其中所述一组指令进一步包括可执行以进行以下操作的指令:
确定所述浮点乘法运算的第一操作数是否是非规格的;以及
响应于确定所述第一操作数是非规格的、并且所述浮点乘法运算的第二操作数的指数大于阈值,修改所述第一操作数或所述第二操作数中的至少一项的值。
8.一种在处理器处执行浮点乘法运算的方法,所述方法包括:
执行多个整数乘法指令以生成中间结果;以及
关于所述浮点乘法运算的所述中间结果以及至少一个浮点操作数来执行专用浮点乘法累加指令,以生成浮点乘法结果。
9.根据权利要求8所述的方法,其中所述多个整数乘法指令包括:
第一指令,用以执行第一操作数的低阶有效数字位与第二操作数的低阶有效数字位的整数乘法以生成第一值;
第二指令,用以执行所述第一操作数的所述低阶有效数字位与所述第二操作数的高阶有效数字位的整数乘法以生成第二值;以及
第三指令,用以执行所述第二操作数的所述低阶有效数字位和所述第一操作数的高阶有效数字位的整数乘法以生成第三值。
10.根据权利要求9所述的方法,其中所述中间结果对应于所述第三值、所述第二值与所述第一值的长度减小版本之和。
11.根据权利要求10所述的方法,其中所述中间值包括专用位,所述专用位指示所述第一值的所述长度减小版本是否是不精确的。
12.根据权利要求8所述的方法,其中执行所述专用浮点乘法累加指令使所述处理器:
执行包括将第一操作数的高阶有效数字位与第二操作数的高阶有效数字位相乘的浮点乘法,以生成浮点值的高阶有效数字位;以及
将所述高阶有效数字位与所述中间值累加,以生成所述最终浮点乘法结果。
13.根据权利要求8所述的方法,进一步包括:在执行所述多个整数乘法指令之前:
接收浮点乘法指令;以及
用所述多个整数乘法指令、以及所述专用浮点乘法累加指令来替换所述浮点乘法指令。
14.根据权利要求13所述的方法,进一步包括:响应于接收到所述浮点乘法指令:
确定所述浮点乘法运算的第一操作数是否是非规格的;以及
响应于确定所述第一操作数是非规格的、并且所述浮点乘法运算的第二操作数的指数大于阈值,修改所述第一操作数或所述第二操作数中的至少一项的值。
15.一种装置,包括:
用于执行多个整数乘法指令,以生成中间结果的部件;以及
用于关于所述中间结果以及至少一个浮点操作数来执行专用浮点乘法累加指令,以生成最终浮点乘法结果的部件。
16.根据权利要求15所述的装置,进一步包括:用于用所述多个整数乘法指令、以及所述专用浮点乘法累加指令来替换浮点乘法指令的部件。
17.根据权利要求15所述的装置,其中所述多个整数乘法指令包括:
第一指令,用以执行第一操作数的低阶有效数字位与第二操作数的低阶有效数字位的整数乘法以生成第一值;
第二指令,用以执行所述第一操作数的所述低阶有效数字位与所述第二操作数的高阶有效数字位的整数乘法以生成第二值;以及
第三指令,用以执行所述第二操作数的所述低阶有效数字位与所述第一操作数的高阶有效数字位的整数乘法以生成第三值。
18.根据权利要求17所述的装置,进一步包括:用于存储所述中间结果的部件,并且其中所述中间结果对应于所述第三值、所述第二值和所述第一值的长度减小版本之和。
19.一种方法,包括:
将多操作数乘法运算的第一操作数标识为非规格的;以及
响应于确定所述多操作数运算的第二操作数的指数大于阈值,修改所述第一操作数或所述第二操作数中的至少一项的值。
20.根据权利要求19所述的方法,进一步包括:
使用所述第一操作数或所述第二操作数中所述至少一项的经修改的所述值,来执行多个整数乘法指令以生成中间结果;以及
关于所述中间结果以及至少一个浮点操作数来执行专用浮点乘法累加指令,以生成最终浮点乘法结果。
CN201880081659.0A 2017-12-21 2018-12-11 浮点乘法运算处理的系统和方法 Active CN111492343B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/851,390 US10346133B1 (en) 2017-12-21 2017-12-21 System and method of floating point multiply operation processing
US15/851,390 2017-12-21
PCT/US2018/065034 WO2019125835A1 (en) 2017-12-21 2018-12-11 System and method of floating point multiply operation processing

Publications (2)

Publication Number Publication Date
CN111492343A true CN111492343A (zh) 2020-08-04
CN111492343B CN111492343B (zh) 2021-03-12

Family

ID=64949460

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880081659.0A Active CN111492343B (zh) 2017-12-21 2018-12-11 浮点乘法运算处理的系统和方法

Country Status (7)

Country Link
US (1) US10346133B1 (zh)
EP (1) EP3729257B1 (zh)
CN (1) CN111492343B (zh)
AU (1) AU2018388451B2 (zh)
BR (1) BR112020012183B1 (zh)
CA (1) CA3083043C (zh)
WO (1) WO2019125835A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463112A (zh) * 2020-11-19 2021-03-09 上海壁仞智能科技有限公司 点积累加方法及装置
WO2022170809A1 (zh) * 2021-02-09 2022-08-18 南方科技大学 一种适用于多精度计算的可重构浮点乘加运算单元及方法
WO2023042068A1 (en) * 2021-09-14 2023-03-23 International Business Machines Corporation Mixed signal circuitry for bitwise multiplication with different accuracies

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347511B2 (en) * 2019-05-20 2022-05-31 Arm Limited Floating-point scaling operation
WO2021073511A1 (zh) * 2019-10-14 2021-04-22 安徽寒武纪信息科技有限公司 用于浮点运算的乘法器、方法、集成电路芯片和计算装置
CN112732220A (zh) * 2019-10-14 2021-04-30 安徽寒武纪信息科技有限公司 用于浮点运算的乘法器、方法、集成电路芯片和计算装置
US11288220B2 (en) * 2019-10-18 2022-03-29 Achronix Semiconductor Corporation Cascade communications between FPGA tiles
WO2022178339A1 (en) * 2021-02-21 2022-08-25 Redpine Signals Inc Floating point dot product multiplier-accumulator
US11893360B2 (en) 2021-02-21 2024-02-06 Ceremorphic, Inc. Process for a floating point dot product multiplier-accumulator
US11983237B2 (en) 2021-02-21 2024-05-14 Ceremorphic, Inc. Floating point dot product multiplier-accumulator

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5267186A (en) * 1990-04-02 1993-11-30 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
EP0450803B1 (en) * 1990-04-02 1999-10-27 Advanced Micro Devices, Inc. Normalizing floating point processing unit
US8019805B1 (en) * 2003-12-09 2011-09-13 Globalfoundries Inc. Apparatus and method for multiple pass extended precision floating point multiplication
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
KR100834412B1 (ko) 2007-05-23 2008-06-04 한국전자통신연구원 모바일 멀티미디어 연산의 효율적인 처리를 위한 병렬 프로세서
US8214417B2 (en) * 2008-08-14 2012-07-03 Oracle America, Inc. Subnormal number handling in floating point adder without detection of subnormal numbers before exponent subtraction
US8180822B2 (en) 2008-09-03 2012-05-15 Oracle America, Inc. Method and system for processing the booth encoding 33RD term
US20130132452A1 (en) * 2011-11-22 2013-05-23 Ravi Korsa Method and Apparatus for Fast Computation of Integral and Fractional Parts of a High Precision Floating Point Multiplication Using Integer Arithmetic
US9519459B2 (en) 2014-06-20 2016-12-13 Wisconsin Alumni Research Foundation High efficiency computer floating point multiplier unit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5267186A (en) * 1990-04-02 1993-11-30 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
EP0450803B1 (en) * 1990-04-02 1999-10-27 Advanced Micro Devices, Inc. Normalizing floating point processing unit
US8019805B1 (en) * 2003-12-09 2011-09-13 Globalfoundries Inc. Apparatus and method for multiple pass extended precision floating point multiplication
CN107291419A (zh) * 2017-05-05 2017-10-24 中国科学院计算技术研究所 用于神经网络处理器的浮点乘法器及浮点数乘法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
AKKAS A等: "《DIGITAL SYSTEM DESIGN》", 1 September 2003 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112463112A (zh) * 2020-11-19 2021-03-09 上海壁仞智能科技有限公司 点积累加方法及装置
WO2022170809A1 (zh) * 2021-02-09 2022-08-18 南方科技大学 一种适用于多精度计算的可重构浮点乘加运算单元及方法
WO2023042068A1 (en) * 2021-09-14 2023-03-23 International Business Machines Corporation Mixed signal circuitry for bitwise multiplication with different accuracies

Also Published As

Publication number Publication date
CN111492343B (zh) 2021-03-12
EP3729257B1 (en) 2022-05-25
AU2018388451B2 (en) 2021-03-25
US20190196785A1 (en) 2019-06-27
US10346133B1 (en) 2019-07-09
CA3083043C (en) 2020-12-29
AU2018388451A1 (en) 2020-06-11
BR112020012183A2 (pt) 2020-11-24
WO2019125835A1 (en) 2019-06-27
CA3083043A1 (en) 2019-06-27
BR112020012183B1 (pt) 2021-09-14
EP3729257A1 (en) 2020-10-28

Similar Documents

Publication Publication Date Title
CN111492343B (zh) 浮点乘法运算处理的系统和方法
CN110036368B (zh) 用于执行算术运算以累加浮点数的装置及方法
US8239440B2 (en) Processor which implements fused and unfused multiply-add instructions in a pipelined manner
US9519460B1 (en) Universal single instruction multiple data multiplier and wide accumulator unit
KR100955557B1 (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
US9606770B2 (en) Multiply add functional unit capable of executing SCALE, ROUND, GETEXP, ROUND, GETMANT, REDUCE, RANGE and CLASS instructions
US11175891B2 (en) Systems and methods to perform floating-point addition with selected rounding
US9696964B2 (en) Multiply adder
KR102581403B1 (ko) 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법
JP2012069116A (ja) ベクトル浮動小数点引数削減
JP7368939B2 (ja) ルックアップテーブルを利用して加速化されたコンピューティングの方法及びシステム
EP3183645A1 (en) Emulation of fused multiply-add operations
EP3794443A1 (en) System and method of loading and replication of sub-vector values
TW202319909A (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
EP3516535A2 (en) Piecewise polynomial evaluation instruction
WO2016171823A1 (en) Division and root computation with fast result formatting
US8984039B2 (en) Residue-based error detection for a processor execution unit that supports vector operations
Tsen et al. A combined decimal and binary floating-point multiplier
WO2020161470A1 (en) Anchored data element conversion
CN113544638A (zh) 具有混合精度运算的处理单元
US11704092B2 (en) High-precision anchored-implicit processing
US9141586B2 (en) Method, apparatus, system for single-path floating-point rounding flow that supports generation of normals/denormals and associated status flags
US20130113543A1 (en) Multiplication dynamic range increase by on the fly data scaling

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant