(57)【特許請求の範囲】
【請求項１】
ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリの書込み回数である書込み回数情報を保持する書込み回数情報保持部と、
前記保持された前記書込み回数情報に基づいて前記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断部と、
前記ページに対して書込みを行う際に前記判断の結果により前記リフレッシュが必要となる場合には前記書込みに加えて前記リフレッシュをさらに行う書込み制御部と
を具備するメモリコントローラ。
【請求項２】
前記書込み回数情報保持部は、前記ページ毎に前記書込み回数情報を保持する請求項１記載のメモリコントローラ。
【請求項３】
前記書込み回数情報保持部は、複数の前記ページからなるブロック毎に前記書込み回数情報を保持する請求項１記載のメモリコントローラ。
【請求項４】
前記判断部は、前記保持された前記書込み回数情報が所定の閾値よりも大きい場合に前記リフレッシュが必要と判断する請求項１記載のメモリコントローラ。
【請求項５】
前記書込み制御部は、前記ページに記憶されているデータの読出しを行って当該読み出したデータの各ビットの値を反転させたデータを前記ページに書き込むことにより前記リフレッシュを行う請求項１記載のメモリコントローラ。
【請求項６】
前記書込み制御部は、全ビットが同一の値であるページサイズの第１のデータと前記第１のデータの全ビットを反転させた第２のデータとを前記ページに対して順に書き込むことにより前記リフレッシュを行う請求項１記載のメモリコントローラ。
【請求項７】
前記書込み回数のカウントを行い、前記書込み制御部において前記リフレッシュを伴わない前記書込みが行われた場合には前記カウントに基づく前記書込み回数により前記保持された前記書込み回数情報を更新し、前記書込み制御部において前記リフレッシュを伴う前記書込みが行われた場合には前記保持された前記書込み回数情報を初期化するカウント部をさらに具備する請求項１記載のメモリコントローラ。
【請求項８】
前記ページ毎の書込みの累計回数である書込み累計回数情報を保持する書込み累計回数情報保持部と、
前記保持された前記書込み累計回数情報に基づいて書込みの累計回数が多いページと書込みの累計回数が少ないページとの間で一方のページから読み出したデータを他方のページに書き込むデータ入替えを制御するデータ入替え制御部と、
前記書込みの累計回数のカウントを行い、当該カウントに基づく前記書込みの累計回数により前記保持された前記書込み累計回数情報を更新する累計カウント部と
をさらに具備し、
前記判断部は、前記リフレッシュが必要か否かの判断を前記データ入替えの際にさらに行う
請求項７記載のメモリコントローラ。
【請求項９】
ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリと、
前記不揮発メモリの書込み回数である書込み回数情報を保持する書込み回数情報保持部と、
前記保持された前記書込み回数情報に基づいて前記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断部と、
前記ページに対して書込みを行う際に前記判断の結果により前記リフレッシュが必要となる場合には前記書込みに加えて前記リフレッシュをさらに行う書込み制御部と
を具備する記憶装置。
【請求項１０】
ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリと、
前記不揮発メモリの書込み回数である書込み回数情報を保持する書込み回数情報保持部と、
前記保持された前記書込み回数情報に基づいて前記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断部と、
前記ページに対して書込みを行う際に前記判断の結果により前記リフレッシュが必要となる場合には前記書込みに加えて前記リフレッシュをさらに行う書込み制御部と
を備える記憶装置と、
前記記憶装置にアクセスするホストコンピュータと
を具備する情報処理システム。
【請求項１１】
ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリの書込み回数である書込み回数情報に基づいて前記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断手順と、
前記ページに対して書込みを行う際に前記判断の結果により前記リフレッシュが必要となる場合には前記書込みに加えて前記リフレッシュをさらに行う書込み制御手順と
を具備するメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリコントローラに関する。詳しくは、不揮発メモリに対するデータの書込みを行うメモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法に関する。
【背景技術】
【０００２】
従来、情報処理システムの記憶装置に不揮発メモリが使用されている。この不揮発メモリには、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）やＲｅＲＡＭ（Resistance Random Access Memory）などが該当する。これらの不揮発メモリは、電源がオフとなって、電力の供給が絶たれた場合であっても、記憶されたデータを維持することができる。【０００３】
しかし、これらの不揮発メモリにおいて、記憶されたデータが破壊される現象が知られている。例えば、ＲｅＲＡＭは、メモリセル内の記憶素子の抵抗値を高抵抗の状態または低抵抗の状態とし、これらの抵抗値の状態を論理値に対応させてデータの記憶を行うメモリである。この記憶素子の抵抗値が時間の経過とともに変化し、上述した高抵抗の状態および低抵抗の状態を判別することができなくなる場合が生じる。この場合、記憶されたデータが破壊に至ることとなる。【０００４】
この対策として、メモリセルに記憶されたデータをデータ一時保管領域に保管して、メモリセルの記憶データの消去を行う。その後、一時保管領域に保管されていたデータの書戻しを行う、いわゆるリフレッシュを行う記憶装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１８２９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の従来技術では、複数のメモリセルからなるデータ記憶ブロック毎にこのブロック内で行われた書換え回数をカウントする。このカウント値が所定の回数に達した場合に、ブロック単位で上述したリフレッシュを行っている。このため、ブロックのサイズに等しいサイズの一時保管領域が必要となり、メモリチップのサイズの増大を招くという問題があった。【０００７】
本技術はこのような状況に鑑みて生み出されたものであり、データの一時保管を行うことなくリフレッシュを行い、不揮発メモリにおけるデータの破壊を防ぐことを目的とする。
【課題を解決するための手段】
【０００８】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリの書込み回数である書込み回数情報を保持する書込み回数情報保持部と、上記保持された上記書込み回数情報に基づいて上記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断部と、上記ページに対して書込みを行う際に上記判断の結果により上記リフレッシュが必要となる場合には上記書込みに加えて上記リフレッシュをさらに行う書込み制御部とを具備するメモリコントローラである。これにより、書込み回数情報に基づいて書込みの際にリフレッシュを行うという作用をもたらす。【０００９】
また、この第１の側面において、上記書込み回数情報保持部は、上記ページ毎に上記書込み回数情報を保持してもよい。これにより、ページ毎に書込み回数情報が保持されるという作用をもたらす。【００１０】
また、この第１の側面において、上記書込み回数情報保持部は、複数の上記ページからなるブロック毎に上記書込み回数情報を保持してもよい。これにより、ブロック毎に書込み回数情報が保持されるという作用をもたらす。【００１１】
また、この第１の側面において、上記判断部は、上記保持された上記書込み回数情報が所定の閾値よりも大きい場合に上記リフレッシュが必要と判断してもよい。これにより、書込み回数が所定の閾値よりも大きい場合にリフレッシュが必要と判断されるという作用をもたらす。【００１２】
また、この第１の側面において、上記書込み制御部は、上記ページに記憶されているデータの読出しを行って当該読み出したデータの各ビットの値を反転させたデータを上記ページに書き込むことにより上記リフレッシュを行ってもよい。これにより、記憶されているデータの反転データが書き込まれることによりリフレッシュが行われるという作用をもたらす。【００１３】
また、この第１の側面において、上記書込み制御部は、全ビットが同一の値であるページサイズの第１のデータと上記第１のデータの全ビットを反転させた第２のデータとを上記ページに対して順に書き込むことにより上記リフレッシュを行ってもよい。これにより、全ビットが同一の値である第１のデータとこれを反転させた第２のデータとを順に書き込むことによりリフレッシュが行われるという作用をもたらす。【００１４】
また、この第１の側面において、上記書込み回数のカウントを行い、上記書込み制御部において上記リフレッシュを伴わない上記書込みが行われた場合には上記カウントに基づく上記書込み回数により上記保持された上記書込み回数情報を更新し、上記書込み制御部において上記リフレッシュを伴う上記書込みが行われた場合には上記保持された上記書込み回数情報を初期化するカウント部をさらに具備してもよい。これにより、書込み回数のカウントが行われ、書込み制御部におけるリフレッシュの有無に基づいて書込み回数情報の更新または初期化が行われるという作用をもたらす。【００１５】
また、この第１の側面において、上記ページ毎の書込みの累計回数である書込み累計回数情報を保持する書込み累計回数情報保持部と、上記保持された上記書込み累計回数情報に基づいて書込みの累計回数が多いページと書込みの累計回数が少ないページとの間で一方のページから読み出したデータを他方のページに書き込むデータ入替えを制御するデータ入替え制御部と、上記書込みの累計回数のカウントを行い、当該カウントに基づく上記書込みの累計回数により上記保持された上記書込み累計回数情報を更新する累計カウント部とをさらに具備し、上記判断部は、上記リフレッシュが必要か否かの判断を上記データ入替えの際にさらに行ってもよい。これにより、データ入替えにおける書込みの際にもリフレッシュが行われるという作用をもたらす。【００１６】
また、本技術の第２の側面は、ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリと、上記不揮発メモリの書込み回数である書込み回数情報を保持する書込み回数情報保持部と、上記保持された上記書込み回数情報に基づいて上記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断部と、上記ページに対して書込みを行う際に上記判断の結果により上記リフレッシュが必要となる場合には上記書込みに加えて上記リフレッシュをさらに行う書込み制御部とを具備する記憶装置である。これにより、書込み回数情報に基づいて書込みの際にリフレッシュを行うという作用をもたらす。【００１７】
また、本技術の第３の側面は、ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリと、上記不揮発メモリの書込み回数である書込み回数情報を保持する書込み回数情報保持部と、上記保持された上記書込み回数情報に基づいて上記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断部と、上記ページに対して書込みを行う際に上記判断の結果により上記リフレッシュが必要となる場合には上記書込みに加えて上記リフレッシュをさらに行う書込み制御部とを備える記憶装置と、上記記憶装置にアクセスするホストコンピュータとを具備する情報処理システムである。これにより、書込み回数情報に基づいて書込みの際にリフレッシュを行うという作用をもたらす。【００１８】
また、本技術の第４の側面は、ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリの書込み回数である書込み回数情報に基づいて上記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断手順と、上記ページに対して書込みを行う際に上記判断の結果により上記リフレッシュが必要となる場合には上記書込みに加えて上記リフレッシュをさらに行う書込み制御手順とを具備するメモリの制御方法である。これにより、書込み回数情報に基づいて書込みの際にリフレッシュを行うという作用をもたらす。
【発明の効果】
【００１９】
本技術によれば、データの一時保管を行うことなくリフレッシュを行い、不揮発メモリにおけるデータの破壊を防ぐという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００２０】
【図１】本技術の実施の形態における情報処理システムの構成例を示す図である。
【図２】本技術の第１の実施の形態における制御部２１０の構成例を示す図である。
【図３】本技術の第１の実施の形態におけるメモリセルの構成例を示す図である。
【図４】本技術の第１の実施の形態におけるデータの書込みを示す図である。
【図５】本技術の第１の実施の形態におけるリフレッシュ書込みを示す図である。
【図６】本技術の第１の実施の形態における書込み処理の処理手順の一例を示す図である。
【図７】本技術の第２の実施の形態におけるリフレッシュ書込みを示す図である。
【図８】本技術の第３の実施の形態におけるメモリ３００の構成例を示す図である。
【図９】本技術の第３の実施の形態におけるメモリセルアレイ３４０の構成例を示す図である。
【図１０】本技術の第４の実施の形態における制御部２１０の構成例を示す図である。
【図１１】本技術の第４の実施の形態における書込み処理の処理手順の一例を示す図である。
【発明を実施するための形態】
【００２１】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（データを反転することによりリフレッシュを行う場合の例）
２．第２の実施の形態（全ビット「０」および全ビット「１」にすることによりリフレッシュを行う場合の例）
３．第３の実施の形態（メモリにおいてリフレッシュの制御を行う場合の例）
４．第４の実施の形態（ウェアレベリングを行う場合の例）
５．変形例
【００２２】
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの構成例を示す図である。同図の情報処理システムは、ホストコンピュータ１００と、メモリコントローラ２００と、メモリ３００とを備える。
【００２３】
ホストコンピュータ１００は、プロセッサ１１０と、メモリコントローラインターフェース１０９とを備える。このホストコンピュータ１００は、画像処理等の処理を行うものである。このホストコンピュータ１００は、メモリコントローラ２００を介してメモリ３００にアクセスする。この際、ホストコンピュータ１００は、メモリコントローラ２００に対して書込みまたは読出し等のコマンドを発行してアクセスを行う。
【００２４】
プロセッサ１１０は、ホストコンピュータ１００の全体を制御するものである。メモリコントローラインターフェース１０９は、メモリコントローラ２００との間のやり取りを行うものである。
【００２５】
メモリコントローラ２００は、ホストインターフェース２０９と、制御部２１０と、メモリインターフェース２０８とを備える。このメモリコントローラ２００は、メモリ３００を制御するものである。また、このメモリコントローラ２００は、ホストコンピュータ１００が発行したコマンドを解釈し、メモリ３００に対して書込みリクエストまたは読出しリクエストを要求する。
【００２６】
ホストインターフェース２０９は、ホストコンピュータ１００との間のやり取りを行うものである。制御部２１０は、上述したコマンドに基づく制御等を行うものである。メモリインターフェース２０８は、メモリ３００との間のやり取りを行うものである。
【００２７】
メモリ３００は、メモリコントローラインターフェース３０９と、メモリデバイス制御部３１０と、メモリセルアレイ３２０とを備える。このメモリ３００は、ホストコンピュータ１００における処理に必要なデータの記憶を行うものである。
【００２８】
メモリコントローラインターフェース３０９は、メモリコントローラ２００との間のやり取りを行うものである。メモリデバイス制御部３１０は、上述したリクエストに基づいてメモリセルアレイ３２０に対する書込みおよび読出しを制御するものである。メモリセルアレイ３２０は、２次元に配置されたメモリセルにより構成され、データの記憶を行うものである。このメモリセルアレイ３２０は、ページサイズにより分割されたページを単位としてページアドレスによりアクセスされる。このページは、例えば、２Ｋバイトの大きさである。なお、メモリセルアレイ３２０には、不揮発メモリであるＲｅＲＡＭを想定する。
【００２９】
［情報処理システムにおける書込みおよび読出し処理］
ホストコンピュータ１００は、書込みを行う際に、書込みコマンドとこれに付随する書込みデータ、書込み先ページアドレスおよび書込みページ数をメモリコントローラ２００に対して発行する。メモリコントローラ２００の制御部２１０は、発行された書込みコマンドを解釈し、これに付随する書込みデータ、書込み先ページアドレスおよび書込みページ数に基づいてメモリ３００に対して書込みリクエストを要求する。メモリ３００のメモリデバイス制御部３１０は、このリクエストに基づいてメモリセルアレイ３２０に対して書込みを行う。
【００３０】
一方、読出しの際には、ホストコンピュータ１００は、読出しコマンドとこれに付随する読出し先ページアドレスおよび読出しページ数をメモリコントローラ２００に対して発行する。メモリコントローラ２００の制御部２１０は、このコマンドを解釈して、これに付随する読出し先ページアドレスおよび読出しページ数に基づいてメモリ３００に対して読出しリクエストを要求する。メモリ３００のメモリデバイス制御部３１０は、このリクエストに基づいてメモリセルアレイ３２０から読出しを行い、読み出したデータをメモリコントローラ２００に対して出力する。メモリコントローラ２００の制御部２１０はこの出力されたデータをホストコンピュータ１００に対して読出しデータとして出力する。
【００３１】
［メモリコントローラの制御部の構成］
図２は、本技術の第１の実施の形態における制御部２１０の構成例を示す図である。この制御部２１０は、読出し制御部２１１と、書込み制御部２１２と、ＥＣＣ処理部２１３と、書込み回数情報保持部２１４と、カウント部２１５と、判断部２１６とを備える。なお、バス２０７は、上記制御部２１０の各部を相互に接続するものである。
【００３２】
読出し制御部２１１は、メモリ３００に対するデータの読出しを行うものである。この読出し制御部２１１は、ホストコンピュータ１００が発行した読出しコマンドに基づいて読出しリクエストを生成し、メモリ３００に対して要求することにより読出しを行う。
【００３３】
書込み回数情報保持部２１４は、メモリ３００に対する書込み回数を書込み回数情報として保持するものである。ここで、書込み回数とは、メモリ３００のメモリセルアレイ３２０におけるページ毎の書込み回数である。書込み回数情報保持部２１４は、メモリセルアレイ３２０におけるページ数と同数の書込み回数情報を保持する。この書込み回数情報保持部２１４として、不揮発メモリにより構成されたメモリ装置を使用することができる。また、書込み回数情報保持部２１４として、ＳＲＡＭ等の揮発性メモリにより構成されたメモリ装置を使用してもよい。この場合には、メモリ３００のメモリセルアレイ３２０内に書込み回数情報を保存する領域を設ける必要がある。そして、情報処理システムの起動時に、メモリコントローラ２００は、メモリセルアレイ３２０から書込み回数情報を読み出して書込み回数情報保持部２１４に保持させる初期動作を行う。また、情報処理システムの停止の際には、メモリコントローラ２００は、書込み回数情報保持部２１４から書込み回数情報を読み出してメモリセルアレイ３２０に保存する必要がある。
【００３４】
判断部２１６は、書込み回数情報保持部２１４に保持された書込み回数に基づいて、リフレッシュが必要か否かを判断するものである。ここで、リフレッシュとは、メモリセルアレイ３２０のページを構成する全てのメモリセルの値を反転させる処理である。リフレッシュが必要か否かの判断は、例えば、ページにおける書込み回数が所定の閾値よりも大きいか否かに基づいて行うことができる。
【００３５】
書込み制御部２１２は、メモリ３００に対するデータの書込みを行うものである。また、この書込み制御部２１２は、書込みを行う際に判断部２１６の判断の結果によりリフレッシュが必要となる場合には書込みに加えてリフレッシュをさらに行う。書込み制御部２１２は、ホストコンピュータ１００が発行した書込みコマンドに基づいて書込みリクエストを生成して、メモリ３００に対して要求することにより書込みを行う。この書込みに加えてリフレッシュをさらに行う場合には、書込み制御部２１２は、書込みリクエストに代えて後述するリフレッシュ書込みリクエストをメモリ３００に対して要求する。これらのリクエストに基づいて、メモリ３００において書込みおよびリフレッシュが行われる。
【００３６】
カウント部２１５は、書込み回数のカウントを行い、書込み回数情報保持部２１４に保持された書込み回数情報の更新および初期化を行うものである。このカウント部２１５は、書込み制御部２１２においてリフレッシュを伴わない書込みが行われた場合には、書込み回数のカウントおよび書込み回数情報の更新を行う。この書込み回数のカウントは、例えば、次の手順により行うことができる。まず、カウント部２１５は、書込み回数情報保持部２１４から書込みが行われたページに対応する書込み回数の読出しを行う。次に、この読み出した書込み回数に値「１」を加算することによりカウントを行う。このカウントに基づく書込み回数は、新たな書込み回数情報として書込み回数情報保持部２１４に保持される。これにより、書込み回数情報の更新が行われる。
【００３７】
一方、書込み制御部２１２において書込みに加えてリフレッシュが行われた場合には、カウント部２１５は、書込み回数情報の初期化を行う。この書込み回数情報の初期化は、例えば、値「０」を新たな書込み回数情報として、書込み回数情報保持部２１４に保持させることにより行うことができる。
【００３８】
ＥＣＣ処理部２１３は、ホストコンピュータ１００から出力された書込みデータにパリティを付加してＥＣＣ符号にする符号化と、ＥＣＣ符号から元のデータを取り出す復号とを行うものである。この復号の際、データの誤りの訂正を行う。メモリ３００に対する書込みを行う際には、書込み制御部２１２は、ＥＣＣ処理部２１３に対して、書込みコマンドに付随する書込みデータのＥＣＣ符号化を行わせる。書込み制御部２１２は、このＥＣＣ符号化した書込みデータを新たな書込みデータとしてリクエストを生成し、メモリ３００に対して要求する。また、メモリ３００に対する読出しを行う際には、読出し制御部２１１は、読出しリクエストに基づいてメモリ３００から出力されたデータに対する復号および誤りの訂正をＥＣＣ処理部２１３に行わせる。その後、復号および誤りの訂正がされたデータを読出しデータとしてホストコンピュータ１００に対して出力する。
【００３９】
なお、これら読出し制御部２１１等のメモリコントローラ２００内の各ブロックは、専用のハードウェアにより構成される場合およびソフトウェアによりこれらの機能が実現される場合のどちらの形態であってもよい。
【００４０】
［メモリセルの構成］
図３は、本技術の第１の実施の形態におけるメモリセルの構成例を示す図である。同図は、メモリセルアレイ３２０であるＲｅＲＡＭのメモリセルの構成を表したものである。同図に表したように、記憶素子３２１およびＭＯＳＦＥＴ３２２により１ビットのメモリセル３２３が構成される。なお、ＭＯＳＦＥＴ３２２は記憶素子３２１を駆動するトランジスタである。記憶素子３２１の一端は共通の信号線であるプレート線に接続され、記憶素子３２１の他端はＭＯＳＦＥＴ３２２のドレイン端子に接続されている。ＭＯＳＦＥＴ３２２のゲート端子は複数のワード線の内の1本に接続され、ソース端子は複数のビット線の内の１本に接続されている。ワード線およびビット線は、メモリセル３２３を構成するＭＯＳＦＥＴ３２２に対してＸＹマトリクス状に配線されている。これにより、ワード線およびビッド線からそれぞれ１本を選択して信号を入力することにより、１個のメモリセル３２３が選択されてデータの書込みまたは読出しが行われる。例えば、同図において左端に記載されたメモリセル３２３を選択する場合には、ワード線＃１およびビット線＃１を選択する。
【００４１】
記憶素子３２１は、データを記憶する素子である。この記憶素子３２１は、印加された電圧の極性により抵抗値が変化する。例えば、記憶素子３２１のプレート線に接続された端子を基準として、記憶素子３２１の他の端子に正の極性となる電圧（書込み電圧）を印加することにより記憶素子３２１を高抵抗の状態にすることができる。逆に、記憶素子３２１の他の端子に負の極性となる書込み電圧を印加することにより記憶素子３２１を低抵抗の状態にすることができる。なお、以後の説明では、高抵抗の状態をＨＲＳ（High Resistance State）、低抵抗の状態をＬＲＳ（Low Resistance State）と称する。これら２つの状態を論理値に対応させて、データの記憶が行われる。例えば、記憶素子３２１がＬＲＳの場合を値「０」、記憶素子３２１がＨＲＳの場合を値「１」とすることができる。また、記憶素子３２１のＬＲＳおよびＨＲＳの２つの状態は、電源の供給が無くても保持される。
【００４２】
同図の左端のメモリセル３２３を例に挙げて、メモリセル３２３に対する書込み方法について説明する。メモリセル３２３に値「１」書き込む際には、ワード線＃１にオン電圧を印加してＭＯＳＦＥＴ３２２をオン状態にするとともに、ビット線＃１にプレート線に対して正の極性となる書込み電圧を印加する。これにより、記憶素子３２１は、ＨＲＳとなり、値「１」が書き込まれる。一方、メモリセル３２３に値「０」書き込む際には、ワード線＃１にオン電圧を印加するとともに、ビット線＃１にプレート線に対して負の極性となる電圧を印加する。これにより、記憶素子３２１は、ＬＲＳとなり、値「０」が書き込まれる。このようにして、メモリセル３２３に対する書込みを行うことができる。
【００４３】
なお、上述した書込みは、複数のメモリセル３２３に対して同時に行われる。例えば、ワード線＃１にオン電圧を印加し、ビット線＃１乃至＃ｎに対して書込みデータに応じた極性の電圧を印加する。これにより、ワード線＃１に接続されたｎ個のメモリセル３２３に対して書込みを行うことができる。この１度の書込み処理により書込み可能なメモリセル３２３の数が前述したページサイズに該当する。
【００４４】
なお、メモリセル３２３に対するデータの読出しは、記憶素子３２１に対して書込み電圧より低い電圧を印加して流れる電流を測定し、ＬＲＳおよびＨＲＳを判断することにより行う。
【００４５】
記憶素子３２１には、書込みに対して寿命が存在する。すなわち、書込みを繰り返すと、記憶素子３２１自体が破壊に至る。そのため、不必要な書込みを減らす必要があり、ＲｅＲＡＭにおいては、次のような書込み処理が行われる。まず、書込みに先立ってメモリセルに記憶されているデータを読み出すプレリードを行う。書込みデータとプレリードにより得られたデータ（以下、プレリードデータと称する。）とが異なる場合にのみ当該メモリセルに対する書込みを行う。このような書込み処理により、不必要な書込みを防ぎ、書込みに起因する記憶素子３２１の早期の破壊を回避することができる。
【００４６】
一方、記憶素子３２１は、その抵抗値が時間の経過とともに変化する。例えば、値「１」を書き込んでＨＲＳとしていた記憶素子３２１の抵抗値が時間の経過とともに低下してＬＲＳおよびＨＲＳを判断するための閾値に近い値に変化する。このような場合、データの読出しを行っても、事前に書き込んだデータの正常な読出しができないおそれがある。このように、ＲｅＲＡＭには、上述した記憶素子３２１の破壊とは別に、時間の経過に伴う記憶データの破壊が発生する。これを防止するため、記憶データの再書込みを行ってデータの書直しを行う必要がある。しかし、上述のように、プレリードデータと書込みデータとが異なるビットにのみ書込みが行われるため、メモリセルに記憶されたデータを再度書き込んでも、このデータの書直しは実行されない。そこで、メモリセルに記憶されている値を反転させる処理であるリフレッシュを行う必要がある。
【００４７】
このリフレッシュはデータの書込み後に当該データの破壊を生じる時間が経過する前に実行する必要がある。しかし、同じページに属するメモリセルであっても書込み後の経過時間が異なる状態が発生する。プレリードデータと書込みデータとが異なるビットにのみ書込みが行われるためである。例えば、ページに対してｍ回の書込みを行った場合、各ビットにおける書込み回数は０乃至ｍの範囲でばらつくことになる。このような場合であっても記憶素子３２１における記憶データの破壊を防ぐため、ページ毎の書込み回数を保持し、この書込み回数が所定の閾値を超えた場合に、当該ページに対してリフレッシュを行う。この閾値は、ページにおけるメモリセルのデータが１度も書き換えられなかった場合を想定し、データの破壊に至る時間に基づいて設定する必要がある。このリフレッシュを行うため、メモリコントローラ２００は、リフレッシュ書込みリクエストをメモリ３００に対して要求する。
【００４８】
［書込み方法］
図４は、本技術の第１の実施の形態におけるデータの書込みを示す図である。同図は、メモリデバイス制御部３１０が行う書込み処理である書込み処理４０１を表したものである。メモリデバイス制御部３１０は、メモリコントローラ２００からの書込みリクエストに基づいて書込み処理４０１を実行する。便宜上、ページサイズは８ビットを想定する。なお、同図においては、書込みデータをＷ、プレリードデータをＲと表現している。書込み処理４０１は、セット処理およびリセット処理により行うことができる。ここで、セット処理とは、書込み対象のビットの値を「１」から「０」に変更する処理である。また、リセット処理とは、書込み対象のビットの値を「０」から「１」に変更する処理である。これらはいずれもマスクデータに基づいて行われる。このマスクデータは、ページサイズとおなじサイズであり、ページにおけるセット処理またはリセット処理の対象となるビットの位置を特定するためのデータである。同図においては、マスクデータにおける値「０」のビットに対応するページのビットに対してセット処理またはリセット処理が行われ、マスクデータにおける値「１」のビットに対応するページのビットに対しては、これらの処理が行われない。
【００４９】
まず、書込みデータおよびプレリードデータからセット処理用マスクデータおよびリセット処理用マスクデータを生成する。セット処理用マスクデータは、プレリードデータのビット毎の否定演算の結果と書込みデータとについてビット毎の論理和演算を行うことにより算出することができる。これを論理式で表すと次式のような演算となる。
ＳＤａｔａ＝Ｗ｜〜Ｒ    
ただし、ＳＤａｔａは、セット処理用マスクデータを表す。｜および〜はそれぞれビット毎の論理和演算およびビット毎の否定演算を表す演算子である。また、リセット処理用マスクデータは、書込みデータのビット毎の否定演算の結果とプレリードデータとについてビット毎の論理和演算を行うことにより算出することができる。これを論理式で表すと次式のような演算となる。
ＲＤａｔａ＝〜Ｗ｜Ｒ
ただし、ＲＤａｔａは、リセット処理用マスクデータを表す。
【００５０】
これらのマスクデータを作成後、セット処理およびリセット処理を順に行う。これにより書込み処理４０１を実行することができる。
【００５１】
［リフレッシュ書込み方法］
図５は、本技術の第１の実施の形態におけるリフレッシュ書込みを示す図である。同図は、メモリデバイス制御部３１０が行うリフレッシュ書込みの処理を表したものである。同図のリフレッシュ書込みは、後述する反転処理４０２および２度の書込み処理４０１により構成される。このうち反転処理４０２および前段の書込み処理４０１がリフレッシュの処理に該当する。
【００５２】
同図の処理について説明する。まず、メモリデバイス制御部３１０は、プレリードを行ってプレリードデータを取得する。次に、メモリデバイス制御部３１０は、このプレリードデータに対して反転処理４０２を実行する。これは、取得したプレリードデータに対してビット毎の否定演算を行うことにより実行される。次に、メモリデバイス制御部３１０は、反転処理を行ったプレリードデータを書込みデータとする書込み処理４０１を実行する。これにより、ページにおける全てのメモリセルのデータを反転することができる。次にメモリデバイス制御部３１０は、データが反転されたメモリセルに対して書込み処理４０１を実行する。これにより、所望のデータの書込みを行うことができる。なお、これらの書込み処理４０１において生成されるセット処理およびリセット処理用マスクデータは、同図に表した通りである。
【００５３】
このように、本技術の実施の形態では、リフレッシュを書込みに付随して行う方式を採用している。これに対して、書込みとは別にリフレッシュを行う方式では、リフレッシュのためのデータの読出し、読み出したデータの退避および書き戻しを行う手順を要する。このため、データの退避のための一時記憶領域が必要となる。また、リフレッシュのためプレリードデータを反転させたデータの書込みを行った後、元のデータを再度書き込む必要があるため、本技術の実施の形態と比較して、書込み回数が増加する。
【００５４】
［書込み処理］
図６は、本技術の第１の実施の形態における書込み処理の処理手順の一例を示す図である。ホストコンピュータから書込みコマンドが発行されると、メモリコントローラ２００は、本処理を開始する。まず、メモリコントローラ２００は、書込み対象となるページの書込み回数情報を取得する（ステップＳ９０１）。次に、メモリコントローラ２００は、取得した書込み回数情報に基づいて、書込み回数が所定の閾値より大きいか否かについて判断する（ステップＳ９０２）。その結果、書込み回数が閾値より大きくない場合には（ステップＳ９０２：Ｎｏ）、メモリコントローラ２００は、メモリ３００に対して書込みリクエストを要求し、書込みを行う（ステップＳ９０３）。次に、メモリコントローラ２００は、書込み回数をインクリメントし、新たな書込み情報として書込み回数情報保持部２１４に保持させて、書込み情報を更新する（ステップＳ９０４）。その後、ステップＳ９０８の処理に移行する。
【００５５】
一方、書込み回数が閾値より大きい場合には（ステップＳ９０２：Ｙｅｓ）、メモリコントローラ２００は、メモリ３００に対してリフレッシュ書込みリクエストを要求し、リフレッシュ書込みを行う（ステップＳ９０５）。次に、メモリコントローラ２００は、値「０」の書込み回数情報を書込み回数情報保持部に保持させて、書込み情報を初期化し（ステップＳ９０６）、ステップＳ９０８の処理に移行する。ステップＳ９０８において、メモリコントローラ２００は、全てのページについて書込み処理が終了したか否かを判断する（ステップＳ９０８）。その結果、全てのページについて書込み処理が終了した場合には（ステップＳ９０８：Ｎｏ）、メモリコントローラ２００は、書込み処理を終了する。一方、次に書込みを行うページが存在する場合には（ステップＳ９０８：Ｙｅｓ）、メモリコントローラ２００は、再度ステップＳ９０１からの処理を実行する。
【００５６】
このように、本技術の第１の実施の形態によれば、ページ毎の書込み回数に基づいてリフレッシュが必要か否かを判断してリフレッシュを行うことにより、ページを構成する全てのメモリセルの値が反転されて、メモリセルのデータの破壊を防ぐことができる。また、このリフレッシュは、書込み処理に伴って行われるため、リフレッシュの際のメモリセルに記憶されたデータの退避は不要となり、データ退避のための一時記憶装置を削除することができる。
【００５７】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、メモリセルのデータを反転させることによりリフレッシュを行っていた。これに対し、本技術の第２の実施の形態では、メモリセルに全ビット「０」および全ビット「１」のデータを順に書き込むことによりリフレッシュを行う。これにより、リフレッシュ処理を簡略化することができる。
【００５８】
［リフレッシュ書込み方法］
図７は、本技術の第２の実施の形態におけるリフレッシュ書込みを示す図である。同図のリフレッシュ書込みは、メモリセルの全ビットに値「０」を書き込む値「０」書込み処理４０３、メモリセルの全ビットに値「１」を書き込む値「１」書込み処理４０４および書込み処理４０１により構成される。このうち値「０」書込み処理４０３および値「１」書込み処理４０４が本技術の第２の実施の形態におけるリフレッシュの処理に該当する。同図の処理について説明する。まず、メモリデバイス制御部３１０は、プレリードを行ってプレリードデータを取得する。次に、メモリデバイス制御部３１０は、値「０」書込み処理４０３を実行する。これは、プレリードデータを反転してセット処理用マスクデータを生成し、これを用いてセット処理を行うことにより実行される。これによりメモリセルの全ビットに値「０」が書き込まれる。
【００５９】
次に、メモリデバイス制御部３１０は、値「１」書込み処理４０４を実行する。これは、全ビットが値「０」のリセット処理用マスクデータを用いてリセット処理を行うことにより実行される。これによりメモリセルの全ビットに値「１」が書き込まれる。次にメモリデバイス制御部３１０は、全ビットに値「１」が書き込こまれたメモリセルに対して書込み処理４０１を実行する。これにより、所望のデータの書込みを行うことができる。なお、これらの書込み処理において生成されるセット処理およびリセット処理用マスクデータは、同図に表した通りである。これらマスクデータの生成は比較的容易であるため、図５において説明したリフレッシュ書込みリクエストと比較して、簡便な処理にすることができる。また、図７における書込み処理４０１においては、リセット処理を省略してもよい。この場合には、さらに簡便な処理にすることができる。
【００６０】
これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００と同様であるため、説明を省略する。
【００６１】
このように、本技術の第２の実施の形態によれば、リフレッシュのためのマスクデータの生成を簡略化することができ、簡便な処理によりリフレッシュを行うことができる。
【００６２】
＜３．第３の実施の形態＞
上述の第１の実施の形態では、リフレッシュの制御をメモリコントローラ２００が行っていた。これに対し、本技術の第３の実施の形態では、メモリ３００がリフレッシュの制御を行う。これにより、メモリコントローラ２００における処理を簡略化することができる。
【００６３】
［メモリの構成］
図８は、本技術の第３の実施の形態におけるメモリ３００の構成例を示す図である。同図のメモリ３００は、メモリデバイス制御部３１０およびメモリセルアレイ３２０をそれぞれメモリデバイス制御部３３０およびメモリセルアレイ３４０に変更した点において、図１において説明したメモリ３００と異なっている。
【００６４】
メモリデバイス制御部３３０は、書込み制御部３３２と、カウント部３３５と、判断部３３６とを備える。なお、バス３３９は、上記メモリデバイス制御部３３０の各部を相互に接続するものである。
【００６５】
判断部３３６は、メモリセルアレイ３４０に保持された書込み回数に基づいて前述したリフレッシュが必要か否かを判断するものである。
【００６６】
書込み制御部３３２は、メモリコントローラ２００が要求した書込みリクエストに基づいて、メモリセルアレイ３４０に対するデータの書込みを行うものである。また、この書込み制御部３３２は、書込みを行う際に判断部３３６の判断の結果によりリフレッシュが必要となる場合には、リフレッシュ書込みを行う。これらのメモリセルアレイ３４０に対する書込みおよびリフレッシュ書込みは、図４および図５において説明した書込み処理およびリフレッシュ書込み処理により行うことができる。
【００６７】
カウント部３３５は、書込み回数のカウントを行い、カウント後の書込み回数により後述するメモリセルアレイ３４０に保持された書込み回数情報を更新するものである。
【００６８】
［メモリセルアレイの構成］
図９は、本技術の第３の実施の形態におけるメモリセルアレイ３４０の構成例を示す図である。同図は、メモリセルアレイ３４０の構成を模式的に表したものであり、メモリセルアレイ３４０は、ページ毎にデータを保持するデータ領域３４３と、書込み回数情報を保持する書込み回数情報保持領域３４４とを備える。
【００６９】
なお、これ以外のメモリコントローラ２００およびメモリ３００の構成は、本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００と同様であるため説明を省略する。なお、書込み回数情報保持領域３４４は、特許請求の範囲に記載の書込み回数情報保持部の一例である。
【００７０】
この様なメモリ３００を備えるシステムにおけるデータの書込みについて説明する。ホストコンピュータ１００から書込みコマンドが発行されると、メモリコントローラ２００は、これに基づく書込みリクエストをメモリ３００に対して要求する。メモリ３００のメモリデバイス制御部３３０は、要求されたリクエストに基づいてメモリセルアレイ３４０に対してデータの書込みを行う。その際、対象となるページについてリフレッシュが必要か否かを判断し、リフレッシュが必要な場合には、リフレッシュ書込みを行う。これにより、メモリコントローラ２００は、リフレッシュ処理に介在すること無く書込み処理を行うことができる。
【００７１】
このように、本技術の第３の実施の形態によれば、メモリ３００がリフレッシュの制御を行う。このため、メモリコントローラ２００におけるリフレッシュのための処理を省略することができ、メモリコントローラ２００の処理を簡略化することができる。
【００７２】
＜４．第４の実施の形態＞
上述の第１の実施の形態では、不揮発メモリにより構成された記憶装置によるシステムを想定していた。これに対し、本技術の第４の実施の形態では、この記憶装置にウェアレベリング機能を持たせたシステムを想定する。これにより、ウェアレベリング機能を有するシステムにおいてもリフレッシュ処理を行い、メモリセルのデータの破壊を防ぐことができる。
【００７３】
［ウェアレベリング処理］
ウェアレベリング処理とは、アクセス単位であるページ毎の書込み回数を平準化する処理である。前述のようにＲｅＲＡＭの書込みには寿命が存在する。書換え頻度の高いデータが特定のページに保存された場合、当該ページは他のページより書込み回数が増加する。このため、当該ページのメモリセルは他のページに対して比較的短時間で記憶素子が破壊され、保存されていたデータが消失する。これを防ぎ、システムの信頼性を向上させるため、書換え頻度の高いデータが特定のページに偏って保存されないようにページ毎の書込み回数の平準化を行う。具体的には、ページ毎の書込みの累計回数である書込み累計回数に基づいて、書込みの累計回数が多いページと書込みの累計回数が少ないページとの間でそれぞれのページに記憶されたデータの入替えを行う。このデータの入替えは、対象となるページおいて、一方のページから読み出したデータを他方のページに書き込むことにより行うことができる。
【００７４】
［システムの構成］
図１０は、本技術の第４の実施の形態における制御部２１０の構成例を示す図である。同図の制御部２１０は、ウェアレベリング制御部２１７、書込み累計回数情報保持部２１８および累計カウント部２１９をさらに備える点において、図２において説明した制御部２１０と異なっている。これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００と同様であるため、説明を省略する。
【００７５】
書込み累計回数情報保持部２１８は、ページ毎の書込み累計回数情報を保持するものである。
【００７６】
累計カウント部２１９は、書込み累計回数のカウントを行うものである。また、この累計カウント部２１９は、カウント後の書込み累計回数による書込み累計回数情報保持部２１８に保持された書込み累計回数情報の更新も行う。この累計カウント部２１９におけるカウントは、書込み制御部２１２において書込みが行われた際に行われ、例えば、次の手順により行うことができる。まず、累計カウント部２１９は、書込み累計回数情報保持部２１８から書込みが行われたページに対応する書込み累計回数の読出しを行う。次に、この読み出した書込み累計回数に値「１」を加算することによりカウントを行う。このカウントに基づく書込み累計回数は、新たな書込み累計回数情報として書込み累計回数情報保持部２１８に保持される。これにより、書込み累計回数情報の更新が行われる。
【００７７】
ウェアレベリング制御部２１７は、メモリ３００に対して、ウェアレベリング処理を行うものである。このウェアレベリング処理は、次のように行うことができる。まず、ウェアレベリング制御部２１７は、書込み累計回数情報保持部２１８から書込み累計回数情報を読み出して、ページ毎の書込み累計回数を比較し、書込み累計回数が多いページおよび少ないページを抽出する。次に、ウェアレベリング制御部２１７は、読出し制御部２１１に対してこれらのページからのデータの読出しを行わせる。次に、ウェアレベリング制御部２１７は、読み出されたデータを入れ替えて、対象のページに対して書込みを行う。この書込みは、書込み制御部２１２により行われる。これにより、ウェアレベリングを行うことができる。なお、ウェアレベリング制御部２１７は、特許請求の範囲に記載の入替え制御部の一例である。
【００７８】
判断部２１６は、データの入替えの際にも書込み回数情報保持部２１４に保持された書込み回数に基づくリフレッシュが必要か否かを判断する。
【００７９】
書込み制御部２１２は、データ入替えにおける書込みを行う際にも判断部２１６の判断の結果によりリフレッシュが必要となる場合には書込みに加えてリフレッシュをさらに行う。
【００８０】
カウント部２１５は、データ入替えにおける書込みが行われた際にも書込み回数のカウントを行い、書込み回数情報保持部２１４に保持された書込み回数情報の更新または初期化を行う。
【００８１】
［書込み処理］
図１１は、本技術の第４の実施の形態における書込み処理の処理手順の一例を示す図である。ホストコンピュータから書込みコマンドが発行されると、メモリコントローラ２００は、本処理を開始する。まず、メモリコントローラ２００は、書込み対象となるページの書込み回数情報および書込み累計回数情報を取得する（ステップＳ９５１）。次に、メモリコントローラ２００は、書込み回数が所定の閾値より大きいか否かについて判断する（ステップＳ９５２）。その結果、書込み回数が閾値より大きくない場合には（ステップＳ９５２：Ｎｏ）、メモリコントローラ２００は、メモリ３００に対して書込みリクエストを要求し、書込みを行う（ステップＳ９５３）。その後、メモリコントローラ２００は、書込み回数情報を更新し（ステップＳ９５４）、ステップＳ９５７の処理に移行する。
【００８２】
一方、書込み回数が閾値より大きい場合には（ステップＳ９５２：Ｙｅｓ）、メモリコントローラ２００は、メモリ３００に対してリフレッシュ書込みリクエストを要求し、リフレッシュ書込みを行う（ステップＳ９５５）。その後、メモリコントローラ２００は、書込み回数情報を初期化し（ステップＳ９５６）、ステップＳ９５７の処理に移行する。ステップＳ９５７において、メモリコントローラ２００は、書込み累計回数情報を更新する（ステップＳ６５７）。次に、メモリコントローラ２００は、全てのページについて書込み処理が終了したか否かを判断する（ステップＳ９５８）。その結果、全てのページについて書込み処理が終了した場合には（ステップＳ９５８：Ｎｏ）、メモリコントローラ２００は、書込み処理を終了する。一方、次に書込みを行うページが存在する場合には（ステップＳ９５８：Ｙｅｓ）、メモリコントローラ２００は、再度ステップＳ９５１からの処理を実行する。
【００８３】
このように、本技術の第４の実施の形態によれば、ウェアレベリング処理に伴う書込みにおいてリフレッシュを行うことにより、ウェアレベリング機能を有するシステムにおいてもメモリセルのデータの破壊を防ぐことができる。
【００８４】
＜変形例＞
［第１の変形例］
上述の第１の実施の形態および第２の実施の形態では、リフレッシュ書込みリクエストによりリフレッシュを行っていた。これに対し、複数のリクエストを組み合わせて、リフレッシュを行ってもよい。図５において説明したリフレッシュを例に挙げて説明する。リフレッシュ対象のページからデータを読み出すための読出しリクエストおよび読み出したデータを反転したデータを書き込むための書込みリクエストの２つのリクエストにより、リフレッシュを行う方式を採ることができる。同様に、図７においては、全ビットが値「０」のデータの書込みを要求するリクエストおよび全ビットが値「１」のデータの書込みを要求するリクエストの２つのリクエストにより、リフレッシュを行う方式を採ることができる。これにより、リフレッシュ書込みのリクエストの処理を省略することができ、メモリデバイス制御部３１０における処理を簡略化することができる。
【００８５】
［第２の変形例］
上述の実施の形態では、ページ単位でアクセスする不揮発メモリを使用し、ページ毎に書込み回数を管理してリフレッシュを行っていた。これに対し、複数のページにより構成されるブロックを単位として書込み回数を管理してリフレッシュを行ってもよい。例えば、２Ｋバイトのページサイズに対し、ブロックサイズを１２８Ｋバイトにして書込みおよびリフレッシュを行うことができる。これにより、メモリ３００に記憶するデータのサイズに合わせて書込み等の処理におけるデータのサイズを変更することができ、システムの利便性を向上させることができる。
【００８６】
［第３の変形例］
上述の実施の形態では、判断部２１６または、判断部３３６においてリフレッシュが必要か否かの判断を行う際の閾値をメモリ３００における全ての領域において共通の値としていた。これに対しメモリ３００における記憶領域を分割してそれぞれの領域において異なる閾値を設定して判断を行ってもよい。そして、書込みの発生頻度の高いデータおよび書込みの発生頻度の低いデータをそれぞれ異なる領域に記憶させて管理する。この際、書込みの発生頻度の低いデータを保持する領域には、書込みの発生頻度の高いデータを保持する領域よりも小さな閾値を設定する。書込みの発生頻度の低いデータは、書込みが行われる時間間隔が長くなるため、より少ない書込み回数によりリフレッシュを行う必要があるためである。これにより、データの書込み頻度に応じたリフレッシュを行うことができ、システムの信頼性を向上させることができる。
【００８７】
［第４の変形例］
上述の実施の形態では、ＥＣＣ処理部２１３において同一の誤り訂正処理の方式を使用していた。これに対し、複数の誤り訂正処理の方式を有する構成とし、必要に応じてこれらを入れ替えて使用してもよい。この際、使用する誤り訂正処理の誤り訂正能力に応じてリフレッシュが必要か否かの判断を行う際の閾値を変更することができる。例えば、誤り訂正能力の高い方式を使用する際には、閾値をより大きな値に変更する。リフレッシュを実行する間隔が長くなることによりメモリセルにおいてデータの破壊が発生したとしても、高い誤り訂正能力をもつ誤り訂正処理により、読み出したデータの誤りの訂正が可能となるためである。これにより、リフレッシュに伴う書込み回数を削減することができ、システムの信頼性を向上することができる。
【００８８】
以上のように、本技術の実施の形態によれば、データの退避を行うことなくリフレッシュを行い、不揮発メモリにおけるデータの破壊を防ぐことができる。
【００８９】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００９０】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【００９１】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【００９２】
なお、本技術は以下のような構成もとることができる。
（１）ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリの書込み回数である書込み回数情報を保持する書込み回数情報保持部と、
前記保持された前記書込み回数情報に基づいて前記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断部と、
前記ページに対して書込みを行う際に前記判断の結果により前記リフレッシュが必要となる場合には前記書込みに加えて前記リフレッシュをさらに行う書込み制御部と
を具備するメモリコントローラ。
（２）前記書込み回数情報保持部は、前記ページ毎に前記書込み回数情報を保持する前記（１）に記載のメモリコントローラ。
（３）前記書込み回数情報保持部は、複数の前記ページからなるブロック毎に前記書込み回数情報を保持する前記（１）に記載のメモリコントローラ。
（４）前記判断部は、前記保持された前記書込み回数情報が所定の閾値よりも大きい場合に前記リフレッシュが必要と判断する前記（１）から（３）のいずれかに記載のメモリコントローラ。
（５）前記書込み制御部は、前記ページに記憶されているデータの読出しを行って当該読み出したデータの各ビットの値を反転させたデータを前記ページに書き込むことにより前記リフレッシュを行う前記（１）から（４）のいずれかに記載のメモリコントローラ。
（６）前記書込み制御部は、全ビットが同一の値であるページサイズの第１のデータと前記第１のデータの全ビットを反転させた第２のデータとを前記ページに対して順に書き込むことにより前記リフレッシュを行う前記（１）から（４）のいずれかに記載のメモリコントローラ。
（７）前記書込み回数のカウントを行い、前記書込み制御部において前記リフレッシュを伴わない前記書込みが行われた場合には前記カウントに基づく前記書込み回数により前記保持された前記書込み回数情報を更新し、前記書込み制御部において前記リフレッシュを伴う前記書込みが行われた場合には前記保持された前記書込み回数情報を初期化するカウント部をさらに具備する前記（１）から（６）のいずれかに記載のメモリコントローラ。
（８）前記ページ毎の書込みの累計回数である書込み累計回数情報を保持する書込み累計回数情報保持部と、
前記保持された前記書込み累計回数情報に基づいて書込みの累計回数が多いページと書込みの累計回数が少ないページとの間で一方のページから読み出したデータを他方のページに書き込むデータ入替えを制御するデータ入替え制御部と、
前記書込みの累計回数のカウントを行い、当該カウントに基づく前記書込みの累計回数により前記保持された前記書込み累計回数情報を更新する累計カウント部と
をさらに具備し、
前記判断部は、前記リフレッシュが必要か否かの判断を前記データ入替えの際にさらに行う
前記（７）に記載のメモリコントローラ。
（９）ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリと、
前記不揮発メモリの書込み回数である書込み回数情報を保持する書込み回数情報保持部と、
前記保持された前記書込み回数情報に基づいて前記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断部と、
前記ページに対して書込みを行う際に前記判断の結果により前記リフレッシュが必要となる場合には前記書込みに加えて前記リフレッシュをさらに行う書込み制御部と
を具備する記憶装置。
（１０）ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリと、
前記不揮発メモリの書込み回数である書込み回数情報を保持する書込み回数情報保持部と、
前記保持された前記書込み回数情報に基づいて前記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断部と、
前記ページに対して書込みを行う際に前記判断の結果により前記リフレッシュが必要となる場合には前記書込みに加えて前記リフレッシュをさらに行う書込み制御部と
を備える記憶装置と、
前記記憶装置にアクセスするホストコンピュータと
を具備する情報処理システム。
（１０）ページサイズにより分割されたページを単位としてアクセスされる不揮発メモリの書込み回数である書込み回数情報に基づいて前記ページを構成する全てのメモリセルの値を反転させるリフレッシュが必要か否かを判断する判断手順と、
前記ページに対して書込みを行う際に前記判断の結果により前記リフレッシュが必要となる場合には前記書込みに加えて前記リフレッシュをさらに行う書込み制御手順と
を具備するメモリの制御方法。
【符号の説明】
【００９３】
１００  ホストコンピュータ
１０９、３０９  メモリコントローラインターフェース
１１０  プロセッサ
２００  メモリコントローラ
２０８  メモリインターフェース
２０９  ホストインターフェース
２１０  制御部
２１１  読出し制御部
２１２、３３２  書込み制御部
２１３  ＥＣＣ処理部
２１４  書込み回数情報保持部
２１５、３３５  カウント部
２１６、３３６  判断部
２１７  ウェアレベリング制御部
２１８  書込み累計回数情報保持部
２１９  累計カウント部
３００  メモリ
３１０  メモリデバイス制御部
３２０、３４０  メモリセルアレイ
３２１  記憶素子
３２２  ＭＯＳＦＥＴ
３２３  メモリセル
３３０  メモリデバイス制御部
３４３  データ領域
３４４  書込み回数情報保持領域
【図１】
0006497393.tif 000002
【図２】
0006497393.tif 000003
【図３】
0006497393.tif 000004
【図４】
0006497393.tif 000005
【図５】
0006497393.tif 000006
【図６】
0006497393.tif 000007
【図７】
0006497393.tif 000008
【図８】
0006497393.tif 000009
【図９】
0006497393.tif 000010
【図１０】
0006497393.tif 000011
【図１１】
0006497393.tif 000012