(57)【要約】【課題】不揮発性記憶装置においてデータを保持できる時間を長期化する。【解決手段】情報処理装置１は、不揮発性の記憶装置１ａと、スクラビング処理２を実行する制御部１ｂとを有する。スクラビング処理２は、記憶装置１ａからデータ３を読み出す処理（ステップＳ１）と、データ３を読み出した結果に応じてデータ３の書き直しの要否を判定する処理（ステップＳ２）と、書き直しが必要と判定した場合、読み出したデータ３を記憶装置１ａの同一位置に複数回連続的に書き直す処理（ステップＳ３）とを含む。データ３が複数回連続的に書き直されることで、データ３が１回だけ書き直される場合と比較して、記憶装置１ａにおいてデータ３が保持される時間を長期化できる。【選択図】図１
2020119007.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の記憶装置と、
前記記憶装置からデータを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する制御部と、
を有する情報処理装置。
【請求項２】
前記制御部は、さらに、前記記憶装置に対する書き込み要求に応じて前記データを書き込む際には、前記データを前記記憶装置に１回書き込み、
前記制御部は、前記書き込み要求に応じた前記データの書き込み後、前記データについての前記スクラビング処理を第１の周期で実行し、実行された前記スクラビング処理において前記書き直しを最初に実行した後、前記スクラビング処理を前記第１の周期より長い第２の周期で実行する、
請求項１記載の情報処理装置。
【請求項３】
前記制御部は、前記第２の周期で前記スクラビング処理を所定回数実行すると、前記スクラビング処理の実行周期を前記第２の周期より短縮する、
請求項２記載の情報処理装置。
【請求項４】
前記制御部は、前記第２の周期で現れる前記スクラビング処理の実行時刻のうち、所定の複数回数ごとに、前記書き直す処理を前記判定の結果に関係なく実行する、
請求項２記載の情報処理装置。
【請求項５】
前記制御部は、前記書き直す処理を実行するたびに、前記データを連続的に書き直す回数を増加させる、
請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記制御部は、前記書き直す処理を実行するたびに、前記データを連続的に書き直す回数を増加させるとともに、前記スクラビング処理の実行周期を延長する、
請求項１記載の情報処理装置。
【請求項７】
前記制御部は、さらに、前記記憶装置に対する書き込み要求に応じて前記データを書き込む際には、前記データを前記同一位置に１回または複数回連続的に書き込むとともに、前記データの特性に応じて前記データを書き込む回数を決定する、
請求項１または６記載の情報処理装置。
【請求項８】
前記制御部は、さらに、決定された前記データの書き込み回数に応じて、前記データについての前記スクラビング処理の実行周期を決定する、
請求項７記載の情報処理装置。
【請求項９】
前記判定では、読み出した前記データにおける反転したビット数が所定数以上の場合に書き直しが必要と判定し、
前記書き直す処理では、読み出した前記データにおける反転したビットを訂正した訂正後のデータを、前記記憶装置に書き直す、
請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
不揮発性の記憶装置からデータを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する制御部、
を有する記憶制御装置。
【請求項１１】
コンピュータに、
不揮発性の記憶装置からデータを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する、
処理を実行させる記憶制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、記憶制御装置および記憶制御プログラムに関する。
【背景技術】
【０００２】
近年、フラッシュメモリよりアクセス速度が高速な不揮発性記憶装置として、ストレージクラスメモリ（Storage Class Memory：ＳＣＭ）が注目されている。ＳＣＭとしては、例えば、磁気抵抗メモリ（Magnetoresistive Random Access Memory：ＭＲＡＭ）抵抗可変メモリ（Resistive RAM：ＲｅＲＡＭ）、相変化メモリ（Phase Change Memory：ＰＣＭ）などがある。このようなＳＣＭは、例えば、フラッシュメモリを用いたＳＳＤ（Solid State Drive）を置き換える記憶装置として注目されている。
【０００３】
一方、ＤＲＡＭ（Dynamic RAM）では、宇宙線などの影響によってメモリ素子のビット反転が生じ得ることが知られている。そして、このような現象から記憶データを守るために、スクラビング（Scrubbing）が実行される。スクラビングでは、例えばＤＲＡＭへのアクセスが低負荷の期間に、ＤＲＡＭからデータが読み出され、ＥＣＣ（Error Checking and Correction）により、反転したビット数が検出されるとともにそのビット値が訂正される。反転したビット数が所定数以上の場合、読み出されて訂正されたデータがＤＲＡＭに書き直される。
【０００４】
また、メモリの制御に関して次のような技術が提案されている。例えば、書き込み回数および読み出し回数の合計が所定回数に達した場合に、メモリセルアレイに含まれる全メモリセルについて再書き込みが行われる強誘電体メモリが提案されている。また、車両用電子制御装置に搭載されるフラッシュメモリにおいて、マイコンの動作が停止していても、最終書き込み時刻からの経過時間がメモリによるデータ保持時間に達する前に、メモリ内のデータを更新する技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−００７０５１号公報
【特許文献２】特開２０１４−２２５２１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、本願の発明者により、ＳＣＭのような不揮発性記憶装置において、時間経過に伴ってデータの保持能力が低下する場合があることがわかった。データを保持可能な時間が短い場合、データを頻繁に書き直す必要が生じてしまう。
【０００７】
１つの側面では、本発明は、不揮発性記憶装置においてデータを保持できる時間を長期化することが可能な情報処理装置、記憶制御装置および記憶制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、不揮発性の記憶装置と、次のようなスクラビング処理を実行する制御部とを有する情報処理装置が提供される。スクラビング処理は、記憶装置からデータを読み出す処理と、データを読み出した結果に応じてデータの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出したデータを記憶装置の同一位置に複数回連続的に書き直す処理とを含む。
【０００９】
また、１つの案では、上記の情報処理装置の制御部と同様の処理を実行する記憶制御装置が提供される。
さらに、１つの案では、上記の情報処理装置の制御部と同様の処理をコンピュータに実行させる記憶制御プログラムが提供される。
【発明の効果】
【００１０】
１つの側面では、不揮発性記憶装置においてデータを保持できる時間を長期化できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ＣＭのハードウェア構成例を示す図である。
【図４】ＣＭが備える処理機能の構成例を示す図である。
【図５】処理例１で利用されるスクラビング制御テーブルのデータ構成例を示す図である。
【図６】処理例１における通常書き込み処理の手順を示すフローチャートの例である。
【図７】処理例１におけるスクラビング制御処理の手順を示すフローチャートの例（その１）である。
【図８】処理例１におけるスクラビング制御処理の手順を示すフローチャートの例（その２）である。
【図９】処理例１〜３におけるスクラビングの実行例を示す図である。
【図１０】処理例４で利用されるスクラビング制御テーブルのデータ構成例を示す図である。
【図１１】処理例４におけるスクラビング制御処理の手順を示すフローチャートの例（その１）である。
【図１２】処理例４におけるスクラビング制御処理の手順を示すフローチャートの例（その２）である。
【図１３】処理例５における通常書き込み処理の手順を示すフローチャートの例である。
【図１４】処理例６で利用されるデータ特性テーブルのデータ構成例を示す図である。
【図１５】処理例６における通常書き込み処理の手順を示すフローチャートの例である。
【図１６】第３の実施の形態におけるＣＭが備える処理機能の構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る情報処理装置の構成例および処理例を示す図である。図１に示す情報処理装置１は、記憶装置１ａと制御部１ｂを有する。
【００１３】
記憶装置１ａは、不揮発性の記憶装置であり、例えばＳＣＭである。記憶装置１ａとして適用されるＳＣＭとしては、例えば、ＭＲＡＭ、ＲｅＲＡＭ、ＰＣＭがある。記憶装置１ａは、データを書き込んでからの時間経過に伴って、データ保持能力が低下し、ビット反転が発生しやすくなるという特性を有する。本願の発明者は、このような記憶装置１ａにおいて、同一の記憶領域に対して同一のデータを複数回連続的に書き込んだ場合に、その連続的な書き込み回数が多いほど、ビット反転が発生しにくくなり、データを保持可能な期間が長くなることを実験により発見した。
【００１４】
制御部１ｂは、例えば、プロセッサである。制御部１ｂは、記憶装置１ａの上記特性を利用して、記憶装置１ａに記憶されたデータについて、以下のようなスクラビング処理２を実行する。ここでは例として、記憶装置１ａにデータ３が記憶されており、このデータ３についてのスクラビング処理が実行されるものとする。
【００１５】
スクラビング処理２は、記憶装置１ａからデータ３を読み出す処理（ステップＳ１）と、データ３を読み出した結果に応じてデータ３の書き直しの要否を判定する処理（ステップＳ２）と、書き直しが必要と判定した場合、読み出したデータ３を記憶装置１ａの同一位置に複数回連続的に書き直す処理（ステップＳ３）とを含む。ステップＳ３においてデータ３が複数回連続的に書き直されることで、１回だけ書き直される場合と比較して、記憶装置１ａがデータ３を保持可能な時間を長期化することができる。
【００１６】
また、このようなスクラビング処理２は、周期的に繰り返し実行されてもよい。この場合、一度ステップＳ３が実行されて、データ３が複数回連続的に書き直されると、その後のスクラビング処理２の実行時にはデータ３の書き直しが不要と判定される確率が高くなる。これにより、ステップＳ３による複数回の書き直しの実行頻度が低くなる。その結果、スクラビング処理が、記憶装置１ａに対するスクラビング処理２以外のアクセスの性能に与える影響が低減され、そのアクセス性能を向上させることができる。
【００１７】
〔第２の実施の形態〕
次に、図１の情報処理装置１を含む情報処理システムとして、ストレージシステムを例示して説明する。
【００１８】
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ＣＭ（Controller Module）１０１およびドライブ部１０２を備えたストレージ装置１００と、ホスト装置２００を含む。なお、ＣＭ１０１は、図１の情報処理装置１の一例である。
【００１９】
ＣＭ１０１は、例えばＳＡＮ（Storage Area Network）を介して、ホスト装置２００と接続されている。ＣＭ１０１は、ホスト装置２００からの要求に応じて、ドライブ部１０２に搭載された記憶装置１０２ａ，１０２ｂ，１０２ｃ，・・・に対するアクセスを制御するストレージ制御装置である。例えば、ＣＭ１０１は、記憶装置１０２ａ，１０２ｂ，１０２ｃ，・・・の記憶領域を用いた論理ボリュームを生成し、ホスト装置２００から論理ボリュームに対するアクセスを受け付ける。
【００２０】
ドライブ部１０２には、ホスト装置２００からのアクセス対象となる複数台の記憶装置１０２ａ，１０２ｂ，１０２ｃ，・・・が搭載されている。このような記憶装置１０２ａ，１０２ｂ，１０２ｃ，・・・としては、ＨＤＤ（Hard Disk Drive）、ＳＳＤなどの不揮発性記憶装置が用いられる。
【００２１】
ホスト装置２００は、例えば、種々の業務処理を実行するサーバコンピュータである。ホスト装置２００は、論理ボリュームに対するアクセス要求をＣＭ１０１に送信することで、論理ボリュームにアクセスする。なお、ＣＭ１０１にはホスト装置２００が複数台接続されていてもよい。
【００２２】
図３は、ＣＭのハードウェア構成例を示す図である。ＣＭ１０１は、プロセッサ１１１、ＲＡＭ１１２、ＭＲＡＭ１１３、ＳＳＤ１１４、ホストインタフェース（Ｉ／Ｆ）１１５およびドライブインタフェース（Ｉ／Ｆ）１１６を備える。なお、プロセッサ１１１は、図１の制御部１ｂの一例であり、ＭＲＡＭ１１３は、図１の記憶装置１ａの一例である。
【００２３】
プロセッサ１１１は、ＣＭ１０１全体を統括的に制御する。プロセッサ１１１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１１１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２４】
ＲＡＭ１１２は、ＣＭ１０１の主記憶装置として使用される。ＲＡＭ１１２には、プロセッサ１１１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１１２には、プロセッサ１１１による処理に必要な各種データが格納される。例えば、ＲＡＭ１１２には、ホスト装置２００から論理ボリュームに対して書き込みが要求されたデータに対応するキャッシュデータが格納される。ＲＡＭ１１２内のキャッシュデータの格納領域は、例えば、一次キャッシュとして利用される。
【００２５】
ＭＲＡＭ１１３には、プロセッサ１１１による処理に必要な各種データが格納される。ＭＲＡＭ１１３は、ＲＡＭ１１２と、ドライブ部１０２内の記憶装置１０２ａ，１０２ｂ，１０２ｃ，・・・との間における中間的なアクセス速度性能を有している。このため、例えば、上記のようにＲＡＭ１１２の一部の領域が一次キャッシュとして利用される場合、ＭＲＡＭ１１３は二次キャッシュとして利用される。なお、ＣＭ１０１には、ＭＲＡＭ１１３の代わりに、ＲｅＲＡＭ、ＰＣＭなど、データの連続書き込み回数に応じてそのデータの保持時間が変動する他の種類のＳＣＭが搭載されてもよい。
【００２６】
ＳＳＤ１１４は、ＣＭ１０１の補助記憶装置として使用される。ＳＳＤ１１４には、ＯＳプログラム、アプリケーションプログラムおよび各種データが格納される。なお、補助記憶装置としては、ＨＤＤなどの他の種類の不揮発性記憶装置を使用することもできる。
【００２７】
ホストインタフェース１１５は、ホスト装置２００と通信するための通信インタフェースである。ドライブインタフェース１１６は、ドライブ部１０２に搭載された記憶装置１０２ａ，１０２ｂ，１０２ｃ，・・・と通信するための通信インタフェースである。
【００２８】
なお、ＣＭ１０１においては、ＳＳＤ１１４が搭載されず、ＳＳＤ１１４の代わりにＭＲＡＭ１１３が補助記憶装置として使用されてもよい。逆に、ＭＲＡＭ１１３は、ＲＡＭ１１２とともに主記憶装置として使用されてもよい。例えば、主記憶装置に格納されるデータのうち、電源遮断時に維持される必要のないデータがＲＡＭ１１２に格納され、維持される必要があるデータがＭＲＡＭ１１３に格納されてもよい。
【００２９】
以上のハードウェア構成によって、ＣＭ１０１の処理機能を実現できる。なお、図示しないが、ホスト装置２００も、プロセッサや主記憶装置、補助記憶装置などを備えるコンピュータとして実現可能である。
【００３０】
ところで、本願の発明者は、ＭＲＡＭについて、データを書き込んでからの時間経過に伴って、データ保持能力が低下し、ビット反転が発生しやすくなることを実験により発見した。また、発明者は、ＭＲＡＭにおけるデータ保持時間を回復するために、データを書き直す（リライトする）ことが有効であることを実験により発見した。さらに、発明者は、ＭＲＡＭの同一記憶領域に対して同一データを複数回連続的に書き込んだ場合に、その連続的な書き込み回数が多いほど、ビット反転が発生しにくくなり、データを保持可能な期間が長くなることを実験により発見した。
【００３１】
このような特性は、ＭＲＡＭだけでなく、少なくともＲｅＲＡＭ、ＰＣＭについても確認された。これらの不揮発性メモリは、物質の状態変化によってデータを記憶するが、同一データが複数回書き込まれることによって物質の状態が安定することから、データ保持時間が長くなると考えられる。
【００３２】
本実施の形態のＣＭ１０１は、このような特性を利用して、ＭＲＡＭに対する初回のデータ書き込み時や、その後のスクラビングでのリライト時において、データを１回または複数回連続的に書き込むようにする。そして、ＣＭ１０１は、その書き込み回数を制御することで、データを保持可能な時間を調整するとともに、スクラビングやリライトの実行間隔を変更する。これにより、スクラビングによるデータ読み出しやリライトのためのデータ書き込みの実行頻度を低下させ、これらの実行がホスト装置２００からの要求に応じた論理ボリュームに対するアクセス性能に対してできるだけ悪影響を与えないようにする。
【００３３】
図４は、ＣＭが備える処理機能の構成例を示す図である。なお、図４には、ＭＲＡＭ１１３のハードウェア構成についても例示している。
ＣＭ１０１は、Ｉ／Ｏ（Input／Output）制御部１２０を備える。Ｉ／Ｏ制御部１２０による処理は、例えば、プロセッサ１１１が所定のアプリケーションプログラムを実行することで実現される。
【００３４】
Ｉ／Ｏ制御部１２０は、ドライブ部１０２内の記憶装置１０２ａ，１０２ｂ，１０２ｃ，・・・の記憶領域を用いた論理ボリュームに対する、ホスト装置２００からのアクセスを制御する。Ｉ／Ｏ制御部１２０は、そのアクセス制御の際にＭＲＡＭ１１３にアクセスする。例えば、Ｉ／Ｏ制御部１２０は、ＭＲＡＭ１１３の記憶領域を、ホスト装置２００から書き込みが要求されたデータに対応するキャッシュデータを保持する二次キャッシュとして利用する。
【００３５】
なお、Ｉ／Ｏ制御部１２０は、ＭＲＡＭ１１３にアクセスする処理機能（アプリケーション）の一例であり、これ以外の処理機能がＭＲＡＭ１１３にアクセスしてもよい。
ＭＲＡＭ１１３は、ハードウェアとして、メモリセルアレイ１３０、記憶部１４０およびコントローラ１５０を備える。
【００３６】
メモリセルアレイ１３０には、データが保持されるメモリセルが多数配列されている。また、メモリセルアレイ１３０は、一定サイズのデータがそれぞれ保持されるブロック１３１に分割されている。ブロック１３１のサイズは、例えば、５１２バイトである。ブロック１３１は、書き込みデータの管理単位であり、本実施の形態では、ブロック１３１を単位としてスクラビングが実行される。
【００３７】
記憶部１４０は、コントローラ１５０の処理で利用される各種のデータが格納される記憶装置であり、例えば、ＤＲＡＭなどの不揮発性記憶装置として実現される。記憶部１４０には、スクラビングの実行制御のために参照されるスクラビング制御テーブル１４１が記憶される。スクラビング制御テーブル１４１は、メモリセルアレイ１３０内のブロック１３１ごとのレコードを備えている。各レコードには、例えば、対応するブロック１３１に対するデータの書き込み回数などが記録される。
【００３８】
コントローラ１５０は、メモリセルアレイ１３０に対するデータの読み書きを制御する制御回路である。コントローラ１５０は、書き込み要求受信部１５１、書き込み処理部１５２、ＥＣＣエンコーダ１５３、読み出し要求受信部１５４、読み出し処理部１５５、ＥＣＣデコーダ１５６およびスクラビング処理部１５７を備える。これらの処理機能による処理の少なくとも一部は、例えば、コントローラ１５０が備えるプロセッサが所定のファームウェアプログラムを実行することで実現される。また、これらの処理機能による処理の少なくとも一部は、例えば、コントローラ１５０が備える専用のハードウェア回路によって実行されてもよい。
【００３９】
書き込み要求受信部１５１は、Ｉ／Ｏ制御部１２０またはスクラビング処理部１５７から、データの書き込み要求と書き込みデータを受信する。書き込み要求受信部１５１は、書き込み要求に応じて、書き込みデータを書き込み処理部１５２に出力し、要求に応じた書き込み処理を実行させる。また、書き込み要求受信部１５１は、Ｉ／Ｏ制御部１２０からの書き込み要求に応じた書き込み処理が完了すると、スクラビング制御テーブル１４１に記録された、書き込み先ブロックに対応する書き込み回数を更新する。
【００４０】
書き込み処理部１５２は、書き込み要求受信部１５１からの要求に応じて、書き込みデータをＥＣＣエンコーダ１５３を介してメモリセルアレイ１３０に書き込む。ＥＣＣエンコーダ１５３は、書き込みデータに基づいてエラーチェックコードを算出し、書き込みデータをエラーチェックコードとともにメモリセルアレイ１３０に書き込む。なお、メモリセルアレイ１３０においては、少なくとも異なるブロック１３１の間では、書き込まれるデータに対して異なるエラーチェックコードが付与される。
【００４１】
読み出し要求受信部１５４は、Ｉ／Ｏ制御部１２０またはスクラビング処理部１５７から、データの読み出し要求を受信する。読み出し要求受信部１５４は、読み出し要求に応じて、読み出し処理部１５５にメモリセルアレイ１３０からのデータの読み出し処理を実行させ、読み出されたデータを取得して読み出し要求の出力元に返信する。
【００４２】
読み出し処理部１５５は、読み出し要求受信部１５４からの要求に応じて、データをメモリセルアレイ１３０からＥＣＣデコーダ１５６を介して読み出し、読み出されたデータを読み出し要求受信部１５４に出力する。
【００４３】
ＥＣＣデコーダ１５６は、読み出しが要求されたデータをエラーチェックコードとともにメモリセルアレイ１３０から読み出し、エラーチェックコードに基づいて読み出されたデータの誤り訂正処理を実行する。誤り訂正単位のデータ長における訂正可能なビット数をｎとすると、ＥＣＣデコーダ１５６は、反転ビット（誤りが検出されたビット）のビット数がｎ以下の場合、読み出されたデータを訂正して読み出し処理部１５５に出力する。また、スクラビング処理部１５７からの要求に応じた読み出し処理の場合、ＥＣＣデコーダ１５６は、検出された反転ビットのビット数をスクラビング処理部１５７に通知する。
【００４４】
スクラビング処理部１５７は、所定の間隔でスクラビングを周期的に実行する。スクラビングは、ブロック１３１を単位として実行される。スクラビングとは、ブロック１３１からデータを読み出し、そのデータ読み出し時に検出された反転ビット数が所定の閾値以上である場合に、読み出されたデータをブロック１３１にリライトする処理である。
【００４５】
あるブロック１３１のスクラビング実行時刻になると、スクラビング処理部１５７は、読み出し要求受信部１５４に対して、そのブロック１３１からのデータの読み出しを要求する。スクラビング処理部１５７は、この要求に応じてブロック１３１から読み出されたデータを読み出し要求受信部１５４から受信するとともに、検出された反転ビットのビット数をＥＣＣデコーダ１５６から受信する。
【００４６】
スクラビング処理部１５７は、反転ビットのビット数に基づいて、データのリライトが必要かを判定する。反転ビットのビット数が所定の閾値ｎ１以上である場合に、リライトが必要と判定される。その場合、スクラビング処理部１５７は、読み出されたデータをブロック１３１にリライトするように書き込み要求受信部１５１に要求する。このとき、スクラビング処理部１５７は、スクラビング制御テーブル１４１に記録された、そのブロック１３１に対応する書き込み回数に基づいて、連続書き込み回数を特定する。そして、スクラビング処理部１５７は、読み出された同一のデータを特定された連続書き込み回数の分だけ連続的にブロック１３１に書き込むように要求する。また、スクラビング処理部１５７は、スクラビング制御テーブル１４１に記録された書き込み回数を、連続的に書き込んだ回数によって更新する。
【００４７】
なお、閾値ｎ１は、ＥＣＣデコーダ１５６によって訂正可能なビット数ｎより小さい値（かつ、０より大きい値）に設定される。
また、スクラビング処理部１５７は、各ブロック１３１のスクラビングの実行周期（実行頻度）を、スクラビング制御テーブル１４１に記録された、各ブロック１３１に対応する書き込み回数に応じて調整することができる。
【００４８】
次に、コントローラ１５０によるデータの書き込み処理およびスクラビング制御処理の具体例として、複数の処理例（処理例１〜６）を示す。
＜処理例１＞
処理例１では、Ｉ／Ｏ制御部１２０からの書き込み要求に応じてあるブロック１３１にデータが書き込まれた後、そのブロック１３１についてのスクラビングが一定周期で実行される。また、スクラビングによりデータのリライトが必要と判定されると、そのリライトの際にデータが複数回連続してリライトされる。このような連続リライトの実行により、ブロック１３１においてデータを保持可能な時間が長くなることから、連続リライトの実行後にはスクラビングの実行周期が延長され、スクラビングの実行頻度が低減される。
【００４９】
図５は、処理例１で利用されるスクラビング制御テーブルのデータ構成例を示す図である。処理例１において、スクラビング制御テーブル１４１には、ブロック１３１ごとのレコード１４２が含まれる。各レコード１４２には、書き込み回数Ｃｗ、到達回数Ｃｓｃ、回数設定値Ｎおよび周期設定値Ｍが記録される。
【００５０】
書き込み回数Ｃｗは、ブロック１３１に対する直近の書き込み処理時におけるデータの連続書き込み回数を示す。この「書き込み処理」とは、Ｉ／Ｏ制御部１２０からの書き込み要求に応じた書き込み処理と、スクラビングでのリライト処理とを含む。到達回数Ｃｓｃは、ブロック１３１について前回スクラビングが実行されてから、一定のスクラビング実行周期で現れるスクラビング実行時刻に到達した回数を示す。なお、書き込み回数Ｃｗと到達回数Ｃｓｃの値は、時間経過に伴って可変される。
【００５１】
回数設定値Ｎは、ブロック１３１にデータを複数回連続的に書き込む場合の書き込み回数を示す。この処理例１では、データをブロック１３１に書き込む際、そのデータを１回だけ書き込む処理と、Ｎ回連続的に書き込む処理のいずれかが実行される。周期設定値Ｍは、スクラビングの実行頻度を通常より低下させる場合のスクラビングの実行周期を示す設定値である。この周期設定値Ｍは、通常のスクラビング実行周期の何回分かを示す値であり、２以上の整数が設定される。なお、回数設定値Ｎと周期設定値Ｍは、あらかじめ設定される固定的な値である。
【００５２】
図６は、処理例１における通常書き込み処理の手順を示すフローチャートの例である。なお、「通常書き込み処理」とは、Ｉ／Ｏ制御部１２０からの書き込み要求に応じて実行される書き込み処理である。また、ＭＲＡＭ１１３に対してＩ／Ｏ制御部１２０以外のアプリケーションからアクセス可能である場合、これらのアプリケーションからの書き込み要求に応じた書き込み処理も、通常書き込み処理に含まれる。
【００５３】
［ステップＳ１１］書き込み要求受信部１５１は、Ｉ／Ｏ制御部１２０からの書き込み要求を監視し、書き込み要求と書き込みデータを受信すると、ステップＳ１２の処理を実行する。
【００５４】
［ステップＳ１２］書き込み要求受信部１５１は、書き込みデータを書き込み先のブロック１３１に１回書き込むように書き込み処理部１５２に要求する。書き込み処理部１５２は、書き込みデータをＥＣＣエンコーダ１５３を介して書き込み先のブロック１３１に１回書き込む。書き込みが完了すると、書き込み要求受信部１５１は、スクラビング制御テーブル１４１に含まれる、書き込み先のブロック１３１に対応するレコード１４２の書き込み回数Ｃｗに、「１」を設定する。
【００５５】
なお、ステップＳ１２では、ブロック１３１内の一部だけにデータが書き込まれた場合でも、書き込み回数Ｃｗは強制的に「１」に設定され、そのブロック１３１の全体について、直近の書き込み時に複数回の連続書き込みが行われていない扱いになる。これにより、ブロック１３１内の一部だけにデータが書き込まれた場合でも、そのブロックについては次のスクラビング実行時刻において必ずスクラビングが実行されるようになる（後述する図７のステップＳ２３，Ｓ２４に対応）。
【００５６】
［ステップＳ１３］書き込み要求受信部１５１は、書き込み先のブロック１３１に対応するレコード１４２の到達回数Ｃｓｃを、「０」にリセットする。
以上のように、Ｉ／Ｏ制御部１２０からの要求に応じてブロック１３１にデータが書き込まれたとき、そのブロック１３１に対応する書き込み回数Ｃｗには「１」が設定される。この設定値は、ブロック１３１に対する直近の書き込み処理時における連続書き込み回数が「１」である（すなわち、連続書き込みが行われていない）ことを示す。
【００５７】
図７、図８は、処理例１におけるスクラビング制御処理の手順を示すフローチャートの例である。図７、図８の処理は、ブロック１３１ごとに個別に実行される。
［ステップＳ２１］スクラビング処理部１５７は、対応するブロック１３１についてのスクラビング実行時刻になったかを判定する。このブロック１３１についての前回のスクラビング実行時刻から、スクラビング実行周期を示す所定時間が経過した場合、スクラビング実行時刻になったと判定される。その場合、スクラビング処理部１５７はステップＳ２２の処理を実行する。これにより、ステップＳ２２以降の処理は、一定のスクラビング実行周期で実行される。
【００５８】
［ステップＳ２２］スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２から書き込み回数Ｃｗを読み出す。スクラビング処理部１５７は、書き込み回数Ｃｗが「１」の場合、ステップＳ２３の処理を実行し、書き込み回数Ｃｗが「１」より大きい場合、図８のステップＳ３１の処理を実行する。
【００５９】
なお、前者の場合、通常のスクラビング実行周期でスクラビングを実行すべきと判定されて、ステップＳ２３〜Ｓ２６のスクラビングが実行される。一方、後者の場合、スクラビングの実行頻度を低減させるように設定されていると判定されて、ステップＳ３１以降において現時刻でスクラビングを実行すべきかが判定される。このように、処理例１では、書き込み回数Ｃｗは、「１」か否かによって、スクラビングを通常の頻度で実行するか、あるいは頻度を低減させて実行するかを判定するために使用されている。このため、例えば、書き込み回数Ｃｗの代わりにフラグ情報が使用されてもよい。
【００６０】
［ステップＳ２３］スクラビング処理部１５７は、対応するブロック１３１からのデータの読み出しを読み出し要求受信部１５４に要求する。この要求に応じてブロック１３１からデータが読み出され、スクラビング処理部１５７は、読み出されたデータを読み出し要求受信部１５４から取得する。このとき、データに許容ビット数以下の反転ビットがある場合には、ＥＣＣデコーダ１５６によって反転ビットが訂正された訂正後のデータが、読み出し要求受信部１５４からスクラビング処理部１５７に出力される。これとともに、スクラビング処理部１５７は、反転ビット数の検出値をＥＣＣデコーダ１５６から取得する。
【００６１】
［ステップＳ２４］スクラビング処理部１５７は、取得した反転ビット数が所定値（前述の閾値ｎ１）以上かを判定する。スクラビング処理部１５７は、反転ビット数が閾値ｎ１以上の場合、ステップＳ２５の処理を実行する。この場合、前回の書き込み処理からの時間が長くなるなどの原因によってブロック１３１内のデータにおけるビット反転がある程度進行し、データを正しく読めなくなる状態に近づいていると考えられる。このため、データを正しく保持可能な時間を延長するために、データのリライトが実行される。一方、スクラビング処理部１５７は、反転ビット数が閾値ｎ１未満の場合、処理をステップＳ２１に進める。この場合、データを正しく読める状態が今後しばらくの間続くと考えられるため、リライトの実行がスキップされる。
【００６２】
なお、ステップＳ２４の判定では、ブロックから読み出された、誤り訂正単位のデータ長をそれぞれ有するデータの中に、反転ビット数が閾値ｎ１以上のデータが１つでもあった場合に、「Ｙｅｓ」、すなわちリライトを実行すると判定される。
【００６３】
また、図示しないが、検出された反転ビット数が、データを訂正可能な上限ビット数（前述の閾値ｎ、ｎ＞ｎ１）を超えていた場合には、読み出しエラーとなり、図７の処理が終了する。
【００６４】
［ステップＳ２５］スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２に記録された回数設定値Ｎに基づき、ステップＳ２３で読み出された、反転ビット訂正後のデータを、ブロック１３１に対してＮ回連続的にリライトする。また、スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２内の書き込み回数Ｃｗを、「Ｎ」に更新する。これにより、ブロック１３１に対する直近の書き込み時に複数回の連続書き込みが行われたことが記録される。
【００６５】
［ステップＳ２６］スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２内の到達回数Ｃｓｃを、「０」にリセットする。この後、処理はステップＳ２１に進められる。
【００６６】
以下、図８を用いて説明を続ける。
［ステップＳ３１］スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２内の到達回数Ｃｓｃを、「１」だけカウントアップする。
【００６７】
［ステップＳ３２］スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２に記録された周期設定値Ｍを読み出し、カウントアップされた到達回数Ｃｓｃが周期設定値Ｍと等しいか、すなわち周期設定値Ｍに達したかを判定する。スクラビング処理部１５７は、到達回数Ｃｓｃが周期設定値Ｍに達した場合、スクラビング処理の実行頻度が低下された状態において、スクラビング処理をスキップせずに実行すべき時刻になったと判定して、処理をステップＳ３３に進める。一方、スクラビング処理部１５７は、到達回数Ｃｓｃが周期設定値Ｍに達していない場合、スクラビング処理の実行をスキップすべきと判定して、処理を図７のステップＳ２１に進める。
【００６８】
［ステップＳ３３］スクラビング処理部１５７は、対応するブロック１３１からのデータの読み出しを読み出し要求受信部１５４に要求する。この要求に応じてブロック１３１からデータが読み出され、スクラビング処理部１５７は、読み出されたデータを読み出し要求受信部１５４から取得する。これとともに、スクラビング処理部１５７は、反転ビット数の検出値をＥＣＣデコーダ１５６から取得する。
【００６９】
［ステップＳ３４］スクラビング処理部１５７は、取得した反転ビット数が閾値ｎ１以上かを判定する。スクラビング処理部１５７は、反転ビット数が閾値ｎ１以上の場合、データのリライトが必要と判定して、ステップＳ３５の処理を実行する。一方、スクラビング処理部１５７は、反転ビット数が閾値ｎ１未満の場合、データのリライトが不要と判定して、ステップＳ３６の処理を実行する。
【００７０】
［ステップＳ３５］スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２に記録された回数設定値Ｎに基づき、ステップＳ３３で読み出された、反転ビット訂正後のデータを、ブロック１３１に対してＮ回連続的にリライトする。また、スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２内の書き込み回数Ｃｗを、「Ｎ」に更新する。これにより、ブロック１３１に対する直近の書き込み時に複数回の連続書き込みが行われたことが記録される。
【００７１】
なお、図示しないが、図７のステップＳ２４と同様に、検出された反転ビット数が、データを訂正可能な上限のビット数ｎ（ｎ＞ｎ１）を超えていた場合には、読み出しエラーとなり、図８の処理が終了する。
【００７２】
［ステップＳ３６］スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２内の到達回数Ｃｓｃを、「０」にリセットする。この後、処理は図７のステップＳ２１に進められる。
【００７３】
以上の図７、図８に示した処理例１では、スクラビングでのリライト時にデータが複数回連続してブロック１３１に書き込まれる。これにより、データが１回だけ書き込まれる場合と比較して、データを保持可能な時間が長期化される。したがって、この後に同じブロック１３１についてのスクラビングが実行されたときに、リライトが必要となる確率が低下し、リライトの実行頻度（正確には、ステップＳ３５での複数回の連続書き込みの実行頻度）を低減できる。リライトの実行頻度の低減により、リライトの実行がＩ／Ｏ制御部１２０からＭＲＡＭ１１３へのアクセス性能に与える影響を低減でき、その結果として、ホスト装置２００から論理ボリュームに対するアクセス性能を向上させることができる。
【００７４】
また、処理例１では、ブロック１３１に対する通常書き込み時には、データはメモリセルアレイ１３０に対して１回だけ書き込まれる。これにより、データを複数回連続的に書き込む場合と比較して、Ｉ／Ｏ制御部１２０からの書き込み要求に対する応答速度を高めることができ、その結果として、ホスト装置２００から論理ボリュームに対するアクセス性能を向上させることができる。また、ブロック１３１に対する複数回の連続的な書き込みは、Ｉ／Ｏ制御部１２０からの書き込み要求とは非同期で実行されるスクラビングでのリライト時に限定して実行される。これにより、複数回の連続的な書き込み動作が、Ｉ／Ｏ制御部１２０からの書き込み要求に対する応答性能に与える影響を軽減できる。
【００７５】
さらに、処理例１では、ブロック１３１に対する通常書き込みの直後では、通常のスクラビング実行周期でスクラビングが実行される。そして、スクラビングによりデータのリライトが必要と判定されると、そのリライトの際にデータが複数回連続して書き込まれ、その後におけるスクラビングの実行周期がＭ倍に延長される。リライトの際に複数回の連続書き込みが行われることで、データ保持時間が長期化されるので、スクラビングの実行周期を長くしても、データの安全性を維持できる。
【００７６】
このように、処理例１では、スクラビングによるリライトが実行された後にはスクラビングの実行頻度が低減される。このため、スクラビングの実行に伴うデータ読み出し処理がＩ／Ｏ制御部１２０からＭＲＡＭ１１３へのアクセス性能に与える影響を低減でき、その結果として、ホスト装置２００から論理ボリュームに対するアクセス性能を向上させることができる。
【００７７】
次に、処理例１の具体例とともに、処理例１の一部の処理を変更した処理例２，３について説明する。
まず、図９は、処理例１〜３におけるスクラビングの実行例を示す図である。図９は、ある１つのブロック１３１についてのスクラビングやリライトの実行例を示している。また、図９に示すスクラビング実行時刻（以下、「実行時刻」と略称する）Ｔ１〜Ｔ１１は、通常のスクラビング周期で現れる時刻である。仮に、図９の実行時刻Ｔ１〜Ｔ１１のすべてにおいてスクラビングを実行した場合、スクラビングが最も高頻度に実行されることになる。さらに、図９では、処理例１〜３のいずれの場合にも、対応するブロック１３１に対して通常書き込みが行われた後、最初に実行時刻Ｔ１に到達したとする。
【００７８】
図９において、処理例１では、通常書き込みの実行後の最初の実行時刻Ｔ１において、スクラビングが実行される。このとき、エラーチェックコードに基づく反転ビット数が閾値ｎ１未満であり、データのリライトが実行されなかったとすると、次の実行時刻Ｔ２において再度スクラビングが実行される。
【００７９】
図９では例として、実行時刻Ｔ２におけるスクラビングによりデータのリライトが行われたとする。このとき、複数回（Ｎ回）の連続的なリライトが行われる（図７のステップＳ２５に対応）。これとともに、スクラビング制御テーブル１４１の対応するレコード１４２に、書き込み回数Ｃｗとして「Ｎ」が記録される。
【００８０】
その結果、実行時刻Ｔ２以降、このブロック１３１についてのスクラビングの実行周期がＭ倍に延長される。図９では例としてＭ＝３となっており、実行時刻Ｔ３，Ｔ４ではスクラビングの実行がスキップされ、実行時刻Ｔ５でスクラビングが実行される。さらに、実行時刻Ｔ６，Ｔ７ではスクラビングの実行がスキップされ、実行時刻Ｔ８でスクラビングが実行され、実行時刻Ｔ９，Ｔ１０ではスクラビングの実行がスキップされ、実行時刻Ｔ１１でスクラビングが実行される。なお、実行時刻Ｔ５，Ｔ８，Ｔ１１では、反転ビット数の検出結果によってはＮ回の連続的なリライトが行われる場合もある。
【００８１】
このように、処理例１では、ブロック１３１に対する通常書き込みの直後では、通常の実行周期でスクラビングが行われる。そして、最初にリライトが必要になってからは、リライトのたびに常に複数回の書き込みが行われるとともに、スクラビングの実行頻度が通常より低減される。
【００８２】
次に、処理例２，３について図９を用いて説明する。
＜処理例２＞
処理例２では、通常書き込みの後の初回のリライトで複数回の連続書き込みが行われるとともに、その後のスクラビングの実行頻度が低減される点では、処理例１と同様である。ただし、処理例２では、スクラビングの実行頻度が低減された状態でスクラビングが一定回数だけ実行されると、その後にスクラビングの実行頻度が増加される。これにより、例えば、低い頻度でスクラビングが何度か実行されても反転ビット数が閾値ｎ１まで上昇せず、リライトが行われなかったが、次のスクラビングの実行までにビット反転が進んでデータを訂正できなくなる、という事態の発生可能性を低減できる。
【００８３】
図９では、処理例１と同様に、実行時刻Ｔ２でのスクラビングにより、データがＮ回連続的にリライトされるとともに、スクラビングの実行周期がＭ倍に延長される。この後、処理例１と同様に、実行時刻Ｔ３，Ｔ４ではスクラビングの実行がスキップされ、実行時刻Ｔ５でスクラビングが実行され、実行時刻Ｔ６，Ｔ７ではスクラビングの実行がスキップされ、実行時刻Ｔ８でスクラビングが実行される。
【００８４】
ただし、図９の例では、スクラビングが３回実行されるとスクラビングの実行周期が１／Ｍ倍の周期に、すなわち通常の周期に短縮されている。したがって、実行時刻Ｔ８以降、通常の実行周期ごとの時刻Ｔ９，Ｔ１０，Ｔ１１においてスクラビングが実行される。
【００８５】
＜処理例３＞
処理例３では、通常書き込みの後の初回のリライトで複数回の連続書き込みが行われるとともに、その後のスクラビングの実行頻度が低減される点では、処理例１，２と同様である。ただし、処理例３では、実行頻度が低減された状態において、スクラビングを実行すべき時刻に一定回数到達するたびに、強制的に複数回の連続的なリライトが行われる。これにより、例えば、処理例２と同様に、低い頻度でスクラビングが何度か実行されてもリライトが行われなかったが、次のスクラビングの実行までにビット反転が進んでデータを訂正できなくなる、という事態の発生可能性を低減できる。
【００８６】
図９では、処理例１と同様に、実行時刻Ｔ２でのスクラビングにより、データがＮ回連続的にリライトされるとともに、スクラビングの実行周期がＭ倍に延長される。この後、処理例１と同様に、実行時刻Ｔ３，Ｔ４ではスクラビングの実行がスキップされ、実行時刻Ｔ５でスクラビングが実行され、実行時刻Ｔ６，Ｔ７ではスクラビングの実行がスキップされ、実行時刻Ｔ８でスクラビングが実行される。
【００８７】
ただし、図９の例では、実行時刻Ｔ２の後、スクラビングを実行すべき時刻に２回到達するたびに、Ｎ回の連続的なリライトが強制的に行われる。すなわち、実行時刻Ｔ８において、スクラビングを実行すべき時刻に２回（実行時刻Ｔ５，Ｔ８に対応）到達し、Ｎ回の連続的なリライトが行われる。具体的には、実行時刻Ｔ８では、データ読み出しと反転ビット数の取得（図８のステップＳ３３）が行われるが、反転ビット数が閾値ｎ１に達していなくてもデータのＮ回の連続的なリライト（ステップＳ３５）が行われる。
【００８８】
実行時刻Ｔ８の後では、延長された周期（Ｍ）でスクラビングを実行すべき時刻が現れ、そのような時刻が２回現れるたびにＮ回の連続的なリライトが強制的に行われる。図９の例では、実行時刻Ｔ９，Ｔ１０でスクラビングの実行がスキップされ、実行時刻Ｔ１１でスクラビングが実行されている。
【００８９】
＜処理例４＞
次に、処理例４について説明する。なお、以下の処理例４の説明では、処理例１と同じ構成要素または同じ内容の処理ステップには同じ符号を付して示し、それらの説明を省略する。
【００９０】
処理例４では、通常書き込み時にはデータが１回書き込まれる点では、処理例１〜３と同様である。ただし、その後のスクラビングの実行時には、リライトが実行されるたびに連続的な書き込み回数が増加される。さらに、連続書き込み回数の増加に応じて、スクラビングの実行頻度が低減される。
【００９１】
スクラビングの実行回数が多いブロック１３１に存在するデータは、Ｉ／Ｏ制御部１２０からの書き替え頻度が少ないデータであり、長期間保存されたままになる可能性が高い。このようなデータについては、リライト時の連続書き込み回数を多くしてデータの保持時間を長くしておくことで、リライトの実行頻度を低くしておくことが好ましい。処理例４では、リライトが実行されるたびに連続書き込み回数を増加させることで、保存期間が長いデータほど保持可能な時間を長くして、リライトの実行頻度を低減できる。さらに、連続書き込み回数の増加に応じてスクラビングの実行頻度も低減することで、保存期間が長いデータほどスクラビング自体の実行頻度も低減できる。
【００９２】
図１０は、処理例４で利用されるスクラビング制御テーブルのデータ構成例を示す図である。処理例４では、図５に示したスクラビング制御テーブル１４１の代わりに、図１０に示すスクラビング制御テーブル１４１ａが利用される。
【００９３】
スクラビング制御テーブル１４１ａには、ブロック１３１ごとのレコード１４２ａが含まれる。各レコード１４２ａには、図５と同様の書き込み回数Ｃｗ、到達回数Ｃｓｃ、回数設定値Ｎおよび周期設定値Ｍに加えて、周期加算値ｍが記録される。周期加算値ｍは、スクラビングでのリライトが実行されるごとに、スクラビングの実行周期に加算される値を示す。なお、処理例４では、回数設定値Ｎは、リライトの実行ごとに前回の連続書き込み回数に加算される加算値として利用される。
【００９４】
次に、処理例４の処理内容についてフローチャートを用いて説明する。なお、処理例４では、通常書き込み時においては、スクラビング制御テーブル１４１の代わりにスクラビング制御テーブル１４１ａを用いて、図６と同様の処理が実行される。
【００９５】
図１１、図１２は、処理例４におけるスクラビング制御処理の手順を示すフローチャートの例である。図１１、図１２の処理は、ブロック１３１ごとに個別に実行される。また、図１１、図１２では、処理内容が図７、図８と同様の処理ステップには同じステップ番号を付して示し、それらの説明を省略する。
【００９６】
処理例４におけるスクラビング制御処理では、図７のステップＳ２４で反転ビット数が閾値ｎ１以上と判定された場合に、図７のステップＳ２５の代わりに図１１に示すステップＳ２５ａ，Ｓ２５ｂが実行される。
【００９７】
［ステップＳ２５ａ］スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２ａに記録された書き込み回数Ｃｗおよび回数設定値Ｎに基づき、連続リライト回数を（Ｃｗ＋Ｎ）と計算する。スクラビング処理部１５７は、ステップＳ２３で読み出された、反転ビット訂正後のデータを、ブロック１３１に対して（Ｃｗ＋Ｎ）回連続的にリライトする。また、スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２内の書き込み回数Ｃｗを、「Ｃｗ＋Ｎ」に更新する。これにより、ブロック１３１に対する直近のリライト時における連続リライト回数が記録される。
【００９８】
［ステップＳ２５ｂ］スクラビング処理部１５７は、スクラビング制御テーブル１４１ａの対応するレコード１４２ａに記録された周期加算値ｍに基づき、このレコード１４２ａに記録された周期設定値Ｍを「Ｍ＋ｍ」に更新する。これにより、スクラビングの実行周期がｍだけ延長される。
【００９９】
また、処理例４におけるスクラビング制御処理では、図８のステップＳ３４で反転ビット数が閾値ｎ１以上と判定された場合に、図８のステップＳ３５の代わりに図１２に示すステップＳ３５ａ，Ｓ３５ｂが実行される。
【０１００】
［ステップＳ３５ａ］スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２ａに記録された書き込み回数Ｃｗおよび回数設定値Ｎに基づき、連続リライト回数を（Ｃｗ＋Ｎ）と計算する。スクラビング処理部１５７は、ステップＳ３２で読み出された、反転ビット訂正後のデータを、ブロック１３１に対して（Ｃｗ＋Ｎ）回連続的にリライトする。また、スクラビング処理部１５７は、スクラビング制御テーブル１４１の対応するレコード１４２内の書き込み回数Ｃｗを、「Ｃｗ＋Ｎ」に更新する。
【０１０１】
［ステップＳ３５ｂ］スクラビング処理部１５７は、スクラビング制御テーブル１４１ａの対応するレコード１４２ａに記録された周期加算値ｍに基づき、このレコード１４２ａに記録された周期設定値Ｍを「Ｍ＋ｍ」に更新する。
【０１０２】
＜処理例５＞
次に、処理例５について説明する。なお、以下の処理例５の説明では、処理例１と同じ構成要素または同じ内容の処理ステップには同じ符号を付して示し、それらの説明を省略する。
【０１０３】
処理例５では、通常書き込み時において、書き込みデータの特性に応じて書き込み回数を決定する。例として、書き込みデータが、短時間で書き替えられる可能性の高い「一時データ」の場合、そのデータは１回だけ書き込まれる。一方、書き込みデータが、短期間で書き替えられる可能性が低い、長期間の保存が目的とされた「長期保存データ」の場合、そのデータは複数回（以下の例ではＮ回）連続的に書き込まれる。
【０１０４】
このように、処理例５では、処理例１〜４とは異なり、書き込みデータの特性によっては、通常書き込み時でも複数回の連続書き込みの実行が許容される。長期保存データの場合、書き込み後にスクラビングが多くの回数実行される可能性が高いので、スクラビングの実行頻度の低減によるＭＲＡＭ１１３のアクセス性能の向上効果が大きい。そのため、処理例５によれば、このようなデータについては、Ｉ／Ｏ制御部１２０からの書き込み要求に対する応答性能より、スクラビング実行頻度の低減による効果を優先して、通常書き込みの段階からデータの保持時間が長期化される。これにより、全体としてＭＲＡＭ１１３のアクセス性能を向上させることができる。
【０１０５】
一方、一時データについては、その後の短期間で書き替えられる可能性が高いので、スクラビングが繰り返し実行される可能性は低く、スクラビングの実行頻度の低減によるＭＲＡＭ１１３のアクセス性能の向上効果は低い。そのため、処理例５によれば、このようなデータについては、スクラビング実行頻度の低減による効果より、Ｉ／Ｏ制御部１２０からの書き込み要求に対する応答性能を優先して、通常書き込み時における書き込み回数が１回に制限される。これにより、全体としてＭＲＡＭ１１３のアクセス性能を向上させることができる。
【０１０６】
以下、処理例５の内容についてフローチャートを用いて説明する。なお、処理例５では、処理例１と同様のスクラビング制御テーブル１４１（図５参照）が用いられる。また、Ｉ／Ｏ制御部１２０から書き込みが要求されるデータには、データが一時データか、長期保存データかを示す属性情報が付加されているものとする。あるいは、他の例として、Ｉ／Ｏ制御部１２０からデータの書き込みが要求される際に、そのデータの属性がＩ／Ｏ制御部１２０からコントローラ１５０に通知されてもよい。
【０１０７】
図１３は、処理例５における通常書き込み処理の手順を示すフローチャートの例である。なお、図１３では、処理内容が図６と同様の処理ステップには同じステップ番号を付して示し、それらの説明を省略する。
【０１０８】
処理例５における通常書き込み処理では、図６のステップＳ１１とステップＳ１２との間に、図１３に示すステップＳ４１の判定処理が実行される。また、ステップＳ４１で「Ｙｅｓ」と判定された場合、ステップＳ４２が実行され、その後ステップＳ１３が実行される。
【０１０９】
［ステップＳ４１］書き込み要求受信部１５１は、書き込みデータに付加された属性情報に基づいて、書き込みデータが長期保存データかを判定する。書き込み要求受信部１５１は、書き込みデータが長期保存データである場合、ステップＳ４２の処理を実行し、書き込みデータが長期保存データでなく、一時データである場合、ステップＳ１２の処理を実行する。なお、後者の場合、ステップＳ１２において書き込みデータが書き込み先のブロック１３１に１回だけ書き込まれるようになる。
【０１１０】
［ステップＳ４２］書き込み要求受信部１５１は、スクラビング制御テーブル１４１の対応するレコード１４２に記録された回数設定値Ｎに基づき、書き込みデータをブロック１３１に対してＮ回連続的に書き込む。また、書き込み要求受信部１５１は、スクラビング制御テーブル１４１の対応するレコード１４２内の書き込み回数Ｃｗを、「Ｎ」に更新する。
【０１１１】
なお、処理例５では、スクラビング制御処理については、図７、図８と同様の処理が実行される。ここで、ステップＳ４２で書き込み回数Ｃｗを「Ｎ」に更新することで、通常書き込み後の初回のスクラビング制御処理の実行時から、図７のステップＳ２２では「Ｙｅｓ」と判定されるようになる。これにより、初回のリライト実行後におけるスクラビング実行周期だけでなく、通常書き込み後に初回のスクラビングが実行されるまでの周期も、通常の実行周期のＮ倍に延長され、スクラビングの実行周期の実行頻度をより低減できる。
【０１１２】
＜処理例６＞
次に、処理例６について説明する。なお、以下の処理例６の説明では、処理例１と同じ構成要素または同じ内容の処理ステップには同じ符号を付して示し、それらの説明を省略する。
【０１１３】
処理例６では、処理例５と同様に、通常書き込み時において、書き込みデータの特性に応じて書き込み回数を決定する。処理例６では、書き込みデータの特性に応じた書き込み回数を、処理例５より多くの段階で変化させる。さらに、通常書き込み時における書き込み回数に応じて、スクラビングの実行頻度も変化させる。
【０１１４】
図１４は、処理例６で利用されるデータ特性テーブルのデータ構成例を示す図である。処理例６では、ＭＲＡＭ１４０の記憶部１４０には、図５に示したスクラビング制御テーブル１４１に加えて、図１４に示すデータ特性テーブル１４３が記憶される。
【０１１５】
データ特性テーブル１４３は、書き込みデータのデータ特性ごとに、通常書き込み時におけるデータの書き込み回数を示す連続書き込み回数と、通常書き込み後のスクラビング実行周期とを保持する。図１４では例として、データ特性は、書き込みデータの書き替え頻度の推定値に応じてＰ１〜Ｐ５の５段階に分類されている。データ特性Ｐ１の書き込みデータは書き替え頻度が最も高く、論理ボリュームにおいて書き替えられずに保存される期間（保存期間）が最も短い。一方、データ特性Ｐ５の書き込みデータは書き替え頻度が最も低く、より長期間の保存が目的とされている。一例として、データ特性Ｐ１，Ｐ２，Ｐ３，Ｐ４，Ｐ５の書き込みデータについては、それぞれ８時間、１週間、２週間、１ヶ月、２ヶ月という保存期間が想定される。
【０１１６】
連続書き込み回数は、書き替え頻度が低く、保存期間が長いデータ特性ほど、多い回数が設定される。また、スクラビング実行周期についても、書き替え頻度が低く、保存期間が長いデータ特性ほど、長い時間が設定される。図１４の例では、データ特性Ｐ１〜Ｐ５に対して、それぞれスクラビング実行周期Ｍ１〜Ｍ５（ただし、Ｍ１＜Ｍ２＜Ｍ３＜Ｍ４＜Ｍ５）が設定されている。
【０１１７】
以下、処理例６の内容についてフローチャートを用いて説明する。なお、Ｉ／Ｏ制御部１２０から書き込みが要求されるデータには、データ特性を示す属性情報が付加されているものとする。あるいは、他の例として、Ｉ／Ｏ制御部１２０からデータの書き込みが要求される際に、そのデータのデータ特性がＩ／Ｏ制御部１２０からコントローラ１５０に通知されてもよい。
【０１１８】
図１５は、処理例６における通常書き込み処理の手順を示すフローチャートの例である。なお、図１５では、処理内容が図６と同様の処理ステップには同じステップ番号を付して示し、それらの説明を省略する。
【０１１９】
処理例６における通常書き込み処理では、図６のステップＳ１２の代わりに図１５に示すステップＳ１２ａ〜１２ｃが実行される。
［ステップＳ１２ａ］書き込み要求受信部１５１は、データ特性テーブル１４３を参照し、書き込みデータのデータ特性に対応する連続書き込み回数を特定する。
【０１２０】
［ステップＳ１２ｂ］書き込み要求受信部１５１は、書き込みデータを書き込み先のブロック１３１に対して、ステップＳ１２ａで特定された連続書き込み回数だけ連続的に書き込む。なお、特定された連続書き込み回数が「１」の場合、書き込みは１回だけ行われる。また、書き込み要求受信部１５１は、スクラビング制御テーブル１４１の対応するレコード１４２内の書き込み回数Ｃｗを、特性された連続書き込み回数、すなわちデータを書き込んだ回数によって更新する。
【０１２１】
［ステップＳ１２ｃ］書き込み要求受信部１５１は、データ特性テーブル１４３を参照し、書き込みデータのデータ特性に対応するスクラビング実行周期を特定する。書き込み要求受信部１５１は、スクラビング制御テーブル１４１の対応するレコード１４２に対して、周期設定値Ｍとして、特定されたスクラビング実行周期の値を設定する。これにより、書き込みデータのデータ特性に対応する周期設定値Ｍが設定される。
【０１２２】
以上の図１５の処理では、ステップＳ１２ｂにおいて、書き替え頻度が低く、保存期間が長いデータ特性を有する書き込みデータほど、多くの回数だけ連続して書き込み先のブロック１３１に書き込まれる。これにより、保存期間が長いデータ特性を有する書き込みデータほど、Ｉ／Ｏ制御部１２０からの書き込み要求に対する応答性能より、スクラビング実行頻度の低減による効果を優先して、通常書き込みの段階からデータを保持可能な時間が長期化される。これにより、全体としてＭＲＡＭ１１３のアクセス性能を向上させることができる。
【０１２３】
なお、処理例６では、スクラビング制御処理については、図７、図８と同様の処理が実行される。ここで、ステップＳ１２ｂでは、書き込み回数Ｃｗとして書き込んだ回数が設定される。これにより、例えば、通常書き込み時に１回だけ書き込まれた場合、通常書き込み後の初回のスクラビング制御処理の実行時には、図７のステップＳ２２で「Ｎｏ」と判定され、スクラビングが実行される。この場合、通常書き込み後には通常の実行周期でスクラビングが実行される。
【０１２４】
一方、通常書き込み時に複数回連続して書き込まれた場合、通常書き込み後の初回のスクラビング制御処理の実行時には、図７のステップＳ２２で「Ｙｅｓ」と判定され、周期設定値Ｍに基づき、通常より長い周期でスクラビングが実行される。ここで、ステップＳ１２ｃの処理により、通常書き込み時に多くの回数だけ連続して書き込まれた書き込みデータほど、通常書き込み後におけるスクラビングの実行周期が長く設定される。このため、書き替え頻度が低く、保存期間が長いデータ特性を有する書き込みデータほど、通常書き込みの直後からスクラビングの実行頻度を低減できる。その結果、全体としてＭＲＡＭ１１３のアクセス性能を向上させることができる。
【０１２５】
〔第３の実施の形態〕
上記の第２の実施の形態では、通常書き込み時における連続書き込み回数の制御や、スクラビングの実行周期の制御、スクラビングでのリライト時の連続書き込み回数の制御が、ＭＲＡＭ１１３の内部のコントローラ１５０によって実行された。しかし、これらの制御は、ＣＭ１０１のプロセッサ１１１が所定のプログラムを実行することで実現されてもよい。この場合、ＣＭ１０１の外部に接続されたＭＲＡＭについても同様な制御を実行できる。
【０１２６】
以下、第３の実施の形態として、このような制御が行われるＣＭを例示する。
図１６は、第３の実施の形態におけるＣＭが備える処理機能の構成例を示す図である。なお、図１６では、図４と同一の処理を実行する構成要素には同じ符号を付して示し、その説明を省略する。
【０１２７】
図１６に示すＣＭ１０１ａは、図４のＭＲＡＭ１１３の代わりにＭＲＡＭ１１３ａを備える。ＭＲＡＭ１１３ａは、図４のコントローラ１５０の代わりにコントローラ１５０ａを備える。コントローラ１５０ａは、図４の書き込み要求受信部１５１の代わりに書き込み要求受信部１５１ａを備える。また、コントローラ１５０ａは、図４のスクラビング処理部１５７を備えない。
【０１２８】
また、ＣＭ１０１ａは、記憶部１６０、書き込み制御部１７１、読み出し制御部１７２およびスクラビング処理部１７３を備える。記憶部１６０は、例えばＲＡＭ１１２など、ＣＭ１０１ａが備える記憶装置によって実現される。書き込み制御部１７１、読み出し制御部１７２およびスクラビング処理部１７３の処理は、例えば、ＣＭ１０１ａが備えるプロセッサ１１１が所定のプログラムを実行することで実現される。
【０１２９】
記憶部１６０には、図４と同様のスクラビング制御テーブル１４１が記憶される。すなわち、スクラビング制御テーブル１４１は、ＭＲＡＭ１１３ａの内部ではなく、その外部に記憶される点で第２の実施の形態とは異なる。
【０１３０】
書き込み制御部１７１、読み出し制御部１７２は、それぞれ図４の書き込み要求受信部１５１、読み出し要求受信部１５４とほぼ同様の処理を実行する。書き込み制御部１７１は、メモリセルアレイ１３０に対するデータの書き込みやリライトを実行する場合、書き込み要求を書き込み要求受信部１５１ａに出力する。書き込み要求受信部１５１ａは、書き込み要求に応じて、書き込み処理部１５２に書き込み処理を実行させる。また、読み出し制御部１７２は、メモリセルアレイ１３０からデータを読み出す場合、読み出し要求を読み出し要求受信部１５４に出力する。読み出し要求受信部１５４は、読み出し要求をＩ／Ｏ制御部１２０やスクラビング処理部１５７からでなく、読み出し制御部１７２から受信する点のみ、図４の場合と異なる。
【０１３１】
Ｉ／Ｏ制御部１２０およびスクラビング処理部１７３からの書き込み要求は、書き込み制御部１７１に出力される。また、Ｉ／Ｏ制御部１２０およびスクラビング処理部１７３からの読み出し要求は、読み出し制御部１７２に出力される。スクラビング処理部１７３は、図４のスクラビング処理部１５７と同様の処理を実行する。
【０１３２】
このような構成により、第２の実施の形態におけるＣＭ１０１と同様の処理を、第３の実施の形態におけるＣＭ１０１ａでも実行できる。なお、第３の実施の形態でも、処理例４と同様の処理が実行される場合、スクラビング制御テーブル１４１の代わりに図１０に示すスクラビング制御テーブル１４１ａが利用される。また、処理例６と同様の処理が実行される場合、記憶部１６０には図１４に示すデータ特性テーブル１４３が記憶される。
【０１３３】
なお、上記の各実施の形態に示した装置（例えば、情報処理装置１、ＣＭ１０１，１０１ａ）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、磁気テープなどがある。光ディスクには、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク（Blu-ray Disc：ＢＤ、登録商標）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１３４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１３５】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【０１３６】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  不揮発性の記憶装置と、
前記記憶装置からデータを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する制御部と、
を有する情報処理装置。
【０１３７】
（付記２）  前記制御部は、さらに、前記記憶装置に対する書き込み要求に応じて前記データを書き込む際には、前記データを前記記憶装置に１回書き込み、
前記制御部は、前記書き込み要求に応じた前記データの書き込み後、前記データについての前記スクラビング処理を第１の周期で実行し、実行された前記スクラビング処理において前記書き直しを最初に実行した後、前記スクラビング処理を前記第１の周期より長い第２の周期で実行する、
付記１記載の情報処理装置。
【０１３８】
（付記３）  前記制御部は、前記第２の周期で前記スクラビング処理を所定回数実行すると、前記スクラビング処理の実行周期を前記第２の周期より短縮する、
付記２記載の情報処理装置。
【０１３９】
（付記４）  前記制御部は、前記第２の周期で現れる前記スクラビング処理の実行時刻のうち、所定の複数回数ごとに、前記書き直す処理を前記判定の結果に関係なく実行する、
付記２記載の情報処理装置。
【０１４０】
（付記５）  前記制御部は、前記書き直す処理を実行するたびに、前記データを連続的に書き直す回数を増加させる、
付記１乃至４のいずれか１つに記載の情報処理装置。
【０１４１】
（付記６）  前記制御部は、前記書き直す処理を実行するたびに、前記データを連続的に書き直す回数を増加させるとともに、前記スクラビング処理の実行周期を延長する、
付記１記載の情報処理装置。
【０１４２】
（付記７）  前記制御部は、さらに、前記記憶装置に対する書き込み要求に応じて前記データを書き込む際には、前記データを前記同一位置に１回または複数回連続的に書き込むとともに、前記データの特性に応じて前記データを書き込む回数を決定する、
付記１または６記載の情報処理装置。
【０１４３】
（付記８）  前記制御部は、さらに、決定された前記データの書き込み回数に応じて、前記データについての前記スクラビング処理の実行周期を決定する、
付記７記載の情報処理装置。
【０１４４】
（付記９）  前記判定では、読み出した前記データにおける反転したビット数が所定数以上の場合に書き直しが必要と判定し、
前記書き直す処理では、読み出した前記データにおける反転したビットを訂正した訂正後のデータを、前記記憶装置に書き直す、
付記１乃至８のいずれか１つに記載の情報処理装置。
【０１４５】
（付記１０）  不揮発性の記憶装置からデータを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する制御部、
を有する記憶制御装置。
【０１４６】
（付記１１）  コンピュータに、
不揮発性の記憶装置からデータを読み出す処理と、前記データを読み出した結果に応じて前記データの書き直しの要否を判定する処理と、書き直しが必要と判定した場合、読み出した前記データを前記記憶装置の同一位置に複数回連続的に書き直す処理とを含むスクラビング処理を実行する、
処理を実行させる記憶制御プログラム。
【０１４７】
（付記１２）  前記コンピュータに、前記記憶装置に対する書き込み要求に応じて前記データを書き込む際には、前記データを前記記憶装置に１回書き込む処理をさらに実行させ、
前記書き込み要求に応じた前記データの書き込み後、前記データについての前記スクラビング処理は第１の周期で実行され、実行された前記スクラビング処理において前記書き直しを最初に実行した後、前記スクラビング処理は前記第１の周期より長い第２の周期で実行される、
付記１１記載の記憶制御プログラム。
【０１４８】
（付記１３）  前記第２の周期で前記スクラビング処理が所定回数実行されると、前記スクラビング処理の実行周期は前記第２の周期より短縮される、
付記１２記載の記憶制御プログラム。
【０１４９】
（付記１４）  前記第２の周期で現れる前記スクラビング処理の実行時刻のうち、所定の複数回数ごとに、前記書き直す処理が前記判定の結果に関係なく実行される、
付記１２記載の記憶制御プログラム。
【０１５０】
（付記１５）  前記書き直す処理が実行されるたびに、前記データを連続的に書き直す回数が増加するとともに、前記スクラビング処理の実行周期が延長される、
付記１１記載の記憶制御プログラム。
【符号の説明】
【０１５１】
１  情報処理装置
１ａ  記憶装置
１ｂ  制御部
２  スクラビング処理
３  データ
Ｓ１〜Ｓ３  ステップ
【図１】
2020119007.tif 000003
【図２】
2020119007.tif 000004
【図３】
2020119007.tif 000005
【図４】
2020119007.tif 000006
【図５】
2020119007.tif 000007
【図６】
2020119007.tif 000008
【図７】
2020119007.tif 000009
【図８】
2020119007.tif 000010
【図９】
2020119007.tif 000011
【図１０】
2020119007.tif 000012
【図１１】
2020119007.tif 000013
【図１２】
2020119007.tif 000014
【図１３】
2020119007.tif 000015
【図１４】
2020119007.tif 000016
【図１５】
2020119007.tif 000017
【図１６】
2020119007.tif 000018