(57)【特許請求の範囲】
【請求項１】
第１の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、
前記リードデータの誤りの有無を検出して前記複数のメモリセルのうち前記誤りのあるメモリセルを特定する誤り検出部と、
前記第１の閾値と異なる第２の閾値を基準として前記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、
前記特定されたメモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部と
を具備するメモリシステム。
【請求項２】
前記特定されたメモリセルのうち所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させるリフレッシュ制御部をさらに具備する
請求項１記載のメモリシステム。
【請求項３】
前記誤りのあるメモリセルに割り当てられたアドレスを保持するアドレス保持部をさらに具備し、
前記リフレッシュ制御部は、所定の条件が満たされた場合には前記保持されたアドレスを読み出して当該アドレスを指定して前記リード処理部に前記リード処理を実行させる
請求項２記載のメモリシステム。
【請求項４】
前記所定の条件は、前記保持されたアドレスの個数が所定個数を超えることである
請求項２記載のメモリシステム。
【請求項５】
前記所定の条件は、前記リフレッシュ処理の実行を指示するリフレッシュコマンドを前記リフレッシュ制御部が受信したことである
請求項２記載のメモリシステム。
【請求項６】
前記複数のメモリセルは、前記複数のアドレスのいずれかが各々に割り当てられた複数の区画に分割され、
前記リフレッシュ制御部は、前記リフレッシュ処理を行うためのリフレッシュモードが設定された場合には前記複数のアドレスのそれぞれを順に指定して前記リード処理部に前記リード処理を実行させる
請求項２記載のメモリシステム。
【請求項７】
前記リフレッシュ制御部は、前記所定のパターンの前記誤りの個数が許容値を超える場合には前記特定されたメモリセルのうち前記所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させる
請求項６記載のメモリシステム。
【請求項８】
前記複数のメモリセルのそれぞれは、複数のビットを含むデータを保持し、
前記第１および第２の閾値のそれぞれは、複数の閾値を含む
請求項１記載のメモリシステム。
【請求項９】
前記メモリセルの特性値は、データが読み出されるたびに特定の方向へ変化し、
前記第２の閾値は、前記第１の閾値から前記特定の方向へ変化させた値である
請求項１記載のメモリシステム。
【請求項１０】
複数のメモリセルと、
第１の閾値を基準として前記複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、
前記第１の閾値と異なる第２の閾値を基準として前記リードデータに誤りのあるメモリセルの各々からデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、
前記リードデータに誤りのある前記メモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部と
を具備する記憶装置。
【請求項１１】
リード処理部が、第１の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理手順と、
誤り検出部が、前記リードデータの誤りの有無を検出して前記特定されたメモリセルのうち前記誤りのあるメモリセルを特定する誤り検出手順と、
再リード処理部が、前記第１の閾値と異なる第２の閾値を基準として前記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理手順と、
リフレッシュ処理部が、前記特定されたメモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理手順と
を具備するメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリシステム、記憶装置、および、メモリシステムの制御方法に関する。詳しくは、リードデータの誤りを検出するメモリシステム、記憶装置、および、メモリシステムの制御方法に関する。
【背景技術】
【０００２】
近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ（ＮＶＭ：Non-Volatile memory）が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＲｅＲＡＭ（Resistive RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）などが挙げられる。【０００３】
これらの不揮発性メモリにおいては、メモリセル内の電流の揺らぎや、アクセスの繰り返しによるメモリセルの特性の変化などの各種の原因により、書き込んだデータにエラーが発生することが知られている。前者の現象はランダムテレグラフノイズ（ＲＴＮ：Random Telegraph Noise）と呼ばれ、後者はリードディスターブ（ＲＤ：Read Disturb）と呼ばれている。また、ＲＴＮによるエラーは「ＲＴＮエラー」と呼ばれ、ＲＤによるエラーは「ＲＤエラー」と呼ばれる。これらのエラーの有無をＥＣＣ(Error detection and Correction Code)を用いて検出および訂正するメモリコントローラが提案されている（例えば、特許文献１参照。）。また、エラーが生じたメモリセルにおいてデータを書き換える処理をリフレッシュ処理として行うメモリシステムが提案されている（例えば、特許文献２参照。）。このリフレッシュ処理により、メモリセルのエラーを回復することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１２５５２７号公報
【特許文献２】特開平６−１１０７９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来のメモリコントローラはエラーを検出してはいるが、ＲＴＮエラーやＲＤエラーなどのエラーの種類を区別していない。このため、従来のシステムでは、エラーの種類に関わらず、エラーが生じるたびにメモリセルがリフレッシュされる。しかしながら、エラーの種類によっては、リフレッシュが必要でない場合がある。例えば、ＲＴＮエラーは、一次的な状態の変化であり、自然に回復するものであるため、そのエラーの生じたメモリセルをリフレッシュする必要性に乏しい。このような場合にもリフレッシュを行うと、不要な書き換えによってメモリセルの劣化が進行するおそれがある。【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、不揮発性メモリにおけるメモリセルの劣化を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、第１の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、上記リードデータの誤りの有無を検出して上記複数のメモリセルのうち上記誤りのあるメモリセルを特定する誤り検出部と、上記第１の閾値と異なる第２の閾値を基準として上記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、上記特定されたメモリセルのうち上記再リードデータの値が上記リードデータと異なるメモリセルに対して上記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部とを具備するメモリシステム、および、その制御方法である。これにより、再リードデータの値がリードデータと異なるメモリセルに対してリフレッシュ処理が行われるという作用をもたらす。【０００８】
また、この第１の側面において、前記特定されたメモリセルのうち所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させるリフレッシュ制御部をさらに具備してもよい。これにより、所定のパターンの誤りが生じたメモリセルにおいて前記再リード処理が実行されるという作用をもたらす。【０００９】
また、この第１の側面において、前記誤りのあるメモリセルに割り当てられたアドレスを保持するアドレス保持部をさらに具備し、前記リフレッシュ制御部は、所定の条件が満たされた場合には前記保持されたアドレスを読み出して当該アドレスを指定して前記リード処理部に前記リード処理を実行させてもよい。これにより、保持されたアドレスにおいてリード処理が実行されるという作用をもたらす。【００１０】
また、この第１の側面において、前記所定の条件は、前記保持されたアドレスの個数が所定個数を超えることであってもよい。これにより、保持されたアドレスの個数が所定個数を超えるとリード処理が実行されるという作用をもたらす。【００１１】
また、この第１の側面において、上記所定の条件は、上記リフレッシュ処理の実行を指示するリフレッシュコマンドを上記リフレッシュ制御部が受信したことであってもよい。これにより、リフレッシュコマンドが受信されるとリード処理が行われるという作用をもたらす。【００１２】
また、この第１の側面において、前記複数のメモリセルは、前記複数のアドレスのいずれかが各々に割り当てられた複数の区画に分割され、前記リフレッシュ制御部は、前記リフレッシュ処理を行うためのリフレッシュモードが設定された場合には前記複数のアドレスのそれぞれを順に指定して前記リード処理部に前記リード処理を実行させてもよい。これにより、リフレッシュモードが設定された場合には複数のアドレスのそれぞれが順に指定されてリード処理が実行されるという作用をもたらす。【００１３】
また、この第１の側面において、前記リフレッシュ制御部は、前記所定のパターンの前記誤りの個数が許容値を超える場合には前記特定されたメモリセルのうち前記所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させてもよい。これにより、所定のパターンの誤りの個数が許容値を超える場合には再リード処理が実行されるという作用をもたらす。【００１４】
また、この第１の側面において、上記複数のメモリセルのそれぞれは、複数のビットを含むデータを保持し、上記第１および第２の閾値のそれぞれは、複数の閾値を含むものであってもよい。これにより、メモリセルのそれぞれに複数のビットを含むデータが保持されるという作用をもたらす。【００１５】
また、この第１の側面において、上記メモリセルの特性値は、データが読み出されるたびに特定の方向へ変化し、上記第２の閾値は、上記第１の閾値から上記特定の方向へ変化させた値であってもよい。これにより、第１の閾値から上記特定の方向へ変化させた値が第２の閾値に設定されるという作用をもたらす。【００１６】
また、本技術の第２の側面は、第１の閾値を基準として上記複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、上記第１の閾値と異なる第２の閾値を基準として上記リードデータに誤りのあるメモリセルの各々からデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、上記リードデータに誤りのある上記メモリセルのうち上記再リードデータの値が上記リードデータと異なるメモリセルに対して上記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部とを具備する記憶装置である。これにより、所定の条件が満たされた場合には保持されたアドレスに対応するメモリセルについてリード処理が行われるという作用をもたらす。
【発明の効果】
【００１７】
本技術によれば、不揮発性メモリにおけるメモリセルの劣化を抑制することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１８】
【図１】第１の実施の形態におけるメモリシステムの一構成例を示す全体図である。
【図２】第１の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。
【図３】第１の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
【図４】第１の実施の形態における不揮発性メモリの一構成例を示すブロック図である。
【図５】第１の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。
【図６】第１の実施の形態におけるリクエストごとの不揮発性メモリの動作例を示す表である。
【図７】第１の実施の形態におけるＲＤが生じる前のメモリセルの抵抗分布の一例を示す図である。
【図８】第１の実施の形態における読み出しを繰り返した後のメモリセルの抵抗分布の一例を示す図である。
【図９】第１の実施の形態における読み出し回数の増加に伴う抵抗値の変化の一例を示す図である。
【図１０】第１の実施の形態におけるリードデータおよびビットセレクト信号の一例を示す図である。
【図１１】第１の実施の形態におけるストレージの動作の一例を示すフローチャートである。
【図１２】第１の実施の形態におけるコントローラ側リード・リフレッシュ処理の一例を示すフローチャートである。
【図１３】第１の実施の形態におけるメモリ側リード・リフレッシュ処理の一例を示すフローチャートである。
【図１４】第１の実施の形態におけるストレージの動作の一例を示すシーケンス図である。
【図１５】第２の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
【図１６】第２の実施の形態におけるストレージの動作の一例を示すフローチャートである。
【図１７】第２の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。
【図１８】第２の実施の形態におけるコントローラ側リフレッシュ処理の一例を示すフローチャートである。
【図１９】第３の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
【図２０】第３の実施の形態におけるストレージの動作の一例を示すフローチャートである。
【図２１】第３の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。
【図２２】第３の実施の形態におけるコントローラ側リフレッシュ処理の一例を示すフローチャートである。
【図２３】第４の実施の形態におけるコントローラ側リード・リフレッシュ処理の一例を示すフローチャートである。
【図２４】第５の実施の形態における不揮発性メモリの一構成例を示すブロック図である。
【図２５】第５の実施の形態における読み出しを繰り返した後のメモリセルの抵抗分布の一例を示す図である。
【図２６】第５の実施の形態における読み出し回数の増加に伴う抵抗値の変化の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（閾値を変えて再リードし、リフレッシュする例）
２．第２の実施の形態（保持したアドレスから閾値を変えて再リードし、リフレッシュする例）
３．第３の実施の形態（リフレッシュモードにおいて閾値を変えて再リードし、リフレッシュする例）
４．第４の実施の形態（一定パターンのエラー数が多いと閾値を変えて再リードし、リフレッシュする例）
５．第５の実施の形態（多値メモリセルにおいて閾値を変えて再リードし、リフレッシュする例）
【００２０】
＜１．第１の実施の形態＞
［メモリシステムの構成例］
図１は、第１の実施の形態におけるメモリシステムの一構成例を示すブロック図である。このメモリシステムは、ホストコンピュータ１００およびストレージ２００を備える。
【００２１】
ホストコンピュータ１００は、メモリシステム全体を制御するものである。具体的には、ホストコンピュータ１００は、コマンドおよびデータを生成してストレージ２００に信号線１０８および１０９を介して供給する。また、ホストコンピュータ１００は、信号線１０９を介してストレージ２００から、読み出されたデータを受け取る。ここで、コマンドは、ストレージ２００を制御するためのものであり、例えば、データの書込みを指示するライトコマンドや、データの読み出しを指示するリードコマンドを含む。
【００２２】
ストレージ２００は、メモリコントローラ３００および不揮発性メモリ４００を備える。このメモリコントローラ３００は、不揮発性メモリ４００を制御するものである。メモリコントローラ３００は、ホストコンピュータ１００からライトコマンドおよびデータを受け取った場合には、そのデータから誤り検出訂正符号（ＥＣＣ：Error detection and Correction Code）を生成する。具体的には、メモリコントローラ３００は、データを、そのデータおよびパリティからなる符号語に変換（すなわち、符号化）する。メモリコントローラ３００は、不揮発性メモリ４００に信号線３０８および３０９を介してアクセスして符号化したデータを書き込む。
【００２３】
また、ホストコンピュータ１００からリードコマンドを受け取った場合、メモリコントローラ３００は、不揮発性メモリ４００に信号線３０８を介してアクセスして符号化されたデータを信号線３０９を介して読み出す。そして、メモリコントローラ３００は、符号化されたデータを、符号化前の元のデータに変換（すなわち、復号）する。また、メモリコントローラ３００は、ＥＣＣに基づいてデータにおける誤りの検出および訂正を行う。メモリコントローラ３００は、訂正したデータをホストコンピュータ１００に供給する。
【００２４】
不揮発性メモリ４００は、メモリコントローラ３００の制御に従って、データを記憶するものである。例えば、ＲｅＲＡＭが不揮発性メモリ４００として用いられる。この不揮発性メモリ４００は、複数のメモリセルを備え、これらのメモリセルは、複数のブロックに分けられている。ここで、ブロックは、不揮発性メモリ４００のアクセス単位であり、ワードとも呼ばれる。ブロックのそれぞれには物理アドレスが割り当てられている。なお、ＲｅＲＡＭの代わりに、ＮＡＮＤ型やＮＯＲ型のフラッシュメモリ、ＰＣＲＡＭ、および、ＭＲＡＭ、ＳＴＴ−ＲＡＭ（Spin Transfer Torque RAM）などを不揮発性メモリ４００として用いてもよい。なお、不揮発性メモリ４００は、特許請求の範囲に記載の記憶装置の一例である。
【００２５】
［メモリコントローラの構成例］
図２は、第１の実施の形態におけるメモリコントローラ３００の一構成例を示すブロック図である。このメモリコントローラ３００は、ＲＡＭ（Random Access Memory）３０２、ＣＰＵ（Central Processing Unit）３０３、ＥＣＣ処理部３０４およびＲＯＭ（Read Only Memory）３０５を備える。また、メモリコントローラ３００は、ホストインターフェース３０１、バス３０６およびメモリインターフェース３０７を備える。
【００２６】
ＲＡＭ３０２は、ＣＰＵ３０３が実行する処理において必要となるデータを一時的に保持するものである。ＣＰＵ３０３は、メモリコントローラ３００全体を制御するものである。ＲＯＭ３０５は、ＣＰＵ３０３が実行するプログラム等を記憶するものである。ホストインターフェース３０１は、ホストコンピュータ１００との間でデータを相互に交換するものである。バス３０６は、ＲＡＭ３０２、ＣＰＵ３０３、ＥＣＣ処理部３０４、ＲＯＭ３０５、ホストインターフェース３０１およびメモリインターフェース３０７が相互にデータを交換するための共通の経路である。メモリインターフェース３０７は、不揮発性メモリ４００との間でデータを相互に交換するものである。
【００２７】
ＥＣＣ処理部３０４は、符号化対象のデータを符号化し、また、符号化されたデータを復号するものである。データの符号化においてＥＣＣ処理部３０４は、符号化対象データにパリティを付加することにより所定の単位で符号化する。そして、ＥＣＣ処理部３０４は、符号化したデータをライトデータとして不揮発性メモリ４００にバス３０６を介して供給する。
【００２８】
また、ＥＣＣ処理部３０４は、符号化されたリードデータを元のデータに復号する。この復号において、ＥＣＣ処理部３０４は、パリティを使用して、リードデータのエラーを検出および訂正する。ＥＣＣ処理部３０４は、復号した元のデータをホストコンピュータ１００にバス３０６を介して供給する。
【００２９】
図３は、第１の実施の形態におけるメモリコントローラ３００の機能構成例を示すブロック図である。このメモリコントローラ３００は、ライト制御部３１０、リード制御部３２０、ＥＣＣ処理部３０４およびリフレッシュ制御部３３０を備える。図３におけるライト制御部３１０は、図２におけるＲＡＭ３０２、ＣＰＵ３０３、ＲＯＭ３０５、ホストインターフェース３０１、バス３０６およびメモリインターフェース３０７などにより実現される。リード制御部３２０およびリフレッシュ制御部３３０についても同様である。
【００３０】
ライト制御部３１０は、ライトコマンドに従って、不揮発性メモリ４００にライトデータを書き込ませるものである。このライト制御部３１０は、ライトコマンドの指定する論理アドレスを物理アドレスに変換する。
【００３１】
ここで、論理アドレスは、ホストコンピュータ１００が定義するアドレス空間において、ホストコンピュータ１００がストレージ２００にアクセスする際のアクセス単位の領域ごとに割り振られたアドレスである。また、物理アドレスは、前述したように不揮発性メモリ４００においてアクセス単位ごとに割り当てられたアドレスである。
【００３２】
また、ライト制御部３１０は、ホストコンピュータ１００と不揮発性メモリ４００とのアクセス単位が異なる場合に、ライトコマンドを分割する。ライト制御部３１０は、アドレスを論物変換し、必要に応じて分割したライトコマンドのそれぞれをライトリクエストとして不揮発性メモリに供給する。
【００３３】
リード制御部３２０は、リードコマンドに従って、不揮発性メモリ４００にリードデータの読み出しを行わせるものである。このリード制御部３２０は、リードコマンドのアドレスを論物変換し、必要に応じて分割したリードコマンドのそれぞれをリードリクエストとして不揮発性メモリに供給する。また、リード制御部３２０は、変換した物理アドレスをリフレッシュ制御部３３０に供給する。
【００３４】
ＥＣＣ処理部３０４は、ホストコンピュータ１００からデータを符号化対象データとして受け取った場合に、その符号化対象データを符号語に符号化する。符号化において符号化対象データは、例えば、２元のＢＣＨ符号に符号化される。ＥＣＣ処理部３０４は、その符号語をライトデータとして不揮発性メモリ４００に供給する。
【００３５】
なお、ＥＣＣ処理部３０４は、符号化対象データを２元のＢＣＨ符号に符号化しているが、誤り訂正能力を持つ符号であれば、ＢＣＨ符号以外の符号に符号化してもよい。ＥＣＣ処理部３０４は、例えば、ＲＳ（Reed-Solomon）符号や畳込み符号に符号化してもよい。また、ＥＣＣ処理部３０４は、２元より高い次元の符号に符号化してもよい。
【００３６】
また、ＥＣＣ処理部３０４は、符号語に対応する受信語をリードデータとして不揮発性メモリ４００から受け取った場合に、その受信語を復号する。ＥＣＣ処理部３０４は、復号したデータを復号データとしてホストコンピュータ１００およびリフレッシュ制御部３３０に供給する。ただし、ホストコンピュータ１００へ供給される復号データからは、パリティが除かれる。なお、ＥＣＣ処理部３０４は、特許請求の範囲に記載の誤り検出部の一例である。
【００３７】
リフレッシュ制御部３３０は、エラーの生じたメモリセルについて、不揮発性メモリ４００にデータを書き換えさせるものである。このリフレッシュ制御部３３０は、復号前のリードデータを不揮発性メモリ４００から受信し、また、ＥＣＣ処理部３０４から復号データを受け取る。リフレッシュ制御部３３０は、それらのリードデータおよび復号データを比較して訂正されたエラー数（訂正数）を求め、そのエラー数が所定の許容値Ｎ以上である場合にリフレッシュリクエストを発行する。このリフレッシュリクエストは、リードデータが読み出された物理アドレスを指定して、データの書き換えを要求するリクエストである。
【００３８】
また、リフレッシュ制御部３３０は、所定のパターンのエラーが生じたメモリセルを特定して、そのメモリセルを書き換え対象として選択するビットセレクト信号を生成する。例えば、ワードに対応する８個のメモリセルのうち先頭から４番目および８番目を書き換え対象とする場合、「０ｘ１１」（２進数で「ｂ０００１０００１」）の値のビットセレクト信号が生成される。
【００３９】
ここで、不揮発性メモリ４００のメモリセルは、それぞれ、論理値「０」または論理値「１」を保持する２値メモリセルであるものとする。この２値メモリセルに生じるエラーのパターンとしては、「０」が「１」に反転するパターンと「１」が「０」に反転するパターンとが挙げられる。ＲＤが進行すると、一般に、そのメモリセルの特性値（例えば、抵抗値）がＲＤの進行に伴って一定の方向に変化する。例えば、ＲｅＲＡＭをメモリセルとして用いる場合、その抵抗値はＲＤが進行するほど、低抵抗側から高抵抗側の方へ変化する。このため、低抵抗状態に「１」を、高抵抗状態に「０」を割り当てていた場合には、メモリセルのＲＤにより「１」が「０」に反転するパターンのＲＤエラーが生じうる。リフレッシュ制御部３３０は、その「１」が「０」に反転したメモリセルを特定し、そのメモリセルを選択するビットセレクト信号を生成する。リフレッシュ制御部３３０は、発行したリフレッシュリクエストと、生成したビットセレクト信号とを不揮発性メモリ４００に供給する。
【００４０】
なお、リフレッシュ制御部３３０は、訂正数がＮ以上の場合にリフレッシュリクエストを発行しているが、訂正数に関わらず、エラーが検出された場合にリフレッシュリクエストを発行してもよい。ただし、エラーが１つでも検出されるたびにリフレッシュリクエストを発行する構成ではアクセス効率が低下するおそれがあるため、リフレッシュ制御部３３０は、訂正数がＮ以上の際にリフレッシュリクエストを発行することが望ましい。
【００４１】
また、リフレッシュ制御部３３０は、ＲＤエラーが想定されるパターン（「１」が「０」に反転したパターンなど）のエラーが生じたメモリセルのみを書き換え対象としているが、この構成に限定されない。リフレッシュ制御部３３０は、エラーが生じたメモリセルの全てを書き換え対象とするビットセレクト信号を生成してもよい。ただし、エラーが生じたメモリセル全てを書き換え対象とすると、ＲＤエラーでないエラーに対応するメモリセルにおいてもデータが書き換えられて劣化が進行してしまう。このため、ＲＤエラーが想定されるパターンのエラーが生じたメモリセルのみを書き換え対象とすることが望ましい。
【００４２】
［不揮発性メモリの構成例］
図４は、第１の実施の形態における不揮発性メモリの一構成例を示すブロック図である。この不揮発性メモリ４００は、データバッファ４１０、メモリセルアレイ４２０、ドライバ４３０、アドレスデコーダ４４０、バス４５０、制御インターフェース４６０、および、メモリ制御部４７０を備える。
【００４３】
データバッファ４１０は、メモリ制御部４７０の制御に従って、ライトデータやリードデータをアクセス単位で保持するものである。メモリセルアレイ４２０は、マトリックス状に配列された複数のメモリセルを備える。これらのメモリセルとして、不揮発性の記憶素子が用いられる。具体的には、ＮＡＮＤ型やＮＯＲ型のフラッシュメモリ、ＲｅＲＡＭ、ＰＣＲＡＭ、ＳＴＴ−ＲＡＭ、または、ＭＲＡＭなどが記憶素子として用いられる。
【００４４】
また、これらのメモリセルは、論理値「１」または「０」を保持する２値メモリセルである。また、不揮発性メモリ４００のアクセス単位は、例えば、８ビットからなるワードである。例えば、メモリセルアレイ４２０に８×２５６個のメモリセルを設けた場合、２５６ワードのデータが保持される。これらのワードのそれぞれに物理アドレスが割り当てられる。
【００４５】
ドライバ４３０は、アドレスデコーダ４４０により選択されたメモリセルに対してデータの書込み、または、データの読み出しを行うものである。データの書込みにおいては、ドライバ４３０は、極性の異なる２つの電圧パルスのいずれかをメモリセルに印加して「１」または「０」を書き込む。以下、「１」を書き込む動作を「セット」と定義し、その際の電圧パルスを「セットパルス」と称する。一方、「０」を書き込む動作を「リセット」と定義し、その際の電圧パルスを「リセットパルス」と称する。
【００４６】
また、データの読み出しにおいては、ドライバ４３０は、メモリセルに電流パルスを印加し、メモリセルの電極間に生じる電圧と、所定の参照電圧Ｖｒｅｆとを比較する。ドライバ４３０は、この比較結果をリードデータの値として読み出す。この動作を「センス」と定義し、その際の電流パルスを以下、「センスパルス」と称する。また、ＲｅＲＡＭでは、参照電圧Ｖｒｅｆは、次式により表される。
Ｖｒｅｆ＝Ｉ×Ｒｒｅｆ
上式において、Ｉは、センスパルスの電流値であり、Ｒｒｅｆは、参照抵抗値である。
【００４７】
また、ドライバ４３０は、セット、リセットおよびセンスのそれぞれにおいて、メモリ制御部４７０の制御に従ってビット単位でメモリセルを選択して、そのメモリセルのみをセット、リセットまたはセンスすることができる。
【００４８】
アドレスデコーダ４４０は、リクエストにより指定されたアドレスを解析して、そのアドレスに対応するメモリセルを選択するものである。例えば、「０ｘ０Ｆ」（１０進数で１５）のアドレスが解析された場合、２５６個のアドレスのうち、先頭から１６番目のアドレスに対応する８個のメモリセルが選択される。
【００４９】
バス４５０は、データバッファ４１０、メモリセルアレイ４２０、アドレスデコーダ４４０、メモリ制御部４７０および制御インターフェース４６０が相互にデータを交換するための共通の経路である。制御インターフェース４６０は、メモリコントローラ３００と不揮発性メモリ４００とがデータを相互に交換するためのインターフェースである。
【００５０】
メモリ制御部４７０は、ドライバ４３０およびアドレスデコーダ４４０を制御して、データの書込み、または、読み出しを行わせるものである。
【００５１】
［メモリ制御部の構成例］
図５は、第１の実施の形態におけるメモリ制御部４７０の一構成例を示すブロック図である。このメモリ制御部４７０は、リクエストデコーダ４７１、ライト処理部４７２、リード処理部４７３、再リード処理部４７４およびリフレッシュ処理部４７５を備える。
【００５２】
リクエストデコーダ４７１は、メモリコントローラ３００からのリクエストを解釈（デコード）するものである。このリクエストデコーダ４７１は、ライトリクエストのデコード結果をライト処理部４７２に供給し、リードリクエストのデコード結果をリード処理部４７３に供給する。また、リクエストデコーダ４７１は、リフレッシュリクエストのデコード結果を再リード処理部４７４に供給する。
【００５３】
ライト処理部４７２は、ドライバ４３０およびアドレスデコーダ４４０を制御して、データの書込みを行わせるものである。このライト処理部４７２は、デコード結果を受け取ると、アドレスのデコードを指示する制御信号をアドレスデコーダ４４０に供給する。また、ライト処理部４７２は、全ビットを選択するビットセレクト信号とセンスを指示するセンス信号とをドライバ４３０に供給する。なお、アドレスデコーダ４４０への制御信号とドライバ４３０へのビットセレクト信号とは、図５において省略されている。ドライバ４３０は、センス信号およびビットセレクト信号に従って、リクエストの指定するアドレスに書き込まれているデータをプレリードデータとして読み出す。
【００５４】
そして、ライト処理部４７２は、ライトデータとプレリードデータとをビット単位で比較し、ライトデータにおいて「１」であり、かつ、プレリードデータにおいて「０」のビットをセット対象とする。ライト処理部４７２は、そのセット対象のビットを示すビットセレクト信号と、セットを指示するセット信号とをドライバ４３０に供給する。
【００５５】
次に、ライト処理部４７２は、ライトデータとセット処理後のプレリードデータとをビット単位で比較し、ライトデータにおいて「０」であり、かつ、プレリードデータにおいて「１」のビットをリセット対象とする。ライト処理部４７２は、そのリセット対象のビットを示すビットセレクト信号と、リセットを指示するリセット信号とをドライバ４３０に供給する。ドライバ４３０は、ビットセレクト信号、セット信号およびリセット信号に従ってデータの書込みを行う。
【００５６】
リード処理部４７３は、ドライバ４３０およびアドレスデコーダ４４０を制御して、データの読み出しを行わせるものである。このリード処理部４７３は、アドレスのデコードを指示する制御信号をアドレスデコーダ４４０に供給する。また、リード処理部４７３は、参照電圧ＶｒｅｆにＶｒｅｆ１を設定してドライバ４３０にセンス信号およびビットセレクト信号を供給する。このビットセレクト信号では、全てのメモリセルが選択され、例えば、ビットセレクト信号の全ビットに「１」が設定される。
【００５７】
再リード処理部４７４は、ドライバ４３０およびアドレスデコーダ４４０を制御して、データの再度の読み出しを行わせるものである。この再リード処理部４７４は、デコード結果を受け取ると、アドレスのデコードを指示する制御信号をアドレスデコーダ４４０に供給する。また、再リード処理部４７４は、参照電圧ＶｒｅｆにＶｒｅｆ２を設定して、センス信号をドライバ４３０に供給する。また、メモリコントローラ３００からのビットセレクト信号はドライバ４３０に転送される。ドライバ４３０は、センス信号およびビットセレクト信号に従ってデータを再リードデータとして読み出す。ビットセレクト信号により選択されていないメモリセルにはセンスパルスは印加されない。
【００５８】
ここで、リードデータを読み出す際の参照電圧Ｖｒｅｆ１に対応する参照抵抗値をＲｒｅｆ１とし、再リードデータを読み出す際の参照電圧Ｖｒｅｆ２に対応する参照抵抗値をＲｒｅｆ２とする。メモリセルの抵抗値がＲＤの進行に伴い高くなる場合には、Ｒｒｅｆ２がＲｒｅｆ１よりも高く、Ｒｒｅｆ１およびＲｒｅｆ２の差分が、１回の読み出しによる抵抗値の変化量よりも大きくなるように、Ｖｒｅｆ１およびＶｒｅｆ２が設定される。なお、参照抵抗値Ｒｒｅｆ１は、特許請求の範囲に記載の第１の閾値の一例であり、参照抵抗値Ｒｒｅｆ２は、特許請求の範囲に記載の第２の閾値の一例である。
【００５９】
そして、再リード処理部４７４は、再リードデータおよびビットセレクト信号をビット単位で比較して、その比較結果に基づいてビットセレクト信号を修正する。修正においては、ビットセレクト信号で書き換え対象とされたビットのうち、リードデータと値が同じビットが、書き換え対象から除外される。例えば、「１」が「０」に反転したメモリセルのみがビットセレクト信号で書き換え対象とされていた場合、再リードデータにおいて「０」のビットは、リードデータの値と同じであるため、書き換え対象から除外される。再リード処理部４７４は、修正したビットセレクト信号を修正ビットセレクト信号としてドライバ４３０に供給し、再リードデータを読み出した旨をリフレッシュ処理部４７５に通知する。この修正ビットセレクト信号により、リードデータおよび再リードデータにおいて値の異なるメモリセルのみが書き換えられる。
【００６０】
リフレッシュ処理部４７５は、ドライバ４３０を制御して、データの書き換えを行わせるものである。このリフレッシュ処理部４７５は、再リードデータが読み出されると、セット信号およびリセット信号の一方を生成してドライバ４３０に供給する。例えば、「１」が「０」に反転したメモリセルがビットセレクト信号で書き換え対象とされた場合、セット信号が生成される。
【００６１】
図６は、第１の実施の形態におけるリクエストごとの不揮発性メモリ４００の動作例を示す表である。ライトリクエストおよびライトデータが入力された場合に不揮発性メモリ４００は、セットおよびリセットを順に行ってライトデータをメモリセルに書き込む。一方、リードリクエストが入力された場合に不揮発性メモリ４００は、参照電圧Ｖｒｅｆ１を基準としてリードデータを読み出してメモリコントローラ３００に出力する。
【００６２】
また、リフレッシュリクエストおよびビットセレクト信号が入力された場合に不揮発性メモリ４００は、参照電圧Ｖｒｅｆ２を基準として再リードデータを読み出し、その読み出した値が「１」のビットのみをセットする。
【００６３】
図７は、第１の実施の形態におけるＲＤの生じる前、すなわち書き換え直後のメモリセルの抵抗分布の一例を示す図である。同図における縦軸は、メモリセルのセル数であり、横軸は、抵抗値である。ＲｅＲＡＭの２値メモリセルでは、その抵抗分布は、抵抗の閾値（Ｒｒｅｆ１など）を境に２つに分けられている。これらの分布は、低抵抗状態（ＬＲＳ：Low-Resistance State）および高抵抗状態（ＨＲＳ：High-Resistance State）と呼ばれる。ＬＲＳには、例えば、「１」の論理値が割り当てられ、ＨＲＳには「０」が割り当てられる。この閾値が変更された場合には、その変更後の閾値を基準としてデータの値が判断される。
【００６４】
なお、ＬＲＳに「１」をＨＲＳに「０」を割り当てているが、逆に、ＬＲＳに「０」をＨＲＳに「１」を割り当ててもよい。この場合には、「０」から「１」に反転したメモリセルが書き換え対象とされ、Ｒｒｅｆ２を基準として「０」が読み出されたメモリセルが「０」にリセットされる。
【００６５】
図８は、第１の実施の形態における読み出しを繰り返した後のメモリセルの抵抗分布の一例を示す図である。同図における縦軸は、メモリセルのセル数であり、横軸は、抵抗値である。また、同図における点線の曲線は、書き換え直後のメモリセルの状態を示し、実線の曲線は、センス信号による読み出しの繰り返しにより変化したメモリセルの状態を示す。同図に例示するように、読み出しを繰り返すと抵抗値が高抵抗側へずれる現象が知られている。この現象は、ＲＤと呼ばれる。ＲＤにより、実線の曲線の右裾が、閾値（Ｒｒｅｆ１）を超え、その結果、「１」を書き込んだビットから、「０」が読み出されるＲＤエラーが発生してしまう。同図における斜線部分は、ＲＤエラーが生じる部分である。
【００６６】
図９は、第１の実施の形態における読み出し回数の増加に伴う抵抗値の変化の一例を示す図である。同図における縦軸は、抵抗値であり、横軸は読み出し回数を示す。ここでは、あるメモリセルに、ＬＲＳに対応する「１」が書き込まれた場合を考える。左端の１回目の読み出しでは、抵抗値が参照抵抗値Ｒｒｅｆ１より低く、「１」の値が正常に読み出される。しかし、ｍ回目の読み出しにおいては、ＲＴＮにより抵抗値が不連続に上昇している。この結果、ＨＲＳに対応する「０」の値が誤って読み出されるＲＴＮエラーが生じる。この現象は、例えば、「T.O.Iwasaki, et al, “Stability Conditioning to Enhance Read Stability 10x in 50nm AlxOy ReRAM”, IEEE International Memory Workshop 2013」などに記載されている。メモリコントローラ３００は、ｍ回目のリードデータからエラーを検出してリフレッシュリクエストを発行し、不揮発性メモリ４００は、参照抵抗値をＲｒｅｆ２に変更して、ｍ＋１回目の再読み出しを行う。ＲＴＮエラーは、ある程度の時間が経過しないと解消しないため、参照抵抗値を変更しても読み出される値が変化せず、再度「０」の値が読み出される。この場合、リードデータおよび再リードデータの値が同一であるため、メモリセルはリフレッシュされない。
【００６７】
ｍ＋１回目以降、読み出しの繰り返しに伴ってＲＤにより抵抗値が上昇し、ｎ回目において参照抵抗値Ｒｒｅｆ１を超えたものとする。この結果、ＨＲＳに対応する「０」の値が誤って読み出されるＲＤエラーが生じる。ＲＤエラーが発生した際には、リフレッシュを行わない限り、ＲＤの影響が消失することはなく、その後の読み出しにおいても誤った「０」の値が読み出されてしまう。
【００６８】
そこで、メモリコントローラ３００は、ｎ回目のリードデータからエラーを検出すると、そのエラーを解消するためにリフレッシュリクエストを発行し、不揮発性メモリ４００は、参照抵抗値をＲｒｅｆ２に変更して、ｎ＋１回目の再読み出しを行う。ｎ＋１回目では、ＲＤにより抵抗値がわずかに上昇するが、Ｒｒｅｆ１およびＲｒｅｆ２の差分がその上昇量よりも大きくなるようにＲｒｅｆ２が設定されているため、Ｒｒｅｆ２を超えない。このため、ｎ＋１回目では、正しい論理値「１」が読み出される。不揮発性メモリ４００は、ｎ＋１回目で「１」が読み出されたため、そのメモリセルにセットパルスを印加する。これにより、メモリセルの抵抗値は、Ｒｒｅｆ１より低くなり、参照抵抗値Ｒｒｅｆ１およびＲｒｅｆ２の双方で正しい論理値が読み出されるようになる。このように、ＲＤエラーはセットパルスの再印加により回復することができる。
【００６９】
一方、ＲＴＮエラーは、ＲＤエラーと異なり一時的な状態の変化であり、自然に回復するため、セットパルス（あるいはリセットパルス）の再印加によりリフレッシュを行う必要はない。例えば、ｍ回目のＲＴＮエラー発生時に、セットパルスを再印加してリフレッシュを行うと、再印加の際にはＲＴＮの影響が消失しているにもかかわらず、高抵抗のメモリセルに過剰なセットパルスが印加されてしまい、セル特性が劣化してしまう。このため、ＲＴＮエラーについてもリフレッシュを行う特許文献２などのメモリシステムでは、不要なリフレッシュにより却ってメモリセルの劣化が進行して不揮発性メモリ４００の寿命が短くなるおそれがある。
【００７０】
これに対して、不揮発性メモリ４００は、ＲＤエラーの際にリフレッシュを行う一方、ＲＴＮエラーの際にはリフレッシュを行わないため、メモリセルの劣化を抑制することができる。
【００７１】
図１０は、第１の実施の形態におけるリードデータおよびビットセレクト信号の一例を示す図である。同図におけるａは、参照電圧Ｖｒｅｆ１により読み出されたリードデータの一例である。このリードデータは、例えば、「ｂ１１１０００００」のビット列を含む。また、同図におけるｂは、復号データの一例である。この復号データは、例えば、「ｂ１１１０００１１」のビット列を含む。これらのリードデータおよび復号データをビット単位で比較すると、先頭から７ビット目と８ビット目とにおいてエラーが生じている。これらのビットでは復号前が「０」で復号後が「１」であるから、「１」が「０」に反転したパターンのエラーが発生している。前述したように、ＲｅＲＡＭでは、読み出し回数が多くなるほど、抵抗値が増加する傾向にあるため、ＬＲＳに「１」が割り当てられている場合、「１」が「０」に反転するＲＤエラーが発生しうる。ただし、ＲＴＮエラーによっても「１」が「０」に反転する可能性がある。この時点では、「１」が「０」に反転したエラーが、ＲＤエラーであるのか、ＲＴＮエラーであるのか断定することができない。
【００７２】
図１０におけるｃは、ビットセレクト信号の一例である。ビットセレクト信号において、「０」は、書き換え対象でないビットを示し、「１」はセットにより書き換える対象のビットを示す。同図におけるａおよびｂの結果から、ＲＤエラーまたはＲＴＮエラーが想定される７ビット目および８ビット目を指定した「ｂ０００００１１」を含むビットセレクト信号が生成される。不揮発性メモリ４００は、ビットセレクト信号に従って、７ビット目および８ビット目を選択して、参照抵抗値Ｒｒｅｆ２を基準として再リードデータを読み出す。
【００７３】
図１０におけるｄは、再リードデータの一例である。同図のｄにおいて、「−」は、センスパルスが印加されないビットを示す。例えば、この再リードデータの７ビット目が「０」で、８ビット目が「１」であるものとする。書き換え対象とされたメモリセルのうち、７ビット目のセルは、リードデータと値が変わらないが、８ビット目は値が異なる。この場合、７ビット目のエラーはＲＴＮエラーであり、８ビット目のエラーはＲＤエラーであると考えられる。したがって、不揮発性メモリ４００は、ＲＴＮエラーに対応する７ビット目を書き換え対象としないように、ビットセレクト信号を修正する。同図におけるｅは、修正ビットセレクト信号の一例である。この修正ビットセレクト信号では、エラーが検出された７ビット目および８ビット目のうち７ビット目が「０」に修正される。これにより、８ビット目のメモリセルがセットによりリフレッシュされる。
【００７４】
［ストレージの動作例］
図１１は、第１の実施の形態におけるストレージ２００の動作の一例を示すフローチャートである。この動作は、例えば、ストレージ２００に電源が投入されたときや、ホストコンピュータ１００により初期化が指示されたときに開始する。
【００７５】
メモリコントローラ３００は、不揮発性メモリ４００を初期化する（ステップＳ９０１）。また、メモリコントローラ３００は、ホストコンピュータ１００からのコマンドをデコードする（ステップＳ９０２）。コマンドがライトコマンドである場合に（ステップＳ９０３：Ｙｅｓ）、メモリコントローラ３００は、そのライトコマンドに応じてライトリクエストを発行する（ステップＳ９０４）。また、不揮発性メモリ４００は、そのライトリクエストに従ってライトデータをメモリセルに書き込む（ステップＳ９０５）。
【００７６】
一方、アクセスコマンドがリードコマンドである場合に（ステップＳ９０３：Ｎｏ）、メモリコントローラ３００は、コントローラ側リード・リフレッシュ処理を実行する（ステップＳ９１０）。また、不揮発性メモリ４００は、メモリ側リード・リフレッシュ処理を実行する（ステップＳ９２０）。ステップＳ９０５の後、または、ステップＳ９１０およびＳ９２０の両方が終了した後、ストレージ２００はステップＳ９０２に戻る。
【００７７】
図１２は、第１の実施の形態におけるコントローラ側リード・リフレッシュ処理の一例を示すフローチャートである。メモリコントローラ３００は、リードリクエストを発行し（ステップＳ９１１）、リードデータが読み出されると、そのデータを復号する（ステップＳ９１２）。エラー数がＥＣＣの誤り訂正能力以下であれば、復号は成功する。
【００７８】
メモリコントローラ３００は、復号に成功したか否かを判断する（ステップＳ９１３）。復号に成功した場合には（ステップＳ９１３：Ｙｅｓ）、メモリコントローラ３００は、復号データをホストコンピュータ１００に出力し（ステップＳ９１４）、訂正数がＮ以上であるか否かを判断する（ステップＳ９１５）。一方、復号に失敗した場合には（ステップＳ９１３：Ｎｏ）、メモリコントローラ３００は、リードエラーをホストコンピュータ１００に出力する（ステップＳ９１７）。
【００７９】
訂正数がＮ以上である場合には（ステップＳ９１５：Ｙｅｓ）、メモリコントローラ３００は、所定のパターンのエラーの生じたメモリセルを書き換え対象とするビットセレクト信号を生成し、リフレッシュリクエストを発行する（ステップＳ９１６）。訂正数がＮに満たない場合（ステップＳ９１５：Ｎｏ）、または、ステップＳ９１６の後、もしくはステップＳ９１７の後、メモリコントローラは、コントローラ側リード・リフレッシュ処理を終了する。
【００８０】
図１３は、第１の実施の形態におけるメモリ側リード・リフレッシュ処理の一例を示すフローチャートである。不揮発性メモリ４００は、リードリクエストに従って参照電圧Ｖｒｅｆ１を基準としてリードデータを読み出す（ステップＳ９２１）。不揮発性メモリ４００は、一定期間内に、メモリコントローラ３００からリフレッシュリクエストを受信したか否かを判断する（ステップＳ９２２）。リフレッシュリクエストを受信した場合に（ステップＳ９２２：Ｙｅｓ）、不揮発性メモリ４００は、そのリクエストに従って参照電圧Ｖｒｅｆ２を基準として再リードデータを読み出す（ステップＳ９２３）。そして、不揮発性メモリ４００は、再リードデータおよびリードデータの値が異なるメモリセルのみを書き換え対象とするようにビットセレクト信号を修正する（ステップＳ９２４）。不揮発性メモリ４００は、修正ビットセレクト信号の示すメモリセルについて、セット動作を行う（ステップＳ９２５）。
【００８１】
一方、リフレッシュリクエストを受信しなかった場合（ステップＳ９２２：Ｎｏ）、または、ステップＳ９２５の後、不揮発性メモリ４００は、メモリ側リード・リフレッシュ処理を終了する。
【００８２】
図１４は、第１の実施の形態におけるストレージ２００の動作の一例を示すシーケンス図である。メモリコントローラ３００がリードリクエストを発行して不揮発性メモリ４００に送信すると、不揮発性メモリ４００は、そのリクエストに従って参照電圧Ｖｒｅｆ１を基準としてリードデータを読み出す（ステップＳ９２１）。メモリコントローラ３００は、そのリードデータを復号し（ステップＳ９１２）、エラー数がＮ以上であれば、リフレッシュリクエストおよびビットセレクト信号を不揮発性メモリ４００に送信する。
【００８３】
不揮発性メモリ４００は、リフレッシュリクエストおよびビットセレクト信号に従って参照電圧Ｖｒｅｆ２を基準として再リードデータを読み出す（ステップＳ９２３）。そして、不揮発性メモリ４００は、再リードデータおよびリードデータの値が異なるビットのみを書き換え対象とするようにビットセレクト信号を修正し（ステップＳ９２４）、その書き換え対象をセットによりリフレッシュする（ステップＳ９２５）。
【００８４】
このように、本技術の第１の実施の形態によれば、第１の閾値を基準とするリードデータと第２の閾値を基準とする再リードデータとの値が異なるメモリセルをリフレッシュするため、それらの値が同一のメモリセルを除いてリフレッシュすることができる。これにより、ＲＴＮエラーの可能性が高いメモリセルに対する不要なリフレッシュが無くなるため、メモリセルの劣化の進行を抑制することができる。
【００８５】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、メモリコントローラ３００は、リード処理においてエラー数が所定の許容値以上となるたびに、そのアドレスにおいてリフレッシュを行っていた。しかし、リフレッシュ処理の間、不揮発性メモリ４００は、他のリクエストを実行することができないため、エラー検出のたびにリフレッシュ処理を行うとアクセス速度が低下するおそれがある。このため、メモリコントローラ３００は、一定の条件が満たされるまでリフレッシュリクエストの発行を抑制し、ライトリクエストやリードリクエストを優先して発行することが望ましい。一定の条件としては、例えば、ホストコンピュータ１００によりリフレッシュが指示されたことや、リフレッシュ対象のアドレスの個数が所定個数を超えたことなどが挙げられる。この第２の実施の形態のメモリコントローラ３００は、一定の条件が満たされた場合にリフレッシュリクエストを発行する点において第１の実施の形態と異なる。
【００８６】
図１５は、第２の実施の形態におけるメモリコントローラ３００の機能構成例を示すブロック図である。第２の実施の形態のメモリコントローラ３００は、リード制御部３２０およびリフレッシュ制御部３３０の代わりにリード制御部３２１およびリフレッシュ制御部３３１を備え、さらにアドレスレジスタ３４０を備える点において第１の実施の形態と異なる。
【００８７】
リード制御部３２１は、リードデータおよび復号データをＥＣＣ処理部３０４から受け取り、許容値Ｎ以上のエラーが検出されるたびに、そのアドレスをアドレスレジスタ３４０に保持させる。図１５では、記載の便宜上、ＥＣＣ処理部３０４および不揮発性メモリ４００からリード制御部３２１へのリードデータおよび復号データは、省略されている。アドレスレジスタ３４０は、複数のアドレスを保持するものである。なお、アドレスレジスタ３４０は、特許請求の範囲に記載のアドレス保持部の一例である。
【００８８】
また、リフレッシュ制御部３３１は、ホストコンピュータ１００からリフレッシュコマンドを受信した場合に、アドレスレジスタ３４０に保持されたアドレスを順に指定してリードリクエストを発行する。あるいは、リフレッシュ制御部３３１は、アドレスレジスタ３４０に保持されたアドレス数がＭ（Ｍは、整数）個以上となった場合に、それらのアドレスを順に指定してリードリクエストを発行する。そして、リフレッシュ制御部３３２は、訂正数がＮ以上であれば、リフレッシュリクエストおよびビットセレクト信号を不揮発性メモリ４００に供給する。
【００８９】
また、第２の実施の形態のホストコンピュータ１００は、例えば、アクセス頻度が一定以下に低下した場合にリフレッシュコマンドを発行する。
【００９０】
図１６は、第２の実施の形態におけるストレージ２００の動作の一例を示すフローチャートである。メモリコントローラ３００は、不揮発性メモリ４００の初期化（ステップＳ９０１）の後、コマンドをデコードする（ステップＳ９０２）。メモリコントローラ３００は、コマンドがライトコマンドであるか否かを判断し（ステップＳ９０３）、ライトコマンドであれば（ステップＳ９０３：Ｙｅｓ）、ステップＳ９０４およびＳ９０５を実行する。
【００９１】
一方、ライトコマンドでない場合に（ステップＳ９０３：Ｎｏ）、メモリコントローラ３００は、コマンドがリードコマンドであるか否かを判断する（ステップＳ９０６）。リードコマンドである場合に（ステップＳ９０６：Ｙｅｓ）、メモリコントローラ３００は、コントローラ側リード処理を実行する（ステップＳ９３０）。また、不揮発性メモリ４００は、ライトリクエストに従ってＶｒｅｆ１を基準としてリードデータを読み出す（ステップＳ９２１）。
【００９２】
ステップＳ９０５の後、または、ステップＳ９３０およびＳ９２１の両方が終了した後に、不揮発性メモリ４００は、アドレスレジスタに保持されたアドレス数がＭ個以上であるか否かを判断する（ステップＳ９０７）。
【００９３】
コマンドがリフレッシュコマンドである場合（ステップＳ９０６：Ｎｏ）、または、アドレス数がＭ個以上である場合（ステップＳ９０７：Ｙｅｓ）、メモリコントローラ３００は、コントローラ側リフレッシュ処理を実行する（ステップＳ９４０）。また、不揮発性メモリ４００は、メモリ側リード・リフレッシュ処理を実行する（ステップＳ９２０）。アドレス数がＭ個未満である場合（ステップＳ９０７：Ｎｏ）、または、ステップＳ９４０およびＳ９２０の両方が終了した後、ストレージ２００はステップＳ９０２に戻る。
【００９４】
図１７は、第２の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。コントローラ側リード処理は、ステップＳ９１６の代わりにステップＳ９３１を実行する点以外は、図１２に例示したコントローラ側リード・リフレッシュ処理と同様である。訂正数がＮ以上である場合に（ステップＳ９１５：Ｙｅｓ）、メモリコントローラ３００は、リードリクエストにより指定されたアドレスをアドレスレジスタ３４０に保持する（ステップＳ９３１）。
【００９５】
図１８は、第２の実施の形態におけるコントローラ側リフレッシュ処理の一例を示すフローチャートである。メモリコントローラ３００は、アドレスレジスタ３４０から、いずれかのアドレスを取り出して、そのアドレスをアドレスレジスタ３４０から削除する（ステップＳ９４１）。メモリコントローラ３００は、取り出したアドレスを指定するリードリクエストを発行する（ステップＳ９４２）。そして、メモリコントローラ３００は、読み出されたリードデータを復号する（ステップＳ９４３）。
【００９６】
メモリコントローラ３００は、復号に成功したか否かを判断する（ステップＳ９４４）。復号に成功した場合に（ステップＳ９４４：Ｙｅｓ）、メモリコントローラ３００は、復号データをホストコンピュータ１００へ出力し（ステップＳ９４５）、訂正数がＮ以上であるか否かを判断する（ステップＳ９４６）。
【００９７】
訂正数がＮ以上である場合に（ステップＳ９４６：Ｙｅｓ）、メモリコントローラ３００は、ビットセレクト信号を生成し、リフレッシュリクエストを発行して不揮発性メモリ４００に供給する（ステップＳ９４７）。
【００９８】
復号に失敗した場合に（ステップＳ９４４：Ｎｏ）、メモリコントローラ３００は、リードエラーをホストコンピュータ１００に出力する（ステップＳ９４８）。また、訂正数がＮ未満である場合（ステップＳ９４６：Ｎｏ）、または、ステップＳ９４７の後、もしくはステップＳ９４８の後、メモリコントローラ３００は、レジスタにアドレスがあるか否かを判断する（ステップＳ９４９）。アドレスがある場合（ステップＳ９４９：Ｙｅｓ）、メモリコントローラ３００はステップＳ９４１に戻り、アドレスがない場合（ステップＳ９４９：Ｎｏ）、メモリコントローラ３００はコントローラ側リフレッシュ処理を終了する。
【００９９】
なお、メモリコントローラ３００は、コントローラ側リード処理とコントローラ側リフレッシュ処理との両方で、リードデータの復号を行っているが、コントローラ側リフレッシュ処理において復号を行わない構成としてもよい。ただし、コントローラ側リード処理の終了から、コントローラ側リフレッシュ処理の開始までの間に、保持させたアドレスがアクセスされてＲＤが進行するおそれがあるため、コントローラ側リフレッシュ処理においても復号を行うことが望ましい。
【０１００】
このように、本技術の第２の実施の形態によれば、メモリコントローラ３００は、エラーが生じたアドレスを保持しておき、後に一定の条件が満たされると、そのアドレスにおいてリフレッシュを行うため、アクセス効率を向上させることができる。
【０１０１】
＜３．第３の実施の形態＞
上述の第１の実施の形態では、メモリコントローラ３００は、リードのたびに、リードデータのエラー数が所定の許容値以上であれば、そのアドレスにおいてリフレッシュを行っていた。しかし、リードのたびにエラー数に応じてリフレッシュを行うのでなく、リードやライトのアクセス頻度が低下したときにまとめてリフレッシュを行った方が、アクセス効率を向上させることができる。例えば、アクセス頻度が低下した際にホストコンピュータ１００がリフレッシュモードを設定し、そのリフレッシュモードの際にメモリコントローラ３００がリフレッシュを行う構成であってもよい。この第３の実施の形態のメモリシステムは、アクセス頻度が低下してリフレッシュモードに設定された際にメモリコントローラ３００がリフレッシュを行う点において第１の実施の形態と異なる。
【０１０２】
図１９は、第３の実施の形態におけるメモリコントローラ３００の機能構成例を示すブロック図である。第３の実施の形態のメモリコントローラ３００は、リフレッシュ制御部３３０の代わりにリフレッシュ制御部３３２を備える点において第１の実施の形態と異なる。
【０１０３】
リフレッシュ制御部３３２は、ホストコンピュータ１００からモード切替信号を受け取る。このモード切替信号は、通常モードおよびリフレッシュモードのいずれかへの切り替えを指示する信号である。ここで、通常モードは、リードやライトを行うためのモードである。リフレッシュ制御部３３２は、モード切替信号によりリフレッシュモードに切り替えられた場合に、不揮発性メモリ４００の全アドレスを順に指定してリードリクエストを発行する。そして、リフレッシュ制御部３３２は、訂正数がＮ以上であれば、リフレッシュリクエストおよびビットセレクト信号を不揮発性メモリ４００に供給する。
【０１０４】
また、第３の実施の形態のホストコンピュータ１００は、例えば、アクセス頻度が一定以下に低下した場合にリフレッシュモードに切り替え、そうでない場合に通常モードに切り替える。
【０１０５】
図２０は、第３の実施の形態におけるストレージ２００の動作の一例を示すフローチャートである。第３の実施の形態におけるストレージ２００の動作は、ステップＳ９０７の代わりにステップＳ９０８を実行する点以外は、第２の実施の形態と同様である。
【０１０６】
コマンドがリードコマンドでない場合（ステップＳ９０６：Ｎｏ）、または、ステップＳ９０５の後、もしくは、ステップＳ９３０およびＳ９２１の後、メモリコントローラ３００は、リフレッシュモードに切り替えられたか否かを判断する（ステップＳ９０８）。リフレッシュモードに切り替えられた場合に（ステップＳ９０８：Ｙｅｓ）、メモリコントローラ３００は、ステップＳ９４０およびＳ９２０を実行する。
【０１０７】
リフレッシュモードに切り替えられていない場合に（ステップＳ９０８：Ｎｏ）、または、ステップＳ９４０およびＳ９２０の両方が終了した後、メモリコントローラ３００は、ステップＳ９０２に戻る。
【０１０８】
図２１は、第３の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。第３の実施の形態におけるコントローラ側リード処理は、ステップＳ９１５およびＳ９１６を実行しない点以外は、第１の実施の形態のコントローラ側リード・リフレッシュ処理と同様である。
【０１０９】
図２２は、第３の実施の形態におけるコントローラ側リフレッシュ処理の一例を示すフローチャートである。第３の実施の形態のコントローラ側リフレッシュ処理は、ステップＳ９４１およびＳ９４９の代わりにステップＳ９５０、Ｓ９５１およびＳ９５２を実行する点以外は、第２の実施の形態と同様である。
【０１１０】
メモリコントローラ３００は、不揮発性メモリ４００の先頭アドレスをリードアドレスに設定し（ステップＳ９５０）、ステップＳ９４２乃至Ｓ９４８を実行する。そして、訂正数がＮに満たない場合（ステップＳ９４６：Ｎｏ）、または、ステップＳ９４７もしくはステップＳ９４８の後、メモリコントローラ３００は、リードアドレスが不揮発性メモリ４００の最後のアドレスであるか否かを判断する（ステップＳ９５１）。最後のアドレスでない場合に（ステップＳ９５１：Ｎｏ）、メモリコントローラ３００は、次のアドレスをリードアドレスに設定し（ステップＳ９５２）、ステップＳ９４２に戻る。一方、最後のアドレスである場合に（ステップＳ９５１：Ｙｅｓ）、メモリコントローラ３００は、コントローラ側リフレッシュ処理を終了する。
【０１１１】
このように、本技術の第３の実施の形態によれば、メモリコントローラ３００は、リフレッシュモードに設定された際にリフレッシュを行うため、アクセス効率を向上させることができる。
【０１１２】
＜４．第４の実施の形態＞
上述の第１の実施の形態では、メモリコントローラ３００は、エラー数が所定の許容値以上となった場合にリフレッシュリクエストを発行していた。しかし、エラーには、ＲＤエラーやＲＴＮエラーの種類があり、ＲＤエラーでは、「１」が「０」に反転するなどの一定のパターンしか見られない。このため、エラーのパターンに関わらず、エラー数がＮ個以上になった際にリフレッシュを行うと、ＲＤエラーでないエラーしか生じなかった際にもリフレッシュリクエストが発行されてアクセス効率が低下するおそれがある。このため、ＲＤエラーが想定される一定のパターンのエラー数が所定の許容値以上の際にメモリコントローラ３００がリフレッシュリクエストを発行することが望ましい。この第４の実施の形態のメモリコントローラ３００は、一定のパターンのエラー数がＮ’個以上になった際にメモリコントローラ３００がリフレッシュリクエストを発行する点において第１の実施の形態と異なる。
【０１１３】
図２３は、第４の実施の形態におけるコントローラ側リード・リフレッシュ処理の一例を示すフローチャートである。第４の実施の形態のコントローラ側リード・リフレッシュ処理は、ステップＳ９１５の代わりにステップＳ９１８を実行する点において第１の実施の形態と異なる。
【０１１４】
復号データの出力（ステップＳ９１４）の後、メモリコントローラ３００は、「０」から「１」に訂正されたエラー数が許容値Ｎ’（Ｎ’は整数）以上であるか否かを判断する（ステップＳ９１８）。訂正数がＮ’以上である場合には（ステップＳ９１８：Ｙｅｓ）、メモリコントローラ３００は、ステップＳ９１６を実行する。一方、訂正数がＮ’未満である場合（ステップＳ９１８：Ｎｏ）、または、ステップＳ９１７の後、メモリコントローラ３００は、コントローラ側リード・リフレッシュ処理を終了する。
【０１１５】
このように、本技術の第４の実施の形態によれば、メモリコントローラ３００は、一定のパターンのエラー数が許容値以上である場合にリフレッシュを行うため、そのパターン以外のエラーのメモリセルを除いてリフレッシュすることができる。これにより、不要なリフレッシュを抑制して、メモリセルの劣化を防止することができる。
【０１１６】
＜５．第５の実施の形態＞
上述の第１の実施の形態では、不揮発性メモリ４００として２値メモリセルを想定していたが多値メモリセルを設けてもよい。この第５の実施の形態のメモリシステムは、不揮発性メモリ４００として、多値メモリセルを備える点において第１の実施の形態と異なる。
【０１１７】
図２４は、第５の実施の形態における不揮発性メモリ４００の一構成例を示すブロック図である。第５の実施の形態の不揮発性メモリ４００は、メモリセルアレイ４２０の代わりにメモリセルアレイ４２１を備える点において第１の実施の形態と異なる。
【０１１８】
メモリセルアレイ４２１は、二次元格子状に複数の多値メモリが設けられた点において第１の実施の形態と異なる。多値メモリセルのそれぞれには、複数のビットが保持される。
【０１１９】
図２５は、第５の実施の形態における読み出しを繰り返した後のメモリセルの抵抗分布の一例を示す図である。同図における縦軸は、メモリセルのセル数であり、横軸は、抵抗値である。ＲｅＲＡＭの多値メモリセルでは、その抵抗分布は、２つの閾値（Ｒｒｅｆ１_ＨおよびＲｒｅｆ１_Ｌなど）を境に３つの分布に分かれている。これらは、例えば、低抵抗状態（ＬＲＳ）、中抵抗状態（ＭＲＳ：Middle-Resistance State）、および、高抵抗状態（ＨＲＳ）と呼ばれる。ＬＲＳには、例えば、「１」の値が割り当てられ、ＭＲＳには「２」が割り当てられ、ＨＲＳには「０」が割り当てられる。
【０１２０】
また、図２５における点線の曲線は、書き換え直後のメモリセルの状態を示し、実線の曲線は、センス信号による読み出しの繰り返しにより変化したメモリセルの状態を示す。同図に例示するように、読み出しが繰り返されると抵抗値が高抵抗側へずれてしまう。このＲＤにより、「１」を書き込んだビットから、ＭＲＳに対応する「２」が読み出されるＲＤエラーが発生してしまう。あるいは、「２」を書き込んだビットから、ＨＲＳに対応する「０」が読み出されるＲＤエラーが発生してしまう。同図における斜線部分は、ＲＤエラーが生じた部分を示す。
【０１２１】
図２６は、第５の実施の形態における読み出し回数の増加に伴う抵抗値の変化の一例を示す図である。同図における縦軸は、抵抗値であり、横軸は読み出し回数を示す。同図におけるａは、ＬＲＳに対応する「１」が書き込まれたメモリセルの抵抗値の変化を示す図である。左端の１回目の読み出しでは、抵抗値が参照抵抗値Ｒｒｅｆ１_Ｌより低く、「１」の値が正常に読み出される。そして、読み出しの繰り返しに伴ってＲＤにより抵抗値が上昇し、ｍ’回目において参照抵抗値Ｒｒｅｆ１_Ｌを超えたものとする。この結果、ＭＲＳに対応する「２」の値が誤って読み出されるＲＤエラーが生じる。
【０１２２】
メモリコントローラ３００は、ｍ’回目のリードデータからエラーを検出するとリフレッシュリクエストを発行し、不揮発性メモリ４００は、参照抵抗値をＲｒｅｆ２_ＬおよびＲｒｅｆ２_Ｈに変更して、ｍ’＋１回目の再読み出しを行う。ＲＤエラーであれば、ｍ’＋１回目では、正しい論理値「１」が読み出される。この場合に不揮発性メモリ４００は、そのメモリセルを「１」に書き換える。
【０１２３】
また、図２６におけるｂは、ＭＲＳに対応する「２」が書き込まれたメモリセルの抵抗値の変化を示す図である。左端の１回目の読み出しでは、抵抗値が参照抵抗値Ｒｒｅｆ１_ＨおよびＲｒｅｆ１_Ｌの間であり、「２」の値が正常に読み出される。そして、読み出しの繰り返しに伴ってＲＤにより抵抗値が上昇し、ｎ’回目において参照抵抗値Ｒｒｅｆ１_Ｈを超えたものとする。この結果、ＨＲＳに対応する「０」の値が誤って読み出されるＲＤエラーが生じる。
【０１２４】
メモリコントローラ３００は、ｎ’回目のリードデータからエラーを検出するとリフレッシュリクエストを発行し、不揮発性メモリ４００は、参照抵抗値をＲｒｅｆ２_ＬおよびＲｒｅｆ２_Ｈに変更して、ｎ’＋１回目の再読み出しを行う。ＲＤエラーであれば、ｎ’＋１回目では、正しい論理値「２」が読み出される。この場合に不揮発性メモリ４００は、そのメモリセルを「２」に書き換える。
【０１２５】
このように、本技術の第５の実施の形態によれば、不揮発性メモリ４００が、複数の閾値を基準としてリードデータをメモリセルごとに読み出し、それらの閾値を変えて再リードデータを読み出すため、多値メモリセルをメモリセルとして用いることができる。
【０１２６】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１２７】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１２８】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【０１２９】
なお、本技術は以下のような構成もとることができる。
（１）第１の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、
前記リードデータの誤りの有無を検出して前記複数のメモリセルのうち前記誤りのあるメモリセルを特定する誤り検出部と、
前記第１の閾値と異なる第２の閾値を基準として前記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、
前記特定されたメモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部と
を具備するメモリシステム。
（２）前記特定されたメモリセルのうち所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させるリフレッシュ制御部をさらに具備する
前記（１）記載のメモリシステム。
（３）前記誤りのあるメモリセルに割り当てられたアドレスを保持するアドレス保持部をさらに具備し、
前記リフレッシュ制御部は、所定の条件が満たされた場合には前記保持されたアドレスを読み出して当該アドレスを指定して前記リード処理部に前記リード処理を実行させる
前記（２）記載のメモリシステム。
（４）前記所定の条件は、前記保持されたアドレスの個数が所定個数を超えることである前記（２）または（３）記載のメモリシステム。
（５）前記所定の条件は、前記リフレッシュ処理の実行を指示するリフレッシュコマンドを前記リフレッシュ制御部が受信したことである
前記（２）または（３）記載のメモリシステム。
（６）前記複数のメモリセルは、前記複数のアドレスのいずれかが各々に割り当てられた複数の区画に分割され、
前記リフレッシュ制御部は、前記リフレッシュ処理を行うためのリフレッシュモードが設定された場合には前記複数のアドレスのそれぞれを順に指定して前記リード処理部に前記リード処理を実行させる
前記（２）に記載のメモリシステム。
（７）前記リフレッシュ制御部は、前記所定のパターンの前記誤りの個数が許容値を超える場合には前記特定されたメモリセルのうち前記所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させる
前記（２）から（５）のいずれかに記載のメモリシステム。
（８）前記複数のメモリセルのそれぞれは、複数のビットを含むデータを保持し、
前記第１および第２の閾値のそれぞれは、複数の閾値を含む
前記（１）から（７）のいずれかに記載のメモリシステム。
（９）前記メモリセルの特性値は、データが読み出されるたびに特定の方向へ変化し、
前記第２の閾値は、前記第１の閾値から前記特定の方向へ変化させた値である
前記（１）から（８）のいずれかに記載のメモリシステム。
（１０）複数のメモリセルと、
第１の閾値を基準として前記複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、
前記第１の閾値と異なる第２の閾値を基準として前記リードデータに誤りのあるメモリセルの各々からデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、
前記リードデータに誤りのある前記メモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部と
を具備する記憶装置。
（１１）リード処理部が、第１の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理手順と、
誤り検出部が、前記リードデータの誤りの有無を検出して前記特定されたメモリセルのうち前記誤りのあるメモリセルを特定する誤り検出手順と、
再リード処理部が、前記第１の閾値と異なる第２の閾値を基準として前記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理手順と、
リフレッシュ処理部が、前記特定されたメモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理手順と
を具備するメモリシステムの制御方法。
【符号の説明】
【０１３０】
１００  ホストコンピュータ
２００  ストレージ
３００  メモリコントローラ
３０１  ホストインターフェース
３０２  ＲＡＭ
３０３  ＣＰＵ
３０４  ＥＣＣ処理部
３０５  ＲＯＭ
３０６、４５０  バス
３０７  メモリインターフェース
３１０  ライト制御部
３２０、３２１  リード制御部
３３０、３３１、３３２  リフレッシュ制御部
３４０  アドレスレジスタ
４００  不揮発性メモリ
４１０  データバッファ
４２０、４２１  メモリセルアレイ
４３０  ドライバ
４４０  アドレスデコーダ
４６０  制御インターフェース
４７０  メモリ制御部
４７１  リクエストデコーダ
４７２  ライト処理部
４７３  リード処理部
４７４  再リード処理部
４７５  リフレッシュ処理部
【図１】
0006497394.tif 000002
【図２】
0006497394.tif 000003
【図３】
0006497394.tif 000004
【図４】
0006497394.tif 000005
【図５】
0006497394.tif 000006
【図６】
0006497394.tif 000007
【図７】
0006497394.tif 000008
【図８】
0006497394.tif 000009
【図９】
0006497394.tif 000010
【図１０】
0006497394.tif 000011
【図１１】
0006497394.tif 000012
【図１２】
0006497394.tif 000013
【図１３】
0006497394.tif 000014
【図１４】
0006497394.tif 000015
【図１５】
0006497394.tif 000016
【図１６】
0006497394.tif 000017
【図１７】
0006497394.tif 000018
【図１８】
0006497394.tif 000019
【図１９】
0006497394.tif 000020
【図２０】
0006497394.tif 000021
【図２１】
0006497394.tif 000022
【図２２】
0006497394.tif 000023
【図２３】
0006497394.tif 000024
【図２４】
0006497394.tif 000025
【図２５】
0006497394.tif 000026
【図２６】
0006497394.tif 000027