JP2011164730A - Cpuでの命令実行と非同期的に発生するメモリアクセスエラーの原因究明のための情報処理装置、異常分析方法、および異常分析プログラム - Google Patents

Cpuでの命令実行と非同期的に発生するメモリアクセスエラーの原因究明のための情報処理装置、異常分析方法、および異常分析プログラム Download PDF

Info

Publication number
JP2011164730A
JP2011164730A JP2010023808A JP2010023808A JP2011164730A JP 2011164730 A JP2011164730 A JP 2011164730A JP 2010023808 A JP2010023808 A JP 2010023808A JP 2010023808 A JP2010023808 A JP 2010023808A JP 2011164730 A JP2011164730 A JP 2011164730A
Authority
JP
Japan
Prior art keywords
memory
address
instruction
memory access
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010023808A
Other languages
English (en)
Inventor
Kiyoshi Ueda
清詩 上田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2010023808A priority Critical patent/JP2011164730A/ja
Publication of JP2011164730A publication Critical patent/JP2011164730A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】エラー発生時のCPUレジスタ値を見ても、当該メモリアクセス命令を発行したプログラム(OS)位置が一意に特定できず、異常分析が困難なことがある。このような、CPUでの命令実行と非同期的に発生するメモリアクセスエラーに対して、異常分析を容易に行なう方法が提供されていない。
【解決手段】メモリアクセス命令に指定されるメモリのアドレスに、当該命令実行時のレジスタ値を付加してアドレスを拡張(拡張アドレス)し、この拡張アドレスを用いてメモリアクセスを実施する。メモリアクセスエラー発生時には、この拡張アドレスをユーザに提示する。この方法により、エラー発生時にCPUが別の命令を実行していたとしても、エラー発生の原因となった命令を実行した際のレジスタ値をユーザは取得することができるため、当該命令を発行したプログラム(OS)位置が一意に特定可能となる。
【選択図】図2

Description

本発明は、情報処理装置におけるメモリアクセス異常の原因分析に関する。
メモリアクセスの異常でシステムがダウンした際の原因究明方法として、障害発生時のCPUレジスタの情報やメモリの情報をダンプしたり、常時OS(Operating System)コードの実行パスをトレースしておいたりする方法が採用されている。
このような方法の一例として、たとえば、特許文献1(特開昭63−231641号公報)には、以下のような技術が開示されている。すなわち、情報処理装置では、バス上に制御部および各入出力装置のステイタス情報を示す信号線が設けられる。そして、上記バスには上記ステイタス情報を格納するステイタス情報格納部と、上記ステイタス情報をメモリアクセスのたびにステイタス情報格納部に格納する格納制御手段とが接続される。これらの情報を記載したメモリダンプリストを見れば、通常、メモリに格納されているプログラムおよびデータの他にその時のアドレスにおけるアクセス元の入出力装置等の種類および状態を確認できる。これにより、メモリに格納した情報が不良になり障害が発生したタイミング、および入出力装置等の不良の原因を容易に知ることができる。
また、特許文献2(特開平04−058327号公報)には、複数のパイプライン演算器およびこれらの演算結果を選択する選択回路と、この選択回路で複数のパイプライン演算器からの演算結果が干渉しないようにパイプライン演算器の演算実行時間を変更する回路と、この回路で変更された演算実行時間の情報をパイプラインに同期して持ち回るレジスタと、このレジスタの情報によりパイプライン演算器を制御する制御回路とを備える演算処理装置が開示されている。
特開昭63−231641号公報 特開平04−058327号公報
OSによるメモリアクセス命令などのシステムを継続する上で必須の命令において、(たとえばOSのソフトウェア的な問題により)不正なアドレスが指定されるなどのリカバリ不能なエラーが発生した場合、システムはダウンする。
この場合、原因究明のために当該メモリアクセス命令を発行したプログラム(OS)上の位置を特定する必要があり、この位置特定のための情報としてエラー発生時のCPU(Central Processing Unit)レジスタ値が用いられることが多い。
しかしながら、近年のCPUでは命令のアウト・オブ・オーダー(Out of Order)実行化が進み、メモリアクセス命令の完了を待たずに次の命令を実行可能なCPUアーキテクチャが多く採用されており、このようなCPUアーキテクチャを有するコンピュータシステムにおいては、エラー発生時にCPUはエラー発生の原因となったメモリアクセス命令とは無関係の命令を実行し得るので、エラー発生時にはレジスタ値が変更されている可能性がある。たとえば、IA−64(Intel Architecture 64)においてチップセットがマシン・チェック・アーキテクチャ(MCA)を搭載する場合などがこれに当てはまる。
特許文献1に記載の方法等、障害発生時のCPUレジスタの情報またはメモリの情報をダンプしたり、OSコードの実行パスをトレースしておいたりする方法は、CPUの命令実行と同期的に発生するタイプのエラー、および性能問題などに対しては有効である。しかしながら、CPUの命令実行と非同期で発生するメモリアクセスエラーに対しては、CPUレジスタの情報からメモリアクセス命令の発行位置の特定が困難となることから、原因究明に時間を要したり、または原因究明が不可能な場合が生じる。したがって、メモリアクセス命令が完了するのを待たずに次の命令を実行可能なCPUアーキテクチャを有するコンピュータシステムにおいては、メモリアクセスに関するOSのバグが増えた場合、修正できないバグが多く残ってしまい、システムの安定的な運用に支障を来たす可能性がある。
また、特許文献2には、メモリアクセスエラーの原因を解析するための構成は開示されていない。
この発明は、上述の課題を解決するためになされたもので、その目的は、メモリアクセスの異常分析をより容易に行なうことが可能な情報処理装置、異常分析方法、および異常分析プログラムを提供することである。
上記課題を解決するために、CPUの命令実行と非同期にメモリアクセスエラーが発生した場合でも、エラーの原因となったメモリアクセス命令を実行した際のCPUレジスタ値を取得可能にする。これにより、プログラム(OS)上での当該メモリアクセス命令の発行位置特定が容易になる。
具体的には、まず下記を備えた情報処理装置を前提とする。
・データを記憶するためのメモリ
・メモリにアクセスするためのメモリコントローラ
・メモリコントローラがログを格納するための記憶装置。この情報処理装置の動作状態とは無関係に外部からアクセスでき、格納されたログを読み出すことができる。
・特定のアドレスを指定してメモリから命令やデータを読み出し、命令を実行する演算処理部(CPU)。更に、CPUは下記から構成される。
oメモリから命令を読み出して実行する命令実行ユニット
o命令実行に必要なデータを記憶するためのレジスタ
o命令実行ユニットからのメモリアクセス命令を実行してメモリコントローラにアクセスするメモリアクセスユニット。
上記解決手段を実現するために、本発明では、CPUの命令実行ユニットでのメモリアクセス命令実行に応答してレジスタの格納値を取得し、当該メモリアクセス命令で指定されるアドレスに取得したレジスタ値を付加した拡張アドレスを出力するレジスタ値付加ユニットを、CPUの命令実行ユニットの直後に設ける。レジスタ値付加ユニットが出力する拡張アドレスは、たとえば「“指定アドレス”、“レジスタ1の値”、“レジスタ2の値”...“レジスタnの値”」のように長いビット列となる。本発明では、CPUのメモリアクセスユニットやメモリコントローラはこの拡張アドレスを受けて命令実行ユニットが指定したメモリアドレスにアクセスし、その指定アドレスの値が異常な場合に、メモリコントローラは上記拡張アドレス(比較例としては指定アドレスのみが考えられる)をメモリコントローラのログ記憶装置に格納してシステムをダウンさせる。
この情報処理装置を用いれば、システムがダウンした後でメモリコントローラのログ記憶装置から拡張アドレスを取得し、拡張アドレス生成と逆の手順でCPUの命令実行ユニ
ットが指定したアドレスと各レジスタの値に分割することで、障害の原因となったメモリアクセス命令を実行した際のCPUレジスタ値を取得できる。
なお、上記メモリコントローラのログ記憶装置を持たない情報処理装置においては、障害発生時に拡張アドレスを外部に提示する手段として、当該情報処理装置に接続されたディスプレイなどの他の表示装置を代替として用いても良い。その場合、メモリコントローラが拡張アドレスを格納するための特別なレジスタをCPU内部に設置してメモリコントローラに当該レジスタに拡張アドレスを格納させるとともに、システムダウン前にOSの障害処理関数が当該レジスタから拡張アドレスを取得して表示装置に出力するように変更する必要がある。
本発明によれば、メモリアクセスの異常分析をより容易に行なうことができる。特に、メモリコントローラのログ記憶装置を備える情報処理装置においては、OSを変更することなくこの効果が得られる。
本発明の実施の形態に係る情報処理装置の概略構成図である。 本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。 本発明の実施の形態に係る情報処理装置がメモリ異常分析処理を行なう際の動作手順を示すフローチャートである。 本発明の実施の形態に係る情報処理装置の変形例が提供する制御構造を示すブロック図である。 本発明の実施の形態に係る情報処理装置の変形例がメモリ異常分析処理を行なう際の動作手順を示すフローチャートである。
[概要]
本発明の実施の形態に係る情報処理装置は、典型的には、汎用的なアーキテクチャを有するコンピュータを基本構造としており、予めインストールされたプログラムを実行することで、後述するような各種機能を提供する。一般的に、このようなプログラムは、フレキシブルディスク(Flexible Disk)およびCD−ROM(Compact Disk Read Only Memory)などの記録媒体に格納されて、あるいはネットワークなどを介して流通する。
本発明の実施の形態に係るプログラムは、OS等の他のプログラムの一部に組み込まれて提供されるものであってもよい。この場合でも、本発明の実施の形態に係るプログラム自体は、上記のような組み込み先の他のプログラムが有するモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本発明の実施の形態に係るプログラムとしては、このような他のプログラムに組み込まれた形態であってもよい。
なお、代替的に、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
[装置構成]
以下、本発明の実施の形態について図面を用いて説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
図1は、本発明の実施の形態に係る情報処理装置の概略構成図である。図1を参照して、情報処理装置200は、演算処理部であるCPU(Central Processing Unit)101
と、メインメモリ102と、ハードディスク103と、入力インターフェイス104と、表示コントローラ105と、データリーダ/ライタ106と、通信インターフェイス107とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。
CPU101は、ハードディスク103に格納されたプログラム(コード)をメインメモリ102に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ102は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ハードディスク103から読み出されたプログラムに加えて、各種の演算処理結果を示すデータなどを保持する。また、ハードディスク103は不揮発性の磁気記憶装置であり、CPU101で実行されるプログラムに加えて、各種設定値などが格納される。このハードディスク103にインストールされるプログラムは、後述するように、記録媒体111に格納された状態で流通する。なお、ハードディスク103に加えて、あるいはハードディスク103に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
入力インターフェイス104は、CPU101とキーボード108、マウス109および図示しないタッチパネルなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェイス104は、ユーザが入力部を操作することで与えられる操作指令などの外部からの入力を受付ける。
表示コントローラ105は、表示部の典型例であるディスプレイ110と接続され、ディスプレイ110での表示を制御する。すなわち、表示コントローラ105は、CPU101による画像処理の結果などをユーザに対して表示する。ディスプレイ110は、たとえばLCD(Liquid Crystal Display)またはCRT(Cathode Ray Tube)である。
データリーダ/ライタ106は、CPU101と記録媒体111の間のデータ伝送を仲介する。すなわち、記録媒体111は、情報処理装置200で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ106は、この記録媒体111からプログラムを読み出す。また、データリーダ/ライタ106は、CPU101の内部指令に応答して、情報処理装置200における処理結果などを記録媒体111へ書き込む。なお、記録媒体111は、たとえば、CF(Compact Flash)およびSD(Secure Digital)などの汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体、またはCD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体である。
通信インターフェイス107は、CPU101とパーソナルコンピュータおよびサーバ装置などの間のデータ伝送を仲介する。通信インターフェイス107は、典型的には、イーサネット(登録商標)またはUSB(Universal Serial Bus)の通信機能を有する。なお、記録媒体111に格納されたプログラムを情報処理装置200にインストールする形態に代えて、通信インターフェイス107を介して配信サーバなどからダウンロードしたプログラムを情報処理装置200にインストールしてもよい。
また、情報処理装置200には、必要に応じてプリンタなどの他の出力装置が接続されてもよい。
[制御構造]
次に、情報処理装置200におけるメモリ異常分析機能を提供するための制御構造について説明する。
図2は、本発明の実施の形態に係る情報処理装置が提供する制御構造を示すブロック図である。図2に示す各ブロックは、ハードディスク103に格納されたプログラム(コード)などをメインメモリ102に展開して、CPU101に実行させることで提供される。なお、図2に示す制御構造の一部もしくは全部を専用ハードウェアおよび/または配線回路によって実現してもよい。
図2を参照して、情報処理装置200は、さらに、メモリコントローラ2と、ログ記録装置4とを備える。CPU101は、その制御構造として、命令実行ユニット11と、レジスタ値付加ユニット(拡張アドレス生成部)12と、メモリアクセスユニット14と、エラー提示部16とを含む。この制御構造は、たとえばOSの機能の一部として提供される。また、CPU101は、レジスタ13と、キャッシュメモリ15とを含む。
CPU101は、図2に示す各部の他に、多くのユニットによって構成されるのが一般的であるが、説明を簡単にするために、本発明に関係しないユニットについては図示していない。
命令実行ユニット11は、メインメモリ102から各種命令を取り出して実行する。命令実行ユニット11は、ある命令が完了する前に他の命令を実行可能である。レジスタ13は、命令実行に必要なデータなどを保存しておく記憶ユニットである。命令実行ユニット11は、各種命令を実行するために必要な情報をレジスタ13から読み出し、また、各種命令を実行するために必要な情報をレジスタ13に格納する。
レジスタ値付加ユニット12は、本発明の実施の形態の主な特徴点となるユニットであり、命令実行ユニット11が発行したメモリアクセス命令内の指定アドレスを拡張して拡張アドレスを生成する。レジスタ値付加ユニット12は、アクセス命令実行時のレジスタ値をレジスタ13から読み出して、たとえば「“指定アドレス”、“レジスタ1の値”、“レジスタ2の値”...“レジスタnの値”」のように長いビット列に当該指定アドレスを拡張する。
メモリアクセスユニット14は、命令実行ユニット11によるアドレス指定に従い、キャッシュメモリ15にアクセスし、また、メモリコントローラ2を介してメインメモリ102にアクセスする。メモリアクセスユニット14は、レジスタ値付加ユニット12経由でアクセス指示されたアドレスを拡張アドレスとして解釈する。
キャッシュメモリ15には、たとえば、メインメモリ102に格納されたデータのうち、CPU101が頻繁に使用するデータのコピーが格納される。
メモリコントローラ2は、たとえば図1におけるCPU101とバス121の間に設けられ、命令実行ユニット11によるアドレス指定に従い、メインメモリ102にアクセスする。メモリコントローラ2は、レジスタ値付加ユニット12およびメモリアクセスユニット14経由でアクセス指示されたアドレスを拡張アドレスとして解釈する。
ログ記録装置4は、メモリコントローラ2が異常を検出した際にログを格納する。
[動作]
次に、本発明の実施の形態に係る情報処理装置の動作について図面を用いて説明する。本発明の実施の形態では、情報処理装置200を動作させることによって、本発明の実施の形態に係るメモリ異常分析方法が実施される。よって、本発明の実施の形態に係るメモリ異常分析方法の説明は、以下の情報処理装置200の動作説明に代える。なお、以下の説明においては、適宜図2を参照する。
図3は、本発明の実施の形態に係る情報処理装置がメモリ異常分析処理を行なう際の動作手順を示すフローチャートである。
図3を参照して、まず、命令実行ユニット11は、メモリアクセス命令を実行する(ステップS2)。
次に、レジスタ値付加ユニット12は、メモリアクセス命令の実行に応答して、レジスタ13からメモリアクセス命令実行時のレジスタ値(格納値)を取得し(ステップS4)、これを当該命令で指定されたアドレスに対して付加することにより、拡張アドレスを生成する。すなわち、レジスタ値付加ユニット12は、命令実行ユニット11によって発行された指定アドレスを、たとえば「“指定アドレス”、“レジスタ1の値”、“レジスタ2の値”...“レジスタnの値”」のように長いビット列に拡張する。そして、レジスタ値付加ユニット12は、拡張アドレスをメモリアクセスユニット14に渡す(ステップS6)。
ここで、命令実行ユニット11は、レジスタ値付加ユニット12から受けた当該命令の完了を待たずに実行可能な命令があれば、その実行に移行する。その際、レジスタ13の格納値は変更され得る。
次に、メモリアクセスユニット14は、拡張アドレス中の指定アドレス部分を参照してキャッシュメモリ15を検索する。メモリアクセスユニット14は、キャッシュがヒットした場合、すなわちキャッシュメモリ15において指定アドレスのデータが存在する場合には(ステップS8でYES)、キャッシュメモリ15から当該データを取得して命令実行ユニット11に渡す(ステップS10)。
一方、メモリアクセスユニット14は、キャッシュがヒットしなかった場合には(ステップS8でNO)、メモリコントローラ2に拡張アドレスを渡して、実メモリであるメインメモリ102の指定アドレスへのアクセスを要求する(ステップS12)。
次に、メモリコントローラ2は、メモリアクセスユニット14から受けた拡張アドレス中の指定アドレス部分を参照してメインメモリ102にアクセスする(ステップS14)。メモリコントローラ2は、指定アドレスが正常である場合には(ステップS16でNO)、メインメモリ102から指定アドレスのデータを読み出して命令実行ユニット11に渡す(ステップS10)。
一方、メモリコントローラ2は、指定アドレスが、メインメモリ102のアドレスの範囲外など、不正でありリカバリ不可能な値である場合には(ステップS16でYES)、メモリアクセスエラーであると判断し、ログ記憶装置に拡張アドレスを格納し(ステップS19)、情報処理装置200が提供するコンピュータシステムをダウンする(ステップS22)。
障害調査担当者は、ログ記憶装置4に格納された拡張アドレスから、メインメモリ102にアクセスしようとした実際のアドレスと、そのメモリアクセス命令をCPUが発行した際のレジスタ値とを取得することにより、異常分析を行なう。
次に、図2に示す各アドレス値を用いた具体例について説明する。ここでは、指定アドレス(0xffff)が不正でありリカバリ不可能な値である場合について説明する。なお、「0x」は16進数表記であることを示す。
命令実行ユニット11は、メインメモリ102の特定のアドレスとしてアドレス(0x
ffff)を指定し、メインメモリ102から指定アドレス(0xffff)のデータを取得するためのメモリアクセス命令を実行する。命令実行ユニット11は、指定アドレス(0xffff)をレジスタ値付加ユニット12へ出力する。このとき、レジスタ13の格納値は、0x1111,0x2222・・・0xnnnnである。
レジスタ値付加ユニット12は、命令実行ユニット11から指定アドレス(0xffff)を受けて、レジスタ13から格納値を読み出し(ステップS4)、指定アドレス(0xffff)の下位ビット側にレジスタ13の格納値を付加した拡張アドレス(0xffff11112222・・・nnnn)を生成する。そして、レジスタ値付加ユニット12は、この拡張アドレスをメモリアクセスユニット14へ出力する(ステップS6)。
メモリアクセスユニット14は、レジスタ値付加ユニット12から拡張アドレスを受けて、拡張アドレス中の指定アドレス(0xffff)をキャッシュメモリ15へ出力することにより、キャッシュメモリ15を検索する。メモリアクセスユニット14は、キャッシュがヒットしなかったため(ステップS8でNO)、拡張アドレス(0xffff11112222・・・nnnn)をメモリコントローラ2へ出力する(ステップS12)。
メモリコントローラ2は、メモリアクセスユニット14から拡張アドレスを受けて、拡張アドレス中の指定アドレス(0xffff)をメインメモリ102へ出力することにより、メインメモリ102にアクセスする(ステップS14)。メモリコントローラ2は、指定アドレス(0xffff)が、メインメモリ102のアドレスの範囲(0x0000〜0xf000)を外れているため、メモリアクセスエラーであると判断し、拡張アドレス(0xffff11112222・・・nnnn)をログ記憶装置4に格納する(ステップS19)。
調査担当者は、ログ記憶装置4から拡張アドレスを取得してレジスタ値付加ユニット12と逆の方法で拡張アドレスを分割することにより、メモリアクセスエラーとなった指定アドレス(0xffff)と、その指定アドレスへのメモリアクセス命令を命令実行ユニット11が実行した際のレジスタ13の格納値(0x1111,0x2222・・・0xnnnn)を取得する。
本発明の実施の形態のような異常分析処理を採用しない構成では、命令実行ユニットが不正アドレスへのメモリアクセス命令を実行した場合、メモリアクセス命令の発行位置を予想してプログラム(OS)中にトラップを仕掛け、再現トライするなどの人海戦術で命令発行位置を絞り込んでいく必要がある。このため、エラーの再現に長時間を要する問題および再現性のない問題の場合には原因究明までに膨大な時間を要してしまう。
これに対して、本発明の実施の形態では、エラー情報としてレジスタ値付加ユニットが生成する拡張アドレスを用いることにより、システムダウン時に命令実行ユニットがエラーと無関係の命令を実行していても、命令実行ユニットが不正アドレスへのメモリアクセス命令を実行した際のレジスタ値を取得することができる。これにより、プログラム(OS)上で当該命令を発行した位置の特定が容易となり、メモリアクセスの異常分析をより容易に行なうことができる。
すなわち、本発明の実施の形態に係る情報処理装置200における各構成要素のうち、命令実行ユニット11、拡張アドレス生成部12およびメモリコントローラ2からなる最小構成により、メモリアクセスの異常分析をより容易に行なうという本発明の目的を達成することが可能となる。
また、本発明の実施の形態に係る情報処理装置200では、命令実行ユニット11は、
メモリアクセス命令が完了する前に他の命令を実行可能である。本発明は、このような構成において特に顕著な効果を奏する。すなわち、メモリアクセスエラー発生時に命令実行ユニット11が別の命令を実行している場合であっても、エラーの原因となったメモリアクセス命令を実行した際のレジスタ値を取得し、メモリアクセスの異常分析をより容易に行なうことができる。
また、拡張アドレスを分割するのはユーザが行なう構成であるとしたが、情報処理装置200が拡張アドレスを指定アドレスとレジスタ値に分割してユーザに提示しても良い。
[変形例]
次に、本発明の実施の形態に係る情報処理装置の変形例について説明する。以下では、情報処理装置200と異なる内容のみを説明する。すなわち、以下で説明する内容以外は情報処理装置200と同様である。
図4は、本発明の実施の形態に係る情報処理装置の変形例が提供する制御構造を示すブロック図である。
図4を参照して、この情報処理装置は、情報処理装置200と比べて、ログ記録装置4を備えない構成である。情報処理装置の変形例におけるCPU101は、その制御構造として、命令実行ユニット11と、レジスタ値付加ユニット(拡張アドレス生成部)12と、メモリアクセスユニット14と、エラー提示部16とを含む。
図5は、本発明の実施の形態に係る情報処理装置の変形例がメモリ異常分析処理を行なう際の動作手順を示すフローチャートである。
図5を参照して、メモリコントローラ2は、指定アドレスが、メインメモリ102のアドレスの範囲外など、不正でありリカバリ不可能な値である場合には(ステップS16でYES)、メモリアクセスエラーであると判断し、エラー提示部16へエラー情報を送る(ステップS18)。
次に、エラー提示部16は、メモリコントローラ2から受けたエラー情報が示す拡張アドレスをユーザに提示する。たとえば、エラー提示部16は、表示コントローラ105を制御して、ディスプレイ110にメモリアクセスエラーが発生した旨および拡張アドレスを表示する(ステップS20)。
そして、メモリコントローラ2は、情報処理装置200が提供するコンピュータシステムをダウンする(ステップS22)。障害調査担当者は、エラー提示部16によって提示された拡張アドレスから、メインメモリ102にアクセスしようとした実際のアドレスと、そのメモリアクセス命令をCPUが発行した際のレジスタ値とを取得することにより、異常分析を行なう。
次に、図4に示す各アドレス値を用いた具体例について説明する。メモリコントローラ2は、メモリアクセスユニット14から拡張アドレスを受けて、拡張アドレス中の指定アドレス(0xffff)をメインメモリ102へ出力することにより、メインメモリ102にアクセスする(ステップS14)。メモリコントローラ2は、指定アドレス(0xffff)が、メインメモリ102のアドレスの範囲(0x0000〜0xf000)を外れているため、メモリアクセスエラーであると判断し、拡張アドレス(0xffff11112222・・・nnnn)を示すエラー情報をエラー提示部16へ出力する(ステップS18)。
エラー提示部16は、メモリコントローラ2からエラー情報を受けて、エラー情報が示す拡張アドレスをユーザに提示する(ステップS20)。
このような構成により、ユーザにメモリアクセスエラーの発生およびその詳細情報を早期に通知することができるため、ユーザが原因究明に要する時間および労力を短縮することができる。
なお、上記変形例のようにエラー提示部16が拡張アドレスをユーザに提示する構成に限らず、情報処理装置200がエラー情報を用いて自律的に何らかのエラー分析処理を行なう構成であってもよい。
上記実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
[付記1]
データを記憶するためのメモリと、前記メモリにアクセスするためのメモリコントローラと、前記メモリにアクセスするための命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタとを備える情報処理装置における異常分析方法であって、(a)前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を実行するステップと、
(b)前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するステップと、
(c)前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記(a)のステップにおいて指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力するステップとを含む、異常分析方法。
[付記2]
前記異常分析方法は、さらに、
(d)前記エラー情報を受けて、前記拡張アドレスをユーザに提示するステップを含む、付記1に記載の異常分析方法。
[付記3]
前記異常分析方法は、さらに、
(e)前記アクセス命令が完了する前に他の命令を実行するステップを含む、付記1または2に記載の異常分析方法。
[付記4]
データを記憶するためのメモリと、前記メモリにアクセスするためのメモリコントローラと、前記メモリにアクセスするための命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタとを備える情報処理装置における異常分析プログラムであって、コンピュータに、
(a)前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を実行するステップと、
(b)前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するステップと、
(c)前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記(a)のステップにおいて指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力するステップとを実行させる、異常分析プログラム。
[付記5]
前記異常分析プログラムは、さらに、コンピュータに、
(d)前記エラー情報を受けて、前記拡張アドレスをユーザに提示するステップを実行させる、付記4に記載の異常分析プログラム。
[付記6]
前記異常分析プログラムは、さらに、コンピュータに、
(e)前記アクセス命令が完了する前に他の命令を実行するステップを実行させる、付記4または5に記載の異常分析プログラム。
本発明によれば、メモリアクセスの異常分析をより容易に行なうことができる。したがって、本発明は、メモリを備えたコンピュータ等の情報処理装置に対して有効であり、産業上の利用可能性を有している。
2 メモリコントローラ
11 命令実行ユニット
12 レジスタ値付加ユニット(拡張アドレス生成部)
13 レジスタ
14 メモリアクセスユニット
15 キャッシュメモリ
16 エラー提示部
101 CPU
102 メインメモリ
103 ハードディスク
104 入力インターフェイス
105 表示コントローラ
106 データリーダ/ライタ
107 通信インターフェイス
121 バス
200 情報処理装置

Claims (5)

  1. 演算処理部と、
    データを記憶するためのメモリと、
    前記メモリにアクセスするためのメモリコントローラとを備え、
    前記演算処理部は、
    前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を少なくとも実行するための命令実行部と、
    前記命令実行部が前記アクセス命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタと、
    前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するための拡張アドレス生成部とを含み、
    前記メモリコントローラは、前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記命令実行部によって指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力する、情報処理装置。
  2. 前記情報処理装置は、さらに、
    前記エラー情報を受けて、前記拡張アドレスをユーザに提示するためのエラー提示部を備える、請求項1に記載の情報処理装置。
  3. 前記命令実行部は、前記アクセス命令が完了する前に他の命令を実行可能である、請求項1または2に記載の情報処理装置。
  4. データを記憶するためのメモリと、前記メモリにアクセスするためのメモリコントローラと、前記メモリにアクセスするための命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタとを備える情報処理装置における異常分析方法であって、(a)前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を実行するステップと、
    (b)前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するステップと、
    (c)前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記(a)のステップにおいて指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力するステップとを含む、異常分析方法。
  5. データを記憶するためのメモリと、前記メモリにアクセスするためのメモリコントローラと、前記メモリにアクセスするための命令を実行するために必要な情報の読み出しおよび格納を行なうためのレジスタとを備える情報処理装置における異常分析プログラムであって、コンピュータに、
    (a)前記メモリの特定のアドレスを指定し、前記メモリから前記特定のアドレスのデータを取得するためのアクセス命令を実行するステップと、
    (b)前記アクセス命令の実行に応答して前記レジスタの格納値を取得し、前記特定のアドレスに前記格納値を付加した拡張アドレスを出力するステップと、
    (c)前記拡張アドレスを受けて、前記メモリにおける前記特定のアドレスにアクセスし、前記(a)のステップにおいて指定された前記特定のアドレスの値が異常である場合に前記拡張アドレスを出力するステップとを実行させる、異常分析プログラム。
JP2010023808A 2010-02-05 2010-02-05 Cpuでの命令実行と非同期的に発生するメモリアクセスエラーの原因究明のための情報処理装置、異常分析方法、および異常分析プログラム Pending JP2011164730A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010023808A JP2011164730A (ja) 2010-02-05 2010-02-05 Cpuでの命令実行と非同期的に発生するメモリアクセスエラーの原因究明のための情報処理装置、異常分析方法、および異常分析プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010023808A JP2011164730A (ja) 2010-02-05 2010-02-05 Cpuでの命令実行と非同期的に発生するメモリアクセスエラーの原因究明のための情報処理装置、異常分析方法、および異常分析プログラム

Publications (1)

Publication Number Publication Date
JP2011164730A true JP2011164730A (ja) 2011-08-25

Family

ID=44595375

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010023808A Pending JP2011164730A (ja) 2010-02-05 2010-02-05 Cpuでの命令実行と非同期的に発生するメモリアクセスエラーの原因究明のための情報処理装置、異常分析方法、および異常分析プログラム

Country Status (1)

Country Link
JP (1) JP2011164730A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268599B2 (en) 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure addresses of the abort-causing and approximate abort-causing data and instructions in hardware transactional memories

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9268599B2 (en) 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure addresses of the abort-causing and approximate abort-causing data and instructions in hardware transactional memories
US9268598B2 (en) 2012-09-13 2016-02-23 International Business Machines Corporation Recording and profiling transaction failure source addresses and states of validity indicator corresponding to addresses of aborted transaction in hardware transactional memories

Similar Documents

Publication Publication Date Title
JP4846493B2 (ja) デバッグシステム及びデバッグ回路
US9038185B2 (en) Execution of multiple execution paths
US11042466B2 (en) Exception prediction before an actual exception during debugging
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
JPWO2019077738A1 (ja) データ検証装置、データ検証方法及びデータ検証プログラム
JP6667733B2 (ja) シミュレーション装置、シミュレーション方法およびシミュレーションプログラム
JP2011164730A (ja) Cpuでの命令実行と非同期的に発生するメモリアクセスエラーの原因究明のための情報処理装置、異常分析方法、および異常分析プログラム
US9734458B2 (en) Predicting outcome based on input
JP2009223714A (ja) 演算回路及び演算回路の異常解析方法
JP2010039884A (ja) ソフトウェア解析システム
JP5937530B2 (ja) ソフトエラー解析装置、エラー情報作成装置
JP2013175076A (ja) 情報処理装置および情報処理装置における異常分析方法
KR101225577B1 (ko) 어셈블리 언어 코드의 분석 장치 및 방법
JP7401751B2 (ja) 情報処理プログラム、情報処理方法及び情報処理システム
JP2012018641A (ja) ソフトウェア開発システム
JP5447841B2 (ja) 情報処理装置、デバッグ情報取得方法、およびデバッグ情報取得プログラム
JP2010244183A (ja) 装置検査システム、装置検査方法、装置検査プログラム
JP2009064125A (ja) サーバ装置、そのプログラム
JP2007219893A (ja) ファームウェア評価システムおよびファームウェア評価方法
JP2007041777A (ja) 言語処理方法
JP2013175077A (ja) 情報処理装置および情報処理装置における異常分析方法、並びにコンピュータ・プログラム
US20070265821A1 (en) Simulation apparatus, simulation method, and computer-readable recording medium storing simulation program
JP3151811B2 (ja) 情報処理装置の障害処理検証方法および方式
JP2010211391A (ja) Cpuの動作監視方法および装置
JP2011028458A (ja) 実行状態監視装置および実行状態監視方法