(57)【要約】【課題】演算装置の処理を止めずに、データ破損の原因となりうるデータアクセス発生時のプログラムトレース情報を取得することのできる演算装置を提供する。【解決手段】  演算装置内のログ取得装置が、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合にプロセッサに対して割り込み要求を行う。プロセッサコアは、割り込み要求に基づいてプロセッサが送信したレジスタダンプを所定のレジスタダンプ記憶部に記録する。【選択図】図１
2017167615.tif 000002
【特許請求の範囲】
【請求項１】
データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合にプロセッサに対して割り込み要求を行う割り込み要求部と、
前記割り込み要求に基づいて前記プロセッサが記録したレジスタダンプを検出するレジスタダンプ検出部と、
を備えることを特徴とするログ取得装置。
【請求項２】
前記レジスタダンプを解析して、前記プロセッサの処理内容を示すトレース情報を生成するトレース情報生成部と、
を備えることを特徴とする請求項１に記載のログ取得装置。
【請求項３】
請求項１のログ取得装置を備えた演算装置。
【請求項４】
ログ取得装置とプロセッサとを備え、
前記ログ取得装置は、
データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合に前記プロセッサに対して割り込み要求を行う割り込み要求部と、
前記割り込み要求に基づいて前記プロセッサが記録したレジスタダンプを検出するレジスタダンプ検出部と、
を備え、
前記プロセッサは、
前記割り込み要求に基づいてレジスタダンプを取得するレジスタダンプ取得部と、
前記割り込み処理に基づいてレジスタダンプを取得し、そのレジスタダンプを所定のレジスタダンプ記憶部に記録するレジスタダンプ記録部と、
を備えることを特徴とする演算装置。
【請求項５】
データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合に割り込み処理を行う割り込み処理部と、
前記割り込み処理に基づいてレジスタダンプを取得し、そのレジスタダンプを所定のレジスタダンプ記憶部に記録するレジスタダンプ記録部と、
を備えることを特徴とするプロセッサ。
【請求項６】
ログ取得装置の処理方法であって、
データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合にプロセッサに対して割り込み要求を行い、
前記割り込み要求に基づいて前記プロセッサが記録したレジスタダンプを検出する
処理方法。
【請求項７】
プロセッサの処理方法であって、
データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合に割り込み処理を行い、
前記割り込み処理に基づいてレジスタダンプを取得し、そのレジスタダンプを所定のレジスタダンプ記憶部に記録する
処理方法。
【請求項８】
ログ取得装置に、
データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合にプロセッサに対して割り込み要求を行う割り込み要求ステップと、
前記割り込み要求に基づいて前記プロセッサが記録したレジスタダンプを検出するレジスタダンプ検出ステップと、
を実行させるプログラム。
【請求項９】
プロセッサに、
データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合に割り込み処理を行う割り込み処理ステップと、
前記割り込み処理に基づいてレジスタダンプを取得し、そのレジスタダンプを所定のレジスタダンプ記憶部に記録するレジスタダンプ記録ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ログ取得装置、演算装置、プロセッサ、処理方法、プログラムに関する。
【背景技術】
【０００２】
演算装置においてメモリに不正なデータを書き込んだ後、そのデータが破損すると、当該データの書き込み処理によるメモリアクセス自体は正常に終了するため演算装置は動作を継続する。しかしながら演算装置は書き込まれた不正データを参照してデータの矛盾を検出するまでそのデータが破損したことを検出できない。
【０００３】
関連技術として、マルチタスク環境下の特定のタスクにおいて、ＣＰＵが特定のライトアドレスにライトアクセスした場合に、その特定のタスクの動作を停止させ、特定のライトアドレスにデータが正常に書き込まれているかを検証する技術が特許文献１に開示されている。
また関連技術として、ＣＰＵから出力されるアドレス、データ、制御信号を解析して記録する技術が特許文献２に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２１３３９６号公報
【特許文献２】実開平５−１７７３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のような演算装置においてはデータの破損が発生したタイミングのログを採取してデータ破損の原因を後に調査できるようにすることが求められていた。
【０００６】
本発明は、上述の課題を解決するログ取得装置、演算装置、プロセッサ、処理方法、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の態様によれば、ログ取得装置は、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合にプロセッサに対して割り込み要求を行う割り込み要求部と、前記割り込み要求に基づいて前記プロセッサが記録したレジスタダンプを検出するレジスタダンプ検出部と、を備えることを特徴とする。
【０００８】
また本発明の第２の態様によれば、演算装置は、上述のログ取得装置を備える。
【０００９】
また本発明の第３の態様によれば、演算装置は、ログ取得装置とプロセッサとを備え、前記ログ取得装置は、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合に前記プロセッサに対して割り込み要求を行う割り込み要求部と、
前記割り込み要求に基づいて前記プロセッサが記録したレジスタダンプを検出するレジスタダンプ検出部と、を備え、前記プロセッサは、前記割り込み要求に基づいてレジスタダンプを取得するレジスタダンプ取得部と、前記割り込み処理に基づいてレジスタダンプを取得し、そのレジスタダンプを所定のレジスタダンプ記憶部に記録するレジスタダンプ記録部と、を備える。
【００１０】
また本発明の第４の態様によれば、プロセッサは、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合に割り込み処理を行う割り込み処理部と、前記割り込み処理に基づいてレジスタダンプを取得し、そのレジスタダンプを所定のレジスタダンプ記憶部に記録するレジスタダンプ記録部と、を備える。
【００１１】
また本発明の第５の態様によれば、ログ取得装置の処理方法は、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合にプロセッサに対して割り込み要求を行い、前記割り込み要求に基づいて前記プロセッサが記録したレジスタダンプを検出する。
【００１２】
また本発明の第６の態様によれば、プロセッサの処理方法は、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合に割り込み処理を行い、前記割り込み処理に基づいてレジスタダンプを取得し、そのレジスタダンプを所定のレジスタダンプ記憶部に記録する。
【００１３】
また本発明の第７の態様によれば、プログラムは、ログ取得装置に、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合にプロセッサに対して割り込み要求を行う割り込み要求ステップと、前記割り込み要求に基づいて前記プロセッサが記録したレジスタダンプを検出するレジスタダンプ検出ステップと、を実行させる。
【００１４】
また本発明の第８の態様によれば、プログラムは、プロセッサに、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合に割り込み処理を行う割り込み処理ステップと、前記割り込み処理に基づいてレジスタダンプを取得し、そのレジスタダンプを所定のレジスタダンプ記憶部に記録するレジスタダンプ記録ステップと、を実行させる。
【発明の効果】
【００１５】
本発明によれば、演算装置の処理を止めずに、データ破損の原因となりうるアクセス発生時のプログラムトレース情報を取得することができ、後のデータ破損の原因調査に役立てることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の第一の実施形態による演算装置を示す第一の図である。
【図２】本発明の第一の実施形態によるログ取得装置の機能構成を示す図である。
【図３】本発明の第一の実施形態によるＲＡＭ内の記録エリアの構成を示す図である。
【図４】本発明の第一の実施形態による演算装置におけるログ取得の処理フローを示す図である。
【図５】本発明の第一の実施形態によるスタック領域に格納される情報を示す図である。
【図６】本発明の一実施形態によるログ取得装置の最小構成を示す図である。
【図７】本発明の第二の実施形態による演算装置を示す第二の図である。
【図８】本発明の一実施形態によるプロセッサの最小構成を示す図である。
【発明を実施するための形態】
【００１７】
（第一実施形態）
以下、本発明の第一実施形態による演算装置を図面を参照して説明する。
図１は第一実施形態による演算装置を示す第一の図である。
演算装置１は、プロセッサの一例であるＣＰＵ（Central Processing Unit）１１と、主記憶装置の一例であるＲＡＭ（Random Access Memory）１２とを備えている。ＣＰＵ１１とＲＡＭ１２とはデータパス１１５を介して接続されている。
【００１８】
ＣＰＵ１１は、プロセッサコア（Processor Core）１１１と、ログ取得装置１１２とメモリコントローラ（Memory Controller）１１４を備えている。プロセッサコア１１１はログ取得装置１１２とデータパス１１６で接続される。ログ取得装置１１２とメモリコントローラ１１４とはデータパス１１３を介して接続される。
【００１９】
ＲＡＭ１２にはプロセッサコア１１が実行するプログラム（以下、ファームウェアと呼ぶ）及びファームウェアが使用するデータを保存するファームウェア使用エリア１２１が設けられている。またＲＡＭ１２にはログを保存するためのログエリア１２２が設けられている。
【００２０】
図２はログ取得装置の機能構成を示す図である。
ログ取得装置１１２は図２に示すように、比較アドレスレジスタ１１２１、アドレス比較回路１１２２と、ログ取得回路１１２３、制御信号識別回路１１２４、プログラムトレース生成回路１１２５、割り込み発生回路１１２６の各機能を備えている。ログ取得装置１１２の各機能に対応する回路は、それぞれデータパスで接続されている。
【００２１】
プロセッサコア１１１はアドレス信号、データ信号、制御信号を送信する。プロセッサコア１１１とログ取得装置１１２とは、それら信号を伝送するためのデータパスで接続されている。ログ取得装置１１２は割り込み信号を出力する。この割り込み信号は、プロセッサコア１１１とログ取得装置１１２との間を接続するデータパスを介してプロセッサコア１１１へ出力される。ログ取得装置１１２とメモリコントローラ１１４はデータパスで接続される。ログ取得装置１１２はそのデータパスを介してアドレス信号、データ信号、制御信号をメモリコントローラ１１４へ出力する。ログ取得装置１１２は、メモリコントローラ１１４を介してＲＡＭ１２に対するデータ読み込み（Ｒｅａｄ）、データ書き込み（Ｗｒｉｔｅ）などのデータアクセスを行う。
【００２２】
図３はＲＡＭ内の記録エリアの構成を示す図である。
図３（ａ）で示すように、ファームウェア使用エリア１２１は、実行命令を格納するコード領域１２１１と、ファームウェアの実行に必要な制御データ等を格納するスタック（Ｓｔａｃｋ）領域１２１２を少なくとも備える。また図３（ｂ）で示すように、ログエリア１２２は、１〜Ｎの複数のログエントリ（Log Entry）の格納領域が設けられる。各ログエントリには、アドレス、書き込みデータ、書き込み元情報、レジスタダンプ、プログラムトレースなどの情報が含まれる。
【００２３】
本実施形態の演算装置１においてログ取得装置１１２は、ＲＡＭ１２の予め設定した特定のアドレスに対するデータ書き込み（write）のデータアクセスを検出する。またログ取得装置１１２は、特定のアドレスへのデータ書き込みを検出した場合に、書き込みデータや書き込み元情報などを保存する。またログ取得装置１１２は、特定のアドレスへのデータ書き込みを契機にＣＰＵ１１に対して、割り込み要求を行う。
【００２４】
割り込み要求を取得したＣＰＵ１１は、割り込み処理を実行する。ＣＰＵ１１は割り込み処理によって、レジスタ情報をＲＡＭ１２にダンプする。ログ取得装置１１２は、このダンプされたレジスタ情報を元に、ＣＰＵ１１のスタック領域を解析する。ログ取得装置１１２は、ＣＰＵ１１のスタック領域の解析により、ＣＰＵ１１の実行したプログラムのトレース情報をログとして保存する。
ＣＰＵ１１は割り込み処理を終了した後、通常処理に戻り中断した動作を継続する。これにより演算装置１は、演算装置１としての動作を継続しつつ、特定アドレスへのデータ書き込みに関するログを取得できる。
【００２５】
図４は演算装置におけるログ取得の処理フローを示す図である。
次に演算装置におけるログ取得処理について説明する。
演算装置１は、予めＲＡＭ１２内においてデータの破損が起きると予想される記憶エリアのアドレス(以下、アドレスＮと呼ぶ)を比較アドレスレジスタ１１２１に記録しておく。
【００２６】
アドレス比較回路１１２２は、プロセッサコア１１１から出力されるアドレス信号が示すアドレスと、比較アドレスレジスタ１１２１に記録されているアドレスＮとを比較する。アドレス比較回路１１２２は、アドレス信号が示すアドレスとアドレスＮとが一致した場合に、ログ取得回路１１２３にアドレスが一致したことを通知する。
【００２７】
制御信号識別回路１１２４は、プロセッサコア１１１の出力する制御信号を解析する。制御信号識別回路１１２４は、プロセッサコア１１１の行うデータアクセスがデータ書き込み命令であった場合、ログ取得回路１１２３にデータ書き込み命令が発行されたことを通知する。
【００２８】
ログ取得回路１１２３（レジスタダンプ検出部）は、アドレス比較回路１１２２と、制御信号識別回路１１２４からの通知のＡＮＤを取る。ログ取得回路１１２３は両方から通知を受けた場合には、プロセッサコア１１１の発行するデータアクセスのうち、アドレスＮへのデータ書き込み命令を検出する（ステップＳ１０１）。
【００２９】
ログ取得回路１１２３は、アドレスＮへのデータ書き込み命令を検出した場合、ＲＡＭ１２内のログエントリ（以下、ログエントリＭと呼ぶ）を作成し、そのログエントリＭにアドレスＮの情報、書き込みデータ、書き込み元であるプロセッサコア１１１の情報を保存する（ステップＳ１０２）。ログ取得回路１１２３ログエントリＭにそれら情報を書き込むと、割り込み発生を行うよう割り込み発生回路１１２６へ指示する（ステップＳ１０３）。
【００３０】
割り込み発生回路１１２６（割り込み要求部）は、データ書き込み命令の発行元であるプロセッサコア１１１に割り込み信号を出力する。これによりプロセッサコア１１１は割り込み処理を開始すると決定する。この時ログ取得回路１１２３は、ログエリア１２２の先頭などあらかじめ定めたエリアにログエントリＭのアドレス情報を保存しておく。プロセッサコア１１１は、この所定のエリアを参照することでログエントリＭの先頭アドレスを認識することができる。
【００３１】
プロセッサコア１１１は、割り込み信号を取得すると、コード領域１２１１内に記録されているプログラムを実行して割り込み処理を行う（ステップＳ１０４）。そしてプロセッサコア１１１は、この割り込み処理において、ログエントリＭ内のレジスタダンプ格納領域に、その割り込み処理開始の直後におけるプロセッサコア１１１のレジスタダンプのデータを格納する（ステップＳ１０５）。レジスタダンプのデータは、プロセッサコア１１１における、ある瞬間の記憶するデータ全てであってよい。
【００３２】
プロセッサコア１１１は、レジスタダンプのデータを格納した後、割り込み処理を完了する（ステップＳ１０６）。プロセッサコア１１１は通常処理に戻る。これにより演算装置は割り込み処理前の処理を継続する。
【００３３】
ログ取得回路１１２３は、ログエントリＭ内のレジスタダンプ格納領域を監視する。ログ取得回路１１２３は、レジスタダンプのデータが格納されると、プロセッサコア１１１のレジスタダンプ完了を検出する（ステップＳ１０７）。ログ取得回路１１２３は、レジスタダンプ格納の完了を検出すると、プログラムトレース生成回路１１２５（トレース情報生成部）にログエントリＭのアドレスを通知し、プログラムトレースを行うよう指示する。
【００３４】
プログラムトレース生成回路１１２５は、ログ取得回路１１２３からプログラムトレースを行う指示を受けると、指定されたログエントリＭのレジスタダンプ格納領域に保存されたレジスタダンプのデータを読み取る（ステップＳ１０８）。プログラムトレース生成回路１１２５は、読み取ったレジスタダンプのデータ内から、スタック（Stack）ポインタの示すアドレスを取得する。プログラムトレース生成回路１１２５は、そのアドレスに基づいて、ＲＡＭ１２内のスタック領域１２１２のうち、該当するスタック領域のデータを読み出す。
【００３５】
図５はスタック領域に格納される情報を示す図である。
スタック領域には、例えば図５に示すように、次スタックへのポインタ情報(Back chain)や、関数の呼び出し元情報(LR（Link Register） save word)などを記憶している。プログラムトレース生成回路１１２５は、ＬＲ（Link Register）によって、直前に実行されたプログラムアドレスを特定するとともに、Bach chainから次スタックの格納エリアをたどり、ＬＲを取得する。プログラムトレース生成回路１１２５はこれらの解析により、プロセッサコア１１１が実行してきたプログラムアドレスを示すプログラムトレース情報を生成する（ステップＳ１０９）。プログラムトレース生成回路１１２５は、生成したプログラムトレース情報をログエントリＭ内のプログラムトレース格納エリアに保存する（ステップＳ１１０）。
【００３６】
その後、演算装置１が処理を継続し、破損されたデータを読み出してデータの矛盾を検出した場合には処理を停止する。この場合、演算装置１はＲＡＭ１２に保存されたログエントリＭを取得する。演算装置１は取得したログエントリＭに含まれるデータのうち、書き込みデータを参照することでデータを破損したアクセスを特定する。演算装置１はこのアクセスに関するログエントリＭを取得することができる。演算装置１は取得したログエントリＭに含まれるプログラムトレース情報を解析することで、プログラムの動作を検証し、データ破損の原因調査に役立てることが可能となる。
【００３７】
上述の演算装置におけるログ取得装置の処理によれば、演算装置１の処理を止めずに、データ破損の原因となりうるデータ書き込みのアクセス発生時のプログラムトレース情報を取得することができ、後のデータ破損の原因調査に役立てることができる。
【００３８】
上述の処理においては、ログ取得回路１１２３は、プロセッサコア１１１のレジスタダンプの完了をログエントリＭの監視によって検出している。しかしながらレジスタダンプ完了後にプロセッサコア１１１がログ取得回路１１２３に割り込みを発生させることで、ログ取得回路１１２３がレジスタダンプの完了を検知してもよい。
【００３９】
図６は第一実施形態によるログ取得装置の最小構成を示す図である。
この図が示すようにログ取得装置１１２は少なくとも、割り込み要求部１１２−１とレジスタダンプ検出部１１２−２を備える。
割り込み要求部１１２−１は上述の割り込み発生回路１１２６に対応し、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合にプロセッサに対して割り込み要求を行う。
レジスタダンプ検出部１１２−２は上述の割り込み発生回路１１２６に対応し、割り込み要求に基づいてプロセッサコア１１１が記録したレジスタダンプを検出する。
【００４０】
（第二実施形態）
図７は第二実施形態による演算装置を示す第二の図である。
図７を用いてプロセッサコア１１１が備えるトランスレーション・ルックアサイド・バッファ(以下、ＴＬＢと称す)１１７と、割り込み処理から呼び出されるログ採取プログラム１２３を用いてログ取得装置１１２の機能を実現した場合の例を示す。
あるコンピュータ装置においては、特定のＴＬＢ１１７にヒットするアクセスが発生した場合に、ＴＬＢエラー（TLB Error）割り込みを、プロセッサコア１１１に発生させることができる。よってアドレスＮを含むＴＬＢ１１７にヒットするアクセスで、エラーを発生するようあらかじめ設定することにより、アドレスＮへのアクセスをプロセッサコア１１１で検出することができる。
【００４１】
プロセッサコア１１１は、ＴＬＢエラーが発生した場合、ＴＬＢエラー割り込み処理を実行する。ＴＬＢエラー割り込み処理は、ＴＬＢエラー発生時のレジスタを参照し、アクセスがアドレスＮへのデータ書き込みアクセスかどうかを判別する処理である。アドレスＮへのデータ書き込みのアクセスの場合、プロセッサコア１１１は、ＲＡＭ１２に格納したログ採取プログラム１２３を実行する。ログ採取プログラム１２３は図４に示す各処理をプロセッサコア１１１行う。すなわち、プロセッサコア１１１は、ＲＡＭ１２にログエントリＭを作成し、ログデータ(アドレス、書き込みデータ、書き込み元情報、レジスタダンプ、プログラムトレース)を保存する。ログ採取プログラム１２３の実行後、プロセッサコア１１１は通常処理に戻り、演算処理を継続する。プロセッサコア１１１はアドレスＮへのデータ書き込みのアクセスでないと判定した場合は、通常のＴＬＢエラーの処理を実行する。
【００４２】
図８は本発明の第二実施形態によるプロセッサの最小構成を示す図である。
この図が示すようにプロセッサ１１０は少なくともプロセッサコア１１１、割り込み要求部１１１−１、レジスタダンプ記録部１１１−２を備える。
プロセッサコア１１１はマイクロプロセッサの中核部で、演算処理を行うための論理回路や１次キャッシュなどを備える。
割り込み要求部１１１−１は、データ破損が予想される主記憶装置の予想アドレスへのデータアクセスを検出した場合に割り込み処理を行う。
レジスタダンプ記録部１１１−２は、割り込み処理に基づいてレジスタダンプを取得し、そのレジスタダンプを所定のレジスタダンプ記憶部に記録する。
【符号の説明】
【００４３】
１・・・演算装置
１１・・・ＣＰＵ
１２・・・ＲＡＭ
１１１・・・プロセッサコア
１１２・・・ログ取得装置
１１４・・・メモリコントローラ
１１２１・・・比較アドレスレジスタ
１１２２・・・アドレス比較回路
１１２３・・・ログ取得回路
１１２４・・・制御信号識別回路
１１２５・・・プログラムトレース生成回路
１１２６・・・割り込み発生回路
【図１】
2017167615.tif 000003
【図２】
2017167615.tif 000004
【図３】
2017167615.tif 000005
【図４】
2017167615.tif 000006
【図５】
2017167615.tif 000007
【図６】
2017167615.tif 000008
【図７】
2017167615.tif 000009
【図８】
2017167615.tif 000010