説明

コンピュータ装置、メモリ診断方法、及びメモリ診断制御プログラム

【課題】複雑なメモリ診断プログラムであってもOS起動前にこれを正常に実行することができること。
【解決手段】メインメモリを有するコンピュータ装置であって、第1のメモリ診断プログラムを実行することにより、メインメモリの不良領域の特定を行う第1のメモリ診断手段と、再配置可能な第2のメモリ診断プログラムが記憶された記憶手段と、メインメモリのうち、第1のメモリ診断手段により特定された不良領域を除く領域に、記憶手段に記憶されている第2のメモリ診断プログラムを展開し、実行する第2のメモリ診断手段と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、コンピュータ装置、メモリ診断方法、及びメモリ診断制御プログラムに関し、特に、複雑なメモリ診断プログラムであってもOS起動前に正常に実行することのできるコンピュータ装置、メモリ診断方法、及びメモリ診断制御プログラムに関する。
【背景技術】
【0002】
従来より、コンピュータ装置では、内蔵された各デバイスの不良箇所を診断する種々の診断テストが行われている。このような診断テストを行うコンピュータ装置の一例として、特許文献1には、内蔵された各メモリにおけるメモリ機能が正常に機能するか否か(例えば、メモリに所定のデータが正常に読み書きできるか否か)を診断するメモリ診断テストを実行するものが開示されている。
【0003】
このメモリ診断テストの一番簡単なものとして、コンピュータ装置のBIOS(Basic Input/Output System)の一部にメモリ診断プログラムを予め記憶しておき、該コンピュータ装置の起動時に、BIOSと同時に上記メモリ診断プログラムを動作させるものがある。
【0004】
しかしながら、一般にBIOSは、容量が非常に小さく、この領域には、IPL(Initial Program Loader)などの他のプログラムも記憶されていることから、メモリ診断プログラムとして簡易なものしか記憶できない。このため、従来のコンピュータ装置では、複雑なメモリチェックを行うためのメモリ診断プログラムは、一般に、BIOSの動作後、OS(Operation System)を起動させた後に、OSによってRAM(Random Access Memory)等のメインメモリ上に展開され、実行されていた。
【0005】
ところで、従来のコンピュータ装置では、メインメモリ内の全てのアドレスに不良がない場合に初めて、その正常動作が可能であった。しかし、近年では、先にメモリチェックを行い、メインメモリの不良領域を利用しないようにすることにより、メインメモリ内に多少の不良領域があっても、正常動作するコンピュータ装置が、新たなコンピュータ装置として望まれてきている。
【0006】
【特許文献1】特開平6−4413号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
メインメモリ内に多少の不良領域があっても、コンピュータ装置を正常動作させるためには、OS起動前に、メインメモリ内の不良領域を検出しておく必要がある。
【0008】
しかしながら、上記したBIOSに記憶されているメモリ診断プログラムによる診断では、OSを正常動作できる程度のメモリ診断ができない。
【0009】
ここで、BIOS以外のROMなどの記憶手段に、従来、OSで処理していたような複雑なメモリ診断プログラムを記憶させておき、かつ、BIOSに、この複雑なメモリ診断プログラムをメインメモリ上の所定アドレスに展開させ、実行させるプログラムを記憶させておくことで、コンピュータ装置の起動時に複雑なメモリ診断プログラムを起動させることも考えられる。
【0010】
しかしながら、この構成では、メモリ診断前のメインメモリにメモリ診断プログラムを展開して実行することになる。即ち、メモリ診断プログラムを展開するメインメモリの領域が不良領域か否かが不明である状態で、メモリ診断プログラムをメインメモリに展開することになり、メモリ診断プログラム自体が実行できない可能性がある。
【0011】
開示の技術は、上述した従来技術による問題点を解消するためになされたものであり、複雑なメモリ診断プログラムであってもOS起動前にこれを正常に実行することのできるコンピュータ装置、メモリ診断方法、メモリ診断制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上述した課題を解決し、目的を達成するため、本願の開示するコンピュータ装置は、メインメモリの不良領域の特定を行う第1のメモリ診断手段と、再配置可能な第2のメモリ診断プログラムが記憶された記憶手段と、前記メインメモリのうち、前記第1のメモリ診断不良領域を除く領域に、前記記憶手段に記憶されている前記第2のメモリ診断プログラムを展開し、実行させる第2のメモリ診断手段と、を有する。
【発明の効果】
【0013】
この態様によれば、まずは、メインメモリを利用しないもしくはメインメモリ上での占有の少ない第1のメモリ診断プログラムを実行して、メインメモリの簡易な診断を行い、この診断結果を利用して、メインメモリに展開が必要で詳細なメモリ診断が行える第2のメモリ診断プログラムの配置場所を特定できるようになるので、第2のメモリ診断プログラムがメインメモリの不良領域に展開されるという可能性が低くなり、第2のメモリ診断プログラムが実行できないという事態を極力回避することができるようになる。
【発明を実施するための最良の形態】
【0014】
以下に添付図面を参照して、本願の開示するコンピュータ装置、メモリ診断方法、及びメモリ診断制御プログラムの好適な実施の形態を詳細に説明する。
【実施例】
【0015】
まず、本実施例に係るコンピュータ装置の概要について説明する。本実施例に係るコンピュータ装置は、メインメモリを有するコンピュータ装置であって、第1のメモリ診断プログラムを実行することにより、前記メインメモリの不良領域の特定を行う第1のメモリ診断手段と、再配置可能な第2のメモリ診断プログラムが記憶された記憶手段と、前記メインメモリのうち、前記第1のメモリ診断手段により特定された不良領域を除く領域に、前記記憶手段に記憶されている前記第2のメモリ診断プログラムを展開し、実行する第2のメモリ診断手段と、を有するものである。
【0016】
すなわち、本実施例に係るコンピュータ装置は、複数のメモリ診断プログラムを実行することにより、コンピュータ装置が有するDRAM(Dynamic Random Access Memory)等のメインメモリの診断を行う。
【0017】
具体的には、コンピュータ装置内部のROM(Read Only Memory)などの記憶手段に、互いに異なる複数のメモリ診断プログラムが予め記憶されており、第1のメモリ診断手段は、この複数のメモリ診断プログラムのうち、第1のメモリ診断プログラムを実行することにより、メインメモリを診断する。
【0018】
ここで、複数のメモリ診断プログラムは、それぞれ異なるメモリ機能の診断を行うものであり、そのメモリ機能の診断レベルに応じて、異なるプログラムサイズを有している。つまり、複数のメモリ診断プログラムのうち、より高度なメモリ機能の診断を行うものほど、そのプログラムサイズが大きくなっている。なお、第1のメモリ診断プログラムは、複数のメモリ診断プログラムのうち、メモリ機能の診断レベルの最も低く、そのプログラムサイズの最も小さいメモリ診断プログラムである。
【0019】
本実施例に係る第1のメモリ診断手段は、第1のメモリ診断プログラムを、メインメモリ上に展開することなく実行する。これにより、第1のメモリ診断手段によって、メインメモリを使用することなく、最初に簡易なメモリ機能の診断が行われ、その後、第2のメインメモリ診断手段によって徐々に高度なメモリ機能の診断が行われることになる。したがって、メインメモリに不良領域が存在しているか否かが不明な段階で、メモリ診断プログラムをメインメモリ上に展開することを回避することができるので、メモリ診断プログラムが実行不能となる事態を回避することができる。
【0020】
なお、メインメモリ上に展開したときの第1のメモリ診断プログラムのメインメモリ上における占有面積が比較的に小さい場合には、第1のメモリ診断手段が、第1のメインメモリ診断プログラムをメインメモリ上に展開するようにしても良い。
【0021】
そして、第2のメモリ診断手段は、メインメモリのうち、第1のメモリ診断手段により特定された不良領域を除く領域に、ROM等の記憶手段に記憶されている第2のメモリ診断プログラムを展開し、実行する。言い換えると、第2のメモリ診断手段は、第1のメモリ診断手段により特定された不良領域を、メインメモリのうち、第2のメモリ診断プログラムを展開する領域から除外するのである。なお、不良領域とは、メインメモリの全領域のうち、読み書き機能などのメモリ機能が正常に機能しない領域を言う。また、第2のメモリ診断プログラムは、複数のメモリ診断プログラムのうち、第1のメモリ診断プログラムよりもメモリ機能の診断レベルが高く、そのプログラムサイズが大きいメモリ診断プログラムである。
【0022】
このようにすることによって、本実施例に係るコンピュータ装置は、メインメモリのうち、不良領域に誤って第2のメモリ診断プログラムが展開され、第2のメモリ診断プログラムを正常に実行することができない事態を回避することができる。
【0023】
そして、第2のメモリ診断手段は、不良領域を除く領域の一部に展開した第2のメモリ診断プログラムを実行することにより、再びメインメモリを診断する。次いで、第2のメモリ診断手段は、第2のメモリ診断プログラムによるメインメモリの診断結果に基づいて、メインメモリの全領域のうち、以前特定された不良領域を除く領域から新たに不良領域を特定する。さらに、第2のメモリ診断手段は、以前特定された不良領域、及び新たに特定された不良領域を、共に不良領域として、次に実行されるメモリ診断プログラム(すなわち、第3のメモリ診断プログラム以降のメモリ診断プログラム)を展開する展開対象領域から除外する。これらの処理は、ROM等の記憶手段に記憶されている全てのメモリ診断プログラムの実行が終了するまで、繰り返し実行される。このため、複数のメモリ診断プログラムのうち、第2のメモリ診断プログラム以降のメモリ診断プログラムは、メインメモリのうち、不良領域を除く正常な領域に、常に展開されることになる。したがって、メモリ診断プログラムを正常に実行することが可能となる。
【0024】
このように、本実施例では、まずは、メインメモリを利用しないもしくはメインメモリ上での占有の少ない第1のメモリ診断プログラムを実行して、メインメモリの簡易な診断を行い、この診断結果を利用して、メインメモリに展開が必要で詳細なメモリ診断が行える第2のメモリ診断プログラムの配置場所を特定する。したがって、メインメモリのうち、メモリ機能の正常に機能しない不良領域に、第2のメモリ診断プログラム以降のメモリ診断プログラムが展開されるという可能性が低減し、第2のメモリ診断プログラム以降のメモリ診断プログラムが実行できないという事態を回避することができる。
【0025】
次に、図1を参照して、本実施例に係るコンピュータ装置の構成について説明する。図1は、本実施例に係るコンピュータ装置1の構成を示す機能ブロック図であり、図2は、図1に示すDRAMの詳細を示す説明図である。
【0026】
図1に示すように、コンピュータ装置1は、CPU(Central Processing Unit)10と、DRAM20と、ROM30と、表示コントローラ40と、それらを互いに接続するバス60と、を有する。
【0027】
CPU10は、コンピュータ装置1の全体を制御する制御部である。具体的には、CPU10は、コンピュータ装置1の起動時に、後述するBIOS(Basic Input Output System)プログラム31をROM30から読み出して実行し、DRAM20等の各種デバイスに異常がないかを検査する。また、CPU10は、BIOSプログラム31の実行により、OS(Operating System)の起動や各種デバイスの制御を実行する。
【0028】
DRAM20は、コンピュータ装置1のメインメモリ(主記憶装置)である。具体的には、DRAM20は、CPU10の実行対象となるプログラム(BIOSプログラム31を含む)が展開され、かかるプログラムによる各種データなどが一時的に格納されるワーキングメモリとして用いられる。また、DRAM20は、図2に示すように、CPU10の実行対象となるプログラムを展開するために、複数の領域(1)〜(20)に区分されているものとする。
【0029】
ROM30は、記憶手段として機能するものであり、CPU10が実行する各種プログラムやデータを記憶している。ROM30に記憶されているプログラムには、BIOSプログラム31、複数のメモリ診断プログラム32等が含まれている。
【0030】
BIOSプログラム31は、基本入出力プログラムのことである。具体的には、BIOSプログラム31は、コンピュータ装置1の電源投入時に起動して、OSやアプリケーションプログラムと、DRAM20や周辺機器(ディスプレイ、キーボード等)との間でのデータの入出力を制御する制御プログラムである。また、BIOSプログラム31は、DRAM20にデータが正常に読み書きできるか否か、メモリ保護機能、及びエラー訂正機能等の関連する機能が正常に動作するか否かなどを確認するメモリ診断処理を行う。なお、BIOSプログラム31がメモリ診断処理を行う具体的な構成については、別途詳細に説明する。
【0031】
複数のメモリ診断プログラム32は、BIOSプログラム31がDRAM20のメモリ診断処理を行う際に実行するものであり、DRAM20の種々のメモリ機能が正常に機能するか否か(例えば、メモリに所定のデータが正常に読み書きできるか否か)を診断するためのプログラム群である。本実施例では、3つメモリ診断プログラム32a、32b、32cにより構成されている。これらメモリ診断プログラム32a、32b、32cは、それぞれ異なるメモリ機能の診断を行うものであり、そのメモリ機能の診断のレベルに応じてプログラムサイズを異にしている。例えば、本実施例では、3つのメモリ診断プログラム32a、32b、32cのメモリ機能の診断レベルは、この順番で高くなっており、そのプログラムサイズは、この順番で大きくなっている。また、メモリ診断プログラム32aは、複数のメモリ診断プログラムのうち、メモリ機能の診断レベルの最も低く、そのプログラムサイズの最も小さいメモリ診断プログラムである。
【0032】
表示コントローラ40には、ディスプレイ50が接続されており、DRAM20のメモリ診断結果などの表示出力が表示コントローラ40から出力される。ディスプレイ50は、画像表示装置であって、表示コントローラ40からの表示出力を視認可能に表示する。
【0033】
次に、図3を参照して、図1に示すBIOSプログラム31がDRAM20のメモリ診断処理を行う具体的な構成について詳細に説明する。図3は、図1に示すBIOSプログラム31の詳細を示す機能ブロック図である。なお、図3では、ROM30に記憶されたBIOSプログラム31がCPU10によって実行されることにより実現される機能を機能ブロックとして示している。
【0034】
BIOSプログラム31は、メモリ診断部311と、メモリ品質評価表作成部312と、不良領域特定部313と、診断プログラム展開部314と、OS異常検知部315と、診断結果告知部316と、を機能部として有している。これら各機能部311〜316は、BIOSプログラム31の起動時(実行時)に実行状態となる。
【0035】
このBIOSプログラム31は、前述したように、コンピュータ装置1の起動時に最初に実行される。したがって、OS起動前に、DRAM20のメモリ診断処理を実行することとなるので、OSが起動しない場合であっても、メモリ診断プログラムを正常に実行することが可能となる。
【0036】
メモリ診断部311は、複数のメモリ診断プログラム32のうち、第1のメモリ診断プログラムであるメモリ診断プログラム32aを実行することにより、DRAM20を診断する。また、メモリ診断部311は、メモリ診断プログラム32aを、DRAM20上に展開することなく実行する。上述したように、メモリ診断プログラム32aは、複数のメモリ診断プログラムのうち、メモリ機能の診断レベルの最も低く、そのプログラムサイズの最も小さいメモリ診断プログラムである。ここでは、メモリ診断プログラム32aのプログラムサイズが、DRAM20上に展開する必要のない程度に小さく設定されている。これにより、DRAM20に不良領域が存在するか否かが不明である段階で、DRAM20にメモリ診断プログラムを展開することを回避することができる。
【0037】
メモリ品質評価表作成部312は、メモリ診断部311による診断結果と、DRAM20のアドレス情報とを関連付けたメモリ品質評価表を作成する。なお、メモリ品質評価表については、後にメモリ診断処理の手順を説明する際に、別途詳細に説明する。
【0038】
不良領域特定部313は、メモリ診断部311による診断結果に基づいて、DRAM20内の不良領域を特定する。具体的には、不良領域特定部313は、メモリ品質評価表作成部312により作成されたメモリ品質評価表を参照することによって、メモリ診断部311により異常であると診断されたDRAM20のアドレス情報を抽出し、この抽出したアドレス情報に従って、DRAM20内の不良領域を特定する。このとき、メモリ診断部311及び不良領域特定部313は、第1のメモリ診断プログラム32aを実行することにより、メインメモリであるDRAM20の不良領域の特定を行う第1のメモリ診断手段として機能する。
【0039】
診断プログラム展開部314は、DRAM20の全領域(1)〜(20)のうち、不良領域特定部313により特定された不良領域を除く領域に、ROM30に記憶されている第2のメモリ診断プログラムであるメモリ診断プログラム32bを展開する。具体的には、診断プログラム展開部314は、メモリ品質評価表作成部312により作成されたメモリ品質評価表を参照することによって、メモリ診断部311により異常であると診断されたDRAM20のアドレス情報を抽出し、当該抽出したアドレス情報に対応する領域を、不良領域として、DRAM20のうち、メモリ診断プログラム32bを展開する領域(メモリ診断プログラム32bの展開対象領域)から除外する。言い換えると、診断プログラム展開部314は、DRAM20の全領域(1)〜(20)のうち、不良領域特定部313により特定された不良領域を除く領域の一部を、第2のメモリ診断プログラム32bの展開対象領域として設定する。
【0040】
そして、メモリ診断部311は、診断プログラム展開部314により展開されたメモリ診断プログラム32bを実行することにより、DRAM20の全領域(1)〜(20)のうち、不良領域特定部313により特定された不良領域を除く領域を新たに診断する。このとき、診断プログラム展開部314及びメモリ診断部311は、DRAM20のうち、不良領域特定部313により特定された不良領域を除く領域に、ROM30に記憶されている第2のメモリ診断プログラム32bを展開し、実行する第2のメモリ診断手段として機能する。
【0041】
次いで、不良領域特定部313は、メモリ診断部311による新たな診断結果に基づいて、DRAM20の全領域(1)〜(20)のうち、不良領域特定部313により以前特定された不良領域を除く領域から新たに不良領域を特定する。診断プログラム展開部314は、不良領域特定部313により以前特定された不良領域、及び新たに特定された不良領域を、共に不良領域として、メモリ診断部311によって次に実行されるメモリ診断プログラム32cを展開する展開対象領域から除外する。
【0042】
これら各機能部311〜314の処理は、メモリ診断部311によって全てのメモリ診断プログラム32(32a〜32c)が実行されるまで、繰り返し実行される。このため、メモリ診断プログラム32は、DRAM20のうち、不良領域を除く正常な領域に、常に展開されることになる。したがって、メモリ診断プログラムを正常に実行することが可能となる。
【0043】
OS異常検知部315は、OSの起動異常を検知する。OSの起動異常としては、例えば、コンピュータ装置1が停止しキーボードやマウスの入力を受け付けなくなる状態(いわゆる、ハングアップ)や、OS自体の処理が継続不可能になる状態(いわゆる、青画面、黒画面)等が含まれる。このOS異常検知部315は、例えば、正常時のコンピュータ装置1の起動時間を予め測定し、タイムアウト時間を決めてROM30内の所定領域に記憶しておき、OSがタイムアウト時を経過した後もなおハングアップ、青画面、黒画面の状態にある場合に、OSの起動異常を検知するようにしている。
【0044】
診断結果告知部316は、OS異常検知部315がOSの起動異常を検知した場合に、メモリ診断部311によるDRAM20のメモリ診断結果を告知する診断結果告知手段として、メモリ診断部311によるDRAM20のメモリ診断結果を表示コントローラ40へ表示出力する。このとき、診断結果告知部316は、メモリ品質評価表作成部312により作成されたメモリ品質評価表を、メモリ診断部311によるDRAM20のメモリ診断結果として表示出力するようにしている。
【0045】
次に、図4−1〜図4−3を参照して、図1に示すBIOSプログラム31がDRAM20のメモリ診断処理を行う処理手順について具体的に説明する。図4−1〜図4−3は、図1に示すBIOSプログラム31がDRAM20のメモリ診断処理を行う処理手順を示す説明図である。また、図4−1、図4−2では、メモリ診断プログラム32a、32bを実行した後にメモリ品質評価表作成部312により作成されたメモリ品質評価表を上方にそれぞれ示し、診断プログラム展開部314により設定された、次のメモリ診断プログラム32b、32cの展開対象領域を下方にそれぞれ示している。また、図4−3では、メモリ診断プログラム32cを実行した後にメモリ品質評価表作成部312により作成されたメモリ品質評価表を上方に示し、DRAM20の最終的なメモリ診断結果を下方に示している。
【0046】
まず、図4−1の上方に示すように、メモリ診断部311によってメモリ診断プログラム32aが実行されると、メモリ品質評価表作成部312によって、メモリ診断部311による診断結果と、DRAM20のアドレス情報とを関連付けたメモリ品質評価表が作成される。このとき、メモリ診断プログラム32aは、DRAM20上に展開されることなくメモリ診断部311によって実行される。メモリ品質評価表作成部312により作成されたメモリ品質評価表では、DRAM20の全領域のうち、メモリ診断部311によって正常であると診断された領域のアドレスに、DRAM20のメモリ診断結果として「1」が設定され、メモリ診断部311によって異常であると診断された領域のアドレスに、DRAM20のメモリ診断結果として「0」が設定される。図4−1では、メモリ診断結果「0」の設定された領域(3)及び領域(19)が異常であると診断されている。
【0047】
続いて、図4−1の下方に示すように、不良領域特定部313によって、図4−1の上方に示すメモリ品質評価表が参照され、DRAM20内の不良領域が特定される。図4−1では、DRAM20の全領域(1)〜(20)のうち、異常であると診断された領域(3)及び(19)が、不良領域として特定される。
【0048】
続いて、図4−1の下方に示すように、診断プログラム展開部314によって、DRAM20の全領域うち、不良領域特定部313により特定された不良領域を除く領域の一部が、メモリ診断部311によって次に実行されるメモリ診断プログラム32bを展開する展開対象領域として設定される。図4−1では、DRAM20の全領域(1)〜(20)のうち、不良領域(3)及び(19)を除く領域の一部が、次のメモリ診断プログラム32bの展開対象領域として設定されている。
【0049】
続いて、メモリ診断部311によってメモリ診断プログラム32bが実行されると、DRAM20の全領域(1)〜(20)のうち、不良領域(3)及び(19)を除く領域が新たに診断される。
【0050】
続いて、図4−2の上方に示すように、メモリ品質評価表作成部312によって、メモリ診断部311による新たな診断結果を用いてメモリ品質評価表が更新される。すなわち、このメモリ品質評価表では、DRAM20の全領域のうち、メモリ診断部311によって正常であると新たに診断された領域のアドレスに、メモリ診断結果として「2」が新たに設定され、メモリ診断部311によって異常であると診断された領域のアドレスに、メモリ診断結果として「1」の設定が維持される。図4−2では、メモリ診断結果「1」の設定された領域(5)及び(20)が異常であると新たに診断されている。
【0051】
続いて、図4−2の下方に示すように、不良領域特定部313によって、図4−2の上方に示すメモリ品質評価表が参照され、DRAM20の全領域(1)〜(20)のうち、不良領域(3)及び(19)を除く領域から新たな不良領域が特定される。図4−2では、DRAM20の全領域(1)〜(20)のうち、不良領域(3)及び(19)を除く領域から、新たに異常であると診断された領域(5)及び(20)が、不良領域として新たに特定される。
【0052】
続いて、図4−2の下方に示すように、診断プログラム展開部314によって、DRAM20の全領域うち、不良領域特定部313により特定された不良領域を除く領域の一部が、メモリ診断部311によって次に実行されるメモリ診断プログラム32cを展開する展開対象領域として新たに設定される。図4−2では、DRAM20の全領域(1)〜(20)のうち、不良領域(3)、(5)、(19)、及び(20)を除く領域の一部が、メモリ診断プログラム32cの展開対象領域として新たに設定されている。
【0053】
続いて、メモリ診断部311によってメモリ診断プログラム32cが実行されると、DRAM20の全領域(1)〜(20)のうち、不良領域(3)、(5)、(19)、及び(20)を除く領域が新たに診断される。
【0054】
続いて、図4−3の上方に示すように、メモリ品質評価表作成部312によって、メモリ診断部311による新たな診断結果を用いてメモリ品質評価表が更新される。すなわち、このメモリ品質評価表では、DRAM20の全領域のうち、メモリ診断部311によって正常であると新たに診断された領域のアドレスに、メモリ診断結果として「3」が新たに設定され、メモリ診断部311によって異常であると診断された領域のアドレスに、メモリ診断結果として「2」の設定が維持される。図4−3では、メモリ診断結果「2」の設定された領域(4)が異常であると新たに診断されている。
【0055】
以上のような処理を行うことにより、図4−3の下方に示すように、BIOSプログラム31により実行されるメモリ診断処理による最終的なメモリ診断結果が得られる。
【0056】
次に、図5を参照して、図1に示すコンピュータ装置1のメモリ診断処理について説明する。図5は、図1に示すコンピュータ装置1のメモリ診断処理を示すフローチャートである。なお、図5に示すメモリ診断処理は、コンピュータ装置1の電源が投入された後、CPU10が、BIOSプログラム31をROM30から読み出して実行することにより、実行される処理である。
【0057】
図5に示すように、まず、BIOSプログラム31のメモリ診断部311は、複数のメモリ診断プログラム32のうち、1のメモリ診断プログラム32aを実行し(ステップS10)、DRAM20の全領域を、1つの領域ごとに診断する(ステップS11)。このとき、メモリ診断部311は、メモリ診断プログラム32aを、DRAM20上に展開することなく実行する。そして、メモリ診断部311は、メモリ診断結果と、DRAM20のアドレス情報とを関連付けてDRAM20の各領域に記憶する(ステップS12)。
【0058】
続いて、メモリ診断部311は、DRAM20の全領域に、未診断の領域が有るか否かを判定する(ステップS13)。この判定は、DRAM20の各領域のアドレス情報に、メモリ診断結果が関連付けられているか否かを判定することにより行われる。そして、DRAM20の全領域に、未診断の領域が有ると判定すると(ステップS13:Yes)、メモリ診断部311は、DRAM20の全領域に、未診断の領域が無くなるまで、ステップS11〜ステップS13の処理を繰り返す。
【0059】
一方、DRAM20の全領域に、未診断の領域が無いと判定すると(ステップS13:No)、メモリ診断部311は、メモリ品質評価表作成部312にメモリ品質評価表を作成するよう要求する。この要求を受け付けると、メモリ品質評価表作成部312は、メモリ診断部311によるメモリ診断結果と、DRAM20のアドレス情報とを関連付けたメモリ品質評価表を作成し(ステップS14)、作成したメモリ品質評価表を不良領域特定部313へ送信する。
【0060】
そして、不良領域特定部313は、受信したメモリ品質評価表を参照することによって、メモリ診断部311により異常であると診断されたDRAM20のアドレス情報を抽出し、この抽出したアドレス情報に従って、DRAM20内の不良領域を特定する(ステップS15)。
【0061】
そして、診断プログラム展開部314は、DRAM20の全領域のうち、ステップS15にて不良領域特定部313により特定された不良領域以外の領域の一部を、展開対象領域として設定し(ステップS16)、その展開対象領域に次のメモリ診断プログラム32bを展開する(ステップS17)。
【0062】
続いて、メモリ診断部311は、展開されたメモリ診断プログラム32bを実行することにより、DRAM20の全領域のうち、不良領域以外の領域を、1つの領域ごとに診断する(ステップS18)。そして、メモリ診断部311は、メモリ診断結果と、DRAM20のアドレス情報とを関連付けてDRAM20の各領域に記憶する(ステップS19)。
【0063】
そして、メモリ診断部311は、DRAM20の全領域のうち、不良領域以外の領域に、未診断の領域があるか否かを判定する(ステップS20)。そして、DRAM20の全領域に、未診断の領域が有ると判定すると(ステップS20:Yes)、メモリ診断部311は、DRAM20の全領域のうち、不良領域以外の領域に、未診断の領域が無くなるまで、ステップS18〜ステップS20の処理を繰り返す。
【0064】
一方、DRAM20の全領域のうち、不良領域以外の領域に、未診断の領域が無いと判定すると(ステップS20:No)、メモリ診断部311は、メモリ品質評価表作成部312にメモリ品質評価表を更新するよう要求する。この要求を受け付けると、メモリ品質評価表作成部312は、メモリ品質評価表を更新する(ステップS21)。
【0065】
その後、メモリ診断部311は、全てのメモリ診断プログラム32a〜32cを実行したか否かを判定する(ステップS22)。そして、全てのメモリ診断プログラム31a〜31cを実行していないと判定すると(ステップS22:No)、処理をステップS15に戻す。そして、全てのメモリ診断プログラム31a〜31cを実行し終えるまで、ステップS15〜ステップS22の処理が繰り返される。
【0066】
一方、全てのメモリ診断プログラム31a〜31cを実行したと判定すると(ステップS22:Yes)、メモリ診断部311は、処理をステップS23へ移す。
【0067】
ステップS23において、OS異常検知部315は、OSの起動異常が有るか否かを検知する。この検知の結果、OSの起動異常を検知すると(ステップS23:Yes)、OS異常検知部315は、その検知信号を診断結果告知部316へ送信する。OS異常検知部315からの検知信号を受信すると、診断結果告知部316は、ステップS21においてメモリ品質評価表作成部312によって更新されたメモリ品質評価表を、DRAM20のメモリ診断結果として、表示コントローラ40へ表示出力する。その後、メモリ品質評価表は、ディスプレイ50に表示され(ステップS24)、メモリ診断処理が終了する。一方、OSの起動異常がないと検知すると(ステップS23:No)、OS異常検知部315は、メモリ診断処理を終了する。
【0068】
上述してきたように、本実施例では、メモリ診断部311は、第1のメモリ診断プログラムであるメモリ診断プログラム32aを実行することにより、DRAM20を診断し、不良領域特定部313は、メモリ診断部311による診断結果に基づいて、DRAM20内の不良領域を特定し、これらメモリ診断部311及び不良領域特定部313は、第1のメモリ診断手段として機能する。また、診断プログラム展開部314は、DRAM20のうち、不良領域を除く領域の一部に、メモリ診断部311により次に実行されるメモリ診断プログラム32bを展開し、メモリ診断部311は、診断プログラム展開部314により展開されたメモリ診断プログラム32bを実行することにより、DRAM20のうち、不良領域特定部313により特定された不良領域を除く領域を新たに診断し、これら診断プログラム展開部314及びメモリ診断部311は、第2のメモリ診断手段として機能する。したがって、メインメモリのうち、メモリ機能の正常に機能しない不良領域に、メモリ診断プログラムを展開することを回避して、メモリ診断プログラムの正常な実行が不能になるという事態を回避することができる。
【0069】
また、メモリ診断部311は、第1のメモリ診断手段として機能することで、メモリ診断プログラム32aを、DRAM20上に展開することなく実行する。したがって、メインメモリに不良領域が存在しているか否かが不明な段階で、メモリ診断プログラムをメインメモリ上に展開することを回避することができるので、メモリ診断プログラムが実行不能となる事態をより確実に回避することができる。
【0070】
また、メモリ品質評価表作成部312は、メモリ診断部311による診断結果と、DRAM20のアドレス情報とを関連付けたメモリ品質評価表を作成することとしたので、DRAM20の全領域のうち、不良領域と不良領域以外の領域との区別を容易化することができ、メモリ診断処理を高効率化することができる。
【0071】
また、不良領域特定部313は、第2のメモリ診断手段として機能することで、メモリ診断部311により異常であると診断されたDRAM20のアドレス情報を抽出し、当該抽出したアドレス情報に対応する領域を、不良領域として、DRAM20のうち、第2のメモリ診断プログラム32bを展開する領域から除外することとした。したがって、DRAM20の全領域のうち、不良領域と不良領域以外の領域との区別を容易化することによって、不良領域の特定を容易化することができ、メモリ診断処理を高効率化することができる。
【0072】
また、OS異常検知部315は、OSの起動異常を検知し、診断結果告知部316は、OS異常検知部315がOSの起動異常を検知した場合に、メモリ診断部311による診断結果を告知することとしたので、ユーザは、メモリ診断部311による診断結果を確認することで、DRAM20内の不良領域を即座に知ることができ、その不良領域を交換する等の適切な対処をとることができる。
【0073】
また、各機能部311〜316は、電源の投入時に起動して、DRAM20に対するデータの入出力を制御するBIOSプログラム31内に組み込まれており、当該BIOSプログラム31の起動時に実行状態となることとしたので、OS起動前に、DRAM20のメモリ診断処理を実行することができ、OSが起動しない場合であっても、メモリ診断プログラムを正常に実行することが可能となる。
【0074】
これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、上記特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施例にて実施されてもよいものである。
【0075】
例えば、本実施例では、第1のメモリ診断プログラムが、第1のメモリ診断手段によってメインメモリ上に展開されることなく実行される構成としたが、これに限らず、メインメモリ上に展開した時の占有面積が比較的に小さい第1のメモリ診断プログラムが、第1のメモリ診断手段によりメインメモリ上に展開されて実行されることにより、メインメモリの簡易な診断が最初に実行されるように構成しても良い。この場合、第1のメモリ診断手段による診断結果を利用して、メインメモリ上に展開した時の占有面積がより大きい第2、第3のメモリ診断プログラムが第2、第3のメモリ診断手段によりメインメモリ上に順次展開されて実行される。これにより、徐々に高度なメモリ機能の診断が行われる。
【0076】
また、本実施例では、メインメモリであるDRAMの診断を行うメモリ診断処理について説明したが、これに限らず、CPU内部に設けられ、高速な読み書きの可能なメモリであるキャッシュメモリの診断を行うメモリ診断処理について適用することができる。
【0077】
また、本実施例のBIOSプログラム31やメモリ診断プログラム32は、必ずしもROM30に記憶されている必要はなく、例えば、フラッシュメモリ等の書き換え可能な不揮発性のメモリに記憶しておき、このプログラムを、CPU10が読み出して実行するようにしてもよい。また、本実施例のBIOSプログラム31やメモリ診断プログラム32は、例えば、ネットワークに接続されたサーバ等からフラッシュメモリにダウンロードされるようにしてもよく、さらには、CD−ROM等の記録媒体に記録されてから記録媒体のドライブを介して、フラッシュメモリに読み込まれるようにしてもよい。
【0078】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0079】
(付記1)メインメモリを有するコンピュータ装置であって、
第1のメモリ診断プログラムを実行することにより、前記メインメモリの不良領域の特定を行う第1のメモリ診断手段と、
再配置可能な第2のメモリ診断プログラムが記憶された記憶手段と、
前記メインメモリのうち、前記第1のメモリ診断手段により特定された不良領域を除く領域に、前記記憶手段に記憶されている前記第2のメモリ診断プログラムを展開し、実行する第2のメモリ診断手段と、
を有することを特徴とするコンピュータ装置。
【0080】
(付記2)前記第1のメモリ診断手段は、前記第1のメモリ診断プログラムを、前記メインメモリ上に展開することなく実行することを特徴とする付記1に記載のコンピュータ装置。
【0081】
(付記3)前記第1のメモリ診断手段による前記メインメモリの診断結果と、前記メインメモリのアドレス情報とを関連付けたメモリ品質評価表を作成するメモリ品質評価表作成手段を有することを特徴とする付記1又は2に記載のコンピュータ装置。
【0082】
(付記4)前記第2のメモリ診断手段は、前記メモリ品質評価表を参照することによって、前記第1のメモリ診断手段により異常であると診断された前記メインメモリのアドレス情報を抽出し、当該抽出したアドレス情報に対応する領域を、前記不良領域として、前記メインメモリのうち、前記第2のメモリ診断プログラムを展開する領域から除外することを特徴とする付記3に記載のコンピュータ装置。
【0083】
(付記5)OSの起動異常を検知するOS異常検知手段と、
前記OS異常検知手段が前記起動異常を検知した場合に、前記第2のメモリ診断手段による前記メインメモリの診断結果を告知する診断結果告知手段と、
を有することを特徴とする付記1〜4のいずれか1つに記載のコンピュータ装置。
【0084】
(付記6)前記各手段は、電源の投入時に起動して、前記メインメモリに対するデータの入出力を制御する制御プログラムである基本入出力プログラム内に組み込まれており、当該基本入出力プログラムの起動時に実行状態となることを特徴とする付記1〜5のいずれか1つに記載のコンピュータ装置。
【0085】
(付記7)コンピュータ装置のメインメモリの診断を行うメモリ診断方法であって、
第1のメモリ診断プログラムを実行することにより、前記メインメモリの不良領域の特定を行う第1のメモリ診断ステップと、
前記メインメモリのうち、前記第1のメモリ診断ステップにより特定された不良領域を除く領域に、第2のメモリ診断プログラムを展開し、実行する第2のメモリ診断ステップと、
を有することを特徴とするメモリ診断方法。
【0086】
(付記8)前記第1のメモリ診断ステップにおいて、前記第1のメモリ診断プログラムを、前記メインメモリ上に展開することなく実行することを特徴とする付記7に記載のメモリ診断方法。
【0087】
(付記9)前記第1のメモリ診断ステップによる前記メインメモリの診断結果と、前記メインメモリのアドレス情報とを関連付けたメモリ品質評価表を作成するメモリ品質評価表作成ステップを有することを特徴とする付記7又は8に記載のメモリ診断方法。
【0088】
(付記10)前記第2のメモリ診断ステップにおいて、前記メモリ品質評価表を参照することによって、前記第1のメモリ診断ステップにより異常であると診断された前記メインメモリのアドレス情報を抽出し、当該抽出したアドレス情報に対応する領域を、前記不良領域として、前記メインメモリのうち、前記第2のメモリ診断プログラムを展開する領域から除外することを特徴とする付記9に記載のメモリ診断方法。
【0089】
(付記11)OSの起動異常を検知するOS異常検知ステップと、
前記OS異常検知ステップにて前記起動異常を検知した場合に、前記第2のメモリ診断ステップによる前記メインメモリの診断結果を告知する診断結果告知ステップと、
を有することを特徴とする付記7〜10のいずれか1つに記載のメモリ診断方法。
【0090】
(付記12)前記各ステップは、電源の投入時に起動して、前記メインメモリに対するデータの入出力を制御する制御プログラムである基本入出力プログラム内に組み込まれており、当該基本入出力プログラムの起動時に実行状態となることを特徴とする付記7〜11のいずれか1つに記載のメモリ診断方法。
【0091】
(付記13)コンピュータ装置のメインメモリの診断を行うメモリ診断制御プログラムであって、
第1のメモリ診断プログラムを実行することにより、前記メインメモリの不良領域の特定を行う第1のメモリ診断手順と、
前記メインメモリのうち、前記第1のメモリ診断手順により特定された不良領域を除く領域に、第2のメモリ診断プログラムを展開し、実行する第2のメモリ診断手順と、
をコンピュータに実行させることを特徴とするメモリ診断制御プログラム。
【0092】
(付記14)前記第1のメモリ診断手順において、前記第1のメモリ診断プログラムを、前記メインメモリ上に展開することなく実行する処理を、コンピュータに実行させることを特徴とする付記13に記載のメモリ診断制御プログラム。
【0093】
(付記15)前記第1のメモリ診断手順による前記メインメモリの診断結果と、前記メインメモリのアドレス情報とを関連付けたメモリ品質評価表を作成するメモリ品質評価表作成手順を、コンピュータに実行させることを特徴とする付記13又は14に記載のメモリ診断制御プログラム。
【0094】
(付記16)前記第2のメモリ診断手順において、前記メモリ品質評価表を参照することによって、前記第1のメモリ診断ステップにより異常であると診断された前記メインメモリのアドレス情報を抽出し、当該抽出したアドレス情報に対応する領域を、前記不良領域として、前記メインメモリのうち、前記第2のメモリ診断プログラムを展開する領域から除外する処理を、コンピュータに実行させることを特徴とする付記15に記載のメモリ診断制御プログラム。
【0095】
(付記17)OSの起動異常を検知するOS異常検知手順と、
前記起動異常を検知した場合に、前記第2のメモリ診断手順による前記メインメモリの診断結果を告知する診断結果告知手順と、
を、コンピュータに実行させることを特徴とする付記13〜16のいずれか1つに記載のメモリ診断制御プログラム。
【0096】
(付記18)前記各手順は、電源の投入時に起動して、前記メインメモリに対するデータの入出力を制御する制御プログラムである基本入出力プログラム内に組み込まれており、当該基本入出力プログラムの起動時に実行状態となることを特徴とする付記13〜17のいずれか1つに記載のメモリ診断制御プログラム。
【図面の簡単な説明】
【0097】
【図1】本実施例に係るコンピュータ装置の構成を示す機能ブロック図である。
【図2】図1に示すDRAMの詳細を示す説明図である。
【図3】図1に示すBIOSプログラムの詳細を示す機能ブロック図である。
【図4−1】図1に示すBIOSプログラムがDRAMのメモリ診断処理を行う処理手順を示す説明図である。
【図4−2】図1に示すBIOSプログラムがDRAMのメモリ診断処理を行う処理手順を示す説明図である。
【図4−3】図1に示すBIOSプログラムがDRAMのメモリ診断処理を行う処理手順を示す説明図である。
【図5】本実施形態に係るコンピュータ装置のメモリ診断処理の処理手順を示すフローチャートである。
【符号の説明】
【0098】
1 コンピュータ装置
20 メインメモリ(DRAM)
31 基本入出力プログラム(BIOSプログラム)
32 メモリ診断プログラム
32a、32b、32c メモリ診断プログラム
311 メモリ診断部
312 メモリ品質評価表作成部
313 不良領域特定部
314 診断プログラム展開部
315 OS異常検知部
316 診断結果告知部

【特許請求の範囲】
【請求項1】
メインメモリを有するコンピュータ装置であって、
第1のメモリ診断プログラムを実行することにより、前記メインメモリの不良領域の特定を行う第1のメモリ診断手段と、
再配置可能な第2のメモリ診断プログラムが記憶された記憶手段と、
前記メインメモリのうち、前記第1のメモリ診断手段により特定された不良領域を除く領域に、前記記憶手段に記憶されている前記第2のメモリ診断プログラムを展開し、実行する第2のメモリ診断手段と、
を有することを特徴とするコンピュータ装置。
【請求項2】
前記第1のメモリ診断手段は、前記第1のメモリ診断プログラムを、前記メインメモリ上に展開することなく実行することを特徴とする請求項1に記載のコンピュータ装置。
【請求項3】
前記第1のメモリ診断手段による前記メインメモリの診断結果と、前記メインメモリのアドレス情報とを関連付けたメモリ品質評価表を作成するメモリ品質評価表作成手段を有することを特徴とする請求項1又は2に記載のコンピュータ装置。
【請求項4】
前記第2のメモリ診断手段は、前記メモリ品質評価表を参照することによって、前記第1のメモリ診断手段により異常であると診断された前記メインメモリのアドレス情報を抽出し、当該抽出したアドレス情報に対応する領域を、前記不良領域として、前記メインメモリのうち、前記第2のメモリ診断プログラムを展開する領域から除外することを特徴とする請求項3に記載のコンピュータ装置。
【請求項5】
OSの起動異常を検知するOS異常検知手段と、
前記OS異常検知手段が前記起動異常を検知した場合に、前記第2のメモリ診断手段による前記メインメモリの診断結果を告知する診断結果告知手段と、
を有することを特徴とする請求項1〜4のいずれか1つに記載のコンピュータ装置。
【請求項6】
前記各手段は、電源の投入時に起動して、前記メインメモリに対するデータの入出力を制御する制御プログラムである基本入出力プログラム内に組み込まれており、当該基本入出力プログラムの起動時に実行状態となることを特徴とする請求項1〜5のいずれか1つに記載のコンピュータ装置。
【請求項7】
コンピュータ装置のメインメモリの診断を行うメモリ診断方法であって、
第1のメモリ診断プログラムを実行することにより、前記メインメモリの不良領域の特定を行う第1のメモリ診断ステップと、
前記メインメモリのうち、前記第1のメモリ診断ステップにより特定された不良領域を除く領域に、第2のメモリ診断プログラムを展開し、実行する第2のメモリ診断ステップと、
を有することを特徴とするメモリ診断方法。
【請求項8】
前記第1のメモリ診断ステップにおいて、前記第1のメモリ診断プログラムを、前記メインメモリ上に展開することなく実行することを特徴とする請求項7に記載のメモリ診断方法。
【請求項9】
コンピュータ装置のメインメモリの診断を行うメモリ診断制御プログラムであって、
第1のメモリ診断プログラムを実行することにより、前記メインメモリの不良領域の特定を行う第1のメモリ診断手順と、
前記メインメモリのうち、前記第1のメモリ診断手順により特定された不良領域を除く領域に、第2のメモリ診断プログラムを展開し、実行する第2のメモリ診断手順と、
をコンピュータに実行させることを特徴とするメモリ診断制御プログラム。
【請求項10】
前記第1のメモリ診断手順において、前記第1のメモリ診断プログラムを、前記メインメモリ上に展開することなく実行する処理を、コンピュータに実行させることを特徴とする請求項9に記載のメモリ診断制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4−1】
image rotate

【図4−2】
image rotate

【図4−3】
image rotate

【図5】
image rotate