(57)【要約】【課題】エラー発生時のＣＰＵレジスタ値を見ても、当該メモリアクセス命令を発行したプログラム（ＯＳ）位置が一意に特定できず、異常分析が困難なことがある。このような、ＣＰＵでの命令実行と非同期的に発生するメモリアクセスエラーに対して、異常分析を容易に行なう方法が提供されていない。【解決手段】メモリアクセス命令に指定されるメモリのアドレスに、当該命令実行時のレジスタ値を付加してアドレスを拡張（拡張アドレス）し、この拡張アドレスを用いてメモリアクセスを実施する。メモリアクセスエラー発生時には、この拡張アドレスをユーザに提示する。この方法により、エラー発生時にＣＰＵが別の命令を実行していたとしても、エラー発生の原因となった命令を実行した際のレジスタ値をユーザは取得することができるため、当該命令を発行したプログラム（ＯＳ）位置が一意に特定可能となる。【選択図】図２
2011164730.tif 000002
【特許請求の範囲】
【請求項１】
演算処理部と、
データを記憶するためのメモリと、
前記メモリにアクセスするためのメモリコントローラとを備え、
前記演算処理部は、
前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を少なくとも実行するための命令実行部と、
前記命令実行部が前記アクセス命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタと、
前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するための拡張アドレス生成部とを含み、
前記メモリコントローラは、前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記命令実行部によって指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力する、情報処理装置。
【請求項２】
前記情報処理装置は、さらに、
前記エラー情報を受けて、前記拡張アドレスをユーザに提示するためのエラー提示部を備える、請求項１に記載の情報処理装置。
【請求項３】
前記命令実行部は、前記アクセス命令が完了する前に他の命令を実行可能である、請求項１または２に記載の情報処理装置。
【請求項４】
データを記憶するためのメモリと、前記メモリにアクセスするためのメモリコントローラと、前記メモリにアクセスするための命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタとを備える情報処理装置における異常分析方法であって、（ａ）前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を実行するステップと、
（ｂ）前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するステップと、
（ｃ）前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記（ａ）のステップにおいて指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力するステップとを含む、異常分析方法。
【請求項５】
データを記憶するためのメモリと、前記メモリにアクセスするためのメモリコントローラと、前記メモリにアクセスするための命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタとを備える情報処理装置における異常分析プログラムであって、コンピュータに、
（ａ）前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を実行するステップと、
（ｂ）前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するステップと、
（ｃ）前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記（ａ）のステップにおいて指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力するステップとを実行させる、異常分析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置におけるメモリアクセス異常の原因分析に関する。
【背景技術】
【０００２】
メモリアクセスの異常でシステムがダウンした際の原因究明方法として、障害発生時のＣＰＵレジスタの情報やメモリの情報をダンプしたり、常時ＯＳ（Operating System）コードの実行パスをトレースしておいたりする方法が採用されている。
【０００３】
このような方法の一例として、たとえば、特許文献１（特開昭６３−２３１６４１号公報）には、以下のような技術が開示されている。すなわち、情報処理装置では、バス上に制御部および各入出力装置のステイタス情報を示す信号線が設けられる。そして、上記バスには上記ステイタス情報を格納するステイタス情報格納部と、上記ステイタス情報をメモリアクセスのたびにステイタス情報格納部に格納する格納制御手段とが接続される。これらの情報を記載したメモリダンプリストを見れば、通常、メモリに格納されているプログラムおよびデータの他にその時のアドレスにおけるアクセス元の入出力装置等の種類および状態を確認できる。これにより、メモリに格納した情報が不良になり障害が発生したタイミング、および入出力装置等の不良の原因を容易に知ることができる。
【０００４】
また、特許文献２（特開平０４−０５８３２７号公報）には、複数のパイプライン演算器およびこれらの演算結果を選択する選択回路と、この選択回路で複数のパイプライン演算器からの演算結果が干渉しないようにパイプライン演算器の演算実行時間を変更する回路と、この回路で変更された演算実行時間の情報をパイプラインに同期して持ち回るレジスタと、このレジスタの情報によりパイプライン演算器を制御する制御回路とを備える演算処理装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６３−２３１６４１号公報
【特許文献２】特開平０４−０５８３２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＯＳによるメモリアクセス命令などのシステムを継続する上で必須の命令において、（たとえばＯＳのソフトウェア的な問題により）不正なアドレスが指定されるなどのリカバリ不能なエラーが発生した場合、システムはダウンする。
この場合、原因究明のために当該メモリアクセス命令を発行したプログラム（ＯＳ）上の位置を特定する必要があり、この位置特定のための情報としてエラー発生時のＣＰＵ（Central Processing Unit）レジスタ値が用いられることが多い。
【０００７】
しかしながら、近年のＣＰＵでは命令のアウト・オブ・オーダー（Out of Order）実行化が進み、メモリアクセス命令の完了を待たずに次の命令を実行可能なＣＰＵアーキテクチャが多く採用されており、このようなＣＰＵアーキテクチャを有するコンピュータシステムにおいては、エラー発生時にＣＰＵはエラー発生の原因となったメモリアクセス命令とは無関係の命令を実行し得るので、エラー発生時にはレジスタ値が変更されている可能性がある。たとえば、ＩＡ−６４（Intel Architecture 64）においてチップセットがマシン・チェック・アーキテクチャ（ＭＣＡ）を搭載する場合などがこれに当てはまる。  
【０００８】
特許文献１に記載の方法等、障害発生時のＣＰＵレジスタの情報またはメモリの情報をダンプしたり、ＯＳコードの実行パスをトレースしておいたりする方法は、ＣＰＵの命令実行と同期的に発生するタイプのエラー、および性能問題などに対しては有効である。しかしながら、ＣＰＵの命令実行と非同期で発生するメモリアクセスエラーに対しては、ＣＰＵレジスタの情報からメモリアクセス命令の発行位置の特定が困難となることから、原因究明に時間を要したり、または原因究明が不可能な場合が生じる。したがって、メモリアクセス命令が完了するのを待たずに次の命令を実行可能なＣＰＵアーキテクチャを有するコンピュータシステムにおいては、メモリアクセスに関するＯＳのバグが増えた場合、修正できないバグが多く残ってしまい、システムの安定的な運用に支障を来たす可能性がある。
【０００９】
また、特許文献２には、メモリアクセスエラーの原因を解析するための構成は開示されていない。
【００１０】
この発明は、上述の課題を解決するためになされたもので、その目的は、メモリアクセスの異常分析をより容易に行なうことが可能な情報処理装置、異常分析方法、および異常分析プログラムを提供することである。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、ＣＰＵの命令実行と非同期にメモリアクセスエラーが発生した場合でも、エラーの原因となったメモリアクセス命令を実行した際のＣＰＵレジスタ値を取得可能にする。これにより、プログラム（ＯＳ）上での当該メモリアクセス命令の発行位置特定が容易になる。
【００１２】
具体的には、まず下記を備えた情報処理装置を前提とする。
・データを記憶するためのメモリ
・メモリにアクセスするためのメモリコントローラ
・メモリコントローラがログを格納するための記憶装置。この情報処理装置の動作状態とは無関係に外部からアクセスでき、格納されたログを読み出すことができる。
・特定のアドレスを指定してメモリから命令やデータを読み出し、命令を実行する演算処理部（ＣＰＵ）。更に、ＣＰＵは下記から構成される。
ｏメモリから命令を読み出して実行する命令実行ユニット
ｏ命令実行に必要なデータを記憶するためのレジスタ
ｏ命令実行ユニットからのメモリアクセス命令を実行してメモリコントローラにアクセスするメモリアクセスユニット。
【００１３】
上記解決手段を実現するために、本発明では、ＣＰＵの命令実行ユニットでのメモリアクセス命令実行に応答してレジスタの格納値を取得し、当該メモリアクセス命令で指定されるアドレスに取得したレジスタ値を付加した拡張アドレスを出力するレジスタ値付加ユニットを、ＣＰＵの命令実行ユニットの直後に設ける。レジスタ値付加ユニットが出力する拡張アドレスは、たとえば「“指定アドレス”、“レジスタ１の値”、“レジスタ２の値”．．．“レジスタｎの値”」のように長いビット列となる。本発明では、ＣＰＵのメモリアクセスユニットやメモリコントローラはこの拡張アドレスを受けて命令実行ユニットが指定したメモリアドレスにアクセスし、その指定アドレスの値が異常な場合に、メモリコントローラは上記拡張アドレス（比較例としては指定アドレスのみが考えられる）をメモリコントローラのログ記憶装置に格納してシステムをダウンさせる。
【００１４】
この情報処理装置を用いれば、システムがダウンした後でメモリコントローラのログ記憶装置から拡張アドレスを取得し、拡張アドレス生成と逆の手順でＣＰＵの命令実行ユニ
ットが指定したアドレスと各レジスタの値に分割することで、障害の原因となったメモリアクセス命令を実行した際のＣＰＵレジスタ値を取得できる。
【００１５】
なお、上記メモリコントローラのログ記憶装置を持たない情報処理装置においては、障害発生時に拡張アドレスを外部に提示する手段として、当該情報処理装置に接続されたディスプレイなどの他の表示装置を代替として用いても良い。その場合、メモリコントローラが拡張アドレスを格納するための特別なレジスタをＣＰＵ内部に設置してメモリコントローラに当該レジスタに拡張アドレスを格納させるとともに、システムダウン前にＯＳの障害処理関数が当該レジスタから拡張アドレスを取得して表示装置に出力するように変更する必要がある。
【発明の効果】
【００１６】
本発明によれば、メモリアクセスの異常分析をより容易に行なうことができる。特に、メモリコントローラのログ記憶装置を備える情報処理装置においては、ＯＳを変更することなくこの効果が得られる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態に係る情報処理装置の概略構成図である。
【図２】本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。
【図３】本発明の実施の形態に係る情報処理装置がメモリ異常分析処理を行なう際の動作手順を示すフローチャートである。
【図４】本発明の実施の形態に係る情報処理装置の変形例が提供する制御構造を示すブロック図である。
【図５】本発明の実施の形態に係る情報処理装置の変形例がメモリ異常分析処理を行なう際の動作手順を示すフローチャートである。
【発明を実施するための形態】
【００１８】
［概要］
本発明の実施の形態に係る情報処理装置は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、予めインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フレキシブルディスク（Flexible Disk）およびＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの記録媒体に格納されて、あるいはネットワークなどを介して流通する。
【００１９】
本発明の実施の形態に係るプログラムは、ＯＳ等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係るプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
【００２０】
なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
【００２１】
［装置構成］
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【００２２】
図１は、本発明の実施の形態に係る情報処理装置の概略構成図である。図１を参照して、情報処理装置２００は、演算処理部であるＣＰＵ（Central Processing Unit）１０１
と、メインメモリ１０２と、ハードディスク１０３と、入力インターフェイス１０４と、表示コントローラ１０５と、データリーダ／ライタ１０６と、通信インターフェイス１０７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００２３】
ＣＰＵ１０１は、ハードディスク１０３に格納されたプログラム（コード）をメインメモリ１０２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１０２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）などの揮発性の記憶装置であり、ハードディスク１０３から読み出されたプログラムに加えて、各種の演算処理結果を示すデータなどを保持する。また、ハードディスク１０３は不揮発性の磁気記憶装置であり、ＣＰＵ１０１で実行されるプログラムに加えて、各種設定値などが格納される。このハードディスク１０３にインストールされるプログラムは、後述するように、記録媒体１１１に格納された状態で流通する。なお、ハードディスク１０３に加えて、あるいはハードディスク１０３に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
【００２４】
入力インターフェイス１０４は、ＣＰＵ１０１とキーボード１０８、マウス１０９および図示しないタッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス１０４は、ユーザが入力部を操作することで与えられる操作指令などの外部からの入力を受付ける。
【００２５】
表示コントローラ１０５は、表示部の典型例であるディスプレイ１１０と接続され、ディスプレイ１１０での表示を制御する。すなわち、表示コントローラ１０５は、ＣＰＵ１０１による画像処理の結果などをユーザに対して表示する。ディスプレイ１１０は、たとえばＬＣＤ（Liquid Crystal Display）またはＣＲＴ（Cathode Ray Tube）である。
【００２６】
データリーダ／ライタ１０６は、ＣＰＵ１０１と記録媒体１１１の間のデータ伝送を仲介する。すなわち、記録媒体１１１は、情報処理装置２００で実行されるプログラムなどが格納された状態で流通し、データリーダ／ライタ１０６は、この記録媒体１１１からプログラムを読み出す。また、データリーダ／ライタ１０６は、ＣＰＵ１０１の内部指令に応答して、情報処理装置２００における処理結果などを記録媒体１１１へ書き込む。なお、記録媒体１１１は、たとえば、ＣＦ（Compact Flash）およびＳＤ（Secure Digital）などの汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）などの磁気記憶媒体、またはＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体である。
【００２７】
通信インターフェイス１０７は、ＣＰＵ１０１とパーソナルコンピュータおよびサーバ装置などの間のデータ伝送を仲介する。通信インターフェイス１０７は、典型的には、イーサネット（登録商標）またはＵＳＢ（Universal Serial Bus）の通信機能を有する。なお、記録媒体１１１に格納されたプログラムを情報処理装置２００にインストールする形態に代えて、通信インターフェイス１０７を介して配信サーバなどからダウンロードしたプログラムを情報処理装置２００にインストールしてもよい。
【００２８】
また、情報処理装置２００には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
【００２９】
［制御構造］
次に、情報処理装置２００におけるメモリ異常分析機能を提供するための制御構造について説明する。
【００３０】
図２は、本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。図２に示す各ブロックは、ハードディスク１０３に格納されたプログラム（コード）などをメインメモリ１０２に展開して、ＣＰＵ１０１に実行させることで提供される。なお、図２に示す制御構造の一部もしくは全部を専用ハードウェアおよび／または配線回路によって実現してもよい。
【００３１】
図２を参照して、情報処理装置２００は、さらに、メモリコントローラ２と、ログ記録装置４とを備える。ＣＰＵ１０１は、その制御構造として、命令実行ユニット１１と、レジスタ値付加ユニット（拡張アドレス生成部）１２と、メモリアクセスユニット１４と、エラー提示部１６とを含む。この制御構造は、たとえばＯＳの機能の一部として提供される。また、ＣＰＵ１０１は、レジスタ１３と、キャッシュメモリ１５とを含む。
【００３２】
ＣＰＵ１０１は、図２に示す各部の他に、多くのユニットによって構成されるのが一般的であるが、説明を簡単にするために、本発明に関係しないユニットについては図示していない。
【００３３】
命令実行ユニット１１は、メインメモリ１０２から各種命令を取り出して実行する。命令実行ユニット１１は、ある命令が完了する前に他の命令を実行可能である。レジスタ１３は、命令実行に必要なデータなどを保存しておく記憶ユニットである。命令実行ユニット１１は、各種命令を実行するために必要な情報をレジスタ１３から読み出し、また、各種命令を実行するために必要な情報をレジスタ１３に格納する。
【００３４】
レジスタ値付加ユニット１２は、本発明の実施の形態の主な特徴点となるユニットであり、命令実行ユニット１１が発行したメモリアクセス命令内の指定アドレスを拡張して拡張アドレスを生成する。レジスタ値付加ユニット１２は、アクセス命令実行時のレジスタ値をレジスタ１３から読み出して、たとえば「“指定アドレス”、“レジスタ１の値”、“レジスタ２の値”．．．“レジスタｎの値”」のように長いビット列に当該指定アドレスを拡張する。
【００３５】
メモリアクセスユニット１４は、命令実行ユニット１１によるアドレス指定に従い、キャッシュメモリ１５にアクセスし、また、メモリコントローラ２を介してメインメモリ１０２にアクセスする。メモリアクセスユニット１４は、レジスタ値付加ユニット１２経由でアクセス指示されたアドレスを拡張アドレスとして解釈する。
【００３６】
キャッシュメモリ１５には、たとえば、メインメモリ１０２に格納されたデータのうち、ＣＰＵ１０１が頻繁に使用するデータのコピーが格納される。
【００３７】
メモリコントローラ２は、たとえば図１におけるＣＰＵ１０１とバス１２１の間に設けられ、命令実行ユニット１１によるアドレス指定に従い、メインメモリ１０２にアクセスする。メモリコントローラ２は、レジスタ値付加ユニット１２およびメモリアクセスユニット１４経由でアクセス指示されたアドレスを拡張アドレスとして解釈する。
ログ記録装置４は、メモリコントローラ２が異常を検出した際にログを格納する。
【００３８】
［動作］
次に、本発明の実施の形態に係る情報処理装置の動作について図面を用いて説明する。本発明の実施の形態では、情報処理装置２００を動作させることによって、本発明の実施の形態に係るメモリ異常分析方法が実施される。よって、本発明の実施の形態に係るメモリ異常分析方法の説明は、以下の情報処理装置２００の動作説明に代える。なお、以下の説明においては、適宜図２を参照する。
【００３９】
図３は、本発明の実施の形態に係る情報処理装置がメモリ異常分析処理を行なう際の動作手順を示すフローチャートである。
【００４０】
図３を参照して、まず、命令実行ユニット１１は、メモリアクセス命令を実行する（ステップＳ２）。
【００４１】
次に、レジスタ値付加ユニット１２は、メモリアクセス命令の実行に応答して、レジスタ１３からメモリアクセス命令実行時のレジスタ値（格納値）を取得し（ステップＳ４）、これを当該命令で指定されたアドレスに対して付加することにより、拡張アドレスを生成する。すなわち、レジスタ値付加ユニット１２は、命令実行ユニット１１によって発行された指定アドレスを、たとえば「“指定アドレス”、“レジスタ１の値”、“レジスタ２の値”．．．“レジスタｎの値”」のように長いビット列に拡張する。そして、レジスタ値付加ユニット１２は、拡張アドレスをメモリアクセスユニット１４に渡す（ステップＳ６）。
【００４２】
ここで、命令実行ユニット１１は、レジスタ値付加ユニット１２から受けた当該命令の完了を待たずに実行可能な命令があれば、その実行に移行する。その際、レジスタ１３の格納値は変更され得る。
【００４３】
次に、メモリアクセスユニット１４は、拡張アドレス中の指定アドレス部分を参照してキャッシュメモリ１５を検索する。メモリアクセスユニット１４は、キャッシュがヒットした場合、すなわちキャッシュメモリ１５において指定アドレスのデータが存在する場合には（ステップＳ８でＹＥＳ）、キャッシュメモリ１５から当該データを取得して命令実行ユニット１１に渡す（ステップＳ１０）。
【００４４】
一方、メモリアクセスユニット１４は、キャッシュがヒットしなかった場合には（ステップＳ８でＮＯ）、メモリコントローラ２に拡張アドレスを渡して、実メモリであるメインメモリ１０２の指定アドレスへのアクセスを要求する（ステップＳ１２）。
【００４５】
次に、メモリコントローラ２は、メモリアクセスユニット１４から受けた拡張アドレス中の指定アドレス部分を参照してメインメモリ１０２にアクセスする（ステップＳ１４）。メモリコントローラ２は、指定アドレスが正常である場合には（ステップＳ１６でＮＯ）、メインメモリ１０２から指定アドレスのデータを読み出して命令実行ユニット１１に渡す（ステップＳ１０）。
【００４６】
一方、メモリコントローラ２は、指定アドレスが、メインメモリ１０２のアドレスの範囲外など、不正でありリカバリ不可能な値である場合には（ステップＳ１６でＹＥＳ）、メモリアクセスエラーであると判断し、ログ記憶装置に拡張アドレスを格納し（ステップＳ１９）、情報処理装置２００が提供するコンピュータシステムをダウンする（ステップＳ２２）。
【００４７】
障害調査担当者は、ログ記憶装置４に格納された拡張アドレスから、メインメモリ１０２にアクセスしようとした実際のアドレスと、そのメモリアクセス命令をＣＰＵが発行した際のレジスタ値とを取得することにより、異常分析を行なう。
【００４８】
次に、図２に示す各アドレス値を用いた具体例について説明する。ここでは、指定アドレス（０ｘｆｆｆｆ）が不正でありリカバリ不可能な値である場合について説明する。なお、「０ｘ」は１６進数表記であることを示す。
【００４９】
命令実行ユニット１１は、メインメモリ１０２の特定のアドレスとしてアドレス（０ｘ
ｆｆｆｆ）を指定し、メインメモリ１０２から指定アドレス（０ｘｆｆｆｆ）のデータを取得するためのメモリアクセス命令を実行する。命令実行ユニット１１は、指定アドレス（０ｘｆｆｆｆ）をレジスタ値付加ユニット１２へ出力する。このとき、レジスタ１３の格納値は、０ｘ１１１１，０ｘ２２２２・・・０ｘｎｎｎｎである。
【００５０】
レジスタ値付加ユニット１２は、命令実行ユニット１１から指定アドレス（０ｘｆｆｆｆ）を受けて、レジスタ１３から格納値を読み出し（ステップＳ４）、指定アドレス（０ｘｆｆｆｆ）の下位ビット側にレジスタ１３の格納値を付加した拡張アドレス（０ｘｆｆｆｆ１１１１２２２２・・・ｎｎｎｎ）を生成する。そして、レジスタ値付加ユニット１２は、この拡張アドレスをメモリアクセスユニット１４へ出力する（ステップＳ６）。
【００５１】
メモリアクセスユニット１４は、レジスタ値付加ユニット１２から拡張アドレスを受けて、拡張アドレス中の指定アドレス（０ｘｆｆｆｆ）をキャッシュメモリ１５へ出力することにより、キャッシュメモリ１５を検索する。メモリアクセスユニット１４は、キャッシュがヒットしなかったため（ステップＳ８でＮＯ）、拡張アドレス（０ｘｆｆｆｆ１１１１２２２２・・・ｎｎｎｎ）をメモリコントローラ２へ出力する（ステップＳ１２）。
【００５２】
メモリコントローラ２は、メモリアクセスユニット１４から拡張アドレスを受けて、拡張アドレス中の指定アドレス（０ｘｆｆｆｆ）をメインメモリ１０２へ出力することにより、メインメモリ１０２にアクセスする（ステップＳ１４）。メモリコントローラ２は、指定アドレス（０ｘｆｆｆｆ）が、メインメモリ１０２のアドレスの範囲（０ｘ００００〜０ｘｆ０００）を外れているため、メモリアクセスエラーであると判断し、拡張アドレス（０ｘｆｆｆｆ１１１１２２２２・・・ｎｎｎｎ）をログ記憶装置４に格納する（ステップＳ１９）。
【００５３】
調査担当者は、ログ記憶装置４から拡張アドレスを取得してレジスタ値付加ユニット１２と逆の方法で拡張アドレスを分割することにより、メモリアクセスエラーとなった指定アドレス（０ｘｆｆｆｆ）と、その指定アドレスへのメモリアクセス命令を命令実行ユニット１１が実行した際のレジスタ１３の格納値（０ｘ１１１１，０ｘ２２２２・・・０ｘｎｎｎｎ）を取得する。
【００５４】
本発明の実施の形態のような異常分析処理を採用しない構成では、命令実行ユニットが不正アドレスへのメモリアクセス命令を実行した場合、メモリアクセス命令の発行位置を予想してプログラム（ＯＳ）中にトラップを仕掛け、再現トライするなどの人海戦術で命令発行位置を絞り込んでいく必要がある。このため、エラーの再現に長時間を要する問題および再現性のない問題の場合には原因究明までに膨大な時間を要してしまう。
【００５５】
これに対して、本発明の実施の形態では、エラー情報としてレジスタ値付加ユニットが生成する拡張アドレスを用いることにより、システムダウン時に命令実行ユニットがエラーと無関係の命令を実行していても、命令実行ユニットが不正アドレスへのメモリアクセス命令を実行した際のレジスタ値を取得することができる。これにより、プログラム（ＯＳ）上で当該命令を発行した位置の特定が容易となり、メモリアクセスの異常分析をより容易に行なうことができる。
【００５６】
すなわち、本発明の実施の形態に係る情報処理装置２００における各構成要素のうち、命令実行ユニット１１、拡張アドレス生成部１２およびメモリコントローラ２からなる最小構成により、メモリアクセスの異常分析をより容易に行なうという本発明の目的を達成することが可能となる。
【００５７】
また、本発明の実施の形態に係る情報処理装置２００では、命令実行ユニット１１は、
メモリアクセス命令が完了する前に他の命令を実行可能である。本発明は、このような構成において特に顕著な効果を奏する。すなわち、メモリアクセスエラー発生時に命令実行ユニット１１が別の命令を実行している場合であっても、エラーの原因となったメモリアクセス命令を実行した際のレジスタ値を取得し、メモリアクセスの異常分析をより容易に行なうことができる。
【００５８】
また、拡張アドレスを分割するのはユーザが行なう構成であるとしたが、情報処理装置２００が拡張アドレスを指定アドレスとレジスタ値に分割してユーザに提示しても良い。
【００５９】
［変形例］
次に、本発明の実施の形態に係る情報処理装置の変形例について説明する。以下では、情報処理装置２００と異なる内容のみを説明する。すなわち、以下で説明する内容以外は情報処理装置２００と同様である。
【００６０】
図４は、本発明の実施の形態に係る情報処理装置の変形例が提供する制御構造を示すブロック図である。
【００６１】
図４を参照して、この情報処理装置は、情報処理装置２００と比べて、ログ記録装置４を備えない構成である。情報処理装置の変形例におけるＣＰＵ１０１は、その制御構造として、命令実行ユニット１１と、レジスタ値付加ユニット（拡張アドレス生成部）１２と、メモリアクセスユニット１４と、エラー提示部１６とを含む。
【００６２】
図５は、本発明の実施の形態に係る情報処理装置の変形例がメモリ異常分析処理を行なう際の動作手順を示すフローチャートである。
【００６３】
図５を参照して、メモリコントローラ２は、指定アドレスが、メインメモリ１０２のアドレスの範囲外など、不正でありリカバリ不可能な値である場合には（ステップＳ１６でＹＥＳ）、メモリアクセスエラーであると判断し、エラー提示部１６へエラー情報を送る（ステップＳ１８）。
【００６４】
次に、エラー提示部１６は、メモリコントローラ２から受けたエラー情報が示す拡張アドレスをユーザに提示する。たとえば、エラー提示部１６は、表示コントローラ１０５を制御して、ディスプレイ１１０にメモリアクセスエラーが発生した旨および拡張アドレスを表示する（ステップＳ２０）。
【００６５】
そして、メモリコントローラ２は、情報処理装置２００が提供するコンピュータシステムをダウンする（ステップＳ２２）。障害調査担当者は、エラー提示部１６によって提示された拡張アドレスから、メインメモリ１０２にアクセスしようとした実際のアドレスと、そのメモリアクセス命令をＣＰＵが発行した際のレジスタ値とを取得することにより、異常分析を行なう。
【００６６】
次に、図４に示す各アドレス値を用いた具体例について説明する。メモリコントローラ２は、メモリアクセスユニット１４から拡張アドレスを受けて、拡張アドレス中の指定アドレス（０ｘｆｆｆｆ）をメインメモリ１０２へ出力することにより、メインメモリ１０２にアクセスする（ステップＳ１４）。メモリコントローラ２は、指定アドレス（０ｘｆｆｆｆ）が、メインメモリ１０２のアドレスの範囲（０ｘ００００〜０ｘｆ０００）を外れているため、メモリアクセスエラーであると判断し、拡張アドレス（０ｘｆｆｆｆ１１１１２２２２・・・ｎｎｎｎ）を示すエラー情報をエラー提示部１６へ出力する（ステップＳ１８）。
【００６７】
エラー提示部１６は、メモリコントローラ２からエラー情報を受けて、エラー情報が示す拡張アドレスをユーザに提示する（ステップＳ２０）。
【００６８】
このような構成により、ユーザにメモリアクセスエラーの発生およびその詳細情報を早期に通知することができるため、ユーザが原因究明に要する時間および労力を短縮することができる。
【００６９】
なお、上記変形例のようにエラー提示部１６が拡張アドレスをユーザに提示する構成に限らず、情報処理装置２００がエラー情報を用いて自律的に何らかのエラー分析処理を行なう構成であってもよい。
【００７０】
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００７１】
［付記１］
データを記憶するためのメモリと、前記メモリにアクセスするためのメモリコントローラと、前記メモリにアクセスするための命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタとを備える情報処理装置における異常分析方法であって、（ａ）前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を実行するステップと、
（ｂ）前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するステップと、
（ｃ）前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記（ａ）のステップにおいて指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力するステップとを含む、異常分析方法。
【００７２】
［付記２］
前記異常分析方法は、さらに、
（ｄ）前記エラー情報を受けて、前記拡張アドレスをユーザに提示するステップを含む、付記１に記載の異常分析方法。
【００７３】
［付記３］
前記異常分析方法は、さらに、
（ｅ）前記アクセス命令が完了する前に他の命令を実行するステップを含む、付記１または２に記載の異常分析方法。
【００７４】
［付記４］
データを記憶するためのメモリと、前記メモリにアクセスするためのメモリコントローラと、前記メモリにアクセスするための命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタとを備える情報処理装置における異常分析プログラムであって、コンピュータに、
（ａ）前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を実行するステップと、
（ｂ）前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するステップと、
（ｃ）前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記（ａ）のステップにおいて指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力するステップとを実行させる、異常分析プログラム。
【００７５】
［付記５］
前記異常分析プログラムは、さらに、コンピュータに、
（ｄ）前記エラー情報を受けて、前記拡張アドレスをユーザに提示するステップを実行させる、付記４に記載の異常分析プログラム。
【００７６】
［付記６］
前記異常分析プログラムは、さらに、コンピュータに、
（ｅ）前記アクセス命令が完了する前に他の命令を実行するステップを実行させる、付記４または５に記載の異常分析プログラム。
【産業上の利用可能性】
【００７７】
本発明によれば、メモリアクセスの異常分析をより容易に行なうことができる。したがって、本発明は、メモリを備えたコンピュータ等の情報処理装置に対して有効であり、産業上の利用可能性を有している。
【符号の説明】
【００７８】
２  メモリコントローラ
１１  命令実行ユニット
１２  レジスタ値付加ユニット（拡張アドレス生成部）
１３  レジスタ
１４  メモリアクセスユニット
１５  キャッシュメモリ
１６  エラー提示部
１０１  ＣＰＵ
１０２  メインメモリ
１０３  ハードディスク
１０４  入力インターフェイス
１０５  表示コントローラ
１０６  データリーダ／ライタ
１０７  通信インターフェイス
１２１  バス
２００  情報処理装置
【図１】
2011164730.tif 000003
【図２】
2011164730.tif 000004
【図３】
2011164730.tif 000005
【図４】
2011164730.tif 000006
【図５】
2011164730.tif 000007