CN111124361A - 算术处理装置及其控制方法 - Google Patents
算术处理装置及其控制方法 Download PDFInfo
- Publication number
- CN111124361A CN111124361A CN201910983159.2A CN201910983159A CN111124361A CN 111124361 A CN111124361 A CN 111124361A CN 201910983159 A CN201910983159 A CN 201910983159A CN 111124361 A CN111124361 A CN 111124361A
- Authority
- CN
- China
- Prior art keywords
- point
- floating
- bit
- instruction
- exponent
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000004364 calculation method Methods 0.000 claims description 47
- 230000008569 process Effects 0.000 claims description 32
- 230000004044 response Effects 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 22
- 230000000295 complement effect Effects 0.000 description 13
- 239000000872 buffer Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- 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/49942—Significance control
- G06F7/49947—Rounding
-
- 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/544—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 for evaluating functions by calculation
- G06F7/556—Logarithmic or exponential functions
-
- 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/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3824—Accepting both fixed-point and floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
提供了一种算术处理装置及其控制方法。算术处理装置包括选择电路和算术电路。当输入用于将浮点数变换为定点数的指令信号时,选择电路输出定点数的特定位,当没有输入该指令信号时,选择电路输出浮点数的指数;并且算术电路对从选择电路输出的特定位或指数执行预定算术运算。
Description
相关申请的交叉引用
本申请基于2018年10月31日提交的在先日本专利申请第2018-204893号并且要求享有该申请的优先权,其全部内容通过引用并入本文中。
技术领域
本文中讨论的实施方式涉及算术处理装置及其控制方法。
背景技术
计算机中处理的数值大致分为两类。一类是浮点数并且另一类是定点数。日本特许专利公开第5-173759号和日本特许专利公开第2009-93662号是相关技术的示例。
当使用浮点乘加单元执行用于变换为定点数的指令时,定点数的有效位的位宽大于浮点数的有效位的位宽,并且因此使用能够计算比用于计算由舍入运算生成的进位的数字数目更多的数字数目的加法器。
这可能导致将专用或附加的加法器添加到浮点乘加单元,从而增加了电路面积。
另外,输出根据浮点数和定点数的相应格式的运算结果。这可能导致在浮点乘加单元中添加用于格式变换的电路,从而增加了电路面积。
实施方式的一方面是使得能够以更少的电路部件执行定点数和浮点数的算术运算。
发明内容
根据实施方式的一方面,一种算术处理设备,包括:选择电路,当输入用于将浮点数变换为定点数的指令信号时,选择电路输出定点数的特定位,当没有输入指令信号时,选择电路输出浮点数的指数;以及第一算术电路,其对从选择电路输出的特定位或指数执行预定算术运算。
附图说明
图1是示出单精度浮点数的格式的图;
图2是示出定点数的格式的图;
图3是示出相关示例中的从浮点数至定点数的变换的图;
图4是示出相关示例中的舍入至最近模式的图;
图5是示出相关示例中的舍入至最近模式的表;
图6是示出作为相关示例的浮点乘加单元中的算术过程的序列图;
图7是示出作为相关示例的浮点乘加单元中的算术过程的序列图;
图8是示出在相关示例中在浮点运算期间执行舍入的电路系统的图;
图9是示出在相关示例中在浮点至定点变换期间执行舍入的电路系统的图;
图10是示出根据实施方式的算术处理系统的硬件配置的示例的框图;
图11是示出在图10所示的浮点乘加单元中在浮点至定点变换期间执行舍入的电路系统的图;
图12是示出图10所示的浮点乘加单元的配置的框图;
图13是示出图10所示的浮点乘加单元的配置的框图;以及
图14是示出在图10所示的浮点乘加单元中的浮点指数计算过程的流程图。
具体实施方式
在下文中,将参照附图来描述实施方式。然而,下面描述的实施方式仅是示例性的,并且绝不旨在排除在实施方式中未明确描述的各种修改和技术应用。也就是说,本实施方式可以在不偏离其精神和范围的情况下以各种修改来实施。
附图不旨在仅包括附图中示出的部件,而是可以包括其他功能等。
在下文中,在附图中,相同的部分将由相同的附图标记表示,并且将省略其重复的描述。
[A]相关示例
图1是示出单精度浮点数的格式的图;
图1所示的32位单精度浮点数由符号、有效位和指数组成。该符号为1位宽,其中0表示正号,而1表示负号。有效位为23位宽并且表示整数部分为1的二进制小数部分。未表示整数部分1。指数为8位宽并且可以表示为有127的偏差的无符号二进制数。
如下式表示图1所示的单精度浮点数。
(-1)符号×2指数-127×(1+有效位)
图2是示出定点数的格式的图。定点数是被表示成使得小数点的位置是固定的数字。整数部分的位数和小数部分的位数以Q格式表示。
对于图2所示的小数点位置,整数部分的位数为31并且小数部分的位数为0,并且因此这些数字以Q31.0格式表示。
存在用于可互换使用浮点数和定点数的数值变换指令。
图3是示出在相关示例中从浮点数至定点数的变换的图。
根据由指数指示的量对浮点数的有效位(包括隐式位“1”)进行移位以便与要输出的定点数的小数点位置对齐(参见参考字符A1)。
例如,在指数=127(除了偏差之外的指数为0)的情况下,小数点位置位于作为20的位置的第23位。在指数=143(除了偏差之外的指数为16)的情况下,小数点位置位于作为216的位置的第7位。
如果浮点数的符号为负,则移位后的有效位被求2补数(参见参考字符A2)。如果符号为正,则有效位的值保持原样。
然后,执行舍入过程(参见参考字符A3)。
作为由参考字符A1表示的移位的结果,在某些情况下,运算结果具有超出定点表示中可能数字的范围的数字。因此,为了保持运算精度,执行由参考字符A3表示的舍入过程。
图4是示出相关示例中的舍入至最近模式的图。图5是示出相关示例中的舍入至最近模式的表。
如图4中所示,在以舍入至最近模式进行舍入时,最低有效位被称为最后位置中的单位(ulp),并且定义确定比ulp低阶位的大小的保护位(G)、舍入位(R)和粘滞位(S)。
保护位是具有1/2ulp的权重的位。舍入位是具有1/4ulp的权重的位。粘滞位的值是具有比舍入位更小权重的位的或值(OR)。
在图5所示的条件的情况下,通过向ulp添加+1来执行利用ulp/G/R/S中的每个位的值的舍入运算。
图6和图7是示出作为相关示例的浮点乘加单元600中的算术过程的序列图。
在图6所示的示例中,浮点至定点变换指令由浮点乘加单元600执行。浮点乘加单元600包括运算指令控制单元611、符号处理单元612、指数处理单元613和有效位处理单元614的功能。
如图6所示,运算指令控制单元611向符号处理单元612、指数处理单元613和有效位处理单元614通知指令类型。
指数处理单元613基于加法指数、被乘数指数和乘数指数在数字对齐移位量计算单元处计算要移位的位的量,并且命令有效位处理单元614以计算出的移位量执行移位(步骤S1)。
有效位处理单元614基于关于来自指数处理单元613的移位量的指令执行移位以在数字对齐移位器处实现数字对齐(步骤S2)。
符号处理单元612基于加法符号、被乘数符号和乘数符号在符号计算单元处执行符号计算,并且向有效位处理单元614发出运算指令(步骤S3)。如图7所示,基于符号计算,输出符号运算结果。
有效位处理单元614基于来自符号处理单元612的运算指令在补码处理单元处执行补码处理(步骤S4)。然后,过程进行到步骤S7。
有效位处理单元614基于被乘数有效位和乘数有效位在布斯(Booth’s)编码单元处根据布斯乘法算法执行编码(步骤S5)。
有效位处理单元614从乘法树输出求和信号和进位信号(步骤S6)。
有效位处理单元614从进位保存加法器输出求和信号和进位信号(步骤S7)。
有效位处理单元614基于来自进位保存加法器的求和信号和进位信号将进位信息顺序地从进位传送加法器发送到下一位计算(步骤S8)。然后,过程进行到图7中的步骤S11。
有效位处理单元614基于来自进位保存加法器的求和信号和进位信号在有效位损失预测单元处计算有效位损失预测值,并且向指数处理单元613通知计算出的有效位损失预测值(步骤S9)。
指数处理单元613基于来自有效位处理单元614的有效位损失预测值在归一化移位量计算单元处计算归一化移位量(步骤S10)。如图7所示,将计算出的归一化移位量作为归一化移位量指令提供给有效位处理单元614。
在图7中,有效位处理单元614基于来自指数处理单元613的归一化移位量指令在归一化移位器处执行移位过程(步骤S11)。
有效位处理单元614基于来自归一化移位器的输出在舍入电路6(参照图8)处执行舍入处理,并且输出有效位运算结果,并且还向指数处理单元613发出进位指令(步骤S12)。
指数处理单元613基于来自归一化移位量计算单元的输出和来自有效位处理单元614的进位指令在浮点数指数计算单元处输出指数运算结果(步骤S13)。
基于符号运算结果、指数运算结果和有效位运算结果输出定点数的运算结果(步骤S14)。
图8是示出在相关示例中在浮点运算期间执行舍入的电路系统的图。
向舍入电路6输入归一化移位器已经损失其一部分的有效位被左移位并且包括隐式位“1”的有效位数据,作为舍入前有效位运算结果601。此时,还输入用于舍入的G/R/S(换言之,随后位的或值被收集到的1位的值)。
与通过使用ulp/G/R/S的舍入确定62同时,有效位的位22至0(即,ulp位)被输入到加法器61。
作为舍入确定62的结果,如果需要舍入运算,则将加法器61的输出设置为舍入后有效位运算结果,而如果不需要舍入运算,则原样输出位22至0。
与此同时,如果位22至0全为“1”,则从加法器61输出进位信号。此时,如果需要舍入运算以便提供需要指数进位作为舍入的结果的通知,则经由或运算电路63将指数进位指令输出到浮点指数计算单元7。
在浮点指数计算单元7中,接收使用有效位损失预测值校正的指数值,作为舍入前指数运算结果602。如果舍入电路6发出指数进位指令,则一起输出校正后的指数与由加法器71添加的+1,而如果没有发出指数进位指令,则按原样输出校正后的指数。
来自舍入电路6的有效位运算结果、来自浮点指数计算单元7的指数运算结果以及来自符号处理单元612的符号被收集在一起,并且被输出作为运算结果603。
图9是示出在相关示例中在浮点至定点变换期间执行舍入的电路系统的图。
在移位过程和补码过程之后的舍入前有效位运算结果701的位30至0以及用于舍入的G/R/S被输入到舍入电路6。在这种情况下,其中要输入的位数增加的浮点舍入需要更大的加法器。
在图9所示的示例中,为了尽可能地减少资源量,添加了附加位30至23被输入至的加法器64。当加法器61输出进位信号时,加法器64执行加法运算。
作为舍入确定62的结果,如果需要舍入运算,则加法器61和添加的加法器64的输出被提供为舍入后有效位运算结果,而如果不需要舍入运算,则原样输出位30至0。
在浮点至定点变换指令的情况下输出运算结果时,输出舍入后整数运算结果的位30至23而不是浮点指数运算结果。对于位22至0,与浮点运算的情况一样,按原样输出舍入后有效位运算结果。
选择电路8输出来自舍入电路6和浮点指数计算单元7的输入中的至少一个。在浮点至定点变换指令的情况下,选择电路8仅输出来自舍入电路6的输入。因此,输出运算结果703。
当使用浮点乘加单元执行用于变换为定点数的指令时,定点数的有效位的位宽大于浮点数的有效位的位宽,并且因此使用能够计算比用于计算由舍入运算生成的进位的数字数目更多的数字数目的加法器。
这导致将专用或附加的加法器添加到浮点乘加单元,从而增加了电路面积。
在输出运算结果时,输出根据浮点数和定点数的相应格式的运算结果。这导致在浮点乘加单元中添加用于格式变换的电路,从而增加了电路面积。
在图9所示的在浮点至定点变换期间执行舍入的电路系统中,要注意在浮点至定点变换期间不使用的浮点指数计算单元7的加法器71。
浮点指数计算单元7的加法器71和舍入电路6中的为浮点至定点变换指令添加的加法器64各自具有8位的宽度。
在执行浮点至定点变换指令期间不使用浮点指数计算单元7的加法器71。
此外,将进位信号从舍入电路6的加法器61耦合至浮点指数计算单元7。因此,如果可以进行改变使得在执行浮点至定点变换指令期间使用浮点指数计算单元7的加法器71,则可以在不添加附加的加法器的情况下执行通过舍入运算来进位的加法。
[B]实施方式的示例
[B-1]系统配置的示例
图10是示出根据实施方式的算术处理系统1000的硬件配置的示例的框图。
近来,在多种领域中深度学习技术已经在商业上变得实用,并且存在以安装有大量处理器的图形处理单元(GPU)为例的处理器。在深度学习时,能够处理大量的乘加运算的处理器用于卷积等。
算术处理系统1000包括外围部件互连(PCI)卡100和主处理器3。
主处理器3经由PCI Express向PCI卡100发出各种指令。
PCI卡100包括处理器1和存储器2。
存储器2示例性地是包括只读存储器(ROM)和随机存取存储器(RAM)的存储装置。
在诸如GPU的安装在PCI卡100上的处理器1上,将其上安装有浮点乘加单元的大量的处理单元10以矩阵形式耦接并且将其安装以便处理大量的乘加运算。处理器1包括多个处理单元10、总体指令控制单元15、存储器控制器16和PCI控制单元17。
在图10中,在多个处理单元中,仅处理单元中的一些由附图标记“10”表示,而其他处理单元未表示。
总体指令控制单元15控制整个处理器1的操作。
存储器控制器16控制处理器1与存储器2之间的输入和输出。
PCI控制单元17经由PCI Express控制处理器1与主处理器3之间的输入和输出。
处理单元10包括浮点乘加单元11、矢量寄存器12的部件、运算指令控制单元13以及运算指令缓冲器14。在每个处理单元10中,包括多组浮点乘加单元11和矢量寄存器12的部件。
运算指令缓冲器14缓冲从存储器控制器16输入的运算指令。
在来自总体指令控制单元15的控制下,运算指令控制单元13向浮点乘加单元11和矢量寄存器12的部件发出关于控制在运算指令缓冲器14中缓冲的运算指令的指令。
运算指令的矢量值被输入到矢量寄存器12的部件。
作为算术处理单元的示例的浮点乘加单元11执行浮点运算和定点运算。
图11是示出在图10所示的浮点乘加单元11中在浮点至定点变换期间执行舍入的电路系统的图。
浮点乘加单元11包括选择电路111、舍入电路112和浮点指数计算单元113。
当输入浮点至定点变换指令(该指令可以称为指令信号)时,选择电路111输出定点数的特定位(例如,高阶位),当没有输入浮点至定点变换指令时,选择电路111输出浮点数的指数。
可以在执行浮点至定点变换指令期间使用浮点指数计算单元113的加法器1131。因此,根据来自运算指令控制单元13的指令将根据相关示例的要输入到舍入电路112的舍入前有效位运算结果101的高阶位30至23进行连接,以便代替舍入前指数运算结果而被输入到浮点指数计算单元113。这允许浮点指数计算单元113和舍入电路112彼此协作以在浮点至定点变换期间执行舍入运算。
例如,如果作为舍入确定1121的结果在舍入电路112中需要舍入运算,则输出舍入电路112的位22至0部分102已经被输入至的加法器1122的值。然而,如果不需要舍入运算,则原样输出位22至0部分102,作为舍入后有效位运算结果。
另外,如果需要舍入运算并且位22至0全为“1”,则指数进位指令经由与运算电路1123输出至浮点指数计算单元113。
这些运算在浮点运算与浮点至定点变换之间是相同的。
在浮点指数计算单元113中,在执行浮点至定点变换指令期间,根据来自运算指令控制单元13的指令输入舍入前有效位运算结果的高阶位30至23部分103。因此,当需要舍入运算并且位22至0全为“1”时,从舍入电路112输出指数进位指令。此外,输出下述加法器1131的结果作为舍入后有效位运算结果,已经基于指数进位指令向该加法器1131的结果输入浮点指数计算单元113的有效位运算结果的高阶位30至23。
当不需要舍入运算或位22至0不全为“1”时,不从舍入电路112输出指数进位指令,并且因此按原样输出有效位运算结果的高阶位30至23部分103,作为舍入后有效位运算结果。
当输出运算结果104时,舍入后有效位运算结果的高阶位30至23可以输出到与相关示例中的指数相同的位置,并且因此,在图9所示的浮点至定点变换时的浮点指数运算结果与舍入后有效位运算结果之间的选择电路是不必要的。
换句话说,浮点指数计算单元113是对从选择电路111输出的特定位或指数执行预定算术运算的第一算术电路的示例。舍入电路112是第二算术电路的示例,该第二算术电路对除了定点数的特定位或浮点数的有效位之外的位执行预定算术运算,并且基于在除了特定位或有效位之外的位中包括的舍入信息对除了特定位或有效位之外的位执行舍入。
当通过对除了特定位或有效位之外的位执行预定算术运算而在特定位或有效位之外的位中生成进位时,舍入电路112向浮点指数计算单元113发出进位指令。响应于从舍入电路112接收到进位指令,浮点指数计算单元113对特定位或指数执行进位过程。
图12和图13是示出图10所示的浮点乘加单元11的配置的框图。
如图12和图13所示,浮点乘加单元11用作符号处理单元21、指数处理单元22和有效位处理单元23。符号处理单元21、指数处理单元22和有效位处理单元23在来自运算指令控制单元13的控制下进行操作。
符号处理单元21包括如图12所示的符号计算单元211。
指数处理单元22包括如图12所示的数字对齐移位量计算单元221,并且包括如图13所示的浮点指数计算单元113。
有效位处理单元23包括如图12所示的数字对齐移位器231、补码处理单元232、布斯编码单元233、乘法树234、进位保存加法器235和进位传送加法器236并且包括如图13所示的归一化移位器237和舍入电路112。
参照图3,在相关示例中,可以通过使用浮点乘加单元11中包括的加法函数来实施用于实现与输出的小数点位置对齐的移位运算(由参考字符A1表示)以及在负号的情况下的补码过程(由参考符号A2表示)。
例如,对于由图3中的参考字符A1表示的移位运算,在将乘法结果的有效位与要添加的有效位相加的情况下,由于两者的小数点位置不同,所以使用执行数字对齐的数字对齐移位器231。
对于由图3中的参考字符A2表示的补码过程,当由于乘法结果的符号与要添加的有效位的符号之间的关系而实际运算是减法过程时,补码处理单元232用于在执行要添加的有效位的补码过程之后执行加法。
下面将参照图12和图13描述在浮点乘加单元11中变换为定点数的过程。
如图12所示,运算指令控制单元13接收浮点至定点变换指令,并且命令符号处理单元21、指数处理单元22和有效位处理单元23执行浮点至定点变换指令(参见参考字符B1至B3)。运算指令控制单元13还向有效位处理单元23提供指示乘数有效位为“0”的输入(参见参考字符B4)。
在接收到浮点至定点变换指令时,指数处理单元22的数字对齐移位量计算单元221参考要变换的浮点数的指数。数字对齐移位量计算单元221对包括隐式位“1”的浮点数的有效位进行移位以使得最终加法结果的最高有效位(即,进位传送加法器236的输出)位于要输出的定点数的位30。为此,数字对齐移位量计算单元221向有效位处理单元23的数字对齐移位器231输入移位量指令(即,输出位置调整量指令)(参见参考字符B5)。
有效位处理单元23的数字对齐移位器231基于来自指数处理单元22的移位量指令执行移位以实现数字对齐。
一旦接收到浮点至定点变换指令,如果要变换的浮点数的符号为负则符号处理单元21的符号计算单元211向有效位处理单元23的补码处理单元232输入减法指令(即,补码变换指令)(参见参考字符B6)。
有效位处理单元23的补码处理单元232基于来自符号处理单元21的减法指令执行补码过程。
有效位处理单元23的布斯编码单元233基于被乘数有效位和乘数有效位根据布斯乘法算法执行编码。
有效位处理单元23的乘法树234输出求和信号和进位信号。
在有效位处理单元23中,因为将乘数有效位设置为“0”,所以乘法结果的有效位为“0”(参见参考字符B7)。
有效位处理单元23的进位保存加法器235输出求和信号和进位信号。
有效位处理单元23的进位传送加法器236基于来自进位保存加法器的求和信号和进位信号顺序地发送用于下一位计算的进位信息。
由于在乘法树234中乘法结果的有效位为“0”,因此按原样输出来自数字对齐移位器231和补码处理单元232的值,并且最终的乘加运算的值是位30并且变换在要变换的浮点数之后输出的定点数的低阶位。
如图13所示,在浮点至定点变换指令的情况下,根据来自运算指令控制单元13的浮点至定点变换指令(参见参考字符B8),将从作为运算结果的、来自进位传送加法器236的输出的最高有效位起的8位输入到指数处理单元22的浮点指数计算单元113。从来自进位传送加法器236的输出的最高有效位起的8位对应于要输出的定点数的位30至23。
将运算结果输入到有效位处理单元23的归一化移位器237,并且在浮点至定点变换指令的情况下,由于来自运算指令控制单元13的输入,移位量被固定为“7”(参见参考字符B9)。因此,在归一化移位器237中将运算结果左移7位,并且因此将定点数的位23和低阶位和舍入信息输入到舍入电路112。
利用来自符号处理单元21的符号运算结果、来自指数处理单元22的指数运算结果和来自有效位处理单元23的有效位运算结果,将变换之后的定点数输出作为运算结果(参见参考字符B10)。
[B-2]运算的示例
将参照图14所示的流程图(步骤S21至S27)来描述图10所示的浮点乘加单元中的浮点指数计算过程。
运算指令控制单元13接收处理指令(步骤S21)。
指数处理单元22确定所接收的处理指令是否是浮点至定点变换指令(步骤S22)。
如果处理指令是浮点至定点变换指令(参考步骤S22中的“是”路径),则指数处理单元22基于来自运算指令控制单元13的选择指令来选择定点数的高阶位(步骤S23)。
基于来自舍入电路112的指数进位指令,指数处理单元22在浮点指数计算单元113处执行定点数的高阶位的加法过程以执行舍入(步骤S24)。
指数处理单元22在舍入之后输出运算结果(步骤S25)。然后,浮点指数计算过程结束。
如果在步骤S22中处理指令不是浮点至定点变换指令(参考步骤S22中的“否”路径),则指数处理单元22基于来自运算指令控制单元13的选择指令来选择浮点数的指数(步骤S26)。
基于来自舍入电路112的指数进位指令,指数处理单元22在浮点指数计算单元113处执行浮点数的指数的加法过程以执行舍入(步骤S27)。然后,过程进行到步骤S25。
[B-3]效果
例如,根据上述实施方式的示例中的浮点乘加单元11,可以获得以下效果并且参照图11描述这些效果。
当输入浮点至定点变换指令时,选择电路111输出定点数的特定位,当没有输入浮点至定点变换指令时,选择电路111输出浮点数的指数。浮点指数计算单元113对从选择电路111输出的特定位或指数执行预定算术运算。
因此,可以由被提供用于对浮点数的指数的算术运算的浮点指数计算单元113执行对定点数的特定位(例如,高阶位)的算术运算。因此,可以以更少的电路部件执行定点数和浮点数的算术运算。
舍入电路112对除了定点数中的特定位或浮点数的有效位之外的位执行预定算术运算,并且基于在除了特定位或有效位之外的位中包括的舍入信息对除了特定位或有效位之外的位执行舍入。
这确保了可以执行浮点数和定点数的算术运算期间的舍入过程。
当通过对除了特定位或有效位之外的位的预定算术运算而在特定位或有效位之外的位中生成进位时,舍入电路112向浮点指数计算单元113发出进位指令。响应于从舍入电路112接收到进位指令,浮点指数计算单元113对特定位或指数执行进位过程。
这确保了可以执行浮点数和定点数的运算期间的进位过程。
[C]其他
所公开的技术不限于前述实施方式,而是可以在不脱离本实施方式的精神和范围的情况下以各种修改来实现。本实施方式的每个配置和每个过程可以被按照需要地选择,或者可以被适当地组合。
Claims (7)
1.一种算术处理装置,包括:
选择电路,当输入用于将浮点数变换为定点数的指令信号时,所述选择电路输出定点数的特定位,当没有输入所述指令信号时,所述选择电路输出浮点数的指数;以及
第一算术电路,其对从所述选择电路输出的所述特定位或所述指数执行预定算术运算。
2.根据权利要求1所述的算术处理装置,还包括:
第二算术电路,其对除了所述定点数的特定位或所述浮点数的有效位之外的位执行预定算术运算,并且基于在除了所述特定位或所述有效位之外的位中包括的舍入信息对除了所述特定位或所述有效位之外的位执行舍入。
3.根据权利要求2所述的算术处理装置,
其中,当通过对除了所述特定位或所述有效位之外的位执行所述预定算术运算而在除了所述特定位或所述有效位之外的位中生成进位时,所述第二算术电路向所述第一算术电路发出进位指令,并且
其中,响应于接收到来自所述第二算术电路的进位指令,所述第一算术电路对所述特定位或所述指数执行进位过程。
4.一种算术处理装置的控制方法,所述控制方法包括:
当输入用于将浮点数变换为定点数的指令信号时,从选择电路输出定点数的特定位,当没有输入所述指令信号时,从所述选择电路输出浮点数的指数;以及
对从所述选择电路输出的所述特定位或所述指数执行第一预定算术运算。
5.根据权利要求4所述的控制方法,所述控制方法还包括:
对除了所述定点数的特定位或所述浮点数的有效位之外的位执行第二预定算术运算,并且基于在除了所述特定位或所述有效位之外的位中包括的舍入信息对除了所述特定位或所述有效位之外的位执行舍入。
6.根据权利要求5所述的控制方法,所述控制方法还包括:
当通过对除了所述特定位或所述有效位之外的位执行所述第二预定算术运算而在除了所述特定位或所述有效位之外的位中生成进位时,发出进位指令,以及
响应于所述进位指令,对所述特定位或所述指数执行进位过程。
7.一种算术处理装置,包括:
运算指令控制电路,其被配置成接收处理指令;
指数处理电路,其被配置成确定所述处理指令是否是浮点至定点变换指令;
舍入电路,其被配置成发送指数进位指令;以及
浮点指数计算电路,
所述指数处理电路还被配置成:
当所述处理指令是浮点至定点变换指令时,基于来自所述运算指令控制电路的选择指令来选择定点数的高阶位;
在所述浮点指数计算电路处执行所述定点数的高阶位的加法过程;以及
输出运算结果,
当所述处理指令不是浮点至定点变换指令时,基于来自所述运算指令控制单元的选择指令来选择浮点数的指数;
在所述浮点指数计算电路处执行所述浮点数的指数的加法过程;以及
输出运算结果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018-204893 | 2018-10-31 | ||
JP2018204893A JP7087918B2 (ja) | 2018-10-31 | 2018-10-31 | 演算処理装置及びその制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111124361A true CN111124361A (zh) | 2020-05-08 |
Family
ID=68072211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910983159.2A Pending CN111124361A (zh) | 2018-10-31 | 2019-10-16 | 算术处理装置及其控制方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200133633A1 (zh) |
EP (1) | EP3647939A1 (zh) |
JP (1) | JP7087918B2 (zh) |
CN (1) | CN111124361A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022271608A1 (en) * | 2021-06-21 | 2022-12-29 | Ceremorphic, Inc | Power saving floating point multiplier-accumulator with precision-aware accumulation |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4386399A (en) * | 1980-04-25 | 1983-05-31 | Data General Corporation | Data processing system |
EP0472139A2 (en) * | 1990-08-20 | 1992-02-26 | Matsushita Electric Industrial Co., Ltd. | A floating-point processor |
EP0849662A2 (en) * | 1996-12-20 | 1998-06-24 | Nec Corporation | Arithmetic operation and rounding system |
EP1061436A2 (en) * | 1997-10-23 | 2000-12-20 | Advanced Micro Devices, Inc. | Multifunction floating point addition/subtraction pipeline |
CN1928809A (zh) * | 2005-09-09 | 2007-03-14 | 国际商业机器公司 | 用于执行浮点运算的系统、设备和方法 |
CN101692202A (zh) * | 2009-09-27 | 2010-04-07 | 北京龙芯中科技术服务中心有限公司 | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 |
CN108139885A (zh) * | 2015-10-07 | 2018-06-08 | Arm有限公司 | 浮点数舍入 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6170635A (ja) * | 1984-09-14 | 1986-04-11 | Hitachi Ltd | 丸め制御装置 |
JP3253660B2 (ja) * | 1991-12-19 | 2002-02-04 | 松下電器産業株式会社 | 数値丸め装置および数値丸め方法 |
US5917741A (en) * | 1996-08-29 | 1999-06-29 | Intel Corporation | Method and apparatus for performing floating-point rounding operations for multiple precisions using incrementers |
US6529928B1 (en) * | 1999-03-23 | 2003-03-04 | Silicon Graphics, Inc. | Floating-point adder performing floating-point and integer operations |
US7236995B2 (en) | 2002-12-27 | 2007-06-26 | Arm Limited | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
JP5173759B2 (ja) | 2008-11-20 | 2013-04-03 | キヤノン株式会社 | 画像形成装置、その制御方法及び制御プログラム |
WO2016056066A1 (ja) | 2014-10-07 | 2016-04-14 | 藤倉ゴム工業株式会社 | 多段ピストンアクチュエータ |
-
2018
- 2018-10-31 JP JP2018204893A patent/JP7087918B2/ja active Active
-
2019
- 2019-09-23 US US16/578,449 patent/US20200133633A1/en not_active Abandoned
- 2019-09-27 EP EP19200007.3A patent/EP3647939A1/en not_active Withdrawn
- 2019-10-16 CN CN201910983159.2A patent/CN111124361A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4386399A (en) * | 1980-04-25 | 1983-05-31 | Data General Corporation | Data processing system |
EP0472139A2 (en) * | 1990-08-20 | 1992-02-26 | Matsushita Electric Industrial Co., Ltd. | A floating-point processor |
EP0849662A2 (en) * | 1996-12-20 | 1998-06-24 | Nec Corporation | Arithmetic operation and rounding system |
EP1061436A2 (en) * | 1997-10-23 | 2000-12-20 | Advanced Micro Devices, Inc. | Multifunction floating point addition/subtraction pipeline |
CN1928809A (zh) * | 2005-09-09 | 2007-03-14 | 国际商业机器公司 | 用于执行浮点运算的系统、设备和方法 |
CN101692202A (zh) * | 2009-09-27 | 2010-04-07 | 北京龙芯中科技术服务中心有限公司 | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 |
CN108139885A (zh) * | 2015-10-07 | 2018-06-08 | Arm有限公司 | 浮点数舍入 |
Also Published As
Publication number | Publication date |
---|---|
US20200133633A1 (en) | 2020-04-30 |
JP2020071642A (ja) | 2020-05-07 |
EP3647939A1 (en) | 2020-05-06 |
JP7087918B2 (ja) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077416B (zh) | 用于以选择性舍入模式进行向量处理的装置和方法 | |
US9841948B2 (en) | Microarchitecture for floating point fused multiply-add with exponent scaling | |
CN105468331B (zh) | 独立的浮点转换单元 | |
WO2018104696A1 (en) | An apparatus and method for performing arithmetic operations to accumulate floating-point numbers | |
CN107769791B (zh) | 用于定点到浮点的转换的装置和方法及2的负幂检测器 | |
JP7115211B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
US9483232B2 (en) | Data processing apparatus and method for multiplying floating point operands | |
US20170220344A1 (en) | Stochastic rounding floating-point add instruction using entropy from a register | |
CN106250098B (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
JP3313560B2 (ja) | 浮動小数点演算処理装置 | |
CN108694037B (zh) | 用于在执行浮点减法时估计移位量的装置和方法 | |
US10489115B2 (en) | Shift amount correction for multiply-add | |
CN111124361A (zh) | 算术处理装置及其控制方法 | |
US20090164544A1 (en) | Dynamic range enhancement for arithmetic calculations in real-time control systems using fixed point hardware | |
EP3977259A1 (en) | Multi-input floating-point adder | |
CN108153513B (zh) | 前导零预测 | |
JP2517064B2 (ja) | 非正規化数の処理方式 | |
CN113377334B (zh) | 一种浮点数据处理方法、装置及存储介质 | |
US11704092B2 (en) | High-precision anchored-implicit processing | |
KR100974190B1 (ko) | 부동 소수점을 이용한 복소수 곱셈방법 | |
CN114637488A (zh) | 人工智能运算电路 | |
JP2023161967A (ja) | 演算装置、演算方法及びプログラム | |
CN117787297A (zh) | 一种浮点乘加单元及其运算方法 | |
JP3100868B2 (ja) | 浮動小数点数のための算術演算装置 | |
JPH0498524A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200508 |
|
WD01 | Invention patent application deemed withdrawn after publication |