(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-12
(45)【発行日】2023-12-20
(54)【発明の名称】情報処理プログラム、情報処理方法及び情報処理システム
(51)【国際特許分類】
G06F 11/36 20060101AFI20231213BHJP
【FI】
G06F11/36 136
G06F11/36 192
G06F11/36 148
(21)【出願番号】P 2020000797
(22)【出願日】2020-01-07
【審査請求日】2022-09-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】松井 宣幸
【審査官】福西 章人
(56)【参考文献】
【文献】特開2000-222243(JP,A)
【文献】特開2008-257405(JP,A)
【文献】特開2001-067243(JP,A)
【文献】特開2019-008526(JP,A)
【文献】米国特許出願公開第2017/0052876(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/07
11/28-11/36
(57)【特許請求の範囲】
【請求項1】
プロセッサによるテストプログラムの実行時の所定の発生イベントごとの、前記プロセッサ内の複数のハードウェアモジュールの動作に関する
情報であって、前記テストプログラムの第1の命令において指定される第1のレジスタの番号と、前記第1の命令を実行する際に用いられた第2のレジスタの番号とを含む、動作情報を取得し、
前記動作情報に基づいて、前記テストプログラムに記述されたソフトウェア動作と、前記テストプログラムの実行時に用いられたハードウェアによるハードウェア動作との対応関係を示
し、前記第1のレジスタの番号と前記第2のレジスタの番号とが対応付けられている情報を含むデバッグ用情報を生成し、
前記デバッグ用情報を出力する、
処理をコンピュータ、に実行させる情報処理プログラム。
【請求項2】
前記動作情報は、前記テストプログラムの複数の命令のそれぞれのデコード時に前記複数の命令のそれぞれに割当てられたパイプライン番号に紐付けされており、
前記パイプライン番号ごとに紐付けられた前記動作情報を収集していくことで、前記デバッグ用情報を生成する、処理を前記コンピュータに実行させる請求項1に記載の情報処理プログラム。
【請求項3】
前記第1のレジスタ
は、前記第2のレジスタとは異な
り、
前記動作情報から、前記第1のレジスタの番号と前記第2のレジスタの番号とを対応づけて収集することで前記デバッグ用情報を生成する、処理を前記コンピュータに実行させる請求項1または2に記載の情報処理プログラム。
【請求項4】
前記テストプログラムによる期待動作を表す期待動作情報を生成し、生成した前記期待動作情報と前記デバッグ用情報とに基づいて、前記プロセッサの問題動作を特定する、処理を前記コンピュータに実行させる請求項1乃至3の何れか一項に記載の情報処理プログラム。
【請求項5】
コンピュータが、
プロセッサによるテストプログラムの実行時の所定の発生イベントごとの、前記プロセッサ内の複数のハードウェアモジュールの動作に関する
情報であって、前記テストプログラムの第1の命令において指定される第1のレジスタの番号と、前記第1の命令を実行する際に用いられた第2のレジスタの番号とを含む、動作情報を取得し、
前記動作情報に基づいて、前記テストプログラムに記述されたソフトウェア動作と、前記テストプログラムの実行時に用いられたハードウェアによるハードウェア動作との対応関係を示
し、前記第1のレジスタの番号と前記第2のレジスタの番号とが対応付けられている情報を含むデバッグ用情報を生成し、
前記デバッグ用情報を出力する、
情報処理方法。
【請求項6】
テストプログラムを実行する複数のハードウェアモジュールと、前記テストプログラムの実行時の所定の発生イベントごとに、前記複数のハードウェアモジュールの動作に関する動作情報を取得し、前記動作情報を出力する取得回路と、を備えたプロセッサと、
前記取得回路が出力した前記動作情報を取得し、前記動作情報に基づいて、前記テストプログラムに記述されたソフトウェア動作と、前記テストプログラムの実行時に用いられたハードウェアによるハードウェア動作との対応関係を示す情報を含むデバッグ用情報を生成し、前記デバッグ用情報を出力するデバッグ装置と、
を有する情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法及び情報処理システムに関する。
【背景技術】
【0002】
サーバシステムの開発及び運用時の、性能解析、電力評価、動作試験またはフィールド調査の各フェーズにおいて、テストプログラムを用いたサーバシステムの動作解析が行われることがある。テストプログラムの実行にてエラーが検出された際に、ハードウェア内部の動作解析が行われる。そして、その結果をもとにエラー原因の推測、シミュレーションモデルの作成、及びシミュレーションモデルを用いたデバッグが行われる。
【0003】
ハードウェア内部の動作解析方法として、シミュレーションにより波形データや各種バスの通信履歴などを取得して表示する手法や、実機のメモリに残された命令実行履歴などを取得して表示する手法がある。
【0004】
なお、従来、インオーダ実行型のプロセッサをもつ情報処理装置において、パイプライン制御に関する動作情報を監視・解析・記録し、さらに、表示する機能をもつ技術があった(たとえば、特許文献1参照)。
【0005】
また、プログラムに記述された命令の順序に関係なく、処理に必要なデータが揃った命令から実行するアウトオブオーダと呼ばれる機構を備えたプロセッサが知られている。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
サーバシステムは大規模化及び複雑化が進んでおり、動作解析にかかる工数が増大している。システム動作解析作業の中で、プロセッサなどのハードウェア内部の動作解析作業が最も観測性が悪く難易度が高い。近年、プロセッサに含まれるハードウェアモジュールの数及び種類の増加やアウトオブオーダの採用などにより複雑化が進んでおり、テストプログラム実行時のエラー原因の推測がより困難になっている。このため、デバッグ時間が長くなってしまうという問題があった。
【0008】
1つの側面では、本発明は、デバッグ時間の短縮が可能な情報処理プログラム、情報処理方法及び情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの実施態様では、プロセッサによるテストプログラムの実行時の所定の発生イベントごとの、前記プロセッサ内の複数のハードウェアモジュールの動作に関する動作情報を取得し、前記動作情報に基づいて、前記テストプログラムに記述されたソフトウェア動作と、前記テストプログラムの実行時に用いられたハードウェアによるハードウェア動作との対応関係を示す情報を含むデバッグ用情報を生成し、前記デバッグ用情報を出力する、処理をコンピュータに実行させる情報処理プログラムが提供される。
【0010】
また、1つの実施態様では、情報処理方法が提供される。
また、1つの実施態様では、情報処理システムが提供される。
【発明の効果】
【0011】
1つの側面では、本発明は、デバッグ時間を短縮できる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態の情報処理システムの一例を示す図である。
【
図2】第2の実施の形態の情報処理システムの一例を示す図である。
【
図3】コアとトレーサモジュールの内部構成例を示す図である。
【
図4】パイプライン処理の各ステージの例を示す図である。
【
図5】動作情報の取得処理の一例の流れを示すフローチャートである。
【
図6】各命令実行サイクルにおいて取得された動作情報の一例を示す図である。
【
図7】デバッグ作業実行サーバのハードウェア例を示す図である。
【
図8】デバッグ作業実行サーバの機能例を示すブロック図である。
【
図9】デバッグ用情報の生成及び表示処理の一例の流れを示すフローチャートである。
【
図10】データ登録処理の一例の流れを示すフローチャートである。
【
図12】ライトデータ登録用のデータテーブルの一例を示す図である。
【
図13】実行完了命令と関連情報の表示処理の一例の流れを示すフローチャートである。
【
図14】即時データ表示処理の一例の流れを示すフローチャートである。
【
図15】パイプラインフラッシュ処理の一例の流れを示すフローチャートである。
【
図16】デバッグ用情報のディスプレイへの表示例を示す図である。
【
図17】デバッグ作業の一例の処理の流れを示す図である。
【発明を実施するための形態】
【0013】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の情報処理システムの一例を示す図である。
【0014】
情報処理システム10は、プロセッサ11、記憶装置12、デバッグ装置13、表示装置14を有する。
プロセッサ11は、たとえば、CPU(Central Processing Unit)、DSP(Digital Signal Processor)などの演算処理装置である。プロセッサ11は、複数のプロセッサコアを含んでいてもよい。プロセッサ11は、記憶装置12に記憶されたテストプログラムを実行する。プロセッサ11は、アウトオブオーダ実行やパイプライン処理を行う演算処理装置であってもよいし、スーパースカラ処理機構を有する演算処理装置であってもよいし、これらを組み合わせた処理を行う演算処理装置であってもよい。
【0015】
また、プロセッサ11は、テストプログラムを実行する複数のハードウェアモジュール11a1,11a2,…,11anと、取得回路11bを有する。
ハードウェアモジュール11a1~11anは、テストプログラムに応じた動作を行う。
【0016】
取得回路11bは、ハードウェアモジュール11a1~11anの動作に関する動作情報を、テストプログラムの実行時の所定の発生イベントごとに取得する。所定の発生イベントとして、たとえば、命令デコード処理、レジスタへのライト処理、仮想アドレスから物理アドレスへのアドレス変換処理などがある。動作情報として、たとえば、デコードされた命令データ、ライトが行われたレジスタ(以下物理汎用レジスタという)の番号、ライトデータ、テストプログラムに記述されているレジスタ(以下論理汎用レジスタという)の番号などがある。
【0017】
なお、パイプライン処理が行われる場合、これらの動作情報は、その動作情報を発生させた命令に割り当てられたパイプライン番号(以下パイプラインID(IDentification)という)とともに取得される。
【0018】
取得回路11bは、たとえば、RAM(Random Access Memory)を有し、取得した動作情報をそのRAMに保持しておく。取得回路11bは、テストプログラムの実行が終了した場合に、保持しておいた動作情報を出力して、記憶装置12に記憶させてもよい。なお、取得回路11bは、毎サイクル、動作情報を取得するのではなく、所定の発生イベントごとに動作情報を取得するため、RAMに保持するデータ量を削減できる。
【0019】
ハードウェアモジュール11a1~11anと取得回路11bは、たとえば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでいてもよい。
【0020】
記憶装置12は、RAMなどの揮発性の記憶装置、またはフラッシュメモリ、EEPROM(Electrically Erasable Programmable Read Only Memory)、HDD(Hard Disk Drive)などの不揮発性の記憶装置である。
【0021】
デバッグ装置13は、処理部13aと記憶部13bを有する。
処理部13aは、たとえば、CPU、DSPなどの演算処理装置としてのプロセッサである。処理部13aは、複数のプロセッサを含んでいてもよいし複数のプロセッサコアを含んでいてもよい。また、処理部13aは、ASICやFPGAなどの特定用途の電子回路を含んでいてもよい。
【0022】
処理部13aは、記憶部13bに記憶されたプログラムを実行する。たとえば、処理部13aは、後述するような情報処理プログラムを実行する。
記憶部13bは、RAMなどの揮発性の記憶装置、またはフラッシュメモリ、EEPROMやHDDなどの不揮発性の記憶装置である。
【0023】
記憶部13bは、各種プログラムを記憶するとともに処理部13aがプログラムを実行する際に用いる各種データを記憶する。また、記憶部13bはプロセッサ11が実行したテストプログラムを記憶していてもよい。
【0024】
処理部13aが情報処理プログラムの実行を開始すると、処理部13aは、まず、取得回路11bが出力した動作情報を取得する(ステップS1)。取得回路11bが出力した動作情報が記憶装置12に記憶されている場合、処理部13aは、記憶装置12から動作情報を取得する(読み出す)。なお、取得回路11bが出力する動作情報は、図示しない通信装置によってデバッグ装置13に送信されてもよい。また処理部13aは、取得した動作情報を、一旦、記憶部13bに記憶してもよい。
【0025】
処理部13aは、取得した動作情報に基づいて、テストプログラムに記述されたソフトウェア動作と、テストプログラムの実行時に用いられたハードウェアによるハードウェア動作との対応関係を示す情報を含むデバッグ用情報を生成する(ステップS2)。たとえば、テストプログラムに記述されたソフトウェア動作が、ある論理汎用レジスタを用いた加算処理である場合、その加算処理の際に用いられた物理汎用レジスタの番号やライトデータがデバッグ用情報に含まれる。
【0026】
そして、処理部13aは生成したデバッグ用情報を出力する(ステップS3)。処理部13aは、たとえば、表示装置14にデバッグ用情報を出力して表示させる。
図1にはデバッグ用情報の表示例が示されている。
【0027】
図1の例では、命令実行完了時刻や、その時刻に完了した命令についての情報として、SW(ソフトウェア)動作情報と使用HW(ハードウェア)動作情報が示されている。SW動作情報と使用HW動作情報は、ソフトウェア動作とハードウェア動作との対応関係を示している。
図1の例では、SW動作情報として、加算処理を示す“add”と、用いる論理汎用レジスタの番号を表す“r1”と、加算する2つの値“0x10”、“0x10”が指定されている。また、使用HW動作情報として、用いる物理汎用レジスタの番号を表す“r1”と、加算処理の結果として書き込まれるライトデータ“0x20”が示されている。この例では論理汎用レジスタと物理汎用レジスタの番号は同じであるため両者は一致する。しかし、プロセッサ11がアウトオブオーダ実行の際に、レジスタリネーミングを行う場合、論理汎用レジスタと物理汎用レジスタの番号は異なる番号となり、両者は一致しない。
【0028】
なお、処理部13aは、記憶部13bにデバッグ用情報を出力して記憶させてもよい。
図1では図示が省略されているが、その後、処理部13aは、たとえば、シミュレータ(シミュレーションソフトウェア)などにより、テストプログラムによる期待動作を表す期待動作情報を生成し、表示装置14に表示させる。そして、ユーザは、たとえば、表示装置14に表示される期待動作情報と上記デバッグ用情報とを比較してデバッグ作業を行う。デバッグ作業による問題発生箇所の特定後は、特定した問題発生箇所に関連するハードウェアモジュールに絞って調査が行われる。
【0029】
上記の方法で得られたデバッグ用情報は、ソフトウェア動作と実際に用いられたハードウェアの動作との対応関係を示す情報を含むため、両者の対応関係の把握が容易となり、問題発生箇所の特定が容易になる。これにより、デバッグ作業効率が上がりデバッグ時間を短縮できる。このため、プロセッサ11を含むシステムの動作解析作業の効率化、短TAT(Turn Around Time)化が実現できる。
【0030】
なお、デバッグ装置13の処理部13aの処理内容を、取得回路11bによる動作情報取得後に、プロセッサ11が行うようにしてもよい。その場合、上記の情報処理プログラムは、プロセッサ11によって実行されることになる。
【0031】
(第2の実施の形態)
図2は、第2の実施の形態の情報処理システムの一例を示す図である。
第2の実施の形態の情報処理システム20は、試験対象サーバシステム21とデバッグ作業実行サーバ22とを有する。試験対象サーバシステム21は、プロセッサ31、主記憶装置32、外部記憶装置33を有する。
【0032】
プロセッサ31は、たとえば、CPU、DSPなどの演算処理装置であり、
図1に示したプロセッサ11と同様の機能を有する。ただし、第2の実施の形態の情報処理システム20において、プロセッサ31は、複数の(m個の)プロセッサコア(以下単にコアと呼ぶ)31a1,31a2,…,31amと、トレーサモジュール31bを有する。
【0033】
コア31a1~31amのそれぞれは、アウトオブオーダ実行を行う機能、スーパースカラ処理を行う機能、及びパイプライン処理を行う機能を有する。
トレーサモジュール31bは、
図1に示した取得回路11bと同様の機能を有する。トレーサモジュール31bの内部構成例については後述する。
【0034】
主記憶装置32は、たとえば、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、外部記憶装置33は、たとえば、フラッシュメモリ、EEPROM、HDDなどの不揮発性の記憶装置である。
【0035】
なお、試験対象サーバシステム21には、通信インタフェースや入出力インタフェースなどが含まれていてもよいが、
図2では図示が省略されている。
デバッグ作業実行サーバ22は、
図1に示したデバッグ装置13と同様の機能を有する。デバッグ作業実行サーバ22のハードウェア例については後述する。
【0036】
図3は、コアとトレーサモジュールの内部構成例を示す図である。
コア31a1~31amのそれぞれは複数のハードウェアモジュールを有する。たとえば、
図3のようにコア31a1は、複数の(n個の)ハードウェアモジュール41a1,41a2,…,41anを有する。コア31a2~31amのそれぞれも同様にn個のハードウェアモジュールを有する。
【0037】
ハードウェアモジュール41a1~41anのそれぞれは、たとえば、後述するパイプライン処理の各ステージの処理を行う回路である。ハードウェアモジュール41a1~41anのそれぞれは、たとえば、図示しないフリップフロップを介して、ハードウェアモジュール41a1~41anのうちの他のハードウェアモジュールに接続されている。
【0038】
トレーサモジュール31bは、コントローラ31b1とRAM31b2を有する。コントローラ31b1は、コア31a1~31amの各ハードウェアモジュールと接続されており、各ハードウェアモジュールが出力する信号に基づいて、所定の発生イベントが生じたか否かを判定する。コントローラ31b1は、所定の発生イベントが生じたと判定した場合、その発生イベントに関連するハードウェアモジュールの動作を示す動作情報を取得し、RAM31b2に書き込む。
【0039】
図4は、パイプライン処理の各ステージの例を示す図である。
パイプライン処理のステージ(以下パイプラインステージという)は、分岐予測を行うステージST1、命令フェッチを行うステージST2、命令のデコードを行うステージST3を有する。さらに、パイプラインステージは、固定小数点演算を行うステージST4、浮動小数点演算を行うステージST5、メモリアクセスを行うステージST6、分岐処理を行うステージST7、コミット(終了処理)を行うステージST8がある。
【0040】
ステージST4は、固定小数点演算命令を優先度順に発行するステージST4aと、固定小数点演算を実行するステージST4bを含む。ステージST5は、浮動小数点演算命令を優先度順に発行するステージST5aと、浮動小数点演算を実行するステージST5bを含む。ステージST6は、メモリアクセス命令を優先度順に発行するステージST6aと、アドレス計算(変換)を行うステージST6bと、メモリアクセスを実行するステージST6cを含む。ステージST7は、分岐命令を優先度順に発行するステージST7aと、分岐命令に応じた分岐制御を行うステージST7bを含む。
【0041】
以下、試験対象サーバシステム21による動作情報の取得処理の例を説明する。
図5は、動作情報の取得処理の一例の流れを示すフローチャートである。
まず、プロセッサ31は、たとえば、外部記憶装置33に記憶されているテストプログラムを読み出してテストプログラムの実行を開始する(ステップS10)。トレーサモジュール31bのコントローラ31b1は、状態を確認するハードウェアモジュールの番号を示すモジュール番号iを0に設定する(ステップS11)。そして、コントローラ31b1は、モジュール番号iのハードウェアモジュールの状態(モジュール状態)を確認する(ステップS12)。
【0042】
そして、コントローラ31b1は、モジュール番号iのハードウェアモジュールが、たとえば、
図4に示したパイプラインステージにおいて、以下のようなイベントを発生した場合、以下のような動作情報を取得する(ステップS13:YES)。
【0043】
モジュール番号iのハードウェアモジュールがステージST1において分岐予測を失敗した場合、コントローラ31b1は、そのハードウェアモジュールが出力する分岐予測の失敗を示す情報を動作情報として取得する。
【0044】
モジュール番号iのハードウェアモジュールがステージST3において命令のデコードを行った場合、コントローラ31b1は、そのハードウェアモジュールが出力するデコード結果である命令データを取得する。また、コントローラ31b1は、デコードされた命令に割り当てられたパイプラインIDを取得する。複数の命令がデコードされる場合、コントローラ31b1はそれぞれの命令についてのパイプラインIDを取得する。
【0045】
モジュール番号iのハードウェアモジュールがステージST4~ST7において物理汎用レジスタへのライトを行った場合、コントローラ31b1は、そのハードウェアモジュールが出力する物理汎用レジスタの番号とライトデータを取得する。
【0046】
モジュール番号iのハードウェアモジュールがステージST4b,ST5bにおいてストアデータを生成した場合、コントローラ31b1は、そのハードウェアモジュールが出力するストアデータとストア命令に割り当てられたパイプラインIDを取得する。
【0047】
モジュール番号iのハードウェアモジュールがステージST6cにおいてロード命令を完了した場合、コントローラ31b1は、そのハードウェアモジュールが出力するロードデータとロード命令に割り当てられたパイプラインIDを取得する。
【0048】
モジュール番号iのハードウェアモジュールがステージST6bにおいてアドレス変換を完了した場合、コントローラ31b1は、そのハードウェアモジュールが出力する仮想アドレス、物理アドレスを取得する。さらにコントローラ31b1は、メモリアクセス命令(ロード命令またはストア命令)に割り当てられたパイプラインIDを取得する。
【0049】
モジュール番号iのハードウェアモジュールがステージST8の処理を完了した場合、コントローラ31b1は、そのハードウェアモジュールが出力する以下の動作情報を取得する。コントローラ31b1は、現在のプログラムカウンタの値、実行完了した命令数、実行完了した命令に割り当てられたパイプラインIDを取得する。さらにコントローラ31b1は、実行完了した命令に関してテストプログラムに記述されていた論理汎用レジスタの番号、実際にその命令の実行時に用いた物理汎用レジスタの番号を取得する。また、コントローラ31b1は、物理汎用レジスタへのライトを発生させた命令に割り当てられたパイプラインID、命令実行完了時点での権限レベルを取得する。
【0050】
モジュール番号iのハードウェアモジュールがステージST1~ST8の処理において、アーキテクチャレジスタへのリードまたはライトを行った場合、コントローラ31b1は、そのハードウェアモジュールが出力するアーキテクチャレジスタの番号を取得する。
また、コントローラ31b1は、そのハードウェアモジュールが出力する、リードまたはライトが行われたことを示すフラグ情報と、リードデータまたはライトデータを取得する。
【0051】
モジュール番号iのハードウェアモジュールにおいて、ステージST1~ST8の処理についての例外(異常)が発生した場合、コントローラ31b1は、そのハードウェアモジュールが出力する例外が発生した旨を示す情報を取得する。
【0052】
モジュール番号iのハードウェアモジュールにおいて、ステージST1~ST8の処理時にパイプラインフラッシュが発生した場合、コントローラ31b1は、そのハードウェアモジュールが出力するパイプラインフラッシュが発生した旨を示す情報を取得する。
【0053】
コントローラ31b1は、モジュール番号iのハードウェアモジュールが上記の何れかのイベントの発生を示す情報を出力している場合、そのイベントに関連する動作情報を取得し、RAM31b2に書き込む(ステップS14)。コントローラ31b1は、ステップS14の処理後、または、動作情報を取得しない場合(ステップS13:NO)、i<N(全観測対象ハードウェアモジュール数)である間(ステップS15:NO)、i=i+1とする(ステップS16)。ステップS16の処理後、ステップS12からの処理が繰り返される。
【0054】
i=Nとなった場合(ステップS15:YES)、テストプログラムの実行が終了していなければ(ステップS17:NO)、テストプログラムを実行するコア31a1~31amによって、命令実行サイクルが進められる(ステップS18)。ステップS18の処理後、ステップS11からの処理が繰り返される。
【0055】
テストプログラムの実行が終了した場合(ステップS17:YES)、コントローラ31b1は、RAM31b2に記憶されている動作情報を出力させ、記憶装置(主記憶装置32または外部記憶装置33)に記憶させる(ステップS19)。以上で、動作情報の取得処理が終了する。
【0056】
なお、上記の処理の順序は一例であり、適宜順序が入れ替えられてもよい。また、動作情報は、主記憶装置32または外部記憶装置33に記憶されなくてもよく、たとえば、図示しない通信インタフェースによって、デバッグ作業実行サーバ22に送信されるようにしてもよい。
【0057】
図6は、各命令実行サイクルにおいて取得された動作情報の一例を示す図である。
図6において、“N/A”は該当する動作情報が取得されていないことを示す。
命令実行サイクルが980サイクルのとき、命令のデコードにより、2つの命令についてのデコード結果である命令データ“DATA”と、各命令に割り当てられたパイプラインID(デコード命令パイプラインID)“0,1”が取得されている。
【0058】
命令実行サイクルが990サイクルのとき、物理汎用レジスタへのライトにより、その物理汎用レジスタの番号“0”とライトデータ(物理汎用レジスタライトデータ)“20”が取得されている。
【0059】
命令実行サイクルが995サイクルのときも、物理汎用レジスタへのライトにより、その物理汎用レジスタの番号“3”とライトデータ“30”が取得されている。
命令実行サイクルが1000サイクルのとき、2つの命令の実行が完了されたことによりプログラムカウンタ値“100”、実行完了命令数“2”、実行完了した命令に割り当てられたパイプラインID(実行完了命令パイプラインID)“0”が取得されている。
【0060】
さらに、実行完了した命令に関してテストプログラムに記述されていた論理汎用レジスタの番号“1,2”と、実際にその命令の実行時に用いた物理汎用レジスタの番号“0,2”が取得されている。この例では、論理汎用レジスタの番号と、物理汎用レジスタの番号が異なるため、たとえば、アウトオブオーダ実行の結果、レジスタリネーミングが行われたことが分かる。また、上記の番号の物理汎用レジスタへのライトを指示した命令に割り当てられたパイプラインID(対象命令パイプラインID)“0,1”と、命令実行完了時点での権限レベル“N”が取得されている。“N”はノーマルを表す。
【0061】
次に、デバッグ作業実行サーバ22のハードウェア例を示す。
図7は、デバッグ作業実行サーバのハードウェア例を示す図である。
デバッグ作業実行サーバ22は、CPU51、RAM52、HDD53、画像信号処理部54、入力信号処理部55、媒体リーダ56及び通信インタフェース57を有する。上記ユニットは、バスに接続されている。
【0062】
CPU51は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU51は、HDD53に記憶されたプログラムやデータの少なくとも一部をRAM52にロードし、プログラムを実行する。なお、CPU51は複数のプロセッサコアを備えてもよく、デバッグ作業実行サーバ22は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
【0063】
RAM52は、CPU51が実行するプログラムやCPU51が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、デバッグ作業実行サーバ22は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0064】
HDD53は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、及び、データを記憶する不揮発性の記憶装置である。プログラムには、たとえば、デバッグ用情報の生成などを行う情報処理方法をデバッグ作業実行サーバ22に実行させる情報処理プログラムが含まれる。なお、デバッグ作業実行サーバ22は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0065】
画像信号処理部54は、CPU51からの命令にしたがって、デバッグ作業実行サーバ22に接続されたディスプレイ54aに画像を出力する。ディスプレイ54aとしては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0066】
入力信号処理部55は、デバッグ作業実行サーバ22に接続された入力デバイス55aから入力信号を取得し、CPU51に出力する。入力デバイス55aとしては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、デバッグ作業実行サーバ22に、複数の種類の入力デバイスが接続されていてもよい。
【0067】
媒体リーダ56は、記録媒体56aに記録されたプログラムやデータを読み取る読み取り装置である。記録媒体56aとして、たとえば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)、Blu-ray(登録商標)などが含まれる。
【0068】
媒体リーダ56は、たとえば、記録媒体56aから読み取ったプログラムやデータを、RAM52やHDD53などの他の記録媒体にコピーする。読み取られたプログラムは、たとえば、CPU51によって実行される。なお、記録媒体56aは、可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体56aやHDD53を、コンピュータ読み取り可能な記録媒体ということがある。
【0069】
通信インタフェース57は、ネットワーク57aに接続され、ネットワーク57aを介して他の情報処理装置と通信を行うインタフェースである。通信インタフェース57は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0070】
なお、通信インタフェース57は、ネットワーク57aを介して、試験対象サーバシステム21に接続されてもよいし、試験対象サーバシステム21に直接接続されていてもよい。
【0071】
図2に示した試験対象サーバシステム21についても上記と同様のハードウェア構成にて実現できるが、その場合、CPU51に、
図2に示したようなトレーサモジュール31bが含まれることになる。
【0072】
次に、デバッグ作業実行サーバ22の機能及び処理手順を説明する。
図8は、デバッグ作業実行サーバの機能例を示すブロック図である。
デバッグ作業実行サーバ22は、動作情報取得部60、デバッグ用情報生成部61、デバッグ用情報出力部62、デバッグ作業実行部63、記憶部64を有する。
【0073】
動作情報取得部60、デバッグ用情報生成部61、デバッグ用情報出力部62、デバッグ作業実行部63は、たとえば、CPU51が実行するプログラムモジュールを用いて実装できる。記憶部64は、たとえば、RAM52またはHDD53に確保した記憶領域を用いて実装できる。
【0074】
動作情報取得部60は、動作情報を取得する。動作情報取得部60は、試験対象サーバシステム21の外部記憶装置33に直接アクセス可能であれば、外部記憶装置33に記憶された動作情報を読み出すことで取得する。試験対象サーバシステム21が動作情報をデバッグ作業実行サーバ22に送信する場合、動作情報取得部60は、通信インタフェース57を用いて動作情報を受信することによって取得する。動作情報取得部60は、取得した動作情報を一旦、記憶部64に記憶する。
【0075】
デバッグ用情報生成部61は、記憶部64に記憶された動作情報に基づいてデバッグ用情報を生成する。
デバッグ用情報出力部62は、デバッグ用情報をディスプレイ54aに表示させる。
【0076】
デバッグ作業実行部63は、たとえば、シミュレータなどにより、テストプログラムによる期待動作を表す期待動作情報を生成し、ディスプレイ54aに表示させる。デバッグ作業実行部63は、デバッグ用情報と期待動作情報に基づいて、プロセッサ31の問題動作を特定し、その結果をディスプレイ54aに表示させるようにしてもよい。
【0077】
記憶部64は、取得された動作情報、生成された(または生成途中の)デバッグ用情報などを記憶する。
図9は、デバッグ用情報の生成及び表示処理の一例の流れを示すフローチャートである。なお、以下では、
図6に示した動作情報を以下の種別A~Jに分けて説明する。
【0078】
種別Aの動作情報は、プログラムカウンタ値、実行完了命令数、実行完了命令パイプラインIDである。
種別Bの動作情報は、命令データ、デコード命令パイプラインIDである。
【0079】
種別Cの動作情報は、権限レベルである。
種別Dの動作情報は、アーキテクチャレジスタ番号、アーキテクチャレジスタライトデータ、アーキテクチャレジスタリードデータである。
【0080】
種別Eの動作情報は、物理汎用レジスタ番号、物理汎用レジスタライトデータ、完了物理汎用レジスタ番号、完了論理汎用レジスタ番号、対象命令パイプラインIDである。
種別Fの動作情報は、ストアデータ、ストア命令パイプラインID、ロードデータ、ロード命令パイプラインIDである。
【0081】
種別Gの動作情報は、仮想アドレス、物理アドレス、ロード・ストア命令パイプラインIDである。
種別Hの動作情報は、分岐予測失敗情報である。
【0082】
種別Iの動作情報は、例外発生情報である。
種別Jの動作情報は、パイプラインフラッシュ情報である。
また、以下では、前述の命令実行サイクルをシミュレーション時刻と呼ぶ。
【0083】
デバッグ用情報生成部61は、シミュレーション時刻tをシミュレーション開始時刻tstartに設定する(ステップS20)。デバッグ用情報生成部61は、記憶部64に記憶されている動作情報のうち、シミュレーション時刻tにトレーサモジュール31bによって取得された動作情報を読み込む(ステップS21)。
【0084】
そして、デバッグ用情報生成部61は、読み込んだ動作情報に、上記の種別B,E,F,Gの動作情報があるか否かを判定する(ステップS22)。デバッグ用情報生成部61は、種別B,E,F,Gの動作情報があると判定した場合、後述のデータ登録処理を行う(ステップS23)。
【0085】
ステップS23の処理後、または、種別B,E,F,Gの動作情報がないと判定した場合、デバッグ用情報生成部61は、読み込んだ動作情報に基づいて、物理汎用レジスタへのライトがあるか否かを判定する(ステップS24)。デバッグ用情報生成部61は、物理汎用レジスタへのライトがあると判定した場合、後述のライトデータ登録処理を行う(ステップS25)。
【0086】
ステップS25の処理後、または、物理汎用レジスタへのライトがないと判定した場合、デバッグ用情報生成部61は、読み込んだ動作情報に基づいて、実行完了命令があるか否かを判定する(ステップS26)。実行完了命令があると判定された場合、デバッグ用情報出力部62は、後述の実行完了命令と関連情報の表示処理を行う(ステップS27)。
【0087】
ステップS27の処理後、または、実行完了命令がないと判定した場合、デバッグ用情報生成部61は、読み込んだ動作情報に、種別D,H,Iのデータがあるか否かを判定する(ステップS28)。種別D,H,Iのデータがあると判定された場合、デバッグ用情報出力部62は、後述の即時データ表示処理を行う(ステップS29)。
【0088】
ステップS29の処理後、または、種別D,H,Iのデータがないと判定した場合、デバッグ用情報生成部61は、読み込んだ動作情報に基づいて、パイプラインフラッシュがあるか否かを判定する(ステップS30)。パイプラインフラッシュがあると判定された場合、デバッグ用情報生成部61とデバッグ用情報出力部62は、後述のパイプラインフラッシュ処理を行う(ステップS31)。
【0089】
ステップS31の処理後、または、パイプラインフラッシュがないと判定した場合、デバッグ用情報生成部61は、シミュレーション時刻tが終了シミュレーション時刻tendに達したか否かを判定する(ステップS32)。終了シミュレーション時刻tendは、プロセッサ31において動作情報の取得が行われた最後のシミュレーション時刻(命令実行サイクル)を表す。
【0090】
デバッグ用情報生成部61は、シミュレーション時刻tが終了シミュレーション時刻tendに達していないと判定した場合、シミュレーション時刻tを+1し(ステップS33)、ステップS21からの処理を繰り返す。デバッグ用情報生成部61は、シミュレーション時刻tが終了シミュレーション時刻tendに達していると判定した場合、デバッグ用情報の生成及び表示処理を終了する。
【0091】
なお、
図9に示した処理の順序は一例であり、適宜順序が入れ替えられてもよい。たとえば、ステップS28,S29の処理は、ステップS22,S23の処理の前に行ってもよい。
【0092】
図10は、データ登録処理の一例の流れを示すフローチャートである。
データ登録処理が開始されると、デバッグ用情報生成部61は、読み込んだ動作情報にデコードされた命令データがあるか否かを判定する(ステップS40)。デバッグ用情報生成部61は、命令データがあると判定した場合、命令データを、記憶部64に構築されたデータテーブルに登録する(ステップS41)。命令データは、データテーブルにおいて、デコード命令パイプラインIDに紐付けられた動作情報が書き込まれる領域のうち、命令データの書き込み用フィールドに書き込まれる。
【0093】
ステップS41の処理後、または、命令データがないと判定した場合、デバッグ用情報生成部61は、読み込んだ動作情報に物理・論理汎用レジスタ番号の変換データがあるか否かを判定する(ステップS42)。物理・論理汎用レジスタ番号の変換データの有無は、たとえば、
図6に示した動作情報のうち、完了物理汎用レジスタ番号と、完了論理汎用レジスタ番号とから判別できる。
図6の例では、完了物理汎用レジスタ番号と、完了論理汎用レジスタ番号とが異なるため、変換データがある(レジスタリネーミングが行われた)ものと判定される。
【0094】
デバッグ用情報生成部61は、変換データがあると判定した場合、物理・論理汎用レジスタ番号(
図6では完了物理汎用レジスタ番号及び完了論理汎用レジスタ番号)を、上記データテーブルに登録する(ステップS43)。物理・論理汎用レジスタ番号は、データテーブルにおいて、対象命令パイプラインIDに紐付けられた動作情報が書き込まれる領域のうち、物理・論理汎用レジスタ番号の書き込み用フィールドに書き込まれる。
【0095】
ステップS43の処理後、または、変換データがないと判定した場合、デバッグ用情報生成部61は、読み込んだ動作情報にストアデータがあるか否かを判定する(ステップS44)。ストアデータがあると判定した場合、デバッグ用情報生成部61は、ストアデータを、上記データテーブルに登録する(ステップS45)。ストアデータは、データテーブルにおいて、ストア命令パイプラインIDに紐付けられた動作情報が書き込まれる領域のうち、ストアデータの書き込み用フィールドに書き込まれる。
【0096】
ステップS45の処理後、または、ストアデータがないと判定した場合、デバッグ用情報生成部61は、読み込んだ動作情報にロードデータがあるか否かを判定する(ステップS46)。ロードデータがあると判定した場合、デバッグ用情報生成部61は、ロードデータを、上記データテーブルに登録する(ステップS47)。ロードデータは、データテーブルにおいて、ロード命令パイプラインIDに紐付けられた動作情報が書き込まれる領域のうち、ロードデータの書き込み用フィールドに書き込まれる。
【0097】
ステップS47の処理後、または、ロードデータがないと判定した場合、デバッグ用情報生成部61は、読み込んだ動作情報にアドレス変換データがあるか否かを判定する(ステップS48)。アドレス変換データの有無は、たとえば、
図6に示した動作情報に仮想アドレスと物理アドレスとが含まれているか否かにより判別できる。仮想アドレスと物理アドレスとが含まれている場合、アドレス変換データがある(アドレス変換が行われた)ものと判定される。
【0098】
デバッグ用情報生成部61は、アドレス変換データがあると判定した場合、仮想アドレスと物理アドレスを、上記データテーブルに登録する(ステップS49)。物理・論理汎用レジスタ番号は、データテーブルにおいて、ロード・ストア命令パイプラインIDに紐付けられた動作情報が書き込まれる領域のうち、仮想アドレスと物理アドレスの書き込み用フィールドに書き込まれる。
【0099】
ステップS49の処理後、または、アドレス変換データがないと判定した場合、デバッグ用情報生成部61は、データ登録処理を終える。
なお、上記の処理の順序は一例であり、適宜順序が入れ替えられてもよい。
【0100】
図11は、データテーブルの登録例を示す図である。
図11の例のデータテーブルでは、パイプラインID(0,1,2,…,MAX(最大値))と紐付けられた動作情報の格納位置がポインタで指定されている。このパイプラインIDは、前述の実行完了命令パイプラインID、デコード命令パイプラインID、対象命令パイプラインID、ストア命令パイプラインID、ロード命令パイプラインID、またはロード・ストア命令パイプラインIDとして用いられている。
【0101】
たとえば、
図11に示すように、パイプラインID=0に紐付けられた動作情報として、命令データ“0x2a0803e0”、物理汎用レジスタ番号“0”、論理汎用レジスタ番号“1”などが登録されている。また、パイプラインID=2に紐付けられた動作情報として、命令データ“0x9b084ee8”、ストアデータ“0x20”、ロードデータ“N/A”、仮想アドレス“0x1000”、物理アドレス“0x1000”などが登録されている。
【0102】
このように、デバッグ用情報生成部61は、パイプラインIDごとに動作情報を収集していくことで、デバッグ用情報を生成している。これにより、パイプライン処理を用いた複雑な処理を行うプロセッサ31についても適切なデバッグ用情報を生成可能である。また、動作情報から、論理汎用レジスタ番号と物理汎用レジスタ番号とを対応付けて収集することで、レジスタリネーミングが生じた場合にも適切なデバッグ用情報を生成可能である。
【0103】
図9のライトデータ登録処理では、デバッグ用情報生成部61は、ライトデータを、記憶部64に構築されたライトデータ登録用のデータテーブルに登録する。
図12は、ライトデータ登録用のデータテーブルの一例を示す図である。
【0104】
ライトデータ登録用のデータテーブルには、ライトが行われた物理汎用レジスタを示す物理汎用レジスタ番号とライトデータが書き込まれる。ライトデータ登録用のデータテーブルに既に同じ物理汎用レジスタ番号が登録されている場合、ライトデータが上書きされる。
【0105】
図13は、実行完了命令と関連情報の表示処理の一例の流れを示すフローチャートである。
まず、デバッグ用情報出力部62は、読み込まれた動作情報に含まれるシミュレーション時刻t、権限レベル、プログラムカウンタ値をディスプレイ54aに表示させる(ステップS50)。さらに、デバッグ用情報出力部62は、実行完了命令パイプラインIDに紐付けられ、データテーブルに登録された命令データを、記憶部64から読み出してディスプレイ54aに表示させる(ステップS51)。
【0106】
その後、デバッグ用情報生成部61は、実行完了命令パイプラインIDに紐付けられた物理汎用レジスタ番号が
図11に示したようなデータテーブルに登録済であるか否かを判定する(ステップS52)。物理汎用レジスタ番号が登録済であると判定した場合、デバッグ用情報出力部62は、その物理汎用レジスタ番号とともにデータテーブルに登録されている論理汎用レジスタ番号を、記憶部64から読み出してディスプレイ54aに表示させる(ステップS53)。また、デバッグ用情報出力部62は、その物理汎用レジスタ番号と、
図12に示したライトデータ登録用のデータテーブルに登録されているライトデータを、記憶部64から読み出してディスプレイ54aに表示させる(ステップS54)。
【0107】
ステップS54の処理後、または物理汎用レジスタ番号が登録済でないと判定した場合、デバッグ用情報出力部62は、実行完了命令パイプラインIDに紐付けられたストアデータがデータテーブルに登録済であるか否かを判定する(ステップS55)。ストアデータが登録済であると判定した場合、デバッグ用情報出力部62は、ストアデータとそのストアデータとともにデータテーブルに登録されている仮想アドレス及び物理アドレスを、記憶部64から読み出してディスプレイ54aに表示させる(ステップS56)。
【0108】
ステップS56の処理後、またはストアデータが登録済でないと判定した場合、デバッグ用情報出力部62は、実行完了命令パイプラインIDに紐付けられたロードデータがデータテーブルに登録済であるか否かを判定する(ステップS57)。ロードデータが登録済であると判定した場合、デバッグ用情報出力部62は、ロードデータとそのロードデータとともにデータテーブルに登録されている仮想アドレス及び物理アドレスを、記憶部64から読み出してディスプレイ54aに表示させる(ステップS58)。
【0109】
ステップS58の処理後、またはロードデータが登録済みでないと判定した場合、デバッグ用情報出力部62(またはデバッグ用情報生成部61)は実行完了命令パイプラインIDに紐付けられた動作情報をデータテーブルから削除する(ステップS59)。
【0110】
その後、デバッグ用情報出力部62は、実行完了命令と関連情報の表示処理を終える。
なお、上記の処理の順序は一例であり、各種動作情報の表示順序などについては適宜入れ替えられてもよい。
【0111】
図14は、即時データ表示処理の一例の流れを示すフローチャートである。
デバッグ用情報出力部62は、読み込まれた動作情報にアーキテクチャレジスタリード・ライトデータ(リードデータまたはライトデータ)があるか否かを判定する(ステップS60)。アーキテクチャレジスタリード・ライトデータがあると判定した場合、デバッグ用情報出力部62は、読み込まれた動作情報に含まれるシミュレーション時刻t、アーキテクチャレジスタリード・ライト情報をディスプレイ54aに表示させる(ステップS61)。アーキテクチャレジスタリード・ライト情報には、アーキテクチャレジスタ番号、アーキテクチャリード・ライトデータが含まれる。
【0112】
ステップS61の処理後、またはアーキテクチャレジスタリード・ライトデータがないと判定した場合、デバッグ用情報出力部62は、読み込まれた動作情報に分岐予測失敗情報があるか否かを判定する(ステップS62)。分岐予測失敗情報があると判定した場合、デバッグ用情報出力部62は、読み込まれた動作情報に含まれるシミュレーション時刻tと分岐予測失敗情報をディスプレイ54aに表示させる(ステップS63)。
【0113】
ステップS63の処理後、または分岐予測失敗情報がないと判定した場合、デバッグ用情報出力部62は、読み込まれた動作情報に例外発生情報があるか否かを判定する(ステップS64)。例外発生情報があると判定した場合、デバッグ用情報出力部62は、読み込まれた動作情報に含まれるシミュレーション時刻tと例外発生情報をディスプレイ54aに表示させる(ステップS65)。
【0114】
ステップS65の処理後、または例外発生得情報がないと判定した場合、デバッグ用情報出力部62は、即時データ表示処理を終了する。
なお、上記の処理の順序は一例であり、即時データ表示対象の各種動作情報の表示順序などについては適宜入れ替えられてもよい。
【0115】
図15は、パイプラインフラッシュ処理の一例の流れを示すフローチャートである。
デバッグ用情報出力部62は、読み込まれた動作情報に含まれるシミュレーション時刻tとパイプラインフラッシュ情報をディスプレイ54aに表示させる(ステップS70)。
【0116】
そして、デバッグ用情報生成部61は、
図11に示したようなデータテーブルに登録されている情報を全て削除し(ステップS71)、パイプラインフラッシュ処理を終了する。
【0117】
図16は、デバッグ用情報のディスプレイへの表示例を示す図である。
図16の例では、シミュレーション時刻tが“1000”のとき完了した加算命令についての情報として、権限レベル“N”(ノーマル)、プログラムカウンタ値“00000100”、命令データ“2a0803e0”が示されている。また、“add r1,0x10,0x10”は、r1=0x10+0x10を表している。“r1”は論理汎用レジスタ番号が“1”であることを示す。“r1 write:0x20”は、物理汎用レジスタ番号“1”の物理汎用レジスタにライトデータ“0x20”が書き込まれたことを示す。
【0118】
さらに、同じ時刻に完了した加算命令についての情報として、権限レベル“N”、プログラムカウンタ値“00000104”、命令データ“2a0803e2”が示されている。また、“add r2,r1,0x10”は、r2=r1+0x10を表している。“r2”は論理汎用レジスタ番号が“2”であることを示す。“r2 write:0x30”は、物理汎用レジスタ番号“2”の物理汎用レジスタにライトデータ“0x30”が書き込まれたことを示す。
【0119】
また、シミュレーション時刻tが“1020”のとき完了したストア命令についての情報として、権限レベル“N”、プログラムカウンタ値“00000108”、命令データ“9b084ee8”が示されている。また、“store r1,0x1000”は、論理汎用レジスタ番号“1”の論理汎用レジスタのデータを、
図2の主記憶装置32のアドレス“0x1000”にストアすることを示す。“store:VA=0x1000,PA=0x1000,data=0x20”は、仮想アドレス(VA)“0x1000”、物理アドレス(PA)“0x1000”に、ストアデータ“0x20”がストアされたことを示す。
【0120】
さらに、同じ時刻に完了したロード命令についての情報として、権限レベル“N”、プログラムカウンタ値“0000010c”、命令データ“8b084ee8”が示されている。また、“load r1,0x1000”は、論理汎用レジスタ番号“1”の論理汎用レジスタに、
図2の主記憶装置32のアドレス“0x1000”のデータをロードすることを示す。“r1 write:0x20”は、物理汎用レジスタ番号“1”の物理汎用レジスタにロードデータ“0x20”が書き込まれたことを示す。“load:VA=0x1000,PA=0x1000,data=0x20”は、仮想アドレス(VA)“0x1000”、物理アドレス(PA)“0x1000”から、ロードデータ“0x20”がロードされたことを示す。
【0121】
シミュレーション時刻tが“1036”のとき完了したストア命令についての情報として、権限レベル“N”、プログラムカウンタ値“00000110”、命令データ“8b080ee8”が示されている。また、“store r1,0x0”は、論理汎用レジスタ番号“1”の論理汎用レジスタのデータを、
図2の主記憶装置32のアドレス“0x0”にストアすることを示す。
【0122】
シミュレーション時刻tが“1068”のとき、例外が発生したことが示されている。また、同じ時刻において、パイプラインフラッシュが発生したことが示されている。
シミュレーション時刻tが“1080”のとき完了した分岐(ジャンプ)命令についての情報として、権限レベル“H”(ハイ)、プログラムカウンタ値“00000000”、命令データ“f940d661”が示されている。“jump 0x1000”は、アドレス“0x1000”にある命令への分岐を行うことを示している。
【0123】
シミュレーション時刻tが“1132”のとき、分岐予測の失敗が発生したことが示されている。また、同じ時刻において、パイプラインフラッシュが発生したことが示されている。
【0124】
シミュレーション時刻tが“1150”のとき、アーキテクチャレジスタ番号“arch_reg1”のアーキテクチャレジスタにライトデータ“0x10”の書き込みが行われたことが示されている。
【0125】
また、同時刻に完了したアーキテクチャレジスタへのライト命令についての情報として、権限レベル“H”、プログラムカウンタ値“00001000”、命令データ“3944014a”が示されている。また、“write arch_reg1,0x10”は、アーキテクチャレジスタ番号“arch_reg1”のアーキテクチャレジスタにライトデータ“0x10”の書き込みを行うことが示されている。
【0126】
上記の表示例のうち、“add r1,0x10,0x10”などの演算内容は、前述のように生成されるデバッグ用情報には含まれないが、デコードされた命令データと、テストプログラムに基づいて、デバッグ用情報出力部62によって生成可能である。
【0127】
デバッグ用情報の表示後、デバッグ作業実行部63は、たとえば、シミュレータなどによりテストプログラムを実行させたときに得られる期待動作を表す期待動作情報を生成して、ディスプレイ54aに表示させる。たとえば、ユーザは、表示される期待動作情報と上記デバッグ用情報とを比較してデバッグ作業を行う。
【0128】
たとえば、主記憶装置32に記憶されるデータが期待動作情報に含まれる期待値と異なるというエラーが発生した場合、ユーザは、デバッグ用情報と期待動作情報とを比較しながら問題発生箇所の特定を行う。
【0129】
たとえば、まず、データロード時に、データやアドレスが期待値と異なるものとなったのかが検証される。データロード時にデータやアドレスが期待値と異なるものとなっていれば、さらに、その前のデータストア時に、データやアドレスが期待値と異なるものとなったのかが検証される。データストア時にデータやアドレスが期待値と異なるものとなっていれば、さらに、その前のストアデータ作成時の演算処理にて期待値と異なるデータが生成されたのかが検証される。演算処理にて期待値と異なるデータが生成されていれば、さらに、その前のアーキテクチャレジスタの読み出し時に、期待と異なるデータが読み出されたのかが検証される。以上のように、動作を順に追っていくことにより、問題発生箇所の特定を行うことができる。
【0130】
デバッグ作業による問題発生箇所の特定後は、特定した問題発生箇所に関連するハードウェアモジュールに絞って調査が行われる。
なお、デバッグ作業実行部63が、デバッグ用情報と期待動作情報に基づいて問題発生箇所の特定を行ってもよい。
【0131】
図17は、デバッグ作業の一例の処理の流れを示す図である。
デバッグ作業実行部63は、シミュレータなどによりテストプログラムを実行させたときに得られる期待動作を表す期待動作情報を生成する(ステップS80)。そして、デバッグ作業実行部63は、デバッグ用情報と期待動作情報に基づいて、上記のような検証処理を行って問題動作(問題発生箇所)の特定を行う(ステップS81)。なお、デバッグ作業実行部63は、特定結果をディスプレイ54aに表示させるようにしてもよい。
【0132】
デバッグ用情報出力部62は、上記のようなソフトウェア動作と実際に用いられたハードウェアの動作との対応関係を示す情報を含むデバッグ用情報をディスプレイ54aに表示させることで、両者の対応関係の把握が容易となり問題発生箇所の特定が容易になる。
【0133】
これにより、デバッグ作業効率が上がりデバッグ時間を短縮できる。このため、試験対象サーバシステム21に対しての動作解析作業の効率化、短TAT化が実現できる。
なお、前述のように、上記の処理内容は、コンピュータであるデバッグ作業実行サーバ22にプログラムを実行させることで実現できる。
【0134】
プログラムは、コンピュータ読み取り可能な記録媒体(たとえば、記録媒体56a)に記録しておくことができる。記録媒体として、たとえば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FD及びHDDが含まれる。光ディスクには、CD、CD-R(Recordable)/RW(Rewritable)、DVD及びDVD-R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(たとえば、HDD53)にプログラムをコピーして実行してもよい。
【0135】
以上、実施の形態に基づき、本発明の情報処理プログラム、情報処理方法及び情報処理システムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【符号の説明】
【0136】
10 情報処理システム
11 プロセッサ
11a1~11an ハードウェアモジュール
11b 取得回路
12 記憶装置
13 デバッグ装置
13a 処理部
13b 記憶部
14 表示装置