(57)【特許請求の範囲】
【請求項１】
複数のメモリセルのうち２値の一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、
前記複数のメモリセルのうち前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部と、
前記第１の書換え処理の際にエラーが発生した場合には前記複数のメモリセルのうち前記第１の書換え処理が実行された前記メモリセルに対して前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させる第１のリトライ制御部と
を具備する記憶制御装置。
【請求項２】
前記第２の書換え処理の際にエラーが発生した場合には前記複数のメモリセルのうち前記第２の書換え処理が実行された前記メモリセルに対して前記第１の書換え処理を実行させた後に前記第２の書換え処理を実行させる第２のリトライ制御部をさらに具備する請求項１記載の記憶制御装置。
【請求項３】
前記メモリセルは、所定の境界抵抗値を境界とする２つの抵抗状態のうちの一方の抵抗状態が前記一方の値に対応付けられ、他方の抵抗状態が前記他方の値に対応付けられた可変抵抗素子であり、
前記第１の書換え処理部は、前記境界抵抗値より前記他方の抵抗状態側に設定された第１の抵抗値を基準として前記メモリセルからデータを読み出して当該データの値が前記他方の値でない場合には前記エラーが発生したものと判断し、
前記第２の書換え処理部は、前記境界抵抗値より前記一方の抵抗状態側に設定された第２の抵抗値を基準として前記メモリセルからデータを読み出して当該データが前記一方の値でない場合には前記エラーが発生したものと判断する
請求項２記載の記憶制御装置。
【請求項４】
前記第１および第２の書換え処理の各々における前記エラーの検出回数に基づいて前記メモリセルが不良セルであるか否かを判定する不良セル判定部をさらに具備する請求項３記載の記憶制御装置。
【請求項５】
前記第１の書換え処理部は、前記第２の書換え処理が実行された前記メモリセルにおいて前記第１の抵抗値を基準として第１のデータを読み出して当該第１のデータの値が前記一方の値である場合には前記第１の書換え処理を実行し、
前記第２の書換え処理部は、前記第１の書換え処理が実行されたメモリセルにおいて前記第２の抵抗値を基準として第２のデータを読み出して当該第２のデータが前記他方の値である場合には前記第２の書換え処理を実行する
請求項３記載の記憶制御装置。
【請求項６】
前記第１の書換え処理部は、前記第２の書換え処理が実行された前記メモリセルにおいて前記第１の抵抗値を基準として第１のデータを読み出すとともに前記境界抵抗値を基準として第３のデータを読み出して前記第１のデータと第３のデータとの値が異なる場合には前記第１の書換え処理を実行し、
前記第２の書換え処理部は、前記第１の書換え処理が実行された前記メモリセルにおいて前記第２の抵抗値を基準として第２のデータを読み出すとともに前記第３のデータを読み出して前記第２のデータと第３のデータとの値が異なる場合には前記第２の書換え処理を実行する
請求項３記載の記憶制御装置。
【請求項７】
複数のメモリセルのうち２値の一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、前記複数のメモリセルのうち前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部と、前記第１の書換え処理の際にエラーが発生した場合には所定のコマンドに従って前記複数のメモリセルのうち前記第１の書換え処理が実行された前記メモリセルに対して前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させるリトライ制御部とを備える記憶制御装置と、
前記エラーが発生した場合には前記所定のコマンドを発行する第１のコマンド発行部と
を具備するメモリシステム。
【請求項８】
複数のメモリセルのうち２値の一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、前記複数のメモリセルのうち前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部とを備える記憶制御装置と、
前記第１の書換え処理の際にエラーが発生した場合には前記複数のメモリセルのうち前記第１の書換え処理が実行された前記メモリセルに対して前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させる第１のリトライ制御部と
を具備するメモリシステム。
【請求項９】
複数のメモリセルのうち２値の一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、前記複数のメモリセルのうち前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部と、前記第１の書換え処理の際にエラーが発生した場合には所定のコマンドに従って前記複数のメモリセルのうち前記第１の書換え処理が実行された前記メモリセルに対して前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させるリトライ制御部とを備える記憶制御装置と、
前記エラーが発生した場合には前記所定のコマンドを発行するホストコンピュータと
を具備する情報処理システム。
【請求項１０】
複数のメモリセルのうち２値の一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、前記複数のメモリセルのうち前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部とを備える記憶装置と、
前記第１の書換え処理の際にエラーが発生した場合には前記複数のメモリセルのうち前記第１の書換え処理が実行された前記メモリセルに対して前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させるホストコンピュータと
を具備する情報処理システム。
【請求項１１】
第１の書換え処理部が、複数のメモリセルのうち２値の一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理手順と、
第２の書換え処理部が、前記複数のメモリセルのうち前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理手順と、
第１のリトライ制御部が、前記第１の書換え処理の際にエラーが発生した場合には前記複数のメモリセルのうち前記第１の書換え処理が実行された前記メモリセルに対して前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させる第１のリトライ制御手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法に関する。詳しくは、不揮発性メモリを制御するための記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法に関する。
【背景技術】
【０００２】
近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ（ＮＶＭ：Non-Volatile memory）が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＲｅＲＡＭ（Resistance RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）などが挙げられる。
【０００３】
これらの不揮発性メモリに対するライト処理において、データが正常に書き込まれずにエラーが発生することがある。例えば、経年劣化や初期不良などにより特性が劣化したメモリセルにおいて、エラーが発生することが多い。一般に、書込み時にエラーが発生したメモリセルは不良セルとして扱われ、以降のライト処理において書込みの対象から除外される。このため、不良セルが増加すると、不揮発性メモリの実質的な容量が減少してしまう。そこで、データの書込みが正常に実行されなかった場合に、そのデータの書込みを再度試みるリトライ処理を実行する記憶装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２２００６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の従来技術では、不良セルの増大を抑制することが困難である。不揮発性メモリにおいては、２値のうちの一方の値の書込みに失敗しても、他方の値の書込みには成功することがある。例えば、一方の値の書込み処理と、他方の値の書込み処理とのそれぞれにおいて、データが正常に書き込まれたか否かを判断する基準が異なる不揮発性メモリでは、一方の書込み処理のみに失敗することがありうる。ところが、上述のリトライ処理においては、同じ値のデータの書込みが実行されるため、その値と異なる値の書込みに成功しうるメモリセルであっても不良セルと判断されてしまうことがある。このため、不良セルの増大を抑制することが困難である。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、不揮発性メモリにおいて不良セルの増大を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、上記他方の値が書き込まれたメモリセルを上記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部と、上記第１の書換え処理の際にエラーが発生した場合には上記第１の書換え処理が実行された上記メモリセルにおいて上記第２の書換え処理を実行させた後に上記第１の書換え処理を再度実行させる第１のリトライ制御部とを具備する記憶制御装置、および、その制御方法である。これにより、第１の書換え処理においてエラーが発生した場合には第１の書換え処理が実行されたメモリセルにおいて第２の書換え処理が実行された後に第１の書換え処理が再度実行されるという作用をもたらす。
【０００８】
また、この第１の側面において、上記第２の書換え処理の際にエラーが発生した場合には上記第２の書換え処理が実行された上記メモリセルにおいて上記第１の書換え処理を実行させた後に上記第２の書換え処理を実行させる第２のリトライ制御部をさらに具備してもよい。これにより、第２の書換え処理においてエラーが発生した場合には第２の書換え処理が実行されたメモリセルにおいて第１の書換え処理が実行された後に第２の書換え処理が再度実行されるという作用をもたらす。
【０００９】
また、この第１の側面において、上記メモリセルは、所定の境界抵抗値を境界とする２つの抵抗状態のうちの一方の抵抗状態が上記一方の値に対応付けられ、他方の抵抗状態が上記他方の値に対応付けられた可変抵抗素子であり、上記第１の書換え処理部は、上記境界抵抗値より上記他方の抵抗状態側に設定された第１の抵抗値を基準として上記メモリセルからデータを読み出して当該データの値が上記他方の値でない場合には上記エラーが発生したものと判断し、上記第２の書換え処理部は、上記境界抵抗値より上記一方の抵抗状態側に設定された上記第２の抵抗値を基準として上記メモリセルからデータを読み出して当該データが上記一方の値でない場合には上記エラーが発生したものと判断してもよい。これにより、第１の抵抗値を基準としてメモリセルから読み出されたデータが他方の値でない場合には第１の書換え処理部によりエラーが発生したものと判断され、第２の抵抗値を基準としてメモリセルから読み出されたデータが一方の値でない場合には第２の書換え処理部によりエラーが発生したものと判断されるという作用をもたらす。
【００１０】
また、この第１の側面において、上記第１および第２の書換え処理の各々における上記エラーの検出回数に基づいて上記メモリセルが不良セルであるか否かを判定する不良セル判定部をさらに具備してもよい。これにより、第１および第２の書換え処理の各々におけるエラーの検出回数に基づいてメモリセルが不良セルであるか否かが判定されるという作用をもたらす。
【００１１】
また、この第１の側面において、上記第１の書換え処理部は、上記第２の書換え処理が実行された上記メモリセルにおいて上記第１の抵抗値を基準として第１のデータを読み出して当該第１のデータの値が上記一方の値である場合には上記第１の書換え処理を実行し、上記第２の書換え処理部は、上記第１の書換え処理が実行されたメモリセルにおいて上記第２の抵抗値を基準として第２のデータを読み出して当該第２のデータが上記他方の値である場合には上記第２の書換え処理を実行してもよい。これにより、第２の書換え処理が実行されたメモリセルにおいて第１の抵抗値を基準として読み出された第１のデータの値が一方の値である場合には第１の書換え処理が実行され、第１の書換え処理が実行されたメモリセルにおいて第２の抵抗値を基準として読み出された第２のデータの値が他方の値である場合には第２の書換え処理が実行されるという作用をもたらす。
【００１２】
また、この第１の側面において、第１の書換え処理部は、上記第２の書換え処理が実行された上記メモリセルにおいて上記第１の抵抗値を基準として第１のデータを読み出すとともに上記境界抵抗閾値を基準として第３のデータを読み出して上記第１のデータと第３のデータとの値が異なる場合には上記第１の書換え処理を実行し、上記第２の書換え処理部は、上記第１の書換え処理が実行された上記メモリセルにおいて上記第２の抵抗値を基準として第２のデータを読み出すとともに上記第３のデータを読み出して上記第２のデータと第３のデータとの値が異なる場合には上記第２の書換え処理を実行してもよい。これにより、第１のデータと第３のデータとの値が異なる場合には第１の書換え処理が実行され、第２のデータと第３のデータとの値が異なる場合には第２の書換え処理が実行されるという作用をもたらす。
【００１３】
また、本技術の第２の側面は、２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、上記他方の値が書き込まれたメモリセルを上記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部と、上記第１の書換え処理の際にエラーが発生した場合には所定のコマンドに従って上記第１の書換え処理が実行された上記メモリセルにおいて上記第２の書換え処理を実行させた後に上記第１の書換え処理を再度実行させるリトライ制御部とを備える記憶制御装置と、上記第１のエラーが発生した場合には上記所定のコマンドを発行する第１のコマンド発行部とを具備するメモリシステムである。これにより、第１の書換え処理においてエラーが発生した場合には第１の書換え処理が実行されたメモリセルにおいて第２の書換え処理が実行された後に第１の書換え処理が再度実行されるという作用をもたらす。
【００１４】
また、本技術の第３の側面は、２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、上記他方の値が書き込まれたメモリセルを上記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部とを備える記憶制御装置と、上記第１の書換え処理の際にエラーが発生した場合には上記第１の書換え処理が実行された上記メモリセルにおいて上記第２の書換え処理を実行させた後に上記第１の書換え処理を再度実行させる第１のリトライ制御部とを具備するメモリシステムである。これにより、第１の書換え処理においてエラーが発生した場合には第１の書換え処理が実行されたメモリセルにおいて第２の書換え処理が実行された後に第１の書換え処理が再度実行されるという作用をもたらす。
【００１５】
また、本技術の第４の側面は、２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、上記他方の値が書き込まれたメモリセルを上記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部と、上記第１の書換え処理の際にエラーが発生した場合には所定のコマンドに従って上記第１の書換え処理が実行された上記メモリセルにおいて上記第２の書換え処理を実行させた後に上記第１の書換え処理を再度実行させるリトライ制御部とを備える記憶制御装置と、上記第１のエラーが発生した場合には上記所定のコマンドを発行するホストコンピュータとを具備する情報処理システムである。これにより、第１の書換え処理においてエラーが発生した場合には第１の書換え処理が実行されたメモリセルにおいて第２の書換え処理が実行された後に第１の書換え処理が再度実行されるという作用をもたらす。
【００１６】
また、本技術の第５の側面は、２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、上記他方の値が書き込まれたメモリセルを上記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部とを備える記憶制御装置と、上記第１の書換え処理の際にエラーが発生した場合には上記第１の書換え処理が実行された上記メモリセルにおいて上記第２の書換え処理を実行させた後に上記第１の書換え処理を再度実行させるホストコンピュータとを具備する情報処理システムである。これにより、第１の書換え処理においてエラーが発生した場合には第１の書換え処理が実行されたメモリセルにおいて第２の書換え処理が実行された後に第１の書換え処理が再度実行されるという作用をもたらす。
【発明の効果】
【００１７】
本技術によれば、不揮発性メモリにおいて不良セルの増大を抑制することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１８】
【図１】第１の実施の形態における情報処理システムの一構成例を示すブロック図である。
【図２】第１の実施の形態における可変抵抗素子の抵抗分布の一例を示す図である。
【図３】第１の実施の形態における抵抗値の遷移の一例を示す図である。
【図４】第１の実施の形態におけるメモリ制御回路の一構成例を示すブロック図である。
【図５】第１の実施の形態におけるステータスのデータ構造の一例を示す図である。
【図６】第１の実施の形態におけるアドレス変換テーブルの一構成例を示す図である。
【図７】第１の実施の形態におけるＮＶＲＡＭ制御回路の一構成例を示すブロック図である。
【図８】第１の実施の形態におけるメモリ制御部の動作の一例を示すフローチャートである。
【図９】第１の実施の形態におけるＮＶＲＡＭの動作の一例を示すフローチャートである。
【図１０】第１の実施の形態におけるライト処理の一例を示すフローチャートである。
【図１１】第１の実施の形態におけるリセット処理の一例を示すフローチャートである。
【図１２】第１の実施の形態におけるセット処理の一例を示すフローチャートである。
【図１３】第１の実施の形態におけるリセットリトライ処理の一例を示すフローチャートである。
【図１４】第１の実施の形態におけるセットリトライ処理の一例を示すフローチャートである。
【図１５】第１の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。
【図１６】第１の実施の形態におけるリセットリトライ処理が実行されたデータの具体例を示す図である。
【図１７】第１の実施の形態におけるセット処理が実行されたデータの具体例を示す図である。
【図１８】第１の実施の形態におけるリセットリトライ処理の際のメモリセルの状態の遷移の一例を示す図である。
【図１９】第２の実施の形態におけるＮＶＲＡＭ制御回路の一構成例を示すブロック図である。
【図２０】第２の実施の形態におけるリセットリトライ処理の一例を示すフローチャートである。
【図２１】第２の実施の形態におけるセットリトライ処理の一例を示すフローチャートである。
【図２２】第２の実施の形態におけるリセットリトライ処理が実行されたデータの具体例を示す図である。
【図２３】第２の実施の形態におけるリセットリトライ処理の際のメモリセルの状態の遷移の一例を示す図である。
【図２４】第３の実施の形態におけるメモリ制御回路の一構成例を示すブロック図である。
【図２５】第３の実施の形態におけるＮＶＲＡＭ制御回路の一構成例を示すブロック図である。
【図２６】第３の実施の形態におけるメモリ制御部の動作の一例を示すフローチャートである。
【図２７】第３の実施の形態におけるリセットリトライ制御処理の一例を示すフローチャートである。
【図２８】第３の実施の形態におけるセットリトライ制御処理の一例を示すフローチャートである。
【図２９】第３の実施の形態におけるＮＶＲＡＭの動作の一例を示すフローチャートである。
【図３０】第３の実施の形態におけるプレリード・セット処理の一例を示すフローチャートである。
【図３１】第３の実施の形態におけるプレリード・リセット処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（リトライ制御においてリフレッシュ処理を行ってから再書換えを行う例）
２．第２の実施の形態（リフレッシュが有効なメモリセルのみをリフレッシュ処理してから再書換えを行う例）
３．第３の実施の形態（メモリ制御部の制御に従ってリフレッシュ処理および再書換えを行う例）
【００２０】
＜１．第１の実施の形態＞
［情報処理システムの構成例］
図１は、第１の実施の形態における情報処理システムの一構成例を示すブロック図である。この情報処理システムは、ホストコンピュータ１００およびメモリシステムを備える。このメモリシステムは、メモリ制御部２００およびＮＶＲＡＭ３００を備える。
【００２１】
ホストコンピュータ１００は、メモリシステムを制御するものである。具体的には、ホストコンピュータ１００は、コマンドを発行して、そのコマンド、アドレス、および、データをメモリ制御部２００に信号線１０９を介して供給する。また、ホストコンピュータ１００は、メモリシステムからデータおよびステータスを受け取る。ここで、コマンドは、メモリシステムを制御するためのものであり、例えば、データのライト処理を指示するライトコマンドや、データのリード処理を指示するリードコマンドを含む。アドレスは、ＮＶＲＡＭ３００内のデータの格納場所を示すものであり、具体的には、ホストコンピュータ１００が定義したアドレス空間における論理アドレスである。この論理アドレスは、メモリシステムにおいて物理アドレスに変換される。この物理アドレスは、ＮＶＲＡＭ３００においてメモリセルに割り当てられた実際のアドレスである。データは、メモリシステムに書き込まれるライトデータや、メモリシステムから読み出されたリードデータを含む。
【００２２】
ステータスは、コマンドの実行結果やメモリシステムの状況を通知する情報である。このステータスには、コマンドの実行結果として、エラーの発生の有無と、そのエラーの種類とが記載される。エラーの種類の詳細については、後述する。
【００２３】
メモリ制御部２００は、ＮＶＲＡＭ３００を制御するものである。このメモリ制御部２００は、ホストインターフェース２１０、メモリ制御回路２２０およびメモリインターフェース２３０を備える。なお、メモリ制御部２００は、特許請求の範囲に記載の記憶制御装置の一例である。
【００２４】
ホストインターフェース２１０は、ホストコンピュータ１００との間でコマンド、アドレス、データ、および、ステータスなどをやりとりするインターフェースである。ホストインターフェース２１０としては、例えば、ＳＡＴＡ（Serial Advanced Technology Attachment）、ＰＣＩ  Ｅｘｐｒｅｓｓなどを利用することができる。
【００２５】
メモリ制御回路２２０は、メモリ制御部２００全体を制御するものである。このメモリ制御回路２２０は、ホストインターフェース２１０を介してライトコマンド、アドレスおよびライトデータを受け取った場合には、それらをメモリインターフェース２３０に供給する。そして、メモリ制御回路２２０は、メモリインターフェース２３０を介して、ライトコマンドに対応するステータスを受け取った場合には、そのステータスをホストインターフェース２１０に供給する。
【００２６】
また、メモリ制御回路２２０は、ホストインターフェース２１０を介してリードコマンドおよびアドレスを受け取った場合には、それらをメモリインターフェース２３０に供給する。そして、メモリ制御回路２２０は、メモリインターフェース２３０を介してステータスおよびリードデータを受け取った場合には、それらをホストインターフェース２１０に供給する。
【００２７】
メモリインターフェース２３０は、ＮＶＲＡＭ３００との間でコマンド、アドレス、データ、および、ステータスなどをやりとりするインターフェースである。
【００２８】
ＮＶＲＡＭ３００は、制御インターフェース３１０、ＮＶＲＡＭ制御回路３２０およびメモリセルアレイ３３０を備える。
【００２９】
制御インターフェース３１０は、メモリ制御部２００との間でコマンド、アドレス、データ、および、ステータスなどをやりとりするインターフェースである。
【００３０】
ＮＶＲＡＭ制御回路３２０は、ＮＶＲＡＭ３００全体を制御するものである。具体的には、ＮＶＲＡＭ制御回路３２０は、制御インターフェース３１０を介してライトコマンド、アドレス、および、ライトデータを受け取った場合には、そのアドレスに書き込まれているデータを既書込みデータとして読み出す。この読出しは、プレリードと呼ばれる。ＮＶＲＡＭ制御回路３２０は、ライトデータと既書込みデータとをビット単位で比較し、ライトデータにおいて「１」であり、かつ、既書込みデータにおいて「０」のビットを書き換え対象とする。ＮＶＲＡＭ制御回路３２０は、それらの書き換え対象のビットを「１」に書き換える。以下、この処理をリセット処理と称する。なお、このリセット処理は、プログラム処理とも呼ばれる。
【００３１】
次に、ＮＶＲＡＭ制御回路３２０は、ライトデータとセット処理後の既書込みデータとをビット単位で比較し、ライトデータにおいて「０」であり、かつ、既書込みデータにおいて「１」のビットを書き換え対象とする。ＮＶＲＡＭ制御回路３２０は、それらの書き換え対象のビットを「０」に書き換える。以下、この処理をセット処理と称する。なお、このセット処理は、消去処理とも呼ばれる。
【００３２】
そして、ＮＶＲＡＭ制御回路３２０は、リセット処理およびセット処理の実行結果をステータスに記載する。この実行結果は、エラーの発生の有無と、そのエラーの種類とを含む。エラーの種類としては、リセットエラーおよびセットエラーがある。リセットエラーは、リセット処理において発生したエラーであり、セットエラーは、セット処理において発生したエラーである。
【００３３】
また、制御インターフェース３１０を介してリードコマンドおよびアドレスおよびを受け取った場合には、ＮＶＲＡＭ制御回路３２０は、メモリセルアレイ３３０内の対応するアドレスからデータを読み出してメモリ制御部２００に転送する。なお、ＮＶＲＡＭ制御回路３２０は、特許請求の範囲に記載の記憶制御装置の一例である。
【００３４】
メモリセルアレイ３３０は、配列された複数のメモリセルを備える。各々のメモリセルとして、例えば、可変抵抗素子を用いるＲｅＲＡＭが用いられる。なお、ライト処理においてセット処理およびリセット処理の各々が順に実行される不揮発性メモリであれば、ＲｅＲＡＭ以外の不揮発性メモリをメモリセルアレイ３３０において用いてもよい。
【００３５】
図２は、ＲｅＲＡＭにおける可変抵抗素子の抵抗分布を模式的に示した図である。横軸は、抵抗値Ｒを示しており、縦軸は、セルの数の相対的な分布を相対値により示している。この図が示すように可変抵抗素子の抵抗分布は、大きく２つの分布に分かれており、それぞれ低抵抗状態（ＬＲＳ：Low-Resistance State）および高抵抗状態（ＨＲＳ：High-Resistance State）と称する。これら低抵抗状態と高抵抗状態とを分離するために通常用いられる閾値を境界抵抗値（Ｒ_ｒｅａｄ）と呼ぶことにする。
【００３６】
可変抵抗素子の高抵抗状態および低抵抗状態をそれぞれ論理０値または論理１値の何れ
かに対応付けることにより、可変抵抗素子はメモリセルとして機能する。論理０値または論理１値の何れに対応付けるかは任意である。例えば、高抵抗状態が論理１値に対応付けられ、低抵抗状態が論理０値に対応付けられる。
【００３７】
ここで、低抵抗状態（ＬＲＳ）のうち、抵抗値が比較的高い状態はデータの保持特性がよくない。このため、抵抗値を低下させるための処理（例えば、セット処理）においては、境界抵抗値より低い抵抗値が閾値として用いられることがある。この閾値を、以下、「低抵抗閾値（Ｒ_ｓｅｔ）」と称する。また、この低抵抗閾値より抵抗が低い状態を安定低抵抗状態（ｓＬＲＳ：stable and Low-Resistance State）と称する。抵抗値が低抵抗閾値より高く境界抵抗値以下の状態を不安定低抵抗状態（ｕＬＲＳ：unstable and Low-Resistance State）と称する。
【００３８】
また、高抵抗状態（ＨＲＳ）のうち、抵抗値が比較的低い状態はデータの保持特性がよくない。このため、抵抗値を上昇させる処理（例えば、リセット処理）においては、境界抵抗値より高い抵抗値が閾値として用いられることがある。この閾値を、以下、「高抵抗閾値（Ｒ_ｒｅｓｅｔ）」と称する。また、この高抵抗閾値より抵抗が高い状態を安定高抵抗状態（ｓＨＲＳ：stable and High-Resistance State）と称する。抵抗値が高抵抗閾値より低く境界抵抗値以上の状態を不安定高抵抗状態（ｕＨＲＳ：unstable and High-Resistance State）と称する。
【００３９】
図３は、第１の実施の形態における抵抗値の遷移の一例を示す図である。図３ａは、セット処理における抵抗値の遷移の一例を示す図である。セット処理においては、抵抗値を低下させる制御が行われた後、データが書き込まれたか否かを検証（すなわち、ベリファイ）するために、低抵抗閾値（Ｒ_ｓｅｔ）を基準としてメモリセルからデータが読み出される。例えば、抵抗値がＲ_ｓｅｔ以下である場合には「０」の値のデータが読み出される。一方、Ｒ_ｓｅｔより大きい場合には「１」の値のデータが読み出され、書込みに失敗したと判断される。一定回数以上、失敗した場合にはセットエラーが発生したと判断される。
【００４０】
図３ｂは、リセット処理における抵抗値の遷移の一例を示す図である。リセット処理においては、抵抗値を上昇させる制御が行われた後、データが書き込まれたか否かを検証（すなわち、ベリファイ）するために、高抵抗閾値（Ｒ_ｒｅｓｅｔ）を基準としてメモリセルからデータが読み出される。例えば、抵抗値がＲ_ｒｅｓｅｔ以上である場合には「１」の値のデータが読み出される。一方、Ｒ_ｒｅｓｅｔ未満である場合には「０」の値のデータが読み出され、書込みに失敗したと判断される。一定回数以上、失敗した場合にはリセットエラーが発生したと判断される。
【００４１】
［メモリ制御回路の構成例］
図４は、第１の実施の形態におけるメモリ制御回路２２０の一構成例を示すブロック図である。このメモリ制御回路２２０は、コマンドデコーダ２２１、ＥＣＣ処理部２２２、アドレス変換部２２３、アドレス変換テーブル２２４、不良セル判定部２２５、リセットリトライコマンド発行部２２６、および、セットリトライコマンド発行部２２７を備える。
【００４２】
コマンドデコーダ２２１は、ホストインターフェース２１０を介して受け取ったホストコンピュータ１００からのコマンドをデコードするものである。コマンドデコーダ２２１は、デコードしたコマンド（ライトコマンドやリードコマンド）をＮＶＲＡＭ３００にメモリインターフェース２３０を介して供給する。
【００４３】
ＥＣＣ処理部２２２は、ライトデータについてエラー訂正コード（ＥＣＣ：Error Correcting Code）を生成するとともに、ＥＣＣに基づいてリードデータにおけるエラーの検出および訂正を行うものである。このＥＣＣ処理部２２２は、ホストインターフェース２１０を介してライトデータを受け取った場合には、そのライトデータについてＥＣＣを生成し、そのＥＣＣをライトデータとともにＮＶＲＡＭ３００にメモリインターフェース２３０を介して供給する。また、ＮＶＲＡＭ３００からメモリインターフェース２３０を介してリードデータと、そのリードデータのＥＣＣとを受け取った場合には、ＥＣＣ処理部２２２は、ＥＣＣに基づいてリードデータにおけるエラーの検出および訂正を行う。そして、ＥＣＣ処理部２２２は、検出および訂正後のリードデータをホストコンピュータ１００にホストインターフェース２１０を介して供給する。
【００４４】
アドレス変換部２２３は、論理アドレスを物理アドレスに変換するものである。アドレス変換部２２３は、ホストインターフェース２１０を介して論理アドレスを受け取った場合には、アドレス変換テーブル２２４から、論理アドレスに対応する物理アドレスを読み出す。対応する物理アドレスがない場合には、アドレス変換部２２３は、アドレス変換テーブル２２４において、不良でない物理アドレスのいずれかを物理アドレスに対応付ける。アドレス変換部２２３は、変換した物理アドレスを不良セル判定部２２５およびＮＶＲＡＭ３００に供給する。
【００４５】
アドレス変換テーブル２２４は、物理アドレスと論理アドレスとを対応付けたテーブルである。また、このアドレス変換テーブル２２４には、物理アドレスごとに、その物理アドレスが不良な物理アドレスであるか否かが記載される。ここで、不良な物理アドレスとは、データの保持特性が劣化したメモリセルである不良セルに対応する物理アドレスである。
【００４６】
不良セル判定部２２５は、セットエラーまたはリセットエラーの発生回数に基づいて、それらのエラーが発生したメモリセルが、不良セルであるか否かを判定するものである。この不良セル判定部２２５は、ＮＶＲＡＭ３００からセットエラーまたはリセットエラーが記載されたステータスを受け取った場合に、それらに基づいてライト処理の対象のメモリセルが不良セルであるか否かを判定する。例えば、不良セル判定部２２５は、ライト処理において、セットエラーおよびリセットエラーのいずれかが２回以上発生した場合に、そのライト処理の対象のメモリセルが不良セルであると判定する。不良セルであると判定した場合には、不良セル判定部２２５は、ライト処理の対象の物理アドレスが不良であることをアドレス変換テーブル２２４に記載する。
【００４７】
一方、不良セルでないと判定した場合には、不良セル判定部２２５は、エラーの種類に基づいてリセットリトライコマンド発行部２２６およびセットリトライコマンド発行部２２７のいずれかにエラーの発生を通知する。具体的には、不良セル判定部２２５は、リセットエラーであれば、リセットエラーの発生をリセットリトライコマンド発行部２２６に通知し、セットエラーであれば、セットエラーの発生をセットリトライコマンド発行部２２７に通知する。
【００４８】
リセットリトライコマンド発行部２２６は、リセットエラーが発生した場合にリセットリトライコマンドを発行するものである。リセットリトライコマンドは、リセット処理が行われたメモリセルにおいて、セット処理の後にリセット処理を再度実行するように指示するコマンドである。リセットリトライコマンド発行部２２６は、発行したリセットリトライコマンドをＮＶＲＡＭ３００にメモリインターフェース２３０を介して供給する。
【００４９】
セットリトライコマンド発行部２２７は、セットエラーが発生した場合にセットリトライコマンドを発行するものである。セットリトライコマンドは、セット処理が行われたメモリセルにおいて、リセット処理の後にセット処理を再度実行するように指示するコマンドである。セットリトライコマンド発行部２２７は、発行したセットリトライコマンドをＮＶＲＡＭ３００にメモリインターフェース２３０を介して供給する。なお、リセットリトライコマンド発行部２２６は、特許請求の範囲に記載の第１のコマンド発行部の一例である。
【００５０】
なお、図４において、ライトコマンド、リセットリトライコマンド、および、セットリトライコマンドは、記載の便宜上、別々の信号線を介して転送されるように図示されているが、実際にはこれらは同じ信号線において転送される。また、リセットリトライコマンド発行部２２６およびセットリトライコマンド発行部２２７をメモリ制御部２００に設ける構成としているが、これらをホストコンピュータ１００に設ける構成としてもよい。
【００５１】
図５は、第１の実施の形態におけるステータスのデータ構造の一例を示す図である。ステータスは、例えば、７ビットのデータから構成される。ステータスの第０ビットは、エラーが発生したか否かを示す。例えば、ライト処理またはリード処理が正常に終了した場合には、第０ビットに「０」の値が設定され、エラーが発生した場合には「１」の値が設定される。ステータスの第１ビットは、ライト処理において生じたエラーの種類を示す。例えば、セットエラーが生じた場合には、第１ビットに「０」の値が設定され、リセットエラーが発生した場合には「１」の値が設定される。
【００５２】
また、ステータスの第６ビットは、ＮＶＲＡＭ３００がビジー状態であるか否かを示す。例えば、ビジー状態である場合には第６ビットに「０」の値が設定され、レディ状態である場合には「１」の値が設定される。ステータスの第７ビットは、ＮＶＲＡＭ３００が保護されているか否かを示す。ここで、「保護されている」とは、ＮＶＲＡＭ３００に対するライトデータの書込みが禁止されていることを意味する。例えば、保護されている場合には第７ビットに「０」の値が設定され、保護されていない場合には「１」の値が設定される。
【００５３】
なお、エラーがセットエラーであるかリセットエラーであるかを示す情報を含むのであれば、ステータスのデータ構造は、図５に例示した構成に限定されない。
【００５４】
図６は、第１の実施の形態におけるアドレス変換テーブル２２４の一構成例を示す図である。このアドレス変換テーブル２２４には、論理アドレスと物理アドレスとが対応付けて記載される。また、物理アドレスの各々には、物理アドレスが不良であるか否かを示す情報が記載される。例えば、物理アドレスが不良アドレスでない場合には、その物理アドレスに対応付けて「０」の値が記載され、不良アドレスである場合には「１」の値が記載される。なお、物理アドレスごとに、不良であるか否かを示す情報を対応付けたテーブルを、論理アドレスおよび物理アドレスを対応づけたテーブルと別に設けてもよい。
【００５５】
図７は、第１の実施の形態におけるＮＶＲＡＭ制御回路３２０の一構成例を示すブロック図である。このＮＶＲＡＭ制御回路３２０は、ライト制御部３２１、リセットリトライ制御部３２２、セットリトライ制御部３２３、リセット処理部３２４、セット処理部３２５、閾値記憶部３２６、および、ステータス生成部３２７を備える。
【００５６】
ライト制御部３２１は、ライトコマンドに従って、リセット処理およびセット処理を順に実行させるものである。このライト制御部３２１は、制御インターフェース３１０を介してライトコマンドを受け取った場合には、そのコマンドに従って、リセット処理部３２４を制御してリセット処理を実行させる。この制御において、ライト制御部３２１は、リセット処理を指示するリセットコマンドを発行してリセット処理部３２４に供給する。そして、ライト制御部３２１は、セット処理部３２５を制御してセット処理を実行させる。この制御において、ライト制御部３２１は、セット処理を指示するセットコマンドを発行してセット処理部３２５に供給する。
【００５７】
なお、ライト制御部３２１は、リセット処理およびセット処理のうち、リセット処理を先に実行させているが、逆に、セット処理を先に実行させてもよい。また、セットエラーおよびリセットエラーの各々の発生確率のうち、いずれの方が高いかが判明している場合には、ライト制御部３２１は、それらの発生確率に基づいてリセット処理およびセット処理の順番を決定してもよい。具体的には、ライト制御部３２１は、リセットエラーの発生確率がセットエラーより高い場合には、リセット処理を先に実行させ、セットエラーの発生確率がリセットエラーより高い場合には、セット処理を先に実行させる。エラー発生確率の高い方の処理を先に実行することにより、エラーの発生からリトライ処理の開始までの時間を短縮することができる。
【００５８】
リセットリトライ制御部３２２は、リセットリトライコマンドに従って、セット処理およびリセット処理を順に実行させるものである。このリセットリトライ制御部３２２は、制御インターフェース３１０を介してリセットリトライコマンドを受け取った場合には、リセット処理が実行されたメモリセルにおいて、セットコマンドによりセット処理部３２５を制御してセット処理を実行させる。そして、リセットリトライ制御部３２２は、そのメモリセルにおいて、リセットコマンドによりリセット処理部３２４にリセット処理を再度実行させる。なお、リセットリトライ制御部３２２は、特許請求の範囲に記載の第１のリトライ制御部の一例である。
【００５９】
セットリトライ制御部３２３は、セットリトライコマンドに従って、リセット処理およびセット処理を順に実行させるものである。このセットリトライ制御部３２３は、制御インターフェース３１０を介してセットリトライコマンドを受け取った場合には、セット処理が実行されたメモリセルにおいて、リセットコマンドによりリセット処理部３２４にリセット処理を実行させる。そして、セットリトライ制御部３２３は、そのメモリセルにおいて、セットコマンドによりセット処理部３２５を制御してセット処理を再度実行させる。なお、セットリトライ制御部３２３は、特許請求の範囲に記載の第２のリトライ制御部の一例である。
【００６０】
リセット処理部３２４は、ライト制御部３２１、リセットリトライ制御部３２２またはセットリトライ制御部３２３の制御に従って、リセット処理を実行するものである。リセット処理部３２４は、高抵抗閾値Ｒ_ｒｅｓｅｔを閾値記憶部３２６から取得し、その閾値を基準としてプレリードを行い、プレリードしたデータに基づいてメモリセルのリセットを実行する。そして、リセット処理部３２４は、リセットしたメモリセルから高抵抗閾値Ｒ_ｒｅｓｅｔを基準としてデータを読み出し、ベリファイを行う。リセット処理部３２４は、ベリファイの結果、リセット対象のメモリセルのいずれかがリセットされていなければ、リセットエラーが発生したものと判断する。リセット処理部３２４は、エラーの発生の有無を含む実行結果をステータス生成部３２７に通知する。なお、リセット処理部３２４は、特許請求の範囲に記載の第１の書換え処理部の一例である。
【００６１】
セット処理部３２５は、ライト制御部３２１、リセットリトライ制御部３２２またはセットリトライ制御部３２３の制御に従って、セット処理を実行するものである。セット処理部３２５は、低抵抗閾値Ｒ_ｓｅｔを閾値記憶部３２６から取得し、その閾値を基準としてプレリードを行い、プレリードしたデータに基づいてメモリセルのセットを実行する。そして、セット処理部３２５は、セットしたメモリセルから低抵抗閾値Ｒ_ｓｅｔを基準としてデータを読み出し、ベリファイを行う。セット処理部３２５は、ベリファイの結果、セット対象のメモリセルのいずれかがセットされていなければ、セットエラーが発生したものと判断する。セット処理部３２５は、エラーの発生の有無を含む実行結果をステータス生成部３２７に通知する。なお、セット処理部３２５は、特許請求の範囲に記載の第２の書換え処理部の一例である。
【００６２】
閾値記憶部３２６は、低抵抗閾値Ｒ_ｓｅｔおよび高抵抗閾値Ｒ_ｒｅｓｅｔを記憶するものである。
【００６３】
ステータス生成部３２７は、リセット処理部３２４およびセット処理部３２５の実行結果に基づいてステータスを生成するものである。ステータス生成部３２７は、リセット処理部３２４またはセット処理部３２５においてエラーが検出されなかった場合には、正常終了を記載したステータスを生成する。一方、ステータス生成部３２７は、リセット処理部３２４においてエラーが発生した場合には、リセットエラーを記載したステータスを生成し、セット処理部３２５においてエラーが発生した場合には、セットエラーを記載したステータスを生成する。そして、ステータス生成部３２７は、生成したステータスをメモリ制御部２００に制御インターフェース３１０を介して供給する。
【００６４】
また、ＮＶＲＡＭ制御回路３２０は、リードコマンドを受け取った場合には、そのコマンドに従ってリード処理を実行する。リード処理を実行する回路等は、図７において省略されている。
【００６５】
［メモリ制御部の動作例］
図８は、第１の実施の形態におけるメモリ制御部２００の動作の一例を示すフローチャートである。この動作は、例えば、メモリ制御部２００がホストコンピュータ１００からライトコマンドを受け取った場合に開始する。なお、リードコマンドを受け取った場合のメモリ制御部２００の動作は図８において省略されている。
【００６６】
メモリ制御部２００におけるコマンドデコーダ２２１は、ライトコマンドをデコードしてＮＶＲＡＭ３００に転送する（ステップＳ９０１）。メモリ制御部２００における不良セル判定部２２５は、ＮＶＲＡＭ３００からステータスを受け取り、そのステータスに基づいてリセット処理またはセット処理においてエラーが発生したか否かを判断する（ステップＳ９０２）。エラーが発生した場合には（ステップＳ９０２：Ｙｅｓ）、不良セル判定部２２５は、その最初に発生したエラーがリセットエラーであるか否かを判断する（ステップＳ９０３）。
【００６７】
最初のエラーがリセットエラーである場合には（ステップＳ９０３：Ｙｅｓ）、メモリ制御部２００におけるリセットリトライコマンド発行部２２６は、リセットリトライコマンドを発行する（ステップＳ９０４）。そして、不良セル判定部２２５は、ＮＶＲＡＭ３００から再度ステータスを受け取り、リセット処理またはセット処理においてエラーが発生したか否かを判断する（ステップＳ９０５）。不良セル判定部２２５は、２回目に発生したエラーがリセットエラーであるか否かを判断する（ステップＳ９０６）。
【００６８】
２回目のエラーがリセットエラーでない場合には（ステップＳ９０６：Ｎｏ）、メモリ制御部２００におけるセットリトライコマンド発行部２２７は、セットリトライコマンドを発行する（ステップＳ９０７）。そして、不良セル判定部２２５は、ＮＶＲＡＭ３００から再度ステータスを受け取り、リセット処理またはセット処理においてエラーが発生したか否かを判断する（ステップＳ９０８）。３回目のエラーが発生した場合（ステップＳ９０８：Ｙｅｓ）、または、２回目のエラーがリセットエラーであった場合（ステップＳ９０６：Ｙｅｓ）、不良セル判定部２２５は、ライト処理の対象のメモリセルを不良セルであると判定する。不良セル判定部２２５は、不良セルに対応する物理アドレスを不良アドレスとして、アドレス変換テーブル２２４に登録する（ステップＳ９１４）。
【００６９】
最初のエラーがリセットエラーでない場合には（ステップＳ９０３：Ｎｏ）、セットリトライコマンド発行部２２７は、セットリトライコマンドを発行する（ステップＳ９０９）。そして、不良セル判定部２２５は、ＮＶＲＡＭ３００から再度ステータスを受け取り、リセット処理またはセット処理においてエラーが発生したか否かを判断する（ステップＳ９１０）。エラーが発生した場合には（ステップＳ９１０：Ｙｅｓ）、不良セル判定部２２５は、２回目に発生したエラーがセットエラーであるか否かを判断する（ステップＳ９１１）。
【００７０】
２回目のエラーがセットエラーでない場合には（ステップＳ９１１：Ｎｏ）、リセットリトライコマンド発行部２２６は、リセットリトライコマンドを発行する（ステップＳ９１２）。そして、不良セル判定部２２５は、ＮＶＲＡＭ３００から再度ステータスを受け取り、リセット処理またはセット処理においてエラーが発生したか否かを判断する（ステップＳ９１３）。３回目のエラーが発生した場合（ステップＳ９１３：Ｙｅｓ）、または、２回目のエラーがセットエラーであった場合（ステップＳ９１１：Ｙｅｓ）、不良セル判定部２２５は、ライト処理の対象のメモリセルが不良セルであると判定する（ステップＳ９１４）。
【００７１】
ステップＳ９０２、Ｓ９０５、Ｓ９０８、Ｓ９１０、または、Ｓ９１３においてエラーが発生しなかった場合、または、ステップＳ９１４の実行後、メモリ制御部２００は動作を終了する。
【００７２】
［ＮＶＲＡＭの動作例］
図９は、ＮＶＲＡＭ３００の動作の一例を示すフローチャートである。この動作は、例えば、ＮＶＲＡＭ３００に電源が投入されたときに開始する。なお、リードコマンドを受け取った場合のＮＶＲＡＭ３００の動作は図９において省略されている。
【００７３】
ＮＶＲＡＭ３００は、メモリ制御部２００からライトコマンドを受け取ったか否かを判断する（ステップＳ９２１）。ライトコマンドを受け取った場合には（ステップＳ９２１：Ｙｅｓ）、ＮＶＲＡＭ３００におけるライト制御部３２１は、ライトデータをメモリセルに書き込むためのライト処理を実行する（Ｓ９３０）。
【００７４】
ライトコマンドを受け取っていない場合（ステップＳ９２１：Ｎｏ）、または、ステップＳ９３０の実行後、ＮＶＲＡＭ３００はメモリ制御部２００からリセットリトライコマンドを受け取ったか否かを判断する（ステップＳ９２２）。リセットリトライコマンドを受け取った場合には（ステップＳ９２２：Ｙｅｓ）、ＮＶＲＡＭ３００におけるリセットリトライ制御部３２２は、リセット処理を再度実行させるためのリセットリトライ処理を実行する（Ｓ９６０）。
【００７５】
リセットリトライコマンドを受け取っていない場合（ステップＳ９２２：Ｎｏ）、または、ステップＳ９６０の実行後、ＮＶＲＡＭ３００はメモリ制御部２００からセットリトライコマンドを受け取ったか否かを判断する（ステップＳ９２３）。セットリトライコマンドを受け取った場合には（ステップＳ９２３：Ｙｅｓ）、ＮＶＲＡＭ３００におけるセットリトライ制御部３２３は、セット処理を再度実行させるためのセットリトライ処理を実行する（Ｓ９７０）。セットリトライコマンドを受け取っていない場合（ステップＳ９２３：Ｎｏ）、または、ステップＳ９７０の実行後、ＮＶＲＡＭ３００はステップＳ９２１に戻る。
【００７６】
図１０は、第１の実施の形態におけるライト処理の一例を示すフローチャートである。ライト制御部３２１は、リセット処理部３２４にリセット処理の実行を指示する。リセット処理部３２４は、まず、ライトデータを取得して保持する（ステップＳ９３１）。また、リセット処理部３２４は、高抵抗閾値Ｒ_ｒｅｓｅｔを基準として、ライト処理の対象のアドレスにおいてプレリードを行う（ステップＳ９３２）。リセット処理部３２４は、プレリードしたプレリードデータと、ライトデータとにおいて対応するビットを比較して、リセットマスクデータを生成する（ステップＳ９３３）。このリセットマスクデータは、ライトデータにおいてリセットされ、かつ、プレリードデータにおいてセットされているビットについてはリセットする旨を示し、それ以外のビットについてはマスクする旨を示す。リセット処理部３２４は、リセットマスクデータに基づいてリセット処理を実行する（ステップＳ９４０）。
【００７７】
ライト制御部３２１は、リセットエラーが発生したか否かを判断する（ステップＳ９３４）。リセットエラーが発生しなかった場合には（ステップＳ９３４：Ｎｏ）、ライト制御部３２１は、セット処理部３２５にセット処理の実行を指示する。セット処理部３２５は、リセット後のプレリードデータとライトデータとにおいて、対応するビットを比較してセットマスクデータを生成する（ステップＳ９３５）。このセットマスクデータは、ライトデータにおいてセットされ、かつ、リセット後のプレリードデータにおいてリセットされているビットについてはセットする旨を示し、それ以外のビットについてはマスクする旨を示す。セット処理部３２５は、セットマスクデータに基づいてセット処理を実行する（ステップＳ９５０）。
【００７８】
ステータス生成部３２７は、セットエラーが発生したか否かを判断する（ステップＳ９３７）。セットエラーが発生した場合には（ステップＳ９３７：Ｙｅｓ）、ステータス生成部３２７は、セットエラーの発生を記載したステータスを生成してメモリ制御部２００に転送する（ステップＳ９３８）。一方、リセットエラーが発生した場合には（ステップＳ９３４：Ｙｅｓ）、ステータス生成部３２７は、リセットエラーの発生を記載したステータスを生成してメモリ制御部２００に転送する（ステップＳ９３６）。セットエラーが発生しなかった場合（ステップＳ９３７：Ｎｏ）、もしくは、ステップＳ９３６またはＳ９３８の実行後、ライト制御部３２１はライト処理を終了する。
【００７９】
図１１は、第１の実施の形態におけるリセット処理の一例を示すフローチャートである。リセット処理部３２４は、リセットマスクデータによりリセットする旨が示されたビットのみを「０」から「１」に書き換える処理（リセット制御処理）を行う（ステップＳ９４１）。そして、リセット処理部３２４は、リセットしたメモリセルから高抵抗閾値Ｒ_ｒｅｓｅｔを基準としてデータを読み出し、リセット対象のメモリセルが全てリセットされたか否かを検証（すなわち、ベリファイ）する（ステップＳ９４２）。
【００８０】
リセット処理部３２４は、リセット対象のメモリセルが全てリセットされた（すなわち、リセットが成功した）か否かを判断する（ステップＳ９４３）。リセットが失敗した場合には（ステップＳ９４３：Ｎｏ）、リセット処理部３２４は、タイムアウトしたか否かを判断する（ステップＳ９４４）。ここで、タイムアウトとは、リセットまたはセットの失敗回数が一定数以上となったことを意味する。
【００８１】
タイムアウトしていない場合には（ステップＳ９４４：Ｎｏ）、リセット処理部３２４は、ステップＳ９４１に戻る。タイムアウトした場合には（ステップＳ９４４：Ｙｅｓ）、リセット処理部３２４は、リセットエラーが発生したものと判断する（ステップＳ９４５）。リセットが成功した場合（ステップＳ９４３：Ｙｅｓ）、または、ステップＳ９４５の実行後、リセット処理部３２４はリセット処理を終了する。
【００８２】
図１２は、第１の実施の形態におけるセット処理の一例を示すフローチャートである。セット処理部３２５は、セットマスクデータによりセットする旨が示されたビットのみを「１」から「０」に書き換える処理（セット制御処理）を行う（ステップＳ９５１）。そして、セット処理部３２５は、セットしたメモリセルから低抵抗閾値Ｒ_ｓｅｔを基準としてデータを読み出し、セット対象のメモリセルが全てセットされたか否かを検証（ベリファイ）する（ステップＳ９５２）。
【００８３】
セット処理部３２５は、セット対象のメモリセルが全てセットされた（すなわち、セットが成功した）か否かを判断する（ステップＳ９５３）。セットが失敗した場合には（ステップＳ９５３：Ｎｏ）、セット処理部３２５は、タイムアウトしたか否かを判断する（ステップＳ９５４）。
【００８４】
タイムアウトしていない場合には（ステップＳ９５４：Ｎｏ）、セット処理部３２５は、ステップＳ９５１に戻る。タイムアウトした場合には（ステップＳ９５４：Ｙｅｓ）、セット処理部３２５は、セットエラーが発生したものと判断する（ステップＳ９５５）。セットが成功した場合（ステップＳ９５３：Ｙｅｓ）、または、ステップＳ９５５の実行後、セット処理部３２５はセット処理を終了する。
【００８５】
図１３は、第１の実施の形態におけるリセットリトライ処理の一例を示すフローチャートである。リセットリトライ制御部３２２は、セット処理部３２５にセット処理の実行をセットコマンドにより指示する。リセットに失敗したメモリセルは、一旦セットすることにより、データ保持特性が改善して、再度のリセットに成功する確率が高くなる。以下、リセットリトライ処理において、データ保持特性の改善のために実行されるセット処理をリフレッシュセット処理と称する。セット処理部３２５は、リセットされたメモリセルにおいて、低抵抗閾値Ｒ_ｓｅｔを基準としてプレリードを行う（ステップＳ９６１）。セット処理部３２５は、プレリードしたリセット対象のビットのうち、リセットされているビットのみをセットするためのセットマスクデータを生成する（ステップＳ９６２）。セット処理部３２５は、セットマスクデータに基づいてセット処理（リフレッシュセット処理）を実行する（ステップＳ９５０）。
【００８６】
リセットリトライ制御部３２２は、セットエラーが発生したか否かを判断する（ステップＳ９６３）。セットエラーが発生しなかった場合には（ステップＳ９６３：Ｎｏ）、リセットリトライ制御部３２２は、リセット処理部３２４に再度のリセット処理の実行をリセットコマンドにより指示する。リセット処理部３２４は、ライトデータを取得する（ステップＳ９６４）。リセット処理部３２４は、セットされたデータとライトデータとからリセットマスクデータを生成する（ステップＳ９６６）。リセット処理部３２４は、リセットマスクデータに基づいてリセット処理を実行する（ステップＳ９４０）。
【００８７】
ステータス生成部３２７は、リセットエラーが発生したか否かを判断する（ステップＳ９６７）。リセットエラーが発生した場合には（ステップＳ９６７：Ｙｅｓ）、ステータス生成部３２７は、リセットエラーの発生を記載したステータスを生成してメモリ制御部２００に転送する（ステップＳ９６８）。一方、セットエラーが発生した場合には（ステップＳ９６３：Ｙｅｓ）、ステータス生成部３２７は、セットエラーの発生を記載したステータスを生成してメモリ制御部２００に転送する（ステップＳ９６５）。リセットエラーが発生しなかった場合（ステップＳ９６７：Ｎｏ）、もしくは、ステップＳ９６５またはＳ９６８の実行後、リセットリトライ制御部３２２はリセットリトライ処理を終了する。
【００８８】
図１４は、第１の実施の形態におけるセットリトライ処理の一例を示すフローチャートである。セットリトライ制御部３２３は、リセット処理部３２４にリセット処理の実行をリセットコマンドにより指示する。セットに失敗したメモリセルは、一旦リセットすることにより、データ保持特性が改善して、再度のセットに成功する確率が高くなる。以下、セットリトライ処理においてデータ保持特性の改善のために実行されるリセット処理を「リフレッシュリセット処理」と称する。また、リフレッシュリセット処理およびリフレッシュセット処理を「リフレッシュ処理」と称する。リセット処理部３２４は、セットされたメモリセルにおいて、高抵抗閾値Ｒ_ｒｅｓｅｔを基準としてプレリードを行う（ステップＳ９７１）。リセット処理部３２４は、プレリードしたセット対象のビットのうち、セットされているビットのみをリセットするためのリセットマスクデータを生成する（ステップＳ９７２）。リセット処理部３２４は、リセットマスクデータに基づいてリセット処理（リフレッシュリセット処理）を実行する（ステップＳ９４０）。
【００８９】
セットリトライ制御部３２３は、リセットエラーが発生したか否かを判断する（ステップＳ９７３）。リセットエラーが発生しなかった場合には（ステップＳ９７３：Ｎｏ）、セットリトライ制御部３２３は、セット処理部３２５に再度のセット処理の実行をセットコマンドにより指示する。セット処理部３２５は、ライトデータを取得する（ステップＳ９７４）。セット処理部３２５は、リセットされたデータとライトデータとからセットマスクデータを生成する（ステップＳ９７６）。セット処理部３２５は、セットマスクデータに基づいてセット処理を実行する（ステップＳ９５０）。
【００９０】
ステータス生成部３２７は、セットエラーが発生したか否かを判断する（ステップＳ９７７）。セットエラーが発生した場合には（ステップＳ９７７：Ｙｅｓ）、ステータス生成部３２７は、セットエラーの発生を記載したステータスを生成してメモリ制御部２００に転送する（ステップＳ９７８）。一方、リセットエラーが発生した場合には（ステップＳ９７３：Ｙｅｓ）、ステータス生成部３２７は、リセットエラーの発生を記載したステータスを生成してメモリ制御部２００に転送する（ステップＳ９７５）。セットエラーが発生しなかった場合（ステップＳ９７７：Ｎｏ）、もしくは、ステップＳ９７５またはＳ９７８の実行後、セットリトライ制御部３２３はセットリトライ処理を終了する。
【００９１】
図１５は、第１の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。メモリシステムにおけるメモリ制御部２００は、ホストコンピュータ１００から受け取ったライトコマンドをデコードしてＮＶＲＡＭ３００に転送する。そして、ＮＶＲＡＭ３００は、そのライトコマンドに従って、リセット処理を実行する（ステップＳ９４０）。
【００９２】
リセット処理においてリセットエラーが生じた場合には、ＮＶＲＡＭ３００は、リセットエラーを記載したステータスをメモリ制御部２００に転送する。メモリ制御部２００は、リセットエラーに応じて、リセットリトライコマンドを発行してＮＶＲＡＭ３００に転送する。ＮＶＲＡＭ３００は、そのリセットリトライコマンドに従って、リセットされたメモリセルにおいてセット処理（リフレッシュセット処理）を実行する（ステップＳ９５０）。次いで、ＮＶＲＡＭ３００は、リセットされたメモリセルを再度リセットするためのリセット処理を実行する（ステップＳ９４０）。
【００９３】
再度のリセット処理が正常に終了した場合には、ＮＶＲＡＭ３００は、セット処理を実行する（ステップＳ９５０）。セット処理においてセットエラーが生じた場合には、ＮＶＲＡＭ３００は、セットエラーを記載したステータスをメモリ制御部２００に転送する。メモリ制御部２００は、セットエラーに応じて、セットリトライコマンドを発行してＮＶＲＡＭ３００に転送する。ＮＶＲＡＭ３００は、そのセットリトライコマンドに従って、リセットされたメモリセルにおいてリセット処理（リフレッシュリセット処理）を実行する（ステップＳ９４０）。次いで、ＮＶＲＡＭ３００は、セットされたメモリセルを再度セットするためのリセット処理を実行する（ステップＳ９５０）。
【００９４】
このように、ＮＶＲＡＭ３００が、メモリセルを再度リセットする前にセット（リフレッシュセット処理）することにより、リセットエラーが発生したメモリセルのデータ保持特性が改善しうる。同様に、ＮＶＲＡＭ３００が、メモリセルを再度セットする前にリセット（リフレッシュリセット処理）することによりセットエラーが発生したメモリセルのデータ保持特性が改善しうる。したがって、リフレッシュ処理を行わない場合と比較して、再度のリセットまたはセットに成功する確率が高くなり、不良セルの増大が抑制される。
【００９５】
図１６は、第１の実施の形態におけるリセットリトライ処理が実行されたデータの具体例を示す図である。ＮＶＲＡＭ３００が、メモリ制御部２００から「０ｂ１１００１１１１」のライトデータの書込みを指示するライトコマンドを受け取った場合を想定する。ここで、先頭に「０ｂ」を付した数値は、その数値が、２進表記であることを意味する。この場合、ＮＶＲＡＭ３００は高抵抗閾値Ｒ_ｒｅｓｅｔを基準としてプレリードを行う。ライトコマンドにより指示されたアドレスに既に書き込まれたデータＤとして「０ｂ１１１１００００」がプレリードされたものとする。このデータＤにおいて「０」であり、かつ、ライトデータにおいて「１」であるビットは、５乃至８ビット目である。ＮＶＲＡＭ３００は、これらの５乃至８ビット目をリセットするためのリセットマスクデータ「ＭＭＭＭＲＲＲＲ」を生成する。ここで「Ｒ」はリセット対象のビットを、「Ｍ」はマスクするビットを示す。
【００９６】
ＮＶＲＡＭ３００は、リセットマスクデータに基づいてリセット処理を実行する。リセとした後、ＮＶＲＡＭ３００は、高抵抗閾値Ｒ_ｒｅｓｅｔを基準としてベリファイを行う。ベリファイにおいて、「０ｂ１１１１０００１」のデータが読み出されたものとする。リセット対象のビットのうち、８ビット目がリセットされていないため、ＮＶＲＡＭ３００は、リセットエラーが発生したと判断する。ここで、高抵抗閾値Ｒ_ｒｅｓｅｔを基準とした場合、安定高抵抗状態（ｓＨＲＳ）のメモリセルから「１」の値が読み出され、それ以外のメモリセルからは「０」の値が読み出される。したがって、「１」の値の８ビット目が読み出されたメモリセル５１４は、安定高抵抗状態（ｓＨＲＳ）である。一方、「０」の値の５乃至７ビット目が読み出されたメモリセルは、安定低抵抗状態（ｓＬＲＳ）、不安定低抵抗状態（ｕＬＲＳ）、および、不安定高抵抗状態（ｕＨＲＳ）のうちのいずれかである。例えば、５ビット目のメモリセル５１１はｓＬＲＳであり、６ビット目のメモリセル５１２はｕＬＲＳであり、７ビット目のメモリセル５１３はｕＨＲＳである。
【００９７】
ＮＶＲＡＭ３００は、リセットエラーに応じて発行されたリセットリトライコマンドに従って、低抵抗閾値Ｒ_ｓｅｔを基準としてプレリードを行う。低抵抗閾値Ｒ_ｓｅｔを基準とした場合、ｓＬＲＳの状態にあるメモリセルから「０」の値が読み出され、それ以外のメモリセルからは「１」の値が読み出される。５乃至８ビット目のメモリセル５１１乃至５１４のうち、ｓＬＲＳの状態にあるメモリセルは５１１のみであるから、５ビット目は「０」の値、６乃至８ビット目は「１」の値が読み出される。したがって、プレリードにより「０ｂ１１１１０１１１」のデータＤが読み出される。
【００９８】
ＮＶＲＡＭ３００は、リセットマスクデータにおいてリセット対象とされたビットであり、かつ、データＤにおいてリセットされているビットをセット対象とするセットマスクデータ「ＭＭＭＭＭＳＳＳ」を生成する。ここで「Ｓ」はセット対象のビットを、「Ｍ」はマスクするビットを示す。
【００９９】
ＮＶＲＡＭ３００は、セットマスクデータに基づいてセット処理を実行する。この結果、リセット対象のメモリセルのうち、ｕＬＲＳ、ｕＨＲＳ、および、ｓＨＲＳの状態にあるメモリセルがセットされてｓＬＲＳに遷移する。ここで、セットマスクデータにおいてセット状態（ｓＬＲＳ）のビットはマスクされているため、セット済みのメモリセルはセットされない。一般に、不揮発性メモリの書き換え回数には制限があるため、セットの必要がないメモリセルをマスクしてセット処理を行うことにより、不揮発性メモリの寿命を延ばすことができる。
【０１００】
セット処理が正常終了した場合には、データＤは「０ｂ１１１１００００」に書き換えられる。ＮＶＲＡＭ３００は、このデータＤとライトデータとからリセットマスクデータ「ＭＭＭＭＲＲＲＲ」を生成し、リセットマスクデータに基づいて再度リセット処理を実行する。再度のリセット処理が正常終了した場合には、データＤは「０ｂ１１１１１１１１」に書き換えられる。この結果、リセット対象の５乃至８ビット目に対応するメモリセルは、全てｓＨＲＳに遷移する。
【０１０１】
図１７は、第１の実施の形態におけるセット処理が実行されたデータの具体例を示す図である。ＮＶＲＡＭ３００は、リセット後の「０ｂ１１１１１１１１」のデータＤとライトデータとからセットマスクデータ「ＭＭＳＳＭＭＭＭ」を生成する。データＤにおいて「１」であり、かつ、ライトデータにおいて「０」であるビットは、３ビット目および４ビット目であるため、これらのビットがセットマスクデータにおいてセット対象とされている。
【０１０２】
ＮＶＲＡＭ３００は、セットマスクデータに基づいてセット処理を実行する。セット処理が正常に終了した場合には、データＤは、「０ｂ１１００１１１１」に書き換えられる。これにより、ライトデータの書込みが完了する。
【０１０３】
図１８は、第１の実施の形態におけるリセットリトライ処理の際のメモリセルの状態の遷移の一例を示す図である。図１８ａは、リセットエラーが発生した場合のメモリセルの状態の一例を示す図である。メモリセル５１１、５１２、５１３、および、５１４は、リセット対象のメモリセルである。リセット処理により、メモリセル５１１は、安定低抵抗状態（ｓＬＲＳ）に遷移し、メモリセル５１２は不安定低抵抗状態（ｕＬＲＳ）に遷移したものとする。また、メモリセル５１３は、不安定高抵抗状態（ｕＨＲＳ）に遷移し、メモリセル５１４は安定高抵抗状態（ｓＨＲＳ）に遷移したものとする。ベリファイにおいては、高抵抗閾値Ｒ_ｒｅｓｅｔを基準として、ｓＨＲＳのメモリセルから「１」の値が読み出され、それ以外のメモリセルから「０」の値が読み出される。このため、ｓＨＲＳでないメモリセル５１１、５１２および５１３において、リセットエラーが検出される。
【０１０４】
図１８ｂは、リトライコマンドに従って、セット処理（リフレッシュセット処理）が実行された場合におけるメモリセルの状態の遷移の一例を示す図である。このセット処理においては、低抵抗閾値Ｒ_ｓｅｔを基準として、セット状態（ｓＬＲＳ）でないメモリセルがセットされる。この結果、ｓＬＲＳでないメモリセル５１２、５１３および５１４がセットされて、ｓＬＲＳに遷移する。
【０１０５】
図１８ｃは、リトライコマンドに従って、再度のリセット処理が実行された場合におけるメモリセルの状態の遷移の一例を示す図である。このリセット処理においては、高抵抗閾値Ｒ_ｒｅｓｅｔを基準として、リセット状態（ｓＨＲＳ）でないメモリセルがリセットされる。この結果、ｓＨＲＳでないメモリセル５１１乃至５１４がリセットされて、ｓＨＲＳに遷移する。
【０１０６】
図１８に例示したように、リセットエラーが生じたメモリセルのうち、特に、不安定な抵抗状態であるｕＬＲＳおよびｕＨＲＳが、セット処理により、安定的な抵抗状態に遷移する。このため、これらのメモリセルのデータ保持特性が改善し、リフレッシュ処理を行わない場合と比較して、再度のリセット処理が成功する可能性が向上する。
【０１０７】
このように、本技術の第１の実施の形態によれば、ＮＶＲＡＭ３００は、リセットエラーが発生した際に、セット処理を実行した後に再度リセット処理を実行するため、再度のリセット処理が成功する確率を向上させることができる。また、ＮＶＲＡＭ３００は、セットエラーが発生した際に、リセット処理を実行した後に再度セット処理を実行するため、再度のセット処理が成功する確率を向上させることができる。したがって、不良セルの増大が抑制される。
【０１０８】
＜２．第２の実施の形態＞
［ＮＶＲＡＭ制御回路の構成例］
図１９は、第２の実施の形態におけるＮＶＲＡＭ制御回路３２０の一構成例を示すブロック図である。第１の実施の形態のＮＶＲＡＭ３００は、リセットリトライ処理において、セット処理の必要のないｓＨＲＳの状態にあるメモリセルを除き、ｕＬＲＳ、ｕＨＲＳおよびｓＨＲＳの状態にあるメモリセルのみについてセット処理を行っていた。しかし、ｕＬＲＳ、ｕＨＲＳおよびｓＨＲＳのうち、リフレッシュセット処理が最も有効な抵抗状態はｕＬＲＳであり、ｕＨＲＳおよびｓＨＲＳのメモリセルはｕＬＲＳと比較してリフレッシュセット処理の有効性が低い。具体的には、ｕＨＲＳは、ｕＬＲＳと比較して抵抗値を低抵抗閾値Ｒ_ｓｅｔ以下にするために必要な制御量が大きいため、セット処理に失敗する可能性がｕＬＲＳより高い。その一方、ｕＨＲＳはｕＬＲＳよりも抵抗値を高抵抗閾値Ｒ_ｒｅｓｅｔ以上にするために必要な制御量が小さいため、再度のセット処理が成功する可能性が高い。したがって、ｕＨＲＳのメモリセルにおいては、セット処理の有効性がｕＨＲＳよりも低い。また、ｓＨＲＳは安定な抵抗状態であり、セット処理を行ってもデータの保持特性が改善しない。第２の実施の形態のＮＶＲＡＭ３００は、リフレッシュ処理が最も有効な抵抗状態のみを遷移させる点において第１の実施の形態と異なる。
【０１０９】
第２の実施の形態の閾値記憶部３２６は、境界抵抗値Ｒ_ｒｅａｄをさらに記憶する。また、第２の実施の形態のリセット処理部３２４は、閾値記憶部３２６から境界抵抗値Ｒ_ｒｅａｄをさらに取得する。そして、リセット処理部３２４は、セットされたメモリセルにおいて、境界抵抗値Ｒ_ｒｅａｄを基準としたプレリードと、高抵抗閾値Ｒ_ｒｅｓｅｔを基準としたプレリードとを行う。リセット処理部３２４は、それぞれのプレリードで読み出したデータにおいて、値が異なるビットに対してリセット処理を実行する。また、第２の実施の形態のセット処理部３２５も、境界抵抗値Ｒ_ｒｅａｄをさらに取得し、リセットされたメモリセルにおいて、境界抵抗値Ｒ_ｒｅａｄを基準としたプレリードと、低抵抗閾値Ｒ_ｓｅｔを基準としたプレリードとを行う。セット処理部３２５は、それぞれのプレリードで読み出したデータにおいて、値が異なるビットに対してセット処理を実行する。
【０１１０】
［ＮＶＲＡＭの動作例］
図２０は、第２の実施の形態におけるリセットリトライ処理の一例を示すフローチャートである。第２の実施の形態のリセットリトライ処理は、ステップＳ９８１およびＳ９８３をさらに実行し、ステップＳ９６２の代わりにステップＳ９８２を実行する点において第１の実施の形態と異なる。セット処理部３２５は、リセットされたメモリセルにおいて、境界抵抗値Ｒ_ｒｅａｄを基準としてデータをデータＤ_ｒｅａｄとしてプレリードする（ステップＳ９８１）。そして、セット処理部３２５は、低抵抗閾値Ｒ_ｓｅｔを基準としてデータをデータＤ_ｓｅｔとしてプレリードする（ステップＳ９６１）。セット処理部３２５は、これらのデータＤ_ｒｅａｄおよびＤ_ｓｅｔの差分のビットをセットするためのセットマスクデータを生成する（ステップＳ９８２）。セット処理部３２５は、そのセットマスクデータに基づいてセット処理を実行する（ステップＳ９５０）。
【０１１１】
セットエラーが発生しなかった場合には（ステップＳ９６３：Ｎｏ）、リセット処理部３２４は、高抵抗閾値Ｒ_ｒｅｓｅｔを基準としてプレリードを行う（ステップＳ９８３）。リセット処理部３２４は、ライトデータを取得し（ステップＳ９６４）、プレリードしたデータとライトデータとからリセットマスクデータを生成する（ステップＳ９６６）。リセット処理部３２４は、そのリセットマスクデータに基づいてステップＳ９４０以降の処理を実行する。
【０１１２】
図２１は、第２の実施の形態におけるセットリトライ処理の一例を示すフローチャートである。第２の実施の形態のセットリトライ処理は、ステップＳ９８４およびＳ９８６をさらに実行し、ステップＳ９７２の代わりにステップＳ９８５を実行する点において第１の実施の形態と異なる。リセット処理部３２４は、セットされたメモリセルにおいて、境界抵抗値Ｒ_ｒｅａｄを基準としてデータをデータＤ_ｒｅａｄとしてプレリードする（ステップＳ９８４）。そして、リセット処理部３２４は、高抵抗閾値Ｒ_ｒｅｓｅｔを基準としてデータをデータＤ_ｒｅｓｅｔとしてプレリードする（ステップＳ９７１）。リセット処理部３２４は、これらのデータＤ_ｒｅａｄおよびＤ_ｒｅｓｅｔの差分のビットをリセットするためのリセットマスクデータを生成する（ステップＳ９８５）。リセット処理部３２４は、そのリセットマスクデータに基づいてリセット処理を実行する（ステップＳ９４０）。
【０１１３】
リセットエラーが発生しなかった場合には（ステップＳ９７３：Ｎｏ）、セット処理部３２５は、低抵抗閾値Ｒ_ｓｅｔを基準としてプレリードを行う（ステップＳ９８６）。セット処理部３２５は、ライトデータを取得し（ステップＳ９７４）、プレリードしたデータとライトデータとからセットマスクデータを生成する（ステップＳ９７６）。セット処理部３２５は、そのセットマスクデータに基づいてステップＳ９５０以降の処理を実行する。
【０１１４】
図２２は、第２の実施の形態におけるリセットリトライ処理が実行されたデータの具体例を示す図である。第１の実施の形態と同様に、ＮＶＲＡＭ３００は、プレリードしたデータとライトデータとからリセットマスクデータを生成してリセット処理を実行する。
【０１１５】
リセットエラーが生じた場合、第２の実施形態のＮＶＲＡＭ３００は、リセットされたメモリセルにおいて、境界抵抗値Ｒ_ｒｅａｄおよび低抵抗閾値Ｒ_ｓｅｔの各々を基準としてプレリードを２回行う。各々のプレリードにより得られたデータをＤ_ｒｅａｄおよびＤ_ｓｅｔとする。境界抵抗値Ｒ_ｒｅａｄを基準とした場合、ｓＬＲＳおよびｕＬＲＳの状態にあるメモリセルから「０」の値が読み出され、それ以外のメモリセルからは「１」の値が読み出される。一方、低抵抗閾値Ｒ_ｓｅｔを基準とした場合、ｓＬＲＳの状態にあるメモリセルから「０」の値が読み出され、それ以外のメモリセルからは「１」の値が読み出される。このため、ｕＬＲＳの状態のメモリセル５１２からは、それぞれのプレリードにおいて異なる値が読み出される。したがって、Ｄ_ｒｅａｄおよびＤ_ｓｅｔを比較することにより、ｕＬＲＳの状態のメモリセルの位置を特定することができる。ＮＶＲＡＭ３００は、Ｄ_ｒｅａｄおよびＤ_ｓｅｔにおいて値が異なる６ビット目（５１２）のみをセットするためのセットマスクデータ「ＭＭＭＭＭＳＭＭ」を生成する。そして、ＮＶＲＡＭ３００は、セットマスクデータに基づいて第１の実施の形態と同様にセット処理を実行する。
【０１１６】
このように、ＮＶＲＡＭ３００は、境界抵抗値Ｒ_ｒｅａｄおよび低抵抗閾値Ｒ_ｓｅｔの各々を基準としてプレリードしたデータを比較することにより、ｕＬＲＳの状態にあるメモリセルの位置を特定することができる。ｕＬＲＳ、ｕＨＲＳおよびｓＨＲＳのうち、ｕＬＲＳは、セット処理によるリフレッシュセット処理が最も有効な状態であるが、ｕＨＲＳおよびｓＨＲＳはｕＬＲＳと比較してリフレッシュセット処理の有効性が低い。このため、ＮＶＲＡＭ３００は、セット処理の有効性の低いｕＨＲＳおよびｓＨＲＳの状態にあるメモリセルを書き換えないようにセットすることができる。この結果、メモリセルの寿命がさらに延びる。
【０１１７】
同様に、セットリトライ処理においても、ＮＶＲＡＭ３００は、境界抵抗値Ｒ_ｒｅａｄおよび高抵抗閾値Ｒ_ｒｅｓｅｔの各々を基準としてプレリードしたデータを比較することにより、リセット処理が最も有効なメモリセルの位置を特定することができる。ＮＶＲＡＭ３００は、リセット処理の有効性の低いメモリセルを書き換えないようにリセットすることにより、メモリセルの寿命をさらに延ばすことができる。
【０１１８】
図２３は、第２の実施の形態におけるリセットリトライ処理の際のメモリセルの状態の遷移の一例を示す図である。図２３ａは、リセットエラーが発生した場合のメモリセルの状態の一例を示す図である。第１の実施の形態と同様に、リセット処理により、メモリセル５１１は、安定低抵抗状態（ｓＬＲＳ）に遷移し、メモリセル５１２は不安定低抵抗状態（ｕＬＲＳ）に遷移したものとする。また、メモリセル５１３は、不安定高抵抗状態（ｕＨＲＳ）に遷移し、メモリセル５１４は安定高抵抗状態（ｓＨＲＳ）に遷移したものとする。高抵抗閾値Ｒ_ｒｅｓｅｔを基準としたベリファイにより、ｓＨＲＳでないメモリセル５１１、５１２および５１３において、リセットエラーが検出される。
【０１１９】
図２３ｂは、リトライコマンドに従って、リフレッシュセット処理が実行された場合におけるメモリセルの状態の遷移の一例を示す図である。このセット処理においては、境界抵抗値Ｒ_ｒｅａｄと低抵抗閾値Ｒ_ｓｅｔとを基準としてプレリードしたデータのそれぞれを比較することにより、セット処理が最も有効なｕＬＲＳの状態にあるメモリセル５１２が特定される。そして、このｕＬＲＳの状態にあるメモリセル５１２のみがセットされて、ｓＬＲＳに遷移する。
【０１２０】
図２３ｃは、リトライコマンドに従って、再度のリセット処理が実行された場合におけるメモリセルの状態の遷移の一例を示す図である。このリセット処理においては、高抵抗閾値Ｒ_ｒｅｓｅｔを基準として、リセット状態（ｓＨＲＳ）でないメモリセルがリセットされる。この結果、ｓＨＲＳでないメモリセル５１１乃至５１３がリセットされて、ｓＨＲＳに遷移する。
【０１２１】
図２３に例示したように、境界抵抗値Ｒ_ｒｅａｄと低抵抗閾値Ｒ_ｓｅｔとを基準としてプレリードしたデータのそれぞれを比較することにより、セット処理が最も有効なｕＬＲＳの状態にあるメモリセル５１１が特定される。このため、ＮＶＲＡＭ３００は、セット処理の有効性の低いメモリセルをマスクしてセットすることができる。この結果、セットの有効性の低いメモリセルの寿命をさらに延ばすことができる。
【０１２２】
このように、本技術の第２の実施の形態によれば、ＮＶＲＡＭ３００は、境界抵抗値と低抵抗閾値とを基準として読み出したデータの各々を比較することにより、セットが比較的有効でないメモリセルをマスクしてセット処理を行うことができる。また、ＮＶＲＡＭ３００は、境界抵抗値と高抵抗閾値とを基準として読み出したデータの各々を比較することにより、リセットが比較的有効でないメモリセルをマスクしてリセット処理を行うことができる。マスクにより、リセットの有効性の低いメモリセルがリセットされることがなくなるため、そのメモリセルの書換え回数が低減する。したがって、第１の実施の形態と比較して、リセットの有効性の低いメモリセルの寿命がさらに延びる。
【０１２３】
＜３．第３の実施の形態＞
［メモリ制御回路の構成例］
図２４は、第３の実施の形態におけるメモリ制御回路２２０の一構成例を示すブロック図である。第１の実施の形態では、ＮＶＲＡＭ３００が、リセットリトライおよびセットリトライの制御を行っていたが、これらの制御をメモリ制御部２００が行うこともできる。第３の実施の形態のメモリ制御部２００は、ＮＶＲＡＭ３００の代わりにリセットリトライおよびセットリトライの制御を実行する点において第１の実施の形態と異なる。具体的には、第３の実施の形態のメモリ制御回路２２０は、リセットリトライコマンド発行部２２６およびセットリトライコマンド発行部２２７の代わりにリセットリトライ制御部２２８およびセットリトライ制御部２２９を備える。これらのリセットリトライ制御部２２８およびセットリトライ制御部２２９の構成は、第１の実施の形態におけるＮＶＲＡＭ３００内のリセットリトライ制御部３２２およびセットリトライ制御部３２３と同様である。なお、図２４において、ライトコマンド、リセットコマンド、および、セットコマンドは、記載の便宜上、別々の信号線を介して転送されるように図示されているが、実際にはこれらは同じ信号線において転送される。
【０１２４】
［ＮＶＲＡＭ制御回路の構成例］
図２５は、第３の実施の形態におけるＮＶＲＡＭ制御回路３２０の一構成例を示すブロック図である。第３の実施の形態のＮＶＲＡＭ制御回路３２０は、リセットリトライ制御部３２２およびセットリトライ制御部３２３を備えない点において第１の実施の形態と異なる。
【０１２５】
［メモリ制御部の動作例］
図２６は、第３の実施の形態におけるメモリ制御部２００の動作の一例を示すフローチャートである。第３の実施の形態のメモリ制御部２００の動作は、ステップＳ９０４およびＳ９１２の代わりにステップＳ９９０を実行し、ステップＳ９０７およびＳ９０９の代わりにステップＳ９９５を実行する点において第１の実施の形態と異なる。
【０１２６】
最初のエラーがリセットエラーである場合には（ステップＳ９０３：Ｙｅｓ）、リセットリトライ制御部２２８は、リセットリトライ制御処理を実行する（ステップＳ９９０）。一方、最初のエラーがセットエラーである場合には（ステップＳ９０３：Ｎｏ）、セットリトライ制御部２２９は、セットリトライ制御処理を実行する（ステップＳ９９５）。
【０１２７】
２回目のエラーがセットエラーである場合には（ステップＳ９０６：Ｎｏ）、セットリトライ制御部２２９は、セットリトライ制御処理を実行する（ステップＳ９９５）。一方、２回目のエラーがリセットエラーである場合には（ステップＳ９１１：Ｎｏ）、リセットリトライ制御部２２８は、リセットリトライ制御処理を実行する（ステップＳ９９０）。
【０１２８】
図２７は、第３の実施の形態におけるリセットリトライ制御処理の一例を示すフローチャートである。リセットリトライ制御部２２８は、リセットされたビットの全てをセットするように指示するセットコマンドを発行する（ステップＳ９９１）。リセットリトライ制御部２２８は、セットエラーが発生したか否かを判断する（ステップＳ９９２）。セットエラーが発生していなければ（ステップＳ９９２：Ｎｏ）、リセットリトライ制御部２２８は、ライトデータを再送し、リセットを指示するリセットコマンドを発行してＮＶＲＡＭ３００に供給する（ステップＳ９９３）。セットエラーが発生した場合（ステップＳ９９２：Ｙｅｓ）、または、ステップＳ９９３の実行後、リセットリトライ制御部２２８はリセットリトライ制御処理を終了する。
【０１２９】
図２８は、第３の実施の形態におけるセットリトライ制御処理の一例を示すフローチャートである。セットリトライ制御部２２９は、セットされたビットの全てをリセットするように指示するリセットコマンドを発行する（ステップＳ９９６）。セットリトライ制御部２２９は、リセットエラーが発生したか否かを判断する（ステップＳ９９７）。リセットエラーが発生していなければ（ステップＳ９９７：Ｎｏ）、セットリトライ制御部２２９は、ライトデータを再送し、セットを指示するセットコマンドを発行してＮＶＲＡＭ３００に供給する（ステップＳ９９８）。リセットエラーが発生した場合（ステップＳ９９７：Ｙｅｓ）、または、ステップＳ９９８の実行後、セットリトライ制御部２２９はセットリトライ制御処理を終了する。
【０１３０】
［ＮＶＲＡＭの動作例］
図２９は、第３の実施の形態におけるＮＶＲＡＭ３００の動作の一例を示すフローチャートである。第３の実施の形態のＮＶＲＡＭ３００の動作は、ステップＳ９２２、Ｓ９２３、Ｓ９６０およびＳ９７０の代わりにステップＳ９２４乃至Ｓ９２７を実行する点において第１の実施の形態と異なる。
【０１３１】
ライトコマンドを受け取っていない場合（ステップＳ９２１：Ｎｏ）、または、ステップＳ９３０の実行後、セット処理部３２５はメモリ制御部２００からセットコマンドを受け取ったか否かを判断する（ステップＳ９２４）。セットコマンドを受け取った場合には（ステップＳ９２４：Ｙｅｓ）、セット処理部３２５は、プレリード・セット処理を実行する（Ｓ９２５）。
【０１３２】
セットコマンドを受け取っていない場合（ステップＳ９２４：Ｎｏ）、または、ステップＳ９２５の実行後、リセット処理部３２４はメモリ制御部２００からリセットコマンドを受け取ったか否かを判断する（ステップＳ９２６）。リセットコマンドを受け取った場合には（ステップＳ９２６：Ｙｅｓ）、リセット処理部３２４は、プレリード・リセット処理を実行する（Ｓ９２７）。リセットコマンドを受け取っていない場合（ステップＳ９２６：Ｎｏ）、または、ステップＳ９２７の実行後、ＮＶＲＡＭ３００はステップＳ９２１に戻る。
【０１３３】
図３０は、第３の実施の形態におけるプレリード・セット処理の一例を示すフローチャートである。セット処理部３２５は、低抵抗閾値Ｒ_ｓｅｔを基準としてプレリードを行う（ステップＳ９８６）。セット処理部３２５は、ライトデータを取得し（ステップＳ９７４）、プレリードしたデータとライトデータとからセットマスクデータを生成する（ステップＳ９７６）。セット処理部３２５は、セットマスクデータに基づいてステップＳ９５１乃至Ｓ９５５を実行する。ステップＳ９５１乃至Ｓ９５５は、第１の実施の形態におけるセット処理（ステップＳ９５０）と同様の処理である。
【０１３４】
図３１は、第３の実施の形態におけるプレリード・リセット処理の一例を示すフローチャートである。リセット処理部３２４は、高抵抗閾値Ｒ_ｒｅｓｅｔを基準としてプレリードを行う（ステップＳ９８３）。リセット処理部３２４は、ライトデータを取得し（ステップＳ９６４）、プレリードしたデータとライトデータとからリセットマスクデータを生成する（ステップＳ９６６）。リセット処理部３２４は、リセットマスクデータに基づいてステップＳ９４１乃至Ｓ９４５を実行する。ステップＳ９４１乃至Ｓ９４５は、第１の実施の形態におけるリセット処理（ステップＳ９４０）と同様の処理である。
【０１３５】
このように、本技術の第３の実施の形態によれば、メモリ制御部２００が、リセットリトライ制御部２２８およびセットリトライ制御部２２９を備えるため、ＮＶＲＡＭ３００の代わりにリセットリトライおよびセットリトライの制御を行うことができる。これにより、ＮＶＲＡＭ３００の構成が簡易なもので済む。また、メモリ制御部２００が複数のＮＶＲＡＭ３００を制御する場合であっても、メモリ制御部２００のみにリセットリトライ制御部２２８およびセットリトライ制御部２２９を設ければよい。このため、ＮＶＲＡＭ３００の各々がリトライ制御を行う構成と比較して、メモリシステム全体の構成が簡易となる。
【０１３６】
なお、ホストコンピュータ１００にリセットリトライ制御部およびセットリトライ制御部を設けて、ホストコンピュータ１００がメモリ制御部２００の代わりにリトライ制御を行う構成とすることもできる。
【０１３７】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１３８】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【０１３９】
なお、本技術は以下のような構成もとることができる。
（１）２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、
前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部と、
前記第１の書換え処理の際にエラーが発生した場合には前記第１の書換え処理が実行された前記メモリセルにおいて前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させる第１のリトライ制御部と
を具備する記憶制御装置。
（２）前記第２の書換え処理の際にエラーが発生した場合には前記第２の書換え処理が実行された前記メモリセルにおいて前記第１の書換え処理を実行させた後に前記第２の書換え処理を実行させる第２のリトライ制御部をさらに具備する前記（１）記載の記憶制御装置。
（３）前記メモリセルは、所定の境界抵抗値を境界とする２つの抵抗状態のうちの一方の抵抗状態が前記一方の値に対応付けられ、他方の抵抗状態が前記他方の値に対応付けられた可変抵抗素子であり、
前記第１の書換え処理部は、前記境界抵抗値より前記他方の抵抗状態側に設定された第１の抵抗値を基準として前記メモリセルからデータを読み出して当該データの値が前記他方の値でない場合には前記エラーが発生したものと判断し、
前記第２の書換え処理部は、前記境界抵抗値より前記一方の抵抗状態側に設定された前記第２の抵抗値を基準として前記メモリセルからデータを読み出して当該データが前記一方の値でない場合には前記エラーが発生したものと判断する
前記（２）記載の記憶制御装置。
（４）前記第１および第２の書換え処理の各々における前記エラーの検出回数に基づいて前記メモリセルが不良セルであるか否かを判定する不良セル判定部をさらに具備する前記（３）記載の記憶制御装置。
（５）前記第１の書換え処理部は、前記第２の書換え処理が実行された前記メモリセルにおいて前記第１の抵抗値を基準として第１のデータを読み出して当該第１のデータの値が前記一方の値である場合には前記第１の書換え処理を実行し、
前記第２の書換え処理部は、前記第１の書換え処理が実行されたメモリセルにおいて前記第２の抵抗値を基準として第２のデータを読み出して当該第２のデータが前記他方の値である場合には前記第２の書換え処理を実行する
前記（３）または（４）記載の記憶制御装置。
（６）前記第１の書換え処理部は、前記第２の書換え処理が実行された前記メモリセルにおいて前記第１の抵抗値を基準として第１のデータを読み出すとともに前記境界抵抗閾値を基準として第３のデータを読み出して前記第１のデータと第３のデータとの値が異なる場合には前記第１の書換え処理を実行し、
前記第２の書換え処理部は、前記第１の書換え処理が実行された前記メモリセルにおいて前記第２の抵抗値を基準として第２のデータを読み出すとともに前記第３のデータを読み出して前記第２のデータと第３のデータとの値が異なる場合には前記第２の書換え処理を実行する
前記（３）または（４）記載の記憶制御装置。
（７）２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部と、前記第１の書換え処理の際にエラーが発生した場合には所定のコマンドに従って前記第１の書換え処理が実行された前記メモリセルにおいて前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させるリトライ制御部とを備える記憶制御装置と、
前記第１のエラーが発生した場合には前記所定のコマンドを発行する第１のコマンド発行部と
を具備するメモリシステム。
（８）２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部とを備える記憶制御装置と、
前記第１の書換え処理の際にエラーが発生した場合には前記第１の書換え処理が実行された前記メモリセルにおいて前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させる第１のリトライ制御部と
を具備するメモリシステム。
（９）２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部と、前記第１の書換え処理の際にエラーが発生した場合には所定のコマンドに従って前記第１の書換え処理が実行された前記メモリセルにおいて前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させるリトライ制御部とを備える記憶制御装置と、
前記第１のエラーが発生した場合には前記所定のコマンドを発行するホストコンピュータと
を具備する情報処理システム。
（１０）２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理部と、前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理部とを備える記憶制御装置と、
前記第１の書換え処理の際にエラーが発生した場合には前記第１の書換え処理が実行された前記メモリセルにおいて前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させるホストコンピュータと
を具備する情報処理システム。
（１１）第１の書換え処理部が、２値のうちの一方の値が書き込まれたメモリセルを他方の値に書き換える第１の書換え処理を実行する第１の書換え処理手順と、
第２の書換え処理部が、前記他方の値が書き込まれたメモリセルを前記一方の値に書き換える第２の書換え処理を実行する第２の書換え処理手順と、
第１のリトライ制御部が、前記第１の書換え処理の際にエラーが発生した場合には前記第１の書換え処理が実行された前記メモリセルにおいて前記第２の書換え処理を実行させた後に前記第１の書換え処理を再度実行させる第１のリトライ制御手順と
を具備する記憶制御方法。
【符号の説明】
【０１４０】
１００  ホストコンピュータ
２００  メモリ制御部
２１０  ホストインターフェース
２２０  メモリ制御回路
２２１  コマンドデコーダ
２２２  ＥＣＣ処理部
２２３  アドレス変換部
２２４  アドレス変換テーブル
２２５  不良セル判定部
２２６  リセットリトライコマンド発行部
２２７  セットリトライコマンド発行部
２２８  リセットリトライ制御部
２２９  セットリトライ制御部
２３０  メモリインターフェース
３００  ＮＶＲＡＭ
３１０  制御インターフェース
３２０  ＮＶＲＡＭ制御回路
３２１  ライト制御部
３２２  リセットリトライ制御部
３２３  セットリトライ制御部
３２４  リセット処理部
３２５  セット処理部
３２６  閾値記憶部
３２７  ステータス生成部
３３０  メモリセルアレイ
【図１】
0005867264.tif 000002
【図２】
0005867264.tif 000003
【図３】
0005867264.tif 000004
【図４】
0005867264.tif 000005
【図５】
0005867264.tif 000006
【図６】
0005867264.tif 000007
【図７】
0005867264.tif 000008
【図８】
0005867264.tif 000009
【図９】
0005867264.tif 000010
【図１０】
0005867264.tif 000011
【図１１】
0005867264.tif 000012
【図１２】
0005867264.tif 000013
【図１３】
0005867264.tif 000014
【図１４】
0005867264.tif 000015
【図１５】
0005867264.tif 000016
【図１６】
0005867264.tif 000017
【図１７】
0005867264.tif 000018
【図１８】
0005867264.tif 000019
【図１９】
0005867264.tif 000020
【図２０】
0005867264.tif 000021
【図２１】
0005867264.tif 000022
【図２２】
0005867264.tif 000023
【図２３】
0005867264.tif 000024
【図２４】
0005867264.tif 000025
【図２５】
0005867264.tif 000026
【図２６】
0005867264.tif 000027
【図２７】
0005867264.tif 000028
【図２８】
0005867264.tif 000029
【図２９】
0005867264.tif 000030
【図３０】
0005867264.tif 000031
【図３１】
0005867264.tif 000032