(57)【特許請求の範囲】
【請求項１】
記憶領域が複数のブロックに区画されたフラッシュメモリ、及び前記ブロックに対するデータの読み出し／書き込みを制御するメモリコントローラを有するブロックデバイスによって構成され、前記ブロックに対するデータの読み出し／書き込みを実行する際には、論理ブロックアドレスを指定してデータの読み出し／書き込みを指令すると、前記メモリコントローラにおいて前記論理ブロックアドレスが物理ブロックアドレスに変換されて、当該物理ブロックアドレスに対応する前記ブロックに対してデータの読み出し／書き込みが実行される第一記憶手段と、
前記第一記憶手段に記憶されているデータを、前記第一記憶手段から読み出すデータ読み出し手段と、
前記複数のブロックそれぞれを対象にして、当該対象となるブロックに記憶されているデータとブロック単位でデータの内容を比較すると１バイト分以上のデータが異なる１ブロック分のデータを、前記対象となるブロックに対応するリフレッシュデータとし、前記対象となるブロックに対応する論理ブロックアドレスを指定して前記対象となるブロックに対応するリフレッシュデータの書き込みを、前記第一記憶手段に対して指令することにより、前記複数のブロックそれぞれに対して各ブロックに対応する前記リフレッシュデータを書き込むリフレッシュデータ書き込み手段と、
前記データ読み出し手段によって読み出されたデータを、前記第一記憶手段に対して書き込むデータ再書き込み手段と
を備える情報処理装置。
【請求項２】
前記リフレッシュデータ書き込み手段は、予めブロック単位で用意されている複数の候補データの中から、前記対象となるブロックに記憶されているデータに応じて、当該データとはブロック単位でデータの内容を比較すると１バイト分以上のデータが異なる一つの候補データを選択し、当該選択した候補データを前記リフレッシュデータとする
請求項１に記載の情報処理装置。
【請求項３】
前記リフレッシュデータ書き込み手段は、前記対象となるブロックに記憶されているデータとブロック単位でデータの内容を比較すると前記ブロックの先頭にある１バイトのデータが異なる１ブロック分のデータを、前記リフレッシュデータとする
請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記データ読み出し手段、前記リフレッシュデータ書き込み手段、及び前記データ再書き込み手段によるリフレッシュ処理が実行された際に、その実行履歴を記録する履歴記録手段と、
前記履歴記録手段によって記録された前記実行履歴に基づいて、所定期間以上にわたって前記リフレッシュ処理が実行されていないと判断された場合に、前記データ読み出し手段、前記リフレッシュデータ書き込み手段、及び前記データ再書き込み手段による前記リフレッシュ処理を実行させるリフレッシュ制御手段と
を備える請求項１〜請求項３のいずれか一項に記載の情報処理装置。
【請求項５】
前記データ読み出し手段によって読み出された前記データが保存されたディスクイメージ形式のファイルである第二記憶手段と、
前記データ読み出し手段、前記リフレッシュデータ書き込み手段、及び前記データ再書き込み手段によるリフレッシュ処理の開始時及び終了時に、当該開始及び終了に対応する情報が記録される第三記憶手段と、
プログラム又はデータを読み出して、所定の処理を実行する処理実行手段と
を備え、
前記処理実行手段は、前記第三記憶手段に前記終了に対応する情報が記録されている場合には、前記ブロックデバイスである前記第一記憶手段に対するデータの読み出し／書き込みを実行する一方、前記第三記憶手段に前記開始に対応する情報が記録されている場合には、前記第二記憶手段を仮想的にブロックデバイスと認識して当該第二記憶手段に対するデータの読み出し／書き込みを実行する
請求項１〜請求項４のいずれか一項に記載の情報処理装置。
【請求項６】
前記データ読み出し手段、前記リフレッシュデータ書き込み手段、及び前記データ再書き込み手段によるリフレッシュ処理は、前記情報処理装置の起動時に実行され、
前記処理実行手段は、前記情報処理装置の起動時に、前記第三記憶手段に前記終了に対応する情報が記録されている場合には、前記第一記憶手段からブートプログラムを読み出して前記情報処理装置を起動するための起動処理を実行する一方、前記第三記憶手段に前記開始に対応する情報が記録されている場合には、前記第二記憶手段からブートプログラムを読み出して前記情報処理装置を起動するための起動処理を実行する
請求項５に記載の情報処理装置。
【請求項７】
記憶領域が複数のブロックに区画されたフラッシュメモリ、及び前記ブロックに対するデータの読み出し／書き込みを制御するメモリコントローラを有するブロックデバイスによって構成され、前記ブロックに対するデータの読み出し／書き込みを実行する際には、論理ブロックアドレスを指定してデータの読み出し／書き込みを指令すると、前記メモリコントローラにおいて前記論理ブロックアドレスが物理ブロックアドレスに変換されて、当該物理ブロックアドレスに対応する前記ブロックに対してデータの読み出し／書き込みが実行される第一記憶手段
を有する情報処理装置が備える制御部を、
前記第一記憶手段に記憶されているデータを、前記第一記憶手段から読み出すデータ読み出し手段、
前記複数のブロックそれぞれを対象にして、当該対象となるブロックに記憶されているデータとブロック単位でデータの内容を比較すると１バイト分以上のデータが異なる１ブロック分のデータを、前記対象となるブロックに対応するリフレッシュデータとし、前記対象となるブロックに対応する論理ブロックアドレスを指定して前記対象となるブロックに対応するリフレッシュデータの書き込みを、前記第一記憶手段に対して指令することにより、前記複数のブロックそれぞれに対して各ブロックに対応する前記リフレッシュデータを書き込むリフレッシュデータ書き込み手段、及び
前記データ読み出し手段によって読み出されたデータを、前記第一記憶手段に対して書き込むデータ再書き込み手段
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及びプログラムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリが備えるメモリセルのデータ保持期間には上限がある。そのため、このデータ保持期間を超えてメモリセルにデータを保持するには、メモリセルのリフレッシュを行わなければならない。
【０００３】
このようなフラッシュメモリのリフレッシュを行う技術としては、フラッシュメモリに記憶されたデータをフラッシュメモリとは別の記憶領域に待避させてから、ブロック単位でフラッシュメモリのデータを消去し、待避させたデータをフラッシュメモリに書き戻す、といった技術が知られている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−５０６９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、フラッシュメモリに対するデータの読み出し／書き込みを制御するメモリコントローラが設けられたブロックデバイスでは、データの書き込みを指令しても、実際にはデータの書き込みが実行されないことがある。
【０００６】
より詳しく説明すると、上述のようなブロックデバイスの場合、データの書き込みが指令されると、メモリコントローラは、書き込み対象となるブロックに格納済みのデータと、新たに書き込みたいデータとを比較する。そして、両データに違いがない場合、メモリコントローラは、実際にはデータを書き込むことなく、データの書き込みを完了したことにする。このような書き込み抑制制御をメモリコントローラが行えば、書き込み対象となるブロックに対する書き込み回数が増大するのを抑制できるので、フラッシュメモリの劣化を抑制することができる。
【０００７】
しかし、先に説明したようなフラッシュメモリのリフレッシュを行いたい場合に、メモリコントローラによって上述のような書き込み抑制制御が行われると、その対象となったブロックについては、データの書き込みが実際には行われないままとなるおそれがある。
【０００８】
その場合、データの書き込みが実際には行われなかったブロックにおいて、上述のデータ保持期間を超えてしまうようなことがあると、該当するブロックに格納されたデータの信頼性が低下することになる。
【０００９】
本発明は、上述のような課題を解決するためになされたものであり、その目的の一つは、フラッシュメモリに対してメモリコントローラ経由でデータの読み出し／書き込みが実行されるブロックデバイスにおいても適切にフラッシュメモリのリフレッシュを実施可能とする技術を提供することにある。
【課題を解決するための手段】
【００１０】
以下、本発明において採用した構成について説明する。
本発明の情報処理装置は、記憶領域が複数のブロックに区画されたフラッシュメモリ、及び前記ブロックに対するデータの読み出し／書き込みを制御するメモリコントローラを有するブロックデバイスによって構成され、前記ブロックに対するデータの読み出し／書き込みを実行する際には、論理ブロックアドレスを指定してデータの読み出し／書き込みを指令すると、前記メモリコントローラにおいて前記論理ブロックアドレスが物理ブロックアドレスに変換されて、当該物理ブロックアドレスに対応する前記ブロックに対してデータの読み出し／書き込みが実行される第一記憶手段と、前記第一記憶手段に記憶されているデータを、前記第一記憶手段から読み出すデータ読み出し手段と、前記複数のブロックそれぞれを対象にして、当該対象となるブロックに記憶されているデータとブロック単位でデータの内容を比較すると１バイト分以上のデータが異なる１ブロック分のデータを、前記対象となるブロックに対応するリフレッシュデータとし、前記対象となるブロックに対応する論理ブロックアドレスを指定して前記対象となるブロックに対応するリフレッシュデータの書き込みを、前記第一記憶手段に対して指令することにより、前記複数のブロックそれぞれに対して各ブロックに対応する前記リフレッシュデータを書き込むリフレッシュデータ書き込み手段と、前記データ読み出し手段によって読み出されたデータを、前記第一記憶手段に対して書き込むデータ再書き込み手段とを備える。
【００１１】
このように構成された情報処理装置によれば、第一記憶手段に記憶されているデータを読み出してから、第一記憶手段にリフレッシュデータを書き込み、さらに、データ読み出し手段によって読み出されたデータを第一記憶手段に対して書き込むことができる。
【００１２】
リフレッシュデータを書き込む際には、複数のブロックそれぞれに記憶されているデータに基づき、当該データとブロック単位でデータの内容を比較すると１バイト分以上のデータが異なる１ブロック分のデータを、各ブロックに対応するリフレッシュデータとする。
【００１３】
このようなリフレッシュデータは、各ブロックに記憶されているデータとは、１バイト分以上のデータが異なっていればよいので、少なくとも２種のリフレッシュデータがあれば十分である。具体例を挙げれば、例えば、リフレッシュデータとしては、先頭バイトが“ｎ”のリフレッシュデータ＃１と、“ｎ以外”のリフレッシュデータ＃２（ただし、ｎは０〜２５５のいずれか）、以上２種のリフレッシュデータを用意する。
【００１４】
この場合、各ブロックに記憶されているデータの先頭１バイトが“ｎ”であれば、そのブロックにはリフレッシュデータ＃２を対応付ける。また、各ブロックに記憶されているデータの先頭１バイトが“ｎ以外”であれば、そのブロックにはリフレッシュデータ＃１を対応付ける。このような手法で各ブロックにリフレッシュデータ＃１，＃２のいずれかを対応付ければ、各ブロックに記憶されたデータに何通りものデータがあっても、リフレッシュデータについては、上述の２種だけがあれば、１バイト分以上のデータが異なるリフレッシュデータを各ブロックに対応付けることができる。
【００１５】
なお、上記具体例では２種のリフレッシュデータを例示したが、３種以上のリフレッシュデータを利用してもかまわない。また、上記具体例では、データの先頭１バイトが異なる例を示したが、データの先頭から２バイト目以降でデータが異なっていてもかまわない。
【００１６】
以上のようなリフレッシュデータを利用して、リフレッシュデータ書き込み手段は、対象となるブロックに対応する論理ブロックアドレスを指定して、対象となるブロックに対応するリフレッシュデータの書き込みを、第一記憶手段に対して指令する。
【００１７】
この指令によって各ブロックに書き込まれるリフレッシュデータは、各ブロックに記憶されているデータとは１バイト分以上異なるので、第一記憶手段が備えるメモリコントローラは、各ブロックに対してリフレッシュデータを実際に書き込むことになる。
【００１８】
したがって、以上説明したような情報処理装置であれば、メモリコントローラ側での判断によってリフレッシュデータの書き込みが実行されなくなることはなく、フラッシュメモリのリフレッシュを確実に実施することができる。
【００１９】
ところで、本発明の情報処理装置において、前記リフレッシュデータ書き込み手段は、予めブロック単位で用意されている複数の候補データの中から、前記対象となるブロックに記憶されているデータに応じて、当該データとはブロック単位でデータの内容を比較すると１バイト分以上のデータが異なる一つの候補データを選択し、当該選択した候補データを前記リフレッシュデータとすると好ましい。
【００２０】
このように構成された情報処理装置によれば、複数の候補データが予め用意されていて、その候補データの中からリフレッシュデータとして利用するものを選ぶことができる。したがって、リフレッシュデータが必要となった時点でリフレッシュデータを生成するものよりも、リフレッシュデータを迅速に準備することができる。
【００２１】
また、本発明の情報処理装置において、前記リフレッシュデータ書き込み手段は、前記対象となるブロックに記憶されているデータとブロック単位でデータの内容を比較すると前記ブロックの先頭にある１バイトのデータが異なる１ブロック分のデータを、前記リフレッシュデータとすると好ましい。
【００２２】
このように構成された情報処理装置によれば、第一記憶手段の備えるメモリコントローラが、データを実際に書き込むかどうかを判断する際、ブロックの先頭からデータの比較を行えば、ブロックの末尾にデータの相違箇所があるものよりも、その相違箇所を迅速に検出できるようになる。
【００２３】
また、本発明の情報処理装置において、前記データ読み出し手段、前記リフレッシュデータ書き込み手段、及び前記データ再書き込み手段によるリフレッシュ処理が実行された際に、その実行履歴を記録する履歴記録手段と、前記履歴記録手段によって記録された前記実行履歴に基づいて、所定期間以上にわたって前記リフレッシュ処理が実行されていないと判断された場合に、前記データ読み出し手段、前記リフレッシュデータ書き込み手段、及び前記データ再書き込み手段による前記リフレッシュ処理を実行させるリフレッシュ制御手段とを備えると好ましい。
【００２４】
このように構成された情報処理装置によれば、過去に行われたリフレッシュ処理の実行履歴に基づいて、前回の実行から所定期間が経過すると再びリフレッシュ処理が実行される。したがって、フラッシュメモリのデータ保持期間を考慮した適切な期間を上記所定期間として設定することにより、データ保持期間を超過する前にリフレッシュ処理を実行することができる。
【００２５】
また、本発明の情報処理装置において、前記データ読み出し手段によって読み出された前記データが保存されたディスクイメージ形式のファイルである第二記憶手段と、前記データ読み出し手段、前記リフレッシュデータ書き込み手段、及び前記データ再書き込み手段によるリフレッシュ処理の開始時及び終了時に、当該開始及び終了に対応する情報が記録される第三記憶手段と、プログラム又はデータを読み出して、所定の処理を実行する処理実行手段とを備え、前記処理実行手段は、前記第三記憶手段に前記終了に対応する情報が記録されている場合には、前記ブロックデバイスである前記第一記憶手段に対するデータの読み出し／書き込みを実行する一方、前記第三記憶手段に前記開始に対応する情報が記録されている場合には、前記第二記憶手段を仮想的にブロックデバイスと認識して当該第二記憶手段に対するデータの読み出し／書き込みを実行すると好ましい。
【００２６】
このように構成された情報処理装置によれば、第一記憶手段に対するリフレッシュ処理の実行中には、第二記憶手段を仮想的にブロックデバイスと認識して当該第二記憶手段に対するデータの読み出し／書き込みを実行する。したがって、リフレッシュ処理に伴って第一記憶手段が使用不能となるにもかかわらず、その代替手段として第二記憶手段を利用することで、リフレッシュ処理の開始前と同等な処理を実行することができる。
【００２７】
また、本発明の情報処理装置において、前記データ読み出し手段、前記リフレッシュデータ書き込み手段、及び前記データ再書き込み手段によるリフレッシュ処理は、前記情報処理装置の起動時に実行され、前記処理実行手段は、前記情報処理装置の起動時に、前記第三記憶手段に前記終了に対応する情報が記録されている場合には、前記第一記憶手段からブートプログラムを読み出して前記情報処理装置を起動するための起動処理を実行する一方、前記第三記憶手段に前記開始に対応する情報が記録されている場合には、前記第二記憶手段からブートプログラムを読み出して前記情報処理装置を起動するための起動処理を実行すると好ましい。
【００２８】
このように構成された情報処理装置によれば、第一記憶手段及び第二記憶手段のうち、いずれかからブートプログラムを読み出して情報処理装置を起動するための起動処理を実行することができる。したがって、リフレッシュ処理に伴って第一記憶手段が使用不能となるにもかかわらず、情報処理装置が起動不能な状態に陥るのを未然に防ぐことができる。
【００２９】
さらに、本発明のプログラムは、記憶領域が複数のブロックに区画されたフラッシュメモリ、及び前記ブロックに対するデータの読み出し／書き込みを制御するメモリコントローラを有するブロックデバイスによって構成され、前記ブロックに対するデータの読み出し／書き込みを実行する際には、論理ブロックアドレスを指定してデータの読み出し／書き込みを指令すると、前記メモリコントローラにおいて前記論理ブロックアドレスが物理ブロックアドレスに変換されて、当該物理ブロックアドレスに対応する前記ブロックに対してデータの読み出し／書き込みが実行される第一記憶手段を有する情報処理装置が備える制御部を、前記第一記憶手段に記憶されているデータを、前記第一記憶手段から読み出すデータ読み出し手段、前記複数のブロックそれぞれを対象にして、当該対象となるブロックに記憶されているデータとブロック単位でデータの内容を比較すると１バイト分以上のデータが異なる１ブロック分のデータを、前記対象となるブロックに対応するリフレッシュデータとし、前記対象となるブロックに対応する論理ブロックアドレスを指定して前記対象となるブロックに対応するリフレッシュデータの書き込みを、前記第一記憶手段に対して指令することにより、前記複数のブロックそれぞれに対して各ブロックに対応する前記リフレッシュデータを書き込むリフレッシュデータ書き込み手段、及び前記データ読み出し手段によって読み出されたデータを、前記第一記憶手段に対して書き込むデータ再書き込み手段として機能させる。
【００３０】
このように構成されたプログラムによって、上述のような第一記憶手段を有する情報処理装置が備える制御部を、データ読み出し手段、リフレッシュデータ書き込み手段、及びデータ再書き込み手段として機能させれば、本発明の情報処理装置と同様の作用、効果を奏する。
【図面の簡単な説明】
【００３１】
【図１】本発明の情報処理装置の一例として例示するパーソナルコンピュータのブロック図。
【図２】起動時処理のフローチャート。
【図３】リフレッシュデータ書き込み処理のフローチャート。
【発明を実施するための形態】
【００３２】
次に、本発明の実施形態について一例を挙げて説明する。
［システム全体の構成］
パーソナルコンピュータ１（以下、ＰＣ１と称する。）は、図１に示すように、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ＨＤＤ１４（ハードディスク装置１４）、操作部１５、表示部１６、通信インターフェース１７、及びフラッシュメモリデバイス１８など、この種のＰＣとして周知の各種構成を備えている。
【００３３】
フラッシュメモリデバイス１８は、メモリコントローラ１８Ａと、フラッシュメモリ１８Ｂとを有するブロックデバイスである。メモリコントローラ１８Ａは、フラッシュメモリ１８Ｂに対する読み出し／書き込みを制御している。また、このメモリコントローラ１８Ａは、ウェアレベリングなどの制御も実行することで、フラッシュメモリ１８Ｂが劣化するのを抑制している。
【００３４】
ＰＣ１がフラッシュメモリデバイス１８に対するデータの読み出し／書き込みを実行する際には、フラッシュメモリ１８Ｂが備える複数のブロックそれぞれに対応する論理ブロックアドレス（論理ブロック番号）を指定してデータの読み出し／書き込みを指令する。
【００３５】
このとき、メモリコントローラ１８Ａは、メモリコントローラ１８Ａが内部的に管理する論理ブロックアドレスと物理ブロックアドレス（物理ブロック番号）との対応表に基づいて、指定された論理ブロックアドレスを物理ブロックアドレスに変換する。そして、メモリコントローラ１８Ａは、その変換後の物理ブロックアドレスに対応するブロックに対してデータの読み出し／書き込みを実行する。
【００３６】
ＨＤＤ１４には、後述するＰＣ１の起動処理に関連するファイルとして、復元フラグ２１、リフレッシュ中フラグ２２、リフレッシュ履歴２３、ディスクイメージ２４などのファイルが格納される。ディスクイメージ２４は、後述するＰＣ１の起動処理の中で生成されるファイルであり、その内容はフラッシュメモリ１８Ｂに記憶されたデータを丸ごと複製したものとなっている。例えば、フラッシュメモリ１８Ｂには、ブートプログラム３１のファイル等が保存されているが、こうしたファイルがディスクイメージ２４内にも複製される。
【００３７】
なお、このＰＣ１には、ＯＳとしてＬｉｎｕｘ（登録商標；以下同様。）が搭載されている。本実施形態の場合、ＯＳに関連するファイルはフラッシュメモリ１８Ｂに格納されていて、ＰＣ１が起動する際には、フラッシュメモリデバイス１８をブートドライブとしてＯＳを稼働させることができる。また、詳しくは後述するが、ディスクイメージ２４にはフラッシュメモリ１８Ｂに記憶されたデータが丸ごと複製されるので、ディスクイメージ２４を仮想的なブートドライブとしてＯＳを稼働させることも可能となっている。
【００３８】
［ＰＣの起動処理］
次に、ＰＣ１において実行される起動時処理について、図２に基づいて説明する。この起動時処理は、ＰＣ１において電源スイッチがオンとされたときに実行される処理である。
【００３９】
起動時処理を開始すると、ＣＰＵ１１は、まず、復元フラグがオンか否かを判断する（Ｓ１１０）。復元フラグは、後述するリフレッシュデータ書き込み処理（図２中のＳ２４０参照。）が実行された場合に、そのリフレッシュデータ書き込み処理の完了後にＳ２５０においてオンにされるフラグである。この復元フラグは、ＰＣ１が再起動された場合でも、再起動前の内容を保持する必要があるフラグであるため、本実施形態の場合、復元フラグの内容は、ＨＤＤ１４にファイルとして保存されている（図１中の復元フラグ２１参照。）。
【００４０】
まだＳ２５０が実行されていない初期段階では、復元フラグがオフとされている。そのため、この場合、Ｓ１１０では復元フラグがオンではない（＝オフである）と判断され（Ｓ１１０：ＮＯ）、Ｓ１２０へと進む。
【００４１】
Ｓ１２０へ進んだ場合、ＣＰＵ１１は、リフレッシュ中フラグがオンか否かを判断する（Ｓ１２０）。リフレッシュ中フラグは、後述するリフレッシュデータ書き込み処理（図２中のＳ２４０参照。）が実行される場合に、そのリフレッシュデータ書き込み処理の開始前にＳ２２０においてオンにされるフラグである。このリフレッシュ中フラグも、先に説明した復元フラグ同様、ＰＣ１が再起動された場合でも、再起動前の内容を保持する必要があるフラグであるため、本実施形態の場合、リフレッシュ中フラグの内容は、ＨＤＤ１４にファイルとして保存されている（図１中のリフレッシュ中フラグ２２参照。）。
【００４２】
まだＳ２５０が実行されていない初期段階では、リフレッシュ中がオフとされている。そのため、この場合、Ｓ１２０ではリフレッシュ中フラグがオンではない（＝オフである）と判断され（Ｓ１２０：ＮＯ）、Ｓ１３０へと進む。
【００４３】
Ｓ１３０へ進んだ場合、ＣＰＵ１１は、前回のリフレッシュから半年以上が経過したか否かを判断する（Ｓ１３０）。前回のリフレッシュ日時は、リフレッシュ履歴としてファイルに保存されている（図１中のリフレッシュ履歴２３参照。）。Ｓ１３０では、保存されたリフレッシュ履歴を参照し、前回のリフレッシュ日時と現在の日時とを比較して、半年以上の時間差があるか否かを判断する。
【００４４】
Ｓ１３０において、前回のリフレッシュから半年以上が経過していない場合（Ｓ１３０：ＮＯ）、ＣＰＵ１１は、フラッシュメモリをマウント又はオープンして、ＰＣ１を通常起動する（Ｓ１４０）。
【００４５】
より詳しく説明すると、本実施形態においては、フラッシュメモリ１８Ｂにブートプログラム３１などが格納されていて、フラッシュメモリデバイス１８をブートドライブとしてＰＣ１が起動するように構成されている。
【００４６】
そのため、Ｓ１４０では、フラッシュメモリデバイス１８上に作成されたパーティションをマウントポイントにマウントして、そのマウントポイント下にあるファイルにアクセスすることで、ブートプログラム３１などを読み出す。あるいは、フラッシュメモリデバイス１８を直接オープンしてデータブロックにアクセスすることで、ブートプログラム３１などを読み出す。そして、読み出したブートプログラム３１に従った処理をＣＰＵ１１が実行することにより、ＰＣ１が起動されることとなる。なお、以降、ＣＰＵ１１は、通常サービスを開始し（Ｓ１５０）、ＰＣ１が稼働することになる。
【００４７】
一方、Ｓ１３０において、前回のリフレッシュから半年以上が経過していた場合（Ｓ１３０：ＹＥＳ）、ＣＰＵ１１は、フラッシュメモリの内容をＨＤＤに保存する（Ｓ２１０）。すなわち、このＳ２１０において、フラッシュメモリ１８Ｂの内容がＨＤＤ１４にディスクイメージ形式のファイルとして複製される（図１中のディスクイメージ２４参照。）。
【００４８】
続いて、ＣＰＵ１１は、リフレッシュ中フラグをオンにする（Ｓ２２０）。具体的には、リフレッシュ中フラグがオンにされるとともに、その旨を示す情報がＨＤＤ１４のファイル（リフレッシュ中フラグ２２）に保存される。
【００４９】
次に、ＣＰＵ１１は、ＨＤＤ上のイメージをマウント又はオープンして起動する（Ｓ２３０）。具体的には、Ｓ２１０においてＨＤＤ１４にファイルとして保存されたディスクイメージ２４上に複製されたパーティションをループバックデバイスとしてマウントポイントにマウントして、そのマウントポイント下にあるファイルにアクセスすることで、ブートプログラム３１などを読み出す。あるいは、ディスクイメージ２４を直接オープンしてデータブロックにアクセスすることで、ブートプログラム３１などを読み出す。
【００５０】
すなわち、Ｓ２３０では、ディスクイメージ２４を利用して仮想的なブートドライブを生成し、読み出したブートプログラム３１に従った処理をＣＰＵ１１が実行することにより、ＰＣ１が起動される。そして、以降、ＣＰＵ１１は、通常サービスを開始する（Ｓ２４０）。また、Ｓ２４０において、ＣＰＵ１１は、通常サービスと並行してリフレッシュデータ書き込み処理を実行する。
【００５１】
リフレッシュデータ書き込み処理を開始すると、図３に示すように、ＣＰＵ１１は、未処理のブロックが残っているか否かを判断する（Ｓ４１０）。ここで、リフレッシュデータ書き込み処理の開始直後は、未処理のブロックが残っているので（Ｓ４１０：ＹＥＳ）、続いて、ＣＰＵ１１は、処理対象となる一つのブロックについて、対象ブロックの先頭１バイトが０ｘ００（１６進表記）か否かを判断する（Ｓ４２０）。
【００５２】
Ｓ４１０において、対象ブロックの先頭１バイトが０ｘ００であった場合（Ｓ４２０：ＹＥＳ）、ＣＰＵ１１は、１ブロック中の全バイトが０ｘｆｆ（１６進表記）とされたリフレッシュデータを選択する（Ｓ４３０）。一方、Ｓ４１０において、対象ブロックの先頭１バイトが０ｘ００ではなかった場合（Ｓ４２０：ＮＯ）、ＣＰＵ１１は、１ブロック中の全バイトが０ｘ００とされたリフレッシュデータを選択する（Ｓ４３０）。
【００５３】
これら二種のリフレッシュデータは、双方とも静的なデータとして予め用意されている。そのため、Ｓ４３０及びＳ４４０では、リフレッシュデータ用のバッファをリフレッシュごとに動的に確保するようなことはせず、また、そのようなバッファにデータをも生成するようなこともせず、予め用意された二種のデータのいずれを使用するかだけを決定する。そして、ＣＰＵ１１は、Ｓ４３０又はＳ４４０で選択したリフレッシュデータの書き込みを、フラッシュメモリデバイス１８に対して指令する（Ｓ４５０）。
【００５４】
なお、この指令を受けたフラッシュメモリデバイス１８では、メモリコントローラ１８Ａが、書き込み指令の対象となったブロックに記憶済みのデータと、新たに書き込むべきデータとを比較する。この比較はブロックの先頭から１バイト単位で実行され、両者の相違箇所が見つかれば、メモリコントローラ１８Ａによってフラッシュメモリ１８Ｂに対する実際の書き込みが実行される。また、１ブロックの末尾まで比較しても両者の相違箇所が見つからなかった場合には、メモリコントローラ１８Ａによるフラッシュメモリ１８Ｂに対する書き込みは実行されず、データの書き込みが正常に完了した旨の応答のみがＣＰＵ１１に返される。
【００５５】
ただし、Ｓ４５０では、上記Ｓ４２０〜Ｓ４４０により、書き込み指令の対象となったブロックに記憶済みのデータとは、ブロックの先頭１バイト目が必ず異なるリフレッシュデータを選択した上で、書き込み指令をフラッシュメモリデバイス１８に与えている。そのため、メモリコントローラ１８Ａが上述のような比較を開始すると、先頭１バイト目で直ちに相違箇所が見つかるので、フラッシュメモリ１８Ｂに対する実際の書き込みが実行されることになる。
【００５６】
こうしてＳ４５０を終えたら、Ｓ４１０へと戻る。これにより、未処理のブロックが残っている間は（Ｓ４１０：ＹＥＳ）、上述のＳ４４１０〜Ｓ４５０が繰り返されて、未処理のブロックに対してリフレッシュデータが書き込まれてゆく。そして、Ｓ４１０へと戻ったときに、未処理のブロックが残っていなければ（Ｓ４１０：ＮＯ）、リフレッシュデータ書き込み処理を終了する。なお、リフレッシュデータ書き込み処理を終了したら、図２のＳ２５０へと進む。
【００５７】
Ｓ２５０へ進んだ場合、ＣＰＵ１１は、復元フラグをオンにする（Ｓ２５０）。この復元フラグは、リフレッシュデータ書き込み処理が終了した結果、Ｓ２１０でＨＤＤに保存したフラッシュメモリの内容をフラッシュメモリデバイス１８に書き戻してもよい状態になったときに、その旨を示すためにＳ２５０でオンとされる。
【００５８】
続いて、ＣＰＵ１１は、リフレッシュ履歴に日付を記録する（Ｓ２６０）。この日付は、既に説明したＳ１３０での判断を行う際に利用されることになる。なお、以上のような処理を終えたら、以降は、Ｓ２４０で開始した通常サービスを実行しながら、ＰＣ１が再起動されるのを待つ。そして、任意のタイミングでＰＣ１の再起動が行われれば（Ｓ２７０）、その時点でこの処理は一旦中断することになる。
【００５９】
さて、ＰＣ１の再起動が行われると、その起動時点で図２に示す処理が再び最初から実行されることになる。すなわち、ＣＰＵ１１は、まず、復元フラグがオンか否かを判断する（Ｓ１１０）。ただし、この段階では、既にＳ２５０が実行されていて、復元フラグはオンとされているので（Ｓ１１０：ＹＥＳ）、この場合、ＣＰＵ１１は、ＨＤＤ上のイメージ内容をフラッシュメモリに保存する（Ｓ３１０）。
【００６０】
そして、ＣＰＵ１１は、リフレッシュ中フラグをオフにして（Ｓ３２０）、復元フラグをオフにして（Ｓ３３０）、Ｓ１４０へと進む。その結果、ＰＣ１は、フラッシュメモリデバイス１８をブートドライブとして起動することになる。
【００６１】
ちなみに、Ｓ２３０において、ディスクイメージ２４を利用して仮想的なブートドライブを生成した後、Ｓ２４０で通常サービスを開始すると、ＯＳの稼働に伴って仮想的なブートドライブ内のファイルはいくつかが更新されるが、そのような更新も含めて、Ｓ３１０ではディスクイメージ２４の内容がフラッシュメモリ１８Ｂに書き戻されている。したがって、Ｓ３１０を経てＳ１４０へと進んだ場合には、上記のような更新も反映された状態でＯＳが機能することになる。
【００６２】
ところで、Ｓ２４０でリフレッシュデータ書き込み処理を開始した後、そのリフレッシュデータ書き込み処理が完了する前に、ＰＣ１が再起動されることもあり得る。この場合、その起動時点で図２に示す処理が再び最初から実行されることになる。すなわち、ＣＰＵ１１は、まず、復元フラグがオンか否かを判断する（Ｓ１１０）。
【００６３】
ただし、この段階では、リフレッシュデータ書き込み処理が完了しておらず、Ｓ２５０は実行されていないので、復元フラグがオフとされている。そのため、この場合、Ｓ１１０では復元フラグがオンではない（＝オフである）と判断され（Ｓ１１０：ＮＯ）、Ｓ１２０へと進む。
【００６４】
Ｓ１２０へ進んだ場合、ＣＰＵ１１は、リフレッシュ中フラグがオンか否かを判断する（Ｓ１２０）。この段階では、既にＳ２２０が実行されることでリフレッシュ中フラグはオンにされているので（Ｓ１２０：ＹＥＳ）、Ｓ２３０へと進む。その結果、ＣＰＵ１１は、ＨＤＤ上のイメージをマウント又はオープンして起動し（Ｓ２３０）、通常サービスを開始するとともに、通常サービスと並行してリフレッシュデータ書き込み処理を再開することになる（Ｓ２４０）。
【００６５】
［効果］
以上説明した通り、上記ＰＣ１によれば、フラッシュメモリデバイス１８（本発明でいう第一記憶手段の一例に相当。）に記憶されているデータを、Ｓ２１０で読み出してから、Ｓ４１０〜Ｓ４５０でフラッシュメモリデバイス１８にリフレッシュデータを書き込み、さらに、Ｓ２１０で読み出されたデータを、Ｓ３１０でフラッシュメモリデバイス１８に対して書き込むことができる。なお、Ｓ２１０を実行するＣＰＵ１１が本発明でいうデータ読み出し手段の一例に相当し、Ｓ４１０〜Ｓ４５０を実行するＣＰＵ１１が本発明でいうフレッシュデータ書き込み手段の一例に相当し、Ｓ３１０を実行するＣＰＵ１１が本発明でいうデータ再書き込み手段の一例に相当する。
【００６６】
そして、Ｓ４１０〜Ｓ４５０によってリフレッシュデータを書き込む際には、フラッシュメモリ１８Ｂが備える複数のブロックそれぞれに記憶されているデータに基づき、当該データとブロック単位でデータの内容を比較すると１バイト分以上のデータが異なる１ブロック分のデータを、各ブロックに対応するリフレッシュデータとする。
【００６７】
したがって、このようなリフレッシュデータの書き込みをフラッシュメモリデバイス１８に対して指令すれば、フラッシュメモリデバイス１８が備えるメモリコントローラ１８Ａは、各ブロックに対してリフレッシュデータを実際に書き込むことになる。
【００６８】
したがって、上記ＰＣ１であれば、メモリコントローラ１８Ａ側での判断によってリフレッシュデータの書き込みが実行されなくなることはなく、フラッシュメモリ１８Ｂのリフレッシュを確実に実施することができる。
【００６９】
また、上記ＰＣ１において、Ｓ４３０及びＳ４４０では、二種のリフレッシュデータ候補が予め用意されていて、それらの候補の中からリフレッシュデータとして利用するものを選ぶので、Ｓ４３０又はＳ４４０を実行する時点でリフレッシュデータを生成するものよりも、リフレッシュデータを迅速に準備することができる。
【００７０】
また、上記ＰＣ１によれば、Ｓ４２０での判断により、先頭１バイト目の内容が確実に相違するリフレッシュデータを用意する。したがって、フラッシュメモリデバイス１８の備えるメモリコントローラ１８Ａが、データを実際に書き込むかどうかを判断する際、ブロックの先頭からデータの比較を行えば、ブロックの末尾にデータの相違箇所があるリフレッシュデータを用意した場合よりも、その相違箇所を迅速に検出できるようになる。
【００７１】
また、上記ＰＣ１によれば、Ｓ１３０により、前回の実行から所定期間が経過すると再びリフレッシュ処理が実行される。したがって、フラッシュメモリ１８Ｂのデータ保持期間を考慮した適切な期間（例えば、本実施形態では半年。）を上記所定期間として設定することにより、データ保持期間を超過する前にリフレッシュ処理を実行することができる。なお、Ｓ１３０を実行するＣＰＵ１１が本発明でいうリフレッシュ制御手段の一例に相当し、Ｓ２６０を実行するＣＰＵ１１が本発明でいう履歴記録手段の一例に相当する。
【００７２】
また、上記ＰＣ１によれば、フラッシュメモリデバイス１８に対するリフレッシュ処理の実行中であるか否かをリフレッシュ中フラグ２２（本発明でいう第三記憶手段の一例に相当。）に基づいて判断する。そして、リフレッシュ処理の実行中には、ディスクイメージ２４（本発明でいう第二記憶手段の一例に相当。）を仮想的にブロックデバイスと認識し、ディスクイメージ２４に対するデータの読み出し／書き込みを実行する。
【００７３】
したがって、リフレッシュ処理に伴ってフラッシュメモリデバイス１８が使用不能となるにもかかわらず、その代替手段としてディスクイメージ２４を利用することで、リフレッシュ処理の開始前と同等な処理を実行することができる。
【００７４】
特に、上記ＰＣ１の場合、フラッシュメモリデバイス１８及びディスクイメージ２４のうち、いずれかからブートプログラムを読み出してＰＣ１を起動するための起動処理を実行することができる。したがって、リフレッシュ処理に伴ってフラッシュメモリデバイス１８が使用不能となるにもかかわらず、ＰＣ１が起動不能な状態に陥るのを未然に防ぐことができる。なお、Ｓ１５０及びＳ２４０を実行するＣＰＵ１１が本発明でいう処理実行手段の一例に相当する。
【００７５】
［その他の実施形態］
以上、本発明の実施形態について説明したが、本発明は上記の具体的な一実施形態に限定されず、この他にも種々の形態で実施することができる。
【００７６】
例えば、上記実施形態では、前回リフレッシュから半年以上経過したか否かを条件に、リフレッシュ処理を実行していたが、この期間はフラッシュメモリデバイス１８のデータ保持期間を考慮して適宜変更してもよい。
【００７７】
また、上記実施形態では、前回リフレッシュの日付だけを、次のリフレッシュを実行するか否かの判定条件にしていたが、更に詳細にフラッシュメモリデバイス１８に対する書き込みをブロック単位で管理して、実際の書き込みが行われなかったブロックのみを抜粋して判定対象にし、リフレッシュを行うか否かを判定してもよい。
【符号の説明】
【００７８】
１・・・パーソナルコンピュータ（ＰＣ）、１１・・・ＣＰＵ、１２・・・ＲＯＭ、１３・・・ＲＡＭ、１４・・・ハードディスク装置（ＨＤＤ）、１５・・・操作部、１６・・・表示部、１７・・・通信インターフェース、１８・・・フラッシュメモリデバイス、１８Ａ・・・メモリコントローラ、１８Ｂ・・・フラッシュメモリ、２１・・・復元フラグ、２２・・・リフレッシュ中フラグ、２３・・・リフレッシュ履歴、２４・・・ディスクイメージ、３１・・・ブートプログラム。
【要約】
【課題】フラッシュメモリに対してメモリコントローラ経由でデータの読み出し／書き込みが実行されるブロックデバイスにおいても適切にフラッシュメモリのリフレッシュを実施可能とする技術を提供すること。
【解決手段】ＰＣは、リフレッシュデータを書き込む際に、フラッシュメモリが備える複数のブロックそれぞれに記憶されているデータを参照し（Ｓ４２０）、当該データとブロック単位でデータの内容を比較すると１バイト分以上のデータが異なる１ブロック分のデータを、各ブロックに対応するリフレッシュデータとする（Ｓ４３０，Ｓ４４０）。このようなリフレッシュデータの書き込みをフラッシュメモリデバイス１８に対して指令する（Ｓ４５０）。これにより、メモリコントローラ経由であっても、各ブロックに対してリフレッシュデータを実際に書き込むことができる。
【選択図】図３【図１】
0005387743.tif 000002
【図２】
0005387743.tif 000003
【図３】
0005387743.tif 000004