JP5937530B2 - ソフトエラー解析装置、エラー情報作成装置 - Google Patents

ソフトエラー解析装置、エラー情報作成装置 Download PDF

Info

Publication number
JP5937530B2
JP5937530B2 JP2013031390A JP2013031390A JP5937530B2 JP 5937530 B2 JP5937530 B2 JP 5937530B2 JP 2013031390 A JP2013031390 A JP 2013031390A JP 2013031390 A JP2013031390 A JP 2013031390A JP 5937530 B2 JP5937530 B2 JP 5937530B2
Authority
JP
Japan
Prior art keywords
error
soft
soft error
register
simulator
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.)
Expired - Fee Related
Application number
JP2013031390A
Other languages
English (en)
Other versions
JP2014160421A (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.)
Toyota Motor Corp
GAIA SYSTEM SOLUTIONS Inc
Original Assignee
Toyota Motor Corp
GAIA SYSTEM SOLUTIONS Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp, GAIA SYSTEM SOLUTIONS Inc filed Critical Toyota Motor Corp
Priority to JP2013031390A priority Critical patent/JP5937530B2/ja
Publication of JP2014160421A publication Critical patent/JP2014160421A/ja
Application granted granted Critical
Publication of JP5937530B2 publication Critical patent/JP5937530B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Stored Programmes (AREA)

Description

本発明は、シミュレータにソフトエラーを発生させてターゲットマイコンに生じる影響を解析するソフトエラー解析装置に関する。
マイコンがプログラムを実行している際に、放射線(例えば中性子線やα線など)によりメモリ障害が生じうることが知られている。メモリ障害により、レジスタ、RAM、ROMなどのメモリに記憶されているデータが変わってしまうと、期待されているマイコンの動作が行われない場合がある。このため、メモリ障害がマイコンの動作にどのような影響を与えるかを評価したいという要請がある。
このような要請に対しシミュレーション装置を用いる手法が知られている。このような手法では、シミュレーション装置を用いてマイコンの機能をシミュレートし、メモリ障害が発生した場合のマイコンの動作を検証する(例えば、特許文献1参照。)。特許文献1には、障害処理ファームウェアの制御によって疑似ソフトエラーの発生を指示し、疑似ソフトエラーを発生させたいクロック数を保持させておき、該クロック数になると疑似ソフトエラーを発生させる情報処理装置が開示されている。
特開平05−035611号公報
しかしながら、特許文献1に記載された技術では、指定したクロック数でなければソフトエラーを発生させることができないという問題がある。メモリ障害は時間的・空間的にランダムに発生することが知られており、CPUやメモリなどの微細化が進むにつれ無視できない頻度で発生する。このため、特許文献1のようにある命令の実行時にのみソフトエラーを発生させるだけでは、メモリ障害が発生した際にマイコンに生じる影響を見極めることは困難である。
一方、全てのクロック数でソフトエラーを発生させるなどすれば、時間的・空間的に網羅性を持ったメモリ障害をシミュレーション装置で再現することは不可能ではない。しかし、全てのクロック数かつ全てのレジスタ(好ましくはさらに全てのビット)に対しメモリ障害を再現しかつ検証するには膨大な時間がかかり、現実的には実現困難である。
そこで、本発明は、時間的・空間的に網羅性を持ったメモリ障害のシミュレーションをより短時間で実現可能なソフトエラー解析装置を提供することを目的とする。
本発明は、ターゲットマイコンのシミュレータにソフトエラーを発生させて該ターゲットマイコンに生じる影響を解析するソフトエラー解析装置であって、前記ターゲットマイコンが実行するプログラムに含まれる各機能ブロック毎に、ソフトエラーのエラー内容、及び、エラー発生箇所が登録されたエラー情報記憶手段と、シミュレータが実行する命令のアドレス情報に基づき、実行中の機能ブロックを特定する機能ブロック特定手段と、前記機能ブロック特定手段が特定した機能ブロックの前記エラー内容、及び、前記エラー発生箇所を前記エラー情報記憶手段から読み出し、前記エラー内容及び前記エラー発生箇所に基づきシミュレータにソフトエラーを設定するエラー設定手段と、ソフトエラーが設定された後にシミュレータが所定の変数に格納する値と、ソフトエラーが設定されない状態で前記所定の変数に格納された正常値とを比較してソフトエラーの影響を評価する評価手段と、を有することを特徴とする。
時間的・空間的に網羅性を持ったメモリ障害のシミュレーションをより短時間で実現可能なソフトエラー解析装置を提供することができる。
ソフトエラー解析装置の概略的な特徴を説明する図の一例である。 ソフトエラー解析装置がエラー情報ライブラリを用いてソフトエラーを解析する動作を模式的に説明する図の一例である。 時間・空間に対し網羅的に発生させたメモリ障害の影響をシミュレートする方法を説明する図である。 時間・空間に対しランダムに発生させたメモリ障害の影響をシミュレートする方法を説明する図である。 ソフトエラー解析装置の概略構成図の一例である。 命令セットシミュレータが実現するターゲットシステムの概略構成図の一例である。 準備部の、実行部の機能ブロック図の一例である。 エラー情報ライブラリ等について説明する図の一例である。 エラー情報ライブラリの作成手順を示すフローチャート図の一例である。 シミュレーションの実行手順を示すフローチャート図の一例である。
以下、本発明を実施するための形態について図面を参照しながら説明する。しかしながら、本発明の技術的範囲が本実施の形態に限定されるものではない。
図1は、本実施形態のソフトエラー解析装置100の概略的な特徴を説明する図の一例である。なお、実施形態では説明上、メモリ障害とは例えば放射線によりメモリに記憶されたデータが変わってしまうことを、ソフトエラーは意図的にメモリ障害を生じさせるこという。メモリ障害によりソフトエラーが生じるので厳密に両者を区別しなくてもよい。
本実施形態では、メモリ障害が発生した際の影響を予め関数やタスクなどのソフトウェアの機能毎に見積もっておく。影響とは、ソフトエラーを発生させた場合に故障に繋がる条件を満たす事象が発生することをいう。故障に繋がる条件は、マイコンや車両の開発者などが定義しておくことができる。例えば、マイコンのCPUが関数Aを実行している際に、メモリ障害が発生したと仮定すると、故障に繋がる可能性が高いのはメモリ障害が、マイコンの出力などの所定の部位に伝わった場合である。
所定の部位に伝わるのは、大域変数(関数Aだけでなく他の関数B等がアクセスする)が書き換わったり、関数の戻り値が書き換わったりすることで生じやすい。したがって、大域変数や関数の戻り値が書き換わることが上記の事象となる。
そこで、まず、ソフトエラー解析装置100は、関数Aの各命令をCPUが実行中に、任意のレジスタにソフトエラーを生じさせた場合、そのソフトエラーが大域変数又は戻り値用のレジスタ(図1ではレジスタB)に格納されるか否かを判定する。
(i) 図1では、関数Aの命令1〜nのそれぞれについて、例えばレジスタAにソフトエラーが発生したと仮定する。実際に、ランダムなデータを設定してもよいが、仮定するだけでよい。
(ii) 次に、ソフトエラー解析装置100は、レジスタAに記憶されたデータが、その後の命令(命令1の実行前にソフトエラーを設定した場合は命令1〜n)の実行過程で大域変数a、b又はレジスタBに格納されるか否かを判定する(以下、大域変数a、b又はレジスタBに格納されることを「ソフトエラーが伝播する」という。)。
(iii) ソフトエラーが伝播した場合、ソフトエラー解析装置100はその回数をカウントする。
(iv) この(i)〜(iii)の処理を、関数Aの各命令に対し行うことで、ソフトエラーの発生回数に対するソフトエラー伝播回数が求められるので、関数Aにおけるソフトエラー伝播確率を求めることができる。
(v) ソフトエラー解析装置100は、全ての関数に対し同様にエラー伝播確率を求める。各関数のソフトエラー伝播確率をエラー情報ライブラリ34に保存する。このエラー情報ライブラリ34を用いることで、上記の影響の有無をシミュレートすることができる。
図2は、ソフトエラー解析装置100がエラー情報ライブラリ34を用いてソフトエラーを解析する動作を模式的に説明する図の一例である。エラー情報ライブラリ34により関数の実行時に故障に繋がる可能性が高いソフトエラーの伝播確率が分かっている。このソフトエラーの伝播確率を用いて関数単位でソフトエラーを生じさせ、正常な演算結果と比較することで、メモリ障害の影響を解析できる。
(i)ソフトエラー解析装置100は、任意のタイミングでCPUが実行中の関数を特定する。また、エラー情報ライブラリ34からその関数のソフトエラー伝播確率を読み出す。
(ii) その関数の実行が終了したら、ソフトエラー伝播確率に応じて大域変数又は関数の戻り値を書き換える。これにより関数の実行結果にメモリ障害が生じたことがシミュレーションされる。以下、この処理をエラー注入処理という。
(iii) ソフトエラー解析装置100は、エラー注入後、所定時間、上記の影響に関係する変数(以下、着目変数という。例えば、アクチュエータが接続されたI/Oに値が設定される変数)に格納される値と出力タイミングを収集する。図では着目変数はRAMにあるが命令のコードから着目変数の値を取得してもよい。
(iv) ソフトエラー解析装置100は、正常な動作結果(エラー注入されていない)と着目変数の値を比較して、着目変数の値が不正値となった回数をカウントする。
エラー注入した回数に対し、着目変数の出力や出力タイミングが不正となった回数が分かるので、開発者等は、マイコンで生じたメモリ障害が最終的にターゲットシステムに影響する程度を解析できる。
このように、本実施形態のソフトエラー解析装置100は、メモリ障害が故障に関係しうる確率を予め関数などの機能ブロック単位にソフトエラー伝播確率としてエラー情報ライブラリ34に登録しておく。したがって、各レジスタにソフトエラーを生じさせるソフトエラー解析方法よりもはるかに試行回数を低減できる。また、エラー伝播確率が小さい関数ではエラー注入が不要になるのでエラー注入の影響を解析する時間も削減できる。
〔従来のシミュレーション〕
始めに、従来のメモリ障害のシミュレーションについて説明する。メモリ障害は放射線が集積回路に衝突することで発生する一過性の障害なので、
1)時間的・空間的にランダムに発生すること、2)一過性の障害であること、が特徴である。したがって、1)の観点から上記のように時間・空間に対して網羅性を考慮してどのくらいの時間・空間に影響が及んだかを検証する必要がある。また、シミュレーション装置が、2)の観点からターゲットシステムへの影響を見極めようとするとある程度の時間、影響を観測する必要がある。
図3は、時間・空間に対し網羅的に発生させたメモリ障害の影響をシミュレートする方法を説明する図である。図3のサイクルとは1クロックである。シミュレーション装置は、時間的な網羅性のため1クロック毎にレジスタの状態を観測する。図3では開始サイクルをnとし、n-1サイクル目までソフトを動作させメモリ障害の影響を判定する。
また、空間についても網羅性を持たせるため、全レジスタの全ビットに対して順にソフトエラーを発生させる。例えばデータ長が32bitの場合、32回、順番にレジスタのビットを反転させてソフトエラーを発生させる。
あるビットにソフトエラーを発生させたらシミュレーション装置は、シミュレーションを再開し、ターゲットシステムへの影響の有無が判断できる時間までシミュレーションを継続し、影響の有無を判定する。最大でn-1サイクル目まで継続すればよいが、その後のレジスタの状態を監視して上書きされれば影響なし、読み取られて演算されたり別のレジスタに書き込まれれば影響あり、と判定され、次のソフトエラーに移行する。
この手順をサイクルnにおいて全てのレジスタの全てのビットに対して繰り返す。全てのレジスタの全てのビットに対して繰り返し実行すると、サイクルを1つ進めサイクルn+1において同様のシミュレーションを行う。
したがって、時間的・空間的に網羅性を持ってシミュレーションを行おうとすると、サイクル数×レジスタ数×ビット数の回数だけシミュレーション(試行)する必要がある。また、シミュレーションの各試行時に、ターゲットシステムへの影響の有無が判断できる時間までサイクルを進める必要がある。したがって、現実的な時間内に実現することは困難である。
図4は、時間・空間に対しランダムに発生させたメモリ障害をシミュレートする方法を説明する図である。シミュレーション装置は、ソフトウェアを実行しながら、ソフトエラーを発生させるタイミングと、発生させるビットをランダムに決定する。そして、ソフトエラーを発生させ、ターゲットシステムへの影響の有無が判断できる時間、シミュレーションを継続し、影響の有無を判定する。そして、統計的に有意な回数に達したら終了する。
ソフトエラーの発生のパターン数は、図3のように「サイクル数×レジスタ数×ビット数」として既知なので標本化定理などに基づき、統計的に有意な回数を決定することができる。したがって、図3の網羅的な方法よりも試行回数は削減できる。また、別の方法として影響の有無の判定結果を逐次集計して、一定の割合になるまで継続する方法がある。
しかしながら、図4の方法の場合、時間的・空間性にランダムに発生しかつ一過性という特性があるメモリ障害の発生を、統計的に有意な回数の試行によりカバーしていると断言できない。したがって、メモリ障害をシミュレートする上では不十分である。
〔構成例〕
図5(a)はソフトエラー解析装置100の正面図の一例を、図5(b)はハードウェア構成図の一例をそれぞれ示す。ソフトエラー解析装置100は、パーソナルコンピュータやワークステーションなどの情報処理装置である。図のようなデスクトップ型でもノート型又はラップトップ型でもよい。また、サーバとしてのソフトエラー解析装置にクライアントが処理を要求してもよい。
ソフトエラー解析装置100は、バスで相互に接続されたCPU101、RAM102、ROM103、記憶媒体装着部104、通信装置105、入力装置106、表示制御部107及びHDD(Hard Disk Drive)108を有する。CPU101は、OS(Operating System)や命令セットシミュレータのプログラム110をHDD108から読み出して実行することで種々の機能を提供すると共に、各ブロックを制御する。ソフトエラー解析装置100は、CPU101がプログラム110を実行することで後述する各機能を実現する。
RAM102はCPU101がプログラム110を実行する際に命令や必要なデータを一時保管する作業メモリである。ROM103はBIOS(Basic Input Output System)やOSを起動するためのプログラム等が記憶されている。
記憶媒体装着部104は記憶媒体109が着脱可能に構成されており、記憶媒体109に記録されたデータを読み込み、また、RAM102のデータを書き込む際に使用される。なお、記憶媒体109は、Blu-rayディスク、コンパクトディスク、DVD(Digital Versatile Disk)等の光記録媒体やSDカード、マルチメディアカード、xDカードなどである。
通信装置105は、例えばイーサネット(登録商標)カードなどネットワークに接続するためのインターフェイスである。通信プロトコル(例えば、TCP/IP、HTTP、FTPSMB等)の処理はOS、ミドルウェア及びアプリケーションプログラムが受け持つ。入力装置106は、キーボードやマウスなどでありユーザからの様々な操作指示を受け付ける。表示制御部107は、アプリケーションプログラムが指示する画面情報に基づき所定の解像度や色数等で液晶などのディスプレイ120に描画する。
HDD108はOS、アプリケーションプログラム及びデータを記憶するための大容量の不揮発メモリである。HDD108の他にSSD(Flash Solid State Drive)等が用いられることがある。本実施形態では命令セットシミュレータのプログラム110が記憶されている。このプログラム110は、記憶媒体109に記憶された状態で配布されたり、ネットワークを介して接続された所定のサーバからダウンロードされる形態で配布される。
〔命令セットシミュレータの動作〕
図6(a)は、命令セットシミュレータが実現するターゲットシステム200の概略構成図の一例を示す。命令セットシミュレータは、ターゲットとなるマイコンのハードウェアをソフト的に再現し、その動作を模擬する。ソフト的に再現されたマイコンをターゲットシステム200と称している。すなわち、命令セットシミュレータは、マイコンに搭載されたCPUの命令セットとアーキテクチャ(データ長、命令のオペコード長、オペランド数、レジスタ数、アドレス空間、アドレッシングモードなど)をソフトエラー解析装置100内でソフト的に作成し、命令実行時のレジスタや変数の状態を再現する。図示した以外にもマイコンが有する機能を再現できるが省略されている。ターゲットシステム200はマイコンの実機がなくてもソフトウェアを実行した際の動作を再現することができる。
ターゲットシステム200は、命令セットシミュレート部15、イベント管理部11、I/Oシミュレート部12、ターゲットレジスタ13、及び、ターゲットメモリ14を有している。ターゲットシステム200は、車両のECU(Electronic Control Computer)に搭載されるマイコンとそのマイコンで動作するソフトウェアである。
ターゲットメモリ14は、ターゲットのマイコンのアドレス空間を再現し保持する。具体的には、ターゲットのマイコンが有するROM、実行対象のソフトウェアが格納されるRAM、マイコンが使用するデータ(車両制御のためのテーブル等の他、ソフトウェア実行中に作成される変数などを含む)、メモリマップドI/Oなどが再現される。ターゲットレジスタ13には、マイコンのCPUが有する全てのレジスタの内容が再現される。上記のように、レジスタ1〜mのいずれか1つは関数の戻り値が格納されるレジスタである。説明のため、レジスタmを戻り値が格納されるレジスタとする。
I/Oシミュレート部12は、センサやアクチュエータなどの周辺装置の機能をソフトウェアでモデル化したものである。I/Oシミュレート部12は、命令セットシミュレート部15からセンサの信号の取得依頼を受け付け、信号に対応するデータを用意する。また、アクチュエータに設定されるパラメータを受け付け制御結果を通知する。また、タイマやセンサなどが生じさせる割込みを発生させる。
イベント管理部11は、I/Oシミュレート部12へのデータの入出力や割込みに応じて予め定められているイベントを発生させ命令セットシミュレート部15に通知する。
命令セットシミュレート部15は、ターゲットメモリ14からソフトウェアの命令を取り出し、デコード、実行、ターゲットレジスタ13への書き込みなどを行う。実行により、必要であればターゲットメモリ14にデータを書き込むことやターゲットメモリ14からデータを読み出すこともある。また、命令の実行結果に応じてI/Oシミュレート部12に対し、その命令の演算結果を反映する。また、イベント管理部11がイベントを発生させた場合は、イベントに応じた処理(命令の実行)に分岐する。このように、ターゲットレジスタ13とターゲットメモリ14(及び、イベント管理部11とI/Oシミュレート部12にも)には、マイコンがソフトウェアを実行した際の状態が再現される。
ターゲットシステム200はソフトエラー解析装置100により制御される。ソフトエラー解析装置100は、シミュレーションの開始・停止、任意のレジスタの読み出し・レジスタへの書き込み、ターゲットメモリ14の読み出し・書き込み、イベント管理部11に対し任意のイベントを発生させること、及び、I/Oシミュレート部12にデータを出力・入力すること等が可能になっている。ソフトエラー解析装置100はエラー情報ライブラリ34を作成する準備部21と、エラー情報ライブラリ34を用いたシミュレーションを行う実行部22を有している。
図6(b)はターゲットメモリ14のメモリマップの一例を示す図である。このようにマイコンが実行するアドレス空間にはどのアドレスに何が記憶されているかが明らかになっている。例えば、ターゲットソフトウェアの領域にはアドレス順にオブジェクトコード(図では人間が判読可能なアセンブリ(ニーモニック)に変換されている)が記憶されている。オブジェクトコードは1つの"_main"関数からひとまとまりの機能を提供するいくつかの関数を呼び出してマイコンに期待される性能を発揮する。図6(b)では"BRA Func1"が関数Func1を、"BRA Func2"が関数Func2を呼び出すための命令である。例えば、「MOV R0,R1」はレジスタR1の値をレジスタR0に格納する命令である。よって、レジスタR1がソース、レジスタR0がディスティネーションとなる。関数の実体は「関数名:」を先頭アドレスにして記述されている。「関数名:」から次の「関数名:」の手前のアドレスの命令までが1つの関数である。なお、このような記述は一例であって、オブジェクトコードがどのように記述されるかはマイコンの仕様に依存する。
また、データ領域(主にマイコンのRAM領域)には各種のデータが記憶される。関数が使用する変数(ローカル変数、大域変数)に格納された値は「変数名」が示すデータ領域のアドレスに記憶される。例えば、関数Func1、Func2は変数"VAR1"を使用しているが、この変数に格納されるデータはデータ領域の"VAR1"に対応するアドレスに記憶されている。なお、本実施形態ではローカル変数、大域変数を通常の意味(例えば、ある関数のみが使用する変数をローカル変数、2つ以上の関数が使用する関数を大域変数)で使用している。
〔エラー情報ライブラリの作成〕
以下、エラー情報ライブラリの作成について説明する。図7(a)は準備部21の機能ブロック図を、図8(a)はエラー情報ライブラリ34の作成について模式的に説明する図の一例を、図9はエラー情報ライブラリ34の作成手順を示すフローチャート図の一例をそれぞれ示す。図9の手順は1つの関数毎に行われる。
図7(a)に示した、ソフトエラー発生部31はレジスタ1〜mに順番にソフトエラーを発生させるか又は発生させたものと仮定する。伝播判定部32はレジスタ1〜mの1つずつにソフトエラーが発生したとして、それが大域変数又は関数の戻り値に伝播したか否かを判定する。ライブラリ作成部33は、伝播判定部32の判定結果に応じて各関数のソフトエラー伝播確率を算出する。そして、各関数のソフトエラー伝播確率をエラー情報ライブラリ34に保存する。
<S10>
ソフトエラー発生部31はターゲットソフトウェア(アセンブリコード)とメモリマップから関数がアクセスする大域変数を特定する。この大域変数と関数の戻り値がソフトエラーの伝播先となる。これら以外のデータの格納先をソフトエラーの伝播先とすることも可能であり、マイコンの仕様に依存する。
大域変数の特定方法には例えば以下の2つの方法がある。1つは、予め大域変数の名前をリストアップしておき、ターゲットソフトウェアの領域の関数からその名前の関数を抽出する方法である。もう1つは、開発者などがローカル変数にはTMP1〜TMPnなどの決まった名前を付与する規則を利用する。ターゲットソフトウェアの領域の関数において、2つ以上の関数から使用される変数を抽出し、そこからローカル変数に付与される名前の変数を削除する。残った変数を大域変数と決定する。
<S20>
ソフトエラー発生部31はソフトエラーを発生させるレジスタを順番に決定する。図8(a)に示すように着目している関数Aがn個の命令を有しているものとする。ソフトエラー発生部31は時間的・空間的にソフトエラーの発生箇所を網羅するためレジスタ1〜mに対し順番にソフトエラーを発生させたと仮定する。
<S30>
また、ソフトエラー発生部31は、時間的・空間的に網羅するため命令1〜nに対しても同様に、順番に、命令の直前にソフトエラーが発生したと仮定する。S20とS30から、次のような組み合わせで順番でソフトエラーが発生させられる。
レジスタ1に対し命令1の直前
レジスタ1に対し命令2の直前

レジスタ1に対し命令nの直前
レジスタ2に対し命令1の直前
レジスタ2に対し命令2の直前

レジスタ2に対し命令nの直前

<S40>
伝播判定部32はソフトエラーが発生されられる毎に、ソフトエラーが発生されられたレジスタがそれ以降の命令でどのように使われるかをトレースする。例えば、図8(a)に示すように、レジスタ1に対し命令3の直前にソフトエラーが発生したとする。命令3はレジスタ1を使って演算した結果をレジスタ2に格納した。命令4はレジスタ2のデータを大域変数aに格納した。この場合、伝播判定部32はソフトエラーが大域変数aに伝播したと判定する。また、例えば、命令4がレジスタ2のデータをレジスタmに格納した場合は、ソフトエラーが関数の戻り値に伝播したと判定する。なお、ソフトエラーが大域変数と関数の戻り値に両方に伝播することもある。
さらに、伝播判定部32は、大域変数や関数の戻り値にソフトエラーが伝播した場合、どのように伝播したかについて判断することができる。すなわち、エラー値(ソフトエラーが発生させられたレジスタの値)が大域変数や関数の戻り値に現れるまでの経路に着目する。エラー値が一度も演算処理されないで大域変数や関数の戻り値に格納された場合、レジスタの任意の1ビットが不正値であるとする。このようなエラーを「1ビットエラー」と称す。一度以上、演算処理のソースとして使用された場合、ディスティネーションのレジスタには演算結果として加工された値が格納されるため、どのような値になるかは様々である。このようなエラーを「ランダムエラー」と称す。
一方、伝播判定部32が命令nまでトレースしてもレジスタ1のデータが大域変数にも関数の戻り値にも格納されない場合、伝播しないと判定する。また、命令nが実行されるまでに、ソフトエラーが発生させられたレジスタが演算で使用されことなく別の値で上書きされると、そのソフトエラーは伝播しないことになる。
<S50>
ソフトエラー発生部31は着目している関数Aの全ての命令nまでソフトエラーを発生させたか否かを判定する。
<S60>
命令nまで終了していない場合(S50のNo)、ソフトエラー発生部31はiを1つ大きくして処理はステップS30に戻る。
<S70>
命令nまで終了した場合(S50のYes)、ソフトエラー発生部31は全てのレジスタmまでソフトエラーを発生させたか否かを判定する。全てのレジスタmまで終了していない場合、処理はS20に戻る。
<S80>
全てのレジスタmまで終了した場合、ライブラリ作成部33は着目している関数のエラー伝播確率を算出する。
図8(b)は1つの関数のソフトエラー伝播確率を説明する図の一例である。上述したように、「ソフトエラーの伝播先」には関数の戻り値、大域変数、関数の戻り値&大域変数、及び、伝播なしがある。図8では大域変数はaだけだが、着目している関数が使用しソフトエラーが伝播した全ての大域変数が登録される。また、1つの「ソフトエラーの伝播先」に対し「エラー内容」として、1ビットエラーとランダムエラーが登録される。
伝播判定部32は、ソフトエラー発生部31がソフトエラーを発生させた回数Nに対し、それぞれの事象の発生回数からソフトエラー伝播確率を算出する。どの事象も発生しない回数も考慮すると、各事象のソフトエラー伝播確率の合計は100%となる。エラー情報ライブラリ34には各関数について求められたエラー伝播確率が登録される。なお、積算値は、後述するエラー注入時にどの事象が発生したかを算出するために使用される。
このようなエラー情報ライブラリ34の作成方法では、サイクル数毎にレジスタにソフトエラーを発生させる必要がなく、「関数の数×レジスタ数×関数の命令数」の試行回数でエラー情報ライブラリ34を作成できる。また、エラー情報ライブラリ34の作成時はターゲットシステムへの影響がなくなるまで監視する必要がないので(関数の実行が終わるまででよい)現実的な時間内に作成できる。すなわち、エラー情報ライブラリ34を作成することで時間的・空間的な網羅性を関数に集約でき、シミュレーション時には時間軸だけ考慮すればよいことになる。
なお、図8(b)では、ソフトエラーの伝播先、エラー内容、及び、ソフトエラー伝播確率が求められているが、ソフトエラーの伝播先を区別しなくてもよいし、エラー内容を区別しなくてもよい。これらの場合、ソフトエラーが伝播した確率だけ求められる。シミュレーション時は確率に応じてソフトエラーの注入の有無だけ判断される(注入先及びエラー内容は組み合わせてシミュレーションされる)。一方、確率が求められなくても、ソフトエラーの伝播先又はエラー内容だけが求められていてもよい。シミュレーション時には、ソフトエラーの伝播先又はエラー内容に応じて必ずソフトエラーが注入される。
また、図3と同様の手順でエラー情報ライブラリ34を作成してもよい。つまり、サイクルを変えながら各レジスタにソフトエラーを発生させ、大域変数と関数の戻り値への伝播の有無をトレースする。この場合、ターゲットシステム200に必要な入力値はI/Oシミュレート部12等を使用して、実際の制御の典型値を用いる。この方法でも、エラー情報ライブラリ34は1回作成しておけばよいので現実的な時間内に作成できる。
〔エラー情報ライブラリを用いたシミュレーションの実行〕
図7(b)は準備部21の機能ブロック図を、図10はシミュレーションの実行手順を示すフローチャート図の一例をそれぞれ示す。準備部21は、関数特定部39、エラー注入タイミング決定部40、エラー注入部35、データ収集部36、及び、比較部37を有し、上記のエラー情報ライブラリ34と正常値データベース38を有している。エラー情報ライブラリ34と正常値データベース38はソフトエラー解析装置100がアクセス可能なネットワーク上にあってもよい。
正常値データベース38はエラー注入することなく、ソフトエラー解析装置100がターゲットシステム200を動作させた場合に、着目変数に格納される値が登録されている。着目変数は、マイコンの故障に繋がる又は故障と呼んでよい事象に関係する変数であり、主に出力に関係する変数である。具体的には、アクチュエータ、センサ、スイッチが接続されたI/Oに出力される変数、ドライバ回路に出力される変数等である。着目変数の正常値は例えばサイクル数に対応づけて記録されている。出力に関する変数はメモリマップのI/O領域にアドレスを有するので、I/O領域のアドレスに値が設定される変数が着目変数である。
<S110>
ソフトエラー解析装置100はターゲットシステム200のシミュレーションを開始する。これにより、命令セットシミュレート部15はターゲットメモリ14からサイクル毎に命令を読み出しマイコンのアーキテクチャに従って、ターゲットシステム200の状態を更新していく。マイコン上でよく呼ばれる関数は命令セットシミュレート部15が実行する頻度も高くなる。
<S210>
エラー注入タイミング決定部40はエラーを注入するタイミング(例えばサイクル数)をランダムに決定する。メモリ障害は時間にランダムに発生するため、注入タイミングをランダムにすることで実現象を再現することができる。タイミングの決定はシミュレート開始前に決めておいてもよいし、シミュレート中に決定してもよい。
<S120>
関数特定部39は、エラー注入タイミングに至ったか否かを判定する。例えば、命令セットシミュレート部15が制御するサイクル数を監視して、エラー注入タイミング決定部40が決定したサイクル数と比較する。
<S130>
エラー注入タイミングに至った場合、関数特定部39はシミュレーションをいったん停止し、現在、実行中の関数の終了アドレスを特定する。終了アドレスを特定するのは、関数の実行の完了時にエラーを注入するからである。関数特定部39は、停止時のプログラムカウンタの値を命令セットシミュレート部15から取得し、メモリマップのアドレスを参照して実行中の関数と、その関数の終了アドレスを特定する。
<S140>
実行部22はシミュレーションを再開する。
<S150>
関数特定部39は実行中のプログラムカウンタのアドレスが、S130で特定した終了アドレスになり、別のアドレスになったことで関数の実行が終了したことを判定する。
<S160>
関数特定部39はシミュレーションをいったん停止する。これによりターゲットシステム200はS130で特定した関数の実行が完了した状態となる。関数特定部39は、エラー注入部35に、エラー注入する対象の関数とエラー注入タイミングであることを通知する。
<S220>
エラー注入部35はエラー情報ライブラリ34から実行が完了した関数のエラー伝播確率を読み出して、エラーを注入するか否か、エラーを注入する場合はどの事象のエラーを注入するかを判定する。例えば、0〜100の数値をランダムに発生させ、その数値がエラー伝播確率の積算値に対し対応する事象が、注入されるエラーである。これにより、エラー伝播確率に応じてソフトエラーの影響を決定できる。なお、伝播なしと決定された場合、エラー注入なしにシミュレーションが再開される。これにより試行時間を低減できる。
<S170>
エラー注入部35はS220で決定したエラーをレジスタm又は大域変数の少なくとも一方に注入する。
<S180>
実行部22はシミュレーションを再開する。
<S190>
データ収集部36は、所定時間、着目変数に格納される値をサイクル数に対応づけて収集する。所定時間とは着目変数に影響があるか否かを判定できる充分な時間であり、任意に決めることができる。
この後、処理はステップS110に戻り、次のエラー注入タイミングになるとエラーが注入される。エラー注入の回数はソフトエラーの評価対象となる時間スケール(メモリ障害が発生する可能性がある時間幅に実行されるサイクル数)に基づき、所望の精度が得られる回数だけ繰り返す。つまり、1時間に1回、メモリ障害が発生すると想定した場合、1時間に実行される各関数の回数に応じた比率で、各関数にエラー注入できるまで繰り返す。または、ターゲットシステムへの影響が一様になるまで(例えば全ての関数に対し所定回数以上エラーが注入されるまで)行う。
比較部37は、データ収集部36が収集した試験結果の着目変数の値と正常値データベース38の正常値を比較する。比較はシミュレーション中にリアルタイムに行ってもよいし、シミュレーションが終わった後に行ってもよい。比較部37は試験結果と正常値の着目変数の値が一致しない回数をカウントする。また、一致しない場合、タイミングがずれて一致する場合があるため、正常値の前後のサイクルで一致する試験結果を探し、タイミングずれ量を抽出する。ある程度の数(例えば数十〜数百)のサイクル内に一致する試験結果がない場合、完全不一致とする。
比較部37は試行回数と、一致しない回数をカウントしておくので、マイコンや車両の開発者などはメモリ障害がターゲットシステム200に与える影響を定量的に把握することが可能になる。
以上説明したように、本実施形態のソフトエラー解析装置100は、メモリ障害による時間的・空間的な影響を関数毎のソフトエラー伝播確率に反映させるので、試行回数を削減できる。すなわち、関数単位で大域変数及び関数の戻り値にソフトエラーを発生させればよいので、サイクル数毎にレジスタかつビット位置毎にソフトエラーを発生させる場合と比べて大幅に試行回数を削減できる。
また、エラー注入時、確率的に「伝播なし」と決定される場合があり、このケースではシミュレーションを実施する必要がないためシミュレーションの実行時間を削減できる。
13 ターゲットレジスタ
14 ターゲットメモリ
15 命令セットシミュレート部
31 ソフトエラー発生部
32 伝播判定部
33 ライブラリ作成部
34 エラー情報ライブラリ
35 エラー注入部
36 データ収集部
37 比較部
39 関数特定部
100 ソフトエラー解析装置
200 ターゲットシステム

Claims (9)

  1. ターゲットマイコンのシミュレータにソフトエラーを発生させて該ターゲットマイコンに生じる影響を解析するソフトエラー解析装置であって、
    前記ターゲットマイコンが実行するプログラムに含まれる各機能ブロック毎に、ソフトエラーのエラー内容、及び、エラー発生箇所が登録されたエラー情報記憶手段と、
    シミュレータが実行する命令のアドレス情報に基づき、実行中の機能ブロックを特定する機能ブロック特定手段と、
    前記機能ブロック特定手段が特定した機能ブロックの前記エラー内容、及び、前記エラー発生箇所を前記エラー情報記憶手段から読み出し、前記エラー内容及び前記エラー発生箇所に基づきシミュレータにソフトエラーを設定するエラー設定手段と、
    ソフトエラーが設定された後にシミュレータが所定の変数に格納する値と、ソフトエラーが設定されない状態で前記所定の変数に格納された正常値とを比較してソフトエラーの影響を評価する評価手段と、を有することを特徴とするソフトエラー解析装置。
  2. 前記エラー情報記憶手段には、ソフトエラーのエラー内容及びエラー発生箇所に加え、各エラー内容のソフトエラーの発生確率又は各エラー発生箇所のソフトエラーの発生確率が各機能ブロック毎に登録されており、
    前記エラー設定手段は、前記発生確率に基づいてシミュレータに発生させるソフトエラーのエラー内容、及び、エラー発生箇所を決定する、
    ことを特徴とする請求項1記載のソフトエラー解析装置。
  3. 前記エラー発生箇所は、機能ブロックの戻り値が格納されるレジスタ又は大域変数であり、
    前記エラー設定手段は、シミュレータの前記レジスタ又は前記大域変数の少なくとも一方にソフトエラーを設定する、
    ことを特徴とする請求項1又は2記載のソフトエラー解析装置。
  4. 前記エラー内容は、設定されたソフトエラーがそのまま前記エラー発生箇所に伝播する第1のエラー、又は、ソフトエラーが設定されたデータが演算対象となった後に前記エラー発生箇所に伝播する第2のエラーであり、
    前記エラー設定手段は、シミュレータの前記エラー発生箇所に前記第1のエラー又は前記第2のエラー少なくとも一方を設定する、
    ことを特徴とする請求項1〜3いずれか1項記載のソフトエラー解析装置。
  5. 前記発生確率には、エラー内容及びエラー発生箇所に関わらずソフトエラーが一切、発生しない確率が含まれており、
    前記エラー設定手段は、前記発生確率に基づきソフトエラーが発生しないと判定した場合、シミュレータにソフトエラーを設定することなく、着目している前記機能ブロックのソフトエラーの解析を終了する、ことを特徴とする請求項2記載のソフトエラー解析装置。
  6. 前記評価手段は、前記所定の変数に格納する値と正常値が一致しない場合、正常値と一致する値を命令実行サイクル数の前後で探し、探し当てた場合は前記命令実行サイクル数を抽出する、ことを特徴とする請求項1〜5いずれか1項記載のソフトエラー解析装置。
  7. ターゲットマイコンのシミュレータに生じさせたソフトエラーが、プログラムに含まれる各機能ブロックに及ぼす影響を解析してエラー情報を作成するエラー情報作成装置であって、
    ターゲットマイコンの全てのレジスタと前記各機能ブロックに含まれる全ての命令の組み合わせで、命令実行の直前にレジスタにソフトエラーを発生させるか又は発生させたと仮定するソフトエラー発生手段と、
    シミュレータが当該機能ブロックの命令を実行している間、予め特定されている特定変数又は機能ブロックの戻り値が格納される特定レジスタに前記ソフトエラーが伝播したか否かを判定する伝播判定手段と、
    前記伝播判定手段が伝播したと判定した前記特定変数又は伝播したと判定した前記特定レジスタをエラー発生箇所として抽出し、
    機能ブロック毎に、ソフトエラー発生手段がソフトエラーを発生させた回数に対する前記特定変数に伝播した回数の比率又は前記特定レジスタに伝播した回数の比率から各エラー発生箇所の発生確率を算出するエラー情報取得手段と、
    を有することを特徴とするエラー情報作成装置。
  8. 前記伝播判定手段は、シミュレータが当該機能ブロックの命令を実行している間、ソフトエラーを発生させた又は発生させたと仮定するレジスタのデータが演算対象となる否かを監視し、
    前記エラー情報取得手段は、前記特定変数に伝播する回数を演算対象となった場合とならない場合に分けてカウントし、前記特定レジスタに伝播する回数を演算対象となった場合とならない場合に分けてカウントし、各エラー発生箇所毎に演算対象となった場合とならない場合とに分けて前記発生確率を算出する、
    ことを特徴とする請求項7記載のエラー情報作成装置。
  9. 前記エラー情報取得手段は、ソフトエラー発生手段がソフトエラーを発生させた回数に対する前記特定変数と前記特定レジスタのどちらにも伝播しない回数の比率から、ソフトエラーが伝播しない確率を算出する、ことを特徴とする請求項7又は8記載のエラー情報作成装置。
JP2013031390A 2013-02-20 2013-02-20 ソフトエラー解析装置、エラー情報作成装置 Expired - Fee Related JP5937530B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013031390A JP5937530B2 (ja) 2013-02-20 2013-02-20 ソフトエラー解析装置、エラー情報作成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013031390A JP5937530B2 (ja) 2013-02-20 2013-02-20 ソフトエラー解析装置、エラー情報作成装置

Publications (2)

Publication Number Publication Date
JP2014160421A JP2014160421A (ja) 2014-09-04
JP5937530B2 true JP5937530B2 (ja) 2016-06-22

Family

ID=51612057

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013031390A Expired - Fee Related JP5937530B2 (ja) 2013-02-20 2013-02-20 ソフトエラー解析装置、エラー情報作成装置

Country Status (1)

Country Link
JP (1) JP5937530B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113946466B (zh) * 2021-11-03 2022-10-14 广州辰创科技发展有限公司 基于qt的软件错误溯源方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2734234B2 (ja) * 1991-07-29 1998-03-30 日本電気株式会社 情報処理装置
JP2013003633A (ja) * 2011-06-13 2013-01-07 Toyota Motor Corp 故障再現装置、故障再現方法

Also Published As

Publication number Publication date
JP2014160421A (ja) 2014-09-04

Similar Documents

Publication Publication Date Title
US10996947B2 (en) Diagnosing production applications
US10592396B2 (en) Memory validity states in time-travel debugging
JP7202293B2 (ja) 垂直統合インストルメント化およびトレース再構成のためのシステム、方法およびデバイス
US7849450B1 (en) Devices, methods and computer program products for reverse execution of a simulation
US20190324891A1 (en) Visualizing last/next known data values in time travel traces
US20210064512A1 (en) Selective memory tracing of program execution
US20110289373A1 (en) Electornic Design Emulation Display Tool
JP2006185211A (ja) プログラム解析装置、テスト実行装置、その解析方法及びプログラム
JP2006313521A (ja) プログラマブルデバイスのモデリング方法および装置
US20080184150A1 (en) Electronic circuit design analysis tool for multi-processor environments
EP3921734B1 (en) Using historic execution data to visualize tracepoints
Marra et al. Out-Of-Place debugging: a debugging architecture to reduce debugging interference
WO2020154064A1 (en) Dynamic diagnostic code instrumentation over a historic program execution
Sharma et al. Hardware‐assisted instruction profiling and latency detection
Daoud et al. Recovering disk storage metrics from low‐level trace events
US10579761B1 (en) Method and system for reconstructing a graph presentation of a previously executed verification test
Machado et al. Minha: Large-scale distributed systems testing made practical
JP5937530B2 (ja) ソフトエラー解析装置、エラー情報作成装置
US8935200B2 (en) Dynamic database dump
US10540254B2 (en) Technologies for analyzing persistent memory programs
Tian et al. {CrystalPerf}: Learning to Characterize the Performance of Dataflow Computation through Code Analysis
Vöcking Performance analysis using Great Performance Tools and Linux Trace Toolkit next generation
KR20200031677A (ko) 디버거에서 트레이스된 코드의 포커싱된 실행
Shimari et al. Evaluating the effectiveness of size-limited execution trace with near-omniscient debugging
Ahmed Relyzer+: An open source tool for application-level soft error resiliency analysis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150511

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160330

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: 20160419

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160512

R151 Written notification of patent or utility model registration

Ref document number: 5937530

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees