(57)【要約】【課題】メモリ間でデータ退避を行う際の処理時間を短縮する。【解決手段】検出部は、２値以上の値のデータを記憶する第１および第２のメモリにおいて、第１のメモリに記憶されるデータを第２のメモリの対応する退避領域へ退避させる事前処理の必要性を検出する。事前処理部は、事前処理の必要性が検出されたデータの第２のメモリにおける退避領域に対して、２値以上の値の何れか１値を事前処理として書き込む。退避処理部は、事前処理によって書き込まれた退避領域に対して、データに応じて事前処理として書き込まれた１値とは異なる値を書き込む。【選択図】図１
2015011421.tif 000002
【特許請求の範囲】
【請求項１】
２値以上の値のデータを記憶する第１および第２のメモリにおいて前記第１のメモリに記憶されるデータを前記第２のメモリの対応する退避領域へ退避させる事前処理の必要性を検出する検出部と、
前記事前処理の必要性が検出されたデータの前記第２のメモリにおける前記退避領域に対して前記２値以上の値の何れか１値を前記事前処理として書き込む事前処理部と、
前記１値が書き込まれた前記退避領域に対して前記データに応じて前記２値以上の値のうち前記１値とは異なる値を書き込む退避処理部と
を具備する記憶制御装置。
【請求項２】
前記検出部は、前記第１のメモリの所定の領域に対してデータの書込みが生じるたびに前記事前処理の必要性を検出する請求項１記載の記憶制御装置。
【請求項３】
前記第１のメモリの所定の領域に対してデータの書込みが生じた後に前記事前処理が行われたか否かを示す事前処理フラグをさらに具備し、
前記検出部は、前記事前処理が行われていない旨を前記事前処理フラグが示している領域について前記事前処理の必要性を検出する
請求項１記載の記憶制御装置。
【請求項４】
前記退避処理部は、前記事前処理が行われていない旨を前記事前処理フラグが示している領域に対応する前記退避領域に対しては、前記１値を書き込んだ後に、前記データに応じて前記２値以上の値のうち前記１値とは異なる値を書き込む
請求項３記載の記憶制御装置。
【請求項５】
復元処理要求に応じて前記退避領域に退避されているデータを前記第１のメモリへ復元させる復元処理部をさらに具備する請求項１記載の記憶制御装置。
【請求項６】
前記第１のメモリの所定の領域に対してデータの書込みが生じたか否かを示すダーティフラグをさらに具備し、
前記退避処理部は、前記ダーティフラグがデータの書込みが生じた旨を示す領域のみについて前記２値以上の値のうち前記１値とは異なる値を書き込む
請求項１記載の記憶制御装置。
【請求項７】
前記事前処理部は、前記退避領域に対して前記１値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対するパルスの発生回数よりも少ない回数のパルスを用い、
前記退避処理部は、前記退避領域に対して前記２値以上の値のうち前記１値とは異なる値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対するパルスの発生回数よりも少ない回数のパルスを用いる
請求項１記載の記憶制御装置。
【請求項８】
前記事前処理部は、前記退避領域に対して前記１値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対するパルス幅よりも狭いパルスを用い、
前記退避処理部は、前記退避領域に対して前記２値以上の値のうち前記１値とは異なる値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対するパルス幅よりも狭いパルスを用いる
請求項１記載の記憶制御装置。
【請求項９】
前記事前処理部は、前記退避領域に対して前記１値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対する書込みパルスの印加電圧よりも低い電圧を用い、
前記退避処理部は、前記退避領域に対して前記２値以上の値のうち前記１値とは異なる値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対する印加電圧よりも低い電圧を用いる
請求項１記載の記憶制御装置。
【請求項１０】
前記事前処理部は、前記退避領域に対して前記１値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対する書込みパルスの電流よりも小さい電流を用い、
前記退避処理部は、前記退避領域に対して前記２値以上の値のうち前記１値とは異なる値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対する書込みパルスの電流よりも小さい電流を用いる
請求項１記載の記憶制御装置。
【請求項１１】
２値以上の値のデータを記憶する第１のメモリと、
前記第１のメモリに記憶されるデータを退避するための第２のメモリと、
前記第１のメモリに記憶されるデータを前記第２のメモリの対応する退避領域へ退避させる事前処理の必要性を検出する検出部と、
前記事前処理の必要性が検出されたデータの前記第２のメモリにおける前記退避領域に対して前記２値以上の値の何れか１値を前記事前処理として書き込む事前処理部と、
前記１値が書き込まれた前記退避領域に対して前記データに応じて前記２値以上の値のうち前記１値とは異なる値を書き込む退避処理部と
を具備する記憶装置。
【請求項１２】
２値以上の値のデータを記憶する第１および第２のメモリにおいて前記第１のメモリに記憶されるデータを前記第２のメモリの対応する退避領域へ退避させる事前処理の必要性を検出する検出手順と、
前記事前処理の必要性が検出されたデータの前記第２のメモリにおける前記退避領域に対して前記２値以上の値の何れか１値を前記事前処理として書き込む事前処理手順と、
前記１値が書き込まれた前記退避領域に対して前記データに応じて前記２値以上の値のうち前記１値とは異なる値を書き込む退避処理手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、メモリ間の退避処理を制御する記憶制御装置、記憶装置、および、その記憶制御方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
揮発性のメインメモリに加えて不揮発性のストレージメモリを備える情報処理システムにおいては、作業中のデータを保持したまま情報処理システムの電源を遮断するために、以下に示すような休止手続および復帰手続を用いられる。すなわち、休止手続として、ホストコンピュータは、メインメモリ上で使用中の全てのデータをストレージメモリに確保された領域に退避した後に情報処理システムの電源を遮断する。また、復帰手続として、ホストコンピュータは、ストレージメモリに退避されたデータをメインメモリに復元する。従来、このようなデータ退避はシャットダウン時に実行されていた。例えば、ＤＲＡＭ上のデータがフラッシュメモリ上のデータと同期しているか否かを示すフラグデータを備え、シャットダウン時にフラグデータに基づいて同期の必要なデータのみをフラッシュメモリに転送する装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１８６５５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、システムのシャットダウン時にデータ退避を実行していた。しかしながら、データ退避に必要な全ての処理をシャットダウン時に実行した場合、シャットダウンに要する時間が長くなってしまうという問題がある。
【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、メモリ間でデータ退避を行う際の処理時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、２値以上の値のデータを記憶する第１および第２のメモリにおいて上記第１のメモリに記憶されるデータを上記第２のメモリの対応する退避領域へ退避させる事前処理の必要性を検出する検出部と、上記事前処理の必要性が検出されたデータの上記第２のメモリにおける上記退避領域に対して上記２値以上の値の何れか１値を上記事前処理として書き込む事前処理部と、上記１値が書き込まれた上記退避領域に対して上記データに応じて上記２値以上の値のうち上記１値とは異なる値を書き込む退避処理部とを具備する記憶制御装置およびその記憶制御方法である。これにより、退避の必要性が検出されたデータについて事前処理を行うことにより退避の際の処理を軽減させるという作用をもたらす。
【０００７】
また、この第１の側面において、上記検出部は、上記第１のメモリの所定の領域に対してデータの書込みが生じるたびに上記事前処理の必要性を検出するようにしてもよい。これにより、事前処理の有無を管理することなく退避の際の処理を軽減させるという作用をもたらす。
【０００８】
また、この第１の側面において、上記第１のメモリの所定の領域に対してデータの書込みが生じた後に上記事前処理が行われたか否かを示す事前処理フラグをさらに具備し、上記検出部は、上記事前処理が行われていない旨を上記事前処理フラグが示している領域について上記事前処理の必要性を検出するようにしてもよい。これにより、記憶制御装置の状態に合わせて事前処理を行うという作用をもたらす。この場合において、上記退避処理部は、上記事前処理が行われていない旨を上記事前処理フラグが示している領域に対応する上記退避領域に対しては、上記１値を書き込んだ後に、上記データに応じて上記２値以上の値のうち上記１値とは異なる値を書き込むようにしてもよい。
【０００９】
また、この第１の側面において、復元処理要求に応じて上記退避領域に退避されているデータを上記第１のメモリへ復元させる復元処理部をさらに具備してもよい。これにより、退避したデータを第１のメモリに復元させるという作用をもたらす。
【００１０】
また、この第１の側面において、上記第１のメモリの所定の領域に対してデータの書込みが生じたか否かを示すダーティフラグをさらに具備し、上記退避処理部は、上記ダーティフラグがデータの書込みが生じた旨を示す領域のみについて上記２値以上の値のうち上記１値とは異なる値を書き込むようにしてもよい。これにより、データの書込みが生じた領域を選択的に退避させるという作用をもたらす。
【００１１】
また、この第１の側面において、上記事前処理部は、上記退避領域に対して上記１値を書き込む際には上記第２のメモリの上記退避領域以外の領域に対するパルスの発生回数よりも少ない回数のパルスを用い、上記退避処理部は、上記退避領域に対して上記２値以上の値のうち上記１値とは異なる値を書き込む際には上記第２のメモリの上記退避領域以外の領域に対するパルスの発生回数よりも少ない回数のパルスを用いるようにしてもよい。これにより、長期の記憶を要しない退避領域についてはパルス印加数を減らして退避処理を高速化させるという作用をもたらす。
【００１２】
また、この第１の側面において、上記事前処理部は、上記退避領域に対して上記１値を書き込む際には上記第２のメモリの上記退避領域以外の領域に対するパルス幅よりも狭いパルスを用い、上記退避処理部は、上記退避領域に対して上記２値以上の値のうち上記１値とは異なる値を書き込む際には上記第２のメモリの上記退避領域以外の領域に対するパルス幅よりも狭いパルスを用いるようにしてもよい。これにより、長期の記憶を要しない退避領域についてはパルス幅を狭くして退避処理を高速化させるという作用をもたらす。
【００１３】
また、この第１の側面において、上記事前処理部は、上記退避領域に対して上記１値を書き込む際には上記第２のメモリの上記退避領域以外の領域に対する書込みパルスの印加電圧よりも低い電圧を用い、上記退避処理部は、上記退避領域に対して上記２値以上の値のうち上記１値とは異なる値を書き込む際には上記第２のメモリの上記退避領域以外の領域に対する印加電圧よりも低い電圧を用いるようにしてもよい。これにより、長期の記憶を要しない退避領域については印加電圧を低くして退避処理を高速化させるという作用をもたらす。
【００１４】
また、この第１の側面において、上記事前処理部は、上記退避領域に対して上記１値を書き込む際には上記第２のメモリの上記退避領域以外の領域に対する書込みパルスの電流よりも小さい電流を用い、上記退避処理部は、上記退避領域に対して上記２値以上の値のうち上記１値とは異なる値を書き込む際には上記第２のメモリの上記退避領域以外の領域に対する書込みパルスの電流よりも小さい電流を用いるようにしてもよい。これにより、長期の記憶を要しない退避領域については電流を小さくして退避処理を高速化させるという作用をもたらす。
【００１５】
また、本技術の第２の側面は、２値以上の値のデータを記憶する第１のメモリと、上記第１のメモリに記憶されるデータを退避するための第２のメモリと、上記第１のメモリに記憶されるデータを上記第２のメモリの対応する退避領域へ退避させる事前処理の必要性を検出する検出部と、上記事前処理の必要性が検出されたデータの上記第２のメモリにおける上記退避領域に対して上記２値以上の値の何れか１値を上記事前処理として書き込む事前処理部と、上記１値が書き込まれた上記退避領域に対して上記データに応じて上記２値以上の値のうち上記１値とは異なる値を書き込む退避処理部とを具備する記憶装置である。これにより、第１のメモリから第２のメモリへ退避の必要性が検出されたデータについて事前処理を行うことにより、記憶装置における退避の際の処理を軽減させるという作用をもたらす。
【発明の効果】
【００１６】
本技術によれば、メモリ間でデータ退避を行う際の処理時間を短縮することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１７】
【図１】本技術の第１の実施の形態における情報処理システムの構成例を示す図である。
【図２】本技術の実施の形態における情報処理システムの機能構成例を示す図である。
【図３】抵抗変化型メモリの抵抗状態を示す図である。
【図４】本技術の実施の形態におけるストレージメモリ３０のメモリセルに印加する電圧パルスの一例を示す図である。
【図５】本技術の実施の形態におけるダーティフラグ２１１の一例を示す図である。
【図６】本技術の実施の形態における事前処理フラグ２１２の一例を示す図である。
【図７】本技術の第１の実施の形態における復元処理の処理手順例を示す流れ図である。
【図８】本技術の第１の実施の形態におけるメインメモリ２００への書込み処理の処理手順例を示す流れ図である。
【図９】本技術の第１の実施の形態におけるストレージメモリ３２０への書込み処理の処理手順例を示す流れ図である。
【図１０】本技術の第１の実施の形態におけるストレージメモリ３２０への事前処理の処理手順例を示す流れ図である。
【図１１】本技術の第１の実施の形態におけるストレージメモリ３２０への退避処理の処理手順例を示す流れ図である。
【図１２】本技術の第２の実施の形態における情報処理システムの構成例を示す図である。
【図１３】本技術の第２の実施の形態におけるメインメモリ２００への書込み処理の処理手順例を示す流れ図である。
【図１４】本技術の第２の実施の形態におけるストレージメモリ３２０への退避処理の処理手順例を示す流れ図である。
【図１５】本技術の第１の変形例における情報処理システムの構成例を示す図である。
【図１６】本技術の第２の変形例における情報処理システムの構成例を示す図である。
【図１７】本技術の第３の変形例における情報処理システムの構成例を示す図である。
【図１８】本技術の第４の変形例におけるダーティフラグ２１１および事前処理フラグ２１２の一例を示す図である。
【図１９】本技術の第５の変形例におけるダーティフラグ２１１と退避領域との関係例を示す図である。
【図２０】本技術の第６の変形例におけるストレージメモリのメモリセルに印加する電圧パルスの一例を示す図である。
【図２１】本技術の第１１の変形例におけるストレージメモリ３０のメモリセルに印加する電圧パルスの一例を示す図である。
【図２２】本技術の第１２の変形例におけるストレージメモリ３０の退避領域のメモリセルに印加する電圧パルスの一例を示す図である。
【図２３】本技術の第１２の変形例におけるストレージメモリ３２０への書込み処理の処理手順例を示す流れ図である。
【図２４】本技術の第１２の変形例におけるストレージメモリ３２０への退避処理の処理手順例を示す流れ図である。
【図２５】本技術の第１３の変形例におけるストレージメモリ３０の退避領域のメモリセルに印加する電圧パルスの一例を示す図である。
【図２６】本技術の第１５の変形例における情報処理システムの構成例を示す図である。
【図２７】本技術の第１５の変形例におけるメインメモリ管理テーブル２１３の構成例を示す図である。
【図２８】本技術の第１５の変形例におけるアプリケーション状態フラグ２１４の構成例を示す図である。
【図２９】本技術の第１５の変形例におけるメインメモリ２００への書込み処理の処理手順例を示す流れ図である。
【図３０】本技術の第１５の変形例におけるメインメモリ２００の割当て変更処理の処理手順例を示す流れ図である。
【図３１】本技術の第１５の変形例におけるアプリケーション状態フラグ２１４の監視処理の処理手順例を示す流れ図である。
【図３２】本技術の第１６の変形例における復元処理の処理手順例を示す流れ図である。
【図３３】本技術の第１６の変形例におけるストレージメモリ３２０への退避処理の処理手順例を示す流れ図である。
【図３４】本技術の第１６の変形例における抵抗変化型メモリの抵抗状態を示す図である。
【発明を実施するための形態】
【００１８】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（事前処理フラグに基づいて事前処理を行う例）
２．第２の実施の形態（メインメモリ書込み時に事前処理を行う例）
３．変形例
【００１９】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の第１の実施の形態における情報処理システムの構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、メインメモリ２００と、ストレージモジュール３００とを備える。メインメモリ２００に記憶されているデータをストレージモジュール３００に退避する処理を退避処理と称する。また、ストレージモジュール３００に退避されているデータをメインメモリ２００に復元する処理を復元処理と称する。なお、メインメモリ２００およびストレージモジュール３００はメモリシステムを構成する。
【００２０】
ホストコンピュータ１００は、情報処理システムにおける各処理を指示または実行するものである。ホストコンピュータ１００は、メインメモリ２００と接続するためのメインメモリインターフェース１２０、および、ストレージモジュール３００と接続するためのストレージインターフェース１３０を備える。
【００２１】
メインメモリ２００は、ホストコンピュータ１００が各処理を実行するために使用するメモリである。このメインメモリ２００は、例えばＤＲＡＭなどの揮発性メモリにより構成されることを想定する。このメインメモリ２００は、信号線２０９を介してホストコンピュータ１００と接続する。なお、メインメモリ２００は、特許請求の範囲に記載の第１のメモリの一例である。
【００２２】
ストレージモジュール３００は、ホストコンピュータ１００が補助記憶として使用する記憶モジュールである。ストレージモジュール３００は、信号線３０９を介してホストコンピュータ１００と接続する。このストレージモジュール３００は、データを記憶するストレージメモリ３２０と、ストレージメモリ３２０を制御するストレージコントローラ３１０とを備える。
【００２３】
ストレージメモリ３２０は、例えば抵抗変化型メモリ（ＲｅＲＡＭ）などの不揮発性メモリにより構成されることを想定する。ストレージメモリ３２０は、システムの休止時にメインメモリ２００のデータを記憶しておくための退避領域（サスペンド領域）３２１と、通常のデータ保存を行うための通常領域とに区分される。なお、ストレージメモリ３２０は、特許請求の範囲に記載の第２のメモリの一例である。
【００２４】
ストレージコントローラ３１０は、ストレージメモリ３２０のエラーを訂正するＥＣＣ（Error Check and Correction）処理部３１１を備える。なお、この例ではＥＣＣ処理部３１１をストレージコントローラ３１０に設けているが、ホストコンピュータ１００やストレージメモリ３２０に設けるようにしてもよい。
【００２５】
メインメモリ２００は、所定の領域毎にダーティフラグ２１１および事前処理フラグ２１２を備えている。ダーティフラグ２１１は、前回の復元処理が行われた後に、その領域に対してデータの書込みが行われたか否かを保持するフラグである。事前処理フラグ２１２は、その領域に対して必要な事前処理が行われたか否かを保持するフラグである。これらダーティフラグ２１１および事前処理フラグ２１２の具体例については後述する。
【００２６】
図２は、本技術の実施の形態における情報処理システムの機能構成例を示す図である。ここでは、メインメモリ２０と、ストレージメモリ３０と、復元処理部１１と、事前処理部１２と、退避処理部１３と、検出部１４とが示されている。メインメモリ２０は、上述のメインメモリ２００に相当するものである。ストレージメモリ３０は、上述のストレージメモリ３２０に相当するものである。メインメモリ２０およびストレージメモリ３０の各セルは、それぞれ「０」または「１」の２値のうち何れか一方の値をビットデータとして記憶する。
【００２７】
復元処理部１１は、ストレージメモリ３０の退避領域に退避されているデータをメインメモリ２０へ復元する復元処理を行うものである。
【００２８】
検出部１４は、メインメモリ２０に記憶されるデータをストレージメモリ３０の対応する退避領域へ退避させる際の事前処理の必要性を検出するものである。この第１の実施の形態では、検出部１４は、事前処理フラグ２１２に基づいて事前処理の必要性を検出する。
【００２９】
事前処理部１２は、検出部１４によって事前処理の必要性が検出されたデータのストレージメモリ３０における退避領域に対して、２値の一方の値を書き込む事前処理を行うものである。この事前処理は、退避処理を高速化するために退避処理の前に行われる処理である。
【００３０】
退避処理部１３は、２値の一方の値が書き込まれたストレージメモリ３０における退避領域に対して、退避すべきデータに応じた値を書き込むものである。事前処理がされている退避領域については、退避すべきデータに応じて２値の他方の値が書き込まれる。一方、事前処理が行われていない退避領域については、退避すべきデータに応じて２値の一方の値と他方の値の何れかが書き込まれる。
【００３１】
［抵抗変化型メモリの抵抗状態］
図３は、抵抗変化型メモリの抵抗状態を示す図である。抵抗変化型メモリのメモリセルは、セット動作によりＬＲＳ（低抵抗状態）に遷移し、リセット動作によりＨＲＳ（高抵抗状態）に遷移する。低抵抗状態と高抵抗状態との間で抵抗状態を可逆的に変化させることにより、１つのメモリセルによって１ビットを記憶することが可能な不揮発性メモリが実現される。
【００３２】
本技術の実施の形態のストレージメモリ３０（３２０）として抵抗変化型メモリを用いた場合、リード閾値で示したリファレンス抵抗値を基準として抵抗状態を判断する。以下では、低抵抗状態のセルから読み出されるデータを「１」とし、高抵抗状態から読み出されるデータを「０」とした例について説明するが、これらは何れに対応付けても構わない。
【００３３】
図４は、本技術の実施の形態におけるストレージメモリ３０のメモリセルに印加する電圧パルスの一例を示す図である。同図におけるａは通常書込の場合の電圧パルスの態様を示している。通常の書込動作は、プレリード処理、リセット処理およびセット処理の３つの工程に分類される。なお、ここでは、先にリセット処理を行った後にセット処理を行う例について説明するが、先にセット処理を行った後にリセット処理を行うようにしてもよい。
【００３４】
プレリード処理は、書込み先アドレスの現在の値を読み出して、これから書き込もうとするデータと比較する処理である。リセット処理は、プレリード処理による比較結果に基づいてそのアドレスの各ビットセルのうち「１」から「０」に反転させるべきビットセルを選択して、「０」を書き込む処理である。セット処理は、プレリード処理による比較結果に基づいてそのアドレスの各ビットセルのうち「０」から「１」に反転させるべきビットセルを選択して、「１」を書き込む処理である。リセット処理およびセット処理においては、リセットおよびセットのための電圧パルスを加えた後に、正しく書込みが行われたか否かを確認するために検証（ベリファイ）が行われる。
【００３５】
通常書込においては、例えば、プレリード結果が「００１１」であり、書込データが「１０１０」である場合、最下位ビットのみを選択してリセット処理を行い、次に最上位ビットのみを選択してセット処理を行う。２ビット目および３ビット目には何の処理も行われず、既存の値が維持される。ここで、一例として、ストレージメモリ３０へのアクセス単位を２ＫＢ、プレリード処理、リセット処理およびセット処理に要する時間を合計２μ秒とすると、転送レートは１ＧＢ／秒になる。
【００３６】
本技術の実施の形態では、退避処理を高速化するために、通常書込におけるセット処理以外の動作を事前に行っておくという手法を採用する。すなわち、同図におけるｂに示すように、メインメモリ２０に書込みが発生した際には、ストレージメモリ３０の退避領域に対して事前処理としてプレリード処理およびリセット処理を済ませておく。これにより、退避処理を行う際には、同図におけるｃに示すように、セット処理のみを行えばよいため、退避処理を高速化することができる。このセット処理のみによる書込みを高速書込と称する。
【００３７】
例えば、ストレージメモリ３０へのアクセス単位を２ＫＢ、セット処理にかかる時間を１μ秒とすると、本技術の実施の形態による高速書込時の転送レートは２ＧＢ／秒になる。
【００３８】
ただし、メインメモリ２０に書込みが発生した後に、何らかの理由により事前処理が間に合わず、退避処理が行われる場合がある。そのような場合には、通常書込によりプレリード処理、リセット処理およびセット処理を行う必要がある。
【００３９】
［ダーティフラグ］
図５は、本技術の実施の形態におけるダーティフラグ２１１の一例を示す図である。上述のように、ダーティフラグ２１１は、前回の復元処理が行われた後に、その領域に対してデータの書込みが行われたか否かを保持するフラグである。ダーティフラグ２１１は、メインメモリ２００上に格納され、ホストコンピュータ１００がメインメモリインターフェース１２０を用いてこれを参照し、更新する。
【００４０】
この例では、ダーティフラグ２１１はメインメモリ２００のワード毎に対応して設けられ、それぞれ１ビットずつのフラグを保持する。このダーティフラグ２１１は、メインメモリ２００の対応するワードに書込みが発生すると「１」に設定され、退避処理が行われると「０」に設定される。
【００４１】
ダーティフラグ２１１が「１」を示している場合には、前回の復元処理が行われた後に、そのワードに対してデータの書込みが行われていることを意味する。一方、ダーティフラグ２１１が「０」を示している場合には、前回の復元処理が行われた後に、そのワードに対してデータの書込みが行われていないことを意味する。
【００４２】
［事前処理フラグ］
図６は、本技術の実施の形態における事前処理フラグ２１２の一例を示す図である。上述のように、事前処理フラグ２１２は、その領域に対して必要な事前処理が行われたか否かを保持するフラグである。事前処理フラグ２１２は、メインメモリ２００上に格納され、ホストコンピュータ１００がメインメモリインターフェース１２０を用いてこれを参照し、更新する。
【００４３】
この例では、事前処理フラグ２１２はメインメモリ２００のワード毎に対応して設けられ、それぞれ１ビットずつのフラグを保持する。この事前処理フラグ２１２は、メインメモリ２００の対応するワードに書込みが発生すると「１」に設定され、事前処理が完了すると「０」に設定される。
【００４４】
事前処理フラグ２１２が「１」を示している場合には、そのワードについて実行すべき事前処理が存在することを意味する。すなわち、ダーティフラグ２１１が「１」で、かつ、事前処理フラグ２１２が「１」を示している場合には、必要な事前処理が実行されていないことを意味する。ダーティフラグ２１１が「１」で、かつ、事前処理フラグ２１２が「０」を示している場合には、必要な事前処理が実行されたことを意味する。
【００４５】
また、ダーティフラグ２１１が「０」の場合には、事前処理フラグ２１２も「０」になる。この場合、そのワードについて実行すべき事前処理が存在しないことを意味する。
【００４６】
［情報処理システムの動作］
図７は、本技術の第１の実施の形態における復元処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、ホストコンピュータ１００の電源がオンになったことを検出した場合、ユーザから復元指示入力がされた場合、または、ホストコンピュータ１００が自律的に復元処理の必要性を判断した場合、復元処理を開始する。これにより、ストレージメモリ３２０の退避領域３２１のデータ全てがメインメモリ２００にコピーされる（ステップＳ９１２）。ただし、システムの初回起動時など、復元すべきデータが存在しない場合がある。この場合には（ステップＳ９１１：Ｎｏ）、退避領域３２１からメインメモリ２００へのコピーは行わず、代わりにダーティフラグ２１１を全て「１」にする（ステップＳ９１３）。
【００４７】
図８は、本技術の第１の実施の形態におけるメインメモリ２００への書込み処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、各種処理を実行する過程においてメインメモリ２００にデータを書き込む（ステップＳ９２１）。ここでデータの書込みが行われたアドレスをアドレスＰとする。ホストコンピュータ１００は、メインメモリ２００のアドレスＰに書込みを行うたびに、そのアドレスＰに対応するダーティフラグ２１１および事前処理フラグ２１２を「１」にセットする（ステップＳ９２２）。
【００４８】
図９は、本技術の第１の実施の形態におけるストレージメモリ３２０への書込み処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、各種処理を実行する過程においてストレージメモリ３２０にデータを書き込む場合がある（ステップＳ９３１）。上述のように、ストレージメモリ３２０には退避領域３２１の他に通常の書込みのための通常領域が存在する。この通常領域に対してデータを書き込む際には、高速書込ではなく通常書込が用いられる。
【００４９】
図１０は、本技術の第１の実施の形態におけるストレージメモリ３２０への事前処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、一定時間ごとに、メインメモリ２００の各アドレスについて事前処理の必要性をチェックする。ここで、事前処理の対象となるアドレスをアドレスＲとする。Ｒには初期値として「０」が設定される（ステップＳ９４１）。
【００５０】
ホストコンピュータ１００は、アドレスＲに対応する事前処理フラグ２１２を参照する（ステップＳ９４２）。そして、事前処理フラグ２１２が「１」を示している場合には（ステップＳ９４３：Ｙｅｓ）、アドレスＲに対応するストレージメモリ３２０の退避領域に対してプレリード処理およびリセット処理を行う（ステップＳ９４４）。これにより、ストレージメモリ３２０のアドレスＲに対応する退避領域の全ビットに「０」が書き込まれる。プレリード処理およびリセット処理が完了すると、事前処理フラグ２１２を「０」にする（ステップＳ９４５）。一方、事前処理フラグ２１２が「０」を示している場合には（ステップＳ９４３：Ｎｏ）、これらの処理を行わない。
【００５１】
以上の処理を、Ｒの値を１つずつ加算しながら（ステップＳ９４７）、末尾アドレスになるまで繰り返す（ステップＳ９４６）。
【００５２】
ここで、ホストコンピュータ１００は、プレリード処理を行うコマンドと、全ビット「０」のデータと、リセット処理を行うコマンドとを、ストレージモジュール３００に対して逐次に送信してもよい。また、ストレージモジュール３００において、事前処理を行う専用のコマンドを用意しておいて、データ「０」を送信することなくそのコマンドのみを送信するようにしてもよい。
【００５３】
図１１は、本技術の第１の実施の形態におけるストレージメモリ３２０への退避処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、ユーザから退避指示入力がされた場合、または、ホストコンピュータ１００が自律的に退避処理の必要性を判断した場合、退避処理を開始する。ここで、退避処理の対象となるアドレスをアドレスＱとする。Ｑには初期値として「０」が設定される（ステップＳ９５１）。
【００５４】
ホストコンピュータ１００は、アドレスＱに対応するダーティフラグ２１１を参照する（ステップＳ９５２）。そして、ダーティフラグ２１１が「１」を示している場合には（ステップＳ９５３：Ｙｅｓ）、以下に示すアドレスＱに関するステップＳ９６１までの処理を実行する。一方、ダーティフラグ２１１が「０」を示している場合には（ステップＳ９５３：Ｎｏ）、そのアドレスＱに関する処理は実行しない。
【００５５】
ホストコンピュータ１００は、アドレスＱに対応する事前処理フラグ２１２を参照する（ステップＳ９５４）。そして、事前処理フラグ２１２が「０」を示している場合には（ステップＳ９５５：Ｙｅｓ）、メインメモリ２００のアドレスＱからデータを読み出して（ステップＳ９５６）アドレスＱの退避領域３２１に高速書込を行う（ステップＳ９５７）。すなわち、この場合には、ストレージメモリ３２０に対してセット処理のみによる書込みを行う。
【００５６】
一方、事前処理フラグ２１２が「１」を示している場合には（ステップＳ９５５：Ｎｏ）、メインメモリ２００のアドレスＱからデータを読み出して（ステップＳ９５８）、アドレスＱの退避領域３２１に通常書込を行う（ステップＳ９５９）。すなわち、この場合には、ストレージメモリ３２０に対してプレリード処理、リセット処理およびセット処理による書込みを行う。
【００５７】
ステップＳ９５７またはＳ９５９が完了した後に、アドレスＱに対応するダーティフラグ２１１が「０」にクリアされる（ステップＳ９６１）。
【００５８】
以上の処理を、Ｑの値を１つずつ加算しながら（ステップＳ９６３）、末尾アドレスになるまで繰り返す（ステップＳ９６２）。
【００５９】
このように、本技術の第１の実施の形態では、事前処理フラグ２１２を用いて退避の必要性を検出し、これに基づいて事前処理を行うことにより、退避処理を高速化することができる。
【００６０】
＜２．第２の実施の形態＞
［情報処理システムの構成］
図１２は、本技術の第２の実施の形態における情報処理システムの構成例を示す図である。この第２の実施の形態における情報処理システムは、全体の構成としては第１の実施の形態の場合と同様であるため、ここでは説明を省略する。ただし、この第２の実施の形態では、事前処理フラグ２１２を設けていない点において第１の実施の形態と異なっている。この第２の実施の形態では、ホストコンピュータ１００がメインメモリ２００に書込みを行うたびに、速やかに事前処理を実行する。すなわち、この第２の実施の形態では、検出部１４は、メインメモリ２００への書込みによって退避の必要性を検出する。これにより、事前処理フラグ２１２を用いることなく、退避処理が実行される前に事前処理を済ませることができる。
【００６１】
［情報処理システムの動作］
この第２の実施の形態における情報処理システムでは、復元処理およびストレージメモリ３２０への書込み処理については、第１の実施の形態の場合と同様であるため、ここでは説明を省略する。
【００６２】
図１３は、本技術の第２の実施の形態におけるメインメモリ２００への書込み処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、各種処理を実行する過程においてメインメモリ２００にデータを書き込む（ステップＳ９２１）。ここでデータの書込みが行われたアドレスをアドレスＰとする。ホストコンピュータ１００は、メインメモリ２００のアドレスＰに書込みを行うたびに、そのアドレスＰに対応するダーティフラグ２１１を「１」にセットする（ステップＳ９２３）。そして、アドレスＰに対応するストレージメモリ３２０の退避領域に対してプレリード処理およびリセット処理を行う（ステップＳ９２４）。
【００６３】
図１４は、本技術の第２の実施の形態におけるストレージメモリ３２０への退避処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、ユーザから退避指示入力がされた場合、または、ホストコンピュータ１００が自律的に退避処理の必要性を判断した場合、退避処理を開始する。ここで、退避処理の対象となるアドレスをアドレスＱとする。Ｑには初期値として「０」が設定される（ステップＳ９５１）。
【００６４】
ホストコンピュータ１００は、アドレスＱに対応するダーティフラグ２１１を参照する（ステップＳ９５２）。そして、ダーティフラグ２１１が「１」を示している場合には（ステップＳ９５３：Ｙｅｓ）、以下に示すアドレスＱに関するステップＳ９６１までの処理を実行する。一方、ダーティフラグ２１１が「０」を示している場合には（ステップＳ９５３：Ｎｏ）、そのアドレスＱに関する処理は実行しない。
【００６５】
ホストコンピュータ１００は、メインメモリ２００のアドレスＱからデータを読み出して（ステップＳ９５６）アドレスＱの退避領域３２１に高速書込を行う（ステップＳ９５７）。すなわち、ストレージメモリ３２０に対してセット処理のみによる書込みを行う。なお、この第２の実施の形態ではメインメモリ２００への書込みの際に事前処理を行っているため、通常書込による退避処理は行われない。
【００６６】
ステップＳ９５７が完了した後に、アドレスＱに対応するダーティフラグ２１１が「０」にクリアされる（ステップＳ９６１）。
【００６７】
以上の処理を、Ｑの値を１つずつ加算しながら（ステップＳ９６３）、末尾アドレスになるまで繰り返す（ステップＳ９６２）。末尾アドレスになるまで処理を行った後（ステップＳ９６２：Ｙｅｓ）、データ退避が完了した旨がホストコンピュータ１００に通知される（ステップＳ９６４）。
【００６８】
このように、本技術の第２の実施の形態では、メインメモリ２００への書込みによって退避の必要性を検出し、これに基づいて事前処理を行うことにより、退避処理を高速化することができる。
【００６９】
＜３．変形例＞
以下では、上述の第１の実施の形態を前提とした変形例について説明するが、これら変形例は第２の実施の形態に対して同様に適用することができる。
【００７０】
［第１の変形例］
図１５は、本技術の第１の変形例における情報処理システムの構成例を示す図である。上述の第１の実施の形態では、ホストコンピュータ１００からの指示に従ってメインメモリ２００とストレージモジュール３００との間のデータ転送を行っていたが、この第１の変形例ではホストコンピュータ１００を介することなくデータ転送が行われる。具体的には、メインメモリ２００とストレージモジュール３００との間は信号線２０８により接続されており、これを介して直接データ転送を行う機構を備えている。この機構を利用することにより、ホストコンピュータ１００は、事前処理が完了している領域を退避する際にメインメモリ２００からデータの読出しを行うことなく、ストレージコントローラ３１０に退避コマンドを送信するだけで済むようになる。
【００７１】
退避コマンドを受信したストレージコントローラ３１０は、図１１に示した退避処理を自ら実行する。すなわち、ストレージコントローラ３１０は、メインメモリ２００上のダーティフラグ２１１と事前処理フラグ２１２を参照し、その参照値に応じてメインメモリ２００からストレージメモリ３２０へデータの退避を行う。退避処理が完了すると、ストレージコントローラ３１０からホストコンピュータ１００へ「退避完了」を通知する。
【００７２】
通常の場合、退避処理はシステムを休止する際に行われるため、ホストコンピュータ１００が退避コマンドを発行してから「退避完了」を受信するまでの間には、メインメモリ２００の退避対象となる領域に対して書込みは行われない。ただし、例えばユーザがキーボード操作を行った等のために、メインメモリ２００の退避対象となる領域への書込みが必要になる場合も生じ得る。この場合、ホストコンピュータ１００は「退避中止」を意味するコマンドをストレージコントローラ３１０に送信した後に、メインメモリ２００への書込みを続行する。ストレージコントローラ３１０は「退避中止」を受信すると、そのとき退避処理中のアドレスのダーティフラグ２１１を「１」に設定して退避処理を終了する。この場合には、ストレージコントローラ３１０からホストコンピュータ１００への完了通知は行わない。
【００７３】
また、ストレージコントローラ３１０は、復元コマンドを受信すると、図７に示した復元処理を自ら実行して、その後でホストコンピュータ１００に「復元完了」を通知する。ホストコンピュータ１００は、復元コマンドの発行後「復元完了」を受信するまでは、復元されるべき領域のメインメモリ２００へのアクセスは行わない。
【００７４】
同様に、ストレージコントローラ３１０は、図１０に示した事前処理をホストコンピュータ１００からの指示なしに自律的に行う。なお、この第１の変形例において、事前処理は、第１の実施の形態と同様にホストコンピュータ１００が行うようにしてもよい。
【００７５】
［第２の変形例］
図１６は、本技術の第２の変形例における情報処理システムの構成例を示す図である。上述の第１の実施の形態では、ホストコンピュータ１００からメインメモリ２００およびストレージメモリ３２０に対して個別に指示を与えていたが、この第２の変形例では、それらを統合して取り扱う。すなわち、メインメモリ２００およびストレージメモリ３２０は統合メモリモジュール４００に統合される。そして、統合メモリモジュール４００の統合メモリコントローラ４１０により制御される。
【００７６】
ホストコンピュータ１００は、統合メモリモジュール４００と接続するためのメモリインターフェース１４０を備える。統合メモリコントローラ４１０は、信号線４０９を介してメモリインターフェース１４０に接続する。統合メモリコントローラ４１０は、ストレージメモリ３２０のエラーを訂正するＥＣＣ処理部４１１を備える。なお、この例ではＥＣＣ処理部４１１を統合メモリコントローラ４１０に設けているが、ホストコンピュータ１００やストレージメモリ３２０に設けるようにしてもよい。
【００７７】
変形例１と同様に、退避処理または復元処理において、ホストコンピュータ１００は統合メモリコントローラ４１０に退避の開始または復元の開始のコマンドを送るだけで済み、退避処理または復元処理の実行は統合メモリコントローラ４１０が行う。事前処理も同様に統合メモリコントローラ４１０が自律的に行う。さらに、この第２の変形例では、ホストコンピュータ１００からメインメモリ２００への書込みがあった際に、当該アドレスのダーティフラグ２１１および事前処理フラグ２１２を「１」にセットする操作も、統合メモリコントローラ４１０によって行われる。
【００７８】
この第２の変形例では、メインメモリ２００とストレージメモリ３２０との間のデータ転送制御を、ホストコンピュータ１００を介することなく、統合メモリモジュール４００において独立して行うことができる。
【００７９】
［第３の変形例］
図１７は、本技術の第３の変形例における情報処理システムの構成例を示す図である。上述の第１の実施の形態では、ダーティフラグ２１１および事前処理フラグ２１２をメインメモリ２００に保持していたが、この第３の変形例では専用のフラグメモリ３３０をストレージモジュール３００に設ける。フラグメモリ３３０は、それらのフラグをダーティフラグ３３１および事前処理フラグ３３２として保持する。
【００８０】
ホストコンピュータ１００は、ストレージインターフェース１３０を用いてダーティフラグ３３１および事前処理フラグ３３２を参照し、更新する。第１の実施の形態では、フラグの書込みのためにメインメモリ２００の帯域の一部が使用されるが、この第３の変形例ではメインメモリ２００は使用されない。また、フラグへのアクセスはビット単位の読み書きであるため、メインメモリ２００よりもアクセス単位の小さい専用のメモリをもつことで、アクセス遅延や消費電力を低減することができる。
【００８１】
［第４の変形例］
上述の第１の実施の形態では、ダーティフラグ２１１および事前処理フラグ２１２はメインメモリ２００のアドレスごとに記録するものと想定したが、メインメモリ２００の特定のアドレス範囲ごとに１ビットのフラグを設けてもよい。図１８は、本技術の第４の変形例におけるダーティフラグ２１１および事前処理フラグ２１２の一例を示す図である。
【００８２】
例えば、メインメモリ２００の最小アクセス単位を６４ビット、ストレージメモリ３２０の最小アクセス単位を１Ｋバイトとしたとき、同図のように、メインメモリ２００の連続する１６アドレスに対して両フラグを１ビットずつ備える。このとき、ホストコンピュータ１００は、例えば０ｘ００００乃至０ｘ０００Ｆの範囲において、いずれか１ビットでもメインメモリ２００に書込みが発生した場合には、対応するダーティフラグ２１１を「１」にする。
【００８３】
この第４の変形例では、特定のアドレス範囲ごとにダーティフラグ２１１および事前処理フラグ２１２を設けることにより、両フラグに要する記憶領域を減らすことができる。
【００８４】
［第５の変形例］
上述の第１の実施の形態では、ダーティフラグ２１１に対応する退避領域を１つ設けることを想定していたが、これは複数設けるようにしてもよい。図１９は、本技術の第５の変形例におけるダーティフラグ２１１と退避領域との関係例を示す図である。メインメモリ２００のアドレス空間を任意の大きさに分割し（例えば２２１および２２２）、それぞれを仮想的なアドレス空間としてダーティフラグ２３１および２３２を設ける。
【００８５】
また、ダーティフラグの各々に対応する退避領域を、１つのダーティフラグに対して１つ以上設ける。例えば、ダーティフラグ２３１に対して退避領域３２２および３２３を、ダーティフラグ２３２に対して退避領域３２４および３２５をそれぞれ設ける。そして、それぞれのダーティフラグが、どの退避領域に対応しているのかを識別するため、ダーティフラグ毎に、退避領域の位置を示すポインタを備える。ここで、ポインタとは、例えば、当該ダーティフラグに対応する退避領域の、ストレージメモリ３２０全体のアドレス空間における先頭アドレスを意味する。
【００８６】
例えば、メインメモリ２００が複数のメモリチップからなるとき、メモリチップ毎にダーティフラグを設けておけば、あるメモリチップのみについてのみデータ退避を行い、当該メモリチップへの電源供給を遮断または制限してシステムの省電力化を行うことができる。
【００８７】
また、複数のアプリケーションを同時実行することのできるシステムにおいて、実行中のアプリケーション毎に、当該アプリケーションに割当てられているメモリ空間のダーティフラグを作成してもよい。ユーザからの入力待ち、または、バックグラウンドジョブとなっているアプリケーションに対して退避処理を行うことで、メインメモリの一部を開放または電源遮断することができる。
【００８８】
［第６の変形例］
上述の第１の実施の形態では、通常の書込動作が、プレリード処理、リセット処理およびセット処理の３つの工程に分類されることを想定していた。これに対し、ストレージメモリ３２０の特性によっては、プレリード処理を省略しても動作可能な場合がある。図２０は、本技術の第６の変形例におけるストレージメモリのメモリセルに印加する電圧パルスの一例を示す図である。
【００８９】
この場合、リセット処理およびセット処理において、書込み前のビットセルの現在の状態が「１」であるか「０」であるかによらず、書き込むデータの当該ビットが「１」ならばセットパルスを、「０」ならばリセットパルスを全ビットに印加する。したがって、事前処理においてはプレリード処理を行うことなくリセット処理を、高速書込においてはセット処理を、それぞれ書込みデータに従って実行することになる。
【００９０】
この第６の変形例では、第１の実施の形態よりもプレリード処理に要する時間を省くことができるため、全体の書込み時間を高速化することができる。一方、プレリード処理を行わないことによって、ビットセルに連続して同じ値を書き込む可能性が生じるため、セルの書換寿命の消耗は早まる可能性がある。したがって、ストレージメモリ３２０の特性に応じて書込動作の内容を選択することが必要になる。
【００９１】
［第７の変形例］
上述の第１の実施の形態では、リセット処理を実行した後にセット処理を実行することを想定していた。これに対し、セット処理を実行した後にリセット処理を実行するようにしてもよい。すなわち、アドレスＲの事前処理フラグを参照して、その値が「１」だったときには、プレリード処理とセット処理により当該アドレスの全ビットに「１」を書き込む。また、退避処理において、アドレスＱの事前処理フラグを参照して、その値が「０」だったときには、事前にセット処理が行われているため、メインメモリ２００のアドレスＱのデータを、リセット処理のみにより退避領域に書き込むことができる。
【００９２】
［第８の変形例］
上述の第１の実施の形態では、メインメモリ２００に書込みが発生した際、ホストコンピュータ１００がダーティフラグ２１１および事前処理フラグ２１２を更新していたが、その操作はホストコンピュータ１００以外が行うようにしてもよい。
【００９３】
例えば、第１の変形例１（図１５）や第３の変形例 (図１７）において、ホストコンピュータ１００はメインメモリ２００への書込みの際、メインメモリ２００の書込先アドレスのみをストレージコントローラ３１０に送信する。これにより、ストレージコントローラ３１０がホストコンピュータ１００に代わってダーティフラグ２１１および事前処理フラグ２１２を更新することができる。
【００９４】
また、第２の変形例（図１６）では、ホストコンピュータ１００からメインメモリ２００への書込みアドレスを統合メモリコントローラ４１０が常に受け取る。そのため、統合メモリコントローラ４１０がホストコンピュータ１００に代わってダーティフラグ２１１および事前処理フラグ２１２を更新することができる。
【００９５】
［第９の変形例］
上述の第１の実施の形態では、ホストコンピュータ１００が一定時間ごとに事前処理フラグ２１２を参照して事前処理を行っていたが、その操作はホストコンピュータ１００以外が行うようにしてもよい。
【００９６】
例えば、第１の変形例１（図１５）や第３の変形例 (図１７）において、ストレージコントローラ３１０は、ホストコンピュータ１００を介さずにダーティフラグ２１１や事前処理フラグ２１２にアクセスすることができる。同様に、第２の変形例（図１６）の統合メモリコントローラ４１０は、ホストコンピュータ１００を介さずにダーティフラグ２１１や事前処理フラグ２１２にアクセスすることができる。これにより、ホストコンピュータ１００からの指示なしに、一定時間ごとに事前処理を実行することができる。
【００９７】
［第１０の変形例］
上述の第１の実施の形態では、退避処理および復元処理をホストコンピュータ１００が行っていたが、これらの処理はホストコンピュータ１００以外が行うようにしてもよい。
【００９８】
例えば、第１の変形例１（図１５）や第３の変形例 (図１７）において、ストレージコントローラ３１０は、ホストコンピュータ１００からの開始の指示を受けて、退避処理または復元処理を実行してもよい。同様に、第２の変形例（図１６）の統合メモリコントローラ４１０は、ホストコンピュータ１００からの開始の指示を受けて、退避処理または復元処理を実行してもよい。
【００９９】
このとき、ホストコンピュータ１００からストレージコントローラ３１０または統合メモリコントローラ４１０に対しては、「退避の開始」または「復元の開始」を示すコマンドを送るだけでよい。ダーティフラグ２１１や事前処理フラグ２１２の参照、および、メインメモリ２００とストレージメモリ３２０の間のデータ転送は、ストレージコントローラ３１０または統合メモリコントローラ４１０によって行われる。また、ストレージコントローラ３１０または統合メモリコントローラ４１０は、退避や復元の完了をホストコンピュータ１００に通知する。ホストコンピュータ１００は、データ退避完了通知を受信した後、メインメモリ２００、ストレージメモリ３２０、ストレージコントローラ３１０または統合メモリコントローラ４１０等の電源をオフにする。この場合、電源をオフにすることなく、システム全体を省電力状態に移行させるようにしてもよい。
【０１００】
［第１１の変形例］
上述の第１の実施の形態では、図４に示したように、リセット処理およびセット処理のためのパルス印加はそれぞれ１回を想定していた。これに対し、ストレージメモリ３２０の特性によっては、リセット処理およびセット処理の際にそれぞれ複数回のパルス印加を行う方がより適切な場合がある。例えば、セルの書込み特性にばらつきがあるため、ほとんどのセルは２回のパルスで正常に書き込むことが可能である一方、残りの極少数のセルに正常に書き込むためには４回のパルスが必要な場合がある。
【０１０１】
図２１は、本技術の第１１の変形例におけるストレージメモリ３０のメモリセルに印加する電圧パルスの一例を示す図である。リセット処理は、１回以上のリセットパルスと、０回以上の検証リードからなる。リセットパルスによって、ビットセルに「０」を書き込むための電圧を一定時間印加し、その後、検証リードによってビットセルの状態を読み取って、正しく「０」が書き込まれているか否かを検査する。次に、１回目のパルスで正しく書き込めなかったビットセルに対して再びリセットパルスを印加し、検証リードを行う。これをＮ回繰り返してリセット処理を完了する。同様に、セット処理では、セットパルスによってビットセルに「１」を書き込むための電圧を一定時間印加した後に検証リードするという処理を、Ｍ回繰り返す。
【０１０２】
この第１１の変形例においては、上述の第１の実施の形態と同様に、事前処理の際にはプレリード処理およびリセット処理を行い、その後の退避処理ではセット処理を行う。ただし、上述の第７の変形例のように、事前処理の際にはプレリード処理およびセット処理を行い、その後の退避処理ではリセット処理を行うようにしてもよい。また、上述の第６の変形例のように、ストレージメモリ３２０の特性によっては、プレリード処理を省略してもよい。
【０１０３】
［第１２の変形例］
上述の第１１の変形例では、Ｎ回のリセットパルス印加とＭ回のセットパルス印加とを想定したが、退避処理についてはパルス印加の数を削減することが可能である。通常書込におけるパルス印加数は、長期間（例えば、１０年）電源を遮断した状態で保存されても、十分な信頼性が保たれるよう設定される。これに対し、パルス印加数を減らすと、通常書込の場合に比べてエラーが増加するが、ＥＣＣの使用を前提とすることにより、短期間（例えば、１週間）であればデータの保持を保証可能である。すなわち、データ退避の後、ほとんどの場合に短期間で復元されるような使用環境においては、パルス印加数を減らした書込みにより、データ退避に要する時間を短縮できることになる。そこで、この第１２の変形例では、通常領域に対する書込みには第１１の変形例により示した回数によるパルス印加を行う一方で、退避領域に対する書込みにはパルス印加数を削減することとする。
【０１０４】
図２２は、本技術の第１２の変形例におけるストレージメモリ３０の退避領域のメモリセルに印加する電圧パルスの一例を示す図である。この第１２の変形例では、退避領域に対する書込みには、通常領域に対する書込みと比べてリセット処理およびセット処理におけるパルス印加数を半減させる。すなわち、リセット処理においてはＮ／２回のリセットパルス印加とＮ／２回の検証を行い、セット処理においてはＮ／２回のセットパルス印加とＮ／２回の検証を行うこととする。
【０１０５】
この第１２の変形例においては、上述の第１の実施の形態と同様に、事前処理の際にはプレリード処理およびリセット処理を行い、その後の退避処理ではセット処理を行う。ただし、上述の第７の変形例のように、事前処理の際にはプレリード処理およびセット処理を行い、その後の退避処理ではリセット処理を行うようにしてもよい。また、上述の第６の変形例のように、ストレージメモリ３２０の特性によっては、プレリード処理を省略してもよい。
【０１０６】
図２３は、本技術の第１２の変形例におけるストレージメモリ３２０への書込み処理の処理手順例を示す流れ図である。この第１２の変形例では、退避領域に対する書込みにはパルス印加数を半減させるが、通常領域に対してデータを書き込む際には、半減しない通常のパルス印加数により書込みを行う（ステップＳ９３２）。
【０１０７】
図２４は、本技術の第１２の変形例におけるストレージメモリ３２０への退避処理の処理手順例を示す流れ図である。この第１２の変形例における処理手順例は、図１１に示した第１の実施の形態における退避処理と基本的には同様である。ただし、退避領域に書込みを行う際、パルス印加数を半減させる点において第１の実施の形態とは異なっている（ステップＳ９６７）。
【０１０８】
この第１２の変形例では、退避領域に書込みを行う際のパルス印加数を、通常領域の場合と比べて削減することにより、退避処理を高速化することができる。
【０１０９】
［第１３の変形例］
上述の第１２の変形例では、退避領域に書込みを行う際のパルス印加数を削減したが、パルス幅を狭くしても同様の効果を得ることができる。
【０１１０】
図２５は、本技術の第１３の変形例におけるストレージメモリ３０の退避領域のメモリセルに印加する電圧パルスの一例を示す図である。この第１３の変形例では、退避領域に対する書込みには、通常領域に対する書込みと比べてリセット処理およびセット処理におけるパルス幅を半減させる。
【０１１１】
この第１３の変形例では、退避領域に書込みを行う際のパルス幅を、通常領域の場合と比べて狭くすることにより、退避処理を高速化することができる。なお、この例では、書込みパルスのパルス幅を狭くしたが、書込みパルスについて電圧や電流を弱くしてもよい。すなわち、退避領域に対する書込みには、通常領域に対する書込みと比べてリセット処理およびセット処理におけるパルスの印加電圧を低くしてもよい。また、退避領域に対する書込みには、通常領域に対する書込みと比べてリセット処理およびセット処理におけるパルスの電流を小さくしてもよい。
【０１１２】
［第１４の変形例］
上述の第１２および１３の変形例では、退避領域に対する書込みにはパルス印加数やパルス幅を削減しているため、退避領域のデータは短期間のデータ保持しか保証されなくなってしまう。そのため、システムが長期間休止する場合や、退避領域の一部が長期間更新されない場合にもデータ保持を保証するために、ホストコンピュータ１００は一定期間（例えば１週間）毎に、退避領域全体に対してデータの読出しと再書込みを行ってもよい。また、ホストコンピュータ１００が一定期間毎に、ストレージコントローラ３１０にリフレッシュコマンドを送り、これに応答してストレージコントローラ３１０が退避領域全体に対してデータ読出しと再書込みを行うようにしてもよい。
【０１１３】
［第１５の変形例］
上述の第１の実施の形態では、ホストコンピュータ１００からメインメモリ２００に書込みが行われるたびにダーティフラグ２１１を「１」にしていたが（ステップＳ９２２）、これとは異なるタイミングで「１」にしてもよい。この第１５の変形例では、将来書込を行うであろうアドレスを予測して、そのアドレスに対応するダーティフラグ２１１を「１」にする。すなわち、アプリケーション毎に割り当てられた仮想アドレスを管理して、その割当に変更がある度にそのアドレスに対応するダーティフラグ２１１および事前処理フラグ２１２を「１」にする。また、アプリケーション毎に直前の復元処理の後にデータ更新が行われたか否かを管理して、データ更新が行われたアプリケーションが使用する全てのアドレスについて、対応するダーティフラグ２１１および事前処理フラグ２１２を「１」にする。
【０１１４】
図２６は、本技術の第１５の変形例における情報処理システムの構成例を示す図である。この第１５の変形例では、メインメモリ２００において、メインメモリ管理テーブル２１３およびアプリケーション状態フラグ２１４を備える点において第１の実施の形態と異なっているが、その他の点は第１の実施の形態と同様である。
【０１１５】
メインメモリ管理テーブル２１３は、ホストコンピュータ１００上で複数のアプリケーションが動作するとき、各アプリケーションが認識する仮想アドレスがメインメモリの各物理アドレスにどのように対応しているかを示すテーブルである。
【０１１６】
アプリケーション状態フラグ２１４は、動作中のアプリケーションのリストと、そのアプリケーションそれぞれについて、前回の復元処理の後、データ更新が行われた否かを示すフラグである。例えば、このフラグが「０」の場合には前回の復元処理から更新がされていない旨を示し、このフラグが「１」の場合には前回の復元処理から更新がされている旨を示す。
【０１１７】
図２７は、本技術の第１５の変形例におけるメインメモリ管理テーブル２１３の構成例を示す図である。このメインメモリ管理テーブル２１３は、メインメモリ２００の各アドレスに対応して、割当て先のアプリケーションとその仮想アドレスとを管理する。何れのアプリケーションにも割り当てられていないアドレスについては、「空き」である旨が示されている。
【０１１８】
ホストコンピュータ１００は、新たなアプリケーションを起動するとき、または、起動中のアプリケーションに占有させるメモリ領域を追加するとき、当該アプリケーションが必要とする数だけ、メインメモリ２００の空き領域を割当てる。このとき、メインメモリ管理テーブル２１３の該当するアドレスの項目に、新たな割当て先（アプリケーション）と仮想アドレスとの対を記録する。また、アプリケーションを終了するとき、または、起動中のアプリケーションが占有するメモリ領域の一部を開放するとき、メインメモリ管理テーブル２１３の該当するアドレスの項目を「空き」に書き換える。
【０１１９】
図２８は、本技術の第１５の変形例におけるアプリケーション状態フラグ２１４の構成例を示す図である。このアプリケーション状態フラグ２１４は、メインメモリ２００にロードされているアプリケーションの各々に対応して、前回の復元処理からデータ更新が行われた否かを保持する。
【０１２０】
このアプリケーション状態フラグ２１４は、一定時間毎に、または、退避処理が行われる前にチェックされる。その結果、前回の復元処理からデータ更新が行われている場合には、そのアプリケーションが使用する全てのアドレスについて、対応するダーティフラグ２１１および事前処理フラグ２１２を「１」にする。
【０１２１】
図２９は、本技術の第１５の変形例におけるメインメモリ２００への書込み処理の処理手順例を示す流れ図である。この第１５の変形例では、第１の実施の形態とは異なり、メインメモリに書込みを行う際には（ステップＳ９２１）、ダーティフラグ２１１の操作を行う必要はない。それに代えて、以下に示すように、メインメモリ２００の割当てが変更される際にダーティフラグ２１１の操作を行う。
【０１２２】
図３０は、本技術の第１５の変形例におけるメインメモリ２００の割当て変更処理の処理手順例を示す流れ図である。上述のように、ホストコンピュータ１００は、新たなアプリケーションを起動するとき、または、起動中のアプリケーションに占有させるメモリ領域を追加するとき、メインメモリ管理テーブル２１３の該当するアドレスの項目を変更する。また、アプリケーションを終了するとき、または、起動中のアプリケーションが占有するメモリ領域の一部を開放するときも、メインメモリ管理テーブル２１３の該当するアドレスの項目を変更する。このようなメインメモリ管理テーブル２１３の更新が生じた際（ステップＳ９７１）、更新したアドレスに対応するダーティフラグ２１１および事前処理フラグ２１２を全て「１」にする（ステップＳ９７３）。但し、更新後の状態が「空き」の場合は（ステップＳ９７２：Ｙｅｓ）、退避処理は必要ないため、ダーティフラグ２１１および事前処理フラグ２１２の変更は行われない。
【０１２３】
図３１は、本技術の第１５の変形例におけるアプリケーション状態フラグ２１４の監視処理の処理手順例を示す流れ図である。この第１５の変形例では、アプリケーション状態フラグ２１４が一定時間毎にチェックされる。また、退避処理を行う前にもアプリケーション状態フラグ２１４がチェックされる。すなわち、前回の復元処理からデータ更新が行われている旨（ここでは「１」）をアプリケーション状態フラグ２１４が示すか否かがチェックされる（ステップＳ９８１）。そして、アプリケーション状態フラグ２１４が「１」を示す場合には（同：Ｙｅｓ）、そのアプリケーションが使用する全てのメインメモリ２００のアドレスに対応するダーティフラグ２１１および事前処理フラグ２１２を全て「１」にする（ステップＳ９７３）。
【０１２４】
［第１６の変形例］
上述の各実施の形態では、ダーティフラグ２１１を利用していたが、これを利用することなく復元処理および退避処理を行うことも可能である。
【０１２５】
図３２は、本技術の第１６の変形例における復元処理の処理手順例を示す流れ図である。ホストコンピュータ１００は、第１の実施の形態と同様の場合に、復元処理を開始する。このとき、ストレージメモリ３２０の退避領域３２１に復元すべきデータが存在する場合に（ステップＳ９１１：Ｙｅｓ）、退避領域３２１のデータ全てがメインメモリ２００にコピーされる（ステップＳ９１２）。そして、この復元処理を終了する際に、事前処理フラグ２１２を全て「１」にする（ステップＳ９１４）。
【０１２６】
図３３は、本技術の第１６の変形例におけるストレージメモリ３２０への退避処理の処理手順例を示す流れ図である。この図は、上述の第１の実施の形態における図１１からダーティフラグ２１１に関する処理を除いたものとなっている。したがって、詳細な説明は省略する。
【０１２７】
この第１６の変形例では、復元処理を行った後、任意のタイミングで事前処理を開始することができる。この事前処理は、上述の第１の実施の形態における図１０と同様であるため、詳細な説明は省略する。
【０１２８】
［第１７の変形例］
上述の各実施の形態では、ストレージメモリ３２０として２値の値を示す記憶素子を想定していたが、多値の記憶素子に適用してもよい。
【０１２９】
図３４は、本技術の第１６の変形例における抵抗変化型メモリの抵抗状態を示す図である。この第１６の変形例の抵抗変化型メモリのメモリセルは、ＬＲＳ（低抵抗状態）およびＨＲＳ（高抵抗状態）に加えて、ＭＲＳ（中抵抗状態）の計３状態の何れかを示すことを想定している。
【０１３０】
この第１６の変形例では、ＬＲＳにある場合、弱リセット動作によりＭＲＳに遷移し、強リセット動作によりＨＲＳに遷移する。ＨＲＳにある場合、弱セット動作によりＭＲＳに遷移し、強セット動作によりＬＲＳに遷移する。すなわち、同じリセット処理でもその強さ（パルス幅、パルス数、パルス電圧、パルス電流のいずれか）を変えて書き込むことにより、中間的な抵抗値を作り出すことができる。
【０１３１】
この第１６の変形例では、事前処理の際には、２値の場合と同様に、処理するアドレスの全ビットがＬＲＳ（または、ＨＲＳ）になるように書き込んでおく。
【０１３２】
事前処理がされていない場合には、弱リセット、弱セット、強リセット、強セットの４種類の書込み操作を行わなければいけないが、事前処理により全てＬＲＳになっていれば、そのうち２つのみを行うことにより書き込みを行うことができる。
【０１３３】
［第１８の変形例］
上述の第１の実施の形態では、ホストコンピュータ１００からメインメモリ２００にアクセスが行われるたびにダーティフラグ２１１を更新していたが（ステップＳ９２２）、そのようなアクセスの有無にかかわらず、外部の装置が更新するようにしてもよい。また、事前処理フラグ２１２についても同様に、外部の装置が更新するようにしてもよい。
【０１３４】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１３５】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１３６】
なお、本技術は以下のような構成もとることができる。
（１）２値以上の値のデータを記憶する第１および第２のメモリにおいて前記第１のメモリに記憶されるデータを前記第２のメモリの対応する退避領域へ退避させる事前処理の必要性を検出する検出部と、
前記事前処理の必要性が検出されたデータの前記第２のメモリにおける前記退避領域に対して前記２値以上の値の何れか１値を前記事前処理として書き込む事前処理部と、
前記１値が書き込まれた前記退避領域に対して前記データに応じて前記２値以上の値のうち前記１値とは異なる値を書き込む退避処理部と
を具備する記憶制御装置。
（２）前記検出部は、前記第１のメモリの所定の領域に対してデータの書込みが生じるたびに前記事前処理の必要性を検出する前記（１）に記載の記憶制御装置。
（３）前記第１のメモリの所定の領域に対してデータの書込みが生じた後に前記事前処理が行われたか否かを示す事前処理フラグをさらに具備し、
前記検出部は、前記事前処理が行われていない旨を前記事前処理フラグが示している領域について前記事前処理の必要性を検出する
前記（１）または（２）に記載の記憶制御装置。
（４）前記退避処理部は、前記事前処理が行われていない旨を前記事前処理フラグが示している領域に対応する前記退避領域に対しては、前記１値を書き込んだ後に、前記データに応じて前記２値以上の値のうち前記１値とは異なる値を書き込む
前記（３）に記載の記憶制御装置。
（５）復元処理要求に応じて前記退避領域に退避されているデータを前記第１のメモリへ復元させる復元処理部をさらに具備する前記（１）から（４）のいずれかに記載の記憶制御装置。
（６）前記第１のメモリの所定の領域に対してデータの書込みが生じたか否かを示すダーティフラグをさらに具備し、
前記退避処理部は、前記ダーティフラグがデータの書込みが生じた旨を示す領域のみについて前記２値以上の値のうち前記１値とは異なる値を書き込む
前記（１）から（５）のいずれかに記載の記憶制御装置。
（７）前記事前処理部は、前記退避領域に対して前記１値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対するパルスの発生回数よりも少ない回数のパルスを用い、
前記退避処理部は、前記退避領域に対して前記２値以上の値のうち前記１値とは異なる値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対するパルスの発生回数よりも少ない回数のパルスを用いる
前記（１）から（６）のいずれかに記載の記憶制御装置。
（８）前記事前処理部は、前記退避領域に対して前記１値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対するパルス幅よりも狭いパルスを用い、
前記退避処理部は、前記退避領域に対して前記２値以上の値のうち前記１値とは異なる値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対するパルス幅よりも狭いパルスを用いる
前記（１）から（７）のいずれかに記載の記憶制御装置。
（９）前記事前処理部は、前記退避領域に対して前記１値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対する書込みパルスの印加電圧よりも低い電圧を用い、
前記退避処理部は、前記退避領域に対して前記２値以上の値のうち前記１値とは異なる値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対する印加電圧よりも低い電圧を用いる
前記（１）から（８）のいずれかに記載の記憶制御装置。
（１０）前記事前処理部は、前記退避領域に対して前記１値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対する書込みパルスの電流よりも小さい電流を用い、
前記退避処理部は、前記退避領域に対して前記２値以上の値のうち前記１値とは異なる値を書き込む際には前記第２のメモリの前記退避領域以外の領域に対する書込みパルスの電流よりも小さい電流を用いる
前記（１）から（９）のいずれかに記載の記憶制御装置。
（１１）２値以上の値のデータを記憶する第１のメモリと、
前記第１のメモリに記憶されるデータを退避するための第２のメモリと、
前記第１のメモリに記憶されるデータを前記第２のメモリの対応する退避領域へ退避させる事前処理の必要性を検出する検出部と、
前記事前処理の必要性が検出されたデータの前記第２のメモリにおける前記退避領域に対して前記２値以上の値の何れか１値を前記事前処理として書き込む事前処理部と、
前記１値が書き込まれた前記退避領域に対して前記データに応じて前記２値以上の値のうち前記１値とは異なる値を書き込む退避処理部と
を具備する記憶装置。
（１２）２値以上の値のデータを記憶する第１および第２のメモリにおいて前記第１のメモリに記憶されるデータを前記第２のメモリの対応する退避領域へ退避させる事前処理の必要性を検出する検出手順と、
前記事前処理の必要性が検出されたデータの前記第２のメモリにおける前記退避領域に対して前記２値以上の値の何れか１値を前記事前処理として書き込む事前処理手順と、
前記１値が書き込まれた前記退避領域に対して前記データに応じて前記２値以上の値のうち前記１値とは異なる値を書き込む退避処理手順と
を具備する記憶制御方法。
【符号の説明】
【０１３７】
１１  復元処理部
１２  事前処理部
１３  退避処理部
１４  検出部
２０、２００  メインメモリ
３０、３２０  ストレージメモリ
１００  ホストコンピュータ
１２０  メインメモリインターフェース
１３０  ストレージインターフェース
１４０  メモリインターフェース
２１１、２３１、２３２、３３１  ダーティフラグ
２１２、３３２  事前処理フラグ
３００  ストレージモジュール
３１０  ストレージコントローラ
３１１、４１１  ＥＣＣ処理部
３３０  フラグメモリ
４００  統合メモリモジュール
４１０  統合メモリコントローラ
【図１】
2015011421.tif 000003
【図２】
2015011421.tif 000004
【図３】
2015011421.tif 000005
【図４】
2015011421.tif 000006
【図５】
2015011421.tif 000007
【図６】
2015011421.tif 000008
【図７】
2015011421.tif 000009
【図８】
2015011421.tif 000010
【図９】
2015011421.tif 000011
【図１０】
2015011421.tif 000012
【図１１】
2015011421.tif 000013
【図１２】
2015011421.tif 000014
【図１３】
2015011421.tif 000015
【図１４】
2015011421.tif 000016
【図１５】
2015011421.tif 000017
【図１６】
2015011421.tif 000018
【図１７】
2015011421.tif 000019
【図１８】
2015011421.tif 000020
【図１９】
2015011421.tif 000021
【図２０】
2015011421.tif 000022
【図２１】
2015011421.tif 000023
【図２２】
2015011421.tif 000024
【図２３】
2015011421.tif 000025
【図２４】
2015011421.tif 000026
【図２５】
2015011421.tif 000027
【図２６】
2015011421.tif 000028
【図２７】
2015011421.tif 000029
【図２８】
2015011421.tif 000030
【図２９】
2015011421.tif 000031
【図３０】
2015011421.tif 000032
【図３１】
2015011421.tif 000033
【図３２】
2015011421.tif 000034
【図３３】
2015011421.tif 000035
【図３４】
2015011421.tif 000036