(57)【要約】【課題】ＤＲＡＭの故障診断に要する時間を短縮する。【解決手段】コンピュータの起動時にＤＲＡＭの故障診断を行うにあたり、まずＤＲＡＭのリフレッシュを停止させ(52)、ＤＲＡＭの未診断の単位メモリ領域（アクセス単位と同サイズのメモリ領域）に診断用データを書き込むことをｉmax回繰り返し(58〜62)た後に、診断用データを書き込んだ単位メモリ領域からデータを読み出して故障を診断することをｉmax回繰り返す(66〜74)。ｉmaxは書き込んだ診断用データが揮発する前に読み出されるように設定されており、上記処理をｊmax回繰り返す(78)ことで、ＤＲＡＭの全メモリ領域の故障診断を行った後にＤＲＡＭのリフレッシュを再開させる(80)。【選択図】図４
2007242127.tif 000002
【特許請求の範囲】
【請求項１】
診断対象のＤＲＡＭに対するリフレッシュを停止させた状態で、前記診断対象のＤＲＡＭのうちの未診断メモリ領域に診断用データを書き込み、前記診断用データを書き込んだ未診断メモリ領域からデータを読み出し、読み出したデータを前記診断用データと比較して前記未診断メモリ領域の故障を診断する診断処理を、前記診断対象のＤＲＡＭの全メモリ領域のサイズよりも小さい所定サイズを単位として繰り返す診断手段を含むＤＲＡＭ診断装置。
【請求項２】
前記所定サイズは、前記診断処理において、未診断メモリ領域に前記診断用データを書き込んでから、前記未診断メモリ領域からデータを読み出す迄の経過時間が、前記診断対象のＤＲＡＭにおけるデータ保持期間以下となるサイズに設定されていることを特徴とする請求項１記載のＤＲＡＭ診断装置。
【請求項３】
前記診断対象のＤＲＡＭはＣＰＵを備えた電子機器の主記憶装置として使用されるメモリであり、前記診断手段は、前記電子機器の起動時に前記診断対象のＤＲＡＭの全メモリ領域に対して前記診断処理を行うことを特徴とする請求項１記載のＤＲＡＭ診断装置。
【請求項４】
前記診断手段は、前記ＤＲＡＭのデータ保持期間の測定が指示された場合に、前記ＤＲＡＭに対するリフレッシュを停止させた状態で、前記ＤＲＡＭの所定サイズのメモリ領域に診断用データを書き込み、前記診断用データを書き込んだ前記所定サイズのメモリ領域からデータを読み出し、読み出したデータが前記診断用データと一致しているか否かを判断することを、前記所定サイズを変化させながら繰り返し、前記読み出したデータが前記診断用データと一致する前記メモリ領域の最大サイズを検知することで、前記ＤＲＡＭのデータ保持期間の測定を行うことを特徴とする請求項１記載のＤＲＡＭ診断装置。
【請求項５】
診断対象のＤＲＡＭに対するリフレッシュを停止させた状態で、
前記診断対象のＤＲＡＭのうちの未診断メモリ領域に診断用データを書き込み、前記診断用データを書き込んだ未診断メモリ領域からデータを読み出し、読み出したデータを前記診断用データと比較して前記未診断メモリ領域の故障を診断する診断処理を、前記診断対象のＤＲＡＭの全メモリ領域のサイズよりも小さい所定サイズを単位として繰り返すＤＲＡＭ診断方法。
【請求項６】
ＤＲＡＭを備えたコンピュータを、
診断対象のＤＲＡＭに対するリフレッシュを停止させた状態で、前記診断対象のＤＲＡＭのうちの未診断メモリ領域に診断用データを書き込み、前記診断用データを書き込んだ未診断メモリ領域からデータを読み出し、読み出したデータを前記診断用データと比較して前記未診断メモリ領域の故障を診断する診断処理を、前記診断対象のＤＲＡＭの全メモリ領域のサイズよりも小さい所定サイズを単位として繰り返す診断手段
として機能させるＤＲＡＭ診断プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＤＲＡＭ診断装置、方法及びプログラムに係り、特に、ＤＲＡＭの故障を診断するＤＲＡＭ診断装置、該ＤＲＡＭ診断装置に適用可能なＤＲＡＭ診断方法、及び、コンピュータを前記ＤＲＡＭ診断装置として機能させるためのＤＲＡＭ診断プログラムに関する。
【背景技術】
【０００２】
ＲＡＭ(Randam Access read write Memory)の一種であるＤＲＡＭ(Dynamic ＲＡＭ)はＳＲＡＭ(Static ＲＡＭ)と比較して動作速度は遅いものの、安価でかつ高い集積度が得られるので、大きな記憶容量が必要とされるコンピュータ等の電子機器の主記憶装置として広範に用いられている。但し、ＤＲＡＭは、書き込まれたデータを保持するために外部からの読み出し／書き込みのアクセスと非同期かつ定期的にリフレッシュを行う必要があり、ＤＲＡＭのリフレッシュ中は外部からのアクセスが待たされるので、ＤＲＡＭのリフレッシュに要する時間がアクセス時間に対するオーバヘッドとなり、アクセス時間が長時間化するという問題がある。特に、ＣＰＵを備えると共に主記憶装置としてＤＲＡＭが設けられた電子機器では、起動時に主記憶装置としてのＤＲＡＭに対して故障診断が行われることが一般的であるが、コンピュータ等の電子機器の主記憶装置の大容量化に伴ってＤＲＡＭの故障診断に要する時間も長時間化しており、ＤＲＡＭの故障診断に要する時間が電子機器の起動時間の短縮を阻害する要因として大きなウエイトを占めるようになってきている。
【０００３】
上記に関連して特許文献１には、装置を起動する主電源と、装置内の揮発性メモリのリフレッシュに使用される副電源を設け、主電源オン時に主電源及び副電源が共に切断状態となっていた場合には、メモリ診断処理を行った後にメモリ初期化処理を行う一方、主電源オン時に副電源が共に切断状態となっていなかった場合には、メモリ診断処理の実行を省略して直ちにメモリ初期化処理を行うことで、装置の起動時間の短縮を図る技術が開示されている。
【特許文献１】特開平９−２５９０４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の技術は、副電源が切断状態となっていなかった場合には、定期的にＤＲＡＭのリフレッシュが行われていたためにＤＲＡＭに書き込まれたデータが保持されていることを利用し、メモリ診断処理の実行を省略して装置の起動時間を短縮する技術であり、メモリ診断処理の処理時間自体は短縮されない。このため、特許文献１に記載の技術は、主電源が切断されてもＤＲＡＭへのリフレッシュを継続可能な特殊な構成の機器以外には有効ではなく、ＤＲＡＭの故障診断に要する時間の短縮には何ら寄与しないという欠点がある。
【０００５】
本発明は上記事実を考慮して成されたもので、ＤＲＡＭの故障診断に要する時間を短縮できるＤＲＡＭ診断装置、ＤＲＡＭ診断方法及びＤＲＡＭ診断プログラムを得ることが目的である。
【課題を解決するための手段】
【０００６】
一般に、ＤＲＡＭに対する故障診断は、診断対象のＤＲＡＭ（例えば電子機器等に搭載されているＤＲＡＭ）の全メモリ領域に所定の診断用データを順次書き込んだ後に、診断対象のＤＲＡＭの全メモリ領域からデータを順次読み出しながら、読み出したデータを書き込んだ診断用データと順次比較することにより行われる。しかし、この故障診断のシーケンスでは、診断対象のＤＲＡＭのサイズが増大するに伴って、診断対象のＤＲＡＭの個々のメモリ領域について、テストデータを書き込んでからデータを読み出す迄の経過時間が長くなるので、該経過時間が、ＤＲＡＭに書き込んだデータが揮発することなく保持されていることを保証できるデータ保持期間よりも長くなることで、故障診断の途中でＤＲＡＭの各メモリ領域に対してリフレッシュを行う必要が生じ、この故障診断の途中でのＤＲＡＭに対するリフレッシュが、故障診断に要する時間の長時間化の一因となっている。
【０００７】
上記に基づき請求項１記載の発明に係るＤＲＡＭ診断装置は、診断対象のＤＲＡＭに対するリフレッシュを停止させた状態で、前記診断対象のＤＲＡＭのうちの未診断メモリ領域に診断用データを書き込み、前記診断用データを書き込んだ未診断メモリ領域からデータを読み出し、読み出したデータを前記診断用データと比較して前記未診断メモリ領域の故障を診断する診断処理を、前記診断対象のＤＲＡＭの全メモリ領域のサイズよりも小さい所定サイズを単位として繰り返す診断手段を含んで構成されている。
【０００８】
請求項１記載の発明では、診断対象のＤＲＡＭのうちの未診断メモリ領域に診断用データを書き込み、診断用データを書き込んだ未診断メモリ領域からデータを読み出し、読み出したデータを診断用データと比較して前記未診断メモリ領域の故障を診断する診断処理を、診断対象のＤＲＡＭの全メモリ領域のサイズよりも小さい所定サイズを単位として繰り返している。このように、診断対象のＤＲＡＭの全メモリ領域のサイズよりも小さい所定サイズを単位として上記の診断処理を行うことで、診断対象のＤＲＡＭの個々のメモリ領域について、診断用データを書き込んでからデータを読み出す迄の経過時間を短くすることができる。
【０００９】
そして、例えば請求項２に記載したように、所定サイズを、上記の診断処理において、未診断メモリ領域に診断用データを書き込んでから、未診断メモリ領域からデータを読み出す迄の経過時間が、診断対象のＤＲＡＭにおけるデータ保持期間以下となるサイズに設定することで、診断処理時に読み出したデータが、ＤＲＡＭからのデータの揮発による変化が生じていないデータであることが保証される。これを利用して請求項１記載の発明では、診断対象のＤＲＡＭに対するリフレッシュを停止させた状態で上記の診断処理を行うので、ＤＲＡＭに対する故障診断の途中でＤＲＡＭに対するリフレッシュが行われないことで、ＤＲＡＭの故障診断に要する時間を短縮することができる。また、ＤＲＡＭに対する故障診断の途中でＤＲＡＭに対するリフレッシュが行われないことで、ＤＲＡＭの故障診断時の消費電力も低減することができる。
【００１０】
なお、請求項１記載の発明において、診断対象のＤＲＡＭは、例えば請求項３に記載したように、ＣＰＵを備えた電子機器（例えばコンピュータ、或いはコンピュータを内蔵した画像形成装置等）の主記憶装置として使用されるメモリであってもよく、この場合、診断手段は、電子機器の起動時に診断対象のＤＲＡＭの全メモリ領域に対して診断処理を行うように構成することができる。これにより、電子機器の起動時に行われるＤＲＡＭの故障診断に要する時間を短縮できることで、電子機器の起動に要する時間も短縮することができる。
【００１１】
また、請求項１記載の発明において、診断手段は、例えば請求項４に記載したように、ＤＲＡＭのデータ保持期間の測定が指示された場合に、ＤＲＡＭに対するリフレッシュを停止させた状態で、ＤＲＡＭの所定サイズのメモリ領域に診断用データを書き込み、診断用データを書き込んだ所定サイズのメモリ領域からデータを読み出し、読み出したデータが診断用データと一致しているか否かを判断することを、所定サイズを変化させながら繰り返し、読み出したデータが診断用データと一致するメモリ領域の最大サイズを検知することで、ＤＲＡＭのデータ保持期間の測定を行うように構成してもよい。これにより、ＤＲＡＭの定格のデータ保持期間に対する実際のデータ保持期間の長短を確認することも可能となる。
【００１２】
請求項５記載の発明に係るＤＲＡＭ診断方法は、診断対象のＤＲＡＭに対するリフレッシュを停止させた状態で、前記診断対象のＤＲＡＭのうちの未診断メモリ領域に診断用データを書き込み、前記診断用データを書き込んだ未診断メモリ領域からデータを読み出し、読み出したデータを前記診断用データと比較して前記未診断メモリ領域の故障を診断する診断処理を、前記診断対象のＤＲＡＭの全メモリ領域のサイズよりも小さい所定サイズを単位として繰り返すので、請求項１記載の発明と同様に、ＤＲＡＭの故障診断に要する時間を短縮することができる。
【００１３】
請求項６記載の発明に係るＤＲＡＭ診断プログラムは、ＤＲＡＭを備えたコンピュータを、診断対象のＤＲＡＭに対するリフレッシュを停止させた状態で、前記診断対象のＤＲＡＭのうちの未診断メモリ領域に診断用データを書き込み、前記診断用データを書き込んだ未診断メモリ領域からデータを読み出し、読み出したデータを前記診断用データと比較して前記未診断メモリ領域の故障を診断する診断処理を、前記診断対象のＤＲＡＭの全メモリ領域のサイズよりも小さい所定サイズを単位として繰り返す診断手段として機能させる。
【００１４】
請求項６記載の発明に係るＤＲＡＭ診断プログラムは、ＤＲＡＭを備えたコンピュータを上記の診断手段として機能させるためのプログラムであるので、上記のコンピュータが請求項６記載の発明に係るＤＲＡＭ診断プログラムを実行することにより、上記のコンピュータが請求項１に記載のＤＲＡＭ診断装置として機能することになり、請求項１記載の発明と同様に、ＤＲＡＭの故障診断に要する時間を短縮することができる。
【発明の効果】
【００１５】
以上説明したように本発明は、診断対象のＤＲＡＭに対するリフレッシュを停止させた状態で、診断対象のＤＲＡＭのうちの未診断メモリ領域に診断用データを書き込み、診断用データを書き込んだ未診断メモリ領域からデータを読み出し、読み出したデータを診断用データと比較して未診断メモリ領域の故障を診断する診断処理を、診断対象のＤＲＡＭの全メモリ領域のサイズよりも小さい所定サイズを単位として繰り返すようにしたので、ＤＲＡＭの故障診断に要する時間を短縮できる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図１には本実施形態に係るコンピュータ１０の主要部が示されている。なお、コンピュータ１０はＰＣ(Personal Computer)等の独立したコンピュータであってもよいし、画像形成装置（例えば複写機、プリンタ、ファクシミリ装置、これらの機能を兼ね備えた複合機の何れか）に組み込まれたコンピュータであってもよい。
【００１７】
コンピュータ１０はＣＰＵ１２を備えており、ＣＰＵ１２はデータバスやアドレスバス、コントロールバス等を含んで構成されたバス１４に接続されている。バス１４にはＨＤＤ(Hard Disk Drive)或いはフラッシュメモリ等から成る不揮発性記憶部１６と周辺デバイス１８が接続されている。不揮発性記憶部１６には、ＣＰＵ１２が後述する装置起動処理を行うための装置起動プログラムと、ＣＰＵ１２が後述するデータ保持期間計測処理を行うためのデータ保持期間計測プログラムが予め記憶されている。このうち装置起動プログラムは請求項６に記載のＤＲＡＭ診断プログラムに対応している。また、周辺デバイス１８としては、各種のシステムデバイス、或いは、ＲＳ２３２ＣやＵＳＢ(Universal Serial Bus)等のプロトコルに従って外部デバイスとシリアル通信を行うコントローラ等が挙げられる。
【００１８】
また、コンピュータ１０には主記憶装置としてのＤＲＡＭ２０が設けられている。図示は省略するが、ＤＲＡＭ２０は、多数個のＤＲＡＭセルがマトリクス状に配列され縦横の信号線（ワード線及びビット線）と各々接続されて構成されたＤＲＡＭアレイと、該ＤＲＡＭアレイに設けられた信号線を駆動するドライバやセンスアンプ、ロウ／カラムアドレスデコーダ、バッファ等の周辺回路を含んで構成されている。なお、ＤＲＡＭ２０としては、ＤＲＡＭアレイと周辺回路が一体化されたメモリチップが複数設けられ、アクセス単位が複数バイト（例えば８バイト＝64ビット）とされたモジュール構成が望ましい。また、ＤＲＡＭ２０としては各種のＤＲＡＭ、例えばＳＤＲＡＭ(Synchronous  HYPERLINK "http://yougo.ascii24.com/gh/01/000111.html" DRAM)、ＤＤＲ  ＳＤＲＡＭ(Double Data Rate SDRAM)、ＲＤＲＡＭ(Rambus DRAM)の何れも適用可能である。
【００１９】
またＤＲＡＭ２０は、ＤＲＡＭ２０の動作を制御するメモリコントローラ２２を介してバス１４に接続されている。図２に示すように、メモリコントローラ２２はシーケンサ２４、リフレッシュ・カウンタ２６、アドレス生成部２８及びデータラッチ部３０を含んで構成されている。アドレス生成部２８はバス１４のうちのアドレスバスを介して入力されたアドレス（ＣＰＵアドレス：書込アドレス又は読出アドレス）を、カラム・アドレスとロウ・アドレスに分割し、メモリアドレス（書込アドレス又は読出アドレス）としてＤＲＡＭ２０へ入力する。またデータラッチ部３０は、ＤＲＡＭ２０へのデータの書込時には、バス１４のうちのデータバスを介して入力された書込データ（ＣＰＵデータ）をラッチし、メモリデータとしてＤＲＡＭ２０へ入力する。また、ＤＲＡＭ２０からのデータの読出時には、ＤＲＡＭ２０から入力された読出データ（メモリデータ）をラッチし、ＣＰＵデータとしてデータバスへ出力する。
【００２０】
リフレッシュ・カウンタ２６はＣＰＵ１２からリフレッシュ・イネーブル信号が入力されている間作動し、前回リフレッシュを行ってからの経過時間をカウントすると共に、カウントしている経過時間が予め定められたリフレッシュ周期に達すると、シーケンサ２４へリフレッシュ要求信号を出力し、シーケンサ２４からリフレッシュ完了応答が入力されると、保持している経過時間をリセットする。また、シーケンサ２４には、ＣＰＵ１２からＤＲＡＭ２０からのデータの読み出し又はＤＲＡＭ２０へのデータの書き込みを要求するリードライト要求信号等の信号が入力される。シーケンサ２４は、ＤＲＡＭ２０の現在の状態を表す状態情報を保持すると共に、ＣＰＵ１２やリフレッシュ・カウンタ２６から信号が入力される毎に、入力された信号と保持しているＤＲＡＭ２０の現在の状態に応じて、ＤＲＡＭ２０へ出力するＲＡＳ(Row Address Strobe)，ＣＡＳ(Column Address Strobe)，ＷＥ(Write Enable)から成るメモリ制御信号を切り替えて各種のコマンドを入力することでＤＲＡＭ２０の動作を制御し（ＤＲＡＭ２０の状態を遷移させ）、保持している状態情報を更新すると共に、状態情報をアドレス生成部２８及びデータラッチ部３０へ出力する処理を行う。
【００２１】
ＤＲＡＭ２０の状態はシーケンサ２４によって図３に示すように遷移する。すなわち、図３における"INIT"はＤＲＡＭ２０がアイドル状態であることを表しており、シーケンサ２４は、ＣＰＵ１２からリードライト要求信号が入力されてＤＲＡＭ２０からのデータの読み出し又はＤＲＡＭ２０へのデータの書き込みが要求され、かつ保持している状態情報が表すＤＲＡＭ２０の状態が"INIT"である場合に、メモリ制御信号を切り替えてアクティブ・コマンドを入力することでＤＲＡＭ２０をロウ・アクティブ状態（"ACT"：メモリコントローラ２２のアドレス生成部２８から入力されるロウ・アドレスがラッチされ、かつリード動作やライト動作が行われていない状態）へ遷移させると共に、保持している状態情報を"ACT"へ更新する。
【００２２】
ＣＰＵ１２からリードライト要求信号が、ＤＲＡＭ２０へのデータの書き込みを要求する信号であった場合、シーケンサ２４は、次にメモリ制御信号を切り替えてライト・コマンドを入力することでＤＲＡＭ２０をライト状態（"WRITE")へ遷移させると共に、保持している状態情報を"WRITE"へ更新する。これにより、ＤＲＡＭ２０は、まずメモリコントローラ２２のアドレス生成部２８から入力されるカラム・アドレスをラッチすると共に、メモリコントローラ２２のデータラッチ部３０から入力される書込データをラッチし、ＤＲＡＭアレイ上の各メモリ領域のうち、ラッチしたロウ／カラム・アドレスによって特定される書込対象のメモリ領域にラッチした書込データを書き込むライト動作を行う。
【００２３】
また、ＣＰＵ１２からリードライト要求信号が、ＤＲＡＭ２０からのデータの読み出しを要求する信号であった場合、シーケンサ２４は、次にメモリ制御信号を切り替えてリード・コマンドを入力することでＤＲＡＭ２０をリード状態（"READ")へ遷移させると共に、保持している状態情報を"READ"へ更新する。これにより、ＤＲＡＭ２０は、まずメモリコントローラ２２のアドレス生成部２８から入力されるカラム・アドレスをラッチし、ＤＲＡＭアレイ上の各メモリ領域のうち、ラッチしたロウ／カラム・アドレスによって特定される読出対象のメモリ領域からデータを読み出し、読み出したデータをメモリコントローラ２２のデータラッチ部３０へ出力（転送）するリード動作を行う。
【００２４】
ＤＲＡＭ２０におけるライト動作又はリード動作が完了すると、シーケンサ２４は、メモリ制御信号を切り替えてプリチャージ・コマンドを入力することでＤＲＡＭ２０をプリチャージ状態（"PreCHG"：ＤＲＡＭアレイに設けられた信号線（ビット線）のプリチャージを行う状態)へ遷移させると共に、保持している状態情報を"PreCHG"へ更新し、ＤＲＡＭ２０におけるプリチャージ完了後に状態情報を更に"INIT"へ更新する。
【００２５】
またシーケンサ２４は、リフレッシュ・カウンタ２６からリフレッシュ要求信号が入力され、かつ保持している状態情報が表すＤＲＡＭ２０の状態が"INIT"である場合に、メモリ制御信号を切り替えてリフレッシュ・コマンドを入力することでＤＲＡＭ２０をリフレッシュ状態（"Refresh")へ遷移させると共に、保持している状態情報を"Refresh"へ更新する。ＤＲＡＭ２０のメモリ領域は複数の単位ブロックに分割されており（個々の単位ブロックはロウ・アドレスが同一のメモリ領域で構成されている）、ＤＲＡＭ２０は前回リフレッシュを行った単位ブロック（ロウアドレスが同一のメモリ領域）のロウ・アドレスをリフレッシュ・アドレスとして保持し、リフレッシュ・コマンドが入力されると、次の単位ブロックに対してリフレッシュを行うと共に、保持しているリフレッシュ・アドレスを更新する。そしてシーケンサ２４は、ＤＲＡＭ２０におけるリフレッシュ完了後に状態情報を"INIT"へ更新すると共に、リフレッシュ・カウンタ２６へリフレッシュ完了応答を出力する。
【００２６】
このように、ＤＲＡＭ２０に対するリフレッシュは単位ブロック毎に順に行われるので、リフレッシュ・カウンタ２６は、リフレッシュ周期として、ＤＲＡＭ２０のデータ保持期間（ＤＲＡＭ２０に書き込んだデータが揮発することなく保持されていることを保証できる期間）を、ＤＲＡＭ２０に設けられている単位ブロックの数（ロウ・アドレスの数）で除した時間を計時し、前回リフレッシュを行ってからリフレッシュ周期が到来する毎にリフレッシュ要求信号を出力する。なおシーケンサ２４は、状態情報がＤＲＡＭ２０の状態が"Refresh"のときにＣＰＵ１２からリードライト要求信号が入力された場合はＣＰＵ１２へビジー信号を出力する。このように、ＤＲＡＭ２０のリフレッシュが開始されるとリードライト要求信号によるＤＲＡＭ２０のアクセスは受付されず、ＤＲＡＭ２０のリフレッシュが完了して状態情報が"INIT"へ戻る迄の間はＤＲＡＭ２０をアクセスできない状態が継続される。
【００２７】
次に本実施形態の作用として、コンピュータ１０の起動時にＣＰＵ１２が装置起動プログラムを実行することで実現される装置起動処理について、図４のフローチャートを参照して説明する。この装置起動処理では、まずステップ５０で周辺デバイス１８の故障の有無を診断する周辺デバイス故障診断処理を行う。また、次のステップ５２〜ステップ８０ではＤＲＡＭ２０の故障診断を行う。なお、ステップ５２〜ステップ８０におけるＤＲＡＭ２０の故障診断は本発明に係る診断手段に相当する処理であり、当該処理を行うＣＰＵ１２は本発明に係る診断手段として機能する。
【００２８】
すなわち、ステップ５２ではリフレッシュ・カウンタ２６へのリフレッシュ・イネーブル信号の出力を停止することで、リフレッシュ・カウンタ２６の動作を停止させる。これにより、リフレッシュ・カウンタ２６からシーケンサ２４へのリフレッシュ要求信号の入力も停止されるので、ＤＲＡＭ２０のリフレッシュが停止（ディスエーブル）される。ステップ５４ではカウンタｊを０に初期設定し、次のステップ５６ではカウンタｉを０に初期設定する。ステップ５８では、ＤＲＡＭ２０のメモリ領域のうち未診断の単位メモリ領域（アクセス単位と同サイズのメモリ領域）のアドレスをメモリコントローラ２２のアドレス生成部２８へ出力すると共に、所定の診断用データをメモリコントローラ２２のデータラッチ部３０へ出力し、更に、ＤＲＡＭ２０へのデータの書き込みを要求するリードライト要求信号をメモリコントローラ２２のシーケンサ２４へ出力することで、ＤＲＡＭ２０の前記未診断の単位メモリ領域に所定の診断用データを書き込ませる。
【００２９】
ステップ６０ではカウンタｉを１だけインクリメントし、次のステップ６２では、インクリメント後のカウンタｉが所定値ｉmaxに一致しているか否か判定する。なお、本実施形態において、所定値ｉmaxは、ステップ５６から後述するステップ７４が肯定される迄の処理（ＤＲＡＭ２０の複数の単位メモリ領域に所定の診断用データを順次書き込んだ後に、所定の診断用データを書き込んだ複数の単位メモリ領域からデータを順次読み出して故障の有無を診断する処理）に要する時間がリフレッシュ周期内に収まるように予め設定されている。ステップ６２の判定が否定された場合はステップ５８へ戻り、ステップ６２の判定が肯定される迄ステップ５８〜ステップ６２を繰り返す。これにより、ＤＲＡＭ２０のメモリ領域のうちｉmax個の未診断の単位メモリ領域に所定の診断用データが各々書き込まれることになる。なお、図４に示す装置起動処理では、単位メモリ領域のサイズに所定値ｉmaxを乗じたサイズが本発明における所定サイズに対応している。
【００３０】
ステップ６２の判定が肯定されるとステップ６４へ移行してカウンタｉを０に戻す。ステップ６６では、ＤＲＡＭ２０のメモリ領域のうち、今回の周期で診断用データを書き込んだ単位メモリ領域のアドレスをメモリコントローラ２２のアドレス生成部２８へ出力すると共に、ＤＲＡＭ２０からのデータの読み出しを要求するリードライト要求信号をメモリコントローラ２２のシーケンサ２４へ出力することで、ＤＲＡＭ２０の前記単位メモリ領域に記憶されているデータを読み出させ、前記単位メモリ領域から読み出されてメモリコントローラ２２のデータラッチ部３０から出力された読出データを取得する。ステップ６８では、ステップ６６で取得した読出データを所定の診断用データと比較し、次のステップ７０では読出データが所定の診断用データに一致しているか否かを判定することで、今回データを読み出した単位メモリ領域が正常か（故障が生じていないか）否か判定する。
【００３１】
ステップ７０の判定が肯定された場合はステップ７２でカウンタｉを１だけインクリメントし、次のステップ７４では、インクリメント後のカウンタｉが所定値ｉmaxに一致しているか否か判定する。判定が否定された場合はステップ６６へ戻り、ステップ７４の判定が肯定される迄ステップ６６〜ステップ７４を繰り返す。これにより、ＤＲＡＭ２０のメモリ領域のうち、先のステップ５８〜ステップ６２のループで所定の診断用データが各々書き込まれたｉmax個の単位メモリ領域からデータが順次読み出されると共に、読み出されたデータが所定の診断用データと各々比較されることで、ｉmax個の単位メモリ領域の故障の有無が順次診断されることになる。
【００３２】
本実施形態に係る装置起動処理では、ステップ５２でリフレッシュ・カウンタ２６の作動を停止させるので、ＤＲＡＭ２０の故障診断中にはＤＲＡＭ２０のリフレッシュは行われないが、本実施形態では、前述のようにステップ５６〜ステップ７４が肯定される迄の処理（ＤＲＡＭ２０のｉmax個の単位メモリ領域に所定の診断用データを順次書き込んだ後に、所定の診断用データを書き込んだｉmax個の単位メモリ領域からデータを順次読み出して故障の有無を診断する処理：本発明における診断処理に相当する処理）に要する時間がリフレッシュ周期内に収まるように所定値ｉmaxが設定されているので、ステップ６６〜ステップ７４のループでｉmax個の単位メモリ領域から各々読み出されたデータが、ステップ５８〜ステップ６２のループでｉmax個の単位メモリ領域に各々書き込まれた所定の診断用データに対し、ＤＲＡＭ２０からのデータの揮発による変化が生じていないデータであることが保証される。
【００３３】
従って、ステップ７０の判定が否定された場合は判定対象の単位メモリ領域に故障が生じていると判断することができ、この場合はステップ８６へ移行し、ＤＲＡＭ２０の故障を通知するメッセージを図示しないディスプレイに表示させたり、図示しないブザーを鳴動させる等のエラー処理を行って装置起動処理を終了する。
【００３４】
一方、ステップ６６〜ステップ７４のループにおいて、ステップ７０の判定が毎回肯定された場合は、所定の診断用データを書き込んだｉmax個の単位メモリ領域の何れにも故障は生じていないと判断できるので、ステップ７４の判定が肯定されるとステップ７６へ移行してカウンタｊを１だけインクリメントし、次のステップ７８において、インクリメント後のカウンタｊが所定値ｊmaxに一致しているか否かを判定する。なお、所定値ｊmaxには「ＤＲＡＭ２０の単位メモリ領域の個数÷所定値ｉmax」に相当する値が設定されている。ステップ７８の判定が否定された場合はステップ５６に戻り、ステップ７８の判定が肯定される迄ステップ５６〜ステップ７８を繰り返す。これにより、ＤＲＡＭ２０の全メモリ領域に対して故障の有無が各々診断される。
【００３５】
そしてステップ７８の判定が肯定されるとステップ８０へ移行し、リフレッシュ・カウンタ２６へのリフレッシュ・イネーブル信号の出力を再開することで、リフレッシュ・カウンタ２６を動作させ、ＤＲＡＭ２０の故障診断を終了する。これにより、リフレッシュ・カウンタ２６からはリフレッシュ周期が経過する毎にシーケンサ２４へリフレッシュ要求信号が出力され、ＤＲＡＭ２０のリフレッシュが再開（イネーブル）される。ＤＲＡＭ２０の故障診断が完了すると、ステップ８２でＤＲＡＭ２０の全メモリ領域に一定のデータ（例えばall"0"）を書き込むＤＲＡＭ２０の初期化処理を行い、次のステップ８４でＯＳ(Operating System)を起動する等の他の処理を行い、装置起動処理を終了する。
【００３６】
従来のＤＲＡＭの故障診断では、ＤＲＡＭの全メモリ領域に診断用データを順次書き込んだ後に、ＤＲＡＭの全メモリ領域からデータを順次読み出しながら、読み出したデータを書き込んだ診断用データと順次比較することにより行われるが、ＤＲＡＭに書き込んだ診断用データが揮発することでＤＲＡＭの故障を誤診断することを回避するために、図５(Ａ)に示すように、リフレッシュ周期が到来してリフレッシュ割込がかかる（リフレッシュ・カウンタからリフレッシュ要求信号が入力される）毎にＤＲＡＭのリフレッシュを繰り返す必要がある。
【００３７】
これに対して本実施形態に係る装置起動処理におけるＤＲＡＭ２０の故障診断では、図５(Ｂ)にも示すように、ＤＲＡＭ２０のｉmax個の単位メモリ領域に所定の診断用データを順次書き込む書込処理（図５(Ｂ)に示す"write"）と、所定の診断用データを書き込んだｉmax個の単位メモリ領域からデータを順次読み出して故障の有無を診断する読出・診断処理（図５(Ｂ)に示す"read"）から成る単位診断処理がｊmax回繰り返されることによって成されるが、単位診断処理がリフレッシュ周期内に完了するように所定値ｉmax（１回の単位診断処理で診断するメモリ領域のサイズ）が設定されているので、ＤＲＡＭのリフレッシュを行わなくてもＤＲＡＭの故障を誤診断することはない。このため、本実施形態ではＤＲＡＭ２０のリフレッシュを停止させてＤＲＡＭ２０の故障診断を行っており、図５(Ｂ)を図５(Ａ)と比較しても明らかなように、従来のＤＲＡＭの故障診断と比較してＤＲＡＭのリフレッシュに要する時間分だけ処理時間（ＤＲＡＭの故障診断に要する時間）を短縮することができる。
【００３８】
上述した「ＤＲＡＭの故障診断に要する時間を短縮できる」という本発明の効果について、具体的な数値を挙げて更に説明する。なお、本発明は以下に記載した数値に限定されるものではないことを付記しておく。
【００３９】
一例として、診断対象のＤＲＡＭを、サイズが１Ｇバイト、１００ＭＨzのクロック信号(周期:10ｎ秒)に同期して動作する64ビット幅(単位メモリ領域のサイズ＝８バイト)のＳＤＲＡＭとする。また、診断対象のＤＲＡＭにおけるデータ保持期間が64ｍ秒、診断対象のＤＲＡＭにおける単位ブロックの数が4096個であるとすると、リフレッシュ周期は、データ保持期間内に診断対象のＤＲＡＭの全メモリ領域のリフレッシュを完了させるために、
64ｍ秒÷4096≒15.6μ秒
となる。
【００４０】
診断対象のＤＲＡＭの全メモリ領域に対する故障診断（診断用データの書き込み及び読み出し）に要する時間は、リフレッシュの所要時間を除外すると、１クロックで８バイトのデータの書き込み又は読み出しが完了するので、
１Ｇバイト÷８バイト×10ｎ秒≒1.3秒
となる。但し、従来のＤＲＡＭの故障診断では、処理途中でＤＲＡＭのリフレッシュが行われる。前述のように、診断対象のＤＲＡＭに対するリフレッシュ周期が15.6μ秒である場合、
1.3秒÷15.6μ秒≒86037回
となり、診断対象のＤＲＡＭに対して故障診断を行っている間に、診断対象のＤＲＡＭのリフレッシュが86037回行われる。１回のリフレッシュは１クロック（10ｎ秒）で完了するが、一般にＤＲＡＭのリフレッシュ後にはＤＲＡＭへアクセスできない時間tRFCが生ずるので、tRFC＝75ｎ秒であるとすると、１回のリフレッシュに要する時間は最短でも、
10ｎ秒＋75ｎ秒＝85ｎ秒
となる。従って、上記の診断対象のＤＲＡＭに対して従来の故障診断を行った場合、
86037回×85ｎ秒≒7.3ｍ秒
がリフレッシュによるオーバヘッドとして故障診断処理時間に加わることになる。
【００４１】
一方、リフレッシュ周期15.6μ秒の間に前述の単位診断処理を完了させることが可能な単位メモリ領域の数は、単位メモリ領域に対するデータの書き込み・読み出しが各々１クロックで完了するので、
リフレッシュ周期÷(クロック周期×２)＝1560
1560×８バイト＝6240バイト
となり、ｉmax＝1560（１回の単位診断処理で診断を行うメモリ領域のサイズ＝6240バイト）とすることで、リフレッシュ周期15.6μ秒の間に単位診断処理を完了させることができ、診断対象のＤＲＡＭに書き込んだ診断用データが揮発する前に、診断対象のＤＲＡＭから読み出すことができる。そして、診断用データが揮発する前に該データを読み出せることに基づき、ＤＲＡＭの故障診断を行っている間のＤＲＡＭのリフレッシュを停止させることで、従来のＤＲＡＭの故障診断と比較して、リフレッシュによるオーバヘッドに相当する7.3ｍ秒だけ処理時間を短縮することができる。
【００４２】
続いて、ＤＲＡＭ２０のデータ保持期間の計測が指示された場合に、ＣＰＵ１２によってデータ保持期間計測プログラムが実行されることで実現されるデータ保持期間計測処理について、図６を参照し、装置起動処理（図４）と異なる部分についてのみ説明する。なお、データ保持期間計測処理は請求項４記載の発明に対応する処理であり、このデータ保持期間計測処理を行うＣＰＵ１２は請求項４に記載の診断手段として機能する。
【００４３】
データ保持期間計測処理では、まずステップ５２において、リフレッシュ・カウンタ２６へのリフレッシュ・イネーブル信号の出力を停止することで、ＤＲＡＭ２０のリフレッシュを停止（ディスエーブル）させる。またデータ保持期間計測処理ではｉmaxが変数とされており、次のステップ５３では変数ｉmaxに初期値（例えばｉmax×クロック周期がデータ保持期間の定格の80〜90％程度の長さとなる値）を設定する。次のステップ５６以降では、先に説明した装置起動処理（図４）と同様に、ＤＲＡＭ２０のｉmax個の単位メモリ領域に所定の診断用データを順次書き込んだ後に、所定の診断用データを書き込んだｉmax個の単位メモリ領域からデータを順次読み出して故障（所定の診断用データに対する読出データの一致）を診断する単位診断処理を行う（ステップ５６〜ステップ７４）。
【００４４】
上記の単位診断処理の間、所定の診断用データに対する読出データの不一致が生ぜずステップ７０の判定が毎回肯定された場合は、ステップ７４の判定が肯定されることで単位診断処理が終了する。ステップ７４の判定が肯定された場合はステップ９０へ移行し、現在の変数ｉmaxを最大保持期間データＤに代入することで最大保持期間データＤを更新する。次のステップ９２では変数ｉmaxを１だけインクリメントしてステップ５６に戻る。これにより、ステップ７０の判定が肯定される迄ステップ５６〜ステップ９２が繰り返され、単位診断処理で処理対象とする単位メモリ領域の数（診断用データの書き込み、データの読み出し及び故障診断を行う単位メモリ領域の数）を１個ずつ増加させながら単位診断処理が繰り返し実行されると共に、最大保持期間データＤが毎回更新される（値が１ずつ増加される）ことになる。
【００４５】
また、単位診断処理で処理対象とする単位メモリ領域の数を１個ずつ増加させることに伴って単位診断処理に要する時間も徐々に増加するので、処理の進行に伴い、個々の単位メモリ領域に診断用データを書き込んでから、個々の単位メモリ領域からデータが読み出される迄の経過時間がＤＲＡＭ２０のデータ保持期間を越え、ＤＲＡＭ２０からのデータの揮発による変化が生じることで、診断用データに対して読出データが不一致となりステップ７０の判定が否定される。
【００４６】
ステップ７０の判定が否定されるとステップ９４へ移行し、現在の最大保持期間データＤ（なお、このときの最大保持期間データＤの値は、請求項４に記載の「メモリ領域から読み出したデータが診断用データと一致するメモリ領域の最大サイズ」に対応する値となっている）及びクロック周期に基づいてＤＲＡＭ２０のデータ保持期間Ｔを演算し、演算したデータ保持期間Ｔを図示しないディスプレイに表示させる等によって出力する。なお、データ保持期間Ｔとしては、最大保持期間データＤとクロック周期の積に相当する値を用いてもよいし、最大保持期間データＤとクロック周期の積から所定のマージンを減算した値を用いてもよい。そして次のステップ８０でリフレッシュ・カウンタ２６へのリフレッシュ・イネーブル信号の出力を再開することで、ＤＲＡＭ２０のリフレッシュを再開（イネーブル）させ、データ保持期間計測処理を終了する。
【００４７】
一般にＤＲＡＭは、製造誤差等に起因して、実際のデータ保持期間が定格のデータ保持期間と相違しているが、上記のデータ保持期間計測処理を行うことで、コンピュータ１０に搭載されたＤＲＡＭ２０の実際のデータ保持期間を確認することができ、確認した実際のデータ保持期間に基づいて、ＤＲＡＭ２０に対するリフレッシュ周期を最適化する等のリフレッシュ周期の調整を行うことも可能となる。
【００４８】
なお、上記では単位診断処理（ＤＲＡＭ２０のｉmax個の単位メモリ領域に所定の診断用データを順次書き込んだ後に、所定の診断用データを書き込んだｉmax個の単位メモリ領域からデータを順次読み出して故障の有無を診断する処理）に要する時間がリフレッシュ周期内に収まるように所定値ｉmaxを設定した例を説明したが、本発明はこれに限定されるものではなく、単位診断処理に要する時間が長くともＤＲＡＭ２０のデータ保持期間内に完了するように、１回の単位診断処理で診断を行う単位メモリ領域の数（１回の単位診断処理で診断を行うメモリ領域のサイズ：本発明に係る所定サイズ）を設定すれば、ＤＲＡＭ２０に書き込んだ診断用データに揮発が生ずる前にＤＲＡＭ２０から読み出すことができるので、本発明に係る所定サイズ（１回の単位診断処理で診断を行う単位メモリ領域の数）を、上記条件を満足する範囲でより大きな値としてもよい。
【００４９】
また、本発明に係る所定サイズはより小さな値とすることも可能であり、例えば単位メモリ領域のサイズ（アクセス単位のサイズ）と同サイズとしてもよく（この場合、或る単位メモリ領域に書き込んだ診断用データが直後に読み出されることになる）、上記条件を満足する範囲内の値であれば、ＤＲＡＭの故障診断を行っている間のＤＲＡＭのリフレッシュを停止できることで、リフレッシュに要する時間分だけ処理時間を短縮できる、という効果が得られるが、ＤＲＡＭの故障診断における処理時間には、より詳しくはＣＰＵ１２における処理時間もオーバヘッドとして加わるので、本発明に係る所定サイズをなるべく大きな値とし、単位診断処理の繰り返し回数を削減した方が、オーバヘッドとして加わるＣＰＵ１２の処理時間を削減することができ、ＤＲＡＭの故障診断における処理時間を更に短縮できるので好ましい。
【００５０】
また、上記ではコンピュータ１０の起動時にＤＲＡＭの故障診断を行う態様を説明したが、本発明はこれに限定されるものではなく、起動時以外のタイミングでＤＲＡＭの故障診断を行う場合にも適用可能であることは言うまでもない。
【図面の簡単な説明】
【００５１】
【図１】本実施形態に係るコンピュータの概略構成を示すブロック図である。
【図２】メモリコントローラの概略構成を示すブロック図である。
【図３】ＤＲＡＭの状態遷移図である。
【図４】ＣＰＵで実行される装置起動処理の内容を示すフローチャートである。
【図５】(Ａ)は従来のＤＲＡＭ故障診断、(Ｂ)は本実施形態におけるＤＲＡＭ故障診断における処理シーケンスを示すタイミングチャートである。
【図６】データ保持期間計測処理の内容を示すフローチャートである。
【符号の説明】
【００５２】
１０  コンピュータ
１２  ＣＰＵ
２０  ＤＲＡＭ
２２  メモリコントローラ
２４  シーケンサ
２６  リフレッシュ・カウンタ
【図１】
2007242127.tif 000003
【図２】
2007242127.tif 000004
【図３】
2007242127.tif 000005
【図４】
2007242127.tif 000006
【図５】
2007242127.tif 000007
【図６】
2007242127.tif 000008