(58)【調査した分野】(Int.Cl.,DB名)
診断対象装置に含まれる複数の資源の中から、当該診断対象装置上で実行される目的プログラムに含まれる命令列が利用する資源の集合である利用資源群を特定する特定部と、
前記特定された利用資源群に応じて、前記診断対象装置における自己診断の対象となる資源の集合である対象資源群を決定する決定部と、
前記診断対象装置において前記決定された対象資源群に対する前記自己診断を実行させるために、当該診断対象装置に対して当該対象資源群に基づく情報を出力する出力部と、
を備えるコンパイル装置。
【発明を実施するための形態】
【0011】
以下では、上述した課題を解決するための手段を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【0012】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【0013】
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
【0014】
ここで、上述した課題についてさらに説明する。車載向けプロセッサ等では、通常、100ミリ秒に1回の自己診断プログラムの実行が必要とされる。そのため、特許文献1のように自己診断プログラムと目的プログラムをスケジューリングにより切り替えて動作させる場合には、自己診断プログラムの実行時間が長くなり過ぎると、ユーザプログラムの処理に割り当てられる時間が短くなってしまう。つまり、ユーザプログラムは処理時間の短いものしか実行できなくなってしまい、制約が大きいという問題がある。
【0015】
そこで、自己診断プログラムの実行時間を短縮すべく、以下の各実施の形態に共通する構成について説明する。すなわち、本実施の形態にかかる自己診断方法は、診断対象装置に含まれる複数の資源の中から、当該診断対象装置上で実行される目的プログラムに含まれる命令列が利用する資源の集合である利用資源群を特定し、前記特定された利用資源群に応じて、前記診断対象装置における自己診断の対象となる資源の集合である対象資源群を決定し、前記決定された対象資源群に対して、前記自己診断を実行するものである。これにより、診断対象装置に含まれる全ての資源ではなく、一部の資源に対して自己診断プログラムを実行するため、自己診断プログラムの実行時間を短縮できる。
【0016】
さらに、前記自己診断方法は、前記複数の資源のうち前記診断対象装置における複数の機能のそれぞれに対応する資源の集合である複数の機能ブロックを予め定義し、前記複数の機能ブロックの組み合わせの中から、前記特定された利用資源群に応じた前記対象資源群を決定することが望ましい。例えば、自己診断プログラムに全ての機能ブロックに対する自己診断処理を実装し、かつ、機能ブロックごとに選択的に実行するように実装したとする。このように、自己診断の対象を機能ブロック単位とすることで、目的プログラムごとに自己診断プログラムを生成する必要がなく、当該自己診断プログラムを有効活用できる。
【0017】
また、本実施の形態にかかるコンパイル装置は、診断対象装置に含まれる複数の資源の中から、当該診断対象装置上で実行される目的プログラムに含まれる命令列が利用する資源の集合である利用資源群を特定する特定部と、前記特定された利用資源群に応じて、前記診断対象装置における自己診断の対象となる資源の集合である対象資源群を決定する決定部と、前記診断対象装置において前記決定された対象資源群に対する前記自己診断を実行させるために、当該診断対象装置に対して当該対象資源群に基づく情報を出力する出力部と、を備える。
【0018】
または、本実施の形態にかかるコンパイラは、診断対象装置上で実行される目的プログラムを生成する処理と、前記診断対象装置に含まれる複数の資源の中から、前記目的プログラムに含まれる命令列が利用する資源の集合である利用資源群を特定する処理と、前記特定された利用資源群に応じて、前記診断対象装置における自己診断の対象となる資源の集合である対象資源群を決定する処理と、前記診断対象装置において前記決定された対象資源群に対する前記自己診断を実行させるために、当該診断対象装置に対して当該対象資源群に基づく情報を出力する処理と、をコンピュータに実行させるものである。
【0019】
(実施の形態1)
本実施の形態1は、上述した自己診断方法に加え、前記複数の機能ブロックの組み合わせの中から、前記利用資源群に属する資源の全てを含むもののうち資源数が最小となる組み合わせを、前記対象資源群として決定する。このように、命令列に含まれる全てかつ最小限の資源を対象とするため、効果的な自己診断を実行できる。
【0020】
<自己診断システムの構成>
図1は、本実施の形態1にかかる自己診断システム1の構成を示すブロック図である。尚、自己診断システム1は、コンパイラシステムと呼ぶこともできる。自己診断システム1は、コンパイル装置21及び診断対象装置22を含む。診断対象装置22は、プロセッサ等であり、自己診断対象となる装置である。診断対象装置22は、少なくともユーザプログラムを実行することが可能な装置である。診断対象装置22は、例えば、車載向け装置に用いることができるが、これに限定されない。
【0021】
本実施の形態1では、診断対象装置22を複数の領域に分割した場合の各領域に識別情報である分割IDを付与しているものとする。
図2は、本実施の形態1にかかる診断対象装置22における領域分割の例を示す図である。
図2の例では、診断対象装置22を16個の領域に等分に分割した場合を示す。そして、以下では
図2内の1〜16の番号を分割IDとして説明する。
【0022】
ここで、「領域」とは、診断対象装置22に含まれる複数の資源の集合である。資源としては、例えば、診断対象装置22における論理回路の回路素子が挙げられる。そのため、領域は、トランジスタ、演算器、レジスタ又はメモリ等の単位で表現することができる。つまり、領域は、最低限1つの回路素子で構成されていればよい。尚、領域は、配線接続されているトランジスタの集合であればよい。つまり、物理的に隣接して配置されていないトランジスタ同士を同一の領域として定義しても構わない。
【0023】
図1に戻り説明を続ける。
コンパイル装置21が備えるコンパイラ210は、ソースプログラム11、命令資源対応表13及びテスト資源対応表14を入力とし、オブジェクトプログラム12及びテストリスト15を出力する。
【0024】
<入出力データの説明>
ここで、ソースプログラム11は、診断対象装置22上で実行するためのユーザプログラムが実装されたソースプログラム11である。オブジェクトプログラム12は、ソースプログラム11がコンパイルされた機械語のプログラムである。つまり、オブジェクトプログラム12は、診断対象装置22上で実行される目的プログラムである。オブジェクトプログラム12は命令列120を含む。命令列120は、複数の命令121、122・・・を含む。ここで、命令121等は診断対象装置22上に定義され、診断対象装置22に含まれる複数のリソース(資源)の集合を用いて特定の処理を行わせるものである。言い換えると、命令121等は、上述した分割IDが付与された1以上の領域を利用するものである。尚、ユーザプログラムは、特定の目的のためにユーザにより作成されるものである。そのため、ユーザプログラムは、診断対象装置22の全ての機能を利用するわけではない。そして、本実施の形態では、オブジェクトプログラム12に含まれる命令列には、診断対象装置22に定義された全命令の一部が含まれており、全ては含まれないものとする。つまり、診断対象装置22上でオブジェクトプログラム12を実行したとしても、診断対象装置22の一部の領域が利用され、全領域が利用されるわけではないものとする。
【0025】
命令資源対応表13は、診断対象装置22に定義された複数の命令121等のそれぞれと、各命令が利用する資源の集合(分割ID)とが対応付けられた対応表である。
図3は、本実施の形態1にかかる命令資源対応表13の例を示す図である。ここでは、命令opA、opB、opC、opD、opE、opF・・・のそれぞれと、これらが利用する分割IDとの対応関係が定義されていることを示す。また、
図4は、本実施の形態1にかかる命令とその命令が利用する資源(領域、分割ID)との対応の例を示す図である。例えば、診断対象装置22が命令opA(131)を実行した場合、分割ID“5”、“6”、“9”及び“10”に対応する領域が利用されることを示す。命令opB〜opF(132〜136)についても同様である。
【0026】
図1に戻り説明を続ける。
テスト資源対応表14は、診断対象装置22に対するテスト項目を識別するテストIDと、分割IDとが対応付けられた対応表である。テスト項目は、診断対象装置22における特定の機能をテストするための単位である。つまり、テスト項目は、機能ブロック単位ということもできる。そのため、テスト項目に対応する診断処理が実装されたテストモジュールを診断対象装置22上で実行することで、当該テスト項目に対応付けられた分割IDに対応する領域の診断を行うことができる。
図5は、本実施の形態1にかかるテスト資源対応表14の例を示す図である。また、
図6は、本実施の形態1にかかるテスト項目ごとの自己診断の範囲となる領域の例を示す図である。テストID T1(141)には、分割ID“1”、“2”、“5”及び“6”が対応付けられている。つまり、テストID T1は、分割ID“1”、“2”、“5”及び“6”に対応する領域に対するテスト項目といえる。テストID T2〜T4(142〜144)についても同様である。尚、テスト資源対応表14は、上述した機能ブロックの定義に相当するものである。
【0027】
図1に戻り説明を続ける。
自己診断プログラム16には、診断対象装置22内の全ての領域をテストするための実装が含まれている。特に、本実施の形態にかかる自己診断プログラム16は、複数のテストモジュール(例えば、関数)に分割され、それぞれに上述したテストIDが対応付けられているものとする。
図7は、本実施の形態1にかかる自己診断プログラム301の分割の例を示す図である。また、
図7の16Xは、テストIDとテスト関数の対応関係を示す。自己診断プログラム301は、テストID T1〜T4について実行可否が指定された場合に、テスト関数testA()からtestD()のそれぞれを実行するものである。ここで、テスト関数testA()からtestD()のそれぞれには、テスト資源対応表14に定義された分割IDに対応する領域の診断を行うための実装がされている。例えば、テストID T1が実行対象として指定された場合、テスト関数testA()が実行され、分割ID“1”、“2”、“5”及び“6”に対応する領域の診断を行うことができる。テスト関数testB()からtestD()についても同様である。但し、自己診断プログラムの実装はこれに限定されない。尚、命令資源対応表13及びテスト資源対応表14は、予め定義されているものとする。さらに、自己診断プログラム16は、テスト資源対応表14に基づいて予め作成されていてもよい。
【0028】
図1に戻り説明を続ける。
テストリスト15は、本実施の形態において自己診断対象となるテストIDのリストである。テストリスト15は、コンパイラ210により出力される。そして、テストリスト15は、診断対象装置22に入力される。テストリスト15は、上述した自己診断プログラム16の実行対象の指定として用いられる。尚、テストリスト15は、診断対象装置22において対象資源群に対する自己診断を実行させるための、対象資源群に基づく情報の一例である。
【0029】
<コンパイラの構成>
コンパイラ210は、コンパイル部211、特定部212、決定部213及び出力部214を備える。コンパイル部211は、ソースプログラム11の入力を受け付けてコンパイルし、オブジェクトプログラム12として出力する。つまり、コンパイル部211は、ソースプログラム11を機械語に変換してオブジェクトプログラム12を生成して出力する。
【0030】
特定部212は、診断対象装置22に含まれる複数の資源(領域)の中から、オブジェクトプログラム12に含まれる命令列120が利用する資源の集合である利用資源群を特定する。具体的には、特定部212は、オブジェクトプログラム12から命令121、122、・・・を抽出し、命令資源対応表13を参照して各命令に対応する分割IDの集合(利用分割ID集合、利用資源群)を特定する。このように、命令資源対応表13を用いることで、特定部212は全領域の中から効率的に利用資源群を特定できる。
【0031】
決定部213は、特定部212により特定された利用資源群に応じて、診断対象装置22における自己診断の対象となる資源の集合である対象資源群を決定する。具体的には、決定部213は、複数のテストID(機能ブロック)の組み合わせの中から、利用資源群に応じた対象資源群を決定する。特に、本実施の形態にかかる決定部213は、複数のテストIDの組み合わせの中から、利用資源群に属する資源の全てを含むもののうち資源数が最小となる組み合わせを、対象資源群として決定する。
【0032】
また、決定部213は、複数のテストIDの組み合わせの中から、利用資源群に属さない資源の数が最小となる組み合わせを、対象資源群として決定するものともいえる。これにより、自己診断後に実行される目的プログラムでは利用されない領域を自己診断対象から除外できる。そのため、自己診断の効率を向上できる。
【0033】
出力部214は、診断対象装置22において、決定された対象資源群に対する自己診断を実行させるために、診断対象装置22に対して対象資源群に基づく情報を出力する。特に、本実施の形態にかかる出力部214は、決定された対象資源群に対する自己診断を実行させるための対象資源群に基づく情報として、テストリスト15を出力する。
【0034】
このように、本実施の形態では、目的プログラムのコンパイルと共に、当該コンパイルにより生成された命令列を用いて、対象資源群を決定するものである。これにより、自己診断対象を効率的に決定できる。但し、目的プログラムのコンパイル後に別途、対象資源群を決定しても構わない。
【0035】
<処理の流れ>
図8は、本実施の形態1にかかるコンパイラの処理の流れを示すフローチャートである。まず、コンパイル部211は、ソースプログラム11をコンパイルすることにより、命令列120を含むオブジェクトプログラム12を生成する(S101)。次に、特定部212は、オブジェクトプログラム12が診断対象装置22(プロセッサ)で実行されるときに利用される全資源を求める。具体的には、特定部212は、命令列120に含まれる各命令について命令資源対応表13と照合し、対応付けられた分割IDのリストを読み出す。そして、特定部212は、読み出した分割IDのリストから和集合を算出する(S102)。すなわち、特定部212は、命令列120に含まれる各命令に対応付けられた分割IDの和集合(利用分割ID集合)を利用資源群とする。
【0036】
続いて、決定部213は、テストIDの組み合わせの中から、利用分割ID集合を含むもののうち最小集合をテスト集合(対象資源群)として求める(S103)。ここで、「最小集合」とは、テストIDの組み合わせに対応する分割IDの集合のうち、分割IDの要素数が最小の集合をいう。具体的には、まず、決定部213は、テスト資源対応表14を参照し、全てのテストIDの組み合わせについて、分割IDの和集合を求める。そして、求められた和集合の中で、ステップS102で算出された和集合に含まれる分割IDを全て含むもの(テスト集合の候補)に絞り込む。このとき、テスト集合の候補として複数の和集合が該当する場合もある。そのため、絞り込まれたテスト集合の候補のうち、分割IDの数が最小となる和集合を最小集合として求める。つまり、決定部213は、最小集合をテスト集合(対象資源群)として決定する。
【0037】
その後、出力部214は、ステップS103で求めたテスト集合に対応するテストIDの組み合わせをテストリスト15として出力する(S104)。
【0038】
<具体例>
図9は、本実施の形態1にかかる目的プログラムの命令列と利用分割ID集合(利用資源群)、及び、テスト集合(対象資源群)の例を示す図である。まず、ステップS101では、コンパイル部211により生成されたオブジェクトプログラム12に命令列120が含まれているものとする。その場合、ステップS102では、特定部212は、
図7の命令資源対応表13から、命令列120により利用される分割IDの和集合(利用分割ID集合)120USを求める。そして、ステップS103では、決定部213は、複数のテストIDの組み合わせに対応する複数の和集合の中から、利用分割ID集合120USを含むもの(テスト集合の候補)のうち最小集合(テスト集合120TS、テスト分割ID集合120TIS)を求める。つまり、この例では、テスト集合120TS{T2、T3、T4}がテストリスト12として出力される。尚、
図9では、利用分割ID集合(利用資源群)120USとテスト分割ID集合(対象資源群)120TISとは分割IDが等しい場合を示すが、少なくともテスト分割ID集合は、利用分割ID集合を包含していればよい。
【0039】
その後、診断対象装置22は、オブジェクトプログラム12の実行前に、テストリスト15を入力として自己診断プログラム16を実行する。すなわち、診断対象装置22は、テストリスト15に指定されたテストIDについて自己診断プログラム16内のテスト関数を実行する。そのため、テスト集合に含まれる領域についてのみ自己診断が行われる。例えば、診断対象装置22は、テストリスト15として{T2、T3、T4}を自己診断プログラム16の入力とするため、testB()、testC()、testD()のみが実行される。一方、上記テストリスト15に含まれないT1に対応するtestA()は実行されないこととなる。
【0040】
<実施の形態1の効果>
そのため、自己診断プログラム16により全てのテスト関数を実行する場合に比べて、本実施の形態1では一部のテスト関数のみを実行するため、自己診断プログラム16の実行時間を短縮することができる。すなわち、本実施の形態1では、コンパイラ210が生成する命令列120に基づいて、直後に実行されるユーザプログラムで実際に利用される資源のみを自己診断プログラム16において検査させることができる。そのため、自己診断における誤り検出の精度を確保しつつ、自己診断プログラムの実行時間を短くできる。
【0041】
尚、自己診断の実行時間は対象の回路素子数(領域数)だけで決まるとは限らない。例えば、領域数が相対的に多くても実行時間が最短である場合もあり得る。そのため、実施の形態1(領域数が最小)は一例となる。
【0042】
<ハードウェア構成例>
図10は、本実施の形態1にかかるコンパイル装置21のハードウェア構成を示すブロック図である。コンパイル装置21は、例えば、汎用的なコンピュータシステムにより実現可能である。コンパイル装置21は、例えば、CPU(Central Processing Unit)101等の制御装置、RAM(Random Access Memory)102及びROM(Read Only Memory)103等のメモリ、IF部104並びにHDD(Hard Disk Drive)105を備えるものである。コンパイル装置21は、その他図示しない構成として、キーボードやマウス等の入力装置やディスプレイ等の表示装置を備えてもよい。IF部104は、入力装置及び表示装置並びにネットワークを介して外部とのデータの送受信を行うインタフェースである。
【0043】
HDD105は、OS(Operating System)(不図示)、コンパイラプログラム106、ソースプログラム11、オブジェクトプログラム12、命令資源対応表13、テスト資源対応表14、テストリスト15及び自己診断プログラム16が記憶されている。コンパイラプログラム106は、本実施の形態1にかかるコンパイラ210の処理が実装されたコンピュータプログラムである。
【0044】
CPU101は、コンパイル装置21における各種処理、RAM102、ROM103、IF部104及びHDD105へのアクセス等を制御する。コンパイル装置21は、CPU101がHDD105に記憶されたOS及びコンパイラプログラム106を読み込み、実行する。これにより、コンパイル装置21は、本実施の形態1にかかるコンパイラ210の処理を実現する。
【0045】
(実施の形態2)
本実施の形態2は、上述した実施の形態1の変形例であり、決定した対象資源群に応じて自己診断プログラムを生成するものである。すなわち、前記複数の機能ブロックのそれぞれに対応し、前記自己診断を行うための複数のプログラムモジュールを予め定義し、前記複数のプログラムモジュールの中から、前記決定された対象資源群の組み合わせに対応するプログラムモジュールを選択し、前記選択したプログラムモジュールに基づいて前記自己診断を実行するための自己診断プログラムを生成するものである。これにより、自己診断プログラムのサイズを小さくすることができ、診断対象装置における記憶容量の占有率を下げることができる。
【0046】
<自己診断システムの構成>
図11は、本実施の形態2にかかる自己診断システム1aの構成を示すブロック図である。自己診断システム1aは、実施形態1にかかる自己診断システム1におけるコンパイル装置21、コンパイラ210及び出力部214を、コンパイル装置21a、コンパイラ210a及び出力部214aに置き換えたものである。また、複数のテスト項目に対応する診断処理が実装されたテストモジュール群160が予め定義されているものとする。テストモジュール群160には、複数のテストモジュール(プログラムモジュール)161、162・・・が含まれている。テストモジュール161等は、例えば、上述したテスト関数testA()からtestD()等に相当する。
【0047】
コンパイラ210aは、出力部214a以外は、
図1のコンパイラ210と同等である。出力部214aは、テストモジュール群160の中から、決定部213により決定された対象資源群の組み合わせに対応するテストモジュールを選択し、選択したテストモジュールに基づいて自己診断プログラム16aを生成し、出力する。そのため、自己診断プログラム16aには、診断対象装置22内の領域のうち対象資源群に対応する領域に対する自己診断処理が実装されている。つまり、自己診断プログラム16aには、診断対象装置22内の全領域に対する自己診断処理は実装されていない。よって、自己診断プログラム16aは、自己診断プログラム16と比べてサイズが小さい。尚、自己診断プログラム16aは、診断対象装置22において対象資源群に対する自己診断を実行させるための、対象資源群に基づく情報の一例である。その他の構成は
図1と同等であるため、詳細な説明を省略する。
【0048】
<処理の流れ>
図12は、本実施の形態2にかかるコンパイラの処理の流れを示すフローチャートである。
図12は、上述した実施の形態1にかかる
図4のステップS104をステップS201に変更したものである。すなわち、出力部214aは、ステップS103で求めた最小集合に対応するテストIDの組み合わせのそれぞれに対応するテストモジュールをテストモジュール群160から選択する。そして、出力部214aは、選択したテストモジュールを組み合わせて、自己診断プログラム16aを生成し、出力する(S201)。例えば、
図9のようにテスト集合120TSとして{T2,T3,T4}が決定された場合、出力部214aは、テストモジュール群160の中からtestB()、testC()、testD()に相当するテストモジュールを選択し、これらを結合して自己診断プログラム16aを生成し、出力する。
【0049】
<具体例>
図13は、本実施の形態2にかかる生成される自己診断プログラム16aの例を示す図である。自己診断プログラム16aには、testB()、testC()、testD()のみが実装されている。そのため、診断対象装置22上で自己診断プログラム16aが実行された場合、実施の形態1と同様にtestB()、testC()、testD()のみが実行され、testA()は実行されない。そのため、実施の形態1と同様に自己診断の実行時間を短縮することができる。
【0050】
<実施の形態2の効果>
このように、本実施の形態2では、コンパイル時に自己診断プログラムを生成するものである。そのため、実施の形態1と比べて、自己診断プログラムの実行時にテストリストを読み込む処理がない。また、テストリストから実行するテストを選択する処理もない。そのため、実施の形態1よりもさらに、自己診断プログラムの実行時間を短縮できる。
【0051】
(実施の形態3)
本実施の形態3は、上述した実施の形態1を変形例であり、特定した利用資源群の全てではなく、所定数以上の資源を含む集合を対象資源群として決定するものである。すなわち、前記複数の機能ブロックの組み合わせの中から、前記利用資源群に属する資源を所定の割合で含む組み合わせを、前記対象資源群として決定するものである。そして、例えば、利用資源群の90%以上を含む和集合をテスト集合とすることで、一般的な機能安全性の要件を確保できる。
【0052】
<コンパイラの構成>
本実施の形態3にかかるコンパイラ210は、決定部213に変更を加えることで実現できる。そして、利用資源群に含まれる資源(領域、分割ID)のうち含まれる資源の閾値を予め設定している。設定される閾値は例えば、90%であるがこれに限定されない。例えば、割合の代わりに分割ID数を用いてもよい。
【0053】
<処理の流れ>
図14は、本実施の形態3にかかるコンパイラの処理の流れを示すフローチャートである。
図14は、上述した実施の形態1にかかる
図4のステップS103をステップS301に変更したものである。すなわち、決定部213は、テストIDの組み合わせの中から、ステップS102で特定された和集合に含まれる分割IDのうち90%以上を含むものをテスト集合として求める(S301)。具体的には、決定部213は、テスト資源対応表14を参照し、全てのテストIDの組み合わせについて、分割IDの和集合を求める。そして、求められた和集合の中で、ステップS102で算出された和集合に含まれる分割IDのうち90%以上を含むもの(テスト集合の候補)に絞り込む。このとき、テスト集合の候補として複数の和集合が該当する場合には、上述した最小集合をテスト集合として決定する。
【0054】
<具体例>
図15は、本実施の形態3にかかる出力されるテスト集合の例を示す図である。まず、ステップS101では、実施の形態1と同様に、コンパイル部211により生成されたオブジェクトプログラム12には
図9の命令列120が含まれているものとする。そして、ステップS102では、特定部212は、実施の形態1と同様に、和集合(利用資源群)120USを求めるとする。
【0055】
ここで、ステップ901では、決定部213は、最小集合として
図15のテスト集合320TSを求める。テスト集合320TSから求まる診断対象装置22のテスト分割ID集合は320TISのようになる。この例では、診断対象装置22において、13/16が自己診断される。ここで、診断対象装置22がオブジェクトプログラム12を実行した場合に実際に利用される領域に対応する分割IDの数は14である。そのため、実際に利用される領域に対して、13/14=93%が検査されることになる。
【0056】
<実施の形態3の効果>
このように、本実施の形態3では、最小集合を求める際に閾値を利用することを特徴とする。これにより、テスト集合をさらに小さくすることができる。その結果、自己診断プログラムの処理時間をさらに短縮することができる。ここで、機能の安全性としては、検出率が90%以上であればよい場合がある。そのため、検出率90%を満たすテストのみを実施することで十分な場合には極めて有効である。
【0057】
尚、本実施の形態3において閾値を100%とすれば、実施の形態1と同等となる。そのため、実施の形態3は、実施の形態1を含む形態ということもできる。
【0058】
(実施の形態4)
本実施の形態4は、上述した実施の形態1又は3の変形例であり、テスト集合の候補のうち自己診断の実行時間の予測値が最短となるものを対象資源群として決定するものである。すなわち、前記複数の機能ブロックの組み合わせの中から、前記利用資源群に属する資源を所定の割合で含む組み合わせが複数存在する場合に、前記複数の機能ブロックごとに予め登録された前記自己診断の実行時間の予測値に基づいて、当該複数存在する組み合わせの中から、前記実行時間の予測値の合計が最小となる組み合わせを、前記対象資源群として決定するものである。これは、自己診断の実行時間が自己診断の対象となる資源数の大小で単純に決まるとは限らないためである。つまり、テスト集合の候補のうち、分割ID数が最小でなくとも、その中では実行時間が最短である集合があり得る。よって、本実施の形態4は、資源数と実行時間の相関が低い場合に特に効果的である。
【0059】
<コンパイラの構成>
本実施の形態4にかかるコンパイラ210は、決定部213に変更を加えることで実現できる。そして、テストIDごとの自己診断処理の実行時間の予測値が予め登録されているものとする。
図16は、本実施の形態4にかかるテストIDと実行時間の予測値の対応表17の例を示す図である。尚、各分割IDにおける領域に対する自己診断処理の実行時間の予測値が予め登録済みで、テスト集合の候補が絞られた後に合計時間の予測値を算出しても良い。また、閾値は任意の値が設定済みであるものとする。
【0060】
<処理の流れ>
図17は、本実施の形態4にかかるコンパイラの処理の流れを示すフローチャートである。
図17は、上述した実施の形態1にかかる
図8のステップS103をステップS401に変更したものである。すなわち、決定部213は、テストIDの組み合わせの中から、ステップS102で特定された和集合に含まれる分割IDのうち、閾値以上を含むもの、かつ、実行時間の予測値が最も短くなる集合をテスト集合として求める(S401)。具体的には、決定部213は、テスト資源対応表14を参照し、全てのテストIDの組み合わせについて、分割IDの和集合を求める。そして、求められた和集合の中で、ステップS102で算出された和集合(利用分割ID集合)に含まれる分割IDのうち閾値以上を含むもの(テスト集合の候補)に絞り込む。そして、ここでは、このとき、テスト集合の候補として複数の和集合が該当するものとする。
【0061】
続いて、決定部213は、テスト集合の候補のそれぞれについて、
図16の対応表17を参照し、実行時間の予測値が最短となるものをテスト集合として決定する。または、領域ごとの自己診断処理の実行時間の予測値が予め登録されている場合には、決定部213は、テスト集合の候補のそれぞれについて、該当する自己診断処理の実行時間の予測値を合計して、実行時間の予測値を算出してもよい。
【0062】
<具体例>
図18は、本実施の形態4にかかる出力されるテスト集合の例を示す図である。まず、ステップS101において、コンパイル部211によりオブジェクトプログラム12の命令列170が生成されたものとする。そして、ステップS102では、特定部212は、命令資源対応表13を参照し、命令列170の命令opBと命令opEのそれぞれが利用する分割IDがそれぞれ{3,4,7,8,11,12}と{13,14,15}であると特定する。そのため、特定部212は、{3,4,7,8,11,12}と{13,14,15}の和集合を取ることにより{3,4,7,8,11,12,13,14,15}を集合170USとして特定する。
【0063】
続いて、ステップS401では、決定部213は、テストIDの組み合わせのうち、利用分割ID集合170USを含むテスト集合の候補として、集合A{T2,T3}と集合B{T3,T4}に絞り込む。具体的には、集合A{T2,T3}の分割IDの集合は、{3,4,5,6,7,8,9,10,11,12,13,14,15}である。また、集合B{T3,T4}の分割IDの集合は、{3,4,7,8,11,12,13,14,15,16}である。つまり、集合A及びBはいずれも利用分割ID集合170USを含む。
【0064】
そこで、決定部213は、171に示すように、集合Aと集合Bの実行時間の予測値を求める。具体的には、集合Aの実行時間の予測値はテストIDのT2とT3の実行時間の予測値の和から25nescである。また、集合Bの実行時間の予測値はT3とT4の実行時間の予測値の和から35nsecである。ここで、分割IDの数としては集合Bの方が少ないが、実行時間の予測値の和としては、集合Aの方が短い。よって、本実施の形態4にかかる決定部213は、集合Aを対象資源群として決定する。
【0065】
<実施の形態4の効果>
このように、本実施の形態4では、テスト集合の候補が複数存在する場合、その中から自己診断の実行時間の予測値が最短のものが実行できるものを選択する。その理由は、同じ領域であっても、テスト内容により自己診断時間が異なる場合があり、分割IDごとの実行時間の単純な合計になるとは限らないためである。例えば、積和命令と積命令及び和命令とでは値により実行時間が異なる。これにより、自己診断プログラムの処理時間をより短くすることができる。
【0066】
(実施の形態5)
本実施の形態5は、上述した実施の形態1又は3の変形例であり、テスト集合の候補のうち重要度の高い領域をより多く含むものを対象資源群として決定するものである。すなわち、前記複数の機能ブロックの組み合わせの中から、前記利用資源群に属する資源を所定の割合で含む組み合わせが複数存在する場合に、前記複数の機能ブロックごとに予め登録された機能の重要度に基づいて、当該複数存在する組み合わせの中から、前記重要度の合計がより高い組み合わせを、前記対象資源群として決定する。これにより、より効果の高い自己診断を優先的に実行できる。
【0067】
<コンパイラの構成>
本実施の形態5にかかるコンパイラ210は、決定部213に変更を加えることで実現できる。そして、分割IDごとの重要度が予め登録されているものとする。
図19は、本実施の形態5にかかる分割IDと重要度の対応表18の例を示す図である。対応表18に示すように、各分割IDは対応する領域内のトランジスタや機能などにより重要度が設定されているものとする。ここで、重要度は、故障による影響の大きさである。例えば、制御系の故障は処理の流れが大きく変わる可能性があり、処理の継続に大きな影響を及ぼす。一方、データ系の故障は計算結果が変わるが、処理順序などが変わる可能性は低い。そのため、場合によってはデータ系の故障は計算誤差として扱うことも可能であり、故障による影響が小さい。このように故障する箇所により影響度が異なっており、そのため、領域によるテストの重要度も異なる。
【0068】
また、閾値は任意の値が設定済みであるものとする。尚、以下の説明では閾値を80%として説明するが、これに限定されない。
【0069】
<処理の流れ>
図20は、本実施の形態5にかかるコンパイラの処理の流れを示すフローチャートである。
図20は、上述した実施の形態3にかかる
図14のステップS301をステップS501に変更し、その後にステップS502を追加したものである。
【0070】
決定部213は、テストIDの組み合わせの中から、ステップS102で特定された和集合に含まれる分割IDのうち80%以上を含むものをテスト集合として求める(S501)。続いて、決定部213は、ステップS501で求めたテスト集合が複数ある場合に、その中から、重要度が最も大きいものを選択する(S502)。具体的には、決定部213は、テスト集合の候補のそれぞれについて、
図19の対応表18を参照し、重要度の合計値を算出する。そして、決定部213は、テスト集合の候補の中で重要度の合計値が最大のものを、テスト集合として決定する。
【0071】
<具体例>
図21は、本実施の形態5にかかる出力されるテスト集合の例を示す図である。まず、ステップS101において、コンパイル部211によりオブジェクトプログラム12の命令列180が生成されたものとする。そして、ステップS102では、特定部212は、命令資源対応表13を参照し、命令列180が利用する分割IDの和集合(利用分割ID集合180US)を以下の式(1)のように求める。
【数1】
【0072】
続いて、ステップS501では、決定部213は、利用分割ID集合180USを80%以上含むテスト集合の候補として181に示す集合C{T2,T3}と182に示す集合D{T3,T4}を求める。
【0073】
そして、決定部213は、集合Cのテスト分割ID集合C1と利用分割ID集合180USの積集合から実効分割ID集合C2を求める。ここで、実効分割ID集合とは、テスト分割ID集合の中で、オブジェクトプログラム12により実際に利用される部分であり、実際にテストの効果がある分割IDの集合である。
【0074】
集合Cの実効分割ID集合C2と利用分割ID集合180USと比較すると、集合C2には分割ID“16”が含まれていない。つまり、利用分割ID集合180USのうち集合C2に含まれる分割IDの割合は、11/12=91%となる。
【0075】
そして、決定部213は、実効分割ID集合C2に含まれる分割IDから、対照表18の重要度を合計して集合Cの重要度を算出する。ここでは、集合Cの重要度は“390”であるものとする。
【0076】
集合Dも同様に考えると、分割ID“9”と“10”が含まれていない。つまり、分割ID集合180USのうち集合D2に含まれる分割IDの割合は、10/12=83%となる。また、集合Dの重要度は“400”であるものとする。
【0077】
そのため、ステップS502では、決定部213は、重要度がより高い集合Dを対象資源群として選択する。ここで、集合Cで実行されない分割ID“16”の重要度が“60”であり、集合Dで実行されない分割ID“9”と“10”の重要度の和が30+20=50である。そのため、分割ID“16”の方が重要であるため、分割ID“16”を含む集合Dが選択されたということを示している。
【0078】
<実施の形態5の効果>
このように、本実施の形態5では、閾値を利用してテスト集合を小さくする場合に、テスト対象とされる部分の重要度に応じてテストを選択することを特徴とする。これにより、同じ故障の検出率であっても、故障発生時の影響を小さくすることができる。
【0079】
(その他の実施の形態)
実施の形態2は、実施の形態3〜5のいずれかと組み合わせて実施することが可能である。また、実施の形態4は、実施の形態3と組み合わせて実施することが可能である。
【0080】
尚、上述した各実施の形態は、自己診断方法であると共に、コンパイル方法又は診断対象決定方法ともいえる。
【0081】
尚、本実施の形態は、次のように表現することもできる。すなわち、ユーザプログラムをコンパイルする際に、生成する命令列から利用するプロセッサの論理回路を調べ、自己診断プログラムの実行時には、利用する資源のみを検査するようにするものである。ユーザプログラムが利用する資源のみを検査するので自己診断時間を短くすることができる。
【0082】
さらに、本願は上述した実施の形態のみに限定されるものではなく、既に述べた本願の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、上述の実施の形態では、ハードウェアの構成として説明したが、本実施の形態は、これに限定されるものではない。本実施の形態は、上述した処理を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。
【0083】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、DVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disc)、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0084】
尚、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。さらに、上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【0085】
(付記)
複数の資源を有し、目的プログラムを実行する診断対象部と、
前記複数の資源の中から、前記目的プログラムに含まれる命令列が利用する資源の集合である利用資源群を特定する特定部と、
前記特定された利用資源群に応じて、前記診断対象部における自己診断の対象となる資源の集合である対象資源群を決定する決定部とを備え、
前記診断対象部は、前記目的プログラムの実行前に、前記決定された対象資源群に対して、前記自己診断を実行する
自己診断システム。
【0086】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。