KR20170002481A - 페일세이프 계산들을 수행하기 위한 방법 - Google Patents

페일세이프 계산들을 수행하기 위한 방법 Download PDF

Info

Publication number
KR20170002481A
KR20170002481A KR1020167032998A KR20167032998A KR20170002481A KR 20170002481 A KR20170002481 A KR 20170002481A KR 1020167032998 A KR1020167032998 A KR 1020167032998A KR 20167032998 A KR20167032998 A KR 20167032998A KR 20170002481 A KR20170002481 A KR 20170002481A
Authority
KR
South Korea
Prior art keywords
result
calculation
scalar
computation
fail
Prior art date
Application number
KR1020167032998A
Other languages
English (en)
Other versions
KR101983125B1 (ko
Inventor
폴 제이. 헤이스
돈 켈시
Original Assignee
마이크로 모우션, 인코포레이티드
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 마이크로 모우션, 인코포레이티드 filed Critical 마이크로 모우션, 인코포레이티드
Publication of KR20170002481A publication Critical patent/KR20170002481A/ko
Application granted granted Critical
Publication of KR101983125B1 publication Critical patent/KR101983125B1/ko

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
    • 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
    • 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)
  • Stored Programmes (AREA)
  • Detection And Correction Of Errors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

페일세이프 계산을 수행하기 위한 방법 및 디바이스, 및 페일세이프 계산을 수행하기 위한 코드를 컴파일링하는 방법이 제공된다. 방법은 제 1 결과(214)를 생성하기 위하여 제 1 계산(212)을 수행하는 단계를 포함한다. 제 2 계산(218)은 제 2 결과(220)를 생성하기 위하여 스칼라(216) 및 제 1 계산(212)을 사용하여 수행된다. 제 2 계산(218)은 스칼라화된 결과를 생성하기 위하여 스칼라(216)에 의해 제 1 계산(212)을 곱셈하는 단계, 및 제 2 결과(220)를 생성하기 위하여 스칼라(216)에 의해 스칼라화된 결과를 나누는 단계를 포함한다. 제 1 결과(214) 및 제 2 결과(220)는, 그들이 동일한지를 결정하기 위하여 비교된다.

Description

페일세이프 계산들을 수행하기 위한 방법{METHOD FOR PERFORMING FAILSAFE CALCULATIONS}
본 발명은 계산, 및 보다 구체적으로 컴퓨터상에서 페일세이프(failsafe) 계산들을 수행하기 위한 방법들 및 디바이스에 관한 것이다.
임계 시스템들, 또는 고장의 경우에 인간 건강 및 환경에 높은 위험을 제시하는 시스템들을 안전하게 동작시킬 수 있는 기구들에 대한 필요가 증가하고 있다. 린던던트 하드웨어 컴포넌트들을 설계함으로써 위험을 감소시키고 소프트웨어가 에러 없는 것을 보장하는 것을 넘어, 또한 페일세이프 계산들을 보장하는 방식으로 임계 시스템들을 동작시키는 것이 바람직할 수 있다. 페일세이프 계산들에 의해, 의미하는 바는 어떠한 에러들도 결함 소프트웨어 수학 라이브러리 또는 하드웨어-기반 프로세서의 결과로서 도입되지 않는 것이다.
다양한 표준들은 페일세이프 계산들을 보장하기 위하여 생성되고, 이는 또한 안전 무결성 레벨, 안전 계기 레벨, 안전 계기 시스템들, 안전 엔지니어링, 계산 무결성, 또는 다수의 리던던트(redundant) 수학으로서 지칭된다. 페일세이프 계산들은 통상적으로 어떤 단일 계산 에러가 검출되는 것을 보장하기 위하여 다수의 리던던트 수학 계산들의 사용을 포함한다. 예컨대, 다음 계산을 고려하라:
Figure pct00001
계산 A는 다음 소스 코드를 사용하여 C 또는 C++ 프로그래밍 언어들을 사용하여 구현될 수 있다:
Figure pct00002
컴파일링 소스 코드 A에서, 컴파일러는 부동-소수점(floating-point) 에뮬레이션 수학 라이브러리들, 또는 이용 가능하면 하드웨어-기반 부동 소수점 코-프로세서를 호출할 수 있다. 에러가 수학 라이브러리 또는 코-프로세서에 존재하면, 계산 A는 올바르게 계산되지 않을 수 있다. 이런 종류의 소프트웨어 수학 라이브러리-기반 또는 하드웨어 코-프로세서 기반 에러는 소프트웨어 또는 하드웨어 에러들을 테스팅 함으로써 검출되지 않을 수 있다. 위에서 설명된 페일세이프 계산 표준들을 충족하기 위하여, 시스템은 수학 라이브러리 및 코-프로세서 계산 에러들을 검출할 수 있어야 한다.
페일세이프 계산 표준들을 만족시키기 위하여 사용된 공통 방법은 고유 수학 라이브러리들 또는 독립 코-프로세서들을 사용하여 각각의 계산을 2번 완료하는 것이다. 예컨대, 다음 C 또는 C++ 프로그래밍 언어 코드는 2개의 수학 라이브러리들을 사용하여 페일세이프 계산을 구현한다:
Figure pct00003
소스 코드 B에서, 계산 A는 2번 수행되고, 한번은 부동 소수점 수학 라이브러리를 사용하여 수행되고 한번은 2배 정밀도 수학 라이브러리를 사용하여 수행된다. 변수들(y 및 yd)은 동일한 값을 가지지만, 상이한 타입들이다. 그 다음으로, 결과들(x 및 xd)은 에러가 발생했는지를 결정하기 위하여 서로 비교된다. 계산 A가 소스 코드 B에 의해 제공되는 바와 같이 수행될 때, 단일 계산 결함들은 검출될 수 있고 계산은 페일세이프인 것으로 고려된다.
페일세이프 계산을 보장하기 위한 본 방법론들에 대해 많은 단점들이 있다. 예컨대, 페일세이프 계산을 수행하기 위하여 사용될 전자 디바이스는 다수의 수학 라이브러리들 또는 다수의 코-프로세서들을 지원하는 부가적인 복잡성 및 오버헤드(overhead)를 발생시킨다.
제 2 단점은, 상이한 데이터 타입들에서 수행된 수학이 상이한 해(resolution)들, 또는 상당한 산수들을 지원할 수 있다는 것이다. 이것은, 입력들의 범위가 주어지면, 성공적인 커버리지가 적당하게 계산들을 수행하기 위하여 제공되는 것을 보장하기 위해 복잡한 에러-발생 쉬움 분석을 필요로 한다.
제 3 단점은, 소스 코드에 대한 코딩 리던던트 계산들이 특히 단일 계산들만을 포함하는 소스 코드에 비교될 때 설계 및 유지 위험이 될 수 있다는 것이다.
제 4 단점은, 메모리 오류가 검출 가능하지 않은 방식으로 계산들을 업셋(upset)할 수 없는 것을 보장하기 위하여 페일세이프 계산들이 메모리 보호를 요구할 수 있다는 사실로부터 기인한다. 소스 코드 A가 단일-비트 실패들을 식별할 수 있지만, 부가적인 보호는 추가 페일세이프 계산 보호를 제공하기 위하여 오류 포인터(corrupt pointer) 실패들에 대해 방어하기 위해 필요해질 수 있다. 예컨대, 소스 코드 A로부터의 변수들(x, y, xd, 및 yd)은 메모리에서 같은 장소에 위치될 수 있고, 따라서 오류 포인터에 의해 집합적으로 겹쳐기입되는 것에 취약하다. 예컨대, 제로(zero)들이 오류 포인터에 의해 x, y, xd 및 yd에 잘못 기입되면, x와 xd 사이의 단순 비교는 이 계산 실패를 식별하지 못할 것이다. 오류 포인터 실패에 대해 보호하기 위하여, 메모리 보호 유닛 같은 부가적인 하드웨어, xd, yd의 인버전(inversion) 스토리지 같은 부가적인 소프트웨어, 또는 다양한 위치들을 보장하기 위한 특정 컴파일러/링커(linker) 커맨드들은 또한 페일세이프 계산을 제공하기 위하여 요구될 수 있다.
필요한 것은, 다수의 수학 라이브러리들, 다수의 하드웨어 수학 가속기들, 에러 발생 쉬움 고정 소수점 해 분석, 및 오류 포인터들의 제거를 허용하는 페일세이프 계산 방법이다. 이상적으로, 페일세이프 계산 방법은 구현 및 유지관리하기 용이할 것이어서, 소스 코드에 대해 거의 수정이 요구되지 않는다.
페일세이프 계산을 수행하기 위한 방법이 제공된다. 방법은 제 1 결과를 생성하기 위하여 제 1 계산을 수행하는 단계를 포함한다. 방법은 제 2 결과를 생성하기 위하여 스칼라(scalar) 및 제 1 계산을 사용하여 제 2 계산을 수행하는 단계를 더 포함하고, 제 2 계산은 스칼라화된 결과를 생성하기 위하여 스칼라에 의해 제 1 계산을 곱셈하는 단계, 및 제 2 결과를 생성하기 위하여 스칼라에 의해 스칼라화된 결과를 나누는 단계를 포함한다. 방법은, 제 1 결과 및 제 2 결과가 동일한지를 비교하는 단계를 더 포함한다.
하드웨어를 동작시키기 위해 페일세이프 계산을 수행하기 위한 디바이스가 제공된다. 디바이스는 제 1 결과를 생성하기 위하여 제 1 계산을 수행하도록 구성된 전자장치를 포함한다. 전자장치는 제 2 결과를 생성하기 위하여 스칼라 및 제 1 계산을 사용하여 제 2 계산을 수행하도록 추가로 구성된다. 제 2 계산은 스칼라화된 결과를 생성하기 위하여 스칼라에 의해 제 1 계산을 곱셈하는 단계를 포함한다. 제 2 계산은 제 2 결과를 생성하기 위하여 스칼라에 의해 스칼라화된 결과를 나누는 단계를 더 포함한다. 전자 장치는, 제 1 결과 및 제 2 결과가 동일한지를 표시하도록 추가로 구성된다.
페일세이프 방식으로 하드웨어를 동작시키기 위하여 코드를 컴파일링하기 위한 방법이 제공된다. 방법은 제 1 결과를 생성하도록 구성된 제 1 계산을 식별하는 단계를 포함한다. 방법은 제 1 계산 및 스칼라를 포함하여 제 2 계산을 생성하는 단계를 더 포함하고, 제 2 계산은 제 2 결과를 생성한다. 제 2 계산은 스칼라화된 결과를 생성하기 위하여 스칼라에 의해 제 1 계산을 곱셈하는 단계를 포함한다. 제 2 계산은 제 2 결과를 생성하기 위하여 스칼라에 의해 스칼라화된 결과를 나누는 단계를 더 포함한다. 방법은, 제 1 결과 및 제 2 결과가 동일한지의 표시를 생성하는 단계를 더 포함한다. 방법은 제 1 계산, 제 2 계산, 및 실행가능 프로그램의 표시를 포함하는 단계를 더 포함한다.
본 출원의 양상들
방법의 일 실시예에서, 방법은, 제 1 결과 및 제 2 결과가 동일하지 않으면 안전 연산을 수행하는 단계를 포함한다.
방법의 일 실시예에서, 제 1 계산은 하나 또는 그 초과의 연산들을 포함하고, 하나 또는 그 초과의 연산들은 최종 연산을 포함하고, 그리고 제 2 계산은 최종 연산 전에 스칼라를 곱셈하는 것을 포함한다.
방법의 일 실시예에서, 제 1 결과는 제 1 이진 표현을 가지며 스칼라화된 값은 제 2 이진 표현을 가지며, 그리고 스칼라는 제 1 이진 표현과 제 2 이진 표현 사이의 차이를 최대화하도록 선택된다.
방법의 일 실시예에서, 스칼라는 정수, 부동 소수점, 또는 더블(double)이다.
방법의 일 실시예에서, 스칼라는 무리수이다.
방법의 일 실시예에서, 스칼라와 1.0 사이의 차이는 스칼라화된 결과의 해를 보존하기 위하여 최소화된다.
방법의 일 실시예에서, 방법은, 제 1 결과가 제로인 것으로 결정되면 오프셋을 제 1 결과에 부가하는 단계를 더 포함한다.
디바이스의 일 실시예에서, 전자장치는, 제 1 결과 및 제 2 결과가 동일하지 않으면 안전 연산을 수행하도록 추가로 구성된다.
디바이스의 일 실시예에서, 제 1 계산은 하나 또는 그 초과의 연산들을 포함하고, 하나 또는 그 초과의 연산들은 최종 연산을 포함하고, 그리고 제 2 계산은 최종 연산 전에 스칼라를 곱셈하는 것을 포함한다.
디바이스의 일 실시예에서, 제 1 결과는 제 1 이진 표현을 가지며 스칼라화된 값은 제 2 이진 표현을 가지며, 그리고 스칼라는 제 1 이진 표현과 제 2 이진 표현 사이의 차이를 최대화하도록 선택된다.
디바이스의 일 실시예에서, 스칼라는 정수, 부동 소수점, 또는 더블이다.
디바이스의 일 실시예에서, 스칼라는 무리수이다.
디바이스의 일 실시예에서, 스칼라와 1.0 사이의 차이는 스칼라화된 결과의 해를 보존하기 위하여 최소화된다.
디바이스의 일 실시예에서, 전자장치는, 제 1 결과가 제로인 것으로 결정되면 오프셋을 제 1 결과에 부가하도록 추가로 구성된다.
방법의 일 실시예에서, 제 1 계산 및 스칼라를 포함하여 제 2 계산을 생성하고 그리고 제 1 결과 및 제 2 결과가 동일한지의 표시를 생성하는 것은 클래스(class)를 정의하는 것을 포함한다.
방법의 일 실시예에서, 방법은 메모리의 떨어져 있는 섹션들에 제 1 결과 및 제 2 결과를 저장하는 단계를 더 포함한다.
방법의 일 실시예에서, 방법은 메모리의 떨어져 있는 섹션들에 제 1 계산 및 제 2 계산을 저장하는 단계를 더 포함한다.
방법의 일 실시예에서, 실행가능 프로그램 내에 제 1 계산, 제 2 계산, 및 표시를 포함하는 것은 단일 프로세서상에서 실행하도록 실행가능 프로그램을 컴파일링하는 것을 포함한다.
방법의 일 실시예에서, 실행가능 프로그램 내에 제 1 계산, 제 2 계산, 및 표시를 포함하는 것은 단일 수학 라이브러리를 사용하기 위하여 실행가능 프로그램을 컴파일링하는 것을 포함한다.
방법의 일 실시예에서, 방법은 계산 에러들에 대한 수학 라이브러리를 사전 테스트하는 단계를 더 포함한다.
동일한 참조 번호는 모든 도면들에서 동일한 엘리먼트를 표현한다. 도면들은 반드시 실척이지 않다.
도 1은 본 출원의 실시예에 따른 페일세이프 시스템(100)의 블록 다이어그램을 묘사한다.
도 2는 본 출원의 실시예에 따른 페일세이프 계산 루틴(200)을 묘사한다.
도 3은 본 출원의 실시예에 따른 페일세이프 계산 방법(300)을 묘사한다.
도 4는 본 출원의 실시예에 따른 페일세이프 계산 컴파일레이션(compilation) 방법(400)을 묘사한다.
도 1-4 및 다음 설명은 본 출원의 최선 모드를 만들고 사용하는 방법을 당업자들에게 가르치기 위한 특정 예들을 묘사한다. 발명 원리들을 가르치는 목적을 위하여, 일부 종래의 양상들은 단순화되거나 생략되었다. 당업자들은 본 출원의 범위 내에 속하는 이들 예들로부터의 변형들을 인식할 것이다. 당업자들은, 아래에서 설명된 피처들이 본 출원의 다수의 변형들을 형성하기 위하여 다양한 방식들로 결합될 수 있다는 것을 인식할 것이다. 결과로서, 본 출원은 아래에서 설명된 특정 예들로 제한되는 것이 아니라, 청구항들 및 이들의 등가물들에 의해서 제한된다.
도 1은 본 발명의 실시예에 따른 페일세이프 시스템(100)의 블록 다이어그램을 묘사한다. 페일세이프 시스템(100)은 하드웨어(102), 전자장치(104), 및 하드웨어-소프트웨어 통신 라인(106)을 포함한다. 페일세이프 시스템(100)은 인간들 및/또는 환경의 건강 및 안전에 중요하고 그러므로 페일세이프 환경에서 동작되어야 하는 기구들 및/또는 장비를 포함할 수 있다.
하드웨어(102)는 전자장치(104)에 의해 동작, 제어, 모니터링, 및 판독될 수 있다. 하드웨어(102)는 어떤 전자적으로 동작 가능하거나 판독 가능한 장비를 포함할 수 있고, 이 때문에 페일세이프 연산을 제공하는 것은 매우 바람직하다. 예컨대, 하드웨어(102)는 비상 병급(emergency services), 화재 보호 시스템, 원격 통신들, 의료 디바이스, 원자로, 항공, 또는 우주비행에서 발견되는 시스템의 컴포넌트일 수 있다. 하드웨어(102)는, 당업자들에 의해 이해될 바와 같이, 또한 다른 애플리케이션들에 포함될 수 있다. 실시예에서, 하드웨어(102)는 측정 또는 모니터링 디바이스를 포함할 수 있다. 예컨대, 하드웨어(102)는 유체의 유량, 밀도, 또는 점성을 결정할 수 있는 진동 유량계를 포함할 수 있다.
신호들은 통신 라인(106)을 통하여 하드웨어(102)와 전자장치(104) 사이에서 왔다갔다 전송될 수 있다. 예컨대, 전자장치(104)는 하드웨어(102)를 구성하고 커맨드하거나 통신 라인(106)을 통해 데이터를 요청하도록 신호들을 전송할 수 있다. 하드웨어(102)는 하드웨어(102) 내부의 이벤트들에 의해 프롬프팅될 때 전자장치(104)에 데이터를 추가로 전송할 수 있다. 실시예들에서, 당업자들에 의해 이해될 바와 같이, 통신 라인(106)이 유선이거나 무선일 수 있는 것이 인식되어야 한다.
전자장치(104)는 인터페이스(112) 및 프로세싱 시스템(108)을 더 포함할 수 있다. 프로세싱 시스템(108)은 스토리지 시스템(110)을 더 포함할 수 있다. 전자장치(104)는 페일세이프 시스템(100)의 다양한 특성들을 결정하기 위하여 하드웨어(102)로부터 수신된 신호들을 프로세싱한다.
인터페이스(112)는 통신 라인(106), 또는 부가적인 리드(lead)들을 통해 센서 신호들을 수신할 수 있다. 인터페이스(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)은 하드 디스크(disk) 드라이브, 제거 가능 스토리지 디바이스, 메모리 카드, 플로피 디스크(disk) 드라이브, 자기 테이프 드라이브, 컴팩트 디스크(disk) 드라이브, 디지털 다기능 디스크(disc), 블루-레이 디스크(disc), 광학 스토리지 디바이스, 테이프 백업, 또는 임의의 다른 컴퓨터 사용 가능 또는 판독가능 스토리지 매체를 포함할 수 있다.
전자장치(104)가 일반적으로 기술분야에서 알려진 다양한 다른 컴포넌트들 및 기능들을 포함할 수 있다는 것이 이해되어야 한다. 이들 부가적인 피처들은 간략함의 목적을 위하여 설명 및 도면들로부터 생략된다. 그러므로, 본 발명은 도시되고 논의된 특정 실시예들로 제한되지 않아야 한다.
도 1이 전자장치(104)와 통신하는 단일 하드웨어(102)만을 묘사하지만, 당업자들은, 다수의 하드웨어 어셈블리들이 전자장치(104)와 통신할 수 있다는 것을 쉽게 인식할 것이다. 게다가, 전자장치(104)는 다양한 상이한 하드웨어 타입들을 동작시킬 수 있다. 전자 장치(104)와 통신하는 하드웨어(102) 같은 각각의 하드웨어 어셈블리는 그 하드웨어의 동작에 전용되는 스토리지 시스템(110)의 개별 섹션을 가질 수 있다.
스토리지 시스템(110)은, 하드웨어(102)를 안전하게 동작시키기 위하여 페일세이프 계산 루틴(200)에 의해 사용될 수 있는 변수들을 저장할 수 있다. 예컨대, 스토리지 시스템(110)은 제 1 결과(214), 스칼라(216), 제 2 결과(220), 및 에러 표시자(222)를 저장할 수 있다. 스토리지 시스템(110)은 또한 하드웨어(102)를 안전하게 동작시키기 위하여 페일세이프 계산 루틴(200)에 의해 사용될 수 있는 기능들을 저장할 수 있다. 예컨대, 스토리지 시스템(110)은 제 1 계산(212), 제 2 계산(218), 제 1 계산 로직(202), 제 2 계산 로직(204), 비교 로직(206), 및 안전 연산 로직(208)을 저장할 수 있다. 스토리지 시스템(110)은 또한 페일세이프 계산 루틴(200)을 저장할 수 있다.
실시예에서, 전자장치(104)는 하드웨어(102)를 안전하게 동작시키기 위하여 페일세이프 계산 루틴(200)을 개시 및 동작시킬 수 있다. 실시예들에서, 페일세이프 계산 루틴(200)은 하드웨어(102)로부터 안전 연산 및 데이터의 해석을 보장하기 위하여 리던던트 수학 연산들을 수행할 수 있다.
도 2는 본 출원의 실시예에 따른 페일세이프 계산 루틴(200)을 묘사한다. 페일세이프 계산 루틴(200)은 제 1 계산 로직(202), 제 2 계산 로직(204), 비교 로직(206), 및 안전 연산 로직(208)을 포함한다.
페일세이프 계산 루틴(200)은 제 1 계산 로직(202)에서 시작된다. 제 1 계산 로직(202)은 제 1 계산(212)을 수신하고 제 1 결과(214)를 생성한다. 제 1 계산(212)은 페일세이프 방식으로 프로세서상에서 수행될 수 있는 하나 또는 그 초과의 수학 연산들을 포함한다. 예컨대, 제 1 계산 로직(202)은 수학 연산들의 다음 비-배타적 리스트를 포함할 수 있다: 덧셈, 뺄셈, 곱셈, 나눗셈, 등. 제 1 결과(214)는 프로세싱 시스템(108) 상에서 제 1 계산(212)을 수행한 결과이다. 실시예들에서, 제 1 결과(214)는 다음 비-배타적 리스트를 포함하여 임의의 데이터 타입 또는 형태로 표현된 수일 수 있다: 정수, 부호 달린 수, 부호 달리지 않은 수, 짧은 수, 긴 수, 부동 소수점 수, 2배 정밀도 수, 또는 당업자들에게 알려진 임의의 다른 데이터 타입. 간단한 예에서, 제 1 계산(212)은 다음 로직을 포함할 수 있다:
Figure pct00004
계산 B의 예에서, 제 1 계산(212)은 y1*2.0이고, 제 1 결과(214)는 x1이다.
페일세이프 계산 루틴(200)은 제 2 계산 로직(204)에서 계속된다. 제 2 계산 로직(204)은 제 1 계산(212) 및 스칼라(216)를 수신하여 제 2 계산(218) 및 제 2 결과(220)를 생성한다. 스칼라(216)는 페일세이프 계산들을 수행하는데 도움으로서 사용될 수 있는 수이다. 스칼라(216)는 정수, 상수, 부호 달린 수, 부호 달리지 않은 수, 부동 소수점 수, 2배 정밀 수, 짧은 수, 긴 수, 또는 당업자들에게 보통 알려진 임의의 다른 타입(그러나 이들로 제한되지 않음)을 포함하는 임의의 데이터 타입일 수 있다.
이전에 논의된 바와 같이, 제 1 계산(212)은 하나 또는 그 초과의 수학 연산들을 포함한다. 제 2 계산 로직(204)은 스칼라(216)에 의한 곱셈 및 나눗셈의 추가 수학 연산들을 포함함으로써 제 2 계산(218)을 생성한다. 소스 코드 B는 제 2 계산 로직(204)의 예시적 구현을 제공한다:
Figure pct00005
소스 코드 B에서, y1 * 2.0f는 제 1 계산(212)을 표현하고, ((y2 * 1.2f) * 2.0f )/1.2f)는 제 2 계산(218)을 표현하고, 스칼라(216)는 1.2와 동일하고, 제 1 결과(214)는 x1에 의해 표현되고, 그리고 제 2 결과(220)는 x2에 의해 표현된다. 소스 코드 B에서 변수들(y1 및 y2)은 동일한 값을 가지며, 실시예들에서 y1 및 y2는 동일하거나 상이한 데이터 타입들을 가질 수 있다. 제 1 계산(212)은 상수 2.0f에 의해 변수(y1)를 곱셈하는 것을 포함하는 것이 소스 코드 B에 도시될 수 있다. 제 2 계산 로직(204)은 스칼라(216)에 의해 제 1 계산(212)을 곱셈함으로써 제 1 계산(212)을 스케일링(scale)하고, 스칼라는 소스 코드 B의 예에서 1.2f이고, 스칼라화된 결과를 생성한다. 당업자들은, 스칼라(216)가 스칼라화된 결과를 생성하기 위하여 제 1 계산(212)과 함께 포함된 하나 또는 그 초과의 연산들 중 임의의 연산 전, 후, 또는 사이에 곱셈될 수 있다는 것을 인식할 것이다. 실시예에서, 스칼라(216)를 곱셈하는 연산은 스칼라화된 결과를 생성하기 위하여 제 1 계산(212)을 수행할 때 최종 연산 전에 포함될 수 있다. 제 2 계산 로직(204)은 스칼라(216)에 의해 스칼라화된 결과를 나눔으로써 제 1 계산(212)을 추가로 변환하여, 제 2 결과(220)를 생성한다. 제 2 결과(220)는 정수, 상수, 부호 달린 수, 부호 달리지 않은 수, 부동 소수점 수, 2배 정밀 수, 짧은 수, 긴 수, 또는 당업자들에게 보통 알려진 임의의 다른 타입(그러나 이들로 제한되지 않음)을 포함하는 임의의 데이터 타입일 수 있다.
제 1 계산(212) 및 제 2 계산(218)이 리던던트 수학 계산들을 제공하고, 제 2 계산이 간단히 스칼라(216)에 의해 곱셈되고 나눗셈된 제 1 계산인 것이 인식되어야 한다. 제 1 및 제 2 계산들(212 및 218)이 동일한 프로세서상에서 또는 동일한 수학 라이브러리로 수행될 수 있다는 사실에 불구하고, 상기 계산들은 수들의 상이한 세트들 상에서 수행된다. 그러므로, 대부분의 환경들에서, 제 1 및 제 2 계산들(212 및 218)은 고유 수학 계산들을 표현한다. 소스 코드 B의 예에서, 제 1 계산(212)은 간단한 곱셈 연산이다. 그러나, 이것은 제한인 것으로 의도되지 않는다. 추가 실시예들에서, 제 1 계산(212)은 임의의 수의 수학 연산들을 포함할 수 있다.
그러나, 제 1 계산(212)에 사용된 변수들이 제로일 때, 제 1 계산(212) 및 제 2 계산(218)은 필수적으로 고유 수학 계산들을 표현할 수 없다. 예컨대, 소스 코드 B의 y1 및 y2가 제로일 때, 스칼라(216)의 사용은 고유 계산들을 초래하지 않을 것이다. 그런 환경들에서, 제 2 계산 로직(204)은 계산들의 리던던시를 보존하기 위하여 오프셋 및 스칼라 둘 다를 사용할 수 있다. 소스 코드 C는 오프셋 및 스칼라 둘 다를 사용하는 예시적 구현을 제공한다:
Figure pct00006
소스 코드 C에서, z는 오프셋을 표현한다. 그러므로, y1 및 y2가 제로이면, 제 1 및 제 2 계산들(212 및 218)의 고유성은 보존될 것이다.
그러나, 오프셋을 사용하는 것은 추가 코드 복잡성 및 소프트웨어 실행 시간을 제공할 수 있다. 오프셋을 포함하는 것에 대한 대안은 제 1 및 제 2 계산들(212 및 218)에 사용된 변수들이 제로인 경우에 성공을 증명하기 위하여 당해 수학 라이브러리 또는 코-프로세서를 사전-테스트하는 것이다.
스칼라(216)의 선택이 분석을 요구하고, 그리고 사용된 수학 라이브러리 및/또는 코-프로세서에 따를 수 있는 것이 주의되어야 한다. 일반적으로 말해서, 스칼라(216)의 값은 1 또는 제로로 세팅되지 않아야 하는데, 그 이유는 그런 값들이 고유한 제 1 및 제 2 계산들(212 및 218)을 제공하지 않을 것이기 때문이다. 실시예에서, 스칼라(216)는 오류 계산의 검출을 돕기 위하여 제 1 결과(214)의 이진 표현과 스칼라화된 결과의 이진 표현 사이의 차이를 최대화하도록 선택된다.
실시예들에서, 스칼라(216)는 정수-기반 수학 연산들을 위하여 제 1 및 제 2 계산들(212 및 218)의 해를 보호하기 위해 1.0에 근접하게 선택될 수 있다. 실시예들에서, 스칼라(216)는 무리수일 수 있다. 예컨대, 2.222222의 스칼라(216)에 대한 값은 IEEE-754 부동 소수점 표현에서 합리적인 선택이다. 이진 월드(world)의 무리수로서, 값(2.222222)은 수들의 비트-표현들 사이의 큰 차이들을 제공할 수 있는 근본적으로 상이한 가수(mantissa)들을 제공한다. 수들 및 수들의 스칼라화된 값들의 예들은 IEEE-754 표현 및 2.222222의 스칼라를 사용하여 아래에 제공된다:
Figure pct00007
이에 의해, 제 1 및 제 2 계산들(212 및 218)의 해를 보존하는 스칼라(216)에 대한 값을 선택하는 것은 계산 오류 검출을 돕는 장점을 제공할 수 있다.
페일세이프 계산 루틴(200)은 비교 로직(206)에서 계속된다. 비교 로직(206)은 제 1 결과(214) 및 제 2 결과(220)를 수신하여 에러 표시자(222)를 생성한다. 비교 로직(206)은 결과들이 동일한지를 결정하기 위하여 제 1 결과(214)를 제 2 결과(220)에 비교한다. 제 1 계산(212) 및 제 2 계산(218)이 동일한 코-프로세서상에서 및/또는 동일한 수학 라이브러리로 수행될 수 있기 때문에, 본 출원의 실시예들은, 제 1 결과(214) 및 제 2 결과(220)가 동일한 데이터 타입일 수 있다는 점에서 이전 방법들에 비해 장점을 제공한다. 이것은 비교 연산을 상당히 간단히 하여, 상이한 타입들의 값들을 비교할 때 에러-발생 쉬움 해 분석을 수행할 필요를 제거한다. 제 1 및 제 2 결과들(214 및 220)이 동일하면, 계산은 페일세이프인 것으로 고려된다. 제 1 및 제 2 결과들(214 및 220)이 동일하지 않으면, 에러 조건은 존재할 수 있고 비교 로직(206)은 에러 표시자(222)를 세팅함으로써 에러 조건이 존재하는 것을 표시할 수 있다. 실시예들에서, 에러 표시자(222)는 디스플레이 또는 전자 메시지를 통하여 사용자에게 리포팅될 수 있다.
페일세이프 계산 루틴(200)은 안전 연산 로직(208)에서 계속된다. 안전 연산 로직(208)은 에러 표시자(222)를 수신한다. 에러가 발생하였다는 것을 에러 표시자(222)가 표시하면, 안전 연산 로직(208)은 실패된 계산들로 인해 발생할 수 있는 사람들 또는 환경에 대한 손상 또는 부상을 방지하기 위하여 연산들을 수행할 수 있다. 실시예들에서, 안전 연산 로직(208)은 하드웨어(102)에 대한 안전한 절차를 개시할 수 있다. 다른 실시예에서, 안전 연산 로직(208)은 하드웨어(102)로 취해진 측정들이 에러일 수 있다는 것을 오퍼레이터들에게 경고할 수 있다.
도 3은 페일세이프 계산 방법(300)을 묘사한다. 페일세이프 계산 방법(300)은 페일세이프 계산 루틴(200)의 예시적 실시예이다. 프로세싱 시스템(108)은 페일세이프 계산 방법(300)을 실행하기 위해 필요한 신호 및 데이터 프로세싱을 수행하도록 구성될 수 있다. 페일세이프 계산 방법(300)은 단계(302)에서 시작된다. 단계(302)에서, 제 1 계산은 제 1 결과를 생성하기 위하여 수행된다. 예컨대, 제 1 계산(212)은 위에서 논의된 바와 같이, 제 1 결과(214)를 생성하기 위하여 제 1 계산 로직(202)에 의해 수행될 수 있다.
페일세이프 계산 방법(300)은 단계(304)에서 계속된다. 단계(304)에서, 제 2 계산은 제 2 결과를 생성하기 위하여 스칼라 및 제 1 계산을 사용하여 수행되고, 제 2 계산은 스칼라화된 결과를 생성하기 위하여 스칼라에 의해 제 1 계산을 곱셈하고, 그리고 제 2 결과를 생성하기 위하여 스칼라에 의해 스칼라화된 결과를 나누는 것을 포함한다. 예컨대, 제 2 계산 로직(204)은 스칼라(216), 제 1 계산(212)을 수신하고, 제 2 계산(218)을 생성할 수 있다. 제 2 결과(220)는 위에서 논의된 바와 같이, 프로세싱 시스템(108) 상에서 제 2 계산(218)을 수행한 결과들을 포함할 수 있다.
페일세이프 계산 방법(300)은 단계(306)에서 계속된다. 단계(306)에서, 제 1 결과 및 제 2 결과가 동일한지가 표시된다. 예컨대, 비교 로직(206)은 위에서 설명된 바와 같이, 제 1 결과(214) 및 제 2 결과(220)를 수신하고 에러 표시자(222)를 생성할 수 있다.
도 4는 페일세이프 계산 컴파일레이션 방법(400)을 묘사한다. 페일세이프 계산 컴파일레이션 방법(400)은 코드를, 프로세싱 시스템(108) 상에서 페일세이프 계산들을 실행할 수 있는 실행 가능 소프트웨어로 컴파일하기 위해 수행될 수 있다. 예컨대, 페일세이프 계산 컴파일 방법(400)은 페일세이프 계산 루틴(200) 또는 페일세이프 계산 방법(300)을 실행하도록 구성된 코드를 컴파일하기 위해 수행될 수 있다.
방법(400)은 단계(402)에서 시작된다. 단계(402)에서, 제 1 계산은 식별되고 제 1 결과를 생성하도록 구성된다. 예컨대, 제 1 계산(212) 또는 계산 A는 컴파일러에 의해 식별될 수 있다.
페일세이프 계산 컴파일레이션 방법(400)은 단계(404)에서 계속된다. 단계(404)에서, 제 2 계산은 제 1 계산 및 스칼라를 포함하여 생성되고, 제 2 계산은 제 2 결과를 생성하고, 제 2 계산은 스칼라화된 결과를 생성하기 위하여 스칼라에 의해 제 1 계산을 곱셈하고, 그리고 제 2 결과를 생성하기 위하여 스칼라에 의해 스칼라화된 결과를 나누는 것을 포함한다. 예컨대, 제 2 계산 로직(204)은 제 1 계산(212) 및 스칼라(216)를 수신하여 제 2 계산(218) 및 제 2 결과(220)를 생성할 수 있다.
페일세이프 계산 컴파일레이션 방법(400)은 단계(406)에서 계속된다. 단계(406)에서, 제 1 결과 및 제 2 결과가 동일한지의 표시가 생성된다. 예컨대, 비교 로직(206)은 위에서 논의된 바와 같이, 에러 표시자(222)를 생성할 수 있다.
페일세이프 계산 컴파일레이션 방법(400)은 단계(408)에서 계속된다. 단계(408)에서, 제 1 계산, 제 2 계산, 및 표시는 실행가능 프로그램에 포함된다. 실시예들에서, 실행가능 프로그램은 당업자들에게 공통으로 알려진 임의의 타입의 컴퓨터상에서 실행하도록 컴파일링될 수 있다. 실시예들에서, 소프트웨어는 실행가능 소프트웨어 프로그램 또는 다른 실행가능 소프트웨어 프로그램들에 의해 액세스가능한 라이브러리일 수 있다.
모든 각각의 페일세이프 계산을 위해 단계들(402, 404 및 406)을 포함하도록 소프트웨어 코드를 기입하는 것이 소프트웨어 엔지니어의 작업에 상당한 양의 복잡성을 부가할 수 있다는 것이 인식될 것이다. 부가적인 복잡성은 최종 소프트웨어 제품의 강건성 및 품질에 악영향을 줄 수 있다. 그러므로, 실시예들에서, 단계(408)는, 단계들(404 및 406)의 기능성이 소프트웨어 컴파일 동안 자동으로 생성될 수 있는 것을 추가로 제공한다. 소프트웨어의 컴파일레이션 동안 이 코드 "언더 더 후드(under the hood)"를 생성함으로써, 에러 없고, 유지하기 쉽고, 강건한 소프트웨어 코드의 장점들이 제공될 수 있다. 예컨대, 소프트웨어 엔지니어는 소스 코드 A를 기입할 수 있고, 소스 코드 B의 기능성은 컴파일 동안 실행 가능한 최종 제품 소프트웨어에 포함될 수 있다. 소스 코드 A는 소스 코드 B보다 구현하기 위해 훨씬 덜 에러가-발생되는 검사에 의해 이해하기에 더 쉽고, 그리고 다른 프로세서들 또는 컴퓨팅 시스템들에 대한 포트에 더 쉽다.
C, C++, 자바 같은 타겟 프로그래밍 언어, 또는 당업자들에게 알려진 임의의 다른 프로그래밍 언어의 피처들, 및 컴파일러를 사용하여, 소스 코드 A를 컴파일링할 때 소스 코드 B의 기능성을 캡슐화(encapsulate)하는 것이 가능하다. 예컨대, C 및 C++ 프로그래밍 언어들에서, 클래스가 정의될 수 있고 제 1 계산(212), 제 2 계산(218), 및 제 1 및 제 2 결과들(214, 220) 사이의 비교를 캡슐화하기 위해 사용될 수 있다. 대부분의 컴퓨터 언어들은 이런 타입의 캡슐화 및 복잡성-감춤에 대한 일부 지원을 제공한다.
실시예들에서, 단계(408)는 서로 떨어진 메모리의 부분들에 독립적인 계산 결과들의 저장을 제공함으로써 페일세이프 계산들을 추가로 제공할 수 있다. 예컨대, 제 1 계산(212), 제 1 결과(214), 스칼라(216), 제 2 계산(218), 및 제 2 결과(220)의 임의의 조합은 메모리의 비-인접한 섹션들 및/또는 떨어진 섹션들에 기입될 수 있다. 메모리의 비-인접한 섹션들 및/또는 떨어진 섹션들은 동일한 메모리 공간에서 비-인접한 어드레스들을 가진 메모리, 또는 상이한 하드웨어 컴포넌트들 상에서 발견된 메모리의 섹션들을 포함할 수 있다. 실시예들에서, 메모리의 일부는 당업자들에 의해 이해될 바와 같이 추가 하드웨어 및/또는 소프트웨어 보호들을 포함할 수 있다. 떨어진 메모리에 단계들(402, 404, 및 406)에 의해 제공된 연산들의 결과들을 저장함으로써, 계산들은 오류 포인터들에 대해 추가로 보호될 수 있다는 것이 인식될 것이다.
실시예들에서, 단계(408)는 단일 프로세서상에서 동작하는 실행가능 프로그램에 제 1 계산, 제 2 계산, 및 표시를 포함할 수 있다. 추가 실시예들에서, 단계(408)는 단일 수학 라이브러리를 활용하는 실행가능 프로그램에 제 1 계산, 제 2 계산, 및 표시를 포함할 수 있다. 추가 실시예들에서, 단계(408)는 에러들에 대해 수학 라이브러리를 사전-테스팅하는 것을 포함할 수 있다.
위 실시예들의 상세한 설명들은 본 출원의 범위 내에 있도록 본 발명자들에 의해 고려된 모든 실시예들의 설명들을 총망라하지 않는다. 정말로, 당업자들은, 위에-설명된 실시예들의 특정 엘리먼트들이 추가 실시예들을 생성하기 위하여 다양하게 결합되거나 제거될 수 있고, 그런 추가 실시예들이 본 출원의 범위 및 지침들 내에 속한다는 것을 인식할 것이다. 위에-설명된 실시예들이 본 발명의 범위 및 지침들 내의 부가적인 실시예들을 생성하기 위하여 전체적으로 또는 부분적으로 결합될 수 있다는 것이 당업자들에게 또한 자명할 것이다.
따라서, 본 출원의 특정 실시예들 및 예들이 예시 목적들을 위하여 본원에 설명되었지만, 당업자들이 인식할 바와 같이, 다양한 등가 수정들이 본 출원의 범위 내에서 가능하다. 본원에 제공된 지침들은 위에 설명되고 첨부 도면들에 도시된 실시예들만이 아닌 다른 미터(meter)들에 적용될 수 있다. 따라서, 본 출원의 범위는 다음 청구항들로부터 결정되어야 한다.

Claims (23)

  1. 페일세이프(failsafe) 계산을 수행하기 위한 방법으로서,
    제 1 결과를 생성하기 위하여 제 1 계산을 수행하는 단계;
    제 2 결과를 생성하기 위하여 스칼라 및 상기 제 1 계산을 사용하여 제 2 계산을 수행하는 단계 ― 상기 제 2 계산은 스칼라화된 결과를 생성하기 위하여 상기 스칼라에 의해 상기 제 1 계산을 곱셈하고, 그리고 상기 제 2 결과를 생성하기 위하여 상기 스칼라에 의해 상기 스칼라화된 결과를 나누는 것을 포함함 ―; 및
    상기 제 1 결과 및 상기 제 2 결과가 동일한지를 표시하는 단계
    를 포함하는,
    페일세이프 계산을 수행하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 제 1 결과 및 상기 제 2 결과가 동일하지 않으면 안전 연산을 수행하는 단계를 더 포함하는,
    페일세이프 계산을 수행하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 제 1 계산은 하나 또는 그 초과의 연산들을 포함하고, 상기 하나 또는 그 초과의 연산들은 최종 연산을 포함하고, 그리고 상기 제 2 계산은 상기 최종 연산 전에 상기 스칼라를 곱셈하는 것을 포함하는,
    페일세이프 계산을 수행하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 제 1 결과는 제 1 이진 표현을 가지며 상기 스칼라화된 값은 제 2 이진 표현을 가지며, 그리고 상기 스칼라는 상기 제 1 이진 표현과 상기 제 2 이진 표현 사이의 차이를 최대화하도록 선택되는,
    페일세이프 계산을 수행하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 스칼라는 정수, 부동 소수점(floating point), 또는 더블(double)인,
    페일세이프 계산을 수행하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 스칼라는 무리수인,
    페일세이프 계산을 수행하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 스칼라와 1.0 사이의 차이는 상기 스칼라화된 결과의 해(resolution)를 보존하기 위하여 최소화되는,
    페일세이프 계산을 수행하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 제 1 결과가 제로(zero)인 것으로 결정되면 오프셋을 상기 제 1 결과에 부가하는 단계를 더 포함하는,
    페일세이프 계산을 수행하기 위한 방법.
  9. 하드웨어(102)를 동작시키기 위하여 페일세이프 계산을 수행하기 위한 디바이스로서,
    전자장치(104)를 포함하고, 상기 전자장치(104)는:
    제 1 결과(214)를 생성하기 위하여 제 1 계산(212)을 수행하고;
    제 2 결과(220)를 생성하기 위하여 스칼라(216) 및 상기 제 1 계산(212)을 사용하여 제 2 계산(218)을 수행하고 ― 상기 제 2 계산(218)은 스칼라화된 결과를 생성하기 위하여 상기 스칼라(216)에 의해 상기 제 1 계산(212)을 곱셈하고, 그리고 상기 제 2 결과(220)를 생성하기 위하여 상기 스칼라(216)에 의해 상기 스칼라화된 결과를 나누는 것을 포함함 ―; 및
    상기 제 1 결과(214) 및 상기 제 2 결과(220)가 동일한지를 표시
    하도록 구성되는,
    페일세이프 계산을 수행하기 위한 디바이스.
  10. 제 9 항에 있어서,
    상기 전자장치(104)는, 상기 제 1 결과(214) 및 상기 제 2 결과(220)가 동일하지 않으면 안전 연산을 수행하도록 추가로 구성되는,
    페일세이프 계산을 수행하기 위한 디바이스.
  11. 제 9 항에 있어서,
    상기 제 1 계산(212)은 하나 또는 그 초과의 연산들을 포함하고, 상기 하나 또는 그 초과의 연산들은 최종 연산을 포함하고, 그리고 상기 제 2 계산(218)은 상기 최종 연산 전에 상기 스칼라(216)를 곱셈하는 것을 포함하는,
    페일세이프 계산을 수행하기 위한 디바이스.
  12. 제 9 항에 있어서,
    상기 제 1 결과(214)는 제 1 이진 표현을 가지며 상기 스칼라화된 값은 제 2 이진 표현을 가지며, 그리고 상기 스칼라(216)는 상기 제 1 이진 표현과 상기 제 2 이진 표현 사이의 차이를 최대화하도록 선택되는,
    페일세이프 계산을 수행하기 위한 디바이스.
  13. 제 9 항에 있어서,
    상기 스칼라(216)는 정수, 부동 소수점, 또는 더블인,
    페일세이프 계산을 수행하기 위한 디바이스.
  14. 제 9 항에 있어서,
    상기 스칼라(216)는 무리수인,
    페일세이프 계산을 수행하기 위한 디바이스.
  15. 제 9 항에 있어서,
    상기 스칼라(216)와 1.0 사이의 차이는 상기 스칼라화된 결과의 해를 보존하기 위하여 최소화되는,
    페일세이프 계산을 수행하기 위한 디바이스.
  16. 제 9 항에 있어서,
    상기 전자장치(104)는, 상기 제 1 결과(214)가 제로인 것으로 결정되면 오프셋을 상기 제 1 결과(214)에 부가하도록 추가로 구성되는,
    페일세이프 계산을 수행하기 위한 디바이스.
  17. 페일세이프 방식으로 하드웨어를 동작시키기 위한 코드를 컴파일링(compiling)하기 위한 방법으로서,
    제 1 결과를 생성하도록 구성된 제 1 계산을 식별하는 단계;
    상기 제 1 계산 및 스칼라를 포함하여 제 2 계산을 생성하는 단계 ― 상기 제 2 계산은 제 2 결과를 생성하고, 상기 제 2 계산은 스칼라화된 결과를 생성하기 위하여 상기 스칼라에 의해 상기 제 1 계산을 곱셈하고, 그리고 상기 제 2 결과를 생성하기 위하여 상기 스칼라에 의해 상기 스칼라화된 결과를 나누는 것을 포함함 ―;
    상기 제 1 결과 및 상기 제 2 결과가 동일한지의 표시를 생성하는 단계; 및
    실행가능 프로그램에 상기 제 1 계산, 상기 제 2 계산, 및 상기 표시를 포함하는 단계
    를 포함하는,
    코드를 컴파일링하기 위한 방법.
  18. 제 17 항에 있어서,
    상기 제 1 계산 및 상기 스칼라를 포함하여 상기 제 2 계산을 생성하는 단계 및 상기 제 1 결과 및 상기 제 2 결과가 동일한지의 표시를 생성하는 단계는 클래스(class)를 정의하는 것을 포함하는,
    코드를 컴파일링하기 위한 방법.
  19. 제 17 항에 있어서,
    메모리의 떨어져 있는 섹션들에 상기 제 1 결과 및 상기 제 2 결과를 저장하는 단계를 더 포함하는,
    코드를 컴파일링하기 위한 방법.
  20. 제 17 항에 있어서,
    메모리의 떨어져 있는 섹션들에 상기 제 1 계산 및 상기 제 2 계산을 저장하는 단계를 더 포함하는,
    코드를 컴파일링하기 위한 방법.
  21. 제 17 항에 있어서,
    상기 실행가능 프로그램에 상기 제 1 계산, 상기 제 2 계산, 및 상기 표시를 포함하는 단계는 단일 프로세서상에서 실행하도록 상기 실행가능 프로그램을 컴파일링하는 것을 포함하는,
    코드를 컴파일링하기 위한 방법.
  22. 제 17 항에 있어서,
    상기 실행가능 프로그램에 상기 제 1 계산, 상기 제 2 계산, 및 상기 표시를 포함하는 단계는 단일 수학 라이브러리(math library)를 사용하기 위해 상기 실행가능 프로그램을 컴파일링하는 것을 포함하는,
    코드를 컴파일링하기 위한 방법.
  23. 제 17 항에 있어서,
    계산 에러들에 대해 수학 라이브러리를 사전 테스팅하는 단계를 더 포함하는,
    코드를 컴파일링하기 위한 방법.
KR1020167032998A 2014-05-08 2014-05-08 페일세이프 계산들을 수행하기 위한 방법 KR101983125B1 (ko)

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
KR20170002481A true KR20170002481A (ko) 2017-01-06
KR101983125B1 KR101983125B1 (ko) 2019-05-28

Family

ID=50933525

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167032998A KR101983125B1 (ko) 2014-05-08 2014-05-08 페일세이프 계산들을 수행하기 위한 방법

Country Status (13)

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

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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252548A (ja) * 2005-03-09 2006-09-21 Hewlett-Packard Development Co Lp 時間的冗長性を実施するための可変遅延命令
KR20060103920A (ko) * 2003-12-18 2006-10-04 인텔 코오퍼레이션 스케일링된 정수를 사용하는 부동 소수점 연산
KR20080018692A (ko) * 2006-08-25 2008-02-28 엠텍비젼 주식회사 다양한 정밀도에 대한 고속 부동 소수점 연산을 수행하는방법, 프로그래밍 구조 및 기록 매체
KR20080098440A (ko) * 2006-02-27 2008-11-07 콸콤 인코포레이티드 선택가능한 하위 정밀도에 대하여 감소된 전력 요구조건들을 가지는 부동 소수점 프로세서

Family Cites Families (14)

* 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
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 プロセッサの動作を検証する動作検証方法及び動作検証プログラム
WO2007051305A1 (en) * 2005-11-03 2007-05-10 Certicom Corp. Simultaneous scalar multiplication method
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
JP5407589B2 (ja) * 2009-06-29 2014-02-05 富士通株式会社 演算回路および演算処理装置ならびに演算処理方法
DE102010013349B4 (de) * 2010-03-30 2013-06-13 Eads Deutschland Gmbh Computersystem und Verfahren zum Vergleichen von Ausgangssignalen
US8793533B2 (en) * 2010-08-03 2014-07-29 Siemens Aktiengesellschaft Method and device for performing failsafe hardware-independent floating-point arithmetic
RU2455681C1 (ru) * 2010-12-09 2012-07-10 Федеральное государственное унитарное предприятие научно-исследовательский институт "Субмикрон" Отказоустойчивая вычислительная система с аппаратно-программной реализацией функций отказоустойчивости и динамической реконфигурации
FR2968855B1 (fr) * 2010-12-14 2012-12-07 Schneider Electric Ind Sas Procede et dispositif de surveillance d'un dispositif equipe d'un microprocesseur
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060103920A (ko) * 2003-12-18 2006-10-04 인텔 코오퍼레이션 스케일링된 정수를 사용하는 부동 소수점 연산
JP2006252548A (ja) * 2005-03-09 2006-09-21 Hewlett-Packard Development Co Lp 時間的冗長性を実施するための可変遅延命令
KR20080098440A (ko) * 2006-02-27 2008-11-07 콸콤 인코포레이티드 선택가능한 하위 정밀도에 대하여 감소된 전력 요구조건들을 가지는 부동 소수점 프로세서
KR20080018692A (ko) * 2006-08-25 2008-02-28 엠텍비젼 주식회사 다양한 정밀도에 대한 고속 부동 소수점 연산을 수행하는방법, 프로그래밍 구조 및 기록 매체

Also Published As

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

Similar Documents

Publication Publication Date Title
CA2800643C (en) Decimal floating-point quantum exception detection
KR20190025474A (ko) 플랜트 데이터 예측 장치 및 방법
Catelani et al. Evaluation of the Safe Failure Fraction for an electromechanical complex system: remarks about the standard IEC61508
EP3255546A1 (en) Controller
KR101983125B1 (ko) 페일세이프 계산들을 수행하기 위한 방법
JP5344936B2 (ja) 制御装置
CN113656230B (zh) 故障诊断电路、方法、装置及计算机可读存储介质
JP6721423B2 (ja) アプリロジックおよびその検証方法
US20170364610A1 (en) Semiconductor LSI Design Device and Design Method
JP6914230B2 (ja) フェイルセーフ計算を実施するための方法
US9299456B2 (en) Matrix and compression-based error detection
JP5563700B2 (ja) 制御装置
JP2019191770A (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
WO2019116368A1 (en) A system and a method for continuous monitoring and verification of the operation of a microcontroller
Gassino et al. Assessment of safety-critical software.

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant