(57)【要約】【課題】実機とシミュレータとを動的に切り替え、又は、コア間の事象を同期させてマルチコアのデータ処理装置をシミュレートできるデータ処理装置等を提供すること。【解決手段】命令の実行に伴う、入出力情報、実行時間情報又は実行内容情報等の事象情報を、所定の時刻を基準にした時刻情報とともに記録する実行ログ記録手段２３と、検証情報を取得する範囲を実行ログに登録する範囲登録手段２５と、実行ログ記憶手段に記憶された実行ログを参照して、実行中のプログラムが、範囲の事象に到達したことを検出する範囲検出手段２９と、範囲の事象に到達したことが検出された場合、検証情報の取得を開始させる実行・検証切り替え手段２７と、を有し、範囲の検証情報の取得が完了すると、実行・検証切り替え手段が、検証情報の取得を終了させ、完了時の事象から再度、プログラムを実行する、ことを特徴とする。【選択図】図１
2010102372.tif 000002
【特許請求の範囲】
【請求項１】
命令及びデータを規定するプログラムをメモリから読み出してオペレーティングシステム上で実行し、ソフトウェア又はハードウェアの状態を検証するための検証情報を出力するデータ処理装置であって、
前記命令の実行に伴う、入出力情報、実行時間情報又は実行内容情報等の事象情報を、所定の時刻を基準にした時刻情報とともに記録する実行ログ記録手段と、
前記検証情報を取得する時間的な範囲を前記実行ログに登録する範囲登録手段と、
前記実行ログ記憶手段に記憶された前記実行ログを参照して、実行中の前記プログラムが、前記範囲の事象に到達したことを検出する範囲検出手段と、
前記範囲の事象に到達したことが検出された場合、前記検証情報の取得を開始させる実行・検証切り替え手段と、を有し、
前記範囲の前記検証情報の取得が完了すると、前記実行・検証切り替え手段は、前記検証情報の取得を終了させ、完了時の事象から再度、前記プログラムを実行させる、
ことを特徴とするデータ処理装置。
【請求項２】
複数のＣＰＵにより複数のオペレーティングシステムを稼動させるか、又は、複数のＣＰＵにより１つのオペレーティングシステムを稼動させ、
前記実行ログ記録手段は、前記ＣＰＵ毎に前記事象情報を記録し、
前記範囲検出手段は、それぞれの前記ＣＰＵが同じ時刻の前記事象情報の事象に到達したことを待って、前記範囲の事象に到達したことを検出する、
ことを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記実行・検証切り替え手段が、前記検証情報の取得を開始させた場合、
全ての前記ＣＰＵが同じ時刻情報の事象に到達するまで、すでに該事象に到達した前記ＣＰＵを待機させ、全ての前記ＣＰＵが同じ事象に到達したら、次の事象へ向けた処理を許可する同期手段、を有する、
ことを特徴とする請求項２記載のデータ処理装置。
【請求項４】
定期的又は前記事象情報に基づき、前記ソフトウェア及び前記ハードウェアの状態を再現する再現情報を前記時刻情報とともに記録する再現情報記録手段と、
前記範囲よりも時間的に手前かつ最寄りの前記再現情報を読み出し、前記ソフトウェア及び前記ハードウェアの状態を再現する再現手段と、を有し、
前記再現手段が再現した状態から、前記範囲検出手段は前記範囲の事象に到達したことを検出する、
ことを特徴とする請求項１〜３いずれか１項記載のデータ処理装置。
【請求項５】
前記事象情報を変更し、又は、前記実行ログに新たな前記事象情報を追加する実行ログ編集手段を有する、
ことを特徴とする請求項１〜３いずれか１項記載のデータ処理装置。
【請求項６】
メモリに記憶された命令及びデータを規定するプログラムを実行するデータ処理装置と、前記データ処理装置のハードウェア及びソフトウェアの疑似環境を生成し、前記プログラムを実行して、前記ソフトウェア又は前記ハードウェアの状態を検証するための検証情報を出力するシミュレータと、を有する検証システムであって、
前記データ処理装置は、
前記命令の実行に伴う、入出力情報、時間情報又は実行内容情報等の事象情報を、所定の時刻を基準にした時刻情報とともに記録する実行ログ記録手段と、
前記実行ログを前記シミュレータに送信する第１の送信手段と、
前記検証情報を取得する範囲を前記実行ログに登録する範囲登録手段と、
前記実行ログ記憶手段に記憶された前記実行ログを参照して、実行中の前記プログラムが、前記範囲の事象に到達したことを検出する範囲検出手段と、
前記範囲検出手段が前記範囲の事象に到達したことを検出した場合、前記ソフトウェア及び前記ハードウェアの状態を再現するためのデータ処理装置情報を前記シミュレータに送信する第２の送信手段と、を有し、  
前記シミュレータは、
前記データ処理装置情報に基づき、前記ソフトウェア及び前記ハードウェアの状態を再現する再現手段、を有し、
前記再現手段が再現した状態から、前記検証情報の取得を開始し、前記範囲の前記検証情報の取得が完了すると、前記ソフトウェア及び前記ハードウェアの状態を再現するためのシミュレータ情報を前記データ処理装置に送信する、
ことを特徴とする検証システム。
【請求項７】
命令及びデータを規定するプログラムをメモリから読み出して実行するデータ処理装置の、ソフトウェア又はハードウェアの状態の検証情報を出力するデータ処理装置検証方法であって、
実行ログ記録手段が、前記命令の実行に伴う、入出力情報、実行時間情報又は実行内容情報等の事象情報を、所定の時刻を基準にした時刻情報と共に、時系列に記録した実行ログを、記憶手段に記録するステップと、
範囲登録手段が、前記検証情報を取得する範囲を前記実行ログに登録するステップと、
範囲検出手段が、前記実行ログ記憶手段に記憶された前記実行ログを参照して、実行中の前記プログラムが、前記範囲の事象に到達したことを検出するステップと、
前記範囲の事象に到達したことが検出された場合、実行・検証切り替え手段が、前記検証情報の取得を開始させるステップと、
前記範囲の前記検証情報の取得が完了すると、前記実行・検証切り替え手段が、前記検証情報の取得を終了させ、完了時の事象から再度、前記プログラムを実行させるステップ、
有することを特徴とするデータ処理装置検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア又はハードウェアの状態を検証するための検証情報を出力するデータ処理装置、検証システム及びデータ処理装置検証方法に関する。
【背景技術】
【０００２】
プログラムを実行したりデバイス等を含むシステムを制御するデータ処理装置に関し、プログラムやシステムの性能を解析し論理不良を検証するため、同じ環境をシミュレータにより再現する手法が用いられることがある。このシミュレータは例えばデータ処理装置（以下、実機という）の環境を再現し、また例えば処理しうる全ての分岐やロジックを処理するように設計されているが、実行環境の再現に資源が利用されたり、開発中の実機に比べ低速な場合が多く、実機とは比較にならないほどの時間を要する。
【０００３】
この点について、マシンサイクル単位で実機の命令をシミュレーションするシミュレータにおいて、命令のスケジューリングに費やす時間を短縮する技術が提案されている（例えば、特許文献１参照。）。特許文献１には、一連の命令からループを検出し、ループが検出された状態における対象命令列を登録しておき、ループ周回毎に今回の実行命令と登録された命令を比較し一致した場合にはその命令をスキップする命令スケジュールのシミュレーション方法が記載されている。したがって、ループ周回時の状態が同じであれば命令をスケジュールしないのでシミュレーションに要する時間を短縮することができる。
【０００４】
ところで、実機では、入出力、コア間通信、システムコール、割込み等の種々の事象が生じるが、一般に実機は、実行速度や各種デバイスの監視機能の制約からこの事象の発生タイミングを調整したり制御することはできない。これに対し、シミュレータでは所定のタイミングで事象を発生させることができるので、シミュレータは実機と同じタイミングで事象が生じるようタイミングを調整することができる。しかし、シミュレータは、実機と環境や実行速度が大きく異なるので、事象の発生タイミングを変更することができない。
【０００５】
この点について、指定された動作点における実機の再現情報を採取して、シミュレータに提供する技術が提案されている（例えば、特許文献２参照。）。特許文献２には、実機により論理不良が検出された場合、その直前で実機を停止させた時の再現情報をシミュレータに供給する実機の論理試験方法が記載されている。したがって、事象の発生タイミングについては実機により取得し、論理不良の原因についてはシミュレータで時間をかけて解析することができる。
【特許文献１】特開２００４-７８５９９号公報
【特許文献２】特開昭６２−２１１７３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、シミュレータによる解析の後は、実機で発生した事象の内容及び時刻が大きくずれているため、一度、シミュレータに移行すると実機に戻ってのプログラムの再開が困難であるという問題がある。すなわち、特許文献２に記載された論理試験方法では、実機とシミュレータを動的に切り替えることができず、論理不良を解消した後、再度、プログラムを最初から実行しなければならないという問題がある。
【０００７】
ところで、一つのＩＣに複数のＣＰＵコアが搭載されるマルチコア化されたデータ処理装置では、各コアが異なるＯＳを実行したり、各コア毎に異なる事象が発生しうるので、実機がマルチコアであると、その事象をシミュレータで再現することがコア数の増加に伴い累乗的に難しくなる。従来、このマルチコアの実機に対し、コア間の事象まで同期させてシミュレーションする技術は提案されていない。
【０００８】
本発明は、上記課題に鑑み、実機とシミュレータとを動的に切り替えることができるデータ処理装置、検証システム及びデータ処理装置検証方法を提供することを目的とする。また、コア間の事象を同期させてマルチコアのデータ処理装置をシミュレートできるデータ処理装置、検証システム及びデータ処理装置検証方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題に鑑み、本発明は、命令及びデータを規定するプログラムＡＰをメモリから読み出してオペレーティングシステム上で実行し、ソフトウェア又はハードウェアの状態を検証するための検証情報を出力するデータ処理装置であって、命令の実行に伴う、入出力情報、実行時間情報又は実行内容情報等の事象情報を、所定の時刻を基準にした時刻情報とともに記録する実行ログ記録手段と、検証情報を取得する範囲を実行ログに登録する範囲登録手段（例えば、再現区間登録部２５）と、実行ログ記憶手段に記憶された実行ログを参照して、実行中のプログラムが、範囲の事象に到達したことを検出する範囲検出手段（例えば、再現区間検出部２９）と、範囲の事象に到達したことが検出された場合、検証情報の取得を開始させる実行・検証切り替え手段（例えば、モード切替部２７）と、を有し、範囲の検証情報の取得が完了すると、実行・検証切り替え手段が、検証情報の取得を終了させ、完了時の事象から再度、プログラムを実行する、ことを特徴とする。
【００１０】
本発明によれば、再現区間までは実機モードで実行し、再現区間はシミュレーションモードで実行するので、実機とシミュレータを動的に切り替えることができる。
【００１１】
また、本発明の一形態において、複数のＣＰＵにより複数のＯＳを稼動するか、又は、複数のＣＰＵにより１つのＯＳが稼動し、実行ログ記録手段は、ＣＰＵ毎に事象情報を記録し、範囲検出手段は、それぞれのＣＰＵが同じ時刻の事象情報の事象に到達したことを待って、範囲又はその手前に到達したことを検出する、ことを特徴とする。
【００１２】
本発明によれば、各ＣＰＵが同じ時刻の事象情報の事象に到達するまで待機するので、コア間の事象の同期をとって、シミュレーションモードに切り替えることができる。
【発明の効果】
【００１３】
実機とシミュレータとを動的に切り替えることができるデータ処理装置、検証システム及びデータ処理装置検証方法を提供することができる。コア間の事象を同期させてマルチコアのデータ処理装置をシミュレートできるデータ処理装置、検証システム及びデータ処理装置検証方法を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を実施するための最良の形態について、図面を参照しながら実施例を挙げて説明する。
【００１５】
図１は、本実施形態のデータ処理装置１００の検証手順を概念的に説明する図である。データ処理装置１００は、一台でコア１〜コアｎ（ｎ≧２）を有するいわゆるマルチコアシステム又はマルチＣＰＵ（以下、単にマルチコアシステム）と称される、ＣＰＵコア又はＣＰＵを複数備えた例えばノイマン型のコンピュータである。各コアはＯＳ_Ａ〜ＯＳ_Ｘを実行し（各コアが実行するＯＳは固定でない）、ＯＳ上では種々のアプリケーション（以下、ＡＰという）１〜ｎが実行される。ここで、データ処理装置１００には、Ｉ／Ｏデバイス（デバイスドライバ）、特定のハードウェア（画像認識用のＩＣ）等を含まれるので、本実施形態ではハードウェアを含めコア、ＯＳ、ＡＰ等をシステムと称する場合がある。
【００１６】
＜第１フェーズ＞
（１）データ処理装置１００は、各コア及び各ＯＳ毎に処理される事象を時刻に対応づけて時系列に記録する（以下、記録される情報を実行ログという）。実行ログは後述するように編集が可能である。
【００１７】
ここで、事象とは、実行するＡＰ及びＯＳ、さらにＡＰであればイベント、操作情報の入出力、データの入出力、実行する関数、エラー情報、システムコール等が事象となり、ＯＳであれば、実行するプロセス、コア間通信、データの入出力、利用したデバイスドライバ、ＡＰに割り当てたメモリ等が事象となる。そして、さらに例えばＡＰの「実行する関数」という事象は、実行する命令、データ等が事象となり、例えばＯＳの「コア間通信」という事象は、通信発行時刻、通信終了時刻及び通信結果等が事象となる。したがって、事象は階層的に管理することができ、実行ログにどの階層の事象までを含むかは設定できるようになっている。例えば、ユーザが階層をレベルで設定すると、そのレベルに対応づけられた階層の事象までを実行ログに記録したり、又は、所定の事象だけは必ず記録するように設定することができる。
【００１８】
また、本実施形態では、データ処理装置１００が実機モードとシミュレーションモードを切り替える態様と、データ処理装置１００とは別にシミュレータ（別のコンピュータ）が用意されている態様とがある。シミュレーションモードのデータ処理装置１００又はシミュレータはソフトウェア又はハードウェアの状態を検証するための検証情報を出力する。
【００１９】
データ処理装置１００は起動時から時間の経過に応じて、ＯＳやＡＰを実行していくものであるため、起動時刻を基準に時系列に事象を記録していく。したがって、実機モードとシミュレーションモードとで実行速度の違いがあっても、また、データ処理装置とシミュレータとで実行速度に違いがあっても、時間が経過すればいずれは同様な事象が発生する。
【００２０】
（２）そこで、検証したい事象をユーザが実行ログに登録できるようになっている。検証したい１つの事象のみを登録してもよいが、時系列の事象の範囲（以下、再現区間という）を、例えば開始時刻と終了時刻を指定することで、検証時に再現したい事象を含むように検証対象の事象を登録することができる。再現したい事象を指定して、その前後の所定時間を自動的に登録するようにしてもよい。
【００２１】
（３）ところで、検証時にこの再現区間を再現する場合、原理的には再現区間の開始時刻までデータ処理装置１００を作動させなければならないが、実行ログの全てをシミュレーションモード又はシミュレータで実行する場合、再現区間の事象に到達するまで長時間の経過が必要となることがあるので、定期的又は不定期にチェックポイント設け、スナップショット情報を記憶しておくことが好適となる。スナップショット情報は、実機の状態を再現するための情報をいい、例えばメモリの内容、ＰＳＷ(processor  status  word)、ＰＣ（Program  Counter）等である。このスナップショット情報を記憶しておけば、再現区間の直前のチェックポイントから事象を辿ってＡＰを実行すればよいことになる。
【００２２】
＜第２フェーズ＞
データ処理装置１００が起動すると時間の経過により再現区間まで到達する。
【００２３】
（４）この再現区間の検出時、後述するようにマルチコアシステムに特有の現象として、実機と同じタイミングで各コアが同じ事象に到達するとは限らないという現象が起こる。このため、検証時は、指定した再現区間に最も早く到達したコアが、他のコアが指定した再現区間に到達するまで待ち、全ての各コアが指定された再現区間に到達したら、以降は各コアが同期をとりながらＡＰを実行することが好適となる。
【００２４】
（５）また、スナップショット情報が記憶されている場合は、再現区間の手前のチェックポイントまでは、スナップショット情報により到達することができる。
【００２５】
（６）データ処理装置１００が実機モードとシミュレーションモードを切り替える場合、再現区間が検出されると、データ処理装置１００はシミュレーションモードに切り替えられる。シミュレーションモードでは、周知の、システムの機能検証、性能測定、評価、障害調査（以下、単に検証という）を行い、検証情報を出力する。別のコンピュータ（シミュレータ）で検証される場合、シミュレータの疑似環境で検証される。
【００２６】
（７）再現区間が終了すると、データ処理装置１００は実機モードに戻る。再現区間では各コアの同期が取れているので、全コアが同期して実機モードに戻る。シミュレータが検証した場合、データ処理装置１００に処理が移行する。以降は、データ処理装置１００は実機として、再現区間以降の処理を実行し、また、再現区間があれば、同様にシミュレーションモードに切り替わったりシミュレータに処理が移行し、検証を実行する。
【００２７】
したがって、本実施形態のデータ処理装置１００は実機モードとシミュレーションモード、又は、データ処理装置１００とシミュレータを動的に切り替えながら効率的に検証することができる。また、マルチコアシステムに対し各コア間の事象を同期させるので、マルチコアシステムのデータ処理装置１００であっても正確にデータ処理装置１００の事象を再現することができる。
【実施例１】
【００２８】
本実施例では、シミュレーションモードと実機モードに切り替わり、シミュレーションモードにおいてシステムを検証するデータ処理装置１００について説明する。
【００２９】
図２は、データ処理装置１００の機能ブロック図の一例を示す。各ブロックは例えばＣＰＵが検証プログラム４０を実行するかＡＳＩＣ（Application  Specific  Integrated  Circuit）等のハードウェアにより実現される。
【００３０】
検証プログラム４０で実現する場合、各機能はＡＰ又はＯＳの一態様として提供され、検証プログラム４０は所定のコアが実行する所定のＯＳ上で実行される。すなわち、検証プログラム４０を実行するコア及びＯＳを限定する必要はない。また、検証プログラム４０を実行するコア及びＯＳが、異なるＯＳを実行するコアの事象を取得するため、検証プログラム４０はコア間通信及びＯＳ間通信が可能となっている。検証プログラム４０は、データ処理装置１００の出荷時にハードディスクドライブやフラッシュメモリ（ハードディスク等という）に記憶されているか、又は、所定のサーバからダウンロードされる。
【００３１】
データ処理装置１００は実行ログを記憶するため事象記録部２３を有し、事象記録部２３は実行ログ記憶部２０に事象を記録していく。また、どの程度詳細な事象を記録するかを設定するため、階層指定部２１を有する。階層指定部２１は、例えば、ユーザインターフェイスとなる表示装置に選択可能な階層を表示し、ユーザが選択した階層に応じて記録する事象を事象記録部２３に指示する。また、このような階層による指定の他に、ユーザは個別に記録する事象を設定できる。
【００３２】
図３は実行ログ記憶部２０に記録される実行ログの一例を示す。実行ログは、各コアに対応づけて、ＯＳ及びＡＰ毎に記録される。また、システムの起動時（例えば、スイッチオン、通電、起動開始操作等）から計測した時刻に対応づけて、時系列に記録される。定期的、又は、エラーのような所定の事象が発生するとその時刻の各コアの事象が記録される。
【００３３】
実行ログを記録する時刻は各コアに共通であるので、同じ時刻に各コアの事象が記録される。記録までの遅延等を考慮すると厳密に同じ時刻（例えば、１００分の１〜１００分の１０秒程度の精度）に記録されるとは限らないが、コア間に生じうる時刻の違いは既知であるので、誤差として扱うことができる。
【００３４】
また、再現情報記録部２４は、スナップショップ情報をスナップショット情報記憶部３０に記録する。スナップショット情報により、いわゆるレジューム、サスペンド、ハイバネーションといった機能と同様に、システムの状況を再現することができる。
【００３５】
期間指定部２２は、表示装置に期間（例えば、○○秒、○○分等）を入力する欄を表示するので、ユーザは所望の間隔を入力することができる。再現情報記録部２４は入力された期間毎に定期的に、かつ、所定の事象をトリガーにスナップショット情報を記録する。スナップショット情報は、実行ログと同様に時刻と共に記録される。スナップショット情報の時刻は実行ログの時刻と同様、システムの起動時を基準に計測された時刻である。
【００３６】
再現区間登録部２５は、表示装置に時刻又は事象を入力する欄を表示し、ユーザにより入力された時刻又は事象に基づき実行ログに再現区間を登録する。図３では、「再現区間  始点」から「再現区間  終点」がユーザの指定した再現区間である。なお、再現区間は１つのログに複数あってもよい。データ処理装置１００は再現区間の開始時刻から再現区間の終了時刻までシミュレーションモードとなり、それ以外では実機モードとなる。
【００３７】
そして、実行ログ編集部２６は、ユーザによる実行ログの編集を可能とする。編集には２つの方法があり、その１つは実行ログ記録部が記録した実行ログを変更する方法である。例えば、複数のコアに同時刻に割込みなどの事象を発生させたい場合があるが、実機モードではかかる状況を生じさせることが困難な場合に、当該事象の時刻を各コアで同期させるため、時刻情報を変更することができる。もう１つの方法は、新たに事象を加える方法である。図３に示すように実行ログは時系列に記録されるので、前後の時刻の間に新たに事象を加えることができる。
【００３８】
実行ログ編集部２６は例えば実行ログを表示装置に表示し、ユーザによる係る編集の入力を受け付け実行ログ記憶部２０に記録する。そして、再現区間登録部２５がこの事象を再現区間に含むように指定すれば、実機モードでは実現困難な事象を検証することができる。
【００３９】
モード切替部２７は、シミュレーションモードと実機モードを切り替える。切り替え方には、再現区間の開始時刻と終了時刻とに応じて自動に切り替える方法とユーザの操作による方法とがある。本実施例では主に再現区間に応じて自動に切り替わる態様とすることで、実機モードとシミュレーションモードとを動的に切り替えることが可能となる。
【００４０】
スナップショット情報が記憶されている場合と記憶されていない場合があるが、どちらの場合でも再現区間の検出は同様である。再現区間検出部２９は、ＡＰを実行しながら各事象を１つずつ実行ログ記憶部２０の事象と照らし合わせ、システムが再現区間に設定された事象に到達すると、モード切替部２７に通知する。これにより、モード切替部２７はシステムをシミュレーションモードに切り替える。
【００４１】
ここで、あるコアでは再現区間に設定された事象に到達しても、他のコアでは同じ時刻に同じ事象に到達しない場合がある。これは、例えばハードディスクでは磁気ヘッドでデータにアクセスするが実機ヘッドの位置までは再現することが困難なので、ハードディスクへのアクセスの度に時刻がずれるからである。また、例えば、ＣＳＭＡ（Carrier  Sense  Multiple  Access）のように一方が通信していると場合、他方からの通信を受け付けない場合、通信の衝突が生じればその後の処理の時刻がずれることになる。このような処理は各コアが独立に実行するので、コア間における事象の時間的なずれは避けられない。
【００４２】
そこで、本実施例では再現区間検出部２９は、再現区間に設定された事象に最も早く到達したコアを検出して、他のコアの全てが再現区間に設定された事象に到達するまで、各コアを待機させる。そして、各コアが再現区間に設定された事象に到達するとシミュレーションモードに切り替わる。
【００４３】
また、スナップショット情報を利用して再現区間に到達する場合、２つの方法がある。１つは、再現区間検出部２９が再現区間を検出すると、システム再現部３２は再現区間の開始時刻よりも時間的に前でかつ最も近いスナップショット情報を読み出しシステムに設定する方法である。また２つめは、予め、再現区間検出部２９が再現区間の開始時刻よりも時間的に前でかつ最も近いチェックポイントを検出しておき、事象がチェックポイントまで到達したら、システム再現部３２がスナップショット情報を読み出しシステムに設定する方法である。このように、スナップショット情報を利用することで、例えば、コア間の事象と時刻のずれを低減でき、再現区間の事象の再現が容易になる。
【００４４】
また、動的に切り替えるのでなく、データ処理装置１００は再現区間のみ（シミュレーションモードのみ）でＡＰを実行することができる。この場合、再現区間検出部２９は実行ログ記憶部２０から再現区間の開示時刻を読み出す。そして、システム再現部３２はスナップショット情報記憶部３０から読み出した開始時刻よりも時間的に前でかつ最も近いスナップショット情報を読み出しシステムに設定する。これにより、早期に再現区間に到達するので、検証時間を短縮することができる。
【００４５】
また、逆に、システムの起動時からＡＰの全てをシミュレーションモードで実行してもよい。この場合、実行ログに再現区間が設定されていても、再現区間及び再現区間以外とが区別されずに検証され、再現区間が実行ログに設定されていなくてもシステムが検証される。すなわち、モード切替部２７はシステムをシミュレーションモードに固定する。
【００４６】
同期部３１は再現区間検出部２９と同様に、シミュレーションモードにおいて全コアの同期をとる。すなわち、各事象毎に全てのコアが到達するまで、すでにその事象に到達したコアを待機させ、全てのコアが同じ事象に到達したらシステム検証部２８に処理の再開を許可する。したがって、本実施例のデータ処理装置１００は、マルチコアシステムの各コアの事象を正確に再現したシステムの検証が可能となる。
【００４７】
シミュレーションモードではシステム検証部２８は、実機モードと同じＯＳやＡＰを実行しながら、各コア毎に、システム（ソフトウェア又はハードウェア）の状態を検証するための検証情報、例えば、実行命令、エラーコード、ＣＰＵ負荷率、命令の実行速度、等を記録する。
【００４８】
スナップショット情報が記憶されているか否かに関わらず、再現区間の終了時刻までシステムの事象が到達すると、再現区間検出部２９はモード切替部２７に通知するので、モード切替部２７は実機モードに切り替える。そして、再現区間の検証が終了すると、検査結果出力部は検証情報を表示装置に表示したり、ハードディスク等に記憶する。
【００４９】
図４は、データ処理装置１００が実行ログとスナップショット情報を記憶する手順を示すフローチャート図である。図４のフローチャート図は、例えばシステムの起動によりスタートする。なお、予め期間指定部２２からスナップショット情報を記憶する期間が指定されており、階層指定部２１から記憶する事象の階層が指定されている。また、事象は定期的及び所定の事象を検出して不定期に記憶するよう設定されている。
【００５０】
システムが起動すると（Ｓ１０）、起動時刻を基準に各コアはＯＳやＡＰを実行していく。そして、再現情報記録部２４はスナップショット情報を記憶する期間を、例えば期間指定部２２が期間情報を記憶したハードディスク等から読み出し、事象記録部２３は事象を記録するタイミング及び事象の階層をハードディスク等から読み出す。
【００５１】
そして、事象記録部２３は事象を記録するか否かを時刻又は発生した事象に基づき判定する（Ｓ３０）。事象を記録する場合（Ｓ３０のＹｅｓ）、事象記録部２３は指定された階層に応じて記憶するべき事象を取得し、各コア毎に、時刻情報と共に実行ログ記憶部２０に記録する（Ｓ４０）。
【００５２】
事象を記録しない場合（Ｓ３０のＮｏ）、再現情報記録部２４は、期間情報に基づきスナップショット情報を記録する時刻となったか否かを判定する（Ｓ５０）。スナップショット情報を記録する時刻となった場合（Ｓ５０のＹｅｓ）、再現情報記録部２４はスナップショット情報をスナップショット情報記憶部３０に記録する（Ｓ６０）。なお、スナップショット情報を記録する事象が発生した場合は、不定期にスナップショット情報が記憶される。
【００５３】
データ処理装置１００は以上の処理を所定時間、ユーザが停止するまで、又は、予め定められた時間が経過するまで繰り返す。
【００５４】
図４の処理が終了し、実行ログ記憶部２０に実行ログが記録され、スナップショット情報がスナップショット情報記憶部３０に記録されると、例えば、ユーザの操作により再現区間登録部２５が再現区間を指定する。また、所定のエラーのような事象を検出して、再現区間登録部２５が自動的に再現区間を指定してもよい。この場合、再現区間の終了時刻は開始時刻から所定時間経過後又は特定の事象に決定される。
【００５５】
また、ユーザの操作により実行ログ編集部２６が実行ログを編集してもよい。これにより、実機では生じにくい事象（コア間に同時に割込みを発生させる、臨界値の設定、生じにくい分岐の発生等）を検証することが可能となる。
【００５６】
図５は、データ処理装置１００が動的に実機モードとシミュレーションモードとを切り替えシステムを検証する手順を示すフローチャート図である。図５のフローチャート図は、例えばユーザがシステムの検証操作を入力するとスタートする。なお、図５では再現区間が設定されており、再現区間のみを検証する手順を示す。再現区間以外では実機モードとして作動するので、フローチャート図のスタート時、データ処理装置１００は実機モードで作動する。
【００５７】
まず、システムが起動する（Ｓ１０）。そして、再現区間検出部２９は、実行ログ記憶部２０を参照して再現区間の開始時刻を読み出す（Ｓ１１０）。また、再現区間に早期に到達するため、システム再現部３２はスナップショット情報が記憶されているか否かを判定する（Ｓ１２０）。スナップショット情報が記憶されている場合（Ｓ１２０のＹｅｓ）、システム再現部３２は再現区間の開始時刻よりも前で最も近い時刻のスナップショット情報を読み出す（Ｓ１３０）。そして、スナップショット情報によりメモリ及び各コアの状態を再現し、システムの処理を再開する（Ｓ１４０）。
【００５８】
スナップショット情報が記憶されていない場合、システムの起動時から再現区間の開始時刻まで実機モードで実行することになるが、実機モードで実行できるので非現実的な時間がかかることはない。
【００５９】
ついで、再現区間検出部２９はいずれかのコアが再現区間の事象に到達したか否かを判定する（Ｓ１５０）。すなわち、複数のコアのうち最も早く再現区間の事象に到達したコアを検出する。いずれかのコアが再現区間の事象に到達すると（Ｓ１５０のＹｅｓ）、再現区間検出部２９は他の全てのコアが同じ事象に到達するまで、先に事象に到達したコアを待機させる（Ｓ１６０）。再現区間の各コアの事象は同じ時刻に記憶されているので、この「同じ事象」とは「同じ時刻」のことを示す。
【００６０】
他の全てのコアが同じ事象に到達すると（Ｓ１７０のＹｅｓ）、モード切替部２７は実機モードからシミュレーションモードに切り替える（Ｓ１８０）。これにより、システム検証部２８はシステムの検証を開始する（Ｓ１９０）。同期部３１は全コアの同期をとりながら（実行ログを参照して、全てのコアが同じ時刻の事象に到達したら、次の事象に向けてシステムの再開を許可する）、実機モードと同じＯＳやＡＰを実行して、機能検証、性能検証、障害調査等を実行する。このように、コア間で同期をとることで、例えばコア間通信のような事象に対し実機モードと同じ事象を精度よく再現することができる。
【００６１】
シミュレーションモードの間、再現区間検出部２９は再現区間の終了時刻に到達したか否かを判定し（Ｓ２００）、各コアが再現区間の終了時刻に到達すると（Ｓ２００のＹｅｓ）、検証結果出力部３３は検証情報を出力する（Ｓ２１０）。また、モード切替部２７は再現区間の終了を通知され、シミュレーションモードから実機モードに切り替える（Ｓ２２０）。
【００６２】
以降は、ステップ１３０から処理を繰り返し、データ処理装置１００は再現区間ではシミュレーションモードに切り替わり、再現区間が終了すると実機モードに切り替わる。したがって、モードが動的に切り替わりながらシステムを検証することができる。
【００６３】
以上説明したように、本実施例のデータ処理装置１００は、シミュレーションモードと実機モードを動的に切り替えることで、実機モードによる事象の発生タイミングに従い、以降はシミュレーションモードで検証することができるので、実機モードとシミュレーションモードの利点を併せ持った検証が可能となる。また、コア間の事象を同期させることで、マルチコアシステムでもシステムの正確な検証が可能となる。
【実施例２】
【００６４】
本実施例では、データ処理装置１００と別体に設けられたシミュレータ２００を用いた検証について説明する。図６は、データ処理装置１００とシミュレータ２００とを有する検証システム３００を模式的に示す図である。
【００６５】
シミュレータ２００はコンピュータである。シミュレータ２００はデータ処理装置１００と同一のハードウェアを備えることが好ましいが、現実には困難な場合が多くいわゆるエミュレータにより、データ処理装置１００のコア及びＯＳを再現し、疑似環境を実現している。したがって、シミュレータ２００によるＡＰの実行は速度が低下することが多いが、データ処理装置１００で動作するＡＰを、データ処理装置１００と同じ疑似環境上で実行することができる。データ処理装置１００とシミュレータ２００は例えばネットワークで接続されており、通信可能となっている。
【００６６】
機能ブロック図は図２と同様であるが、このうち、階層指定部２１、期間指定部２２、事象記録部２３及び再現情報記録部２４、再現区間検出部２９はデータ処理装置１００が有し、システム検証部２８、再現区間検出部２９、システム再現部３２、同期部３１及び検証結果出力部３３、はシミュレータ２００が有する。再現区間登録部２５及び実行ログ編集部２６は、データ処理装置１００及びシミュレータ２００のいずれ有していてもよい。
【００６７】
データ処理装置１００とシミュレータ２００の両方が再現区間検出部２９を有するのは、データ処理装置１００は実施例１と同様に再現区間を検出する必要があり、シミュレータ２００はチェックポイントから再現区間を検出する場合があるためである。また、実行ログ記憶部２０とスナップショット情報記憶部３０には、データ処理装置１００とシミュレータ２００の両者がアクセスできるようになっている。
【００６８】
データ処理装置１００からシミュレータ２００への切り替えには２つの方法がある。１つは、データ処理装置１００が実機として処理を実行し再現区間に到達すると、実機の状態を再現するための実機情報をシミュレータ２００に送信する方法である。この実機情報はスナップショット情報と同等の情報であるので、シミュレータ２００はシステムの状態を再現できる。
【００６９】
もう１つは、スナップショット情報を用いる方法である。データ処理装置１００又はシミュレータ２００が再現区間を取得すれば、シミュレータ２００は再現区間よりも時間的に前でかつ最も近いスナップショット情報を読み出しシステムに設定することができる。
【００７０】
再現区間までデータ処理装置１００がＡＰを実行することを考慮すると、チェックポイントから再現区間の開始時刻までは、データ処理装置１００とシミュレータ２００で同じ処理を重複して実行することになる。これを回避するため、データ処理装置１００が再現区間の手前のチェックポイントまで実行したらシミュレータ２００に通知し、シミュレータ２００がスナップショット情報を読み出しシステムに設定してもよい。
【００７１】
なお、シミュレータ２００が再現区間の終了時刻まで実行したら、シミュレータ２００はスナップショット情報と同等のシミュレータ情報をデータ処理装置１００に送信する。これにより、再現区間以降の処理をデータ処理装置１００が実行できる。
【００７２】
図７は、データ処理装置１００とシミュレータ２００が動的に切り替わって再現区間を検証する手順を示すシーケンス図である。図７のシーケンス図は、スナップショット情報が記憶されていない場合の手順を示す。
【００７３】
まず、データ処理装置１００が起動する（Ｓ１０）。そして、再現区間検出部２９は、実行ログ記憶部２０を参照して再現区間の開始時刻を読み出す（Ｓ１１０）。ついで、システムの起動時から再現区間の開始時刻までデータ処理装置１００はＡＰの各処理を実行していく。
【００７４】
そして、再現区間検出部２９はいずれかのコアが再現区間の事象に到達したか否かを判定する（Ｓ１５０）。すなわち、複数のコアのうち最も早く再現区間の事象に到達したコアを検出する。いずれかのコアが再現区間の事象に到達すると（Ｓ１５０のＹｅｓ）、再現区間検出部２９は他の全てのコアが同じ事象に到達するまで、先に事象に到達したコアを待機させる（Ｓ１６０）。
【００７５】
他の全てのコアが同じ事象に到達すると、データ処理装置１００は実機情報をシミュレータ２００に送信する（Ｓ２１０）。この実機情報はスナップショット情報と同等なので再現情報記録部２４が実機情報をシステムから取得する。
【００７６】
シミュレータ２００は実機情報を受信し（Ｓ３１０）、実機情報に基づき疑似環境上でメモリ及び各コアの状態を再現し、システムの処理を再開する（Ｓ３２０）。
【００７７】
ついで、システム検証部２８はシステムの検証を開始する（Ｓ３３０）。すなわち、同期部３１は全コアの同期をとりながら、疑似環境上で同じＯＳやＡＰを実行して、機能検証、性能検証、障害調査等を実行する。
【００７８】
システムの検証中、再現区間検出部２９は再現区間の終了時刻に到達したか否かを判定し（Ｓ３４０）、各コアが再現区間の終了時刻に到達すると（Ｓ３４０のＹｅｓ）、検証結果出力部３３は検証情報を出力する（Ｓ３５０）。また、シミュレータ２００はシミュレータ情報をデータ処理装置１００に送信する（Ｓ３６０）。
【００７９】
データ処理装置１００がシミュレータ情報を受信すると、データ処理装置１００の処理に移行し、データ処理装置１００はステップＳ１１０からの処理を繰り返す。すなわち、データ処理装置１００は次の再現区間までＡＰを実行し、再現区間になるとシミュレータ２００による検証を実行する。このように、データ処理装置１００とシミュレータ２００が別体であっても、処理を動的に切り替えながらシステムを検証することができる。
【００８０】
本実施例の検証システム３００は、実施例１の効果に加え、専用のシミュレータ２００を用いるので、精度の高い検証情報を取得することができる。
【図面の簡単な説明】
【００８１】
【図１】データ処理装置の検証手順を概念的に説明する図である。
【図２】データ処理装置の機能ブロック図の一例である。
【図３】実行ログ記憶部に記録される実行ログの一例を示す図である。
【図４】データ処理装置が実行ログとスナップショット情報を記憶する手順を示すフローチャート図である。
【図５】データ処理装置が動的に実機モードとシミュレーションモードとを切り替えシステムを検証する手順を示すフローチャート図である。
【図６】データ処理装置とシミュレータとを有する検証システムを模式的に示す図である。
【図７】データ処理装置とシミュレータが動的に切り替わって再現区間を検証する手順を示すシーケンス図である。
【符号の説明】
【００８２】
２０      実行ログ記憶部
２３      事象記録部
２４      再現情報記録部
３０      スナップショット情報記憶部
１００    データ処理装置
２００    シミュレータ
３００    検証システム
【図１】
2010102372.tif 000003
【図２】
2010102372.tif 000004
【図３】
2010102372.tif 000005
【図４】
2010102372.tif 000006
【図５】
2010102372.tif 000007
【図６】
2010102372.tif 000008
【図７】
2010102372.tif 000009