(57)【要約】【課題】複数のＤＩＭＭを並列に動作させた際に、訂正不能なエラーが発生したＤＩＭＭの特定を目的とする。【解決手段】ＢＩＯＳ２０は、ロックステップモードでＤＩＭＭのメモリテストを行う。また、ＢＩＯＳ２０は、メモリテストで訂正不能なエラーが検出された場合は、起動フラグ２７を不揮発性の記憶領域であるＮＶＲＡＭ８に設定する。また、ＢＩＯＳ２０は、再起動時に、起動フラグ２７がＮＶＲＡＭ８に設定されているか否かを判定する。そして、ＢＩＯＳ２０は、起動フラグ２７がＮＶＲＡＭ８に設定されている場合は、インディペンデントモードでＤＩＭＭのメモリテストを行う。その後、ＢＩＯＳ２０は、メモリテストの結果を出力する。【選択図】図３
2014199627.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験する第１の試験部と、
前記第１の試験部による試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定する設定部と、
再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定する判定部と、
前記フラグが前記不揮発性の記憶領域に設定されていると前記判定部が判定した場合は、前記メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験する第２の試験部と、
前記第２の試験部による試験結果を出力する出力部と
を有することを特徴とする情報処理装置。
【請求項２】
前記設定部は、並列に動作させたメモリの組のうち、前記第１の試験部による試験で訂正不能なエラーが検出されたメモリの組を示すエラー情報を前記不揮発性の記憶領域に設定し、
前記第２の試験部は、前記設定部が前記不揮発性の記憶領域に格納した前記エラー情報が示すメモリの組に含まれる各メモリを個別に動作させ、訂正不能なエラーが検出されるか否かを試験することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記出力部は、前記設定部が前記不揮発性の記憶領域に格納した前記エラー情報が示すメモリの組に含まれる各メモリから訂正不能なエラーが検出されなかった場合は、当該メモリの組に含まれる各メモリからエラーが検出された旨を示す情報を出力することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記出力部は、前記第２の試験部による試験で訂正不能なエラーが検出されたメモリを示す情報を出力することを特徴とする請求項１〜３のいずれか１つに記載の情報処理装置。
【請求項５】
２以上のメモリを有するコンピュータに、
複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定し、
再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定し、
前記フラグが前記不揮発性の記憶領域に設定されていると判定した場合は、前記メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験結果を出力する
処理を実行させることを特徴とするメモリ試験プログラム。
【請求項６】
２以上のメモリを有する情報処理装置が、
複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定し、
再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定し、
前記フラグが前記不揮発性の記憶領域に設定されていると判定した場合は、前記メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験結果を出力する
処理を実行することを特徴とするメモリ試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、メモリ試験プログラムおよびメモリ試験方法に関する。
【背景技術】
【０００２】
従来、ＤＩＭＭ（Dual  Inline  Memory  Module）に格納されたデータに対するエラー対策として、ＥＣＣ（Error  Check  and  Correction）を用いてエラーの検出や訂正を行う技術が知られている。例えば、６４ビットのデータに対して８ビットのＥＣＣを付加することで、１ビットエラーの訂正、および２ビットエラーの検出を可能とするＳＥＣ−ＤＥＤ（Single  Error  Correction-Double  Error  Detection）符号の技術が知られている。
【０００３】
また、メモリロックステップの技術を用いて複数のＤＩＭＭを並列に動作させ、データとＥＣＣとを並列に動作させたＤＩＭＭに格納することで、符号化率を悪化させずに検出可能なエラーのビット数を向上させる技術が知られている。例えば、７２ビット幅のＤＩＭＭを２つ並列に動作させ、１２８ビットのデータと１６ビットのＥＣＣとを２つのＤＩＭＭに分けて格納することで、連続する８ビットの誤りを検出するＳ８ＥＣ（１４４、１２８）符号を構成する技術が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１０−５３７３１１号公報
【特許文献２】特開２０１２−１７７９６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した複数のＤＩＭＭを並列に動作させる技術では、並列に動作するＤＩＭＭ上で訂正不能なエラーが発生した際に、並列に動作するＤＩＭＭのうちどのＤＩＭＭでエラーが発生したかを特定できないという問題がある。
【０００６】
例えば、メモリロックステップの技術を用いて２枚のＤＩＭＭを並列に動作させた際に、一方のＤＩＭＭが故障し、訂正不能なエラーが発生した場合は、どちらのＤＩＭＭで訂正不能なエラーが発生したかを特定できないので、故障したＤＩＭＭを特定できない。この結果、正常なＤＩＭＭを故障部品として特定したり、故障したＤＩＭＭを用いた障害の再現を行えない場合がある。
【０００７】
１つの側面では、複数のＤＩＭＭを並列に動作させた際に、訂正不能なエラーが発生したＤＩＭＭの特定を目的とする。
【課題を解決するための手段】
【０００８】
１つの側面では、２以上のメモリを有する情報処理装置である。ここで、情報処理装置は、複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験する。また、情報処理装置は、試験により訂正不能なエラーが検出された場合は、メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定する。また、情報処理装置は、再起動時に、フラグが不揮発性の記憶領域に設定されているか否かを判定する。そして、情報処理装置は、フラグが不揮発性の記憶領域に設定されていると判定した場合は、メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験する。その後、情報処理装置は、試験結果を出力する。
【発明の効果】
【０００９】
１つの側面では、複数のＤＩＭＭを並列に動作させた際に、訂正不能なエラーが発生したＤＩＭＭを特定することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係る情報処理装置を説明するための図である。
【図２】図２は、ＳＤＤＣ構成の一例を説明するための図である。
【図３】図３は、ＢＩＯＳの機能構成を説明するための図である。
【図４Ａ】図４Ａは、エラー情報の一例を説明する図である。
【図４Ｂ】図４Ｂは、被疑ＤＩＭＭ特定処理結果の一例を説明する図である。
【図５】図５は、ＳＥＬ指摘の一例を説明するための図である。
【図６】図６は、ＢＩＯＳにより実行される処理を説明するための図である。
【図７】図７は、従来の情報処理装置によるメモリエラー処理を説明するためのフローチャートである。
【図８】図８は、ＢＩＯＳによるメモリエラー処理の流れを説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して本願に係る情報処理装置、メモリ試験プログラムおよびメモリ試験方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例１】
【００１２】
以下の実施例１では、図１を用いて、本願に係る情報処理装置を説明する。図１は、実施例１に係る情報処理装置を説明するための図である。図１に示すように、情報処理装置１は、ＣＰＵ（Central  Processing  Unit）２、メモリコントローラ３、メモリコントローラ４、チップセット５、Ｉ／Ｏ（Input/Output）６を有する。また、情報処理装置１は、ＲＯＭ（Read  Only  Memory）７、ＮＶＲＡＭ（Non  Volatile  Random  Access  Memory）８を有する。
【００１３】
また、情報処理装置１は、演算処理に用いるメモリとして、複数のＤＤＲ（Double-Data-Rate  Synchronous  Dynamic  RAM）９〜１２を有する。ここで、ＤＤＲ９は、複数のＤＩＭＭ９ａ〜９ｃを有するＤＤＲチャネルであり、ＤＤＲ１０はＤＩＭＭ１０ａ〜１０ｃを有するＤＤＲチャネルである。また、ＤＤＲ１１は、ＤＩＭＭ１１ａ〜１１ｃを有するＤＤＲチャネルであり、ＤＤＲ１２は、ＤＩＭＭ１２ａ〜１２ｃを有するＤＤＲチャネルである。
【００１４】
なお、図１に示す例では、情報処理装置１は、４つのＤＤＲ９〜１２を有する例について記載したが、実施例はこれに限定されるものではなく、任意の数のＤＤＲを有してよい。また、情報処理装置１は、各ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃ、１１ａ〜１１ｃ、１２ａ〜１２ｃをＤＤＲとしてではなく、単なるＤＩＭＭとして有してもよい。
【００１５】
ＣＰＵ２は、各種演算処理を実行する演算処理装置である。例えば、ＣＰＵ２は、メモリコントローラ３、４を介して、ＤＤＲ９〜１２に対してメモリアクセスを実行し、ＤＤＲ９〜１２から読みだしたデータを用いて演算処理を実行する。また、ＣＰＵ２は、ＤＤＲ９〜１２に対してデータの書き込みを行う。
【００１６】
また、ＣＰＵ２は、チップセット５を介してＩ／Ｏ６、ＲＯＭ７、ＮＶＲＡＭ８にアクセスし、データの書き込みや読出しを行う。例えば、ＣＰＵ２は、チップセット５、Ｉ／Ｏ６を介して、図示を省略したＨＤＤ（Hard  Disk  Drive）等のＩＯ装置にアクセスし、データの書き込みや読出しを行う。また、ＣＰＵ２は、チップセット５を介してＲＯＭ７からデータの読出しを行う。また、ＣＰＵ２は、チップセット５を介して、ＮＶＲＡＭ８を介してデータの書き込みや読出しを行う。
【００１７】
なお、ＣＰＵ２は、各種プログラムを実行することで、上述した演算処理やメモリアクセス等を実行する。例えば、ＣＰＵ２は、ＢＩＯＳ（Basic  Input/Output  System）を実行して各ＤＤＲ９〜１２の試験を行い、その後ＯＳ（Operating  System）を実行する。
【００１８】
メモリコントローラ３、４は、各ＤＤＲ９〜１２に対するメモリアクセスの発行や制御を実行する。例えば、メモリコントローラ３は、論理アドレスを含む読出し要求を受信すると、論理アドレスと物理アドレスとの変換処理を実行し、ＤＤＲ９、１０が有する記憶領域のうち、変換後の物理アドレスが示す記憶領域からデータを取得する。そして、メモリコントローラ３は、取得したデータをＣＰＵ２へ出力する。
【００１９】
ここで、メモリコントローラ３、４は、ＤＤＲ９〜１２に含まれる各ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃ、１１ａ〜１１ｃ、１２ａ〜１２ｃを個別に、または、並列に動作させることができる。例えば、メモリコントローラ３は、ＤＩＭＭ９ａとＤＩＭＭ１０ａとを並列に動作させ、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとを並列に動作させ、ＤＩＭＭ９ｃとＤＩＭＭ１０ｃとを並列に動作させることができる。このように、複数のＤＩＭＭを並列に動作させる状態を、以下の説明では、メモリロックステップモードと記載する。
【００２０】
また、メモリコントローラ３は、各ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃをそれぞれ独立で動作させることができる。このように、各ＤＩＭＭをそれぞれ独立で動作させる状態を、以下の説明では、インディペンデントモードと記載する。なお、メモリコントローラ３がメモリロックステップモードでメモリアクセスを行うか、インディペンデントモードでメモリアクセスを行うかは、ＣＰＵ２が起動時に実行するＢＩＯＳによって指定される。
【００２１】
チップセット５は、ＣＰＵ２からＩ／Ｏ６、ＲＯＭ７、ＮＶＲＡＭ８に対する各種コマンドの転送や制御を実行する。なお、図１に示す例では、情報処理装置１は、１つのチップセット５を有する例について説明したが、実施例はこれに限定されるものではなく、例えば、ノースブリッジとして動作するチップセットとサウスブリッジとして動作するチップセットとを有してもよい。
【００２２】
Ｉ／Ｏ６は、各種ＩＯ装置との通信を制御する入出力ポートである。また、ＲＯＭ７は、ＣＰＵ２が用いる各種データを記憶する読出し専用メモリであり、例えば、ＢＩＯＳが格納されている。また、ＮＶＲＡＭ８は、不揮発性の記憶装置であり、例えば、ＥＥＰＲＯＭ（Electrically  Erasable  Programmable  ROM）やフラッシュメモリ等、任意の不揮発性の記憶装置である。
【００２３】
ＤＤＲ９〜１２は、それぞれ１以上のＤＩＭＭを有するメモリである。例えば、ＤＤＲ９は、それぞれ４ビットのＤＲＡＭ（Dynamic  Random  Access  Memory）を１８個有するＤＩＭＭ９ａ〜９ｃを有する。
【００２４】
ここで、情報処理装置１は、ＯＳやアプリケーションプログラムを実行する場合は、起動時にメモリロックステップモードを選択し、各ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃ、１１ａ〜１１ｃ、１２ａ〜１２ｃを並列に動作させる。例えば、情報処理装置１は、ＤＩＭＭ９ａとＤＩＭＭ１０ａとを並列に動作させる。
【００２５】
また、情報処理装置１は、１つのＤＩＭＭが有するＤＲＡＭが故障し、データエラーが発生した際に、故障したＤＲＡＭが記憶していたデータを自動訂正する機能を有する。以下の説明では、ＤＲＡＭが記憶していたデータを自動訂正する機能をＳＤＤＣ（Single  Device  Data  Correction）機能と記載するが、同様の機能は、チップキル、もしくはＥｘｔｅｎｄｅｄ  ＥＣＣと呼ばれる場合がある。
【００２６】
例えば、情報処理装置１は、ＤＩＭＭ９ａ〜９ｃが４ビット、または、８ビットのＤＲＡＭを有する場合は、Ｓ８ＥＣ−Ｄ８ＥＣ（Single  8  bit  Byte  Error  Correct  -  Double  8  Byte  Error  Detect）（１４４、１２８）符号でデータを符号化する。以下、図２を用いて、Ｓ８ＥＣ−Ｄ８ＥＣ（以下、単にＳ８ＥＣと記載する）（１４４、１２８）符号化について説明する。
【００２７】
図２は、ＳＤＤＣ構成の一例を説明するための図である。例えば、情報処理装置１は、８ビットを塊（バイト）とみなし、リードソロモン符号を用いた符号化を利用することで、１２８ビットのデータから連続する８ビットのエラーを訂正可能とする１４４ビットの符号語を生成する。詳細には、情報処理装置１は、図２中（Ａ）に示すように、１２８ビットのデータに対し、図２中（Ｂ）に示すように、連続する８ビットのエラーを訂正可能な１６ビットの符号を付加した１４４ビットの符号語を生成する。そして、情報処理装置１は、生成した１４４ビットの符号語をＤＩＭＭ９ａとＤＩＭＭ１０ａとに７２ビットずつ格納する。
【００２８】
このようなＳ８ＥＣ（１４４，１２８）符号を用いた場合は、情報処理装置１は、８ビットの連続するエラーのデータ訂正を行うことができる。すなわち、情報処理装置１は、Ｓ８ＥＣ（１４４、１２８）符号を用いた場合は、４ビットのＤＲＡＭ２つ、または８ビットのＤＲＡＭ１つが故障した場合にも、他のＤＲＡＭに格納されたデータから、故障したＤＲＡＭが記憶していたデータを復元できる。
【００２９】
ここで、従来の情報処理装置では、メモリロックステップモードを選択した際に、並列に動作するＤＩＭＭ上で訂正不能なエラーが発生すると、並列に動作するＤＩＭＭのうち、どのＤＩＭＭで訂正不能なエラーが発生したかを特定できない。
【００３０】
例えば、情報処理装置１と同様の構成を有する従来の情報処理装置は、Ｓ８ＥＣ（１４４、１２８）符号を用いて１４４ビットの符号語を生成し、メモリロックステップモードで動作させるＤＩＭＭ９ａとＤＩＭＭ１０ａとに分けて格納する。ここで、ＤＩＭＭ９ａ上のＤＲＡＭが故障し、５ビット以上８ビット以下のエラー、すなわち訂正不能なエラーが発生すると、従来の情報処理装置は、ＤＩＭＭ９ａとＤＩＭＭ１０ａとのどちらのＤＲＡＭが故障したかを特定することができない。
【００３１】
そこで、情報処理装置１は、起動時に、以下のメモリチェック処理を情報処理装置１に実行させるＢＩＯＳを起動させ、以下のメモリチェック処理を実行する。まず、情報処理装置１は、メモリロックステップモードで各ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃ、１１ａ〜１１ｃ、１２ａ〜１２ｃを動作させた際に訂正不能なエラーが検出された旨を示すフラグが、ＮＶＲＡＭ８に格納されているか判定する。
【００３２】
そして、情報処理装置１は、フラグがＮＶＲＡＭ８に格納されていない場合は、メモリロックステップモードを選択し、ＤＩＭＭ９ａとＤＩＭＭ１０ａ、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂ、ＤＩＭＭ９ｃとＤＩＭＭ１０ｃとを並列に動作させる。また、情報処理装置１は、ＤＩＭＭ１１ａとＤＩＭＭ１２ａ、ＤＩＭＭ１１ｂとＤＩＭＭ１２ｂ、ＤＩＭＭ１１ｃとＤＩＭＭ１２ｃとを並列に動作させる。
【００３３】
また、情報処理装置１は、Ｓ４ＥＣ符号を用いた１４４ビットの符号語を生成し、生成したデータを並列に動作させる各ＤＩＭＭの組に格納する。そして、情報処理装置１は、各ＤＩＭＭの組に格納したデータを読出し、エラーチェックを実行する。ここで、情報処理装置１は、エラーチェックの結果、訂正不能なエラーが検出された場合は、メモリロックステップモードで訂正不能なエラーが検出された旨を示す情報をＮＶＲＡＭ８に格納する。詳細には、情報処理装置１は、訂正不能なエラーが検出されたか否かを示す情報と、ＤＩＭＭの組を示す情報とを対応付けてＮＶＲＡＭ８に記憶する。そして、情報処理装置１は、再起動を行う。
【００３４】
ここで、再起動した情報処理装置１は、ＮＶＲＡＭ８に訂正不能なエラーが検出された旨を示すフラグが格納されているかを再度判定する。また、情報処理装置１は、ＮＶＲＡＭ８に訂正不能なエラーが検出された旨を示すフラグが格納されている場合は、インディペンデントモードを選択し、各ＤＩＭＭごとにメモリテストを実行する。詳細には、情報処理装置１は、ＮＶＲＡＭ８に訂正不能なエラーが検出された旨を示す情報と対応付けられたＤＩＭＭの組を示す情報を識別し、識別した情報が示す組に含まれる各ＤＩＭＭに対し、それぞれ独立したメモリチェックを実行する。
【００３５】
例えば、情報処理装置１は、ＮＶＲＡＭ８にＤＩＭＭ９ａとＤＩＭＭ１０ａとの組を示す情報と訂正不能なエラーが検出された旨を示す情報とが対応付けて格納されている場合は、ＤＩＭＭ９ａとＤＩＭＭ１０ａとに対し、それぞれ独立したメモリチェックを行う。詳細な例を挙げると、情報処理装置１は、Ｓ４ＥＣ符号を用いて符号化した符号語をＤＩＭＭ９ａ、および、ＤＩＭＭ１０ａのそれぞれに格納する。そして、情報処理装置１は、各ＤＩＭＭ９ａ、１０ａに格納したデータの読出しを行いエラーチェックを実行する。
【００３６】
また、情報処理装置１は、ＤＩＭＭ９ａから訂正不能なエラーを検出した場合は、ＤＩＭＭ９ａが故障した旨を出力し、ＤＩＭＭ１０ａから訂正不能なエラーを検出した場合は、ＤＩＭＭ１０ａが故障した旨を出力する。また、情報処理装置１は、ＤＩＭＭ９ａとＤＩＭＭ１０ａとの両方から訂正不能なエラーを検出した場合は、ＤＩＭＭ９ａとＤＩＭＭ１０ａとが両方とも故障した旨を出力する。
【００３７】
この結果、情報処理装置１は、ＤＲＡＭが故障し、訂正不能なエラーが発生したＤＩＭＭを特定することができるので、正常なＤＩＭＭを故障部品とすることを防げる。また、情報処理装置１は、故障したＤＩＭＭを特定できるので、例えば、故障したＤＩＭＭを用いた障害の再現を行う際に、誤ったＤＩＭＭ、すなわち正常なＤＩＭＭを用いた障害の再現を防ぐので、障害発生時の再現性を向上させることができる。
【００３８】
一方、情報処理装置１は、ＤＩＭＭ９ａとＤＩＭＭ１０ａの両方から訂正不能なエラーを検出できなかった場合にも、ＤＩＭＭ９ａとＤＩＭＭ１０ａとが両方とも故障した旨を出力する。すなわち、情報処理装置１は、メモリロックステップモードで訂正不能なエラーが発生したＤＩＭＭの組に含まれる各ＤＩＭＭを個別にテストした際に、訂正不能なエラーの発生を再現できなかった場合は、両方のＤＩＭＭを故障したＤＩＭＭとして通知する。このため、例えば、情報処理装置１は、故障した恐れのあるＤＩＭＭを利用者に通知することができる。
【００３９】
次に、図３を用いて、情報処理装置１が実行するＢＩＯＳの機能構成について説明する。図３は、ＢＩＯＳの機能構成を説明するための図である。なお、図３に示す例では、ＣＰＵ２がＲＯＭ７に格納されていたＢＩＯＳ２０を読出して実行する例について記載した。また、以下の説明では、ＢＩＯＳ２０を実行したＣＰＵ２がメモリコントローラ３を介して、ＤＤＲ９、１０にアクセスする例について記載するが、実施例はこれに限定されるものではない。すなわち、ＢＩＯＳ２０を実行したＣＰＵ２は、メモリコントローラ４を介して、ＤＤＲ１０、１１に対しても、同様の処理を実行する。
【００４０】
例えば、図３に示す例では、ＢＩＯＳ２０を実行したＣＰＵ２は、起動部２１、メモリ初期化部２２、ＰＯＳＴ（Power  On  Self  Test）処理部２３、メモリエラー処理部２４、解析部２５として動作することとなる。また、ＮＶＲＡＭ８には、被疑ＤＩＭＭ特定データベース２６が格納されている。また、被疑ＤＩＭＭ特定データベース２６には、起動フラグ２７、エラー情報２８、被疑ＤＩＭＭ特定処理結果２９が格納されている。
【００４１】
まず、被疑ＤＩＭＭ特定データベース２６に格納された起動フラグ２７、エラー情報２８、被疑ＤＩＭＭ特定処理結果２９について説明する。起動フラグ２７は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出されたか否かを示すフラグである。例えば、起動フラグ２７は、値が「１」である場合は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出された旨を示す。また、起動フラグ２７は、値が「０」である場合は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出されなかった旨を示す。
【００４２】
エラー情報２８は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出されたＤＩＭＭの組を示す情報である。例えば、図４Ａは、エラー情報の一例を説明する図である。図４Ａに示すように、エラー情報２８には、ＤＩＭＭの組（ペア）を示す情報と、訂正不能なエラーが検出されたか否かを示すエラー情報とが対応付けて格納されている。
【００４３】
例えば、図４Ａに示す例では、エラー情報２８は、ＤＩＭＭ９ａとＤＩＭＭ１０ａとの組で、訂正不能なエラーが検出されなかった旨を示すエラー情報「ＯＫ」とが対応付けて格納されている。このため、エラー情報２８は、ＤＩＭＭ９ａとＤＩＭＭ１０ａとの組で訂正不能なエラーが検出されなかった旨を示す。また、エラー情報２８は、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとの組、および、ＤＩＭＭ９ｃとＤＩＭＭ１０ｃとの組で、訂正不能なエラーが検出された旨を示すエラー情報「ＮＧ」が対応付けて格納されている。このため、エラー情報２８は、ＤＩＭＭ９ｃとＤＩＭＭ１０ｃとの組で、訂正不能なエラーが検出された旨を示す。
【００４４】
図３に戻り、被疑ＤＩＭＭ特定処理結果２９は、各ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｂのうち、訂正不能なエラーが検出されたＤＩＭＭを個別に示す情報である。以下、図４Ｂを用いて、被疑ＤＩＭＭ特定処理結果２９の一例について説明する。図４Ｂは、被疑ＤＩＭＭ特定処理結果の一例を説明する図である。
【００４５】
図４Ｂに示す例では、被疑ＤＩＭＭ特定処理結果２９は、各ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃとエラー情報とを対応付けて記憶する。すなわち、被疑ＤＩＭＭ特定データベース２６は、情報処理装置１がインディペンデントモードでメモリチェックを行った際に、ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃから訂正不能なエラーが検出されたか否かを示すエラー情報を記憶する。例えば、被疑ＤＩＭＭ特定データベース２６は、ＤＩＭＭ９ｂから訂正不能なエラーが検出された場合は、ＤＩＭＭ９ｂを示す情報と対応付けて、エラー情報「ＮＧ」を記憶する。
【００４６】
図３に戻り、起動部２１は、被疑ＤＩＭＭ特定データベース２６にアクセスし、起動フラグ２７が設定されているか否かを判定する。そして、起動部２１は、起動フラグ２７が設定されていない場合は、メモリモードとしてメモリロックステップモードを選択する。一方、起動部２１は、起動フラグ２７が設定されている場合は、メモリモードとしてインディペンデントモードを選択する。
【００４７】
例えば、起動部２１は、起動フラグ２７の値が「０」である場合は、メモリモードとしてメモリロックステップモードを選択する。一方、起動部２１は、起動フラグ２７の値が「１」である場合は、メモリモードとしてインディペンデントモードを選択する。そして、被疑ＤＩＭＭ特定データベース２６は、メモリ初期化部２２に対し、選択したメモリ運用モードを通知する。
【００４８】
メモリ初期化部２２は、メモリモードを設定する。また、メモリ初期化部２２は、ＣＰＵ２のＥＣＣ機能を有効化する。そして、メモリ初期化部２２は、設定したメモリモードと、起動フラグ２７とに応じて、情報処理装置１の起動時に実行されるメモリテストであるＰＯＳＴ処理の対象ＤＩＭＭをＰＯＳＴ処理部２３に通知する。
【００４９】
例えば、メモリ初期化部２２は、起動部２１からメモリ運用モードとして、メモリロックステップモード、又は、インディペンデントモードの通知を受信する。すると、メモリ初期化部２２は、メモリコントローラ３のＥＣＣエラーステータスレジスタにメモリロックステップモード、又は、インディペンデントモードを示すデータを格納することで、メモリモードを設定する。
【００５０】
また、他の例では、ＣＰＵ２がＩｎｔｅｌ（登録商標）社製のＣｏｒｅ  ｉ７シリーズである場合は、メモリ初期化部２２は、以下の処理により、メモリ運用モードの設定を行うことができる。すなわち、メモリ初期化部２２は、ＭＣＭＴＲ（MC  Memory  Technology  Register）の第１ビットであるＬＳ＿ＥＮビットの値を変更することで、メモリモードを設定する。また、メモリ初期化部２２は、例えば、ＭＣＭＴＲの第２ビットであるＥＣＣ＿ＥＮビットの値を変更することで、ＥＣＣ機能を有効化する。
【００５１】
ここで、メモリ初期化部２２は、メモリロックステップモードを設定した場合は、ＰＯＳＴ処理部２３に対し、各ＤＩＭＭの組に対してメモリテストを実行するよう指示する。一方、メモリ初期化部２２は、インディペンデントモードを設定した場合は、メモリロックステップモードで訂正不能なエラーが検出されたＤＩＭＭの組を識別する。詳細には、メモリ初期化部２２は、エラー情報２８を参照し、エラー情報「ＮＧ」と対応付けられたＤＩＭＭの組を識別する。
【００５２】
そして、メモリ初期化部２２は、識別したＤＩＭＭの組に含まれる各ＤＩＭＭに対してメモリテストを実行するようＰＯＳＴ処理部２３に指示する。例えば、メモリ初期化部２２は、エラー情報２８に、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとの組を示す情報にエラー情報「ＮＧ」が対応付けられている場合は、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとに対してメモリテストを実行するようＰＯＳＴ処理部２３に指示する。
【００５３】
ＰＯＳＴ処理部２３は、メモリロックステップモードが設定された場合は、各ＤＩＭＭの組に対して、メモリテストを実行する。また、ＰＯＳＴ処理部２３は、インディペンデントモードが設定された場合は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出されたＤＩＭＭの組に含まれる各ＤＩＭＭに対し、それぞれ独立にメモリテストを実行する。
【００５４】
例えば、ＰＯＳＴ処理部２３は、メモリ初期化部２２がメモリモードをメモリロックステップモードに設定した場合は、メモリ初期化部２２から各ＤＩＭＭの組に対してＰＯＳＴ処理を実行するよう指示される。このような場合は、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ａとＤＩＭＭ１０ａの組、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂの組、ＤＩＭＭ９ｃとＤＩＭＭ１０ｃの組に対して、メモリロックステップモードでメモリテストを実行する。
【００５５】
そして、ＰＯＳＴ処理部２３は、メモリテストの結果、訂正不能なエラーが検出された場合は、起動フラグ２７の値を「１」にする。その後、ＰＯＳＴ処理部２３は、訂正不能なエラーが検出されたＤＩＭＭの組を示す情報とエラー情報「ＮＧ」とを対応付たエラー情報２８を被疑ＤＩＭＭ特定データベース２６に格納する。つまり、ＰＯＳＴ処理部２３は、訂正不能なエラーが検出されたＤＩＭＭの組を被疑ＤＩＭＭとして被疑ＤＩＭＭ特定データベース２６に格納する。
【００５６】
また、ＰＯＳＴ処理部２３は、メモリテストの結果、訂正不能なエラーが検出されなかったＤＩＭＭの組を示す情報とエラー情報「ＯＫ」とを対応付けたエラー情報２８を被疑ＤＩＭＭ特定データベース２６に格納する。一方、ＰＯＳＴ処理部２３は、メモリテストの結果、訂正不能なエラーが検出されなかった場合は、起動フラグ２７の値を「０」にする。
【００５７】
ＰＯＳＴ処理部２３は、メモリ初期化部２２がメモリモードをインディペンデントモードに設定した場合は、メモリロックステップモードのメモリテストで訂正不能なエラーが検出されたＤＩＭＭの組に含まれるＤＩＭＭの通知を受信する。例えば、メモリロックステップモードでメモリテストが実行された際に、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとの組から訂正不能なエラーが検出された場合は、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂ、および、ＤＩＭＭ１０ｂの通知を受信する。このため、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂ、および、ＤＩＭＭ１０ｂに対し、インディペンデントモードでメモリテストを実行する。
【００５８】
ここで、ＰＯＳＴ処理部２３が実行するメモリテストの一例について説明する。なお、以下の例では、ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃが４ビットのＤＲＡＭを１８個有するものとし、ＤＩＭＭ９ａが有するＤＲＡＭが故障し、訂正不能なエラーが発生する例について説明する。
【００５９】
まず、ＰＯＳＴ処理部２３がメモリロックステップモードで実行するメモリテストの例について説明する。ＰＯＳＴ処理部２３は、各値が「０」のデータ、各値が「１」のデータ、値が「０」と「１」とを繰り返すデータ等、各種データパターンを生成する。そして、ＰＯＳＴ処理部２３は、生成したデータパターンをＳ８ＥＣ（１４４、１２８）符号により符号化した１４４ビットの符号語を生成する。すなわち、ＰＯＳＴ処理部２３は、メモリロックステップモードで動作させる複数のＤＩＭＭに格納する符号語を生成する。その後、ＰＯＳＴ処理部２３は、生成した符号語を各ＤＩＭＭの組、例えばＤＩＭＭ９ａとＤＩＭＭ１０ａとの組に書き込み、読出しを実行する。
【００６０】
ここで、メモリコントローラ３は、読出したデータのエラーチェックを実行し、エラーチェックの結果をＥＣＣエラーステータスレジスタに格納する。ＰＯＳＴ処理部２３は、メモリコントローラ３のＥＣＣエラーステータスレジスタの内容を確認することで、各ＤＩＭＭの組から読出したデータに訂正不能なエラーが検出されたか否かを判定する。
【００６１】
そして、ＰＯＳＴ処理部２３は、判定結果をエラー情報２８として、被疑ＤＩＭＭ特定データベース２６に格納する。例えば、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとの組からデータを読出した際、訂正不能なエラーが検出された場合は、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとの組にエラー情報「ＮＧ」を対応付けて被疑ＤＩＭＭ特定データベース２６に格納する。その後、ＰＯＳＴ処理部２３は、解析部２５に再起動を依頼する。
【００６２】
一方、ＰＯＳＴ処理部２３は、インディペンデントモードでメモリテストを実行する場合は、以下の処理を実行する。例えば、ＰＯＳＴ処理部２３は、８ビットの訂正能力を有する符号化、例えばＳＤＤＣ（５６、３２）符号で各種データパターンを符号化した符号語を生成し、生成した符号語を、指定されたＤＩＭＭ、例えばＤＩＭＭ９ｂに書き込む。また、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂに書き込んだデータを読出し、メモリコントローラ３のＥＣＣエラーステータスレジスタの内容を確認する。そして、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂから読出したデータから訂正不能なエラーが検出された場合は、被疑ＤＩＭＭ特定処理結果２９にＤＩＭＭ９ｂを示す情報と対応付けてエラー情報「ＮＧ」を格納する。
【００６３】
なお、ＰＯＳＴ処理部２３は、訂正不能なエラーが検出されたＤＩＭＭの組に含まれる両方のＤＩＭＭから訂正不能なエラーが検出されなかった場合は、以下の処理を実行する。すなわち、ＰＯＳＴ処理部２３は、両方のＤＩＭＭを示す情報とエラー情報「ＮＧ」とを対応付けて被疑ＤＩＭＭ特定処理結果２９に格納する。
【００６４】
例えば、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとを通知された際に、両方のＤＩＭＭから訂正不能なエラーが検出されなかった場合は、以下の処理を実行する。すなわち、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂを示す情報とエラー情報「ＮＧ」とを対応付けて被疑ＤＩＭＭ特定処理結果２９に格納する。また、ＰＯＳＴ処理部２３は、ＤＩＭＭ１０ｂを示す情報とエラー情報「ＮＧ」とを対応付けて被疑ＤＩＭＭ特定処理結果２９に格納する。
【００６５】
メモリエラー処理部２４は、メモリコントローラ３のＥＣＣエラーステータスレジスタの内容を監視し、ＯＳ起動後に訂正不能なメモリエラーが検出された場合は、訂正不能なメモリエラーが検出されたＤＩＭＭの組を特定する。そして、メモリエラー処理部２４は、エラー情報２８として、特定したＤＩＭＭの組を示す情報とエラー情報「ＮＧ」とを被疑ＤＩＭＭ特定データベース２６に格納する。また、メモリエラー処理部２４は、起動フラグ２７の値を「１」に更新し、解析部２５に情報処理装置１の再起動を依頼する。
【００６６】
例えば、メモリエラー処理部２４は、メモリロックステップモードで情報処理装置１が通常の動作を実行中に、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとの組で訂正不能なエラーが検出された場合は、以下の処理を実行する。すなわち、メモリエラー処理部２４は、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとの組を示す情報と、エラー情報「ＮＧ」とを対応付けたエラー情報２８を被疑ＤＩＭＭ特定データベース２６に格納し、起動フラグ２７の値を「１」に更新する。そして、メモリエラー処理部２４は、解析部２５に情報処理装置１の再起動を依頼する。この結果、情報処理装置１は、再起動し、インディペンデントモードで、ＤＩＭＭ９ｂとＤＩＭＭ１０ｂとのメモリテストを実行する。
【００６７】
解析部２５は、被疑ＤＩＭＭ特定処理結果２９を参照し、エラー情報「ＮＧ」と対応付けられた情報が示すＤＩＭＭを特定する。すなわち、解析部２５は、インディペンデントモードでメモリテストを実行した際に、訂正不能なエラーが検出されたＤＩＭＭを特定する。そして、解析部２５は、訂正不能なエラーが検出されたＤＩＭＭを示すＳＥＬ（System  Event  Log）指摘を生成し、生成したＳＥＬ指摘を図示しない出力装置、例えばモニタやプリンタ等に出力する。
【００６８】
例えば、図５は、ＳＥＬ指摘の一例を説明するための図である。図５に示す例では、解析部２５は、タイムスタンプとエラー種類と被疑箇所とエラー内容とを対応付けたＳＥＬ指摘を出力する。ここで、タイムスタンプとは、ＳＥＬ指摘を出力した時刻を示す情報である。また、エラー種類とは、エラーの種類を示す情報である。また、被疑箇所とは、エラーが検出された位置を示す情報である。また、エラー内容とは、発生したエラーの内容を示す情報である。
【００６９】
例えば、図５に示すＳＥＬ指摘は、日時「２１−Ｄｅｃ−２０１２  ２２：４８」に、以下のエラーが発生した旨を示す。すなわち、ＳＥＬ指摘は、メモリコントローラ（ＭＣ：Memory  Controller）３が制御するＤＤＲ９のＤＩＭＭ９ａ、ＤＯＭＭ９ｂでＵｎｃｏｒｒｅｃｔａｂｌｅ  Ｅｒｒｏｒ、すなわち訂正不能なエラーが発生した旨を示す。また、ＳＥＬ指摘は、メモリコントローラ３が制御するＤＤＲ１０のＤＩＭＭ１０ｂでも訂正不能なエラーが発生した旨を示す。そして、解析部２５は、ＳＥＬ指摘を出力した場合は、情報処理装置１の電源を切断する。
【００７０】
装置の保守担当者は、訂正不能なエラー発生による電源切断時は、解析部２５が出力したＳＥＬ指摘に基づき、異常部位を交換し、装置を再起動し、装置を稼働させる。ここで、サーバの停止時間を短くするために、異常発生時には、障害の切り分けや被疑部位の絞り込み等に用いる時間的余裕はない。しかし、情報処理装置１は、障害が発生したＤＩＭＭを指摘することができるので、即時の交換、および再起動を可能とする。
【００７１】
なお、解析部２５は、ＰＯＳＴ処理部２３、または、メモリエラー処理部２４から再起動の依頼を受信した場合は、情報処理装置１の再起動を行う。また、解析部２５は、被疑ＤＩＭＭ特定処理結果２９を参照し、エラー情報「ＮＧ」と対応付けられた情報が示すＤＩＭＭが存在しない場合は、ＯＳの起動を実行する。
【００７２】
次に、図６を用いて、ＢＩＯＳ２０により実行される処理の流れについて説明する。図６は、ＢＩＯＳにより実行される処理を説明するための図である。なお、以下の説明では、ＤＩＭＭ９ａ、ＤＩＭＭ１０ａ、ＤＩＭＭ１０ｂが正常であり、ＤＩＭＭ９ｂ、ＤＩＭＭ９ｃ、ＤＩＭＭ１０ｃが故障している例について説明する。
【００７３】
まず、起動部２１は、情報処理装置１の電源が投入されると、起動フラグ２７を確認し、メモリモードを選択する装置起動モード判定処理を実行する。そして、起動部２１は、装置起動モード判定処理の結果を、メモリ初期化部２２に通知する。
【００７４】
次に、メモリ初期化部２２は、起動部２１が選択したメモリモードを設定するメモリモード設定処理を実行する。次に、メモリ初期化部２２は、設定したメモリモードに従い、メモリコントローラ３のＥＣＣ機能を設定するＥＣＣ符号設定処理を実行する。次に、メモリ初期化部２２は、メモリモード、およびエラー情報２８に基づいて、エラーチェックの対象となるＤＩＭＭをＰＯＳＴ処理部２３に通知するＰＯＳＴ対象ＤＩＭＭ設定処理を実行する。
【００７５】
また、ＰＯＳＴ処理部２３は、メモリ初期化部２２が設定したメモリモードで、メモリ初期化部２２から通知されたＤＩＭＭに対するメモリテストを実行する。また、ＰＯＳＴ処理部２３は、メモリテストの実行後、メモリコントローラ３のＥＣＣエラーステータスレジスタをチェックする。そして、ＰＯＳＴ処理部２３は、訂正不能なエラーが検出されたＤＩＭＭの組、またはＤＩＭＭを示す情報を被疑ＤＩＭＭ特定データベース２６に格納するエラーＤＩＭＭ記録処理を実行する。
【００７６】
例えば、ＰＯＳＴ処理部２３は、ロックステップモードでＤＩＭＭ９ａ、ＤＩＭＭ１０ａの組、ＤＩＭＭ９ｂ、ＤＩＭＭ１０ｂの組、ＤＩＭＭ９ｃ、ＤＩＭＭ１０ｃの組のそれぞれに対してメモリテストを実行する。このような場合は、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂ、ＤＩＭＭ１０ｂの組、ＤＩＭＭ９ｃ、ＤＩＭＭ１０ｃの組で訂正不能なエラーを検出する。
【００７７】
この結果、ＰＯＳＴ処理部２３は、図６に示すように、ＤＩＭＭ９ａ、ＤＩＭＭ１０ａの組とエラー情報「ＯＫ」とを対応付けて被疑ＤＩＭＭ特定データベース２６に格納する。また、ＰＯＳＴ処理部２３は、図６に示すように、ＤＩＭＭ９ｂ、ＤＩＭＭ１０ｂの組、および、ＤＩＭＭ９ｃ、ＤＩＭＭ１０ｃの組とエラー情報「ＮＧ」とを対応付けて被疑ＤＩＭＭ特定データベース２６に格納する。
【００７８】
また、ＰＯＳＴ処理部２３は、再起動後に、インディペンデントモードで、ＤＩＭＭ９ｂ、ＤＩＭＭ１０ｂ、ＤＩＭＭ９ｃ、ＤＩＭＭ１０ｃに対してメモリテストを実行する。この結果、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂ、ＤＩＭＭ９ｃ、ＤＩＭＭ１０ｃから訂正不能なエラーを検出する。
【００７９】
このため、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ａ、ＤＩＭＭ１０ａ、ＤＩＭＭ１０ｂを示す情報とエラー情報「ＯＫ」を対応付けた被疑ＤＩＭＭ特定処理結果２９を被疑ＤＩＭＭ特定データベース２６に格納する。また、ＰＯＳＴ処理部２３は、ＤＩＭＭ９ｂ、ＤＩＭＭ９ｃ、ＤＩＭＭ１０ｃを示す情報とエラー情報「ＮＧ」とを対応付けた被疑ＤＩＭＭ特定処理結果２９を被疑ＤＩＭＭ特定データベース２６に格納する。
【００８０】
一方、メモリエラー処理部２４は、ＯＳ起動後に、メモリコントローラ３のＥＣＣエラーステータスレジスタをチェックする。そして、メモリエラー処理部２４は、訂正不能なエラーが検出された場合は、エラーＤＩＭＭ記録処理を実行する。すなわち、メモリエラー処理部２４は、訂正不能なエラーが検出されたＤＩＭＭの組を示す情報とエラー情報「ＮＧ」とを対応付けたエラー情報２８を被疑ＤＩＭＭ特定データベース２６に格納し、起動フラグ２７を「１」に設定する。
【００８１】
解析部２５は、被疑ＤＩＭＭ特定処理結果２９を解析する被疑ＤＩＭＭ解析処理を実行し、訂正不能なエラーが検出されたＤＩＭＭ９ｂ、ＤＩＭＭ９ｃ、ＤＩＭＭ１０ｃを特定する。そして、解析部２５は、訂正不能なエラーが検出されたＤＩＭＭ９ｂ、ＤＩＭＭ９ｃ、ＤＩＭＭ１０ｃを示すＳＥＬ指摘を出力するＳＥＬ指摘処理を実行する。その後、解析部２５は、情報処理装置１の電源を切断する。
【００８２】
このように、情報処理装置１は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出された旨を示す起動フラグ２７をＮＶＲＡＭ８に格納する。そして、情報処理装置１は、起動時に、ＮＶＲＡＭ８に訂正不能なエラーが検出された旨を示す起動フラグ２７が格納されている場合は、インディペンデントモードでメモリテストを実行する。この結果、情報処理装置１は、訂正不能なエラーが発生したＤＩＭＭを特定することができる。
【００８３】
次に、従来の情報処理装置が実行した処理の流れについて説明する。図７は、従来の情報処理装置によるメモリエラー処理を説明するためのフローチャートである。
【００８４】
図７に示すように、従来の情報処理装置は、メモリモードをロックステップモードに設定し（ステップＳ１）、メモリロックステップで使用するデータ長のＥＣＣ符号を設定する（ステップＳ２）。そして、情報処理装置は、ＰＯＳＴ対象のＤＩＭＭとして、全てのＤＩＭＭの組を対象に設定し（ステップＳ３）、メモリロックステップを構成するＤＩＭＭの組に対してメモリテストを実施する（ステップＳ４）。また、情報処理装置は、ＥＣＣエラーステータスレジスタをチェックし（ステップＳ５）、エラーが検出されたか否かを判定する（ステップＳ６）。
【００８５】
ここで、情報処理装置は、訂正不能なエラーが検出された場合は（ステップＳ６肯定）、エラーが検出されたＤＩＭＭの組に含まれる各ＤＩＭＭを被疑ＤＩＭＭとして記録する（ステップＳ７）。一方、情報処理装置は、訂正不能なエラーが検出されなかった場合は（ステップＳ６否定）、ステップＳ７の処理をスキップする。また、情報処理装置は、全てのＤＩＭＭの組についてメモリテストを実施したか判断し（ステップＳ８）、全てのＤＩＭＭの組についてメモリテストを実施していない場合は（ステップＳ８否定）、ステップＳ４を実行する。
【００８６】
また、情報処理装置は、全てのＤＩＭＭの組についてメモリテストを実施した場合は（ステップＳ８肯定）、被疑ＤＩＭＭが記録されているか否かを判定する（ステップＳ９）。そして、情報処理装置は、被疑ＤＩＭＭが記録されている場合は（ステップＳ９肯定）、被疑ＤＩＭＭを示すＳＥＬ指摘を出力し（ステップＳ１０）、装置電源を切断する（ステップＳ１１）。
【００８７】
一方、情報処理装置は、被疑ＤＩＭＭが記録されていない場合は（ステップＳ９否定）、ＯＳを稼動させる（ステップＳ１２）。その後、情報処理装置は、ＥＣＣエラーステータスレジスタをチェックし（ステップＳ１３）、訂正不能なエラーが検出されたか否かを判定する（ステップＳ１４）。そして、情報処理装置は、訂正不能なエラーが検出された場合は（ステップＳ１４肯定）、被疑ＤＩＭＭを示すＳＥＬ指摘を出力し（ステップＳ１５）、装置電源を切断する（ステップＳ１６）。一方、情報処理装置は、訂正不能なエラーが検出されていない場合は（ステップＳ１４否定）、ステップＳ１２の処理を実行する。
【００８８】
このように、従来の情報処理装置は、メモリロックステップモードで動作するＤＩＭＭの組のうち、訂正不能なエラーが検出されたＤＩＭＭの組をＳＥＬ指摘するが、どのＤＩＭＭから訂正不能なエラーが検出されたかをＳＥＬ指摘できない。このため、従来の情報処理装置では、故障したＤＩＭＭ等、障害の切り分けを行うことができない。
【００８９】
次に、図８を用いて、ＢＩＯＳ２０を実行する情報処理装置１が実行する処理の流れについて説明する。図８は、ＢＩＯＳによるメモリエラー処理の流れを説明するためのフローチャートである。なお、図８に示すステップＳ１０３〜Ｓ１１０、Ｓ１１３〜Ｓ１１５については、図７に示すステップＳ２〜Ｓ９、Ｓ１２〜Ｓ１４と同様の処理であるため、説明を省略する。
【００９０】
例えば、情報処理装置１は、起動すると、起動フラグが設定されているか否かを判定する（ステップＳ１０１）。そして、情報処理装置１は、起動フラグが設定されていない場合は（ステップＳ１０１否定）、メモリモードをメモリロックステップモードに設定する（ステップＳ１０２）。また、情報処理装置１は、ステップＳ１０２〜Ｓ１０９の処理を実行することで、訂正不能なエラーが検出されたＤＩＭＭの組に含まれるＤＩＭＭ、すなわち被疑ＤＩＭＭを記録する。そして、情報処理装置１は、被疑ＤＩＭＭが記録されている場合は（ステップＳ１１０肯定）、起動フラグ２７を「１」に設定し（ステップＳ１１１）、再起動する（ステップＳ１１２）。
【００９１】
一方、情報処理装置１は、被疑ＤＩＭＭが記録されていない場合は（ステップＳ１１０否定）、ＯＳを稼動させる（ステップＳ１１３）。また、情報処理装置１は、訂正不能なエラーが検出されると（ステップＳ１１５肯定）、訂正不能なエラーが検出されたＤＩＭＭの組を被疑ＤＩＭＭとして記録する（ステップＳ１１６）。そして、情報処理装置１は、起動フラグ２７を「１」に設定し（ステップＳ１１７）、再起動する（ステップＳ１１８）。
【００９２】
また、情報処理装置１は、起動フラグが設定されている場合（ステップＳ１０１肯定）、すなわち、メモリロックステップモードで訂正不能なエラーが検出された場合は、メモリモードをインディペンデントモードに設定する（ステップＳ１１９）。次に、情報処理装置１は、ＤＩＭＭ１枚分のデータ長のＥＣＣ符号を設定する（ステップＳ１２０）。そして、情報処理装置１は、ＰＯＳＴ対象のＤＩＭＭとして記録された被疑ＤＩＭＭに含まれる各ＤＩＭＭを設定する（ステップＳ１２１）。その後、情報処理装置１は、ＤＩＭＭ１枚ごとにメモリテストを実施する（ステップＳ１２２）。
【００９３】
また、情報処理装置１は、ＥＣＣエラーステータスレジスタをチェックし（ステップＳ１２３）、訂正不能なエラーが検出されたか否かを判定する（ステップＳ１２４）。そして、情報処理装置１は、訂正不能なエラーが検出された場合は（ステップＳ１２４肯定）、訂正不能なエラーが検出されたＤＩＭＭを記録する（ステップＳ１２５）。また、情報処理装置１は、ＰＯＳＴ対象の全てのＤＩＭＭについてメモリテストを実施したか否かを判定する（ステップＳ１２６）。そして、情報処理装置１は、ＰＯＳＴ対象の全てのＤＩＭＭについてメモリテストを実施していない場合は（ステップＳ１２６否定）、ステップＳ１２２を実行する。
【００９４】
一方、情報処理装置１は、ＰＯＳＴ対象の全てのＤＩＭＭについてメモリテストを実施した場合は（ステップＳ１２６肯定）、被疑ＤＩＭＭが特定できたか否かを判定する（ステップＳ１２７）。すなわち、情報処理装置１は、被疑ＤＩＭＭのうち、メモリロックステップモードで動作する際に組となるＤＩＭＭのいずれか、または、両方から訂正不能なエラーを検出したかいなかを判定する。
【００９５】
そして、情報処理装置１は、被疑ＤＩＭＭを特定できた場合は（ステップＳ１２７肯定）、特定したＤＩＭＭを被疑ＤＩＭＭとしてＳＥＬ指摘し（ステップＳ１２８）、装置の電源を切断する（ステップＳ１３０）。一方、情報処理装置１は、被疑ＤＩＭＭを特定できなかった場合は（ステップＳ１２７否定）、以下の処理を実行する。すなわち、情報処理装置１は、障害時、メモリロックステップを構成したＤＩＭＭの組に含まれるＤＩＭＭを被疑ＤＩＭＭとしてＳＥＬ指摘し（ステップＳ１２９）、装置の電源を切断する（ステップＳ１３０）。
【００９６】
[情報処理装置１の効果]
上述したように、情報処理装置１は、複数のＤＩＭＭを並列に動作させるメモリロックステップモードで訂正不能なエラーが検出されるか否かをテストする。また、情報処理装置１は、訂正不能なエラーが検出された場合は、訂正不能なエラーが検出された旨を示す起動フラグ２７を不揮発性の記憶装置であるＮＶＲＡＭ８に設定する。そして、情報処理装置１は、再起動時に、訂正不能なエラーが検出された旨を示す起動フラグ２７を設定されている場合は、複数のＤＩＭＭを個別に動作させるインディペンデントモードで訂正不能なエラーが検出されるか否かをテストする。その後、情報処理装置１は、インディペンデントモードで実行したテスト結果をＳＥＬ指摘として出力する。
【００９７】
このため、情報処理装置１は、メモリロックステップモードで各ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃ、１１ａ〜１１ｃ、１２ａ〜１２ｃを動作させる場合にも、訂正不能なエラーが発生したＤＩＭＭを特定することができる。この結果、情報処理装置１は、障害が発生した環境や構成等を変化させずに、障害の再現や障害が発生したＤＩＭＭの切り分けを迅速に行うことができる。また、情報処理装置１は、故障したＤＩＭＭを特定できるので、例えば、障害発生時の状況を他の環境で再現する際の再現性を向上させることができる。
【００９８】
また、情報処理装置１は、メモリロックステップモードで動作させたＤＩＭＭの組のうち、訂正不能なエラーが検出されたＤＩＭＭの組を示すエラー情報２８をＮＶＲＡＭ８に格納する。そして、情報処理装置１は、メモリロックステップモードで動作させたＤＩＭＭの組のうち、訂正不能なエラーが検出されたＤＩＭＭの組に含まれるＤＩＭＭをインディペンデントモードで動作させ、メモリテストを実行する。このため、情報処理装置１は、故障したＤＩＭＭを迅速に特定することができる。
【００９９】
また、情報処理装置１は、メモリロックステップモードで訂正不能なエラーが検出されたＤＩＭＭの組に含まれる各ＤＩＭＭをインディペンデントモードでメモリテストした際に、訂正不能なエラーが検出されなかった場合は、各ＤＩＭＭをＳＥＬ指摘する。すなわち、情報処理装置１は、メモリロックステップモードで訂正不能なエラーが発生したＤＩＭＭの組について、インディペンデントモードでメモリテストした際に、訂正不能なエラーの再現ができなかった場合は、各ＤＩＭＭをＳＥＬ指摘する。
【０１００】
このため、情報処理装置１は、故障の恐れがあるＤＩＭＭを特定することができる。すなわち、情報処理装置１は、環境によりエラーが再現されなかった異常品を特定することができる。このため、情報処理装置１は、エラーの原因究明のために再現調査する工数も削減できる。
【０１０１】
また、情報処理装置１は、メモリロックステップモードで動作させた際に、エラーが検出されたＤＩＭＭをＳＥＬ指摘する。このため、情報処理装置１は、利用者に対し、故障したＤＩＭＭを指摘することができる。
【実施例２】
【０１０２】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例２として本発明に含まれる他の実施例を説明する。
【０１０３】
（１）インディペンデントモードでメモリテストを行うＤＩＭＭについて
上述した情報処理装置１では、メモリロックステップモードで訂正不能なエラーが検出されたＤＩＭＭの組に含まれる各ＤＩＭＭをインディペンデントモードでメモリテストした。しかし、実施例はこれに限定されるものではない。例えば、情報処理装置１は、メモリロックステップモードで訂正不能なエラーが検出された場合は、エラー情報２８を生成せず、起動フラグ２７を「１」に設定し、再起動を行う。そして、情報処理装置１は、起動時に、起動フラグ２７が「１」である場合は、各ＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃ、１１ａ〜１１ｃ、１２ａ〜１２ｃに対して、インディペンデントモードでメモリテストを実行してもよい。
【０１０４】
すなわち、情報処理装置１は、メモリロックステップモードで訂正不能なエラーが検出されたＤＩＭＭの組を記憶せずとも、メモリロックステップモードで訂正不能なエラーが検出された旨を示す起動フラグ２７を不揮発性の記憶領域に格納できればよい。この結果、情報処理装置１は、メモリロックステップモードで訂正不能なエラーが検出されたＤＩＭＭの組を記憶せずとも、故障したＤＩＭＭを特定することができる。
【０１０５】
（２）情報処理装置１の構成について
上述した実施例１では、ＣＰＵ２がＢＩＯＳ２０を実行することで、起動部２１、メモリ初期化部２２、ＰＯＳＴ処理部２３、メモリエラー処理部２４、解析部２５の機能を発揮した。しかし、実施例はこれに限定されるものではなく、例えば、情報処理装置１は、ＢＩＯＳ２０と同様の機能を発揮するＭＰＵ（Micro-Processing  Unit）やＡＳＩＣ（Application  Specific  Integrated  Circuit）を有してもよい。また、ＯＳ起動後にＯＳが情報処理装置１の各種リソースを制御する場合は、メモリエラー処理部２４が実行する処理をＯＳに実行させてもよい。
【０１０６】
なお、上述した実施例１では、説明を容易にするため、ＢＩＯＳ２０がメモリコントローラ３を介してＤＤＲ９、１０に含まれるＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃのメモリテストを実行する例について説明した。しかし、ＢＩＯＳ２０は、同様の処理を実行することにより、メモリコントローラ４を開始、ＤＤＲ１１、１２に含まれるＤＩＭＭ１１ａ〜１１ｃ、１２ａ〜１２ｃに対しても、メモリテストを実行する。この結果、情報処理装置１は、全てのＤＩＭＭ９ａ〜９ｃ、１０ａ〜１０ｃ、１１ａ〜１１ｃ、１２ａ〜１２ｃから故障したＤＩＭＭを特定することができる。
【０１０７】
（３）符号化率について
上述した情報処理装置１は、メモリロックステップモードでは、Ｓ８ＥＣ（１４４、１２８）符号を用いて符号語を生成し、インディペンデントモードでは、ＳＤＤＣ（５６、３２）符号を用いて符号語を生成した。しかし、実施例はこれに限定されるものではなく、情報処理装置１は、任意の訂正能力を有する符号語を使用することができる。
【０１０８】
また、情報処理装置１は、エラーの訂正能力を有さず、検出能力だけ有する符号語を利用してもよい。例えば、情報処理装置１は、誤り検出符号を用いてエラーが発生したバイトを特定し、異なるデータでリトライを実行することで、エラーバイトを訂正するＡＲＱ（Automatic  Repeat  Request）を利用してもよい。また、情報処理装置１は、受信側で誤りを訂正するＦＥＣ（Foward  Error  Correction）を利用してもよい。
【０１０９】
（４）メモリロックステップモードで動作させるＤＩＭＭについて
上述した情報処理装置１は、メモリロックステップモードでＤＩＭＭを動作させる場合は、２つのＤＩＭＭ、例えばＤＩＭＭ９ａとＤＩＭＭ１０ａとを並行して動作させた。しかしながら、実施例はこれに限定されるものではない。例えば、情報処理装置１は、４枚のＤＩＭＭ９ａ、９ｂ、１０ａ、１０ｂを並行に動作させても良い。このような場合は、情報処理装置１は、４枚のＤＩＭＭ９ａ、９ｂ、１０ａ、１０ｂに格納する符号語を生成し、生成した符号語を４枚のＤＩＭＭ９ａ、９ｂ、１０ａ、１０ｂに分けて格納する。
【０１１０】
なお、実施例１で説明したＢＩＯＳ２０は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）、ＭＯ（Magneto  Optical  Disc）、ＤＶＤ（Digital  Versatile  Disc）などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読出されることによって実行することもできる。
【０１１１】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１１２】
（付記１）複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験する第１の試験部と、
前記第１の試験部による試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定する設定部と、
再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定する判定部と、
前記フラグが前記不揮発性の記憶領域に設定されていると前記判定部が判定した場合は、前記メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験する第２の試験部と、
前記第２の試験部による試験結果を出力する出力部と
を有することを特徴とする情報処理装置。
【０１１３】
（付記２）前記設定部は、並列に動作させたメモリの組のうち、前記第１の試験部による試験で訂正不能なエラーが検出されたメモリの組を示すエラー情報を前記不揮発性の記憶領域に設定し、
前記第２の試験部は、前記設定部が前記不揮発性の記憶領域に格納した前記エラー情報が示すメモリの組に含まれる各メモリを個別に動作させ、訂正不能なエラーが検出されるか否かを試験することを特徴とする付記１に記載の情報処理装置。
【０１１４】
（付記３）前記出力部は、前記設定部が前記不揮発性の記憶領域に格納した前記エラー情報が示すメモリの組に含まれる各メモリから訂正不能なエラーが検出されなかった場合は、当該メモリの組に含まれる各メモリからエラーが検出された旨を示す情報を出力することを特徴とする付記２に記載の情報処理装置。
【０１１５】
（付記４）前記出力部は、前記第２の試験部による試験で訂正不能なエラーが検出されたメモリを示す情報を出力することを特徴とする付記１〜３のいずれか１つに記載の情報処理装置。
【０１１６】
（付記５）２以上のメモリを有するコンピュータに、
複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定し、
再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定し、
前記フラグが前記不揮発性の記憶領域に設定されていると判定した場合は、前記メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験結果を出力する
処理を実行させることを特徴とするメモリ試験プログラム。
【０１１７】
（付記６）２以上のメモリを有する情報処理装置が、
複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定し、
再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定し、
前記フラグが前記不揮発性の記憶領域に設定されていると判定した場合は、前記メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験結果を出力する
処理を実行することを特徴とするメモリ試験方法。
【符号の説明】
【０１１８】
１  情報処理装置
２  ＣＰＵ
３、４  メモリコントローラ
５  チップセット
６  Ｉ／Ｏ
７  ＲＯＭ
８  ＮＶＲＡＭ
９〜１２  ＤＤＲ
９ａ〜９ｃ、１０ａ〜１０ｃ、１１ａ〜１１ｃ、１２ａ〜１２ｃ  ＤＩＭＭ
２０  ＢＩＯＳ
２１  起動部
２２  メモリ初期化部
２３  ＰＯＳＴ処理部
２４  メモリエラー処理部
２５  解析部
２６  被疑ＤＩＭＭ特定データベース
２７  起動フラグ
２８  エラー情報
２９  被疑ＤＩＭＭ特定処理結果
【図１】
2014199627.tif 000003
【図２】
2014199627.tif 000004
【図３】
2014199627.tif 000005
【図４Ａ】
2014199627.tif 000006
【図４Ｂ】
2014199627.tif 000007
【図５】
2014199627.tif 000008
【図６】
2014199627.tif 000009
【図７】
2014199627.tif 000010
【図８】
2014199627.tif 000011