(57)【要約】【課題】メモリシステムにおいてリード・ディスターブによる信頼性低下現象を抑制する。【解決手段】実施形態のメモリシステムは、データを記憶する複数のメモリセルを備える不揮発性のメモリと、メモリを制御するメモリコントローラと、を備える。複数のメモリセルについて複数のグループが設定されている。所定範囲内のいずれかの数がグループごとにリード回数の閾値として対応付けられている。メモリコントローラは、グループごとにリード回数を計数する計数部と、グループごとに、計数部によって計数されたリード回数が当該グループに対応付けられた閾値に達したか否かを判定する判定部と、判定部によって閾値に達したと判定されたグループがあった場合、当該グループに含まれる１以上のデータを読み出す読み出し部と、を備える。【選択図】図１
2019164859.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する複数のメモリセルを備える不揮発性のメモリと、
前記メモリを制御するメモリコントローラと、を備えるメモリシステムであって、
複数の前記メモリセルについて複数のグループが設定されていて、
所定範囲内のいずれかの数がグループごとにリード回数の閾値として対応付けられていて、
前記メモリコントローラは、
グループごとにリード回数を計数する計数部と、
グループごとに、前記計数部によって計数されたリード回数が当該グループに対応付けられた前記閾値に達したか否かを判定する判定部と、
前記判定部によって前記閾値に達したと判定されたグループがあった場合、当該グループに含まれる１以上のデータを読み出す読み出し部と、
を備えるメモリシステム。
【請求項２】
前記メモリコントローラは、
前記読み出し部によって読み出された前記１以上のデータを前記複数のメモリセルのいずれかに書き込む処理であるリフレッシュを実行するリフレッシュ実行部を、さらに備える、請求項１に記載のメモリシステム。
【請求項３】
前記リフレッシュ実行部は、
前記読み出し部によって読み出された前記１以上のデータについて所定基準に基いて信頼性が低下しているか否かを判定し、低下していると判定したときは、当該１以上のデータを前記複数のメモリセルのいずれかに書き込む処理であるリフレッシュを実行する、
請求項２に記載のメモリシステム。
【請求項４】
グループごとに、前記所定範囲内の異なる数がリード回数の閾値として対応付けられている、
請求項１に記載のメモリシステム。
【請求項５】
前記判定部は、所定時間ごとに、グループごとに、前記リード回数が当該グループに対応付けられた前記閾値に達したか否かを判定する、
請求項１に記載のメモリシステム。
【請求項６】
グループごとに、前記所定範囲内のいずれかの数をランダムに選択することで前記閾値を設定する閾値設定部をさらに備える、
請求項１に記載のメモリシステム。
【請求項７】
グループごとに、前記閾値が同じ数または所定範囲の数であるグループ数が所定数以下になるように前記所定範囲内のいずれかの数を選択することで前記閾値を設定する閾値設定部をさらに備える、
請求項１に記載のメモリシステム。
【請求項８】
前記閾値設定部は、
前記閾値が同じ数または所定範囲の数であるグループの所定のアクセス方法でのリード時のグループ間距離が所定距離以上になるように、グループごとの前記閾値を設定する、
請求項７に記載のメモリシステム。
【請求項９】
前記所定のアクセス方法は、シーケンシャルリードである、
請求項８に記載のメモリシステム。
【請求項１０】
グループごとの前記メモリセルの数が同一ではない、
請求項１に記載のメモリシステム。
【請求項１１】
すべての前記グループに関するダウンカウンタ判定値としてゼロが設定されており、
前記メモリコントローラは、グループごとに、ゼロよりも大きい所定の初期値範囲内のいずれかの数をダウンカウンタ初期値として設定する初期値設定部をさらに備え、
前記計数部は、前記グループごとに、リードがあるたびにダウンカウンタをデクリメントすることで前記リード回数を計数し、
前記判定部は、それぞれの前記グループについて、前記ダウンカウンタの値が前記ダウンカウンタ判定値に達したか否かを判定する、
請求項１に記載のメモリシステム。
【請求項１２】
前記計数部は、前記ダウンカウンタの値が前記ダウンカウンタ判定値に達した前記グループに対してさらにリードがあったときは前記ダウンカウンタを前記ダウンカウンタ判定値のままとする、
請求項１１に記載のメモリシステム。
【請求項１３】
すべての前記グループに関するゼロよりも大きいアップカウンタ判定値が設定されており、
前記メモリコントローラは、前記グループごとに、前記アップカウンタ判定値よりも小さい所定の初期値範囲内のいずれかの数をアップカウンタ初期値として設定する初期値設定部をさらに備え、
前記計数部は、前記グループごとに、リードがあるたびにアップカウンタをインクリメントすることで前記リード回数を計数し、
前記判定部は、それぞれの前記グループについて、前記アップカウンタの値が前記アップカウンタ判定値に達したか否かを判定する、
請求項１に記載のメモリシステム。
【請求項１４】
データを記憶する複数のメモリセルを備える不揮発性のメモリを制御するメモリ制御方法であって、
複数の前記メモリセルについて複数のグループが設定されていて、
所定範囲内のいずれかの数がグループごとにリード回数の閾値として対応付けられていて、
グループごとにリード回数を計数する計数ステップと、
グループごとに、前記計数ステップによって計数されたリード回数が当該グループに対応付けられた前記閾値に達したか否かを判定する判定ステップと、
前記判定ステップによって前記閾値に達したと判定されたグループがあった場合、当該グループに含まれる１以上のデータを読み出す読み出しステップと、
を含むメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム、および、メモリ制御方法に関する。
【背景技術】
【０００２】
従来、複数のメモリセルを備える不揮発性のメモリ（例えばＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリ））とそのメモリを制御するメモリコントローラを備えるメモリシステムが広く知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７８１８５２５号明細書
【特許文献２】米国特許出願公開第２０１６／０１１８１３２号明細書
【特許文献３】特許第６１０８９４９号明細書
【特許文献４】特許第６１６３５４０号明細書
【特許文献５】米国特許第９６５３１７６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の不揮発性のメモリでは、リード・ディスターブ（Read  Disturb）と呼ばれる信頼性低下現象が起きる場合がある。
【０００５】
そこで、本発明の実施形態の課題は、リード・ディスターブによる信頼性低下現象を抑制することが可能なメモリシステム、および、メモリ制御方法を提供することである。
【課題を解決するための手段】
【０００６】
実施形態のメモリシステムは、データを記憶する複数のメモリセルを備える不揮発性のメモリと、前記メモリを制御するメモリコントローラと、を備える。複数の前記メモリセルについて複数のグループが設定されている。所定範囲内のいずれかの数がグループごとにリード回数の閾値として対応付けられている。前記メモリコントローラは、グループごとにリード回数を計数する計数部と、グループごとに、前記計数部によって計数されたリード回数が当該グループに対応付けられた前記閾値に達したか否かを判定する判定部と、前記判定部によって前記閾値に達したと判定されたグループがあった場合、当該グループに含まれる１以上のデータを読み出す読み出し部と、を備える。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１実施形態のメモリシステム等の構成図である。
【図２】図２は、第１実施形態のＮＡＮＤメモリのメモリセルアレイにおけるブロックの構造を示す模式図である。
【図３】図３は、第１実施形態のメモリセルアレイのデータ格納構造を示す図である。
【図４】図４は、第１実施形態におけるカウンタの初期値の例を示す図である。
【図５】図５は、第１実施形態のメモリシステムにおけるリフレッシュ等の処理を示すフローチャートである。
【図６】図６は、第５実施形態におけるカウンタの初期値の例を示す図である。
【図７】図７は、第１実施形態のメモリセルアレイの構造の模式図である。
【図８】図８は、第１実施形態のＮＡＮＤメモリの構造の模式図である。
【図９】図９は、第１実施形態のＮＡＮＤメモリの構造の模式図である。
【図１０】図１０は、第１実施形態のリフレッシュ対象の範囲の説明図である。
【図１１】図１１は、第１実施形態のリフレッシュ対象の範囲の説明図である。
【図１２】図１２は、第１実施形態のメモリシステムにおけるカウンタの初期値の設定の処理を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照しながら、実施形態のメモリシステム、および、メモリ制御方法について詳細に説明する。なお、以下の実施形態により本発明が限定されるものではない。また、第２実施形態以降について、それまでの実施形態で説明した事項と同様の事項については、説明を適宜省略する。
【０００９】
本実施形態の理解を容易にするために、まず、比較例（従来技術）について説明する。比較例では、不揮発性のメモリにおけるリード・ディスターブ対策として、例えば、一定のメモリ領域ごとにリード回数を計数するためのカウンタを設け、カウンタの値が閾値に達するとそのメモリ領域のデータをリフレッシュする。リフレッシュとは、データを読み出し、所定基準（例えばエラー数）に基いて信頼性が低下しているか否かを判定し、低下していると判定したときは、データをメモリ領域のうちのいずれかの領域（例えば他のメモリ領域）に書き込む処理である。
【００１０】
しかしながら、この手法では、例えば、シーケンシャルリード時等に、多くのカウンタの値が近いタイミングで閾値に達し、それによるリフレッシュ等の処理が連発するために、割り込み処理イベントの喪失や、応答性の低下等が起きる場合がある。そこで、本実施形態では、このような点を改善する手法を開示する。なお、シーケンシャルリードとは、アドレス空間内でアドレスの順番にリードアクセスすることであり、また、あるアドレス範囲内でアドレスの順番にリードアクセスを繰り返すことも含む。また、シーケンシャルリードにおけるアドレス空間とは、論理アドレス空間を指すことが一般的であるが、本実施形態では物理アドレス空間を指す場合も含む。
【００１１】
（第１実施形態）
以下、第１実施形態について説明する。図１は、第１実施形態のメモリシステム１等の構成図である。図１に示すメモリシステム１は、主な構成要素としてメモリコントローラ２とＮＡＮＤメモリ３とＤＲＡＭ（Dynamic  Random  Access  Memory）４とを備え、ホスト機器１０からの命令に基いて動作する。
【００１２】
ＮＡＮＤメモリ３は、データを記憶する複数のメモリセルを備える不揮発性のメモリである。ＮＡＮＤメモリ３において、複数のメモリセルはアレイ状に配置されており、そのアレイ状に配置された複数のメモリセルをメモリセルアレイ３１と呼ぶ。
【００１３】
ここで、図２は、第１実施形態のＮＡＮＤメモリ３のメモリセルアレイ３１におけるブロック３２の構造を示す模式図である。図２に示すように、メモリセルアレイ３１は、複数のメモリセル（トランジスタ）を直列に並べたＮＡＮＤストリングと呼ばれる回路が複数集まって構成される。各ブロックの１個のＮＡＮＤストリングは、１個のビットライン（ＢＬ）に接続される。１個のブロック内では、１個のＮＡＮＤストリングが１個のビットラインに対応する。１個のビットラインは、多数のブロックのＮＡＮＤストリングに接続される。また、複数のＮＡＮＤストリング内の互いに対応する位置にあるメモリセルのゲート電極は、ワードライン（ＷＬ）と呼ばれる線で互いに接続されている。
【００１４】
図２では、下から順に、横方向のラインとして、ソースラインＳＬ、セレクトゲートラインＳＧＳ、ワードラインＷＬ１〜ＷＬ４、セレクトゲートラインＳＧＤが配置されている。また、左から順に、縦方向のラインとして、ビットラインＢＬ１〜ＢＬ４が配置されている。なお、図２では、ビットラインについては４つのビットラインＢＬ１〜ＢＬ４のみを図示し、ワードラインについてはワードラインＷＬ１〜ＷＬ４のみを図示しているが、実際にはビットラインおよびワードラインはより多く存在し、多数のメモリセルがアレイ状に配置された構成となっている。ＮＡＮＤメモリ３では、１つのメモリセルに対し１ビット〜４ビット程度の情報が書き込まれる。
【００１５】
データの書き込みは、アドレス情報により指定されたメモリセル群の個々のメモリセルの閾値電圧を、そのデータに対応した電圧レベルに設定することにより行われる。すなわち、書き込みデータは、メモリセル群の個々のメモリセルの閾値電圧として書き込まれる。データを読み出す際には読み出し対象となるデータが書き込まれたメモリセル群に対応するワードラインに適切な電圧（読み出し電圧）を印加し、残りのワードラインの電圧をハイレベルに設定することで、読み出し対象となるデータを保持するメモリセル群の個々のメモリセルの閾値電圧が、印加された電圧よりも高いか低いかを調べる。これを１回以上繰り返すことで、当該ワードライン上のすべてのメモリセルの閾値電圧の状態を検知して、当該ワードラインに保持されたデータを、読み出す。
【００１６】
このようなＮＡＮＤメモリ３では、同じメモリセルに対するデータの読み出しが繰り返されると、読み出し対象のメモリセル以外の近くのメモリセルにビット化けが起きてしまう場合がある。これが、リード・ディスターブである。
【００１７】
次に、図３を参照して、第１実施形態のメモリセルアレイ３１のデータ格納構造について説明する。図３は、第１実施形態のメモリセルアレイ３１のデータ格納構造を示す図である。ＮＡＮＤメモリ３のメモリセルアレイ３１には、一般に、複数のブロック３２が含まれており、さらにブロック３２の中には複数のページ３３が含まれている。ＮＡＮＤメモリ３への書き込みは、ページ単位で行われる。一般的には、１つのページ３３の中には、データとＥＣＣ（Error  Correction  Code）（エラー訂正符号）３６が書き込まれ、データにはユーザデータ（書き込みデータ）３５と管理データ３４が含まれる。
【００１８】
図１に戻って、ホスト機器１０からメモリシステム１への書き込み命令や読み出し命令は、すべてメモリコントローラ２に送られる。メモリコントローラ２は、ホスト機器１０からの命令に基いてＮＡＮＤメモリ３を制御し、ＮＡＮＤメモリ３にデータを書き込んだり、ＮＡＮＤメモリ３からデータを読み出したりする。なお、図１ではＮＡＮＤメモリ３とメモリコントローラ２とが１対１に対応している例を示しているが、１つのメモリコントローラ２が複数のＮＡＮＤメモリ３を制御する構成であってもよい。
【００１９】
メモリコントローラ２は、ホストインタフェース制御部２１と、カウンタ制御部２２と、ＮＡＮＤ制御部２３と、を備える。メモリコントローラ２は、例えば、ＳｏＣ（System  On  a  Chip）として構成される半導体集積回路であり、ＣＰＵ（Central  Processing  Unit）、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）等を含む。
【００２０】
ホストインタフェース制御部２１は、ホスト機器１０から発行される命令に基いてデータの送受信を行う。具体的には、ホストインタフェース制御部２１は、ホスト機器１０が指し示すアドレス（論理アドレス、例えばＬＢＡ（Logical  Block  Address））の情報をＮＡＮＤメモリ３の物理アドレス空間に変換する処理等を行う。論理アドレスと物理アドレスの変換には、アドレス変換テーブル（図示せず）を用いる。
【００２１】
ＮＡＮＤ制御部２３は、ホストインタフェース制御部２１から送られる信号に基いて、ＮＡＮＤメモリ３を制御する。具体的には、ＮＡＮＤ制御部２３は、ＮＡＮＤメモリ３に対し、コマンドおよびアドレスを送出して、データの書き込みや読み出しを行う。
【００２２】
ＮＡＮＤ制御部２３は、書き込み部２３１と、読み出し部２３２と、ＥＣＣ処理部２３３と、を備える。
【００２３】
書き込み部２３１は、ＮＡＮＤメモリ３に対してコマンドやアドレス情報を送出したり、書き込むべきデータを送出したりすることにより、ＮＡＮＤメモリ３に対してデータを書き込む。ホスト機器１０から書き込みデータとして送られてきたデータは、ＥＣＣ処理部２３３にてエラー訂正符号が付加され、ＮＡＮＤメモリ３へ書き込むべきデータに変換される。なお、エラー訂正符号を付加した後にデータを乱数化するような処理が付加されてもよい。また、ユーザデータ３５のＮＡＮＤメモリ３への書き込みに伴い、当該ユーザデータ３５の論理アドレスが、ＮＡＮＤメモリ３の書き込み先である物理アドレスに対応づけられるよう、アドレス変換テーブルを更新する。
【００２４】
読み出し部２３２は、ＮＡＮＤメモリ３に対してコマンドやアドレス情報を送出することにより、ＮＡＮＤメモリ３からデータを読み出す。このとき、ＮＡＮＤメモリ３からの読み出しが、ホスト機器１０からのリード命令に基く場合は、当該リード命令に含まれる論理アドレスを、アドレス変換テーブルを参照して、対応する物理アドレスへと変換する。ＮＡＮＤメモリ３から読み出したデータは(書込み時に乱数化を行う場合は、乱数化の逆変換を施し)、ＥＣＣ処理部２３３にてエラー訂正が行われる。
【００２５】
ＮＡＮＤメモリ３における複数のメモリセルについて、リード回数をカウントするためのグループが設定されている。グループは、例えば、ブロック単位やページ単位で設定される。また、グループは、例えば物理アドレスによって特定されるが、論理アドレスによって特定されてもよい。ＤＲＡＭ４には、グループごとにリード回数を計数するためのカウンタ値が記憶される。なお、電源が切れるとＤＲＡＭ４に書き込まれている情報は消えるが、この対応情報は電源が切れる前に不揮発性の他のメモリに退避させておき、電源再投入時に各カウンタ値をＤＲＡＭ４に復帰できるようにしておく。
【００２６】
ここで、グループの定義方法の例について説明する。まず、図７〜図９を参照して、メモリセルアレイ３１やＮＡＮＤメモリ３の構造について説明する。図７は、メモリセルアレイ３１の構造の模式図である。１つのチップ（chip）は複数のプレーン（plane）を有している。１つのプレーン（plane）は複数のブロック（block）を有している。１つのブロック（block）は複数のワードライン（wordline）を有している。１つのワードライン（wordline）は複数のページ（Upper  page,  Middle  page,  Lower  page）を有している。上述のページ、ワードライン、ブロックについて、それぞれ、以下において、物理ページ、物理ワードライン、物理ブロックと呼ぶ場合がある。
【００２７】
図８は、ＮＡＮＤメモリ３の構造の模式図である。図８に示すように、各チップ（chip）は、各チップが接続されたチャネル（channel）の番号とバンク（bank）の番号の組み合わせによって表すことができる。また、プレーン（plane）は、チャネル（channel）の番号とバンク（bank）の番号とプレーン（plane）の番号の組み合わせによって表すことができる。
【００２８】
ここで、各チップ（chip）、各プレーン（plane）について物理ブロック（block）を１個ずつ選択して、１以上のチャネル（channel）・１以上のバンク（bank）分の１以上のチップ（chip）のそれぞれに対応する各物理ブロックを組にしたものが論理ブロックである。論理ブロックは、メモリシステム１におけるブロックの管理単位であり、状態遷移や消去は論理ブロック単位で行う。
【００２９】
また、１つの論理ブロック内において、１個のチップ（chip）内の複数プレーン（plane）間の物理ブロック（block）の組を物理ブロック組と呼ぶ。
【００３０】
図９は、ＮＡＮＤメモリ３の構造の模式図である。論理ブロックを構成する各物理ブロックの１物理ページの集合を論理ページと呼ぶ。同様に、論理ブロックを構成する各物理ブロックの１ワードラインの集合を論理ワードラインと呼ぶ。
【００３１】
そして、グループは、例えば、１物理ブロック内の要素として、物理ページ、物理ワードライン、物理ブロックを単位として定義できる。
【００３２】
ほかに、グループは、物理ページ、物理ワードライン、物理ブロックをそれぞれ論理ブロック内でプレーン方向に束ねた（マルチプレーン化した）ものとして、物理ページ組、物理ワードライン組、物理ブロック組を単位として定義できる。なお、束ねる数は必ずしも均一でなくてよい。
【００３３】
また、ほかに、グループは、ブロック内で、近接する複数の要素を（ページ、ワードライン方向に）束ねたものとして、物理ページ群、物理ワードライン群を単位として定義できる。なお、束ねる数は必ずしも均一でなくてよい。
【００３４】
また、ほかに、グループは、物理ページ群、物理ワードライン群をマルチプレーン化したものとして、物理ページ組群、物理ワードライン組群を単位として定義できる。
【００３５】
また、ほかに、グループは、論理ブロックを単位として定義できる。
【００３６】
図１に戻って、カウンタ制御部２２は、初期値設定部２２１と、カウンタ更新部２２２と、ゼロ検出部２２３と、を備える。ここで、例えば、シーケンシャルリード時等に、多くのカウンタの値が近いタイミングで閾値に達する事態を回避するために、グループごとに、リード回数の閾値回数として、リード回数の所定の閾値範囲内（所定範囲内の一例）のいずれかの数を対応付ける。閾値回数として本来、１０万回を想定しているなら、所定の閾値範囲は、例えば、９万回〜１０万回であればよい。
【００３７】
以下において、ダウンカウンタとは、リード回数を計数するためのものであって、１つずつ数値を減らすカウンタを指す。また、アップカウンタとは、リード回数を計数するためのものであって、１つずつ数値を増やすカウンタを指す。なお、カウンタ初期値とカウンタ判定値を組み合わせることで、リード回数の閾値を実現できる。
【００３８】
例えば、グループごとに、ダウンカウンタの初期値として９万回〜１０万回のいずれかの数を設定しておき、また、ダウンカウンタ判定値をゼロとしておいて、当該グループへのリードがあるたびに当該グループに対応するダウンカウンタをデクリメントすればよい。
【００３９】
ここで、図１２は、第１実施形態のメモリシステム１におけるカウンタの初期値の設定の処理を示すフローチャートである。初期値設定部２２１は、ブロック内のデータを消去したか否かを判定し（ステップＳ１１）、Ｙｅｓの場合はステップＳ１２に進み、Ｎｏの場合はステップＳ１１に戻る。
【００４０】
ステップＳ１２において、初期値設定部２２１は、グループごとに、ゼロよりも大きい所定の初期値範囲内のいずれかの数を例えばランダムに選択してダウンカウンタの初期値として設定する。
【００４１】
このように、ダウンカウンタの初期化（初期値設定）は、一例として、ダウンカウンタに対応するグループを含むブロック内のデータを消去した際に行えばよい。図４は、第１実施形態におけるダウンカウンタの初期値の例を示す図である。図４に示すように、グループごとに、ダウンカウンタの初期値として９万回〜１０万回のいずれかの数が設定されている。例えば、すべてのグループのダウンカウンタの初期値を異ならせてもよいが、これに限定されない（詳細は後述）。
【００４２】
なお、ダウンカウンタをデクリメントする場合、ダウンカウンタの初期値をばらばらにしておいてダウンカウンタ判定値を共通にすることと、ダウンカウンタの初期値を共通にしてダウンカウンタ判定値をばらばらにすることは、ふるまいとして実質的に等価である。この第１実施形態では前者を採用するが、後者を採用してもよい。
【００４３】
図１に戻って、初期値設定部２２１（閾値設定部の一例）は、グループごとに、ゼロよりも大きい所定の初期値範囲（９万回〜１０万回）内のいずれかの数を例えばランダムに選択（例えば乱数により選択）してダウンカウンタの初期値として設定する。
【００４４】
また、カウンタ更新部２２２（計数部の一例）は、グループごとに、リードがあるたびにＤＲＡＭ４におけるダウンカウンタをデクリメントすることでリード回数を計数する。なお、カウンタ更新部２２２は、ダウンカウンタの値がダウンカウンタ判定値に達したグループに対してさらにリードがあったときはダウンカウンタの値をダウンカウンタ判定値のままとする。例えば、ダウンカウンタ判定値がゼロの場合、ダウンカウンタの値をゼロのままとする。
【００４５】
また、ゼロ検出部２２３（判定部の一例）は、各グループについて、ＤＲＡＭ４におけるダウンカウンタの値がゼロに達したか否かを判定する。
【００４６】
また、判定部によってカウンタの値が判定値に達したと判定されたグループがあった場合、例えば、ゼロ検出部２２３によってダウンカウンタの値がゼロに達したと判定されたグループがあった場合、ＮＡＮＤ制御部２３（リフレッシュ実行部の一例）は、所定の箇所について、データを読み出し、ＥＣＣ処理部２３３によりリフレッシュが必要かどうか判定する。なお、このＥＣＣ処理部２３３による判定の処理は省略してもよい。
【００４７】
ＥＣＣ処理部２３３によって規定値以上のエラー数が検出された場合には、データの信頼性が低下していると判断し、読み出し部２３２によってデータを読み出して、ＥＣＣ処理部２３３によってエラー訂正を行い、書き込み部２３１によってその訂正したデータを複数のメモリセルのいずれかに書き込む処理であるリフレッシュを実行する。なお、リフレッシュで、訂正したデータを書き込む箇所は、他のメモリセルであってもよいし、同一のメモリセルであってもよい。
【００４８】
なお、データの読み出し元である上述の「所定の箇所」とは、ダウンカウンタの値がゼロに達したと判定された箇所と回路的に距離が近いメモリセルの範囲のことを指す。ここで、図１０、図１１を参照して、リフレッシュ対象（リフレッシュするメモリセル領域）の範囲について説明する。図１０は、リフレッシュ対象の範囲の説明図である。
【００４９】
図１０では、グループはワードライン単位とし、ダウンカウンタの値がダウンカウンタ判定値に達したグループがＷＬ（ｎ）であるものとする。その場合、リフレッシュ対象は、例えば、（ａ）に示すように、ワードラインＷＬ（ｎ）の１個隣のワードライン（ＷＬ（ｎ−１）、ＷＬ（ｎ＋１））である。
【００５０】
また、リフレッシュ対象は、（ｂ）に示すように、ワードラインＷＬ（ｎ）の２個隣のワードラインまで（ＷＬ（ｎ−２）、ＷＬ（ｎ−１）、ＷＬ（ｎ＋１）、ＷＬ（ｎ＋２））であってもよい。
【００５１】
また、リフレッシュ対象は、（ｃ）に示すように、ブロック内の既定のワードライン（例えば特にリード・ディスターブに弱いと想定されるもの。一例としてＷＬ（０））であってもよい。
【００５２】
また、リフレッシュ対象は、（ｄ）に示すように、ＷＬ（ｎ）を含むブロック全体であってもよい。
【００５３】
図１１は、リフレッシュ対象の範囲の説明図である。図１１では、グループは複数ワードライン単位とし、ダウンカウンタの値がダウンカウンタ判定値に達したグループがＷＬ（ｍ）〜（ｎ）（ただしｍ＜ｎ）であるものとする。その場合、リフレッシュ対象は、例えば、（ａ）に示すように、ワードラインＷＬ（ｍ）〜（ｎ）の１個隣のワードラインまで（ＷＬ（ｍ−１）〜ＷＬ（ｎ＋１））である。
【００５４】
また、リフレッシュ対象は、（ｂ）に示すように、ワードラインＷＬ（ｍ）〜（ｎ）の２個隣のワードラインまで（ＷＬ（ｍ−２）〜ＷＬ（ｎ＋２））であってもよい。
【００５５】
また、リフレッシュ対象は、（ｃ）に示すように、ブロック内の既定のワードライン（例えば特にリード・ディスターブに弱いと想定されるもの。一例としてＷＬ（０））であってもよい。
【００５６】
また、リフレッシュ対象は、（ｄ）に示すように、ＷＬ（ｍ）〜（ｎ）を含むブロック全体であってもよい。
【００５７】
次に、図５を参照して、第１実施形態のメモリシステム１における処理について説明する。図５は、第１実施形態のメモリシステム１におけるリフレッシュ等の処理を示すフローチャートである。なお、図４に示すように、グループごとに、ダウンカウンタの初期値として９万回〜１０万回のいずれかの数が設定されているものとする。なお、ダウンカウンタの初期化（初期値設定）は、例えば、図１２を用いて説明したように、ブロック内のデータを消去した際に行えばよい。
【００５８】
まず、カウンタ更新部２２２は、ＮＡＮＤメモリ３から読み出し部２３２によるデータの読み出しがあったか否かを判定し（ステップＳ１）、Ｙｅｓの場合はステップＳ２に進み、Ｎｏの場合はステップＳ１に戻る。
【００５９】
ステップＳ２において、カウンタ更新部２２２は、対応するグループ（読み出しがあったグループ）のダウンカウンタ（図１のＤＲＡＭ４参照）をデクリメントする。
【００６０】
次に、ステップＳ３において、判定部（例えばゼロ検出部２２３）は、ＤＲＡＭ４におけるダウンカウンタの値がダウンカウンタ判定値（例えばゼロ）に達したか否かを判定し、Ｙｅｓの場合はステップＳ４に進み、Ｎｏの場合はステップＳ１に戻る。
【００６１】
ステップＳ４において、ＮＡＮＤ制御部２３は、当該グループについて、読み出し部２３２によってデータを読み出し、ＥＣＣ処理部２３３によってエラー数（例えば、ページ内に含まれるエラービット数やエラー訂正で訂正失敗した回数）が規定値以上か否かを判定し、Ｙｅｓの場合はステップＳ５に進み、Ｎｏの場合はステップＳ６に進む。
【００６２】
ステップＳ５において、ＮＡＮＤ制御部２３は、ダウンカウンタの値がダウンカウンタ判定値（例えばゼロ）に達して（ステップＳ３でＹｅｓ）、かつ、エラー数が規定値以上だった（ステップＳ４でＹｅｓ）グループについてリフレッシュを実行する。なお、「エラー数が既定値以上（ステップＳ４）」の条件を省略し、カウンタの値のみを、リフレッシュを実行するか否かの判定条件としてもよい。ステップＳ５の後、ステップＳ１に戻る。
【００６３】
ステップＳ６において、カウンタ制御部２２の初期値設定部２２１は、ダウンカウンタの初期値を再設定する。再設定するダウンカウンタの初期値は、例えば、元の値より小さい値として、１万回が考えられる。つまり、ダウンカウンタの値がゼロに達したグループでも、エラー数が規定値未満であれば信頼性がまだ高いと考えられるので、リフレッシュを行うことなく、元の値より小さい値をダウンカウンタの初期値として設定する。
【００６４】
このようにして、第１実施形態のメモリシステム１によれば、リード・ディスターブによる信頼性低下現象を抑制することができる。具体的には、グループごとにリード回数の閾値回数を異ならせておくことで、シーケンシャルリード時等に、多くのカウンタの値が近いタイミングで閾値に達する可能性を大幅に低減させることができる。
【００６５】
また、グループごとのダウンカウンタ初期値、すなわちリード回数の閾値をランダムに選択することで、処理が簡潔に済む。
【００６６】
また、ダウンカウンタのデクリメントによってリード回数を計数し、ダウンカウンタ判定値をゼロとすることで、当該機能をハードウェア等で容易に実現できる。ゼロとの比較はハードウェアとして容易に実装できるからである。
【００６７】
また、ダウンカウンタの値がゼロに達したグループに対してさらにリードがあったときはダウンカウンタの値をゼロのままとすることで、ダウンカウンタの値がゼロに達してからただちにゼロ検出することに失敗した場合でも、ダウンカウンタの値がゼロのままなので、後で確実にゼロ検出をすることができる。
【００６８】
（第２実施形態）
次に、第２実施形態について説明する。第２実施形態では、第１実施形態の内容に加えて、ゼロ検出部２２３が、所定時間ごとに、各グループについて、ダウンカウンタの値がダウンカウンタ判定値（例えばゼロ）に達したか否かを判定する。
【００６９】
例えば、メモリコントローラ２内のＣＰＵの稼働率が高い場合、ダウンカウンタの値がゼロに達したことをゼロ検出部２２３によって検出できずに時間経過してしまう事象（以下、検出漏れ）が考えられる。この第２実施形態によれば、ゼロ検出部２２３が、所定時間ごとに各グループについてダウンカウンタの値がゼロに達したか否かを判定するようにすることで、そのような検出漏れが起きた場合でも、その後にカウンタのゼロを検出してリフレッシュ等を実行することができる。つまり、例えば、メモリコントローラ２の割り込みキューがあふれた場合でも、その後に、ゼロに達しているダウンカウンタをもれなく検出し、リード・ディスターブ対策としてのリフレッシュ等を実行することができる。
【００７０】
（第３実施形態）
次に、第３実施形態について説明する。第１実施形態では、グループごとのメモリセルの数が同一であることを前提としたが、第３実施形態では、グループごとのメモリセルの数が同一ではないようにする。例えば、リード・ディスターブに強いメモリセル部分に関しては２，３ページで１グループとして、弱いメモリセル部分は１００ページで１グループとして設定する。そうすると、１００ページ分をまとめたグループでは、カウンタが判定値に早く達して、リフレッシュ等を頻繁に行うことになる。逆に、２，３ページ分をまとめたグループでは、カウンタが判定値に達するのが遅く、リフレッシュの頻度が低くなる。
【００７１】
このようにして、第３実施形態によれば、複数のメモリセルにおけるリード・ディスターブへの強さ等に応じてグループごとにサイズを異ならせることで、実効性を大きく落とすことなくグループ数を減らし、処理を軽くすることができる。
【００７２】
（第４実施形態）
次に、第４実施形態について説明する。第１実施形態では、ダウンカウンタをデクリメントすることによりリード回数を計数した。第４実施形態では、アップカウンタをインクリメントすることによりリード回数を計数する。そのために、例えば、まず、すべてのグループに関するアップカウンタ判定値としてゼロよりも大きい所定値（例えば１０万回）が設定される。また、初期値設定部２２１は、グループごとに、所定値よりも小さい所定の初期値範囲（例えば０回〜１万回）内のいずれかの数をアップカウンタの初期値として設定する。なお、アップカウンタの初期化（初期値の設定）は、例えば、ダウンカウンタの初期化のとき（図１２）と同様に、アップカウンタに対応するグループを含むブロック内のデータを消去した際に行えばよい。
【００７３】
そして、カウンタ更新部２２２は、グループごとに、リードがあるたびにアップカウンタをインクリメントすることでリード回数を計数する。また、ゼロ検出部２２３に代わる判定部が、各グループについて、アップカウントの値がアップカウンタの判定値、すなわち所定値に達したか否かを判定する。
【００７４】
なお、アップカウンタをインクリメントする場合、初期値をばらばらにしておいて判定値を共通にすることと、初期値を共通にして判定値をばらばらにすることは、ふるまいとして実質的に等価であり、いずれを採用してもよい。
【００７５】
このようにして、第４実施形態によれば、ダウンカウンタをデクリメントすることによってではなく、アップカウンタをインクリメントすることによってリード回数を計数することができる。
【００７６】
（第５実施形態）
次に、第５実施形態について説明する。第１実施形態では、グループごとのダウンカウンタの初期値を所定の初期値範囲内でランダムに決定していた。この第５実施形態では、グループごとのカウンタの初期値を所定の初期値範囲内で数式等の条件により決定する。例えば、ダウンカウンタの場合ではなくアップカウンタの場合を例にとると、初期値設定部２２１が、次の２つの条件を元にアップカウンタの初期値を決定する。
【００７７】
（条件１）初期値が同じ数（または所定範囲内の数）であるグループ数が所定数以下になるようにする。
（条件２）初期値が同じ数（または所定範囲内の数）であるグループのグループ間距離が所定距離以上になるようにする。
【００７８】
なお、グループ間距離とは、あるアクセス方法にしたがってグループを並べた時に隣り合う任意の２つのグループの間に存在するグループの数である。アクセス方法の一例としては、シーケンシャルリードが考えられる。
【００７９】
次に、図６を参照して、第５実施形態におけるカウンタの初期値の例について説明する。図６は、第５実施形態におけるカウンタの初期値の例を示す図である。ここでは、初期値が同じ数であるグループ数が３個以下（条件１）で、グループ間距離を３０以上（条件２）とし、以下の式（１）で計算すると、グループ番号に対応するカウンタの初期値の分布は図６に示す通りとなる。なお、％は剰余演算、＊は乗算、ｋは１０００を表す。
（グループ番号＋（グループ番号％４）＊８）％３２＊１．５ｋ  ・・・式（１）
【００８０】
このようにして、第５実施形態によれば、カウンタの初期値を上述のような条件によって決定することで、ランダムに決定する場合に比べて、初期値が同じ数（または所定範囲内の数）であるグループ数を確実に少なく抑えたり、グループ間距離を確実に大きくとったりすることができる。したがって、リード・ディスターブが招く信頼性低下現象を検出したときの性能劣化の度合いを抑制することができる。
【００８１】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００８２】
例えば、上述のホストインタフェース制御部２１や、カウンタ制御部２２に含まれる初期値設定部２２１、カウンタ更新部２２２、ゼロ検出部２２３や、ＮＡＮＤ制御部２３に含まれる書き込み部２３１、読み出し部２３２、およびＥＣＣ処理部２３３は、１または複数のプロセッサが実行するソフトウェアにより実現されてもよいし、専用のＩＣ（Integrated  Circuit）などのハードウェアにより実現されてもよいし、ソフトウェアおよびハードウェアの併用により実現されてもよい。
【符号の説明】
【００８３】
１…メモリシステム、２…メモリコントローラ、３…ＮＡＮＤメモリ、４…ＤＲＡＭ、１０…ホスト機器、２１…ホストインタフェース制御部、２２…カウンタ制御部、２３…ＮＡＮＤ制御部、３１…メモリセルアレイ、３２…ブロック、３３…ページ、３４…管理データ、３５…ユーザデータ、３６…ＥＣＣ、２２１…初期値設定部、２２２…カウンタ更新部、２２３…ゼロ検出部、２３１…書き込み部、２３２…読み出し部、２３３…ＥＣＣ処理部。
【図１】
2019164859.tif 000003
【図２】
2019164859.tif 000004
【図３】
2019164859.tif 000005
【図４】
2019164859.tif 000006
【図５】
2019164859.tif 000007
【図６】
2019164859.tif 000008
【図７】
2019164859.tif 000009
【図８】
2019164859.tif 000010
【図９】
2019164859.tif 000011
【図１０】
2019164859.tif 000012
【図１１】
2019164859.tif 000013
【図１２】
2019164859.tif 000014