CN110036368A - 用于执行算术运算以累加浮点数的装置及方法 - Google Patents
用于执行算术运算以累加浮点数的装置及方法 Download PDFInfo
- Publication number
- CN110036368A CN110036368A CN201780074115.7A CN201780074115A CN110036368A CN 110036368 A CN110036368 A CN 110036368A CN 201780074115 A CN201780074115 A CN 201780074115A CN 110036368 A CN110036368 A CN 110036368A
- Authority
- CN
- China
- Prior art keywords
- point
- fixed
- floating
- conversion
- circuit system
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000006243 chemical reaction Methods 0.000 claims abstract description 130
- 230000001186 cumulative effect Effects 0.000 claims abstract description 31
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 23
- 230000000295 complement effect Effects 0.000 claims description 19
- 230000005611 electricity Effects 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 4
- 238000007689 inspection Methods 0.000 claims 1
- 238000012544 monitoring process Methods 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 3
- 238000007792 addition Methods 0.000 description 10
- 238000009825 accumulation Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 108091026890 Coding region Proteins 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- AZFKQCNGMSSWDS-UHFFFAOYSA-N MCPA-thioethyl Chemical compound CCSC(=O)COC1=CC=C(Cl)C=C1C AZFKQCNGMSSWDS-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000011773 genetically engineered mouse model Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供用于执行算术运算以累加浮点数的装置及方法。装置包含用以执行算术运算的执行电路系统,及译码器电路系统,此译码器电路系统用以译码指令序列以产生控制信号来控制由执行电路系统执行的算术运算。提供转换及累加指令,且译码器电路系统响应于译码指令序列内的此种转换及累加指令,以产生一个或多个控制信号来控制执行电路系统。具体而言,执行电路系统响应于这种控制信号以将由转换及累加指令识别的至少一个浮点操作数转换成具有M分数位的对应N位定点操作数,其中M小于N且M取决于浮点操作数的格式。另外,执行电路系统累加每个对应N位定点操作数及由转换及累加指令识别的P位定点操作数,以产生P位定点结果值,其中P大于N且亦具有M分数位。此处以关联的方式提供了用于累加浮点数的快速且有效的机制,并由此使得产生可再生且正确的结果,而与累加浮点数的顺序无关。
Description
技术领域
本方法是关于用以执行浮点数的累加的装置及方法。
背景技术
通常在数据处理系统中使用浮点(floating-point;FP)表示。浮点数包括有效数及指示有效数的位的有效位的指数。这允许使用有限数目的位表示大范围内的数值。然而,伴随浮点运算的问题为计算通常为非关联性的。例如,当累加若干浮点值时,每次另一值添加至先前加法/减法的结果(此结果经舍入且正规化),或自先前加法/减法的结果减去,其意味总体结果根据累加值的顺序而不同。因此,和为非可再生的,除非以完全相同的顺序完成。为了产生可再生的结果,必须通常顺序地执行一系列加法或减法,其可能使浮点运算相对缓慢。
提供用于有效处理浮点数的累加的改良方法是值得期待的。
发明内容
在一个示例性配置中,提供一种装置,此装置包含:执行电路系统,用以执行算术运算;及译码器电路系统,用以译码指令序列以产生控制信号来控制由执行电路系统执行的算术运算;译码器电路系统响应译码序列内的转换及累加指令以产生一个或多个控制信号来控制执行电路系统,以将由转换及累加指令识别的至少一个浮点操作数转换为具有M分数位的对应N位定点操作数,其中M小于N且M取决于浮点操作数的格式,以及用以累加每个对应N位定点操作数及由转换及累加指令识别的P位定点操作数,以产生P位定点结果值,其中P大于N且具有M分数位。
在另一示例性配置中,提供一种在装置内执行浮点数的累加的方法,此装置具有用以执行算术运算的执行电路系统,及译码器电路系统,此译码器电路系统用以译码指令序列以产生控制信号来控制由执行电路系统执行的算术运算,此方法包含:在译码器电路系统内译码序列内的转换及累加指令以产生一个或多个控制信号;以及响应于该一个或多个控制信号来控制执行电路系统以将由转换及累加指令识别的至少一个浮点操作数转换为具有M分数位的对应N位定点操作数,其中M小于N且M取决于浮点操作数的格式,以及用以累加每个对应N位定点操作数及通过转换及累加指令识别的P位定点操作数,以产生P位定点结果值,其中P大于N且具有M分数位。
在又一示例性配置中,提供一种装置,此装置包含:执行构件,用于执行算术运算;及译码器构件,用于译码指令序列以产生控制信号来控制通过执行构件执行的算术运算;此译码器构件用于译码序列内的转换及累加指令以产生一个或多个控制信号;以及执行构件用于回应于该一个或多个控制信号,将由转换及累加指令识别的至少一个浮点操作数转换为具有M分数位的对应N位定点操作数,其中M小于N且M取决于浮点操作数的格式,以及用以累加每个对应N位定点操作数及由转换及累加指令识别的P位定点操作数,以产生P位定点结果值,其中P大于N且具有M分数位。
附图说明
如附图所示,下面仅以举例方式参照本发明的实施例进一步说明本发明的技术,其中:
图1为根据一个实施例的系统的方块图;
图2A及图2B示意地图示在一个实施例中使用的转换及累加指令;
图3图示根据一个实施例的16位浮点(FP16)至定点转换方块;
图4图示根据一个实施例的图3的FP16至定点转换方块可以如何连接至执行电路系统内的累加电路系统;
图5为图示在一个实施例中多个FP16至定点转换方块可以如何连接至累加电路系统以响应于单个转换及累加指令使得多个浮点值得以累加的图表;
图6为图示经由使用转换及累加指令以及用以将最终结果值转换回浮点格式的定点至浮点转换指令,根据一个实施例执行的浮点累加运算的流程图;以及
图7图示根据一个实施例的SIMD实施方式。
具体实施方式
在参考附图论述实施例之前,提供了对实施例的以下描述。
在一个实施例中,提供一种装置,此装置具有用于执行算术运算的执行电路系统,及译码器电路系统,此译码器电路系统用于译码指令序列以产生控制信号来控制通过执行电路系统执行的算术运算,进而致使装置执行由指令序列所需的运算。根据一个实施例,提供转换及累加指令,其当在指令序列内被译码器电路系统遇到时,致使译码器电路系统译码转换及累加指令以产生用于执行电路系统的一个或多个控制信号。具体而言,这些或一个控制信号致使执行电路系统将通过转换及累加指令识别的至少一个浮点操作数转换成具有M分数位的对应N位定点操作数。M小于N且M取决于浮点操作数的格式。由译码器电路系统产生的一个或多个控制信号不仅致使上述自浮点格式至定点格式的转换发生,而且致使执行电路系统累加在转化过程中产生的每个N位定点操作数及由转换及累加指令识别的P位定点操作数,以产生P位定点结果值。P大于N且具有M分数位。
每个此种转换及累加指令可以指定一个或多个浮点操作数。通过将每个浮点操作数转换成定点格式,随后以定点格式执行累加,这使得累加比使用浮点运算的累加更快地执行,并且累加亦为关联的。另外,通过累加N位定点操作数与P位定点操作数,其中P大于N,这使得由对应浮点操作数的转换产生的多个N位定点操作数累加于P位定点表示中,而无溢出的风险。可发生而无任何溢出的潜在风险的累加的次数将取决于N及P的值。
仅举例而言,如若输入浮点操作数为16位浮点操作数(本文亦称作FP16操作数),任意FP16值可表示为41位(即,N为41)的定点表示;以及如若例如P为64,这种41位定点值的223可累加在64位表示内,而无溢出的任何危险。如前所述,分数位M的数目取决于使用的定点格式。再次假设,例如其中使用FP16值的情况,则最小可能的FP16值为2-24,并由此在41位定点表示内最低有效24位可以用作分数位。
通过以上述方式提供用以转换及累加浮点值的单个指令,这提供用于以关联的方式累加浮点值的尤其有效机制,因此允许产生可再生且正确的结果而与累加浮点数的顺序无关。因此,这支持浮点累加处理的并行处理,使得当与使用浮点累加方法相比时可达成有效加速。
尽管浮点操作数原则上可以任意浮点格式提供,但已发现当浮点操作数为16位浮点操作数时此方法尤其有益。具体而言,以定点格式表示此种浮点操作数所需的位数相对较小,且在现代数据处理系统中显著小于标准寄存器大小。例如,通常使用64位寄存器,由此处理64位操作数。因为FP16值可经转换为41位定点表示,但是许多这种浮点值可以累加进64位宽执行管线内。
在一个实施例中,装置进一步包含当执行所述算术运算时执行电路系统可存取的一组寄存器。转换及累加指令可以具有识别该组寄存器内的至少一个第一源寄存器的第一寄存器识别符字段,该至少一个第一源寄存器含有至少一个浮点操作数;及识别该组寄存器内的第二源寄存器的第二寄存器识别符字段,第二源寄存器含有P位定点操作数。尽管不止一个第一源寄存器可用以识别待转换为定点表示且随后与定点操作数累加进第二源寄存器中的所需浮点操作数,但在许多实例中单个第一源寄存器将足以识别在执行指令期间待处理的浮点操作数。例如,假设64位寄存器、四个FP16浮点操作数可在单个64位寄存器内指定,因此单指令可用以转换四个FP16值并将产生的定点表示与第二源寄存器的内容累加。
尽管由转换及累加指令的执行产生的P位定点结果值可储存在任意所要寄存器内,但在一个实施例中,第二源寄存器亦用作定点结果值的目标寄存器,以及因此在执行转换及累加指令时,输入P位定点操作数将由指令的执行而产生的结果值改写。
在一个实施例中,装置可以采取SIMD(单指令多数据)装置的形式。因此,执行电路系统可以采取提供多个并行处理的路径的SIMD电路系统的形式,其中每条路径具有P位的宽度。在此种实施例中,转换及累加指令可以采取SIMD指令的形式,对于多条路径的多条路径的每一者,此SIMD指令识别待转换为对应N位定点操作数的至少一个浮点操作数,及待累加至其的对应N位定点操作数的每一者的P位定点操作数。
此种方法因此通过允许累加浮点操作数的有效并行处理而提供用于进一步效能改良的潜能。在其中SIMD执行电路系统提供并行处理的L条路径的实施例中,由转换及累加指令指定的第一和第二源寄存器可以为Lx64位寄存器,以及转换及累加指令识别对于L路径的每一路径含有高达四个16位浮点数的第一源寄存器。执行电路系统随后响应于一个或多个控制信号,此一个或多个控制信号通过译码器电路系统响应于译码转换及累加指令而产生,以在多条路径的每一路径内执行将高达四个16位浮点数的每一者转换成对应定点操作数,以及累加每个对应定点操作数及含在第二源寄存器内的64位定点操作数而产生,以产生含在含有来自每条路径的结果值的Lx64位结果内的64位结果值。因此,通过这种方法,多个结果值可在Lx64位结果内俘获并因此写入执行电路系统可存取的寄存器的一者中。
可执行此种转换及累加指令的多个实例以执行大量浮点操作数的累加,其中结果以定点表示来表示。一旦已获得最终结果,则在一个实施例中,结果的产生的定点表示可转换回所要浮点格式的浮点数。例如,在一个实施例中,指令序列进一步包含定点至浮点转换指令,该指令当通过译码器电路系统译码时,致使执行电路系统将由转换及累加指令的更多实例的一者的执行获得的定点结果值转换成具有由定点至浮点转换指令指定的浮点格式的浮点结果值。应注意,结果转换成其的浮点格式不一定为与累加的初始输入浮点操作数相同的浮点格式。例如,可以使用上述方法(结果值将不再符合FP16格式)累加足够数目的16位浮点操作数,而不执行舍入运算。然而,这可轻易地符合FP32(32位浮点)格式,例如因此定点至浮点转换指令可将定点结果值转换成FP32值。
在一个实施例中,输入浮点操作数为标准浮点表示。然而,在替代实施例中,由转换及累加指令识别的至少一个浮点操作数可以包含多个浮点值的未舍入乘积。这将意味输入浮点表示比标准浮点表示具有更多位。然而,执行电路系统可将浮点表示转换成适宜大小的定点表示,随后将此类转换值的多个实例累加进更宽的定点表示中。或者,由转换过程产生的定点表示可在累加之前舍位,以便避免用以表示定点累加值的位数的增加。
执行电路系统可采取各种形式。然而,在一个实施例中,执行电路系统包含:提供一个或多个转换方块的转换电路系统,每个转换方块经布置以接收由转换及累加指令识别的输入浮点操作数及用以产生对应N位定点操作数;以及累加电路系统,其用以执行累加运算以累加每个对应N位定点操作数及该P位定点操作数以产生该P位定点结果值。
每个转换方块可采取各种形式,但在一个实施例中,每个转换方块包含:有效数产生电路系统,用以产生来自输入浮点操作数的分数位的有效值及输入浮点操作数的指数位的逻辑组合;以及移位电路系统,该移位电路系统响应于为规范浮点值的输入浮点值,用以对有效数值执行左移运算达一移动量,此移动量取决于由该指数位指示的指数值,以产生输出值。如若需要,输出值随后可在累加之前扩充至P位格式。
响应于转换及累加指令执行的累加可包括将产生的转换定点值添加至由转换及累加指令指定的P位定点操作数,但在其他实施例中可涉及加法或者减法任一者。为了使得能够实现使用累加电路系统内的加法电路计算的减法,在一个实施例中每个该转换方块另外包含:一的补码电路系统,用以当浮点操作数的符号位指示输入浮点操作数为负数时对输出值执行一的补码运算。在这种实施例中,浮点操作数的符号位可以用作累加电路系统的进位位。因此,如若浮点操作数为正数,则将零的进位值提供至累加电路系统;而如若浮点操作数为负值,则将1的进位位提供至累加电路系统。
累加电路系统可以各种方式布置,但在一个实施例中经布置以执行每个对应N位定点操作数及该P位定点操作数的二的补码加法,以产生该P位定点结果值。
如前所述,在许多实施例中,将大量转换浮点操作数累加进P位定点表示内,而无溢出的任何风险将是可能的。然而,为调节其中可能发生溢出的情况,在一个实施例中累加电路系统可包括溢出检测电路系统,其用以当累加电路系统的最高有效位位置的进位不等于来自该最高有效位位置的进位输出时检测溢出条件。溢出的检测可采取许多步骤。例如,在一个实施例中,可由装置用信号发出溢出异常。
具体实施例现将参考附图描述。
浮点(floating-point;FP)为使用少量位处理实数的有用方法。IEEE 754-2008FP标准提出FP数的多个不同格式,其中的一些为二进制64(亦称为双倍精度,或DP)、二进制32(亦称为单倍精度,或SP)、及二进制16(亦称为半精度,或HP)。数目64、32及16指每个格式所需的位的数目。
表示
FP数非常类似于科学课程中教示的“科学计数法”,而不是我们写的两百万的负数-2.0x 106。此数目的部分为符号(在负数的情况下)、有效数(2.0)、指数的基数(10)及指数(6)。这些部分的全部在FP数中具有类似项,尽管存在差异,但其最重要部分为储存为二进制数的组成部分,以及指数的基数总为2。
更确切而言,所有FP数包括符号位、一些数目的偏移指数位及一些数目的分数位。具体而言,我们感兴趣的格式包括以下位:
格式 | 符号 | 指数 | 分数 | 指数偏移 |
DP[63:0] | 63 | 62:52(11位) | 51:0(52位) | 1023 |
SP[31:0] | 31 | 30:23(8位) | 22:0(23位) | 127 |
HP[15:0] | 15 | 14:10(5位) | 9:0(10位) | 15 |
对于负数符号为1及对于正数符号为0。包括0的每个数具有符号。
偏移指数,其意味真指数不同于储存在数中的指数。例如,偏移SP指数为8位长并在0至255的范围中。指数0及255为特殊情况,但所有其他指数具有偏移127,其意味着真指数为小于偏移指数的127。最小偏移指数为1,其对应于-126的真指数。最大偏移指数为254,其对应于127的真指数。HP及DP指数与在上表中指示的偏移值以相同方式工作。
SP指数255(或DP指数2047,或HP指数31)保留用于无限数及称作NaNs的特殊符号(而非数字)。无限数(其可为正数或负数)具有零分数。具有指数255及非零分数的任意数为NaN。无限数提供饱和值,所以其实际上意味“计算产生的数字大于我们可以用这种格式表示的数”。对于在实数上没有数学定义的操作返回NaN,例如零除或取负数的平方根。
以任何格式的指数零保留为次规范数及零。规范数表示值:
-1符号×1.分数×2e
其中e为由偏移指数计算的真指数。术语1.分数称作有效数,且1没有储存为FP数的部分,而改为从指数推测。除零及最大指数之外的全部指数指示形式1.分数的有效数。指数零指示形式0.分数的有效数,以及对于给定格式真指数等于1偏差。这种数称为次规范(历史上这些数称为非规范,但现代用法更倾向术语次规范)。
具有等于零的指数及分数两者之数为零。
下表具有以HP格式的一些示例数。实数为二进制的,其中‘_’字符经添加以增大可读性。应注意,次规范条目(表的第4行,具有零指数)在前一行中产生不同于规范条目的有效数。
符号 | 5位指数 | 10位分数 | 11位有效数 | 值 |
0 | 01111 | 00_0000_0000 | 100_0000_0000 | 1.0×2<sup>0</sup> |
1 | 01110 | 10_0000_0000 | 110_0000_0000 | -1.1×2<sup>-1</sup> |
符号 | 5位指数 | 10位分数 | 11位有效数 | 值 |
0 | 00001 | 10_0000_0000 | 110_0000_0000 | 1.1×2<sup>-14</sup> |
0 | 00000 | 10_0000_0000 | 010_0000_0000 | 0.1×2<sup>-14</sup> |
1 | 11111 | 00_0000_0000 | -无限数 | |
0 | 11111 | 00_1111_0011 | NaN |
FP实施的复杂性的大部分起因于次规范,因此它们经常由微码或软件处理。一些处理器处理硬件中的次规范,进而相比于软件或微码实施,将这些运算加速10倍至100倍。
整数、定点、浮点
处理符号的FP方式称作符号数值,并且它与整数储存在计算机中(二的补码)的常用方式不同。在符号数值表示中,同一数的正负版本仅在符号位中不同。包括符号位及3个有效数字元的4位符号数值整数将表示加一与减一,如下:
+1=0001
-1=1001
在二的补码表示中,n位整数i由二进制n+1位值2n+i的低阶n位表示,所以4位二的补码整数将表示加一与减一,如下:
+1=0001
-1=1111
二的补码格式实质上对于带符号的整数为通用的,因为它简化了计算机运算。
定点数看起来完全像整数,但实质上表示具有若干分数位的值。传感器数据通常为定点格式,以及存在广泛采用FP之前写入的大量定点软件。定点数是非常繁琐的工作,因为程序员必须跟踪“二进制点”,即数的整数及小数部分之间的分隔符,并且亦必须不断地移动数字以保持位在正确的位置。FP数没有这个困难,所以希望能够在定点数与FP数之间进行转换。能够转换亦意味着我们可仍然使用定点软件及数据,但当写入新软件时我们并不限于定点。
FP数不是实数
很容易将FP数看作实数,但它们根本上不同,即使是最基本的属性:
1.其为不关联的。例如,在SP中我们可添加3个数字并返回1百万或零,或许不是人们认为舍入误差的情况:
(245+-245)+220=220
245+(-245+220)=0
2.其不服从分配规律。此外,在SP中:
3,000,001*(4.00001+5.00001)=0x4bcdfe83
(3,000,001*4.00001)+(3,000,001*5.00001)=0x4bcdfe82以及事情在溢出存在的情况下变得更加糟糕:
250*(278-277)=2127
(250*278)-(250*277)=无限数
3.由于IEEE NaN规则,没有乘法或加法身份。一或零作为数值的身份工作。
用以考虑FP数的一个有用方式为假定它们为非常长的定点数,其中至多一些(对于HP为11)连续位可为非零。例如,非无限HP数可以在30个位置的任何一个中具有有效数的第一位,并且第一位后跟10个其他分数位,并且有一个符号位,因此任何有限的HP数皆可以表示为30+10+1=41位定点数。
根据下文描述的实施例,提供转换及累加指令,该指令当由装置执行时,致使由转换及累加指令识别的一个或多个浮点操作数的每一操作数转换成具有M分数位的对应N位定点操作数,其中M小于N且M取决于浮点操作数的格式。指令的执行另外致使产生的定点操作数的每一者与亦由转换及累加指令识别的P位定点操作数累加,以产生P位定点结果值,其中P大于N且具有M分数位。如从以下描述的实施例清晰可见,此处以关联的方式提供了用于累加浮点数的尤其快速且有效的机制,由此使得能够产生可再生且正确的结果,而与累加浮点数的顺序无关。
图1图标根据一个实施例的装置。译码器电路系统10经布置以接收自内存提取的指令流,并译码每个指令以产生一个或多个控制信号来控制通过执行电路系统20执行的操作。由译码器电路系统产生的控制信号选择性地经由发布队列15转发至执行电路系统,在发布队列15中各译码指令在发布至执行电路系统内的适宜部件之前可以暂时驻留。执行电路系统可包含许多执行单元,例如用于执行算术运算的算术逻辑单元(arithmetic logicunit;ALU)、用于执行浮点运算的浮点单元(floating-point unit;FPU)、用于执行乘法累加运算的乘法累加(multiply-accumulate;MAC)单元等等。执行电路系统亦可包括用于将浮点数转换成定点表示,及类似地将定点数转换成浮点表示的部件。
如下文将更详细地论述,当译码器电路系统10译码上述转换及累加指令的一者时,这致使转换电路系统25用以将由指令指定的一个或多个浮点操作数的每一者转换成对应定点操作数。另外,累加电路系统30(其可设置在执行电路系统的任意适宜指定单元内,例如ALU内)随后用以使用由转换电路系统25产生的定点操作数及由转换及累加指令识别的定点操作数的每一者作为输入来执行累加运算,从而引起定点结果值的产生。
如在图1中图标,执行电路系统20可对一组工作寄存器35进行存取,其中可储存源操作数及目标操作数。因此,例如在一个实施例中,转换及累加指令可指定含有将转换为定点格式的一个或多个浮点操作数的一个源寄存器,并且亦指定含有待在累加运算中使用的输入定点操作数的另一源寄存器。如若需要,亦可指定单独的目标寄存器,但在一个实施例中,目标寄存器与含有输入定点操作数的源寄存器相同。
图2A示意地图示了根据一个实施例的设置在转换及累加指令内的字段。在此实例中,假定指令仅指定单个输入浮点操作数而非指定多个输入浮点操作数,以及因此指令的此变体在本文中将称作纯量转换及累加指令。字段52具有指示指令为指令的纯量变体的数值,及操作码54包含识别指令为转换及累加指令的许多位。字段56指定在其内指定单个浮点操作数的源寄存器。尽管原则上浮点操作数可为任意浮点格式,但对于本文描述的实施例,将假定输入浮点操作数为FP16浮点操作数(本文亦称作HP浮点操作数)。源寄存器可以具有足以储存浮点操作数的任意适宜大小。然而,在一个实施例中,假定寄存器档案35内的寄存器为64位寄存器,以及因此FP16值将由在字段56中识别的源寄存器内的某子集的位指定。通常将预定源寄存器内的哪个子集的位识别FP16值。
字段58识别含有64位定点值的第二源寄存器。在一个实施例中,对于由于执行转换及累加运算而产生的结果,源寄存器亦用作目标寄存器。
如亦在图2A中图标,可在指令内设置一个或多个可选择的字段59,例如用以识别指定需要存在以便执行指令的条件的条件代码。
如随后参看剩余附图更详细地描述,当执行转换及累加指令时,转换电路系统25用以将在源寄存器1中指定的FP16值转换成定点格式。具体而言,在一个实施例中,FP16值转换成具有24分数位的41位定点值。任意FP16值可转换成表示在41位内的定点格式。应注意,这显著小于设置在寄存器内的64位,以及因此当执行累加运算以累加产生的定点表示的FP16值与在源寄存器2中指定的64位定点值时,非常不可能发生溢出,除非源寄存器2中的值已经相对接近于64位格式中可表示的最大值。如随后论述,如若需要检测溢出条件,可仍然提供溢出检测电路系统。
图2B图标指令的另一形式,其中多个输入浮点操作数在第一源寄存器内指定。因此,归因于在源寄存器1内指定的输入浮点值的向量,转换及累加指令的格式将在本文称作向量转换及累加指令。具体而言,在一个实施例中,源寄存器为64位寄存器,由此根据在图2B中图标的指令的向量变体,字段66识别含有四个FP16值的源寄存器。
因此,指令60的向量变体具有字段62,其设置以将指令识别为指令的向量变体,以及字段64中的操作码识别指令为转换及累加指令,并识别四个浮点值与由字段66识别的源寄存器一起指定。字段68类似于图2A的字段58,并识别64位定点值用作累加运算的输入。此外,如若需要提供可选择的字段69,例如用以指定条件代码。
应理解,可提供指令的其他变体。例如,可提供另一向量变体,其中字段66中的源寄存器识别多于一个,但小于四个的FP16值,例如识别两个FP16值。操作码随后将识别转换及累加指令将在源寄存器1内指定的两个FP16值上运行。
图3为图示了可以提供以在图1的转换电路系统25内实施FP16至定点转换方块的部件的方块图。这个方块在指定为操作数A 105的单个输入FP16值上运行。如从HP浮点值的先前论述将显而易见,FP16操作数将为16位值,其中位15为符号位,位14至位10提供指数值,且位9至位0识别分数部分。如在图3中图标,将分数部分提供至左移电路系统115,且五个指数位是通过OR电路系统110经历逻辑或操作以产生单个位输出。假定浮点值为规范浮点值,来自OR电路系统110的输出将为逻辑一值,其当前置至10位分数时产生输入至左移电路系统115的11位有效数值。在浮点操作数为次规范的情况下,逻辑零值随后将自或电路系统110输出且前置至分数位以形成输入至左移电路系统115的有效数。
布置左移电路系统115,当输入浮点值为规范浮点值时,以及因此将输入至左移电路系统的有效数的最高位设置为逻辑一值,以执行左移操作达一量,此量由自指数减去从或门极110输出的规范值(即1)来决定。当数值“expa-规范”为零时对于次规范浮点输入不执行左移。可执行的最大左移量为30个位,以及因此左移电路系统的输出表示为41位值。
在此后描述的实施例中,累加电路系统在64位输入上运行,以及因此来自FP16至定点方块100的41位输出在一个实施例中被符号扩充至64位。达成此的方式为在将产生的64位值输入至一的补码电路系统120中之前将23个零前置至移位器115的输出。
如若输入浮点值的符号在逻辑0值处,则指示浮点值为正数,则不用通过一的补码电路系统120进行调整,并且输入64位值输出为64位值“fixeda”。符号位亦输出为用于累加电路系统的进位位“cina”,并且应理解对于正数,进位位因此为零。然而,如若符号位指示浮点数为负的,则通过电路系统120执行一的补码操作以产生至电路系统的输入的一的补码版本,其中一的补码版本输出为值fixeda。在这种情况下,进位值cina经设置为逻辑一值。通过此方法,应理解,下游累加电路系统可执行二的补码加法,以及将准确地从由转换及累加指令指定的输入定点操作数减去定点表示的浮点数,在此情况下,浮点操作数为负数。类似地,如若浮点操作数为正数,则通过累加电路系统执行的二的补码加法准确地将定点表示的浮点数添加至输入定点操作数。
图4为图示了在图3中图示的FP16至固定区块电路系统100可以如何耦接至累加电路系统以执行由描述的实施例的转换及累加指令所需的转换及累加运算的方块图。如在图4中图示,将输入浮点操作数105提供至以先前参考图3论述的方法操作的FP16至定点区块100,以及因此输出64位值fixeda(其如前所述仅为FP16值的41位定点表示的符号扩展版本),以及进位值cina。fixeda值提供为至累加电路系统150的一个输入,其接收由转换及累加指令指定的64位定点操作数作为其其他输入。如前论述,在一个实施例中,含有该值的源寄存器155亦充当目标寄存器,以及因此如图4中图标,寄存器155亦连接至累加电路系统150的输出。因此,应理解,累加电路系统150执行两个64位输入值的二的补码加法,其中对于加法,fixeda值将表示为来自左移电路系统115的零扩充输出及进位位将为零;而对于减法,fixeda值将为来自左移电路系统115的零扩充输出的一的补码,以及进位值将设置为一。
如前所述,因为定点表示的FP16浮点值可表示为41位,所以许多FP16值可累加进64位宽定点表示中。具体而言,这种数的223可累加进64位定点表示中而没有溢出的任何危险。然而,溢出检测可通过提供溢出标记160而轻易地提供,如若至64位累加器150的高阶位的进位不等于自高阶位位置的进位输出,则设置溢出标记160。当设置溢出标记160时,可在装置内触发动作以处理溢出。例如,在一个实施例中可产生溢出异常。
尽管在一个实施例中通过转换及累加指令识别的每个浮点操作数为标准浮点格式,但在另一实施例中每个浮点操作数可为非标准格式;并且具体而言,例如可以包含多个浮点值的未舍入乘积。当以这种未舍入形式时,输入浮点操作数将包含信息的更多位。因此,当这样的浮点位转换为定点形式时,定点表示将亦通常包含更多位。在一个实施例中这可以通过在浮点至定点转换方块中具有更宽数据路径以调节在浮点格式内提供的额外分数位,以及通过左移电路系统支持的更大潜在的左移量而调节。这随后可能需要更大累加宽度得以支持,例如大于64位的累加宽度。然而,在另一实施例中,浮点至定点转换方块的输出可舍位以便输出折算为所关注的范围,以及随后可仍然在标准处理宽度内累加,例如64位宽度。
图5为图示诸如先前参考图3论述的多个FP16至定点转换方块可以如何与转换由转换及累加指令的单个实例指定的转换多个浮点操作数并行使用的方块图。具体而言,当使用图2B的先前描述的向量转换及累加指令时,可以提供四个FP16至定点转换方块205、转换方块210、转换方块215、转换方块220,每个转换方块经布置以接收在第一源寄存器200中指定的数据的16位部分。具体而言,64位源寄存器200将在此情况中含有四个16位浮点操作数,且可将每个浮点操作数提供至FP16至定点转换方块的一者。那些方块将随后产生41位定点表示的每个浮点数,如先前在一个实施例中论述,其在输出至累加电路系统之前将被符号扩充至64位。在此情况中,累加电路系统包括5:2进位保留加法器,该进位保留加法器自四个FP16至定点转换方块205、转换方块210、转换方块215、转换方块220接收输出,以及亦自第二源寄存器235接收64位定点输入操作数。保留进位加法器以标准方式操作以减少至可提供至64位累加器230的形式的输入,以产生最后的64位累加结果。因为目标寄存器经指定与第二源寄存器相同,则如在图5中图示,输出回写至寄存器235。
如在图5中说明,四个进位输入(一者通过FP16至定点转换方块205、转换方块210、转换方块215、转换方块220的每一者产生)经注入低阶进位位中,这些低阶进位位在保留进位加法器折算及进位至最后加法器中总为零。
通过使用图5的电路系统,这使得单指令指定填入64位字中的四个FP16值,并且用于待转换成定点表示及随后在单个循环内添加至定点数的这些。
图6为图示处理的流程图,处理可根据一个实施例执行以使用先前描述的转换及累加指令的一个或多个实例累加一系列浮点操作数。在步骤300处,决定当前指令是否为转换及累加指令。如若是,则指令通过译码器电路系统10译码以产生控制信号,此控制信号在步骤305处控制执行电路系统20以将每个识别的FP16值转换成定点表示,随后将每个转换值加至亦由指令指定的操作数的64位定点值或自该定点值减去,以进而产生累加结果。此后,处理回到步骤300。如若在步骤300处决定当前指令不是转换及累加指令,则在步骤310处决定指令是否为指定累加结果为源操作数的定点至浮点转换指令。具体而言,一旦已执行转换及累加指令的一个或多个实例,则每个使用相同第二源寄存器以便经由执行转换及累加指令的多个实例使得一系列浮点操作数能够累加在一起,可期望将产生的累加结果转换回浮点格式。这可通过使用此种定点至浮点转换指令获得,其将通常指定用于结果的浮点格式。
因此,如若在步骤310处遇到定点至浮点转换指令,则在步骤315将累加结果转换成由指令指定的浮点格式的浮点数。随后处理回到步骤300。如若在步骤310处,决定当前指令不是定点至浮点转换指令,则如一般由方块320俘获的,指令不为用于执行浮点累加的指令,且仅以标准方法执行的指令。在步骤320处,指令可因此为在程序序列中的任意其他指令。此后处理回到300。
在另一实施例中,如在图7中示意图标,装置可以具有SIMD架构,其中执行电路系统识别并行处理的多路径,以及转换及累加指令可采取SIMD指令的形式。具体而言,在并行处理的路径的每条路径内,可独立地并联执行上述转换及累加运算。在图7中图标的实例中,假设SIMD执行电路系统具有并行处理的两条路径,但应理解,在其他SIMD布置中可以提供多于两条路径。
用于转换及累加指令的SIMD变体的基本指令格式类似于先前参考图2A及图2B论述的指令格式。然而,操作码将识别指令为SIMD指令及源寄存器的每一者可为Lx64位寄存器,其中L为并行处理的路径的数目。因此,在图7的实例中,源寄存器的每个可为128位寄存器,每个寄存器含有两个64位部分。假设使用图2B的变体,128位第一源寄存器的每个64位部分将识别四个FP16值。类似地,第二源寄存器的每个64位部分将含有64位累加值。该两个源寄存器分别通过组件400、组件420在图7中示意地图示。关于可选择的字段,除可为指令的非SIMD变体提供的可选择字段外,对于SIMD变体,谓词值可以经指定以识别哪条路径为有效的,并且因此识别在哪条路径内需要执行处理。例如,在具有四条路径的SIMD架构中,可以期望在若干子集的路径内(例如路径1、路径3及路径4)执行转换及累加运算,但不在路径2内执行任何处理,且此可通过使用这种谓词值来指示。
如在图7中图标,在每条路径内,提供与先前参考图5论述的电路系统等同的电路系统。因此,在路径2内存在多个FP16至定点转换方块405、转换方块410,其全部装进累加电路系统415中。在其中存在四个FP16至定点转换方块的实例中,随后累加电路系统415将包括在图5中图示的5:2保留进位加法器225及加法器电路230。类似地,在路径1内提供多个FP16至定点转换单元425、转换单元430以及关联累加电路系统435。假设第一源寄存器400,第一64位部分经布线进路径1中及第二64位部分经布线进路径2中。在个别路径内,在64位部分内的个别FP16值经布线至各别FP16至定点转换方块405、转换方块410或转换方块425、转换方块430。类似地,关于包括两个64位定点输入操作数的第二源寄存器420,那些定点操作数的第一个经提供至路径1中的累加电路系统435,而其他的提供至路径2中的累加电路系统415。
因此,在每条路径内可见,执行先前参考图5论述的处理,从而导致输出两个64位累加结果,其随后可在目标寄存器440内共同地俘获到。如先前论述,在一个实施例中,目标寄存器440将实质上与第二源寄存器420相同,以及因此相乘的两个累加结果将改写第二源寄存器的上述内容。
通过采用这种SIMD方法,此通过允许有效并行处理浮点操作数的累加而提供用于进一步效能改良的潜能。
经由使用所述实施例的方法,提供用于以关联方式累加浮点值的快速且有效机制,以及因此累加可以任意顺序累加且完全地可再生为可能的。当与试图使用浮点运算累加浮点值相比时,此方法的速度及准确度提供了显著优势,以及因此将在各种实际应用中提供显著益处。例如,当处理深度学习问题时,这种方法将尤其有益。深度学习的运算为基础地矩阵乘法(GEMM),因此它折算至大量沉积的总和。通过采用本文描述的方法,大量浮点操作数,例如FP16操作数,可以完全决定性的方式累加,而与累加发生的顺序无关。方法适用于并行处理,从而提供待实现的显著效能改良。
在本申请案中,用词“经配置以…”用以意味着装置的组件具有能够执行定义运算的配置。在上下文中,“配置”意味着硬件或软件的互连的布置或方式。例如,装置可以具有提供定义运算的专用硬件,或处理器或其他处理设备可以经程序化以执行功能。“经配置以”并未暗示装置组件必须以任意方式改变以提供定义运算。
尽管本文参照附图已经详细描述了本发明的说明性实施例,但是应当理解,本发明不限于那些精确实施例,并且可以在不脱离如由所附申请专利范围限定的本发明的范围和精神的情况下,由熟习该项技术者在其中实现各种改变、添加和修改。例如,可在不背离本发明的范围的情况下,将从属权利要求的特征与独立权利要求的特征进行各种组合。
Claims (19)
1.一种装置,包含:
执行电路系统,该执行电路系统用以执行算术运算;及
译码器电路系统,该译码器电路系统用以译码指令序列以产生控制信号来控制由该执行电路系统执行的该算术运算;
该译码器电路系统响应于译码该序列内的转换及累加指令以产生一个或多个控制信号来控制该执行电路系统,以将由该转换及累加指令识别的至少一个浮点操作数转换成具有M个分数位的对应N位定点操作数,并且累加每个对应N位定点操作数及由该转换及累加指令识别的P位定点操作数,以产生P位定点结果值,其中M小于N且M取决于该浮点操作数的格式,并且其中P大于N且具有个M分数位。
2.根据权利要求1所述的装置,其中通过该转换及累加指令识别的所述至少一个浮点操作数中的每一个为16位浮点操作数。
3.根据权利要求2所述的装置,其中该执行电路系统被布置为将由该转换及累加指令识别的所述至少一个浮点操作数转换成具有24个分数位的对应41位定点操作数。
4.根据前述权利要求中的任一项所述的装置,其中由该转换及累加指令识别的该P位定点操作数为64位定点操作数。
5.根据前述权利要求中的任一项所述的装置,进一步包含:
一组寄存器,当执行所述算术运算时该执行电路系统能够对该组寄存器进行存取;
其中该转换及累加指令具有:识别该组寄存器内的至少一个第一源寄存器的第一寄存器识别符字段,所述至少一个第一源寄存器含有所述至少一个浮点操作数;及识别该组寄存器内的第二源寄存器的第二寄存器识别符字段,所述第二源寄存器含有所述P位定点操作数。
6.根据权利要求5所述的装置,其中该执行电路系统被布置为针对该第二源寄存器中的储存器输出所述P位定点结果值。
7.根据权利要求5或6所述的装置,其中该第一源寄存器和第二源寄存器为64位寄存器,并且该转换及累加指令识别含有高达四个16位浮点数的第一源寄存器,该执行电路系统响应于该一个或多个控制信号,以将该高达四个16位浮点数中的每一个转换成对应定点操作数,并且累加每个对应定点操作数及含在该第二源寄存器内的64位定点操作数,以产生64位结果值,其中该一个或多个控制信号由该译码器电路系统响应于译码该转换及累加指令而产生。
8.根据前述权利要求中的任一项所述的装置,其中该执行电路系统为提供并行处理的多条路径的SIMD单指令多数据电路系统,每条路径具有P位的宽度,以及该转换及累加指令为SIMD指令,该SIMD指令对于所述多条路径中的多条路径中的每一条,识别待转换为对应N位定点操作数的至少一个浮点操作数,以及所述对应N位定点操作数中的每一个待累加至的P位定点操作数。
9.根据权利要求5-7中的任一项所述的装置,其中:
该执行电路系统为提供并行处理的L条路径的SIMD单指令多数据电路系统,每条路径具有P位的宽度,并且该转换及累加指令为SIMD指令,该SIMD指令对于所述L条路径的多条路径中的每一条,识别待转换为对应N位定点操作数的至少一个浮点操作数,以及所述对应N位定点操作数中的每一个待累加至的P位定点操作数;
该第一源寄存器和第二源寄存器为Lx64位寄存器,以及该转换及累加指令对于该L条路径中的每条识别含有高达四个16位浮点数的第一源寄存器,该执行电路系统响应于该一个或多个控制信号,该一个或多个控制信号由该译码器电路系统响应于译码该转换及累加指令而产生,以在该多条路径中的每条内执行:将该高达四个16位浮点数中的每个转换成对应定点操作数,以及累加每个对应定点操作数及含在该第二源寄存器内的64位定点操作数,以产生64位结果值,用以包含在含有每条路径的该结果值的Lx64位结果内。
10.根据前述权利要求中的任一项所述的装置,其中该指令序列进一步包含定点至浮点转换指令,其当通过该译码器电路系统译码时,致使该执行电路系统将通过执行该转换及累加指令的一个或多个实例而获得的定点结果值转换成具有通过该定点至浮点转换指令指定的浮点格式的浮点结果值。
11.根据前述权利要求中的任一项所述的装置,其中通过该转换及累加指令识别的该至少一个浮点操作数包含多个浮点值的未舍入乘积。
12.根据前述权利要求中的任一项所述的装置,其中该执行电路系统包含:
转换电路系统,该转换电路系统提供一个或多个转换方块,每个转换方块被布置为接收由该转换及累加指令识别的输入浮点操作数并产生该对应N位定点操作数;以及
累加电路系统,该累加电路系统用以执行累加运算以累加每个对应N位定点操作数及所述P位定点操作数,以产生所述P位定点结果值。
13.根据权利要求12所述的装置,其中每个所述转换方块包含:
有效数产生电路系统,该有效数产生电路系统用以产生来自该输入浮点操作数的分数位的有效数值及该输入浮点操作数的指数位的逻辑组合;以及
移位电路系统,该移位电路系统响应于该输入浮点值为规范浮点值,对该有效数值执行左移操作达如下移动量以产生输出值,该移动量根据由所述指数位指示的指数值来确定。
14.根据权利要求13所述的装置,其中每个所述转换方块进一步包含:
一的补码电路系统,该一的补码电路系统用以当该浮点操作数的符号位指示该输入浮点操作数为负数时对该输出值执行一的补码运算。
15.根据权利要求13或14所述的装置,其中该浮点操作数的符号位用作该累加电路系统的进位位。
16.根据权利要求12至15中的任一项所述的装置,其中该累加电路系统被布置为执行对每个对应N位定点操作数及所述P位定点操作数的二的补码加法以产生所述P位定点结果值。
17.根据权利要求12至16中的任一项所述的装置,其中所述累加电路系统包括溢出检测电路系统,该溢出检测电路系统用以当该累加电路系统的最高有效位位置的进位不等于该最高有效位位置的进位输出时检测溢出条件。
18.一种在装置内执行浮点数的累加的方法,该装置具有用以执行算术运算的执行电路系统,及用以译码指令序列以产生控制信号来控制由该执行电路系统执行的该算术运算的译码器电路系统,该方法包含以下步骤:
在该译码器电路系统内译码该序列内的转换及累加指令,以产生一个或多个控制信号;以及
响应于所述一个或多个控制信号,控制该执行电路系统以:将由该转换及累加指令识别的至少一个浮点操作数转换为对应N位定点操作数,该对应N位定点操作数具有M个分数位,其中M小于N且M取决于该浮点操作数的格式;并且累加每个对应N位定点操作数及由该转换及累加指令识别的P位定点操作数,以产生P位定点结果值,其中P大于N且具有M个分数位。
19.一种装置,包含:
执行构件,该执行构件用以执行算术运算;及
译码器构件,该译码器构件用以译码指令序列以产生控制信号来控制由该执行构件执行的该算术运算;
该译码器构件,该译码器构件用于译码该序列内的转换及累加指令,以产生一个或多个控制信号;以及
该执行构件,该执行构件:响应于所述一个或多个控制信号,将由该转换及累加指令识别的至少一个浮点操作数转换为对应N位定点操作数,该对应N位定点操作数具有M个分数位,其中M小于N且M取决于该浮点操作数的格式;并且累加每个对应N位定点操作数及由该转换及累加指令识别的P位定点操作数,以产生P位定点结果值,其中P大于N且具有M个分数位。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/370,660 | 2016-12-06 | ||
US15/370,660 US10216479B2 (en) | 2016-12-06 | 2016-12-06 | Apparatus and method for performing arithmetic operations to accumulate floating-point numbers |
PCT/GB2017/053163 WO2018104696A1 (en) | 2016-12-06 | 2017-10-19 | An apparatus and method for performing arithmetic operations to accumulate floating-point numbers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110036368A true CN110036368A (zh) | 2019-07-19 |
CN110036368B CN110036368B (zh) | 2023-02-28 |
Family
ID=60182813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780074115.7A Active CN110036368B (zh) | 2016-12-06 | 2017-10-19 | 用于执行算术运算以累加浮点数的装置及方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10216479B2 (zh) |
KR (1) | KR102447636B1 (zh) |
CN (1) | CN110036368B (zh) |
TW (1) | TWI784980B (zh) |
WO (1) | WO2018104696A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111796798A (zh) * | 2020-09-08 | 2020-10-20 | 腾讯科技(深圳)有限公司 | 一种定点与浮点转换器、处理器、方法以及存储介质 |
CN112036561A (zh) * | 2020-09-30 | 2020-12-04 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113641602A (zh) * | 2020-05-11 | 2021-11-12 | 美光科技公司 | 用于posit运算的加速电路系统 |
CN113924622A (zh) * | 2019-06-04 | 2022-01-11 | 美光科技公司 | 存储器阵列外围中的位串累加 |
CN113918117A (zh) * | 2020-06-24 | 2022-01-11 | 美光科技公司 | 动态精确度位串累加 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10671345B2 (en) * | 2017-02-02 | 2020-06-02 | Intel Corporation | Methods and apparatus for performing fixed-point normalization using floating-point functional blocks |
US10409614B2 (en) | 2017-04-24 | 2019-09-10 | Intel Corporation | Instructions having support for floating point and integer data types in the same register |
US10474458B2 (en) | 2017-04-28 | 2019-11-12 | Intel Corporation | Instructions and logic to perform floating-point and integer operations for machine learning |
US10698685B2 (en) * | 2017-05-03 | 2020-06-30 | Intel Corporation | Instructions for dual destination type conversion, mixed precision accumulation, and mixed precision atomic memory operations |
US10223114B1 (en) * | 2017-09-29 | 2019-03-05 | Intel Corporation | Fixed point to floating point conversion |
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
US10224954B1 (en) | 2017-09-29 | 2019-03-05 | Intel Corporation | Floating point to fixed point conversion |
EP3651074B1 (en) | 2018-02-13 | 2021-10-27 | Shanghai Cambricon Information Technology Co., Ltd | Computation device and method |
US11507370B2 (en) | 2018-02-13 | 2022-11-22 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Method and device for dynamically adjusting decimal point positions in neural network computations |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN110162162B (zh) | 2018-02-14 | 2023-08-18 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
WO2019218896A1 (zh) | 2018-05-18 | 2019-11-21 | 上海寒武纪信息科技有限公司 | 计算方法以及相关产品 |
KR102470893B1 (ko) | 2018-06-27 | 2022-11-25 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 온 칩 코드의 브레이크 포인트에 의한 디버그 방법, 온 칩 프로세서 및 브레이크 포인트에 의한 칩 디버그 시스템 |
KR102519467B1 (ko) | 2018-08-28 | 2023-04-06 | 캠브리콘 테크놀로지스 코퍼레이션 리미티드 | 데이터 전처리 방법, 장치, 컴퓨터 설비 및 저장 매체 |
WO2020067908A1 (en) * | 2018-09-27 | 2020-04-02 | Intel Corporation | Apparatuses and methods to accelerate matrix multiplication |
EP3859488A4 (en) | 2018-09-28 | 2022-06-29 | Shanghai Cambricon Information Technology Co., Ltd | Signal processing device, signal processing method and related product |
US11372643B2 (en) * | 2018-11-09 | 2022-06-28 | Intel Corporation | Systems and methods for performing instructions to convert to 16-bit floating-point format |
US10963246B2 (en) | 2018-11-09 | 2021-03-30 | Intel Corporation | Systems and methods for performing 16-bit floating-point matrix dot product instructions |
CN111385462A (zh) | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
WO2020190807A1 (en) | 2019-03-15 | 2020-09-24 | Intel Corporation | Systolic disaggregation within a matrix accelerator architecture |
WO2020190800A1 (en) | 2019-03-15 | 2020-09-24 | Intel Corporation | Dynamic memory reconfiguration |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
CN111832738B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
US20200334522A1 (en) | 2019-04-18 | 2020-10-22 | Cambricon Technologies Corporation Limited | Data processing method and related products |
US11676028B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
EP3772022A1 (en) | 2019-06-12 | 2021-02-03 | Shanghai Cambricon Information Technology Co., Ltd | Method for determining quantization parameters in neural network and related products |
FR3097993B1 (fr) * | 2019-06-25 | 2021-10-22 | Kalray | Opérateur de produit scalaire de nombres à virgule flottante réalisant un arrondi correct |
US20220229633A1 (en) | 2020-01-07 | 2022-07-21 | SK Hynix Inc. | Multiplication and accumulation(mac) operator and processing-in-memory (pim) device including the mac operator |
TW202141290A (zh) | 2020-01-07 | 2021-11-01 | 韓商愛思開海力士有限公司 | 記憶體中處理(pim)系統和pim系統的操作方法 |
US11663000B2 (en) | 2020-01-07 | 2023-05-30 | SK Hynix Inc. | Multiplication and accumulation(MAC) operator and processing-in-memory (PIM) device including the MAC operator |
CN112416294B (zh) * | 2020-11-20 | 2022-09-16 | 安谋科技(中国)有限公司 | 处理器及其二进制累加方法和计算机可读介质 |
US11442696B1 (en) * | 2021-03-23 | 2022-09-13 | SambaNova Systems, Inc. | Floating point multiply-add, accumulate unit with exception processing |
US20220308873A1 (en) * | 2021-03-27 | 2022-09-29 | Intel Corporation | Apparatuses, methods, and systems for instructions for downconverting a tile row and interleaving with a register |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1174353A (zh) * | 1996-08-19 | 1998-02-25 | 三星电子株式会社 | 采用多个向量寄存器组的单指令多数据处理方法及其装置 |
US20040128331A1 (en) * | 2002-12-27 | 2004-07-01 | Hinds Christopher N. | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
US20050125641A1 (en) * | 2003-12-09 | 2005-06-09 | Arm Limited | Data processing apparatus and method for moving data between registers and memory |
US20110173421A1 (en) * | 2010-01-08 | 2011-07-14 | International Business Machines Corporation | Multi-input and binary reproducible, high bandwidth floating point adder in a collective network |
CN102197369A (zh) * | 2008-10-08 | 2011-09-21 | Arm有限公司 | 用于执行simd乘法-累积运算的装置及方法 |
CN102566967A (zh) * | 2011-12-15 | 2012-07-11 | 中国科学院自动化研究所 | 一种采用多级流水线结构的高速浮点运算器 |
CN103914276A (zh) * | 2013-01-08 | 2014-07-09 | 美国亚德诺半导体公司 | 利用浮点架构的定点除法电路 |
US20160092168A1 (en) * | 2014-09-26 | 2016-03-31 | Arm Limited | Apparatus and method for converting floating-point operand into a value having a different format |
US20160126975A1 (en) * | 2014-11-03 | 2016-05-05 | Arm Limited | Apparatus and method for performing conversion operation |
CN106127302A (zh) * | 2016-06-23 | 2016-11-16 | 杭州华为数字技术有限公司 | 处理数据的电路、图像处理系统、处理数据的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5272654A (en) * | 1991-09-26 | 1993-12-21 | Advanced Micro Devices, Inc. | System for converting a floating point signed magnitude binary number to a two's complement binary number |
WO2016003740A1 (en) * | 2014-07-02 | 2016-01-07 | Via Alliance Semiconductor Co., Ltd. | Split-path fused multiply-accumulate operation using first and second sub-operations |
-
2016
- 2016-12-06 US US15/370,660 patent/US10216479B2/en active Active
-
2017
- 2017-10-19 CN CN201780074115.7A patent/CN110036368B/zh active Active
- 2017-10-19 WO PCT/GB2017/053163 patent/WO2018104696A1/en active Application Filing
- 2017-10-19 KR KR1020197017885A patent/KR102447636B1/ko active IP Right Grant
- 2017-10-20 TW TW106136025A patent/TWI784980B/zh active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1174353A (zh) * | 1996-08-19 | 1998-02-25 | 三星电子株式会社 | 采用多个向量寄存器组的单指令多数据处理方法及其装置 |
US20040128331A1 (en) * | 2002-12-27 | 2004-07-01 | Hinds Christopher N. | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
US20050125641A1 (en) * | 2003-12-09 | 2005-06-09 | Arm Limited | Data processing apparatus and method for moving data between registers and memory |
CN102197369A (zh) * | 2008-10-08 | 2011-09-21 | Arm有限公司 | 用于执行simd乘法-累积运算的装置及方法 |
US20110173421A1 (en) * | 2010-01-08 | 2011-07-14 | International Business Machines Corporation | Multi-input and binary reproducible, high bandwidth floating point adder in a collective network |
CN102566967A (zh) * | 2011-12-15 | 2012-07-11 | 中国科学院自动化研究所 | 一种采用多级流水线结构的高速浮点运算器 |
CN103914276A (zh) * | 2013-01-08 | 2014-07-09 | 美国亚德诺半导体公司 | 利用浮点架构的定点除法电路 |
US20160092168A1 (en) * | 2014-09-26 | 2016-03-31 | Arm Limited | Apparatus and method for converting floating-point operand into a value having a different format |
US20160126975A1 (en) * | 2014-11-03 | 2016-05-05 | Arm Limited | Apparatus and method for performing conversion operation |
CN106127302A (zh) * | 2016-06-23 | 2016-11-16 | 杭州华为数字技术有限公司 | 处理数据的电路、图像处理系统、处理数据的方法和装置 |
Non-Patent Citations (2)
Title |
---|
M.F. COWLISHAW等: "A decimal floating-point specification", 《IEEE》 * |
张琦 等: "利用DSPBuilder搭建基于CORDIC算法的QDDS系统", 《北京电子科技学院学报》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113924622A (zh) * | 2019-06-04 | 2022-01-11 | 美光科技公司 | 存储器阵列外围中的位串累加 |
CN113924622B (zh) * | 2019-06-04 | 2022-09-09 | 美光科技公司 | 存储器阵列外围中的位串累加 |
CN113641602A (zh) * | 2020-05-11 | 2021-11-12 | 美光科技公司 | 用于posit运算的加速电路系统 |
CN113641602B (zh) * | 2020-05-11 | 2024-05-24 | 美光科技公司 | 用于posit运算的加速电路系统 |
CN113918117A (zh) * | 2020-06-24 | 2022-01-11 | 美光科技公司 | 动态精确度位串累加 |
CN111796798A (zh) * | 2020-09-08 | 2020-10-20 | 腾讯科技(深圳)有限公司 | 一种定点与浮点转换器、处理器、方法以及存储介质 |
CN112036561A (zh) * | 2020-09-30 | 2020-12-04 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112036561B (zh) * | 2020-09-30 | 2024-01-19 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110036368B (zh) | 2023-02-28 |
KR20190090817A (ko) | 2019-08-02 |
WO2018104696A1 (en) | 2018-06-14 |
TW201821979A (zh) | 2018-06-16 |
KR102447636B1 (ko) | 2022-09-27 |
TWI784980B (zh) | 2022-12-01 |
US10216479B2 (en) | 2019-02-26 |
US20180157464A1 (en) | 2018-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110036368A (zh) | 用于执行算术运算以累加浮点数的装置及方法 | |
US20210264273A1 (en) | Neural network processor | |
US9703531B2 (en) | Multiplication of first and second operands using redundant representation | |
CN110168493B (zh) | 在128位宽的操作数上的融合乘加浮点运算 | |
US10489153B2 (en) | Stochastic rounding floating-point add instruction using entropy from a register | |
CN107077322A (zh) | 用于执行转换运算的装置和方法 | |
US9733899B2 (en) | Lane position information for processing of vector | |
US20090112955A1 (en) | Apparatus and method for performing magnitude detection of arthimetic operations | |
US9720646B2 (en) | Redundant representation of numeric value using overlap bits | |
US10445066B2 (en) | Stochastic rounding floating-point multiply instruction using entropy from a register | |
Gustafsson et al. | Approximate floating-point operations with integer units by processing in the logarithmic domain | |
WO2017081436A1 (en) | Overlap propagation operation | |
CN107193977A (zh) | 数据查找方法、人工智能系统、图像处理系统、数据库、搜索引擎、通讯系统、计算机应用 | |
US20230280975A1 (en) | Variable Format Floating Point Logic | |
Revankar et al. | Design and Implementation of 64 bit High Speed Floating Point Multiplier for DSP Applications | |
Kim et al. | Improved Multiplication Algorithm by Clearing Leading Zeros of Binary Numbers based on Big Data Analysis | |
RUNCEANU et al. | ALGORITHMS IMPLEMENTING OPERATIONS WITH BIG NUMBERS. | |
Santosh et al. | Complex Binary Number System-based Co-Processor Design for Signal Processing Applications | |
Shams Ahari | Computer Arithmetic in modern computers and usages of Computer Arithmetic | |
KR20230152414A (ko) | 페이지랭크 희소행렬 곱셈 연산을 위한 연산 장치 및 방법 | |
Petschow et al. | Introduction to floating point arithmetic | |
Papadopoulos | Octuple-precision floating point on Apple G4 | |
JP2010049614A (ja) | 計算機 |
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 |