以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための図面において同一の構成要素には原則として同一の符号を付し、その繰り返しの説明は省略する。
(実施の形態1)
図1は、実施の形態1に係るデータ処理装置の機能構成を示している。
データ処理装置1は、図1に示すように、処理装置10、記憶部20、記憶部30、主電源40、および異常判定処理部50を有している。
処理装置10は、例えばCPU(中央演算処理装置)で構成され、制御装置110と演算装置120とを有している。記憶部20は例えば不揮発性のメモリであり、所定の処理に対応する命令語を記憶している。記憶部30は例えば揮発性のメモリであり、処理装置10によって実行された所定の処理にかかわる情報、例えば処理の途中結果や処理の最終結果など処理情報やワークデータなどを記憶する。
処理装置10において、制御装置110は、記憶部20に対するアクセスにより命令の読み込みを行い、その命令の解読、復号化を実行するものであり、次に実行すべき命令語が格納されている記憶部20のアドレスを記憶するプログラムカウンタ(命令アドレスレジスタ)111と、プログラムカウンタの値(アドレス)に基づき記憶部20から読み出された命令語を記憶する命令レジスタ112と、命令レジスタ112に記憶された命令語の解読、復号化を行う命令デコーダ113とを有している。
演算装置120は、制御装置110の制御に従って、命令デコーダ113によって復号化された命令に従って処理(算術演算、論理演算)を実行し、この実行した結果を記憶部30に記憶する。
主電源40は、当該データ処理装置1に対し所定の電力を供給するためのものであり、例えば処理装置10、記憶部20、記憶部30、および異常判定処理部50のそれぞれに対し所定の電力(電源電圧)を供給する。
異常判定処理部50は、図1および図2に示すように、プログラムカウンタ記憶処理部510、電源OFF−ON判定部520、プログラムカウンタ異常判定部530、状態表示部540、不揮発性記憶部550、および外部記憶装置560を有している。なお、図2は、図1に示す異常判定処理部50の詳細な機能構成を示している。そこで、異常判定処理部50については、図2を参照して説明する。
図2において、プログラムカウンタ記憶処理部510は、処理中のプログラムカウンタ111の値(アドレス)を不揮発性記憶部550に格納するものであり、一定時間分のプログラムカウンタ111の値に関する履歴(進行履歴)を不揮発性記憶部550に格納する。
不揮発性記憶部550は、一定時間分のプログラムカウンタ111の値に関する履歴(進行履歴)を示す履歴情報を記憶する。
電源OFF−ON判定部520は、時計部521、電源OFF/ON計測部522、電源OFF時間算出部523、および電源OFF時間比較部524を有している。
このような電源OFF−ON判定部520は、主電源40がオン(ON)状態からオフ(OFF)状態に変化しその後オン(ON)状態に変化した場合の当該主電源40のオフになっている時間(以下「オフ時間」という)と予め設定される基準値(比較値)とを基に、オフ時間が基準値(比較値)以内であるか否かを判定する手段である。
時計部521は、主電源40がOFFした場合であっても計時する手段(時刻を保持する手段)である。この時計部521は例えば内部電源によって作動するようになっている。
電源OFF/ON計測部522は、主電源40のOFFまたはONの状態を認識し、そのOFFまたはONの状態に遷移したと認識した時点で、時計部521による計時の結果(時刻)を取得し保持する手段である。また、電源OFF/ON計測部522は、ONからOFFの状態に変化した時の時刻(以下「電源OFF時刻」という。)およびOFFからONの状態に変化した時の時刻(以下「電源ON時刻」という。)を電源OFF時間算出部13へ出力する。
電源OFF時間算出部523は、電源OFF/ON計測部522からの電源OFF時刻および電源ON時刻を基に主電源40がOFFとなっている時間(以下「電源OFF時間」という。)つまり上記オフ時間を算出する手段である。
電源OFF時間比較部524は、電源OFF時間算出部523が算出した電源OFF時間と予め設定される基準値つまり比較値(時間)とを比較し、この比較した結果を基に、「ON状態の電源40がOFF状態に変化しその後ON状態に変化するまでの時間(オフ時間)が基準値(比較値)以内」であるか否かを判定する手段である。
電源OFF時間比較部524は、上記オフ時間が上記基準値(比較値)以内の場合、主電源40がON状態から短時間で「OFF状態に変化しその後ON状態に変化」したと判定する。
ここで、電源40がON状態から短時間で「OFF状態に変化しその後ON状態に変化」したことを「短時間の電源OFF−ON」と定義する。
そして、電源OFF時間比較部524は、上記オフ時間が上記基準値(比較値)以内の場合、「短時間の電源OFF−ON」である旨をプログラムカウンタ異常判定部530へ出力する。
実施の形態1では、「短時間の電源OFF−ON」であると判定されることを条件に、「所定の処理の実行中に何らかの異常状態(意図しない異常状態)」が発生したか否かが判断されるようになっている。
すなわち、通常の主電源40のOFFとは異なり、ユーザが継続して当該データ処理装置1を使用したい状況にありながら、ON状態の主電源40を一旦OFF状態にすることを必要とした状態を、「所定の処理の実行中に何らかの異常状態(意図しない異常状態)が発生」とする条件の一つとしている。
プログラムカウンタ異常判定部530は、電源OFF−ON判定部520(の電源OFF時間比較部524)からの「短時間で電源OFF−ONである旨」を受け取った場合に、不揮発性記憶部550に記憶されている履歴情報(プログラムカウンタの値に関する進行履歴)と、予め設定される異常判定基準とを比較し、当該履歴情報が当該異常判定基準に適合するか否かを判断する。
また、プログラムカウンタ異常判定部530は、上記判断した結果、履歴情報が異常判定基準に適合するときは、プログラムカウンタの値に関する進行履歴が異常であると判定するとともに、不揮発性記憶部550に記憶されている履歴情報(プログラムカウンタの値に関する進行履歴)を異常状態の履歴情報として外部記憶装置560へ転送(出力)する。
状態表示部540は、当該データ処理装置1の各種の状態を表示するものであり、例えばプログラムカウンタの値に関する進行履歴が異常であった旨を表示する。
外部記憶装置560は、異常状態であった履歴情報(プログラムカウンタの値に関する進行履歴)を記憶する。
また、外部記憶装置560は、保守員が回収でき、且つ回収までに転送されたプログラムカウンタの値に関する進行履歴(を示す履歴情報)を全て保存する必要があるので、ある程度の容量を有し取り外し可能な記憶装置である。その一例としは、例えば、USBフラッシュメモリ、SDメモリカードなどメモリカード、ハードディスクドライブなどが挙げられる。なお、各々におけるアクセス方法、接続インタフェースについては、ここでは言及しない。
なお、実施の形態1では、不揮発性記憶部550は上記記憶手段の機能を果たし、電源OFF−ON判定部520は上記オフ時間求め手段の機能を果たし、プログラムカウンタ異常判定部530は上記判定手段の機能(異常判定基準に従って異常判定処理を実施する判定手段の機能)を果たすようになっている。
次に、異常判定処理部50による異常判定処理について、図3を参照して説明する。
図3は、その異常判定処理の処理手順を示すフローチャートである。
ユーザが主電源40をON状態にする(電源投入する)ことでデータ処理装置1(システム)が起動し、さらにデータ処理装置1内の処理装置10が所定の処理を実現するためのプログラムを実行すると、異常判定部50では、プログラムカウンタ記憶処理部510は、処理装置10によるプログラムの実行中、一定期間内のプログラムカウンタ111の値(アドレス)に関する進行履歴を、不揮発性記憶部550に記憶する(ステップS101)。
この場合、不揮発性記憶部550は、一定期間毎に、当該一定期間内の上記進行履歴を記憶する。
ON状態の主電源40から所定の電力(電源電圧)を供給されているプログラムカウンタ記憶処理部510は、供給される所定の電力(電源電圧)の値に応じて主電源40がOFFされたか否かを判断し(ステップS102)、主電源40がOFFされていない場合は、主電源40がOFFされるまで、プログラムカウンタ111の値に関する進行履歴(を示す履歴情報)を不揮発性記憶部550に記憶する。
一方、ユーザによってON状態の主電源40がOFF状態にされた場合、上述したようなプログラムカウンタ111の値に関する進行履歴(を示す履歴情報)の記憶は行われない。また、電源OFF−ON判定部520では、電源OFF/ON計測部522は、主電源40のOFFの状態を認識し、そのOFFの状態に遷移したと認識した時点で、時計部521による計時の結果(時刻)つまりONからOFFの状態に変化した時の時刻(電源OFF時刻)を取得し保持する。
次にユーザによってOFF状態の主電源40がON状態にされると(ステップS103)、当該データ処理装置1(システム)が起動する。
このとき、電源OFF−ON判定部520において、電源OFF/ON計測部522は、主電源40のONの状態を認識し、そのONの状態に遷移したと認識した時点で、時計部521による計時の結果(時刻)つまりOFFからONの状態に変化した時の時刻(電源ON時刻)を取得し保持する。
そして、電源OFF/ON計測部522が、上述したようにして保持した電源ON時刻と既に保持している電源OFF時刻とを電源OFF時間算出部523へ出力すると、電源OFF時間算出部523は、これらの電源OFF時刻および電源ON時刻を基に主電源40がOFFとなっている電源OFF時間(電源ON時刻―電源OFF時刻)を算出し、この算出した結果(電源OFF時間)を電源OFF時間比較部524へ出力する。
電源OFF時間比較部524は、電源OFF時間算出部523からの電源OFF時間と予め設定される基準値つまり比較値(時間)とを比較し、この比較した結果を基に、「ON状態の主電源40がOFF状態に変化しその後ON状態に変化するまでの時間(オフ時間)が基準値(比較値=時間)以内」であるか否か、すなわち「短時間の電源OFF−ON」であるか否かを判断する(ステップS104)。
ここで、電源OFF時間が基準値(比較値=時間)以内である場合には「短時間の電源OFF−ON」であると判断され、一方、電源OFF時間が基準値(比較値=時間)を超えている場合は「短時間の電源OFF−ON」ではない(例えば通常の主電源40のONである)と判断されようになっている。
さて、電源OFF時間比較部524は、電源OFF時間が基準値(比較値=時間)以内であるので「短時間の電源OFF−ON」であると判断した場合は(ステップS104「YES」の場合)、「短時間の電源OFF−ON」である旨をプログラムカウンタ異常判定部530へ出力する。
プログラムカウンタ異常判定部530は、電源OFF−ON判定部520(の電源OFF時間比較部524)からの「短時間の電源OFF−ON」である旨を受け取ると、不揮発性記憶部550から履歴情報(プログラムカウンタ111の値に関する進行履歴)を読み出すとともに(ステップS105)、この読み出した履歴情報と予め設定される異常判定基準とを比較し、当該履歴情報が当該異常判定基準に適合するか否かの異常判定処理を実施する(ステップS106)。
ここで、異常判定基準には次の基準1〜3の3つの基準が含まれている。
基準1は、図4(a)に示すように、プログラムカウンタの値(アドレス)が進行しないこと(ストールの発生)。
基準2は、図4(b)に示すように、プログラムカウンタの値(アドレス)が所定の範囲(狭い範囲)を周期的に繰り返すこと(無限ループの発生)。
基準3は、図4(c)に示すように、プログラムカウンタの値(アドレス)がプログラム領域外のアドレスを示していること(不正ブランチ命令の発生)。
これら3つの基準の何れか1つの基準に、不揮発性記憶部550から読み出された履歴情報(プログラムカウンタ111の値に関する進行履歴)が適合する場合は、プログラムカウンタ111の値に関する進行履歴は異常であると判定されるようになっている。
ここで、プログラムカウンタ111の値に関する進行履歴が異常であるということは、上記所定の処理が異常であるということを意味する。
ステップS106を終了したプログラムカウンタ異常判定部530は、不揮発性記憶部550から読み出した履歴情報(プログラムカウンタ111の値に関する進行履歴)が、上述した異常判定基準つまり3つの基準の何れか1つの基準に適合するか否かに応じて、プログラムカウンタ111の値に関する進行履歴が異常であるか否かを判断する(ステップS107)。
プログラムカウンタ異常判定部530は、ステップS107において、上記履歴情報(プログラムカウンタ111の値に関する進行履歴)が、上述した異常判定基準つまり3つの基準の何れか1つの基準に適合するので、プログラムカウンタ111の値に関する進行履歴が異常であると判断した場合(主電源40のOFFされる前(電源OFF前)の所定の処理が異常であると判断した場合)は、不揮発性記憶部550に記憶されている当該履歴情報(プログラムカウンタ111の値に関する進行履歴)を外部記憶装置560へ転送する(ステップS108)。
また、プログラムカウンタ異常判定部530は、上記履歴情報(プログラムカウンタ111の値に関する進行履歴)を外部記憶装置560へ転送した後、プログラムカウンタ111の値に関する進行履歴が異常であった旨を状態表示部540へ出力する。
プログラムカウンタ異常判定部530からの上記異常であった旨を受け取った状態表示部540は、ユーザに対し、「前回の電源OFF時に、プログラムカウンタ111の値に関する進行履歴が異常状態であった旨」を通知する(ステップS109)。
ユーザに対し通知される上記異常状態であった旨は、現時点の状態ではないが、直近の過去にユーザが認識できなった障害が発生した旨を意味する。
ここで、状態表示部540での上記異常状態であった旨の表示内容の一例を図5(a),(b)に示す。図5(a)は状態表示部540がダイアログを表示可能な表示手段の場合の表示例を示し、図5(b)は状態表示部540が文字を表示可能な表示手段の場合の表示例を示している。
上述したようにして状態表示部540が上述した異常状態であった旨を表示すると(ステップS109が終了した場合)、データ処理装置1(システム)は初期化処理を実行した後(ステップS110)、ステップS101へ戻る。この場合、通常処理が実施され、一定期間内のプログラムカウンタ111の値(アドレス)に関する進行履歴が不揮発性記憶部550に記憶される。
ステップS104において、電源OFF時間比較部524によって、電源OFF時間が基準値(比較値=時間)を超えているので、「短時間の電源OFF−ON」ではないと判断(通常の電源ONであると判断)された場合(ステップS104「NO」の場合)、ステップS110へ進む。
また、ステップS107において、プログラムカウンタ異常判定部530によって、上記履歴情報(プログラムカウンタ111の値に関する進行履歴)が、上述した異常判定基準つまり3つの基準の何れか1つの基準に適合しないので、プログラムカウンタ111の値に関する進行履歴が異常ではないと判断(正常であると判断)された場合(ステップS107「NO」の場合)、ステップS110へ進む。
なお、実施の形態1において、プログラムカウンタ111の値に関する進行履歴の記憶処理の動作について、保守員がその動作の可否を設定するようにする構成としてもよい。
この場合、保守員がその記憶処理の動作を禁止する旨(動作否)を設定した場合は、プログラムカウンタ記憶処理部510によるプログラムカウンタ111の値に関する進行履歴の保存処理(ステップS101参照)、およびプログラムカウンタ異常判定部530によるプログラムカウンタ111の値に関する進行履歴の異常判定処理(ステップS105〜S109参照)は、それぞれ実行されない。
また、保守員がその記憶処理の動作を禁止する旨(動作否)を設定した場合は、電源OFF−ON判定部520(の電源OFF時間比較部524)によって「短時間の電源OFF−ON」であると判定された場合であっても、プログラムカウンタ異常判定部530によるプログラムカウンタ111の値に関する進行履歴の異常判定処理(ステップS105〜S109参照)は実行されない。
以上説明したように、実施の形態1によれば、所定の処理の実行中に意図しない異常が発生した事象を解決するために、ユーザがON状態の主電源を「短時間の電源OFF−ON」させる操作を実施した場合に、プログラムカウンタ異常判定部530がプログラムカウンタの値に関する進行履歴が異常であると判定したときは、当該異常状態になっているプログラムカウンタの値に関する進行履歴を外部記憶装置560に記憶するようにしているので、所定の処理の実行中に意図しない異常が発生した場合に当該異常の発生原因の究明に寄与する情報(異常状態になっているプログラムカウンタの値に関する進行履歴)を得ることができる。
(実施の形態2)
実施の形態2では、上記実施の形態1でのプログラムカウンタ異常判定部530による異常判定処理の実行により、異常状態であった履歴情報(プログラムカウンタ111の値に関する進行履歴)が外部記憶装置560に記憶されていることを前提とし、またON状態の主電源40が「短時間の電源OFF−ON」とならない場合すなわち主電源40がON状態のままの場合であってもプログラムカウンタ異常判定部530が異常判定処理を実施する、データ処理装置を想定している。
図6は実施の形態2に係るデータ処理装置の機能構成を示し、図7は実施の形態2に係るデータ処理装置に設けられる異常判定処理部の機能構成を示している。
図6に示すデータ処理装置1は、図1に示した実施の形態1のデータ処理装置1とは、基本的にはその構成および機能と同様になっているものの、異常判定処理部50の機能が多少異なっている。
そのため、図7に示す異常判定処理部50も、図1に示した実施の形態1の異常判定処理部50とはその機能が多少異なっている。
なお、図6および図7において、それぞれ図1および図2に示した構成要素と同様の機能を果たす部分には同一の符号を付している。
実施の形態2において、プログラムカウンタ記憶処理部510は、プログラムカウンタ111の値に関する進行履歴が異常か否かを判定するためのタイミングを示す判定周期(以下「プログラムカウンタの判定周期」という。)毎に、当該プログラムカウンタの判定周期に到達するまで、プログラムカウンタ111の値に関する進行履歴(を示す履歴情報)を不揮発性記憶部550に記憶する。
また、プログラムカウンタ記憶処理部510は、プログラムカウンタの判定周期に到達した場合、当該プログラムカウンタの判定周期に到達した旨をプログラムカウンタ異常判定部530へ通知する。
外部記憶装置560には、異常状態の履歴情報(プログラムカウンタ111の値に関する進行履歴)が記憶されている。
プログラムカウンタ異常判定部530は、不揮発性記憶部550に記憶されている履歴情報すなわちプログラムカウンタの値に関する現在の進行履歴と、外部記憶装置560に記憶され履歴情報すなわち異常状態であると判定されたプログラムカウンタの値に関する過去の進行履歴(過去に発生した異常状態におけるプログラムカウンタの値に関する進行履歴)とのパターンマッチングを周期的に実行する。
また、プログラムカウンタ異常判定部530は、上記パターンマッチングの結果、プログラムカウンタの値に関する現在の進行履歴が異常であると判定した場合、外部記憶装置560に対し、記憶部(揮発性メモリ例えばRAM)30に記憶されている情報(RAM情報)を転送して、このRAM情報と、外部記憶装置560に記憶され履歴情報(異常状態であると判定されたプログラムカウンタの値に関する過去の進行履歴)とを対応付けて記憶させる。
ところで、プログラムカウンタ異常判定部530は、プログラムカウンタ記憶処理部510からのプログラムカウンタの判定周期に到達した旨を受け付けたタイミングで、かつ異常状態の履歴情報(プログラムカウンタ111の値に関する過去の進行履歴)が外部記憶装置560に記憶されていることを条件に、上記パターンマッチングを実施するようになっている。すなわち、上記パターンマッチングの周期は、プログラムカウンタの判定周期であると言える。
なお、実施の形態2では、不揮発性記憶部550は上記第1の記憶手段の機能を果たし、外部記憶装置560は上記第2の記憶手段の機能を果たし、プログラムカウンタ異常判定部530は上記判定手段の機能(パターンマッチングにより異常判定処理を実施する判定手段の機能)を果たし、記憶部30は上記処理情報記憶手段の機能を果たすようになっている。
次に、異常判定処理部50による異常判定処理について、図8を参照して説明する。
図8は、その異常判定処理の処理手順を示すフローチャートである。
ユーザが主電源40をON状態にする(電源投入する)ことでデータ処理装置1(システム)が起動し、さらにデータ処理装置1内の処理装置10が所定の処理を実現するためのプログラムを実行すると、異常判定部50では、プログラムカウンタ記憶処理部510は、処理装置10によるプログラムの実行中、一定期間内のプログラムカウンタ111の値(アドレス)に関する進行履歴(現在の進行履歴)を、不揮発性記憶部550に記憶する(ステップS201)。
この場合、不揮発性記憶部550は、一定期間毎に、当該一定期間内の上記進行履歴を記憶する。
また、プログラムカウンタ記憶処理部510は、プログラムカウンタの判定周期であるか否かを判断し(ステップS202)、この判断した結果、プログラムカウンタの判定周期に到達していない場合には、その判定周期に到達するまで、プログラムカウンタ111の値に関する進行履歴(を示す履歴情報)を不揮発性記憶部550に記憶するべく、ステップS201に戻る。
一方、ステップS202においてプログラムカウンタの判定周期に到達したと判断したプログラムカウンタ記憶処理部510は、プログラムカウンタの判定周期に到達した旨をプログラムカウンタ異常判定部530へ通知する。
なお、実施の形態2では、上記一定期間および上記プログラムカウンタの判定周期は、「一定期間=プログラムカウンタの判定周期」の関係が成立する値に設定されるものとする。
プログラムカウンタの判定周期に到達した旨の通知を受け取ったプログラムカウンタ異常判定部530は、外部記憶装置560にアクセスして履歴情報(異常状態であると判定されたプログラムカウンタの値に関する過去の進行履歴)が記憶されているか否かを判断し(ステップS203)、この判断した結果、当該履歴情報が記憶されている場合は、外部記憶装置560から当該履歴情報を読み出す(ステップS204)。
また、プログラムカウンタ異常判定部530は、不揮発性記憶部から履歴情報(プログラムカウンタの値に関する現在の進行履歴)を読み出すとともに(ステップS205)、このステップS205で読み出した履歴情報および上記ステップS204で読み出した履歴情報を基にパターンマッチング処理を実行(当該2つの履歴情報のパターンマッチングを実行)する(ステップS206)。
パターンマッチング処理を実行(上記2つの履歴情報のパターンマッチングを実行)するということは、プログラムカウンタの値に関する現在の進行履歴が異常であるか否かの異常判定処理を実行することを意味する。
ここで、プログラムカウンタ111の値に関する現在の進行履歴が異常であるということは、上記所定の処理が異常であるということを意味する。
さらに、プログラムカウンタ異常判定部530は、上述したパターンマッチング処理(異常判定処理)の実行の結果に基づき、プログラムカウンタの値に関する現在の進行履歴が異常であるか否かを判断する(ステップS207)。
ここで、不揮発性記憶部から読み出された履歴情報(プログラムカウンタの値に関する現在の進行履歴)が例えば図9(a)に示す内容であり、一方、外部記憶装置560から読み出された履歴情報(異常状態であると判定されたプログラムカウンタの値に関する過去の進行履歴)が例えば、図9(b)に示す内容(図4(b)に示す基準2の異常判定基準に適合した過去の進行履歴に相当)であるとする。
そして、不揮発性記憶部から読み出された履歴情報と外部記憶装置560から読み出された履歴情報とのパターンマッチング処理により、2つのパターンが一致するときは不揮発性記憶部から読み出された履歴情報つまりプログラムカウンタの値に関する現在の進行履歴が異常であると判断されるようになっている。
また、プログラムカウンタ異常判定部530は、ステップS207において、プログラムカウンタ111の値に関する現在の進行履歴が異常であると判断した場合(所定の処理が異常であると判断した場合)は、外部記憶装置560に記憶されている履歴情報(異常状態であると判定されたプログラムカウンタの値に関する過去の進行履歴)に付随するように、記憶部30の現在の記憶状態(RAM状態)を表わすRAMダンプを外部記憶装置560へ転送する(ステップS208)。
すなわち、このステップS208においては、プログラムカウンタ異常判定部530は、外部記憶装置560に対し、記憶部30に記憶されている記憶情報(RAM情報)を転送して、このRAM情報(=RAMダンプ)と、外部記憶装置560に記憶され履歴情報(異常状態であると判定されたプログラムカウンタの値に関する過去の進行履歴)とを対応付けて記憶させる処理を実施していることになる。
ステップS208でのRAMダンプを外部記憶装置560へ転送したプログラムカウンタ異常判定部530は、プログラムカウンタ111の値に関する現在の進行履歴が異常である旨(現在の処理が異常である旨)を状態表示部540へ出力する。
その異常である旨を受け取った状態表示部540は、ユーザに対し、「プログラムカウンタ111の値に関する進行履歴が異常状態であった旨」を通知し(ステップS209)、その後、この処理を終了する。
上記異常状態であった旨は、現時点で電源OFFに回避方法がない障害が発生した旨を意味する。
ここで、状態表示部540での上記異常状態であった旨の表示内容の一例を図10(a),(b)に示す。図10(a)は状態表示部540がダイアログを表示可能な表示手段の場合の表示例を示し、図10(b)は状態表示部540が文字を表示可能な表示手段の場合の表示例を示している。
上述したようにして状態表示部540によって上述した異常状態であった旨が表示された場合において、プログラムカウンタ111の値に関する現在の進行履歴の異常状態(現在の処理の異常状態)を回避する手段としては、ユーザによって、ON状態の主電源40をOFFに変化させその後ONに変化させることである。すなわち主電源40に対し「短時間の電源OFF−ON」を実施することである。
ステップS207においてプログラムカウンタ111の値に関する現在の進行履歴が異常ではないと判断された場合、すなわち(プログラムカウンタ111の値に関する現在の進行履歴は正常であると判断された場合(所定の処理は正常であると判断された場合)は、ステップS201へ戻る。
ステップS203において、外部記憶装置560に履歴情報(異常状態であると判定されたプログラムカウンタの値に関する過去の進行履歴)が記憶されていないと判断された場合は、パターンマッチング処理を実施することができないので、この処理を終了する。
なお、実施の形態2において、プログラムカウンタ111の値に関する進行履歴の記憶処理の動作について、保守員がその動作の可否を設定するようにする構成としてもよい。
この場合、保守員がその記憶処理の動作を禁止する旨(動作否)を設定した場合は、プログラムカウンタ記憶処理部510によるプログラムカウンタ111の値に関する進行履歴の保存処理(ステップS201参照)、およびプログラムカウンタ異常判定部530によるプログラムカウンタ111の値に関する進行履歴の異常判定処理(ステップS203〜S209参照)は、それぞれ実行されない。
また、プログラムカウンタの判定周期に到達した場合(プログラムカウンタ記憶処理部510によってプログラムカウンタの判定周期に到達したと判断された場合)であっても、プログラムカウンタ異常判定部530によるプログラムカウンタ111の値に関する進行履歴の異常判定処理(ステップS203〜S209参照)は実行されない。
以上説明したように、実施の形態2によれば、プログラムカウンタ異常判定部530がプログラムカウンタの判定周期ごとに実施する、プログラムカウンタの値に関する現在の進行履歴と異常状態であったプログラムカウンタの値に関する過去の進行履歴とのパターンマッチングにより、当該プログラムカウンタの値に関する現在の進行履歴が異常であると判定したときは、外部記憶装置560には、異常状態であったプログラムカウンタの値に関する過去の進行履歴と、所定の処理にかかわる情報であるRAMダンプとが対応付けられて記憶されるので、所定の処理の実行中に意図しない異常が発生した場合に当該異常の発生原因の究明に寄与する情報(異常状態になっているプログラムカウンタの値に関する過去の進行履歴、およびRAMダンプ)を得ることができる。
(実施の形態3)
実施の形態3に係るデータ処理装置は、図6に示した実施の形態2のデータ処理装置1の機能構成と同様になっている。また、データ処理装置内の異常判定処理部も、図7に示した実施の形態2の異常判定処理部50の機能構成と同様になっている。
実施の形態3では、実施の形態2とは、異常判定処理部50による異常判定処理が相違している。
なお、実施の形態3では、不揮発性記憶部550は上記第1の記憶手段の機能を果たし、電源OFF−ON判定部520は上記オフ時間求め手段の機能を果たし、外部記憶装置560は上記第2の記憶手段の機能を果たし、プログラムカウンタ異常判定部530は上記第1の判定手段および上記第2の判定手段の各機能を果たし、記憶部30は上記処理情報記憶手段の機能を果たすようになっている。
次に、異常判定処理部50による異常判定処理について、図11および図12を参照して説明する。
図11および図12は、その異常判定処理の処理手順を示すフローチャートである。
この異常判定処理は、図11および図12に示すように、実施の形態1の異常判定処理部50による異常判定処理のステップS101〜S110と、実施の形態2の異常判定処理部50による異常判定処理のステップS202〜S209とを組み合わせたものになっている。
なお、実施の形態3では、上記一定期間および上記プログラムカウンタの判定周期は、「一定期間=プログラムカウンタの判定周期」の関係が成立する値に設定されるものとする。
ユーザが主電源40をON状態にする(電源投入する)ことでデータ処理装置1(システム)が起動し、さらにデータ処理装置1内の処理装置10が所定の処理を実現するためのプログラムを実行すると、異常判定部50では、プログラムカウンタ記憶処理部510は、図11に示すように、処理装置10によるプログラムの実行中、一定期間内のプログラムカウンタ111の値(アドレス)に関する進行履歴(現在の進行履歴)を、不揮発性記憶部550に記憶する(ステップS101)。
この場合、不揮発性記憶部550は、一定期間毎に、当該一定期間内の上記進行履歴を記憶する。
ON状態の主電源40から所定の電力(電源電圧)を供給されているプログラムカウンタ記憶処理部510は、供給される所定の電力(電源電圧)の値に応じて主電源40がOFFされたか否かを判断する(ステップS102)。
ユーザによってON状態の主電源40がOFF状態にされた場合(ステップS102「YES」の場合は、図11に示すように、図3に示した実施の形態1のステップS103〜S110と同様の処理が実施される。
ステップS102において主電源40がOFFされていないと判断したプログラムカウンタ記憶処理部510は、プログラムカウンタの判定周期であるか否かを判断し(ステップS202)、このステップS202において、プログラムカウンタの判定周期に到達していないと判断した場合には、その判定周期に到達するまで、プログラムカウンタ111の値に関する進行履歴(を示す履歴情報)を不揮発性記憶部550に記憶するべく、ステップS101に戻る。
一方、ステップS202においてプログラムカウンタの判定周期に到達したと判断したプログラムカウンタ記憶処理部510は、プログラムカウンタの判定周期に到達した旨をプログラムカウンタ異常判定部530へ通知する。
これ以降は、プログラムカウンタ異常判定部530による異常判定処理が実施されることとなり、図12に示すように、図8に示した実施の形態2のステップS203〜S209と同様の処理が実施される。
なお、図12のステップS207においてプログラムカウンタ111の値に関する現在の進行履歴が異常ではないと判断された場合、すなわちプログラムカウンタ111の値に関する現在の進行履歴は正常であると判断された場合(所定の処理は正常であると判断された場合)は、図11のステップS101へ戻る。
以上説明したように、実施の形態3によれば、上記実施の形態1および上記実施の形態2の場合と同様の作用効果を奏することができる。
また、実施の形態3によれば、異常状態になっているプログラムカウンタの値に関する過去の進行履歴が外部記憶装置560に記憶されているときは、当該過去の進行履歴にかかわる異常状態と同じ内容の異常状態になっているプログラムカウンタの値に関する現在の進行履歴については、プログラムカウンタ異常判定部530は、ON状態の主電源を「短時間の電源OFF−ON」させるユーザによる操作が実施されなくとも、上記過去の進行履歴と上記現在の進行履歴とのパターンマッチングにより、プログラムカウンタの値に関する現在の進行履歴が異常であるか否かを判断することができる。
そして、このパターンマッチングにより、プログラムカウンタの値に関する現在の進行履歴が異常であると判定されたときは、外部記憶装置には、異常状態であったプログラムカウンタの値に関する過去の進行履歴と、所定の処理にかかわる情報であるRAMダンプとが対応付けられて記憶されるので、所定の処理の実行中に意図しない異常が発生した場合に当該異常の発生原因の究明に寄与する情報(異常状態になっているプログラムカウンタの値に関する過去の進行履歴、およびRAMダンプ)を得ることができる。
ところで、上述した実施の形態1〜3のデータ処理装置1は、コンピュータなど情報処理装置またはプリンタなど画像形成装置の構成要素となるものである。すなわち、情報処理装置300は、図13(a)に示すように、上述した実施の形態1〜3の何れかの実施の形態のデータ処理装置1を有する。画像形成装置400は、図13(b)に示すように、上述した実施の形態1〜3の何れかの実施の形態のデータ処理装置1と、画像データを印刷処理して出力する画像出力装置420とを有している。
次に、情報処理装置(コンピュータ)300のハードウェア構成について、図14を参照して説明する。
情報処理装置300は、図14に示すように、CPU310、ROM320、RAM330、プログラムROM340、ASIC350、時計部360、不揮発性メモリ370、外部記憶装置380、インタフェース381、通信インタフェース(以下「通信I/F」という。)382、表示装置390、入力装置391、および主電源40を有している。
情報処理装置300を構成する複数(13)の構成要素40,310〜391は上述したデータ処理装置1の機能を果たすものであり、そのため、図14の情報処理装置300はデータ処理装置1であると言える。
CPU310は、「Central Processing Unit:中央演算処理装置」であり、ROM320から命令(命令語)を読み出し解読し復号化しその復号化した命令に従った所定の処理を実行するとともに、この所定の処理の実行結果をRAM330に格納する。この場合、所定の処理としては、例えば印刷データの生成処理などが挙げられる。
ROM320は、「Read Only Memory:読み出し専用メモリ」であり、上記記憶部20(図1および図6参照)の機能を果たすものである。
RAM330は、「Random Access Memory:随時書き込み読み出しメモリ」であり、上記記憶部30(図1および図6参照)の機能を果たすものである。
プログラムROM340は、プログラムを記憶しているROM(読み出し専用メモリ)であり、上述したプログラムカウンタ記憶処理部510(図2および図7参照)、上述した時計部521を除く電源OFF−ON判定部520(図2および図7参照)、プログラムカウンタ異常判定部530(図2および図7参照)の各機能を実現するためのプログラム、上述した処理手順(図3、図8、図11および図12参照)に対応するプログラムなど、所定のプログラムを記憶している。
ここで、上述したプログラムカウンタ記憶処理部510、上述した時計部521を除く電源OFF−ON判定部520、プログラムカウンタ異常判定部530の各機能を実現するためのプログラム、および上述した処理手順に対応するプログラムを、データ処理プログラムと定義する。
なお、このデータ処理プログラム340Aには、少なくとも次の(1)〜(3)の処理過程が含まれている。
(1)所定の処理が実行されるときに参照されるプログラムカウンタの値に関する進行履歴を示す履歴情報を記憶手段に記憶させる記憶処理過程。この処理過程は、プログラムカウンタ記憶処理部510(ASIC350)によって実行される。
(2)電源がオンの状態からオフに変化し、さらにオンに変化した場合の当該電源がオフになっているオフ時間を求めるオフ時間求め処理過程。この処理過程は、上述した時計部521を除く電源OFF−ON判定部520(ASIC350)によって実行される。
(3)上記オフ時間求め処理過程により求められたオフ時間が予め設定される所定の時間以下の場合は、上記記憶手段に記憶されている履歴情報と予め設定される異常判定基準とを比較し、当該履歴情報が当該異常判定基準に適合するときは、上記プログラムカウンタの値に関する進行履歴が異常であると判定する判定処理過程。この処理過程は、プログラムカウンタ異常判定部530(ASIC350)によって実行される。
ASIC350は、「Application Specific Integrated Circuit:特定用途向けIC」であり、プログラムROM340に記憶されているデータ処理プログラムを読み込んで実行することにより、上述したプログラムカウンタ記憶処理部510、上述した時計部521を除く電源OFF−ON判定部520、プログラムカウンタ異常判定部530の各機能を実現し、上述した処理手順に対応する異常判定処理を実行する。
また、ASIC350は、異常判定処理の実行に際し、不揮発性メモリ370にアクセスするとともに、インタフェース381を介して外部記憶装置380にアクセスする。
時計部360は、上述した時計部521(図2および図7参照)の機能を果たすものである。この時計部360は例えば内部電源によって作動するようになっている。
不揮発性メモリ370は上述した不揮発性記憶部550(図2および図7参照)の機能を果たし、外部記憶装置380は上述した外部記憶装置560(図2および図7参照)の機能を果たすものである。
インタフェース381は、外部記憶装置560とのデータの授受を行うためのインタフェースである。
通信I/F382は、画像形成装置など外部装置との通信を行うためのインタフェースである。
表示装置390は上述した状態表示部540(図2および図7参照)の機能を果たすものであり、ダイアログ表示可能な例えば液晶ディスプレイ装置で構成される。
入力装置391は、ユーザによる所定の処理の実行指示、保守員によるプログラムカウンタ111の値に関する進行履歴の記憶処理の動作を禁止する旨(動作否)の設定など、所定の入力情報を入力するためのものであり、例えばキーボードやマウスで構成される。
主電源40は、当該情報処理装置300つまり上述した構成要素310〜391に対し所定の電力(電源電圧)を供給するためのものである。
次に、画像形成装置400のハードウェア構成について、図15を参照して説明する。
図15に示す画像形成装置400は、図14に示した情報処理装置300において、入力装置391および表示装置390を削除し、操作パネル410および画像出力装置420を追加した構成になっている。なお、図15において、図14に示した構成要素と同様の機能を果たす部分には同一の符号を付している。
画像形成装置400を構成する複数(13)の構成要素40,310〜382,410,420のうち、画像出力装置420を除く複数(12)の構成要素40,310〜382,410は上述したデータ処理装置1の機能を果たすものである。
操作パネル410は、上述した状態表示部540(図2および図7参照)の機能を果たし例えば文字表示可能な表示手段の機能と、保守員によるプログラムカウンタ111の値に関する進行履歴の記憶処理の動作を禁止する旨(動作否)の設定など、所定の入力情報を入力する入力手段の機能とを有している。
なお、通信I/F382は、情報処理装置など外部装置との通信を行うためのインタフェースである。
この通信I/F382および操作パネル410以外のデータ処理装置1の機能を果たす部分(構成要素)は、図14の情報処理装置300の場合と同様なので、ここではその説明については省略する。
画像形成装置400のCPU310により実行される所定の処理としては、例えば印刷データの展開処理(ラスタライズ処理)、色変換や階調補正などの画像処理などが挙げられる。
ところで、図15に示す画像形成装置400と図14に示した情報処理装置300とが通信回線を介して接続されるようにすることで、画像形成システムを構築することができる。この場合、画像形成システムの情報処理装置300および画像形成装置400のそれぞれにおいて、所定の処理の実行中に意図しない異常が発生した場合に当該異常の発生原因の究明に寄与する情報を得ることができる。
本願明細書において、データ処理プログラムを含む上記所定のプログラムを記録媒体としてのROM(プログラムROM)に記録する実施形態として説明したが、当該所定のプログラムを次のようにして提供することも可能である。
すなわち、上記所定のプログラムをハードディスク等の記憶装置に格納しておき、ASIC(あるいはCPU)が、この所定のプログラムをこの記憶装置から主記憶装置へローディングして実行するようにしてもよい。
また、上記所定のプログラムを、DVD−ROM、CD−ROM、MO(光磁気ディスク)、フレキシブルディスク、などのコンピュータ読み取り可能な記録媒体に格納して配布するようにしてもよい。この場合、その記録媒体に記録された所定のプログラムを情報処理装置(または画像形成装置)がインストールした後、この所定のプログラムをASIC(あるいはCPU)が実行するようにする。この所定のプログラムのインストール先としては、RAM等のメモリやハードディスクなどの記憶装置がある。そして、情報処理装置(または画像形成装置)は、必要に応じてこの記憶装置に記憶した所定のプログラムを主記憶装置にローディングして実行する。
さらには、情報処理装置(または画像形成装置)を通信回線(例えばインターネット)を介してサーバ装置あるいはホストコンピュータと接続するようにし、当該情報処理装置(または画像形成装置)が、サーバ装置あるいはホストコンピュータから上記所定のプログラムをダウンロードした後、この所定のプログラムを実行するようにしてもよい。この場合、この所定のプログラムのダウンロード先としては、RAM等のメモリやハードディスクなどの記憶装置(記録媒体)がある。そして、当該情報処理装置(または画像形成装置)が、必要に応じてこの記憶装置に記憶された上記所定のプログラムを主記憶装置にローディングして実行するようにする。