(57)【要約】【課題】不揮発性メモリからデータが繰り返し読み出されることにより、データが意図せず書き換えられる可能性を回避または低減する技術を提供することを目的とする。【解決手段】ホストシステム１はメモリコントローラ２に読み出しコマンドを出力するときに、読み出しアクセス負荷がかかるメモリ領域について負荷回数を計測する。そして、ホストシステム１はあるメモリ領域について負荷回数が所定回数に到達したと判断したときには、メモリコントローラ２にそのメモリ領域についてのエラー検出を実行させる。さらに、ホストシステム１はそのメモリ領域についてエラーが発生したことを確認したときには、メモリコントローラ２にそのメモリ領域についてのエラー訂正を実行させる。これにより、繰り返し読み出しによる意図せぬ書き換えを回避または低減することができる。【選択図】図１
2008293579.tif 000002
【特許請求の範囲】
【請求項１】
メモリに対して読み出しアクセスを行なうメモリアクセスシステムであって、
読み出し領域に対する読み出しアクセスに伴って、読み出しアクセス負荷が荷重される各メモリ領域について、負荷回数を記憶する負荷回数記憶手段と、
一のメモリ領域について負荷回数が所定負荷回数に到達したときに、前記一のメモリ領域に対してエラー検出を行なう手段と、
前記一のメモリ領域についてエラーが検出されたときに、エラー検出領域に対してエラー訂正を行なうエラー訂正手段と、
を備えることを特徴とするメモリアクセスシステム。
【請求項２】
メモリに対して読み出しアクセスを制御するメモリコントローラと、
前記メモリコントローラに対して読み出しコマンドを出力するホストシステムと、
を備えるメモリアクセスシステムであって、
前記ホストシステムは、
読み出し領域に対する読み出しアクセスに伴って、読み出しアクセス負荷が荷重される各メモリ領域について、負荷回数を記憶する負荷回数記憶手段、
を備え、
前記メモリコントローラは、
一のメモリ領域について負荷回数が所定負荷回数に到達したときに、前記一のメモリ領域に対してエラー検出を行なう手段と、
前記一のメモリ領域についてエラーが検出されたときに、エラー検出領域に対してエラー訂正を行なうエラー訂正手段と、
を備えることを特徴とするメモリアクセスシステム。
【請求項３】
メモリに対して読み出しアクセスを制御するメモリコントローラと、
前記メモリコントローラに対して読み出しコマンドを出力するホストシステムと、
を備えるメモリアクセスシステムであって、
前記メモリコントローラは、
読み出し領域に対する読み出しアクセスに伴って、読み出しアクセス負荷が荷重される各メモリ領域について、負荷回数を記憶する負荷回数記憶手段と、
一のメモリ領域について負荷回数が所定負荷回数に到達したときに、前記一のメモリ領域に対してエラー検出を行なう手段と、
前記一のメモリ領域についてエラーが検出されたときに、エラー検出領域に対してエラー訂正を行なうエラー訂正手段と、
を備えることを特徴とするメモリアクセスシステム。
【請求項４】
請求項１ないし請求項３のいずれかに記載のメモリアクセスシステムにおいて、
前記負荷回数記憶手段は、
前記エラー検出領域に対するエラー訂正後に、前記エラー検出領域について負荷回数をクリアする手段、
を含むことを特徴とするメモリアクセスシステム。
【請求項５】
請求項１ないし請求項４のいずれかに記載のメモリアクセスシステムにおいて、さらに、
所定条件を満たしたときに、各メモリ領域について負荷回数が前記所定負荷回数に到達したかどうかを確認する手段、
を含むことを特徴とするメモリアクセスシステム。
【請求項６】
請求項５に記載のメモリアクセスシステムにおいて、
前記所定条件は、
前記メモリに対する読み出しアクセス回数が所定アクセス回数に到達したという条件、
を含むことを特徴とするメモリアクセスシステム。
【請求項７】
請求項５に記載のメモリアクセスシステムにおいて、
前記所定条件は、
タイマーにより計測された時間が所定時間に到達したという条件、
を含むことを特徴とするメモリアクセスシステム。
【請求項８】
請求項５に記載のメモリアクセスシステムにおいて、
前記所定条件は、
電源がオフにされるという条件、
を含むことを特徴とするメモリアクセスシステム。
【請求項９】
請求項１ないし請求項８のいずれかに記載のメモリアクセスシステムにおいて、
前記エラー訂正手段は、
エラー訂正前のデータを前記エラー検出領域から消去する手段と、
エラー訂正後のデータを前記エラー検出領域に書き込む手段と、
を含むことを特徴とするメモリアクセスシステム。
【請求項１０】
請求項１ないし請求項８のいずれかに記載のメモリアクセスシステムにおいて、
前記エラー訂正手段は、
エラー訂正後のデータをブランク領域に書き込む手段と、
前記エラー訂正後のデータが前記エラー検出領域ではなく前記ブランク領域に書き込まれていることを示す情報を生成する手段と、
を含むことを特徴とするメモリアクセスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリからデータが繰り返し読み出されることにより、データが意図せず書き換えられる可能性を回避または低減する技術に関する。
【背景技術】
【０００２】
不揮発性メモリの中でも、ＮＡＮＤフラッシュメモリは、単純な回路構成による高集積化や製造コスト減、ユーザによる書き込みの容易化を図ることを可能とするため、ＳＤメモリカードなどに大量に採用されている。
【０００３】
最近では、ＮＡＮＤフラッシュメモリは、ゲーム機などにも採用されている。ＮＡＮＤフラッシュメモリがゲーム機などで使用される際には、書き込みは発生せず、連続的な読み出しが発生する。すなわち、ＮＡＮＤフラッシュメモリがＲＯＭとして採用されることが多くなりつつある。
【０００４】
しかし、ゲーム機などでは、特定のプログラムが繰り返し読み出されることが多いため、プログラムが意図せず書き換えられる可能性が指摘され始めている。このような現象は“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象と呼ばれており、本現象が発生するメカニズムについて、以下に簡単に説明する。
【０００５】
図８は、ＮＡＮＤフラッシュメモリの模式図である。ＮＡＮＤフラッシュメモリは、格子状に配線されたビット線４１とワード線４２、４３、４４、メモリセル５２、５３、選択トランジスタ５４などから構成されている。
【０００６】
メモリセル５２が格納する二値データ（“０”または“１”）を読み出す場合を考える。この場合、メモリセル５２は選択セル５２、メモリセル５３は非選択セル５３と呼ばれている。まず、選択トランジスタ５４により、選択セル５２が属するビット線４１が指定される。次に、選択セル５２が属するワード線４２に対して、低ゲート電圧Ｖ（Ｌｏｗ）＝０Ｖが印加される。そして、非選択セル５３が属するワード線４３に対して、高ゲート電圧Ｖ（Ｈｉｇｈ）〜５Ｖが印加される。このとき、非選択セル５３は微弱な書き込み状態にあるため、非選択セル５３のフローティングゲートに、電子がトラップされ、蓄積される。すなわち、選択セル５２が格納する二値データが繰り返し読み出されると、非選択セル５３の閾値電圧がシフトして、非選択セル５３が格納している二値データが、“１”から“０”に意図せず書き換えられる可能性がある。
【０００７】
もっとも、非選択セル５３が格納している二値データが意図せず書き換えられたとしても、データが新たに書き込まれる前に一括して消去される際に、非選択セル５３の機能を回復させることができる。しかし、書き込みは発生せず、連続的な読み出しが発生する場合には、非選択セル５３の機能を回復させることができなくなる。
【０００８】
以上に説明した“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避する手段を提供する文献として、以下の特許文献が挙げられる。
【０００９】
【特許文献１】米国特許出願公開第２００５／０２１０１８４号明細書
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上述の特許文献は、メモリセル内部の制御方法により、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避する手段を提供するものである。しかし、ここで開示されている方法は、特定のセル構造を有するメモリに対して適用可能な方法であり、他のセル構造に適用可能なものではない。つまり、メモリのセル構造に依存することなく、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避できる方策ではない。
【００１１】
そこで、本発明は前記問題点に鑑み、メモリのセル構造に制約を受けることなく、様々なタイプの不揮発性メモリにおいても、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避または低減することができる手段を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、請求項１記載の発明は、メモリに対して読み出しアクセスを行なうメモリアクセスシステムであって、読み出し領域に対する読み出しアクセスに伴って、読み出しアクセス負荷が荷重される各メモリ領域について、負荷回数を記憶する負荷回数記憶手段と、一のメモリ領域について負荷回数が所定負荷回数に到達したときに、前記一のメモリ領域に対してエラー検出を行なう手段と、前記一のメモリ領域についてエラーが検出されたときに、エラー検出領域に対してエラー訂正を行なうエラー訂正手段と、を備えることを特徴とする。
【００１３】
請求項２記載の発明は、メモリに対して読み出しアクセスを制御するメモリコントローラと、前記メモリコントローラに対して読み出しコマンドを出力するホストシステムと、を備えるメモリアクセスシステムであって、前記ホストシステムは、読み出し領域に対する読み出しアクセスに伴って、読み出しアクセス負荷が荷重される各メモリ領域について、負荷回数を記憶する負荷回数記憶手段、を備え、前記メモリコントローラは、一のメモリ領域について負荷回数が所定負荷回数に到達したときに、前記一のメモリ領域に対してエラー検出を行なう手段と、前記一のメモリ領域についてエラーが検出されたときに、エラー検出領域に対してエラー訂正を行なうエラー訂正手段と、を備えることを特徴とする。
【００１４】
請求項３記載の発明は、メモリに対して読み出しアクセスを制御するメモリコントローラと、前記メモリコントローラに対して読み出しコマンドを出力するホストシステムと、を備えるメモリアクセスシステムであって、前記メモリコントローラは、読み出し領域に対する読み出しアクセスに伴って、読み出しアクセス負荷が荷重される各メモリ領域について、負荷回数を記憶する負荷回数記憶手段と、一のメモリ領域について負荷回数が所定負荷回数に到達したときに、前記一のメモリ領域に対してエラー検出を行なう手段と、前記一のメモリ領域についてエラーが検出されたときに、エラー検出領域に対してエラー訂正を行なうエラー訂正手段と、を備えることを特徴とする。
【００１５】
請求項４記載の発明は、請求項１ないし請求項３のいずれかに記載のメモリアクセスシステムにおいて、前記負荷回数記憶手段は、前記エラー検出領域に対するエラー訂正後に、前記エラー検出領域について負荷回数をクリアする手段、を含むことを特徴とする。
【００１６】
請求項５記載の発明は、請求項１ないし請求項４のいずれかに記載のメモリアクセスシステムにおいて、さらに、所定条件を満たしたときに、各メモリ領域について負荷回数が前記所定負荷回数に到達したかどうかを確認する手段、を含むことを特徴とする。
【００１７】
請求項６記載の発明は、請求項５に記載のメモリアクセスシステムにおいて、前記所定条件は、前記メモリに対する読み出しアクセス回数が所定アクセス回数に到達したという条件、を含むことを特徴とする。
【００１８】
請求項７記載の発明は、請求項５に記載のメモリアクセスシステムにおいて、前記所定条件は、タイマーにより計測された時間が所定時間に到達したという条件、を含むことを特徴とする。
【００１９】
請求項８記載の発明は、請求項５に記載のメモリアクセスシステムにおいて、前記所定条件は、電源がオフにされるという条件、を含むことを特徴とする。
【００２０】
請求項９記載の発明は、請求項１ないし請求項８のいずれかに記載のメモリアクセスシステムにおいて、前記エラー訂正手段は、エラー訂正前のデータを前記エラー検出領域から消去する手段と、エラー訂正後のデータを前記エラー検出領域に書き込む手段と、を含むことを特徴とする。
【００２１】
請求項１０記載の発明は、請求項１ないし請求項８のいずれかに記載のメモリアクセスシステムにおいて、前記エラー訂正手段は、エラー訂正後のデータをブランク領域に書き込む手段と、前記エラー訂正後のデータが前記エラー検出領域ではなく前記ブランク領域に書き込まれていることを示す情報を生成する手段と、を含むことを特徴とする。
【発明の効果】
【００２２】
本実施の形態に係るメモリアクセスシステムは、読み出しアドレスに係る選択セルのみならず、読み出しアドレスに係る選択セル以外の非選択セルについても、エラー検出およびエラー訂正を行なう。そのため、選択セルが格納しているデータが読み出されるときに、非選択セルが格納しているデータが意図せず書き換えられる、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避または低減することができる。
【００２３】
メモリアクセスシステムは、ページ領域やブロック領域などの各メモリ領域について、読み出しアクセス負荷がかかる負荷回数を計測する。そして、メモリアクセスシステムは、負荷回数が所定回数に到達したメモリ領域についてエラー検出を行ない、エラーが検出されたメモリ領域についてエラー訂正を行なう。そのため、読み出しアクセスごとにエラー検出およびエラー訂正が行なわれるのではなく、適切なタイミングでエラー検出およびエラー訂正が行なわれるのである。
【発明を実施するための最良の形態】
【００２４】
｛本実施の形態に係るメモリシステムの構成要素｝
以下、図面を参照しつつ、本発明の実施の形態について説明する。“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象においては、読み出し領域が格納しているデータが繰り返し読み出されるときに、非読み出し領域が格納しているデータが意図せず書き換えられる可能性がある。そこで、本実施の形態に係るメモリシステムは、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を未然に回避するために、読み出し領域についてのみならず、非読み出し領域についても、エラー検出およびエラー訂正を行なう。
【００２５】
もっとも、メモリシステムが読み出しアクセスごとに読み出し領域および非読み出し領域についてエラー検出およびエラー訂正を行なうとすれば、メモリシステムにおいてソフトウェア処理のオーバヘッドが発生する可能性がある。そこで、読み出し領域に読み出しアクセスされるときに非読み出し領域に読み出しアクセス負荷がかかる回数を、メモリシステムは負荷回数として計測する。そして、メモリシステムは負荷回数が所定回数に到達したと判断したときに、読み出し領域および非読み出し領域についてエラー検出およびエラー訂正を行なう。
【００２６】
図１は、本実施の形態に係るメモリシステムのブロック図である。本実施の形態に係るメモリシステムは、たとえばゲーム装置などであり、ホストシステム１、メモリコントローラ２、メモリ３などから構成されている。
【００２７】
ホストシステム１は、読み出しアクセスをメモリコントローラ２に実行させるときに、読み出しアクセス負荷がかかるメモリ領域を判断して、そのメモリ領域について負荷回数を計測する。そして、ホストシステム１は、負荷回数が所定回数に到達したメモリ領域について、エラー検出をメモリコントローラ２に実行させて、さらに、エラーが検出されたメモリ領域について、エラー訂正をメモリコントローラ２に実行させる。
【００２８】
メモリコントローラ２は、ホストシステム１からの指令を受けて、読み出しアクセスとエラー検出とエラー訂正を、メモリ３に対して実行する。本実施の形態においては、ホストシステム１が負荷回数を計測しているが、メモリコントローラ２が負荷回数を計測するようにしてもよい。メモリコントローラ２が負荷回数を計測する実施例については、変形例において説明する。
【００２９】
メモリ３は、ホストシステム１が処理するデータを格納する。本実施の形態においては、メモリ３としてＳＬＣ（Ｓｉｎｇｌｅ−Ｌｅｖｅｌ  Ｃｅｌｌ）方式またはＭＬＣ（Ｍｕｌｔｉ−Ｌｅｖｅｌ  Ｃｅｌｌ）方式のＮＡＮＤフラッシュメモリを使用している。ＳＬＣ方式のＮＡＮＤフラッシュメモリにおいては、１個のメモリセルが１ビットのデータを格納する。ＭＬＣ方式のＮＡＮＤフラッシュメモリにおいては、１個のメモリセルが多ビットのデータを格納する。
【００３０】
図６および図７において後で詳しく説明するように、ＳＬＣ方式のＮＡＮＤフラッシュメモリにおいては、ホストシステム１があるページに読み出しアクセスするときには、そのページを含むブロックにエラーが発生する可能性がある。ＭＬＣ方式のＮＡＮＤフラッシュメモリにおいては、ホストシステム１があるページに読み出しアクセスするときには、そのページを含むブロックにエラーが発生する可能性があるのみならず、他のブロックにもエラーが発生する可能性がある。
【００３１】
そのため、ＳＬＣ方式のＮＡＮＤフラッシュメモリにおいては、読み出しページについてのみならず、読み出しページを含むブロックについても、負荷回数が計測される。また、ＭＬＣ方式のＮＡＮＤフラッシュメモリにおいては、読み出しページについてのみならず、読み出しページを含むブロックや他のブロックについても、負荷回数が計測される。
【００３２】
ホストシステム１は、ＣＰＵ１１、アクセスコントローラ１２、負荷回数情報記憶部１３などから構成されている。
【００３３】
ＣＰＵ１１は、メモリ３が格納するデータを処理するために、読み出しコマンドをアクセスコントローラ１２にセットする。そして、ＣＰＵ１１は、読み出しアクセス負荷がかかるメモリ領域を判断して、そのメモリ領域を特定する情報を負荷回数情報記憶部１３に通知する。さらに、ＣＰＵ１１は、あるメモリ領域について負荷回数が所定回数に到達したときに、エラー検出コマンドおよびエラー訂正コマンドを、アクセスコントローラ１２にセットする。
【００３４】
アクセスコントローラ１２は、ＣＰＵ１１からのコマンド発行命令を受けて、読み出しコマンドとエラー検出コマンドとエラー訂正コマンドを、メモリコントローラ２に出力する。そして、アクセスコントローラ１２は、メモリ３が格納するデータを、メモリコントローラ２から入力して、ＣＰＵ１１に出力する。
【００３５】
負荷回数情報記憶部１３は、読み出しアクセス負荷がかかるメモリ領域を特定する情報について、ＣＰＵ１１から通知を受ける。そして、負荷回数情報記憶部１３は、各メモリ領域を特定する情報についてＣＰＵ１１から通知を受けた回数を、負荷回数として累積して記憶する。さらに、負荷回数情報記憶部１３は、ＣＰＵ１１からの要求を受けて、負荷回数の情報をＣＰＵ１１に提供する。
【００３６】
メモリコントローラ２は、ホストインターフェース２１、制御部２２、メモリインターフェース２３、エラー検出部２４、エラー訂正部２５などから構成されている。
【００３７】
ホストインターフェース２１は、ホストシステム１とメモリコントローラ２の間で、コマンドおよびデータをやり取りするためのインターフェースである。
【００３８】
制御部２２は、ホストシステム１からのコマンドを受けて、メモリ３とエラー検出部２４とエラー訂正部２５を制御する。そして、制御部２２は、読み出しデータをメモリ３からホストシステム１に中継して、訂正データをエラー訂正部２５からＳＲＡＭ部２２１を介してメモリ３に中継する。
【００３９】
メモリインターフェース２３は、メモリコントローラ２とメモリ３の間で、コマンドおよびデータをやり取りするためのインターフェースである。
【００４０】
エラー検出部２４は、制御部２２からの制御を受けて、エラー検出対象データについてエラー検出を行なう。そして、エラー検出部２４は、エラーを検出したかどうかを制御部２２に通知する。
【００４１】
エラー訂正部２５は、制御部２２からの制御を受けて、エラー訂正対象データについてエラー訂正を行なう。そして、エラー訂正部２５は、訂正データを制御部２２が備えるＳＲＡＭ部２２１に出力する。
【００４２】
｛本実施の形態に係る処理の流れ｝
次に、本実施の形態に係る処理の流れについて、以下に示す順序で説明する：（１）読み出しデータの読み出し、（２）エラー検出、（３）エラー訂正、（４）エラー訂正データの書き込み。
【００４３】
図２は、読み出しデータの読み出しにおける処理の流れを示す図である。図２におけるＳＲは、読み出しデータの読み出しにおけるステップを示している。ＣＰＵ１１は、読み出しコマンドをアクセスコントローラ１２にセットする（ステップＳＲ１）。そして、ＣＰＵ１１は、読み出しコマンドに含まれる読み出しアドレスから、読み出しアクセス負荷がかかるメモリ領域を判断して、そのメモリ領域を特定する情報を負荷回数情報記憶部１３に通知する。負荷回数情報記憶部１３は、そのメモリ領域について負荷回数を記憶する（ステップＳＲ２）。
【００４４】
ここで、ＣＰＵ１１が読み出しコマンドに含まれる読み出しアドレスから、読み出しアクセス負荷がかかるメモリ領域を判断する方法について、図６および図７を用いて説明する。まず、図６を用いてＳＬＣ方式のＮＡＮＤフラッシュメモリにおける負荷回数のカウント方法について説明する。次に、図７を用いてＭＬＣ方式のＮＡＮＤフラッシュメモリにおける負荷回数のカウント方法について説明する。もっとも、読み出し領域が格納しているデータが繰り返し読み出されるときに、非読み出し領域が格納しているデータが意図せず書き替えられる可能性がある不揮発性メモリにおいて、本発明を実施することが可能である。
【００４５】
図６（ａ）は、ＳＬＣ方式のＮＡＮＤフラッシュメモリのメモリセルアレイ３１の模式図を示す図である。メモリセルアレイ３１は、複数のブロックから構成されている。図６（ａ）においては、３つのブロック３１１、３１２、３１３が記載されている。また、各ブロックは、複数のページから構成されている。図６（ａ）においては、ブロック３１１、３１２、３１３のうち、それぞれ、ページ３１１Ｐ、３１２Ｐ、３１３Ｐが斜線により記載されている。
【００４６】
ホストシステム１がページ３１１Ｐに対して読み出しアクセスするときには、ブロック３１１のうちページ３１１Ｐ以外のページを構成する非選択セルが微弱な書き込み状態にある。すなわち、ブロック３１１のうちページ３１１Ｐ以外のページにおいて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性がある。“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する様子を、ブロック３１１において□印を用いて模式的に示している。
【００４７】
ホストシステム１がページ３１２Ｐ、３１３Ｐに対して読み出しアクセスするときには、それぞれ、ブロック３１２、３１３のうちページ３１２Ｐ、３１３Ｐ以外のページにおいて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性がある。“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する様子を、ブロック３１２、３１３において、それぞれ○印、△印を用いて模式的に示している。
【００４８】
図６（ｂ）は、負荷回数情報１３１の概念図を示す図である。ＣＰＵ１１がページ３１１Ｐのデータを読み出すために、ページ３１１Ｐに係る読み出しコマンドをアクセスコントローラ１２にセットする（ステップＳＲ１）。このときに、ＣＰＵ１１は、ページ３１１Ｐを含むブロック３１１について、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性があると判断する。そのため、ＣＰＵ１１は、ブロック３１１について読み出しアクセス負荷がかかる負荷回数を１つカウントする（ステップＳＲ２）。
【００４９】
ＣＰＵ１１がページ３１２Ｐ、３１３Ｐのデータを読み出すときには、それぞれ、ページ３１２Ｐ、３１３Ｐを含むブロック３１２、３１３について、読み出しアクセス負荷がかかる負荷回数を１つカウントする（ステップＳＲ２）。負荷回数情報１３１には、ブロック３１１、３１２、３１３について、負荷回数がそれぞれ１回ずつカウントされている様子が模式的に示されている。ＣＰＵ１１がさらにページ３１１Ｐ、３１２Ｐ、３１３Ｐのデータを読み出すときには、それぞれ、ブロック３１１、３１２、３１３について、さらに負荷回数が１回ずつカウントされる。
【００５０】
図７（ａ）は、ＭＬＣ方式のＮＡＮＤフラッシュメモリのメモリセルアレイ３２の模式図を示す図である。メモリセルアレイ３２は、複数のブロックから構成されている。図７（ａ）においては、３つのブロック３２１、３２２、３２３が記載されている。また、各ブロックは、複数のページから構成されている。図７（ａ）においては、ブロック３２２のうちページ３２２Ｐが斜線により記載されている。
【００５１】
ホストシステム１がページ３２２Ｐに対して読み出しアクセスするときには、ブロック３２２のうちページ３２２Ｐ以外のページ、および、ブロック３２２以外の関連ブロックにおいて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性がある。図７（ａ）においては、ブロック３２２以外の関連ブロックとして、ブロック３２１、３２３が記載されている。“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する様子を、ブロック３２１、３２２、３２３において、それぞれ、□印、○印、△印を用いて模式的に示している。
【００５２】
図７（ｂ）は、拡散テーブル１４２の概念図を示す図である。拡散テーブル１４２は、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が読み出しブロック以外の関連ブロックに拡散する可能性があることを示すものである。図７（ａ）を用いて説明したように、読み出しブロックがブロック３２２であるときには、ブロック３２２においてのみならず、ブロック３２１、３２３においても、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性がある。拡散テーブル１４２は、ホストシステム１が備えるＲＯＭなどに格納されていればよい。
【００５３】
図７（ｃ）は、負荷回数情報１３２の概念図を示す図である。ＣＰＵ１１がページ３２２Ｐのデータを読み出すために、ページ３２２Ｐに係る読み出しコマンドをアクセスコントローラ１２にセットする（ステップＳＲ１）。このときに、ＣＰＵ１１は、拡散テーブル１４２を参照して、ページ３２２Ｐを含むブロック３２２、および、ブロック３２１、３２３について、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性があると判断する。そのため、ＣＰＵ１１は、ブロック３２１、３２２、３２３について、読み出しアクセス負荷がかかる負荷回数をカウントする（ステップＳＲ２）。
【００５４】
ここで、読み出しアクセス負荷がかかる負荷回数をカウントする方法について説明する。読み出しブロック１個について、関連ブロックは多数存在する。読み出しブロックと関連ブロックについて、負荷回数が同一の重み付けでカウントされるならば、負荷回数はエラー検出の契機となる所定回数に向かって同一の速度で増加する。そのため、ホストシステム１は、読み出しブロック１個と関連ブロック多数について、一度にエラー検出をメモリコントローラ２に実行させる必要に迫られることがある。
【００５５】
しかし、関連ブロックに対する読み出しアクセス負荷は、読み出しブロックに対する読み出しアクセス負荷よりも軽減されていることが通常である。そのため、読み出しブロックについては、負荷回数を大きい重み付けでカウントして、関連ブロックについては、負荷回数を小さい重み付けでカウントするなどすればよい。たとえば、負荷回数情報１３２に模式的に示したように、ＣＰＵ１１がページ３２２Ｐのデータを読み出すときに、読み出しブロック３２２については負荷回数を仮想的に２つカウントして、関連ブロック３２１、３２３については負荷回数を通常通り１つカウントするようにすればよい。
【００５６】
ＳＬＣ方式およびＭＬＣ方式のＮＡＮＤフラッシュメモリにおいて、エラー検出が実行されるために負荷回数が到達すべき所定回数として適切な回数を決定すればよい。たとえば、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生しにくいメモリにおいては、所定回数を多くしてもよい。このときには、ホストシステム１は頻繁にはエラー検出を行なわないため、エラー検出負担が減少する。また、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生しやすいメモリにおいては、所定回数を少なくすればよい。このときには、ホストシステム１は頻繁にエラー検出を行なうため、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を未然に回避できる。
【００５７】
負荷回数情報記憶部１３は、不揮発性メモリであっても、揮発性メモリであってもよい。負荷回数情報記憶部１３が不揮発性メモリであるときには、メモリシステムの電源がオフにされたときにも負荷回数情報は保持されて、次に電源がオンにされたときにその負荷回数情報を有効に利用できる。負荷回数情報記憶部１３が揮発性メモリであるときには、メモリシステムの電源がオンにされたときからオフにされるときまで、負荷回数情報を有効に利用できる。
【００５８】
図２で示した処理の流れについて説明を再開する。ＣＰＵ１１は、アクセスコントローラ１２に読み出しコマンドの発行命令を出力する（ステップＳＲ３）。制御部２２は、ホストシステム１からホストインターフェース２１を介して、読み出しコマンドを入力する（ステップＳＲ４）。そして、制御部２２は、読み出しコマンドをデコードして、読み出しアドレスを抽出する（ステップＳＲ５）。さらに、制御部２２は、メモリインターフェース２３を介してメモリ３に、読み出しアドレスを出力する（ステップＳＲ６）。
【００５９】
制御部２２は、メモリ３からメモリインターフェース２３を介して、読み出しデータを入力する（ステップＳＲ７）。そして、制御部２２は、ホストインターフェース２１を介してホストシステム１に、読み出しデータを出力する（ステップＳＲ８）。ＣＰＵ１１は、アクセスコントローラ１２から読み出しデータを入力して、読み出しデータを処理する（ステップＳＲ９）。
【００６０】
ＣＰＵ１１は、新たな読み出しコマンドをアクセスコントローラ１２にセットする前に（ステップＳＲ１）、何らかのトリガがあるかどうかを確認する（ステップＳＲ１０）。そして、ＣＰＵ１１は、何らかのトリガがあることを確認すれば（ステップＳＲ１０においてＹＥＳ）、負荷回数情報記憶部１３から負荷回数の情報を取得する（ステップＳＲ１１）。また、ＣＰＵ１１は、何らのトリガもないことを確認すれば（ステップＳＲ１０においてＮＯ）、新たな読み出しコマンドをアクセスコントローラ１２にセットする（ステップＳＲ１）。
【００６１】
ＣＰＵ１１が確認するトリガとして、以下に説明するトリガをあげることができる。まず、ホストシステム１が読み出しアドレスの如何を問わず読み出しアクセスを行なった回数が所定回数に到達したことをトリガとできる。次に、タイマーが所定時間を計測したことをトリガとできる。さらに、メモリシステムの電源がオフにされたことをトリガとできる。以上に説明したトリガを利用するときには、ＣＰＵ１１が読み出しアクセスを行なうたびに、負荷回数の情報を取得することはなくなる。もっとも、ＣＰＵ１１が読み出しアクセスを行なうたびに、負荷回数の情報を取得するようにしてもよい。
【００６２】
ＣＰＵ１１が負荷回数の情報を取得したときに、あるブロックについて負荷回数が所定回数を超過しているときには（ステップＳＲ１１においてＹＥＳ）、そのブロックについてエラー検出をメモリコントローラ２に実行させる（図２、図３におけるＡ）。ＣＰＵ１１が負荷回数の情報を取得したときに、どのブロックについても負荷回数が所定回数を超過していなければ（ステップＳＲ１１においてＮＯ）、新たな読み出しコマンドをアクセスコントローラ１２にセットする（ステップＳＲ１）。
【００６３】
図３は、エラー検出における処理の流れを示す図である。図３におけるＳＤは、エラー検出におけるステップを示している。ＣＰＵ１１は、エラー検出コマンドをアクセスコントローラ１２にセットする（ステップＳＤ１）。そして、ＣＰＵ１１は、アクセスコントローラ１２にエラー検出コマンドの発行命令を出力する（ステップＳＤ２）。
【００６４】
制御部２２は、ホストシステム１からホストインターフェース２１を介して、エラー検出コマンドを入力する（ステップＳＤ３）。そして、制御部２２は、エラー検出コマンドをデコードして、エラー検出対象アドレスを抽出する（ステップＳＤ４）。また、制御部２２は、エラー検出部２４に制御許可信号を出力することにより、エラー検出部２４を駆動し始める（ステップＳＤ５）。さらに、制御部２２は、メモリインターフェース２３を介してメモリ３に、エラー検出対象アドレスを出力する（ステップＳＤ６）。
【００６５】
エラー検出部２４は、メモリ３からメモリインターフェース２３を介して、エラー検出対象データを入力する（ステップＳＤ７）。そして、エラー検出部２４は、エラー検出対象データについてエラー検出を行ない、制御部２２にエラー検出結果を通知する（ステップＳＤ８）。また、エラー検出部２４は、エラー検出時に生成されたシンドロームを保持して、次にエラー訂正が行なわれるときに備える。
【００６６】
ホストシステム１は、メモリコントローラ２からエラー検出情報を取得できる。エラー検出情報とは、エラー検出が完了しているかどうか、または、エラー検出が完了しているならば、エラーが発生しているかどうか、などについての情報である。
【００６７】
ＣＰＵ１１は、Ｓｔａｔｕｓコマンドをアクセスコントローラ１２にセットする（ステップＳＤ９）。そして、ＣＰＵ１１は、アクセスコントローラ１２にＳｔａｔｕｓコマンドの発行命令を出力する（ステップＳＤ１０）。制御部２２は、ホストシステム１からホストインターフェース２１を介して、Ｓｔａｔｕｓコマンドを入力する（ステップＳＤ１１）。そして、制御部２２は、ホストインターフェース２１を介してホストシステム１に、エラー検出情報を通知する（ステップＳＤ１２）。ＣＰＵ１１は、アクセスコントローラ１２からエラー検出情報を取得する（ステップＳＤ１３）。
【００６８】
ＣＰＵ１１は、エラー検出対象アドレスについて、エラーが発生していることを確認したときには（ステップＳＤ１４においてＹＥＳ）、そのアドレスについてエラー訂正をメモリコントローラ２に実行させる（図３、図４におけるＢ）。ＣＰＵ１１は、エラー検出対象アドレスについて、エラーが発生していないことを確認したときには（ステップＳＤ１４においてＮＯ）、そのアドレスについて負荷回数情報記憶部１３が記憶する負荷回数をクリアする（ステップＳＤ１５）。すなわち、そのアドレスについて再び負荷回数が所定回数に到達するときに、そのアドレスについて改めてエラー検出が行なわれる。そして、ＣＰＵ１１は、新たな読み出しコマンドをアクセスコントローラ１２にセットする（図２、図３におけるＣ）。
【００６９】
図４は、エラー訂正における処理の流れを示す図である。図４におけるＳＣは、エラー訂正におけるステップを示している。ＣＰＵ１１は、エラー訂正コマンドをアクセスコントローラ１２にセットする（ステップＳＣ１）。そして、ＣＰＵ１１は、アクセスコントローラ１２にエラー訂正コマンドの発行命令を出力する（ステップＳＣ２）。
【００７０】
制御部２２は、ホストシステム１からホストインターフェース２１を介して、エラー訂正コマンドを入力する（ステップＳＣ３）。そして、制御部２２は、エラー訂正コマンドをデコードして、エラー訂正対象アドレスを抽出する（ステップＳＣ４）。また、制御部２２は、エラー訂正部２５に制御許可信号を出力することにより、エラー訂正部２５を駆動し始める（ステップＳＣ５）。このときに、制御部２２は、エラー検出部２４に制御不許可信号を出力することにより、エラー検出部２４の駆動を停止する。これにより、エラー検出部２４とエラー訂正部２５が同時に駆動して、ステップＳＤ８において生成されたシンドロームが変化することを回避できる。さらに、制御部２２は、メモリインターフェース２３を介してメモリ３に、エラー訂正対象アドレスを出力する（ステップＳＣ６）。
【００７１】
エラー訂正部２５は、メモリ３からメモリインターフェース２３を介して、エラー訂正対象データを入力する（ステップＳＣ７）。そして、エラー訂正部２５は、ステップＳＤ８において生成されたシンドロームに従って、エラー訂正対象データについてエラー訂正を行ない（ステップＳＣ８）、ＳＲＡＭ部２２１に訂正データを格納する（ステップＳＣ９）。制御部２２は、ＳＲＡＭ部２２１において格納された訂正データを、メモリインターフェース２３を介して、メモリ３のブランク領域に書き込む（ステップＳＣ１０）。
【００７２】
制御部２２は、エラー訂正が完全に完了したことを確認したときには（ステップＳＣ１１においてＹＥＳ）、エラー訂正対象アドレスについてデータを消去する（図４、図５におけるＤ）。制御部２２は、エラー訂正が完全には完了していないことを確認したときには（ステップＳＣ１１においてＮＯ）、エラー訂正が完了していない分について、新たなエラー訂正対象アドレスをメモリ３に出力する（ステップＳＣ６）。
【００７３】
図５は、エラー訂正データの書き込みにおける処理の流れを示す図である。図５におけるＳＰは、エラー訂正データの書き込みにおけるステップを示している。制御部２２は、エラー訂正対象アドレスについてデータを消去する（ステップＳＰ１）。そして、制御部２２は、メモリ３のブランク領域に書き込まれた訂正データを、エラー訂正対象アドレスにコピーする（ステップＳＰ２）。さらに、制御部２２は、メモリ３のブランク領域に書き込まれた訂正データを消去する（ステップＳＰ３）。
【００７４】
ここで、制御部２２は、ステップＳＰ１ないしステップＳＰ３を実行しなくてもよい。すなわち、制御部２２は、ＳＲＡＭ部２２１において格納された訂正データを、メモリ３のブランク領域に書き込むのみであってもよい（ステップＳＣ１０）。このときには、制御部２２がメモリ管理情報を備えているなどのようにすればよい。メモリ管理情報とは、訂正データが本来の格納領域ではなくブランク領域に書き込まれていることを示す情報である。
【００７５】
ホストシステム１は、メモリコントローラ２からエラー訂正情報を取得できる。エラー訂正情報とは、訂正データの書き込みが完了しているかどうか、などについての情報である。
【００７６】
ＣＰＵ１１は、Ｓｔａｔｕｓコマンドをアクセスコントローラ１２にセットする（ステップＳＰ４）。そして、ＣＰＵ１１は、アクセスコントローラ１２にＳｔａｔｕｓコマンドの発行命令を出力する（ステップＳＰ５）。制御部２２は、ホストシステム１からホストインターフェース２１を介して、Ｓｔａｔｕｓコマンドを入力する（ステップＳＰ６）。そして、制御部２２は、ホストインターフェース２１を介してホストシステム１に、エラー訂正情報を通知する（ステップＳＰ７）。ＣＰＵ１１は、アクセスコントローラ１２からエラー訂正情報を取得する（ステップＳＰ８）。
【００７７】
ＣＰＵ１１は、訂正データの書き込みが完全に完了したことを確認したときには（ステップＳＰ９においてＹＥＳ）、エラー訂正対象アドレスについて、負荷回数情報記憶部１３が記憶する負荷回数をクリアする（ステップＳＰ１０）。そして、ＣＰＵ１１は、新たな読み出しコマンドをアクセスコントローラ１２にセットする（図２、図５におけるＣ）。ＣＰＵ１１は、訂正データの書き込みが完全には完了していないことを確認したときには（ステップＳＰ９においてＮＯ）、改めてＳｔａｔｕｓコマンドをアクセスコントローラ１２にセットする（ステップＳＰ４）。
【００７８】
図２ないし図５を用いて説明した処理の流れは、メモリシステムの電源がオフにされるまで繰り返し実行される。すなわち、読み出しアドレスに対する読み出しアクセスにおいて、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性があるブロックについて、負荷回数が所定回数を超過したときには、そのブロックについてエラー検出が行なわれる。そして、エラーが検出されたときには、そのブロックについてエラー訂正が行なわれる。
【００７９】
すなわち、読み出しアドレスについてのみならず、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性があるブロックについても、エラー検出およびエラー訂正が行なわれる。そのため、本実施の形態に係るメモリシステムは、“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象を回避または低減できるのである。
【００８０】
｛メモリコントローラが負荷回数を計測する変形例｝
本実施の形態においては、ホストシステム１が負荷回数情報記憶部１３を備える。しかし、本変形例においては、メモリコントローラ２が負荷回数情報記憶部を備える。すなわち、ホストシステム１が負荷回数について判断することはなくなり、ホストシステム１の負担は軽減される。
【００８１】
ホストシステム１がメモリコントローラ２に読み出しコマンドを出力したときに、負荷回数情報記憶部は“Ｒｅａｄ  Ｄｉｓｔｕｒｂ”現象が発生する可能性があるメモリ領域を判断する。そして、そのメモリ領域についてエラー検出が行なわれて、エラーが検出されたときには、そのメモリ領域についてエラー訂正が行なわれる。
【００８２】
本変形例においても、ホストシステム１がメモリコントローラ２に、エラー検出コマンドおよびエラー訂正コマンドを出力する。そのため、ホストシステム１はメモリコントローラ２における処理状況を確認する。たとえば、ホストシステム１はメモリコントローラ２に、Ｓｔａｔｕｓコマンドを出力すればよい。または、メモリコントローラ２はホストシステム１に、エラー検出およびエラー訂正の処理状況を通知すればよい。
【図面の簡単な説明】
【００８３】
【図１】本実施の形態に係るメモリシステムのブロック図である。
【図２】読み出しデータの読み出しにおける処理の流れを示す図である。
【図３】エラー検出における処理の流れを示す図である。
【図４】エラー訂正における処理の流れを示す図である。
【図５】エラー訂正データの書き込みにおける処理の流れを示す図である。
【図６】ＳＬＣ方式のＮＡＮＤフラッシュメモリにおける負荷回数のカウント方法を示す図である。
【図７】ＭＬＣ方式のＮＡＮＤフラッシュメモリにおける負荷回数のカウント方法を示す図である。
【図８】ＮＡＮＤフラッシュメモリの模式図である。
【符号の説明】
【００８４】
１  ホストシステム
２  メモリコントローラ
３  メモリ
１１  ＣＰＵ
１２  アクセスコントローラ
１３  負荷回数情報記憶部
２１  ホストインターフェース
２２  制御部
２３  メモリインターフェース
２４  エラー検出部
２５  エラー訂正部
３１、３２  メモリセルアレイ
４１  ビット線
４２、４３、４４  ワード線
５２  選択セル
５３  非選択セル
５４  選択トランジスタ
１３１、１３２  負荷回数情報
１４２  拡散テーブル
【図１】
2008293579.tif 000003
【図２】
2008293579.tif 000004
【図３】
2008293579.tif 000005
【図４】
2008293579.tif 000006
【図５】
2008293579.tif 000007
【図６】
2008293579.tif 000008
【図７】
2008293579.tif 000009
【図８】
2008293579.tif 000010