CN106462482B - 用于执行故障安全计算的方法 - Google Patents

用于执行故障安全计算的方法 Download PDF

Info

Publication number
CN106462482B
CN106462482B CN201480078697.2A CN201480078697A CN106462482B CN 106462482 B CN106462482 B CN 106462482B CN 201480078697 A CN201480078697 A CN 201480078697A CN 106462482 B CN106462482 B CN 106462482B
Authority
CN
China
Prior art keywords
calculation
result
scalar
generate
scaled
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
Application number
CN201480078697.2A
Other languages
English (en)
Other versions
CN106462482A (zh
Inventor
P.J.海斯
D.克尔施
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micro Motion Inc
Original Assignee
Micro Motion Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Micro Motion Inc filed Critical Micro Motion Inc
Publication of CN106462482A publication Critical patent/CN106462482A/zh
Application granted granted Critical
Publication of CN106462482B publication Critical patent/CN106462482B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1492Generic software techniques for error detection or fault masking by run-time replication performed by the application software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1487Generic software techniques for error detection or fault masking using N-version programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Detection And Correction Of Errors (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

提供了用于执行故障安全计算的方法和设备,以及编译代码以执行故障安全计算的方法。方法包括执行第一计算(212)以生成第一结果(214)。使用标量(216)和第一计算(212)执行第二计算(218)以生成第二结果(220)。第二计算(218)包括将第一计算(212)与标量(216)相乘以生成经缩放结果,并且将经缩放结果除以标量(216)以生成第二结果(220)。比较第一结果(214)和第二结果(220)以确定它们是否相等。

Description

用于执行故障安全计算的方法
技术领域
本发明涉及计算,并且更具体地涉及用于在计算机上执行故障安全计算的方法和设备。
背景技术
存在对于如下仪器的越来越多的需要:该仪器可以安全地操作关键系统或者在失效情况下对人类健康和环境呈现高风险的系统。在通过设计冗余硬件组件并且确保软件无错误来减少风险以外,还可能合期望的是,以确保故障安全计算的方式操作关键系统。通过故障安全计算,其意思是将不会作为故障软件数学库或基于硬件的处理器的结果而引入计算错误。
已经创建各种标准来确保故障安全计算,各种标准还被称为:安全完整性水平、安全仪器化水平、安全仪器化系统、安全工程、计算完整性或多冗余数学处理。故障安全计算典型地包括使用多冗余数学计算来确保将检测到任何单个计算错误。例如,考虑以下计算:
x=y*2.0 (计算A)
计算A可以使用C或C++编程语言使用以下源代码实现:
float x, y; (源代码A)
x=y*2.0f
在编译源代码A时,编译器可以调用浮点模拟数学库或者基于硬件的浮点协处理器(如果可用的话)。如果错误存在于数学库或协处理器中,则计算A可能没有被正确地计算。这种类型的基于软件数学库或基于硬件协处理器的错误可能没有被测试软件或硬件错误检测到。为了实现以上描述的故障安全计算标准,系统必须能够检测数学库和协处理器计算错误。
用于满足故障安全计算标准的常见方法是使用单值数学库或独立的协处理器来完成每一个计算两次。例如,以下C或C++编程语言代码使用两个数学库实现故障安全计算:
float x, y; (源代码B)
double xd, yd;
x=y*2.0f;
xd=yd*(double)2.0;
if (x!=xd) {<code to put device in safe state>}//error detected!
在源代码B中,执行计算A两次,一次使用浮点数学库并且一次使用双精度数学库。变量y和yd具有相同值,但是不同类型。结果x和xd然后相互比较以确定是否出现错误。当如由源代码B所提供的那样执行计算A时,可以检测到单个计算故障并且该计算被视为故障安全。
用于确保故障安全计算的当前方法存在许多缺点。例如,将用于执行故障安全计算的电子设备必然引起支持多个数学库或多个协处理器的额外复杂性和开销。
第二个缺点在于,以不同的数据类型实施的数学处理可能支持不同的分辨率或有效数字。这需要复杂的易于出错的分析来确保在给定输入范围的情况下提供成功的覆盖范围以适当地实施计算。
第三个缺点在于,把冗余计算编码成源代码可能带来设计和维护危险,尤其是相比于仅包括单个计算的源代码时。
第四个缺点源自于以下事实:故障安全计算可能要求存储器保护以确保存储器损坏不能以不可检测的方式扰乱计算。尽管源代码A可能能够标识单个位的失效,但是可能需要附加保护以防护免于损坏指针失效影响,从而提供进一步的故障安全计算保护。例如,来自源代码A的变量x、y、xd和yd可以共同位于存储器中,并且因而易被损坏指针所总体覆写。例如,如果损坏指针将零错误地写入到x、y、xd和yd,则x和xd之间的单个比较将不会标识该计算失效。为了保护免于损坏指针失效的影响,还可能要求诸如存储器保护单元之类的附加硬件、诸如xd、yd的逆向存储之类的附加软件、或者用于确保多样位置的特殊编译器/链接器命令来提供故障安全计算。
需要的是故障安全计算方法,该方法允许消除多个数学库、多个硬件数学加速器、易于出错的定点分辨率分析和损坏指针。理想地,故障安全计算方法将易于实现和维护,要求对源代码的很少修改。
发明内容
提供了用于执行故障安全计算的方法。方法包括执行第一计算以生成第一结果的步骤。方法还包括使用标量和第一计算来执行第二计算以生成第二结果的步骤,第二计算包括将第一计算与所述标量相乘以生成经缩放结果,并且将经缩放结果除以所述标量以生成第二结果。方法还包括比较第一结果和第二结果是否相等的步骤。
提供了用于执行故障安全计算以操作硬件的设备。设备包括配置为执行第一计算以生成第一结果的电气器件。电子器件还配置为使用标量和第一计算来执行第二计算以生成第二结果。第二计算包括将第一计算与所述标量相乘以生成经缩放结果。第二计算还包括将经缩放结果除以所述标量以生成第二结果。电子器件还配置为指示第一结果和第二结果是否相等。
提供了用于编译代码以便以故障安全方式操作硬件的方法。方法包括标识配置为生成第一结果的第一计算的步骤。方法还包括生成包括第一计算和标量的第二计算的步骤,第二计算生成第二结果。第二计算包括将第一计算与所述标量相乘以生成经缩放结果。第二计算还包括将经缩放结果除以所述标量以生成第二结果。方法还包括生成第一结果和第二结果是否相等的指示的步骤。方法还包括在可执行程序中包括第一计算、第二计算和指示的步骤。
本申请的各方面
在方法的一个实施例中,方法包括如下步骤:如果第一结果和第二结果不相等则执行安全操作。
在方法的一个实施例中,第一计算包括一个或多个运算,所述一个或多个运算包括最终运算,并且其中第二计算包括在所述最终运算之前乘以所述标量。
在方法的一个实施例中,第一结果具有第一二进制表示,并且经缩放结果具有第二二进制表示,并且所述标量被选择为使第一二进制表示与第二二进制表示之间的差异最大化。
在方法的一个实施例中,所述标量是整数、浮点或双精度型。
在方法的一个实施例中,所述标量是无理数。
在方法的一个实施例中,所述标量与1.0之间的差异被最小化以保持经缩放结果的分辨率。
在方法的一个实施例中,方法还包括如下步骤:如果确定第一结果为零则向第一结果添加偏置。
在设备的一个实施例中,电子器件还配置成:如果第一结果和第二结果不相等,则执行安全操作。
在设备的一个实施例中,第一计算包括一个或多个运算,所述一个或多个运算包括最终运算,并且其中第二计算包括在所述最终运算之前乘以所述标量。
在设备的一个实施例中,第一结果具有第一二进制表示并且经缩放值具有第二二进制表示,并且所述标量被选择成使第一二进制表示和第二二进制表示之间的差异最大化。
在设备的一个实施例中,所述标量是整数、浮点或双精度型。
在设备的一个实施例中,所述标量是无理数。
在设备的一个实施例中,所述标量和1.0之间的差异被最小化以保持经缩放结果的分辨率。
在设备的一个实施例中,电子器件还配置为:如果确定第一结果为零,则向第一结果添加偏置。
在方法的一个实施例中,生成包括第一计算和标量的第二计算以及生成第一结果和第二结果是否相等的指示包括定义类。
在方法的一个实施例中,方法还包括将第一结果和第二结果存储在存储器的相隔扇区中的步骤。
在方法的一个实施例中,方法还包括将第一计算和第二计算存储在存储器的相隔扇区中的步骤。
在方法的一个实施例中,在可执行程序中包括第一计算、第二计算和指示包括:编译可执行程序以在单个处理器上运行。
在方法的一个实施例中,在可执行程序中包括第一计算、第二计算和指示包括:编译可执行程序以使用单个数学库。
在方法的一个实施例中,方法还包括针对计算错误预测试数学库的步骤。
附图说明
相同参考标号在所有图上表示相同元件。各图未必按照比例。
图1描绘了根据本申请的实施例的故障安全系统100的框图。
图2描绘了根据本申请的实施例的故障安全计算例程200。
图3描绘了根据本申请的实施例的故障安全计算方法300。
图4描绘了根据本申请的实施例的故障安全计算编译方法400。
具体实施方式
图1-4和以下描述描绘了具体示例以教导本领域技术人员如何实现和使用本申请的最佳模式。出于教导发明原理的目的,已经简化或省略了一些常规方面。本领域技术人员将领会到,来自这些示例的变形落入本申请的范围内。本领域技术人员将领会到,以下描述的特征可以以各种方式组合以形成本申请的多个变形。作为结果,本申请不限于以下描述的具体示例,而是仅由权利要求及其等同方案来限制。
图1描绘了依照本发明的实施例的故障安全系统100的框图。故障安全系统100包括硬件102、电子器件104和硬件-软件通信线路106。故障安全系统100可以包括仪器和/或装备,其对于人类和/或环境的健康和安全是关键的并且因此必须在故障安全环境中操作。
硬件102可以由电子器件104操作、控制、监控和读取。硬件102可以包括任何以电子方式可操作或可读取的装备,针对其高度合期望的是提供故障安全操作。例如,硬件102可以是在急救服务、消防系统、电信、医用设备、核反应堆、航空或航天中发现的系统的组件。硬件102也可以包括在其它应用中,如将由本领域技术人员所理解的那样。在实施例中,硬件102可以包括测量或监控设备。例如,硬件102可以包括振动流量计,振动流量计可以确定流体的流速、密度或粘度。
信号可以通过通信线路106在硬件102和电子器件104之间来回发送。例如,电子器件104可以通过通信线路106发送信号以配置和命令硬件102或者请求数据。当由硬件102外部的事件所提示时,硬件102还可以向电子器件104发送数据。应当领会到,在实施例中,通信线路106可以是有线或无线的,如将由本领域技术人员所理解的那样。
电子器件104可以进一步包括接口112和处理系统108。处理系统108可以进一步包括存储系统110。电子器件104可以处理从硬件102所接收的信号以便确定故障安全系统100的各种性质。
接口112可以通过通信线路106或者通过附加引线接收传感器信号。接口112可以执行任何必要或期望的信号调节,诸如任何方式的格式化、放大、缓冲等。可替换地,一些或全部的信号调节可以在处理系统108中执行。此外,接口112可以实现电子器件104和外部设备之间的通信。接口112可能能够进行任何方式的电子、光学或无线通信。此外,接口112可以实现电子器件104和外部设备之间的通信。接口112可能能够进行任何方式的电子、光学或无线通信。
在一个实施例中,接口112可以包括数字转换器(没有示出),其中通过通信线路106所接收的传感器信号包括模拟传感器信号。数字转换器可以对模拟传感器信号进行采样和数字化并且产生数字传感器信号。数字转换器还可以执行任何所需要的抽取(decimation),其中对数字传感器信号进行抽取以便减少所需要的信号处理量并且减少处理时间。
处理系统108引导电子器件104的操作并且处理来自硬件102的测量结果和去往硬件102的命令。处理系统108还可以执行一个或多个处理例程,诸如故障安全计算例程200。
处理系统108可以包括通用计算机、微处理系统、逻辑电路、或者能够执行本文描述的功能的任何其它通用或定制的处理设备。处理系统108可以分布在多个处理设备之中。处理系统108可以包括任何方式的一体或独立电子存储介质,诸如存储系统110。
存储系统110可以存储操作参数和数据、软件例程、恒定值和变化值。存储系统110可以包括主要或主存储器,诸如随机存取存储器(RAM)。在实施例中,存储系统110可以包括硬盘驱动器、可移除存储设备、存储卡、软盘驱动器、磁带驱动器、紧凑盘驱动器、数字通用盘、蓝光盘、光学存储设备、磁带备份、或者任何其它计算机可用或可读存储介质。
应当理解到,电子器件104可以包括本领域中一般已知的各种其它组件和功能。出于简洁起见从描述和图中省略了这些附加特征。因此,本发明不应当限于所示出和讨论的具体实施例。
尽管图1仅描绘了与电子器件104通信的单个硬件102,但是本领域技术人员将容易领会到,多个硬件组合件可以与电子器件104通信。另外,电子器件104可能能够操作各种不同的硬件类型。每一个硬件组合件,诸如与电子器件104通信的硬件102,可以具有专用于该硬件的操作的存储系统110的相应扇区。
存储系统110可以存储可以由故障安全计算例程200使用以安全地操作硬件102的变量。例如,存储系统110可以存储第一结果214、标量216、第二结果220和错误指示符222。存储系统110还可以存储可以由故障安全计算例程200使用以安全地操作硬件102的功能。例如,存储系统110可以存储第一计算212、第二计算218、第一计算逻辑202、第二计算逻辑204、比较逻辑206和安全操作逻辑208。存储系统110还可以存储故障安全计算例程200。
在实施例中,电子器件104可以启动并且操作故障安全计算例程200以便安全地操作硬件102。在实施例中,故障安全计算例程200可以执行冗余数学运算以确保对来自硬件102的数据的安全操作和解译。
图2描绘了依照本申请的实施例的故障安全计算例程200。故障安全计算例程200包括第一计算逻辑202、第二计算逻辑204、比较逻辑206和安全操作逻辑208。
故障安全计算例程200以第一计算逻辑202开始。第一计算逻辑202接收第一计算212并且生成第一结果214。第一计算212包括可以以故障安全方式在处理器上执行的一个或多个数学运算。例如,第一计算逻辑202可以包括以下数学运算的非排他性列表:加法、减法、乘法、除法等。第一结果214是在处理系统108上执行第一计算212的结果。在实施例中,第一结果214可以是以任何数据类型或形式表示的数,包括以下非排他性列表:整数、有符号数、无符号数、短数、长数、浮点数、双精度数、或者本领域技术人员所已知的任何其它数据类型。在简单示例中,第一计算212可以包括以下逻辑:
x1=y1*2.0 (计算B)
在计算B的示例中,第一计算212是y1*2.0,并且第一结果214是x1。
故障安全计算例程200以第二计算逻辑204继续。第二计算逻辑204接收第一计算212和标量216,并且生成第二计算218和第二结果220。标量216是可以用来帮助执行故障安全计算的数。标量216可以是任何数据类型,包括但不限于整数、常数、有符号、无符号、浮点、双精度、短、长数、或者本领域技术人员通常所已知的任何其它类型。
如之前所讨论的,第一计算212包括一个或多个数学运算。第二计算逻辑204通过包括乘以和除以标量216的另外的数学运算而生成第二计算218。源代码B提供第二计算逻辑204的示例实现:
x1=y1*2.0f; (源代码B)
x2=((y2*1.2f)*2.0f)/1.2f);
在源代码B中,y1*2.0f表示第一计算212,((y2*1.2f)*2.0f)/1.2f)表示第二计算218,标量216等于1.2,第一结果214由x1表示,并且第二结果220由x2表示。源代码B中的变量y1和y2具有相同值,并且在实施例中,y1和y2可以具有相同或不同的数据类型。可以看出,在源代码B中,第一计算212包括将变量y1乘以常数2.0f。第二计算逻辑204通过将第一计算212乘以标量216而对第一计算212进行缩放,标量在源代码B的示例中为1.2f,从而生成经缩放结果。本领域技术人员将认识到,可以在与第一计算212包括在一起的一个或多个运算中的任何之前、之后或之间乘以标量216以生成经缩放结果。在实施例中,乘以标量216的运算可以被包括在执行第一计算212的最终运算之前,以生成经缩放结果。第二计算逻辑204还通过将经缩放结果除以标量216来变换第一计算212,从而生成第二结果220。第二结果220可以是任何数据类型,包括但不限于整数、常数、有符号、无符号、浮点、双精度、短、长数、或者本领域技术人员通常所已知的任何其它类型。
应当领会到,第一计算212和第二计算218提供冗余数学计算,其中第二计算简单地是第一计算乘以和除以标量216。尽管存在第一和第二计算212和218可以在相同处理器上执行或者利用相同数学库执行这一事实,但是它们对数的不同集合执行。因此,在大多数情况下,第一和第二计算212和218表示单值数学计算。在源代码B的示例中,第一计算212是简单乘法运算。然而,这不意图限制。在另外的实施例中,第一计算212可以包括任何数目的数学运算。
然而,当在第一计算212中使用的变量为零时,第一计算212和第二计算218可能不一定表示单值数学计算。例如,如果源代码B的y1和y2为零,则标量216的使用将不会导致单值计算。在这样的情况下,第二计算逻辑204可以使用偏置和标量二者以保持计算的冗余度。源代码C提供了使用偏置和标量二者的示例实现:
x1=y1*2.0f; (源代码C)
x2=((((y2+z)*1.2f)*2.0f)/1.2f)-(z*2.0f)
在源代码C中,z表示偏置。因此,如果y1和y2为零,则第一和第二计算212和218的单值性将得以保持。
然而,使用偏置可能提供额外的代码复杂性和软件运行时间。对包括偏置的替换方案是预测试所讨论的数学库或协处理器以证明在第一和第二计算212和218中所使用的变量为零的情况下成功。
应当指出的是,标量216的选择要求分析,并且可以取决于所使用的数学库和/或协处理器。一般地说,标量216的值不应当设定成1或零,因为这样的值将不会提供单值的第一和第二计算212和218。在实施例中,标量216选择为使第一结果214的二进制表示和经缩放结果的二进制表示之间的差异最大化以帮助检测损坏计算。
在实施例中,标量216可以选择成接近1.0以保存针对基于整数的数学运算的第一和第二计算212和218的分辨率。在实施例中,标量216可以是无理数。例如,用于标量216的值2.222222是IEEE-754浮点表示中的合理选择。作为二进制世界中的无理数,值2.222222提供了根本上不同的尾数,其可以提供数的位表示之间的大差异。数及其经缩放值的示例在下面使用IEEE-754表示和标量2.222222来提供:
1.000000 (以十六进制:3F800000)
1.000000 X 2.222222=2.222222 (以十六进制:400E38E3)
1000000 (以十六进制:49742400)
1000000 X 2.222222=2222222 (以十六进制:4A07A238)
0.4500000 (以十六进制:3EE66666)
0.4500000 X 2.222222=1.000000(以十六进制:3F800000)
选择保持第一和第二计算212和218的分辨率的标量216的值可以因此提供帮助计算损坏检测的优点。
故障安全计算例程200以比较逻辑206继续。比较逻辑206接收第一结果214和第二结果220并且生成错误指示符222。比较逻辑206比较第一结果214和第二结果220以确定结果是否相同。因为第一计算212和第二计算218可以在相同的协处理器上和/或利用相同的数学库来执行,所以本申请的实施例提供了优于现有技术方法的以下优点:第一结果214和第二结果220可以是相同的数据类型。这可以显著地简化比较操作,从而移除在比较不同类型的值时执行易于出错的分辨率分析的需要。如果第一和第二结果214和220相同,则计算被视为故障安全的。如果第一和第二结果214和220不相同,则错误条件可能存在,并且比较逻辑206可以通过设定错误指示符222来指示错误条件存在。在实施例中,错误指示符222可以经由显示器或电子消息而报告给用户。
故障安全计算例程200以安全操作逻辑208继续。安全操作逻辑208接收错误指示符222。如果错误指示符222指示错误已经发生,则安全操作逻辑208可以执行操作以防止对人员或环境的破坏或损伤,该破坏或损伤可能由于失效计算而产生。在实施例中,安全操作逻辑208可以启动用于硬件102的保险进程。在另一个实施例中,安全操作逻辑208可以提醒操作者利用硬件102获取的测量结果可能有错。
图3描绘了故障安全计算方法300。故障安全计算方法300是故障安全计算例程200的示例实施例。处理系统108可以配置为执行必要的信号和数据处理以执行故障安全计算方法300。故障安全计算方法300以步骤302开始。在步骤302中,执行第一计算以生成第一结果。例如,第一计算212可以由第一计算逻辑202执行以生成第一结果214,如上文所讨论的那样。
故障安全计算方法300以步骤304继续。在步骤304中,使用标量和第一计算执行第二计算以生成第二结果,第二计算包括将第一计算与标量相乘以生成经缩放结果,并且将经缩放结果除以标量以生成第二结果。例如,第二计算逻辑204可以接收标量216、第一计算212,并且产生第二计算218。第二结果220可以包括在处理系统108上执行第二计算218的结果,如上文所讨论的。
故障安全计算方法300以步骤306继续。在步骤306中,指示第一结果和第二结果是否相等。例如,比较逻辑206可以接收第一结果214和第二结果220,并且生成错误指示符222,如上文所述。
图4描绘了故障安全计算编译方法400。可以执行故障安全计算编译方法400以将代码编译成可执行软件,可执行软件可以在处理系统108上执行故障安全计算。例如,可以执行故障安全计算编译方法400以编译配置为执行故障安全计算例程200或故障安全计算方法300的代码。
方法400以步骤402开始。在步骤402中,标识第一计算,第一计算配置为生成第一结果。例如,第一计算212或计算A可以由编译器标识。
故障安全计算编译方法400以步骤404继续。在步骤404中,生成第二计算,第二计算包括第一计算和标量,第二计算生成第二结果,第二计算包括将第一计算与标量相乘以生成经缩放结果,并且将经缩放结果除以所述标量以生成第二结果。例如,第二计算逻辑204可以接收第一计算212和标量216,以生成第二计算218和第二结果220。
故障安全计算编译方法400以步骤406继续。在步骤406中,生成第一结果和第二结果是否相等的指示。例如,比较逻辑206可以生成错误指示符222,如上文所讨论的那样。
故障安全计算编译方法400以步骤408继续。在步骤408中,第一计算、第二计算和指示被包括在可执行程序中。在实施例中,可执行程序可以被编译,以在本领域技术人员通常已知的任何类型的计算机上运行。在实施例中,软件可以是可执行软件程序或者可由其他可执行软件程序访问的库。
将领会到,编写软件代码以包括用于每一个故障安全计算的步骤402、404和406可能给软件工程师的工作添加显著数量的复杂化。该附加复杂化可以不利地影响最终软件产品的鲁棒性和质量。因此,在实施例中,步骤408进一步提供:步骤404和406的功能可以在软件编译期间被自动生成。通过在软件的编译期间在底层(“under the hood”)生成该代码,可以提供无错误、易于维护、鲁棒的软件代码的优点。例如,软件工程师可以编写源代码A,并且源代码B的功能可以在编译期间被包括在可执行的最终产品软件中。相比于源代码B,源代码A通过检查理解起来更容易、实现起来更不易出错、并且更容易输出给其它处理器或计算系统。
通过使用诸如C、C++、Java或者本领域技术人员所已知的任何其它编程语言之类的目标编程语言的特征以及使用编译器,可以在编译源代码A时封装源代码B的功能。例如,在C和C++编程语言中,可以定义类并且使用类来封装第一计算212、第二计算218以及第一和第二结果214、220之间的比较。大多数计算机语言提供了对于这种类型的封装和复杂性隐藏的某种支持。
在实施例中,步骤408可以进一步通过提供独立计算的结果向相互远离的存储器部分的存储而提供故障安全计算。例如,第一计算212、第一结果214、标量216、第二计算218和第二结果220的任何组合可以写入到存储器的非相邻和/或相隔的扇区。存储器的非相邻和/或相隔的扇区可以包括在相同存储器空间中具有非相邻地址的存储器的扇区,或者在不同硬件组件上发现的存储器。在实施例中,一些存储器可以包括另外的硬件和/或软件保护,如将由本领域技术人员所理解到的那样。将领会到,通过在相隔存储器中存储由步骤402、404和406提供的操作的结果,可以进一步保护计算免于损坏指针的影响。
在实施例中,步骤408可以包括在单个处理器上进行操作的可执行程序中的第一计算、第二计算、以及指示。在另外的实施例中,步骤408可以包括利用单个数学库的可执行程序中的第一计算、第二计算、以及指示。在另外的实施例中,步骤408可以包括针对错误而预测试数学库。
以上实施例的详细描述不是发明人设想到的处于本申请的范围内的所有实施例的穷举性描述。实质上,本领域技术人员将认识到,以上描述的实施例的某些元件可以以各种方式被组合或消除以创建另外的实施例,并且这样的另外的实施例落入本申请的教导和范围内。对本领域普通技术人员来说还将显而易见的是,以上描述的实施例可以整体地或者部分地组合以创建本发明的范围和教导内的附加实施例。
因而,尽管出于说明目的而在本文中描述了本申请的示例和具体实施例,但是各种等同修改在本申请的范围内是可能的,如相关技术领域中的技术人员将认识到的那样。本文提供的教导可以应用于其它仪表,并且不仅仅应用于以上描述并在附图中示出的实施例。因而,本申请的范围应当根据以下权利要求来确定。

Claims (21)

1.一种用于执行故障安全计算的方法,所述方法包括以下步骤:
使用单个数学库或使用单个数学协处理器执行第一计算以生成第一结果,第一计算包括一个或多个运算;
使用单个数学库或使用单个数学协处理器使用标量和第一计算来执行第二计算以生成第二结果,第二计算包括将第一计算与所述标量相乘以生成经缩放结果,并且将经缩放结果除以所述标量以生成第二结果;以及
指示第一结果和第二结果是否相等,
其中第二计算不包括第一计算中所包括的所述一个或多个运算。
2.权利要求1所述的方法,还包括以下步骤:
如果第一结果和第二结果不相等,则执行安全操作。
3.权利要求1所述的方法,其中所述一个或多个运算包括最终运算,并且其中第二计算包括在最终运算之前乘以所述标量。
4.权利要求1所述的方法,其中第一结果具有第一二进制表示并且经缩放值具有第二二进制表示,并且所述标量被选择成使第一二进制表示与第二二进制表示之间的差异最大化。
5.权利要求1所述的方法,其中所述标量是整数、浮点或双精度型。
6.权利要求1所述的方法,其中所述标量是无理数。
7.权利要求1所述的方法,其中所述标量与1.0之间的差异被最小化以保持经缩放结果的分辨率。
8.权利要求1所述的方法,还包括以下步骤:
如果确定第一结果为零,则向第一结果添加偏置。
9.一种用于执行故障安全计算以操作硬件(102)的设备,所述设备包括:
电子器件(104),配置为:
使用单个数学库或使用单个数学协处理器执行第一计算(212)以生成第一结果(214),第一计算(212)包括一个或多个运算;
使用单个数学库或使用单个数学协处理器使用标量(216)和第一计算(212)来执行第二计算(218)以生成第二结果(220),第二计算(218)包括将第一计算(212)乘以所述标量(216)以生成经缩放结果,并且将经缩放结果除以所述标量(216)以生成第二结果(220);以及
指示第一结果(214)和第二结果(220)是否相等,
其中第二计算(218)不包括第一计算(212)中所包括的所述一个或多个运算。
10.权利要求9所述的设备,其中电子器件(104)进一步配置为:如果第一结果(214)和第二结果(220)不相等,则执行安全操作。
11.权利要求9所述的设备,其中所述一个或多个运算包括最终运算,并且其中第二计算(218)包括在最终运算之前乘以所述标量(216)。
12.权利要求9所述的设备,其中第一结果(214)具有第一二进制表示并且经缩放值具有第二二进制表示,并且所述标量(216)被选择成使第一二进制表示与第二二进制表示之间的差异最大化。
13.权利要求9所述的设备,其中所述标量(216)是整数、浮点或双精度型。
14.权利要求9所述的设备,其中所述标量(216)是无理数。
15.权利要求9所述的设备,其中所述标量(216)与1.0之间的差异被最小化以保持经缩放结果的分辨率。
16.权利要求9所述的设备,其中电子器件(104)进一步配置为:如果确定第一结果(214)为零,则向第一结果(214)添加偏置。
17.一种用于编译代码以便以故障安全方式操作硬件的方法,包括以下步骤:
使用单个数学库或使用单个数学协处理器标识配置为生成第一结果的第一计算,第一计算包括一个或多个运算;
使用单个数学库或使用单个数学协处理器生成包括第一计算和标量的第二计算,第二计算生成第二结果,第二计算包括将第一计算与所述标量相乘以生成经缩放结果,并且将经缩放结果除以所述标量以生成第二结果;
生成第一结果和第二结果是否相等的指示;以及
在可执行程序中包括第一计算、第二计算和指示,
其中第二计算不包括第一计算中所包括的所述一个或多个运算。
18.权利要求17所述的方法,其中生成包括第一计算和标量的第二计算以及生成第一结果和第二结果是否相等的指示包括定义类。
19.权利要求17所述的方法,还包括以下步骤:
将第一结果和第二结果存储在存储器的相隔扇区中。
20.权利要求17所述的方法,还包括以下步骤:
将第一计算和第二计算存储在存储器的相隔扇区中。
21.权利要求17所述的方法,还包括以下步骤:
针对计算错误预测试所述单个数学库。
CN201480078697.2A 2014-05-08 2014-05-08 用于执行故障安全计算的方法 Active CN106462482B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/037343 WO2015171152A1 (en) 2014-05-08 2014-05-08 Method for performing failsafe calculations

Publications (2)

Publication Number Publication Date
CN106462482A CN106462482A (zh) 2017-02-22
CN106462482B true CN106462482B (zh) 2020-04-14

Family

ID=50933525

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480078697.2A Active CN106462482B (zh) 2014-05-08 2014-05-08 用于执行故障安全计算的方法

Country Status (13)

Country Link
US (1) US10248514B2 (zh)
EP (1) EP3140742B1 (zh)
JP (1) JP6419215B2 (zh)
KR (1) KR101983125B1 (zh)
CN (1) CN106462482B (zh)
AR (1) AR100272A1 (zh)
AU (1) AU2014393412B2 (zh)
BR (1) BR112016025201B1 (zh)
CA (1) CA2948136C (zh)
MX (1) MX2016013538A (zh)
RU (1) RU2659732C2 (zh)
SG (1) SG11201608536QA (zh)
WO (1) WO2015171152A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017208484A1 (de) * 2017-05-19 2018-11-22 Robert Bosch Gmbh Verfahren und Vorrichtung zur Erkennung von Hardwarefehlern in Mikroprozessoren
EP3629177B1 (de) * 2018-09-28 2021-09-01 Sick Ag Verfahren zum überprüfen eines betriebs eines elektronischen datenverarbeitungsmittels

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101366232A (zh) * 2005-11-03 2009-02-11 塞尔蒂卡姆公司 同步标量乘法算法
CN101937379A (zh) * 2009-06-29 2011-01-05 富士通株式会社 算术电路、算术处理设备和算术处理方法
CN102541713A (zh) * 2010-12-14 2012-07-04 施耐德电器工业公司 用于监视装备有微处理器的设备的方法和设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2739994B1 (fr) * 1995-10-17 1997-11-14 Henri Gilbert Procede cryptographique de protection contre la fraude
US7584405B2 (en) 2003-12-03 2009-09-01 Hewlett-Packard Development Company, L.P. Fault-detecting computer system
US7290024B2 (en) * 2003-12-18 2007-10-30 Intel Corporation Methods and apparatus for performing mathematical operations using scaled integers
JP2006252548A (ja) * 2005-03-09 2006-09-21 Hewlett-Packard Development Co Lp 時間的冗長性を実施するための可変遅延命令
US7661228B1 (en) 2005-05-06 2010-02-16 Kontek Industries, Inc. Armored building modules and panels
JP2007047893A (ja) * 2005-08-08 2007-02-22 Fujitsu Ltd プロセッサの動作を検証する動作検証方法及び動作検証プログラム
US8595279B2 (en) * 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
KR100887327B1 (ko) * 2006-08-25 2009-03-05 엠텍비젼 주식회사 다양한 정밀도에 대한 고속 부동 소수점 연산을 수행하는방법, 프로그래밍 구조 및 기록 매체
US8370822B2 (en) 2008-11-20 2013-02-05 Apple Inc. Compiling techniques for providing limited accuracy and enhanced performance granularity
US8539451B2 (en) * 2009-05-12 2013-09-17 Nec Laboratories America, Inc. Systems and methods for model checking the precision of programs employing floating-point operations
DE102010013349B4 (de) * 2010-03-30 2013-06-13 Eads Deutschland Gmbh Computersystem und Verfahren zum Vergleichen von Ausgangssignalen
EP2441003B1 (de) * 2010-08-03 2015-07-29 Siemens Aktiengesellschaft Gleitkommaarithmetik mit fehlererkennung
RU2455681C1 (ru) * 2010-12-09 2012-07-10 Федеральное государственное унитарное предприятие научно-исследовательский институт "Субмикрон" Отказоустойчивая вычислительная система с аппаратно-программной реализацией функций отказоустойчивости и динамической реконфигурации
US9063851B2 (en) * 2012-11-07 2015-06-23 Infineon Technologies Ag Fail safe code functionality
FR3047373B1 (fr) * 2016-01-28 2018-01-05 Morpho Procede de calcul securise multipartite protege contre une partie malveillante

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101366232A (zh) * 2005-11-03 2009-02-11 塞尔蒂卡姆公司 同步标量乘法算法
CN101937379A (zh) * 2009-06-29 2011-01-05 富士通株式会社 算术电路、算术处理设备和算术处理方法
CN102541713A (zh) * 2010-12-14 2012-07-04 施耐德电器工业公司 用于监视装备有微处理器的设备的方法和设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Concurrent Error Detection in Multiply and Divide Arrays;JANAK H ET AL;《IEEE Transactions on Computers》;19830430;417-422 *

Also Published As

Publication number Publication date
SG11201608536QA (en) 2016-11-29
JP2017515243A (ja) 2017-06-08
MX2016013538A (es) 2017-01-13
US20170031786A1 (en) 2017-02-02
JP6419215B2 (ja) 2018-11-07
CN106462482A (zh) 2017-02-22
AR100272A1 (es) 2016-09-21
RU2016146739A (ru) 2018-06-08
CA2948136A1 (en) 2015-11-12
KR20170002481A (ko) 2017-01-06
BR112016025201B1 (pt) 2022-08-23
AU2014393412A1 (en) 2016-11-03
WO2015171152A1 (en) 2015-11-12
RU2016146739A3 (zh) 2018-06-08
AU2014393412B2 (en) 2018-04-19
RU2659732C2 (ru) 2018-07-03
BR112016025201A2 (pt) 2018-06-19
KR101983125B1 (ko) 2019-05-28
EP3140742A1 (en) 2017-03-15
EP3140742B1 (en) 2019-01-02
US10248514B2 (en) 2019-04-02
CA2948136C (en) 2021-04-06

Similar Documents

Publication Publication Date Title
Leveson The Therac-25: 30 years later
US10379946B2 (en) Controller
CN106462482B (zh) 用于执行故障安全计算的方法
CN115509831A (zh) 寄存器故障检测器
JP5344936B2 (ja) 制御装置
CN113656230B (zh) 故障诊断电路、方法、装置及计算机可读存储介质
US10339242B2 (en) Semiconductor LSI design device and design method
US8352795B2 (en) High integrity processor monitor
US20160188485A1 (en) Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions
JP6914230B2 (ja) フェイルセーフ計算を実施するための方法
Jones et al. A formal methods-based verification approach to medical device software analysis
US9299456B2 (en) Matrix and compression-based error detection
Voas et al. Error propagation analysis studies in a nuclear research code
KR20240088450A (ko) 보안체크코드의 유효성 점검 장치, 보안체크코드의 유효성 점검 방법 및 컴퓨터 프로그램
CN110020565B (zh) 探头信息读取故障提示方法、装置、服务器和存储介质
JP2013211049A (ja) 制御装置
EP3144645B1 (en) Method of gas state recalculation and apparatus therefore
Lee et al. Exhaustive Test Case Generation for Nuclear Safety Software Based on the Software Logic Model
Wichmann A note on the use of floating point in critical systems
KR20240088444A (ko) 메모리 태깅을 이용하는 타입 안전 위반 탐지 장치, 타입 안전 위반 탐지 방법 및 컴퓨터 프로그램
Voas et al. A software analysis technique for quantifying reliability in high-risk medical devices
Abraham et al. Sound verification techniques for developing high-integrity medical device software
Wichmann et al. Validation of software in measurement systems (Software for Metrology Best Practice Guide No. 1).
Thiemann et al. Concept for a safety-controller based on uncertified hardware

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1234508

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant