JP6070374B2 - 情報処理装置、メモリ試験プログラムおよびメモリ試験方法 - Google Patents

情報処理装置、メモリ試験プログラムおよびメモリ試験方法 Download PDF

Info

Publication number
JP6070374B2
JP6070374B2 JP2013075356A JP2013075356A JP6070374B2 JP 6070374 B2 JP6070374 B2 JP 6070374B2 JP 2013075356 A JP2013075356 A JP 2013075356A JP 2013075356 A JP2013075356 A JP 2013075356A JP 6070374 B2 JP6070374 B2 JP 6070374B2
Authority
JP
Japan
Prior art keywords
dimm
memory
error
detected
processing apparatus
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.)
Active
Application number
JP2013075356A
Other languages
English (en)
Other versions
JP2014199627A (ja
Inventor
公裕 西山
公裕 西山
大輔 原田
大輔 原田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013075356A priority Critical patent/JP6070374B2/ja
Priority to US14/208,668 priority patent/US9570197B2/en
Priority to EP14160890.1A priority patent/EP2787440B1/en
Publication of JP2014199627A publication Critical patent/JP2014199627A/ja
Application granted granted Critical
Publication of JP6070374B2 publication Critical patent/JP6070374B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/10Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2215Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test error correction or detection circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)

Description

本発明は、情報処理装置、メモリ試験プログラムおよびメモリ試験方法に関する。
従来、DIMM(Dual Inline Memory Module)に格納されたデータに対するエラー対策として、ECC(Error Check and Correction)を用いてエラーの検出や訂正を行う技術が知られている。例えば、64ビットのデータに対して8ビットのECCを付加することで、1ビットエラーの訂正、および2ビットエラーの検出を可能とするSEC−DED(Single Error Correction-Double Error Detection)符号の技術が知られている。
また、メモリロックステップの技術を用いて複数のDIMMを並列に動作させ、データとECCとを並列に動作させたDIMMに格納することで、符号化率を悪化させずに検出可能なエラーのビット数を向上させる技術が知られている。例えば、72ビット幅のDIMMを2つ並列に動作させ、128ビットのデータと16ビットのECCとを2つのDIMMに分けて格納することで、連続する8ビットの誤りを検出するS8EC(144、128)符号を構成する技術が知られている。
特表2010−537311号公報 特開2012−177964号公報
しかしながら、上述した複数のDIMMを並列に動作させる技術では、並列に動作するDIMM上で訂正不能なエラーが発生した際に、並列に動作するDIMMのうちどのDIMMでエラーが発生したかを特定できないという問題がある。
例えば、メモリロックステップの技術を用いて2枚のDIMMを並列に動作させた際に、一方のDIMMが故障し、訂正不能なエラーが発生した場合は、どちらのDIMMで訂正不能なエラーが発生したかを特定できないので、故障したDIMMを特定できない。この結果、正常なDIMMを故障部品として特定したり、故障したDIMMを用いた障害の再現を行えない場合がある。
1つの側面では、複数のDIMMを並列に動作させた際に、訂正不能なエラーが発生したDIMMの特定を目的とする。
1つの側面では、2以上のメモリを有する情報処理装置である。ここで、情報処理装置は、複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験する。また、情報処理装置は、試験により訂正不能なエラーが検出された場合は、メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグと、訂正不能なエラーが検出されたメモリの組を示すエラー情報とを不揮発性の記憶領域に設定する。また、情報処理装置は、再起動時に、フラグが不揮発性の記憶領域に設定されているか否かを判定する。そして、情報処理装置は、フラグが不揮発性の記憶領域に設定されていると判定した場合は、不揮発性の記憶領域に設定したエラー情報が示すメモリの組に含まれる各メモリを個別に動作させ、訂正不能なエラーが検出されるか否かを試験する。その後、情報処理装置は、試験結果を出力する。
1つの側面では、複数のDIMMを並列に動作させた際に、訂正不能なエラーが発生したDIMMを特定することができる。
図1は、実施例1に係る情報処理装置を説明するための図である。 図2は、SDDC構成の一例を説明するための図である。 図3は、BIOSの機能構成を説明するための図である。 図4Aは、エラー情報の一例を説明する図である。 図4Bは、被疑DIMM特定処理結果の一例を説明する図である。 図5は、SEL指摘の一例を説明するための図である。 図6は、BIOSにより実行される処理を説明するための図である。 図7は、従来の情報処理装置によるメモリエラー処理を説明するためのフローチャートである。 図8は、BIOSによるメモリエラー処理の流れを説明するためのフローチャートである。
以下に添付図面を参照して本願に係る情報処理装置、メモリ試験プログラムおよびメモリ試験方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。
以下の実施例1では、図1を用いて、本願に係る情報処理装置を説明する。図1は、実施例1に係る情報処理装置を説明するための図である。図1に示すように、情報処理装置1は、CPU(Central Processing Unit)2、メモリコントローラ3、メモリコントローラ4、チップセット5、I/O(Input/Output)6を有する。また、情報処理装置1は、ROM(Read Only Memory)7、NVRAM(Non Volatile Random Access Memory)8を有する。
また、情報処理装置1は、演算処理に用いるメモリとして、複数のDDR(Double-Data-Rate Synchronous Dynamic RAM)9〜12を有する。ここで、DDR9は、複数のDIMM9a〜9cを有するDDRチャネルであり、DDR10はDIMM10a〜10cを有するDDRチャネルである。また、DDR11は、DIMM11a〜11cを有するDDRチャネルであり、DDR12は、DIMM12a〜12cを有するDDRチャネルである。
なお、図1に示す例では、情報処理装置1は、4つのDDR9〜12を有する例について記載したが、実施例はこれに限定されるものではなく、任意の数のDDRを有してよい。また、情報処理装置1は、各DIMM9a〜9c、10a〜10c、11a〜11c、12a〜12cをDDRとしてではなく、単なるDIMMとして有してもよい。
CPU2は、各種演算処理を実行する演算処理装置である。例えば、CPU2は、メモリコントローラ3、4を介して、DDR9〜12に対してメモリアクセスを実行し、DDR9〜12から読みだしたデータを用いて演算処理を実行する。また、CPU2は、DDR9〜12に対してデータの書き込みを行う。
また、CPU2は、チップセット5を介してI/O6、ROM7、NVRAM8にアクセスし、データの書き込みや読出しを行う。例えば、CPU2は、チップセット5、I/O6を介して、図示を省略したHDD(Hard Disk Drive)等のIO装置にアクセスし、データの書き込みや読出しを行う。また、CPU2は、チップセット5を介してROM7からデータの読出しを行う。また、CPU2は、チップセット5を介して、NVRAM8を介してデータの書き込みや読出しを行う。
なお、CPU2は、各種プログラムを実行することで、上述した演算処理やメモリアクセス等を実行する。例えば、CPU2は、BIOS(Basic Input/Output System)を実行して各DDR9〜12の試験を行い、その後OS(Operating System)を実行する。
メモリコントローラ3、4は、各DDR9〜12に対するメモリアクセスの発行や制御を実行する。例えば、メモリコントローラ3は、論理アドレスを含む読出し要求を受信すると、論理アドレスと物理アドレスとの変換処理を実行し、DDR9、10が有する記憶領域のうち、変換後の物理アドレスが示す記憶領域からデータを取得する。そして、メモリコントローラ3は、取得したデータをCPU2へ出力する。
ここで、メモリコントローラ3、4は、DDR9〜12に含まれる各DIMM9a〜9c、10a〜10c、11a〜11c、12a〜12cを個別に、または、並列に動作させることができる。例えば、メモリコントローラ3は、DIMM9aとDIMM10aとを並列に動作させ、DIMM9bとDIMM10bとを並列に動作させ、DIMM9cとDIMM10cとを並列に動作させることができる。このように、複数のDIMMを並列に動作させる状態を、以下の説明では、メモリロックステップモードと記載する。
また、メモリコントローラ3は、各DIMM9a〜9c、10a〜10cをそれぞれ独立で動作させることができる。このように、各DIMMをそれぞれ独立で動作させる状態を、以下の説明では、インディペンデントモードと記載する。なお、メモリコントローラ3がメモリロックステップモードでメモリアクセスを行うか、インディペンデントモードでメモリアクセスを行うかは、CPU2が起動時に実行するBIOSによって指定される。
チップセット5は、CPU2からI/O6、ROM7、NVRAM8に対する各種コマンドの転送や制御を実行する。なお、図1に示す例では、情報処理装置1は、1つのチップセット5を有する例について説明したが、実施例はこれに限定されるものではなく、例えば、ノースブリッジとして動作するチップセットとサウスブリッジとして動作するチップセットとを有してもよい。
I/O6は、各種IO装置との通信を制御する入出力ポートである。また、ROM7は、CPU2が用いる各種データを記憶する読出し専用メモリであり、例えば、BIOSが格納されている。また、NVRAM8は、不揮発性の記憶装置であり、例えば、EEPROM(Electrically Erasable Programmable ROM)やフラッシュメモリ等、任意の不揮発性の記憶装置である。
DDR9〜12は、それぞれ1以上のDIMMを有するメモリである。例えば、DDR9は、それぞれ4ビットのDRAM(Dynamic Random Access Memory)を18個有するDIMM9a〜9cを有する。
ここで、情報処理装置1は、OSやアプリケーションプログラムを実行する場合は、起動時にメモリロックステップモードを選択し、各DIMM9a〜9c、10a〜10c、11a〜11c、12a〜12cを並列に動作させる。例えば、情報処理装置1は、DIMM9aとDIMM10aとを並列に動作させる。
また、情報処理装置1は、1つのDIMMが有するDRAMが故障し、データエラーが発生した際に、故障したDRAMが記憶していたデータを自動訂正する機能を有する。以下の説明では、DRAMが記憶していたデータを自動訂正する機能をSDDC(Single Device Data Correction)機能と記載するが、同様の機能は、チップキル、もしくはExtended ECCと呼ばれる場合がある。
例えば、情報処理装置1は、DIMM9a〜9cが4ビット、または、8ビットのDRAMを有する場合は、S8EC−D8EC(Single 8 bit Byte Error Correct - Double 8 Byte Error Detect)(144、128)符号でデータを符号化する。以下、図2を用いて、S8EC−D8EC(以下、単にS8ECと記載する)(144、128)符号化について説明する。
図2は、SDDC構成の一例を説明するための図である。例えば、情報処理装置1は、8ビットを塊(バイト)とみなし、リードソロモン符号を用いた符号化を利用することで、128ビットのデータから連続する8ビットのエラーを訂正可能とする144ビットの符号語を生成する。詳細には、情報処理装置1は、図2中(A)に示すように、128ビットのデータに対し、図2中(B)に示すように、連続する8ビットのエラーを訂正可能な16ビットの符号を付加した144ビットの符号語を生成する。そして、情報処理装置1は、生成した144ビットの符号語をDIMM9aとDIMM10aとに72ビットずつ格納する。
このようなS8EC(144,128)符号を用いた場合は、情報処理装置1は、8ビットの連続するエラーのデータ訂正を行うことができる。すなわち、情報処理装置1は、S8EC(144、128)符号を用いた場合は、4ビットのDRAM2つ、または8ビットのDRAM1つが故障した場合にも、他のDRAMに格納されたデータから、故障したDRAMが記憶していたデータを復元できる。
ここで、従来の情報処理装置では、メモリロックステップモードを選択した際に、並列に動作するDIMM上で訂正不能なエラーが発生すると、並列に動作するDIMMのうち、どのDIMMで訂正不能なエラーが発生したかを特定できない。
例えば、情報処理装置1と同様の構成を有する従来の情報処理装置は、S8EC(144、128)符号を用いて144ビットの符号語を生成し、メモリロックステップモードで動作させるDIMM9aとDIMM10aとに分けて格納する。ここで、DIMM9a上のDRAMが故障し、5ビット以上8ビット以下のエラー、すなわち訂正不能なエラーが発生すると、従来の情報処理装置は、DIMM9aとDIMM10aとのどちらのDRAMが故障したかを特定することができない。
そこで、情報処理装置1は、起動時に、以下のメモリチェック処理を情報処理装置1に実行させるBIOSを起動させ、以下のメモリチェック処理を実行する。まず、情報処理装置1は、メモリロックステップモードで各DIMM9a〜9c、10a〜10c、11a〜11c、12a〜12cを動作させた際に訂正不能なエラーが検出された旨を示すフラグが、NVRAM8に格納されているか判定する。
そして、情報処理装置1は、フラグがNVRAM8に格納されていない場合は、メモリロックステップモードを選択し、DIMM9aとDIMM10a、DIMM9bとDIMM10b、DIMM9cとDIMM10cとを並列に動作させる。また、情報処理装置1は、DIMM11aとDIMM12a、DIMM11bとDIMM12b、DIMM11cとDIMM12cとを並列に動作させる。
また、情報処理装置1は、S4EC符号を用いた144ビットの符号語を生成し、生成したデータを並列に動作させる各DIMMの組に格納する。そして、情報処理装置1は、各DIMMの組に格納したデータを読出し、エラーチェックを実行する。ここで、情報処理装置1は、エラーチェックの結果、訂正不能なエラーが検出された場合は、メモリロックステップモードで訂正不能なエラーが検出された旨を示す情報をNVRAM8に格納する。詳細には、情報処理装置1は、訂正不能なエラーが検出されたか否かを示す情報と、DIMMの組を示す情報とを対応付けてNVRAM8に記憶する。そして、情報処理装置1は、再起動を行う。
ここで、再起動した情報処理装置1は、NVRAM8に訂正不能なエラーが検出された旨を示すフラグが格納されているかを再度判定する。また、情報処理装置1は、NVRAM8に訂正不能なエラーが検出された旨を示すフラグが格納されている場合は、インディペンデントモードを選択し、各DIMMごとにメモリテストを実行する。詳細には、情報処理装置1は、NVRAM8に訂正不能なエラーが検出された旨を示す情報と対応付けられたDIMMの組を示す情報を識別し、識別した情報が示す組に含まれる各DIMMに対し、それぞれ独立したメモリチェックを実行する。
例えば、情報処理装置1は、NVRAM8にDIMM9aとDIMM10aとの組を示す情報と訂正不能なエラーが検出された旨を示す情報とが対応付けて格納されている場合は、DIMM9aとDIMM10aとに対し、それぞれ独立したメモリチェックを行う。詳細な例を挙げると、情報処理装置1は、S4EC符号を用いて符号化した符号語をDIMM9a、および、DIMM10aのそれぞれに格納する。そして、情報処理装置1は、各DIMM9a、10aに格納したデータの読出しを行いエラーチェックを実行する。
また、情報処理装置1は、DIMM9aから訂正不能なエラーを検出した場合は、DIMM9aが故障した旨を出力し、DIMM10aから訂正不能なエラーを検出した場合は、DIMM10aが故障した旨を出力する。また、情報処理装置1は、DIMM9aとDIMM10aとの両方から訂正不能なエラーを検出した場合は、DIMM9aとDIMM10aとが両方とも故障した旨を出力する。
この結果、情報処理装置1は、DRAMが故障し、訂正不能なエラーが発生したDIMMを特定することができるので、正常なDIMMを故障部品とすることを防げる。また、情報処理装置1は、故障したDIMMを特定できるので、例えば、故障したDIMMを用いた障害の再現を行う際に、誤ったDIMM、すなわち正常なDIMMを用いた障害の再現を防ぐので、障害発生時の再現性を向上させることができる。
一方、情報処理装置1は、DIMM9aとDIMM10aの両方から訂正不能なエラーを検出できなかった場合にも、DIMM9aとDIMM10aとが両方とも故障した旨を出力する。すなわち、情報処理装置1は、メモリロックステップモードで訂正不能なエラーが発生したDIMMの組に含まれる各DIMMを個別にテストした際に、訂正不能なエラーの発生を再現できなかった場合は、両方のDIMMを故障したDIMMとして通知する。このため、例えば、情報処理装置1は、故障した恐れのあるDIMMを利用者に通知することができる。
次に、図3を用いて、情報処理装置1が実行するBIOSの機能構成について説明する。図3は、BIOSの機能構成を説明するための図である。なお、図3に示す例では、CPU2がROM7に格納されていたBIOS20を読出して実行する例について記載した。また、以下の説明では、BIOS20を実行したCPU2がメモリコントローラ3を介して、DDR9、10にアクセスする例について記載するが、実施例はこれに限定されるものではない。すなわち、BIOS20を実行したCPU2は、メモリコントローラ4を介して、DDR10、11に対しても、同様の処理を実行する。
例えば、図3に示す例では、BIOS20を実行したCPU2は、起動部21、メモリ初期化部22、POST(Power On Self Test)処理部23、メモリエラー処理部24、解析部25として動作することとなる。また、NVRAM8には、被疑DIMM特定データベース26が格納されている。また、被疑DIMM特定データベース26には、起動フラグ27、エラー情報28、被疑DIMM特定処理結果29が格納されている。
まず、被疑DIMM特定データベース26に格納された起動フラグ27、エラー情報28、被疑DIMM特定処理結果29について説明する。起動フラグ27は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出されたか否かを示すフラグである。例えば、起動フラグ27は、値が「1」である場合は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出された旨を示す。また、起動フラグ27は、値が「0」である場合は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出されなかった旨を示す。
エラー情報28は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出されたDIMMの組を示す情報である。例えば、図4Aは、エラー情報の一例を説明する図である。図4Aに示すように、エラー情報28には、DIMMの組(ペア)を示す情報と、訂正不能なエラーが検出されたか否かを示すエラー情報とが対応付けて格納されている。
例えば、図4Aに示す例では、エラー情報28は、DIMM9aとDIMM10aとの組で、訂正不能なエラーが検出されなかった旨を示すエラー情報「OK」とが対応付けて格納されている。このため、エラー情報28は、DIMM9aとDIMM10aとの組で訂正不能なエラーが検出されなかった旨を示す。また、エラー情報28は、DIMM9bとDIMM10bとの組、および、DIMM9cとDIMM10cとの組で、訂正不能なエラーが検出された旨を示すエラー情報「NG」が対応付けて格納されている。このため、エラー情報28は、DIMM9cとDIMM10cとの組で、訂正不能なエラーが検出された旨を示す。
図3に戻り、被疑DIMM特定処理結果29は、各DIMM9a〜9c、10a〜10bのうち、訂正不能なエラーが検出されたDIMMを個別に示す情報である。以下、図4Bを用いて、被疑DIMM特定処理結果29の一例について説明する。図4Bは、被疑DIMM特定処理結果の一例を説明する図である。
図4Bに示す例では、被疑DIMM特定処理結果29は、各DIMM9a〜9c、10a〜10cとエラー情報とを対応付けて記憶する。すなわち、被疑DIMM特定データベース26は、情報処理装置1がインディペンデントモードでメモリチェックを行った際に、DIMM9a〜9c、10a〜10cから訂正不能なエラーが検出されたか否かを示すエラー情報を記憶する。例えば、被疑DIMM特定データベース26は、DIMM9bから訂正不能なエラーが検出された場合は、DIMM9bを示す情報と対応付けて、エラー情報「NG」を記憶する。
図3に戻り、起動部21は、被疑DIMM特定データベース26にアクセスし、起動フラグ27が設定されているか否かを判定する。そして、起動部21は、起動フラグ27が設定されていない場合は、メモリモードとしてメモリロックステップモードを選択する。一方、起動部21は、起動フラグ27が設定されている場合は、メモリモードとしてインディペンデントモードを選択する。
例えば、起動部21は、起動フラグ27の値が「0」である場合は、メモリモードとしてメモリロックステップモードを選択する。一方、起動部21は、起動フラグ27の値が「1」である場合は、メモリモードとしてインディペンデントモードを選択する。そして、被疑DIMM特定データベース26は、メモリ初期化部22に対し、選択したメモリ運用モードを通知する。
メモリ初期化部22は、メモリモードを設定する。また、メモリ初期化部22は、CPU2のECC機能を有効化する。そして、メモリ初期化部22は、設定したメモリモードと、起動フラグ27とに応じて、情報処理装置1の起動時に実行されるメモリテストであるPOST処理の対象DIMMをPOST処理部23に通知する。
例えば、メモリ初期化部22は、起動部21からメモリ運用モードとして、メモリロックステップモード、又は、インディペンデントモードの通知を受信する。すると、メモリ初期化部22は、メモリコントローラ3のECCエラーステータスレジスタにメモリロックステップモード、又は、インディペンデントモードを示すデータを格納することで、メモリモードを設定する。
また、他の例では、CPU2がIntel(登録商標)社製のCore i7シリーズである場合は、メモリ初期化部22は、以下の処理により、メモリ運用モードの設定を行うことができる。すなわち、メモリ初期化部22は、MCMTR(MC Memory Technology Register)の第1ビットであるLS_ENビットの値を変更することで、メモリモードを設定する。また、メモリ初期化部22は、例えば、MCMTRの第2ビットであるECC_ENビットの値を変更することで、ECC機能を有効化する。
ここで、メモリ初期化部22は、メモリロックステップモードを設定した場合は、POST処理部23に対し、各DIMMの組に対してメモリテストを実行するよう指示する。一方、メモリ初期化部22は、インディペンデントモードを設定した場合は、メモリロックステップモードで訂正不能なエラーが検出されたDIMMの組を識別する。詳細には、メモリ初期化部22は、エラー情報28を参照し、エラー情報「NG」と対応付けられたDIMMの組を識別する。
そして、メモリ初期化部22は、識別したDIMMの組に含まれる各DIMMに対してメモリテストを実行するようPOST処理部23に指示する。例えば、メモリ初期化部22は、エラー情報28に、DIMM9bとDIMM10bとの組を示す情報にエラー情報「NG」が対応付けられている場合は、DIMM9bとDIMM10bとに対してメモリテストを実行するようPOST処理部23に指示する。
POST処理部23は、メモリロックステップモードが設定された場合は、各DIMMの組に対して、メモリテストを実行する。また、POST処理部23は、インディペンデントモードが設定された場合は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出されたDIMMの組に含まれる各DIMMに対し、それぞれ独立にメモリテストを実行する。
例えば、POST処理部23は、メモリ初期化部22がメモリモードをメモリロックステップモードに設定した場合は、メモリ初期化部22から各DIMMの組に対してPOST処理を実行するよう指示される。このような場合は、POST処理部23は、DIMM9aとDIMM10aの組、DIMM9bとDIMM10bの組、DIMM9cとDIMM10cの組に対して、メモリロックステップモードでメモリテストを実行する。
そして、POST処理部23は、メモリテストの結果、訂正不能なエラーが検出された場合は、起動フラグ27の値を「1」にする。その後、POST処理部23は、訂正不能なエラーが検出されたDIMMの組を示す情報とエラー情報「NG」とを対応付たエラー情報28を被疑DIMM特定データベース26に格納する。つまり、POST処理部23は、訂正不能なエラーが検出されたDIMMの組を被疑DIMMとして被疑DIMM特定データベース26に格納する。
また、POST処理部23は、メモリテストの結果、訂正不能なエラーが検出されなかったDIMMの組を示す情報とエラー情報「OK」とを対応付けたエラー情報28を被疑DIMM特定データベース26に格納する。一方、POST処理部23は、メモリテストの結果、訂正不能なエラーが検出されなかった場合は、起動フラグ27の値を「0」にする。
POST処理部23は、メモリ初期化部22がメモリモードをインディペンデントモードに設定した場合は、メモリロックステップモードのメモリテストで訂正不能なエラーが検出されたDIMMの組に含まれるDIMMの通知を受信する。例えば、メモリロックステップモードでメモリテストが実行された際に、DIMM9bとDIMM10bとの組から訂正不能なエラーが検出された場合は、POST処理部23は、DIMM9b、および、DIMM10bの通知を受信する。このため、POST処理部23は、DIMM9b、および、DIMM10bに対し、インディペンデントモードでメモリテストを実行する。
ここで、POST処理部23が実行するメモリテストの一例について説明する。なお、以下の例では、DIMM9a〜9c、10a〜10cが4ビットのDRAMを18個有するものとし、DIMM9aが有するDRAMが故障し、訂正不能なエラーが発生する例について説明する。
まず、POST処理部23がメモリロックステップモードで実行するメモリテストの例について説明する。POST処理部23は、各値が「0」のデータ、各値が「1」のデータ、値が「0」と「1」とを繰り返すデータ等、各種データパターンを生成する。そして、POST処理部23は、生成したデータパターンをS8EC(144、128)符号により符号化した144ビットの符号語を生成する。すなわち、POST処理部23は、メモリロックステップモードで動作させる複数のDIMMに格納する符号語を生成する。その後、POST処理部23は、生成した符号語を各DIMMの組、例えばDIMM9aとDIMM10aとの組に書き込み、読出しを実行する。
ここで、メモリコントローラ3は、読出したデータのエラーチェックを実行し、エラーチェックの結果をECCエラーステータスレジスタに格納する。POST処理部23は、メモリコントローラ3のECCエラーステータスレジスタの内容を確認することで、各DIMMの組から読出したデータに訂正不能なエラーが検出されたか否かを判定する。
そして、POST処理部23は、判定結果をエラー情報28として、被疑DIMM特定データベース26に格納する。例えば、POST処理部23は、DIMM9bとDIMM10bとの組からデータを読出した際、訂正不能なエラーが検出された場合は、DIMM9bとDIMM10bとの組にエラー情報「NG」を対応付けて被疑DIMM特定データベース26に格納する。その後、POST処理部23は、解析部25に再起動を依頼する。
一方、POST処理部23は、インディペンデントモードでメモリテストを実行する場合は、以下の処理を実行する。例えば、POST処理部23は、8ビットの訂正能力を有する符号化、例えばSDDC(56、32)符号で各種データパターンを符号化した符号語を生成し、生成した符号語を、指定されたDIMM、例えばDIMM9bに書き込む。また、POST処理部23は、DIMM9bに書き込んだデータを読出し、メモリコントローラ3のECCエラーステータスレジスタの内容を確認する。そして、POST処理部23は、DIMM9bから読出したデータから訂正不能なエラーが検出された場合は、被疑DIMM特定処理結果29にDIMM9bを示す情報と対応付けてエラー情報「NG」を格納する。
なお、POST処理部23は、訂正不能なエラーが検出されたDIMMの組に含まれる両方のDIMMから訂正不能なエラーが検出されなかった場合は、以下の処理を実行する。すなわち、POST処理部23は、両方のDIMMを示す情報とエラー情報「NG」とを対応付けて被疑DIMM特定処理結果29に格納する。
例えば、POST処理部23は、DIMM9bとDIMM10bとを通知された際に、両方のDIMMから訂正不能なエラーが検出されなかった場合は、以下の処理を実行する。すなわち、POST処理部23は、DIMM9bを示す情報とエラー情報「NG」とを対応付けて被疑DIMM特定処理結果29に格納する。また、POST処理部23は、DIMM10bを示す情報とエラー情報「NG」とを対応付けて被疑DIMM特定処理結果29に格納する。
メモリエラー処理部24は、メモリコントローラ3のECCエラーステータスレジスタの内容を監視し、OS起動後に訂正不能なメモリエラーが検出された場合は、訂正不能なメモリエラーが検出されたDIMMの組を特定する。そして、メモリエラー処理部24は、エラー情報28として、特定したDIMMの組を示す情報とエラー情報「NG」とを被疑DIMM特定データベース26に格納する。また、メモリエラー処理部24は、起動フラグ27の値を「1」に更新し、解析部25に情報処理装置1の再起動を依頼する。
例えば、メモリエラー処理部24は、メモリロックステップモードで情報処理装置1が通常の動作を実行中に、DIMM9bとDIMM10bとの組で訂正不能なエラーが検出された場合は、以下の処理を実行する。すなわち、メモリエラー処理部24は、DIMM9bとDIMM10bとの組を示す情報と、エラー情報「NG」とを対応付けたエラー情報28を被疑DIMM特定データベース26に格納し、起動フラグ27の値を「1」に更新する。そして、メモリエラー処理部24は、解析部25に情報処理装置1の再起動を依頼する。この結果、情報処理装置1は、再起動し、インディペンデントモードで、DIMM9bとDIMM10bとのメモリテストを実行する。
解析部25は、被疑DIMM特定処理結果29を参照し、エラー情報「NG」と対応付けられた情報が示すDIMMを特定する。すなわち、解析部25は、インディペンデントモードでメモリテストを実行した際に、訂正不能なエラーが検出されたDIMMを特定する。そして、解析部25は、訂正不能なエラーが検出されたDIMMを示すSEL(System Event Log)指摘を生成し、生成したSEL指摘を図示しない出力装置、例えばモニタやプリンタ等に出力する。
例えば、図5は、SEL指摘の一例を説明するための図である。図5に示す例では、解析部25は、タイムスタンプとエラー種類と被疑箇所とエラー内容とを対応付けたSEL指摘を出力する。ここで、タイムスタンプとは、SEL指摘を出力した時刻を示す情報である。また、エラー種類とは、エラーの種類を示す情報である。また、被疑箇所とは、エラーが検出された位置を示す情報である。また、エラー内容とは、発生したエラーの内容を示す情報である。
例えば、図5に示すSEL指摘は、日時「21−Dec−2012 22:48」に、以下のエラーが発生した旨を示す。すなわち、SEL指摘は、メモリコントローラ(MC:Memory Controller)3が制御するDDR9のDIMM9a、DOMM9bでUncorrectable Error、すなわち訂正不能なエラーが発生した旨を示す。また、SEL指摘は、メモリコントローラ3が制御するDDR10のDIMM10bでも訂正不能なエラーが発生した旨を示す。そして、解析部25は、SEL指摘を出力した場合は、情報処理装置1の電源を切断する。
装置の保守担当者は、訂正不能なエラー発生による電源切断時は、解析部25が出力したSEL指摘に基づき、異常部位を交換し、装置を再起動し、装置を稼働させる。ここで、サーバの停止時間を短くするために、異常発生時には、障害の切り分けや被疑部位の絞り込み等に用いる時間的余裕はない。しかし、情報処理装置1は、障害が発生したDIMMを指摘することができるので、即時の交換、および再起動を可能とする。
なお、解析部25は、POST処理部23、または、メモリエラー処理部24から再起動の依頼を受信した場合は、情報処理装置1の再起動を行う。また、解析部25は、被疑DIMM特定処理結果29を参照し、エラー情報「NG」と対応付けられた情報が示すDIMMが存在しない場合は、OSの起動を実行する。
次に、図6を用いて、BIOS20により実行される処理の流れについて説明する。図6は、BIOSにより実行される処理を説明するための図である。なお、以下の説明では、DIMM9a、DIMM10a、DIMM10bが正常であり、DIMM9b、DIMM9c、DIMM10cが故障している例について説明する。
まず、起動部21は、情報処理装置1の電源が投入されると、起動フラグ27を確認し、メモリモードを選択する装置起動モード判定処理を実行する。そして、起動部21は、装置起動モード判定処理の結果を、メモリ初期化部22に通知する。
次に、メモリ初期化部22は、起動部21が選択したメモリモードを設定するメモリモード設定処理を実行する。次に、メモリ初期化部22は、設定したメモリモードに従い、メモリコントローラ3のECC機能を設定するECC符号設定処理を実行する。次に、メモリ初期化部22は、メモリモード、およびエラー情報28に基づいて、エラーチェックの対象となるDIMMをPOST処理部23に通知するPOST対象DIMM設定処理を実行する。
また、POST処理部23は、メモリ初期化部22が設定したメモリモードで、メモリ初期化部22から通知されたDIMMに対するメモリテストを実行する。また、POST処理部23は、メモリテストの実行後、メモリコントローラ3のECCエラーステータスレジスタをチェックする。そして、POST処理部23は、訂正不能なエラーが検出されたDIMMの組、またはDIMMを示す情報を被疑DIMM特定データベース26に格納するエラーDIMM記録処理を実行する。
例えば、POST処理部23は、ロックステップモードでDIMM9a、DIMM10aの組、DIMM9b、DIMM10bの組、DIMM9c、DIMM10cの組のそれぞれに対してメモリテストを実行する。このような場合は、POST処理部23は、DIMM9b、DIMM10bの組、DIMM9c、DIMM10cの組で訂正不能なエラーを検出する。
この結果、POST処理部23は、図6に示すように、DIMM9a、DIMM10aの組とエラー情報「OK」とを対応付けて被疑DIMM特定データベース26に格納する。また、POST処理部23は、図6に示すように、DIMM9b、DIMM10bの組、および、DIMM9c、DIMM10cの組とエラー情報「NG」とを対応付けて被疑DIMM特定データベース26に格納する。
また、POST処理部23は、再起動後に、インディペンデントモードで、DIMM9b、DIMM10b、DIMM9c、DIMM10cに対してメモリテストを実行する。この結果、POST処理部23は、DIMM9b、DIMM9c、DIMM10cから訂正不能なエラーを検出する。
このため、POST処理部23は、DIMM9a、DIMM10a、DIMM10bを示す情報とエラー情報「OK」を対応付けた被疑DIMM特定処理結果29を被疑DIMM特定データベース26に格納する。また、POST処理部23は、DIMM9b、DIMM9c、DIMM10cを示す情報とエラー情報「NG」とを対応付けた被疑DIMM特定処理結果29を被疑DIMM特定データベース26に格納する。
一方、メモリエラー処理部24は、OS起動後に、メモリコントローラ3のECCエラーステータスレジスタをチェックする。そして、メモリエラー処理部24は、訂正不能なエラーが検出された場合は、エラーDIMM記録処理を実行する。すなわち、メモリエラー処理部24は、訂正不能なエラーが検出されたDIMMの組を示す情報とエラー情報「NG」とを対応付けたエラー情報28を被疑DIMM特定データベース26に格納し、起動フラグ27を「1」に設定する。
解析部25は、被疑DIMM特定処理結果29を解析する被疑DIMM解析処理を実行し、訂正不能なエラーが検出されたDIMM9b、DIMM9c、DIMM10cを特定する。そして、解析部25は、訂正不能なエラーが検出されたDIMM9b、DIMM9c、DIMM10cを示すSEL指摘を出力するSEL指摘処理を実行する。その後、解析部25は、情報処理装置1の電源を切断する。
このように、情報処理装置1は、メモリロックステップモードでメモリテストを実行した際に、訂正不能なエラーが検出された旨を示す起動フラグ27をNVRAM8に格納する。そして、情報処理装置1は、起動時に、NVRAM8に訂正不能なエラーが検出された旨を示す起動フラグ27が格納されている場合は、インディペンデントモードでメモリテストを実行する。この結果、情報処理装置1は、訂正不能なエラーが発生したDIMMを特定することができる。
次に、従来の情報処理装置が実行した処理の流れについて説明する。図7は、従来の情報処理装置によるメモリエラー処理を説明するためのフローチャートである。
図7に示すように、従来の情報処理装置は、メモリモードをロックステップモードに設定し(ステップS1)、メモリロックステップで使用するデータ長のECC符号を設定する(ステップS2)。そして、情報処理装置は、POST対象のDIMMとして、全てのDIMMの組を対象に設定し(ステップS3)、メモリロックステップを構成するDIMMの組に対してメモリテストを実施する(ステップS4)。また、情報処理装置は、ECCエラーステータスレジスタをチェックし(ステップS5)、エラーが検出されたか否かを判定する(ステップS6)。
ここで、情報処理装置は、訂正不能なエラーが検出された場合は(ステップS6肯定)、エラーが検出されたDIMMの組に含まれる各DIMMを被疑DIMMとして記録する(ステップS7)。一方、情報処理装置は、訂正不能なエラーが検出されなかった場合は(ステップS6否定)、ステップS7の処理をスキップする。また、情報処理装置は、全てのDIMMの組についてメモリテストを実施したか判断し(ステップS8)、全てのDIMMの組についてメモリテストを実施していない場合は(ステップS8否定)、ステップS4を実行する。
また、情報処理装置は、全てのDIMMの組についてメモリテストを実施した場合は(ステップS8肯定)、被疑DIMMが記録されているか否かを判定する(ステップS9)。そして、情報処理装置は、被疑DIMMが記録されている場合は(ステップS9肯定)、被疑DIMMを示すSEL指摘を出力し(ステップS10)、装置電源を切断する(ステップS11)。
一方、情報処理装置は、被疑DIMMが記録されていない場合は(ステップS9否定)、OSを稼動させる(ステップS12)。その後、情報処理装置は、ECCエラーステータスレジスタをチェックし(ステップS13)、訂正不能なエラーが検出されたか否かを判定する(ステップS14)。そして、情報処理装置は、訂正不能なエラーが検出された場合は(ステップS14肯定)、被疑DIMMを示すSEL指摘を出力し(ステップS15)、装置電源を切断する(ステップS16)。一方、情報処理装置は、訂正不能なエラーが検出されていない場合は(ステップS14否定)、ステップS12の処理を実行する。
このように、従来の情報処理装置は、メモリロックステップモードで動作するDIMMの組のうち、訂正不能なエラーが検出されたDIMMの組をSEL指摘するが、どのDIMMから訂正不能なエラーが検出されたかをSEL指摘できない。このため、従来の情報処理装置では、故障したDIMM等、障害の切り分けを行うことができない。
次に、図8を用いて、BIOS20を実行する情報処理装置1が実行する処理の流れについて説明する。図8は、BIOSによるメモリエラー処理の流れを説明するためのフローチャートである。なお、図8に示すステップS103〜S110、S113〜S115については、図7に示すステップS2〜S9、S12〜S14と同様の処理であるため、説明を省略する。
例えば、情報処理装置1は、起動すると、起動フラグが設定されているか否かを判定する(ステップS101)。そして、情報処理装置1は、起動フラグが設定されていない場合は(ステップS101否定)、メモリモードをメモリロックステップモードに設定する(ステップS102)。また、情報処理装置1は、ステップS102〜S109の処理を実行することで、訂正不能なエラーが検出されたDIMMの組に含まれるDIMM、すなわち被疑DIMMを記録する。そして、情報処理装置1は、被疑DIMMが記録されている場合は(ステップS110肯定)、起動フラグ27を「1」に設定し(ステップS111)、再起動する(ステップS112)。
一方、情報処理装置1は、被疑DIMMが記録されていない場合は(ステップS110否定)、OSを稼動させる(ステップS113)。また、情報処理装置1は、訂正不能なエラーが検出されると(ステップS115肯定)、訂正不能なエラーが検出されたDIMMの組を被疑DIMMとして記録する(ステップS116)。そして、情報処理装置1は、起動フラグ27を「1」に設定し(ステップS117)、再起動する(ステップS118)。
また、情報処理装置1は、起動フラグが設定されている場合(ステップS101肯定)、すなわち、メモリロックステップモードで訂正不能なエラーが検出された場合は、メモリモードをインディペンデントモードに設定する(ステップS119)。次に、情報処理装置1は、DIMM1枚分のデータ長のECC符号を設定する(ステップS120)。そして、情報処理装置1は、POST対象のDIMMとして記録された被疑DIMMに含まれる各DIMMを設定する(ステップS121)。その後、情報処理装置1は、DIMM1枚ごとにメモリテストを実施する(ステップS122)。
また、情報処理装置1は、ECCエラーステータスレジスタをチェックし(ステップS123)、訂正不能なエラーが検出されたか否かを判定する(ステップS124)。そして、情報処理装置1は、訂正不能なエラーが検出された場合は(ステップS124肯定)、訂正不能なエラーが検出されたDIMMを記録する(ステップS125)。また、情報処理装置1は、POST対象の全てのDIMMについてメモリテストを実施したか否かを判定する(ステップS126)。そして、情報処理装置1は、POST対象の全てのDIMMについてメモリテストを実施していない場合は(ステップS126否定)、ステップS122を実行する。
一方、情報処理装置1は、POST対象の全てのDIMMについてメモリテストを実施した場合は(ステップS126肯定)、被疑DIMMが特定できたか否かを判定する(ステップS127)。すなわち、情報処理装置1は、被疑DIMMのうち、メモリロックステップモードで動作する際に組となるDIMMのいずれか、または、両方から訂正不能なエラーを検出したかいなかを判定する。
そして、情報処理装置1は、被疑DIMMを特定できた場合は(ステップS127肯定)、特定したDIMMを被疑DIMMとしてSEL指摘し(ステップS128)、装置の電源を切断する(ステップS130)。一方、情報処理装置1は、被疑DIMMを特定できなかった場合は(ステップS127否定)、以下の処理を実行する。すなわち、情報処理装置1は、障害時、メモリロックステップを構成したDIMMの組に含まれるDIMMを被疑DIMMとしてSEL指摘し(ステップS129)、装置の電源を切断する(ステップS130)。
[情報処理装置1の効果]
上述したように、情報処理装置1は、複数のDIMMを並列に動作させるメモリロックステップモードで訂正不能なエラーが検出されるか否かをテストする。また、情報処理装置1は、訂正不能なエラーが検出された場合は、訂正不能なエラーが検出された旨を示す起動フラグ27を不揮発性の記憶装置であるNVRAM8に設定する。そして、情報処理装置1は、再起動時に、訂正不能なエラーが検出された旨を示す起動フラグ27を設定されている場合は、複数のDIMMを個別に動作させるインディペンデントモードで訂正不能なエラーが検出されるか否かをテストする。その後、情報処理装置1は、インディペンデントモードで実行したテスト結果をSEL指摘として出力する。
このため、情報処理装置1は、メモリロックステップモードで各DIMM9a〜9c、10a〜10c、11a〜11c、12a〜12cを動作させる場合にも、訂正不能なエラーが発生したDIMMを特定することができる。この結果、情報処理装置1は、障害が発生した環境や構成等を変化させずに、障害の再現や障害が発生したDIMMの切り分けを迅速に行うことができる。また、情報処理装置1は、故障したDIMMを特定できるので、例えば、障害発生時の状況を他の環境で再現する際の再現性を向上させることができる。
また、情報処理装置1は、メモリロックステップモードで動作させたDIMMの組のうち、訂正不能なエラーが検出されたDIMMの組を示すエラー情報28をNVRAM8に格納する。そして、情報処理装置1は、メモリロックステップモードで動作させたDIMMの組のうち、訂正不能なエラーが検出されたDIMMの組に含まれるDIMMをインディペンデントモードで動作させ、メモリテストを実行する。このため、情報処理装置1は、故障したDIMMを迅速に特定することができる。
また、情報処理装置1は、メモリロックステップモードで訂正不能なエラーが検出されたDIMMの組に含まれる各DIMMをインディペンデントモードでメモリテストした際に、訂正不能なエラーが検出されなかった場合は、各DIMMをSEL指摘する。すなわち、情報処理装置1は、メモリロックステップモードで訂正不能なエラーが発生したDIMMの組について、インディペンデントモードでメモリテストした際に、訂正不能なエラーの再現ができなかった場合は、各DIMMをSEL指摘する。
このため、情報処理装置1は、故障の恐れがあるDIMMを特定することができる。すなわち、情報処理装置1は、環境によりエラーが再現されなかった異常品を特定することができる。このため、情報処理装置1は、エラーの原因究明のために再現調査する工数も削減できる。
また、情報処理装置1は、メモリロックステップモードで動作させた際に、エラーが検出されたDIMMをSEL指摘する。このため、情報処理装置1は、利用者に対し、故障したDIMMを指摘することができる。
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例2として本発明に含まれる他の実施例を説明する。
(1)インディペンデントモードでメモリテストを行うDIMMについて
上述した情報処理装置1では、メモリロックステップモードで訂正不能なエラーが検出されたDIMMの組に含まれる各DIMMをインディペンデントモードでメモリテストした。しかし、実施例はこれに限定されるものではない。例えば、情報処理装置1は、メモリロックステップモードで訂正不能なエラーが検出された場合は、エラー情報28を生成せず、起動フラグ27を「1」に設定し、再起動を行う。そして、情報処理装置1は、起動時に、起動フラグ27が「1」である場合は、各DIMM9a〜9c、10a〜10c、11a〜11c、12a〜12cに対して、インディペンデントモードでメモリテストを実行してもよい。
すなわち、情報処理装置1は、メモリロックステップモードで訂正不能なエラーが検出されたDIMMの組を記憶せずとも、メモリロックステップモードで訂正不能なエラーが検出された旨を示す起動フラグ27を不揮発性の記憶領域に格納できればよい。この結果、情報処理装置1は、メモリロックステップモードで訂正不能なエラーが検出されたDIMMの組を記憶せずとも、故障したDIMMを特定することができる。
(2)情報処理装置1の構成について
上述した実施例1では、CPU2がBIOS20を実行することで、起動部21、メモリ初期化部22、POST処理部23、メモリエラー処理部24、解析部25の機能を発揮した。しかし、実施例はこれに限定されるものではなく、例えば、情報処理装置1は、BIOS20と同様の機能を発揮するMPU(Micro-Processing Unit)やASIC(Application Specific Integrated Circuit)を有してもよい。また、OS起動後にOSが情報処理装置1の各種リソースを制御する場合は、メモリエラー処理部24が実行する処理をOSに実行させてもよい。
なお、上述した実施例1では、説明を容易にするため、BIOS20がメモリコントローラ3を介してDDR9、10に含まれるDIMM9a〜9c、10a〜10cのメモリテストを実行する例について説明した。しかし、BIOS20は、同様の処理を実行することにより、メモリコントローラ4を開始、DDR11、12に含まれるDIMM11a〜11c、12a〜12cに対しても、メモリテストを実行する。この結果、情報処理装置1は、全てのDIMM9a〜9c、10a〜10c、11a〜11c、12a〜12cから故障したDIMMを特定することができる。
(3)符号化率について
上述した情報処理装置1は、メモリロックステップモードでは、S8EC(144、128)符号を用いて符号語を生成し、インディペンデントモードでは、SDDC(56、32)符号を用いて符号語を生成した。しかし、実施例はこれに限定されるものではなく、情報処理装置1は、任意の訂正能力を有する符号語を使用することができる。
また、情報処理装置1は、エラーの訂正能力を有さず、検出能力だけ有する符号語を利用してもよい。例えば、情報処理装置1は、誤り検出符号を用いてエラーが発生したバイトを特定し、異なるデータでリトライを実行することで、エラーバイトを訂正するARQ(Automatic Repeat Request)を利用してもよい。また、情報処理装置1は、受信側で誤りを訂正するFEC(Foward Error Correction)を利用してもよい。
(4)メモリロックステップモードで動作させるDIMMについて
上述した情報処理装置1は、メモリロックステップモードでDIMMを動作させる場合は、2つのDIMM、例えばDIMM9aとDIMM10aとを並行して動作させた。しかしながら、実施例はこれに限定されるものではない。例えば、情報処理装置1は、4枚のDIMM9a、9b、10a、10bを並行に動作させても良い。このような場合は、情報処理装置1は、4枚のDIMM9a、9b、10a、10bに格納する符号語を生成し、生成した符号語を4枚のDIMM9a、9b、10a、10bに分けて格納する。
なお、実施例1で説明したBIOS20は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM(Compact Disc Read Only Memory)、MO(Magneto Optical Disc)、DVD(Digital Versatile Disc)などのコンピュータで読取可能な記録媒体に記録される。また、このプログラムは、コンピュータによって記録媒体から読出されることによって実行することもできる。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験する第1の試験部と、
前記第1の試験部による試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定する設定部と、
再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定する判定部と、
前記フラグが前記不揮発性の記憶領域に設定されていると前記判定部が判定した場合は、前記メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験する第2の試験部と、
前記第2の試験部による試験結果を出力する出力部と
を有することを特徴とする情報処理装置。
(付記2)前記設定部は、並列に動作させたメモリの組のうち、前記第1の試験部による試験で訂正不能なエラーが検出されたメモリの組を示すエラー情報を前記不揮発性の記憶領域に設定し、
前記第2の試験部は、前記設定部が前記不揮発性の記憶領域に格納した前記エラー情報が示すメモリの組に含まれる各メモリを個別に動作させ、訂正不能なエラーが検出されるか否かを試験することを特徴とする付記1に記載の情報処理装置。
(付記3)前記出力部は、前記設定部が前記不揮発性の記憶領域に格納した前記エラー情報が示すメモリの組に含まれる各メモリから訂正不能なエラーが検出されなかった場合は、当該メモリの組に含まれる各メモリからエラーが検出された旨を示す情報を出力することを特徴とする付記2に記載の情報処理装置。
(付記4)前記出力部は、前記第2の試験部による試験で訂正不能なエラーが検出されたメモリを示す情報を出力することを特徴とする付記1〜3のいずれか1つに記載の情報処理装置。
(付記5)2以上のメモリを有するコンピュータに、
複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定し、
再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定し、
前記フラグが前記不揮発性の記憶領域に設定されていると判定した場合は、前記メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験結果を出力する
処理を実行させることを特徴とするメモリ試験プログラム。
(付記6)2以上のメモリを有する情報処理装置が、
複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグを不揮発性の記憶領域に設定し、
再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定し、
前記フラグが前記不揮発性の記憶領域に設定されていると判定した場合は、前記メモリを個別に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
前記試験結果を出力する
処理を実行することを特徴とするメモリ試験方法。
1 情報処理装置
2 CPU
3、4 メモリコントローラ
5 チップセット
6 I/O
7 ROM
8 NVRAM
9〜12 DDR
9a〜9c、10a〜10c、11a〜11c、12a〜12c DIMM
20 BIOS
21 起動部
22 メモリ初期化部
23 POST処理部
24 メモリエラー処理部
25 解析部
26 被疑DIMM特定データベース
27 起動フラグ
28 エラー情報
29 被疑DIMM特定処理結果

Claims (5)

  1. 複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験する第1の試験部と、
    前記第1の試験部による試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグと、訂正不能なエラーが検出されたメモリの組を示すエラー情報とを不揮発性の記憶領域に設定する設定部と、
    再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定する判定部と、
    前記フラグが前記不揮発性の記憶領域に設定されていると前記判定部が判定した場合は、前記設定部が前記不揮発性の記憶領域に設定した前記エラー情報が示すメモリの組に含まれる各メモリを個別に動作させ、訂正不能なエラーが検出されるか否かを試験する第2の試験部と、
    前記第2の試験部による試験結果を出力する出力部と
    を有することを特徴とする情報処理装置。
  2. 前記出力部は、前記設定部が前記不揮発性の記憶領域に格納した前記エラー情報が示すメモリの組に含まれる各メモリから訂正不能なエラーが検出されなかった場合は、当該メモリの組に含まれる各メモリからエラーが検出された旨を示す情報を出力することを特徴とする請求項に記載の情報処理装置。
  3. 前記出力部は、前記第2の試験部による試験で訂正不能なエラーが検出されたメモリを示す情報を出力することを特徴とする請求項1または2に記載の情報処理装置。
  4. 2以上のメモリを有するコンピュータに、
    複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
    前記試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグと、訂正不能なエラーが検出されたメモリの組を示すエラー情報とを不揮発性の記憶領域に設定し、
    再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定し、
    前記フラグが前記不揮発性の記憶領域に設定されていると判定した場合は、前記不揮発性の記憶領域に設定した前記エラー情報が示すメモリの組に含まれる各メモリを個別に動作させ、訂正不能なエラーが検出されるか否かを試験し、
    験結果を出力する
    処理を実行させることを特徴とするメモリ試験プログラム。
  5. 2以上のメモリを有する情報処理装置が、
    複数のメモリを並列に動作させた際に訂正不能なエラーが検出されるか否かを試験し、
    前記試験により訂正不能なエラーが検出された場合は、前記メモリを並列に動作させた状態で訂正不能なエラーが検出された旨を示すフラグと、訂正不能なエラーが検出されたメモリの組を示すエラー情報とを不揮発性の記憶領域に設定し、
    再起動時に、前記フラグが前記不揮発性の記憶領域に設定されているか否かを判定し、
    前記フラグが前記不揮発性の記憶領域に設定されていると判定した場合は、前記不揮発性の記憶領域に設定した前記エラー情報が示すメモリの組に含まれる各メモリを個別に動作させ、訂正不能なエラーが検出されるか否かを試験し、
    験結果を出力する
    処理を実行することを特徴とするメモリ試験方法。
JP2013075356A 2013-03-29 2013-03-29 情報処理装置、メモリ試験プログラムおよびメモリ試験方法 Active JP6070374B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013075356A JP6070374B2 (ja) 2013-03-29 2013-03-29 情報処理装置、メモリ試験プログラムおよびメモリ試験方法
US14/208,668 US9570197B2 (en) 2013-03-29 2014-03-13 Information processing device, computer-readable recording medium, and method
EP14160890.1A EP2787440B1 (en) 2013-03-29 2014-03-20 Information processing device, program, and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013075356A JP6070374B2 (ja) 2013-03-29 2013-03-29 情報処理装置、メモリ試験プログラムおよびメモリ試験方法

Publications (2)

Publication Number Publication Date
JP2014199627A JP2014199627A (ja) 2014-10-23
JP6070374B2 true JP6070374B2 (ja) 2017-02-01

Family

ID=50389238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013075356A Active JP6070374B2 (ja) 2013-03-29 2013-03-29 情報処理装置、メモリ試験プログラムおよびメモリ試験方法

Country Status (3)

Country Link
US (1) US9570197B2 (ja)
EP (1) EP2787440B1 (ja)
JP (1) JP6070374B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106030544B (zh) * 2014-12-24 2020-01-21 华为技术有限公司 计算机设备内存的检测方法和计算机设备
JP6515555B2 (ja) * 2015-02-02 2019-05-22 富士通株式会社 演算処理装置、メモリ制御装置及び演算処理装置の制御方法
US9697094B2 (en) * 2015-02-06 2017-07-04 Intel Corporation Dynamically changing lockstep configuration
JP6083480B1 (ja) * 2016-02-18 2017-02-22 日本電気株式会社 監視装置、フォールトトレラントシステムおよび方法
US10163508B2 (en) * 2016-02-26 2018-12-25 Intel Corporation Supporting multiple memory types in a memory slot
US10410738B2 (en) * 2016-03-15 2019-09-10 Toshiba Memory Corporation Memory system and control method
CN108074623A (zh) * 2016-11-08 2018-05-25 英业达科技有限公司 依据测试粒度决定存储器测试覆盖率的系统及其方法
CN108132860A (zh) * 2016-12-01 2018-06-08 英业达科技有限公司 依存储器模块的物理地址范围测试存储器的系统及方法
US10359501B2 (en) * 2016-12-28 2019-07-23 Architecture Technolgy Corporation Mobile emergency perimeter system and method
US10916326B1 (en) * 2019-09-12 2021-02-09 Dell Products, L.P. System and method for determining DIMM failures using on-DIMM voltage regulators
US11080124B2 (en) * 2019-11-01 2021-08-03 Dell Products, L.P. System and method for targeted efficient logging of memory failures

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02201564A (ja) * 1989-01-30 1990-08-09 Nec Ic Microcomput Syst Ltd Ramボードのテスト回路
JPH0720208A (ja) 1993-07-02 1995-01-24 Mitsubishi Electric Corp 被測定素子のテスト方法及びテストシステム
US5604755A (en) * 1995-11-20 1997-02-18 International Business Machine Corp. Memory system reset circuit
US6671844B1 (en) * 2000-10-02 2003-12-30 Agilent Technologies, Inc. Memory tester tests multiple DUT's per test site
US6886109B2 (en) 2001-05-18 2005-04-26 Hewlett-Packard Development Company, L.P. Method and apparatus for expediting system initialization
US20030051193A1 (en) * 2001-09-10 2003-03-13 Dell Products L.P. Computer system with improved error detection
US7447943B2 (en) * 2003-05-28 2008-11-04 Hewlett-Packard Development Company, L.P. Handling memory errors in response to adding new memory to a system
DE10344877B3 (de) * 2003-09-26 2004-12-30 Infineon Technologies Ag Vorrichtung zum Testen eines Speichermoduls
US7765454B2 (en) * 2005-05-24 2010-07-27 Sgi International, Inc. Fault tolerant memory system
US8028207B1 (en) * 2005-09-28 2011-09-27 Google Inc. Early memory test
US7721140B2 (en) * 2007-01-02 2010-05-18 International Business Machines Corporation Systems and methods for improving serviceability of a memory system
US7949931B2 (en) * 2007-01-02 2011-05-24 International Business Machines Corporation Systems and methods for error detection in a memory system
US8006032B2 (en) 2007-08-22 2011-08-23 Globalfoundries Inc. Optimal solution to control data channels
US7783919B2 (en) * 2007-09-12 2010-08-24 Dell Products, Lp System and method of identifying and storing memory error locations
US8037380B2 (en) * 2008-07-08 2011-10-11 International Business Machines Corporation Verifying data integrity of a non-volatile memory system during data caching process
JP2012113466A (ja) * 2010-11-24 2012-06-14 Fujitsu Ltd メモリコントローラ及び情報処理システム
US8627176B2 (en) * 2010-11-30 2014-01-07 Microsoft Corporation Systematic mitigation of memory errors
JP2012177964A (ja) 2011-02-25 2012-09-13 Nec Computertechno Ltd メモリシステム及びメモリモジュール制御方法
JP5545771B2 (ja) * 2011-08-10 2014-07-09 エヌイーシーコンピュータテクノ株式会社 診断装置、診断方法および診断プログラム診断方法
US9026870B2 (en) * 2012-07-27 2015-05-05 Samsung Electronics Co., Ltd. Memory module and a memory test system for testing the same
US9117552B2 (en) * 2012-08-28 2015-08-25 Kingtiger Technology(Canada), Inc. Systems and methods for testing memory

Also Published As

Publication number Publication date
EP2787440B1 (en) 2016-01-06
US20140298109A1 (en) 2014-10-02
US9570197B2 (en) 2017-02-14
JP2014199627A (ja) 2014-10-23
EP2787440A1 (en) 2014-10-08

Similar Documents

Publication Publication Date Title
JP6070374B2 (ja) 情報処理装置、メモリ試験プログラムおよびメモリ試験方法
EP2972871B1 (en) Methods and apparatus for error detection and correction in data storage systems
US7971112B2 (en) Memory diagnosis method
US7945815B2 (en) System and method for managing memory errors in an information handling system
US8930750B2 (en) Systems and methods for preventing data loss
US7596648B2 (en) System and method for information handling system error recovery
US8862953B2 (en) Memory testing with selective use of an error correction code decoder
TW201003662A (en) Memory malfunction prediction system and method
KR20140018393A (ko) 데이터 무결성을 제공하기 위한 방법 및 장치
US20130339822A1 (en) Bad wordline/array detection in memory
US9690649B2 (en) Memory device error history bit
US20180067806A1 (en) Confirming memory marks indicating an error in computer memory
US9086990B2 (en) Bitline deletion
US9230687B2 (en) Implementing ECC redundancy using reconfigurable logic blocks
WO2016122515A1 (en) Erasure multi-checksum error correction code
US11372720B2 (en) Systems and methods for encoding metadata
JP5910356B2 (ja) 電子装置、電子装置制御方法及び電子装置制御プログラム
US11593209B2 (en) Targeted repair of hardware components in a computing device
US20060242471A1 (en) Monitoring error-handler vector in architected memory
TWI777259B (zh) 開機方法
JP2008310846A (ja) 汎用サーバにおけるハードディスクドライブ故障の事前チェック装置、その方法及びそのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160905

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161109

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161219

R150 Certificate of patent or registration of utility model

Ref document number: 6070374

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150