(57)【特許請求の範囲】
【請求項１】
メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作部と
を具備する記憶制御装置。
【請求項２】
前記メモリセルは、ビット毎に第１の値または第２の値の何れか一方の値を保持し、
前記前処理は、全てのビットを予め前記第１の値にする処理であり、
前記後処理は、任意のビットを前記第２の値にする処理である
請求項１記載の記憶制御装置。
【請求項３】
前記前処理実行判定部は、外部からの制御信号に基づいて前記判定を行う請求項１記載の記憶制御装置。
【請求項４】
前記メモリセルの所定のデータ領域毎に消去完了した旨を示す消去フラグを保持する消去フラグ保持部をさらに具備し、
前記前処理実行判定部は、ライト対象のデータ領域に対応する前記消去フラグが消去完了した旨を示している場合には前記前処理を実行しない旨を判定し、ライト対象のデータ領域に対応する前記消去フラグが消去完了した旨を示していない場合には前記前処理を実行する旨を判定する
請求項１記載の記憶制御装置。
【請求項５】
前記前処理実行判定部は、前記前処理を実行するか否かを示すフィールドを有するコマンドが発行されると、前記フィールドを参照して前記前処理を実行するか否かを判定する
請求項１記載の記憶制御装置。
【請求項６】
未使用となるデータ領域を通知するコマンドを受信すると当該コマンドにおいて通知されたデータ領域の消去を行うプロセッサを更に具備し、
前記前処理実行判定部は、ライト対象のデータ領域が前記コマンドによって消去されている場合には前記前処理を実行しない旨を判定する
請求項１記載の記憶制御装置。
【請求項７】
ユーザデータを消去するコマンドを受信すると当該コマンドに係るデータ領域の消去を行うプロセッサを更に具備し、
前記判定部は、ライト対象のデータ領域が前記コマンドによって消去されている場合には前記前処理を実行しない旨を判定する
請求項１記載の記憶制御装置。
【請求項８】
メモリセルと、
前記メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作部と
を具備する記憶装置。
【請求項９】
前記メモリセルは可変抵抗素子である請求項８記載の記憶装置。
【請求項１０】
メモリセルと、
前記メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作部と、
前記メモリアレイに対するリードコマンドまたはライトコマンドを発行するホストコンピュータと
を具備する情報処理システム。
【請求項１１】
メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定手順と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理手順と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、不揮発性メモリのための記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
情報処理システムにおいては、ワークメモリとしてＤＲＡＭ（Dynamic Random Access Memory）等が用いられる。このＤＲＡＭは、通常、揮発性メモリであり、電源の供給が停止するとその記憶内容は消失する。一方、近年、不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）が用いられるようになっている。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＲｅＲＡＭ（Resistance RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）などが挙げられる。
【０００３】
ＲｅＲＡＭは、可変抵抗素子を用いた不揮発性メモリであり、データの書込みに先立ってブロック単位で消去を行う必要がなく、必要ページのみを直接書き換えることが可能である。この点で、浮遊ゲートの電化蓄積量による閾値をデータとして記憶するＮＡＮＤフラッシュメモリ等とは異なっている。可変抵抗素子は、高抵抗状態（ＨＲＳ：High Resistive State）と低抵抗状態（ＬＲＳ：Low Resistive State）の２状態で１ビットの情報を記録することができる。この可変抵抗素子は、多数回連続して同じ極性の電圧を印加した場合には、可変抵抗処置の抵抗値が変化してしまい抵抗分布を乱すという問題がある。たとえば、同じ極性が連続する回数が増えていくにしたがって、ＨＲＳがＬＲＳに、ＬＲＳがＨＲＳに変化してしまう。このように抵抗値が変化すると、次に逆極性の電圧を印加する際に、通常と同じ電圧では正しく記録が行えなかったり、正しく記録を行うために絶対値の大きい電圧が必要になったりするおそれがある。そこで、従来、ライト処理の際に既書込みデータを読み出してライトデータと比較を行って、必要なビットのみを選択的に書き換えおよび消去する書込み方法が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−０６０３８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術では、同じ極性の電圧を連続して印加しないように、ライト処理の際には既書込みデータを読み出して、必要なビットのみを選択的に消去またはプログラムしていた。しかしながら、ライト処理の度に既書込みデータを読み出して選択的に消去またはプログラムしておくという前処理を必要以上に実行することは、書込み速度を低下させる要因となる。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、ライト対象となるデータ領域の前処理による書込み速度の低下を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定部と、前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作部とを具備する記憶制御装置またはその処理方法である。これにより、ライト動作の際に前処理が不要と判断された場合には前処理を省略してライト動作を高速化するという作用をもたらす。
【０００８】
また、この第１の側面において、前記メモリセルは、ビット毎に第１の値または第２の値の何れか一方の値を保持し、前記前処理は、全てのビットを予め前記第１の値にする処理であり、前記後処理は、任意のビットを前記第２の値にする処理であってもよい。
【０００９】
また、この第１の側面において、上記前処理実行判定部は、外部からの制御信号に基づいて上記判定を行ってもよい。これにより、前処理の実行の必要性を記憶制御装置の外部において判断させるという作用をもたらす。
【００１０】
また、この第１の側面において、上記メモリセルの所定のデータ領域毎に消去完了した旨を示す消去フラグを保持する消去フラグ保持部をさらに具備し、上記前処理実行判定部は、ライト対象のデータ領域に対応する上記消去フラグが消去完了した旨を示している場合には上記前処理を実行しない旨を判定し、ライト対象のデータ領域に対応する上記消去フラグが消去完了した旨を示していない場合には上記前処理を実行する旨を判定するようにしてもよい。これにより、ライト対象のデータ領域が消去されている場合に、前処理を省略してライト動作を高速化するという作用をもたらす。
【００１１】
また、この第１の側面において、上記前処理実行判定部は、上記前処理を実行するか否かを示すフィールドを有するコマンドが発行されると、上記フィールドを参照して上記前処理を実行するか否かを判定するようにしてもよい。これにより、前処理実行の有無をコマンドにより明示するという作用をもたらす。
【００１２】
また、この第１の側面において、未使用となるデータ領域を通知するコマンドを受信すると当該コマンドにおいて通知されたデータ領域の消去を行うプロセッサを更に具備し、上記前処理実行判定部は、ライト対象のデータ領域が上記コマンドによって消去されている場合には上記前処理を実行しない旨を判定するようにしてもよい。これにより、未使用となるデータ領域を通知するコマンドによってライト対象のデータ領域が消去されている場合に、前処理を省略してライト動作を高速化するという作用をもたらす。
【００１３】
また、この第１の側面において、ユーザデータを消去するコマンドを受信すると当該コマンドに係るデータ領域の消去を行うプロセッサを更に具備し、上記判定部は、ライト対象のデータ領域が上記コマンドによって消去されている場合には上記前処理を実行しない旨を判定するようにしてもよい。これにより、ユーザデータを消去するコマンドによってライト対象のデータ領域が消去されている場合に、前処理を省略してライト動作を高速化するという作用をもたらす。
【００１４】
また、本技術の第２の側面は、メモリセルと、前記メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定部と、前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作部とを具備する記憶装置である。これにより、メモリセルに対するライト動作の際に前処理が不要と判断された場合には前処理を省略してライト動作を高速化するという作用をもたらす。
【００１５】
なお、この第２の側面において、上記メモリセルは可変抵抗素子であってもよい。
【００１６】
また、本技術の第３の側面は、メモリセルと、前記メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定部と、前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作部と、前記メモリアレイに対するリードコマンドまたはライトコマンドを発行するホストコンピュータとを具備する情報処理システムである。これにより、ホストコンピュータからのライトコマンドによるライト動作の際に前処理が不要と判断された場合には前処理を省略してライト動作を高速化するという作用をもたらす。
【発明の効果】
【００１７】
本技術によれば、ライト対象となるデータ領域の前処理による書込み速度の低下を抑制することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１８】
【図１】本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態における不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）３０１の一構成例を示す図である。
【図３】本技術の実施の形態における機能構成例を示す図である。
【図４】本技術の第１の実施の形態において可変抵抗素子に対して書込みを行う具体例を示す図である。
【図５】本技術の第１の実施の形態において前処理省略を指示するためのコマンド例を示す図である。
【図６】本技術の実施の形態における情報処理システムのライト処理手順例を示す流れ図である。
【図７】本技術の実施の形態における情報処理システムのライト処理手順の変形例を示す流れ図である。
【図８】本技術の実施の形態における管理情報テーブルの一例を示す流れ図である。
【図９】本技術の第２の実施の形態におけるＴｒｉｍコマンド受信時のメモリシステム４００の処理手順例を示す流れ図である。
【図１０】本技術の第２の実施の形態におけるバックグラウンド事前消去のメモリシステム４００の処理手順例を示す流れ図である。
【図１１】本技術の第３の実施の形態におけるＳｅｃｕｒｅ  Ｅｒａｓｅコマンド受信時のメモリシステム４００の処理手順例を示す流れ図である。
【図１２】本技術の第４の実施の形態において可変抵抗素子に対して書込みを行う具体例を示す図である。
【図１３】本技術の第５の実施の形態における情報処理システムのライト処理手順例を示す流れ図である。
【図１４】本技術の第５の実施の形態における情報処理システムのライト処理手順の変形例を示す流れ図である。
【発明を実施するための形態】
【００１９】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（外部から前処理の省略を指示する例）
２．第２の実施の形態（Ｔｒｉｍコマンドを利用した例）
３．第３の実施の形態（Ｓｅｃｕｒｅ  Ｅｒａｓｅコマンドを利用した例）
４．第４の実施の形態（プレリードデータを用いて消去およびプログラムを行う例）
５．第５の実施の形態（消去およびプログラムの検証を同時に行う例）
【００２０】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、メモリ３００と、メモリ制御部２００とを備える。メモリ制御部２００およびメモリ３００は、メモリシステム４００を構成する。ホストコンピュータ１００は、メモリシステム４００に対してデータのリードまたはライトを要求するコマンドを発行するものである。
【００２１】
メモリ３００は、通常の揮発性メモリ３０３以外に、不揮発性メモリを含む。不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリ３０２と、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）３０１とに大別される。ここで、フラッシュメモリ３０２の代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、ＮＶＲＡＭ３０１の例としては、ＲｅＲＡＭ、ＰＣＲＡＭ、ＭＲＡＭなどが挙げられるが、この実施の形態では、特に可変抵抗素子を用いたＲｅＲＡＭを想定する。揮発性メモリ３０３は、作業領域として用いられ、また、管理用のデータを格納するためにも用いられる。さらに、揮発性メモリ３０３は、キャッシュとして用いることも可能である。揮発性メモリ３０３は、ＤＲＡＭ、ＳＲＡＭなどにより実現することができる。揮発性メモリ３０３に格納されるデータは、電源断に備えて、必要に応じてＮＶＲＡＭ３０１またはフラッシュメモリ３０２に保持しておいて、次に電源投入された際に再利用されるようにしてもよい。
【００２２】
メモリ制御部２００は、プロセッサ２１０と、内蔵メモリ２２０と、ＥＣＣ処理部２３０と、周辺回路２５０と、ホストインターフェース２０１と、メモリインターフェース２９１乃至２９３とを備える。これらはバス２８０により相互に接続される。
【００２３】
プロセッサ２１０は、ホストコンピュータ１００からの制御コマンドを解釈して実行する処理装置である。このプロセッサ２１０は、内蔵メモリ２２０における記憶領域をプログラム格納領域およびワーク領域としてプログラムを実行する。
【００２４】
内蔵メモリ２２０は、図示しない内蔵ＲＯＭおよび内蔵ＲＡＭを含むメモリである。プログラムは内蔵ＲＯＭに格納しておいてもよく、また、ＮＶＲＡＭ３０１またはフラッシュメモリ３０２から起動時に内蔵ＲＡＭに転送するようにしてもよい。この内蔵ＲＡＭは、ワーク領域や管理用データなどの一時格納など様々な用途に用いられる。
【００２５】
ＥＣＣ処理部２３０は、データの各々に対応して付加されるエラー訂正コード（ＥＣＣ：Error Correcting Code）の生成およびそのＥＣＣを用いたエラー訂正を行うものである。このＥＣＣ処理部２３０は、ハードウェアとして実現してもよく、また、プロセッサ２１０においてプログラムを実行することによりソフトウェアとして実現してもよい。
【００２６】
周辺回路２５０は、プロセッサ２１０の周辺回路であり、例えば内蔵タイマーや汎用入出力（ＧＰＩＯ：General Purpose Input/Output）等を含む。
【００２７】
ホストインターフェース２０１は、ホストコンピュータ１００とのやりとりを行うインターフェースである。メモリシステム４００はホストインターフェース２０１を介して接続され、ホストコンピュータ１００から、メモリ３００を制御するための制御コマンドを受信し、この制御コマンドによって制御されてメモリシステムとして動作する。このホストインターフェース２０１としては、例えば、ＳＡＴＡ、ＰＣＩ  Ｅｘｐｒｅｓｓ、ｅＭＭＣ、ＵＳＢなどを利用することができる。
【００２８】
メモリインターフェース２９１は、ＮＶＲＡＭ３０１とのやりとりを行うインターフェースである。メモリインターフェース２９２は、フラッシュメモリ３０２とのやりとりを行うインターフェースである。メモリインターフェース２９３は、揮発性メモリ３０３とのやりとりを行うインターフェースである。
【００２９】
メモリシステム４００は、ライトコマンドによりメモリ３００へのデータの書込みを行い、リードコマンドによりメモリ３００からのデータの読出しを行う。ライトコマンドおよびリードコマンドは、対象データの存在する先頭論理アドレスおよびデータサイズをパラメータとして指定する。メモリシステム４００がライトコマンドのデータを受信すると、このデータに対してＥＣＣが付加され、不揮発性メモリ（ＮＶＲＡＭ３０１またはフラッシュメモリ３０２）に書き込まれる。
【００３０】
図２は、本技術の実施の形態における不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）３０１の一構成例を示す図である。ＮＶＲＡＭ３０１は、メモリアレイ３１０と、センスアンプ３１３と、ライトバッファ３２０と、リードバッファ３３０と、論理評価部３４０と、制御部３５０と、制御インターフェース３０９とを備えている。
【００３１】
制御インターフェース３０９は、メモリ制御部２００との間の接続を司るインターフェースである。この制御インターフェース３０９には、ライトバッファ３２０、リードバッファ３３０、論理評価部３４０および制御部３５０が接続される。
【００３２】
メモリアレイ３１０は、ビット毎に所定の状態を保持するメモリセルを格子状に並べたものである。メモリアレイ３１０のメモリセルは可変抵抗素子により構成される抵抗変化型メモリである。メモリアレイ３１０は複数のページから構成される。ページ内には、データを格納するデータ３１１の領域の他にＥＣＣ３１２の領域が設けられており、エラー訂正コード（ＥＣＣ）などが格納される。メモリアレイ３１０はセンスアンプ３１３を経由して、読出しまたは書込みが行われる。
【００３３】
センスアンプ３１３は、メモリアレイ３１０からの電圧を増幅するための増幅回路である。このセンスアンプ３１３には、ライトバッファ３２０、リードバッファ３３０、論理評価部３４０および制御部３５０が接続される。
【００３４】
ライトバッファ３２０は、メモリアレイ３１０にライトされるデータを一時的に保持するバッファである。このライトバッファ３２０には制御インターフェース３０９からのライトデータが信号線３０５を介して保持され、信号線３２８を介してセンスアンプ３１３に出力される。
【００３５】
リードバッファ３３０は、メモリアレイ３１０からリードされたデータを一時的に保持するバッファである。このリードバッファ３３０には、ライトの際には必要に応じて、ライトに先立ってプレリードデータが保持される。このリードバッファ３３０にはセンスアンプ３１３からのリードデータが信号線３１８を介して保持され、信号線３３８を介して制御インターフェース３０９に出力される。
【００３６】
論理評価部３４０は、ライトバッファ３２０およびリードバッファ３３０に保持されたデータに基づいて論理評価を行い、マスクデータを生成するものである。この論理評価部３４０において生成されたマスクデータは、信号線３４８を介してメモリアレイ３１０に供給される。
【００３７】
制御部３５０は、ＮＶＲＡＭ３０１内の各ブロックを制御するコントローラである。この制御部３５０は、例えばシーケンサにより実現される。この制御部３５０は、信号線３０６を介して制御インターフェース３０９からのリードまたはライト等の指示を受け取り、信号線３５７を介して制御インターフェース３０９に対する応答を伝達する。また、制御部３５０は、信号線３５８を介してセンスアンプ３１３に対する制御信号を伝達し、信号線３１９を介してセンスアンプ３１３からの応答を受け取る。また、制御部３５０は、信号線３５９を介して論理評価部３４０に対する制御信号を伝達する。
【００３８】
また、制御部３５０は、信号線３０７を介して制御インターフェース３０９からの前処理省略の指示等を受け取り、信号線３５８および３５９を介してメモリアレイ３１０および論理評価部３４０に対して前処理省略に関する制御を行う。ここで、前処理とは、ライト動作の際に、プレリードデータに応じて、予めライト対象のデータ領域を消去またはプログラムすることをいう。通常、ライト動作の際には、プレリードを行った後に、そのプレリードデータに応じて、消去およびプログラムを順次行うことにより、最終的にライトデータを書き込む。これに対し、本技術の実施の形態では、ライト対象のデータ領域が予め所定の値になっていることが判明している場合には、プレリードを省略するとともに、消去またはプログラムの何れか一方を前処理として省略する。例えば、前処理として消去動作を省略した場合には、後処理としてプログラム動作を行う。
【００３９】
図３は、本技術の実施の形態における機能構成例を示す図である。ここでは、論理評価部３４０においてマスク生成部３４１の機能を有し、メモリアレイ３１０においてビット操作部３１５、メモリセル３１６およびリード処理部３１７の機能を有することを想定している。また、制御部３５０において前処理実行判定部３５１の機能を有することを想定している。
【００４０】
マスク生成部３４１は、ライトバッファ３２０に保持されたライトデータまたはリードバッファ３３０に保持されたプレリードデータから消去マスクまたはプログラムマスクを生成するものである。消去マスクは、プレリードデータがＨレベルであるビットについてはＨレベルをＬレベルに消去する旨を示し、それ以外のビットについてはマスクする旨を示す。プログラムマスクは、ライトデータがＨレベルであるビットについてはＬレベルをＨレベルにプログラムする旨を示し、それ以外のビットについてはマスクする旨を示す。
【００４１】
ビット操作部３１５は、マスク生成部３４１によって生成された消去マスクまたはプログラムマスクに従って、メモリセル３１６のライトアドレスに係るデータ領域において、各ビットの消去またはプログラムを行う。すなわち、消去マスクが与えられた場合には消去する旨を示すビットについてのみＬレベルに消去する操作を行い、それ以外のビットは何も書換えを行わない。また、プログラムマスクが与えられた場合にはプログラムする旨を示すビットについてのみＨレベルにプログラムする操作を行い、それ以外のビットは何も書換えを行わない。
【００４２】
リード処理部３１７は、ライト動作に先立ち、必要に応じて、メモリセル３１６のライトアドレスに係るデータ領域からデータを読み出すものである。このようにしてライト動作に先立って読み出されたデータは、プレリードデータとしてリードバッファ３３０に保持される。なお、リード処理部３１７は、特許請求の範囲に記載のプレリード処理部の一例である。
【００４３】
前処理実行判定部３５１は、ライト動作の際に前処理を実行するか否かを判定するものである。この前処理実行判定部３５１は、制御インターフェース３０９から信号線３０７を介して受け取った制御信号に基づいて、前処理を実行するか否かを判定する。
【００４４】
この機能構成例における処理は、制御部３５０によって必要に応じて適宜繰り返される。後述するように、この実施の形態では、消去マスクおよびプログラムマスクのそれぞれの生成のために、必要に応じてリード処理部３１７におけるプレリードが行われる。また、ビット操作部３１５において消去およびプログラムが行われる。ただし、前処理実行判定部３５１において、前処理を省略する旨の判定が行われた場合には、前処理のためのプレリードおよび消去は行われない。
【００４５】
［ライト動作の具体例］
図４は、本技術の第１の実施の形態において可変抵抗素子に対して書込みを行う具体例を示す図である。この例では、「ＬＨＨＬＨＬＨＬ」が記憶されているデータ領域にライトデータ「ＬＬＬＬＨＨＨＨ」を書き込むことを想定する。この第１の実施の形態では、制御インターフェース３０９からの指示に応じて、ライト動作の際に前処理を実行する場合と、前処理を実行しない場合とが存在する。また、この第１の実施の形態では、前処理として、ライト対象のデータ領域を全て「Ｌ」にする。
【００４６】
同図（ａ）は、ライト動作の際に前処理を実行する場合の動作例を示す。プレリードデータ「ＬＨＨＬＨＬＨＬ」において、「Ｌ」を示すビットについてさらに「Ｌ」に消去する書込みが発生しないように、マスク生成部３４１によって消去マスクが生成される。すなわち、「Ｌ」に消去すべきビットは現在の値が「Ｈ」のビット位置のみとなるように消去マスク「ＭＥＥＭＥＭＥＭ」が生成される。ここで、「Ｅ」は消去対象となるビットを、「Ｍ」は消去対象とならないビットをそれぞれ意味する。この消去マスクを利用することにより、ビット操作部３１５によってライト対象のデータ領域は全て「Ｌ」となる。
【００４７】
また、ライトデータ「ＬＬＬＬＨＨＨＨ」において、「Ｈ」を示すビットについて書込みを行うために、マスク生成部３４１によってプログラムマスクが生成される。すなわち、ライトデータが「Ｈ」のビット位置のみに書込みが発生するようにプログラムマスク「ＭＭＭＭＰＰＰＰ」が生成される。ここで、「Ｐ」はプログラム対象となるビットを、「Ｍ」はプログラム対象とならないビットをそれぞれ意味する。このプログラムマスクを利用することにより、ビット操作部３１５によってライト対象のデータ領域は「ＬＬＬＬＨＨＨＨ」となる。
【００４８】
同図（ｂ）は、ライト動作の際に前処理を実行しない場合の動作例を示す。この場合、ライト対象のデータ領域は既に「ＬＬＬＬＬＬＬＬ」となっていることが分かっているため、プレリードおよび消去マスクの生成は行われない。一方、プログラムマスクについては、同図（ａ）の場合と同様に「ＭＭＭＭＰＰＰＰ」が生成される。このプログラムマスクを利用することにより、ビット操作部３１５によってライト対象のデータ領域は「ＬＬＬＬＨＨＨＨ」となる。
【００４９】
［前処理実行判定］
次に、本実施の形態の前処理実行判定部３５１における前処理省略の判定手法について説明する。本実施の形態では、制御インターフェース３０９から信号線３０７を介して前処理実行判定部３５１に前処理省略を指示することを想定する。この前処理省略が指示される場合としては、例えば不揮発性メモリやこれを用いたストレージシステムを出荷する前に工場においてメモリの内容が全て消去状態にあることが判明している場合が考えられる。
【００５０】
前処理実行判定部３５１は、内部に制御レジスタを備え、前処理省略が指示されたか否かを保持する。前処理省略が指示された場合には、ライト動作の際に前処理を実行しない。この制御レジスタは、広く使用されているＮＯＲメモリを利用することができる。また、ＪＥＤＥＣで標準化されているＬＰＤＤＲ−ＮＶＭ等のオーバレイウィンドウにある制御レジスタに、前処理の有無の制御を行うための制御ビットを設けてもよい。また、以下のように、ホストコンピュータ１００からの命令を利用してもよい。
【００５１】
図５は、本技術の第１の実施の形態において前処理省略を指示するためのコマンド例を示す図である。
【００５２】
同図（ａ）は、前処理省略を指示するためのフラグをライトコマンドに設けた場合のフィールド構成例である。このコマンドでは、オペコード６１１においてライトコマンドである旨を示し、オペランドとしてライトアドレス６１３およびライトデータ６１４を含んでいる。そして、このコマンドは、前処理省略を指示するための前処理フラグ６１２を有している。例えば、前処理フラグ６１２が「前処理実行」を示していればライト動作の際に前処理を行い、「前処理省略」を示していればライト動作の際に前処理を実行しない。
【００５３】
一方、前処理の有無を独立したコマンドにより指示するようにしてもよい。同図（ｂ）は、前処理を有効にするための前処理イネーブルコマンドのフィールド構成例である。このコマンドでは、オペコード６２１において前処理イネーブルコマンドである旨を示している。なお、オペランドとして前処理を有効にする対象アドレス６２３を指定できるようにしてもよい。同図（ｃ）は、前処理を省略するための前処理ディスエーブルコマンドのフィールド構成例である。このコマンドでは、オペコード６３１において前処理ディスエーブルコマンドである旨を示している。なお、オペランドとして前処理を省略する対象アドレス６３３を指定できるようにしてもよい。
【００５４】
［情報処理システムの動作］
図６は、本技術の実施の形態における情報処理システムのライト処理手順例を示す流れ図である。まず、ＮＶＲＡＭ３０１に対してライトデータおよびライト指示が発行されると、ライトデータはライトバッファ３２０に保持される（ステップＳ９１１）。そして、ライト指示に際してライト対象のデータ領域の前処理を実行するか否かが前処理実行判定部３５１において判定される（ステップＳ９１２）。前処理を実行する旨が判定された場合にはステップＳ９１３乃至Ｓ９１９が実行されるが、前処理を省略する旨が判定された場合にはステップＳ９１３乃至Ｓ９１９はスキップされてステップＳ９２１以降の処理が実行される（ステップＳ９１２：Ｙｅｓ）。
【００５５】
前処理においては、まず、メモリセル３１６からデータ３１１およびＥＣＣ３１２のプレリードが行われる（ステップＳ９１３）。このプレリードは、リード処理部３１７により実行される。プレリードデータ（データ３１１およびＥＣＣ３１２）はリードバッファ３３０に保持される。そして、プレリードデータの比較が行われ（ステップＳ９１４）、プレリードデータにおいて、「Ｌ」を示すビットについてさらに「Ｌ」に消去する書込みが発生しないように、マスク生成部３４１によって消去マスクが生成される（ステップＳ９１５）。そして、この消去マスクに従ってデータ３１１およびＥＣＣ３１２の消去処理が行われる（ステップＳ９１６）。この消去の際には検証（Verify）が行われ（ステップＳ９１７）、検証に成功するまで繰り返される（ステップＳ９１８：Ｎｏ）。ただし、繰返し上限回数に達すると（ステップＳ９１９：Ｙｅｓ）、不良セルまたは不良ページと判断され、エラー終了する。
【００５６】
前処理が成功した後もしくは前処理が省略された後、ライトデータにおいて、「Ｈ」を示すビットについて書込みを行うために、マスク生成部３４１によってプログラムマスクが生成される（ステップＳ９２１）。そして、このプログラムマスクに従ってデータ３１１のプログラム処理が行われる（ステップＳ９２２）。このプログラムの際には検証（Verify）が行われ（ステップＳ９２３）、検証に成功するまで繰り返される（ステップＳ９２４：Ｎｏ）。ただし、繰返し上限回数に達すると（ステップＳ９２５：Ｙｅｓ）、不良セルまたは不良ページと判断され、エラー終了する。
【００５７】
すなわち、ライト動作の際、ライト対象のデータ領域が全て「Ｌ」に消去されていることが判明している場合には、ステップＳ９１２からＳ９２１に分岐して、ステップＳ９１３からＳ９１９を省略する。ステップＳ９２１以降では、ライト対象のデータ領域が全て「Ｌ」に消去されていることを前提として、ライトデータに応じたプログラムを行う。これにより、プレリードおよび消去に要する時間を省き、ライト処理を高速に行うことができる。
【００５８】
このように、本技術の第１の実施の形態によれば、制御インターフェース３０９から前処理の省略が指示された場合には前処理を省略して、ライト処理を高速に行うことができる。
【００５９】
不揮発性メモリおよびこれを用いたストレージシステムは、その出荷前に顧客データを工場で書き込んで出荷されるということがよく行われる。この書込みにかかる時間が短ければ短いほど、この書込みに使用する装置の稼働率を上げることができ、これにかかるコストを低減できる。つまり、書込み時間を短くすることに対して著しい経済的なニーズが存在する。例えば、パーソナルコンピュータに使用されるＳＳＤやタブレットコンピュータに使用される不揮発性メモリは、オペレーティングシステムやアプリケーションなど様々なデータが事前に書き込まれた状態で出荷される。ＳＳＤやｅＭＭＣなど不揮発性メモリ装置を提供する部品ベンダに対しては、不揮発性メモリ装置や不揮発性メモリ部品の段階で、事前にこれらデータを書き込んで納品することが求められる場合がある。このような場合においては、工場においてメモリの内容が全て消去状態にあることが判明していることが多く、本実施の形態を適用することができる。
【００６０】
［変形例］
上述の実施の形態では、前処理としてライト対象のデータ領域を全て「Ｌ」に消去することを想定していたが、本技術はこれに限定されるものではない。以下に示すように、前処理としてライト対象のデータ領域を全て「Ｈ」にプログラムすることを想定してもよい。
【００６１】
図７は、本技術の実施の形態における情報処理システムのライト処理手順の変形例を示す流れ図である。この例では、前処理としてライト対象のデータ領域を全て「Ｈ」にプログラムすることを想定し、メモリセル３１６からプレリードを行って（ステップＳ８１３）、マスク生成部３４１によってプログラムマスクを生成する（ステップＳ８１５）。
【００６２】
ライト動作の際、ライト対象のデータ領域が全て「Ｈ」にプログラムされていることが判明している場合には、ステップＳ８１２からＳ８２１に分岐して、ステップＳ８１３からＳ８１９を省略する。ステップＳ８２１以降では、ライト対象のデータ領域が全て「Ｈ」にプログラムされていることを前提として、ライトデータに応じた消去を行う。これにより、プレリードおよび消去に要する時間を省き、ライト処理を高速に行うことができる。
【００６３】
＜２．第２の実施の形態＞
不揮発性メモリ装置であるＳＳＤやｅＭＭＣへのデータの書込みは、ファイルシステムを介して行われる。通常、消去されたセクタまたはページに対しては未使用（Not in Use）というフラグを立てることで行われ、データの実際的な消去は行われない。これにより、ＳＳＤなどのストレージシステムでは、この未使用フラグも含めてデータとして扱い、ファイルシステムでハンドルされる使用／未使用とは無関係に平等に扱われてしまう。このため、ストレージシステム内部では、ガベージコレクションなどの内部処理が、本来使われていない未使用のセクタ（もしくはページ）に対しても行われ、ストレージシステムの性能低下の要因になることが指摘されてきた。これは、不必要なデータの移動に伴う書換え回数の増加や、それによるメモリセルの短命化などによるものである。この問題に対するアプローチとして、ＩＮＣＩＴＳ（International Committee for Information Technology Standards）のＴ１３技術委員会のＡＴＡ８  ＡＣＳ２仕様の一部として、Ｔｒｉｍコマンドが提案され、実現に至っている。Ｔｒｉｍコマンドはストレージシステムに対して、未使用セクタを通知することにより、ストレージシステム内部で性能改善を行えるようにするものである。ただし、仕様ではＴｒｉｍコマンドは定義のみであり、その実装方法は様々な形で行われる。例えばＮＡＮＤフラッシュメモリを利用したＳＳＤ等のストレージシステムでは、以下に示す様々な実装手段がとられる。（１）Ｔｒｉｍコマンドを受信しても何も行わない。（２）該当アドレスのデータに対してガベージコレクションを行わない。（３）該当アドレスのデータに対してその都度消去を行う。（４）該当アドレスに対する将来の書込みに備えて単にマークを付けておき、アクセスが発生していないタイミングでこのマークのついた該当アドレスに対してバックグランドで消去を行う。
【００６４】
その他の標準化の動きとしては、同じくＩＮＣＩＴＳのＴ１０技術委員会においてもＳＣＳＩプロトコルにおいてＴｒｉｍコマンドが提案、仕様化がされている。また、他にもＪＥＤＥＣ（Joint Electron Device Engineering Council）におけるｅＭＭＣにおいても同じく、Ｔｒｉｍコマンドが提案され、仕様化されている。
【００６５】
不揮発性メモリとしてランダムアクセスが可能なＲＡＭを使用する場合において、この不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）はＮＡＮＤフラッシュメモリと異なり、ブロック単位での消去を行わず、上書きが可能である。現在広く使用されている、例えばＳＡＴＡ  Ｉ／Ｆを用いたＳＳＤにはＮＡＮＤフラッシュメモリが多用されており、これが接続される例えばＰＣにおいても、このＮＡＮＤ  ＳＳＤを意識した制御が行われることが多い。Ｔｒｉｍコマンド自体も、ＮＡＮＤの特性として生じるブロック単位での消去を行うことによるライトアンプリフィケーション（Write Amplification）を、抑制するための仕様となっている。すなわち、互換性の観点から、ＳＳＤが接続されるホストシステムから不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）に向いた制御が必ずしも行われることが期待できない。ここで、ライトアンプリフィケーションとは、ＯＳからの書込み量に対するＳＳＤ内部での書込み量の比率であり、この値が高いほどメモリアクセスの効率が低いことになる。
【００６６】
この問題に対するアプローチとして、可変抵抗素子を用いた、不揮発性ランダムアクセスメモリを用いたストレージシステムの場合、ＡＬＬ０のデータを書き込むことで、ＮＡＮＤフラッシュメモリの消去相当の動作を行うことが考えられる。しかしながら、従来技術によれば、この消去済セクタまたはページに対しての次の書込みの際に、既書き込み状態が消去済みであるという既知の状態であるにも関わらず、既書き込み状態を調べるための読出し（プレリード）を行うことになるという新たな問題を生んでしまう。
【００６７】
上述のように、本技術の実施の形態では、ライト動作の際にライト対象のデータ領域の状態が判明している場合には、プレリードを伴う前処理を省略することができる。この第２の実施の形態では、ライト対象のデータ領域についてＴｒｉｍコマンドが発行されていた場合、消去が完了していれば、前処理を省略してプログラムのみを行う。なお、情報処理システムとしての構成や機能については、上述の第１の実施の形態と同様であるため、ここでは説明を省略する。
【００６８】
図８は、本技術の実施の形態における管理情報テーブルの一例を示す流れ図である。ここでは、管理情報を内蔵メモリ２２０の管理情報テーブルに格納することを想定している。内蔵メモリ２２０が揮発性のメモリである場合には、電源喪失による情報消失を防ぐために、所定の間隔でフラッシュメモリ３０２等の不揮発性メモリに退避してもよい。この履歴情報テーブルは、各データ領域に対応して、論理アドレス２２１と、物理アドレス２２２と、Ｔｒｉｍフラグ２２３と、消去フラグ２２４とを格納している。
【００６９】
論理アドレス２２１は、ホストコンピュータ１００においてデータ領域に割り当てられた論理アドレスである。物理アドレス２２２は、論理アドレス２２１に対応するＮＶＲＡＭ３０１の記憶領域を特定するためのアドレスである。ホストコンピュータ１００から論理アドレスが指定された場合、論理アドレス２２１と物理アドレス２２２との対によって物理アドレスへのアドレス変換が行われる。
【００７０】
Ｔｒｉｍフラグ２２３は、論理アドレス２２１および物理アドレス２２２に対応する領域にＴｒｉｍコマンドが発行されているか否かを示す情報である。Ｔｒｉｍコマンドとは、上述のように、未使用となるデータ領域を通知するコマンドである。したがって、Ｔｒｉｍフラグ２２３が有効を示している領域は、有効な領域として使用されていないことになる。
【００７１】
消去フラグ２２４は、論理アドレス２２１および物理アドレス２２２に対応する領域が消去されているか否かを示す情報である。この消去フラグ２２４が有効を示している領域は、既に全ての値が消去されていることになる。
【００７２】
［情報処理システムの動作］
この第２の実施の形態による情報処理システムは、図６により説明した第１の実施の形態と同様の動作を行う。ステップＳ９１２において前処理を実行するか否かを判定する際には消去フラグ２２４が参照され、この消去フラグ２２４が消去済を示している場合には前処理を省略してステップＳ９２１へスキップする。Ｔｒｉｍコマンドが発行された後に消去が完了すると、消去フラグ２２４が消去済を示すため、これによりデータ領域の書込み状態が既知となるからである。
【００７３】
図９は、本技術の第２の実施の形態におけるＴｒｉｍコマンド受信時のメモリシステム４００の処理手順例を示す流れ図である。メモリシステム４００がＴｒｉｍコマンドを受信すると（ステップＳ９３１）、プロセッサ２１０は内蔵メモリ２２０の管理情報テーブルから管理情報を読み出す（ステップＳ９３２）。この管理情報は、揮発性メモリ３０３に格納されてその都度用いられるが、電源喪失に備えてＮＶＲＡＭ３０１またはフラッシュメモリ３０２に保持しておくようにしてもよい。
【００７４】
そして、プロセッサ２１０は管理情報を用いて論理アドレス２２１から物理アドレス２２２へのアドレス変換を行って、該当する物理アドレスを特定し、これに紐づくＴｒｉｍフラグ２２３をセットする（ステップＳ９３３）。すなわち、Ｔｒｉｍコマンドが発行済である旨を示すようになる。Ｔｒｉｍコマンドによって指定された論理アドレスの全てについて、Ｔｒｉｍフラグ２２３がセットされると処理を終了する。この時点では、Ｔｒｉｍフラグがセットされた物理アドレスに対して物理的な消去は行われない。その後、メモリシステム４００に対するアクセスがないアイドル状態を利用して、バックグラウンド処理として事前消去が実行される。
【００７５】
図１０は、本技術の第２の実施の形態におけるバックグラウンド事前消去のメモリシステム４００の処理手順例を示す流れ図である。メモリシステム４００がアイドル状態となってバックグラウンド事前消去がトリガされると、プロセッサ２１０は管理情報を読み出して（ステップＳ９４１）、Ｔｒｉｍフラグ２２３がセットされた物理アドレスを検索する（ステップＳ９４２）。この該当する物理アドレスのページから、過剰消去を防止するため、既書き込みデータの読出しが行われる（ステップＳ９４３）。そして、該当ページ内の消去が必要なビットに対して消去が行えるように消去マスクデータが作成される（ステップＳ９４４）。この消去マスクに従ってデータ３１１およびＥＣＣ３１２の消去処理が行われる（ステップＳ９４５）。この消去の際には検証（Verify）が行われ（ステップＳ９４６）、検証に成功するまで繰り返される（ステップＳ９４７：Ｎｏ）。ただし、繰返し上限回数に達すると（ステップＳ９４８：Ｙｅｓ）、不良セルまたは不良ページと判断され、エラー終了する。
【００７６】
ステップＳ９４７において検証が成功すると、消去が問題なく完了したため、管理情報のＴｒｉｍフラグ２２３をリセットし、消去済であることを示す消去フラグ２２４をセットして処理を終了する（ステップＳ９４９）。
【００７７】
複数のページにＴｒｉｍフラグ２２３がセットされている場合には、これらの処理を繰り返し行えばよい。もし、複数ページに対するこれらの処理にかかる時間が長くなるようであれば、分割して行ってもよい。例えば、これらの処理を繰り返し実行している途中でホストシステムからコマンドを受信した場合には、処理を中断してもよい。上述のようにＮＶＲＡＭは上書きが可能であるため、Ｔｒｉｍフラグ２２３がセットされて、消去フラグ２２４がセットされていないページに対して上書きが発生しても、不整合は生じない。
【００７８】
バックグラウンドで事前消去されたページの書込み状態は既知であるため、ライト処理の際に管理情報の消去フラグ２２４が消去済を示していれば、図６のステップＳ９１２からＳ９２１に分岐して処理を行うことができる。バックグラウンド処理は、メモリシステム４００が接続されるホストコンピュータ１００から隠蔽されているため、見かけ上、書込み処理を高速に実行することが可能になる。バックグランド処理で事前消去が行えなかったページに対しては、ステップＳ９１２からＳ９１３に進めばよく、メモリシステム４００の処理としては、図６の書込み処理の完了後、管理情報のＴｒｉｍフラグ２２３をリセットする処理を追加するだけでよい。メモリシステム４００に対する上位のホストコンピュータ１００からのアクセスパターンに対して、アクセスする全ての物理アドレスに対して消去フラグ２２４がセットされていると仮定すると、平均的な書き込み速度は２倍程度まで改善されることになる。
【００７９】
このように、本技術の第２の実施の形態によれば、Ｔｒｉｍコマンドを受信した後に消去が完了していた場合には前処理を省略して、ライト処理を高速に行うことができる。
【００８０】
［変形例］
上述の第２の実施の形態では、Ｔｒｉｍフラグ２２３がセットされた物理アドレスのページの全てのビットに対してバックグラウンド消去を行うことを想定していたが、本技術はこれに限定されるものではない。例えば、Ｔｒｉｍフラグ２２３がセットされた物理アドレスのページの全てのビットに対してバックグラウンドプログラムを行っておき、この該当ページに対して次の書込みが発生した場合に、該当ページ内の必要なビットに対して消去を行うことを想定してもよい。
【００８１】
＜３．第３の実施の形態＞
近年、ビデオアプリケーションにおいて、撮像素子の大型化に伴う高画素化に伴い、録画に使用されるストレージデバイスとして、高速書込みが可能なＳＳＤなどの不揮発性メモリ装置が多く用いられるようになってきた。これらのビデオアプリケーションにおいて、不揮発性メモリ装置に対する書込みはシーケンシャルライトが基本となる。つまり上書きは基本的には行われない。この不揮発性メモリ装置の全記憶領域が消去済みで既知の状態であれば、上述の実施の形態を適用することができる。その際、事前に消去を行うには、例えば、ＩＮＣＩＴＳのＴ１３技術委員会で標準化されているＳｅｃｕｒｅ  Ｅｒａｓｅコマンドを用いて録画前にＮＶＲＡＭを消去することができる。
【００８２】
また、ＮＡＮＤフラッシュメモリを使用したＳＡＴＡ  Ｉ／Ｆを有するＳＳＤにおいては、書込みを繰り返した結果、ＳＳＤ内部でのガベージコレクションなどの内部処理が多発し、著しく性能低下を引き起こす場合がある。このため、一部のアプリケーションでは、Ｓｅｃｕｒｅ  Ｅｒａｓｅコマンドを用いて、ＳＳＤを初期化して使用することで、ガベージコレクションなどの内部処理を抑制して、高速な書込みによる恩恵を得ようとする使い方をする場合がある。
【００８３】
このように、Ｓｅｃｕｒｅ  Ｅｒａｓｅコマンドは、暗号化を内蔵しないＳＳＤにおいて、全てのユーザデータを消去するために定義されている。この第３の実施の形態では、このＳｅｃｕｒｅ  Ｅｒａｓｅコマンドを用いた際の適用例について説明する。なお、情報処理システムとしての構成や機能については、上述の第１の実施の形態と同様であるため、ここでは説明を省略する。また、管理情報テーブル（図８）を備える点は第２の実施の形態と同様である。
【００８４】
なお、暗号化を内蔵したＳＳＤにおけるＳｅｃｕｒｅ  Ｅｒａｓｅコマンドの実装としては、暗号鍵をＳＳＤ内部で消去して新たな暗号鍵を再生成することにより、古いデータを読み出せなくする実装方法も考えられるが、ここではそれを想定しない。すなわち、データ領域が物理的に消去されることを想定している。
【００８５】
［情報処理システムの動作］
この第３の実施の形態による情報処理システムは、図６により説明した第１の実施の形態と同様の動作を行う。ステップＳ９１２において前処理を実行するか否かを判定する際には消去フラグ２２４が参照され、この消去フラグ２２４が消去済を示している場合には前処理を省略してステップＳ９２１へスキップする。Ｓｅｃｕｒｅ  Ｅｒａｓｅコマンドが発行された後に消去が完了すると、消去フラグ２２４が消去済を示すため、これによりデータ領域の書込み状態が既知となるからである。
【００８６】
図１１は、本技術の第３の実施の形態におけるＳｅｃｕｒｅ  Ｅｒａｓｅコマンド受信時のメモリシステム４００の処理手順例を示す流れ図である。メモリシステム４００がＳｅｃｕｒｅ  Ｅｒａｓｅコマンドを受信すると、プロセッサ２１０は管理情報を読み出す（ステップＳ９５１）。上述の第２の実施の形態ではＴｒｉｍフラグ２２３が付加されている物理アドレスに対してのみバックグラウンドで消去を行っていたが、この第３の実施の形態では、消去済みでない全ての物理アドレスに対して消去を行う。すなわち、Ｔｒｉｍフラグ２２３に関係なく、消去フラグ２２４がセットされていない物理アドレスが検索され（ステップＳ９５２）、未消去のアドレスは全て消去の対象となる。なお、Ｓｅｃｕｒｅ  Ｅｒａｓｅ処理はフォアグランドで実行されるため、上述の第２の実施の形態とは異なり、消去のために要する時間は隠蔽されない。
【００８７】
消去対象となった物理アドレスのページから、過剰消去を防止するため、既書き込みデータの読出しが行われる（ステップＳ９５３）。そして、該当ページ内の消去が必要なビットに対して消去が行えるように消去マスクデータが作成される（ステップＳ９５４）。この消去マスクに従ってデータ３１１およびＥＣＣ３１２の消去処理が行われる（ステップＳ９５５）。この消去の際には検証（Verify）が行われ（ステップＳ９５６）、検証に成功するまで繰り返される（ステップＳ９５７：Ｎｏ）。ただし、繰返し上限回数に達すると（ステップＳ９５８：Ｙｅｓ）、不良セルまたは不良ページと判断され、エラー終了する。
【００８８】
ステップＳ９５７において検証が成功すると、消去が問題なく完了したため、管理情報のＴｒｉｍフラグ２２３をリセットし、消去済であることを示す消去フラグ２２４をセットして処理を終了する（ステップＳ９５９）。
【００８９】
このように、本技術の第３の実施の形態では、Ｓｅｃｕｒｅ  Ｅｒａｓｅコマンドによってユーザデータを事前に完全に消去した状態にしておけば、既書き込み状態が既知であるため、プレリードと消去のステップを省略することができる。ビデオアプリケーションはシーケンシャルな書き込みが特徴であり、基本的にデータの上書きがなされないため、Ｓｅｃｕｒｅ  Ｅｒａｓｅコマンドと、本発明の書込み方式を組み合わせることにより、２倍程度の高速な書込みを実現できることになり非常に効果が高い。
【００９０】
＜４．第４の実施の形態＞
上述の第１の実施の形態では、前処理として、ライト対象のデータ領域を全て「Ｌ」（または「Ｈ」）にしていた。これに対し、この第４の実施の形態では、プレリードデータとライトデータとを比較して、最終的に「Ｌ」（または「Ｈ」）にすべきビットのみを前処理で「Ｌ」（または「Ｈ」）にする。なお、情報処理システムの構成や基本的な処理の流れは上述の他の実施の形態と同様であるため、詳細な説明を省略する。
【００９１】
［ライト動作の具体例］
図１２は、本技術の第４の実施の形態において可変抵抗素子に対して書込みを行う具体例を示す図である。この例では、「ＬＨＨＬＨＬＨＬ」が記憶されているデータ領域にライトデータ「ＬＬＬＬＨＨＨＨ」を書き込むことを想定する。
【００９２】
同図（ａ）は、ライト動作の際に前処理を実行する場合の動作例を示す。プレリードデータ「ＬＨＨＬＨＬＨＬ」とライトデータ「ＬＬＬＬＨＨＨＨ」を比較して、最終的に「Ｌ」にすべきビットのみを前処理として消去するようマスク生成部３４１によって消去マスクが生成される。すなわち、「Ｌ」に消去すべきビットは、プレリードデータが「Ｈ」でライトデータが「Ｌ」となっているビット位置のみとなるように消去マスク「ＭＥＥＭＭＭＭＭ」が生成される。ここで、「Ｅ」は消去対象となるビットを、「Ｍ」は消去対象とならないビットをそれぞれ意味する。この消去マスクを利用することにより、ビット操作部３１５によってライト対象のデータ領域は「ＬＬＬＬＨＬＨＬ」となる。
【００９３】
また、プレリードデータ「ＬＨＨＬＨＬＨＬ」とライトデータ「ＬＬＬＬＨＨＨＨ」を比較して、最終的に「Ｈ」にすべきビットのみを後処理としてプログラムするようマスク生成部３４１によってプログラムマスクが生成される。すなわち、「Ｈ」にプログラムすべきビットは、プレリードデータが「Ｌ」でライトデータが「Ｈ」となっているビット位置のみとなるようにプログラムマスク「ＭＭＭＭＭＰＭＰ」が生成される。ここで、「Ｐ」はプログラム対象となるビットを、「Ｍ」はプログラム対象とならないビットをそれぞれ意味する。このプログラムマスクを利用することにより、ビット操作部３１５によってライト対象のデータ領域は「ＬＬＬＬＨＨＨＨ」となる。
【００９４】
同図（ｂ）は、ライト動作の際に前処理を実行しない場合の動作例を示す。この動作例は図４（ｂ）において説明したものと同様であるため、詳細な説明を省略する。
【００９５】
なお、上述の実施の形態では、前処理として最終的に「Ｌ」にすべきビットのみを前処理で「Ｌ」に消去していたが、これとは逆に、最終的に「Ｈ」にすべきビットのみを前処理で「Ｈ」にプログラムすることを想定してもよい。
【００９６】
このように、本技術の第４の実施の形態によれば、前処理を省略しない場合にはプレリードデータおよびライトデータの両者を参照して消去動作およびプログラム動作を行うため、必要なビットのみを操作対象とすることができる。
【００９７】
＜５．第５の実施の形態＞
上述の実施の形態では、消去およびプログラムの後の検証を別々に行っていたが、これらの検証は以下のように同時に行ってもよい。
【００９８】
［情報処理システムの動作］
図１３は、本技術の第５の実施の形態における情報処理システムのライト処理手順例を示す流れ図である。この例では、前処理として消去動作を行い、その後、プログラム動作を行うことを想定している。基本的な処理手順は、図６において説明した第１の実施の形態と同様である。
【００９９】
ステップＳ９１１乃至Ｓ９１６は図６において説明したものと同様である。ただし、前処理である消去処理の直後には検証を行うことなく、プログラム処理を行う（ステップＳ９２１およびＳ９２２）。そして、消去処理およびプログラム処理の検証を同時に行う（ステップＳ９２３）。
【０１００】
ステップＳ９２３における検証に成功した場合には（ステップＳ９２４：Ｙｅｓ）、ライト処理を正常終了する。一方、検証に失敗した場合には（ステップＳ９２４：Ｎｏ）、繰返し上限回数に達するまでは繰返し処理が行われる。繰返し上限回数に達すると（ステップＳ９２６：Ｙｅｓ）、不良セルまたは不良ページと判断され、ライト処理をエラー終了する。
【０１０１】
検証に失敗した際の繰返しにおいては、前処理を実行するか否かが前処理実行判定部３５１において判定される（ステップＳ９２７）。前処理を実行する旨が判定された場合にはステップＳ９１５乃至Ｓ９２３が実行されるが、前処理を省略する旨が判定された場合にはステップＳ９１５およびＳ９１６はスキップされてステップＳ９２１以降の処理が実行される（ステップＳ９２７：Ｙｅｓ）。
【０１０２】
図１４は、本技術の第５の実施の形態における情報処理システムのライト処理手順の変形例を示す流れ図である。この例では、前処理としてプログラム動作を行い、その後、消去動作を行うことを想定している。基本的な処理手順は、図１３において説明した例と同様である。
【０１０３】
ステップＳ８１１乃至Ｓ８１６は図７において説明したものと同様である。ただし、前処理であるプログラム処理の直後には検証を行うことなく、消去処理を行う（ステップＳ８２１およびＳ８２２）。そして、プログラム処理および消去処理の検証を同時に行う（ステップＳ８２３）。
【０１０４】
ステップＳ８２３における検証に成功した場合には（ステップＳ８２４：Ｙｅｓ）、ライト処理を正常終了する。一方、検証に失敗した場合には（ステップＳ８２４：Ｎｏ）、繰返し上限回数に達するまでは繰返し処理が行われる。繰返し上限回数に達すると（ステップＳ８２６：Ｙｅｓ）、不良セルまたは不良ページと判断され、ライト処理をエラー終了する。
【０１０５】
検証に失敗した際の繰返しにおいては、前処理を実行するか否かが前処理実行判定部３５１において判定される（ステップＳ８２７）。前処理を実行する旨が判定された場合にはステップＳ８１５乃至Ｓ８２３が実行されるが、前処理を省略する旨が判定された場合にはステップＳ８１５およびＳ８１６はスキップされてステップＳ８２１以降の処理が実行される（ステップＳ８２７：Ｙｅｓ）。
【０１０６】
このように、本技術の第５の実施の形態によれば、プログラム処理および消去処理の検証が同時に実行され、ライト処理をより高速に実行することができる。なお、ここでは、第１の実施の形態に基づいて消去処理およびプログラム処理の検証を同時に行う例を説明したが、それ以外の第４の実施の形態についても同様に適用可能である。
【０１０７】
ＮＶＲＡＭをＳＳＤとして使用することによって、ＮＶＲＡＭはそもそも書込みと消去のサイズが同じであるために、ＮＡＮＤフラッシュメモリを使用したＳＳＤ（ＮＡＮＤ  ＳＳＤ）のようなガベージコレクションは発生しない。このため、ＮＶＲＡＭを用いたＳＳＤは性能面ではＮＡＮＤ  ＳＳＤに較べて大幅な改善を実現することができるが、本技術を適用することによりさらなる高速化を実現できることになる。
【０１０８】
近年、デジタルスチルカメラも先のビデオアプリケーション同様に高画素化が著しく、これに用いられるストレージデバイスも高速な書込みが求められており、本技術を適用することにより連写性能などに著しい性能向上を期待することができる。また、副次的な効果として、これらイメージングシステム内のＤＲＡＭにデータをバッファリングしておいてからストレージデバイスに対して書込みを行う際、高速な書込みが実現できることから、このＤＲＡＭバッファの容量を小さくすることができる。これにより低価格化および低消費電力化の効果を期待することができる。
【０１０９】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１１０】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【０１１１】
なお、本技術は以下のような構成もとることができる。
（１）メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作部と
を具備する記憶制御装置。
（２）前記メモリセルは、ビット毎に第１の値または第２の値の何れか一方の値を保持し、
前記前処理は、全てのビットを予め前記第１の値にする処理であり、
前記後処理は、任意のビットを前記第２の値にする処理である
前記（１）に記載の記憶制御装置。
（３）前記前処理実行判定部は、外部からの制御信号に基づいて前記判定を行う前記（１）に記載の記憶制御装置。
（４）前記メモリセルの所定のデータ領域毎に消去完了した旨を示す消去フラグを保持する消去フラグ保持部をさらに具備し、
前記前処理実行判定部は、ライト対象のデータ領域に対応する前記消去フラグが消去完了した旨を示している場合には前記前処理を実行しない旨を判定し、ライト対象のデータ領域に対応する前記消去フラグが消去完了した旨を示していない場合には前記前処理を実行する旨を判定する
前記（１）に記載の記憶制御装置。
（５）前記前処理実行判定部は、前記前処理を実行するか否かを示すフィールドを有するコマンドが発行されると、前記フィールドを参照して前記前処理を実行するか否かを判定する
前記（１）に記載の記憶制御装置。
（６）未使用となるデータ領域を通知するコマンドを受信すると当該コマンドにおいて通知されたデータ領域の消去を行うプロセッサを更に具備し、
前記前処理実行判定部は、ライト対象のデータ領域が前記コマンドによって消去されている場合には前記前処理を実行しない旨を判定する
前記（１）に記載の記憶制御装置。
（７）ユーザデータを消去するコマンドを受信すると当該コマンドに係るデータ領域の消去を行うプロセッサを更に具備し、
前記判定部は、ライト対象のデータ領域が前記コマンドによって消去されている場合には前記前処理を実行しない旨を判定する
前記（１）に記載の記憶制御装置。
（８）メモリセルと、
前記メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作部と
を具備する記憶装置。
（９）前記メモリセルは可変抵抗素子である前記（８）に記載の記憶装置。
（１０）メモリセルと、
前記メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理部と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作部と、
前記メモリアレイに対するリードコマンドまたはライトコマンドを発行するホストコンピュータと
を具備する情報処理システム。
（１１）メモリセルの所定のデータ領域に対するライト動作の際に消去動作またはプログラム動作の何れか一方の動作を前処理として実行するか否かを判定する前処理実行判定手順と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記ライト動作に先立って前記メモリセルのライト対象のデータ領域からプレリードデータを読み出すプレリード処理手順と、
前記前処理を実行する旨を前記判定の結果が示している場合には前記前処理を実行するとともに前記消去動作または前記プログラム動作のうち前記前処理に該当しない動作を後処理として実行し、前記前処理を実行しない旨を前記判定の結果が示している場合には前記前処理を省略して前記後処理を実行するビット操作手順と
を具備する記憶制御方法。
【符号の説明】
【０１１２】
１００  ホストコンピュータ
２００  メモリ制御部
２０１  ホストインターフェース
２１０  プロセッサ
２２０  内蔵メモリ
２３０  ＥＣＣ処理部
２５０  周辺回路
２８０  バス
２９１〜２９３  メモリインターフェース
３００  メモリ
３０１  ＮＶＲＡＭ
３０２  フラッシュメモリ
３０３  揮発性メモリ
３０９  制御インターフェース
３１０  メモリアレイ
３１３  センスアンプ
３１５  ビット操作部
３１６  メモリセル
３１７  リード処理部
３２０  ライトバッファ
３３０  リードバッファ
３４０  論理評価部
３４１  マスク生成部
３５０  制御部
３５１  前処理実行判定部
４００  メモリシステム
【図１】
0005853899.tif 000002
【図２】
0005853899.tif 000003
【図３】
0005853899.tif 000004
【図４】
0005853899.tif 000005
【図５】
0005853899.tif 000006
【図６】
0005853899.tif 000007
【図７】
0005853899.tif 000008
【図８】
0005853899.tif 000009
【図９】
0005853899.tif 000010
【図１０】
0005853899.tif 000011
【図１１】
0005853899.tif 000012
【図１２】
0005853899.tif 000013
【図１３】
0005853899.tif 000014
【図１４】
0005853899.tif 000015