JP2010211391A - Cpuの動作監視方法および装置 - Google Patents
Cpuの動作監視方法および装置 Download PDFInfo
- Publication number
- JP2010211391A JP2010211391A JP2009055219A JP2009055219A JP2010211391A JP 2010211391 A JP2010211391 A JP 2010211391A JP 2009055219 A JP2009055219 A JP 2009055219A JP 2009055219 A JP2009055219 A JP 2009055219A JP 2010211391 A JP2010211391 A JP 2010211391A
- Authority
- JP
- Japan
- Prior art keywords
- hash value
- value
- access
- hash
- nth
- 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
- Debugging And Monitoring (AREA)
Abstract
【課題】本発明の目的は、CPUが通常の領域内のメモリやレジスタにアクセスするとき、またはプログラム処理を実行するときにその監視対象となる一連の動作が一時的に乱れたことを検出するCPUの監視装置および方法を提供することである。
【解決手段】CPUがメモリやレジスタにアクセスするとき、監視対象のアクセスを検出すると、アドレスバスの値とハッシュ値格納レジスタの値からハッシュ値を算出し、ハッシュ値格納レジスタに格納する。この検出から格納までの処理を監視対象の一連のアクセス回数分実施後に今回と前回のハッシュ値を比較することにより一時的な乱れを検出する。プログラム処理を実施するときは、プログラムの複数個所に置かれたプログラムカウンタの値を出力することで上記と同様の方法により一時的な乱れを検出する。
【選択図】図1
【解決手段】CPUがメモリやレジスタにアクセスするとき、監視対象のアクセスを検出すると、アドレスバスの値とハッシュ値格納レジスタの値からハッシュ値を算出し、ハッシュ値格納レジスタに格納する。この検出から格納までの処理を監視対象の一連のアクセス回数分実施後に今回と前回のハッシュ値を比較することにより一時的な乱れを検出する。プログラム処理を実施するときは、プログラムの複数個所に置かれたプログラムカウンタの値を出力することで上記と同様の方法により一時的な乱れを検出する。
【選択図】図1
Description
本発明は、コンピュータシステム、マイクロコントローラ機器などのCPUの動作監視技術において、特にCPUが所定の領域に所定のアドレス順でアクセスすること、さらに、CPUが所定の処理を所定の順序で実行すること、を監視するCPUの動作監視に関する。
従来、CPUの動作監視に関する基本技術としては、所定の時間内にリトリガがないと異常を検出するウォッチドッグタイマー、所定領域外のアドレスへのアクセスで異常を検出する領域外アクセス監視、所定の時間内に所定のインタフェース領域に特定の値を書き込んで他のCPU等からその書き込みを確認するハートビート監視等がある。
一方、CPUの動作監視に関する文献としては、特許文献1、特許文献2、特許文献3が開示されている。特許文献1は、アドレスバスの最下位ビットの変化を検出し、所定の時間内に変化が見られない場合はCPUが不動作状態であると判断し、自動でCPUにリセットをかけて正常状態に復帰させる装置が開示されている。また、特許文献2では、プロセッサと独立した2ポートのRAMを設け、互いのデータ情報を比較し、一致しない場合にアラーム信号を送出する装置が開示されている。さらに、特許文献3では、プログラム内の命令シーケンスの実行順序について各命令から取得されるデータから計算された検証値と予め設定されている基準値を比較して実行順序を監視する装置が開示されている。
一方、CPUの動作監視に関する文献としては、特許文献1、特許文献2、特許文献3が開示されている。特許文献1は、アドレスバスの最下位ビットの変化を検出し、所定の時間内に変化が見られない場合はCPUが不動作状態であると判断し、自動でCPUにリセットをかけて正常状態に復帰させる装置が開示されている。また、特許文献2では、プロセッサと独立した2ポートのRAMを設け、互いのデータ情報を比較し、一致しない場合にアラーム信号を送出する装置が開示されている。さらに、特許文献3では、プログラム内の命令シーケンスの実行順序について各命令から取得されるデータから計算された検証値と予め設定されている基準値を比較して実行順序を監視する装置が開示されている。
しかし、従来の技術では通常の領域内のメモリやレジスタへのアクセスにおいて、アドレスの順序が一時的に乱れてもそれを検出することはできない。なぜなら、一時的な異常であるためにウォッチドッグタイマーでは異常を検出することができない。また、所定領域外アクセスではないため領域外アクセス監視でも異常を検出することができない。同様にハートビート監視でも一時的な異常であるために、異常を検出することができない。また、特許文献1および特許文献2についても同様である。さらに、特許文献3は、ハッシュ関数を用いて命令シーケンスの実行順序を監視するが、監視対象のプログラムに変更が生じると基準値の再計算を行い、予め設定されている基準値を修正する必要がある上、可変データを含むシーケンスは基準値が毎回変わるために実行順序を監視することができない。また、プログラムの実行は必ずしもメモリアクセスを伴うものではない(たとえば、ワンチップCPUの内部メモリアクセスなど)。
そこで本発明は、(1)CPUが通常の領域内のメモリやレジスタにアクセスするとき、そのアドレスの順序が一時的に乱れた場合に異常を検出すること、さらに、(2)CPUが所定の処理を所定の順序で実行すること、を監視するCPUの動作監視方法および装置を提供することを目的とする。
上記課題を解決するために本発明は、
(1)監視対象とする特定のメモリやレジスタへのアクセス毎にアドレスバスの値を用いてハッシュ値を求め、これを過去の値と比較することにより、一時的なアクセスの乱れを検出する。前回と同じアドレス順で同じようにアクセスしたならば、そのハッシュ値(
今回値)は前回値と同じになるはずである。この今回値と前回値を比較して同じならば
正常、異なっていたらアクセスに乱れがあったものと見なすことができる。
(1)監視対象とする特定のメモリやレジスタへのアクセス毎にアドレスバスの値を用いてハッシュ値を求め、これを過去の値と比較することにより、一時的なアクセスの乱れを検出する。前回と同じアドレス順で同じようにアクセスしたならば、そのハッシュ値(
今回値)は前回値と同じになるはずである。この今回値と前回値を比較して同じならば
正常、異なっていたらアクセスに乱れがあったものと見なすことができる。
なお、ここで言うアドレスバスの値は、必ずしも厳密に一致する必要はない。ハッシュ値を求めたときに、必要とされる精度で違いが検出できればよい。つまり、ハッシュ関数は多数の入力値から1つのハッシュ値を算出するため、100%の精度で違いを検出できるものではないから、用途ごとに必要とされる精度がでるハッシュ関数を選択して使用することになる。また、ハッシュ関数の精度に応じて例えば、アドレスバスの値である32bit全てを監視対象とするのではなく下位16bitとしてもよい。
具体的な手段として、請求項1記載の発明は、予め設けた監視対象アドレスのアクセス順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視方法において、1番目のアクセス前にハッシュ値格納レジスタのハッシュ値をクリアするステップ、監視対象アドレスの1番目からn番目のアクセスについて以下のステップ(A1→A2→A3
)を実行し、(A1)監視対象のメモリアドレスへのアクセスを検出するステップ、(A
2)検出したタイミングでアドレスバスの値とハッシュ値格納レジスタの値を読み出してハッシュ関数(アクセス順序が同じであればハッシュ値は同じとなるように最適化されている)により新たなハッシュ値を算出するステップ、(A3)ハッシュ値格納レジスタの値を新たに算出したハッシュ値で置き換えるステップ、n番目のアクセス後にハッシュ値格納レジスタのハッシュ値(今回ハッシュ値)と予め記憶しておいた前回のn番目のアクセス後のハッシュ値格納レジスタの値(前回ハッシュ値)を読み出し、比較した結果、一致・不一致を判断するステップを含み、比較結果の不一致を以って前回と同じアクセス順序で実行していないことを検出することを特徴とする。また、請求項5は請求項1の方法の発明にたいしてメモリアクセスにおけるハッシュ値を使ったCPUの動作監視装置の
発明である。
)を実行し、(A1)監視対象のメモリアドレスへのアクセスを検出するステップ、(A
2)検出したタイミングでアドレスバスの値とハッシュ値格納レジスタの値を読み出してハッシュ関数(アクセス順序が同じであればハッシュ値は同じとなるように最適化されている)により新たなハッシュ値を算出するステップ、(A3)ハッシュ値格納レジスタの値を新たに算出したハッシュ値で置き換えるステップ、n番目のアクセス後にハッシュ値格納レジスタのハッシュ値(今回ハッシュ値)と予め記憶しておいた前回のn番目のアクセス後のハッシュ値格納レジスタの値(前回ハッシュ値)を読み出し、比較した結果、一致・不一致を判断するステップを含み、比較結果の不一致を以って前回と同じアクセス順序で実行していないことを検出することを特徴とする。また、請求項5は請求項1の方法の発明にたいしてメモリアクセスにおけるハッシュ値を使ったCPUの動作監視装置の
発明である。
請求項2記載の発明は、予め設けた監視対象アドレスのアクセス順序(1番目からn番
目)でサイクリックに実行するシステムのCPU監視方法において、監視対象アドレスの1番目からn番目のアクセスについて以下のステップ(B1→B2)を実行し、(B1)
監視対象のメモリアドレスへのアクセスを検出するステップ、(B2)検出したタイミン
グでアドレスバスの値を記憶しておくステップ、今回の1番目からn番目までのアドレスバスの値と前回の1番目からn番目までのアドレスバスの値を読み出し、同じ順序で比較した結果、すべて一致・1つでも不一致を判断するステップを含み、比較結果のひとつでも不一致を以って前回と同じアクセス順序で実行していないことを検出することを特徴とする。また、請求項6は請求項2の方法の発明にたいしてメモリアクセスにおけるハッシュ値を使わないCPUの動作監視装置の発明である。
目)でサイクリックに実行するシステムのCPU監視方法において、監視対象アドレスの1番目からn番目のアクセスについて以下のステップ(B1→B2)を実行し、(B1)
監視対象のメモリアドレスへのアクセスを検出するステップ、(B2)検出したタイミン
グでアドレスバスの値を記憶しておくステップ、今回の1番目からn番目までのアドレスバスの値と前回の1番目からn番目までのアドレスバスの値を読み出し、同じ順序で比較した結果、すべて一致・1つでも不一致を判断するステップを含み、比較結果のひとつでも不一致を以って前回と同じアクセス順序で実行していないことを検出することを特徴とする。また、請求項6は請求項2の方法の発明にたいしてメモリアクセスにおけるハッシュ値を使わないCPUの動作監視装置の発明である。
これにより、前回と同じアドレス順に同じようにアクセスできなかった場合に、アクセスに乱れがあったことを検出することができる。
さらに、
(2)監視対象となる一連の処理の複数箇所に、一意値(例えば、その命令のプログラムカウンタ(以下、PCと表記する)の値)を出力する命令を置き、出力された値を用いてハッシュ値を求め、それを過去の値と比較することにより、一時的な処理の流れの乱れを検出する。所定の処理を前回と同じ順序で実行したならば、そのハッシュ値(今回値)は前回値と同じになるはずである。この今回値と前回値を比較して同じならば正常、異なっていたら処理の流れに乱れがあったものと見なすことができる。
さらに、
(2)監視対象となる一連の処理の複数箇所に、一意値(例えば、その命令のプログラムカウンタ(以下、PCと表記する)の値)を出力する命令を置き、出力された値を用いてハッシュ値を求め、それを過去の値と比較することにより、一時的な処理の流れの乱れを検出する。所定の処理を前回と同じ順序で実行したならば、そのハッシュ値(今回値)は前回値と同じになるはずである。この今回値と前回値を比較して同じならば正常、異なっていたら処理の流れに乱れがあったものと見なすことができる。
なお、ここで言う一意の値は、必ずしも厳密に一意の値である必要はない。ハッシュ値を求めたときに、必要とされる精度で違いが検出できればよい。つまり、ハッシュ関数は多数の入力値から1つのハッシュ値を算出するため、100%の精度で違いを検出できるものではないから、用途ごとに必要とされる精度がでるハッシュ関数を選択して使用する
ことになる。また、ハッシュ関数の精度に応じて例えば、PC値の32bit全てを監視
対象とするのではなく下位16bitとしてもよい。
ことになる。また、ハッシュ関数の精度に応じて例えば、PC値の32bit全てを監視
対象とするのではなく下位16bitとしてもよい。
具体的な手段として、請求項3記載の発明は、予め設けた監視対象処理の処理順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視方法において、1番目
の処理前にハッシュ値格納レジスタのハッシュ値をクリアするステップ、監視対象処理の
1番目からn番目の処理について以下のステップ(C1→C2→C3)を実行し、(C1)プログラム処理の複数個所に置かれた監視対象となるプログラムカウンタの値を出力するステップ、(C2)出力したタイミングでプログラムカクンタの値とハッシュ値格納レジスタの値を読み出してハッシュ関数(プログラムカウンタの値の順序が同じであればハッシュ値は同じとなるように最適化されている)により新たなハッシュ値を算出するステップ、(C3)ハッシュ値格納レジスタの値を新たに算出したハッシュ値で置き換えるステップ、n番目の処理後にハッシュ値格納レジスタのハッシュ値(今回ハッシュ値)と予め記憶しておいた前回のn番目の処理後のハッシュ値格納レジスタの値(前回ハッシュ値)を読み出し、比較した結果、一致・不一致を判断するステップを含み、比較結果の不一致を以って前回と同じ処理順序で実行していないことを検出することを含んでいることを特徴とする。また、請求項7は請求項3の方法の発明にたいしてプログラム動作におけるハッシュ値を使ったCPUの動作監視装置の発明である。
の処理前にハッシュ値格納レジスタのハッシュ値をクリアするステップ、監視対象処理の
1番目からn番目の処理について以下のステップ(C1→C2→C3)を実行し、(C1)プログラム処理の複数個所に置かれた監視対象となるプログラムカウンタの値を出力するステップ、(C2)出力したタイミングでプログラムカクンタの値とハッシュ値格納レジスタの値を読み出してハッシュ関数(プログラムカウンタの値の順序が同じであればハッシュ値は同じとなるように最適化されている)により新たなハッシュ値を算出するステップ、(C3)ハッシュ値格納レジスタの値を新たに算出したハッシュ値で置き換えるステップ、n番目の処理後にハッシュ値格納レジスタのハッシュ値(今回ハッシュ値)と予め記憶しておいた前回のn番目の処理後のハッシュ値格納レジスタの値(前回ハッシュ値)を読み出し、比較した結果、一致・不一致を判断するステップを含み、比較結果の不一致を以って前回と同じ処理順序で実行していないことを検出することを含んでいることを特徴とする。また、請求項7は請求項3の方法の発明にたいしてプログラム動作におけるハッシュ値を使ったCPUの動作監視装置の発明である。
請求項4記載の発明は、予め設けた監視対象処理の処理順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視方法において、監視対象処理の1番目からn番目の処理について以下のステップ(D1→D2)を実行し、(D1)プログラム処理の複数個所に置かれた監視対象となるプログラムカウンタの値を出力するステップ、(D2
)出力したタイミングでプログラムカウンタの値を記憶しておくステップ、今回の1番目からn番目までのプログラムカウンタの値と前回の1番目からn番目までのプログラムカウンタの値を読み出し、同じ順序で比較した結果、すべて一致・1つでも不一致を判断するステップを含み、比較結果のひとつでも不一致を以って前回と同じ処理順序で実行していないことを検出することを特徴とする。また、請求項8は請求項4の方法の発明にたいしてプログラム動作におけるハッシュ値を使わないCPUの動作監視装置の発明である。
)出力したタイミングでプログラムカウンタの値を記憶しておくステップ、今回の1番目からn番目までのプログラムカウンタの値と前回の1番目からn番目までのプログラムカウンタの値を読み出し、同じ順序で比較した結果、すべて一致・1つでも不一致を判断するステップを含み、比較結果のひとつでも不一致を以って前回と同じ処理順序で実行していないことを検出することを特徴とする。また、請求項8は請求項4の方法の発明にたいしてプログラム動作におけるハッシュ値を使わないCPUの動作監視装置の発明である。
これにより、何らかの原因で、前回と同じ順序で処理を実行できなかった場合に、処理の流れに乱れがあったことを検出することができる。
以上説明したように、本発明によれば、何らかの外乱により、高信頼性を要求される領域へのアクセスや処理順序が一時的に乱れても、すぐにその異常を検出することができ、
被害が最小となるように異常対応処理を実行することができる。
また、監視対象の一連のアクセスや処理において、最後のアクセスや処理で算出した今回ハッシュ値と、同じく最後のアクセスや処理で算出した前回ハッシュ値とを比較することにより異常を検出するため、監視対象の中間のアクセスや処理で算出したハッシュ値は、次のアクセスや処理で利用するもの以外は記憶しておく必要がなく、メモリを節約することができる。
被害が最小となるように異常対応処理を実行することができる。
また、監視対象の一連のアクセスや処理において、最後のアクセスや処理で算出した今回ハッシュ値と、同じく最後のアクセスや処理で算出した前回ハッシュ値とを比較することにより異常を検出するため、監視対象の中間のアクセスや処理で算出したハッシュ値は、次のアクセスや処理で利用するもの以外は記憶しておく必要がなく、メモリを節約することができる。
また、プログラム動作監視において、監視対象のプログラムのソースコードを修正する場合であっても、監視対象の処理に変更がなければ、特にプログラムカウンタを出力するステップにたいして変更を加える必要がない。なぜなら、プログラムカウンタの値はアドレス値であり、プログラムの命令に修正が生じたことで、プログラムカウンタのアドレス値が変わっても、システム立ち上げ後にこのアドレス値を基にしてハッシュ値を算出し、今回ハッシュ値と前回ハッシュ値を比較することで異常、正常を判断するためである。
従来技術において、前回ハッシュ値を使わずに予め固定メモリに書き込んである基準値と今回ハッシュ値を比較する方法ではプログラムの変更ごとに基準値を修正する必要がある。さらに、プログラムカウンタのアドレス値の番地にあるデータ(命令コード値または数値)を基に基準値を算出する方法では、上記問題とさらに上記データが可変の数値についてはCPUが正常であってもハッシュ値が変わるために監視対象にできないという重大な欠点がある。
以下、本発明の実施の形態について、詳細に説明する。
ここではCPU動作監視方法および装置の4つの実施例について説明する。例1は、メモリアクセスにおけるハッシュ関数を使ったCPUの動作監視方法と装置の例である。例2は、メモリアクセスにおけるハッシュ関数を使わないCPUの動作監視方法と装置の例である。例3は、プログラム動作におけるハッシュ関数を使ったCPUの動作監視方法と装置の例である。例4は、プログラム動作におけるハッシュ関数を使わないCPUの動作監視方法と装置の例である。
ここではCPU動作監視方法および装置の4つの実施例について説明する。例1は、メモリアクセスにおけるハッシュ関数を使ったCPUの動作監視方法と装置の例である。例2は、メモリアクセスにおけるハッシュ関数を使わないCPUの動作監視方法と装置の例である。例3は、プログラム動作におけるハッシュ関数を使ったCPUの動作監視方法と装置の例である。例4は、プログラム動作におけるハッシュ関数を使わないCPUの動作監視方法と装置の例である。
例1としてメモリアクセスにおけるハッシュ関数を使ったCPUの動作監視方法と装置について説明する。図5は本発明のCPU監視装置を用いた構成の一例である。また、図1は本発明のハッシュ関数を使って異常を検出する際のフローチャートの一例である。先ずは装置の構成より説明する。
図5において本発明の実施の形態に係るCPU監視装置40は、アクセス検出部41と、ハッシュ値算出部42と、ハッシュ値格納レジスタ43とにより構築されている。CPU10とメモリ、レジスタ20は、リード信号線、ライト信号線、データバス、アドレスバスで接続され、アクセス可能状態となっている。また、デコーダ30に接続されたチップセレクト信号線とリード信号線、ライト信号線、データバス、アドレスバスによりアクセス検出部は、監視対象のアクセスを検出できるようになっている。さらに、ハッシュ値算出部は、ハッシュ関数としてSHA−1やMD5などの暗号化の分野ですでに周知となっている技術を適用することによりハッシュ値を算出することができる。
図5において本発明の実施の形態に係るCPU監視装置40は、アクセス検出部41と、ハッシュ値算出部42と、ハッシュ値格納レジスタ43とにより構築されている。CPU10とメモリ、レジスタ20は、リード信号線、ライト信号線、データバス、アドレスバスで接続され、アクセス可能状態となっている。また、デコーダ30に接続されたチップセレクト信号線とリード信号線、ライト信号線、データバス、アドレスバスによりアクセス検出部は、監視対象のアクセスを検出できるようになっている。さらに、ハッシュ値算出部は、ハッシュ関数としてSHA−1やMD5などの暗号化の分野ですでに周知となっている技術を適用することによりハッシュ値を算出することができる。
図5では、メモリとレジスタは1つしか記載していないが、複数のメモリやレジスタの内、1または複数のメモリやレジスタを監視対象としてもよいし、また、1つのメモリやレジスタの内、特定の領域を監視対象としてもよい。
CPUは、外部とのインタフェースとなるメモリやレジスタに対して、サイクリックに同じアドレス順に同じようにアクセスするものとする。外部とのインタフェースのため、データ値は毎回異なる場合があるが、アクセスするアドレスとその順序は一致するものとする。
CPUは、外部とのインタフェースとなるメモリやレジスタに対して、サイクリックに同じアドレス順に同じようにアクセスするものとする。外部とのインタフェースのため、データ値は毎回異なる場合があるが、アクセスするアドレスとその順序は一致するものとする。
次に監視対象のアドレスのアクセス順序が一時的に乱れたときの例を以下に示す(ここでは、3つのアドレスa、b、cを監視対象としている)。
正常時) a→b→c
異常時1)a→c→b
異常時2)a→b→b
正常時)のアクセス順序はa→b→cであるが、異常時1)ではbとcの順序が逆転している。また、異常時2)ではbのアクセス後にcではなくbが連続している。他にもいくつかの異常ケースが考えられるが説明は省略する。
正常時) a→b→c
異常時1)a→c→b
異常時2)a→b→b
正常時)のアクセス順序はa→b→cであるが、異常時1)ではbとcの順序が逆転している。また、異常時2)ではbのアクセス後にcではなくbが連続している。他にもいくつかの異常ケースが考えられるが説明は省略する。
従来技術では、メモリアクセス監視装置がないため、監視対象の領域内でのアクセスの順序が一時的に乱れても異常を検出することはできなかったが、本実施例では以下に述べる方法によって異常を検出することができる。
まずCPUは、サイクリックに実行されている監視対象のメモリやレジスタにアクセス する前にハッシュ値格納レジスタの値をクリアする(ステップ11)。ハッシュ値クリア手段として、データバスを通してハッシュ値格納レジスタの値に0などの初期値を書き込む。
まずCPUは、サイクリックに実行されている監視対象のメモリやレジスタにアクセス する前にハッシュ値格納レジスタの値をクリアする(ステップ11)。ハッシュ値クリア手段として、データバスを通してハッシュ値格納レジスタの値に0などの初期値を書き込む。
その後、CPUは、監視対象のメモリやレジスタに任意の回数アクセスする(ステップ12)。この間に、監視対象へのアクセスかどうかは、監視対象のメモリやレジスタへのチップセレクト信号を用いてアクセス検出部が検出する。1つのメモリとレジスタ内の特定の領域が監視対象ならば、チップセレクト信号とアドレスバス信号を用いて検出する。また、監視するアクセスがリードだけか、ライトだけか、リードとライトの両方ともか、は予めデータバスを通してアクセス検出部に設定しておく。
アクセス検出部で監視対象のアクセスを検出したら、ハッシュ値算出部でアドレスバス
の値(ステップ13)とハッシュ値格納レジスタの値(ステップ14)を用いてハッシュ値を算出し(ステップ15)、これをハッシュ値格納レジスタに格納する(ステップ16
)。このステップ(ステップ13〜ステップ16)を監視対象のアクセス回数分繰り返す(ステップ12)。
の値(ステップ13)とハッシュ値格納レジスタの値(ステップ14)を用いてハッシュ値を算出し(ステップ15)、これをハッシュ値格納レジスタに格納する(ステップ16
)。このステップ(ステップ13〜ステップ16)を監視対象のアクセス回数分繰り返す(ステップ12)。
監視対象への一連のアクセスが完了後、CPUは、ハッシュ値格納レジスタの値を読み出して(ステップ17)、予め格納しておいたハッシュ値格納レジスタの前回値と比較する(ステップ18)。比較した結果、不一致ならばシステム停止処理へジャンプし(ステップ20)、一致ならば今回読み出したハッシュ値格納レジスタの値を次回比較時に前回値として扱えるように記憶しておく(ステップ19)。また、今回値と前回値が一致するときは、今回値を前回値として置き換えなくてもよい。
なお、システム立ち上げ後の1回目の比較では、CPUは、ハッシュ値格納レジスタの
前回値を持っていないので、1回目の比較を無効(必ず一致)にするか、または、1回目
に読み出したハッシュ値格納レジスタの値をハッシュ値格納レジスタの前回値として記憶してから1回目の比較を行う。
次に例2としてメモリアクセスにおけるハッシュ関数を使わないCPUの動作監視方法と装置について説明する。構成は、図1のハッシュ値算出部がアドレスバス値記憶部に置き換わり前回と今回の一連のアクセス回数分のアドレスバスの値を記憶するだけで基本構成および装置の外部環境は実施例1と同じである(図示せず)。また、図2は本発明のハッシュ関数を使わないで異常を検出する際のフローチャートの一例である。監視対象の一連のアクセス回数が少ない場合は、複数のアドレスバスの値を一つのハッシュ値に変換せずに、アクセス回数分のアドレスバスの値を記憶しておいて、今回と前回のアドレス値をアクセス順に比較してもよい。
前回値を持っていないので、1回目の比較を無効(必ず一致)にするか、または、1回目
に読み出したハッシュ値格納レジスタの値をハッシュ値格納レジスタの前回値として記憶してから1回目の比較を行う。
次に例2としてメモリアクセスにおけるハッシュ関数を使わないCPUの動作監視方法と装置について説明する。構成は、図1のハッシュ値算出部がアドレスバス値記憶部に置き換わり前回と今回の一連のアクセス回数分のアドレスバスの値を記憶するだけで基本構成および装置の外部環境は実施例1と同じである(図示せず)。また、図2は本発明のハッシュ関数を使わないで異常を検出する際のフローチャートの一例である。監視対象の一連のアクセス回数が少ない場合は、複数のアドレスバスの値を一つのハッシュ値に変換せずに、アクセス回数分のアドレスバスの値を記憶しておいて、今回と前回のアドレス値をアクセス順に比較してもよい。
アクセス検出部で監視対象のアクセスを検出したら、アドレスバス値記憶部でアドレスバスの値を読み込み(ステップ22)、レジスタなどの記憶領域に記憶しておく(ステップ23)。このステップ(ステップ22〜ステップ23)を監視対象のアクセス回数分繰り返す(ステップ21)。
監視対象への一連のアクセスが完了後、CPUは、アクセス回数分の今回値と前回値を読み出して(ステップ24)、アクセス順に比較する(ステップ25)。比較した結果、一つでも不一致ならばシステム停止処理へジャンプし(ステップ27)、すべて一致ならば今回読み出した値を比較時に前回値として扱えるように記憶しておく(ステップ26)。また、今回値と前回値が一致するときは、今回値を前回値として置き換えなくてもよい。
監視対象への一連のアクセスが完了後、CPUは、アクセス回数分の今回値と前回値を読み出して(ステップ24)、アクセス順に比較する(ステップ25)。比較した結果、一つでも不一致ならばシステム停止処理へジャンプし(ステップ27)、すべて一致ならば今回読み出した値を比較時に前回値として扱えるように記憶しておく(ステップ26)。また、今回値と前回値が一致するときは、今回値を前回値として置き換えなくてもよい。
次に例3としてプログラム動作におけるハッシュ関数を使ったCPUの動作監視方法と装置について説明する。図6は本発明のCPU監視装置を用いた構成の一例である。また、図3は本発明のハッシュ関数を使って異常を検出する際のフローチャートの一例である。先ずは装置の構成より説明する。
図6において本発明の実施の形態に係るCPU動作監視装置50は、ハッシュ値算出部42と、ハッシュ値格納レジスタ43とにより構築されている。CPU10とデータバスで接続され、監視対象のPC値を出力することができるようになっている。また、ハッシュ値算出部は、ハッシュ関数としてSHA−1やMD5などの暗号化の分野ですでに周知となっている技術を適用することによりハッシュ値を算出することができる。さらに、C
PUは、監視対象の処理をサイクリックに実行するものとし、その処理の中の命令は同じ
順序で実行されるものとする。
図6において本発明の実施の形態に係るCPU動作監視装置50は、ハッシュ値算出部42と、ハッシュ値格納レジスタ43とにより構築されている。CPU10とデータバスで接続され、監視対象のPC値を出力することができるようになっている。また、ハッシュ値算出部は、ハッシュ関数としてSHA−1やMD5などの暗号化の分野ですでに周知となっている技術を適用することによりハッシュ値を算出することができる。さらに、C
PUは、監視対象の処理をサイクリックに実行するものとし、その処理の中の命令は同じ
順序で実行されるものとする。
従来技術では、プログラム動作監視装置がないため、監視対象の処理順序が一時的に乱れても検出することはできなかったが、本実施例では以下に述べる方法よって検出するこ
とができる。
まずCPUは、図3に示すようにサイクリックに実行されている監視対象処理の実行前にハッシュ値格納レジスタの値をクリアする(ステップ31)。ハッシュ値クリア手段として、データバスを通してハッシュ値格納レジスタの値に0などの初期値を書き込む。
とができる。
まずCPUは、図3に示すようにサイクリックに実行されている監視対象処理の実行前にハッシュ値格納レジスタの値をクリアする(ステップ31)。ハッシュ値クリア手段として、データバスを通してハッシュ値格納レジスタの値に0などの初期値を書き込む。
その後に、CPUは監視対象のプログラム処理内で、チェックポイントとする複数の箇所で一意の値であるPC値を出力し(ステップ33)、この値とハッシュ値格納レジスタの値(ステップ34)を用いて新たなハッシュ値を算出して(ステップ35)、これをハッシュ値格納レジスタに格納する(ステップ36)。このステップ(ステップ33〜ステップ36)を監視対象の一連の処理回数分繰り返す(ステップ32)。
このチェックポイントとする箇所は、実行の順序が乱れては困る処理の近傍であり、ここで出力される一意の値であるPC値の順序を監視することになる。
なお、CPU動作監視装置は、必ずしもCPUとは別のハードウェアを用意する必要は無い。CPUの内蔵メモリにハッシュ値格納レジスタに相当する領域を設けてもよい。また、新たなハッシュ値はCPUがソフトウェアで演算して求めてもよい。
ここで、監視対象のプログラム処理の中で呼び出すサブルーチンの順序や、割込みプログラムの影響などで、チェックポイントの通過順が変化したとする。チェックポイントで出力される検査値は、本実施例ではPC値なので、チェックポイントごとに異なる。
なお、CPU動作監視装置は、必ずしもCPUとは別のハードウェアを用意する必要は無い。CPUの内蔵メモリにハッシュ値格納レジスタに相当する領域を設けてもよい。また、新たなハッシュ値はCPUがソフトウェアで演算して求めてもよい。
ここで、監視対象のプログラム処理の中で呼び出すサブルーチンの順序や、割込みプログラムの影響などで、チェックポイントの通過順が変化したとする。チェックポイントで出力される検査値は、本実施例ではPC値なので、チェックポイントごとに異なる。
例えば、前回は100→110→120→130という順序で実行されたにも関わらず、今回100→120→110→130という順序で実行されれば、ハッシュ値は異なる。
監視対象の一連の処理が完了後、ハッシュ値格納レジスタの値をCPUが読み出して(ステップ37)、予め格納しておいたハッシュ値格納レジスタの前回値と比較する(ステップ38)。比較して不一致ならば停止や復旧等の処理へジャンプし(ステップ40)、一致ならば今回読み出したハッシュ値格納レジスタの値を、次回比較時に前回値として扱えるように記憶しておく(ステップ39)。また、今回値と前回値が一致するときは、今回値を前回値として置き換えなくてもよい。
監視対象の一連の処理が完了後、ハッシュ値格納レジスタの値をCPUが読み出して(ステップ37)、予め格納しておいたハッシュ値格納レジスタの前回値と比較する(ステップ38)。比較して不一致ならば停止や復旧等の処理へジャンプし(ステップ40)、一致ならば今回読み出したハッシュ値格納レジスタの値を、次回比較時に前回値として扱えるように記憶しておく(ステップ39)。また、今回値と前回値が一致するときは、今回値を前回値として置き換えなくてもよい。
なお、システム立ち上げ後の1回目の比較では、CPUはハッシュ値格納レジスタの前回値を持っていないので、1回目の比較を無効(必ず一致)にするか、1回目に読み出したハッシュ値格納レジスタの値をハッシュ値格納レジスタの前回値として記憶してから1回目の比較を行う。
次に例4としてプログラム動作におけるハッシュ関数を使わないCPUの動作監視方法と装置について説明する。構成は、図2のハッシュ値算出部がプログラムカウンタ値記憶部に置き換わり前回と今回の一連の検査回数分のPC値を記憶するだけで基本構成および装置の外部環境は実施例2と同じである(図示せず)。また、図4は本発明のハッシュ関数を使わないで異常を検出する際のフローチャートの一例である。監視対象の一連のアクセス回数が少ない場合は、複数のPC値を一つのハッシュ値に変換せずに、アクセス回数分のPC値を記憶しておいて、今回と前回のPC値を検査順に比較してもよい。
次に例4としてプログラム動作におけるハッシュ関数を使わないCPUの動作監視方法と装置について説明する。構成は、図2のハッシュ値算出部がプログラムカウンタ値記憶部に置き換わり前回と今回の一連の検査回数分のPC値を記憶するだけで基本構成および装置の外部環境は実施例2と同じである(図示せず)。また、図4は本発明のハッシュ関数を使わないで異常を検出する際のフローチャートの一例である。監視対象の一連のアクセス回数が少ない場合は、複数のPC値を一つのハッシュ値に変換せずに、アクセス回数分のPC値を記憶しておいて、今回と前回のPC値を検査順に比較してもよい。
CPUは監視対象のプログラム処理内で、チェックポイントとする複数の箇所で一意の値であるPC値を出力し、監視対象のPC値出力を検出したら、プログラムカウンタ値記憶部でPC値を読み込み(ステップ42)、レジスタなどの記憶領域に記憶しておく(ステップ43)。このステップ(ステップ42〜ステップ43)を監視対象の検査回数分繰り返す(ステップ41)。
監視対象への一連のアクセスが完了後、CPUは、検査回数分の今回値と前回値を読み出して(ステップ44)、処理順に比較する(ステップ45)。比較した結果、一つでも不一致ならばシステム停止や復旧の処理へジャンプし(ステップ47)、すべて一致ならば今回読み出した値を比較時に前回値として扱えるように記憶しておく(ステップ46)。また、今回値と前回値が一致するときは、今回値を前回値として置き換えなくてもよい。
10 CPU
20 メモリ/レジスタ
30 デコーダ
40 CPU動作監視装置
41 アクセス検出部
42 ハッシュ値算出部
43 ハッシュ値格納レジスタ
50 CPU動作監視装置
20 メモリ/レジスタ
30 デコーダ
40 CPU動作監視装置
41 アクセス検出部
42 ハッシュ値算出部
43 ハッシュ値格納レジスタ
50 CPU動作監視装置
Claims (8)
- 予め設けた監視対象アドレスのアクセス順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視方法において、
1番目のアクセス前にハッシュ値格納レジスタのハッシュ値をクリアするステップ、
監視対象アドレスの1番目からn番目のアクセスについて以下のステップ(A1→A2→A3)を実行し、
(A1)監視対象のメモリアドレスへのアクセスを検出するステップ、
(A2)検出したタイミングでアドレスバスの値とハッシュ値格納レジスタの値を読み 出してハッシュ関数(アクセス順序が同じであればハッシュ値は同じとなるよ うに最適化されている)により新たなハッシュ値を算出するステップ、
(A3)ハッシュ値格納レジスタの値を新たに算出したハッシュ値で置き換えるステッ プ、
n番目のアクセス後にハッシュ値格納レジスタのハッシュ値(今回ハッシュ値)と予め記憶しておいた前回のn番目のアクセス後のハッシュ値格納レジスタの値(前回ハッシュ値)を読み出し、比較した結果、一致・不一致を判断するステップを含み、
比較結果の不一致を以って前回と同じアクセス順序で実行していないことを検出することを特徴とするメモリアクセスにおけるハッシュ値を使ったCPUの動作監視方法。 - 予め設けた監視対象アドレスのアクセス順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視方法において、
監視対象アドレスの1番目からn番目のアクセスについて以下のステップ(B1→B2
)を実行し、
(B1)監視対象のメモリアドレスへのアクセスを検出するステップ、
(B2)検出したタイミングでアドレスバスの値を記憶しておくステップ、
今回の1番目からn番目までのアドレスバスの値と前回の1番目からn番目までのアドレスバスの値を読み出し、同じ順序で比較した結果、すべて一致・1つでも不一致を判断するステップを含み、
比較結果のひとつでも不一致を以って前回と同じアクセス順序で実行していないことを検出することを特徴とするメモリアクセスにおけるハッシュ値を使わないCPUの動作監視方法。 - 予め設けた監視対象処理の処理順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視方法において、
1番目の処理前にハッシュ値格納レジスタのハッシュ値をクリアするステップ、
監視対象処理の1番目からn番目の処理について以下のステップ(C1→C2→C3)を実行し、
(C1)プログラム処理の複数個所に置かれた監視対象となるプログラムカウンタの値 を出力するステップ、
(C2)出力したタイミングでプログラムカクンタの値とハッシュ値格納レジスタの値 を読み出してハッシュ関数(プログラムカウンタの値の順序が同じであればハ ッシュ値は同じとなるように最適化されている)により新たなハッシュ値を算 出するステップ、
(C3)ハッシュ値格納レジスタの値を新たに算出したハッシュ値で置き換えるステッ プ、
n番目の処理後にハッシュ値格納レジスタのハッシュ値(今回ハッシュ値)と予め記憶しておいた前回のn番目の処理後のハッシュ値格納レジスタの値(前回ハッシュ値)を読み出し、比較した結果、一致・不一致を判断するステップを含み、
比較結果の不一致を以って前回と同じ処理順序で実行していないことを検出することを特徴とするプログラム動作におけるハッシュ値を使ったCPUの動作監視方法。 - 予め設けた監視対象処理の処理順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視方法において、
監視対象処理の1番目からn番目の処理について以下のステップ(D1→D2)を実行し、
(D1)プログラム処理の複数個所に置かれた監視対象となるプログラムカウンタの値
を出力するステップ、
(D2)出力したタイミングでプログラムカウンタの値を記憶しておくステップ、
今回の1番目からn番目までのプログラムカウンタの値と前回の1番目からn番目まで
のプログラムカクンタの値を読み出し、同じ順序で比較した結果、すべて一致・1つでも不一致を判断するステップを含み、
比較結果のひとつでも不一致を以って前回と同じ処理順序で実行していないことを検出することを特徴とするプログラム動作におけるハッシュ値を使わないCPUの動作監視方法。 - 予め設けた監視対象アドレスのアクセス順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視装置において、
1番目のアクセス前にハッシュ値格納レジスタのハッシュ値をクリアするハッシュ値クリア手段と、
監視対象のメモリアドレスへのアクセスを検出するアクセス検出手段と、
検出したタイミングでアドレスバスの値とハッシュ値格納レジスタの値を読み出してハッシュ関数(アクセス順序が同じであればハッシュ値は同じとなるように最適化されている)により新たなハッシュ値を算出するハッシュ値算出手段と、
ハッシュ値格納レジスタの値を新たに算出したハッシュ値で置き換えるハッシュ値格納手段と、
n番目のアクセス後にハッシュ値格納レジスタのハッシュ値(今回ハッシュ値)と予め記憶しておいた前回のn番目のアクセス後のハッシュ値格納レジスタの値(前回ハッシュ値)を読み出し、比較した結果、一致・不一致を判断するハッシュ値比較手段とを備え、比較結果の不一致を以って前回と同じアクセス順序で実行していないことを検出することることを特徴とするメモリアクセスにおけるハッシュ値を使ったCPUの動作監視装置。 - 予め設けた監視対象アドレスのアクセス順序(1番目からn番目)でサイクリックに実
行するシステムのCPU監視装置において、
監視対象のメモリアドレスへのアクセスを検出するアクセス検出手段と、
検出したタイミングでアドレスバスの値を記憶しておくアドレスバス値記憶手段と、
今回の1番目からn番目までのアドレスバスの値と前回の1番目からn番目までのアドレスバスの値を読み出し、同じ順序で比較した結果、すべて一致・1つでも不一致を判断するアドレスバス値比較手段とを備え、
比較結果のひとつでも不一致を以って前回と同じアクセス順序で実行していないことを検出することを特徴とするメモリアクセスにおけるハッシュ値を使わないCPUの動作監視装置。 - 予め設けた監視対象処理の処理順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視装置において、
1番目の処理前にハッシュ値格納レジスタのハッシュ値をクリアするハッシュ値クリア手段と、
プログラム処理の複数個所に置かれた監視対象となるプログラムカウンタの値を出力するプログラムカウンタ値出力手段と、
出力したタイミングでプログラムカクンタの値とハッシュ値格納レジスタの値を読み出してハッシュ関数(プログラムカウンタの値の順序が同じであればハッシュ値は同じとなるように最適化されている)により新たなハッシュ値を算出するハッシュ値算出手段と、
ハッシュ値格納レジスタの値を新たに算出したハッシュ値で置き換えるハッシュ値格納手段と、
n番目の処理後にハッシュ値格納レジスタのハッシュ値(今回ハッシュ値)と予め記憶しておいた前回のn番目の処理後のハッシュ値格納レジスタの値(前回ハッシュ値)を読み出し、比較した結果、一致・不一致を判断するハッシュ値比較手段とを備え、
比較結果の不一致を以って前回と同じ処理順序で実行していないことを検出することを特徴とするプログラム動作におけるハッシュ値を使ったCPUの動作監視装置。 - 予め設けた監視対象処理の処理順序(1番目からn番目)でサイクリックに実行するシステムのCPU監視装置において、
プログラム処理の複数個所に置かれた監視対象となるプログラムカウンタの値を出力するプログラムカウンタ値出力手段と、
出力したタイミングでプログラムカウンタの値を記憶しておくプログラムカウンタ値記
憶手段と、
今回の1番目からn番目までのプログラムカウンタの値と前回の1番目からn番目まで
のプログラムカクンタの値を読み出し、同じ順序で比較した結果、すべて一致・1つでも不一致を判断するプログラムカウンタ値比較手段とを備え、
比較結果のひとつでも不一致を以って前回と同じ処理順序で実行していないことを検出することを特徴とするプログラム動作におけるハッシュ値を使わないCPUの動作監視装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009055219A JP2010211391A (ja) | 2009-03-09 | 2009-03-09 | Cpuの動作監視方法および装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009055219A JP2010211391A (ja) | 2009-03-09 | 2009-03-09 | Cpuの動作監視方法および装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010211391A true JP2010211391A (ja) | 2010-09-24 |
Family
ID=42971506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009055219A Pending JP2010211391A (ja) | 2009-03-09 | 2009-03-09 | Cpuの動作監視方法および装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010211391A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170134710A (ko) * | 2015-04-20 | 2017-12-06 | 아우토리브 디벨롭먼트 아베 | 차량 안전 전자 제어 시스템 |
-
2009
- 2009-03-09 JP JP2009055219A patent/JP2010211391A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170134710A (ko) * | 2015-04-20 | 2017-12-06 | 아우토리브 디벨롭먼트 아베 | 차량 안전 전자 제어 시스템 |
JP2018528111A (ja) * | 2015-04-20 | 2018-09-27 | オートリブ ディベロップメント エービー | 車両安全電子制御システム |
KR102033387B1 (ko) * | 2015-04-20 | 2019-11-08 | 비오니어 스웨덴 에이비 | 차량 안전 전자 제어 시스템 |
US11360864B2 (en) | 2015-04-20 | 2022-06-14 | Veoneer Sweden Ab | Vehicle safety electronic control system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102025556B1 (ko) | 처리 장치, 추적 유닛 및 진단 장치 | |
EP2615551B1 (en) | Abnormality inspection device, central processing unit, and abnormality inspection method | |
EP3255546B1 (en) | Controller | |
JP2010044578A (ja) | マルチコアプロセッサ | |
US11625316B2 (en) | Checksum generation | |
KR20140134371A (ko) | 프로세서의 오류를 검출하는 장치 및 방법 | |
JP2008033890A (ja) | マイクロコンピュータシステム | |
JP2018067047A (ja) | 制御装置 | |
US20070226471A1 (en) | Data processing apparatus | |
JP2010211391A (ja) | Cpuの動作監視方法および装置 | |
CN104239201A (zh) | 一种软单步系统中内存读写监控方法 | |
JP2014132384A (ja) | マイクコンピュータ及びその制御方法 | |
JP2011154459A (ja) | コンピュータシステムのプログラム異常動作検出装置 | |
JP2009223714A (ja) | 演算回路及び演算回路の異常解析方法 | |
KR102603835B1 (ko) | 프로세서 시스템의 프로그램 카운터 구조를 보호하고 인터럽트 요청의 처리를 모니터링하기 위한 방법 및 장치 | |
CN112487414B (zh) | 一种进程命令行的获取方法、装置、设备以及存储介质 | |
CN111352754B (zh) | 一种数据存储检错纠错方法及数据存储装置 | |
JP2009217385A (ja) | プロセッサ及びマルチプロセッサ | |
JP2019531542A (ja) | 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法 | |
US20070179635A1 (en) | Method and article of manufacure to persistently deconfigure connected elements | |
JP2009070212A (ja) | マルチプロセッサシステム | |
JP2011232910A (ja) | メモリ診断方式 | |
US11061745B2 (en) | Shared resource analysis for embedded multi-core systems | |
JP2012059127A (ja) | 情報処理装置、ウォッチドッグタイマ、異常検出方法 | |
JP2013175076A (ja) | 情報処理装置および情報処理装置における異常分析方法 |