KR20170065497A - 복수의 프로세서를 포함하는 기능 안전이 있는 애플리케이션을 위한 전자 시스템에서 프로그램을 실행하는 방법, 대응되는 시스템 및 컴퓨터 프로그램 제품 - Google Patents
복수의 프로세서를 포함하는 기능 안전이 있는 애플리케이션을 위한 전자 시스템에서 프로그램을 실행하는 방법, 대응되는 시스템 및 컴퓨터 프로그램 제품 Download PDFInfo
- Publication number
- KR20170065497A KR20170065497A KR1020177006149A KR20177006149A KR20170065497A KR 20170065497 A KR20170065497 A KR 20170065497A KR 1020177006149 A KR1020177006149 A KR 1020177006149A KR 20177006149 A KR20177006149 A KR 20177006149A KR 20170065497 A KR20170065497 A KR 20170065497A
- Authority
- KR
- South Korea
- Prior art keywords
- self
- chk
- stl
- sys
- test
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/079—Root cause analysis, i.e. error or fault diagnosis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/008—Reliability or availability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Hardware Redundancy (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
싱글-프로세서나 멀티 프로세서 프로세싱 시스템 및 추가적인 독립 제어 모듈을 포함하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법에 있어서, 상기 방법은, 프로그램(P)을 복수의 병렬 서브-프로그램(P1,...,Pn)으로 분해시키는 작업을 수행하는 단계와, 각각의 병렬 서브-프로그램(P1,...,Pn)의 실행을 시스템의 각각의 프로세싱 모듈로 할당하는 단계와, 상기 서브-프로그램(P1,...,Pn)의 각각과 관련된 셀프-테스트 작업(Astl, Asys, Achk)을 주기적으로 수행하는 단계를 포함한다.
Description
본 발명은 기능 안전이 요구되는 적용을 위한 전자 시스템에서 프로그램을 실행하기 위한 기술에 관한 것이다. 기술된 전자 시스템은 싱글 프로세서(CPU) 또는 복수의 프로세서를 포함하는 아키텍처에 기초한다. 이러한 기술은,
상기 아키텍처를 통해 실행될 프로그램을 복수의 병렬 서브-프로그램으로 분해하는 작업을 수행하는 단계와,
각각의 병렬 서브-프로그램의 실행을 시스템의 각각의 프로세싱 모듈, 특히 상기 프로세서들 중 하나에 관련된 무리적 프로세서나 가상 머신으로 할당하는 단계와,
상기 아키텍처의 정상 동작 동안의 프로그램의 사이클 주파수에 따라 주기적으로, 기능-안전 타겟을 충족하도록 설계된 셀프-테스팅 작업을 수행하는 단계를 상정한다.
다양한 실시예가 기능 안전에 적용될 수 있다. 특히, 다양한 실시예는 산업용 로보트 및 산업용 제어기의 분야에서의 전자 시스템, 및 운전자 보조 및 부분 또는 완전한 자동 운전의 자동차 적용예를 위한 전자 시스템의 기술 분야에서의 적용예를 발견한다.
IEC 61508, ISO 13849, 및 ISO 26262와 같은 기능-안전 표준은 집적된 전자 시스템에서 잠재적으로 위험한 고장의 검출에 대한 요구사항을 포함한다. 예를 들어, 표준 ISO 26262에서, 이들 요구사항들 중 하나는 "probabilistlc metric for HW random failures (PMHF)"으로 정의되고, 이는 주어진 고장 모델(F)에 대하여, 제1 근사화는 기본 고장 확률(base failure probability, λ), 고장 모델상의 이러한 확률의 분포(ΛF), 안전한 고장의 비율의 일의 보수(one's complement)(1-s)와 안전하지 않은 고장의 진단 커버리지의 일의 보수(one's complement)(1-k) 사이의 곱으로 정의된다.
프로그램의 임무가 전자 장치에서 실행되는 고장을 의미하는 "안전한 고장"은 영향을 받지 않거나, 아니면 안전 방식, 즉, 임무가 알려진 상태, 소위 기능 안전에 위험이 없는 "안전 상태"로 영향을 받을 것이다.
단일-프로세서 또는 멀티프로세서 프로세싱 시스템의 프로세서들은 이러한 집적된 전자 시스템의 가장 중요한 요소들 중이고, 이들의 복잡성은 기술 분야에서 이루어진 발전으로 증가된다.
프로세서와 관련하여, 상기 언급된 표준(가령, ISO 26262-5, Annex D, Table D.4)는, 가능한 높고, k에 의해 지정된, 안전하지 않은 고장의 커버리지의 진단값을 얻기 위한 다양하고 가능한 기술을 제시한다.
상기 기술은 종래 기술에서 다양한 실시예에서 발견된다.
가령, 특허 US 6 233 702이나 특허 US 7 472 051에서 기술된 것과 같은 아키텍처는, 프로세서의 완전한 형태 또는 리던던시가 감소된 형태를 실행하기 위하여, 기능 안전을 보장하기 위한 프로세서의 하드웨어의 수정을 필수적으로 요구한다.
특허 US 5513319에서 기술된 것과 같은 아키텍처는 사전설정 시간 간격에서 프로세서에 의해 주기적으로 독립된 요소(와치독)가 쿼리된다는 것을 상정한다. 그러나, 보장할 수 있는 기능 안전은 프로세서의 고장의 작은 퍼센티지 - 기본적으로 프로그램 흐름에서의 실질적인 차이를 야기하는 것만 이러한 방법으로 검출될 수 있다는 한계가 있다.
본 명세서에 기술된 실시예는 이전에 개시된 종래 기술에 따른 방법의 가능성을 개선하는 목적을 가지는데, 특히, 모던 멀티프로세서의 것과 같은 복잡한 아키텍처상의 높은 진단 커버리지를 달성할 수 있게 하고, 마찬가지로, 싱글 프로세서에 대한 커버리지 타겟을 제한하고 하드웨어의 수정에 대한 요구를 제한하거나 제거한다.
다양한 실시예는 뒤이은 청구항에서 나오는 특징을 가진 방법 덕분에, 상기 목적을 달성한다. 다양한 실시예들이 적어도 하나의 컴퓨터의 메모리 내에 로딩될 수 있는 컴퓨터 프로그램 제품을 말할 수 있는 것처럼(가령, 네트워크 내의 단자), 다양한 실시예는 아키텍처를 말할 수 있고, 프로그램이 적어도 하나의 컴퓨터에서 실행될 때, 방법의 단계를 수행하도록 설계된 소프트웨어 코드의 일부를 포함할 수 있다. 본 명세서에서 사용되는 바와 같이, 상기 컴퓨터 프로그램 제품은 본 발명에 따른 방법의 실행을 협력하기 위해, 컴퓨터 시스템을 제어하기 위한 명령어를 포함하는 컴퓨터-판독가능한 수단과 등가인 것으로 이해된다. "적어도 하나의 컴퓨터"는 모듈러 및/또는 분산된 형태로 실행될 본 발명의 가능성을 강조하는 것으로 이해된다. 청구항은 본 발명과 관련하여 본 명세서에 제공된 기술적인 가르침의 중요한 부분을 형성한다.
다양한 실시예는 셀프-테스팅 작업을 포함하는 방법을 상정할 수 있는데, 셀프-테스팅 작업은,
진단-셀프-테스팅 작업(즉, 프로세서에 대한 테스트를 수행하고, 그 결과를 설계 단계 동안에 사전 계산된 값과 비교함)과,
아키텍처에 대해 측정된 시스템 값(순수하게 예를 들어 전압 및 온도)의 셀프-테스팅의 작업 및 그 결과와 예상된 기준 범위와의 비교와,
상기 서브-프로그램의 부분적인 결과들 간의 비교의 작업을 포함하고,
상기 셀프-테스팅 작업은,
셀프-테스팅 작업에 관한 각각의 셀프-테스트 데이터를 생성하는 단계 및 상기 셀프-테스트 데이터에 대한 확인 작업을 수행하는 단계와,
메세지 프로토콜을 사용하여 연속적으로 셀프-테스트 데이터를 추가적인 독립 제어 모듈과 교환하는 단계와,
상기 추가적인 독립 제어 모듈 내의 상기 확인 작업을 적어도 일부 수행하는 단계와,
상기 진단-셀프-테스트 작업에 의해 결정된 커버리지 값, 아키텍처에 대해 측정된 시스템 값의 셀프-테스팅의 작업의 주어진 커버리지 값, 및 상기 언급된 서브프로그램의 부분적인 결과들 사이의 비교의 작업에 의해 결정된 커버리지 값의 함수인 고장-확률 타겟을 준수하기 위해, 프로그램을 복수의 병렬 서브-프로그램으로 분해하는 상기 작업을 수행하는 단계를 포함한다.
기술된 프로그램을 분해하고, 상기 언급된 세 개의 분리된 작업(진단 테스트를 통한 셀프-테스팅, 시스템 값의 모니터링을 통한 셀프-테스팅, 및 중간 결과의 비교를 통한 셀프 테스팅)으로 셀프-테스팅 작업을 나누는 절차는, 종래의 분야를 넘는 개선부분이다. 특히, 세 개로 나누는 것은 최적화 방식(즉, 개시된 방법이 적용되는 시스템의 특정한 유형에 대해, 집중적인 설계 노력이나 달성하기 위해 하드웨어의 수정을 요하는 작업에 대한 타겟을 낮추고, 이러한 맥락으로 더욱 수행하기 용이하게 이들 작업을 발전시킴)으로 타겟을 분산시킬 수 있다.
순수하게 예시로서, 첨부 도면을 참조하여, 다양한 실시예가 기술될 것이다.
도 1은 본 명세서에 기술된 방법을 실행하기 위해 구성된 전자 시스템의 멀티프로세서 아키텍처의 실시예의 블록도를 나타낸다.
도 2는 본 명세서에 기술된 방법에 의해 사용된 안전 기능을 나타내는 블록도를 나타낸다.
도 3은 본 명세서에 기술된 방법을 실행하기 위해 구성된 멀티프로세서 아키텍처의 소프트웨어 레벨의 도면을 나타낸다.
도 4 및 도 5는 멀티프로세서 아키텍처에 의해 실행되는 통신 프로토콜에 의해 사용된 패킷을 나타내는 도면을 나타낸다.
도 6은 본 명세서에 기술된 방법을 실행하기 위해 멀티프로세서 아키텍처와 협력하는 제어 모듈의 블록도를 나타낸다.
도 7은 본 명세서에 기술된 멀티프로세서 아키텍처에 의한 테스트 프로그램 실행의 개략도이다.
도 8은 본 명세서에 기술된 방법의 분해 작업의 논리 실행의 예시를 나타내는 논리도를 나타낸다.
도 9는 이중-코어 대칭 멀티프로세서가 있는 SoC(시스템-온-칩) 상의 시스템의 실시예의 원리도를 나타낸다.
도 1은 본 명세서에 기술된 방법을 실행하기 위해 구성된 전자 시스템의 멀티프로세서 아키텍처의 실시예의 블록도를 나타낸다.
도 2는 본 명세서에 기술된 방법에 의해 사용된 안전 기능을 나타내는 블록도를 나타낸다.
도 3은 본 명세서에 기술된 방법을 실행하기 위해 구성된 멀티프로세서 아키텍처의 소프트웨어 레벨의 도면을 나타낸다.
도 4 및 도 5는 멀티프로세서 아키텍처에 의해 실행되는 통신 프로토콜에 의해 사용된 패킷을 나타내는 도면을 나타낸다.
도 6은 본 명세서에 기술된 방법을 실행하기 위해 멀티프로세서 아키텍처와 협력하는 제어 모듈의 블록도를 나타낸다.
도 7은 본 명세서에 기술된 멀티프로세서 아키텍처에 의한 테스트 프로그램 실행의 개략도이다.
도 8은 본 명세서에 기술된 방법의 분해 작업의 논리 실행의 예시를 나타내는 논리도를 나타낸다.
도 9는 이중-코어 대칭 멀티프로세서가 있는 SoC(시스템-온-칩) 상의 시스템의 실시예의 원리도를 나타낸다.
뒤이은 설명에서, 예시에 의해 제공되는 실시예를 최대로 이해하기 위해, 많은 구체적인 세부사항이 제공된다. 실시예는 구체적인 세부사항을 사용하거나 이를 사용하지 않고, 또는 그 밖의 다른 방법, 구성, 재료등을 사용하여 실행될 수 있다. 다른 환경에서, 잘 알려진 구조, 재료 또는 작업들은 자세하게 도시되거나 기술되지 않아서, 실시예의 다양한 양태는 이해하기 어렵지 않을 것이다. "일 실시예" 또는 "하나의 실시예"는 특정한 구조, 특성 또는 적어도 하나의 실시예에 포함된 실시예와 관련하여 기술된 특징을 의미한다. 그러므로, 본 설명의 다양한 점에서 발생할 수 있는 "일 실시예에서" 또는 "하나의 실시예에서"와 같은 말은 반드시 하나 및 동일한 실시예를 말하는 것은 아니다. 더구나, 특정한 구조, 특성 또는 특징은 하나 이상의 실시예에서 임의의 종래의 방식으로 결합될 수 있다.
독자의 편의를 위해 본 명세서에 다양한 참조가 제공되고, 실시예의 범위나 의미를 정의하지 않는다.
도 1은 기능 안전이 제공된 애플리케이션을 위해 집적 전자 시스템의 기능 안전이 제공된 프로세싱 아키텍처를 나타낸다. 가령, 언급한 바와 같이, 전자 시스템은 운전자에 보조의 자동 애플리케이션 및 부분적이거나 완전한 자동 운전을 위한 전자 시스템일 수 있고, 이는 기능 안전에서 작동하는 프로세싱 아키텍처를 포함한다.
상기 언급된 아키텍처는 멀티프로세서 프로세싱 시스템을 포함하는데, 다시 말해, 멀티프로세서 프로세싱 시스템상에서 실행되고, 참조 번호(10)에 의해 전체로서 표시되고, 복수의 프로세싱 및 제어 채널의 제공에 기초한 기능-안전 시스템이다. "채널"에 의해, 안전의 맥락에서, 그리고 IEC 61508의 특정부분에서는 기능성-안전 기능 또는 "안전 기능 SF"(IEC 61508-4, 3.3.6 참조)을 독립적으로 실행하는 요소 또는 한 세트의 요소를 의미한다. 이는 가령, 마이크로프로세서, 가상 머신 또는 그 밖의 다른 요소일 수 있다.
멀티프로세서 프로세싱 시스템(10)은 복수의 프로세서 모듈(11)을 포함한다. 상기 언급된 프로세서 모듈(11)은 소위 "코어"라는 독립적인 CPU를 주로 포함한다. 이하에서 더욱 상세히 기술되는 바와 같이, 멀티-코어 시스템 내(또는 싱글-코어 시스템 내에서도)의 프로세서 모듈은, 본 명세서에서, 상기 언급된 코어들 중 하나의 소프트웨어를 가상화함에 의해 생성된 가상 머신을 말할 수 있다. 도 1 및 3을 참조하면, "프로세서 모듈"(11)에 의해, 멀티프로세서(10)의 복수의 코어(C1,...,Cm)들 중 하나를 의미하거나, 상기 언급된 하나 이상의 코어(C1,...,Cm)들에서 실행되는 복수의 가상 머신(V1,...,Vn)들 중 하나를 의미할 수 있다.
멀티프로세서(10)는, 동질적인 아키텍처(다양한 프로세싱 코더(11)가 동일한 것) 및 이질적인 아키텍처(프로세싱 코어(11)가 서로 다른 것)는 물론 메시지의 교환에 의해 통신하는 분산형 메모리 아키텍처의 공유된-메모리 아키텍처를 포함하는 다양한 방식으로 아키텍처하게 구축될 수 있다. 물리적 실행의 관점에서, 코어(11)가 하나의 그리고 동일한 접적 회로에 제공되는 더 높은 집적도로부터, 멀티프로세서(10)의 코어(11)가 서로 다른 집적 회로나 서로 다르고 분리된 모듈에 제공되는 더 적은 집적도까지 이르는 많은 해결책이 가능하다.
이와 관련하여, 상기 언급된 멀티프로세서(10)들 중 하나를 포함하여, 결국 복수의 프로세서 모듈(11)을 포함하는 아키텍처가 도 1의 예시에 표현된다. 상기 언급된 멀티프로세서(10)상에서의 실행은 애플리케이션 기능, 즉, 자동차의 운행을 제어하거나 보조하기 위한 프로그램(P), 및 시스템의 완전성의 셀프-테스팅 및 멀티프로세서(10) 자체 또는 이들의 서브 구성들의 고체 상태 메모리 및 논리부에서 일어날 수 있는 가능한 고장이나 불량의 검출을 목표로 하는 안전 기능(SF)이다.
멀티프로세서(10)에 추가하여, 도 1에 도시된 기능 안전이 제공된 아키텍처는 제어 모듈(15)에 의해 표현된 독립적인 프로세싱 유닛을 상정하는데, 이는 상기 언급된 셀프-테스팅 작업을 실행하는 멀티프로세서(10) 내의 다양한 운영 프로그램으로부터 나온 모니터링과 제어 메세지(MC)의 흐름의 콘텐츠를 분석, 프로세싱 및 비교하도록 구성되며, 이는 멀티프로세서(10)의 프로세서(11)에 의해 수행되어서, 이들의 기능 안전의 모니터링 및 이들을 구성하거나 좀 더 일반적으로, 프로그램(P)이 분리되어서 각각의 프로세서 모듈(11)상에서 실행될 수 있도록 하는 서브-프로그램(P1,...,Pn)의 실행의 흐름에서, 논리부에서 발생할 수 있는 임의의 가능한 불량의 검출할 수 있다.
멀티프로세서(10) 및 제어 모듈(15)은 통신 수단(12)을 통해 통신하는데, 이는 멀티프로세서(10)의 다양한 프로세서 모듈(11)이 상기 언급된 모니터링과 제어 메세지(MC)를 프로세싱 및 비교 유닛으로부터, 또는 프로세싱 및 비교 유닛으로 송수신할 수 있어서, 결국 멀티프로세서(10)로부터, 또는 멀티프로세서(10)로 가령, 경고와 같은 메세지를 각각 송수신 할 수 있다.
언급된 바와 같이, 단지 하나의 멀티프로세서(10)가 도 1에서 간단히 표현되지만, 실제로, 아키텍처는 각각의 통신 수단(12)을 통해 모니터링 및 제어 메세지를 제어 모듈(15)과 교환하는 복수의 프로세서 또는 멀티프로세서를 상정할 수 있다.
본 명세서에 기술된 방법은, 도 2에서 SF로 표시된 안전 기능이 실행되는 멀티프로세서(10)의 모든 가능한 컨피규레이션에 적용된다. "안전 기능"은 상기 언급된 표준에서 참조되는 기능 안전의 요구사항의 준수가 요구되는 시스템의 프레임 워크에서 작동하는 기능을 의미한다. 도 2는 사실, 소프트웨어 프로세스 내에서 수행되는 안전 기능(SF) 및 멀티프로세서(10)상에서 실행되는 프로그램(P)을 나타낸다. 도 2에서, 전체적으로 사이클적으로 실행되는 프로세스인 프로그램(P)은 사이클 시간(Tcyc)으로 시간(t)에서 사이클릭 실행을 나타내는 고리(annulus)에 의해 표현된다. 안전 기능(SF)은 상기 언급된 프로그램(P)의 시간 세그먼트, 즉, 고리의 섹터를 차지하고, 일반적으로 안전 기능(SF)은 프로그램(P)의 일부이며, 사이클 시간(Tcyc)보다 짧은 안전-실행 시간(Ts) 동안에 실행된다. 안전 기능(SF)의 실행 동안에, 즉, 안전-실행 시간(Ts) 동안에, 모니터링 및 제어 메세지(MC)가, 특히 독립적인 제어 모듈(15)과 어떻게 교환되는지가 도 2에서 n 표시된다.
도 1에서 나타난 바와 같이, 본 명세서에 기술된 방법은, 프로그램(P)를 도 1의 아키텍쳐내의 코어(11)상에서 각각 실행되는 병렬 서브-프로그램(P1,...,Pn)으로 분해되는 것을 상정한다. 하나의 멀티프로세서가 도 1에 도시되더라도, 프로세싱 시스템이 단지 하나의 프로세서인 경우에도, 가령 가상 기술을 통해 서브-프로그램(P1,...,Pn)은 나누어질 수 있다. 멀티프로세서를 위한 운영 시스템의 분야에서 사용가능한 기술적 해결책은 가상화 기술인데, 이는 하드웨어의 정확한 가상화를 할 수 있게하고, 애플리케이션 프로그램은 싱글 코어상에서 실행되고, 이하에 나타난 바와 같이, 멀티프로세서(10)의 코어(11)에서도 실행된다(가령, 소위 "하이퍼바이저" 또는 "가상-머신 모니터"를 참조함). 가상화 기술의 사용의 패러다임에 따르면, 프로그램(P)은, 안전 기능(SF)을 포함하는 스타팅 프로그램(P)과 기능적으로 등가인 병렬 실행을 얻기 위하여, 가상 머신(V1,...,Vn)상에서 각각 실행될 수 있는 복수의 병렬 프로세서(P1,...,Pn)로 분해된다.
다양한 가상 머신이나 코어로 할당될 서브-프로그램(P1,...,Pn)으로 분해하는 것은 특정 프로그램(P)의 기능에 관한 기능성 타입의 고려에 의해 알려진 시스템에서 안내된다. 이하에 좀 더 완전히 기술되는 바와 같이, 본 명세서에 기술된 방법은, 대신에, 산업 및 자동차 애플리케이션에서 상정되는 기능성-안전 표준에 의해 요구되는 랜덤 타입의 고장의 존재에 대한 커버리지의 주어진 제한의 준수의 함수로서, 서브-프로세스(P1,...,Pn)로 분해하는 상기 언급된 작업을 수행한다. 그러므로, 상기 언급된 제한은 표준에 의해 요구되는 커버리지(k)의 레벨의 함수 f(k)로서 일반적으로 언급된다.
도 1의 기능-안전 아키텍처는 안전 기능(SF)의 프레임워크에서, 도 3에 좀 더 자세히 기술되는 셀프-테스트 작업을 수행하도록 구성되는데, 이는 일반적으로,
도 3에서 표시된 바와 같이, 프로세서(11)와 관련된, 셀프-테스트 라이브러리(STL, 50)를 실행함에 의해, 진단 테스트를 수행하는 진단-셀프-테스트 작업(Astl)와,
셀프-테스트 라이브러리(STL, 50)를 실행함에 의해 수행되는 것이 바람직한, 아키텍처에 대해 측정된 시스템 값의 셀프-테스팅의 작업(Asys)과,
도 3과 관련하여 도시된 바와 같이, 애플리케이션-비교 소프트웨어 모듈(60)을 통해, 서브프로그램(P1,...,Pn)들 사이의 비교의 작업(Achk)을 포함한다.
이와 관련하여, 도 2에서는, 셀프-테스트 작업의 세 가지 타입(Astl, Achk, Asys)을 각각 실행하고, 코어(11)의 각각과 관련된, 셀프-테스트 라이브러리(STL, 50)과 애플리케이션-비교 소프트웨어 모듈(60)이 도시된다. 언급된 바와 같이, STL(50)은 진단-셀프-테스트 작업(Astl)을 수행하고, 아키텍처에 대해 측정된 시스템 값의 셀프-테스팅의 작업(Asys)을 수행하기 위한 소프트웨어를 포함하나, 변형 실시예에서, 시스템 값의 셀프-테스팅의 작업(Asys)은 스펙트라 및 전용 소프트웨어 모듈을 통해 실행될 수 있다.
상기 언급된 세 개의 타입의 셀프-테스트 작업(Astl, Asys, Achk)은 멀티프로세서(10)상에서 셀프-테스트 데이터, 즉, 진단-셀프-테스트 데이터(Dstl, 시스템-셀프-테스트 데이터(Dsys), 애플리케이션-셀프-테스트 데이터(Dchk)를 각각 생성한다. 언급되었고, 도 3에서 좀 더 자세히 기술되는 바와 같이, 진단-셀프-테스트 라이브러리(50) 및 애플리케이션-비교 소프트웨어 모듈(60)에 의해 나타난 소프트웨어 모듈 내의 상기 언급된 셀프-테스트 데이터(Dstl, Dsys, Dchk)의 생성을 더욱 상정되고, 모니터링 및 제어 메세지(MC) 내에서 이들을 전송하여서, 제어 모듈(15) 내에 포함된 논리 모듈(51, 61)로 도 2에 표현된 모듈을 통해 상기 언급된 셀프-테스트 데이터(Dstl, Dsys, Dchk)에 대해 확인 작업이 수행된다.
멀티프로세서(10)와 제어 모듈(15)을 구성하는 프로세서 모듈들 사이에 모니터링 및 제어 메세지(MC)의 교환에 사용되는 통신 시스템(12)이 도 1에 다시 도시된다. 상기 언급된 통신 채널은 포인트-투-포인트 타입의 세그먼트로 구성되거나, 예시에서 기술된 바와 같이, 통신 버스와 같은 공유된 물리적 매체로의 복수의 접근이 있는 계층적 방법으로 생성될 수 있다. 교환될 모니터링 및 제어 메세지(MC)의 콘텐츠의 결정은 이하에 상세히 기술되는 다른 작업에 더하여, 셀프-테스트 작업(Astl, Asys, Achk)의 실행을 통해 얻어지고, 모니터링 및 제어 메세지(MC) 자체의 전송은 정규 시간 인터발 동안에 얻어지는데, 멀티프로세서(10)를 구성하는 프로세서 모듈(11)은 프로그램(P)의 분해로부터 얻은 각각의 애플리케이션 프로그램(P1,...,Pn)의 실행을 중단하고, 이들은 대부분의 시간에 대해 전용되며, 특별 코드, 즉, 셀프-테스트 라이브러리(50)의 프로그램의 코드의 실행에 할당된다. 특히, 모니터링 및 제어 메세지(MC)가 이하에 더욱 자세히 기술되는 바와 같이, 멀티프로세서(10)에서 실행되는 소프트웨어의 서로 다른 계층적 레벨에서 생성된다. 시스템 멀티프로세서(10)와 제어 모듈(15) 사이의 모니터링 및 제어 메세지(MC)의 교환은 이하에 좀 더 자세히 기술될, 통신 프로토콜(PL)에 따라 얻어진다.
본 명세서에 기술된 방법의 주요 양태에 따르면, 일반적인 경우에 대해 g로 지정되고, 본 명세서에 제시된 두 개의 프로세서 예시에서 g12로 지정되는, 고장-확률 타겟을 준수하기 위하여, 복수의 병렬 서브-프로그램(P1,...,Pn)으로 프로그램(P)의 분해하는 작업을 수행하는 것이 상정되는데, 상기 고장-확률 타겟은, 상기 언급된 진단-셀프-테스트 작업(Astl)에 의해 결정된 각각의 커버리지 값(kstl), 멀티프로세서 아키텍처(10)에 대해 측정된 값의 셀프-테스팅의 작업(Asys)의 각각의 주어진 커버리지 값(ksys), 그리고 서브-프로그램들(P1,...,Pn) 사이의 비교의 작업(Achk)에 의해 결정된 커버리지 값(kchk)의 각각의 서브-프로그램(P1,...,Pn)에 대한 함수이다.
도 1의 안전 아키텍처의 각각의 구성의 진단 커버리지(DC) 또는 안전-고정 비율(SFF - 이와 관련하여 안전 표준 IEC61508)에 관한, 특히, 진단-셀프-테스트 작업(Astl)의 소프트웨어 프로그램의 일부에 대한(셀프-테스트 라이브러리, 50) 커버리지는 시스템의 이하의 특징의 함수로 결정된다.
- 시스템, 특히 2-채널 시스템에 대해 달성될 안전-완전성 레벨(SIL); 이는 시스템에 의해 준수되어야 하는 커버리지(k)의 요구사항을 야기함;
- 작업의 기본 사이클 주파수(fcyc) 및 진단-테스트 인터발(DTI); 이와 관련하여, 도 2에 도시된 바와 같이, 전체로서 프로그램(P)은 사이클 시간(Tcyc), 기본 사이클(fcyc)의 주파수로 사이클적으로 실행됨; 안전 기능(SF)은 사이클 시간(Tcyc)보다 짧은 안전 실행 시간(Ts) 동안에 상기 언급된 프로그램(P)의 시간적 세그먼트를 차지함;
- 단위 시간 동안에 진단-셀프-테스트 작업(Astl)의 결과에 대해 제어 모듈(15)에 의해, 특히 고려된 아키텍처에서, 확인의 수와 타입이 이루어짐; 안전-실행 시간(Ts)은 안전 표준에 의해 요구되는 커버리지의 제한의 함수 f(k)이다.
더구나, 이하에 자세히 기술되는 바와 같이, 데이터 교환의 작업은 메세지의 시퀀스로 실행되는데, 여기서, 데이터(q)와 주파수(f)의 양은 준수되어야 할 상기 언급된 고장-확률 타겟(g)의 추가 함수에 따라 선택된다.
추가적인 단계로서, 상기 언급된 고장-확률 타겟(g)의 함수로 결정된 커버리지-타겟 값(k)은, 가령, 본 출원의 이름으로 출원된 특허 번호 EP 1 980 964 Al에 기술된 것에 따라, 시뮬레이션 단계에서 고장 인젝션(failure injection)을 통해 효과적으로 달성되었는지를 확인하는 것을 상정할 수 있다.
준수되어야 할 고장-확률 타겟(g)의 함수에 따라, 복수의 병렬 서브-프로그램(P1,...,Pn)으로 프로그램(P)를 분해하는 작업의 상세한 설명이 이제 뒷따른다.
하드웨어 수정 없이, 프로그램 메모리의 크기와 실행 시간으로 이해되는 프로그램(P)에 최소 영향을 가진 가장 낮은 고장 확률(g)을 얻기 위하여, 기술된 본 방법은 둘 이상의 독립적인 프로그램(P1, P2,...,Pn)으로 프로그램(P)을 사실상 분해하는 것을 제공한다.
기술된 기능 안전이 제공된 아키텍처는 고장-확률 타겟(g)의 함수로 설정되어서, 달성될 커버리지의 값(k)의 함수로 설정된다. 특정한 예시는 실질적으로 2-채널 시스템을 말하는데, 이는 프로그램(P)이, 두 개의 코어(C1 및 C2) 또는 결과의 두 채널을 공급하는 가상 머신(V1 및 V2)을 작동시키는 두 개의 프로세스(P1 및 P2)로 분해되는 것이다.
그러므로, 두 개의 프로그램(P1, P2)으로 분해하는 작업의 경우를 예시로 들고, 간단하게, 두 개의 독립적인 프로그램(P1, P2)이 1과 동일한 동일한 기본 고장 확률(λ)을 가지고, 1과 동일한 고장 모델(Λ)의 동일한 분포를 가진 두 개의 동일한 프로세서 모듈(11)상에서 실행된다고 가정하면, 프로세서(1 및 2)로 구성된 멀티프로세서 시스템의 고장 확률은 다음과 같이 기술된다.
여기서, k1, k2는, 두 개의 프로그램(P1 및 P2)을 각각 실행하는 가령, C1 및 C2와 같은 두 개의 프로세서에 대한 고장 커버리지이고, s1, s2는 두 개의 프로그램(P1 및 P2)을 실행하는 두 개의 프로세서(C1, C2)의 각각 안전한 고장의 비율이며, β는 두 개의 프로세서들(C1, C2) 사이의 공통-이유 고장을 야기할 수 있는 고장의 비율이며, k12는 두 프로세서들(C1, C2) 사이의 공통-이유 고장을 야기할 수 있는 고장 커버리지이고, s12는 두 프로세스들(C1, C2)에 공통된 안전한 고장의 비율이며, texp는 첫번째 고장의 노출 시간이다. 시간(texp)은 시스템의 사용의 타입에 의해, 고장 모델의 타입에 의해 정의되고, 제한은 시스템의 서비스 시간과 동일할 수 있다. 서브-프로그램(Pi)에 대해, 기본 고장 확률(λ)이 1과 동일하고, 고장 모델의 분포(Λ)가 1과 동일하다고 가정하면, 대응되는 프로세서와 고장 커버리지의 안전한 고장의 비율인 한 쌍의 값(si, ki)은 고장 확률을 실질적으로 식별한다.
두 개의 독립적인 서브프로그램(P1 및 P2)의 고장-확률 타겟(g12)에 대해 이전에 정의된 수학식 (1)은 고장-트리-분석(FTA) 연산(가령, ISO 26262-10, Annex B 참조)을 통해 결정되는데, 즉, 이는 AND 타입의 논리 함수에 의해 연결된 두 개의 서브프로그램(P1 및 P2)의 고장 확률을 결정하는 것에 해당하고(도 8 참조), 각각의 프로그램이 실행되는 각각의 하드웨어는 매우 낮은 고장 확률에 연결된다. 그러므로, 수학식 (1)은 결과적인 평균 고장 확률, 즉, 고장-확률 타겟을 대략 각각의 확률과 노출 시간(t)의 곱으로 표현된다.
가령, 세 개의 프로그램과 같이, 임의의 수의 독립적인 프로그램에 대해 수학식 (1)을 확장시키는 것은 용이하게 가능한데, 세 개의 입력 AND 게이트는 두 개의 입력 AND 게이트로 분해될 수 있고, 결과적 공식은 두 개의 프로그램(P1 및 P2)에 대해 상기 기술된 공식을 사용하여 구성될 수 있다.
다시 말해, 준수 되어야할 고장-확률 타겟(g)에 대한, 서브-프로그램(P1,...,Pn)의 고장 확률의 값은, 서브-프로그램(P1,...,Pn)을 서브-프로그램과 같은 많은 입력을 가진 AND 게이트의 입력으로 고려함에 의해, 상기 언급된 AND 게이트를 두 개의 입력 AND 게이트로 분해함에 의해, 그리고 각각의 두 개의 입력 AND 게이트의 출력에서의 고장 확률과 실행 시간의 곱의 함수로 확률 타겟을 계산함에 의해 계산된다.
다시 한 번 FTA 연산을 적용하여, 고장 확률(g12)은 오류 CCF를 고려하는 공통-이유 항 β·(1-s12)·(1-k12)와의 합산(가령, OR 타입의 논리 함수)에 의해 완성된다.
그러므로, 상기 언급된 고장-확률 타겟(g)의 계산은, 서브-프로그램(P1,...,Pn)을, 서브-프로그램과 같은 많은 입력을 가진 AND 논리 함수(AG)의 입력으로 고려하는 단계와, 상기 언급된 서브프로그램(P1,...,Pn)들 사이에 구성될 수 있는 쌍들을 입력으로 가진 두 개의 입력 AND 논리 함수로 상기 AND 논리 함수(AG)를 분해하는 단계와, 고장 확률, 즉 두 개의 입력 AND 게이트로부터의 출력에서의 쌍(ki, si)이 공통-이유-고장 비율(β)과 노출 시간(texp)의 성분에 의한 곱을 계산하는 단계와, 공통-이유 고장에 OR 함수를 적용함에 의해 얻어진 값에 추가된 이전 작업의 결과의 함수로서 상기 언급된 확률 타겟을 계산하는 단계, 즉, 서브-프로그램(P1,...,Pn)의 모든 쌍들(ij)의 쌍(kij, sij)은 공통-이유-고장 비율(β)에 의해 곱해진다.
도 8은 논의된 것에 따른 논리 함수를 논리 회로를 통해 실행함 의해 확률 타겟(g)의 계산의 작업을 나타낸다. n-입력 AND 게이트는 AG로 표시되고, 이는 상기 언급된 두 개의 입력 게이트로 분해될 수 있으며, 이는 각각의 서브-프로그램(Pi)을 위한 입력으로서 커버리지(ki) 및 안전한 고장의 비율(si)(수학식 (1)의 예시에서, k1, s1 및 k2, s2)을 수신한다. 출력은 l-β에 의해 곱해지고, 이는 공통-이유 고장을 야기할 수 있는 고장의 비율의 보수이다. AND 게이트(FTA 연산에서 상정할 수 있음)는 노출 시간에 의해 곱해져서 연산될 수 있다. 두 개의 서브-프로그램(Pi 및 Pj)에 대해 공통-이유-고장 커버리지(kij) 및 공통-이유 안전한 고장의 비율(sij)(예시에서는, k12, s12)을 입력에서 수신하는 멀티-입력 OR 게이트는 OG로 표시된다. 출력은 β에 의해 곱해지고, 이는 공통-이유 고장을 유발할 수 있는 고장의 비율이다. 그리고 나서, 게이트(OGT)는 게이트 AG와 OG의 출력을 합산하여서, 수학식 (1)의 고장 타겟(g12)의 일반적인 형태(g)를 생산한다.
방법을 구별시키는 특징들 중 하나는 고장 커버리지(k1, k2)이고, k12는 세 개의 기여의 조합으로 정의된다.
kstl, 즉, 진단-셀프-테스트 작업(Astl)의 실행에 의해 보장된 커버리지 비율(셀프-테스트 라이브러리(50)를 통한 수행, 특히, 모듈(15)에 존재하는 모듈(51)과 협업);
kchk, 즉, 프로그램(P1 및 P2)의 중간 결과들 사이의 비교를 수행함, 즉, 셀프-테스트 작업(Achk)을 수행함에 의해 보장된 커버리지 비율(비교 구성(60)에서 수행함, 특히 제어 모듈(15)에 존재하는 모듈(61)과 협업);
ksys, 즉, 프로그램(P1 및 P2)이 실행되는 프로세서(C1 및 C2)의 온도와 전압 및 기준 값이나 한계 값, 즉, 범위(Ratt)와 같은 멀티프로세서 아키텍처(10)의 시스템 파라미터들 사이에, 멀티프로세서(10) 및 모듈(15)의 사이의 협업을 수행하는, 셀프-테스트 작업(Asys)로부터 얻어진 시스템-셀프-테스트 데이터(Dsys)의 비교에 의해 보장된 커버리지 비율이다.
특히, 프로그램(P1 및 P2)의 커버리지(k1, k2) 및 공통-이유 커버리지(k12)에 대하여, 우리는,
k1 = kstl1 ∪ kchk ∪ ksys, k2 = kstl2 ∪ kchk ∪ ksys, k12 = kstl12 ∪ kchk ∪ ksys (2)
결합 연산자 ∪는 개개의 고장 커버리지의 함수로서 집합 이론의 규칙에 따라 두 커버리지가 결합되는 것을 나타낸다.
프로세서(C1)상에서 실행되는 프로그램으로 들어오는 라이브러리(50)와 관련된 셀프-테스트 라이브러리(kstl1)의, 프로세서(C2)상에서 실행되는 프로그램으로 들어오는 라이브러리(50)와 관련된 셀프-테스트 라이브러리(kstl2)의, 공통-이유 고장 - 그래서 이들의 구조와 이들의 프로그램 - 을 커버하기 위해 프로세서(C1) 및/또는 프로세서(C2)에서 실행되는 프로그램으로 들어오는 라이브러리(50)와 관련된 셀프-테스트 라이브러리(kstl12)의 커버리지 타겟은 파라미터 β, t 및 s1, s2, 및 s12의 함수로서 고장-확률 타겟(g12)을 달성하기 위해 결정된다.
실제로는, 그러므로, 본 방법은, 안전 아키텍처에서, kstl, kchk, ksys이 관련된 세 개의 서로 다른 타입의 셀프-테스트 작업(Astl, Achk, Asys) 및 각각의 타입의 셀프-테스트 작업(Astl 또는 Achk 또는 Asys)에 대해 프로그램(P)이 기능 안전으로 분해되는 주어진 복수의 서브-프로그램(P1,...,Pn)을 제공하는 것을 상정하며, 셀프-테스트 작업(Astl 또는 Achk 또는 Asys)의 파라미터를 정의함에 의해 상기 언급된 셀프-테스트 작업(Astl 또는 Achk 또는 Asys)을 각각의 서브-프로그램(P1,..,Pn) 및/또는 프로세서(11)에 할당하여, 커버리지(kstl 또는 kchk 또는 ksys)의 결과 값은 수학식 (1)에서 표현된 것에 따른 셀프-테스트 작업의 다른 두 타입으로부터 파생된 것과 함께 준수할 것이고, 고장-확률 타겟(g)이 시스템에 대해 정의된다.
본 명세서에 기술된 방법의 추가적인 양태에 따르면,
두 개의 프로세서(C1 및 C2)에 대한 각각의 셀프-테스트 커버리지(kstl, kchk, 및 ksys)로 정의된 셀프-테스트 라이브러리(50)를 기초로한 진단-셀프-테스트 작업(Astl),
비교 커버리지(kchk)를 사용하여 프로그램(P1 및 P2)의 중간 결과들(애플리케이션-셀프-테스트 데이터 Dchk)간의 비교 작업(Achk) 및,
프로세서(P1, P2)이 실행되는 프로세서(C1, C2)의 시스템-셀프-테스트 데이터(Dsys)와 시스템 커버리지(ksys)를 식별하는 예상된 범위(Ratt)간의 비교 작업(Asys)들은, 멀티프로세서(10) 내에서 실행되지 않고, 멀티프로세서(10)의 추가적인 독립 원소를 통해 시퀀스로 완성되며, 제어 모듈을 통해 완성된다. 이는 멀티프로세서(10)와 제어 모듈(15) 간의 데이터 교환(메세지(MC))을 통해 얻어진다.
비교 커버리지(kchk)는 전체 양에 대한 각각의 비교에서 교환되는 데이터(q)의 양의 함수로서, 그리고, 타겟 시간(T)에 대한 데이터-교환 주기(t)(이는 데이터-교환 주파수(f)의 역수임)로서, 결정되고, 전형적으로 이는 상기에 언급된 기능-안전 표준의 고장-허용오차 시간 인터발(FTTI) 또는 프로세스 안전 시간(PST)에 대응되는 것으로 계산된다.
kchk = min (1, q·T/t) (3)
데이터-교환 주기(t)는 안전-실행 시간(Ts)에 대응된다.
수삭식 (1) 및 (2)로부터, 우리는 커버리지(k1, k2, k12)가 비교 커버리지(kchk)의 값에 의존하고, 고장-확률 타겟은 k1, k2, k12의 함수라는 점을 발견하였다. 결과적으로, 우리는 주어진 고장-확률 타겟(g), 교환된 데이터(q)의 양의 값 및 데이터의 교환의 주파수(f)가 크기 조절되어서, 비교 커버리지(kchk)는, 수학식 (1) 및 (2)에 들어온 값을 가정할 것이고, 고장-확률 타겟(g)이 준수될 것이라는 점도 발견하였다.
상기 기술된 바와 같은 타겟 값과 관련된 kstl1, kstl2, kstl12, kchk 및 ksys의 일치성은 시뮬레이션 동안에 고장 인젝션을 통해 테스트된다.
그러므로, 본 명세서에 기술된 방법은, 주어진 프로그램(P)을 실행하는 기능 안전이 제공된 전자 시스템과 관련하여, 서브-프로그램으로 프로그램(P)을 분해시키는 작업 및 세 개의 작업으로 셀프-테스트 작업을 분리시키는 것을 수행하며, 다시 말해, 수학식 (1)의 관계식에 따라, 진단 테스트를 통한 셀프-테스팅(Astl), 시스템 값의 모니터링을 통한 셀프-테스팅(Asys) 및 중간 결과들의 비교를 통한 셀프-테스팅(Achk)을 수행하며, 이는 결국 세 개의 셀프-테스트 작업(Astl, Achk, Asys)의 커버리지(kstl, kchk, ksys)의 함수로 정의된 서브-프로그램의 커버리지에 고장 타겟을 연결시키고, 커버리지 타겟의 정확한 식별이 최적의 방법으로 타겟의 분포를 가능하게 하는 것과 같이, 세 개의 셀프-테스트 작업의 각각에 할당된다.
도 1과 관련된 아키텍처는, 모니터링 및 제어 메세지(MC)의 교환을 위한 통신 프로토콜(PL)을 통해, 외부 모듈, 제어 모듈(15)과 협업하는 상기 기술된 셀프-테스트 작업을 수행한다. 여기서, 상기 언급된 모듈이 프로세서가 제공되는 집적 회로에 포함될 수 있음에도 불구하고, "외부 모듈"은 프로세서(11)의 외부의 모듈을 의미한다. 기술된 방법은, 알려진 시스템에서 실행되는 셀프-테스트 작업과 달리, 하나 및 동일한 싱글-프로세서나 멀티프로세서 프로세싱 시스템에서 셀프-테스트 데이터를 생성하고 확인하는 셀프-테스트 작업을 상정하고, 싱글-프로세서나 멀티프로세서 프로세싱 시스템 내에서 셀프-테스트 데이터를 생성하지만, 분리된 독립적인 요소, 제어 모듈(15)을 통해 확인을 수행함에 의해 셀프-테스트 작업을 완성시키는 것을 상정한다.
상기 및 그 밖의 양태를 좀 더 자세히 기술하기 위하여, 도 3은, 통신 프로토콜(PL)의 대표인 ISO/OSI 타입의 물리적 및 소프트웨어 층의 계층을 통해, 기술된 해결책의 실시예의 추상 모델을 개략적으로 나타낸다.
상기 언급된 통신 프로토콜(PL)은 애플리케이션 층(도 3의 L4)에서의 메세지가 프로그램(P)에 의해 실행된 프로토콜(PL)에서 인캡슐레이트되고, 더 낮은 레벨(도 3의 층(L2))에서, STL(50)에 관한 메세지가 추가되는 계층적 레벨에서 실행된다. 도 3에 도시된 바와 같이, 제어 모듈(15)은, 상기 언급된 계층적 레벨과 관련하여 반사 방식으로, 통신 프로토콜(PL)을 실행한다. 상기 언급된 프로토콜(PL)은, 도 6을 참조하여 좀 더 자세히 표현되는 바와 같이, 분석과 비교를 위해 사전 배치된 프로세싱 유닛을 향하는 제어 모듈(15) 내에서의 라우팅 및 다양한 프로세서 모듈(11)의 다양한 식별자(ID)를 위한 다양한 패킷의 인캡슐레이션을 가능하게 하는 계층적 프레임 내에 모니터링 및 제어 메세지(MC)를 배치한다. 잇따르는 것은, 특정 시스템 층에 어드레스하는 논리 채널은 VC로 표시되고, 프로세싱 요소를 말하는 물리적 채널을 어드레스하는 식별자는 ID라고 표시되며, C1,...Cm은 물리적 코어라고 표시되고, V1,...,Vm은 가상 머신으로 표시된다. 특히, 프로토콜(PL)에서, 포켓 타입의 메세지(MC)는 숫자 값에 대한 이하의 필드를 포함한다.
메세지들이 속하는 논리 채널(VC)의 함수로서 메세지(MC)의 계층화에 전속적인 필드와,
메세지(MC)의 포켓의 기수 및 시간적 시퀀스에 대한 필드와,
제어 모듈(15)에 대한 커맨드의 필드와,
제어 모듈(15)이 셀프-테스트 작업을 완성해야하는 것과 관련된 데이터를 포함하는 페이로드 필드이다.
게다가, 제어 모듈(15)은 에러 검출 및/또는 교정을 할 수 있는 알고리즘에 의해, 메세지(MC)의 콘텐츠에 대한 완전성의 확인을 수행하도록 구성된다. 바람직하게는, 알고리즘 CRC32은 에러-검출 알고리즘(도 7에서 모듈(112a)에서 실행됨)으로 사용된다.
도 3의 물리적 및 소프트웨어 계층적 레벨의 도면에 좀 더 상세히 들어가면, L1으로 표시된 것은 멀티프로세서(10)에 대응되는 하드웨어 실행을 위한 물리적 층이고, 이는 복수의 코어(C1,...,Cm) 및 입출력 모듈(10)을 포함한다. 이는 전형적으로, 하나 이상의 집적 회로에 의해 실행된다.
L2로 표시된 것은 수퍼바이저 층(L2)인데, 이는 가상 머신(17)의 관리를 위한 모듈에 의해 표현되고, "하이퍼바이저"라고 흔히 말하는 소프트웨어 구성인데, 이는 레벨 L3에서 대응되는 운영 시스템을 가진 가상 머신(V1,...,Vn)의 수(n)를 사용가능하게 하는 물리적 층(L1)의 기존 하드웨어의 가상화의 함수를 가져서, 이들은 독립적인 유닛, 소위 "게스트 가상 머신"으로 사용될 수 있다. 가상 머신(17)의 관리를 위한 모듈은 다양한 가상 머신(V1,...,Vn) 및 프로그램(P)이 가령, 수동적으로 분해되는 대응 서브프로그램(P1,...,Pn)은 프로그램(P)에 필요한 주어진 특징을 가질 것이다. 상기 언급된 분해 작업은, 대안적으로 보호되지 않거나, 애플리케이션의 운영 시스템보다는 애플리케이션 자체의 수정에 의해 보호될 수 있다. 기능 안전의 애플리케이션의 필드에서, 상기 언급된 특징은 전형적으로, 실시간 실행 및 다양한 프로세스의 실행 사이의 비간섭성을 보장하는 것을 포함한다. 언급된 바와 같이, 본 명세서에 기술된 방법은, 대신에, 상기 언급된 특징이 고장-확률 타겟(g)만을 고려하거나, 고장-확률 타겟도 고려할 것이다. 일반적으로, 가상 머신의 수(n)는 프로그램(P)이 분해되는 서브프로세스(P1,..,Pn)의 수와 동일한 것으로 표시되고, 바람직한 예시에서 n = 2이다. 가상 머신의 수가 하나 및 동일한 코어상에서 얻어질 수 있기 때문에, 코어의 수(m)는 n 이하인 것이 바람직하다.
본 명세서에 기술된 가상 머신(17)의 관리를 위한 모듈은 STL(50)에 대응되는 소프트웨어 구성을 포함하는데, 이는 이미 언급된 바와 같이, 코어(C1,...,Cm)들의 각각의 기능적 완결성에 대한 테스트는 물론 소프트웨어 구성의 밑에 있는 하드웨어를 구성하는 주변부, 즉, 물리적 층(L1)을 도입하여서, 상기 언급된 밑에 있는 하드웨어에서 발생한 무작위 타입의 가능한 고장이 사전 결정된 커버리지(k)의 퍼센티지로 검출된다는 것을 보장한다. 동질의 멀티프로세서의 경우에 오직 하나의 라이브러리(50)가 있을 수 있다. 소프트웨어 구성, 여기서는 STL(50)의 구성(또는 비이질적인 멀티프로세서의 경우에 STL(50)의 구성)은 가상 머신(17)의 관리를 위한 모듈 내에 집적된 양상은 본 섹터의 당업자에게 알려져 있다. STL(50)의 구성은 가상 머신(17)의 관리를 위한 모듈 내에 용이하게 집적되 수 있어서, 알려진 가상화 시스템에 제공된 이러한 타입의 모듈, 가령 하이퍼바이저는 전형적으로, 추가 구성의 통합을 할 수 있는 사용자 인터페이스를 제시한다. 결과적으로, 도 3에 도시된 바와 같이, STL(50)의 구성을 추가적인 구성으로 통합할 수 있다.
애플리케이션 층(L4)은 프로그램(P)이 분해되고, 가상 머신(V1,...,Vn)상에서 실행되는 서브-프로그램(P1,...,Pn)의 레벨에 대응된다. 이러한 애플리케이션 층(L4)과 관련되는 것은 특히, "애플리케이션 안전 층"(ASL)으로 불리는 소프트웨어 모듈 또는 구성인데, 특히, 애플리케이션 비교(60)를 위한 각각의 프로세스(P1,...,Pn)를 위한 것이고, 이는 일반적으로, 채널들의 중간 결과들 사이의 비교를 통해 애플리케이션-셀프-테스트 데이터(Dchk)를 생성하는 셀프-테스트 작업을 수행한다. 좀 더 구체적으로, 언급된 바와 같이, 본 명세서에 기술된 방법에서, 애플리케이션-비교 소프트웨어 모듈 또는 구성(60), 특히, 각각의 프로세스(P1,...,Pn)에 대한 것은 제어 모듈(15)에서 확인되고 비교되는 애플리케이션-셀프-테스트 데이터(Dchk)를 얻는다.
도 3에서, 제어 모듈(15)은 도 6에 자세히 도시된 하드웨어 구성으로 나타난다. 그러나, 이는 결과적인 구성의 비용/성능의 차이를 가지고, 소프트웨어로서 등가 방식으로 실행될 수 있다. 순수히 예시에 의해, 제어 모듈(15)은 추가적인 프로세서에 의해 실행되는 프로그램으로 실행될 수 있다.
셀프-테스트 작업(Astl, Asys, Achk)을 완성하기 위해 제어 모듈(15)과 교환된 모니터링 및 제어 메세지(MC)는 두 개의 구별되는 타입으로 구분된다.
마이크로프로세서(10)상에서 실행되는 프로그램(P)의 특징과 독립된 데이터를 포함하는 메세지; 이들은, 가령 아키텍처에 대해 측정된 시스템 값의 셀프-테스팅의 작업(Asys)에 의해 생성된 시스템-셀프-테스트 데이터(Dsys)이고, 이는 멀티프로세서(10)의 코어(C1,...,Cm)의 전압 및/또는 온도의 측정치는 물론 셀프-테스트 라이브러리(50)의 특정한 진단-셀프-테스트 절차들 중 하나에 따라 이루어진 계산의 중간 결과에 대한 진단-셀프-테스트 데이터(Dstl)를 포함한다.
프로그램(P)의 프로세싱의 중간 결과에 대한 데이터를 포함하여서, 프로그램(P) 또는 애플리케이션 자체에 의존하는 메세지; 이들은, 애플리케이션-비교 소프트웨어 모듈(60)을 통해 서브-프로그램(P1,...,Pn)들 간의 비교의 작업(Achk)에 의해 생성된 애플리케이션-셀프-테스트 데이터(Dchk)가 있다.
제어 모듈(15)은, 메세지(MC)의 협업 및 교환을 통해, 멀티프로세서(10) 내에서 시작된 셀프-테스트 작업(Astl, Asys, Achk)을 완성하고, 이는 대응되는 셀프-테스트 논리 구성(51) 및 제어 모듈(15) 내에 포함된 애플리케이션-비교 논리 구성(61)이 있는 대응되는 셀프-테스트 데이터(Dstl 및 Dchk)를 포함한다. 도 6에 도시된 바와 같이, 상기 언급된 분리는 논리 타입이나, 구성(51 및 61)은 하나 및 동일한 세트의 하드웨어 모듈을 통해 실행될 수 있다. 이는 가령, 다음과 같이 발생한다.
- 제어 모듈(15)은, 논리 모듈(51) 내에서, 셀프-테스트 라이브러리(50)의 특정한 셀프-테스트 절차들 중 하나에 따른 멀티프로세서(10)의 코어(C1,...,Cm)상에서 이루어진 계산의 중간 결과와 관련된 진단-셀프-테스트 데이터(Dstl)와 상기 언급된 제어 모듈(15) 내에 저장된 사전 계산되고 예상된 값(Dstla)의 세트의 비교를 만듬에 의해 진단-셀프-테스트 작업(Astl)을 완성하고, 가능한 공통-이유 고장(CCF)을 검출한다. 상기 언급된 진단-셀프-테스트 데이터(Dstl)와 한 세트의 사전결정되고 예상된 값(Dstla) 사이의 가능한 차이는 멀티프로세서(10)의 코어(C1,...,Cm)의 논리나 상태에서의 고장(영구적이거나 일시적인)의 영향을 나타낸다.
- 이와 동시에, 가상 머신이나 코어든 프로세서 모듈(11)의 쌍에 의해 독립적으로 생성된 애플리케이션-셀프-테스트 데이터(Dchk)의 논리 모듈(61) 내에서의 연속적인 비교를 만듬에 의해, 제어 모듈(15)은 사실상, 두 개의 대응되는 안전 채널 사이의 크로스 체크의 기능을 수행한다.
- 제어 모듈(15)은, 시스템-셀프-테스트 데이터(Dsys)가 제어 모듈(15) 내에 저장된 예상된 범위(Ratt) 이내에 있는지를 확인함에 의해, 아키텍처에 대해 측정된 시스템 값의 셀프-테스팅의 작업(Asys)도 확인하는 것을 완료한다.
제어 모듈(15)은 가령, 비교를 위한 다음 기준에 따라 모니터링 및 제어 메세지(MC)에 대한 상기 언급된 확인을 한다.
그것은 메세지(MC)의 도착 순서 및 메세지가 비료를 위해 고려된 사이클에 속하는지를 고려하고, 따라서, 바람직하게는, 고려될 수 있는 대안적인 실시예에서 조차도, 개개의 메세지(MC)의 도착의 절대 시간이 고려되지 않는다.
제어 모듈(15)은 다양한 소스, 즉, 다양한 프로세서 요소(11)로부터 메세지(MC)의 개입(interpositon)을 하도록 구성되고, 이러한 경우에, 이전에 나타낸 바와 같이, 두 개의 프로세서 모듈(11)의 각각에 대한 시퀀스 내에서 둘은 순서를 적절하게 준수한다.
사이클 시간(Tcyc)에 의해 정의된 각각의 사이클에 대한 확인을 완료함에 의해 사이클 기반으로 제어 모듈(15)은 자체의 확인을 적용한다.
이제, 셀프-테스트 라이브러리(50) 및 상보적 논리 모듈(51)의 좀 더 상세한 설명이 이어진다.
STL(50)은 다음의 이중 기능을 가진다.
멀티프로세서 프로세싱 시스템(10)의 진단-셀프-테스트 작업(Astl)에 의해 표현된 셀프-테스트 작업을 실행하는 것; 이러한 진단-셀프-테스트 작업(Astl)은 전형적으로, 멀티프로세서(10)에 의해 테스트 자체의 순간에 프로세스된 계산의 결과, 진단-셀프-테스트 데이터(Dstl)와 사전계산되고 저장된 정확한 결과를 비교함에 의해 실행되어서, 멀티프로세서(10)가 그것에 할당된 프로그램 시퀀스를 정확하게 계산하고 실행하는지를 확인한다; 이러한 계산 결과(Dstl)는 전형적으로, 연산 및 논리 타입의 작업 및 어드레싱 작업의 시퀀스로부터 얻어져서, 마이크로프로세서(11)의 다양한 회로 부분에서, 가장 완벽하고, 비싸며 철저한 방식과 관련된다; 언급된 바와 같이, 본 명세서에 기술된 방법 및 아키텍처에서, 예상된 값(Dstla)과의 비교의 작업은 외부 프로세싱 모듈, 제어 모듈(15)과 협업하여 실행된다(즉, 도 3의 계층도에서 모듈(50 및 51)의 협업);
작업 및/또는 각각의 마이크로프로세서의 작업의 조건에 관한 시스템-셀프-테스트 데이터(Dsys)를 측정하는 것, 즉, 글로벌 파라미터를 측정하는 것; 바람직하게는, 마이크로프로세서의 동작 전압 및 시스템의 온도, 아니면 마이크로프로세서 내부의 온도와 같은 양이 측정된다; 이러한 기능은 마이크로프로세서의 가능한 고장의 상황 및 특히, 마이크로프로세서 내의 공통-이유 고장을 결정할 수 있는 상황을 식별하는데 특히 중요성을 가진다; 언급된 바와 같이, 상기 언급된 시스템-셀프-테스트 데이터(Dsys)는, 이들이 별도의 라이브러리 내에 제공될 수 있고, 논리 모듈(51) 내의 예상된 범위(Ratt)에 대해 확인되더라도, 바람직하게, 라이브러리(50) 내에 포함된 대응되는 프로그램을 통해 얻어진다.
특히, 그리고, 진단-셀프-테스트 데이터(Dstl)를 공급하는 진단-셀프-테스트 작업(Astl)에 관하여, 셀프-테스트 코드는 전형적으로, 한 세트의 테스트 세그먼트로 구성되고, 202로 표시되며, 도 7을 참조하여 더욱 자세히 기술된다.
상기 언급된 테스트 세그먼트는, 집적-회로 레벨에서, 특히, 개개의 코어(C1,...,Cm) 또는 개별 프로세서 상에서, 시행되는 "고장 모드 효과 및 진단 분석"(FMEDA) 타입의 분석의 타겟에 따라서, 멀티프로세서 프로세싱 시스템(10)의 경우에, 프로세서의 하나 이상의 기능 유닛을 테스팅하는데 특화된다. 상기 언급된 FMEDA는 본 출원자의 이름으로 출원된 EP 1 980 964 A1 특허 출원에 기술된 절차에 따라 시행될 수 있다. 각각의 코어(C1,...,Cm)의 STL(50)으로 구성된 테스트 세그먼트의 전반적인 타겟은 커버리지의 레벨, 특히, 셀프-테스트 커버리지(kstl) 또는 시스템 커버리지(ksys)를 달성하는 것인데, 가령, 코어(C1,...,Cm)로 구성된 전체 논리에 대해 사전 결정된 커버리지 제한 f(k)을 만족하기 위함이다. 이는 대개 진보된 아키텍처를 가진 마이크로프로세서에 대해 극도로 어려운 문제점(깊은 파이프라인을 가짐, 수퍼-스칼라의, 멀티-이슈 타입)이 있고, 그 어려움은 셀프-진단을 겪는 마이크로프로세서의 복잡성이 증가할수록, 눈에 띄게 증가한다. 애플리케이션 섹터와 관련되 기능-안전 표준은 시스템 및 시스템의 다양한 구성의 완전성에 대한 최소의 요구사항을 정의한다.
이런 이유로, 라이브러리(50)를 구성하는 다양한 세그먼트는 전체적인 마이크로프로세서, 또는 코어상에서, 수학식 1에 적용함에 의해 이하에 기술되는 것과 같은 계산 절차를 통하여, 관련된 안전 표준에 의해 상정되는 것 이상으로 완전성의 레벨을 달성될 수 있도록 하는 것과 같이, 커버리지의 타겟 값(kstl)을 전체로서 달성하도록 구성되어야 한다.
진단-셀프-테스트 라이브러리(50)의 프로그램은 전형적으로, 테스트될 마이크로프로세서의 다양한 기능 유닛과 더 간단한 유닛의 특수화, 마이크로프로세서의 기능 유닛의 각각의 테스트 세그먼트(202)에 대한 확장성의 이류로, 모듈식 형태로 조직된다.
도 7은 이와 관계하여, 200으로 표시된, 셀프-테스트 라이브러리(50)의 셀프-진단 프로그램을 개략적으로 나타낸다. 프로그램(200) 내에 포함된 테스트 세그먼트(202)는, 실행될 테스트 세그먼트의 식별자 ID#를 표시함에 의해, 사이클 및 정규 기반으로 라이브러리(50)의 셀프-진단 프로그램을 적용하는 소프트웨어를 향하여 인터페이스를 제공하는 "테스트 인터페이스(201)"로 언급되는 소프트웨어 층에 의해, 적용된다. 테스트 세그먼트(202)는 통과/실패 스탬프를 전송함에 의해 응답한다.
테스트 세그먼트(202)의 구조는 연속적인 단계에 의해 조직화되는 모듈식 타입이고, 프리앰블(203) 및 전형적으로 하이-레벨 언어(ANSI-C)에 기재된 포스트앰블(204)을 포함하는데, 즉, 셀프-테스팅을 겪는 마이크로프로세서의 아키텍처와 무관하다. 프리앰블(202) 및 포스트앰블(204)은 더 높은 층을 향하는 인터페이스의 기능에, 글로벌 변수의 관리에, 및 테스트의 결과가 소프트웨어 모듈에 의해 처리될 때, 테스트의 결과에 영향을 줄 수 있는 어떠한 에러의 검출이 가능한 기술로 관리되어야 하는 테스트의 결과에 전용된다.
테스트 세그먼트(202)의 중심은 대개 어셈블러의 낮은-레벨 코드로 기재된 일련의 모듈(206)에 의해 표현되는데, 마이크로프로세서의 아키텍처에 특화되고, "ASM 코어 코드"로 도면에 지정된다. 이러한 모듈(206)은 셀프-테스팅을 효과적으로 수행하는 부분이어서, 이들은 마이크로프로세서의 다양한 논리 및 연산 및 순차적 유닛을 타겟화된 방식으로 자극하여서, 활성화시켜서, 마이크로프로세서 자체의 가능한 고장을 관측 가능하게 한다. 낮은-레벨 코드의 다양한 모듈(206)은 높은-레벨 언어로 기재된 루틴에 의해 관리될수 있다. 테스트 세그먼트(202)는 모듈(205 및 206)을 통해 확인의 마지막에, 실패/통과 스탬프를 생성하기 위해 스탬프 계산기(207)를 포함한다. 테스트 세그먼트(202)는, 고장에 대해 커버리지 타겟을 얻기 위한 낮은-레벨 코드의 복수의 모듈(206)을 포함하여서, 안전 분석에 의해 정의된 고장 모드의 주어진 세트를 고려한다.
이제, 프로세서(11)상의 STL(50)과 제어 모듈(15) 상의 논리 구성(51) 간의 셀프-테스트 분석, 특히 진단-셀프-테스트 작업(Astl)의 분포의 설명이 이어진다.
STL(50)의 작업은 자체를 테스트하기 위한 마이크로프로세서의 용량에 기초하는데, 구성된 다양한 논리의 기여도를 가능한 많이 요구하기 위한 코드 시퀀스를 실행함에 의해, 및 중간 결과에서 가능한 에로가 취소되지 않을 수 있기 위해 적절히 축적된, 중간 결과를 생성함에 의하며, 고장이 없다고 가정된 사전-계산된 동일한 값과 비교할 대, 스탬프는 테스트를 겪는 논리에 영향을 줄 수 있는 가능한 고장의 검출의 가장 높은 확신을 생성할 것이다. 고장을 활성화시키고 검출하는 능력은 고장을 활성화시키기 위한 STL(50)의 용량 및 중간 결과를 축적하는데 사용되는 수치적 방법에 모두 의존하여서, 중간 결과에서의 어떤 가능한 차이는 축적 프로세스 동안에 취소될 수 없다. 간결성을 이유로, 마이크로프로세서 내의 STL(50)에 의해 생성된 다양한 타입의 결과, 다시 말해, 중간 결과, 축적물 및 스탬프, 마지막 두 게는 실시예에 따라 자주 나타난다. 축적은 관리가능하지 않을 수 있는 중간 결과의 갯수를 줄이기 위해 전형적으로 필요하다. 이하의 것에서, 간단하게, 본 정의에서, 상기 참조된 세 개의 타입의 결과를 포함하는 중간 결과를 참조할 것이다.
싱글 마이크로프로세서에서의 고장의 활성화의 검출은 두 개의 구별된 메카니즘을 통해 발생할 수 있다.
a) 셀프-테스트 소프트웨어 자체에 의해 이루어진 검출, 즉, 진단-셀프-테스트 데이터(Dstl)와 사전-계산된 것, 즉, 예상된 결과(Dstla)의 비교에서의 차이를 검출함에 의해, 에러를 검출하고, 프로그램적으로 대책을 채용하며, 검출된 에러를 지적한다; 이는 고장이 프로그램 흐름의 제어를 책임지는 논리에 영향을 주지 않으나, 데이터의 연산/논리 계산의 부분에만 영향을 주는 전형적인 경우이다.
b) 고장의 발생과 함께, STL(50)의 테스트의 실행에 의해 얻어진 자극, 이는, 에러를 통지하는 외부 와치독에 의해 감독된 실행 시간(t)에 대한 시험 극단을 위반하기 위한 프로그램(P)의 실행의 시퀀스에서의 에러를 결정한다; 이는, 고장이 프로그램 흐름의 제어에 책임있는 논리에 영향을 주는 전형적이 경우이다; 와치독이 시스템의 전용 구성일 수 있거나, 크로스 체크를 수행함에 의해, 고려된 마이크로프로세서에 대한 테스트(50)의 실행의 에러 있는 기능이나 일시적 행동을 검출하는 또 다른 코어일 수 있다.
상기 언급된 맥락에서, 도 3에 표시된 STL(50)은 셀프-테스트 프로세스에 관한 데이터 또는 중간 결과(또는, 부분 결과, 중간 결과의 축적, 또는 중간 결과와 예상된 값 사이의 비교의 결과)를 포함하는 진단-셀프-테스트 데이터(Dstl)를 생성하고, 이는 진단-셀프-테스트 데이터(Dstl)(메카니즘 a) 및 프로그램 흐름의 제어(이러한 방식으로 상기 기술된 바와 같이, STL 테스트의 자극의 메카니즘 b의 맥락에서 외부 와치독의 기능을 수행함)간의 크로스 비교를 수행하는 외부 모듈, 제어 모듈(15)로 전송된다.
게다가, STL(50)은 시스템 컨피규레이션, 즉, 시스템-셀프-테스트 데이터(Dsys)를 포함하는 측정된 값을 생성한다.
STL(50)은 진단-셀프-테스트 데이터(Dstl)와 시스템-셀프-테스트 데이터(Dsys)를 포함하는 대응 메세지(MC)를 제어 모듈(15)로 생성하는데, 이는 논리 구성(51)을 통해 멀티프로세서(10)의 물리적 코어(C1,...,Cm)상에서 실행되는 STL(50)에 의해 생성된 상기 언급된 메세지를 처리한다.
논리 구성(51)에서 수행되는 이러한 프로세싱은 이하의 작업을 수행하기 위해 구성된다.
진단-셀프-테스트 데이터(Dstl)에 대한 크로스 확인을 수행함, 이는, 마이크로프로세서(C1,...,.Cm)에 의해 이루어진 비교의 결과에 대한 실행 흐름 (인트라-채널) 확인을 실행함과,
마이크로프로세서(C1,...,Cm)의 각각에 대한 라이브러리(50)의 테스트의 프로세싱으로부터 얻어진 부분 결과에 대한 (인터-채널) 크로스 확인을 함에 의한다.
비교의 결과가, 즉, 부분적 결과가 사전 결정된 시간 윈도우(최대 및 최소 레이턴시에 의해 특징됨) 내에서, 사전 설정된 순서에 따라 전송 및 수신되는 지를 확인함에 의해 적절한 일시적 실행의 확인을 수행한다; 이는 이전에 표시된 바와 같이, 외부 구성의 도움을 요구하는 STL(50)의 테스트의 실행의 흐름에서의 에러의 검출의 메카니즘으로서, 흐름의 실행에서 가능한 에러의 검출을 가능하게 한다.
측정된 값(Dsys)이 실제로 측정된 양(전형적으로, 동작 전압 및 온도)에 대한 가변성의 사전 정의된 범위 내에 속하는지를 확인함을 수행한다; 또한, 테스트(50)의 라이브러리에 의해 얻고, 실행 동안에 시스템의 상태를 대표하는 시스템 컨피규레이션의 일치성의 확인을 수행하 수 있다.
기술된 확인들 중 하나의 위반은, 제어 모듈(15)에 의해, 도 6에 표시된 바와 같이, 알람(AL)의 생성 및 안전의 애플리케이션에 필요한 대책의 실행을 의미한다. 상기 언급된 알람-생성 기능은 알람을 모듈(16)에 전송하는데, 이는 시스템(10) 내의 시스템 리소스를 제어하는 모듈이고, 가령, 리셋을 실행하거나 공급 전압을 제거하거나, 어떤 경우에 시스템의 안전 상태의 도달을 강제한다.
셀프-테스트 라이브러리(50)와 관련된 작업의 흐름의 예시는 다음과 같다.
영구적 반복{
멀티프로세서(10), 수퍼바이저 층 또는 물리적 코어의 각각에 직접적으로 실행되는 셀프-진단 라이브러리의 모든 프로그램으로부터 데이터를 수신함
코어, 가상 채널 및 타입에 따라 데이터를 나누고 조직함
라이브러리(50)의 각각의 프로그램에 대응되는 중간 결과를 정렬함; 대응되는 중간 결과와 최대 레이턴시 사이의 최대 스큐를 확인함
라이브러리(50)의 중간 결과와 검출 에러 사이의 크로스 확인을 수행함
서로 다른 코어로부터 측정치를 수집함; 대응되는 중간 결과와 최대 레이턴시 사이의 최대 스큐를 확인함
범위에 대한 확인을 수행하고 위반을 식별함
}
모듈(116)을 참조한 도 6에 나타난 바와 같이, 제어 모듈(15)은 값, 순서, 시간(레이턴시, 스큐 및 타임스탬프를 사용한 절대 도착 시간)의 복수의 확인 및 범위(비교기를 사용한 모듈(114))의 확인을 실행한다. 특히, 셀프-테스트 데이터(Dstl, Dchk, Dsys)에 대한 이하의 확인이 이루어진다.
중간 결과들이 동일하거나 교정되었는지를 검증하는 값에 대한 확인;
메세지의 순서가 메세지의 카운터에 따라 교정되는지를 검증하는 순서에 대한 확인;
실행의 현재 사이클 내의 예상된 최소 및 최대 시간에 대한 메세지의 도착 시간과 또 다른 코어의 대응 메세지와의 비교하는 도착 시간에 대한 확인;
측정된 값이 사전 정의된 범위(Ratt)에 속하는지를 검증하는 범위에 대한 확인이다.
확인의 각각의 위반은 제어 모듈(15)에 의해 관리되고, 이는 에러를 통지한 다음 모듈(16)로 알람을 전송한다.
이제, 애플리케이션-비교 소프트웨어 구성(60)과 제어 모듈(15)에 존재하는 상보적 논리 모듈(61)의 좀 더 상세한 설명이 이어진다.
이런 이유로, 도 3에 표시된 바와 같이, 가상 머신(V1,...,Vn) 상에서 실행되는 서브-프로그램(P1,...,Pn)에, ASL, 즉 서브-프로그램(P1,...Pn)의 프로세싱의 부분적 결과의 검출의 절차를 실행하는 애플리케이션-비교 소프트웨어 구성(60)이 존재한다. 이러한 애플리케이션-비교 소프트웨어 구성(60)은 상기 언급된 부분 결과의 축적을 수행하고, 안전 기능(SF)이 있는 프로그램에 의해 축적된(가령, CRC-사이클 리던던트 체크의 축적) 결과에 대한 차이를 검출한다. 상기 언급된 애플리케이션-비교 소프트웨어 구성(60)은, 본 명세서에 기술된 방법의 주제를 형성하는, 프로토콜(PL)에 따라 애플리케이션 데이터(Dchk)에서의 차이 및 축적된 결과의 조직화를 수행한다.
이미 언급된 바와 같이, 애플리케이션-비교 소프트웨어 구성(60)은 제어 모듈(15) 내에 대응되는 애플리케이션-비교 논리 구성(61)을 가진다. 애플리케이션-셀프-테스트 데이터(Dchk)상에서, 제어 모듈(15)은, 특히 애플리케이션-셀프-테스트 데이터(Dchk)의 값에 기초한 정보의 일치성, 이들의 순서 및 애플리케이션-비교 소프트웨어 구성(60)에 의해 생성된 애플리케이션-셀프-테스트 데이터(Dchk)의 패킷에서 나타나는 클록 시간을 확인함에 의해 크로스 비교를 수행한다.
이제 더욱 상세히 기술되는 것은, 통신 프로토콜(PL)이다. 셀프-테스트 작업(Astl, Asys, Achk)의 조직은, 메세지를 생성했던 소프트웨어 층(L2, L4) 및 메세지 자체의 목적에 따라 프로토콜(PL) 내에서 서로 다른 타입의 세트의 메세지의 정의를 상정한다.
이하의 논리 채널, 또는 가상 채널(VC)이 정의된다. 각각의 논리 채널(VC)은 ID0 및 ID1에 의해 설계된 많아봐야 두 개의 서로 다른 물리적 채널로부터 나온 메세지를 운반한다.
VC0: 안전 VC - 안전 기능(SF)이 있는 프로그램으로부터 애플리케이션 층(L4)에서 기원하는 안전 논리 채널(식별자 ID0 및 ID1을 가진 물리적 채널);
VC1: 실시(식별자 ID0가 있는 물리적 채널)에 따른 애플리케이션 층(L4)에서 또는 수퍼바이저 층(L2)에서 기원하는 논리 채널; 및
VC2: (품질 및 서비스) (식별자 ID0 및 ID1을 가진 물리적 채널) 시스템에 대한 보수 작업을 수행하는 실행예에 따라, 수퍼바이저 층(L2)에서 또는 가상 머신 및 운영 시스템 층(L3)에서 기원하는 Q&S - 품질-및-서비스 논리 채널이다.
두 개의 물리적 채널을 가진 바람직한 실시예에서, 우리는,
논리 채널(VC0 및 VC2)이 두 개의 물리적 채널(ID0 및 ID1)을 지원하고, 이는 이에 따라 안전 채널이라는 것과
논리 채널(VC1)이 오직 하나의 물리적 채널(ID0)을 지원한다는 것을 가진다.
논리 채널(VC)의 상기 언급된 정의는 제어 모듈(15)의 특정한 특징을 반영하여서, 메세지의 세트의 카테고리의 각각에 대해 프로그램 가능한 확인 및 알람을 구성할 수 있다.
제어 모듈(15)의 바람직한 실시예에서, 다양한 논리 채널(VC)의 전송의 순서는 가령, VC0, VC1 및 VC2로 사전결정되고 고정된다. 도 4는 제어 모듈(15)의 비교 논리에 의해 반영된 통신 프로토콜(PL)의 가능한 실시예의 예를 나타낸다. 특별히 도시된 것은 통신 채널인데, 진단-테스트 인터바(DTI) 내에서, 논리 채널(VC0, VC1, VC2 DTI)은 통신 프로토콜(PL)에 따라 전송된다.
물리적 채널(ID0, ID1)을 위한 논리 채널(VC0) - 이는 안전 기능(SF)의 데이터, 즉 애플리케이션-셀프-테스트 데이터(Dchk)를 운반하고, 제어 모듈(15)의 구성(61)이 있는 일치성이 테스트된다; 채널(ID0 및 ID1)에 속하는 동질의 메세지는 서로 비교되고, 비교는 정확한 결과, 즉, 동일하나 인코딩에서 차이와 같은 차이가 있는 데이터를 생성하여야 한다; 사실 데이터는 공통-이유 에러의 확률을 줄이기 위해 다양한 방식(가령, 채널에서 상보되는)으로 인코딩될 수 있다;
물리적 채널(ID0)에 대한 논리 채널(VC1) - 이는 수퍼바이저 층(L2)으로부터 나오는 진단-셀프-테스트 라이브러리(50)의 진단-셀프-테스트 데이터(Dstl)를 운반한다;
물리적 채널(ID0, ID1)에 대한 논리 채널(VC2) - 이는 측정된 값, 즉, 온도, 전압 등의 값과 같은 시스템-셀프-테스트 데이터(Dsys)를 운반한다.
다시 한번 도 4를 참조하면, 메세지-통신 채널(MC)상에서의 전송의 전체 시간은, 전송이 연속적인 방식으로 발생해야하고 최악의 경우에 프로그램(P)의 사이클 시간과 동일한 사이클 시간(Tcyc)을 가져야 하는 한, 시스템의 진단-테스트 인터발(DTI)을 초과하여서는 아니된다는 것에 유의해야 한다.
제어 모듈(15)에 의해 이루어진 메세지의 시퀀스(Sq)에 대한 확인은 도 5의 다이어그램에서 기술된다. 첫 행에 보이는 것은 계층적 레벨(L), 및 프로세서 모듈(C1 또는 C2) 또는 그 밖의 수버바이저 모듈(17)이 관련된 요소이다. 식별자(ID0 및 ID1)로 표시된 메세지(MC)는 다양한 세트의 메세지(Sq)(Sq1 및 Sq2) 내에 인캡슐레이트되고, 다양한 논리 채널(VC) 내에 포함된다. 이들은 제어 모듈(15)에 의해 아래 두 개의 타입의 확인 된다.
인트라-채널 확인(ITC)(도 5에 표시되지 않음), 이는 하나 및 동일한 논리 채널(VC) 및 하나 및 동일한 식별자(ID)에 속하는 메세지에 적용된다;
인터-채널 확인(INTC), 이는 서로 다른 논리 채널(VC)에 속하는 메세지(MC)에 적용되는데(가령, ID1의 제1 메세지(Sq1 0, 1)와 비교되는 ID0의 제1 메세지(Sq1, 0,0), ID1의 제2 메세지(Sq1 2, 1)와 비교되는 ID0의 제2 메세지(Sq1, 2,0)); 이들 인터-채널 확인(INTC)은 각각의 채널로부터 나오는 메세지의 일관성과 관계된 인트라-채널 확인(ITC)보다 더 높은 레벨에 있고, 추가로 이루어진다.
도 5는 전송되는 일시적 시퀀스가 아니라 이들의 기원에 따른 메세지를 나타낸다.
기술된 통신 프로토콜(PL) 및 메세지 세트상에서 수행되는 확인의 구조는, 도 6을 참조하여 도시된 바와 같이, 실행되는 마이크로-아키텍처까지 아래로 제어 모듈(15)의 기능 아키텍처에서의 직접적인 일치성을 찾는다.
언급된 바와 같이, 실행예는 제어 모듈(15)에 대한 소프트웨어 타입과, 가령 ASIC 내의 FPGA 장치와 같은 전용 논리가 있는 하드웨어 타입 모두에 가능하다.
도 6은 제어 모듈(15) 내에서 집적된 주요 기능을 나타낸다.
도 6의 기술의 레벨은 전용 하드웨어 유닛을 반영하나, FPGA 장치나 그 밖의 ASIC에서의 전용 하드웨어 보다는, 멀티프로세서(10)로부터 분리된 프로세서 모듈에서의 내장형 소프트웨어에서와 같은 실시예를 제공하는데 사용되는 기능 유닛을 동일하게 반영할 수 있다. 순수하게 예시적으로, 도 9는 특히, 두 개의 코어 대칭 멀티프로세서가 있는 시스템-온-칩(SoC)(1000) 상에서 제안된 아키텍처의 가능한 실행예를 나타낸 것으로서, 두 프로세서(11)는 "하드 매크로"(1010) 내에 포함되는 반면, 제어 모듈(15)은 SoC(1000)의 프로그램가능한 부분(1020)(FPGA) 내에서 실행되는 리던던트 프로세서상에서 실행되는 소프트웨어 모듈이다.
도 6으로 돌아오면, 112로 표시된 것은 통신 버스(12)를 향한 버스 인터페이스이고, 이는 컨피규레이션-및-상태 인터페이스 모듈(112c), 및 다양한 채널(ID0 및 ID1)의 메세지에 대한 버퍼(112b)를 포함한다. 이는 패킷 도착에 대한 CRC 타입의 확인을 위한 모듈(112a)을 더 포함한다.
113으로 표시된 것은 타이밍, 특히 실행 시간이 확인을 위해 설정된 극단 이내에 유지되는 것을 확인하기 위한 타이밍 모듈이다.
114로 표시된 것은 인터-채널 확인(INTC 작업)을 위한 모듈인데, 이는 채널의 데이터와 하드웨어 고장 인젝터(114b)의 인터-채널 비교를 위한 비교기(114a)를 포함한다.
116으로 표시된 것은 인트라-채널 확인(ITC 작업)을 위한 모듈인데, 이는 도착 시간, 순서 및 데이터 도착의 값을 확인하기 위한 모듈(116a, 116b, 116c)을 포함한다.
데이터는 상기 언급된 모듈(114 및 116)에 메세지-디스패처 모듈(115)에 의해 공급되는데, 이는 직접-메모리-액세스(DMA) 모듈(116a) 및 메세지-컨트롤러 모듈(116b)을 포함하는 것이 바람직하다.
111에 의해 표시된 것은 에러 제어기인데, 이는 프로그램가능한 이벤트를 통해, 라우터는 알람을 모듈(16)로 전송한다. 모듈(114 및 116)에서 사전계산된 결과 또는 예상된 범위의 값에 대하여, 또는 물리적 채널들(ID0 및 ID1) 사이의 비교로부터 검출된 유사한 조건으로부터 파생된 데이터와 알람과 관련된 정보와 신호는, (논리, 전기적 및 물리적 관점에서) 기준 안전 표준(가령, IEC61508 "Safety design recommendations" 참조)에 의해 요구되는 바와 같이 분리되여 유지된다. 도 6을 다시 참조하면, 알람은 점선으로 표시된다. 알람 소스는 이하의 비교에서 이상(anomalies)의 검출과 관련하여 표시된다.
인터-채널 확인(INTC)(모듈 114) - 이러한 타입의 비교는 가령, 멀티프로세서의 서로 다른 코어에 의해 계산된 동일하게 예상된 값과 같은 값의 비교 및 사전계산된 예상 값의 비교를 포함한다; 이들은 인터-채널 알람(Alintc)을 생성한다;
인트라-채널 확인(ITC)(모듈 116) - 이러한 타입의 비교는 사전계산된 예상 값, 즉 사전정의된 기준 범위와의 비교(가령, 동작 온도나 전압의)에 대한 확인)을 포함한다; 이들은 인트라-채널 알람(Alitc)을 생성한다;
가령, 실행 시간이 확인을 위해 설정된 극단 이내에 유지되는지에 대해 타이밍 (모듈 113)에 대한 확인; 이들은 타이밍 알람(Alt)을 생성한다;
구조에서의 이상 및 형식적 관점으로부터의 메세지의 구성, 고려된 예시에서, 인터페이스(112)로 입력에서 메세지의 문자상에서 CRC 모듈(112a)에 의해 이루어진 CRC 타입의 확인의 고장, 이러한 확인은 알람(ALc)을 생성한다.
마지막으로, 제어 모듈(15)은 고장-인젝션 모듈(117)을 포함한다.
도 6의 설명으로부터 이해될 수 있는 바와 같이, 논리 모듈(51 및 61)은 별도로 실행되지 않고, 이들 논리 모듈의 각각에 필요한 기능은 기본적으로 모듈(114, 116 및 113)에 의해 수행된다.
이로 인해, 상기 설명으로부터, 본 발명의 이점이 명백하게 나타난다.
바람직하게는, 기술된 방법 및 아키텍처는, 심지어 싱글 집적 회로상의 멀티프로세서에 높게 집적되어도, 멀티-채널 또는 싱글-채널 시스템을 위한 기능 안전의 주어진 요구사항을 만족할 수 있게 한다.
프로그램의 분해 및 셀프-테스트 작업을 세 개의 분리 작업, 즉, 진단 테스트를 통한 셀프-테스팅, 시스템 값의 모니터링을 통한 셀프-테스팅 및 중간 결과의 비교를 통한 진단으로 분리하는 절차는 물론, 대응되는 수학식 (1)에 의해, 커버리지 타겟의 정확한 식별이 세 개의 셀프-테스트 작업의 각각에 할당되고, 마찬가지로, 최적의 방식으로 타겟의 분포를 가능하게 하며, 기술된 방법이 적용되는 시스템의 특정 타입에 대해, 맥락이 수행하기 더욱 용이한 작업에 대해 타겟을 올리는 것 대신에, 달성하는데 주요 설계 노력을 요하는 작업에 대한 타겟을 낮춘다.
게다가, 기술된 해결책은 요소, 기본적으로 제어 모듈에 의해 표현된, 즉, 주어진 주기나 주파수로 기술된 세 개의 서로 다른 셀프-테스트 작업을 수행하기 위해 사전설정된 시간 인터발에서 프로세서에 의해 주기적으로 쿼리되는 독립적인 전자-타이머 모듈의 도입을 통해 공통-이유 고장(CCF)의 문제를 완화시킨다.
특히, 상기는 셀프-테스트 작업을 수행함에 의해 얻어진다.
- 사전-정의된 시간 윈도우 내의 사전-정의된 이벤트의 발생 및 사전-정의된 시퀀스를 준수를 확인과, 상기 언급된 진단-셀프-테스트 작업에 대응되는 프로세서에 의해 계산된 임의의 경우에서나, 결정된 수치적 값을 확인함에 의해 시간적 타입과 값 및 시퀀스 타입의 함수를 확인;
- 시스템 값의 셀프-테스팅의 상기 언급된 작업에 대응되는 사전-계산된 정확한 값에 대하여, 멀티프로세서에 의해 계산되거나, 아니면 프로세서나 일반적으로 멀티프로세서에서 사용가능한 센서를 통해 측정된 값의 비교에 의해, 프로세서 내의 CCF의 발생의 검출; 및
- 프로그램의 중간 결과들의 셀프-테스트의 상기 언급된 작업에 대응되는, 크로스확인에 기초하여, 프로세서의 완전성을 결정하기 위한 프로토콜의 실행이다.
이에 관하여, 멀티프로세서의 고집적 및 동질의 회로 실시예가 어떻게 가장 높은 성능과 가장 낮은 시스템의 비용이지만, 이와 동시에, CCF의 문제가 방지 및/또는 검출하는 것이 더욱 중요하고 어려울수록, 더 많은 아키텍처가 동질이고 고집적이라는 점이 강조된다. CCF의 존재는 왜 이러한 타입의 아키텍처이고 실행되는 해결책이 자동차나 산업 분야의 안전 표준에 처한 애플리케이션의 세상에 널리 사용되지 않는지의 주요 이유이고, 이는 결국 달성될 수 있는 경제적 이익의 손실을 초래한다.
게다가, 기술된 해결책은 상기 언급된 셀프-테스트 작업을 실행하는 전용 소프트웨어 프로그램과 가상 머신(가령, 하이퍼바이저)의 제어 소프트웨어의 조합을 가능하게 하고, 이들의 결합 사용에 의해, 충족되어야 할 산업 및 자동차 애플리케이션에서 요구되는 기능 안전의 완전성의 레벨을 달성하는데 필요한 요구사항을 가능하게 한다.
게다가, 기술된 방법 및 아키텍처는, 다음의 논리 및 시간적 모니터링, 특히 코어들 사이의 크로스 확인을 지원하는 멀티코어 시스템에 최적화된다.
1oo1 보팅(voting)을 가진 아키텍처와 1oo2 보팅을 가진 아키텍처를 위한 진단의 실행;
멀티코어의 하드웨어에 관한 정보(상태, 온도, 공급 상태 등)의 모니터링;
셀프-모니터링;
SIL-2 및 SIL-3 시스템에 집적될 수 있는 스펙 IEC 61508 2nd Ed.에 부응하는 시스템;
소프트웨어와 사용될 표준 인터페이스;
구성가능한 반응; 및
선택된 (FPGA or ASIC) 실행 기술에 대한 최적화 확률이다.
물론, 본 발명의 원리에 대한 편견 없이, 세부사항 및 실시예는, 보호 범위에서 벗어남 없이, 순수히 예시에 의해 본 명세서에 기술된 것에 대해, 심지어 상당하게 가변될 수 있고, 이러한 보호 범위는 첨부된 청구항에 의해 정의된다.
예시로 고려된 안전 아키텍처에서, 제어 모듈(15)은, 프로그램에 의해 사용되기 전에, 또는 보팅 기술에 따라 프로그램으로 공급되는 안전 출력을 평가하는 액추에이터에 의해, 채널의 출력을 연속으로 비교하기 위한 멀티채널 아키텍처에서 흔히 사용되는 보터 모듈과 관련될 수 있다. OR 게이트는 제어 모듈(15)의 출력 및 보터의 출력을 수신할 수 있고, 이들 출력들 간의 가능한 차이를 검출할 수 있다. 차이점의 검출은 실행될 프로그램에 대해 정의된 안전 상태로 시스템이 도달하거나 유지하도록 하는 고장의 검출의 조건을 결정한다.
용어 "라이브러리"는 진단-셀프-테스트 프로그램의 소프트웨어 모듈을 정의하기 위해 본 설명에서 사용되었으나, 시스템 데이터의 셀프-테스트를 위한 모듈(이는, 언급된 대로, 진단-셀프-테스트 라이브러리 내에 포함될 수 있음) 및 서브-프로그램의 중간 결과들 사이의 비교를 위한 셀프-테스트 모듈에도 적용될 수 있다.
셀프-테스트 프로그램을 포함하는 상기 언급된 라이브러리나 소프트웨어 모듈은, 가령, 카드에 사용가능한 플래시 메모리에 저장되거나, 프로세싱 시스템을 포함하고 프로세싱 모듈의 RAM에 로딩되어 집적된다.
본 명세서에 기술된 방법이 프로세싱 시스템, 특히 멀티프로세서 시스템 및 제어 모듈을 말하더라도, 자체적으로 서브-프로그램으로의 분해 작업은 독립 제어 모듈을 사용하지 않고, 프로세싱 시스템으로 바로 적용한다. 다시 말해, 본 개시물의 주제를 형성하는 것은, 기능 안전이 제공된 애플리케이션을 위한 전자 시스템 내의 프로그램을 실행하기 위한 방법이고, 이는 싱글-프로세서나 멀티프로세서 타입의 프로세싱 시스템을 포함하고, 상기 방법은, 안전 기능을 포함하는 프로그램을 상기 시스템을 통해, 복수의 병렬 서브-프로그램으로 분해의 작업을 수행하는 단계와, 각각의 병렬 서브-프로그램의 실행을 시스템, 특히 상기 언급된 멀티프로세서 아키텍처의 프로세서나 상기 프로세서들 중 하나와 관련된 가상 머신의 각각의 프로세싱 모듈로 할당하는 단계와, 시스템에서, 시스템의 정상 동작 동안에 프로그램 사이클 주파수에 따라 주기적으로, 상기 언급된 안전 기능의 프레이워크에서, 상기 언급된 서브-프로그램의 각각 및 이들이 실행되는 대응 프로세싱 모듈과 관련된 상기 언급된 셀프-테스트 작업을 수행하는 단계를 포함하되, 상기 셀프-테스트 작업은, 진단 셀프-테스트를 수행하는 진단-셀프-테스트 작업, 측정된 시스템 값의 셀프-테스트의 작업, 서브프로그램의 중간 결과들 간의 비교의 셀프-테스트 작업을 포함하고, 이들 셀프-테스트 작업은 셀프-테스트 작업에 대응되는 각각의 셀프-테스트 데이터를 생성하는 단계 및 이들 셀프-테스트 데이터에 대한 확인의 작업을 수행하는 단계를 포함하고, 복수의 병렬 서브-프로그램으로 프로그램의 분해의 상기 언급된 작업의 실행은 각각의 서브프로그램이나 프로세싱 모듈과 관련된 상기 언급된 셀프-테스트 작업의 각각에 대한 커버리지 타겟을 얻고, 이러한 방식으로, 주어진 고장-확률 타겟을 준수한다.
Claims (12)
- 싱글-프로세서나 멀티 프로세서 프로세싱 시스템(10) 및 추가적인 독립 제어 모듈(15)을 포함하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법에 있어서, 상기 방법은,
안전 기능(SF)을 포함하고 상기 시스템(10)을 통해 실행되는 프로그램(P)을 복수의 병렬 서브-프로그램(P1,...,Pn)으로 분해시키는 작업을 수행하는 단계와,
각각의 병렬 서브-프로그램(P1,...,Pn)의 실행을 시스템의 각각의 프로세싱 모듈(11), 특히 상기 멀티프로세서 아키텍처(10)의 프로세서(C1,...,Cm) 또는 상기 프로세서들(C1,...,Cm) 중 하나와 관련된 가상 머신(V1,...,Vn)으로 할당하는 단계와,
시스템(10) 내에서, 상기 시스템(10)의 정상 동작 동안에 프로그램(P)의 사이클 주파수(fcyc)에 따라 상기 안전 기능(SF)의 프레임워크 내에서 상기 서브-프로그램(P1,...,Pn)의 각각 및 상기 서브-프로그램들이 실행되는 대응 프로세싱 모듈(11)과 관련된 셀프-테스트 작업(Astl, Asys, Achk)을 주기적으로 수행하는 단계를 포함하되,
상기 셀프-테스트 작업(Astl, Asys, Achk)은,
진단-셀프-테스트를 수행하는 진단-셀프-테스트 작업(Astl)과,
측정된 시스템 값의 셀프-테스팅의 작업(Asys)과,
서브-프로그램(P1,...,Pn)의 중간 결과들간의 비교의 셀프-테스트 작업(Achk)을 포함하며,
상기 셀프-테스트 작업(Astl, Asys, Achk)은,
셀프-테스트 작업(Astl, Asys, Achk)에 대응되는 각각의 셀프-테스트 데이터(Dstl, Dsys, Dchk)를 생성하고, 상기 셀프-테스트 데이터(Dstl, Dsys, Dchk)상에서 확인 작업(51, 61)을 수행하는 단계와,
메세지(MC)의 프로토콜(PL)을 통해 상기 셀프-테스트 데이터(Dstl, Dsys, Dchk)를 추가적인 독립 제어 모듈(15)과 연속적으로 교환하는 단계와,
상기 추가적인 제어 모듈(15) 내의 상기 확인 작업(51, 61)의 적어도 일부를 실행하는 단계와,
각각의 서브프로그램(P1,...,Pn)이나 프로세싱 모듈(11)과 관련된 상기 셀프-테스트 작업(Astl, Asys, Achk)의 각각에 대한 커버리지 타겟(kstl, ksys, kchk)을 획득하여, 주어진 고장-확률 타겟(g12; g)을 준수하도록, 프로그램(P)을 복수의 병렬 서브프로그램(P1,...,Pn)으로 분해하는 상기 작업을 수행하는 단계를 포함하는 것을 특징으로 하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법. - 제 1 항에 있어서, 상기 주어진 고장-확률 타겟(g12; g)은, 상기 진단-셀프-테스트 작업(Astl)에 의해 결정된 커버리지 값(kstl), 프로세싱 시스템(10)에 대해 측정된 시스템 값의 셀프-테스팅의 작업(Asys)에 의해 결정된 커버리지 값(ksys), 서브-프로그램(P1,...,Pn)의 중간 결과들 사이의 비교의 작업(Achk)에 의해 결정된 커버리지 값(kchk)의 함수인 것을 특징으로 하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법.
- 제 1 항에 있어서, 상기 고장-확률 타겟(g12; g)의 계산은,
서브-프로그램(P1,...,Pn)과 같은 많은 입력을 가진 AND 논리 함수(AG)의 입력으로 상기 서브-프로그램(P1,...,Pn)을 고려하는 단계와,
상기 서브-프로그램(P1,...,Pn) 사이에서 구성될 수 있는 쌍들을 입력에서 가진 두 개의 입력 AND 논리 함수로 상기 AND 논리 함수(AG)를 분해하고, 공통-이유-고장 비율(β)의 보수게 의해 각각의 두-입력 AND 게이트로부터 출력에서의 고장 확률과 노출 시간(texp)의 곱을 계산하는 단계와,
공통-이유-고장 비율(β)이 곱해진 서브-프로그램(P1,...,Pn)의 쌍들 사이에, 공통-이유 고장에 OR 함수를 적용함에 의해 얻어진 값에 더해진 이전 작업의 결과의 함수로 상기 확률 타겟(g)을 계산하는 단계를 포함하는 것을 특징으로 하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법. - 제 1 항 내지 제 3 항 중 어느 한 항에 있어서, 서브-프로그램(P1,...,Pn)의 상기 고장 확률은, 각각의 서브-프로그램(P1,...,Pn)에 대한 상기 진단-셀프-테스트 작업(Astl)에 의해 결정된 상기 커버리지 값(kstl), 아키텍처(10)에 대해 측정된 시스템 값의 셀프-테스팅의 작업(Asys)에 의해 결정된 상기 커버리지 값(ksys), 서브-프로그램(P1,...,Pn)의 중간 결과들 간의 비교의 셀프-테스트 작업(Achk)에 의해 결정된 상기 커버리지 값(kchk)의 결합(union)의 함수로 평가되는 것을 특징으로 하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법.
- 제 1 항 내지 제 4 항 중 어느 한 항에 있어서, 상기 시스템(10)은, 상기 서브-프로그램(P1,...,Pn)이 실행될 수 있는 가상 머신(V1,...,Vn)을 생성하는, 가상-머신-관리 모듈(17)을 실행하는 것을 특징으로 하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법.
- 제 1 항 내지 제 5 항 중 어느 한 항에 있어서, 상기 추가적인 제어 모듈(15) 내의 상기 확인 작업(51, 61)의 적어어 일부를 수행하는 상기 작업은,
진단-셀프-테스트 작업(Dstl)에 따라, 싱글-프로세서나 멀티프로세서 타입의 프로세싱 시스템(10)의 프로세서들(C1,...,Cm)에 대해 이루어진 계산의 중간 결과에 해당하는 진단-셀프-테스트 데이터(Dstl)를 저장된 사전-계산되고 예산 값(Dstla)의 한 세트와의 비교를 수행하는 단계와,
서브프로그램(P1,...,Pn)의 중간 결과들 간의 비교의 작업(Achk)에 의해 생성된 애플리케이션-셀프-테스트 데이터(Dchk)의 비교를 수행하는 단계와,
저장된 예상 범위(Ratt)에 대해 시스템-셀프-테스트 데이터(Dsys)의 비교를 수행하는 단계를 포함하는 것을 특징으로 하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법. - 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 추가적인 제어 모듈(15)은,
중간 결과들, 특히 애플리케이션-셀프-데이터(Dchk) 및/또는 진단-셀프-테스트 데이터(Dstl)이 동일하거나 교정되었는지를 검증하기 위한 값의 확인,
시스템에 대해 측정된 셀프-테스트 데이터(Dsys)의 값이 사전결정된 값의 범위(Ratt)에 속하는지를 검증하기 위한 값의 범위의 확인,
메세지의 순서가 정확한지를 검증하기 위해 순서의 확인,
메시지의 도달의 시간의 확인을 셀프-테스트 데이터(Dstl, Dchk, Dsys)에서 수행하도록 구성되는 것을 특징으로 하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법. - 제 1 항 내지 제 7 항 중 어느 한 항에 있어서, 메세지(MC)의 프로토콜(PL)을 통해 연속적으로 상기 셀프-테스트 데이터(Dstl, Dsys, Dchk)를 추가적인 독립적인 제어 모듈(15)과 교환하는 상기 작업은, 상기 메세지(MC)를 생성하는 계층적 레벨(L)에 따라, 그리고 상기 메세지(MC)를 생성하는 물리적 채널(ID0, ID1)에 따라 논리 채널(VC) 내의 메세지(MC)를 포함하는 것을 특징으로 하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법.
- 제 8 항에 있어서, 상기 추가적인 제어 모듈(15) 내의 상기 확인 작업(51, 61)의 적어도 일부를 수행하는 상기 작업은,
하나 및 동일한 논리 채널(VC)에 속하고, 하나 및 동일한 물리적 채널(ID)에 속하는 메세지에 적용되는 인트라-채널 체크(ITC)의 작업과,
서로 다른 논리 채널들(VC)에 속하는 메세지(MC)에 적용되는 인터-채널 확인(INTC) 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법. - 싱글-프로세서나 멀티프로세서 타입의 프로세싱 시스템(10)을 포함하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법에 있어서, 상기 방법은,
안전 기능(SF)을 포함하고 상기 시스템(10)을 통해 실행되는 프로그램(P)을 복수의 병렬 서브-프로그램(P1,...,Pn)으로 분해시키는 작업을 수행하는 단계와,
각각의 병렬 서브-프로그램(P1,...,Pn)의 실행을 시스템의 각각의 프로세싱 모듈(11), 특히 상기 멀티프로세서 아키텍처(10)의 프로세서(C1,...,Cm) 또는 상기 프로세서들(C1,...,Cm) 중 하나와 관련된 가상 머신(V1,...,Vn)으로 할당하는 단계와,
시스템(10) 내에서, 상기 시스템(10)의 정상 동작 동안에 프로그램(P)의 사이클 주파수(fcyc)에 따라 상기 안전 기능(SF)의 프레임워크 내에서 상기 서브-프로그램(P1,...,Pn)의 각각 및 상기 서브-프로그램들이 실행되는 대응 프로세싱 모듈(11)과 관련된 셀프-테스트 작업(Astl, Asys, Achk)을 주기적으로 수행하는 단계를 포함하되,
상기 셀프-테스트 작업(Astl, Asys, Achk)은,
진단-셀프-테스트를 수행하는 진단-셀프-테스트 작업(Astl)과,
측정된 시스템 값의 셀프-테스팅의 작업(Asys)과,
서브-프로그램(P1,...,Pn)의 중간 결과들간의 비교의 셀프-테스트 작업(Achk)을 포함하며,
상기 셀프-테스트 작업(Astl, Asys, Achk)은,
셀프-테스트 작업(Astl, Asys, Achk)에 대응되는 각각의 셀프-테스트 데이터(Dstl, Dsys, Dchk)를 생성하고, 상기 셀프-테스트 데이터(Dstl, Dsys, Dchk)상에서 확인 작업(51, 61)을 수행하는 단계와,
각각의 서브프로그램(P1,...,Pn)이나 프로세싱 모듈(11)과 관련된 상기 셀프-테스트 작업(Astl, Asys, Achk)의 각각에 대한 커버리지 타겟(kstl, ksys, kchk)을 획득하여, 주어진 고장-확률 타겟(g12; g)을 준수하도록, 프로그램(P)을 복수의 병렬 서브프로그램(P1,...,Pn)으로 분해하는 상기 작업을 수행하는 단계를 포함하는 것을 특징으로 하는 기능 안전이 제공되는 애플리케이션을 위한 전자 시스템에서 프로그램(P)을 실행하기 위한 방법. - 싱글-프로세서나 멀티프로세서 타입의 프로세싱 시스템(10) 및 추가적이고 독립적인 제어 모듈(15)을 포함하는 기능 안전이 제공된 전자 시스템에 있어서, 상기 전자 시스템은 청구항 제 1 항 내지 제 9 항 중 어느 한 항에 따른 방법의 단계를 실행하도록 구성된 것을 특징으로 하는 전자 시스템.
- 적어도 하나의 컴퓨터의 메모리 내로 로딩될 수 있는 컴퓨터 프로그램 제품에 있어서, 프로그램이 적어도 하나의 컴퓨터상에서 실행될 때, 상기 컴퓨터 프로그램 제품은 청구항 제 1 항 내지 제 9 항 중 어느 한 항에 따른 방법의 단계를 실행하도록 설계된 소프트웨어 코드의 일부를 포함하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ITTO2014A000633 | 2014-08-04 | ||
ITTO20140633 | 2014-08-04 | ||
PCT/IB2015/055833 WO2016020815A1 (en) | 2014-08-04 | 2015-07-31 | Method of executing programs in an electronic system for applications with functional safety comprising a plurality of processors, corresponding system and computer program product |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170065497A true KR20170065497A (ko) | 2017-06-13 |
KR102352068B1 KR102352068B1 (ko) | 2022-01-17 |
Family
ID=51663375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177006149A KR102352068B1 (ko) | 2014-08-04 | 2015-07-31 | 복수의 프로세서를 포함하는 기능 안전이 있는 애플리케이션을 위한 전자 시스템에서 프로그램을 실행하는 방법, 대응되는 시스템 및 컴퓨터 프로그램 제품 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10248492B2 (ko) |
EP (1) | EP3178000B1 (ko) |
JP (1) | JP6599431B2 (ko) |
KR (1) | KR102352068B1 (ko) |
CN (1) | CN107003912B (ko) |
WO (1) | WO2016020815A1 (ko) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITUB20154590A1 (it) * | 2015-10-13 | 2017-04-13 | Yogitech S P A | Procedimento di esecuzione di programmi in un sistema elettronico per applicazioni in sicurezza funzionale comprendente una pluralita' di processori, relativo sistema e prodotto informatico |
US11262722B2 (en) * | 2016-08-02 | 2022-03-01 | Siemens Aktiengesellschaft | Monitoring and controlling unit for use in an autonomous system with self-x properties |
CN108205490B (zh) * | 2016-12-19 | 2021-05-14 | 比亚迪股份有限公司 | 软件看门狗测试方法和装置 |
US10229042B2 (en) * | 2017-01-19 | 2019-03-12 | International Business Machines Corporation | Detection of meaningful changes in content |
US20190018408A1 (en) * | 2017-07-12 | 2019-01-17 | Qualcomm Incorporated | Systems and methods for verifying integrity of a sensing system |
US10710602B2 (en) * | 2017-10-06 | 2020-07-14 | Uatc, Llc | Systems and methods for a vehicle controller safety monitor |
EP3543718B1 (en) * | 2018-03-19 | 2020-08-19 | Melexis Technologies NV | Method for detecting a failure in an electronic system |
KR20200044206A (ko) * | 2018-10-10 | 2020-04-29 | 삼성전자주식회사 | 전자 장치 및 이의 제어 방법 |
US10846439B2 (en) * | 2019-06-28 | 2020-11-24 | Intel Corporation | Functional safety over trace-and-debug |
CN110727536A (zh) * | 2019-10-09 | 2020-01-24 | 上海元城汽车技术有限公司 | 控制器自检方法、装置、计算机设备和可读存储介质 |
JP2021086359A (ja) * | 2019-11-27 | 2021-06-03 | 株式会社デンソーウェーブ | 産業機器の制御装置 |
DE102020200785A1 (de) * | 2020-01-23 | 2021-07-29 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zum Validieren einer Software |
CN114428694A (zh) * | 2020-10-29 | 2022-05-03 | 华为技术有限公司 | 一种错误检测方法及相关装置 |
CN115202327B (zh) * | 2022-09-14 | 2022-12-09 | 江苏恒立液压科技有限公司 | 阀口独立控制系统及其安全性能评估方法、装置 |
CN115357519B (zh) * | 2022-10-20 | 2022-12-16 | 中科方德软件有限公司 | 一种测试方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002189706A (ja) * | 2000-12-21 | 2002-07-05 | Nec Miyagi Ltd | 通信装置の分散型初期設定システム及び方法 |
JP2008123357A (ja) * | 2006-11-14 | 2008-05-29 | Honda Motor Co Ltd | 並列計算機システム、並列計算方法および並列計算機用プログラム |
JP2008165531A (ja) * | 2006-12-28 | 2008-07-17 | Internatl Business Mach Corp <Ibm> | 複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法 |
JP2010128627A (ja) * | 2008-11-26 | 2010-06-10 | Hitachi Automotive Systems Ltd | 車載用電子制御装置 |
US20120137171A1 (en) * | 2010-11-29 | 2012-05-31 | Infineon Technologies Ag | Enhanced scalable cpu for coded execution of sw in high-dependable safety relevant applications |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08314744A (ja) * | 1995-05-18 | 1996-11-29 | Hitachi Ltd | フォールトトレラントシステム |
JP3991384B2 (ja) * | 1996-07-15 | 2007-10-17 | 株式会社デンソー | 電子制御装置 |
US7113938B2 (en) * | 2002-02-14 | 2006-09-26 | Gravic, Inc. | Method of increasing system availability by splitting a system |
JP2004038654A (ja) | 2002-07-04 | 2004-02-05 | Mitsubishi Heavy Ind Ltd | 並列計算機の異常検出システムおよび異常検出方法 |
US8230262B2 (en) | 2010-07-02 | 2012-07-24 | Oracle International Corporation | Method and apparatus for dealing with accumulative behavior of some system observations in a time series for Bayesian inference with a static Bayesian network model |
CN102707225A (zh) * | 2012-06-21 | 2012-10-03 | 上海华岭集成电路技术股份有限公司 | 集成电路测试优化方法及其测试装置 |
CN102929778B (zh) * | 2012-10-30 | 2015-11-18 | 无锡江南计算技术研究所 | 众核阵列上并行测试的控制方法及硅后验证系统 |
CN106255957A (zh) * | 2014-04-30 | 2016-12-21 | 瑞典爱立信有限公司 | 云计算资源的分配 |
-
2015
- 2015-07-31 WO PCT/IB2015/055833 patent/WO2016020815A1/en active Application Filing
- 2015-07-31 EP EP15762748.0A patent/EP3178000B1/en active Active
- 2015-07-31 KR KR1020177006149A patent/KR102352068B1/ko active IP Right Grant
- 2015-07-31 JP JP2017506354A patent/JP6599431B2/ja active Active
- 2015-07-31 US US15/501,767 patent/US10248492B2/en active Active
- 2015-07-31 CN CN201580053999.9A patent/CN107003912B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002189706A (ja) * | 2000-12-21 | 2002-07-05 | Nec Miyagi Ltd | 通信装置の分散型初期設定システム及び方法 |
JP2008123357A (ja) * | 2006-11-14 | 2008-05-29 | Honda Motor Co Ltd | 並列計算機システム、並列計算方法および並列計算機用プログラム |
JP2008165531A (ja) * | 2006-12-28 | 2008-07-17 | Internatl Business Mach Corp <Ibm> | 複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法 |
JP2010128627A (ja) * | 2008-11-26 | 2010-06-10 | Hitachi Automotive Systems Ltd | 車載用電子制御装置 |
US20120137171A1 (en) * | 2010-11-29 | 2012-05-31 | Infineon Technologies Ag | Enhanced scalable cpu for coded execution of sw in high-dependable safety relevant applications |
Also Published As
Publication number | Publication date |
---|---|
EP3178000A1 (en) | 2017-06-14 |
CN107003912B (zh) | 2020-09-08 |
CN107003912A (zh) | 2017-08-01 |
EP3178000B1 (en) | 2019-01-30 |
US10248492B2 (en) | 2019-04-02 |
JP6599431B2 (ja) | 2019-10-30 |
US20170228279A1 (en) | 2017-08-10 |
KR102352068B1 (ko) | 2022-01-17 |
WO2016020815A1 (en) | 2016-02-11 |
JP2017527895A (ja) | 2017-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102352068B1 (ko) | 복수의 프로세서를 포함하는 기능 안전이 있는 애플리케이션을 위한 전자 시스템에서 프로그램을 실행하는 방법, 대응되는 시스템 및 컴퓨터 프로그램 제품 | |
US10761916B2 (en) | Method for executing programs in an electronic system for applications with functional safety comprising a plurality of processors, corresponding system and computer program product | |
EP3085596B1 (en) | A vehicle safety electronic control system | |
EP2813949B1 (en) | Multicore processor fault detection for safety critical software applications | |
WO2006121483A2 (en) | Generic software fault mitigation | |
KR20130119452A (ko) | 오류 허용 아키텍쳐를 갖는 마이크로프로세서 시스템 | |
US8793533B2 (en) | Method and device for performing failsafe hardware-independent floating-point arithmetic | |
JP7202448B2 (ja) | 安全性が要求されるプロセスを監視する自動化システム | |
CN102640119B (zh) | 用于运行计算单元的方法 | |
US20150254123A1 (en) | Symmetric Multi-Processor Arrangement, Safety Critical System, And Method Therefor | |
WO2006080227A1 (ja) | 情報処理装置および情報処理方法 | |
Preschern et al. | Building a safety architecture pattern system | |
CN106940667B (zh) | 检验具有多个计算单元的系统中的计算结果的方法和设备 | |
Idirin et al. | Implementation details and safety analysis of a microcontroller-based SIL-4 software voter | |
US11982984B2 (en) | Automation system for monitoring a safety-critical process | |
CN105607616A (zh) | 一种对冗余系统进行可靠性分析的方法 | |
Grunske | Transformational patterns for the improvement of safety properties in architectural specification | |
Braun et al. | Capability of single hardware channel for automotive safety applications according to ISO 26262 | |
Arm et al. | Increasing safety and reliability of roll-back and roll-forward lockstep technique for use in real-time systems | |
Li et al. | A structure design of safety PLC with heterogeneous redundant dual-processor | |
EP3367242B1 (en) | Method of error detection in a microcontroller unit | |
US20240028440A1 (en) | Method for Recording a Number of Events in an Encoded Tracer Variable in a Security-Oriented Computer Program | |
Braun et al. | Increasing the reliability of single and multi core systems with software rejuvenation and coded processing | |
Theocharis et al. | Low-Cost Solution for Adding Safety Functions to Programmable Logic Controllers (PLCs) | |
CN118642884A (zh) | 用于检查有用数据处理的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |