(57)【要約】【課題】電子機器において致命的な障害が発生した場合、ＣＰＵが障害とは、無関係（非同期）の命令を実行中であっても、その障害に関する情報をメモリアクセス命令の処理効率を低下させることなく提示することが可能な情報処理装置等を提供する。【解決手段】ＣＰＵの内部に、主記憶装置に対するアクセス命令の実行に先立って、レジスタからレジスタ値を取得し、アクセス命令を実行する命令実行部と、格納する区画に対し識別のための識別番号を付与すると共に、レジスタ値を格納する第１の格納部と、アクセス命令の実行によって、出力された指定アドレスと識別番号とに基づいて、拡張アドレスを生成する第１の制御部と、出力先のデバイスと拡張アドレスとを基に拡張アドレスと指定アドレスとの何れか一方を選択する第２の制御部とを有し、前記ＣＰＵの外部に、拡張アドレスを基に主記憶装置にアクセスした際に、指定アドレスが異常であった場合に、拡張アドレスを外部に通知する第３の制御部とを備えることを特徴とする情報処理装置。【選択図】      図１
2013175076.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵの内部に、
主記憶装置に対するアクセス命令の実行に先立って、レジスタからレジスタ値を取得し、前記アクセス命令を実行する命令実行部と、
格納する区画に対し識別のための識別番号を付与すると共に、前記レジスタ値を格納する第１の格納部と、
前記アクセス命令の実行によって、出力された指定アドレスと前記識別番号とに基づいて、拡張アドレスを生成する第１の制御部と、
出力先のデバイスと前記拡張アドレスとを基に前記拡張アドレスと前記指定アドレスとの何れか一方を選択する第２の制御部とを有し、
前記ＣＰＵの外部に、
前記第２の制御部によって選択された前記拡張アドレスを基に前記主記憶装置にアクセスした際に、前記指定アドレスが異常であった場合に、前記拡張アドレスを外部に通知する第３の制御部とを備えることを特徴とする情報処理装置。
【請求項２】
前記第３の制御部から、異常を通知する前記拡張アドレスが出力されるのに応じて、前記拡張アドレスを基に前記識別番号を出力する一方で、異常の原因となった前記指定アドレスと前記識別番号と前記レジスタ値とを提示する情報提示部と、
該識別番号に対応した前記レジスタ値を前記第１の格納部から取得すると共に、前記レジスタ値を前記情報提示部に出力する情報制御部と、
を前記ＣＰＵ内部にさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
主記憶装置に対するアクセス命令の実行に先立って、レジスタからレジスタ値を取得し、前記アクセス命令を実行し、
格納する区画に対し識別のための識別番号を付与すると共に、前記レジスタ値を格納し、
前記アクセス命令の実行によって、出力された指定アドレスと前記識別番号とに基づいて、拡張アドレスを生成し、
出力先のデバイスと前記拡張アドレスとを基に前記拡張アドレスと前記指定アドレスとの何れか一方を選択し、選択された前記拡張アドレスを基に前記主記憶装置にアクセスした際に、前記指定アドレスが異常であった場合に、前記拡張アドレスを外部に通知する情報処理装置における異常分析方法。
【請求項４】
異常を通知する前記拡張アドレスが出力されるのに応じて、前記拡張アドレスを基に前記識別番号を出力する一方で、異常の原因となった前記指定アドレスと前記識別番号と前記レジスタ値とを提示し、
該識別番号に対応した前記レジスタ値を取得すると共に、前記レジスタ値を出力する
請求項３に記載の情報処理装置における異常分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器等の情報処理装置に対して発生した異常の原因を分析する技術分野に関する。
【背景技術】
【０００２】
近年、サーバやパーソナルコンピュータ等の電子機器は、高い信頼性を実現するために、オペレーティングシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ；以降、「ＯＳ」と称する）上でエラーが発生することを抑えるだけでなく、発生したエラーの影響を極小化することが重要となっている。しかしながら、サーバやパーソナルコンピュータ等の電子機器は、ハードウェアおよびソフトウェアの不具合が起因して、致命的な障害が発生する。そのため、致命的な障害が発生した場合、サーバやパーソナルコンピュータ等の電子機器は、動作停止（ダウン）状態となる。
【０００３】
例えば、ＯＳ上でプログラムを実行する際、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、メモリ（主記憶装置）に格納された命令を実行する。ＯＳは、ＣＰＵが実行したプログラムによって、不正なメモリアドレスへアクセスするように指定された場合、システムを継続する上でリカバリ不能な障害を発生する。ＯＳは、リカバリ不能な不具合によって、システムをダウンする。このような、システムダウンが発生した場合、システム管理者は、障害の原因を特定する必要がある。そのため、システム管理者は、障害の原因を特定するために、不具合が発生した時のＣＰＵレジスタ値等の情報を解析する。
【０００４】
より具体的に、一般的な解析方法は、ＣＰＵレジスタやメモリの内容を記憶したダンプ情報を解析する方法やＯＳコードの実行パスをトレースする方法が存在する。これらの解析方法は、CPUの命令実行と同期的に発生する不具合および性能問題等に対しては有効な手段である。例えば、特許文献１は、情報処理装置の障害情報格納方法について開示する。
【０００５】
特許文献１に記載された情報処理装置は、バス上に制御部および各入出力装置の作動状態を示すステイタス情報を、送出するための信号線を有する。さらに、特許文献１は、上記バスに上記ステイタス情報を格納するステイタス情報格納部と、上記ステイタス情報をメモリアクセスの度にステイタス情報格納部に格納する格納制御手段とを有する。これにより、特許文献１は、メモリにアクセスが実行される度にアクセスされたメモリのアドレスに対応するステイタス情報をステイタス情報格納部に格納する。このため、情報処理装置に障害が発生した場合、特許文献１は、ステイタス情報格納部に格納された内容を読み出せば、メモリ部のどのアドレスにアクセスしたときに、障害が発生したかという情報を得ることができる。さらに、特許文献１は、制御部および入出力装置がどのようなアクセスを実行した時に、障害が発生したかという情報を得ることができる。
【０００６】
このように、特許文献１は、メモリに格納した情報が不良になり障害が発生したタイミングおよび入出力装置等の不良原因を特定する技術を開示する。
【０００７】
また、特許文献２は、一定間隔毎にデータバス、アドレスバス、制御線のデータをトレースメモリに格納し、格納したバス毎のデータを基にエラー原因の解析を行うコンピュータシステムのリトライ処理装置について開示する。
【０００８】
特許文献２に記載されたコンピュータシステムのリトライ処理装置は、レジスタ、プログラムカウンタ、スタックポインタを有するデータ処理手段（ＣＰＵ）と、主記憶手段（主記憶装置）と、データバス、アドレスバス、制御線のデータを格納するトレースメモリと、主記憶手段へのアクセスおよびトレースメモリの制御を行うシステム制御部とを有する。特許文献２は、一定間隔毎にデータ処理手段からレジスタ、プログラムカウンタ、スタックポインタの値をチェックポイントとして、主記憶手段の所定のアドレスに書き出す。また、特許文献２は、バスサイクル毎のデータバス、アドレスバス、制御線のデータをデータバス用トレースメモリ、アドレスバス用トレースメモリ、制御線用トレースメモリに格納する。さらに、エラー発生時、特許文献２は、データバス、アドレスバス、制御線のデータを保持するために、各トレースメモリに格納することを停止する。これにより、特許文献２は、トレースメモリに格納されたデータバス、アドレスバス、制御線のデータを基にエラー原因の解析を行う。さらに、特許文献２は、エラー発生後のチェックポイントの値をエラー発生前にデータ処理手段から書き出したチェックポイントの値に戻すことにより、リトライ処理を可能にする。
【０００９】
このように、特許文献２は、トレースメモリに格納されたデータバス、アドレスバス、制御線のデータを基にエラー原因を解析する技術を開示する。
【００１０】
また、特許文献３に記載された情報処理装置は、メモリアクセス命令で指定されたアドレスに、当該命令実行時のレジスタ値を付加してアドレスを拡張（拡張アドレス）し、この拡張アドレスを用いてメモリアクセスを実施する。また、メモリアクセス命令に対するエラーが発生した場合、特許文献３は、拡張アドレスをユーザに提示する。これにより、特許文献３は、エラー発生時にＣＰＵが別の命令を実行していたとしても、エラー発生の原因となった命令を実行した際のレジスタ値とメモリアクセス命令に指定されたアドレスを基にエラー原因を解析する技術を開示する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開昭６３−２３１６４１号公報
【特許文献２】特開平０９−０８１４０５号公報
【特許文献３】特開２０１１−１６４７３０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ところで、近年、ＣＰＵは、例えば、プログラムで記述されている順序とは異なる順序でプログラム中の命令を実行するアウト・オブ・オーダー（Ｏｕｔ−ｏｆ−Ｏｒｄｅｒ）実行等の処理効率を上げるための手法が採用されている。このため、ＣＰＵは、同時に複数の命令をメモリアクセス命令の完了を待たずに実行することが可能である。そのため、システム内部の致命的な障害が発生した場合、ＣＰＵは、障害の原因となったメモリアクセス命令とは無関係（非同期）の命令を実行することによって、障害の原因となったＣＰＵレジスタ値を変更する。一例として、コンピュータシステムは、ＣＰＵにＩＡ−６４（Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ６４）を搭載すると共に、ＭＣＡ（Ｍａｃｈｉｎｅ  Ｃｈｅｃｋ  Ａｒｃｈｉｔｅｃｔｕｒｅ）によって、エラーをリカバリ処理する場合などが、これに相当する。
【００１３】
そのため、上述した特許文献１および特許文献２に記載された解析方法では、ＣＰＵが障害の原因となったメモリアクセス命令とは無関係の命令を実行した場合、ＣＰＵレジスタ値が変更されているために、ＣＰＵレジスタ値を解析することが困難である。このため、システム管理者は、メモリアクセス命令の発行位置を特定することが不可能である。また、システム管理者は、ＣＰＵレジスタ値の解析に時間を要したにも関らず、原因を特定できない。
【００１４】
このため、コンピュータシステムは、ＯＳやプログラム等のメモリアクセスに関するバグ（不具合）が増えた場合、修正できないバグが多く残ることによって、システムの安定的な運用が困難となる。
【００１５】
さらに、特許文献２では、バスサイクル毎のデータバス、アドレスバス、制御線のデータをデータバス用トレースメモリ、アドレスバス用トレースメモリ、制御線用トレースメモリに格納する。このため、エラー原因を解析する際、特許文献２は、必要に応じて各トレースメモリに格納したそれぞれのデータを解析する。そのため、特許文献２は、エラーの原因を特定するまでの解析に多大な時間を必要とする。また、特許文献２は、ＣＰＵが同時に複数の命令を実行した場合に関して何ら言及されていない。
【００１６】
また、特許文献３では、メモリアクセス命令で指定されたアドレスに、当該命令実行時のレジスタ値を付加することで、エラー発生の原因となったメモリアクセス命令とレジスタ値とを取得する。これにより、特許文献３は、エラー発生時にＣＰＵが別の命令を実行していたとしても、エラー発生の原因となったメモリアクセス命令とレジスタ値を基にエラー原因を解析する。特許文献３は、エラーの原因を特定することができるが、メモリアクセス命令で指定されたアドレスにレジスタ値を付加するため、アドレス長が長くなる場合がある。そのため、特許文献３は、メモリアドレスバスを流れるデータ量が増加し、メモリアクセス命令の処理速度を低下させる等の影響を及ぼす場合がある。
【００１７】
本発明の主たる目的は、上述した課題である致命的な障害が発生した場合、ＣＰＵが障害とは、無関係（非同期）の命令を実行中であっても、その障害に関する情報をメモリアクセス命令の処理効率を低下させることなく提示することが可能な情報処理装置等を提供することにある。
【課題を解決するための手段】
【００１８】
上記の課題を達成すべく、本発明に係る情報処理装置は、以下の構成を備えることを特徴とする。
【００１９】
即ち、本発明に係る情報処理装置は、
ＣＰＵの内部に、主記憶装置に対するアクセス命令の実行に先立って、レジスタからレジスタ値を取得し、前記アクセス命令を実行する命令実行部と、格納する区画に対し識別のための識別番号を付与すると共に、前記レジスタ値を格納する第１の格納部と、前記アクセス命令の実行によって、出力された指定アドレスと前記識別番号とに基づいて、拡張アドレスを生成する第１の制御部と、出力先のデバイスと前記拡張アドレスとを基に前記拡張アドレスと前記指定アドレスとの何れか一方を選択する第２の制御部とを有し、前記ＣＰＵの外部に、前記第２の制御部によって選択された前記拡張アドレスを基に前記主記憶装置にアクセスした際に、前記指定アドレスが異常であった場合に、前記拡張アドレスを外部に通知する第３の制御部とを備えることを特徴とする。
【００２０】
また、同目的を達成すべく、本発明に係る主記憶装置における異常分析方法は、以下の構成を備えることを特徴とする。
【００２１】
即ち、本発明に係る情報処理装置における異常分析方法は、
主記憶装置に対するアクセス命令の実行に先立って、レジスタからレジスタ値を取得し、前記アクセス命令を実行し、格納する区画に対し識別のための識別番号を付与すると共に、前記レジスタ値を格納し、前記アクセス命令の実行によって、出力された指定アドレスと前記識別番号とに基づいて、拡張アドレスを生成し、出力先のデバイスと前記拡張アドレスとを基に前記拡張アドレスと前記指定アドレスとの何れか一方を選択し、選択された前記拡張アドレスを基に前記主記憶装置にアクセスした際に、前記指定アドレスが異常であった場合に、前記拡張アドレスを外部に通知することを特徴とする。
【発明の効果】
【００２２】
本発明によれば、致命的な障害が発生した場合、ＣＰＵが障害とは、無関係（非同期）の命令を実行中であっても、その障害に関する情報をメモリアクセス命令の処理効率を低下させることなく提示することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施形態における情報処理装置の構成を示すブロック図である。
【図２】本発明の第２の実施形態における情報処理装置の構成を示すブロック図である。
【図３】本発明の第２の実施形態の実施例における情報処理装置の構成を示すブロック図である。
【図４】本発明の第２の実施形態の実施例における情報処理装置が行う処理を示すフローチャート図である。
【発明を実施するための形態】
【００２４】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００２５】
＜第１の実施形態＞
図１は、本発明の第１の実施形態における情報処理装置１の構成を示すブロック図である。
【００２６】
図１において、情報処理装置１は、大別して、ＣＰＵ２、第３の制御部９を有する。
【００２７】
より具体的に、ＣＰＵ２は、命令実行部３、第１の格納部５、第１の制御部６、第２の制御部７を有する。
【００２８】
命令実行部３は、主記憶装置１０にアクセスすると共に、主記憶装置１０に格納された各種命令を、取出して実行する。
【００２９】
レジスタ４は、命令実行部３によって、命令を実行する際に必要なレジスタ値を格納する記憶ユニットである。命令実行部３は、各種命令を実行するために必要なレジスタ値をレジスタ４から読み出す。また、命令実行部３は、各種命令を実行するために必要なレジスタ値をレジスタ４に格納する。尚、レジスタ値は、例えば、命令実行部３が実行する命令や命令実行部３が実行した結果、命令実行部３が主記憶装置１０にアクセスする際のアドレス等、現在ではレジスタ値について一般的に知られているため、本実施形態における詳細な説明は省略する（以下の実施形態においても同様）。
【００３０】
第１の格納部５は、主記憶装置１０に対するアクセス命令を実行する際、レジスタ４に格納された全てのレジスタ値を格納すると共に、レジスタ値を格納した区画に対して、識別番号を付与する。
【００３１】
また、第１の格納部５は、レジスタ値を格納する区画の先頭から格納した順序で格納する。さらに、第１の格納部５は、レジスタ値を格納することのできる上限に達した場合、先頭の区画に戻り、レジスタ値を格納する。
【００３２】
第１の制御部６は、命令実行部３から送信されたところの、主記憶装置１０に対してアクセスするための指定アドレスを受信する。次に、第１の制御部６は、第１の格納部５からアクセス命令に対応した識別番号を読み出す。さらに、第１の制御部６は、受信した指定アドレスと第１の格納部５から読み出した識別番号を基に拡張アドレスを生成する。また、第１の制御部６は、生成した拡張アドレスを第２の制御部７に送信する。
【００３３】
尚、第１の制御部６は、指定アドレスの下位ビット側に識別番号を付加することにより、拡張アドレスを生成する。より具体的に、第１の制御部６は、「”指定アドレス”、”識別番号”」のように指定アドレスを拡張する。
【００３４】
第２の制御部７は、第１の制御部６から出力された拡張アドレスを受信する。さらに、第２の制御部７は、受信した拡張アドレスを基に指定アドレスを選択し、選択した指定アドレスをキャッシュ８に出力する。
【００３５】
また、第２の制御部７は、指定アドレスを基にキャッシュ８を参照し、キャッシュ８に所望のデータがあった場合、キャッシュ８から所望のデータを取得すると共に、取得した所望のデータを命令実行部３に出力する。一方、第２の制御部７は、キャッシュ８に所望のデータが無かった場合、拡張アドレスを選択し、選択した拡張アドレスを第３の制御部９に出力する。
【００３６】
キャッシュ８は、主記憶装置１０に格納されたデータにおいて、命令実行部３が頻繁に使用するデータを格納する。尚、キャッシュ８は、現在では一般的に知られているため、本実施形態における詳細な説明は省略する（以下の実施形態においても同様）。
【００３７】
第３の制御部９は、第２の制御部７から送信された拡張アドレスを受信する。また、第３の制御部９は、受信した拡張アドレスの上位ビット側にある指定アドレスを基に主記憶装置１０にアクセスする。さらに、第３の制御部９は、指定アドレスが主記憶装置１０の範囲外である場合等の異常を検知する。第３の制御部９は、異常を検知した場合、拡張アドレスを出力する。
【００３８】
次に、本発明の第１の実施形態に係るより具体的な情報処理装置１の動作について説明する。
【００３９】
命令実行部３は、主記憶装置１０に格納されたデータ等を取得するために、メモリアクセス命令を実行するための準備を行う。
【００４０】
命令実行部３は、メモリアクセス命令を実行するための準備が整った場合、レジスタ４に格納されたレジスタ値を取得すると共に、第１の格納部５に出力する。
【００４１】
第１の格納部５は、命令実行部３から出力されたレジスタ値を受信すると共に、受信したレジスタ値を格納する。第１の格納部５は、レジスタ値を先頭の区画から受信した順序で格納する。また、第１の格納部５は、レジスタ値を格納することのできる上限に達した場合、先頭の区画に戻り、レジスタ値を先頭の区画から受信した順序で格納する。その際、第１の格納部５は、既に格納されたレジスタ値を上書きすることによって、レジスタ値を格納する。
【００４２】
第１の格納部５は、レジスタ値を格納した区画を識別するために、格納した区画に対して識別番号を付与する。また、第１の格納部５は、レジスタ値を格納した順序で識別番号を付与する。
【００４３】
命令実行部３は、メモリアクセス命令を実行すると共に、主記憶装置１０にアクセスするための指定アドレスを第１の制御部６に出力する。
【００４４】
第１の制御部６は、命令実行部３から出力された指定アドレスを受信すると共に、第１の格納部５よりメモリアクセス命令に対応した識別番号を読み出す。また、第１の制御部６は、指定アドレスの下位ビット側に識別番号を付加することによって、拡張アドレスを生成する。さらに、第１の制御部６は、拡張アドレスを第２の制御部７に出力する。
【００４５】
第２の制御部７は、第１の制御部６から出力された拡張アドレスを受信する。さらに、第２の制御部７は、受信した拡張アドレスを基に指定アドレスを選択し、選択した指定アドレスをキャッシュ８に出力する。
【００４６】
また、第２の制御部７は、指定アドレスを基にキャッシュ８を参照し、キャッシュ８に所望のデータがあった場合、キャッシュ８から所望のデータを取得すると共に、取得した所望のデータを命令実行部３に出力する。一方、第２の制御部７は、キャッシュ８に所望のデータが無かった場合、拡張アドレスを選択し、選択した拡張アドレスを第３の制御部９に出力する。
【００４７】
第３の制御部９は、第２の制御部７から出力された拡張アドレスを受信すると共に、受信した拡張アドレスの上位ビット側にある指定アドレスを基に主記憶装置１０にアクセスする。
【００４８】
第３の制御部９は、指定アドレスにアクセスした際、指定アドレスが主記憶装置１０のアドレス範囲外等のリカバリ不可能な値である場合、アクセスエラーであると判別すると共に、エラー情報として、拡張アドレスを出力する。
【００４９】
第３の制御部９は、アクセスエラーであると判別した場合、例えば、ＯＳとインターフェイスを有する不図示の通知部を経由してＯＳに拡張アドレスを出力することによって、システム管理者やユーザに拡張アドレスを通知する。
【００５０】
このように本実施の形態に係る情報処理装置１によれば、主記憶装置１０に対するアクセスにおいて、致命的な障害が発生した場合、ＣＰＵが障害とは、無関係（非同期）の命令を実行中であっても、その障害に関する情報をメモリアクセス命令の処理効率を低下させることなく提示することができる。その理由は、本実施形態によれば、提示された拡張アドレスは、主記憶装置１０にアクセスした指定アドレスとアクセス命令を発行した際のレジスタ値を格納した識別番号を付加したアドレスである。そのため、システム管理者は、取得した拡張アドレスを基に解析することが可能となるため、効率よく障害の原因を特定することができる。さらに、情報処理装置１では、引用文献３と比較して拡張アドレスのアドレス長が短くなるため、メモリアドレスバスを流れるデータ量が大幅に軽減される。そのため、情報処理装置１は、メモリアクセス命令の処理効率を低下させることなく実現することができる。
【００５１】
＜第２の実施形態＞
次に、上述した第１の実施形態に係る情報処理装置１を基本とする第２の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明する。その際、上述した第１の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。
【００５２】
図２は、本発明の第２の実施形態における情報処理装置１ａの構成を示すブロック図である。
【００５３】
本実施形態では、第１の実施形態において説明した情報処理装置１に、大別して、ＣＰＵ２０を適用した場合について説明する。
【００５４】
より具体的に、ＣＰＵ２０は、第１の実施形態において説明した情報処理装置１に、さらに、情報提示部２１、情報制御部２２を有する。
【００５５】
情報提示部２１は、第３の制御部９がアクセスエラーであると判別した場合、エラー情報として、拡張アドレスを第３の制御部９より受信する。さらに、情報提示部２１は、受信した拡張アドレスの下位ビット側にある識別番号を情報制御部２２に出力する。
【００５６】
情報制御部２２は、情報提示部２１から出力された識別番号を受信すると共に、識別番号を基に第１の格納部５から識別番号に対応した区画に格納されたレジスタ値を取得する。また、情報制御部２２は、第１の格納部５から取得したレジスタ値を情報提示部２１に出力する。
【００５７】
情報提示部２１は、情報制御部２２からレジスタ値を受信する。さらに、情報提示部２１は、拡張アドレスを基に指定アドレスと識別番号と情報制御部２２から受信したレジスタ値とをユーザに提示する。また、情報提示部２１は、異常処理を実行する。
【００５８】
この異常処理は、例えばコンピュータシステムをダウンする等、一般的な手法を採用することができるので、実施形態における詳細な説明は省略する。
【００５９】
このように本実施の形態に係る情報処理装置１ａによれば、第１の実施形態において説明した効果を享受できると共に、さらに、第１の実施形態において説明したアクセスエラーが発生した場合の通知方法に代わり、情報提示部２１、情報制御部２２を設けることで取得した指定アドレスと識別番号とレジスタ値とをユーザに提示するため、より効率よく障害の原因を解析することができる。
（実施例）
次に、上述した第２の実施形態に係るより具体的な実施例として、情報処理装置１ｂについて、図３乃至図４を参照して説明する。以下の説明においては、本実施例に係る特徴的な部分を中心に説明する。その際、上述した各実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。
【００６０】
図３は、本発明の実施例における情報処理装置１ｂの構成を示すブロック図である。
【００６１】
図３において、情報処理装置１ｂは、大別して、ＣＰＵ３０、メモリコントローラ３６を有する。
【００６２】
より具体的に、ＣＰＵ３０は、命令実行部３、レジスタ値記憶部３１、識別番号付加部３２、メモリアクセス部３３、エラー情報提示部３４、保存レジスタ値提示部３５を有する。
【００６３】
尚、レジスタ値記憶部３１は、第１の実施形態における第１の格納部５に相当する。識別番号付加部３２は、第１の実施形態における第１の制御部６に相当する。メモリアクセス部３３は、第１の実施形態における第２の制御部７に相当する。エラー情報提示部３４は、第２の実施形態における情報提示部２１に相当する。保存レジスタ値提示部３５は、第２の実施形態における情報制御部２２に相当する。メモリコントローラ３６は、第１の実施形態における第３の制御部９に相当する。
【００６４】
図４は、本発明の実施例における情報処理装置が行う処理を示すフローチャートである。係るフローチャートに沿って情報処理装置の処理手順を説明する。
【００６５】
ここでは、説明の便宜上、一例として、指定アドレスは、例えば、０ｘｆｆｆｆと設定する。また、主記憶装置１０に対してアクセスする際、指定アドレスは、不正なアドレスであり、リカバリ不可能である場合について説明する。尚、本実施形態では、説明の便宜上、値を例に説明するが、これに限定されない。また、「０ｘ」は、１６進数表記であることを示す。
【００６６】
命令実行部３は、主記憶装置１０のアドレス（０ｘｆｆｆｆ）を指定すると共に、主記憶装置１０から指定アドレス（０ｘｆｆｆｆ）に格納されたデータを取得するため、メモリアクセス命令を実行する準備を整える（ステップＳ１）。
【００６７】
命令実行部３は、命令実行の準備が整った場合、レジスタ４に格納されたレジスタ値（０ｘ００００、０ｘ１１１１・・・・０ｘｎｎｎｎ）を取出すと共に、レジスタ値記憶部３１に出力する。
【００６８】
レジスタ値記憶部３１は、命令実行部３から出力されたレジスタ値（０ｘ００００、０ｘ１１１１・・・・０ｘｎｎｎｎ）を受信すると共に、格納する。レジスタ値記憶部３１は、レジスタ値（０ｘ００００、０ｘ１１１１・・・・０ｘｎｎｎｎ）を先頭の区画から受信した順序で格納する。
【００６９】
レジスタ値記憶部３１は、レジスタ値を格納した区画を識別するために、格納した区画に対して、受信した順序で識別番号（０ｘ００００）を付与する。（ステップＳ２）。
【００７０】
尚、レジスタ値記憶部３１は、次にレジスタ値を格納する場合、識別番号（０ｘ０００１）を付与する。このように、レジスタ値記憶部３１は、格納した区画に対して、受信した順序で識別番号を０ｘ００００、０ｘ０００１、・・・・・、０ｘｎｎｎｎと順に付与する。
【００７１】
命令実行部３は、メモリアクセス命令を実行すると共に、主記憶装置１０にアクセスするための指定アドレス（０ｘｆｆｆｆ）を識別番号付加部３２に出力する（ステップＳ３）。
【００７２】
識別番号付加部３２は、命令実行部３から出力された指定アドレス（０ｘｆｆｆｆ）を受信すると共に、レジスタ値記憶部３１よりメモリアクセス命令に対応した識別番号（０ｘ００００）を読み出す。また、識別番号付加部３２は、指定アドレス（０ｘｆｆｆｆ）の下位ビット側に識別番号（０ｘ００００）を付加することによって、拡張アドレス（０ｘｆｆｆｆ００００）を生成する（ステップＳ４）。さらに、識別番号付加部３２は、メモリアクセス部３３に拡張アドレス（０ｘｆｆｆｆ００００）を出力する。
【００７３】
メモリアクセス部３３は、識別番号付加部３２から出力された拡張アドレス（０ｘｆｆｆｆ００００）を受信する。さらに、メモリアクセス部３３は、受信した拡張アドレス（０ｘｆｆｆｆ００００）を基に指定アドレス（０ｘｆｆｆｆ）を選択し、選択した指定アドレス（０ｘｆｆｆｆ）をキャッシュ８に出力する。
【００７４】
メモリアクセス部３３は、キャッシュ８に所望のデータがあった場合（ステップＳ５において「ＹＥＳ」）、キャッシュ８から所望のデータを取得すると共に、取得した所望のデータを命令実行部３に出力する（ステップＳ６）。一方、メモリアクセス部３３は、キャッシュ８に所望のデータが無かった場合（ステップＳ５において「ＮＯ」）、拡張アドレス（０ｘｆｆｆｆ００００）を選択し、選択した拡張アドレス（０ｘｆｆｆｆ００００）をメモリコントローラ３６に出力する（ステップＳ７）。
【００７５】
尚、各実施形態を例に説明した本発明は、説明の便宜上、仮想アドレス方式において、主記憶装置にアクセスする場合については明記していないが、仮想アドレス方式である場合においても、拡張アドレスの上位ビット側にある指定アドレスに対して、論理アドレス−物理アドレス変換を行うことで、実現することができる。
【００７６】
メモリコントローラ３６は、メモリアクセス部３３から出力された拡張アドレス（０ｘｆｆｆｆ００００）を受信する。また、メモリコントローラ３６は、受信した拡張アドレス（０ｘｆｆｆｆ００００）を基に主記憶装置１０の指定アドレス（０ｘｆｆｆｆ）にアクセスする（ステップＳ８）。
【００７７】
メモリコントローラ３６は、指定アドレス（０ｘｆｆｆｆ）にアクセスした際、指定アドレス（０ｘｆｆｆｆ）が主記憶装置１０のアドレス範囲外等のリカバリ不可能な値である場合（ステップＳ９において「ＹＥＳ」）、アクセスエラーであると判別すると共に、エラー情報として、拡張アドレス（０ｘｆｆｆｆ００００）をエラー情報提示部３４に出力する（ステップＳ１０）。一方、メモリコントローラ３６は、指定アドレス（０ｘｆｆｆｆ）が主記憶装置１０のアドレス範囲内であり正常である場合（ステップＳ９において「ＮＯ」）、主記憶装置１０から指定アドレスのデータを読み出すと共に、読み出したデータを命令実行部３に出力する（ステップＳ６）。
【００７８】
エラー情報提示部３４は、エラー情報として、拡張アドレス（０ｘｆｆｆｆ００００）をメモリコントローラ３６から受信する。さらに、エラー情報提示部３４は、受信した拡張アドレス（０ｘｆｆｆｆ００００）の下位ビット側にある識別番号（０ｘ００００）を保存レジスタ値提示部３５に出力する。
【００７９】
保存レジスタ値提示部３５は、エラー情報提示部３４から出力された識別番号（０ｘ００００）を受信すると共に、識別番号（０ｘ００００）を基にレジスタ値記憶部３１から識別番号（０ｘ００００）に対応した区画に格納されたレジスタ値（０ｘ００００、０ｘ１１１１・・・・０ｘｎｎｎｎ）を取得する（ステップＳ１１）。また、保存レジスタ値提示部３５は、取得したレジスタ値（０ｘ００００、０ｘ１１１１・・・・０ｘｎｎｎｎ）をエラー情報提示部３４に出力する。
【００８０】
エラー情報提示部３４は、保存レジスタ値提示部３５からレジスタ値（０ｘ００００、０ｘ１１１１・・・・０ｘｎｎｎｎ）を受信する。さらに、エラー情報提示部３４は、拡張アドレス（０ｘｆｆｆｆ００００）を基に指定アドレス（０ｘｆｆｆｆ）と識別番号（０ｘ００００）と保存レジスタ値提示部３５から受信したレジスタ値（０ｘ００００、０ｘ１１１１・・・・０ｘｎｎｎｎ）をシステム管理者やユーザに提示する（ステップＳ１２）。
【００８１】
このように本実施の形態に係る情報処理装置１ｂによれば、第１乃至第２の実施形態において説明した効果を享受できると共に、さらに、第２の実施形態にて説明した情報処理装置を集積回路等に利用して実現することができる。
【００８２】
尚、上述した各実施形態およびその実施例の一部又は全部は、以下の付記のようにも記載されうる。しかしながら、上述した実施形態及びその実施例により例示的に説明した本発明は、以下には限らない。即ち、
（付記１）
ＣＰＵの内部に、
主記憶装置に対するアクセス命令の実行に先立って、レジスタからレジスタ値を取得し、前記アクセス命令を実行する命令実行部と、
格納する区画に対し識別のための識別番号を付与すると共に、前記レジスタ値を格納する第１の格納部と、
前記アクセス命令の実行によって、出力された指定アドレスと前記識別番号とに基づいて、拡張アドレスを生成する第１の制御部と、
出力先のデバイスと前記拡張アドレスとを基に前記拡張アドレスと前記指定アドレスとの何れか一方を選択する第２の制御部とを有し、
前記ＣＰＵの外部に、
前記第２の制御部によって選択された前記拡張アドレスを基に前記主記憶装置にアクセスした際に、前記指定アドレスが異常であった場合に、前記拡張アドレスを外部に通知する第３の制御部とを備えることを特徴とする情報処理装置。
（付記２）
前記第３の制御部から、異常を通知する前記拡張アドレスが出力されるのに応じて、前記拡張アドレスを基に前記識別番号を出力する一方で、異常の原因となった前記指定アドレスと前記識別番号と前記レジスタ値とを提示する情報提示部と、
該識別番号に対応した前記レジスタ値を前記第１の格納部から取得すると共に、前記レジスタ値を前記情報提示部に出力する情報制御部と、
を前記ＣＰＵ内部にさらに備えることを特徴とする付記１に記載の情報処理装置。
（付記３）
前記第１の制御部は、
前記第１の格納部から前記アクセス命令に対応した前記識別番号を読出し、
前記指定アドレスの下位ビット側に前記識別番号を付加することによって、前記拡張アドレスを生成することを特徴とする付記１乃至付記２の何れかに記載の情報処理装置。
（付記４）
前記第１の格納部は、
前記レジスタ値を受信した順序で、先頭の区画から順に前記レジスタ値を格納する
ことを特徴とする付記１乃至付記３の何れかに記載の情報処理装置。
（付記５）
前記第１の格納部は、
前記レジスタ値を格納することのできる上限に達しと判断した場合、先頭の区画に戻り、格納する
ことを特徴とする付記１乃至付記４の何れかに記載の情報処理装置。
（付記６）
主記憶装置に対するアクセス命令の実行に先立って、レジスタからレジスタ値を取得し、前記アクセス命令を実行し、
格納する区画に対し識別のための識別番号を付与すると共に、前記レジスタ値を格納し、
前記アクセス命令の実行によって、出力された指定アドレスと前記識別番号とに基づいて、拡張アドレスを生成し、
出力先のデバイスと前記拡張アドレスとを基に前記拡張アドレスと前記指定アドレスとの何れか一方を選択し、選択された前記拡張アドレスを基に前記主記憶装置にアクセスした際に、前記指定アドレスが異常であった場合に、前記拡張アドレスを外部に通知する情報処理装置における異常分析方法。
（付記７）
異常を通知する前記拡張アドレスが出力されるのに応じて、前記拡張アドレスを基に前記識別番号を出力する一方で、異常の原因となった前記指定アドレスと前記識別番号と前記レジスタ値とを提示し、
該識別番号に対応した前記レジスタ値を取得すると共に、前記レジスタ値を出力する
付記６に記載の情報処理装置における異常分析方法。
【産業上の利用可能性】
【００８３】
本発明は、上述した各実施形態には限定されない。本発明は、パーソナルコンピュータ、ＰＯＳ（Ｐｏｉｎｔ  Ｏｆ  Ｓａｌｅ）システム、サーバ、複写機、複合機等の演算処理装置および主記憶装置を搭載する各種の電子機器に適用可能である。
【符号の説明】
【００８４】
１    情報処理装置
１ａ    情報処理装置
１ｂ    情報処理装置
２    ＣＰＵ
３    命令実行部
４    レジスタ
５    第１の格納部
６    第１の制御部
７    第２の制御部
８    キャッシュ
９    第３の制御部
１０    主記憶装置
２０    ＣＰＵ
２１    情報提示部
２２    情報制御部
３０    ＣＰＵ
３１    レジスタ値記憶部
３２    識別番号付加部
３３    メモリアクセス部
３４    エラー情報提示部
３５    保存レジスタ値提示部
３６    メモリコントローラ
【図１】
2013175076.tif 000003
【図２】
2013175076.tif 000004
【図３】
2013175076.tif 000005
【図４】
2013175076.tif 000006