(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）等を含む。
【００２７】
ホストインターフェース２０１は、ホストコンピュータ１００とのやりとりを行うインターフェースである。メモリシステム４００はホストインターフェース２０１を介して接続され、ホストコンピュータ１００から、メモリ３００を制御するための制御コマンドを受信し、この制御コマンドによって制御されてメモリシステムとして動作する。このホストインターフェース２０１としては、例えば、ＳＡＴＡ、ＰＣＩ  Ｅｘｐｒｅｓｓ、ｅＭＭＣ、ＵＳＢなどを利用することができる。
【００２８】
メモリインターフェース２９１は、ＮＶＲＡＭ３０１とのやりとりを行うインターフェースである。メモリインターフェース２９２は、フラッシュメモリ３０２とのやりとりを行うインターフェースである。メモリインターフェース２９３は、揮発性メモリ３０３とのやりとりを行うインターフェースである。
【００２９】
メモリシステム４００は、ライトコマンドによりメモリ３００へのデータの書込みを行い、リードコマンドによりメモリ３００からのデータの読出しを行う。ライトコマンドおよびリードコマンドは、対象データの存在する先頭論理アドレスおよびデータサイズをパラメータとして指定する。メモリシステム４００がライトコマンドのデータを受信すると、このデータに対してＥＣＣが付加され、不揮発性メモリ（ＮＶＲＡＭ３０１またはフラッシュメモリ３０２）に書き込まれる。
【００３０】
図２は、本技術の実施の形態における不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）３０１の一構成例を示す図である。ＮＶＲＡＭ３０１は、メモリアレイ３１０と、センスアンプ３１３と、ライトバッファ３２０と、リードバッファ３３０と、論理評価部３４０と、制御部３５０と、閾値設定部３６０と、制御インターフェース３０９とを備えている。
【００３１】
制御インターフェース３０９は、メモリ制御部２００との間の接続を司るインターフェースである。この制御インターフェース３０９には、ライトバッファ３２０、リードバッファ３３０、論理評価部３４０および制御部３５０が接続される。
【００３２】
メモリアレイ３１０は、ビット毎に所定の状態を保持するメモリセルを格子状に並べたものである。メモリアレイ３１０のメモリセルは可変抵抗素子により構成される抵抗変化型メモリである。メモリアレイ３１０は複数のページから構成される。ページ内には、データを格納するデータ部３１１の他に冗長部３１２が設けられており、エラー訂正コード（ＥＣＣ）などが格納される。メモリアレイ３１０はセンスアンプ３１３を経由して、読出しまたは書込みが行われる。
【００３３】
センスアンプ３１３は、メモリアレイ３１０からの電圧を増幅するための増幅回路である。このセンスアンプ３１３には、ライトバッファ３２０、リードバッファ３３０、論理評価部３４０、制御部３５０および閾値設定部３６０が接続される。
【００３４】
ライトバッファ３２０は、メモリアレイ３１０にライトされるデータを一時的に保持するバッファである。このライトバッファ３２０には制御インターフェース３０９からのライトデータが信号線３０５を介して保持され、信号線３２８を介してセンスアンプ３１３に出力される。
【００３５】
リードバッファ３３０は、メモリアレイ３１０からリードされたデータを一時的に保持するバッファである。このリードバッファ３３０には、ライトの際には、ライトに先立ってプレリードデータが保持される。このリードバッファ３３０にはセンスアンプ３１３からのリードデータが信号線３１８を介して保持され、信号線３３８を介して制御インターフェース３０９に出力される。
【００３６】
論理評価部３４０は、ライトバッファ３２０およびリードバッファ３３０に保持されたデータに基づいて論理評価を行い、マスクデータを生成するものである。この論理評価部３４０において生成されたマスクデータは、信号線３４８を介してメモリアレイ３１０に供給される。
【００３７】
制御部３５０は、ＮＶＲＡＭ３０１内の各ブロックを制御するコントローラである。この制御部３５０は、例えばシーケンサにより実現される。この制御部３５０は、信号線３０６を介して制御インターフェース３０９からのリードまたはライト等の指示を受け取り、信号線３５７を介して制御インターフェース３０９に対する応答を伝達する。また、制御部３５０は、信号線３５８を介してセンスアンプ３１３に対する制御信号を伝達し、信号線３１９を介してセンスアンプ３１３からの応答を受け取る。また、制御部３５０は、信号線３５９を介して論理評価部３４０に対する制御信号を伝達する。
【００３８】
閾値設定部３６０は、メモリアレイ３１０からのリードの際の閾値を設定するものである。この閾値設定部３６０により設定される閾値の詳細については後述する。この閾値設定部３６０は、センスアンプ３１３における読出し電圧と比較される参照電圧源または参照電流源であり、例えば複数の抵抗を有してこれらを切り替えることにより実現することができる。この閾値設定部３６０の出力は、信号線３６９によってセンスアンプ３１３に伝達される。また、閾値の切替えの際には、制御部３５０から信号線３５８を介してセンスアンプ３１３に指示が伝達される。
【００３９】
図３は、本技術の実施の形態における機能構成例を示す図である。ここでは、論理評価部３４０においてマスク生成部３４１の機能を有し、メモリアレイ３１０においてビット操作部３１５、メモリセル３１６およびリード処理部３１７の機能を有することを想定している。
【００４０】
マスク生成部３４１は、ライトバッファ３２０に保持されたライトデータと、リードバッファ３３０に保持されたプレリードデータとをビット毎に比較して、それぞれ対応するビットからなる消去マスクまたはプログラムマスクを生成するものである。消去マスクは、プレリードデータがＨレベルかつライトデータがＬレベルであるビットについてはＨレベルをＬレベルに消去する旨を示し、それ以外のビットについてはマスクする旨を示す。プログラムマスク、プレリードデータがＬレベルかつライトデータがＨレベルであるビットについてはＬレベルをＨレベルにプログラムする旨を示し、それ以外のビットについてはマスクする旨を示す。
【００４１】
ビット操作部３１５は、マスク生成部３４１によって生成された消去マスクまたはプログラムマスクに従って、メモリセル３１６のライトアドレスに係るデータ領域において、各ビットの消去またはプログラムを行う。すなわち、消去マスクが与えられた場合には消去する旨を示すビットについてのみＬレベルに消去する操作を行い、それ以外のビットは何も書換えを行わない。また、プログラムマスクが与えられた場合にはプログラムする旨を示すビットについてのみＨレベルにプログラムする操作を行い、それ以外のビットは何も書換えを行わない。
【００４２】
リード処理部３１７は、ライト動作に先立ち、閾値設定部３６０において設定された閾値を基準として、メモリセル３１６のライトアドレスに係るデータ領域からデータを読み出すものである。このようにしてライト動作に先立って読み出されたデータは、プレリードデータとしてリードバッファ３３０に保持される。
【００４３】
この機能構成例における処理は、制御部３５０によって必要に応じて適宜繰り返される。後述するように、この実施の形態では、消去マスクおよびプログラムマスクのそれぞれの生成のために、リード処理部３１７におけるプレリードが行われる。また、ビット操作部３１５において消去およびプログラムが行われる。すなわち、リード処理部３１７は特許請求の範囲に記載の第１リード処理部、第２リード処理部および第３リード処理部の一例であり、ビット操作部３１５は特許請求の範囲に記載の第１ライト処理部、第２ライト処理部および第３ライト処理部の一例である。なお、この実施の形態では制御部３５０による繰返し実行を想定したが、第１リード処理部と、第２リード処理部と、第３リード処理部、および、第１ライト処理部と、第２ライト処理部と、第３ライト処理部は、それぞれ独立した構成要素として実現してもよい。
【００４４】
［プレリードの閾値］
図４は、可変抵抗素子の抵抗分布を模式的に示した図である。横軸は抵抗値Ｒを示しており、縦軸はセルの数の統計的な分布を相対値により示している。この図が示すように、可変抵抗素子の抵抗分布は大きく２つの分布に分かれており、それぞれ低抵抗状態（ＬＲＳ：Low-Resistance State）および高抵抗状態（ＨＲＳ：High-Resistance State）と称する。これら低抵抗状態と高抵抗状態とを分離するために通常用いられる敷値を標準閾値と呼ぶことにする。
【００４５】
可変抵抗素子の高抵抗状態および低抵抗状態をそれぞれ論理０値または論理１値の何れかに対応付けることにより、可変抵抗素子はメモリセルとして機能する。論理０値または論理１値の何れに対応付けるかは任意である。高抵抗状態を論理０値に対応付けて、低抵抗状態を論理１値に対応付けた場合には、低抵抗状態のセルが高抵抗状態になるよう消去され、高抵抗状態のセルが低抵抗状態になるようプログラムされる。低抵抗状態を論理０値に対応付けて、高抵抗状態を論理１値に対応付けた場合には、高抵抗状態のセルが低抵抗状態になるよう消去され、低抵抗状態のセルが高抵抗状態になるようプログラムされる。
【００４６】
図５は、本技術の実施の形態における低抵抗閾値および高抵抗閾値を説明するための図である。同図のａにおいて、高抵抗状態の裾ビット８０１は、その他のビットに比べてデータの保持特性が良くない。そのため、この裾ビット８０１の状態にあるメモリセルについては、再度書込みをすることによってその状態を改善することが望ましい。しかしながら、同じ状態となる書込みを許容しない制御を行っている場合には、このメモリセルを高抵抗状態と認識してしまうと、連続して高抵抗状態になるように書込みを行うことが許容されなくなる。そこで、この実施の形態では、高抵抗状態の裾ビット８０１については低抵抗状態にあるものとみなすように、基準となる閾値を高抵抗状態側にシフトして、高抵抗閾値によりプレリードを行う。これにより、裾ビット８０１については低抵抗状態にあるものとしてプレリードされ、その後、高抵抗状態になるように書込みが行われる。
【００４７】
同様に、同図のｂにおいて、低抵抗状態の裾ビット８０２は、その他のビットに比べてデータの保持特性が良くない。そこで、裾ビット８０１の場合と同様に、低抵抗状態の裾ビット８０２については高抵抗状態にあるものとみなすように、基準となる閾値を低抵抗状態側にシフトして、低抵抗閾値によりプレリードを行う。これにより、裾ビット８０２については高抵抗状態にあるものとしてプレリードされ、その後、低抵抗状態になるように書込みが行われる。
【００４８】
［消去およびプログラムの具体例］
図６は、可変抵抗素子に対して消去およびプログラムにより書込みを行う具体例を示す図である。ここでは、標準敷値を用いた大まかな流れを示しており、低抵抗閾値および高抵抗状態を使い分けたものではない。この例では、ライトデータ「ＬＬＬＬＨＨＨＨ」を書き込む際に予めプレリードが行われ、現在の値として「ＬＨＨＬＨＬＨＬ」が得られたものと想定している。そして、同じ状態となる書込みが発生しないように、「Ｌ」に消去すべきビットは現在の値が「Ｈ」のビット位置のみとなるように消去マスクを作成し、「Ｈ」にプログラムすべきビットは現在の値が「Ｌ」のビット位置のみとなるようにプログラムマスクを作成する。なお、この例では、「Ｌ」レベルを論理０値に、「Ｈ」レベルを論理１値にそれぞれ対応付けている。
【００４９】
この場合、現在の値「Ｈ」を「Ｌ」に消去する必要があるのは第５ビットおよび第６ビットであるため、消去マスクとしては「ＭＥＥＭＭＭＭＭ」というパターンが得られる。ここで、「Ｅ」は消去対象となるビットを、「Ｍ」は消去対象とならないビットをそれぞれ意味する。
【００５０】
一方、現在の値「Ｌ」を「Ｈ」にプログラムする必要があるのは第０ビットおよび第２ビットであるため、プログラムマスクとしては「ＭＭＭＭＭＰＭＰ」というパターンが得られる。ここで、「Ｐ」はプログラム対象となるビットを、「Ｍ」はプログラム対象とならないビットをそれぞれ意味する。
【００５１】
これら消去マスクおよびプログラムマスクが用意されると、消去マスクに従って消去が行われ、プログラムマスクに従ってプログラムが行われる。なお、プログラムおよび消去の順番はどちらが先でも構わない。
【００５２】
図７は、本技術の実施の形態において書込みを行う具体例を示す図である。ここでは、低抵抗閾値および高抵抗状態を使い分けてプレリードが行われる。この例でも、ライトデータ「ＬＬＬＬＨＨＨＨ」を書き込む際に予めプレリードが行われ、現在の値として「ＬＨＨＬＨＬＨＬ」が得られたものと想定している。ただし、メモリセルの状態として、第３ビットが低抵抗状態の裾ビット８０２にあり、第７ビットが高抵抗状態の裾ビット８０１にあるものとする。
【００５３】
まず、消去マスクを生成するために、高抵抗閾値によりプレリードが行われる。この例では第７ビットが高抵抗状態の裾ビット８０１にあるため、「Ｈ」レベルとして読み出される。そのため、消去マスクとしては「ＥＥＥＭＭＭＭＭ」というパターンが得られる。すなわち、この例では第７ビットも消去対象となる。
【００５４】
続いて、プログラムマスクを生成するために、低抵抗閾値によりプレリードが行われる。この例では第３ビットが低抵抗状態の裾ビット８０２にあるため、「Ｌ」レベルとして読み出される。そのため、プログラムマスクとしては「ＭＭＭＭＰＰＭＰ」というパターンが得られる。すなわち、この例では第３ビットもプログラム対象となる。
【００５５】
［情報処理システムの動作］
図８は、本技術の実施の形態における情報処理システムのライト処理手順例を示す流れ図である。まず、ＮＶＲＡＭ３０１に対してライトデータおよびライト指示が発行されると（ステップＳ９３１）、消去マスクを作成するために高抵抗閾値がセットされて（ステップＳ９３２）、メモリセル３１６からプレリードが行われる（ステップＳ９３３）。このプレリードは、リード処理部３１７により実行される。ライトデータはライトバッファ３２０に保持され、プレリードデータはリードバッファ３３０に保持される。
【００５６】
そして、マスク生成部３４１は、ライトデータとプレリードデータを比較して（ステップＳ９３４）、上述の要領で消去マスクを生成する（ステップＳ９３５）。すなわち、ライトデータが「Ｌ」レベルでプレリードデータが「Ｈ」レベルのビット位置については「Ｅ」を、それ以外のビット位置については「Ｍ」をそれぞれパターンとする消去マスクを生成する。そして、この消去マスクに従って、ビット操作部３１５によってメモリセル３１６に対する消去処理が行われる（ステップＳ９３６）。この消去の際には検証（Verify）が行われ（ステップＳ９３７）、検証に成功するまで繰り返される（ステップＳ９３８：Ｎｏ）。ただし、繰り返し上限回数に達すると（ステップＳ９３９：Ｙｅｓ）、標準閾値にリセットされて（ステップＳ９５２）、エラー終了する。
【００５７】
次に、プログラムマスクを作成するために低抵抗閾値がセットされて（ステップＳ９４２）、メモリセル３１６からプレリードが行われる（ステップＳ９４３）。このプレリードは、リード処理部３１７により実行され、プレリードデータはリードバッファ３３０に保持される。
【００５８】
そして、マスク生成部３４１は、ライトデータとプレリードデータを比較して（ステップＳ９４４）、上述の要領でプログラムマスクを生成する（ステップＳ９４５）。すなわち、ライトデータが「Ｈ」レベルでプレリードデータが「Ｌ」レベルのビット位置については「Ｐ」を、それ以外のビット位置については「Ｍ」をそれぞれパターンとするプログラムマスクを生成する。そして、このプログラムマスクに従って、ビット操作部３１５によってメモリセル３１６に対するプログラム処理が行われる（ステップＳ９４６）。このプログラムの際には検証（Verify）が行われ（ステップＳ９４７）、検証に成功するまで繰り返される（ステップＳ９４８：Ｎｏ）。ただし、繰り返し上限回数に達すると（ステップＳ９４９：Ｙｅｓ）、標準閾値にリセットされて（ステップＳ９５２）、エラー終了する。
【００５９】
消去およびプログラムが完了すると、標準閾値にリセットされて（ステップＳ９５１）、正常終了する。なお、ここでは消去の後にプログラムを行う例について説明したが、この順序は逆でもよく、プログラムの後に消去を行うようにしてもよい。
【００６０】
このように、本技術の第１の実施の形態によれば、プレリードの閾値を変更することにより、裾ビットについては異なる状態として読み出して、再度修正書込みを行うことができ、データ保持特性を改善することができる。
【００６１】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、消去マスクを作成する際には高抵抗閾値にセットし、プログラムマスクを作成する際には低抵抗閾値にセットすることにより、常時強制的に裾ビットの再書込みを行っていた。この場合、ライトのたびにプレリードを２回行うことになるため、動作が遅くなるという問題がある。そこで、第１の実施の形態における動作モードを保護モードと称し、必要なときのみ保護モードによる動作を行うようにしたものを第２の実施の形態として説明する。基本的なシステム構成は第１の実施の形態において説明したものと同様であり、例えば制御部３５０がこの動作モードの設定を行う。すなわち、制御部３５０は、特許請求の範囲に記載の動作モード設定部の一例である。
【００６２】
［情報処理システムの動作］
図９は、本技術の第２の実施の形態における情報処理システムの処理手順例を示す流れ図である。この第２の実施の形態では、ホストコンピュータ１００からの指示により、ＮＶＲＡＭ３０１の制御部３５０において動作モードを決定することを想定する。標準モードにおいてはライトに先立って標準閾値によるプレリードが１回行われる。一方、保護モードにおいては第１の実施の形態と同様に、ライトに先立って高抵抗閾値によるプレリードと低抵抗閾値によるプレリードが併せて２回行われる。
【００６３】
ライト処理の際、ホストコンピュータ１００からの指示が保護モードを示している場合には（ステップＳ９０１：Ｙｅｓ）、保護モードによるライト処理が行われる（ステップＳ９３０）。一方、ホストコンピュータ１００からの指示が標準モードを示している場合には（ステップＳ９０１：Ｎｏ）、標準モードによるライト処理が行われる（ステップＳ９１０）。標準モードによるライト処理（ステップＳ９３０）は、図８により説明した処理手順と同様である。
【００６４】
図１０は、本技術の第２の実施の形態における標準モードのライト処理（ステップＳ９１０）の手順例を示す流れ図である。まず、ＮＶＲＡＭ３０１に対してライトデータおよびライト指示が発行されると（ステップＳ９１１）、消去マスクおよびプログラムマスクを作成するために、メモリセル３１６から標準閾値によるプレリードが行われる（ステップＳ９１３）。このプレリードは、リード処理部３１７により実行される。ライトデータはライトバッファ３２０に保持され、プレリードデータはリードバッファ３３０に保持される。
【００６５】
そして、マスク生成部３４１は、ライトデータとプレリードデータを比較して（ステップＳ９１４）、上述の要領で消去マスクを生成する（ステップＳ９１５）。すなわち、ライトデータが「Ｌ」レベルでプレリードデータが「Ｈ」レベルのビット位置については「Ｅ」を、それ以外のビット位置については「Ｍ」をそれぞれパターンとする消去マスクを生成する。そして、この消去マスクに従って、ビット操作部３１５によってメモリセル３１６に対する消去処理が行われる（ステップＳ９１６）。この消去の際には検証（Verify）が行われ（ステップＳ９１７）、検証に成功するまで繰り返される（ステップＳ９１８：Ｎｏ）。ただし、繰り返し上限回数に達すると（ステップＳ９１９：Ｙｅｓ）、エラー終了する。
【００６６】
次に、マスク生成部３４１は、上述の要領でプログラムマスクを生成する（ステップＳ９２５）。すなわち、ライトデータが「Ｈ」レベルでプレリードデータが「Ｌ」レベルのビット位置については「Ｐ」を、それ以外のビット位置については「Ｍ」をそれぞれパターンとするプログラムマスクを生成する。そして、このプログラムマスクに従って、ビット操作部３１５によってメモリセル３１６に対するプログラム処理が行われる（ステップＳ９２６）。このプログラムの際には検証（Verify）が行われ（ステップＳ９２７）、検証に成功するまで繰り返される（ステップＳ９２８：Ｎｏ）。ただし、繰り返し上限回数に達すると（ステップＳ９２９：Ｙｅｓ）、エラー終了する。
【００６７】
消去およびプログラムが完了すると、ライト処理は正常終了する。なお、ここでは消去の後にプログラムを行う例について説明したが、この順序は逆でもよく、プログラムの後に消去を行うようにしてもよい。
【００６８】
このように、本技術の第２の実施の形態によれば、状況に応じて裾ビットの強制的再修正を行わないように動作モードを変更することにより、プレリード回数を抑制することができる。
【００６９】
＜３．第３の実施の形態＞
可変抵抗素子を用いたＲｅＲＡＭでは、データを保持してから時間が経過するにつれてデータ保持特性が悪化し、これによりエラー訂正コード（ＥＣＣ）により検出訂正されるエラー数が増加する。例えば、４ビットの訂正能力を有するエラー訂正コードを用いた場合、４ビットまでのエラーは訂正できるが、それ以上であれば訂正ができなくなる。そのため、訂正不可能になる前にエラー訂正後のデータを書き直す手法（データリフレッシュ）が有効である。しかしながら、上述の第２の実施の形態における標準モードのような制御を行った場合には、プレリードデータとライトデータが同じである場合には全てのビットにおいてプログラムも消去を行われない。一方、保護モードのような制御を常に行った場合には、プレリード回数が増えて動作が遅くなるおそれがある。
【００７０】
そこで、以下の第３の実施の形態では、標準閾値を用いてリード動作を行い、エラーが検出された場合に、検出されたエラーが訂正可能な場合には保護モードによりデータリフレッシュを行う。これにより、常に保護モードを用いるよりも、動作速度の観点で改善を行い、また、保護モードを用いたデータリフレッシュ時には、裾ビットに対して修正書込みを行ってデータ保持特性を改善する。なお、これらデータリフレッシュのための一連の動作はメモリシステム４００内で閉じており、上位のホストコンピュータ１００側ではこれを意識する必要はない。また、基本的なシステム構成は第１の実施の形態において説明したものと同様である。
【００７１】
［情報処理システムの動作］
図１１は、本技術の第３の実施の形態における情報処理システムの処理手順例を示す流れ図である。この第３の実施の形態では、ホストコンピュータ１００からリードコマンドを受けると、リード処理部３１７によって、ＮＶＲＡＭ３０１の指定されたリードアドレスから標準閾値によりデータが読み出される（ステップＳ９６１）。このリードアドレスが論理アドレスである場合、メモリシステム４００内で物理アドレスに変換して、ＮＶＲＡＭ３０１の該当する物理アドレスからデータが読み出される。その場合、論理アドレスを物理アドレスに変換するためのアドレス変換テーブルを備えてもよい。
【００７２】
次に、読み出されたデータにエラーが含まれるか否かがＥＣＣ処理部２３０によってチェックされる。エラーが検出されなければ（ステップＳ９６２：Ｎｏ）、読み出されたデータをホストコンピュータ１００に対して出力し（ステップＳ９６３）、ステータスを「正常」に更新する（ステップＳ９６４）。このステータスは、例えばレジスタに記憶されており、ホストコンピュータ１００はこのレジスタを読み出すことにより、正常終了したか否かを確認することができる。
【００７３】
エラーが検出された場合には（ステップＳ９６２：Ｙｅｓ）、そのエラーが訂正可能なものであるかが判断される。エラー訂正できない場合には（ステップＳ９６５：Ｎｏ）、読み出されたデータを訂正せずにホストコンピュータ１００に対して出力し（ステップＳ９６６）、ステータスを「訂正不能エラー」に更新する（ステップＳ９６７）。なお、この場合にはエラー終了になるため、読み出されたデータをホストコンピュータ１００に対して出力しないという選択も考えられる。
【００７４】
エラー訂正が可能な場合には（ステップＳ９６５：Ｙｅｓ）、ＥＣＣ処理部２３０においてエラー訂正が行われる（ステップＳ９６８）。そして、訂正後のデータをホストコンピュータ１００に対して出力し（ステップＳ９６９）、ステータスを「訂正可能エラー」に更新する（ステップＳ９７１）。
【００７５】
エラー訂正後（ステップＳ９７１）、データリフレッシュを行うか否かの判断が行われる。例えば、ＥＣＣ処理部２３０の訂正能力が４ビットの場合において３ビット以上の訂正可能エラーが生じるとデータリフレッシュを行う、といったビット数を閾値とした基準が設けられる。データリフレッシュが必要と判断された場合（ステップＳ９７２：Ｙｅｓ）、書き戻しに備えて、訂正後のデータをメモリ３００等の何れかの領域に一時的に格納しておく（ステップＳ９７３）。
【００７６】
そして、動作モードを標準モードから保護モードに切り替える（ステップＳ９７４）。ＥＣＣエラーが発生している一つの要因は時間経過によるデータ保持特性の低下と考えられ、ＥＣＣエラーが発生したビット以外でも裾ビットが多発しているおそれがあるため、保護モードに切り替えることにより修正書込みを行うためである。
【００７７】
そして、その切り替えられた保護モードにおいて、メモリに一時格納されている訂正後のデータを、該当アドレスに対して書き直す（ステップＳ９７５）。これによりＥＣＣエラーが発生したビットと、これ以外の裾ビットに対して修正書込みが行われる。可変抵抗素子を用いた不揮発性メモリは、浮遊ゲートを用いた例えばＮＡＮＤフラッシュメモリと異なり、同一アドレスに対する書戻しが可能である。したがって、論理アドレスを物理アドレスに変換するためのアドレス変換テーブルを備えていたとしても、その更新を行う必要はない。
【００７８】
その後、動作モードを標準モードに切り替えて（ステップＳ９７６）、リード動作を終了する。
【００７９】
このように、本技術の第３の実施の形態によれば、リードアクセスの際に訂正可能なエラーが検出された場合には、訂正されたデータを保護モードにおいて書き直すことによりデータリフレッシュを実現することができる。
【００８０】
＜４．第４の実施の形態＞
情報処理システムにおいては、上位のホストコンピュータ１００側のアプリケーションによって、データが「ホット」または「コールド」の何れかに分類される場合がある。「ホット」データとはより頻繁に書換えが行われるデータであり、「コールド」データとはあまり書換えが行われないデータである。例えば、オペレーティングシステムのカーネルのようなデータは一旦書き込まれた後は書き換えられることが少ないため、「コールド」データに分類することができる。この「ホット」または「コールド」のデータの分類は、アプリケーションに大きく依存するため、上位のホストコンピュータ１００から、メモリシステム４００に、この「ホット」または「コールド」の通知や制御が行われることが望ましい。この第４の実施の形態では、ホストコンピュータ１００からコマンドを用いて、データの属性を「ホット」、「コールド」、または、それ以外の「通常」の３つに分類して指定することを想定する。
【００８１】
図１２は、本技術の第４の実施の形態における情報処理システムの処理手順例を示す流れ図である。メモリシステム４００がホストコンピュータ１００からライトコマンドを受信して、指定されたデータの属性が「コールド」に指定されていれば（ステップＳ９０２）、保護モードを用いてＮＶＲＡＭ３０１に対して書込みを行う（ステップＳ９３０）。保護モードを用いることで、データ保持特性の良くないビットに対しても、例えば最初に「コールド」データを書き込む際に、修正書込みおよび修正消去が行われ、エラーの発生を未然に防止することができる。
【００８２】
また、「コールド」属性以外の「通常」属性のデータおよび「ホット」属性のデータの書込みに対しては、標準モードによる書込みを行う（ステップＳ９１０）。これは、書込み時間の観点で有利だからである。一方、「コールド」属性のデータはそもそも書込みを行う頻度が少ないため、保護モードを用いることによる速度低下のペナルティは問題となり難い。
【００８３】
ここで、ステップＳ９１０の処理手順は図１０により説明したものと同様であり、ステップＳ９３０の処理手順は図８により説明したものと同様である。
【００８４】
このように、本技術の第４の実施の形態によれば、データの属性に応じて動的に動作モードを変更することにより、プレリード回数を適切に抑制することができる。
【００８５】
なお、この第４の実施の形態では、ホストコンピュータ１００から明示的に「ホット」または「コールド」の属性を指定することにより、ＮＶＲＡＭ３０１に対する書込み方法を選択するという例を示した。しかし、ＵＳＢやＳＡＴＡなどのように、使用するストレージインターフェースによってはデータの属性をメモリシステム４００に通知することができない仕様も存在する。このようなメモリシステム４００の場合は、メモリシステム４００内のプロセッサ２１０によってメモリアクセスパターンを解析することで、自律的に「ホット」または「コールド」を判別して、動作モードを選択することも考えられる。
【００８６】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００８７】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【００８８】
なお、本技術は以下のような構成もとることができる。
（１）メモリセルにおいて第１の閾値を基準として第１の値または第２の値の何れか一方の値を有するデータを第１リードデータとして読み出す第１リード処理部と、
ライトデータが前記第１の値であって前記第１リードデータが前記第２の値である場合に前記メモリセルを前記第１の値に書き換える第１ライト処理部と、
前記メモリセルにおいて前記第１の閾値とは異なる第２の閾値を基準として第２リードデータを読み出す第２リード処理部と、
前記ライトデータが前記第２の値であって前記第２リードデータが前記第１の値である場合に前記メモリセルを前記第２の値に書き換える第２ライト処理部と
を具備する記憶制御装置。
（２）前記メモリセルは可変抵抗素子であって、
前記第１の閾値は標準の閾値よりも高抵抗状態側に設定され、
前記第２の閾値は前記標準の閾値よりも低抵抗状態側に設定される
前記（１）に記載の記憶制御装置。
（３）前記第１の値は論理０値であり、
前記第２の値は論理１値である
前記（２）に記載の記憶制御装置。
（４）前記メモリセルは可変抵抗素子であって、
前記第１の閾値は標準の閾値よりも低抵抗状態側に設定され、
前記第２の閾値は前記標準の閾値よりも高抵抗状態側に設定される
前記（１）に記載の記憶制御装置。
（５）前記第１の値は論理１値であり、
前記第２の値は論理０値である
前記（４）に記載の記憶制御装置。
（６）動作モードとして第１のモードまたは第２のモードの何れか一方を設定する動作モード設定部と、
前記第１のモードが設定されている場合において、メモリセルにおいて第１の閾値を基準として第１の値または第２の値の何れか一方の値を有するデータを第１リードデータとして読み出す第１リード処理部と、
前記第１のモードが設定されている場合において、ライトデータが前記第１の値であって前記第１リードデータが前記第２の値である場合に前記メモリセルを前記第１の値に書き換える第１ライト処理部と、
前記第１のモードが設定されている場合において、前記メモリセルにおいて前記第１の閾値とは異なる第２の閾値を基準として第２リードデータを読み出す第２リード処理部と、
前記第１のモードが設定されている場合において、前記ライトデータが前記第２の値であって前記第２リードデータが前記第１の値である場合に前記メモリセルを前記第２の値に書き換える第２ライト処理部と、
前記第２のモードが設定されている場合において、前記メモリセルにおいて標準の閾値を基準として第３リードデータとして読み出す第３リード処理部と、
前記第２のモードが設定されている場合において、前記ライトデータが前記第１の値であって前記第３リードデータが前記第２の値である場合に前記メモリセルを前記第１の値に書き換え、前記ライトデータが前記第２の値であって前記第３リードデータが前記第１の値である場合に前記メモリセルを前記第２の値に書き換える第３ライト処理部と
を具備する記憶制御装置。
（７）リード処理の際にエラーが検出されてそのエラー訂正が行われると、前記動作モードとして前記第１のモードを設定して、前記エラー訂正に係るアドレスを前記ライトアドレスとし、前記エラー訂正されたデータを前記ライトデータとして書き直す前記（６）に記載の記憶制御装置。
（８）メモリセルを備えるメモリアレイと、
前記メモリセルにおいて第１の閾値を基準として第１の値または第２の値の何れか一方の値を有するデータを第１リードデータとして読み出す第１リード処理部と、
ライトデータが前記第１の値であって前記第１リードデータが前記第２の値である場合に前記メモリセルを前記第１の値に書き換える第１ライト処理部と、
前記メモリセルにおいて前記第１の閾値とは異なる第２の閾値を基準として第２リードデータを読み出す第２リード処理部と、
前記ライトデータが前記第２の値であって前記第２リードデータが前記第１の値である場合に前記メモリセルを前記第２の値に書き換える第２ライト処理部と
を具備する記憶装置。
（９）メモリセルを備えるメモリアレイと、
動作モードとして第１のモードまたは第２のモードの何れか一方を設定する動作モード設定部と、
前記第１のモードが設定されている場合において、前記メモリセルにおいて第１の閾値を基準として第１の値または第２の値の何れか一方の値を有するデータを第１リードデータとして読み出す第１リード処理部と、
前記第１のモードが設定されている場合において、ライトデータが前記第１の値であって前記第１リードデータが前記第２の値である場合に前記メモリセルを前記第１の値に書き換える第１ライト処理部と、
前記第１のモードが設定されている場合において、前記メモリセルにおいて前記第１の閾値とは異なる第２の閾値を基準として第２リードデータを読み出す第２リード処理部と、
前記第１のモードが設定されている場合において、前記ライトデータが前記第２の値であって前記第２リードデータが前記第１の値である場合に前記メモリセルを前記第２の値に書き換える第２ライト処理部と、
前記第２のモードが設定されている場合において、前記メモリセルにおいて標準の閾値を基準として第３リードデータとして読み出す第３リード処理部と、
前記第２のモードが設定されている場合において、前記ライトデータが前記第１の値であって前記第３リードデータが前記第２の値である場合に前記メモリセルを前記第１の値に書き換え、前記ライトデータが前記第２の値であって前記第３リードデータが前記第１の値である場合に前記メモリセルを前記第２の値に書き換える第３ライト処理部と
を具備する記憶装置。
（１０）メモリセルを備えるメモリアレイと、
動作モードとして第１のモードまたは第２のモードの何れか一方を設定する動作モード設定部と、
前記第１のモードが設定されている場合において、前記メモリセルにおいて第１の閾値を基準として第１の値または第２の値の何れか一方の値を有するデータを第１リードデータとして読み出す第１リード処理部と、
前記第１のモードが設定されている場合において、ライトデータが前記第１の値であって前記第１リードデータが前記第２の値である場合に前記メモリセルを前記第１の値に書き換える第１ライト処理部と、
前記第１のモードが設定されている場合において、前記メモリセルにおいて前記第１の閾値とは異なる第２の閾値を基準として第２リードデータを読み出す第２リード処理部と、
前記第１のモードが設定されている場合において、前記ライトデータが前記第２の値であって前記第２リードデータが前記第１の値である場合に前記メモリセルを前記第２の値に書き換える第２ライト処理部と、
前記第２のモードが設定されている場合において、前記メモリセルにおいて標準の閾値を基準として第３リードデータとして読み出す第３リード処理部と、
前記第２のモードが設定されている場合において、前記ライトデータが前記第１の値であって前記第３リードデータが前記第２の値である場合に前記メモリセルを前記第１の値に書き換え、前記ライトデータが前記第２の値であって前記第３リードデータが前記第１の値である場合に前記メモリセルを前記第２の値に書き換える第３ライト処理部と、
前記メモリアレイに対するリードコマンドまたはライトコマンドを発行するホストコンピュータと
を具備する情報処理システム。
（１１）前記ホストコンピュータは、前記ライトコマンドに係るライトデータの書換え頻度に関する情報を前記ライトコマンドに付加して発行し、
前記動作モード設定部は、前記ライトデータの書換え頻度が低い頻度を示している場合には前記第１のモードを設定し、それ以外の場合には前記第２のモードを設定する前記（１０）に記載の記憶制御装置。
（１２）メモリセルにおいて第１の閾値を基準として第１の値または第２の値の何れか一方の値を有するデータを第１リードデータとして読み出す第１リード処理手順と、
ライトデータが前記第１の値であって前記第１リードデータが前記第２の値である場合に前記メモリセルを前記第１の値に書き換える第１ライト処理手順と、
前記メモリセルにおいて前記第１の閾値とは異なる第２の閾値を基準として第２リードデータを読み出す第２リード処理手順と、
前記ライトデータが前記第２の値であって前記第２リードデータが前記第１の値である場合に前記メモリセルを前記第２の値に書き換える第２ライト処理手順と
を具備する記憶制御方法。
【符号の説明】
【００８９】
１００  ホストコンピュータ
２００  メモリ制御部
２０１  ホストインターフェース
２１０  プロセッサ
２２０  内蔵メモリ
２３０  ＥＣＣ処理部
２５０  周辺回路
２８０  バス
２９１〜２９３  メモリインターフェース
３００  メモリ
３０１  不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）
３０２  フラッシュメモリ
３０３  揮発性メモリ
３０９  制御インターフェース
３１０  メモリアレイ
３１１  データ部
３１２  冗長部
３１３  センスアンプ
３１５  ビット操作部
３１６  メモリセル
３１７  リード処理部
３２０  ライトバッファ
３３０  リードバッファ
３４０  論理評価部
３４１  マスク生成部
３５０  制御部
３６０  閾値設定部
４００  メモリシステム
【図１】
0005839048.tif 000002
【図２】
0005839048.tif 000003
【図３】
0005839048.tif 000004
【図４】
0005839048.tif 000005
【図５】
0005839048.tif 000006
【図６】
0005839048.tif 000007
【図７】
0005839048.tif 000008
【図８】
0005839048.tif 000009
【図９】
0005839048.tif 000010
【図１０】
0005839048.tif 000011
【図１１】
0005839048.tif 000012
【図１２】
0005839048.tif 000013