CN117827145B - 浮点运算装置及其处理方法、信息处理系统、硬件加速器 - Google Patents
浮点运算装置及其处理方法、信息处理系统、硬件加速器 Download PDFInfo
- Publication number
- CN117827145B CN117827145B CN202410240189.5A CN202410240189A CN117827145B CN 117827145 B CN117827145 B CN 117827145B CN 202410240189 A CN202410240189 A CN 202410240189A CN 117827145 B CN117827145 B CN 117827145B
- Authority
- CN
- China
- Prior art keywords
- floating point
- module
- result
- floating
- point
- 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.)
- Active
Links
- 230000010365 information processing Effects 0.000 title claims abstract description 10
- 238000003672 processing method Methods 0.000 title abstract description 27
- 238000007405 data analysis Methods 0.000 claims abstract description 124
- 238000004364 calculation method Methods 0.000 claims abstract description 123
- 238000010606 normalization Methods 0.000 claims abstract description 70
- 230000002159 abnormal effect Effects 0.000 claims abstract description 49
- 238000010224 classification analysis Methods 0.000 claims abstract description 10
- 238000006243 chemical reaction Methods 0.000 claims description 32
- 238000000034 method Methods 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 30
- 238000010586 diagram Methods 0.000 description 13
- 230000000694 effects Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000037433 frameshift Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Complex Calculations (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种浮点运算装置及其处理方法、信息处理系统、硬件加速器,包括:浮点数据分析模块对浮点操作数进行分类分析,得到数据分析结果;异常结果生成模块在数据分析结果未满足当前计算模式下的算法规则时,直接生成相应结果;浮点数据归一化模块在数据分析结果满足当前计算模式下的算法规则时,将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。上述装置支持不同类型浮点格式,支持浮点乘、加、指数、倒数、开平方根倒数,开平方根等多种高性能计算模式,减少了冗余工作量,提高了整体效率,在保证精度的前提下能够减少硬件资源面积,且适用范围广。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种浮点运算装置及其处理方法、信息处理系统、硬件加速器。
背景技术
面向人工智能的各种硬件加速器层出不穷,由于要保证训练推理精度,其中的计算核心就是浮点运算单元,用来完成矩阵乘、向量加/乘及各种非线性计算加速。特别是在现场可编程门阵列(Field-Programmable Gate Array,FPGA)应用中,仅有部分开源网际互连协议(Internet Protocol,IP)可供使用,开源IP如FPNEW(FPGA Platform New),主要由组合逻辑构成。但是开源IP通常使用综合工具插入流水寄存器实现,综合面积及延迟较大,仅支持乘加,其他复杂运算尚不支持,不满足高性能计算需要,浮点运算效率低。
发明内容
本发明的目的是提供一种浮点运算装置及其处理方法、信息处理系统、硬件加速器,支持不同类型浮点格式且支持多种计算模式,能够减少冗余工作量和硬件资源面积,提高整体效率,适用范围广。
为了解决上述技术问题,本发明提供一种浮点运算装置,包括:浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器;
所述浮点乘法器,所述浮点加法器,所述浮点指数计算器,所述浮点倒数计算器,所述浮点开平方根计算器和所述浮点开平方根倒数计算器均包括浮点数据分析模块,异常结果生成模块和浮点数据归一化模块;
其中,所述浮点数据分析模块,用于对浮点操作数进行分类分析,得到数据分析结果;浮点操作数包括半精度浮点数、单精度浮点数和双精度浮点数这三种类型中的至少一种;
所述异常结果生成模块,用于在所述数据分析结果未满足当前计算模式下的算法规则时,直接生成相应结果;
所述浮点数据归一化模块,用于在所述数据分析结果满足当前计算模式下的算法规则时,将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
第一方面,在本发明提供的上述浮点运算装置中,所述浮点数据归一化模块包括:
前导零计数子模块,用于搜索当前计算模式下得到的浮点数据中的小数部分或定点部分的第一个非零比特的位置;
数据移位子模块,用于根据所述前导零计数子模块的搜索结果,对指数部分数据和小数部分数据进行移位处理,得到初步归一化的浮点数据;
四舍五入处理子模块,用于对所述初步归一化的浮点数据进行四舍五入及异常处理,得到任意浮点格式的归一化浮点数结果。
另一方面,在本发明提供的上述浮点运算装置中,所述浮点乘法器还包括第一小数乘法模块和第一指数加法模块;
其中,所述第一小数乘法模块,用于从所述数据分析结果中获取两个浮点操作数的小数部分,并将两个浮点操作数的小数部分直接相乘,得到第一结果;
所述第一指数加法模块,用于从所述数据分析结果中获取两个浮点操作数的指数部分,并将两个浮点操作数的指数部分直接相加,得到第二结果;所述第一结果结合所述第二结果作为当前乘法模式下得到的浮点数据。
另一方面,在本发明提供的上述浮点运算装置中,所述浮点加法器还包括第一指数选择模块,第一移位核心模块和第一小数加法模块;
其中,所述第一指数选择模块,用于从所述数据分析结果中获取两个浮点操作数的指数部分,选择出指数部分大的浮点操作数;
所述第一移位核心模块,用于从所述数据分析结果中获取两个浮点操作数的小数部分,以选择出的浮点操作数为基准,对另一个浮点操作数的小数部分进行移位;
所述第一小数加法模块,用于将选择出的浮点操作数的小数部分和移位后的另一个浮点操作数的小数部分直接相加,得到第三结果;所述第三结果结合选择出的浮点操作数的指数部分作为当前加法模式下得到的浮点数据。
另一方面,在本发明提供的上述浮点运算装置中,还包括:浮点乘加器;
所述浮点乘加器包括所述浮点数据分析模块,所述异常结果生成模块,第二小数乘法模块,第二指数加法模块,第二指数选择模块,第二移位核心模块,第二小数加法模块和所述浮点数据归一化模块;
所述第二小数乘法模块,用于从所述数据分析结果中获取两个浮点操作数的小数部分,并将两个浮点操作数的小数部分直接相乘,得到第四结果;
所述第二指数加法模块,用于从所述数据分析结果中获取两个浮点操作数的指数部分,并将两个浮点操作数的指数部分直接相加,得到第五结果;所述第四结果结合所述第五结果的结果为目标浮点数据;
所述第二指数选择模块,用于从所述数据分析结果中获取第三个浮点操作数的指数部分,并与所述目标浮点数据的指数部分进行比较,选择出指数部分大的浮点数据;
所述第二移位核心模块,用于以选择出的浮点数据为基准,对另一浮点数据的小数部分进行移位;
所述第二小数加法模块,用于将选择出的浮点数据的小数部分和移位后的另一个浮点数据的小数部分直接相加,得到第六结果;所述第六结果结合选择出的浮点操作数的指数部分作为当前乘加法模式下得到的浮点数据。
另一方面,在本发明提供的上述浮点运算装置中,所述第一小数乘法模块与所述第二小数乘法模块的输入端均与所述浮点数据分析模块的输出端连接;
所述第一小数乘法模块的输出端与所述浮点数据归一化模块的输入端连接;所述第二小数乘法模块的输出端与所述第二移位核心模块的输入端连接;
所述第一指数加法模块与所述第二指数加法模块的输入端均与所述浮点数据分析模块的输出端连接;
所述第一指数加法模块的输出端与所述浮点数据归一化模块的输入端连接;所述第二指数加法模块的输出端与所述第二指数选择模块的输入端连接。
另一方面,在本发明提供的上述浮点运算装置中,所述浮点指数计算器还包括除法取整模块,定点乘法模块,定点转换模块,定点减法模块和指数计算模块;
所述除法取整模块,用于计算浮点操作数除以log(2)的结果,只取整数位,得到整数数值;
所述定点乘法模块,用于计算所述整数数值与log(2)之积,得到乘积结果;
所述定点转换模块,用于将浮点操作数进行定点数的转换;
所述定点减法模块,用于计算所述定点转换模块转换得到的定点数与所述乘积结果之间的差值,得到余数数值;
所述指数计算模块,用于对所述余数数值进行指数运算,得到第七结果;所述整数数值结合所述第七结果作为当前指数计算模式下得到的浮点数据或定点数据。
另一方面,在本发明提供的上述浮点运算装置中,所述除法取整模块包括:
乘法计算子模块,用于从所述数据分析结果中获取浮点操作数的小数部分,计算浮点操作数的小数部分与log(2)之积,得到相乘结果;
移位子模块,用于从所述数据分析结果中获取浮点操作数的指数部分,根据浮点操作数的指数部分对所述相乘结果进行移位,得到定点数据;
取整子模块,用于直接取所述定点数据的整数部分,得到所述整数数值。
另一方面,在本发明提供的上述浮点运算装置中,所述浮点指数计算器的计算公式为:
;
其中,x为浮点操作数,q为所述整数数值,r为所述余数数值。
另一方面,在本发明提供的上述浮点运算装置中,所述指数计算模块,用于使用坐标旋转数字计算方法对所述余数数值进行指数运算,得到定点数据并作为第七结果。
另一方面,在本发明提供的上述浮点运算装置中,所述指数计算模块,用于使用查表方法获取所述余数数值经指数运算得到的浮点数据并作为第七结果。
另一方面,在本发明提供的上述浮点运算装置中,所述浮点倒数计算器还包括加减法模块,小数移位模块,牛顿迭代模块;
所述加减法模块和所述小数移位模块,用于从所述数据分析结果中获取浮点操作数的小数部分和指数部分,将浮点操作数的小数部分调整到0.5至1的范围内,得到第八结果;
所述牛顿迭代模块,用于将所述第八结果进行定点计算,并将计算结果进行截尾处理,得到第九结果;浮点操作数的指数部分取反后结合所述第九结果作为当前倒数计算模式下得到的浮点数据。
另一方面,在本发明提供的上述浮点运算装置中,所述浮点开平方根倒数计算器还包括第一浮点乘法模块,格式转换模块,第二浮点乘法模块,第三浮点乘法模块,浮点加法模块,第四浮点乘法模块;
所述第一浮点乘法模块,用于计算浮点操作数与0.5之积,得到第十结果;
所述格式转换模块,用于将浮点操作数转换为16进制,得到第十一结果,获取所述第十一结果乘以2并取整的数值,利用常数值减去所述数值并转换为浮点形式,得到第十二结果;
所述第二浮点乘法模块,用于计算所述第十二结果的平方,得到第十三结果;
所述第三浮点乘法模块,用于计算所述第十三结果与所述第十结果之积,得到第十四结果;
所述浮点加法器,用于计算1.5与所述第十四结果之间的差值,得到第十五结果;
所述第四浮点乘法模块,用于计算所述第十五结果与所述第十二结果之积,得到第十六结果;所述第十六结果作为当前开平方根倒数计算模式下得到的浮点数据。
另一方面,在本发明提供的上述浮点运算装置中,所述浮点开平方根倒数计算器的计算公式为:
;
其中,表示所述第十六结果,y表示所述第十结果,x表示浮点操作数。
另一方面,在本发明提供的上述浮点运算装置中,所述浮点开平方根计算器还包括所述第一浮点乘法模块,所述格式转换模块,所述第二浮点乘法模块,所述第三浮点乘法模块,所述浮点加法模块,所述第四浮点乘法模块以及第五浮点乘法模块;
所述第五浮点乘法模块,用于计算所述第十六结果与浮点操作数之积,得到第十七结果;所述第十七结果作为当前开平方根计算模式下得到的浮点数据。
另一方面,在本发明提供的上述浮点运算装置中,所述第一浮点乘法模块,所述第二浮点乘法模块,所述第三浮点乘法模块,所述第四浮点乘法模块以及所述第五浮点乘法模块均调用所述浮点乘法器;
所述浮点加法模块调用所述浮点加法器。
另一方面,在本发明提供的上述浮点运算装置中,还包括:浮点比较器;
所述浮点比较器包括所述浮点数据分析模块,所述异常结果生成模块,第二指数选择模块,第二移位核心模块,比较核心模块;
所述第二指数选择模块,用于从所述数据分析结果中获取两个浮点操作数的指数部分,选择出指数部分大的浮点操作数;
所述第二移位核心模块,用于从所述数据分析结果中获取两个浮点操作数的小数部分,以选择出的浮点操作数为基准,对另一个浮点操作数的小数部分进行移位;
所述比较核心模块,用于将选择出的浮点操作数的小数部分和移位后的另一个浮点操作数的小数部分直接比较,得到比较结果。
另一方面,在本发明提供的上述浮点运算装置中,还包括:非线性计算器;
所述非线性计算器包括所述浮点数据分析模块,查询地址输出模块;
所述查询地址输出模块,用于对浮点操作数进行处理,输出浮点操作数对应的只读存储器读地址。
另一方面,在本发明提供的上述浮点运算装置中,所述非线性计算器还包括正地址存储表和负地址存储表;
所述正地址存储表,用于当所述只读存储器读地址为正地址时,对所述只读存储器读地址进行存储;
所述负地址存储表,用于当所述只读存储器读地址为负地址时,对所述只读存储器读地址进行存储。
为了解决上述技术问题,本发明还提供一种浮点运算装置的处理方法,包括:
接收浮点操作数;
利用浮点数据分析模块对浮点操作数进行分类分析,得到数据分析结果;浮点操作数包括半精度浮点数、单精度浮点数和双精度浮点数这三种类型中的至少一种;
在所述数据分析结果未满足当前计算模式下的算法规则时,利用异常结果生成模块直接生成相应结果;
在所述数据分析结果满足当前计算模式下的算法规则时,利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
为了解决上述技术问题,本发明还提供一种信息处理系统,包括:
存储器,用于存储浮点操作数;
处理器,包括:浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器;
所述浮点乘法器,所述浮点加法器,所述浮点指数计算器,所述浮点倒数计算器,所述浮点开平方根计算器和所述浮点开平方根倒数计算器均包括浮点数据分析模块,异常结果生成模块和浮点数据归一化模块;
其中,所述浮点数据分析模块,用于对浮点操作数进行分类分析,得到数据分析结果;浮点操作数包括半精度浮点数、单精度浮点数和双精度浮点数这三种类型中的至少一种;
所述异常结果生成模块,用于在所述数据分析结果未满足当前计算模式下的算法规则时,直接生成相应结果;
所述浮点数据归一化模块,用于在所述数据分析结果满足当前计算模式下的算法规则时,将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
为了解决上述技术问题,本发明还提供一种硬件加速器,所述硬件加速器包括上述浮点运算装置。
从上述技术方案可以看出,本发明所提供的一种浮点运算装置,包括:浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器;浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器均包括浮点数据分析模块,异常结果生成模块和浮点数据归一化模块;其中,浮点数据分析模块,用于对浮点操作数进行分类分析,得到数据分析结果;浮点操作数包括半精度浮点数、单精度浮点数和双精度浮点数这三种类型中的至少一种;异常结果生成模块,用于在数据分析结果未满足当前计算模式下的算法规则时,直接生成相应结果;浮点数据归一化模块,用于在数据分析结果满足当前计算模式下的算法规则时,将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
本发明的有益效果在于,本发明提供的上述浮点运算装置,支持半精度浮点数、单精度浮点数和双精度浮点数这三种类型的浮点格式,支持浮点乘、加、指数、倒数、开平方根倒数,开平方根等多种高性能计算模式,其中浮点数据分析模块,异常结果生成模块和浮点数据归一化模块在本发明中作为通用的模块,应用于浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器等,能够完成对浮点操作数进行分类分析,可直接得到浮点数据在不同计算模式下的异常结果,也可实现浮点数据或定点数据到任意浮点格式的转化及归一化,减少了冗余工作量,提高了整体效率,在保证精度的前提下能够减少硬件资源面积,且不限制输入浮点操作数范围,适用范围广。
此外,本发明还针对浮点运算装置提供了相应的浮点运算装置的处理方法、信息处理系统及硬件加速器,与上述提到的浮点运算装置具有相同或相对应的技术特征,效果同上。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的浮点运算装置的结构示意图之一;
图2为本发明实施例提供的浮点运算装置的结构示意图之二;
图3为本发明实施例提供的浮点乘法器的结构示意图;
图4为本发明实施例提供的浮点加法器的结构示意图;
图5为本发明实施例提供的浮点乘加器的结构示意图;
图6为本发明实施例提供的浮点指数计算器的结构示意图;
图7为本发明实施例提供的浮点倒数计算器的结构示意图;
图8为本发明实施例提供的浮点开平方根倒数计算器的结构示意图;
图9为本发明实施例提供的浮点开平方根计算器的结构示意图;
图10为本发明实施例提供的浮点比较器的结构示意图;
图11为本发明实施例提供的非线性计算器的结构示意图;
图12为本发明实施例提供的浮点运算装置的处理方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。图1为本发明实施例提供的浮点运算装置的结构示意图之一,如图1所示,包括:浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器;
浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器均包括浮点数据分析模块1(float_classifier),异常结果生成模块2(float_special_result)和浮点数据归一化模块3(float_normal_top);
其中,浮点数据分析模块1,用于对浮点操作数进行分类分析,得到数据分析结果;浮点操作数包括半精度浮点数(FP16)、单精度浮点数(FP32)和双精度浮点数(FP64)这三种类型中的至少一种;
异常结果生成模块2,用于在数据分析结果未满足当前计算模式下的算法规则时,直接生成相应结果;这里的当前计算模式可以是乘法,加法,指数算法,倒数算法,开平方根算法,开平方根倒数算法等;
浮点数据归一化模块3,用于在数据分析结果满足当前计算模式下的算法规则时,将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
需要说明的是,浮点数(浮点操作数)在计算机技术领域中用以近似表示任意某个实数,它是一种特殊的数值格式,由三部分组成:符号位、指数部分和小数部分(位数部分)。小数部分表示实数的小数部分的值,通常用二进制的形式表示。指数部分表示实数的倍乘因子的一部分,通常用移码表示。
上述浮点数据分析模块1的输入(Input)端口可输入浮点操作数(operands),输出(Output)端口可输出数据分析结果;该数据分析结果包括:符号位,小数部分的具体数值和类型,指数部分的具体数值和类型,例如归一化非0数据(info.is_normal)、0数据(info.is_zero)、指数为0的非0数据(info.is_subnormal)、无穷大(info.is_inf)、非法数据(info.is_nan)等。
上述异常结果生成模块2的输入端口输入的数据可以包括浮点数据特征(info),浮点操作数(operands),操作类型(op_i);该操作类型包括:加(add),乘(mult),指数(exp),倒数(reciprocal),开平方(rsqrt)。输出端口输出的数据可以包括异常结果(Special_result),以及异常结果有效(Special_result_vld)。
上述浮点数据归一化模块3的功能主要包括:归一化浮点数据,定点数据转换为任意浮点数据,任意浮点之间的转换;支持FP16、FP32、FP64三种类型的浮点数据。浮点数据归一化模块3的输入端口输入的数据可以包括小数部分或定点部分(frac),可分别指定数据宽度(DIN_WIDTH)及小数位宽(FRAC_WIDTH),则整数部分为INT_WIDTH=DIN_WIDTH- FRAC_WIDTH;指数部分(exp),若输入为定点数,则此部分数据为偏置常数(BIAS),FP16的BIAS为15,FP32的BIAS为127,FP64的BIAS为1023;符号位(Sign_flag),其中0表示正数,1表示负数;异常结果;异常结果有效。输出端口输出的数据可以包括任意浮点格式的归一化浮点数结果。
本发明实施例提供的上述浮点运算装置中,支持半精度浮点数、单精度浮点数和双精度浮点数这三种类型的浮点格式,支持浮点乘、加、指数、倒数、开平方根倒数,开平方根等多种高性能计算模式,其中浮点数据分析模块1,异常结果生成模块2和浮点数据归一化模块3在本发明中作为通用的模块,应用于浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器等,能够完成对浮点操作数进行分类分析,可直接得到浮点数据在不同计算模式下的异常结果,也可实现浮点数据或定点数据到任意浮点格式的转化及归一化,减少了冗余工作量,提高了整体效率,在保证精度的前提下能够减少硬件资源面积,且不限制输入浮点操作数范围,适用范围广。
需要说明的是,本发明所提及的“模块”、“子模块”是可以由systemverilog(简称SV语言,是建立Verilog语言的基础上,将硬件描述语言与现代的高层级验证语言结合起来)语言设计,经过现场可编程门阵列(Field-Programmable Gate Array,FPGA)/专用集成电路(Application Specific Integrated Circuit,ASIC)综合工具综合后得到的最终可应用的数字电路模块。
在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图1所示,浮点数据归一化模块3可以包括:
前导零计数子模块(leading zero count),用于搜索当前计算模式下得到的浮点数据中的小数部分或定点部分的第一个非零比特的位置;
数据移位子模块(shift),用于根据前导零计数子模块的搜索结果和指数部分数据,对小数部分数据进行移位处理,得到初步归一化的浮点数据;
四舍五入处理子模块(float_normal_clip),用于对初步归一化的浮点数据进行四舍五入及异常处理,得到任意浮点格式的归一化浮点数结果。
在实施中,在数据移位子模块中,归一化的最终结果是将小数部分尽量保留,压缩小部分头部为0的bit,计算公式如下:
exp_new=exp– (leading_zero_count–INT_WIDTH+1);
其中,exp是指数部分数据;前导零计数子模块leading_zero_count为输入小数部分首个不为0bit的位置;INT_WIDTH为输入小数部分中的整数位宽;exp_new是初步归一化的浮点数据的指数部分。
设exp_tmp=exp+INT_WIDTH–leading_zero_count–1;下面为小数部分移位操作及特殊处理,代码如下:
if (exp_tmp>=0);
frac_new=frac<<leading_zero_count;(小数部分移位)
exp_new=exp_tmp;
else(特殊情况处理,exp超出范围后,只能小数移位少一点)
exp_new=0;
if ( leading_zero_count>= abs(exp_tmp) );
frac_new=frac<<(leading_zero_count–abs(exp_tmp) ) ;
else
frac_new=frac>>(abs(exp_tmp)–leading_zero_count) ;
end
end。
四舍五入处理子模块的输入为初步归一化的浮点数据,对其进行四舍五入及异常处理,输出为最终归一化的浮点数据;标准小数位宽(frac_len)为:FP16-10,FP32-23,FP64-52;直接截取小数点后(frac_len+3)位数据,增加的三位分别是G(保护位),R(舍入位),S(黏着位),用以保证精度,然后进行四舍五入;四舍五入处理子模块中设计了专用于浮点数据的四舍五入模块。
需要说明的是,本发明利用浮点数据归一化模块3的设计,可以使得浮点运算装置的延迟仅为4个时钟周期,大大低于Xilinx IP的9个时钟周期。
图2为本发明实施例提供的浮点运算装置的结构示意图之二。如图2所示,本发明实施例提供的上述浮点运算装置可以包括浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器,还可以包括浮点乘加器,浮点比较器和非线性计算器。下面对图2中的每一个计算器进行结构说明。
在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图3所示,浮点乘法器除了浮点数据分析模块1,异常结果生成模块2,浮点数据归一化模块3,还可以包括第一小数乘法模块4和第一指数加法模块5;
其中,第一小数乘法模块4,用于从数据分析结果中获取两个浮点操作数的小数部分,并将两个浮点操作数的小数部分直接相乘,得到第一结果;
第一指数加法模块5,用于从数据分析结果中获取两个浮点操作数的指数部分,并将两个浮点操作数的指数部分直接相加,得到第二结果;第一结果结合第二结果作为当前乘法模式下得到的浮点数据。
在实施中,如图3所示,当输入的浮点操作数为a和b时,浮点数据分析模块1给出浮点操作数a和b的数据信息。异常结果生成模块2处理异常数据输入,包括无穷大、非法数据、指数为0的非0数据,0数据,例如当识别出a=0或b=0时,可直接输出结果c=0;当识别出a和/或b为无穷大时,可直接输出结果c为无穷大。第一小数乘法模块4是a和b的小数部分直接相乘,得到第一结果;第一指数加法模块5是a和b的指数部分直接相加,得到第二结果。浮点数据归一化模块3将计算所得的第一结果和第二结果归一化生成新的标准格式的浮点数。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图4所示,浮点加法器除了浮点数据分析模块1,异常结果生成模块2,浮点数据归一化模块3,还可以包括第一指数选择模块6,第一移位核心模块7和第一小数加法模块8;
其中,第一指数选择模块6,用于从数据分析结果中获取两个浮点操作数的指数部分,选择出指数部分大的浮点操作数;
第一移位核心模块7,用于从数据分析结果中获取两个浮点操作数的小数部分,以选择出的浮点操作数为基准,对另一个浮点操作数的小数部分进行移位;
第一小数加法模块8,用于将选择出的浮点操作数的小数部分和移位后的另一个浮点操作数的小数部分直接相加,得到第三结果;第三结果结合选择出的浮点操作数的指数部分作为当前加法模式下得到的浮点数据。
在实施中,如图4所示,当输入的浮点操作数为a和b时,浮点数据分析模块1给出浮点操作数a和b的数据信息。异常结果生成模块2处理异常数据输入,包括无穷大、非法数据、指数为0的非0数据,例如当识别出a和/或b为无穷大时,可直接输出结果c为无穷大。假设a的指数较大,第一指数选择模块6选定指数部分较大的浮点操作数a,第一移位核心模块7以选定的a为基准,对另外一个浮点操作数b的小数部分进行移位,移位之前标准小数位宽FP16-10,FP32-23,FP64-52,此处为了节约加法器面积,移位之后选择只保留小数点后(frac_len+3)位数据,增加的三位分别是G(保护位),R(舍入位),S(黏着位)。第一小数加法模块8将a和b的小数部分直接相加,得到第三结果。浮点数据归一化模块3将计算所得的第三结果结合选择出的浮点操作数a的指数部分归一化生成新的标准格式的浮点数。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图5所示,还可以包括:浮点乘加器;
浮点乘加器可以包括浮点数据分析模块1,异常结果生成模块2,第二小数乘法模块9,第二指数加法模块10,第二指数选择模块11,第二移位核心模块12,第二小数加法模块13和浮点数据归一化模块3;
第二小数乘法模块9,用于从数据分析结果中获取两个浮点操作数的小数部分,并将两个浮点操作数的小数部分直接相乘,得到第四结果;
第二指数加法模块10,用于从数据分析结果中获取两个浮点操作数的指数部分,并将两个浮点操作数的指数部分直接相加,得到第五结果;第四结果结合第五结果的结果为目标浮点数据;
第二指数选择模块11,用于从数据分析结果中获取第三个浮点操作数的指数部分,并与目标浮点数据的指数部分进行比较,选择出指数部分大的浮点数据;
第二移位核心模块12,用于以选择出的浮点数据为基准,对另一浮点数据的小数部分进行移位;
第二小数加法模块13,用于将选择出的浮点数据的小数部分和移位后的另一个浮点数据的小数部分直接相加,得到第六结果;第六结果结合选择出的浮点操作数的指数部分作为当前乘加法模式下得到的浮点数据。
在实施中,如图5所示,当输入的浮点操作数为a、b和c时,浮点数据分析模块1给出浮点操作数a、b和c的数据信息。异常结果生成模块2处理异常数据输入,包括无穷大、非法数据、指数为0的非0数据和0数据,例如当识别出a、b、c任意一个为无穷大时,可直接输出结果d为无穷大;当识别出a和/或b为0时,可直接输出结果d等于c。第二小数乘法模块9是a和b的小数部分直接相乘,得到第四结果;第二指数加法模块10是a和b的指数部分直接相加,得到第五结果。比较第五结果和c的指数,第二指数选择模块11选定指数部分较大的浮点数据,第二移位核心模块12以选定的浮点数据为基准,对另外一个浮点数据的小数部分进行移位,移位之前标准小数位宽FP16-10,FP32-23,FP64-52,移位之后选择只保留小数点后(frac_len+3)位数据,增加的三位分别是G(保护位),R(舍入位),S(黏着位)。第二小数加法模块13将选择出的浮点数据的小数部分和移位后的另一个浮点数据的小数部分直接相加,得到第六结果。浮点数据归一化模块3将计算所得的第六结果结合选择出的浮点操作数的指数部分归一化生成新的标准格式的浮点数。需要说明的是,上述浮点乘加器将浮点加法器和浮点乘法器融合到一块,减少了一次归一化操作,相对于传统IP,同样时钟频率下(500M时钟)及同样延迟下,本发明的浮点乘加器综合面积减少了15%。
在具体实施时,上述第一小数乘法模块4与第二小数乘法模块9的输入端均与浮点数据分析模块1的输出端连接;第一小数乘法模块4的输出端与浮点数据归一化模块3的输入端连接;第二小数乘法模块9的输出端与第二移位核心模块12的输入端连接;第一指数加法模块5与第二指数加法模块10的输入端均与浮点数据分析模块1的输出端连接;第一指数加法模块5的输出端与浮点数据归一化模块3的输入端连接;第二指数加法模块10的输出端与第二指数选择模块的输入端连接。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图6所示,浮点指数计算器除了浮点数据分析模块1,异常结果生成模块2,浮点数据归一化模块3,还可以包括除法取整模块14,定点乘法模块15,定点转换模块16,定点减法模块17和指数计算模块18;
除法取整模块14,用于计算浮点操作数除以log(2)的结果,只取整数位,得到整数数值;
定点乘法模块15,用于计算整数数值与log(2)之积,得到乘积结果;
定点转换模块16,用于将浮点操作数进行定点数的转换;
定点减法模块17,用于计算定点转换模块转换得到的定点数与乘积结果之间的差值,得到余数数值;
指数计算模块18,用于对余数数值进行指数运算,得到第七结果;整数数值结合第七结果作为当前指数计算模式下得到的浮点数据或定点数据。
在实施中,浮点指数计算器采取的实现策略如下:
exp(x) =exp(q* log(2) +r)
=exp(q*log(2))* exp(r)
=exp(log(2))^q* exp(r)
= 2^q* exp(r);
其中,x为浮点操作数,q为整数数值,r为余数数值,^符号表示次方的意思。
如上述公式所示,浮点指数计算器通过对log(2)取余,得到r,并最终将exp(x)转换为求exp(r),r的取值范围为(-log(2),log(2))。通过上述方式,浮点指数计算器可以完成任意浮点数据的指数计算。
如图6所示,当输入的浮点操作数为a时,浮点数据分析模块1给出浮点操作数a的数据信息。异常结果生成模块2处理异常数据输入,包括无穷大、非法数据、指数为0的非0数据,0数据;例如当识别出a为无穷大时,可直接输出结果c为无穷大;当识别出a为0时,可直接输出结果c为1。除法取整模块14计算a除以log(2)的结果,只取整数位,得到整数数值q。
在具体实施时,除法取整模块14可以包括:
乘法计算子模块,用于从数据分析结果中获取浮点操作数的小数部分,计算浮点操作数的小数部分frac与log(2)之积,得到相乘结果(q_all);此处使用浮点数据的小数部分frac进行乘法运算,减少了乘法器位宽,降低IP面积;
移位子模块,用于从数据分析结果中获取浮点操作数的指数部分,根据浮点操作数的指数部分对相乘结果进行移位,得到定点数据(q_fix);
取整子模块,用于直接取定点数据的整数部分,得到整数数值q。
在除法取整模块14得到整数数值q后,定点乘法模块15计算整数数值q与log(2)之积,得到乘积结果q*log(2),这样可以减少计算延迟。定点转换模块16将浮点操作数进行定点数fix的转换。定点减法模块17计算定点转换模块转换得到的定点数fix与乘积结果之间的差值fix-q*log(2),得到余数数值r。指数计算模块18对余数数值r进行指数运算,得到第七结果。浮点数据归一化模块3将计算所得的整数数值结合第七结果归一化生成新的标准格式的浮点数。
在具体实施时,指数计算模块18,可以用于使用坐标旋转数字计算(cordic)方法对余数数值进行指数运算,得到定点数据并作为第七结果;或,使用查表方法获取余数数值经指数运算得到的浮点数据并作为第七结果。
上述浮点指数计算器支持cordic、浮点查表等实现方式,不同实现方式可应用于不同的场合,若要保证高精度,可采用cordic模式计算;若更关注低延迟,可以直接查表得到输出。关于浮点指数计算器中指数计算模块18的实现方式具体可以根据实际需要进行选择,进一步减少硬件资源浪费。
需要说明的是,在浮点指数计算器中,为了减少延迟及降低面积,所有计算均可以转化为定点计算。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图7所示,浮点倒数计算器除了浮点数据分析模块1,异常结果生成模块2,浮点数据归一化模块3,还可以包括加减法模块19,小数移位模块20,牛顿迭代模块21;
加减法模块19和小数移位模块20,用于从数据分析结果中获取浮点操作数的小数部分和指数部分,将浮点操作数的小数部分调整到0.5至1的范围内,得到第八结果;
牛顿迭代模块21,用于将第八结果进行定点计算,并将计算结果进行截尾处理,得到第九结果;浮点操作数的指数部分取反后结合第九结果作为当前倒数计算模式下得到的浮点数据。
上述浮点倒数计算器支持牛顿迭代法这种实现方式来实现倒数快速计算,该算法策略如下:
frac调整到(0.5,1)区间;
x(1)=48/17-39/17*frac;(x(1)为初始值);
ceil为向上取整数;
迭代次数p=ceil(log2(P+1)/log2(17)) ;(P取值为FP16:16,FP32:32, FP64:64);
Fori=1:p(for循环);
x(i+1)=x(i)*(2-frac*x(i));
end循环完毕,x(p+1)为最终结果的小数部分。
在实施中,如图7所示,当输入的浮点操作数为a时,浮点数据分析模块1给出浮点操作数a的数据信息。异常结果生成模块2处理异常数据输入,包括无穷大、非法数据、指数为0的非0数据,0数据。加减法模块19和小数移位模块20可以从数据分析结果中获取浮点操作数的小数部分和指数部分,将浮点操作数的小数部分调整到0.5至1的范围内,得到第八结果。牛顿迭代模块21可以将第八结果进行定点计算,并在保证精度情况下,将计算结果进行截尾处理,以减少模块面积,最终得到第九结果(rfrac);浮点操作数的指数部分取反后结合第九结果作为当前倒数计算模式下得到的浮点数据。浮点数据归一化模块3将浮点操作数的指数部分取反后结合第九结果归一化生成新的标准格式的浮点数。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图8所示,浮点开平方根倒数计算器除了浮点数据分析模块1,异常结果生成模块2,浮点数据归一化模块3,还可以包括第一浮点乘法模块22,格式转换模块23,第二浮点乘法模块24,第三浮点乘法模块25,浮点加法模块26,第四浮点乘法模块27;
第一浮点乘法模块22,用于计算浮点操作数与0.5之积,得到第十结果;
格式转换模块23,用于将浮点操作数转换为16进制,得到第十一结果,获取第十一结果乘以2并取整的数值,利用常数值减去数值并转换为浮点形式,得到第十二结果;
第二浮点乘法模块24,用于计算第十二结果的平方,得到第十三结果;
第三浮点乘法模块25,用于计算第十三结果与第十结果之积,得到第十四结果;
浮点加法模块26,用于计算1.5与第十四结果之间的差值,得到第十五结果;
第四浮点乘法模块27,用于计算第十五结果与第十结果之积,得到第十六结果;第十六结果作为当前开平方根倒数计算模式下得到的浮点数据。
在具体实施时,浮点开平方根倒数计算器的计算公式为:
;
其中,表示第十六结果,y表示第十结果,x表示浮点操作数。
需要说明的是,原始的开平方根倒数算法仅支持FP32格式,而本发明的浮点开平方根倒数计算器可以由FP32拓展到FP16/FP64。本发明的浮点开平方根倒数计算器的策略如下:
constant=0x5f3759df;constant是常数值;
x2=float*0.5;
y=num2hex(float);
i=constant–fix(y/2);
y=hex2num(i);
y= y*(1.5 – x2*y*y)。
本发明的浮点开平方根倒数计算器将constant近似取值如下:
constant=num2hex(sqrt(2^BIAS));后续计算不变。
在实施时,如图8所示,当输入的浮点操作数为a时,浮点数据分析模块1给出浮点操作数a的数据信息。异常结果生成模块2处理异常数据输入,包括无穷大、非法数据、指数为0的非0数据,0数据。第一浮点乘法模块22计算浮点操作数与0.5之积,得到第十结果,此处可以直接调用浮点乘法器。格式转换模块23将浮点操作数转换为16进制,得到第十一结果,获取第十一结果乘以2并取整的数值fix(y/2),利用常数值constant减去数值fix(y/2)并转换为浮点形式,得到第十二结果y。实际硬件实现仅一个定点减法即可完成。第二浮点乘法模块24计算第十二结果的平方y*y,得到第十三结果,此处可以直接调用浮点乘法器。第三浮点乘法模块25计算第十三结果与第十结果之积x2*y*y,得到第十四结果tmp0,此处可以直接调用浮点乘法器。浮点加法模块26计算1.5与第十四结果之间的差值1.5–tmp0,得到第十五结果tmp1,此处可以直接调用浮点加法器。第四浮点乘法模块27计算第十五结果tmp1与第十二结果y之积y*tmp1,得到第十六结果1/sqrt(a),此处可以直接调用浮点乘法器。浮点数据归一化模块3将第十六结果1/sqrt(a)归一化生成新的标准格式的浮点数。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图9所示,浮点开平方根计算器还包括第一浮点乘法模块22,格式转换模块23,第二浮点乘法模块24,第三浮点乘法模块25,浮点加法模块26,第四浮点乘法模块27以及第五浮点乘法模块28;
第五浮点乘法模块28,用于计算第十六结果与浮点操作数之积,得到第十七结果;第十七结果作为当前开平方根计算模式下得到的浮点数据。
在实施中,如图9所示,浮点开平方根计算器相对于浮点开平方根倒数计算器多加了第五浮点乘法模块28。第五浮点乘法模块28可以计算第十六结果1/sqrt(a)与浮点操作数a之积,得到第十七结果sqrt(a),此处可以直接调用浮点乘法器。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图10所示,还可以包括:浮点比较器;
浮点比较器可以包括浮点数据分析模块1,异常结果生成模块2,第二指数选择模块29,第二移位核心模块30,比较核心模块31;
第二指数选择模块29,用于从数据分析结果中获取两个浮点操作数的指数部分,选择出指数部分大的浮点操作数;
第二移位核心模块30,用于从数据分析结果中获取两个浮点操作数的小数部分,以选择出的浮点操作数为基准,对另一个浮点操作数的小数部分进行移位;
比较核心模块31,用于将选择出的浮点操作数的小数部分和移位后的另一个浮点操作数的小数部分直接比较,得到比较结果。
在实施中,如图10所示,当输入的浮点操作数为a和b时,浮点数据分析模块1给出浮点操作数a和b的数据信息。异常结果生成模块2处理异常数据输入,包括无穷大、非法数据、指数为0的非0数据。第二指数选择模块29可以选择出指数部分大的浮点操作数。第二移位核心模块30以选择出的浮点操作数为基准,对另一个浮点操作数的小数部分进行移位,移位之前标准小数位宽frac_len为:FP16-10,FP32-23,FP64-52,此处为了节约比较器面积,移位之后同样采取之前的策略,只增加G、R、S三个保护位。比较核心模块31可以将选择出的浮点操作数的小数部分和移位后的另一个浮点操作数的小数部分直接比较,得到符号位及小数部分的比较结果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置中,如图11所示,还可以包括:非线性计算器;
非线性计算器包括浮点数据分析模块1,查询地址输出模块32;
查询地址输出模块32,用于对浮点操作数进行处理,输出浮点操作数对应的只读存储器读地址。
需要说明的是,查询地址输出模块(float2addr)是以浮点操作数(float)为输入,输出为只读存储器(Read-Only Memory,ROM)地址(addr),参考IEEE-754,主要功能为浮点数据到ROM地址的转换功能,将其由FP32拓展到FP16及FP64,并测试通过,归纳公式如下:
exp=BIAS–exp;
msb=fix(log2(step) – exp);
if (exp>log2(step))
y=0;
else
y={1’b1,frac}[msb+1:end] ;
end。
其中,exp为输入浮点数的指数部分,frac为输入浮点数的小数部分,1/step为ROM表的采样步长,输出y是浮点数对应的ROM查表地址。
在具体实施时,非线性计算器还可以包括正地址存储表(lut0)33和负地址存储表(lut1)34;正地址存储表33,用于当只读存储器读地址为正地址时,对只读存储器读地址进行存储;负地址存储表34,用于当只读存储器读地址为负地址时,对只读存储器读地址进行存储。
在实施中,如图11所示,首先确定浮点数据范围及采样精度step,然后生成结果数据存入ROM中,为了方便查询,正地址的结果存入正地址存储表33中,负地址的结果存入负地址存储表34中。使用时,根据输入的浮点数由查询地址输出模块32生成ROM读地址,然后将读地址送入正地址存储表(lut0)33或负地址存储表(lut1)34中读出数据。
上述浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器,浮点开平方根倒数计算器,浮点乘加器,浮点比较器和非线性计算器的结构均简单清晰,支持cordic、牛顿迭代法、定点查表、浮点查表多种实现方式,具体实现时采用了多种优化手段,可应用于任意AI硬件加速器。
在上述实施例中,对于浮点运算装置进行了详细描述,本发明还提供了浮点运算装置的处理方法对应的实施例。该浮点运算装置包括:浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器;浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器均包括浮点数据分析模块,异常结果生成模块和浮点数据归一化模块。
图12为本发明实施例提供的浮点运算装置的处理方法流程图。该方法包括:
S1201、接收浮点操作数;
S1202、利用浮点数据分析模块对浮点操作数进行分类分析,得到数据分析结果;浮点操作数包括半精度浮点数、单精度浮点数和双精度浮点数这三种类型中的至少一种;
S1203、在数据分析结果未满足当前计算模式下的算法规则时,利用异常结果生成模块直接生成相应结果;
S1204、在数据分析结果满足当前计算模式下的算法规则时,利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
在本发明实施例提供的上述浮点运算装置的处理方法中,可以支持半精度浮点数、单精度浮点数和双精度浮点数这三种类型的浮点格式,支持多种高性能计算模式,能够完成对浮点操作数进行分类分析,可直接得到浮点数据在不同计算模式下的异常结果,也可实现浮点数据或定点数据到任意浮点格式的转化及归一化,减少了冗余工作量,提高了整体效率,在保证精度的前提下能够减少硬件资源面积,且不限制输入浮点操作数范围,适用范围广。
由于方法部分的实施例与上述提到的浮点运算装置部分的实施例相互对应,因此方法部分的实施例请参见装置部分的实施例的描述,这里暂不赘述。并且具有与上述提到的浮点运算装置相同的有益效果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置的处理方法中,若当前计算模式为乘法时,在利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理之前,还可以包括:
利用第一小数乘法模块从数据分析结果中获取两个浮点操作数的小数部分,并将两个浮点操作数的小数部分直接相乘,得到第一结果;
利用第一指数加法模块从数据分析结果中获取两个浮点操作数的指数部分,并将两个浮点操作数的指数部分直接相加,得到第二结果;第一结果结合第二结果作为当前乘法模式下得到的浮点数据;
此时,利用浮点数据归一化模块将当前乘法模式下得到的浮点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置的处理方法中,若当前计算模式为加法时,在利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理之前,还可以包括:
利用第一指数选择模块从数据分析结果中获取两个浮点操作数的指数部分,选择出指数部分大的浮点操作数;
利用第一移位核心模块从数据分析结果中获取两个浮点操作数的小数部分,以选择出的浮点操作数为基准,对另一个浮点操作数的小数部分进行移位;
利用第一小数加法模块将选择出的浮点操作数的小数部分和移位后的另一个浮点操作数的小数部分直接相加,得到第三结果;第三结果结合选择出的浮点操作数的指数部分作为当前加法模式下得到的浮点数据;
此时,利用浮点数据归一化模块将当前加法模式下得到的浮点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置的处理方法中,若当前计算模式为乘加法时,在利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理之前,还可以包括:
利用第二小数乘法模块从数据分析结果中获取两个浮点操作数的小数部分,并将两个浮点操作数的小数部分直接相乘,得到第四结果;
利用第二指数加法模块从数据分析结果中获取两个浮点操作数的指数部分,并将两个浮点操作数的指数部分直接相加,得到第五结果;第四结果结合第五结果的结果为目标浮点数据;
利用第二指数选择模块从数据分析结果中获取第三个浮点操作数的指数部分,并与目标浮点数据的指数部分进行比较,选择出指数部分大的浮点数据;
利用第二移位核心模块以选择出的浮点数据为基准,对另一浮点数据的小数部分进行移位;
利用第二小数加法模块将选择出的浮点数据的小数部分和移位后的另一个浮点数据的小数部分直接相加,得到第六结果;第六结果结合选择出的浮点操作数的指数部分作为当前乘加法模式下得到的浮点数据;
此时,利用浮点数据归一化模块将当前加法模式下得到的浮点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置的处理方法中,若当前计算模式为指数计算时,在利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理之前,还可以包括:
利用除法取整模块计算浮点操作数除以log(2)的结果,只取整数位,得到整数数值;
利用定点乘法模块计算整数数值与log(2)之积,得到乘积结果;
利用定点转换模块将浮点操作数进行定点数的转换;
利用定点减法模块计算定点转换模块转换得到的定点数与乘积结果之间的差值,得到余数数值;
利用指数计算模块对余数数值进行指数运算,得到第七结果;整数数值结合第七结果作为当前指数计算模式下得到的浮点数据或定点数据;
此时,利用浮点数据归一化模块将当前指数计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置的处理方法中,若当前计算模式为倒数计算时,在利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理之前,还可以包括:
利用加减法模块和小数移位模块从数据分析结果中获取浮点操作数的小数部分和指数部分,将浮点操作数的小数部分调整到0.5至1的范围内,得到第八结果;
利用牛顿迭代模块将第八结果进行定点计算,并将计算结果进行截尾处理,得到第九结果;浮点操作数的指数部分取反后结合第九结果作为当前倒数计算模式下得到的浮点数据;
此时,利用浮点数据归一化模块将当前倒数计算模式下得到的浮点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置的处理方法中,若当前计算模式为开平方根倒数计算时,在利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理之前,还可以包括:
利用第一浮点乘法模块计算浮点操作数与0.5之积,得到第十结果;
利用格式转换模块将浮点操作数转换为16进制,得到第十一结果,获取第十一结果乘以2并取整的数值,利用常数值减去数值并转换为浮点形式,得到第十二结果;
利用第二浮点乘法模块计算第十二结果的平方,得到第十三结果;
利用第三浮点乘法模块计算第十三结果与第十结果之积,得到第十四结果;
利用浮点加法模块计算1.5与第十四结果之间的差值,得到第十五结果;
利用第四浮点乘法模块计算第十五结果与第十结果之积,得到第十六结果;第十六结果作为当前开平方根倒数计算模式下得到的浮点数据;
此时,利用浮点数据归一化模块将当前开平方根倒数计算模式下得到的浮点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置的处理方法中,若当前计算模式为开平方根计算时,在利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理之前,还可以包括:
利用第五浮点乘法模块计算第十六结果与浮点操作数之积,得到第十七结果;第十七结果作为当前开平方根计算模式下得到的浮点数据;
此时,利用浮点数据归一化模块将当前开平方根计算模式下得到的浮点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置的处理方法中,若当前计算模式为比较运算时,还可以包括:
利用第二指数选择模块从数据分析结果中获取两个浮点操作数的指数部分,选择出指数部分大的浮点操作数;
利用第二移位核心模块从数据分析结果中获取两个浮点操作数的小数部分,以选择出的浮点操作数为基准,对另一个浮点操作数的小数部分进行移位;
利用比较核心模块将选择出的浮点操作数的小数部分和移位后的另一个浮点操作数的小数部分直接比较,得到比较结果。
进一步地,在具体实施时,在本发明实施例提供的上述浮点运算装置的处理方法中,若当前计算模式为非线性计算时,还可以包括:
利用查询地址输出模块对浮点操作数进行处理,输出浮点操作数对应的只读存储器读地址。
基于同一发明构思,本发明还提供了一种信息处理系统,该信息处理系统可以包括:
存储器,用于存储浮点操作数;
处理器,包括:浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器;
浮点乘法器,浮点加法器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器均包括浮点数据分析模块,异常结果生成模块和浮点数据归一化模块;
其中,浮点数据分析模块,用于对浮点操作数进行分类分析,得到数据分析结果;浮点操作数包括半精度浮点数、单精度浮点数和双精度浮点数这三种类型中的至少一种;
异常结果生成模块,用于在数据分析结果未满足当前计算模式下的算法规则时,直接生成相应结果;
浮点数据归一化模块,用于在数据分析结果满足当前计算模式下的算法规则时,将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
需要说明的是,处理器21可以为一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。一些实施例中,处理器21还可以为人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。关于处理器解决问题的原理与上述提到的浮点运算装置相似,因此该处理器的实施可以参见上述提到的浮点运算装置的实施,重复之处不再赘述。并且具有与上述提到的浮点运算装置相同的有益效果。
基于同一发明构思,本发明还提供了一种硬件加速器,该硬件加速器包括上述浮点运算装置,效果同上。
在实际应用中,本发明的硬件加速器可以是图形处理器(Graphics ProcessingUnit,GPU),通用图形处理器(General-Purpose Graphics Processing Unit,GPGPU)及各种张量处理器(Tensor Processing Unit,TPU),深度学习处理单元(Deep learningProcessing Unit,DPU),基于神经网络算法与加速的处理单元(Neural NetworkProcessing Unit,NPU)。本发明的硬件加速器还可以是各种基于FPGA或者ASIC的AI硬件加速器,也可直接应用于特殊领域浮点计算加速。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的浮点运算装置及其处理方法、信息处理系统、硬件加速器进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明的保护范围内。
Claims (17)
1.一种浮点运算装置,其特征在于,包括:浮点乘法器,浮点加法器,浮点乘加器,浮点指数计算器,浮点倒数计算器,浮点开平方根计算器和浮点开平方根倒数计算器,浮点比较器;
所述浮点乘法器,所述浮点加法器,所述浮点乘加器,所述浮点指数计算器,所述浮点倒数计算器,所述浮点开平方根计算器和所述浮点开平方根倒数计算器均包括浮点数据分析模块,异常结果生成模块和浮点数据归一化模块;
其中,所述浮点数据分析模块,用于对浮点操作数进行分类分析,得到数据分析结果;浮点操作数包括半精度浮点数、单精度浮点数和双精度浮点数这三种类型中的至少一种;
所述异常结果生成模块,用于在所述数据分析结果未满足当前计算模式下的算法规则时,直接生成相应结果;
所述浮点数据归一化模块,用于在所述数据分析结果满足当前计算模式下的算法规则时,将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果;
所述浮点乘法器还包括第一小数乘法模块和第一指数加法模块;所述第一小数乘法模块,用于从所述数据分析结果中获取两个浮点操作数的小数部分,并将两个浮点操作数的小数部分直接相乘,得到第一结果;所述第一指数加法模块,用于从所述数据分析结果中获取两个浮点操作数的指数部分,并将两个浮点操作数的指数部分直接相加,得到第二结果;所述第一结果结合所述第二结果作为当前乘法模式下得到的浮点数据;
所述浮点加法器还包括第一指数选择模块,第一移位核心模块和第一小数加法模块;所述第一指数选择模块,用于从所述数据分析结果中获取两个浮点操作数的指数部分,选择出指数部分大的浮点操作数;所述第一移位核心模块,用于从所述数据分析结果中获取两个浮点操作数的小数部分,以选择出的浮点操作数为基准,对另一个浮点操作数的小数部分进行移位;所述第一小数加法模块,用于将选择出的浮点操作数的小数部分和移位后的另一个浮点操作数的小数部分直接相加,得到第三结果;所述第三结果结合选择出的浮点操作数的指数部分作为当前加法模式下得到的浮点数据;
所述浮点乘加器还包括第二小数乘法模块,第二指数加法模块,第二指数选择模块,第二移位核心模块,第二小数加法模块;所述第二小数乘法模块,用于从所述数据分析结果中获取两个浮点操作数的小数部分,并将两个浮点操作数的小数部分直接相乘,得到第四结果;所述第二指数加法模块,用于从所述数据分析结果中获取两个浮点操作数的指数部分,并将两个浮点操作数的指数部分直接相加,得到第五结果;所述第四结果结合所述第五结果的结果为目标浮点数据;所述第二指数选择模块,用于从所述数据分析结果中获取第三个浮点操作数的指数部分,并与所述目标浮点数据的指数部分进行比较,选择出指数部分大的浮点数据;所述第二移位核心模块,用于以选择出的浮点数据为基准,对另一浮点数据的小数部分进行移位;所述第二小数加法模块,用于将选择出的浮点数据的小数部分和移位后的另一个浮点数据的小数部分直接相加,得到第六结果;所述第六结果结合选择出的浮点操作数的指数部分作为当前乘加法模式下得到的浮点数据;所述第一小数乘法模块与所述第二小数乘法模块的输入端均与所述浮点数据分析模块的输出端连接;所述第一小数乘法模块的输出端与所述浮点数据归一化模块的输入端连接;所述第二小数乘法模块的输出端与所述第二移位核心模块的输入端连接;所述第一指数加法模块与所述第二指数加法模块的输入端均与所述浮点数据分析模块的输出端连接;所述第一指数加法模块的输出端与所述浮点数据归一化模块的输入端连接;所述第二指数加法模块的输出端与所述第二指数选择模块的输入端连接;
所述浮点比较器包括所述浮点数据分析模块,所述异常结果生成模块,第二指数选择模块,第二移位核心模块,比较核心模块;所述第二指数选择模块,用于从所述数据分析结果中获取两个浮点操作数的指数部分,选择出指数部分大的浮点操作数;所述第二移位核心模块,用于从所述数据分析结果中获取两个浮点操作数的小数部分,以选择出的浮点操作数为基准,对另一个浮点操作数的小数部分进行移位;所述比较核心模块,用于将选择出的浮点操作数的小数部分和移位后的另一个浮点操作数的小数部分直接比较,得到比较结果。
2.根据权利要求1所述的浮点运算装置,其特征在于,所述浮点数据归一化模块包括:
前导零计数子模块,用于搜索当前计算模式下得到的浮点数据中的小数部分或定点部分的第一个非零比特的位置;
数据移位子模块,用于根据所述前导零计数子模块的搜索结果,对指数部分数据和小数部分数据进行移位处理,得到初步归一化的浮点数据;
四舍五入处理子模块,用于对所述初步归一化的浮点数据进行四舍五入及异常处理,得到任意浮点格式的归一化浮点数结果。
3.根据权利要求1所述的浮点运算装置,其特征在于,所述浮点指数计算器还包括除法取整模块,定点乘法模块,定点转换模块,定点减法模块和指数计算模块;
所述除法取整模块,用于计算浮点操作数除以log(2)的结果,只取整数位,得到整数数值;
所述定点乘法模块,用于计算所述整数数值与log(2)之积,得到乘积结果;
所述定点转换模块,用于将浮点操作数进行定点数的转换;
所述定点减法模块,用于计算所述定点转换模块转换得到的定点数与所述乘积结果之间的差值,得到余数数值;
所述指数计算模块,用于对所述余数数值进行指数运算,得到第七结果;所述整数数值结合所述第七结果作为当前指数计算模式下得到的浮点数据或定点数据。
4.根据权利要求3所述的浮点运算装置,其特征在于,所述除法取整模块包括:
乘法计算子模块,用于从所述数据分析结果中获取浮点操作数的小数部分,计算浮点操作数的小数部分与log(2)之积,得到相乘结果;
移位子模块,用于从所述数据分析结果中获取浮点操作数的指数部分,根据浮点操作数的指数部分对所述相乘结果进行移位,得到定点数据;
取整子模块,用于直接取所述定点数据的整数部分,得到所述整数数值。
5.根据权利要求3所述的浮点运算装置,其特征在于,所述浮点指数计算器的计算公式为:
;
其中,x为浮点操作数,q为所述整数数值,r为所述余数数值。
6.根据权利要求3所述的浮点运算装置,其特征在于,所述指数计算模块,用于使用坐标旋转数字计算方法对所述余数数值进行指数运算,得到定点数据并作为第七结果。
7.根据权利要求3所述的浮点运算装置,其特征在于,所述指数计算模块,用于使用查表方法获取所述余数数值经指数运算得到的浮点数据并作为第七结果。
8.根据权利要求1所述的浮点运算装置,其特征在于,所述浮点倒数计算器还包括加减法模块,小数移位模块,牛顿迭代模块;
所述加减法模块和所述小数移位模块,用于从所述数据分析结果中获取浮点操作数的小数部分和指数部分,将浮点操作数的小数部分调整到0.5至1的范围内,得到第八结果;
所述牛顿迭代模块,用于将所述第八结果进行定点计算,并将计算结果进行截尾处理,得到第九结果;浮点操作数的指数部分取反后结合所述第九结果作为当前倒数计算模式下得到的浮点数据。
9.根据权利要求1所述的浮点运算装置,其特征在于,所述浮点开平方根倒数计算器还包括第一浮点乘法模块,格式转换模块,第二浮点乘法模块,第三浮点乘法模块,浮点加法模块,第四浮点乘法模块;
所述第一浮点乘法模块,用于计算浮点操作数与0.5之积,得到第十结果;
所述格式转换模块,用于将浮点操作数转换为16进制,得到第十一结果,获取所述第十一结果乘以2并取整的数值,利用常数值减去所述数值并转换为浮点形式,得到第十二结果;
所述第二浮点乘法模块,用于计算所述第十二结果的平方,得到第十三结果;
所述第三浮点乘法模块,用于计算所述第十三结果与所述第十结果之积,得到第十四结果;
所述浮点加法模块,用于计算1.5与所述第十四结果之间的差值,得到第十五结果;
所述第四浮点乘法模块,用于计算所述第十五结果与所述第十二结果之积,得到第十六结果;所述第十六结果作为当前开平方根倒数计算模式下得到的浮点数据。
10.根据权利要求9所述的浮点运算装置,其特征在于,所述浮点开平方根倒数计算器的计算公式为:
;
其中,表示所述第十六结果,y表示所述第十结果,x表示浮点操作数。
11.根据权利要求10所述的浮点运算装置,其特征在于,所述浮点开平方根计算器还包括所述第一浮点乘法模块,所述格式转换模块,所述第二浮点乘法模块,所述第三浮点乘法模块,所述浮点加法模块,所述第四浮点乘法模块以及第五浮点乘法模块;
所述第五浮点乘法模块,用于计算所述第十六结果与浮点操作数之积,得到第十七结果;所述第十七结果作为当前开平方根计算模式下得到的浮点数据。
12.根据权利要求11所述的浮点运算装置,其特征在于,所述第一浮点乘法模块,所述第二浮点乘法模块,所述第三浮点乘法模块,所述第四浮点乘法模块以及所述第五浮点乘法模块均调用所述浮点乘法器;
所述浮点加法模块调用所述浮点加法器。
13.根据权利要求1所述的浮点运算装置,其特征在于,还包括:非线性计算器;
所述非线性计算器包括所述浮点数据分析模块,查询地址输出模块;
所述查询地址输出模块,用于对浮点操作数进行处理,输出浮点操作数对应的只读存储器读地址。
14.根据权利要求13所述的浮点运算装置,其特征在于,所述非线性计算器还包括正地址存储表和负地址存储表;
所述正地址存储表,用于当所述只读存储器读地址为正地址时,对所述只读存储器读地址进行存储;
所述负地址存储表,用于当所述只读存储器读地址为负地址时,对所述只读存储器读地址进行存储。
15.一种如权利要求1至14任一项所述的浮点运算装置的处理方法,其特征在于,包括:
接收浮点操作数;
利用浮点数据分析模块对浮点操作数进行分类分析,得到数据分析结果;浮点操作数包括半精度浮点数、单精度浮点数和双精度浮点数这三种类型中的至少一种;
在所述数据分析结果未满足当前计算模式下的算法规则时,利用异常结果生成模块直接生成相应结果;
在所述数据分析结果满足当前计算模式下的算法规则时,利用浮点数据归一化模块将当前计算模式下得到的浮点数据或定点数据进行归一化处理,得到任意浮点格式的归一化浮点数结果。
16.一种信息处理系统,其特征在于,包括:
存储器,用于存储浮点操作数;
处理器,包括如权利要求1至14任一项所述的浮点运算装置。
17.一种硬件加速器,其特征在于,所述硬件加速器包括如权利要求1至14任一项所述的浮点运算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410240189.5A CN117827145B (zh) | 2024-03-04 | 2024-03-04 | 浮点运算装置及其处理方法、信息处理系统、硬件加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410240189.5A CN117827145B (zh) | 2024-03-04 | 2024-03-04 | 浮点运算装置及其处理方法、信息处理系统、硬件加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117827145A CN117827145A (zh) | 2024-04-05 |
CN117827145B true CN117827145B (zh) | 2024-05-03 |
Family
ID=90522938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410240189.5A Active CN117827145B (zh) | 2024-03-04 | 2024-03-04 | 浮点运算装置及其处理方法、信息处理系统、硬件加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117827145B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101334766A (zh) * | 2008-06-30 | 2008-12-31 | 东软飞利浦医疗设备系统有限责任公司 | 一种并行微处理器及其实现方法 |
CN102103479A (zh) * | 2011-03-02 | 2011-06-22 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
US9904512B1 (en) * | 2013-05-31 | 2018-02-27 | Altera Corporation | Methods and apparatus for performing floating point operations |
CN109976705A (zh) * | 2019-03-20 | 2019-07-05 | 上海燧原智能科技有限公司 | 浮点格式数据处理装置、数据处理设备及数据处理方法 |
CN112036561A (zh) * | 2020-09-30 | 2020-12-04 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN117215646A (zh) * | 2023-05-16 | 2023-12-12 | 腾讯科技(深圳)有限公司 | 一种浮点运算方法、处理器、电子设备及存储介质 |
-
2024
- 2024-03-04 CN CN202410240189.5A patent/CN117827145B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101334766A (zh) * | 2008-06-30 | 2008-12-31 | 东软飞利浦医疗设备系统有限责任公司 | 一种并行微处理器及其实现方法 |
CN102103479A (zh) * | 2011-03-02 | 2011-06-22 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
US9904512B1 (en) * | 2013-05-31 | 2018-02-27 | Altera Corporation | Methods and apparatus for performing floating point operations |
CN109976705A (zh) * | 2019-03-20 | 2019-07-05 | 上海燧原智能科技有限公司 | 浮点格式数据处理装置、数据处理设备及数据处理方法 |
CN112036561A (zh) * | 2020-09-30 | 2020-12-04 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN117215646A (zh) * | 2023-05-16 | 2023-12-12 | 腾讯科技(深圳)有限公司 | 一种浮点运算方法、处理器、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117827145A (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5631859A (en) | Floating point arithmetic unit having logic for quad precision arithmetic | |
US7188133B2 (en) | Floating point number storage method and floating point arithmetic device | |
JPH02196328A (ja) | 浮動小数点演算装置 | |
JPH04127364A (ja) | 積和算器 | |
Detrey et al. | Return of the hardware floating-point elementary function | |
Murillo et al. | Energy-efficient MAC units for fused posit arithmetic | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
Murillo et al. | Comparing different decodings for posit arithmetic | |
Crespo et al. | Unified posit/IEEE-754 vector MAC unit for transprecision computing | |
CN116594590A (zh) | 一种浮点数据的多功能运算装置及方法 | |
Neves et al. | Dynamic fused multiply-accumulate posit unit with variable exponent size for low-precision DSP applications | |
US5408426A (en) | Arithmetic unit capable of performing concurrent operations for high speed operation | |
US20090164544A1 (en) | Dynamic range enhancement for arithmetic calculations in real-time control systems using fixed point hardware | |
GB2549153B (en) | Apparatus and method for supporting a conversion instruction | |
US7219117B2 (en) | Methods and systems for computing floating-point intervals | |
CN117827145B (zh) | 浮点运算装置及其处理方法、信息处理系统、硬件加速器 | |
CN115268832A (zh) | 浮点数取整的方法、装置以及电子设备 | |
Trivedi et al. | A Review on Single Precision Floating Point Arithmetic Unit of 32 bit Number | |
Hass | Synthesizing optimal fixed-point arithmetic for embedded signal processing | |
Prasanna et al. | An Efficient Fused Floating-Point Dot Product Unit Using Vedic Mathematics | |
JP4163967B2 (ja) | 浮動小数点演算装置 | |
US20110119471A1 (en) | Method and apparatus to extract integer and fractional components from floating-point data | |
US20230334117A1 (en) | Method and system for calculating dot products | |
KR20040033198A (ko) | 부동소수점의 곱셈 및 누산장치 | |
Chen et al. | Decimal floating-point antilogarithmic converter based on selection by rounding: Algorithm and architecture |
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 |