(58)【調査した分野】(Int.Cl.,DB名)
前記制御手段は、前記メモリ特定手段が特定した物理アドレスの記憶素子の前記使用可否情報を、使用不可に更新することを特徴とする、請求項2に記載のメモリ管理装置。
【発明の概要】
【発明が解決しようとする課題】
【0007】
ミッションクリティカルな領域で運用されているハイエンドサーバでは、障害が発生した場合にシステムへの影響を最小限にとどめることが要求される。また、ハイエンドサーバにおいてシステムダウンを伴う障害の場合には、保守による故障部位の交換が必要となる場合がある。
【0008】
しかしながら、システムが基幹系システムなど場合、運用状態によっては、保守を行うことよりも、システムダウンからいち早く回復しなければならない場合がある。このため、障害発生後においても障害の影響を最小限にとどめ、安定してシステムを動作させることが求められる。
【0009】
特許文献1および2の技術では、運用中に障害が生じたブロック等を検出してデータの置換またはブロックの縮退運転を行っているが、システムダウンなどによりシステムが再起動した後では、障害が生じたメモリ自体を検出し、当該メモリを縮退して運転する場合がある。
【0010】
近年では、DIMM(Dual Inline Memory Module)などのメモリの容量は大容量化してきており、1枚で64GBの容量を持ったDIMMも存在する。このため、特許文献2の技術のようにメモリを縮退する運転をする場合、このようなDIMM1枚を縮退させることになる。しかしながら、DIMMの大容量化に伴い、DIMM1枚を縮退しただけで、システム全体の性能を低下させ、システムを安定して動作させることができなくなってしまう可能性がある。
【0011】
また、特許文献3の技術では、描画領域や表示領域など、特定の領域において、異常領域を除く領域に対して、描画領域の再割り当てを行っているが、物理的なメモリ(例えば、DIMMなど)の容量を効率的に利用する方法については開示されていない。
【0012】
本発明は、上記問題に鑑みてなされたものであり、その目的は、メモリ障害発生後の再起動後においても、物理的なメモリの使用を効率的に行うメモリ管理装置を提供することにある。
【課題を解決するための手段】
【0013】
本発明の一態様に係るメモリ管理装置は、複数の記憶素子を含むメモリモジュールと、前記メモリモジュールに含まれる複数の記憶素子の夫々を特定するための特定情報から当該特定情報によって特定される記憶素子に割り当てられた物理アドレスを特定するメモリ特定手段と、前記複数の記憶素子のうち、何れの物理アドレスの記憶素子を使用するのかを制御する制御手段と、を備え、前記メモリ特定手段は、前記複数の記憶素子の少なくとも何れかに障害が発生した際、障害が発生した前記記憶素子の特定情報を保持し、再起動後に、保持した特定情報から障害が発生した前記記憶素子の物理アドレスを特定し、前記制御手段は、前記複数の記憶素子のうち、前記メモリ特定手段が特定した物理アドレスの記憶素子以外の記憶素子を使用するよう制御する。
【0014】
本発明の一態様に係る制御方法は、複数の記憶素子を含むメモリモジュールを備えたメモリ管理装置の制御方法であって、前記複数の記憶素子の少なくとも何れかに障害が発生した際、障害が発生した前記記憶素子を特定するための特定情報を保持し、再起動後に、保持した特定情報から当該特定情報によって特定される記憶素子に割り当てられた物理アドレスであって、障害が発生した前記記憶素子の物理アドレスを特定し、前記複数の記憶素子のうち、前記特定した物理アドレスの記憶素子以外の記憶素子を使用するよう制御する。
【0015】
本発明の一態様に係るプログラムは、メモリモジュールに含まれる複数の記憶素子の少なくとも何れかに障害が発生した際、障害が発生した前記記憶素子を特定するための特定情報を保持し、再起動後に、保持した特定情報から当該特定情報によって特定される記憶素子に割り当てられた物理アドレスであって、障害が発生した前記記憶素子の物理アドレスを特定する処理と、前記複数の記憶素子のうち、前記特定した物理アドレスの記憶素子以外の記憶素子を使用するよう制御する処理と、をコンピュータに実行させる。
【発明の効果】
【0016】
本発明のメモリ管理装置によれば、メモリ障害発生後の再起動後においても、物理的なメモリの使用を効率的に行うことができる。
【発明を実施するための形態】
【0018】
<実施の形態>
本発明の実施の形態について、図面を参照して詳細に説明する。
【0019】
図1は、本発明の一実施の形態に係るメモリ管理装置の構成を示すブロック図である。
図1に示すように、本実施の形態に係るメモリ管理装置1は、CPU10と、複数のDIMM11〜18と、を備えている。なお、本実施の形態においてメモリモジュールとしてDIMMを採用して説明を行うが、本発明はこれに限定されるものではない。また、本実施の形態においては、DIMMが8つであることを例に説明を行うが、本発明はこれに限定されるものではない。
【0020】
CPU10は、メモリ管理装置1の全体を制御する。DIMM11〜18は、
図1に示すようにCPU10に接続されている。なお、
図1は、CPU10とDIMM11〜18との典型的な接続例を示している。
【0021】
DIMM11〜18の夫々には、6つの記憶素子(DRAM110〜115、120〜125、130〜135、140〜145、150〜155、160〜165、170〜175、180〜185)が含まれている。本実施の形態においては、記憶素子として、DRAM(Dynamic Random Access Memory)を採用して説明を行うが、本発明はこれに限定されるものではない。また、各DIMMに含まれるDRAMの数は6つに限定されるものではない。
【0022】
各DRAMには、物理アドレスが割り当てられている。なお、本実施の形態にて記述する物理アドレスとは、典型的なパーソナルコンピュータ等のハードウェアにおいて割り当てられる実メモリに対する物理アドレスであるとして説明を行う。
【0023】
次に、本実施の形態に係るメモリ管理装置1の機能構成について、
図2を参照して説明する。
図2は、本実施の形態に係るメモリ管理装置1の機能構成を示す機能ブロック図である。
【0024】
図2に示す通り、メモリ管理装置1は、メモリ特定部101と、メモリ制御部102と、を含んでいる。メモリ特定部101およびメモリ制御部102は、CPU10に実現される。また、
図2において、
図1のDIMM11〜18は、DIMM群として表している。
【0025】
メモリ特定部101は、DRAMの少なくとも何れかに障害が発生した際、障害が発生した(故障した)DRAM(故障DRAM)を特定し、特定した故障DRAMの位置情報を保持する。ここで、DRAMの位置情報とは、各DRAMを特定するための情報であり、例えば、故障DRAMがどのDIMMの何番目のDRAMかを示す情報(特定情報)のことである。なお、本実施の形態では、各DRAMの位置を特定する情報として、DRAM番号を採用して説明を行うが、本発明はこれに限定されるものではない。
【0026】
メモリ特定部101は、保持している故障DRAMの位置情報から当該故障DRAMの物理アドレスを特定し、メモリ制御部102に通知する。
【0027】
なお、メモリ特定部101の動作は、BMCFW(Baseboard Management Controller FirmWare)などの典型的なマネージメントファームウェアの障害特定機能であってもよい。
【0028】
メモリ制御部102は、複数のDRAMのうち、何れの物理アドレスのDRAMを使用するのかを制御する。つまり、メモリ制御部102は、メモリ特定部101から通知された、故障DRAMの物理アドレスに基づいて、当該物理アドレスによって特定されるDRAMをメモリ管理装置1から除外するよう制御する。具体的には、メモリ制御部102は、上記故障DRAMをメモリ管理装置1にて利用可能なDRAMでないと特定し、メモリ管理装置1のOSで利用可能なDRAMを使用して、メモリ管理装置1を起動する。
【0029】
なお、メモリ制御部102は、メモリ管理装置1のOSに含まれる機能であってもよい。
【0030】
図3は各DRAMのDRAM番号と、各DRAMに割り当てられている物理アドレスと、各DRAMがOSで利用可能か否かを示す情報の一例を示す図である。
【0031】
図3の一番右側の列は、各DRAMが、メモリ管理装置1のOSで利用可能か否かを表す情報(使用可否情報)を示している。
図3においては、各DRAMに対し、OSで利用可能である場合「○」を示し、利用可能でない場合「×」を示している。
図3に示す通り、各DRAMは、すべて、OS(Operation System)が利用可能であることがわかる。
【0032】
図3に示すように、DRAMを特定するDRAM番号に、DRAMの物理アドレスと、使用可否情報とが関連付けられている。
図3に示す情報は、図示しないメモリに記録されてもよいし、CPU10に内蔵されたメモリに記録されていてもよい。
【0033】
次に、メモリ管理装置1の動作について、
図4を参照して説明する。
図4は、メモリ障害が発生した際のメモリ管理装置1の処理の流れを示すフローチャートである。
図4の各処理は、CPU10のプログラム制御によって実行される。
【0034】
ここで、メモリ障害について説明する。本実施の形態で対象となるメモリ障害は、典型的なDIMMを利用して発生する可能性がある、DRAMのシングルビット(Single bit)エラー(継続運用可能障害)と、マルチビット(Multi bit)エラー(継続運用不可能障害)と、が挙げられる。
【0035】
本実施の形態におけるメモリ管理装置1は、上記メモリ障害が起こった際に、
図4に示す動作を行う。
図4において、ステップS1〜S7の夫々は、以下の説明では、単にS1〜S7の符号で表すものとする。
【0036】
図4に示す通り、障害が発生すると、まず、メモリ特定部101が、故障DRAMを特定する(S1)。そして、メモリ特定部101は、特定した故障DRAMの位置情報を図示しない不揮発性のメモリなどに保持する(S2)。
【0037】
その後、メモリ管理装置1がメモリ障害を含む、各種再起動要因(例えば、OSのアップデートや、その他の運用継続不可能障害発生など)で、再起動する(S3)と、メモリ特定部101は、
図3に示す情報を参照し、S2で保持した故障DRAMの位置情報から、当該故障DRAMの物理アドレスを特定する(S4)。
【0038】
メモリ特定部101は、S4で特定した故障DRAMの物理アドレスを、メモリ制御部102に通知する(S5)。そして、メモリ制御部102は、通知された物理アドレスを、メモリ管理装置1から除外し(S6)、現時点で使用可能なDRAMを使用して、メモリ管理装置1を起動する(S7)。
【0039】
ここで、
図1に示すDRAMのうち、DRAM113でマルチビットエラーが発生した場合を例に挙げ、メモリ管理装置1の動作についてさらに説明する。
【0040】
まずメモリ障害が発生すると、メモリ特定部101は、故障DIMM(本例では、DIMM11)と、故障DRAM(DRAM113)を特定する。そして、メモリ特定部101は、特定した故障DRAM(DRAM113)の位置情報(DRAM番号)を保持する。
【0041】
その後、DIMM11の故障により継続運用不可となった場合や、その他の要因(OS Update等)で、装置再起動が行われると、メモリ特定部101は、再起動時に、保持しておいた故障したDRAM113の位置から物理アドレス「0x00000003」を特定する。
【0042】
メモリ特定部101は、特定した物理アドレス「0x00000003」を、メモリ制御部102に通知する。そして、メモリ制御部102は、メモリ特定部101から通知された物理アドレス「0x00000003」をメモリ管理装置1から使用しないように制御する。つまり、メモリ制御部102は、物理アドレス「0x00000003」のDRAM113をメモリ管理装置1が使用するDRAMから除外する。
【0043】
そして、メモリ制御部102は、DRAM113に対し、メモリアクセスを行うことなく、メモリ管理装置1を起動する。
【0044】
これにより、メモリ管理装置1としては、DRAM113のみが縮退された状態で起動し、運用状態となることができる。
【0045】
この時の、各DRAMのDRAM番号と、各DRAMに割り当てられている物理アドレスと、各DRAMがOSで利用可能か否かを示す情報の一例を
図5に示す。
図5に示す通り、DRAM113の行における、OSが利用可能か否かを示す欄が「×」になっていることがわかる。
【0046】
このように、DRAM113のみ縮退しているため、OSは
図5に示す通り、故障したDRAM113分の物理アドレスだけが使用できないことになる。したがって、メモリ管理装置1のメモリ容量は、上記処理後の運用ではメモリ障害発生以前より、DRAM1個分減少している状態となる。
【0047】
<比較の形態>
次に、本発明の上記実施の形態と比較するための比較の形態について、説明する。比較の形態に係るメモリ管理装置2は、従来技術におけるメモリ管理装置2である。比較の形態に係るメモリ管理装置2のハードウェア構成は、
図1のメモリ管理装置1と同じであるため、説明を省略する。また、障害発生前のメモリ管理装置2の各DRAMに対する物理アドレスおよびOSが使用可能か否かを示す情報は、
図3と同じであるとする。
【0048】
比較の形態に係るメモリ管理装置2において、運用中にメモリ障害が発生した場合の動作について説明する。
【0049】
メモリ管理装置2で、例えば、シングルビットエラーが発生した場合、典型的なハイエンドサーバの機能である、予防縮退(システムダウンを引き起こすマルチビットエラーになる前に縮退させる)機能によって、縮退運転が行われる。ここで、予防縮退機能とは、例えば、ある一定期間にシングルビットエラーが多発した場合(例えば、同じDIMMから、24時間以内に20回以上のシングルビットエラーが発生したなど)に、DIMMを縮退予約としておき、次回再起動(他要因のエラーなど)で当該DIMMを縮退させるというような機能である。
【0050】
また、メモリ管理装置2で、例えば、マルチビットエラーが発生した場合、継続運用不可能であるため、例えば、システムダウンから再起動するなどした後に、DIMMの縮退運転を行う。
【0051】
比較の形態に係るメモリ管理装置2において、DIMM11のDRAM113でメモリ障害が発生した場合、ハイエンドサーバでは一般的なマネージメントファームウェア(BMCなど)の障害特定機能により、故障DIMM(DIMM11)が特定される。
【0052】
その後、DIMM11の故障により継続運用不可となった場合や、その他の要因(OS Update等)で、装置再起動が行われると、再起動時にマネージメントファームウェアにより自動的に故障したDIMM11が縮退される。そして故障したDIMM11が縮退した状態でメモリ管理装置2が起動し、運用状態となる。
【0053】
この時の、各DRAMに割り当てられている物理アドレスと、各DRAMがOSで利用可能か否かを示す情報の一例を
図6に示す。
図6に示す通り、DIMM11が縮退しているため、OSは、故障したDRAM113を含む、DRAM110、111、112、113、114および115の物理アドレスが使用できない。そのため、比較の形態に係るメモリ管理装置2において、障害発生後の運用では、メモリ障害発生以前よりメモリ容量がDIMM1枚分減少している状態となる。
【0054】
(メモリ管理装置1の効果)
以上に説明したように、本発明の実施の形態に係るメモリ管理装置1では、メモリ障害発生後の再起動後においても、物理的なメモリの使用を効率的に行うことができる。
【0055】
その理由は、メモリ特定部101が故障したDRAMの位置を特定し、保持しておき、当該故障したDRAMの物理アドレスを、メモリ制御部102に通知することにより、メモリ制御部102が当該物理アドレスにアクセスせずにメモリ管理装置1を起動させるためである。
【0056】
したがって、メモリ障害発生後のシステム再起動後であっても、DRAM単位での縮退が可能となる。これにより、メモリ縮退容量を最小限にとどめることができ、物理的なメモリの使用を効率的に行うことができる。また、メモリ管理装置1のOSから故障したDRAMへのアクセスも行われないことから、安定してシステムを動作させることができる。
【0057】
なお、
図3および5で示した、DRAMを特定するDRAM番号に、DRAMの物理アドレスと、使用可否情報とが関連付けられた情報は、図示しないメモリに記録されてもよいし、CPU10に内蔵されたメモリに記録されて管理されていてもよい。
【0058】
そして、メモリ制御部102は、複数のDIMMの少なくとも何れかに障害が発生した際、障害が発生したDIMMの使用可否情報を、使用不可に更新してもよい。また、メモリ制御部102は、使用可否情報を参照して、複数のDIMMのうち、メモリ管理装置1のOSで使用可能となっているDIMMを使用するよう制御してもよい。
【0059】
このような情報を用いた場合であっても、実施の形態に係るメモリ管理装置1は、メモリ障害発生後の再起動後においても、物理的なメモリの使用を効率的に行うことができる。
【0060】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。