[go: up one dir, main page]

JP6679122B1 - メモリ障害対処システム、情報処理装置及びメモリ障害対処方法 - Google Patents

メモリ障害対処システム、情報処理装置及びメモリ障害対処方法 Download PDF

Info

Publication number
JP6679122B1
JP6679122B1 JP2019051453A JP2019051453A JP6679122B1 JP 6679122 B1 JP6679122 B1 JP 6679122B1 JP 2019051453 A JP2019051453 A JP 2019051453A JP 2019051453 A JP2019051453 A JP 2019051453A JP 6679122 B1 JP6679122 B1 JP 6679122B1
Authority
JP
Japan
Prior art keywords
memory
error
occurrence
software
notification
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
JP2019051453A
Other languages
English (en)
Other versions
JP2020154591A (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.)
NEC Platforms Ltd
Original Assignee
NEC Platforms 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 NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2019051453A priority Critical patent/JP6679122B1/ja
Priority to US17/437,193 priority patent/US11726888B2/en
Priority to PCT/JP2020/011396 priority patent/WO2020189617A1/ja
Application granted granted Critical
Publication of JP6679122B1 publication Critical patent/JP6679122B1/ja
Publication of JP2020154591A publication Critical patent/JP2020154591A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • 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
    • 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/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/0793Remedial or corrective actions
    • 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
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • 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
    • G11C2029/0409Online test

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ハードウェアによるメモリ切り替え機能と、カーネルによるページオフライン機能とを連動させ、効率よくメモリエラーへ対処するシステムを提供する。【解決手段】メモリ障害対処システムは、メモリエラーの発生をファームウェアまたはソフトウェアへ通知するメモリコントローラと、メモリエラー発生の通知を受けるとエラーが発生したメモリから予備メモリへの切り替えを指示するファームウェアと、メモリエラー発生の通知を受けると、エラーが発生したメモリに対応するページの無効化を指示するソフトウェアと、を含む。ファームウェアは、メモリエラー発生の通知先をメモリコントローラへ設定する。【選択図】図3

Description

本発明は、メモリ障害対処システム、情報処理装置及びメモリ障害対処方法に関する。
近年、DRAMの価格の低下、大容量化により、サーバ装置に数十テラバイトのメモリを搭載して、計算に必要なデータをメモリ上に置くことで計算処理を圧倒的に高速化するインメモリ・コンピューティングという技術が利用されている。インメモリ・コンピューティングでは、メモリ上のデータの保全性が重要である。一方、DIMM(Dual Inline Memory Module)の高集積化、大容量化に伴ってエラーの発生頻度も増加している。メモリエラーにはECCで訂正されるCorrectable Error(以下、CEと記載する。)とECCで訂正できないUncorrectable Error(以下、UCEと記載する。)がある。CEが複数のデータで同時に発生するとECCで訂正できないためUCEとなる。UCEが発生するとシステムダウンが生じる。
これに対し、近年のコンピュータシステムでは、ハードウェア(以下、HWと記載する。)とソフトウェア(以下、SWと記載する。)のそれぞれが、CEが発生した場合の対処機能を装備している。
HWは、あるDRAMでCEの発生回数が閾値に到達した場合、故障と判断して予備のDRAMへデータを移す機能(以下、HW機能と記載する場合がある。)を備えている。一方、SWは、ページオフラインという機能を装備している。SWは、メモリ上でのCE発生の通知を受けると、ページ単位で回数をカウントして、あるページで発生したCEの発生回数が閾値に到達した場合、そのページを無効化するようカーネルへ指示する。カーネルは、そのページに有効なデータがあるがその時点で未使用であれば、別の物理ページへデータを移して、元のページを使用しないように制御する。これをページオフライン機能(以下、SW機能と記載する場合がある。)と呼ぶ。
しかし、一般にHW機能とSW機能は連携して動作しておらず、非効率な動作を行うことがある。例えば、SWが管理対象としているページには、メモリのインターリーブによって、複数のDRAMがマッピングされている。そのため、例えば3つのDRAMでCEが発生した場合、SWは、そのページでCEが3回発生したとカウントする。すると、そのページについてSWが管理するCEの発生回数は、HWが個々のDRAMについて管理しているCEの発生回数よりも先に閾値に到達することがある。すると、HW機能(予備DRAMへのデータコピー)が実行可能であるにも関わらず、SW機能(ページオフライン)が先に動作してしまう。ページオフライン機能が動作すると、(1)ユーザが利用できるメモリページが減る、(2)カーネルによるデータの移動というオーバーヘッドが生じる、といった影響がある。一方、HW側の機能は、予備のDRAMを使い、HWが有するCOPYエンジンを使ってデータを移すため、SWへの影響は無い。従って、まずHW側の機能を動作させ、それでもなお、メモリCEが発生する場合に、最後の手段として、SW側のページオフラインを動作すべきである。
特許文献1には、このような方針に沿って、HW機能とSW機能とを連動させる仕組みが開示されている。特許文献1は、上記のHWの機能に相当する予備メモリ切替と、上記のSWの機能に相当するページ閉塞とを連携させてシステムダウンを防止するメモリ障害処理システムを開示している。このメモリ障害処理システムは、メモリCEの発生回数が閾値に達すると、まず予備メモリに切り替え、その後、メモリCEの発生回数が閾値に達すると、ページ閉塞を行うという制御によって、予備メモリ切替とページ閉塞とを連動させている。ページ閉塞を行うときの動作をより具体的に説明すると、ファームウェア(以下、FWと記載する。)に実装される障害ページ通知部62が、障害が発生した箇所に対応するメモリページを、OSに実装されるページ閉塞部63に通知し、ページ閉塞部63が通知されたページを検索してページ閉塞を行っている。
特開2011−150469号公報
特許文献1に記載の方法には、(A)障害ページ通知部62は、BIOSと呼ばれるFWに実装されており、BIOSがエラーが発生したページをテーブルに登録、ページ毎に発生回数をカウントし、閾値を越えた場合、閾値を越えたページをページ閉塞部63に通知し、ページ閉塞部63は、通知されたページに対してページ閉塞を行う、という動作を行うが、BIOSというFWがテーブルの検索、登録、発生回数のカウントを行うため、その間、OSはCPUを使えないため、一時的にOSのCPU利用率が下がってしまうという課題がある。(B)BIOSやOSに上記の機能を実装する以上、無制限にエラーが発生した全てのページを通知するように実装することはできないため、通知するページ数に上限値を設ける必要がある。つまり、障害ページ通知部62は、エラーが発生した全てのページを通知することができず、ページ閉塞部63はエラーが発生した全てのページを閉塞することができないという制約がある。
メモリの大容量化に伴いエラーの発生頻度が増加する可能性のあるインメモリ・コンピューティングに特許文献1の方法を適用すると、上記のような点が制約となってメモリの障害対処ができず、システムダウン等を招く可能性がある。
そこでこの発明は、上述の課題を解決するメモリ障害対処システム、情報処理装置及びメモリ障害対処方法を提供することを目的としている。
本発明の一態様によれば、メモリ障害対処システムは、メモリコントローラと、ファームウェアと、ソフトウェアと、を含み、前記メモリコントローラは、メモリエラーの発生を検出すると、前記メモリエラーの発生を通知先の設定に基づいて、前記ファームウェアまたは前記ソフトウェアへ通知するエラー発生通知部を有し、前記ファームウェアは、前記通知先を前記メモリコントローラへ設定する通知先設定部と、前記メモリコントローラから前記メモリエラーの発生の通知を受けると、前記メモリエラーが発生したメモリから予備メモリへの切り替えを指示する予備メモリ切替指示部と、を有し、前記ソフトウェアは、前記メモリコントローラから前記メモリエラー発生の通知を受けると、前記メモリエラーが発生したメモリに対応するページを無効化する指示を行う無効化指示部、を有する。
また、本発明の他の一態様によれば、情報処理装置は、上記のメモリ障害対処システムを備える。
また、本発明の他の一態様によれば、メモリ障害対処方法は、ファームウェアが、メモリエラーが発生した場合の通知先をメモリコントローラへ設定するステップと、前記メモリコントローラが、メモリエラーの発生を検出すると、前記通知先の設定に基づいて、前記メモリエラーの発生を前記ファームウェアまたはソフトウェアへ通知するステップと、前記ファームウェアが、前記メモリコントローラから前記メモリエラー発生の通知を受け取った場合、前記メモリエラーが発生したメモリから予備メモリへの切り替えを指示するステップと、前記ソフトウェアが、前記メモリコントローラから前記メモリエラー発生の通知を受け取った場合、前記メモリエラーが発生したメモリに対応するページを無効化する指示を行うステップと、を有する。
本発明によれば、HWによる予備メモリ切り替え機能とSWによるページオフライン機能を連動させて、効果的にメモリCEの発生に対処することができる。
本発明の一実施形態に係るコンピュータシステムの一例を示す図である。 本発明の一実施形態に係るメモリおよびメモリコントローラの一例を示す図である。 本発明の一実施形態に係るメモリエラーに関するソフトウェア群の一例を示す図である。 本発明の一実施形態に係るメモリエラー管理テーブルの一例を示す図である。 本発明の一実施形態に係る制御の一例を示す第1のフローチャートである。 本発明の一実施形態に係る制御の一例を示す第2のフローチャートである。 本発明の一実施形態に係る制御の一例を示す第3のフローチャートである。 本発明の一実施形態に係る制御の一例を示す第4のフローチャートである。 本発明の一実施形態に係る制御の一例を示す第5のフローチャートである。 本発明の一実施形態に係る制御の一例を示す第6のフローチャートである。 本発明の一実施形態に係るメモリ障害対処システムの最小構成を示す図である。
以下、本発明の一実施形態に係るメモリエラー発生時の制御について図面を参照して説明する。
(構成)
図1は、本発明の一実施形態に係るコンピュータシステムの一例を示す図である。
図1に示すように、コンピュータシステム400は、HW(ハードウェア)300と、FW(ファームウェア)200と、OS(オペレーティングシステム)100と、SW(ソフトウェア)000と、を備えている。
HW300は、CPU(Central Processing Unit)310と、メモリコントローラ320と、1つ以上のDIMM330と、を含む。メモリコントローラ320は、1または複数のチャネル(以降、CHと記載する。)を備えていて、DIMM330は何れかのCHに接続されている。DIMM330は、メモリモジュールである。メモリコントローラ320は、DIMM330におけるメモリCEの発生を検出する機能と、HW機能(予備DRAMへのデータコピー機能)を有している。
FW200は、BIOS(Basic Input/Output System)210を含んでいる。BIOS210は、HW300とOS100の間で、HW機能とSW機能を効果的に連携させるための機能を有している。
OS100は、Kernel(カーネル)110を含んでいる。Kernel110は、上記のSW機能を有している。
SW000は、メモリエラー監視ソフトウェア010を含んでいる。メモリエラー監視ソフトウェア010は、SW機能の実行を指示する。
コンピュータシステム400において、DIMM330にECが発生すると、OS100と、FW200と、HW300とは、連携してメモリエラーへの対処を行う。
図2は、本発明の一実施形態に係るメモリおよびメモリコントローラの一例を示す図である。
図2(a)にDIMM330の構成例を示す。DIMM330は、ランク1、ランク2を含む。ランクは、メモリモジュールのブロックを示し、メモリコントローラ320は、ランク単位でメモリモジュールを管理する。ランク1は、複数のDRAM3311a〜3311cと、少なくとも1つの予備DRAM3312を備えている。ランク2は、複数のDRAM3321a〜3321cと、少なくとも1つの予備DRAM3322を備えている。なお、DRAM3311a〜3311cの区別が必要ないときには、DRAM3311と記載する。DRAM3321a〜3321cの区別が必要ないときには、DRAM3321と記載する。また、ランクの区別も必要なくDIMM330に含まれるDRAMを指すときには、DRAM3301、予備DRAMを指すときには予備DRAM3302と記載する。なお、ランクの数やDRAMの数は、図示するものに限定されない。
図2(b)にメモリコントローラ320の構成例を示す。メモリコントローラ320は、CE回数カウント機能321と、ECC訂正機能322と、DRAMコピー機能323と、BIOS通知機能324と、SW通知機能325を備えている。
CE回数カウント機能321は、DRAM3301ごとにメモリCEの発生回数をカウントする。
ECC訂正機能322は、DRAM3301でメモリCEが発生するとECC訂正を行う。
DRAMコピー機能323は、例えば、DRAM3301から予備DARM3302に切り替えるときに、切り替え対象のDRAM3301から予備DARM3302へデータのコピーを行う。例えば、DRAM3311aに閾値回数以上のメモリCEが発生した場合、DRAM3311aから、同じランク1の予備DRAM3312へデータのコピーが実行される。
BIOS通知機能324は、予備DARM3302への切り替え前にメモリCEの発生回数が所定の閾値を上回った場合、メモリCEの発生をFW200へ通知する。
SW通知機能325は、予備DARM3302へ切り替えた後に、さらにメモリCEが発生した場合、メモリCEの発生をSW000(メモリエラー監視ソフトウェア010)へ通知する。
図3は、本発明の一実施形態に係るメモリエラーに関するソフトウェア群の一例を示す図である。
図3(a)にメモリエラー監視ソフトウェア010の構成例を示す。メモリエラー監視ソフトウェア010は、CE発生箇所特定手段011と、メモリエラー管理テーブル参照手段012と、CE発生回数カウント手段013と、ページオフライン指示手段014とを有している。
CE発生箇所特定手段011は、メモリCEが発生したDRAM3301を特定する。
メモリエラー管理テーブル参照手段012は、後述するメモリエラー管理テーブル500を参照して、メモリCEが発生したDRAM3301について、予備DRAM3302へのデータコピーが実行済みか否かを示す情報を取得する。
CE発生回数カウント手段013は、メモリコントローラ320から通知されたメモリCEの回数をページ単位でカウントする。
ページオフライン指示手段014は、CE発生回数カウント手段013がカウントしたCEの発生回数が閾値を超えると、メモリCEの発生回数が閾値を超えたページを無効化するようにKernel110へ指示する。
図3(b)にKernel110の構成例を示す。Kernel110は、ページデータコピー手段111と、ページ無効化手段112とを有している。
ページデータコピー手段111は、ページ無効化の前に無効化対象のページから有効なページへデータをコピーする。
ページ無効化手段112は、メモリエラー監視ソフトウェア010(ページオフライン指示手段014)から指定されたページを無効化する。
図3(c)にBIOS210の構成例を示す。BIOS210は、CE発生箇所特定手段211と、メモリエラー管理テーブル更新手段212と、DRAMコピー指示手段213と、BIOS通知有効無効手段214と、SW通知有効無効手段215と、を有している。
CE発生箇所特定手段211は、メモリCEが発生したDRAM3301を特定する。
メモリエラー管理テーブル更新手段212は、後述するメモリエラー管理テーブル500のデータコピーを行ったDRAM3301の位置に対応するデータへ、HW機能が実行済みであることを示す情報を登録する。
DRAMコピー指示手段213は、メモリCEの発生回数が閾値を超えたDRAM3301について、そのDRAM3301のデータを予備DRAM3302へコピーするようメモリコントローラ320へ指示する。これは、HW機能の実行指示である。
BIOS通知有効無効手段214は、DRAM3301でメモリCEが発生した場合、BIOS210にメモリCEの発生を通知するか否かを設定する。
SW通知有効無効手段215は、DRAM3301でメモリCEが発生した場合、メモリエラー監視ソフトウェア010にメモリCEの発生を通知するか否かを設定する。
図4は、本発明の一実施形態に係るメモリエラー管理テーブルの一例を示す図である。
図4に示すようにメモリエラー管理テーブル500は、CPUテーブル501を含む。CPUテーブル501は、メモリコントローラテーブル502を含む。メモリコントローラテーブル502は、チャネルテーブル503を含む。チャネルテーブル503は、ランクテーブル504を含む。
図4には一例として、CPU301が4つ、各CPU301に対してメモリコントローラ302が2つ、各メモリコントローラ302に対してCHが3つ、各CHに対してランクが7つ設けられたコンピュータシステム400の場合のメモリエラー管理テーブル500を例示する。
コンピュータシステム400がこのような構成の場合、図示するように、メモリエラー管理テーブル500は、CPU1〜CPU4に対応するCPUテーブル501−1〜501−4を含む。また、例えば、CPU1に対応するCPUテーブル501は、メモリコントローラテーブル502−1〜502−2を含む。また、例えば、メモリコントローラテーブル502−1は、チャネルテーブル503−1〜503−3を含む。また、例えば、チャネルテーブル503−1は、ランクテーブル504−1〜504−7を含む。
そして、ランクテーブル504−1〜504−7の各々には、HW機能が実行済みであることを示す値(例えば、0xFF)、又は、HW機能が未実行であることを示す値(例えば、0x00)が格納される。初期状態では、ランクテーブル504−1〜504−7の各々には、「0x00」の値が格納されている。そして、BIOS210は、メモリコントローラ320にHW機能の実行を指示すると、当該DRAM3301を含むランクに対応するランクテーブル504(例えば、ランクテーブル504−1)に「0xFF」を書き込む。メモリエラー監視ソフトウェア010は、「0xFF」が格納されていることを確認してから、ページ無効化の指示を行う。これにより、まず、HW機能を動作し、その後、SW機能を動作させるという処理の順序が確保される。
メモリエラー管理テーブル500は、BIOS210が、メモリエラー管理テーブル更新手段212を使って書き込みを行い、メモリエラー監視ソフトウェア010がメモリエラー管理テーブル参照手段012を使って読み込みを行う。従って、メモリエラー管理テーブル500は、BIOS210とメモリエラー監視ソフトウェア010が、アクセス可能な共有メモリ等に配置される。
(動作)
次にメモリCE発生時の動作について説明する。
図5は、本発明の一実施形態に係る制御の一例を示す第1のフローチャートである。
図5にCE発生時の通知先の初期設定を行う処理を示す。
BIOS210は、BIOS通知有効無効手段214を使ってメモリコントローラ320に対してメモリCEの発生をBIOS210へ通知するよう設定しておく(ステップS1)。また、BIOS210は、SW通知有効無効手段215を使ってメモリコントローラ320に対してメモリCEの発生をSW000へ通知しないように設定しておく(ステップS2)。メモリコントローラ320は、この設定を受け取って、BIOS通知機能324とSW通知機能325の有効、無効設定を行う。これらの初期設定により、ECCで訂正されたメモリCEが閾値を越えて発生した場合、その通知は、BIOS通知機能324により、BIOS210へ通知される。次に初期設定がされた状態でメモリCEが発生したときの動作を、図6を参照して説明する。
図6は、本発明の一実施形態に係る制御の一例を示す第2のフローチャートである。
メモリCEが発生したメモリコントローラ320は、ECC訂正機能322を使ってメモリCEを訂正する(ステップS11)。次にメモリコントローラ320は、CE回数カウント機能321を使ってメモリCEの発生回数をカウントする(ステップS12)。メモリコントローラ320は、メモリCEの発生回数が閾値に到達したか否かを確認する(ステップS13)。閾値に到達していない場合、図6に示す処理を終了する。閾値に到達した場合、メモリコントローラ320は、BIOS通知機能324を使って、メモリCEの発生をBIOS210へ通知する(ステップS14)。
メモリCEの発生がBIOS210へ通知されると、始めにHW機能を使ってエラーが発生したDRAMのデータを予備DRAMへ移す。次に図7を参照してこの処理を説明する。
図7は、本発明の一実施形態に係る制御の一例を示す第3のフローチャートである。
メモリCE発生の通知を受信したBIOS210は、DRAMコピー指示手段213を使ってメモリコントローラ320に対して、メモリCEが発生したDRAM3301のデータを予備DRAM3302へコピーするよう指示する(ステップS21)。メモリコントローラ320は、この指示を受けて、DRAMコピー機能323を使って、指定されたDRAM3301から同じランクの予備DRAM3302へのデータのコピーを行って、HW機能を動作させる。次にBIOS210は、CE発生箇所特定手段211を使ってメモリCEが発生したDRAM3301を特定する(ステップS22)。次にBIOS210は、メモリエラー管理テーブル更新手段212を使ってメモリCEが発生したDRAM3301の位置をメモリエラー管理テーブル500に登録する(ステップS23)。例えば、メモリCEが発生したDRAMの位置が、「CPU1−メモリコントローラ1−チャネル1−ランク1」であった場合、図4に例示で示されるメモリエラー管理テーブル500の「CPU1−メモリコントローラ1−チャネル1−ランク1」に該当する箇所にHW機能動作済み(ステップ1動作済み)を示す値(例えば、「0xFF」)を登録する。次に、BIOS210は、BIOS通知有効無効手段214を使ってメモリコントローラ320に対して、HW機能動作済みのランクで発生したメモリCEをBIOS210へ通知しないよう設定する(ステップS24)。最後に、BIOS210は、SW通知有効無効手段215を使って、メモリコントローラ320に対して、HW機能動作済みのランクに属する何れかのDRAM3301におけるメモリCEの発生をSW000(メモリエラー監視ソフトウェア010)へ通知するよう設定する(ステップS25)。これにより、HW機能を動作させたランクで、その後、他のDRAM3301等でメモリCEが発生すると、そのメモリCEの発生はメモリエラー監視ソフトウェア010へ通知される。これは、HW機能が既に動作済みの場合、予備DRAM3302が無いため、SW機能で対処する必要があるためである。メモリCEの発生回数は、メモリエラー監視ソフトウェア010でカウントされ、閾値を上回るようになると、SW機能を使って、エラーが発生したページのデータを別のページに移す。その場合の処理の流れを図8に示す。
図8は、本発明の一実施形態に係る制御の一例を示す第4のフローチャートである。
メモリコントローラ320は、メモリCEの発生を検出すると、ECC訂正機能322を使ってメモリCE訂正する(ステップS31)。次にメモリコントローラ320は、HW機能動作済みであることに基づいて(CE回数をカウントせずに)、SW通知機能325を使ってメモリCEの発生をメモリエラー監視ソフトウェア010へ通知する(ステップS32)。メモリCEの発生が通知されたメモリエラー監視ソフトウェア010の動作を、図9を参照して説明する。
図9は、本発明の一実施形態に係る制御の一例を示す第5のフローチャートである。
メモリエラー監視ソフトウェア010は、CE発生箇所特定手段011を使ってCEが発生したDRAM3301を特定する(ステップS41)。次にメモリエラー監視ソフトウェア010は、メモリエラー管理テーブル参照手段012を使って、ステップS41で特定したメモリCEが発生したDRAM3301の位置をキーにして、メモリエラー管理テーブル500を検索して、HW機能が既に動作済みか否かを調べる(ステップ42及びステップS43)。HW機能がまだ動作していない場合は、図9の処理を終了する。HW機能が既に動作済みの場合、メモリエラー監視ソフトウェア010は、CE発生回数カウント手段013を使ってCE発生回数をページ単位でカウントする(ステップS44)。CE発生回数カウント手段013は、ステップS41で特定されたDRAM3301に対応する(マッピングされた)ページについてCE発生回数をカウントする。メモリエラー監視ソフトウェア010は、CE発生回数が閾値に到達したか否かを確認する(ステップS45)。閾値に到達していない場合、図9の処理を終了する。閾値に到達した場合、メモリエラー監視ソフトウェア010は、ページオフライン指示手段014を使って、無効化するページを指定して、Kernel110に対して、ページオフラインを指示する(ステップS46)。
図10は、本発明の一実施形態に係る制御の一例を示す第6のフローチャートである。
図10を参照して、ページオフラインを指示されたKernel110の動作を説明する。Kernel110は、ページデータコピー手段111を使って、メモリエラー監視ソフトウェア010から指定されたページ上のデータを別のページへコピーする(ステップS51)。次にKernel110は、ページ無効化手段112を使って、メモリエラー監視ソフトウェア010から指定されたメモリCEが発生したページを使わないよう無効化する(ステップS52)。これにより、SW機能が実行済みとなる。
次にメモリエラー管理テーブル500の登録と参照について具体例を交えて説明する。
例えば、図7のステップS22において、BIOS210は、メモリCEが発生したDRAMの位置が、「CPU1−メモリコントローラ1−チャネル1−ランク1」であると特定すると、ステップS23において、BIOS210は、図4に例示するメモリエラー管理テーブル500の「CPU1−メモリコントローラ1−チャネル1−ランク1」に該当する箇所にHW機能(予備DRAMへのデータコピー)が動作済みであることを示す値を登録する。そして、図9の処理のステップS41において、メモリエラー監視ソフトウェア010は、メモリCEが発生したDRAMの位置が、「CPU1−メモリコントローラ1−チャネル1−ランク1」であると特定すると、メモリエラー管理テーブル500の「CPU1−メモリコントローラ1−チャネル1−ランク1」に該当する箇所を参照して、HW機能が動作済みであることを確認する。そして、メモリエラー監視ソフトウェア010は、ステップS44においてCE発生回数をカウントし、閾値に到達していた場合、ステップS46においてSW機能(ページオフライン)を動作させる。このように本実施形態では、メモリエラー管理テーブル500に基づいて、HW機能が実行済みであることが確認されてから、SW機能を動作させる。
本実施形態によれば、HW300とSW000の中間に位置するFW200にメモリエラー管理テーブル500を作成しておく。また、メモリCEが発生すると最初はFW200に通知が行き、FW200がHW機能を動作させる。さらにFW200はHW機能を動作させたDRAMの位置をメモリエラー管理テーブル500に登録する。そして、FW200は、次にメモリCEが発生した場合、SW000に通知が行くように設定する。さらにメモリCEが発生するとSW000に通知が行き、SW000がメモリCEを認識すると、メモリCEが発生したDRAMを特定し、メモリエラー管理テーブル500を参照して、特定したDRAMに対してHW機能が動作済みなのかを確認する。HW機能が動作済みの場合、SW000はページオフライン機能を動作させる。これにより、まずHW機能を動作させ、それでもなお、メモリCEが発生する場合にSW機能を動作させるという制御を実現することができる。
また、上記したように、本実施形態によれば、BIOS210によるメモリCEエラーの通知先の設定処理(図5)により、必ず先にHW機能が動作する。そのため、HWの機能によってメモリCEの発生が収まれば、SW機能(ページオフライン)が動作することはない。その場合、(1)ユーザが利用できるメモリページが減る、(2)カーネルによるデータの移動というオーバーヘッドが生じる、といった影響を受けることなく、コンピュータシステム400の運用を継続することができる。
さらにメモリCEが発生した場合には、その時点で、SW機能を動作させることで、メモリCEが複数個所で同時に発生しUCEとなり、コンピュータシステム400がシステムダウンすることを防止できる。
また、本実施形態では、BIOS210のBIOS通知有効無効手段214、SW通知有効無効手段215の設定に基づいて、HW機能実行前であれば、メモリコントローラ320からBIOS210へ、HW機能実行後であれば、メモリコントローラ320からメモリエラー監視ソフトウェア010へメモリCE発生の通知を行う。また、無効化が必要なページに対応するDRAM3301の位置は、メモリエラー管理テーブル500を介してメモリエラー監視ソフトウェア010に通知される。そのため、BIOSが無効化(閉塞)すべきページを通知する必要が無く効率的である。
また、メモリエラー監視ソフトウェア010は、メモリエラー管理テーブル500でDRAM3301の位置を確認して、そのメモリ位置に対応するページを無効化するので、無効化対象のページを検索する必要が無く効率的である。
従って、メモリの大容量化に伴いエラーの発生頻度が増加する可能性のあるインメモリ・コンピューティング環境においても、滞りなく、メモリ障害への対処を行うことができる。
また、メモリエラー管理テーブル500には、コンピュータシステム400が実際に搭載する(有限の)DRAM3301の情報を登録しておけば、メモリエラー管理テーブル500に基づいて、どのDRAM3301でメモリCEが発生しても上記処理により対処することができる。従って、無効化できるページ数に上限値を設ける等の制約が生じることが無い。
図11は、本発明の一実施形態に係るメモリ障害対処システムの最小構成を示す図である。
図11に示すようにメモリ障害対処システム10は、少なくともソフトウェア20と、ファームウェア30と、メモリコントローラ40とを含む。
メモリコントローラ40は、メモリエラー(CE)の発生を検出すると、メモリエラーの発生をファームウェア30またはソフトウェア20へ通知するエラー発生通知部41を有する。
ソフトウェア20は、メモリコントローラ320からメモリエラー発生の通知を受けると、メモリエラーが発生したメモリに対応するページを無効化するようカーネルに指示するページ無効化指示部21を有する。
ファームウェア30は、メモリコントローラ40がメモリエラーの発生を検出した時のメモリエラー発生の通知先(ソフトウェア20またはファームウェア30)をメモリコントローラ40へ設定する通知先設定部32と、メモリコントローラ40からメモリエラー発生の通知を受けると、メモリエラーが発生したメモリから予備メモリへの切り替えをメモリコントローラ40へ指示する予備メモリ切替指示部31と、を有する。
上記の実施形態の構成と対比すると、ソフトウェア20はメモリエラー監視ソフトウェア010に対応し、ファームウェア30はBIOS210に対応し、メモリコントローラ40はメモリコントローラ230に対応する。
また、エラー発生通知部41はBIOS通知機能324およびSW通知機能325に対応し、ページ無効化指示部21はページオフライン指示手段014に対応し、予備メモリ切替指示部31はDRAMコピー指示手段213に対応し、通知先設定部32はBIOS通知有効無効手段214およびSW通知有効無効手段215に対応する。
なお、メモリエラー監視ソフトウェア010の各手段、Kernel110の各手段、BIOS210の各手段による各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムを、CPU310が読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。コンピュータシステム400は、情報処理装置の一例である。
000・・・SW
010・・・メモリエラー監視ソフトウェア
011・・・CE発生箇所特定手段
012・・・メモリエラー管理テーブル参照手段
013・・・CE発生回数カウント手段
014・・・ページオフライン指示手段
100・・・OS
110・・・Kernel
111・・・ページデータコピー手段
112・・・ページ無効化手段
200・・・FW
210・・・BIOS
211・・・CE発生箇所特定手段
212・・・メモリエラー管理テーブル更新手段
213・・・DRAMコピー指示手段
214・・・BIOS通知有効無効手段
215・・・SW通知有効無効手段
300・・・HW
310・・・CPU
320・・・メモリコントローラ
321・・・CE回数カウント機能
322・・・ECC訂正機能
323・・・DRAMコピー機能
324・・・BIOS通知機能
325・・・SW通知機能
330・・・DIMM
3311、3321・・・DRAM
400・・・コンピュータシステム
500・・・メモリエラー管理テーブル
501・・・CPUテーブル
502・・・メモリコントローラテーブル
503・・・チャネルテーブル
504・・・ランクテーブル

Claims (8)

  1. メモリコントローラと、
    ファームウェアと、
    ソフトウェアと、
    を含み、
    前記メモリコントローラは、
    メモリエラーの発生を検出すると、前記メモリエラーの発生を通知先の設定に基づいて、前記ファームウェアまたは前記ソフトウェアへ通知するエラー発生通知部、を有し、
    前記ファームウェアは、
    前記通知先を前記メモリコントローラへ設定する通知先設定部と、
    前記メモリコントローラから前記メモリエラーの発生の通知を受けると、前記メモリエラーが発生したメモリから予備メモリへの切り替えを指示する予備メモリ切替指示部と、を有し、
    前記ソフトウェアは、
    前記メモリコントローラから前記メモリエラーの発生の通知を受けると、前記メモリエラーが発生したメモリに対応するページを無効化する指示を行う無効化指示部、を有する、
    メモリ障害対処システム。
  2. 前記通知先設定部は、前記予備メモリへの切り替え前においては、前記通知先を前記ファームウェアに設定し、前記予備メモリへの切り替え後には、前記通知先を前記ソフトウェアに設定する、
    請求項1に記載のメモリ障害対処システム。
  3. 前記ファームウェアは、前記メモリコントローラが管理する全てのメモリについて、前記予備メモリへ切り替え済みか否かを示す情報を登録するメモリエラー管理テーブルを、前記ファームウェアから更新可能、且つ、前記ソフトウェアから参照可能に記憶する、
    請求項1または請求項2に記載のメモリ障害対処システム。
  4. 前記ファームウェアは、前記予備メモリへの切り替えを指示すると、前記メモリエラー管理テーブルにおける切り替え対象の前記メモリについて、前記予備メモリへ切り替え済みであること示す情報を登録する、
    請求項3に記載のメモリ障害対処システム。
  5. 前記ソフトウェアは、前記メモリエラー管理テーブルを参照して、前記メモリエラーが発生したメモリについて、前記切り替え済みであること示す情報が登録されている場合に限り、前記ページの無効化を指示する、
    請求項3または請求項4に記載のメモリ障害対処システム。
  6. 前記ソフトウェアは、前記メモリエラー管理テーブルに登録された前記メモリの位置に基づいて、その位置に対応する前記ページの無効化を指示する、
    請求項3から請求項5の何れか1項に記載のメモリ障害対処システム。
  7. 請求項1から請求項6の何れか1項に記載のメモリ障害対処システムを含む、
    情報処理装置。
  8. ファームウェアが、メモリエラーが発生した場合の通知先をメモリコントローラへ設定するステップと、
    前記メモリコントローラが、メモリエラーの発生を検出すると、前記通知先の設定に基づいて、前記メモリエラーの発生を前記ファームウェアまたはソフトウェアへ通知するステップと、
    前記ファームウェアが、前記メモリコントローラから前記メモリエラーの発生の通知を受け取った場合、前記メモリエラーが発生したメモリから予備メモリへの切り替えを指示するステップと、
    前記ソフトウェアが、前記メモリコントローラから前記メモリエラーの発生の通知を受け取った場合、前記メモリエラーが発生したメモリに対応するページを無効化する指示を行うステップと
    を有する、メモリ障害対処方法。
JP2019051453A 2019-03-19 2019-03-19 メモリ障害対処システム、情報処理装置及びメモリ障害対処方法 Active JP6679122B1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019051453A JP6679122B1 (ja) 2019-03-19 2019-03-19 メモリ障害対処システム、情報処理装置及びメモリ障害対処方法
US17/437,193 US11726888B2 (en) 2019-03-19 2020-03-16 Memory fault handling system, information processing device, and memory fault handling method
PCT/JP2020/011396 WO2020189617A1 (ja) 2019-03-19 2020-03-16 メモリ障害対処システム、情報処理装置及びメモリ障害対処方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019051453A JP6679122B1 (ja) 2019-03-19 2019-03-19 メモリ障害対処システム、情報処理装置及びメモリ障害対処方法

Publications (2)

Publication Number Publication Date
JP6679122B1 true JP6679122B1 (ja) 2020-04-15
JP2020154591A JP2020154591A (ja) 2020-09-24

Family

ID=70166575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019051453A Active JP6679122B1 (ja) 2019-03-19 2019-03-19 メモリ障害対処システム、情報処理装置及びメモリ障害対処方法

Country Status (3)

Country Link
US (1) US11726888B2 (ja)
JP (1) JP6679122B1 (ja)
WO (1) WO2020189617A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12019503B2 (en) 2022-05-18 2024-06-25 Samsung Electronics Co., Ltd. Systems and methods for expandable memory error handling

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11175409A (ja) 1997-12-05 1999-07-02 Nec Corp メモリ制御方式
JP2003303139A (ja) 2002-04-09 2003-10-24 Nec Corp 冗長メモリモジュールおよびメモリコントローラ
JPWO2008099786A1 (ja) 2007-02-13 2010-05-27 日本電気株式会社 メモリ障害復旧方法、情報処理装置およびプログラム
JP4877396B2 (ja) * 2010-01-20 2012-02-15 日本電気株式会社 メモリ障害処理システム、および、メモリ障害処理方法
TW201220186A (en) * 2010-11-04 2012-05-16 Inventec Corp Data protection method for damaged memory cells
EP3206127B1 (en) * 2013-11-22 2019-03-06 Huawei Technologies Co., Ltd. Method, computer, and apparatus for migrating memory data
US9299457B2 (en) 2014-02-23 2016-03-29 Qualcomm Incorporated Kernel masking of DRAM defects
US10824524B2 (en) * 2018-11-02 2020-11-03 Dell Products L.P. Systems and methods for providing continuous memory redundancy, availability, and serviceability using dynamic address space mirroring

Also Published As

Publication number Publication date
WO2020189617A1 (ja) 2020-09-24
US11726888B2 (en) 2023-08-15
JP2020154591A (ja) 2020-09-24
US20220171686A1 (en) 2022-06-02

Similar Documents

Publication Publication Date Title
CA1310430C (en) Hot standby memory copy system
JP6882662B2 (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US7734949B2 (en) Information error recovery apparatus and methods
US7321986B2 (en) Configuring cache memory from a storage controller
KR101615833B1 (ko) 데이터 신뢰성을 검출하기 위한 방법 및 장치
US20140310464A1 (en) Parallel destaging with replicated cache pinning
US20140189199A1 (en) False power failure alert impact mitigation
US11630731B2 (en) System and device for data recovery for ephemeral storage
US8321628B2 (en) Storage system, storage control device, and method
US20120226832A1 (en) Data transfer device, ft server and data transfer method
JP2012208896A (ja) ディスクアレイ装置、接続経路制御方法、及び接続経路制御プログラム
JP2006302288A (ja) コンピュータプロセッサ用の外部状態キャッシュ
JP2003345528A (ja) 記憶システム
JP5556192B2 (ja) ストレージシステム
CN110597779A (zh) 一种分布式文件系统中的数据读写方法及相关装置
JP6679122B1 (ja) メモリ障害対処システム、情報処理装置及びメモリ障害対処方法
JP6335336B2 (ja) ストレージシステムおよびその制御方法
JP4877396B2 (ja) メモリ障害処理システム、および、メモリ障害処理方法
JP2548475B2 (ja) アレイディスク装置のデータ復元量制御方法
JP2010191499A (ja) ストレージシステム
US20120210067A1 (en) Mirroring device and mirroring recovery method
JP7212510B2 (ja) 電源管理装置、電源管理方法、及び電源管理プログラム
JP2014026589A (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
JP5691227B2 (ja) ストレージ装置及びその制御方法
JP5251690B2 (ja) 遠隔コピーシステムおよび遠隔コピー方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190319

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200207

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: 20200218

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200312

R150 Certificate of patent or registration of utility model

Ref document number: 6679122

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150