JP2017527895A - 複数のプロセッサを含む、機能安全を有するアプリケーション用の電子システムにおいてプログラムを実行する方法、対応システム、およびコンピュータプログラム製品 - Google Patents

複数のプロセッサを含む、機能安全を有するアプリケーション用の電子システムにおいてプログラムを実行する方法、対応システム、およびコンピュータプログラム製品 Download PDF

Info

Publication number
JP2017527895A
JP2017527895A JP2017506354A JP2017506354A JP2017527895A JP 2017527895 A JP2017527895 A JP 2017527895A JP 2017506354 A JP2017506354 A JP 2017506354A JP 2017506354 A JP2017506354 A JP 2017506354A JP 2017527895 A JP2017527895 A JP 2017527895A
Authority
JP
Japan
Prior art keywords
self
test
stl
chk
sys
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017506354A
Other languages
English (en)
Other versions
JP6599431B2 (ja
Inventor
リッカルド・マリアーニ
ミケーレ・ボルガッティ
ステファノ・ロレンツィーニ
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.)
Yogitech SpA
Original Assignee
Yogitech SpA
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 Yogitech SpA filed Critical Yogitech SpA
Publication of JP2017527895A publication Critical patent/JP2017527895A/ja
Application granted granted Critical
Publication of JP6599431B2 publication Critical patent/JP6599431B2/ja
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/0703Error 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/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • 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/0703Error 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/0706Error 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/0721Error 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test 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)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

単一プロセッサまたはマルチプロセッサ処理システム、および別の独立制御モジュールを含む、機能安全が設けられるアプリケーション用の電子システムにおいて、プログラム(P)を実行する方法が開示される。この方法には、プログラム(P)を複数の並列サブプログラム(P1〜Pn)に分解する動作を実行するステップと、各並列サブプログラム(P1〜Pn)の実行をシステムの各処理モジュールに割り当てて、前記サブプログラム(P1〜Pn)のそれぞれに関連する自己テスト動作(Astl、Asys、Achk)を周期的に実行するステップと、が含まれる。

Description

本開示は、機能安全が要求されるアプリケーション用の電子システムに関連してプログラムを実行する技術に関する。開示される電子システムは、単一プロセッサ(CPU)または複数のプロセッサを備えるアーキテクチャに基づく。
開示される技術では、
前記アーキテクチャにより実行されるプログラムを複数の並列サブプログラムに分解する動作を行い、
システムの各処理モジュール、具体的には、前記プロセッサのうちの1つに関連する物理プロセッサまたは仮想マシンに各並列サブプログラムの実行を割り当て、
機能安全目標を満たすよう設計される自己テスト動作を前記アーキテクチャの通常動作中のプログラムのサイクル頻度に従って周期的に実行し得る。
本開示の種々の実施形態は、機能安全に適用可能である。具体的には、本開示の種々の実施形態は、産業用ロボットおよび産業用制御装置の分野の電子システム、および運転手をアシストする自動車用アプリケーション、部分的あるいは完全な自動運転を行う自動車用アプリケーション用の電子システムの技術分野に適用可能である。
IEC61508、ISO13849、およびISO26262などの機能安全規格には、一体型電子システムにおいて潜在的に危険な故障を検知することに関する要求事項も含まれている。例えば、ISO26262の規格では、要求事項の1つに、「HWの偶発的な故障に対する確率メトリック(PMHF;probabilistic metric for HW random failures)」という規定があり、所与の故障モデルFに関する第1の近似値が、ベース故障確率(λ)、故障モデル(ΛF)上でのこの確率の分布、安全側故障(1−s)の一部の補数、および非安全側故障(1−k)の自己診断率の補数の積として規定されている。
「安全側故障」とは、電子装置上で実行されるプログラムのミッションが影響を受けない、あるいは、影響を受けたとして大きな問題にはならない、すなわち、機能安全に対する危険がない既知の状態、いわゆる「安全状態」でミッションが完了する故障を意味する。
単一プロセッサまたはマルチプロセッサの処理システム内のプロセッサは、このような一体型電子システムの中でも最も重要な要素であり、これらのプロセッサは当技術分野が進歩すればするほど複雑になる。
これらのプロセッサに関して、上記の規定(例えば、ISO26262−5、Annex D、Table D.4)では、非安全側故障のカバレッジのできるだけ高い診断値(kにより指定される)を得るために、様々な可能性のある技術が提示されている。
従来の技術では、上記の技術により様々な実装形態が見出されてきた。
例えば、米国特許第6,233,702号明細書(特許文献1)や米国特許第7,472,051号明細書(特許文献2)などに記載されるアーキテクチャは、機能安全を保証するために、必ずプロセッサのハードウェアの修正を必要とし、プロセッサの完全冗長性の形態または低冗長性の形態を実装する。
例えば、米国特許第5,513,319号明細書(特許文献3)に記載されるアーキテクチャでは、独立要素(監視装置)が、予め設定された時間間隔でプロセッサから周期的にクエリを受ける。しかし、このような方法を用いてプロセッサの故障のうちの少ないパーセンテージだけしか検知できなければ、保証可能な機能安全は限られてしまい、これにより、基本的には、プログラムフローに大幅な差が引き起こされる。
米国特許第6,233,702号明細書 米国特許第7,472,051号明細書 米国特許第5,513,319号明細書
本明細書で記載される実施形態の目的は、先程議論した通り、従来技術による方法の潜在能力を伸ばすことである。具体的には、最新マルチプロセッサなどの複雑なアーキテクチャ上で高い自己診断率を実現し、同様に、単一プロセッサに対するカバレッジ目標を制限し、ハードウェアを修正する必要性を制限する、あるいは、取り除くことを可能にする。
種々の実施形態では、添付されている請求項に記載される特徴を有する方法により上記の目的が達成される。種々の実施形態は、アーキテクチャ、さらには、コンピュータプログラム製品にも関し、このコンピュータプログラム製品は、少なくとも1つのコンピュータ(例えば、ネットワーク内の端末)のメモリにインストールすることができ、少なくとも1つのコンピュータ上でプログラムが実行されると、方法のステップを実行するよう設計されるソフトウェアコードの一部を含む。本明細書で使用される場合、上記のコンピュータプログラム製品は、本発明による方法を協働して実行するようコンピュータシステムを制御する命令を含むコンピュータ可読手段と同じものとして理解されよう。「少なくとも1つのコンピュータ」という言及は、モジュール方式および/または分配される形態で実施される本発明の可能性を強調することとして理解されよう。請求項が、本発明に関連して本明細書で提供される技術教示の必須部分を形成する。
種々の実施形態では、自己テスト動作を含む方法が開示され、この自己テスト動作には、
診断型自己テスト動作、すなわち、プロセッサ上でテストを実行し、その結果を設計段階で事前に計算された数値と比較する動作と、
アーキテクチャ上でシステム値(純粋な例として、電圧と温度)を測定し、その結果を予想される基準範囲と比較する自己テスト動作と、
前記サブプログラムの部分結果どうしを比較する動作と、が含まれ、
前記自己テスト動作が、
自己テスト動作に関する各自己テストデータを生成することと、
前記自己テストデータ上でチェック動作を実行することと、
メッセージプロトコルを用いて、別の独立制御モジュールと前記自己テストデータのやり取りを連続して行うことと、
前記別の独立制御モジュール内で前記チェック動作を少なくとも部分的に実行することと、
前記診断型自己テスト動作により決定されるカバレッジ値、アーキテクチャ上で測定されるシステム値の自己テストの動作の所与のカバレッジ値、および前述のサブプログラムの部分結果どうしを比較する動作により決定されるカバレッジ値の関数である故障確率目標に重点を置くために、プログラムを複数の並列サブプログラムに分解する前記動作を実行することと、を含む。
記載されるプログラムの分解の手順と、前述の3つの別々の動作(診断テストによる自己テスト、システム値の監視による自己テスト、中間結果間の比較による自己テスト)に自己テスト動作を分割することにより、既知の技術を改善することができる。具体的には、3分割することで効率的な目標の分配が可能となる。すなわち、実現するために著しい設計の手間、すなわち、ハードウェアの修正を必要とする動作(記載される方法が用いられる特定のタイプのシステムに関して)に関する目標を下げその代り、それに関連して実行が簡単な動作に関する目標を上げる。
次に、下記の添付図面を純粋な例として参照して、種々の実施形態を説明する。
図1は、本明細書に記載される方法を実施するよう構成される、電子システムに関するマルチプロセッサのアーキテクチャの実施形態のブロック図である。 図2は、本明細書に記載される方法で用いられる安全機能を示す図である。 図3は、本明細書に記載される方法を実施するよう構成されるマルチプロセッサのアーキテクチャのソフトウェアレベルを示す図である。 図4は、マルチプロセッサのアーキテクチャにより実施される通信プロトコルにより用いられるパケットを示す図である。 図5は、マルチプロセッサのアーキテクチャにより実施される通信プロトコルにより用いられるパケットを示す図である。 図6は、本明細書に記載される方法を実施するためのマルチプロセッサのアーキテクチャと協働する制御モジュールのブロック図である。 図7は、本明細書に記載されるマルチプロセッサのアーキテクチャにより実行されるテストプログラムの概略図である。 図8は、本明細書に記載される方法の分解動作の論理実装形態の一例を示す論理図である。 図9は、2コアの対称マルチプロセッサを用いる、SoC(システム・オン・チップ)上のシステムの実装形態を示す原理図である。
次の説明では、例として提供される実施形態の最大限の理解を可能にするために、非常にたくさんの具体的詳細が盛り込まれている。これらの実施形態は、具体的詳細、あるいは、その他の方法、構成要素、材料などの有無に関わらず実施可能である。実施形態の種々の様態が不明瞭にならないよう、その他の環境では、周知の構造、材料、または動作を詳細に図示、説明していない。本明細書では、「ある実施形態」または「一実施形態」とは、その実装形態に関連して記載される特定の構造、特性、または特徴が少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書の様々な箇所で度々登場する「ある実施形態では」や「一実施形態では」などのフレーズは、必ずしも1つの実施形態および同じ実施形態を指しているわけではない。さらに、特定の構造、特性、または特徴を、都合よく1つ以上の実施形態に組み合わせることも可能である。
本明細書では様々な引用が提供されるが、これらは単に読み手の理解を容易にするためのもので、その実施形態の範囲や趣旨を規定するものではない。
図1には、機能安全が設けられるアプリケーションに関する一体型電子システムにおける、機能安全が設けられる処理アーキテクチャが示されている。前述の通り、この電子システムは、例えば、運転手をアシストし、部分的な、あるいは完全な自動運転を行う自動車用アプリケーション用の電子システムでよく、機能安全で動作する処理アーキテクチャが含まれる。
前述のアーキテクチャは、マルチプロセッサ処理システムを含む。すなわち、全体として参照符号10で示されるマルチプロセッサ処理システム上に実装されるのは、複数の処理チャネルおよび制御チャネルの提供に基づく機能安全システムである。安全に関連して、具体的にはIEC61508において、「チャネル」とは、機能安全機能すなわち「安全機能SF」を独立して実施する要素および要素群を意味する(IEC61508−4、3.3.6を参照)。これは、例えば、マイクロプロセッサ、仮想マシン、あるいはその他の要素でよい。
このマルチプロセッサ処理システム10は、複数のプロセッサモジュール11を含む。前述のプロセッサモジュール11は、主として、いわゆる「コア」と呼ばれる独立CPUを含む。後でより詳細に説明するが、本明細書では、マルチコアシステム内(同様に、単一コアシステム内)のプロセッサモジュールが、前述のコアのうちの1つの上で動作する仮想化ソフトウェアにより生成される仮想マシンを指し得る。図1および図3を参照すると、本明細書では「プロセッサモジュール」11は、マルチプロセッサ10内の複数のコアC1〜Cmのうちの1つを意味する、あるいは、前述のコアC1〜Cmの1つ以上により実装される複数の仮想マシンV1〜Vnのうちの1つを意味する。
このマルチプロセッサ10は、構造上様々な方法で構築することができ、均一なアーキテクチャ(同じ種類の種々の処理コア11を含むアーキテクチャ)と不均一アーキテクチャ(異なる種類の処理コア11を含むアーキテクチャ)の両方、およびメッセージをやり取りすることにより通信を行う分配メモリアーキテクチャの共有メモリアーキテクチャを含む。物理実装形態の視点からすると、1つの同じ集積回路にコア11が供給される高い集積度から異なる集積回路または異なる別々のモジュールにマルチプロセッサ10のコア11が供給される低い集積度までの範囲の複数のソリューションも可能である。
これに関連して、前述のマルチプロセッサ10を1つだけ含み、このマルチプロセッサが、複数のプロセッサモジュール11を含むアーキテクチャが図1の例として示されている。アプリケーション機能、すなわち、例えば、自動車の運転を制御またはアシストするプログラムP、ならびに、システムの保全性の自己テスト、およびマルチプロセッサ10自体の論理メモリやソリッドステートメモリまたはそれらのサブ部品で発生する可能性のある潜在的故障または機能不良の検知を目指す安全機能SFが、このマルチプロセッサ10上で動作する。
マルチプロセッサ10に加えて、図1に示される機能安全が設けられるアーキテクチャは、制御モジュール15で示される独立処理ユニットを含み、この処理ユニットは、それらの機能安全の監視、および、それらのプログラムを起動させる論理回路で発生する可能性のある、あるいは、より一般的に、各プロセッサモジュール11で実行可能なようにプログラムPが分割されるサブプログラムP1〜Pnの実行フローで発生する可能性のある全ての潜在的な機能不良の検知を可能にするために、マルチプロセッサ10のプロセッサ11により実行される、前述の自己テスト動作を実施するマルチプロセッサ10内の様々な動作プログラムから送られる監視および制御メッセージMCの流れのコンテンツを分析、処理、比較するよう構成される。
マルチプロセッサ10と制御モジュール15は、通信手段12を介して通信し、この通信手段12により、マルチプロセッサ10の種々のプロセッサモジュール11は、前述の監視および制御メッセージMCを、処理および比較ユニットに送信したり、処理および比較ユニットから受信したりすることができ、逆に、制御モジュール15は、例えばアラームなどのメッセージをマルチプロセッサ10から受信したり、マルチプロセッサ10に送信したりすることができる。
上記に記載した通り、説明を容易にするために図1では、マルチプロセッサ10が1つだけ示されているが、実際にはアーキテクチャは、各通信手段12を通して、制御モジュール15と、監視および制御メッセージをやり取りする複数のプロセッサまたはマルチプロセッサを含むことができる。
本明細書に記載される方法は、安全機能(図2のSFで示される)を実装するマルチプロセッサ10のこれら全ての潜在的な構成に適用可能である。「安全機能」とは、上述の規格で指定される個々の機能安全の要求事項を必要とするシステムのフレームワークにおいて動作する機能を意味する。実際には、図2には、ソフトウェアの処理で実行される安全機能SF、およびマルチプロセッサ10上で実行されるプログラムPが示されている。図2では、このプログラムPは(周期的に実行される処理)全体として、サイクル時間Tcycを伴う時間tでの周期的な実行を表す環形状で示されている。安全機能SFは、前述のプログラムPの時間セグメント(すなわち、環形状の扇形)を占有し、この安全機能SFが、通常、プログラムPの一部を成し、サイクル時間Tcycよりも短い安全実行時間Tで実行される。また図2には、安全機能SFの実行中(すなわち、安全実行時間T中)、監視および制御メッセージMCがどのようにやり取りされるかが示されている(具体的には、独立制御モジュール15と)。
図1に示される通り、本明細書に記載される方法では、プログラムPが並列サブプログラムP1〜Pnに分解され、図1のアーキテクチャにおいて、これらの並列がそれぞれ、コア11上で実施される。図1には1つのマルチプロセッサが示されているが、処理システムが、例えば、仮想化技術によりプロセッサを1つだけ提示する場合には、サブプログラムP1〜Pnも分割することができる。マルチプロセッサのオペレーティングシステムの領域で利用可能な技術ソリューションは、仮想化技術であり、この技術により、単一コア、すなわち、次に図示される通り、マルチプロセッサ10のコア11上で(例えば、いわゆる「ハイパーバイザ」または「仮想マシンモニタ」を参照)、アプリケーションプログラムが実行されるハードウェアを正確に仮想化することが可能となる。仮想化技術を使用するパラダイムによれば、プログラムPは、並列実行を行うために、仮想マシンV1〜Vn上でそれぞれ実行される複数の並列処理P1〜Pnに分割される。このことは、安全機能SFを含むプログラムPを開始することと機能的に同じことである。
種々の仮想マシンまたはコアに割り当てられるサブプログラムP1〜Pnへの分解は、特定のプログラムPの関数に関する関数型を考慮することにより、既知のシステム内で誘導される。後でより詳細に説明する通り、本明細書に記載される方法では、代わりにサブ処理P1〜Pnに分解する前述の動作を産業用アプリケーションおよび自動車用アプリケーションで用いられる機能安全規格により要求されるランダムなタイプの故障の存在に関するカバレッジの所与の制限の各関数として実行する。したがって、前述の制限は、通常、規格により要求されるカバレッジkのレベルの関数f(k)として示される。
図1の機能安全アーキテクチャは、図3により詳細に記載される自己テスト動作を安全機能SFのフレームワーク内で実行するようさらに構成され、通常この自己テスト動作には、
図3に示される通り、プロセッサ11に関連する自己テストライブラリ(STL)50を実行することにより、診断テストを実行する診断型自己テスト動作Astlと、
好ましくは、自己テストライブラリ(STL)50を実行することにより実行される、アーキテクチャ上で測定されるシステム値の自己テストの動作Asysと、
図3に示される、アプリケーション比較ソフトウェアモジュール60により実行されるサブプログラムP1〜Pn間の比較の動作Achkと、が含まれる。
これに関連して、自己テストライブラリ(STL)50およびアプリケーション比較ソフトウェアモジュール60が図2に示されており、これらは各コア11に関連し、3種類の自己テスト動作Astl、Achk、Asysをそれぞれ実施する。上記に記載された通り、STL50は、診断型自己テスト動作Astlを実行するためのソフトウェアとアーキテクチャ上で測定されるシステム値の自己テストの動作Asysを実行するためのソフトウェアの両方を含むことが好ましいが、種々の実施形態では、システム値の自己テストの動作Asysは、分離された専用ソフトウェアモジュールにより実行することができる。
前述の3種類の自己テスト動作Astl、Asys、Achkには、マルチプロセッサ10上で、自己テストデータ、すなわち、診断型自己テストデータDstl、システム自己テストデータDsys、アプリケーション自己テストデータDchkをそれぞれ生成することが含まれる。上記に記載され図3に詳細に図示される通り、さらに、診断型自己テストライブラリ50とアプリケーション比較ソフトウェアモジュール60により示されるソフトウェアモジュールにおいて前述の自己テストデータDstl/Dsys/Dchkを生成し、監視および制御メッセージMC内で送信し、制御モジュール15内に含まれる論理モジュール51、61として図2に示されるモジュールにより前述の自己テストデータDstl、Dsys、Dchk上でチェック動作が実行されるようにする。
もう1度、図1を参照すると、通信システム12が示され、この通信システムが制御モジュール15とマルチプロセッサ10を構成するプロセッサモジュールとの間の監視および制御メッセージMCのやり取りに用いられる。前述の通信チャネルは、ポイント・トゥ・ポイントタイプのセグメントにより構成され得る、あるいは、通信バス(図示される)などの共有物理媒体へのマルチアクセスを用いて階層的に作成される。やり取りされる監視および制御メッセージMCのコンテンツは、後で詳細に説明するその他の動作と伴に自己テスト動作Astl、ASys、Achkを実行することにより決定され、マルチプロセッサ10を構成するプロセッサモジュール11が、プログラムPを分解することにより得られる各アプリケーションプログラムP1〜Pnを実行し始める一定の時間間隔で監視および制御メッセージMC自体が送信され、通常それにそれらの時間のほとんどが費やされ、特定のコード、すなわち、自己テストライブラリ50内のプログラムのコードの実行に割り当てられる。具体的には、監視および制御メッセージMCは、マルチプロセッサ10内で実行されるソフトウェアの異なる階層レベルで生成されるが、これに関しては後でより詳細に説明する。システムのマルチプロセッサ10と制御モジュール15との間の監視および制御メッセージMCのやり取りは、通信プロトコルPLに従って行われるが、これに関しては後でより詳細に説明する。
本明細書に記載される方法の主要様態によると、故障確率目標(通常のケースではgで示され、以後本明細書で示される2つのプロセッサの例ではg12で示される)に重点を置くためにプログラムPを複数の並列サブプログラムP1〜Pnに分解する動作が開示され、この故障確率目標とは、前述の診断型自己テスト動作Astlにより決定される各カバレッジ値kstl、マルチプロセッサのアーキテクチャ10上で測定される数値の自己テストの動作Asysの各所与のカバレッジ値ksys、およびサブプログラムP1〜Pn間の比較の動作Achkにより決定されるカバレッジ値kchkのサブプログラムP1〜Pnごとの関数である。
図1に示される安全アーキテクチャの各構成要素の安全側故障の一部(これに関連して、安全規格IEC61508を参照)、および自己診断率(DC)に関するカバレッジ(具体的には、診断型自己テスト動作Astl(自己テストライブラリ50)のソフトウェアプログラムの一部に関する)は、システムの次の特徴の関数として決定される。
安全度のレベル(SIL):システムにより重点を置かれるカバレッジkの要求事項につながるシステム(具体的には、2チャネルシステム)に関して達成される。
動作のベースサイクル周波数fcycおよび診断テスト間隔(DTI):これに関して、図2に示される通り、サイクル時間Tcyc、およびこれに伴いベースサイクルの周波数fcycでプログラムP全体が周期的に実行され、安全機能SFがサイクル時間Tcycよりも短い安全実行時間Tの前述のプログラムPの時間セグメントを占有する。
実行されるチェックの数とタイプ:具体的には、考慮されるアーキテクチャ内で、単位時間内の診断型自己テスト動作Astlの結果に基づいて制御モジュール15により実行され、安全実行時間Tは、安全規格により要求されるカバレッジf(k)の制限の関数である。
さらに、後で詳細に説明する通り、重点を置かれる前述の故障確率目標gのさらに別の関数に従って、データ量qおよび頻度fが選択されるメッセージのシーケンスでデータのやり取りの動作が実行される。
付加的なステップとして、前述の故障確率目標gの関数として決定されるカバレッジ目標値kが、例えば、本出願人の名前で出願されている欧州特許第1,980,964A1号明細書によるシミュレーションステップで、故障注入により効率的に実現されたかどうかを確かめるステップを含み得る。
次に、重点を置かれる故障確率目標gの関数に従って、プログラムPを複数の並列サブプログラムP1〜Pnに分解する動作を詳しく説明する。
ハードウェアを修正することなく、かつプログラムPへの影響(プログラムメモリのサイズと実行時間の両方として理解される)を最小限に抑え、最も低い故障確率gを得るために、実際に、記載される方法を用いて、このプログラムPを2つ以上の独立プログラムP1、P2〜Pnに分解することができる。
記載される機能安全を設けたアーキテクチャは、故障確率目標gの関数として、したがって、カバレッジkの値の関数として実現される。次に参照する特定の例は、実質的には、2チャネルシステムを示す。すなわち、プログラムPが2つの処理P1とP2に分解され、これらの処理P1とP2が、結果として2つのチャネルをもたらす2つのコアC1およびC2上、あるいは2つの仮想マシンV1およびV2上で実行されるシステムを示す。
したがって、2つのプログラムP1、P2に分解する動作を例にとり、説明を簡単にするために、1と等しい同じベース故障確率λ、および1と等しい同じ故障モデルΛの分布を有する2つの独立プログラムP1、P2が2つの同一のプロセッサモジュール11上で実行されると想定すると、プロセッサ1および2で構成されるマルチプロセッサシステムの故障確率は次のように表される。:
Figure 2017527895

なお、k1、k2は、2つのプログラムP1とP2を実行する2つのプロセッサ、例えば、C1とC2の故障カバレッジ値であり、s1、s2は、それぞれ2つのプログラムP1とP2を実行する2つのプロセッサC1、C2の安全側故障の一部であり、βは、2つのプロセッサC1、C2間の共通原因故障(CCF)を引き起こし得る故障の一部であり、k12は、2つのプロセッサC1、C2間の共通原因故障を引き起こし得る故障カバレッジ値であり、s12は、2つのプロセッサC1、C2に共通の安全側故障の一部であり、texpは、第1の故障の暴露時間である。暴露時間texpは、システムの使用のタイプおよび故障モデルのタイプにより規定され、究極には、システムのサービス時間を同じでよい。所与のサブプログラムPiを考慮し、ベース故障確率λが1と等しく、故障モデルΛの分布が1と等しいと想定すると、一対の数値si、ki(対応プロセッサの安全側故障の一部、および故障カバレッジ値で)により、それらの故障確率がそれぞれ実質的に特定される。
2つの独立サブプログラムP1とP2の故障確率目標g12に関して事前に規定された式(1)は、故障の木解析(FTA)の演算により決定される(例えば、ISO26262−10、Annex Bを参照)。すなわち、各プログラムが、実行される各ハードウェアが非常に低い故障確率に接続するANDタイプの論理関数により接続される2つのサブプログラムP1とP2の故障確率の決定に対応する(図8を参照)。したがって、式(1)は、発生する平均故障確率、すなわち、各確率と暴露時間tの積としての、故障確率目標の目安を表す。
したがって、任意の数の独立プログラムに関する式(1)は、簡単に拡張することができる。例えば、3つのプログラムを用いる場合、3入力ANDゲートを2つの2入力ANDゲートに分解し、上記に記載される2つのプログラムP1およびP2に関する式を用いて、新しい式を作ることが可能である。
つまり、重点を置かれる故障確率目標gに関するサブプログラムP1〜Pnの故障確率の数値は、サブプログラムP1〜Pnをサブプログラムと同じ数の入力を有するANDゲートの入力と見なし、前述のANDゲートを2つの2入力ANDゲートに分解し、各2入力ANDゲートの出力での故障確率の積と実行時間との関数として確率目標を計算することにより計算される。
もう一度FTA演算を適用し、故障CCFを考慮して、共通原因項β・(l−sl2)・(l−kl2)を合計することにより(すなわち、ORタイプの論理関数)、故障確率g12が得られる。
したがって、前述の故障確率目標gの計算では、サブプログラムP1〜PnをサブプログラムP1〜Pnと同じ数の入力を有するAND論理関数AGの入力と見なし、前述のサブプログラムP1〜Pn間に含まれる対を入力として有する2入力AND論理関数にこのAND論理関数(AG)を分解し、故障確率の積、すなわち、各2入力ANDゲートの出力での対ki、siを計算し、共通原因故障の一部βと暴露時間texpの補数により、OR関数を共通原因故障に適用することにより得られる数値、すなわち、共通原因故障の一部βにより乗算されるサブプログラムP1〜Pnの全ての対ij間の対kij、sijに加える事前の動作の結果の関数として前述の確率目標gを計算する。
図8には、先程説明した論理関数を実施することによる、行われる確率目標gの計算の動作が論理回路を介して示されている。参照符号AGで示されているのは、各サブプログラムPi、カバレッジki、および安全側故障の一部siを入力(式1の例ではk1、s1およびk2、s2)として受け取る先程説明された、複数の2入力ゲートに分解可能なn入力ANDゲートである。この出力は、共通原因故障を引き起こし得る故障の一部の補数であるl−βで乗算される。ANDゲート(FTA演算で想定される)により、暴露時間との積の計算が可能となる。参照符号OGで示されているのは、共通原因故障カバレッジkijと共通原因安全側故障の一部sijを入力(例ではkl2、sl2)として受け取る2つのサブプログラムPiおよびPjに関するマルチ入力ORゲートである。この出力は、共通原因故障を引き起こし得る故障の一部であるβで乗算される。次いで、ゲートOGTは、ゲートAGの出力とゲートOGの出力の合計を計算して、式(1)の故障目標g12の一般形式gを算出する。
この方法を特徴づける特性の1つは、故障カバレッジ値kl、k2、およびkl2が、3つの寄与の組み合わせとして規定されることである。:
stl、すなわち、診断型自己テスト動作Astlを実行することにより(自己テストライブラリ50により実行される、具体的には、モジュール15上に存在するモジュール51と協働して)保証されるカバレッジの一部。
chk、すなわち、プログラムP1とP2の中間結果の比較を行うことにより、すなわち、自己テスト動作Achkを実行することにより(比較要素60で実行される、具体的には、制御モジュール15上に存在するモジュール61と協働して)、保証されるカバレッジの一部。
sys、すなわち、自己テスト動作Asys(好ましくは、マルチプロセッサ10のモジュールとモジュール15のモジュールの間の協働により、プログラムP1とP2が実行される温度およびプロセッサC1、C2の電圧などのマルチプロセッサのアーキテクチャ10のシステムパラメータ間、および基準値または限界値、すなわち範囲Rattで実行される)により得られるシステム自己テストデータDsysを比較することにより保証されるカバレッジの一部。
具体的には、プログラムP1およびP2のカバレッジkl、k2、ならびに共通原因のカバレッジkl2は下記の式で表される。:
Figure 2017527895
集合論の規則により、UNION演算子
Figure 2017527895
が、それらの個々の故障カバレッジの関数としての2つのカバレッジを組み合わせる。
プロセッサC1上で実行されるプログラム内のライブラリ50に関連する自己テストライブラリkstl1のカバレッジ目標、プロセッサC2上で実行されるプログラム内のライブラリ50に関連する自己テストライブラリkst12のカバレッジ目標、および、共通原因故障(したがって、構造およびプログラミング)をカバーするためのプロセッサC1および/またはプロセッサC2上で実行されるプログラム内のライブラリ50に関連する自己テストライブラリkstl12のカバレッジ目標は、パラメータβ、tおよびs1、s2、ならびにs12の関数としての故障確率目標g12を得るために決定される。
したがって、実際には、この方法は、安全アーキテクチャにおいて、カバレッジkstl、kchk、ksysが関連する3つの異なるタイプの自己テスト動作Astl、Achk、Asysと、自己テスト動作AstlまたはAchkまたはAsysのタイプごとの機能安全においてプログラムPが分解される所与の数のサブプログラムP1〜Pnと、を提供し、カバレッジkstlまたはkchkまたはksysの新しい数値が、式(1)で表されるものによる他の2つのタイプの自己テスト動作から派生した数値と伴に、そのシステムに関して規定される故障確率目標gに重点を置くように、自己テスト動作AstlまたはAchkまたはAsysのパラメータを規定することにより、前述の自己テスト動作AstlまたはAchkまたはAsysを各サブプログラムP1〜Pnおよび/またはプロセッサ11に関連付ける。
本明細書に記載される方法のさらに別の様態に従うと、
2つのプロセッサC1およびC2に関する各自己テストカバレッジkstl1、kstl2、およびkstl12を用いて規定される自己テストライブラリ50に基づく前述の診断型自己テスト動作Astl
比較カバレッジkchkを有するプログラムP1およびP2の中間結果間(アプリケーション自己テストデータDchk)の比較の動作Achk、および
プログラムP1およびP2が実行されるプロセッサC1、C2のシステム自己テストデータDsysとシステムカバレッジksysを規定する予想範囲Rattとの間の比較の動作Asysは、
マルチプロセッサ10内では実行されないが、マルチプロセッサ10とは独立したさらに別の要素である制御モジュール15により順序通り実行される。これは、マルチプロセッサ10と制御モジュール15との間のデータのやり取り(メッセージMC)により実行される。
比較カバレッジkchkは、各比較でやり取りされるデータ量qの全体の量に対する関数として、目標時間Tに対するデータ交換期間t(その反対がデータ交換頻度f)として決定され、通常、上記の機能安全規格の処理安全時間(PST)または耐故障時間間隔(FTTI)に応じて計算される。
Figure 2017527895

データ交換期間tは、安全実行時間Tに対応する。
式(1)および式(2)から、カバレッジkl、k2、kl2は、比較カバレッジkchkの値に依存し、故障確率目標は、kl、k2、kl2の関数であることが分かる。したがって、故障確率目標gを考慮して、やり取りされるデータ量qの値およびデータ交換の頻度fの値の大きさが決められ、これにより、式(1)および式(2)にその数値が入力されると、故障確率目標gに重点が置かれるよう、比較カバレッジkchkにより数値が想定されることが分かる。
上記の通り決定される目標値に対するカバレッジkstl1、kstl2、kstl12、kchk、およびksysの対応関係をシミュレーション中に故障注入を行うことによりテストする。
したがって、本明細書に記載される方法では、機能安全が設けられる電子システムに関連して所与のプログラムPを実行し、プログラムPをサブプログラムに分解する動作、および故障目標をサブプログラムのカバレッジにリンクさせる関係(式(1))に従って、自己テスト動作を3つの別々の動作、すなわち、診断テストを行う自己テストAstl、システム値を監視する自己テストAsys、中間結果を比較する自己テストAchk、に分割する動作を実行し、これらが、今度は、3つの自己テスト動作Astl、Achk、Asysのカバレッジkstl、kchk、ksysの関数として規定され、3つの自己テスト動作にそれぞれ割り当てられるカバレッジ目標の正確な特定を可能にし、同様に、効率的に目標を分配することを可能にする。
図1に示されるアーキテクチャは、さらに、監視および制御メッセージMCをやり取りするための通信プロトコルPLを介して外部モジュールおよび制御モジュール15と協働して前述の自己テスト動作を実行する。前述のモジュールは、プロセッサが設けられる集積回路に含まれ得るが、本明細書では、「外部モジュール」とは、プロセッサ11の外部のモジュールを意味する。つまり、記載される方法では、1つの同じ単一プロセッサまたはマルチプロセッサの処理システム内で自己テストデータを生成しチェックする既知のシステムで実行される自己テスト動作とは異なり、この自己テスト動作では、単一プロセッサまたはマルチプロセッサ処理システム内に自己テストデータを生成するが、別の独立要素、すなわち制御モジュール15を介してチェックを実行することにより自己テスト動作を完了する。
上記およびその他の様態をより詳細に説明するために、図3には、本明細書に記載されるISO/OSIタイプのソリューションの実施形態の抽象概念のモデルが、物理層とソフトウェア層の階層を通して、概略的に示されており、これらの層が通信プロトコルPLも表している。
前述の通信プロトコルPLは階層レベルで実施され、アプリケーション層(図3のL4)のメッセージがプログラムPにより実施されるプロトコルPL内に密封され、下部レベルで(図3の層L2)、STL50に関するメッセージが加えられる。図3に示される通り、制御モジュール15は、前述の階層レベルに対して正反射するように通信プロトコルPLを実施する。図6により詳細に示される通り、前述のプロトコルPLは、異なるプロセッサモジュール11の異なる識別子IDに関する異なるパケットを密封可能な階層フレーム内に監視および制御メッセージMCを並べ、分析と比較を行うために制御モジュール15内で事前に並べられた処理ユニットに向けて送信する。次に、参照符号VCで示されているのは、特定のシステム層に対応する論理チャネルであり、参照符号IDで示されているのは、処理要素を参照する物理チャネルに対応する識別子であり、参照符号C1〜Cmで示されているのは物理コアであり、参照符号V1〜Vmで示されているのは、仮想マシンである。具体的には、プロトコルPLでは、パケットタイプのメッセージMCは数値に関して、
それらの属する論理チャネルVCの機能としてのメッセージMCの階層化専用のフィールドと、
メッセージMCのパケットの基本および時間シーケンスのためのフィールドと、
制御モジュール15のコマンドのフィールドと、
そのデータに対して制御モジュール15が自己テスト動作を完了しなければならないデータを含むペイロードフィールドと、を含む。
この制御モジュール15は、エラーの検知および/または修正を可能にするアルゴリズムにより、メッセージMCのコンテンツの保全性のチェックを実行するようさらに構成される。アルゴリズムCRC32をエラー検知アルゴリズムとして用いることが好ましい(図7ではモジュール112aに実装される)。
図3の物理階層レベルおよびソフトウェア階層レベルの図をさらに詳細に説明すると、参照符号L1で示されるのは、マルチプロセッサ10に対応する、ハードウェア用の物理層であり、複数のコアC1〜Cmおよび入力/出力モジュールIOを含む。これは、通常、1つ以上の集積回路により実装される。
参照符号L2で示されているのは、仮想マシン17の管理用のモジュール(通常「ハイパーバイザ」と呼ばれるソフトウェアコンポーネント)により代表されるスーパーバイザ層L2、であり、このスーパーバイザ層は、独立ユニット(いわゆる「ゲスト仮想マシン」)として使用可能になるよう、仮想化レベルL3で対応するオペレーティングシステムでn個の仮想マシン管理V1〜Vnを利用可能にする物理層L1の既存のハードウェアを仮想化する機能を有する。仮想マシン17を管理するためのモジュールが、種々の仮想マシンV1〜Vn、および対応するサブプログラムP1〜Pnを保証する。これらのサブプログラムが、プログラムPから、例えば、手動で、分解され、プログラムPのための必要な所与の特性を有する。あるいは、前述の分解動作は保護されてなくてもよく、アプリケーション自体を修正する、あるいはそのオペレーティングシステムを修正することにより保護されてもよい。機能安全のアプリケーションのフィールドでは、前述の特性には、通常、リアルタイムの実行および異なる処理の実行間の不干渉の保証も含まれる。その代り、前に述べた通り、本明細書に記載される方法では、前述の特性は、故障確率目標gだけを考慮する、あるいは故障確率目標gも考慮する。一般に、仮想マシンの数nは、プログラムPから分解されるサブ処理P1〜Pnの数と同じであり、好ましい例では、n=2である。1つの同じコア上で複数の仮想マシンを得ることができるため、コアの数mは、n以下であることが好ましい。
前に述べた通り、本明細書に記載される仮想マシン17を管理するためのモジュールは、STL50に対応するソフトウェアコンポーネントを含み、各コアC1〜Cm、およびその下部に位置するハードウェアすなわち物理層L1を構成する周辺装置の機能の保全性に対するテストを導入して、前述の下部ハードウェア内で発生しカバレッジkの所定のパーセンテージでランダムなタイプの潜在的な故障を検知することを保証する。同類のマルチプロセッサの場合、ライブラリ50が1つだけしか存在しない場合もあり得る。ソフトウェアコンポーネント、本明細書ではSTL50の構成要素(または非同類のマルチプロセッサの場合、STL50の複数の構成要素)が、仮想マシン管理17を管理するためのモジュール内に統合される方式は当業者には既知である。既知の仮想化システムが設けられる、そのようなタイプのモジュール(例えば、ハイパーバイザ)が、通常、付加的な構成要素の統合を可能にするユーザインターフェースに存在する限り、仮想マシン管理17を管理するためのモジュール内でSTL50の構成要素を簡単に統合することができる。したがって、図3に示される通り、STL50の構成要素を付加的な構成要素として統合することは可能である。
アプリケーション層L4は、プログラムPから分解された、仮想マシンV1〜Vn上で実施されるサブプログラムP1〜Pnのレベルに対応する。このアプリケーション層L4に関連するのは、通常、チャネル中間結果間の比較を通してアプリケーション自己テストデータDchkを生成する自己テスト動作を実行する、具体的には、アプリケーション比較60(具体的には「アプリケーション安全層」(ASL)と呼ぶ)に関する処理P1〜Pnごとに1つのソフトウェアモジュールすなわちコンポーネントである。より具体的には、上記に記載した通り、本明細書に記載される方法では、アプリケーション比較ソフトウェアモジュールすなわちコンポーネント60(具体的には、処理P1〜Pnごとに1つ)が、アプリケーション自己テストデータDchkを取得し、このデータを制御モジュール15内でチェックし比較する。
図3では、図6で詳細に示されるハードウェアコンポーネントとして制御モジュール15が示されている。しかし、この制御モジュールは同様にソフトウェアとして実装することもでき、その結果発生するコンポーネントにより、コスト/性能が異なる。純粋な例として、制御モジュール15をさらに別のプロセッサにより実行されるプログラムとして実装することも可能である。
この制御モジュール15により、自己テスト動作Astl、Asys、Achkを完了させるためにやり取りされる監視および制御メッセージMCは、次の2つの明確なタイプに分割される。
例えば、マルチプロセッサ10のコアC1〜Cmの電圧および/または温度の測定を含む、アーキテクチャ上で測定されるシステム値を自己テストする動作Asysにより生成されるシステム自己テストデータDsys、および、自己テストライブラリ50の特定の診断型自己テストの手順の1つに従って行われる計算の中間結果に関する診断型自己テストデータDstlなどの、マイクロプロセッサ10上で実行されるプログラムPの特性とは関係ないデータを含むメッセージ。
アプリケーション比較ソフトウェアモジュール60を介するサブプログラムP1〜Pn間の比較動作Achkにより生成されるアプリケーション自己テストデータDchkなどの、プログラムPの処理の中間結果に関するデータを含み、これに伴いプログラムPまたはアプリケーション自体に依存するメッセージ。
この制御モジュール15は、制御モジュール15内に含まれる対応する自己テスト論理構成要素51およびアプリケーション比較論理構成要素61を用いて、協働および対応する自己テストデータDstlおよびDchkを含むメッセージMCのやり取りを行って、マルチプロセッサ10内で開始される自己テスト動作Astl、Asys、Achkを完了する。図6に示される通り、前述の分割は論理タイプの分割であるが、構成要素51および61は、1つのおよび同じセットのハードウェアモジュールにより実施することができる。例えば、これは、次のように行われる。:
制御モジュール15は、前述の制御モジュール15内に格納される事前に計算された予想値Dstlaのセットを用いて、自己テストライブラリ50の特定の診断型自己テストの手順のうちの1つに従って、マルチプロセッサ10のコアC1〜Cm上で行われる計算の中間結果に関する診断型自己テストデータDstlの比較を論理モジュール51内で行うことにより、診断型自己テスト動作Astlを完了し、潜在的な共通原因故障(CCF)を検知し、前述の診断型自己テストデータDstlと事前に計算された予想値Dstlaのセットとの間の潜在的な差は、マルチプロセッサ10のコアC1〜Cmの論理回路内またはその状態の故障の影響(恒久的な、あるいは一時的な)を示し、
それと同時に、制御モジュール15は、事実上、仮想マシンまたはコアのどちらかのプロセッサモジュール11の対により独立して生成されるアプリケーション自己テストデータDchkの論理モジュール61内で連続して比較を行うことにより、2つの対応する安全チャネル間のクロスチェックの機能を実行し、
同様に、制御モジュール15内に格納されるシステム自己テストデータDsysが予想範囲Ratt内に入るかどうかをチェックすることにより、制御モジュール15は、アーキテクチャ上で測定されるシステム値の自己テスト動作Asysをチェックと伴に完了する。
この制御モジュール15は、例えば、比較に関する次の基準に従って、監視および制御メッセージMC上で前述のチェックを行う。:
メッセージMCの着信の順番、および、比較に関して考慮されるサイクルに属しているかどうかだけを考慮し、したがって、別の実施形態では考慮されているかもしれないが、個々のメッセージMCの着信の絶対時間を考慮しないことが好ましい。
制御モジュール15は、前に示された通り、2つのプロセッサモジュール11のそれぞれのシーケンス内の順番を十分に尊重して、異なる供給源、すなわち、異なるプロセッサ要素11(この場合2つの)からのメッセージMCに仲介ができるよう構成される。
制御モジュール15は、サイクル時間Tcycにより規定される各サイクルのチェックを完了することにより、サイクルベースで独自のチェックを適用する。
次に、自己テストライブラリ50および補足的論理モジュール51をより詳細に説明する。
STL50は、次の2つの機能を有する。:
マルチプロセッサ処理システム10の診断型自己テスト動作Astlにより示される自己テスト動作を実施する。計算の結果、すなわちマルチプロセッサ10により、テスト自体が行われるときに処理される診断型自己テストデータDstlと、事前に計算され、格納される正確な結果、すなわち予想結果Dstlaとを比較して、この診断型自己テスト動作Astlは実施され、この診断型自己テスト動作Astlに割り当てられたプログラムシーケンスをマルチプロセッサ10が計算し正確に実行しているどうかをチェックする。マイクロプロセッサ11の様々な回路要素に最も完全、広範、網羅的に関与するために、この計算結果Dstlは、通常、演算および論理タイプの動作ならびに対応動作のシーケンスから取得される。前に記載された通り、本明細書に記載される方法およびアーキテクチャでは、予想値Dstlaと比較する動作は、外部の処理モジュール、制御モジュール15との協働により実施される(すなわち、図3の階層表現内のモジュール50および51の協働動作を用いて)。
システム自己テストデータDsys、すなわち、各マイクロプロセッサの動作および/または動作の状態に関する全パラメータ、好ましくは、マイクロプロセッサの動作電圧、およびシステムの温度、またはマイクロプロセッサ内部の温度の数値を測定し、この機能は、マイクロプロセッサの潜在的な故障の状況、具体的には、マイクロプロセッサの共通原因故障を判定可能な状況を特定する上で特に重要であり、別のライブラリ内に供給され、論理モジュール51内の予想範囲Rattに対してチェックされ得ても、前に記載した通り、前述のシステム自己テストデータDsysは、ライブラリ50内に含まれる対応プログラムを介して取得されることが好ましい。
具体的には、診断型自己テストデータDstlを供給する診断型自己テスト動作Astlに関して、自己テストコードは、通常、参照符号202で示されるテストセグメントのセットで構成されるが、これに関して、図7を参照してさらに詳細に説明する。
この場合、集積回路レベルで、かつ具体的には、個々のコアC1〜Cm、または個々のプロセッサ上で実施される「故障モード影響診断解析」(FMEDA)タイプの分析目標に従って、マルチプロセッサ処理システム10のマイクロプロセッサの1つ以上の機能ユニットをテストすることに、前述のテストセグメントが特化していることが好ましい。前述のFMEDAは、例えば、本出願人の名前で提出されている欧州特許第1,980,964Al号明細書の特許出願に記載される次の手順で実行することができる。各コアC1〜CmのSTL50を構成するテストセグメントの全体目標は、カバレッジ、特に、自己テストカバレッジkstlまたはシステムカバレッジksysのレベルを達成して、具体的には、コアC1〜Cmを構成する全体の論理回路上で事前に決定されるカバレッジ制限f(k)を満たすことである。このことは、通常、進んだアーキテクチャ(スーパースカラー、複数の問題タイプの深いパイプラインを有する)を有するマイクロプロセッサにとって非常に難しい課題であり、自己診断を行っているマイクロプロセッサの複雑さが増せば増すほど難しくなる。適用分野に関連する機能安全の規格により、システムおよびシステムの種々の構成要素の保全性に関する最低限の要求事項が規定されている。
したがって、ライブラリ50を構成する種々のセグメントは、全体として、マイクロプロセッサ全体すなわちコア上で、関連の安全規格で規定されるレベル以上の保全性のレベルを可能にするカバレッジkstlの目標値を実現するよう(式1を適用することにより本明細書に記載される計算と同様の計算手順により)設計されなければならない。
診断型自己テストライブラリ50のプログラムは、通常、テストされるマイクロプロセッサの種々の機能ユニット対する拡張性、およびマイクロプロセッサの各機能ユニット上のより簡単なユニット(テストセグメント202)の専門化を実現するために、モジュール式の形態で構築されている。
図7には、これに関連して、参照符号200で示される自己テストライブラリ50の自己診断プログラムの概略図が示されている。プログラム200に含まれるテストセグメント202は、周期的かつ定期的にライブラリ50の自己診断プログラムを起動するソフトウェアのためのインターフェースを供給する「テストインターフェース201」と呼ばれるソフトウェア層により、実行されるテストセグメントの識別子ID#を示すことにより起動する。テストセグメント202は、パス/失敗スタンプを送信することにより回答する。
テストセグメント202の構造も、連続するステージによるモジュールタイプで構築され、通常はハイレベル言語(ANSI−C)で書き込まれる(すなわち、自己テストを受けているマイクロプロセッサのアーキテクチャとは関係ない)プリアンブル203およびポストアンブル204を含む。これらのプリアンブル202とポストアンブル204は、全変化を管理するより高い層へのインターフェース機能、およびこれらのソフトウェアモジュールにより処理されるとテスト結果を悪化させる全てのエラーの検知を可能にする技術と伴に管理されるテストの結果に特化する。
テストセグメント202の中心部は、一連のモジュール206により示される低いレベルコード(通常、アセンブラ)で書き込まれ、「ASMコアコード」として表されるマイクロプロセッサのアーキテクチャに特化する。これらのモジュール206は、マイクロプロセッサ自体の潜在的な故障を発動させて観察するために狙った方法で種々の論理および演算ならびにマイクロプロセッサの一連のユニットに刺激を与える限り、自己テストを効果的に実行する要素である。低いレベルコードの種々のモジュール206は、高いレベルの言語で書き込まれるルーチン205により管理され得る。このテストセグメント202は、モジュール205および206により、チェックの最後に失敗/パススタンプを生成するスタンプカルキュレータ207を含む。テストセグメント202は、安全解析により規定される故障モードの所与のセットを考慮して、故障に対するカバレッジ目標を得るための低いレベルのコードの複数のモジュール206を含む。
次に、自己テスト解析の分配について、具体的には、プロセッサ11上のSTL50と制御モジュール15上の論理構成要素51の間の診断型自己テスト動作Astlについて説明する。
STL50の動作は、STL50を構成し中間結果を生成する種々の論理回路の潜在的な寄与ができるだけ多く必要なコードシーケンスなどのコードシーケンスを実行することにより自己をテストする、マイクロプロセッサの能力に基づき、この中間結果が適切に蓄積されて、中間結果内の潜在的なエラーが相殺できないため、故障がないと想定して事前に計算された同じ数値と比較するときに、スタンプを生成し、これにより、テストを受ける論理回路を悪化させているかもしれない潜在的な故障の検知の最も高い信頼を産み出す。故障を発動し検知する能力は、故障を発動させるSTL50の能力と、中間結果を蓄積するために用いられる数値法であって、そのためこの蓄積処理中は、中間結果内の全ての潜在的な差が相殺されない数値法と、の両方に依存する。明瞭にするために、様々なタイプの結果、すなわち、中間結果、蓄積、およびスタンプがマイクロプロセッサ内のSTL50により作りだされるが、本実施形態によれば、最後の2つは高い頻度で同じである。蓄積は、通常、中間結果の数を減らすために必要であり、そうでない場合には、扱いづらくなる。次に、簡単にするために、この定義では、上記に示した3つの全てのタイプの結果を含む中間結果を参照する。
単一マイクロプロセッサ内の故障の発動の検知は、下記の2つの別々の機構により行われる。
a)自己テストソフトウェア自体による検知、この検知により、診断型自己テストデータDstlと、事前に計算されたもの、すなわち、予測結果Dstlaとを比較することで差を検知することにより、エラーが判定され、プログラム的に対応手段が適用されて、検知されたエラーが示される。これは故障によりプログラムフローの制御に悪影響を及ぼさないが、データの演算/論理計算の一部だけに悪影響が及ぶ通常の場合である。
b)STL50のテストを実行することにより得られる、故障の発生に伴う刺激、この刺激により、エラーを通知する外部の監視装置により監視される実行時間t上のテスト極値を破る、プログラムPの実行シーケンス内のエラーが判定される。これは故障によりプログラムフローの制御の論理責任に悪影響が及ぼされる通常の場合である。なお、この監視装置はシステムの専用要素、あるいは、別のコアでよく、このコアがクロスチェックを実行することにより、考慮されるマイクロプロセッサ上のテスト50の実行の誤作動または一時的な挙動を検知する。
前述の内容では、図3に示されるSTL50は、自己テスト処理あるいは中間結果(または、部分結果、中間結果の蓄積、中間結果と予想値との間の比較の結果)に関するデータを含む診断型自己テストデータDstlを生成し、このデータが、外部モジュール、制御モジュール15に送信され、これらのモジュールが、診断型自己テストデータDstl(機構a)とプログラムフローの制御との間のクロス比較を実行する(このように、上記に記載される通りSTLテストの刺激の機構bとの関連で外部監視装置の機能を実行する)。
このSTL50は、システム構成、すなわち、システム自己テストデータDsysを含む測定値をさらに生成する。
STL50は、マルチプロセッサ10の物理コアC1〜Cm上で実行され、前述の診断型自己テストデータDstlおよびシステム自己テストデータDsysを含む、制御モジュール15への対応メッセージMCを生成し、この制御モジュール15が、論理構成要素51を用いて前述のメッセージを処理する。
この論理構成要素51により行われる処理は、次の動作を実行するよう構成される。:
マイクロプロセッサC1〜Cmにより行われる比較の結果の実行フローのチェック(チャネル内)を実施すること、および
各マイクロプロセッサC1〜Cm上のライブラリ50のテストを処理することにより得られる部分結果上でクロスチェック(チャネル間)を実施することの両方により、
診断型自己テストデータDstl上でクロスチェックを実行する動作。
比較の結果すなわち部分結果が、所定の時間窓内に(最大待ち時間と最小待ち時間により特徴づけられる)かつ所定の順番で送受信されているかチェックすることによる、適切な一時実行のチェックを実行する動作。これにより、フローの実行中の潜在的なエラーの検知が可能になるが、前にも示した通り、STL50のテストの実行フロー中にエラーを検知する機構では、外部構成要素の支援が必要となる。
測定値Dsysが、測定値(一般には、動作電圧と温度)の変動の規定の範囲内に収まっているかどうかのチェックを実行する動作。さらに、テスト50のライブラリにより取得され、実行中のシステムの状態を示す、システム構成の整合性のチェックも実行することができる。
図6に示される通り、たった今記載したチェックのうちの1つ違反により、制御モジュール15によるアラームALの生成、および安全のアプリケーションに必要な対応手段の実施が示唆される。前述のアラーム生成機能は、アラームをモジュール16(システム10内のシステムリソースを制御するモジュール)に送信し、例えば、リセットを実施することができる、あるいは、システムの安全状態に影響が及ぶ場合は、いつでも供給電圧を取り除くことができる。
自己テストライブラリ50に関連する動作フローの一例は次の通りである。
ずっと繰り返す{
スーパーバイザ層上の、または直接各物理コア上のマルチプロセッサ10上で実行される、自己診断ライブラリの全てのプログラムからデータを受け取る
コア、仮想チャネル、およびタイプに従ってデータを分割し、構成する
ライブラリ50の各プログラムに対応する中間結果を並べ、対応する中間結果と最大待ち時間の間の最大スキューをチェックする
ライブラリ50の中間結果間のクロスチェックを実行し、エラーを検知する
異なるコアから測定値を集め、対応する中間結果と最大待ち時間との間の最大スキューをチェックする
その範囲でチェックを実行し、違反を特定する
図6に示される通り、モジュール116を参照すると、制御モジュール15は、数値、順番、時間(待ち時間、スキュー、およびタイムスタンプを用いる絶対着信時間)、および範囲(コンパレータを有するモジュール114内の)のマルチチェックを実行する。具体的には、自己テストデータDstl、Dchk、Dsysに関して次のチェックを行う。
・中間結果が同じものか、あるいは、修正されたものかを確認する、数値のチェック。
・メッセージ内のカウンタよってメッセージの順番が正確かどうかを確認する、順番のチェック。
・進行中の実行サイクル内の予想最小時間および予想最大時間と、かつ/または、他のコアからの対応メッセージと、メッセージの着信の時間とのを比較する、着信時間のチェック。
・測定値が所定の範囲Ratt内に入っているかどうかを確認する、範囲のチェック
各チェックの違反は、制御モジュール15により管理され、この制御モジュール15がエラーを通知し、モジュール16にアラームを送信する。
次に、制御モジュール15内に存在するアプリケーション比較ソフトウェアコンポーネント60、および補足的論理モジュール61についてより詳細に説明する。
したがって、図3に示す通り、仮想マシンV1〜Vn上で実行されるサブプログラムP1〜Pn内に存在するのは、ASLすなわちサブプログラムP1〜Pnの処理の部分結果の検知の手順を実施するアプリケーション比較ソフトウェアコンポーネント60である。これらのアプリケーション比較ソフトウェアコンポーネント60はまた、前述の部分結果を蓄積し、安全機能SFを有するプログラムにより蓄積された結果(例えば、CRC巡回冗長検査の蓄積)上の差を検知する。前述のアプリケーション比較ソフトウェアコンポーネント60はまた、同じく本明細書に記載される方法の主題を形成するプロトコルPLに従って、蓄積された結果、およびアプリケーションデータDchkのフレーム内の差も構成する。
既に述べた通り、アプリケーション比較ソフトウェアコンポーネント60はまた、対応するアプリケーション比較論理構成要素61を制御モジュール15内に有する。アプリケーション自己テストデータDchk上で、制御モジュール15は、具体的には、アプリケーション比較ソフトウェアコンポーネント60により生成されるアプリケーション自己テストデータDchkのパケット内に出現する、アプリケーション自己テストデータDchkの数値、それらの順番、およびクロックタイムに基づいて、情報の整合性をチェックすることにより、クロス比較を実行する。
通信プロトコルPLについてさらに詳細に説明する。自己テスト動作Astl、Asys、Achkの構成では、メッセージを生成したソフトウェア層L2〜L4およびメッセージ自体の目的に従って、プロトコルPL内の異なるタイプのメッセージのセットを構成する。
次の論理チャネル仮想チャネルVCを規定する。各論理チャネルVCにより、ID0およびID1により示される多くても2つの異なる物理チャネルから着信するメッセージが運ばれる。
VC0:安全VC−アプリケーション層L4において、安全機能SFを有するプログラムから発生する安全論理チャネル(識別子ID0およびID1を有する物理チャネル)。
VC1:スーパーバイザVC−本実装形態に従った、スーパーバイザ層L2またはアプリケーション層L4から発生する論理チャネル(識別子ID0を有する物理チャネル)。
VC2:Q&S−本実装形態に従った、スーパーバイザ層L2、または仮想マシンおよびオペレーティングシステム層L3から発生する、システム上でメンテナンス動作(品質およびサービス)を実行する、品質−および−サービス論理チャネル(識別子ID0およびID1を有する物理チャネル)。
2つの物理チャネルを有する好ましい実施形態では、
論理チャネルVC0およびVC2は、2つの物理チャネル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を参照するが、最悪の場合、この伝達が連続して、プログラムPのサイクル時間と同じサイクル時間Tcycで行われなければならない限り、メッセージ通信チャネルMC上の伝達のトータル時間は、システムの診断テスト間隔DTIを超えてはならないことに留意されたい。
メッセージのシーケンスSq上で行われる、制御モジュール15によるチェックを図5の図で説明する。第1の横列内に現われるのは、階層レベルL、およびそれに関与する要素、すなわち、プロセッサモジュールC1またはC2あるいはスーパーバイザモジュール17のどれかである。識別子ID0およびID1でマークされるメッセージMCは、メッセージSq(Sq1およびSq2)の種々のセットに密封され、様々な論理チャネルVC内に含まれる。制御モジュール15により、これらのメッセージに対して、次の2つのタイプのチェックが行われる。:
チャネル内チェックITC(図5には図示されず)、1つで同じ論理チャネルVCに属するメッセージ、および1つで同じ識別子IDに属するメッセージに適用されるチェック。
チャネル間チェックINTC、異なる論理チャネルVCに属するメッセージMCに適応される(例えば、ID1の第1のメッセージSq1の0,1と比較されるID0の第1のメッセージSq1の0,0、およびID1の第2のメッセージSq2,1と比較されるID0の第2のメッセージSq1の2,0など)チェック。:これらのチャネル間チェックINTは、各チャネルから着信するメッセージの整合性に関するチャネル内チェックITCに加えて行われ、チャネル内チェックITCよりも高いレベルを有する。
図5には、その発生元によってメッセージが示されており、そのメッセージの伝達に用いる一時シーケンスによって示されているわけではないことを強調しなければならない。
図6を参照して説明した通り、記載される通信プロトコルPLの構造、およびメッセージのセット上で実行されるチェックにより、制御モジュール15の機能アーキテクチャをその実装可能なマイクロアーキテクチャに落とす、直接対応を見出すことができる。
前に述べた通り、実装形態は制御モジュール15に関するソフトウェアタイプと、例えば、FPGAディバイスあるいはASIC内の専用論理回路を有するハードウェアタイプと、の両方で実現可能である。
図6には、制御モジュール15内に統合される主な機能が示されている。
図6に示されるレベルは、専用ハードウェアユニットを反映しているが、FPGAディバイスあるいはASIC内の専用ハードウェアとしてではなく、例えば、マルチプロセッサ10から分離したプロセッサモジュール内の組み込みソフトウェアとしてその実施形態を提供するための機能ユニットも同様に反映することができる。純粋な例として、図9には、システム・オン・チップ(SoC)1000上で提案されるアーキテクチャの潜在的な実装形態が示されている。この実施形態には、具体的には、2コア対称マルチプロセッサを有し、2つのプロセッサ11が「ハードマクロ」1010に含まれ、一方、制御モジュール15は、SoC1000のプログラム可能部分1020(FPGA)に実装される冗長プロセッサ上で実行されるソフトウェアモジュールである。
図6に戻ると、参照符号112により示されているのは、通信バス12に向けられるバスインターフェースであり、構成および状態インターフェースモジュール112c、および種々のチャネルID0およびID1のメッセージのためのバッファー112bを含む。このバスインターフェースは、着信するパケット上のCRCタイプのチェックを行うためのモジュール112aをさらに含む。
参照符号113で示されているのは、タイミングをチェックする、具体的には、実行時間がチェックに関する極値設定内に残っていることをチェックする、タイミングモジュールである。
参照符号114で示されているのは、チャネル間チェック(INTC動作)を行うためのモジュールであり、このモジュールは、チャネルのデータのチャネル間比較を行うためのコンパレータ114a、およびハードウェア故障インジェクタ114bを含む。
参照符号116で示されているのは、チャネル内チェック(ITC動作)を行うためのモジュールであり、このモジュールは、着信するデータの着信時間、順番、および数値をチェックするモジュール116a、116b、116cを含む。
メッセージ発信モジュール115により、前述のモジュール114および116にデータが供給されるが、このメッセージ発信モジュールは、直接メモリアクセス(DMA)モジュール116aおよびメッセージ制御モジュール116bを含むことが好ましい。
参照符号111で示されているのは、プログラムマブルイベントルータを介してアラームをモジュール16に送信するエラー制御装置である。モジュール114および116内の物理チャネルID0とID1の間の比較、または数値の予想範囲に対する比較、あるいは事前に計算された結果に対する比較から検知される、異常な条件から派生したデータおよびアラームに関する情報および信号は、基準の安全規格により要求される通り、(論理的、電気的、および物理的視点から)別々に維持される(例えば、IEC61508「安全設計勧告」を参照)。再度、図6を参照すると、アラームが点線で示されている。示されるアラーム供給源は、次の比較による異常の検知に関する。:
チャネル間チェックINTC(モジュール114)−このタイプの比較には、数値の比較、例えば、マルチプロセッサの異なるコアにより計算されたものと同じと予測される数値の比較、および事前に計算された予想値の比較が含まれ、これらの比較によりチャネル間アラームAlintcが生成される。
チャネル内チェックITC(モジュール116)−このタイプの比較には、事前に計算された予想値との比較、すなわち、所定の基準範囲(例えば、動作温度または動作電圧の範囲)に対するチェックが含まれ、これらの比較によりチャネル内アラームAlitcが生成される。
タイミング上のチェック(モジュール113)、例えば、実行時間がチェックに関する極値設定内に残っているかどうかに対するチェック。これらのチェックにより、タイミングアラームAltが生成される。
考慮されている例における公式な視点からの構造およびメッセージの構成の異常、インターフェース112への入力でメッセージのテキスト上でCRCモジュール112aにより行われるCRCタイプのチェックの故障。このチェックにより、アラームALcが生成される。
最後に、制御モジュール15は故障注入モジュール117を含む。
図6の説明で理解できる通り、論理モジュール51および61は別々には実施されないが、各論理モジュールに関して必要な機能は、モジュール114、116および113により基本的に実施される。
したがって、上記の説明から本発明の利点が明らかとなる。
記載される方法およびアーキテクチャは、好都合にも、単一の集積回路上のマルチプロセッサ内で高度に統合されたものであっても、マルチチャネルシステムまたは単一チャネルシステムに関する機能安全の所与の要求事項を満たすことが可能である。
上記のプログラムの分解の手順と、自己テスト動作を3つの別々の動作、すなわち、診断テストによる自己テスト、システム値の監視による自己テスト、および中間結果の比較による自己テストへの分割と、対応する式(1)と、により、3つの自己テスト動作にそれぞれ割り当てられるカバレッジ目標を正確に特定することが可能になり、同様に、効率的な目標の分配、すなわち、実現するために著しい設計の手間を必要とする動作に関する目標を下げ(記載される方法が適用される特定のタイプのシステムに関して)、その代り、それに関連して実行が簡単な動作に関する目標を上げることも可能となる。
さらに記載されるソリューションは、基本的に制御モジュール、すなわち、記載される3つの異なる自己テスト動作を所与の周期すなわち頻度で実行するようプロセッサにより事前に設定された時間間隔で周期的にクエリされる独立電子タイマーモジュールにより示される要素を導入することにより、共通原因故障(CCF)の問題を緩和することができる。
具体的には、上記のことは、次の自己テスト動作を実行することにより実現する:
所定の時間窓内の事象の発生のチェックを課し、既定のシーケンスに重点を置き、前述の診断型自己テスト動作に対応する、プロセッサにより決定される、すなわち、いずれにしても計算される数値に対するチェックを行うことによる、一時タイプと数値およびシーケンスタイプの両方のチェック機能。
プロセッサにより計算された数値、あるいは、プロセッサ内、または、通常は、マルチプロセッサ内の使用可能なセンサにより測定された数値をシステム値の自己テストの前述の動作に対応する事前に計算された正確な値と比較することによる、プロセッサ内のCCFの発生の検知。
プログラムの中間結果の自己テストの前述の動作に対応する、クロスチェックに基づくプロセッサの保全性を判定するための、プロトコルの実装形態。
これに関連して、マルチプロセッサの高度に統合された均一な実施形態が、いかに、システムの最も高い性能と最も低いコストを保証するものであるかということと、しかし同時に、アーキテクチャが、より均一で高度に統合されればされるほど、防ぐこと、および/または、検知することがより重要で、難しくなるCCFの問題に対して脆弱であることが強調される。得られるはずの経済的恩恵がなくなってしまうにもかかわらず、CCFが存在するために、構造的かつ実装可能なソリューションのこのタイプが、自動車分野および産業分野の安全規格に従属するアプリケーションの世界で広く用いられていない。
記載されるソリューションにより、仮想マシン管理(例えば、ハイパーバイザ)の制御ソフトウェアと、前述の自己テスト動作を実施する専用ソフトウェアプログラムとを組み合わせることができ、それらの共同使用により、産業用アプリケーションおよび自動車用アプリケーションにおいて要求される機能安全の保全性のレベルを実現するために必要な要求事項を満たすこともできる。
さらに、記載されている方法およびアーキテクチャにより、具体的には、コア間のクロスチェックに関するサポートを有するマルチコアシステムに関して、理論および一時的な監視が可能になる。
1oo1ボーティングを有するアーキテクチャと、loo2ボーティングを有するアーキテクチャの両方に関する診断を実施、
マルチコアのハードウェアに関する情報(状態、温度、供給状態など)の監視、
自己監視、
SIL−2システムとSIL−3システム内に統合され得るIEC61508−2の規格に準拠するシステム、
ソフトウェアと伴に用いられる標準インターフェース、
構成可能な反応、
選択される実装形態の技術(FPGAまたはASIC)の最適化の可能性。
もちろん、本発明の趣旨に何ら影響を与えることなく、純粋な例として本明細書に記載される実施形態に対して、これらの実施形態の詳細は変化する可能性があり、それにより付随する請求項により規定され保護される領域から逸脱することはない。
例として見なす安全アーキテクチャでは、制御モジュール15は、ボータモジュールに関連することができ、このボータモジュールが、一般に、マルチチャネルアーキテクチャにおいて、プログラムまたはアクチュエータにより用いられる前のチャネルの出力を連続的に比較し、ボーティング技術に従って、プログラムに供給される安全出力を評価するために用いられる。ORゲートは、制御モジュール15の出力、およびボータの出力を受け取り、これらの出力間の潜在的な差を検知することができる。差を検知することにより、故障の検知の状態を判定し、この状態により、実行されているプログラムに関して規定された安全状態に達するよう、あるいは、維持するようシステムを強制する。
「ライブラリ」という用語は、本明細書では自己診断テストプログラムのソフトウェアモジュールを規定するために使用されているが、システムデータ(前に記載した通り、診断型自己テストライブラリ内に含まれ得る)の自己テストを行うためのモジュール、およびサブプログラムの中間結果間を比較するための自己テストモジュールにも適用可能である。
自己テストプログラムを含む前述のライブラリすなわちソフトウェアモジュールは、例えば、処理システムを含む、カード上で使用可能な、あるいは統合型のフラッシュメモリに格納され得、処理モジュールのRAMにロードされる。
本明細書に記載される方法では、処理システム、具体的には、マルチプロセッサシステム、および制御モジュールに言及しているが、それら自体のサブプログラムに分解する動作も、独立制御モジュールなしに、処理システムに適用される。すなわち、本開示の主題は、単一のプロセッサまたはマルチプロセッサタイプの処理システムを含む機能安全が設けられるアプリケーション用の電子システム内のプログラムを実行する方法でもあり、この方法には、安全機能を含み、前述のシステムにより実行されるプログラムを複数の並列サブプログラムに分解する動作を実行するステップと、各並列サブプログラムの実行をシステムの各処理モジュール、具体的には、前述のマルチプロセッサのアーキテクチャのプロセッサ、または前述のプロセッサのうちの1つに関連する仮想マシンに割り当てるステップと、システム内で、システムの通常動作中のプログラムのサイクル頻度に従って周期的に、前述の安全機能のフレームワーク内で各前述のサブプログラムおよびそれらが実行される、対応処理モジュールに関連する自己テスト動作を実行するステップと、が含まれ、上記の自己テスト動作には、診断型自己テストを実行する診断型自己テスト動作と、測定されるシステム値の自己テストの動作と、サブプログラムの中間結果間の比較の自己テスト動作と、が含まれ、これらの自己テスト動作が、その自己テスト動作に対応する各自己テストデータを生成することと、これらの自己テストデータのチェックの動作を実行することと、プログラムを複数の並列サブプログラムに分解する前述の動作を実行し、所与の故障確率目標に重点を置くよう、各サブプログラムまたは処理モジュールに関連する前述の自己テスト動作ごとにカバレッジ目標を得ることと、を含む。

Claims (12)

  1. 単一プロセッサまたはマルチプロセッサ処理システム(10)、および別の独立制御モジュール(15)を含む、機能安全が設けられるアプリケーション用の電子システム内のプログラム(P)を実行する方法であって、
    安全機能(SF)を含み、前記システム(10)により実行されるプログラム(P)を複数の並列サブプログラム(P1〜Pn)に分解する動作を実行するステップと、
    各並列サブプログラム(P1〜Pn)の実行を前記システムの各処理モジュール(11)、具体的には、前記マルチプロセッサのアーキテクチャ(10)のプロセッサ(C1〜Cm)、または前記プロセッサ(C1〜Cm)のうちの1つに関連する仮想マシン(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)を実行することと、
    前記別の独立制御モジュール(15)とメッセージ(MC)のプロトコル(PL)を介して前記自己テストデータ(Dstl、Dsys、Dchk)を連続してやり取りすることと、
    前記さらに別の制御モジュール(15)内で前記チェック動作(51、61)の少なくとも一部を実行することと、
    前記プログラム(P)を複数の並列サブプログラム(P1〜Pn)に分解する動作を実行して、所与の故障確率目標(g12;g)に重点を置くよう、各サブプログラム(P1〜Pn)すなわち処理モジュール(11)に関連する前記自己テスト動作(Astl、Asys、Achk)ごとのカバレッジ目標(kstl、ksys、kchk)を得ることと、を含む、方法。
  2. 前記所与の故障確率目標(g12;g)が、前記診断型自己テスト動作(Astl)により決定されるカバレッジ値(kstl)、前記処理システム(10)上で測定されるシステム値の自己テストの前記動作(Asys)により決定されるカバレッジ値(ksys)、および前記サブプログラム(P1〜Pn)の中間結果間の比較の前記動作(Achk)により決定されるカバレッジ値(kchk)の関数であることを特徴とする、請求項1に記載の方法。
  3. 前記故障確率目標(g12;g)の計算には、
    前記サブプログラム(P1〜Pn)と同じ数の入力を有するAND論理関数(AG)の入力として前記サブプログラム(P1〜Pn)を見なすことと、
    前記AND論理関数(AG)を前記サブプログラム(P1〜Pn)間に構成される対を入力として有する2入力AND論理関数に分解し、前記共通原因故障の一部(β)の補数による各2入力ANDゲートからの出力での前記故障確率と前記暴露時間(texp)の積を計算することと、
    共通原因故障の一部(β)で乗算される、サブプログラム(P1〜Pn)の対の間の共通原因故障にOR関数を適用することにより得られる値に加えられる前記先行動作の結果の関数として前記確率目標(g)を計算することと、が含まれることを特徴とする、請求項1に記載の方法。
  4. 前記サブプログラム(P1〜Pn)の前記故障確率が、サブプログラム(P1〜Pn)ごとの前記診断型自己テスト動作(Astl)により決定される前記カバレッジ値(kstl)、前記アーキテクチャ(10)上で測定されるシステム値の自己テストの前記動作(Asys)により決定される前記カバレッジ値(ksys)、および前記サブプログラム(P1〜Pn)の前記中間結果間の比較の前記自己テスト動作(Achk)により決定される前記カバレッジ値(kchk)のユニオンの関数として評価されることを特徴とする、請求項1〜3のいずれかに記載の方法。
  5. 前記システム(10)が、前記サブプログラム(P1〜Pn)を実行可能な仮想マシン(V1〜Vn)を生成する仮想マシン管理モジュール(17)を実装することを特徴とする、先行する請求項のいずれかに記載の方法。
  6. 前記さらに別の制御モジュール(15)において前記チェック動作(51、61)の少なくとも一部を実行する前記動作には、
    事前に計算され格納される予想値(Dstla)のセットを用いて行われる前記診断型自己テスト動作(Dstl)に従って、単一プロセッサまたはマルチプロセッサタイプの前記処理システム(10)の前記プロセッサ(C1〜Cm)上で行われる計算の中間結果に対応する診断型自己テストデータ(Dstl)の前記比較を実行することと、
    前記サブプログラム(P1〜Pn)の前記中間結果間の比較の動作(Achk)により生成されるアプリケーション自己テストデータ(Dchk)の前記比較を実行することと、
    格納されている予想範囲(Ratt)に対するシステム自己テストデータ(Dsys)の前記比較を実行することと、が含まれることを特徴とする、先行する請求項のいずれかに記載の方法。
  7. 前記さらに別の制御モジュール(15)が、前記自己テストデータ(Dstl、Dchk、Dsys)上で、
    前記中間結果、具体的には、前記アプリケーション自己テストデータ(Dchk)および/または診断型自己テストデータ(Dstl)が同じか、修正されたかを確認するための前記数値のチェックと、
    前記システム上で測定される自己テストデータ(Dsys)の値が所定の値(Ratt)の範囲に属しているかどうかを確認するための前記数値の範囲のチェックと、
    前記メッセージの順番が正確かどうか確認するための前記順番のチェックと、
    前記メッセージの着信の時間のチェックと、を実行するよう構成されることを特徴とする、先行する請求項に記載の方法。
  8. メッセージ(MC)のプロトコル(PL)を介して、前記別の独立制御モジュール(15)と前記自己テストデータ(Dstl、Dsys、Dchk)を連続してやり取りをする前記動作には、前記メッセージ(MC)を生成する階層レベル(L)および前記メッセージ(MC)を生成する物理チャネル(ID0、ID1)に従って、論理チャネル(VC)内で前記メッセージ(MC)を構成することが含まれることを特徴とする、先行する請求項のいずれかに記載の方法。
  9. 前記さらに別の制御モジュール(15)において、前記チェック動作(51、61)の少なくとも一部を実行する前記動作には、
    1つで同じ論理チャネル(VC)および1つで同じ物理チャネル(ID)に属するメッセージに適用されるチャネル内チェック(ITC)の動作、および
    異なる論理チャネル(VC)に属するメッセージ(MC)に適用されるチャネル間チェック(INTC)の動作を実行することが含まれることを特徴とする、請求項8に記載の方法。
  10. 単一プロセッサまたはマルチプロセッサタイプの処理システム(10)を含む、機能安全が設けられるアプリケーション用の電子システムにおいてプログラム(P)を実行する方法であって、
    安全機能(SF)を含み、前記システム(10)により実行されるプログラム(P)を複数の並列サブプログラム(P1〜Pn)に分解する動作を実行するステップと、
    各並列サブプログラム(P1〜Pn)の実行を前記システムの各処理モジュール(11)、具体的には、前記マルチプロセッサのアーキテクチャ(10)のプロセッサ(C1〜Cm)または前記プロセッサ(C1〜Cm)のうちの1つに関連する仮想マシン(V1〜Vn)に割り当てるステップと、
    前記システム(10)内において、前記システム(10)の通常動作中の前記プログラム(P)のサイクル頻度(fcyc)に従って周期的に前記安全機能(SF)のフレームワーク内で、前記各サブプログラム(P1〜Pn)、およびそれらが実行される前記対応処理モジュール(11)に関連する自己テスト動作(Astl、Asys、Achk)を実行するステップと、を含み、
    前記方法が、前記自己テスト動作(Astl、Asys、Achk)には、
    診断型自己テストを実行する診断型自己テスト動作(Astl)と、
    測定されるシステム値の自己テストの動作(Asys)と、
    前記サブプログラム(P1〜Pn)の中間結果間の比較(60)の自己テスト動作(Achk)と、が含まれることを特徴とし、
    前記自己テスト動作(Astl、Asys、Achk)が、
    前記自己テスト動作(Astl、Asys、Achk)に対応する各自己テストデータ(Dstl、Dsys、Dchk)を生成し、前記自己テストデータ(Dstl、Dsys、Dchk)上でチェック動作(51、61)を実行することと、
    前記プログラム(P)を複数の並列サブプログラム(P1〜Pn)に分解する動作を実行して、所与の故障確率目標(g12;g)に重点を置くよう、各サブプログラム(P1〜Pn)すなわち処理モジュール(11)に関連する前記自己テスト動作(Astl、Asys、Achk)ごとのカバレッジ目標(kstl、ksys、kchk)を得ることと、を含む、方法。
  11. 請求項1〜9のいずれかに記載の方法のステップを実施するよう構成される、単一プロセッサまたはマルチプロセッサタイプの処理システム(10)、および別の独立制御モジュール(15)を含む、機能安全が設けられる電子システム。
  12. 少なくとも1つのコンピュータのメモリにロードできるコンピュータプログラム製品であって、少なくとも1つのコンピュータ上で前記プログラムが実行されると、請求項1〜10のいずれかに記載の方法のステップを実施するよう設計されるソフトウェアコードの一部を含む、コンピュータプログラム製品。
JP2017506354A 2014-08-04 2015-07-31 複数のプロセッサを含む、機能安全を有するアプリケーション用の電子システムにおいてプログラムを実行する方法、対応システム、およびコンピュータプログラム製品 Active JP6599431B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
ITTO20140633 2014-08-04
ITTO2014A000633 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
JP2017527895A true JP2017527895A (ja) 2017-09-21
JP6599431B2 JP6599431B2 (ja) 2019-10-30

Family

ID=51663375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017506354A Active JP6599431B2 (ja) 2014-08-04 2015-07-31 複数のプロセッサを含む、機能安全を有するアプリケーション用の電子システムにおいてプログラムを実行する方法、対応システム、およびコンピュータプログラム製品

Country Status (6)

Country Link
US (1) US10248492B2 (ja)
EP (1) EP3178000B1 (ja)
JP (1) JP6599431B2 (ja)
KR (1) KR102352068B1 (ja)
CN (1) CN107003912B (ja)
WO (1) WO2016020815A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
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
CN109791516B (zh) * 2016-08-02 2023-02-14 西门子公司 用于在具有自x特性的自主系统中使用的监测和控制单元
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314744A (ja) * 1995-05-18 1996-11-29 Hitachi Ltd フォールトトレラントシステム
JPH1083321A (ja) * 1996-07-15 1998-03-31 Denso Corp データ処理装置及び電子制御装置
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 (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002189706A (ja) 2000-12-21 2002-07-05 Nec Miyagi Ltd 通信装置の分散型初期設定システム及び方法
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 並列計算機の異常検出システムおよび異常検出方法
JP2008123357A (ja) 2006-11-14 2008-05-29 Honda Motor Co Ltd 並列計算機システム、並列計算方法および並列計算機用プログラム
JP5078347B2 (ja) 2006-12-28 2012-11-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のノードを有するコンピュータ・システムの故障ノードをフェイルオーバー(修復)する方法
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 瑞典爱立信有限公司 云计算资源的分配

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314744A (ja) * 1995-05-18 1996-11-29 Hitachi Ltd フォールトトレラントシステム
JPH1083321A (ja) * 1996-07-15 1998-03-31 Denso Corp データ処理装置及び電子制御装置
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
KR20170065497A (ko) 2017-06-13
CN107003912B (zh) 2020-09-08
EP3178000B1 (en) 2019-01-30
JP6599431B2 (ja) 2019-10-30
US10248492B2 (en) 2019-04-02
KR102352068B1 (ko) 2022-01-17
EP3178000A1 (en) 2017-06-14
US20170228279A1 (en) 2017-08-10
WO2016020815A1 (en) 2016-02-11
CN107003912A (zh) 2017-08-01

Similar Documents

Publication Publication Date Title
JP6599431B2 (ja) 複数のプロセッサを含む、機能安全を有するアプリケーション用の電子システムにおいてプログラムを実行する方法、対応システム、およびコンピュータプログラム製品
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
TWI680369B (zh) 用以自動管理發生於資料中心系統的硬體錯誤事件的方法及其系統
EP2884392B1 (en) Triple software redundancy fault tolerant framework architecture
US7774659B2 (en) Method of monitoring the correct operation of a computer
US20060200278A1 (en) Generic software fault mitigation
EP2416247B1 (en) Semiconductor device
CN107003915A (zh) 驱动控制装置
JP7202448B2 (ja) 安全性が要求されるプロセスを監視する自動化システム
US20150254123A1 (en) Symmetric Multi-Processor Arrangement, Safety Critical System, And Method Therefor
JP7490334B2 (ja) アラーム信号を処理する方法および装置
Cosimi et al. Analysis, Hardware Specification and Design of a Programmable Performance Monitoring Unit (PPMU) for RISC-V ECUs
MX2015001900A (es) Metodos y aparatos para reducir las fallas de modo comun en los sistemas de control de software relacionados con la seguridad nuclear.
Kumar et al. Analysis of software reliability growth model under two types of fault and warranty cost
JP2012150661A (ja) プロセッサ動作検査システム、及びその検査方法
Arm et al. Increasing safety and reliability of roll-back and roll-forward lockstep technique for use in real-time systems
WO2020109252A1 (en) Test system and method for data analytics
US20240028440A1 (en) Method for Recording a Number of Events in an Encoded Tracer Variable in a Security-Oriented Computer Program
JP3962956B6 (ja) 情報処理装置および情報処理方法
JP3962956B2 (ja) 情報処理装置および情報処理方法
JP2023069059A (ja) 情報処理装置、車両、及び情報処理方法
JPS5983438A (ja) プログラム異常検出方式
Tummeltshammer et al. Abhängigkeiten von Fehlern und Ausfällen in Multiprozessoren auf einem Chip
UA22272U (en) Automated system for designing diagnostics facilities

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20170914

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180725

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190521

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190819

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190903

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191002

R150 Certificate of patent or registration of utility model

Ref document number: 6599431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250