CN113778373A - 一种安全浮点运算方法和系统 - Google Patents
一种安全浮点运算方法和系统 Download PDFInfo
- Publication number
- CN113778373A CN113778373A CN202111086639.2A CN202111086639A CN113778373A CN 113778373 A CN113778373 A CN 113778373A CN 202111086639 A CN202111086639 A CN 202111086639A CN 113778373 A CN113778373 A CN 113778373A
- Authority
- CN
- China
- Prior art keywords
- floating
- point
- fixed
- point number
- calculation
- 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 27
- 238000004364 calculation method Methods 0.000 claims abstract description 88
- 238000006243 chemical reaction Methods 0.000 claims description 20
- 230000006870 function Effects 0.000 description 14
- 230000007547 defect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Advance Control (AREA)
Abstract
一种安全浮点运算方法,采用硬浮点计算方法和定点计算方法两种相异的计算方法进行运算,对硬浮点计算结果和定点计算结果进行差异比较,以保证浮点计算功能安全性。本发明确保系统浮点运算安全,对运算资源消耗少,效率高。
Description
技术领域
本发明涉及一种安全浮点运算方法和系统。
背景技术
目前,在安全平台上,浮点运算功能在功能安全设计上分为两种实现方法,一种是把该功能不作为安全功能来考虑,另一种是采用软浮点方式,浮点参数的传递也是通过寄存器或者堆栈完成,通常采用整形数模拟浮点通用函数调用和库函数调用方式来实现。
这二类方式都有相应缺点。第一种实现方式会大大限制安全平台的使用场景,使得平台应用范围受限。第二种实现方式在运算时,需要消耗大量的运算资源,效率低,实时性差,参数传入传出没有经过验证,其功能安全存在一定的缺陷。
发明内容
本发明的目的在于提供一种安全浮点运算方法和系统,确保系统浮点运算安全,对运算资源消耗少,效率高。
为了达到上述目的,本发明提供一种安全浮点运算方法,采用硬浮点计算方法和定点计算方法两种相异的计算方法进行运算,对硬浮点计算结果和定点计算结果进行差异比较,以保证浮点计算功能安全性。
所述硬浮点计算方法包含:调用标准的浮点算术运算函数对浮点数进行计算,得到浮点数直接计算结果。
所述定点计算方法包含:将浮点数转换为定点数,调用定点运算函数对生成的定点数进行计算,得到定点数计算结果。
将浮点数转换为定点数时,对数据进行校验,校验通过后才能进行定点数计算。
所述校验方法包含:将转换得到的定点数逆变转换成浮点数,将该浮点数与初始浮点数进行比较,如果误差在允许的阈值范围内,则认为转换是正确的,校验通过。
将定点数计算结果转换成浮点数,得到浮点数间接计算结果。
所述差异比较方法包含:将浮点数直接计算结果与浮点数间接计算结果进行比较,如果误差在允许的阈值范围内,则判定结果正确。
差异比较后,输出浮点数直接计算结果或定点数计算结果。
本发明还提供一种安全浮点运算系统,包含:
硬浮点计算模块,用于执行硬浮点计算;
定点计算模块,用于执行定点计算;
差异比较模块,用于比较硬浮点计算结果和定点计算结果。
所述安全浮点运算系统还包含:转换模块,用于实现浮点数和定点数的相互转换。
所述硬浮点计算模块内置在处理器中。
所述定点计算模块、差异比较模块和转换模块是处理器中的软件逻辑操作模块。
本发明采用硬浮点计算方法和定点计算方法两种相异的计算方法进行运算,对硬浮点计算结果和定点计算结果进行差异比较,以保证浮点计算功能安全性,对运算资源消耗少,效率高。
附图说明
图1是本发明一个实施例中浮点运算方法的流程图。
具体实施方式
以下根据图1具体说明本发明的较佳实施例。
本发明提供一种浮点运算方法,包含以下步骤:
步骤S1、采用通用计算CPU内置的标准的硬浮点计算单元(FPU)对传入的浮点数(x1,x2…)进行计算,获得浮点数计算结果(Y)。仅有硬浮点计算,不能实现浮点安全计算。
步骤S2、将传入的浮点数(x1,x2…)转换为定点数(x_1,x_2),对定点数(x_1,x_2)进行计算,获得定点数计算结果(Z),将定点数计算结果(Z)转换为浮点数(Z1)。
步骤S3、将浮点数(Z1)与先前计算结果(Y)进行比较,来检查是否存在计算错误(即,浮点数(Z1)与先前计算结果(Y)之间的差值是否超过允许的最大误差)。
本发明采用了相异的浮点计算方法(浮点计算和定点计算),对两种迥然不同的方法的计算结果进行比较,来获得浮点计算功能安全性。
在本发明的一个实施例中,输入浮点数,标准浮点运算模块1调用标准的浮点算术运算函数对浮点数进行计算,得到浮点数直接计算结果。转换模块3将输入的浮点数转换成定点数,在转换过程中,还需要对数据进行校验,校验的步骤包含:转换模块3将转换得到的定点数逆变转换成浮点数,将该浮点数与初始输入的浮点数进行比较,如果精度误差在允许的阈值范围内,则认为转换是正确的,可以进行后续步骤,从而保证了后续定点浮点转换的正确性,如果精度误差超出了阈值范围,则认为转换失败,停止后续操作,进入错误处理,输出错误码,返回浮点无效值(NAN)。定点运算模块2调用定点运算函数对生成的定点数进行计算,得到定点计算结果。转换模块3将定点计算结果转换成浮点数,得到浮点数间接计算结果。所述转换模块3的精度与需要转换的浮点数和定点数的精度相匹配。差异比较模块4将浮点数直接计算结果与浮点数间接计算结果进行比较,如果精度误差在允许的阈值范围内(即,|浮点数直接计算结果-浮点数间接计算结果|≤阈值E),则判定结果正确,输出浮点数直接计算结果,否则就判定运算失败,输出错误码,返回浮点无效值(NAN)。本发明采用了安全系统设计中的多样性(相异性)计算方法,对浮点进行了两次差异的计算法,对计算结果进行比较,如结果在允许误差范围内,就可输出。
与现有技术相比,本发明具有以下创新点及有益效果:
1、硬浮点计算单元对浮点数没有范围限制,可以是单精度或者双精度浮点数。
2、在将浮点数转换成定点数时进行了校验,确保不存在错误转换。
3、定点数运算不依赖于任何硬件,基本上不消耗运算资源(内存、堆栈),采用基本的逻辑操作就可完成运算,运算资源少,对运算周期时间影响极小,耗时短,不影响系统实时性能,对硬件要求不高,通过相异性比较实现了在单处理器下实现浮点运算的软件功能安全,解决了以往存在的安全缺陷。
4、计算结果也可以采用定点数编码,直接输出定点数计算结果用于后期报文传输。
需要说明的是,在本发明的实施例中,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述实施例,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
Claims (12)
1.一种安全浮点运算方法,其特征在于,采用硬浮点计算方法和定点计算方法两种相异的计算方法进行运算,对硬浮点计算结果和定点计算结果进行差异比较,以保证浮点计算功能安全性。
2.如权利要求1所述的安全浮点运算方法,其特征在于,所述硬浮点计算方法包含:调用标准的浮点算术运算函数对浮点数进行计算,得到浮点数直接计算结果。
3.如权利要求1所述的安全浮点运算方法,其特征在于,所述定点计算方法包含:将浮点数转换为定点数,调用定点运算函数对生成的定点数进行计算,得到定点数计算结果。
4.如权利要求3所述的安全浮点运算方法,其特征在于,将浮点数转换为定点数时,对数据进行校验,校验通过后才能进行定点数计算。
5.如权利要求4所述的安全浮点运算方法,其特征在于,所述校验方法包含:将转换得到的定点数逆变转换成浮点数,将该浮点数与初始浮点数进行比较,如果误差在允许的阈值范围内,则认为转换是正确的,校验通过。
6.如权利要求3所述的安全浮点运算方法,其特征在于,将定点数计算结果转换成浮点数,得到浮点数间接计算结果。
7.如权利要求6所述的安全浮点运算方法,其特征在于,所述差异比较方法包含:将浮点数直接计算结果与浮点数间接计算结果进行比较,如果误差在允许的阈值范围内,则判定结果正确。
8.如权利要求7所述的安全浮点运算方法,其特征在于,差异比较后,输出浮点数直接计算结果或定点数计算结果。
9.一种实现如权利要求1-8中任意一项所述的安全浮点运算方法的安全浮点运算系统,其特征在于,包含:
硬浮点计算模块,用于执行硬浮点计算;
定点计算模块,用于执行定点计算;
差异比较模块,用于比较硬浮点计算结果和定点计算结果。
10.如权利要求9所述的安全浮点运算系统,其特征在于,所述安全浮点运算系统还包含:转换模块,用于实现浮点数和定点数的相互转换。
11.如权利要求9所述的安全浮点运算系统,其特征在于,所述硬浮点计算模块内置在处理器中。
12.如权利要求10所述的安全浮点运算系统,其特征在于,所述定点计算模块、差异比较模块和转换模块是处理器中的软件逻辑操作模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111086639.2A CN113778373B (zh) | 2021-09-16 | 2021-09-16 | 一种安全浮点运算方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111086639.2A CN113778373B (zh) | 2021-09-16 | 2021-09-16 | 一种安全浮点运算方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113778373A true CN113778373A (zh) | 2021-12-10 |
CN113778373B CN113778373B (zh) | 2023-10-31 |
Family
ID=78851524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111086639.2A Active CN113778373B (zh) | 2021-09-16 | 2021-09-16 | 一种安全浮点运算方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113778373B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949184A (zh) * | 2006-11-20 | 2007-04-18 | 北京中星微电子有限公司 | 一种芯片验证的方法及系统 |
US20090216822A1 (en) * | 2008-02-25 | 2009-08-27 | International Business Machines Corporation | Method, system and computer program product for verifying floating point square root operation results |
CN104679719A (zh) * | 2015-03-17 | 2015-06-03 | 成都金本华科技股份有限公司 | 一种基于fpga的浮点运算方法 |
CN104679720A (zh) * | 2015-03-17 | 2015-06-03 | 成都金本华科技股份有限公司 | 一种实现fft的运算方法 |
CN109255436A (zh) * | 2017-07-14 | 2019-01-22 | 英特尔公司 | 用于机器学习加速的双曲线函数 |
CN109710211A (zh) * | 2018-11-15 | 2019-05-03 | 珠海市杰理科技股份有限公司 | 浮点数据类型转换方法、装置、存储介质及计算机设备 |
CN109977701A (zh) * | 2019-04-01 | 2019-07-05 | 苏州中晟宏芯信息科技有限公司 | 一种定浮点运算装置 |
CN110515584A (zh) * | 2019-08-09 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 浮点计算方法及系统 |
CN110727412A (zh) * | 2019-09-14 | 2020-01-24 | 无锡江南计算技术研究所 | 一种基于掩码的混合浮点乘法低功耗控制方法及装置 |
CN111123818A (zh) * | 2019-11-05 | 2020-05-08 | 珠海格力电器股份有限公司 | 一种plc浮点数和定点数相互转换控制系统及方法 |
-
2021
- 2021-09-16 CN CN202111086639.2A patent/CN113778373B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949184A (zh) * | 2006-11-20 | 2007-04-18 | 北京中星微电子有限公司 | 一种芯片验证的方法及系统 |
US20090216822A1 (en) * | 2008-02-25 | 2009-08-27 | International Business Machines Corporation | Method, system and computer program product for verifying floating point square root operation results |
CN104679719A (zh) * | 2015-03-17 | 2015-06-03 | 成都金本华科技股份有限公司 | 一种基于fpga的浮点运算方法 |
CN104679720A (zh) * | 2015-03-17 | 2015-06-03 | 成都金本华科技股份有限公司 | 一种实现fft的运算方法 |
CN109255436A (zh) * | 2017-07-14 | 2019-01-22 | 英特尔公司 | 用于机器学习加速的双曲线函数 |
CN109710211A (zh) * | 2018-11-15 | 2019-05-03 | 珠海市杰理科技股份有限公司 | 浮点数据类型转换方法、装置、存储介质及计算机设备 |
CN109977701A (zh) * | 2019-04-01 | 2019-07-05 | 苏州中晟宏芯信息科技有限公司 | 一种定浮点运算装置 |
CN110515584A (zh) * | 2019-08-09 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 浮点计算方法及系统 |
CN110727412A (zh) * | 2019-09-14 | 2020-01-24 | 无锡江南计算技术研究所 | 一种基于掩码的混合浮点乘法低功耗控制方法及装置 |
CN111123818A (zh) * | 2019-11-05 | 2020-05-08 | 珠海格力电器股份有限公司 | 一种plc浮点数和定点数相互转换控制系统及方法 |
Non-Patent Citations (1)
Title |
---|
曲冬明: "高性能可重构浮点通用协处理器设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 137 - 27 * |
Also Published As
Publication number | Publication date |
---|---|
CN113778373B (zh) | 2023-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273090B (zh) | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 | |
US7912890B2 (en) | Method and apparatus for decimal number multiplication using hardware for binary number operations | |
Braun et al. | A-ABFT: Autonomous algorithm-based fault tolerance for matrix multiplications on graphics processing units | |
CN111967608A (zh) | 数据处理方法、装置、设备及存储介质 | |
US8793533B2 (en) | Method and device for performing failsafe hardware-independent floating-point arithmetic | |
CN112130803A (zh) | 具有正确舍入的浮点点积运算器 | |
CN115617562A (zh) | 故障检测方法及装置、计算机可存储介质 | |
CN113342671B (zh) | 对运算模块进行验证的方法、装置、电子设备和介质 | |
CN113778373B (zh) | 一种安全浮点运算方法和系统 | |
US7814138B2 (en) | Method and apparatus for decimal number addition using hardware for binary number operations | |
CN220983766U (zh) | 用于双核锁步的周期故障检测修复电路 | |
CN112130804A (zh) | 具有正确舍入的混合精度浮点数的融合乘加运算器 | |
CN111814900A (zh) | 基于matlab神经网络的电能表故障分类方法及其装置 | |
CN103873068A (zh) | 低密度奇偶检查的解码方法与电子装置 | |
Tsen et al. | Hardware design of a binary integer decimal-based floating-point adder | |
CN113641674B (zh) | 一种自适应全局序号发生方法和装置 | |
CN114564336A (zh) | 数据一致性校验方法、装置、设备以及存储介质 | |
US8745118B2 (en) | Verifying floating point square root operation results | |
CN113496275B (zh) | 指令执行方法、装置和电子设备 | |
CN112068985A (zh) | 带编程指令识别的norflash存储器ecc检纠错方法及系统 | |
CN112667197A (zh) | 一种基于posit浮点数格式的参数化加减法运算电路 | |
WO2020056764A1 (zh) | 一种浮点精度检测方法与装置 | |
EP1429239A2 (en) | Floating-point multiplication | |
CN111464190B (zh) | Ldpc码与crc结合的交换校验译码方法及装置 | |
CN110795384B (zh) | 一种高效识别文件与地址数据的微处理器 |
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 |