(57)【特許請求の範囲】
【請求項１】
プログラムを実行する情報処理システムであって、
通常時はカウントアップすると共に命令バッファからの命令の終了を契機とした報告を受けるとリセットをするカウンタである命令バッファのリタイヤカウンタを監視し、前記リタイヤカウンタが所定のしきい値を超えたことを検知する手段と、
前記リタイヤカウンタが前記所定のしきい値を超えた時には動作モードを通常モードから安定モードに変更する手段と、
前記安定モードに変更後に新規にコンテキストスイッチが発生した時に前記動作モードを通常モードに戻す手段と、
を備えたことを特徴とする情報処理システム。
【請求項２】
前記リタイヤカウンタが前記所定のしきい値を超えた時には、フェッチＩＣをリタイヤＩＣに更新して前記プログラムを前記リタイヤＩＣから再開させることを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記リタイヤカウンタが前記所定のしきい値を超えた時にはリタイヤされていないがメモリからリプライが戻っているロード命令のデータはメモリに書き戻すことを特徴とする請求項１に記載の情報処理システム。
【請求項４】
前記所定のしきい値は、前記リタイヤカウンタが無限ループ又はリプライが帰ってこないと判断する値であることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理システム。
【請求項５】
前記安定モードに変更後に前記新規にコンテキストスイッチが発生しない場合には、前記命令バッファのリタイヤカウンタを監視し、前記所定のしきい値を超えた時には重障害として前記プログラムを停止することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理システム。
【請求項６】
プログラムを実行する情報処理システムの評価方法であって、
検知手段により、通常時はカウントアップすると共に命令バッファからの命令の終了を契機とした報告を受けるとリセットをするカウンタである命令バッファのリタイヤカウンタを監視し、前記リタイヤカウンタが所定のしきい値を超えたことを検知する工程と、
変更手段により、前記リタイヤカウンタが前記所定のしきい値を超えた時には動作モードを通常モードから安定モードに変更する工程と、
モード戻し手段により、前記安定モードに変更後に新規にコンテキストスイッチが発生した時に前記動作モードを通常モードに戻す工程と、
を含むことを特徴とする情報処理システムの評価方法。
【請求項７】
前記リタイヤカウンタが前記所定のしきい値を超えた時には、フェッチＩＣをリタイヤＩＣに更新して前記プログラムを前記リタイヤＩＣから再開させることを特徴とする請求項６に記載の情報処理システムの評価方法。
【請求項８】
前記リタイヤカウンタが前記所定のしきい値を超えた時にはリタイヤされていないがメモリからリプライが戻っているロード命令のデータはメモリに書き戻すことを特徴とする請求項６に記載の情報処理システムの評価方法。
【請求項９】
前記所定のしきい値は、前記リタイヤカウンタが無限ループ又はリプライが帰ってこないと判断する値であることを特徴とする請求項６乃至８のいずれか１項に記載の情報処理システムの評価方法。
【請求項１０】
前記安定モードに変更後に前記新規にコンテキストスイッチが発生しない場合には、前記命令バッファのリタイヤカウンタを監視し、前記所定のしきい値を超えた時には重障害として前記プログラムを停止することを特徴とする請求項６乃至９のいずれか１項に記載の情報処理システムの評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行する情報処理システム及びその評価方法に関するものである。
【背景技術】
【０００２】
一般に、情報処理システムにおける開発の評価段階では、予想できない問題が発生することがあり、モードを変更しながら評価を行うことが多い。そのため、モードを変更する度にマシンを止めるため作業時間の効率が悪くなる。また、安定モードのみで実施すると、問題があった箇所の処理を過ぎても安定モードのまま動作するため通常の評価が行えなくなることがある。更に、問題の箇所の特定が難しく（どのＩＣ間で起こったか）、通常モードだと無限ループしたＩＣまでで、安定モードだと障害が無く通ってしまうため、解析に時間がかかることがある。
【０００３】
従来の情報処理システムとしては、例えば、特許文献１に計算機プログラムのデバッグを行う方法が記載されている。また、特許文献２にプログラムのバグにより一定の周期でシステム監視タイマーがリセットできない場合には、無限ループに陥ったことを検出することが記載されている。
【０００４】
特許文献３には、トラップ命令により例外を発生させる第一モードと、全ての命令で例外を発生させる第二モードを用いてアドレスや命令等の解析情報を効率よく採取することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−２２２４４７号公報
【特許文献２】特開平０６−２３６２９９号公報
【特許文献３】特開２００５−３０１３８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述のように情報処理システムにおいて評価を行う場合には、プログラムのバグやハードウェアの障害またはバグ等において無限ループやリプライが返ってこないことがあり、その場合にはマシンを停止させてから安定に動作するモードに設定して評価を再開している。このため、評価の中断が多く発生してしまい、評価時間が長くなる問題がある。更に、出荷されたものに対してもハードウェアの間欠障害や新規プログラムのバグ等により無限ループの障害が発生してしまい、運用を中断しなければならないことがある。
【０００７】
特許文献１乃至３には、プログラムのデバッグ処理を行う方法や無限ループを検出する方法等が記載されているが、上述のような課題を解決することに関しては記載されていない。
【０００８】
本発明の目的は、モードを変更してもシステムを停止する必要がなく、システムの評価を効率的に行うことが可能な情報処理システム及びその評価方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の第１の観点によれば、プログラムを実行する情報処理システムであって、通常時はカウントアップすると共に命令バッファからの命令の終了を契機とした報告を受けるとリセットをするカウンタである命令バッファのリタイヤカウンタを監視し、前記リタイヤカウンタが所定のしきい値を超えたことを検知する手段と、前記リタイヤカウンタが前記所定のしきい値を超えた時には動作モードを通常モードから安定モードに変更する手段と、前記安定モードに変更後に新規にコンテキストスイッチが発生した時に前記動作モードを通常モードに戻す手段と、を備えたことを特徴とする情報処理システムが提供される。
また、本発明の第２の観点によれば、プログラムを実行する情報処理システムの評価方法であって、検知手段により、通常時はカウントアップすると共に命令バッファからの命令の終了を契機とした報告を受けるとリセットをするカウンタである命令バッファのリタイヤカウンタを監視し、前記リタイヤカウンタが所定のしきい値を超えたことを検知する工程と、変更手段により、前記リタイヤカウンタが前記所定のしきい値を超えた時には動作モードを通常モードから安定モードに変更する工程と、モード戻し手段により、前記安定モードに変更後に新規にコンテキストスイッチが発生した時に前記動作モードを通常モードに戻す工程と、を含むことを特徴とする情報処理システムの評価方法が提供される。
【発明の効果】
【００１０】
本発明によれば、無限ループの検出後、安定モードでプログラムを実行することにより、プログラムのバグやハードウェア障害等により処理を中断しなくても、評価を継続することが可能となる。また、安定モードになってから新規にコンテキストスイッチが発生した場合には、軽障害の部分のプログラムは正常に処理できたと判断し、通常モードに自動的に戻すことにより、障害の発生した箇所以外は通常のモードで評価を行うことができる。
【００１１】
更に、評価に関しても問題のある箇所のみ安定モードになるのでその他の箇所は通常モードで評価を行うことができる。更に、ＩＣを記録しておくことにより問題箇所の絞込みがしやすくなる。
【図面の簡単な説明】
【００１２】
【図１】本発明に係る情報処理システムの一実施形態を示すブロック図である。
【図２】図１の動作を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
次に、発明を実施するための形態について図面を参照して詳細に説明する。図１は本発明に係る情報処理システムの一実施形態を示すブロック図である。図１において、命令フェッチ１はフェッチＩＣ１７のＩＣ値から命令を持ってくる機能を持つ。命令デコード２は命令のデコードを行い、命令バッファ３はデコードされた命令を登録して命令が完了するまで保持する機能を持つ。
【００１４】
命令実行４は命令バッファ３から発行された命令を実行する。命令完了判定５は実行された命令が終了できるのか再実行かの判定を行う。命令リタイヤ６は命令が完了し、命令バッファ３から命令がリタイヤする機能を持つ。
【００１５】
コンテキストスイッチ７はプログラム実行中に発生したコンテキストスイッチを示す。なお、新規にコンテキストスイッチ７が発生したということはプロセスが終了したことを意味している。動作モード８は命令バッファ３から発行される動作モードであり、安定モードと通常モードがある。
【００１６】
通常、現在のプロセッサでは、性能向上のため命令の実行順序を変えて（アウト・オブ・オーダー）で実行しているのが普通であるが、例えば、これら性能向上策が全て入っているモードを通常モードという。また、安定モードに関しては、その逆で性能向上策を止めたモードをいう。代表的には、命令の実行順序を変えない（イン・オーダー）モードや、命令を１個づつ処理するもの等があるが、これらのモードをまとめて安定モードという。
【００１７】
リプライデータバッファ９はロード命令においてメインメモリから来たデータをそのロード命令がリタイヤするまで保持するバッファである。
【００１８】
リタイヤカウンタ１０はリタイヤ報告１９が来る度にリセットされ、通常はカウントアップを行う。リタイヤが来ない場合、しきい値１１の値を超えることにより無限ループまたはリプライが返ってこない事態が発生したと判断する。即ち、リタイヤカウンタ１０が一定時間更新されない場合には、無限ループまたはリプライが返ってこないものと判断する。しきい値１１はリタイヤカウンタ１０が無限ループまたはリプライが返ってこないと判断する値である。
【００１９】
軽障害判定１２はリタイヤカウンタ１０がしきい値１１を超えて無限ループまたはリプライが返ってこないと判断した場合、軽障害として疑似例外を発生させる機能を持つ。重障害判定１３は軽障害後に安定モードにしたにも拘わらず、リタイヤカウンタ１０においてしきい値１１を超えた場合には、再度、疑似例外を発生させるのではなく、重障害としてプログラムの停止を行う。
【００２０】
フェッチＩＣ１４は命令フェッチにおいてメモリから命令を持ってくるＩＣの値である。リタイヤＩＣ１５は実際に命令が終了して更新されるＩＣである。
【００２１】
軽障害報告１６は軽障害が発生したときに疑似例外処理を始めるときに報告される信号である。この信号により動作モード８の切り替えを行い、リプライデータバッファ９からはリタイヤされていないロードデータがメインメモリに戻され、フェッチＩＣ１４にはリタイヤＩＣ１５の値がセットされる。命令完了報告１７は命令完了判定５において実際に命令が完了したことを報告する。
【００２２】
命令再実行指示１８は命令完了判定５において再実行を行うことを報告する。リタイヤ報告１９は命令バッファ３から命令が終了した後、リタイヤ報告がなされる。その際、リタイヤカウンタ１０のリセットとリタイヤＩＣ１９の更新を行う。メインメモリ２０はリプライデータバッファ９とデータのやり取りを行う。
【００２３】
次に、本実施形態の動作を図２に示すフローチャートを用いて説明する。まず、プログラムを実行する（Ｓ１）。プログラムを実行してからリタイヤカウンタ１０の監視を行い（Ｓ２）、しきい値１１を超えるかどうかの判定を行う（Ｓ３）。しきい値１１を超えない場合には（Ｓ３がＮＯ）、プログラムの実行中にしきい値１１を超えることは無いのでそのままプログラムを終了する（Ｓ８）。
【００２４】
一方、しきい値１１を超えた場合には（Ｓ３がＹＥＳ）、無限ループまたはデータが戻ってこない等の何らかの問題が発生したと判断し、Ｓ４に進んで、疑似例外として以下の処理を行う。
１．フェッチＩＣ１４の値をリタイヤＩＣ１５に更新して疑似例外処理を完了し、プログラムはそこから再開するようにする。
２．リタイヤされていないがメモリからリプライが戻っているロード命令によるデータに関しては、その後ストアによってデータが書かれている可能性があるので、メインメモリ２０から取ってきたデータを一度メモリに書き戻す。
３．動作モードを安定モードにする。
【００２５】
Ｓ４の疑似例外処理を終了したら、リタイヤＩＣ１５からプログラムを再開する（Ｓ５）。次に、プログラムが再開した後に新規のコンテキストスイッチ７が発生したかどうかの判定を行う（Ｓ６）。コンテキストスイッチ７が発生した場合には（Ｓ６がＹＥＳ）、前回よりもプログラムが進んだと判断して動作モードを通常モードに戻す（Ｓ７）。問題がなければ、そのままプログラムを終了する（Ｓ８）。
【００２６】
つまり、再開したプログラムにおいて新規にコンテキストスイッチ７が発生した場合には、前回無限ループが発生した箇所のプログラムは実行できたと判断し、先ほど設定した安定モードを元に戻す処理を自動的に行う。そのため、運用を中断することなく、プログラムの実行を続けることが可能となる。
【００２７】
一方、新規コンテキストスイッチ７が発生しない場合には（Ｓ６がＮＯ）、Ｓ３と同様に再度しきい値１１を超えるかどうかの判定を行う（Ｓ９）。しきい値１１を超えない場合には（Ｓ９がＮＯ）、問題がないのでＳ６に戻ってプログラムを進める。しきい値１１を超えた場合には（Ｓ９がＹＥＳ）、安定モードでも動作しないため重障害としてプログラムを停止する（Ｓ１０）。
【００２８】
本実施形態では、リタイヤカウンタ１０の監視を行い、しきい値１１を超えた場合には安定モードに移行し、新規コンテキストスイッチ７が発生した場合には通常モードに自動的に移行する。安定モードにしても実行できない場合には、重障害と判定してプログラムを停止する。
【００２９】
このように本実施形態においては、リタイヤカウンタ１０を監視してしきい値１１を超えた場合には、今までは障害として処理しているが、一旦、軽障害と判定して以下の疑似例外処理を自動的に行う。
１．フェッチＩＣの値をリタイヤＩＣに更新して疑似例外処理が完了し、プログラムはそこから再開するようにする。
２．リタイヤされていないがメモリからリプライが戻っているロード命令によるデータに関してはその後にストアによってデータが書き換えられている可能性があるので、メインメモリから取ってきたデータは一度メモリに書き戻す。
３．動作モードを安定モードにする。
【００３０】
従って、プログラムのバグやハードウェアの障害等により処理の中断をしなくても評価を継続することが可能となる。また、安定モードになってから新規にコンテキストスイッチ７が発生した場合には、軽障害の部分のプログラムは正常に処理できたと判断し、通常モードに自動的に戻す。そのため、障害の発生した箇所以外は通常のモードで評価を行うことが出来る。
【００３１】
また、しきい値１１を超えたときのリタイヤＩＣ１５と新規のコンテキストスイッチ７が発生したＩＣを記憶しておくことにより、プログラムのどの部分に問題があるのかを特定しやすくなる。更に、出荷されたものに対しても、ハードウェアの間欠障害や新規プログラムのバグ等により、無限ループの障害が発生した場合でも運用を継続して行うことが可能となる。
【００３２】
なお、以上の実施形態の情報処理システムは、ハードウェアによっても実現できるが、コンピュータをその情報処理システムとして機能させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現できる。また、以上の実施形態の情報処理システムの評価方法は、ハードウェアによっても実現できるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現できる。
【符号の説明】
【００３３】
１  命令フェッチ
２  命令デコード
３  命令バッファ
４  命令実行
５  命令完了判定
６  命令リタイヤ
７  コンテキストスイッチ
８  動作モード
９  リプライデータバッファ
１０  リタイヤカウンタ
１１  しきい値
１２  軽障害判定
１３  重障害判定
１４  フェッチＩＣ
１５  リタイヤＩＣ
１６  軽障害報告
１７  命令完了報告
１８  命令再実行指示
１９  リタイヤ報告
２０  メインメモリ
【図１】
0005527518.tif 000002
【図２】
0005527518.tif 000003