JP2011248845A - ソフトエラー検出回路およびソフトエラー検出方法 - Google Patents
ソフトエラー検出回路およびソフトエラー検出方法 Download PDFInfo
- Publication number
- JP2011248845A JP2011248845A JP2010124408A JP2010124408A JP2011248845A JP 2011248845 A JP2011248845 A JP 2011248845A JP 2010124408 A JP2010124408 A JP 2010124408A JP 2010124408 A JP2010124408 A JP 2010124408A JP 2011248845 A JP2011248845 A JP 2011248845A
- Authority
- JP
- Japan
- Prior art keywords
- path
- execution
- signature
- instruction
- soft error
- 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.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】 ソフトエラー検出の信頼性を確保しつつ、メモリオーバヘッドを抑制するとともに実行時間増を抑制し、さらにプログラムに対するハードウェアの互換性を有するソフトエラー検出回路およびソフトエラー検出方法を提供する。
【解決手段】 プログラム実行中のプログラムカウンタ値および命令から所定のパスを検出するパス検出手段3と、パスの開始から終了までに対応する制御信号系列の圧縮値を生成するシグネチャ生成手段5と、シグネチャ生成手段により生成された圧縮値を登録するシグネチャ登録手段4と、同一パスについて生成された最新の圧縮値を先行して登録された圧縮値と比較する比較手段3とを備える。
【選択図】 図1
【解決手段】 プログラム実行中のプログラムカウンタ値および命令から所定のパスを検出するパス検出手段3と、パスの開始から終了までに対応する制御信号系列の圧縮値を生成するシグネチャ生成手段5と、シグネチャ生成手段により生成された圧縮値を登録するシグネチャ登録手段4と、同一パスについて生成された最新の圧縮値を先行して登録された圧縮値と比較する比較手段3とを備える。
【選択図】 図1
Description
本発明は、順序回路におけるいわゆるソフトエラーを検出するための回路および検出方法に関するものである。
デジタル集積回路では、宇宙線または放射線などにより記憶素子の値が反転するなどの影響を受け、順序回路が誤った値を出力することがある。これをソフトエラーと呼ぶ。この種のソフトエラーは、SRAMやDRAMなどの記憶素子におけるものとして顕在化したが、近年では集積回路の微細化等にともなって、組み合わせ回路におけるエラーも問題視されるようになっている。
記憶素子に発生するエラーに対しては、パリティまたはハミングコードによって検出・修正できることは周知である。他方、組合せ回路におけるエラーに対しては、上記パリティおよびハミングコードでは対処できず、回路を多重化する方法によって対処されていた。
しかし、回路を多重化する手法は、同じ回路を多重度に応じて用意しなければならず、そのためのコストが増大するのみならず、面積ペナルティを生じさせることから、民生機器向けの大規模集積回路(VLSI)に適用するときには、高額化を招来することとなっていた。
そこで、制御フロー検査(Control Flow Checking:以下、CFCと表記する場合がある)技術が提案されている(非特許文献1ないし4参照)。このCFC技術では、決まって出現する制御信号系列に対応付けられる圧縮値(以下、シグネチャと表記する場合がある)が用いられており、例えば、プログラムのコンパイル時に上記制御信号系列に対応する圧縮値を計算し、これを参照シグネチャとしてプログラムコードに埋め込み、プログラム実行中に計算される同一の制御信号系列に対応する圧縮値を計算し、両圧縮値(シグネチャ)を比較することによって、制御フロー誤りを検出するものであった。
J.P.Shen,and M.A.Shuette,"On−line montitoring using signatured instruction streams" Proc.International Test Conference, pp.275−282,October 1983
K.Wilken,and J.P.Shen,"Continuous signature monitoring: low−cost concurrent detection of processor control errors," IEEE Transactions on Computer−Aided Design, Vol.9,No.6,pp.629−641,June 1990
M.Namboo,"Techniques for testing of VLSI processor operation," IEEE International Test Conference, pp.461−468, 1982
M.Schuette,and J.Shen,"Processor control flow monitoring using signatured instruction streams" IEEE Transactions on Computers,Vol.C−36,pp.264−276,March 1987
前記CFC技術では、例えば、プログラムのコンパイル時における制御信号系列に対応する参照シグネチャを計算し、プログラムコード中に挿入するものである場合には、シグネチャコンパイラは、アセンブリコードを基本ブロックに分割し、当該基本ブロックごとの参照シグネチャが計算されており、この参照シグネチャは、オペコードとともにシグネチャ命令として当該基本ブロックの末尾に追加されていた。従って、専用ハードウェアを使用して基本ブロックを実行することにより、そのプラグラム実行によるシグネチャ(以下、実行時シグネチャと表記する場合がある)が生成され、シグネチャ命令によって参照シグネチャと実行時シグネチャを比較判定するものであった。
しかしながら、上記の従来技術は、プログラムをメモリ領域に保存する場合、参照シグネチャや初期化シグネチャをメモリ領域に保存することとなり、メモリオーバヘッドを生じる可能性が高く、また、プログラムコード中にシグネチャ命令が挿入されることから、実行時間が増加し、さらに、当該プログラムは専用ハードウェアにおいてのみ使用が可能となるため、プログラムに対するハードウェアの互換性を失う結果となっていた。
本発明は、上記諸点にかんがみてなされたものであって、その目的とするところは、ソフトエラー検出の信頼性を確保しつつ、メモリオーバヘッドを抑制するとともに実行時間増を抑制し、さらにプログラムに対するハードウェアの互換性を有するソフトエラー検出回路およびソフトエラー検出方法を提供することである。
そこで、前記課題を解決するために、請求項1に記載のソフトエラー検出回路にかかる発明は、プログラム実行中のプログラムカウンタ値および命令から所定のパスを検出するパス検出手段と、前記パスの開始から終了までに対応する制御信号系列の圧縮値を生成するシグネチャ生成手段と、該シグネチャ生成手段により生成された圧縮値を登録するシグネチャ登録手段と、同一パスについて生成された最新の圧縮値を先行して登録された圧縮値と比較する比較手段とを備えることを特徴とする。
ここで、「パス」とは、実行命令系列を内容とするものであり、「所定のパス」とは、設計条件またはプログラム条件などにより一意に定まるパスを意味し、例えば、ジャンプ命令および分岐命令における条件判定に対して一定の仮定の下に、実行開始アドレスと実行終了アドレスを与えるなどによって、実行命令系列を一意に定めることができるようにした場合が挙げられる。また、上記のようにして具体的に特定される実行命令系列を「画一的な実行命令系列」という。
請求項2に記載のソフトエラー検出回路にかかる発明は、前記した請求項1において、前記パス検出手段が、画一的な実行命令系列を単位として検出し、該実行命令系列の実行開始アドレスおよび実行終了アドレスを前記シグネチャ登録手段に提供するパス検出手段であることを特徴とする。
請求項3に記載のソフトエラー検出回路にかかる発明は、前記した請求項2において、前記パス検出手段が、前記シグネチャ生成手段を初期化するための初期値を該シグネチャ生成手段に提供するするとともに、前記実行命令系列の実行開始アドレスに対応する初期値を前記シグネチャ登録手段に提供するパス検出手段であることを特徴とする。
請求項4に記載のソフトエラー検出回路にかかる発明は、前記した請求項3において、前記シグネチャ登録手段が、前記実行命令系列の実行開始アドレスおよび実行終了アドレス、前記初期値ならびに前記圧縮値を単位として登録するシグネチャ登録手段であることを特徴とする。
請求項5に記載のソフトエラー検出回路にかかる発明は、前記した請求項1ないし4のいずれかにおいて、前記シグネチャ登録手段が、前記パス検出手段により検出された所定のパスごとに各対応する圧縮値を登録するシグネチャ登録手段であることを特徴とする。
請求項6に記載のソフトエラー検出回路にかかる発明は、前記した請求項1ないし5のいずれかにおいて、前記シグネチャ登録手段が、物理的または論理的に複数に区分されたシグネチャ登録手段とすることを特徴とする。
ここで、「物理的に複数に区分された」とは、複数のシグネチャ登録手段を備える場合を意味し、「論理的に複数に区分された」とは、単一のシグネチャ登録手段を使用しつつ、異なる種類等のパスを区別するために識別子を付与するなどによって、複数に区別され得るようにした場合を意味する。
他方、ソフトエラー検出方法にかかる請求項7に記載の発明は、請求項1ないし6のいずれかに記載のソフトエラー検出回路を使用するソフトエラー検出方法であって、プログラム実行中のプログラムカウンタ値および命令からシグネチャ登録手段に登録されていない所定のパスを検出するとき、該パスの開始から終了までに対応する制御信号系列の圧縮値を求め、同じ所定のパスを検出するとき、該パスの開始から終了までに対応する制御信号系列の圧縮値を求め、両圧縮値を比較することにより実行プログラムの正誤を判定することを特徴とする。
請求項8に記載のソフトエラー検出方法にかかる発明は、前記した請求項7において、前記所定のパスが、該パスの実行開始アドレスおよび実行終了アドレスにより特定されるものであり、前記圧縮値は、初期値とともに前記制御信号系列から求められ、かつ、同じ実行開始アドレスで特定されるパスについて共通の初期値により求められるものであることを特徴とする。
請求項9に記載のソフトエラー検出方法にかかる発明は、前記した請求項7または8において、前記所定のパスが、プログラム実行中の画一的な実行命令系列を単位として特定されるものであることを特徴とする。
請求項1に記載のソフトエラー検出回路によれば、実行中のプログラムから所定の条件を満たすパスを検出することができ、この条件を満たしたパスに対応する制御信号系列の圧縮値を生成し、これを参照シグネチャとして登録することができる。そして、同じパスに対応する制御信号系列について圧縮値を生成したとき、ここで生成された圧縮値と参照シグネチャとを比較することにより制御フローの誤りの有無を確認することができる。
上記発明では、パス中にある全ての命令が実行されたときに参照シグネチャが生成され、その参照シグネチャが一時的または永続的にシグネチャ登録手段に格納されることから、当該参照シグネチャをプログラムメモリまたはデータメモリに記憶する必要性がなく、メモリオーバヘッドを抑制する効果を奏する。そして、繰り返し実行される特定のプログラムについて参照シグネチャが生成される条件下においては、比較される頻度が高くなるため、これに伴いプログラム全体に占める命令網羅率が上昇し、制御フローの誤り検出の精度を向上させることができる。
さらに、CFC技術のようにプログラムコード中に参照シグネチャを挿入する必要がないため、ソフトエラー検出回路を備えないハードウェアにおいても同じプログラムを使用することができることとなり、プログラムにおけるハードウェアの互換性は維持される。
請求項2に記載のソフトエラー検出回路によれば、画一的な実行命令系列に対してのみ圧縮値が生成されるため、生成される圧縮値は本来的に同一となるべき範囲に限定されることとなる。従って、請求項1における効果に加え、比較されるシグネチャを単純に比較することによって、当該範囲のプログラムについての制御フローの誤り検出を行うこととなり、ソフトエラーを検出したときの誤判定を抑制させることとなる。
請求項3に記載のソフトエラー検出回路によれば、画一的な実行命令系列に対して圧縮値が生成される際、実行開始アドレスが同一であるパスについては、共通の初期値によってシグネチャ生成手段が初期化されることとなる。従って、請求項2の効果に加え、圧縮値を単純に比較することによりプログラムの制御フロー誤りを検出することができる。
請求項4に記載のソフトエラー検出回路によれば、シグネチャ登録手段には、圧縮値のみならず、当該パスの実行開始アドレスおよび実行終了アドレスが登録されていることから、パス検出手段がプログラム実行中のパスとの比較に際し、登録されている両アドレスを参照することができる。従って、請求項3の効果に加え、プログラム実行中のパスと登録されている圧縮値に対応するパスとの異同が、それぞれのパスの実行開始アドレスおよび実行終了アドレスを比較することによって可能となる。なお、実行開始アドレスが共通であっても、実行終了アドレスを比較することにより、これが異なる場合は、パスは異なるものと判断できることから、圧縮値が比較されることはなく、エラー検出の誤判定を回避できる効果をも奏する。
請求項5の記載のソフトエラー検出回路によれば、パス検出手段が検出する異なる複数のパスに対応する圧縮値が、それぞれ個別にシグネチャ登録手段によって登録されることから、複数のパスについて参照シグネチャを登録することができる。これにより、前記請求項1ないし4のいずれかの効果に加えて、多数のパスにかかる圧縮値を比較することができることとなり、実行命令系列の網羅率が高くなることから、ソフトエラー検出の信頼性を一層向上させることができる。
請求項6に記載のソフトエラー検出回路によれば、シグネチャ登録手段が複数に区分されていることから、パスの種類等に応じて区別して登録することができる。これにより、上記請求項1ないし4のいずれかの効果に加えて、実行開始アドレスおよび実行終了アドレスが共に一致するパスであっても、異なる種類のパスについては、区別して登録させることができ、圧縮値を比較させないことにより、ソフトエラーの誤判定を回避することができる。
請求項7に記載のソフトエラー検出方法によれば、実行中のプログラムから所定の条件を満たすパスを検出することにより、この条件を満たしたパスに対応する制御信号系列の圧縮値を生成することができ、これを参照シグネチャとして登録し、その後、同じパスにおけるプログラムが実行されるとき、当該パスに対応する制御信号系列について圧縮値を生成することから、ここで生成された圧縮値と参照シグネチャとを比較することによって、当該比較される同じパスにおける制御フローの誤りの有無を確認することができる。
また、上記ソフトエラー検出方法では、パス中にある全ての命令が実行されたときに参照シグネチャが生成され、これを一時的に格納することにより、プログラムメモリまたはデータメモリに記憶する必要がないことから、メモリオーバヘッドを抑制できる。さらに、繰り返し実行される特定のプログラムについて参照シグネチャが生成される場合には、シグネチャを比較する頻度が高くなり、プログラム全体に占める命令網羅率が向上することとなる。その結果として、制御フローの誤り検出の精度を向上させることができる。
請求項8に記載のソフトエラー検出方法によれば、画一的な実行命令系列に限定したシグネチャを比較することにより制御フローの誤りを検出するものであるから、請求項7の効果に加え、生成された圧縮値を単純に比較することによって制御フローの誤りを検出することができる。これにより、制御フロー誤りの検出の正確性が担保されるものとなる。
請求項9に記載のソフトエラー検出方法によれば、比較すべき圧縮値に対応するパスは、実行開始アドレスおよび実行終了アドレスによって特定されることから、請求項8の効果に加えて、実行開始アドレスが共通であっても実行終了アドレスが異なるパスに対応する圧縮値は比較対象とはならず、誤判定の原因を回避することができる。また、実行開始アドレスが共通する場合には、同じ初期値によって圧縮値が求められることとなるから、単純に実行終了アドレスの異同によって圧縮値の異同が決定され、プログラムの実行中に圧縮値生成処理が並行して行われ、実行終了アドレスを得た時点で、比較対象の有無の判断および比較判定を行うことが可能となる。
以下、本発明の実施の形態を図面に基づいて説明する。図1は、ソフトエラー検出回路にかかる実施形態の概略を示す図である。この図に示すように、本実施形態のソフトエラー検出回路は、プログラムカウンタ(以下、PCと略称する)1から出力される値と、命令メモリ2から出力される命令が供給されるパス解析器3を備えており、さらにシグネチャ登録手段として機能するシグネチャテーブル4と、シグネチャ生成手段として機能するシグネチャ生成器5を備えている。パス解析器3は、パス検出手段として機能し、PC1の値と命令メモリ2の命令から所定のパスを検出し、また、シグネチャテーブル4に登録される情報を入手しつつ、適宜シグネチャ生成器5に対し制御信号系列の圧縮値の生成を要求する。ここで、制御信号系列の圧縮値のことを「シグネチャ」といい、制御信号系列には実行命令系列を含むことができる。制御信号は図中の制御信号生成回路によって生成される。
上記のパス解析器3は、所定のパス(実行命令系列)を検出するために、PC1の値および命令メモリ2の命令を解析し、パスの実行開始アドレスと実行終了アドレスを求める。PC1には命令メモリ2に記憶される命令のアドレス値が保持されており、命令メモリ2から上記命令アドレスに対応する命令をパス解析器3が取得できる。PC1に含まれるアドレス値のうち、パスの始まりを実行開始アドレスとし、パスの終わりを実行終了アドレスとしてシグネチャテーブル4に出力する。なお、パスとは、実行命令系列を指すものであり、所定のパスとは、ジャンプ命令および分岐命令における条件判定に対して一定の仮定に下に、実行開始アドレスと実行終了アドレスを与えることで一意に定まる実行命令系列を意味する。従って、パスの始まりとは、上記条件判定に合致するパスの最初に位置する実行命令であり、パスの終わりとは、上記条件判定に合致するパスの最終に位置する実行命令である。
シグネチャテーブル4では、上記の実行開始アドレスおよび実行終了アドレスが格納されるとともに、実行開始から終了までの命令信号から生成された圧縮値(以下、参照シグネチャという場合がある)が格納される。さらに、参照シグネチャを生成する際に付与した初期値(以下、初期化シグネチャという場合がある)をも同時に格納する。これら両シグネチャは上記アドレス値とともに保存される。
シグネチャ生成器5は、パス解析器3が所定のパスの始まりを検出したとき、初期化したうえで、パスの終わりに至る実行命令系列に対する回路中の制御信号系列を圧縮してシグネチャを生成する。この種の信号圧縮には、例えば、線形帰還シフトレジスタ(Linear Feedback Shift Register:LFSR)に代表される情報圧縮器を使用することができる。このような情報圧縮器によって、制御信号の系列を情報圧縮することができるとともに、特定の定まった値に写像することができる。このような情報圧縮器によって生成された写像がシグネチャである。
シグネチャ生成器5で生成されるシグネチャは、パス解析器3によって参照シグネチャとの比較に供されるか、または、比較すべき参照シグネチャが存在しないときは、パス解析器3を介してシグネチャテーブル4に出力され、当該シグネチャを参照シグネチャとしてシグネチャテーブル4に格納される。パス解析器3が参照シグネチャと同じパスの圧縮値を読み出すとき、比較により、制御フローの正誤が判定される。このように、パス解析器3は、同じパスに対応するシグネチャを比較する比較手段として機能するものである。
これにより、同じアドレスの命令が実行される場合、制御フローに誤りがなければ当該命令に従って同じ処理がなされる。そして、その際に生成されるシグネチャは本来同様の値となることが予想されることから、同じパスに対応するシグネチャは比較対象の候補となり得る。これらのシグネチャ同士を比較することによって、制御が同様に繰り返されているか否かを把握することができるのである。
なお、PC1は、加算器6によって、命令アドレスが規則的に加算されるため、連続する実行命令系列の場合には命令アドレスが連続することとなるが、ジャンプ命令または分岐命令が存在する場合には、当該命令に従って他の加算器7によって、連続しない命令アドレスに移ることとなる。そのため、生成されるシグネチャにはPC1の値も関連づけられる。
ここで、具体的な機能について説明する。上述のように、パス解析器3は、PC1から出力される値と、命令メモリ2から出力される命令を受け取る。命令メモリ2から出力される命令に基づいて、パス解析器3が所定のパスの始まりを検出したときは、当該パスの比較対象となるべきパス(候補となるパス)がシグネチャテーブル4に登録されているか否かを確認する。候補となるパスの存在を確認するためには、上記双方のパスに対応する実行開始アドレスを比較することによって行われる。
候補となるパスがシグネチャテーブル4に登録されている場合には、シグネチャ生成器5により実行時シグネチャが生成される。このとき、シグネチャ生成器5には、シグネチャテーブル4に登録されている候補となるパスの初期化シグネチャが出力され、当該初期化シグネチャによってシグネチャ生成器5が初期化される。そして、候補となるパスに対応する実行終了アドレスの命令が実行されるとき、前述の実行開始アドレスから実行終了アドレスに至る実行命令系列のシグネチャ(実行時シグネチャ)が生成されることとなり、パス解析器3において参照シグネチャと比較される。
実行開始アドレスが一致した場合であっても、実行終了アドレスが異なればパスが異なるものとなる。その理由は、パスは実行開始アドレスと実行終了アドレスによって決定する実行命令系列であり、また、実行開始アドレスのみが一致しても実行終了アドレスが異なれば全体に対応するシグネチャも異なることとなるから、そのようなシグネチャを比較対象から除外するためである。しかし、実行開始アドレスを検出した時点では未だ実行終了アドレスは判明しないことから、実行終了アドレスを検出するまでは、同一のパスであることを想定した処理を行うのである。そこで、実行開始アドレスが一致する場合には、比較対象の候補となり得るパスと同じ初期化シグネチャによって、シグネチャ生成器5を初期化するのである。結果的に異なるパスとなる場合であっても、同じ実行開始アドレスを検出したときは、候補となるパスの初期化シグネチャを用いることで、実行終了アドレスを検出した時点で、パスの異同を判断するのである。
上記により、実行開始アドレスが同一でありながら異なるパスとなるものが複数存在することとなるが、これは実行終了アドレスが異なるものであり、初期化シグネチャを同一にするが異なる参照シグネチャとしてシグネチャテーブル4に登録されることとなる。
他方、候補となるパスが登録されていないときは、当該パスの開始アドレスをシグネチャテーブル4に登録する。また、同時にパス解析器3が適切な値を付与してシグネチャ生成器5に出力し、この値でシグネチャ生成器5を初期化し、初期化シグネチャを生成する。この初期化シグネチャはシグネチャテーブルに登録される。さらに、パスの終わりを検出すると、当該パスの実行終了アドレスをシグネチャテーブル4に登録するとともに、パスの終わりまでの実行命令系列についてシグネチャを生成してシグネチャテーブル4に登録する。なお、シグネチャテーブル4に登録されるのは、実行開始アドレス、実行終了アドレス、初期化シグネチャおよび参照シグネチャであり、これらは上述のとおり、候補となるパスの存在確認と、候補となるパスと認定された場合の比較に利用される。
上記のようにソフトエラー検出回路にかかる本実施形態では、PC1の値および命令メモリ2のから出力される命令に基づきパスを検出するとともに、所定のパスを検出するとき、その制御信号系列からシグネチャを生成することができるので、当該シグネチャを比較することによって繰り返し命令実行される際に、ソフトエラーを検出することができる。また、実行されるプログラムは変更されるものではないことから、ハードウェアが変更しても互換性は維持されることとなる。また、シグネチャはシグネチャテーブル4に登録されることから、プログラムメモリまたはデータメモリを使用することがないため、メモリオーバヘッドを生じさせるおそれはない。
なお、上記実施形態では、単一のシグネチャテーブル4を図示しつつ説明したが、シグネチャテーブルは複数用意する場合もあり得る。後述するように、シグネチャは、実行命令系列が連続するものと、ジャンプ命令や分岐命令に起因して連続しない実行命令系列との二種類が想定されるため、これらを異なるシグネチャテーブルに保存させる構成とすることができるのである。また、パスは画一的な実行命令系列を単位として検出することにより、比較するシグネチャの数を少なく抑える構成とすることも可能である。この場合においても、シグネチャは、連続する実行命令系列を単位とする場合、非連続する実行命令系列を単位とする場合に分類することができる。
次に、ソフトエラー検出方法の実施形態について説明する。本実施形態で使用される回路は上述した回路と同様である。従って、図2に示すように、PCの値および命令からパスを検出し、プログラム実行中の実行命令系列についてシグネチャが生成される。生成されたシグネチャは、参照すべき先行のシグネチャ(参照シグネチャ)が登録先に存在する場合は、その参照シグネチャと、プログラム実行される制御信号のシグネチャ(実行時シグネチャ)とを比較し、参照シグネチャが存在しない場合には、実行時シグネチャが参照シグネチャとしてシグネチャテーブルに登録される。
パスは、ジャンプ命令及び分岐命令における条件判定に対して一定の仮定を想定し、その実行開始アドレスと実行終了アドレスを与えることによって、定まった実行命令系列を形成するものであり、上記条件判定に合致したパスの始まりとパスの終わりがパス解析器により検出される。
そこで、パスの決定方法について例示して説明する。どのような規則によってパスを決定するかは任意であるが、ここでは一例を次に示すこととする。なお、これは単なる例であって、これに限定されるものではなく、その他の規則によっても画一的な実行命令系列を構築することは可能であることを付言する。
本実施形態では、連続するアドレスの実行命令系列と、ジャンプ命令・分岐命令によってアドレスが不連続となる実行命令系列とに分類し、それらに対してパスを決定することとする。なお、このようにパスを二つに分類する場合には、単一のシグネチャテーブルを論理的に二分して使用する(例えば、1ビットの情報を付加し「0」と「1」の値で区別する)ほかに、物理的に二個のシグネチャテーブルを設けることにより、上記二種類に分類された実行命令系列を個別に登録することができる。
アドレスが連続する場合の実行命令系列の規則性については、第1に、プログラム実行開始アドレスはパスの始めとする。第2に、ジャンプ命令および分岐命令によって、連続しないアドレスの命令が実行される場合(分岐条件が成立する場合)には、制御が移った命令をパスの始めとする。第3に、無条件ジャンプ命令はパスの終わりとするか、または、分岐条件が成立した命令をパスの終わりとする。なお、第3において、遅延分岐スロットがある場合には、遅延スロット内にある命令の最後をパスの終わりとする。
このような規則性(条件判定)に従ってパスを定める場合の例を示す。図3(a)に示すようなプログラムを仮定すると、この図に示すプログラムは、命令1から命令4までが連続するアドレスにより処理されるが、命令2の分岐条件が「真」となる場合には命令5に制御が移り、さらに、分岐後は命令5に連続するアドレスの命令6が実行される。この場合、命令1はパスの始まりとなり、命令2における分岐条件が「偽」となるときには、命令4まで連続するアドレスの命令が実行されるから、命令1〜命令4は上記条件を満たすパスとなる。
また、命令2における分岐条件が「真」となる場合においても、命令1は、上記と同様にパスの始めとなり、命令2は分岐条件が成立した命令であるからパスの終わりとなる。これは、命令1〜命令2はアドレスが連続する実行命令系列のパスの条件を満たしている。さらに、命令5は、制御が移った命令であるのでパスの始めとなることから、命令5〜命令6はアドレスが連続する実行命令系列のパスの条件を満たすこととなる。
他方、アドレスが不連続となる実行命令系列の規則性については、第1に、ジャンプ命令および分岐命令によって連続しない命令アドレスに制御が移る場合には、当該ジャンプ命令および分岐命令の命令アドレスをパスの始めとする。第2に、ジャンプ命令または分岐命令の宛先アドレスをパスの終わりとする。
この規則性に従ってパスを定める場合の例を説明すると、上記と同様のプログラム(図3(a)参照)において、命令2における分岐条件が「真」となり、命令2に続いて命令5が実行される場合には、命令2は分岐条件が成立した命令であるからパスの始まりとなる。また、命令5は分岐の宛先の命令であるからパスの終わりとなる。従って、命令2〜命令5は上記条件を満たすパスとなる。
上記のように、二種類のパスを区別して決定することにより、分岐条件が「真」である場合または「偽」である場合のいずれについてもパスを決定することができる。さらに、パスの始まりおよび終わりのいずれもが共通する場合においても、上記のように二種類のパスを区別することにより異なるパスとすることができる。
すなわち、図3(b)に示すように、命令1から命令5までが連続するアドレスにより処理されるが、命令1における分岐条件が成立する場合には、命令5にジャンプするようなプログラムを想定するとき、上述の規則性に従ってパスを決定すると、分岐条件が「真」または「偽」のいずれの場合においても、命令1がパスの始まりとなり、命令5がパスの終わりとなる。
しかしながら、上述のとおり、アドレスが連続する実行命令系列(命令1、命令2、・・・、命令5)と、アドレスが連続しない実行命令系列(命令1、命令5)とは、異なる種類のパスとして区別されることから、同じ実行開始アドレスと同じ実行終了アドレスにより決定されるパスであるが、異なる(物理的または論理的に異なる)シグネチャテーブルに登録されることによって明確に区別され得る。
なお、上記のように、分岐命令とジャンプ命令が存在する場合には、実行命令の全体についてシグネチャを生成しようとすると、その数が増大することとなるから、このような場合には、分岐命令とジャンプ命令の中間についてはシグネチャを生成しない、すなわち、この範囲における制御フロー誤りの判定を行わないこととしてもよい。
このように、本実施形態のソフトエラー検出方法では、実行プログラムについてパスを検出しつつ、検出された範囲についての実行命令系列についてシグネチャを生成することから、全ての実行プログラム(実行されない命令を含むプログラム)についてソフトエラーを検出するものではない。しかしながら、フィードバック制御に代表されるように、同じ命令が繰り返し実行されるプログラムにおいては、パスが検出される頻度が増加する。その結果として、プログラム全体に占める命令網羅率も向上することとなり、ソフトエラー検出に十分な程度の命令についてシグネチャを生成し、比較判定することができるものである。
例えば、図3(c)に示すように、命令1から命令5まで連続するアドレスによって処理されるプログラムにおいて、命令5における分岐条件が成立した場合に命令2にフィードバックされるものを想定する。このとき、命令2〜命令5のアドレスが連続する実行命令系列が繰り返し実行される。これに対し、命令1〜命令2は、一度実行された後は再度実行されることがない。このような処理においては、命令1〜命令2は、比較されることなく終了することとなるが、命令2〜命令5までは繰り返し実行されることとなり、何度も繰り返しシグネチャが比較されることとなる。
上記の各プログラム例は、説明の都合上、少ない命令数によって示しているが、現実には膨大な命令数で構成され、フィードバック命令はプログラムの至る所に挿入されることから、全体としての制御フロー誤りの判定における信頼性を担保し得る。
さらに、上述の実施の形態によれば、実行開始アドレス、実行終了アドレス、初期化シグネチャおよび参照シグネチャは、いずれもシグネチャテーブルに登録されることから、プログラムメモリまたはデータメモリを使用せず、これらのメモリオーバヘッドを抑制することとなる。さらに、実行するプログラムには何ら変更を加えるものではないことから、本実施形態のようなパス解析器3、シグネチャテーブル4およびシグネチャ生成器5を設けないハードウェアにおいて、同様のプログラムが使用可能となる。また、プログラム中にシグネチャ命令等の挿入がないことから実行時間の増加を抑えることとなる。
ソフトエラー検出方法の実施形態を可能にするためのアルゴリズムを図4に示す。この図に示すように、ここでの処理は、上述したパスの決定方法の一例に従っている。つまり、連続するアドレスの実行命令系列と、ジャンプ命令・分岐命令によってアドレスが不連続となる実行命令系列とに分類しおり、アドレスが連続する場合として、プログラム実行開始アドレスはパスの始めとし、また、分岐条件が「真」となり制御が移った命令をパスの始めとし)、さらに、分岐条件が「真」となる命令をパスの終わりとしている。他方、アドレスが不連続となる場合として、ジャンプ命令および分岐命令によって連続しない命令アドレスに制御が移る場合には、ジャンプ命令および分岐命令の命令アドレスをパスの始めとし、ジャンプ命令または分岐命令の宛先アドレスをパスの終わりとしている。
次に、実際の命令網羅率を把握するための実験を行った。実験方法および実験結果を次に示す。
〔実験例〕
実験は、上述したソフトエラー検出回路を使用したCPUの動作を模擬するトレース駆動シミュレータを開発し、これを使用して評価を行った。開発言語はC++であり、トレース駆動シミュレータの入力となるトレースは、Imperas社製の命令セットシミュレータOVPsimにより求めた。なお、OVPsimの実装上の制約により、システムコール部分のトレースは含めていない。また、実装形態としては、二つのシグネチャテーブルで構成されるハードウェア構成を採用し、一方をアドレスが連続する実行命令系列に対するものとし、他方をジャンプ・分岐命令に起因してアドレスが連続しない実行命令系列に対するものとした。シグネチャテーブルの記憶方式としては、セットソシアティブ方式を採用し、シグネチャテーブルのライン置き換えアルゴリズムとして、LRU(Least Recently Used)方式を採用した。実験に供したプログラムは、dhrystone、fibonacci、linpack、およびpeakSpeed1の4種類である。なお、トレース駆動シミュレーションを行ったセット数およびウェイ数は表1に示す。
〔実験例〕
実験は、上述したソフトエラー検出回路を使用したCPUの動作を模擬するトレース駆動シミュレータを開発し、これを使用して評価を行った。開発言語はC++であり、トレース駆動シミュレータの入力となるトレースは、Imperas社製の命令セットシミュレータOVPsimにより求めた。なお、OVPsimの実装上の制約により、システムコール部分のトレースは含めていない。また、実装形態としては、二つのシグネチャテーブルで構成されるハードウェア構成を採用し、一方をアドレスが連続する実行命令系列に対するものとし、他方をジャンプ・分岐命令に起因してアドレスが連続しない実行命令系列に対するものとした。シグネチャテーブルの記憶方式としては、セットソシアティブ方式を採用し、シグネチャテーブルのライン置き換えアルゴリズムとして、LRU(Least Recently Used)方式を採用した。実験に供したプログラムは、dhrystone、fibonacci、linpack、およびpeakSpeed1の4種類である。なお、トレース駆動シミュレーションを行ったセット数およびウェイ数は表1に示す。
上記の実験の結果を図5ないし図8に示す。図5(a)は、dhrystoneにおけるアドレスが連続した実行命令系列の命令網羅率であり、図5(b)は、dhrystoneにおけるアドレスが連続しない実行命令系列の網羅率である。図6は、fibonacciにおけるアドレスが連続する実行命令系列(a)とアドレスが連続しない実行命令系列(b)の命令網羅率であり、図7は、linpackにおけるアドレスが連続する実行命令系列(a)とアドレスが連続しない実行命令系列(b)の命令網羅率であり、図8は、peakSpeed1におけるアドレスが連続する実行命令系列(a)とアドレスが連続しない実行命令系列(b)の命令網羅率の結果を、それぞれグラフにしたものである。また、総合評価として、命令網羅率の範囲を表2に示す。
上記実験結果から明らかなとおり、linpackやpeakSpeed1のように、特定の基本ブロックが高頻度に繰り返し実行されるプログラムでは、命令網羅率が高く、制御フロー誤りの検出精度が高くなり得る。また、dhrystoneおよびfibonacciにあっても、アドレスが連続した実行命令系列における命令網羅率の最大値は91.3%および88.0%であり、アドレスが連続しない実行命令系列を含めると両者とも100%であった。
従って、二種類のシグネチャテーブルを用いて、アドレスが連続する実行命令系列およびアドレスが連続しない実行命令系列を登録・比較することにより、高精度なソフトエラー検出が可能となり得る。
1 プログラムカウンタ(PC)
2 命令メモリ
3 パス検出器
4 シグネチャテーブル
5 パス生成器
6,7 加算器
2 命令メモリ
3 パス検出器
4 シグネチャテーブル
5 パス生成器
6,7 加算器
Claims (9)
- プログラム実行中のプログラムカウンタ値および命令から所定のパスを検出するパス検出手段と、前記パスの開始から終了までに対応する制御信号系列の圧縮値を生成するシグネチャ生成手段と、該シグネチャ生成手段により生成された圧縮値を登録するシグネチャ登録手段と、同一パスについて生成された最新の圧縮値を先行して登録された圧縮値と比較する比較手段とを備えることを特徴とするソフトエラー検出回路。
- 前記パス検出手段が、画一的な実行命令系列を単位として検出し、該実行命令系列の実行開始アドレスおよび実行終了アドレスを前記シグネチャ登録手段に提供するパス検出手段であることを特徴とする請求項1に記載のソフトエラー検出回路。
- 前記パス検出手段が、前記シグネチャ生成手段を初期化するための初期値を該シグネチャ生成手段に提供するするとともに、前記実行命令系列の実行開始アドレスに対応する初期値を前記シグネチャ登録手段に提供するパス検出手段であることを特徴とする請求項2に記載のソフトエラー検出回路。
- 前記シグネチャ登録手段が、前記実行命令系列の実行開始アドレスおよび実行終了アドレス、前記初期値ならびに前記圧縮値を単位として登録するシグネチャ登録手段であることを特徴とする請求項3に記載のソフトエラー検出器。
- 前記シグネチャ登録手段が、前記パス検出手段により検出された所定のパスごとに各対応する圧縮値を登録するシグネチャ登録手段であることを特徴とする請求項1ないし4のいずれかに記載のソフトエラー検出回路。
- 前記シグネチャ登録手段が、物理的または論理的に複数に区分されたシグネチャ登録手段であることを特徴とする請求項1ないし5のいずれかに記載のソフトエラー検出回路。
- 請求項1ないし6のいずれかに記載のソフトエラー検出回路を使用するソフトエラー検出方法であって、プログラム実行中のプログラムカウンタ値および命令からシグネチャ登録手段に登録されていない所定のパスを検出するとき、該パスの開始から終了までに対応する制御信号系列の圧縮値を求め、同じ所定のパスを検出するとき、該パスの開始から終了までに対応する制御信号系列の圧縮値を求め、両圧縮値を比較することにより実行プログラムの正誤を判定することを特徴とするソフトエラーの検出方法。
- 前記所定のパスが、該パスの実行開始アドレスおよび実行終了アドレスにより特定されるものであり、前記圧縮値が、初期値とともに前記制御信号系列から求められ、かつ、同じ実行開始アドレスで特定されるパスについて共通の初期値により求められるものであることを特徴とする請求項7に記載のソフトエラー検出方法。
- 前記所定のパスが、プログラム実行中の画一的な実行命令系列を単位として特定されるものであることを特徴とする請求項7または8に記載のソフトエラー検出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010124408A JP2011248845A (ja) | 2010-05-31 | 2010-05-31 | ソフトエラー検出回路およびソフトエラー検出方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010124408A JP2011248845A (ja) | 2010-05-31 | 2010-05-31 | ソフトエラー検出回路およびソフトエラー検出方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011248845A true JP2011248845A (ja) | 2011-12-08 |
Family
ID=45413979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010124408A Pending JP2011248845A (ja) | 2010-05-31 | 2010-05-31 | ソフトエラー検出回路およびソフトエラー検出方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011248845A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020154734A (ja) * | 2019-03-20 | 2020-09-24 | 株式会社リコー | 動作解析装置、動作解析方法及び動作解析プログラム |
US10831595B1 (en) | 2019-05-31 | 2020-11-10 | International Business Machines Corporation | Performing error detection during deterministic program execution |
-
2010
- 2010-05-31 JP JP2010124408A patent/JP2011248845A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020154734A (ja) * | 2019-03-20 | 2020-09-24 | 株式会社リコー | 動作解析装置、動作解析方法及び動作解析プログラム |
JP7234722B2 (ja) | 2019-03-20 | 2023-03-08 | 株式会社リコー | 動作解析装置、動作解析方法及び動作解析プログラム |
US10831595B1 (en) | 2019-05-31 | 2020-11-10 | International Business Machines Corporation | Performing error detection during deterministic program execution |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Oh et al. | Control-flow checking by software signatures | |
Oh et al. | Error detection by duplicated instructions in super-scalar processors | |
US11036507B2 (en) | Processor testing using pairs of counter incrementing and branch instructions | |
CN111104335B (zh) | 一种基于多层次分析的c语言缺陷检测方法及装置 | |
US10664383B2 (en) | Automated software program repair of similar code snippets | |
JP6342129B2 (ja) | 混合モードプログラムのソースコードエラー位置検出装置及び方法 | |
JP6303749B2 (ja) | ソフトウェアプログラムを解析する方法及びシステム並びに非一時的なコンピュータ可読媒体 | |
JP2008176453A (ja) | シミュレーション装置 | |
EP1376342A2 (en) | Single pass intermediate language verification algorithm | |
CN108874656A (zh) | 代码测试方法、装置、可读存储介质及计算机设备 | |
JP2011248845A (ja) | ソフトエラー検出回路およびソフトエラー検出方法 | |
CN107665169B (zh) | 处理器程序的测试方法和装置 | |
US8903700B2 (en) | Concretization of abstracted traces | |
US8554522B2 (en) | Detection of design redundancy | |
US10997060B2 (en) | Device, system, and method for detecting a defect in a computer program by generating and testing semantically equivalent computer program variants | |
JPWO2016151710A1 (ja) | 仕様構成装置および方法 | |
Nazarian et al. | Bit-flip aware control-flow error detection | |
US8639490B2 (en) | Concretization of abstracted traces | |
JP2009244969A (ja) | プログラム動作比較装置及び方法及びプログラム | |
WO2019142266A1 (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム | |
US20040117747A1 (en) | Method for providing cycle-by-cycle ad hoc verification in a hardware-accelerated environment | |
US11022649B2 (en) | Stabilised failure estimate in circuits | |
Matsunaga | A test pattern compaction method using SAT-based fault grouping | |
Nikookar et al. | A New Control Flow Checking Method to Improve Reliability of Embedded Systems | |
JP2012226459A (ja) | データ処理装置、及びデータ処理方法 |