(57)【要約】【課題】情報処理装置のシステムダウン時間を短縮し、障害解析に必要なメモリダンプデータの情報がオペレーティングシステムの再起動後でも採取できるようにする。【解決手段】主記憶メモリ１２，１３を二重に管理し、常に両方の主記憶メモリ１２，１３に同じ内容のデータを保持する。障害発生時は、どちらか片方の主記憶メモリ１２に、情報処理装置の再起動に必要なデータをロードし、再起動処理を行う。もう片方の主記憶メモリ１３は、障害発生時のメモリダンプデータとしてデータの内容を保持しておき、システムの再起動を行った後にハードディスク１８などへのデータを転送する。常にメモリの内容を二重に管理するため、障害内容に限らず、常にメモリダンプデータの採取が可能となる。【選択図】　　　　図１
2004102395.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、通常時には、該ＣＰＵがマスタとサブの両方にデータの書込みまたは両方からデータの読み出しを行う二重化された主記憶装置と、内部にハングアップ判定フラグをセットできるレジスタ、および該ＣＰＵからアクセスされた際にアドレス変換を行うアドレス変換テーブルを備えたメモリ制御装置と、オペレーティングシステムのハングアップを検出し、該ＣＰＵに通知するウォッチドッグ・タイマーと、上記ハングアップ判定フラグがオンのとき、上記二重化された一方の主記憶装置からメモリダンプデータの転送を受信して格納する補助記憶装置とを有することを特徴とする情報処理装置。
【請求項２】
情報処理装置のメモリダンプデータの取得方法であって、
メモリ制御装置内部のハングアップ判定ビットがオフのときには、二重化された主記憶装置の両方にデータを書込み、または両方から読出したデータを比較して一致したときは一方のデータを、また不一致のときはエラーが発生していないデータをＣＰＵに渡し、
該ハングアップ判定ビットがオンのときには、マスタの主記憶装置のみにデータを書込み、サブの主記憶装置のデータを保持し、
サブの主記憶装置の内容をメモリダンプデータとして補助記憶装置に転送し、該メモリ制御装置内部のハングアップ判定ビットをオフにセットすることを特徴とするメモリダンプデータの取得方法。
【請求項３】
情報処理装置のメモリダンプデータを取得するプログラムであって、
ＣＰＵに、マスタの主記憶装置の未使用領域を調査し、未使用領域があれば、そのうちの一部をＣＰＵからのアクセス領域に割当て、
マスタの主記憶装置の上記アクセス領域をサブの主記憶装置の一部の領域に対応づけを変更し、サブの主記憶装置の該対応づけられた領域の内容を補助記憶装置に転送し、次に上記アクセス領域をサブの主記憶装置の別の一部の領域に対応づけを変更し、該対応づけられた領域の内容を補助記憶装置に転送し、この処理を繰り返し行って、サブの主記憶装置のメモリダンプデータを全て補助記憶装置に転送する各処理を、順次実行させるためのメモリダンプデータ取得用プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、主記憶メモリを有する情報処理装置におけるメモリアクセス方法および情報処理装置に関し、特に、主メモリを二重に備え、障害時にメモリ内容を正確に採取することができるメモリダンプデータの取得方法および情報処理装置、ならびにそのプログラムに関する。
【０００２】
【従来の技術】
従来のコンピュータシステムにおいては、オペレーティングシステム稼働中にシステムパニック、つまり障害などが発生した際に、原因究明のためのデータとして主記憶メモリの内容を調査するのは非常に有効な手段である。この主記憶メモリの内容をハードディスクなどの外部記憶装置にメモリダンプデータとして出力し解析するのが一般的な方法である。
【０００３】
このメモリダンプデータをハードディスクなどの外部記憶装置に出力するタイミングとしては、例えば特開平１０−３３３９４４号公報の「メモリダンプ採取方式」に記載されているように、情報処理装置の再起動時に行うものが一般的である。
すなわち、障害時に一旦、情報処理装置を停止させた後、再起動させる時点で主メモリのデータをハードディスクなどに取り出す方法である。
【０００４】
また、再起動時とは非同期にメモリダンプデータを出力する方式として、例えば特開２００１−２９０６７８号公報の「非同期メモリダンプ実行方式」に記載されているように、障害発生時に主記憶メモリの内容を別のメモリ空間に退避させ、その内容を保持したまま情報処理装置の再起動を行う方法がある。この場合には、再起動した後の任意の時刻に、退避したメモリのデータをハードディスクなどに取り出す。
【０００５】
また、主記憶メモリからの読み出しデータに対しては、ＥＣＣによるエラー訂正ビットを付加し、メモリからの読み出しデータの信頼性向上を行っているのが一般的である。
【０００６】
【発明が解決しようとする課題】
しかしながら、前述のような従来の技術においては、以下のような問題点がある。
（１）メモリダンプデータの採取方法において、情報処理装置の再起動と同期してメモリダンプデータを採取する方式の場合には、主記憶メモリの容量に比例してハードディスクなどへのメモリダンプデータの転送に時間がかかり、その結果、システムダウン時間が増大するという問題がある。
【０００７】
（２）また、特開２００１−２９０６７８号公報の「非同期メモリダンプ実行方式」に記載されている方式では、メモリダンプデータを別のメモリに退避させて、再起動とは非同期で退避したデータを採取するのであるが、情報処理装置の障害内容によっては障害発生時の主記憶メモリの内容を別のメモリ空間に退避できない場合（例えば、メモリに障害がある場合など）があり、その結果、メモリダンプデータの採取ができないという問題がある。
（３）また、主記憶メモリからのデータ訂正機能がＥＣＣによるエラー訂正のみの場合には、１ビットエラーの時にはデータ訂正が可能であるが、２ビット以上のマルチビットエラーが発生した時には、検出のみ可能でエラーの訂正はできないという問題点がある。
【０００８】
本発明の目的は、物理メモリの容量が大きくなってもシステムのダウン時間を最小限に抑え、且つメモリのデータを常に二重管理することにより、障害解析に必要なメモリダンプデータを採取することが可能なメモリダンプデータの取得方法および情報処理装置、ならびにそのプログラムを提供することにある。
また、本発明の他の目的は、主記憶メモリを二重化することで、メモリからの読み出しデータにおいて、マルチビットエラーが発生した場合でもエラーが発生していないメモリからの読み出しデータを使用することにより、マルチビットエラーによるシステムダウンの確率を低減させることが可能なメモリダンプデータの取得方法および情報処理装置、ならびにそのプログラムを提供することにある。
【０００９】
【課題を解決するための手段】
本発明のメモリダンプデータの取得方法は、主記憶メモリを二重に管理し、常に両方の主記憶メモリに同じ内容のデータを保持する。障害発生時には、どちらか片方の主記憶メモリに情報処理装置の再起動に必要なデータをロードして、再起動処理を行う。もう片方の主記憶メモリは、障害発生時のメモリダンプデータとしてデータの内容を保持しておく。これにより、障害発生時の主記憶メモリの内容を保持したまま情報処理装置の再起動を速やかに行うことができ、システムダウン時間の短縮ができる。
【００１０】
また、障害解析に必要なメモリダンプデータは、情報処理が再起動した後でも保持されているため、情報処理装置の再起動とは同期せずにメモリダンプデータの取得ができる。
また、本発明によるメモリアクセス方式は、障害発生時に別のメモリ空間に退避させる方式ではなく、常にメモリの内容を二重に保持し、かつ管理するため、障害内容に限らず常にメモリダンプデータの採取が可能となる。
【００１１】
【発明の実施の形態】
以下、本発明の実施の形態を図面により説明する。
図１は、本発明の実施形態における情報処理装置の構成図である。
情報処理装置１０は、情報処理装置１０の全体を制御するＣＰＵ１１，常時、運用するためのデータを格納する主記憶メモリ（マスタ）１２，正常時には、二重データを格納するが、障害時にはその時のデータをダンプデータとして格納する主記憶メモリ（サブ）１３，プログラムを格納しておくＲＯＭ１４，メモリがアクセスされたとき、どちらのメモリを読み出すかなどの調停を行うメモリ制御部１５，バスを流れるデータに対して、どちらに切り替えて送出するかなどの制御を行うバス変換回路１６，ハードディスクの接続を行うＳＣＳＩコントローラ１７，ダンプデータを採用するためのハードディスク１８，オペレーティングシステムがハングアップしたことを検出して、ＣＰＵ１１に割り込みをかけるウォッチドッグ・タイマー（ＷＤＴ）１９などで構成される。
なお、ＲＯＭ１４には、情報処理装置１０を初期診断するプログラムとハードディスクからオペレーティングシステムをロードするためのプログラムが格納されている。
【００１２】
メモリ制御部１５は、主記憶メモリ（マスタ）１２と主記憶メモリ（サブ）１３を調停する機能を持ち、内部にハングアップ判定フラグをセットできるレジスタとＣＰＵ１１からアクセスした際にアドレス変換を行うアドレス変換テーブルを有している（図２参照）。メモリ制御部１５は、ハングアップ判定フラグが０の場合（正常動作時）には、主記憶メモリ（マスタ）１２と主記憶メモリ（サブ）１３の両方に同一データを書き込み、ハングアップ判定フラグが１の場合（障害時）には、主記憶メモリ（マスタ）１２のみデータを書き込み、主記憶メモリ（サブ）１３の内容をダンプデータとして保持する。
ＷＤＴ１９は、ウォッチドッグ・タイマーであって、オペレーティングシステムの稼動状態を監視するタイマーである。オペレーティングシステムがハングアップなどして応答がない場合には、ＣＰＵ１１に割り込みを行い、オペレーティングシステムがハングアップしたことを知らせる。
【００１３】
図４は、情報処理装置１０の起動から障害処理の流れを示すフローチャートである。
情報処理装置１０の起動時の処理を図１および図５により説明する。
情報処理装置１０の電源が投入されると（ステップ１０１）、ＣＰＵ１１はＲＯＭ１４に格納されている初期診断プログラムを実行する（ステップ１０２）。初期診断が正常に終了すると、ハードディスク１８からオペレーティングシステムを起動するためのプログラムを実行する。ハードディスクからオペレーティングシステムを起動するためのプログラムが実行されると、ハードディスク１８からローダ部分を主記憶メモリに書き込む（ステップ１０３）。
【００１４】
メモリ制御部１５の内部テーブルのハングアップ判定ビットが０のとき（正常時）には（ステップ１０４）、メモリ制御部１５は主記憶メモリ（マスタ）１２と主記憶メモリ（サブ）１３の両方に同じデータを書き込む（ステップ１０５）。ＣＰＵ１１は、メモリ制御部１５を経由して主記憶メモリからオペレーティングシステムのローダプログラムを読み込み実行する（ステップ１０６）。
【００１５】
この際に、メモリ制御部１５は主記憶メモリ（マスタ）１２と主記憶メモリ（サブ）１３からの読み出しデータをコンペアチェックし、両方のデータが一致すればデータが正しいと判断して、ＣＰＵ１１に主記憶メモリ（マスタ）１２のデータを渡す。主記憶メモリとメモリ制御部１５間は、ＥＣＣによるエラー訂正機能を有している。主記憶メモリ（マスタ）１２と主記憶メモリ（サブ）１３からの読み出しデータをコンペアチェックし、値が一致しない場合には、ＥＣＣエラーチェックによりデータ化けが発生していない主記憶メモリからのデータをＣＰＵ１１に渡す。
【００１６】
これにより、どちらか片方の主記憶メモリからの読み出しデータにマルチビットエラーが発生しても、システムダウンさせることなく、システムを稼動させることができる。その後、ＣＰＵ１１はローダプログラムを実行し、オペレーティングシステムの起動を行う。
【００１７】
次に、システムの稼働中にハングアップなどのシステム障害が発生した場合の処理について説明する。
オペレーティングシステムがハングアップすると、ＷＤＴ１９からＣＰＵ１１に対してオペレーティングシステムがハングアップしたことを示す割り込みを行う（ステップ１０７）。ＷＤＴ１９からの割り込みを受けたＣＰＵ１１は、オペレーティングシステムがハングアップしたことを認識して、メモリ制御部１５内部にあるハングアップ判定フラグを１にセットする（ステップ１０８）と同時に、ＲＯＭ１４に格納されている初期診断プログラムを実行し（ステップ１０２）、先に説明した電源が投入された場合と同じ処理を実行する。
【００１８】
ただし、主記憶メモリにデータを書き込む際に、メモリ制御部１５内のハングアップ判定フラグが１にセットされているため（ステップ１０４）、主記憶メモリ（マスタ）１２のみデータの書き込みを行い、主記憶メモリ（サブ）１３のデータは保持したままの状態で起動処理を行う（ステップ１０９）。
情報処理装置１０は、主記憶メモリ（マスタ）１２のみを用いて、システムの再起動の処理を行う（ステップ１１０）。この時、障害解析に必要なメモリダンプのデータは情報処理装置が再起動した後でも、主記憶メモリ（サブ）１３に保持されているため、このデータを解析することによりシステム障害の原因究明が実施できる。
【００１９】
主記憶メモリ（サブ）１３に保持されているメモリダンプデータをハードディスク１８に採取する場合には、稼動中のオペレーティングシステム上で動作するメモリダンプ採取プログラムを実行する（ステップ１１１）。本メモリダンプ採取プログラムは、以下の動作を行う。
はじめに、主記憶メモリ（サブ）１３に保持されているメモリダンプデータをハードディスク１８に転送する。ハードディスク１８にメモリダンプデータを転送した後、メモリ制御部１５の内部のハングアップ判定ビットを０（正常時）にセットする（ステップ１１２）。
次に、ハードディスク１８への転送方法を具体的に説明する。
【００２０】
図２は、メモリ制御部１５が有しているアドレス変換テーブルを示した図である。
図２（ａ）は、“ハングアップ判定フラグ”＝０の時、つまりＣＰＵ１１が主メモリ（マスタ）１２と主メモリ（サブ）１３の両方にデータを書き込む場合（正常動作時）であり、図２（ｂ）は、“ハングアップ判定フラグ”＝１の時、つまりＣＰＵ１１が主メモリ（マスタ）１２のみにデータを書き込む場合（障害時）である。
“ハングアップ判定フラグ”の他に、“アドレス固定フラグ”があり、“アドレス固定フラグ”＝０の時には、ＣＰＵ１１が主メモリ（マスタ）１２と主メモリ（サブ）１３の同じアドレスからデータを読み出し、“アドレス固定フラグ”＝１の時には、ＣＰＵ１１が主メモリ（マスタ）１２と主メモリ（サブ）１３と異なるアドレスからデータを読み出す場合を示している。
【００２１】
図２に示すメモリ制御部１５が有しているアドレス変換テーブルは、ＣＰＵ１１から読み出し命令がきた場合に、アドレスに応じて主記憶メモリ（マスタ）１２と主記憶メモリ（サブ）１３のそれぞれにアクセスするアドレスを対応づけたテーブルである。
テーブル内の“アドレス固定フラグ”は、前述のように、ＣＰＵ１１からの読み出し命令に対して、主記憶メモリ（マスタ）１２と主記憶メモリ（サブ）１３のそれぞれ同じアドレスのデータを読み出すか、あるいは異なるアドレスを読み出すかを定義するフラグである。
【００２２】
この“アドレス固定フラグ”が０の場合には、主記憶メモリ（マスタ）１２と主記憶メモリ（サブ）１３のそれぞれ同じアドレスからデータを読み出し、そのデータを比較して一致した場合には、主記憶メモリ（マスタ）１２からのデータをＣＰＵ１１に渡す。比較した結果、一致しない場合はＥＣＣエラーが発生していないデータをＣＰＵ１１に渡す。
【００２３】
“アドレス固定フラグ”が１の場合には、主記憶メモリ（マスタ）１２の読み出しデータをマスクし、テーブルで定義されている主記憶メモリ（サブ）１３の読み出しアドレスからデータを読み出す。これにより、ＣＰＵ１１は、ある特定のアドレスのみ主記憶メモリ（サブ）１３からのデータを読み出すことができる。
【００２４】
図３は、メモリダンプデータ読み出し時のアドレス変換例を示す図であり、図５は、メモリダンプ採取アルゴリズムの動作フローチャートである。
メモリダンプ採取プログラムが実行されると、まず最初に主記憶メモリ（マスタ）１２の未使用領域を調査する（ステップ１２１）。
図３の場合では、３０００番地以降の領域が未使用であることを示している。未使用領域があれば（ステップ１２２）、このうちの一部をアクセス領域に割当てる。例えば、図３の場合、４０００番地から４９９９番地までを主記憶メモリ（サブ）１３のデータをアクセスするための領域に割り当てる（ステップ１２３）。なお、３０００番地から３９９９番地までの領域は、使用領域のために確保しておく。
次に、メモリ制御部１５有しているアドレス変換テーブルを変更し、ＣＰＵ１１が４０００番地〜４９９９番地のアドレスをアクセスすると、主記憶メモリ（サブ）１３の００００番地〜０９９９番地をアクセスするよう対応付ける（ステップ１２４）。
【００２５】
これにより、まず主記憶メモリ（サブ）１３の００００番地から０９９９番地をハードディスク１８に転送する（ステップ１２５）。転送が終了したら（ステップ１２６）、再度、メモリ制御部１５のアドレス変換テーブルを変更し、４０００番地から４９９９番地は主記憶メモリ（サブ）１３の１０００番地〜１９９９番地をアクセスするように対応つける（ステップ１２７）。図３に示すように、メモリ制御部１５内のテーブルで対応付けが行われる。ステップ１２４の対応つけは、図３の細線での対応つけ、次にステップ１２７の対応つけは、図３の太破線で行われる。これにより、主記憶メモリ（サブ）１３の１０００番地から１９９９番地の内容をハードディスク１８に転送する（ステップ１２８）。
この手順を繰り返して、主記憶メモリ（サブ）１３の必要なデータをハードディスク１８に転送するのである。
【００２６】
すなわち、上記の転送が終了したならば（ステップ１２９）、ＣＰＵ１１が４０００番地〜４９９９番地のアドレスをアクセスすると、主記憶メモリ（サブ）１３の２０００番地〜２９９９番地をアクセスするように対応付ける（ステップ１３０）。主記憶メモリ（サブ）１３の２０００番地〜２９９９番地をハードディスク１８に転送する（ステップ１３１）。そして、転送が終了したならば（ステップ１３２）、次に主記憶メモリ（マスタ）１２の４０００番地〜４９９９番地と主記憶メモリ（サブ）１３の３０００番地〜３９９９番地に対応つける（ステップ１３３）。そして、主記憶メモリ（サブ）１３の３０００番地〜３９９９番地をハードディスク１８に転送する（ステップ１３４）。
【００２７】
最後に、上記転送が終了したならば（ステップ１３５）、主記憶メモリ（マスタ）１２の４０００番地〜４９９９番地を主記憶メモリ（サブ）１３の４０００番地〜４９９９番地に対応つける（ステップ１３６）。そして、主記憶メモリ（サブ）１３の４０００番地〜４９９９番地をハードディスク１８に転送する（ステップ１３７）。この転送が終了すると、主記憶メモリ（サブ）１３の内容、つまりメモリダンプデータが全てハードディスク１８に転送されたことになる。
ハードディスク１８に格納される際のファイルフォーマットは、稼動中のオペレーティングシステム上でアクセスできるファイルフォーマットで格納する。
ハードディスク１８にメモリダンプデータの転送が終了すると、メモリ制御部１５内部のハングアップ判定フラグを０にセットし、主記憶メモリ（マスタ）１２のみで動作続ける。次回、再起動時には主記憶メモリ（マスタ）１２と主記憶メモリ（サブ）１３両方でシステム稼動を行う。
【００２８】
なお、図４に示す情報処理装置の障害時の処理フローおよび図５に示すメモリダンプデータ読み出し時のアドレス変換の処理フローを、それぞれプログラムに変換し、ＣＤ−ＲＯＭなどの記録媒体に記憶しておけば、これを主記憶メモリを二重に備えた情報処理装置に装着することで、プログラムをインストールして実行させることにより、本発明を容易に実現することができる。
【００２９】
【発明の効果】
以上説明したように、本発明によれば、情報処理装置のシステムダウン時間を短縮し、且つ、障害解析に必要なメモリダンプデータの情報がオペレーティングシステムの再起動後でも任意の時間に高速に採取することができる。また、マルチビットエラーによるシステムダウンの確率も低減することができる。
【図面の簡単な説明】
【図１】本発明の実施形態における情報処理装置の構成図である。
【図２】図１におけるメモリ制御部内のアドレス変換テーブルの図である。
【図３】本発明におけるメモリダンプデータ読み出し時のアドレス変換例を示す図である。
【図４】本発明における情報処理装置の障害時の処理を示すフローチャートである。
【図５】本発明におけるメモリダンプ採取処理のフローチャートである。
【符号の説明】
１０…情報処理装置
１１…ＣＰＵ
１２…主記憶メモリ（マスタ）
１３…主記憶メモリ（サブ）
１４…ＲＯＭ
１５…メモリ制御部
１６…バス変換回路
１７…ＳＣＳＩコントローラ，
１８…ハードディスク
１９…ウォッチドッグ・タイマー（ＷＤＴ）
【図１】
2004102395.tif 000003
【図２】
2004102395.tif 000004
【図３】
2004102395.tif 000005
【図４】
2004102395.tif 000006
【図５】
2004102395.tif 000007