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