(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-10
(45)【発行日】2022-06-20
(54)【発明の名称】メモリシステムおよび不揮発性メモリの制御方法
(51)【国際特許分類】
G11C 16/34 20060101AFI20220613BHJP
G11C 16/04 20060101ALI20220613BHJP
G11C 16/06 20060101ALI20220613BHJP
G11C 16/08 20060101ALI20220613BHJP
G11C 16/26 20060101ALI20220613BHJP
G06F 12/00 20060101ALI20220613BHJP
【FI】
G11C16/34 120
G11C16/04 170
G11C16/06
G11C16/08 120
G11C16/26 100
G11C16/34 116
G06F12/00 550Z
G06F12/00 597U
(21)【出願番号】P 2020038490
(22)【出願日】2020-03-06
(62)【分割の表示】P 2016191391の分割
【原出願日】2016-09-29
【審査請求日】2020-03-06
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100176599
【氏名又は名称】高橋 拓也
(74)【代理人】
【識別番号】100205095
【氏名又は名称】小林 啓一
(74)【代理人】
【識別番号】100208775
【氏名又は名称】栗田 雅章
(72)【発明者】
【氏名】浅見 征平
(72)【発明者】
【氏名】檜田 敏克
【審査官】酒井 恭信
(56)【参考文献】
【文献】特表2012-513072(JP,A)
【文献】特開2012-133832(JP,A)
【文献】特開2013-125527(JP,A)
【文献】特開2013-080450(JP,A)
【文献】特開2009-016028(JP,A)
【文献】米国特許出願公開第2010/0157671(US,A1)
【文献】特開2014-022037(JP,A)
【文献】特開2014-086128(JP,A)
【文献】米国特許出願公開第2016/0260493(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 16/02 - 16/34
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
それぞれがワード線と前記ワード線に接続される複数のメモリセルとを備えデータ消去単位である複数のブロックを有する不揮発性メモリの、コントローラによる制御方法であって、
前記コントローラは前記不揮発性メモリに第2の探索を要求し、前記第2の探索において、前記不揮発性メモリは、
第2の複数の読み出し電圧をそれぞれ用いて前記複数のメモリセルからデータを複数回読み出し、
前記第2の複数の読み出し電圧を用いて前記複数のメモリセルから読み出した第2の複数のデータのそれぞれに含まれる第7の値の個数を算出し、
前記第2の複数の読み出し電圧のうち隣り合う二つの読み出し電圧を用いて読み出した二つのデータのそれぞれに含まれる前記第7の値の個数の差分を、前記第2の複数のデータのそれぞれについて算出し、
前記それぞれ算出した差分のうち
の最小値が第8の値以下である場合、前記差分が最小となる読み出し電圧を第2の読み出し電圧と決定し、前記第2の読み出し電圧が探索できたことを示す応答を前記コントローラへ送信し、
前記
最小値が前記第8の値よりも大きい場合、前記第2の読み出し電圧を探索できなかったことを示す応答を前記コントローラへ送信し、
前記コントローラは、前記第2の読み出し電圧を探索できなかったことを示す前記応答を前記不揮発性メモリから受信したことに応じ、第1の探索を実行し、
前記第1の探索において、前記コントローラは、
第1の複数の読み出し電圧をそれぞれ用いて前記複数のメモリセルからデータを複数回読み出し、
前記第1の複数の読み出し電圧を用いて前記複数のメモリセルから読み出した第1の複数のデータのそれぞれに含まれる第6の値の個数を算出し、
前記第1の複数の読み出し電圧のうち隣り合う二つの読み出し電圧を用いて読み出した二つのデータのそれぞれに含まれる前記第6の値の個数の差分を、前記第1の複数のデータのそれぞれについて算出し、
前記それぞれ算出した差分のうち前記差分が最小となる読み出し電圧を第1の読み出し電圧と決定し、
前記第1の読み出し電圧と第2の基準電圧との差分である第1の差分を算出し、
前記第1の差分が所定の第1の値以上の場合、前記複数のメモリセルが含まれるブロックに保存されるデータを別のブロックに保存する、
制御方法。
【請求項2】
前記第2の探索の要求に対して前記不揮発性メモリから受信した応答が前記第2の読み出し電圧を探索できたことを示す情報である場合、前記コントローラは前記第2の読み出し電圧を探索できたことを示す情報に基づいて、前記複数のメモリセルが含まれるブロックに保存されるデータを別のブロックに保存するかを判定する、
請求項1に記載の制御方法。
【請求項3】
前記コントローラは、前記複数のブロックのそれぞれに含まれる前記複数のメモリセルに対して、所定時間内に、前記判定を行う、
請求項2に記載の制御方法。
【請求項4】
前記第2の探索に対応する応答が前記第2の読み出し電圧を探索できたことを示す情報である場合、
前記コントローラは、前記第2の探索に対応する応答に含まれる前記第2の読み出し電圧と第3の基準電圧との差分である第2の差分を算出し、
前記第2の差分が所定の第2の値以上の場合、前記複数のメモリセルが含まれるブロックに保存されるデータを別のブロックに保存する、
請求項2または請求項3に記載の制御方法。
【請求項5】
前記第2の探索に対応する応答が前記第2の読み出し電圧を探索できなかったことを示す情報である場合、
前記コントローラは、第4の基準電圧を使用して前記複数のメモリセルからデータを読み出し、
前記読み出したデータを復号した際、誤りビット数が第1の閾値以上である場合、前記第1の探索を実行する、
請求項1に記載の制御方法。
【請求項6】
前記コントローラは、前記複数のメモリセルの消耗度を算出し、前記算出した消耗度が所定の消耗度以上の場合、前記不揮発性メモリへ前記第2の探索を要求することなく前記第1の探索を実行する、
請求項1に記載の制御方法。
【請求項7】
前記算出した消耗度が前記所定の消耗度未満の場合、
前記コントローラは、前記不揮発性メモリに前記第2の探索を要求し、
前記第2の探索に対応する応答が前記第2の読み出し電圧を探索できたことを示す情報である場合、
探索された前記第2の読み出し電圧と第5の基準電圧との差分である第3の差分を算出し、
前記第3の差分が所定の第3の値以上の場合、前記複数のメモリセルが含まれるブロックに保存されるデータを別のブロックに保存する、
請求項6に記載の制御方法。
【請求項8】
ホスト装置から読み出し命令を受信した場合に、
前記コントローラは、前記読み出し命令に対応するデータを前記不揮発性メモリから読み出し、前記読み出したデータである第1のデータを復号し、
前記第1のデータの復号に成功した場合は、前記復号された第1のデータを前記ホスト装置へ送信し、
前記第1のデータの復号に失敗した場合は、
前記コントローラは前記不揮発性メモリに前記第2の探索を要求し、
前記不揮発性メモリからの応答が前記第2の読み出し電圧を探索できたことを示す情報である場合、
前記コントローラは前記第2の読み出し電圧を探索できたことを示す情報に含まれる前記第2の読み出し電圧を使用して前記読み出し命令に対応するデータを前記不揮発性メモリから読み出し、
前記第2の読み出し電圧を使用して読み出したデータである第2のデータを復号し、
前記第2のデータの復号に成功した場合は、前記復号された第2のデータを前記ホスト装置へ送信する、
請求項1に記載の制御方法。
【請求項9】
前記第2の探索に対応する応答が前記第2の読み出し電圧を探索できなかったことを示す情報である場合、
前記コントローラは、前記第1の探索を実行し、
前記ホスト装置からの前記読み出し命令に対応するデータを前記不揮発性メモリから読み出す際に使用する第6の基準電圧を、前記第1の探索によって探索された前記第1の読み出し電圧で更新する、
請求項8に記載の制御方法。
【請求項10】
前記第2の探索に対応する応答が前記第2の読み出し電圧を探索できなかったことを示す情報である場合、
前記コントローラは、前記第1の探索を実行し、
前記第1の探索によって探索された前記第1の読み出し電圧を使用して前記読み出し命令に対応するデータを前記不揮発性メモリから読み出し、
前記第1の読み出し電圧を使用して読み出されたデータである第3のデータを復号し、
前記第3のデータの復号に成功した場合は、前記復号された第3のデータを前記ホスト装置へ送信する、
請求項9に記載の制御方法。
【請求項11】
それぞれがワード線と前記ワード線に接続される複数のメモリセルとを備えデータ消去単位である複数のブロックを有する不揮発性メモリと、
前記不揮発性メモリを制御可能なコントローラと、
を備え、
前記コントローラは、前記複数のメモリセルに対する第2の読み出し電圧を前記不揮発性メモリに探索させるための第2の探索コマンドを前記不揮発性メモリに対して送信し、
前記第2の探索コマンドに応じて、前記不揮発性メモリは、
第2の複数の読み出し電圧をそれぞれ用いて前記複数のメモリセルからデータを複数回読み出し、
前記第2の複数の読み出し電圧を用いて前記複数のメモリセルから読み出した第2の複数のデータのそれぞれに含まれる第7の値の個数を算出し、
前記第2の複数の読み出し電圧のうち隣り合う二つの読み出し電圧を用いて読み出した二つのデータのそれぞれに含まれる前記第7の値の個数の差分を、前記第2の複数のデータのそれぞれについて算出し、
前記それぞれ算出した差分のうち
の最小値が第8の値よりも大きい場合、前記第2の読み出し電圧を探索できなかったことを示す応答を前記コントローラへ送信し、
前記
最小値が前記第8の値以下である場合、前記差分が最小となる読み出し電圧を前記第2の読み出し電圧と決定し、前記第2の読み出し電圧が探索できたことを示す応答を前記コントローラへ送信し、
前記コントローラは、前記第2の探索コマンドに対応する応答に含まれる前記第2の読み出し電圧と第3の基準電圧との差分である第2の差分を算出し、
前記第2の差分が所定の第2の値以上の場合、
前記第2の読み出し電圧を用いて前記複数のメモリセルからデータを読み出し、
前記データのうち、誤っているビットの数である第4の値と、所定の第5の値の比較に基づいて、前記複数のメモリセルが含まれるブロックに保存されるデータを別のブロックに保存するかを判定する、
メモリシステム。
【請求項12】
前記第2の差分が前記第2の値以上の場合、前記コントローラは、前記第2の探索コマンドに対応する応答に含まれる前記第2の読み出し電圧を用いて前記複数のメモリセルから読みだしたデータのうち、誤っているビットの数である前記第4の値が、前記第5の値以上の場合、前記複数のメモリセルが含まれるブロックに保存されるデータを前記別のブロックに保存する、
請求項11に記載のメモリシステム。
【請求項13】
前記第2の探索コマンドは、第1の電圧と第2の電圧を指定し、
前記不揮発性メモリは、前記第2の読み出し電圧の探索を前記第1の電圧から開始し、
読み出し電圧を少なくとも前記第2の電圧分変化させて前記第2の読み出し電圧を探索する、
請求項11または請求項12に記載のメモリシステム。
【請求項14】
前記コントローラは、前記複数のブロックのそれぞれに含まれる前記複数のメモリセルに対して、所定時間内に前記判定を行う、請求項13に記載のメモリシステム。
【請求項15】
前記第2の探索コマンドに対応する応答が前記第2の読み出し電圧を探索できなかったことを示す情報である場合、
前記コントローラは、第1の基準電圧から変化させて得られる複数の読み出し電圧を用いて前記複数のメモリセルからデータを読み出すことによって第1の読み出し電圧を探索する第1の探索を実行し、前記第1の読み出し電圧と第2の基準電圧との差分である第1の差分を算出し、
前記第1の差分が所定の第1の値以上の場合、前記複数のメモリセルが含まれるブロックに保存されるデータを別のブロックに保存する、
請求項13または請求項14に記載のメモリシステム。
【請求項16】
前記コントローラは、
前記第1の探索において、第1の複数の読み出し電圧をそれぞれ用いて前記複数のメモリセルからデータを複数回読み出し、
前記第1の複数の読み出し電圧を用いて前記複数のメモリセルから読み出した第1の複数のデータのそれぞれに含まれる第6の値の個数を算出し、
前記第1の複数の読み出し電圧のうち隣り合う二つの読み出し電圧を用いて読み出した二つのデータのそれぞれに含まれる前記第6の値の個数の差分を、前記第1の複数のデータのそれぞれについて算出し、
前記それぞれ算出した差分のうち前記差分が最小となる読み出し電圧を前記第1の読み出し電圧と決定する、
請求項15に記載のメモリシステム。
【請求項17】
前記第2の探索コマンドに対応する応答が前記第2の読み出し電圧を探索できなかったことを示す情報である場合、
前記コントローラは、第4の基準電圧を使用して前記複数のメモリセルからデータを読み出し、
前記読み出したデータを復号できなかった場合に、第1の基準電圧から変化させて得られる複数の読み出し電圧を用いて前記複数のメモリセルからデータを読み出すことによって第1の読み出し電圧を探索する第1の探索を実行する、
請求項11に記載のメモリシステム。
【請求項18】
前記コントローラは前記複数のメモリセルの消耗度を算出し、
前記算出した消耗度が所定の消耗度未満の場合、前記不揮発性メモリに前記第2の探索コマンドを送信し、
前記算出した消耗度が前記所定の消耗度以上の場合、前記不揮発性メモリへ前記第2の探索コマンドを送信することなく、第1の基準電圧から変化させて得られる複数の読み出し電圧を用いて前記複数のメモリセルからデータを読み出すことによって第1の読み出し電圧を探索する第1の探索を実行する、
請求項11に記載のメモリシステム。
【請求項19】
前記コントローラは前記複数のメモリセルが含まれるブロックの管理情報を保持し、前記管理情報から前記複数のメモリセルの消耗度を算出する、請求項18に記載のメモリシステム。
【請求項20】
前記管理情報は前記複数のメモリセルが含まれるブロックの消去回数を含む、請求項19に記載のメモリシステム。
【請求項21】
それぞれがワード線と前記ワード線に接続される複数のメモリセルとを備えデータ消去単位である複数のブロックを有する不揮発性メモリと、
前記不揮発性メモリを制御可能なコントローラと、
を備え、
前記コントローラは前記複数のメモリセルの消耗度を算出し、
前記算出した消耗度が所定の消耗度未満の場合、
前記複数のメモリセルに対する第2の読み出し電圧を前記不揮発性メモリに探索させるための第2の探索コマンドを前記不揮発性メモリに対して送信し、
前記第2の探索コマンドに応じて、前記不揮発性メモリは、
第2の複数の読み出し電圧をそれぞれ用いて前記複数のメモリセルからデータを複数回読み出し、
前記第2の複数の読み出し電圧を用いて前記複数のメモリセルから読み出した第2の複数のデータのそれぞれに含まれる第7の値の個数を算出し、
前記第2の複数の読み出し電圧のうち隣り合う二つの読み出し電圧を用いて読み出した二つのデータのそれぞれに含まれる前記第7の値の個数の差分を、前記第2の複数のデータのそれぞれについて算出し、
前記それぞれ算出した差分のうち前記差分が最小となる読み出し電圧を前記第2の読み出し電圧と決定し、前記第2の読み出し電圧が探索できたことを示す応答を前記コントローラへ送信し、
前記コントローラは、前記第2の探索コマンドに対応する応答に含まれる前記第2の読み出し電圧と第3の基準電圧との差分である第2の差分を算出し、
前記第2の差分が第2の値以上の場合、前記複数のメモリセルが含まれるブロックに保存されるデータを別のブロックに保存し、
前記算出した消耗度が前記所定の消耗度以上の場合、前記不揮発性メモリへ前記第2の探索コマンドを送信することなく、第1の基準電圧から変化させて得られる複数の読み出し電圧を用いて前記複数のメモリセルからデータを読み出すことによって第1の読み出し電圧を探索する第1の探索を実行し、
前記第1の探索において、前記コントローラは、
第1の複数の読み出し電圧をそれぞれ用いて前記複数のメモリセルからデータを複数回読み出し、
前記第1の複数の読み出し電圧を用いて前記複数のメモリセルから読み出した第1の複数のデータのそれぞれに含まれる第6の値の個数を算出し、
前記第1の複数の読み出し電圧のうち隣り合う二つの読み出し電圧を用いて読み出した二つのデータのそれぞれに含まれる前記第6の値の個数の差分を、前記第1の複数のデータのそれぞれについて算出し、
前記それぞれ算出した差分のうち前記差分が最小となる読み出し電圧を前記第1の読み出し電圧と決定する、
メモリシステム。
【請求項22】
前記メモリシステムは、ホスト装置に接続可能であって、
前記コントローラは、前記ホスト装置から読み出し要求を受信した場合に、前記読み出し要求に対応するデータを前記不揮発性メモリから読み出し、
前記読み出したデータである第1のデータを復号し、
前記第1のデータの復号に成功した場合は、前記復号された第1のデータを前記ホスト装置へ送信し、
前記第1のデータの復号に失敗した場合は、
前記第2の探索コマンドを前記不揮発性メモリへ送信し、
前記第2の探索コマンドに対して前記不揮発性メモリから受信した応答が前記第2の読み出し電圧を探索できたことを示す情報である場合、
前記第2の探索コマンドに対応する応答に含まれる前記第2の読み出し電圧を使用して前記読み出し要求に対応するデータを前記不揮発性メモリから読み出し、
前記第2の読み出し電圧を使用して読み出したデータである第2のデータを復号し、
前記第2のデータの復号に成功した場合は、前記復号された第2のデータを前記ホスト装置へ送信する、
請求項11に記載のメモリシステム。
【請求項23】
前記コントローラは、前記第2の読み出し電圧を探索できなかったことを示す前記応答を前記不揮発性メモリから受信したことに応じ、第1の探索を実行し、
前記第1の探索において、前記コントローラは、第1の基準電圧から変化させて得られる
第1の複数の読み出し電圧を用いて前記複数のメモリセルからデータを複数回読み出し、
前記第1の複数の読み出し電圧を用いて前記複数のメモリセルから読み出した第1の複数のデータのそれぞれに含まれる第6の値の個数を算出し、
前記第1の複数の読み出し電圧のうち隣り合う二つの読み出し電圧を用いて読み出した二つのデータのそれぞれに含まれる前記第6の値の個数の差分を、前記第1の複数のデータのそれぞれについて算出し、
前記それぞれ算出した差分のうち前記差分が最小となる読み出し電圧を第1の読み出し電圧と決定し、
前記第1の読み出し電圧を使用して読み出されたデータである第3のデータを復号し、
前記第3のデータの復号に成功した場合は、前記復号された第3のデータを前記ホスト装置へ送信する、
請求項22に記載のメモリシステム。
【請求項24】
前記コントローラは、前記読み出し要求に対応するデータを前記不揮発性メモリから読み出すための読み出し電圧を保持し、
前記保持されている読み出し電圧を前記第1の読み出し電圧で更新する、
請求項23に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよび不揮発性メモリの制御方法に関する。
【背景技術】
【0002】
NAND型フラッシュメモリのような不揮発性メモリと、メモリコントローラと、を備えるメモリシステムおよび不揮発性メモリの制御方法が提供されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特表2012-513072号公報
【文献】特開2013-122804号公報
【文献】米国特許第8848453号明細書
【文献】特表2011-527067号公報
【文献】特表2010-533929号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、性能を向上させたメモリシステムおよび不揮発性メモリの制御方法を提供することである。
【課題を解決するための手段】
【0005】
上記課題を達成するために、それぞれがワード線とワード線に接続される複数のメモリセルとを備えデータ消去単位である複数のブロックを有する不揮発性メモリの、コントローラによる制御方法は、コントローラが不揮発性メモリに第2の探索を要求し、第2の探索において、不揮発性メモリは、第2の複数の読み出し電圧をそれぞれ用いて複数のメモリセルからデータを複数回読み出し、第2の複数の読み出し電圧を用いて複数のメモリセルから読み出した第2の複数のデータのそれぞれに含まれる第7の値の個数を算出し、第2の複数の読み出し電圧のうち隣り合う二つの読み出し電圧を用いて読み出した二つのデータのそれぞれに含まれる第7の値の個数の差分を、第2の複数のデータのそれぞれについて算出する。それぞれ算出した差分のうちの最小値が第8の値以下である場合、差分が最小となる読み出し電圧を第2の読み出し電圧と決定し、第2の読み出し電圧が探索できたことを示す応答をコントローラへ送信する。最小値が第8の値よりも大きい場合、第2の読み出し電圧を探索できなかったことを示す応答をコントローラへ送信する。コントローラは、第2の読み出し電圧を探索できなかったことを示す応答を不揮発性メモリから受信したことに応じて、第1の探索を実行する。第1の探索において、コントローラは、第1の複数の読み出し電圧をそれぞれ用いて複数のメモリセルからデータを複数回読み出し、第1の複数の読み出し電圧を用いて複数のメモリセルから読み出した第1の複数のデータのそれぞれに含まれる第6の値の個数を算出し、第1の複数の読み出し電圧のうち隣り合う二つの読み出し電圧を用いて読み出した二つのデータのそれぞれに含まれる第6の値の個数の差分を、第1の複数のデータのそれぞれについて算出する。それぞれ算出した差分のうち、差分が最小となる読み出し電圧を第1の読み出し電圧と決定する。コントローラは、第1の読み出し電圧と第2の基準電圧との差分である第1の差分を算出し、第1の差分が所定の第1の値以上の場合、複数のメモリセルが含まれるブロックに保存されるデータを別のブロックに保存する。
【図面の簡単な説明】
【0006】
【
図1】第1の実施形態に係るメモリシステムの構成例を示すブロック図。
【
図2】第1の実施形態に係るメモリシステムが組み込まれたシステムを例示した図。
【
図3】第1の実施形態に係るメモリシステムが組み込まれたポータブルコンピュータを例示した図。
【
図4】第1実施形態に係るメモリシステムの外観の一例を示す図。
【
図5】第1の実施形態に係るメモリシステムのメモリチップのブロック図。
【
図6】第1の実施形態に係るメモリシステムのメモリセルアレイの回路図。
【
図7】第1の実施形態に係るメモリシステムのメモリセルアレイの断面図。
【
図8】第1の実施形態に係るメモリシステムの不揮発性メモリに保持されるデータとセルトランジスタの閾値電圧との関係を示す図。
【
図9】第1の実施形態に係るメモリシステムの不揮発性メモリが備えるメモリセルにおける閾値電圧のシフトを示す図。
【
図10】読み出されたデータが“1”であるメモリセルの個数の差分データを示す図。
【
図11】第1の実施形態に係るメモリシステムの第1パラメータ情報の内容の一例を示す図。
【
図12】第1の実施形態に係るメモリシステムの第2パラメータ情報の内容の一例を示す図。
【
図13】第1の実施形態に係るメモリシステムのパトロール処理のフローチャート。
【
図14】第1の実施形態に係るメモリシステムのメモリコントローラからメモリチップへ送信されるコマンドシーケンス例。
【
図15】第1の実施形態に係るメモリシステムのパトロール処理の第1の変形例のフローチャート。
【
図16】第1の実施形態に係るメモリシステムのパトロール処理の第2の変形例のフローチャート。
【
図17】第2の実施形態に係るメモリシステムのホスト装置2からの読み出し要求に対するデータ読み出し処理のフローチャート。
【
図18】第3の実施形態に係るメモリシステムのパトロール処理のフローチャート。
【発明を実施するための形態】
【0007】
以下、発明を実施するための実施形態について図面を参照して説明する。
【0008】
(第1の実施形態)
図1は、第1の実施形態に係るメモリシステムの構成例を示すブロック図である。メモリシステム1は、ホスト装置2と通信線で接続され、ホスト装置2の外部記憶装置として機能する。ホスト装置2は、例えば、パーソナルコンピュータなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
【0009】
不揮発性メモリ100は、データを不揮発に記憶するメモリである。不揮発性メモリ100は、例えば、複数個のメモリチップであるメモリチップ#1 110-1、・・・、メモリチップ#N 110-Nを備える不揮発性半導体メモリである。なお、Nは任意の自然数である。
【0010】
以下の説明において、複数のメモリチップ110-1、・・・、110-Nのうち1つを特定する必要がある場合は符号110-1、・・・、110-Nを使用するが、任意のメモリチップを指す場合や、あるメモリチップを他のメモリチップと区別しない場合は、符号110を使用する。
【0011】
メモリチップ110の各々は、例えば互いに独立して動作可能であり、その一例としてはNAND型フラッシュメモリチップである。NAND型フラッシュメモリでは、一般に、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。
【0012】
なお、不揮発性メモリ100としてNAND型フラッシュメモリを用いる例を説明するが、不揮発性メモリ100として3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)等のNAND型フラッシュメモリ以外の記憶手段を用いてもよい。また、ここでは、記憶手段として半導体メモリを用いる例を説明するが、半導体メモリ以外の記憶手段を用いてもよい。
【0013】
メモリシステム1は、メモリコントローラ200と不揮発性メモリ100が1つのパッケージとして構成されるメモリカードであってもよいし、SSD(Solid State Drive)であってもよい。
【0014】
メモリコントローラ200は、ホスト装置2からの書き込み要求に従って不揮発性メモリ100への書き込みを制御する。本実施形態において、要求とは、例えば、命令、コマンドである。また、ホスト装置2からの読み出し要求に従って不揮発性メモリ100からの読み出しを制御する。メモリコントローラはコントローラとも称される。
【0015】
メモリコントローラ200は、ホストインターフェース(ホストI/F)210、制御部220、データバッファ230、符号化部/復号部(Encoder/Decoder)240およびメモリインタフェース(メモリI/F)250を備える。ホストI/F210、制御部220、データバッファ230、符号化部/復号部240およびメモリI/F250は、内部バス260で接続されている。
【0016】
ホストI/F210は、ホスト装置2との間のインターフェース規格に従った処理を実施し、ホスト装置2から受信した要求、ユーザデータなどを内部バス260に出力する。また、ホストI/F210は、不揮発性メモリ100から読み出されたユーザデータ、制御部220からの応答などをホスト装置2へ送信する。なお、本実施の形態では、ホスト装置2からの書き込み要求で不揮発性メモリ100へ書き込まれたデータをユーザデータと呼ぶ。
【0017】
制御部220は、メモリシステム1の各構成要素を統括的に制御する。制御部220は、ハードウェアにより実現されてもよいし、CPU(Central Processing Unit)等のプロセッサがファームウェアを実行することにより実現されてもよい。後者の場合、例えば、プロセッサが、メモリシステム1が電源供給を受けたときに、図示しないROMに格納されているファームウェア(制御プログラム)をバッファ230または制御部220内の図示しないRAM上に読み出して所定の処理を実行することにより、制御部220の処理が実現される。ここで、プロセッサは、コアまたはプロセッサコアとも称される。
【0018】
制御部220は、ホスト装置2からホストI/F210経由で要求を受けた場合に、その命令に従った制御を行う。例えば、制御部220は、ホスト装置2からの要求に従って、不揮発性メモリ100へのユーザデータおよびパリティの書き込みをメモリI/F250へ指示する。また、制御部220は、ホスト装置2からの要求に従って、不揮発性メモリ100に対する命令をメモリI/F250へ指示する。
【0019】
また、制御部220は、ホスト装置2から書き込み要求を受信した場合、書き込み要求で指定されたユーザデータをデータバッファ230に保存し、このユーザデータに対する不揮発性メモリ100上の格納領域(メモリ領域)を決定する。すなわち、制御部220は、ユーザデータの書込み先を決定し、管理する。ホスト装置2から受信したユーザデータの論理アドレスと当該ユーザデータが格納される不揮発性メモリ100上の格納領域を示す物理アドレスとの対応はアドレス変換テーブルとして格納される。
【0020】
また、制御部220は、ホスト装置2から読み出し要求を受信した場合、読み出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F250へ指示する。
【0021】
データバッファ230は、メモリコントローラ200がホスト装置2から受信したユーザデータを、不揮発性メモリ100へ記憶するまでの間、一時格納する。また、データバッファ230は、不揮発性メモリ100から読み出したユーザデータをホスト装置2へ送信するまでに一時格納する。データバッファ230は、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリで構成される。また、データバッファ230は、メモリコントローラ200内部に搭載されてもよく、メモリコントローラ200の外にメモリコントローラ200とは独立して搭載されてもよい。
【0022】
また、制御部220は、アドレス変換テーブルを含む管理情報2201をデータバッファ230に保存する。制御部220は、所定のタイミングでデータバッファ230の管理情報2201を不揮発性メモリ100へ保存する。制御部220は、メモリシステム1の起動時に、不揮発性メモリ100の管理情報2201をデータバッファ230へ保存し、管理情報2201を変更する場合はデータバッファ230の管理情報2201を更新する。
【0023】
符号化部/復号部240は、符号化回路241と復号回路242とを備える。符号化部/復号部はECC(Error Correcting Code)回路とも称される。符号化回路241は、データバッファ230に保持されたデータを符号化して、データと冗長部(パリティ)とを有する符号語を生成する。符号化回路241は、第1のデータ長のユーザデータを符号化(誤り訂正符号化)して第2のデータ長の符号語を生成する。符号化回路241が行う符号化では、例えば、BCH(Bose-Chaudhuri-Hocquenghem)符号、RS(Reed-Solomon)符号、LDPC(Low Density Parity Check)符号等を用いることができる。なお、符号化回路241が用いる誤り訂正符号はこれらに限定されない。復号回路242は、不揮発性メモリ100から読み出されたデータである符号語をメモリI/F250経由で取得し、取得した符号語を復号する。復号回路242は、復号時に誤り訂正に失敗した場合は、制御部220に誤り訂正失敗を通知する。
【0024】
メモリI/F250は、不揮発性メモリ110を制御する。メモリI/F250は、制御部220等の制御に従って符号化回路241から出力された符号語を不揮発性メモリ110に書き込む。また、メモリI/F250は、制御部220等の制御に従って不揮発性メモリ110からデータを読み出し、バッファ230経由で復号回路242に転送する。更にメモリI/F250は、制御部220等の制御に従って、不揮発性メモリ110に保存されているデータを消去する。
【0025】
メモリI/F250は、バスを介して各メモリチップ110と接続される。バスは、各メモリチップ110がNAND型フラッシュメモリである例に基づくと、NANDバスであり、以下の記述および図はNANDバスの例に基づく。NANDバスは、信号CEn、CLE、ALE、WEn、REn、WPn、RY/BYn、DQ、DQS、およびDQSnを伝送する。本明細書において、信号の名称の末尾のnは、末尾のnの信号の反転論理を示し、信号がローレベルの場合にアサートされていることを意味する。
【0026】
アサートされている信号CEnは、メモリチップ110をイネーブルにする。アサートされている信号CLEは、アサートされている信号CLEと並行してメモリチップ110へ流れる信号DQがコマンドであることをメモリチップ110に通知する。アサートされている信号ALEは、アサートされている信号ALEと並行してメモリチップ110へ流れる信号DQがアドレスであることをメモリチップ110に通知する。アサートされている信号WEnは、アサートされている信号WEnと並行してメモリチップ110へ流れる信号DQをメモリチップ110に取り込むことを指示する。アサートされている信号REnは、メモリチップ110に信号DQを出力することを指示する。アサートされている信号WPnは、データ書き込みおよび消去の禁止をメモリチップ110に指示する。信号RY/BYnは、メモリチップ110がレディ状態であるか、ビジー状態であるかを示し、ローレベルによってビジー状態を示す。メモリチップ110は、レディ状態においてメモリコントローラ200からの命令を受け付け、ビジー状態においてメモリコントローラ200からの命令を受け付けない。
【0027】
信号DQ(DQ0~DQ7)は、例えば8ビットの幅を有し、データの実体であり、コマンド(CMD)、メモリチップ110への書き込みデータまたはメモリチップ110からの読み出しデータ(DAT)、アドレス信号(ADD)、ステータスデータ(STA)等を含む。メモリチップ110からの読み出しデータは、単に読み出しデータと称される場合がある。メモリコントローラ200からメモリチップ110へ向かう信号DQSおよびDQSnは、信号DQを出力するタイミングをメモリチップ110に指示する。一方、メモリチップ110からメモリコントローラ200に向かう信号DQSおよびDQSnは、信号DQを出力するタイミングをメモリコントローラ200に通知する。
【0028】
メモリシステム1は、メモリコントローラ200の温度を測定するためのセンサで、メモリコントローラ200の近傍に配置される温度センサ300を備えてもよい。この場合、メモリコントローラ200は、メモリコントローラ200と温度センサ300との間の通信インターフェースの機能を有する温度センサI/F270を備え、制御部220は、温度センサ300で測定された温度情報を、温度センサI/F270を介して取得するようにしてもよい。
【0029】
図2及び
図3は、メモリシステム1とホスト装置2が組み込まれたシステム3の例を示す。システム3は、電子機器の一例である。
【0030】
図2に示すように、メモリシステム1は、例えばサーバ等のシステム3内に記憶装置として組み込まれる。システム3は、メモリシステム1とメモリシステム1が装着されたホスト装置2とを含む。ホスト装置2は、例えば上方に開口した複数のコネクタ4を有する。コネクタ4は、例えば、スロットである。
図2に示す例では、メモリシステム1は、基板400を含み、基板400に、不揮発性メモリ100とメモリコントローラ200が搭載される。複数のメモリシステム1は、ホスト装置2のコネクタ4に其々装着され、略鉛直方向に起立した姿勢で互いに並べて支持される。このような構成によれば、複数のメモリシステム1をコンパクトに纏めて実装可能であり、ホスト装置2の小型化を図ることができる。
【0031】
また、メモリシステム1は、例えばノートブック型ポータブルコンピュータやタブレット端末、その他デタッチャブルノートPC(personal computer)のような電子機器のストレージデバイスとして使用されるものでもよい。
図3に示すように、メモリシステム1は、例えば、ホスト装置2に対応するポータブルコンピュータに実装される。ここでは、メモリシステム1を含むポータブルコンピュータ全体がシステム3となる。
【0032】
ポータブルコンピュータは、本体301と、表示ユニット302と、を備える。表示ユニット302は、ディスプレイハウジング303と、このディスプレイハウジング303に収容された表示装置304と、を備える。
【0033】
本体301は、筐体305と、キーボード306と、ポインティングデバイスであるタッチパッド307と、を備える。筐体305は、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット308など、を含む。
【0034】
カードスロット308は、筐体305の側面に設けられる。ユーザは、筐体305の外部から追加デバイス309をカードスロット308に挿入することが可能である。
【0035】
メモリシステム1は、HDD(Hard disk drive)の置き換えとして、ポータブルコンピュータ内部に実装された状態で使用してもよいし、追加デバイス309として使用してもよい。
【0036】
図4は、第1実施形態に係るメモリシステムの外観の一例を示す斜視図である。この例では、メモリシステム1は、基板400を含む。基板400には、メモリチップ110-1、110-2、110-3、110-4、110-5、110-6、110-7、110-8、ホストI/F210に含まれる接続部211、メモリコントローラ200、バッファ230としてのDRAM、および温度センサ300が搭載されてよいが、これに限定されない。
【0037】
なお、ホストI/F210は、接続部211(端子部)を有し、
図4に示すメモリシステム1では、接続部211はメモリコントローラ200の外にメモリコントローラ200と独立して搭載される。接続部211は、例えば複数の接続端子(金属端子)を有する。接続部211は、例えば、ホスト装置2のコネクタ4に差し込まれ、コネクタ4に電気的に接続される。ホストI/F210は、接続部211を介してホスト装置2との間で信号をやり取りする。
【0038】
また、
図4に示すメモリシステム1では、メモリチップ110は、他のメモリチップ110、メモリコントローラ200、バッファ230としてのDRAM、または温度センサ300と側面が任意の長さの間隙を介して向き合うように配置され、温度センサ300は、メモリコントローラ200、NANDメモリ110-1、・・・、110-8、バッファ230としてのDRAMに囲まれた位置に配置されているが、NANDメモリ110-1、110-2、110-3、110-4、110-5、110-6、110-7、110-8、ホストインターフェース210、メモリコントローラ200、バッファ230としてのDRAM、および温度センサ300の配置は一例であり、これに限定されない。
【0039】
次に、上記メモリチップ110の構成について説明する。
図5は、本実施形態に係るメモリチップ110のブロック図である。前述の通り、メモリチップ110は例えばNAND型フラッシュメモリチップであり、本実施態様では、メモリセルが半導体基板上方に三次元に積層された三次元積層型NAND型フラッシュメモリである。
【0040】
図5に示されるように、メモリチップ110は、メモリセルアレイ111、入出力回路112、入出力制御回路113、シーケンサ(制御回路)114、電圧生成回路115、ドライバ116、センスアンプ117、カラムデコーダ118、データラッチ119、およびロウデコーダ120、等の要素を含む。
【0041】
メモリセルアレイ111は複数のブロック(BLK0、BLK1、…)を含む。ブロックは、例えばデータの消去単位であり、各ブロック中のデータは一括して消去される。1つのブロックより小さい単位(例えばブロックの半分)でデータが消去されてもよい。
【0042】
各ブロックは複数のストリングユニットSU(SU0、SU1、…)の集合である。各ストリングユニットSUは複数のNANDストリング131の集合である。NANDストリング131は、複数のメモリセルトランジスタMTを含む。メモリセルアレイ111にはさらにワード線WL、ビット線BL、セルソース線CELSRC、および選択ゲート線SGDLならびにSGSL等の配線が設けられている。
【0043】
入出力回路112は、信号DQを受け取り、または信号DQを送信する。入出力回路112は、また、データストローブ信号DQSならびにDQSnを送信する。
【0044】
入出力制御回路113は、メモリコントローラ200から種々の制御信号を受け取り、制御信号に基づいて、入出力回路12を制御する。制御信号は、信号CEn、CLE、ALE、WEn、REn、WPn、およびデータストローブ信号DQSならびにDQSnを含む。
【0045】
シーケンサ114は、入出力回路112からコマンドおよびアドレス信号を受け取り、コマンドおよびアドレス信号に基づいて、電圧生成回路115、ドライバ116、センスアンプ117、カラムデコーダ118を制御する。シーケンサ114は、カウンタ114aおよびレジスタ114bを含む。
【0046】
電圧生成回路115は、メモリチップ110の外部から所定の数値データを受け取り、受け取った数値データから種々の電位(電圧)を生成する。所定の数値データは、例えば、デジタル値(DAC値)である。生成された電位は、ドライバ116およびセンスアンプ117等の要素に供給される。電圧生成回路115によって生成される電位は、例えば、ワード線WL、選択ゲート線SGDLおよびSGSL、ならびにソース線CELSRCに印加される電位を含む。種々の電位の印加により、種々の要素に電圧が印加される。ドライバ116は、電圧生成回路115によって生成された電位を受け取り、シーケンサ114の制御に従って、受け取られた電位のうちの選択されたものをロウデコーダ120に供給する。
【0047】
ロウデコーダ120は、ドライバ116から種々の電位を受け取り、入出力回路112からアドレス信号を受け取り、受け取られたアドレス信号に基づいて1つのブロックを選択し、選択されたブロックにドライバ116からの電位を転送する。
【0048】
センスアンプ117は、メモリセルトランジスタMTの状態をセンスし、センスされた状態に基づいて読み出しデータを生成し、また、書き込みデータをメモリセルトランジスタMTに転送する。
【0049】
データラッチ119は、入出力回路112からの書き込みデータを保持し、書き込みデータをセンスアンプに供給する。また、データラッチ119は、センスアンプ117から読み出しデータを受け取り、カラムデコーダ118の制御に従って、読み出しデータを入出力回路112に供給する。カラムデコーダ118は、アドレス信号に基づいて、データラッチ119を制御する。
【0050】
次に、上記メモリセルアレイ111の備えるブロックの構成について、
図6を用いて説明する。
図6は、ブロックの回路図である。
【0051】
図示するように、ブロックは例えば4つのストリングユニットSU(SU0~SU3)を含む。また各々のストリングユニットSUは、複数のNANDストリング131を含む。
【0052】
NANDストリング131の各々は、例えば8個のメモリセルトランジスタMT(MT0~MT7)と、選択トランジスタST1、ST2とを含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを含む積層ゲートを備え、データを不揮発に保持する。なお、メモリセルトランジスタMTの個数は8個に限られず、16個や32個、64個、128個等であってもよく、その数は限定されるものではない。メモリセルトランジスタMTは、選択トランジスタST1、ST2間に、その電流経路が直列接続されるようにして配置されている。この直列接続の一端側のメモリセルトランジスタMT7の電流経路は選択トランジスタST1の電流経路の一端に接続され、他端側のメモリセルトランジスタMT0の電流経路は選択トランジスタST2の電流経路の一端に接続されている。
【0053】
ストリングユニットSU0~SU3の各々の選択トランジスタST1のゲートは、それぞれセレクトゲート線SGD0~SGD3に共通接続される。他方で、選択トランジスタST2のゲートは、複数のストリングユニット間で同一のセレクトゲート線SGSに共通接続される。また、同一のブロック0内にあるメモリセルトランジスタMT0~MT7の制御ゲートはそれぞれワード線WL0~WL7に共通接続される。
【0054】
すなわち、ワード線WL0~WL7及びセレクトゲート線SGSは同一ブロック内の複数のストリングユニットSU0~SU3間で共通に接続されているのに対し、セレクトゲート線SGDは、同一ブロック内であってもストリングユニットSU0~SU3毎に独立している。
【0055】
また、メモリセルアレイ111内でマトリクス状に配置されたNANDストリング131のうち、同一行にあるNANDストリング131の選択トランジスタST1の電流経路の他端は、いずれかのビット線BL(BL0~BL(L-1)、(L-1)は1以上の自然数)に共通接続される。すなわちビット線BLは、複数のブロック間でNANDストリング131を共通に接続する。また、選択トランジスタST2の電流経路の他端はソース線SLに共通に接続されている。ソース線SLは、例えば複数のブロック間でNANDストリング131を共通に接続する。
【0056】
前述の通り、同一のブロック内にあるメモリセルトランジスタMTのデータは、一括して消去される。これに対してデータの読み出し及び書き込みは、いずれかのブロックのいずれかのストリングユニットSUにおける、いずれかのワード線WLに共通に接続された複数のメモリセルトランジスタMTにつき、一括して行われる。メモリセルトランジスタMTが2値(1ビット)を記憶するメモリセルトランジスタMTの場合は、この一括して行われる単位が1ページに対応する。
【0057】
図7は、本実施形態に係るメモリセルアレイ111の一部領域の断面図である。図示するように、p型ウェル領域20上に複数のNANDストリング131が形成されている。すなわち、ウェル領域20上には、セレクトゲート線SGSとして機能する複数の配線層27、ワード線WLとして機能する複数の配線層23、及びセレクトゲート線SGDとして機能する複数の配線層25が形成されている。
【0058】
そして、これらの配線層25、23、及び27を貫通してウェル領域20に達するメモリホール26が形成されている。メモリホール26の側面には、ブロック絶縁膜28、電荷蓄積層29(絶縁膜)、及びゲート絶縁膜30が順次形成され、更にメモリホール26内を導電膜31が埋め込んでいる。導電膜31は、NANDストリング131の電流経路として機能し、メモリセルトランジスタMT並びに選択トランジスタST1及びST2の動作時にチャネルが形成される領域である。
【0059】
配線層27は、例えば4層設けられ、セレクトゲート線SGS、及び選択トランジスタST2のゲート電極として機能する。最下層の配線層27及びゲート絶縁膜30は、p型ウェル領域20の表面内に形成されたn+型不純物拡散領域33の近傍まで設けられている。
【0060】
配線層23は、例えば8層設けられ、配線層27の上方に設けられている。配線層23はそれぞれ、対応するワード線WL及びメモリセルトランジスタMTの制御ゲート電極として機能する。
【0061】
配線層25は、例えば4層設けられ、配線層23の上方に設けられている。配線層25は、セレクトゲート線SGD、及び選択トランジスタST1のゲート電極として機能する。
【0062】
以上の構成により、各NANDストリング131において、ウェル領域20上に選択トランジスタST2、複数のメモリセルトランジスタMT、及び選択トランジスタST1が順次積層されている。
【0063】
なお、
図7の例では選択トランジスタST1及びST2は、メモリセルトランジスタMTと同様に電荷蓄積層29を備えている。しかし選択トランジスタST1及びST2は、実質的にデータを保持するメモリセルとして機能するものでは無く、スイッチとして機能する。この際、選択トランジスタST1及びST2がオン/オフする閾値は、電荷蓄積層29に電荷を注入することによって制御されても良い。
【0064】
導電膜31の上端には、ビット線BLとして機能する配線層32が形成される。ビット線BLは、センスアンプ117に接続される。
【0065】
更に、ウェル領域20の表面内には、n+型不純物拡散層33及びp+型不純物拡散層34が形成されている。拡散層33上にはコンタクトプラグ35が形成され、コンタクトプラグ35上には、ソース線SLとして機能する配線層36が形成される。ソース線SLは、図示しないソース線ドライバに接続される。また拡散層34上にはコンタクトプラグ37が形成され、コンタクトプラグ37上には、ウェル配線CPWELLとして機能する配線層38が形成される。ウェル配線CPWELLは、図示しないウェルドライバに接続される。配線層36及び38は、セレクトゲート線SGDよりも上層であり、且つ配線層32よりも下層のレイヤに形成されるが、この構造は一例であり、これに限定されない。
【0066】
以上の構成が、
図7を記載した紙面の奥行き方向に複数配列されており、奥行き方向に並ぶ複数のNANDストリング131の集合によってストリングユニットSUが形成される。また、同一のストリングユニットSU内に含まれる複数のセレクトゲート線SGSとして機能する配線層27は、互いに共通に接続されている。つまり、隣接するNANDストリング131間のウェル領域20上にもゲート絶縁膜30が形成され、拡散層33に隣接する半導体層27及びゲート絶縁膜28は、拡散層33近傍まで形成される。
【0067】
従って、選択トランジスタST2がオン状態とされる際には、そのチャネルはメモリセルトランジスタMT0と拡散層33とを電気的に接続する。また、ウェル配線CPWELLに電圧を印加することで、導電膜31に電位を与えることが出来る。
【0068】
なお、メモリセルアレイ111の構成についてはその他の構成であっても良い。すなわちメモリセルアレイ111の構成については、例えば、“三次元積層不揮発性半導体メモリ”という2009年3月19日に出願された米国特許出願12/407,403号に記載されている。また、“三次元積層不揮発性半導体メモリ”という2009年3月18日に出願された米国特許出願12/406,524号、“不揮発性半導体記憶装置及びその製造方法”という2010年3月25日に出願された米国特許出願12/679,991号“半導体メモリ及びその製造方法”という2009年3月23日に出願された米国特許出願12/532,030号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【0069】
次に、
図8を参照して、メモリセルトランジスタMTについて説明する。メモリチップ110は、1つのメモリセルトランジスタMTにおいて1ビット以上のデータを保持することができる。
図8は、例として、データ書き込みの結果、1メモリセルトランジスタ当たり3ビットのデータを保持するメモリセルトランジスタMTの閾値電圧の分布を示す。各メモリセルトランジスタMTの閾値電圧は、保持される3ビットデータに応じた値を有する。メモリセルトランジスタMT当たり3ビットの記憶の場合、各メモリセルトランジスタMTは、8つの閾値電圧のうちのいずれかを有し得る。8つの閾値電圧は、例えば、“111”データ、“110”データ、“100”データ、“000”データ、“010”データ、“011”データ、“001”データ、および“101”データをそれぞれ保持している状態である。8つの閾値電圧と3ビットデータとの組み合わせは、
図8の例に限られない。
【0070】
1つのセルユニットCUのメモリセルトランジスタMTのある同じ位置のビットのデータの組は、ページを構成する。1つのセルユニットCUのメモリセルトランジスタMTの最上位ビットのデータの組は、アッパーページを構成する。1つのメモリセルユニットCUのメモリセルトランジスタMTの中位ビットのデータの組は、ミドルページを構成する。1つのセルユニットCUのメモリセルトランジスタMTの最下位ビットのデータの組は、ロワーページを構成する。
【0071】
ある同じ3ビットデータを保持する複数のメモリセルトランジスタMTであっても、メモリセルトランジスタMTの特性のばらつき等に起因して、互いに相違する閾値電圧を有し得る。このため、ある同じデータを保持する複数のトランジスタMTの閾値電圧は1つの分布を形成する。分布はEr、A、B、C、D、E、F、およびGレベルと称される。Aレベル中の閾値電圧は、Erレベル中の閾値電圧より高い。同様に、B、C、D、E、F、およびGレベル中の閾値電圧は、それぞれ、A、B、C、D、E、およびFレベル中の閾値電圧より高い。Erレベルは、消去状態のメモリセルトランジスタMTの閾値電圧の分布である。
【0072】
読み出し対象のメモリセルトランジスタMTによって保持されているデータの判別のために、当該メモリセルトランジスタMTの閾値電圧が属するレベルが判断される。レベルの判断のために、読み出し電圧VA、VB、VC、VD、VE、VF、およびVGが用いられる。以下、電圧VA、VB、VC、VD、VE、VF、およびVGを含め、レベルの判断ために読み出し対象のメモリセルトランジスタMTに印加されるある値の電圧は、読み出し電圧VCGRと称される場合がある。
【0073】
読み出し対象のメモリセルトランジスタMTの閾値電圧がある読み出し電圧VCGRを超えているかが、このメモリセルトランジスタMTの閾値電圧が属するレベルの判定に用いられる。読み出し電圧VAは、ErレベルのメモリセルトランジスタMTが有する最高の閾値電圧より高く、BレベルのメモリセルトランジスタMTが有する最低の閾値電圧より低く、すなわちErレベルとAレベルとの間に位置する。同様に、読み出し電圧VB、VC、VD、VE、およびVFは、それぞれ、AレベルとBレベルの間、BレベルとCレベルの間、CレベルとDレベルの間、DレベルとEレベルの間、EレベルとFレベルの間、およびFレベルとGレベルの間に位置する。読み出し電圧VCGR以上の閾値電圧を有するメモリセルトランジスタMTは、制御ゲート電極において読み出し電圧VCGRを受け取ってもオフを維持する。一方、読み出し電圧VR未満の閾値電圧を有するメモリセルトランジスタMTは、制御ゲート電極において読み出し電圧VCGRを受け取っていると、オンしている。電圧VREADは、非読み出し対象のセルユニットCUのメモリセルトランジスタMTのワード線WLに印加され、いずれのレベルにあるメモリセルトランジスタMTの閾値電圧よりも高い。
【0074】
読み出し電圧VA、VB、VC、VD、VE、VF、およびVGは予め設定されており、より具体的には、読み出し電圧VA、VB、VC、VD、VE、VF、およびVGに対応する数値データ(DAC値)が予め設定されている。予め設定された数値データは、例えば25DAC、90DAC、140DAC、220DAC、300DAC、370DAC、420DACである。これらの数値データは、例えばメモリセルアレイ111のデータ領域に記憶されている。この数値データは、メモリチップ110のパワーオン時にメモリセルアレイ111から読み出され、例えば、レジスタ114bに転送される。メモリコントローラ200はメモリI/F250経由でこれらの数値データを取得し、保持してもよい。
【0075】
図9を用いて、メモリセルトランジスタMTの閾値電圧のシフトについて説明する。メモリセルトランジスタMTは、例えば書き込み後のプログラムディスターブ、及び読み出し後のリードディスターブの影響を受ける。この影響を受けると、メモリセルトランジスタMTの閾値電圧は、例えば
図9に示すように負側にシフトする場合がある。
【0076】
このとき、予め設定された読み出し電圧では、メモリセルトランジスタMTから正確にデータを読み出すことができなくなり、ビット誤り率が増加する場合がある。ここでビット誤り率は、読み出されたデータに含まれる誤りビットの割合を示している。
【0077】
そこで、メモリコントローラ200は、ビット誤り率が増加したページに対して、最適な読み出し電圧を特定するために、シフトリードやVthトラッキングを実行してもよい。
【0078】
シフトリードは、メモリセルトランジスタMTの最適な読み出し電圧を探索するための読み出し動作であり、予め設定された読み出し電圧からシフトさせた電圧値を用いて行う読み出し動作である。
【0079】
シフトリードでは、読み出し電圧を一定量ずつ変化させ、各読み出し電圧を用いて不揮発性メモリ100からデータを読み出す。制御部220は、各閾値電圧分布に対応した予め設定された読み出し電圧を中心にした探索領域を設け、各読み出し電圧毎に不揮発性メモリ110に対して読み出し動作を実行する。そして、この探索領域内において、誤りビット数の最も少ない読み出し電圧に基づき、最適な読み出し電圧を決定する。
【0080】
Vthトラッキングも、メモリセルトランジスタMTの最適な読み出し電圧を探索するための不揮発性メモリ110に対する読み出し動作である。なお、メモリコントローラ200が実行するVthトラッキングは、第1のVthトラッキングとも称される。
【0081】
第1のVthトラッキングでは、制御部220は、例えば、読み出し電圧範囲を所定の数に分け、各々の読み出し電圧を使用して読み出したデータを基にしてVth分布を求める。
【0082】
例えば、制御部220は、まず、ある読み出し電圧を所定のワード線に印加することによりデータを読み出し、読み出したデータに含まれる“1”の個数をカウントする。
【0083】
例えば、制御部220は、次に、所定の電圧幅だけずらした読み出し電圧を当該所定のワード線に印加することによりデータを読み出し、読み出したデータに含まれる“1”の個数をカウントし、当該電圧幅をずらす前の読み出し電圧を使用したときにカウントされた“1”の個数との差分を求める。
【0084】
例えば、制御部220は、この後、上記動作を所定回数繰り返すことで、横軸に読み出し電圧をプロットし縦軸に差分をプロットした場合に、
図10に示すようなVth分布が得られる。なお、制御部220は、プロット後に所定のスムージング処理を行って
図10に示すようなVth分布を得てもよい。
【0085】
そして、例えば、制御部220は、
図10に示すようなVth分布の谷、つまり、Vth分布において隣接する読み出し電圧でカウントされた“1”の個数の差分が最小となる読み出し電圧を求め、これをメモリセルトランジスタMTの最適な読み出し電圧として決定する。なお、メモリセルトランジスタMTは単にメモリセルとも称される。
【0086】
次に、
図11、
図12を参照して、管理情報2201について説明する。管理情報2201は、さらに、第1パラメータ情報2202と、第2パラメータ情報2203と、を含んでよいが、これに限定されない。
【0087】
図11は、第1パラメータ情報2202の内容の一例を示す図である。図示するように、第1パラメータ情報2202は、ページの識別情報の一例であるページ番号に対し、各種の動作パラメータが対応付けられたテーブルである。動作パラメータは、例えば、そのページからデータを読み出す際に使用される読み出し電圧であるが、これに限られない。また、動作パラメータが読み出し電圧である場合、初期値として、予め設定された読み出し電圧値が設定されているが、制御部220は、例えば、シフトリードやVthトラッキングで決定された最適な読み出し電圧により動作パラメータを更新してもよい。また、制御部220は、予め設定された読み出し電圧値を読み出し電圧とは別に第1パラメータ情報2202に保存しておいてもよい。
【0088】
図12は、第2パラメータ情報2203の内容の一例を示す図である。図示するように、第2パラメータ情報2203は、例えば、ページの識別情報の一例であるページ番号に対し、書き込み世代番号、書き込み時に温度センサ300から取得したメモリコントローラ220の温度などの温度情報、書き込みが行われてからの読み出し回数、消去回数、書き込み回数などのうち一部または全部を含む。
【0089】
第1パラメータ情報2202、第2パラメータ情報2203ともに、メモリチップ110ごと、ブロックごとに分類されたテーブルであってもよい。
【0090】
書き込み世代番号は、データが書き込まれる順に関連する情報である。メモリシステム1は、あるブロックにデータを書き込み始めると、そのブロックの全てのページが書き込み済みとなるまで、そのブロックのページにデータを書き込むものとする。メモリシステム1は、例えば、あるブロックのページの書き込み順に書き込み世代番号「1」~「m」(mは2以上の自然数)を付与してもよいし、ブロックの各ページに共通して書き込み世代番号「m」を付与してもよい。
【0091】
そして、メモリシステム1は、例えば、別のブロックにデータを書き込む場合、当該別のブロックのページの書き込み順に書き込み世代番号「m+1」~「2m」を付与してもよいし、ブロックの各ページに共通して書き込み世代番号「2m」を付与してもよい。
【0092】
このように、書き込み世代番号は、書き込みが行われてからの経過時間が長くなる程、その値が小さくなる傾向を有する。書き込みの頻度は一様ではないため、書き込み世代番号の差が、そのまま経過時間の差に比例するものでは無いが、少なくとも書き込み世代番号が小さいページは、書き込み世代番号が大きいページに比して、書き込みからの経過時間が長いと言える。なお、書き込み世代番号に代えて、書き込みが行われてからの経過時間を保持するようにしてもよい。
【0093】
次に、第1の実施形態に係るメモリシステムの不揮発性メモリ100に格納されたデータに対するアクセス処理について説明する。
【0094】
第1の実施形態に係るメモリシステムでは、メモリシステム1がホスト装置2から読み出し要求、書き込み要求、データ消去要求、トリムコマンドのようなデータ削除要求等を受信した場合や、バックグラウンドでメモリコントローラ200が、ガベージコレクションや、リフレッシュや、ウェアレベリングや、パトロール処理等を実行する場合に、メモリコントローラ200は不揮発性メモリ100にアクセスする。
【0095】
ガベージコレクションは、コンパクションとも称される。不揮発性メモリ100は、データの消去単位とデータの読み書き単位が異なるため、不揮発性メモリ100の書き換えが進むと、無効データによって、ブロックが断片化され、このような断片化されたブロックが増えると、使用可能なブロックが少なくなる。ガベージコレクションは、使用可能なブロックを増加させるための処理で、例えば、有効データおよび無効データが含まれている複数のアクティブブロックから有効データを集めて、別のブロックに書き直し、フリーブロックを確保する処理を意味する。
【0096】
アクティブブロックは、有効データが記録されているブロックを示す。フリーブロックは、有効データが記録されていないブロックを示す。フリーブロックは、消去した後、消去済みブロックとして再利用可能である。フリーブロックは、本実施形態では、有効データが記録されていない消去前のブロックと、消去済みブロックとの両方を含んでいる。有効データとは、論理アドレスと対応付けられているデータであり、無効データとは論理アドレスが対応付けられていないデータである。消去済みブロックは、データが書き込まれると、アクティブブロックとなる。
【0097】
リフレッシュは、あるブロック内のデータを別のブロックに書き直す処理である。メモリコントローラ200は、例えば、誤り訂正処理における訂正ビット数が増加する等のようにあるブロック内のデータの劣化を検出した場合に、当該ブロック内のデータを別のブロックに書き直すリフレッシュを実行する。
【0098】
ウェアレベリングは、例えば、書き換え回数や消去回数が多いブロックに記憶されているデータと、書き換え回数や消去回数の少ないブロックに記憶されているデータとを入れ替えることで、不揮発性メモリ100のブロックの書き換え回数を平準化する処理である。
【0099】
パトロール処理は、不揮発性メモリ100に記録済みのデータが媒体の劣化によって失われていないかをチェック、確認するための動作であり、ホスト装置1からの指示を受けることなくメモリシステム100が自主的に行う。
【0100】
パトロール処理は、エラーの増加したブロックを検出するために、例えば、不揮発性メモリ100に記憶されているデータを所定単位ずつ読み出し、当該読み出されたデータを復号回路242での誤り訂正結果に基づいてチェックする処理である。この実施形態では、所定単位は1セルユニットCUとするが、他の単位をパトロールリードの単位としてもよい。
【0101】
このチェック処理では、例えば、読み出されたデータの誤りビット数を閾値と比較し、誤りビット数が閾値を越えたデータをリフレッシュの対象とする。例えば、制御部220は、あるセルユニットCUからの読み出しデータの誤りビット数が閾値を超えた場合に、そのセルユニットCUが含まれるブロック内のデータをリフレッシュの対象とする。つまり、制御部220は、誤りビット数が閾値を越えたセルユニットCUを含むブロックに記憶されているデータを、別のブロックに再記憶する。制御部220は、元のブロックに記憶されていたデータを無効化、つまり、元のブロックをフリーブロックとする。
【0102】
制御部220は、不揮発性メモリ100におけるアクティブブロックに対して、定期的にパトロール処理を実行する。制御部220は、全てのアクティブブロックに対するパトロール処理を、サイクルタイムTaの時間内に実行する。制御部220は、あるサイクルタイムTaの時間内に全てのアクティブブロックに対するパトロール処理を完了したら、続けてパトロール処理を行い、次のサイクルタイムTaの時間内に全てのアクティブブロックに対するパトロール処理を完了できるようにする。
【0103】
サイクルタイムTaは、メモリシステム1がオンしている時間換算でカウントされ、例えば、10時間、100時間等の任意の時間単位で設定される。メモリシステム1が、パトロール処理実行中に、ホスト装置1から読み出し要求、書き込み要求等のコマンドを受信した場合、メモリコントローラ200は、ホスト装置1から受信したコマンドに対する処理をパトロール処理より優先させて実行する。
【0104】
図13は、第1の実施形態に係るメモリシステムのパトロール処理のフローチャートである。
図13のフローチャートでは、メモリコントローラ200が不揮発性メモリ100の所定のセルユニットCUをパトロールすることに決定した段階から説明を行う。
【0105】
本実施形態では、パトロール対象となるセルユニットCUを含むメモリチップ110がメモリチップ110-1であるとして説明する。
【0106】
制御部220は、メモリチップ110-1に対してパトロール対象のセルユニットCUに対するVthトラッキングをメモリI/F250経由で要求する(ステップ1301)。
【0107】
制御部220は、メモリチップ110-1に対してパトロール対象のセルユニットCUに対する読み出し電圧の最適値の探索を要求するために、メモリI/F250経由で、メモリチップ110-1に対してパトロール対象のセルユニットCUのVthトラッキングの実行を要求するコマンドを送信する。
【0108】
メモリチップ110-1は、メモリI/F250経由で制御部220から送信されたVthトラッキングの実行を要求するコマンドに対する応答として、Vthトラッキング結果(VD)をメモリI/F250経由で送信する。制御部220は、メモリチップ110-1から送信されたVthトラッキング結果(VD)をメモリI/F250経由で取得する。
【0109】
なお、このように、制御部220がメモリチップ110に対して所定のセルユニットCUのVthトラッキングの実行を要求し、メモリチップ110が所定のセルユニットCUのVthトラッキングを実行してメモリコントローラ200に対してVthトラッキング結果を出力し、制御部220がVthトラッキングの実行要求に対してメモリチップ110から出力されたVthトラッキング結果を取得することは、第2のVthトラッキングとも称される。
【0110】
図14は、メモリチップ110に対してパトロール対象のセルユニットCUのVthトラッキングの実行を要求するために、メモリI/F250を経由してメモリコントローラ200からメモリチップ110へ送信される信号を示すコマンドシーケンスの例を示す。
図14は、また、Vthトラッキングの要求に応答してメモリチップ110からメモリコントローラ200に流れる信号、および信号RY/BYnを示す。
図14では、信号DQとして送信される信号と、メモリチップ110-1のレディ/ビジー状態を示すRY/BYn信号のみを示しており、その他の信号CEn、CLE、ALE、WEn、REn、WPn、DQS及びDQSnの図示を省略している。
【0111】
図14に示されるように、制御部220は、メモリI/F250経由で、コマンドXXhを送信する。コマンドXXhの送信の間、図示せぬ信号CLEがアサートされている。コマンドXXhは、例えばVthトラッキングの要求を指示するためのコマンドである。
【0112】
制御部220は、メモリI/F250経由で、コマンドXXhに続いて、5サイクルに亘ってアドレス信号を送信する。アドレス信号は、不揮発性メモリ100の記憶領域のうちの、読み出し対象の領域を指定する。アドレス信号の送信の間、図示せぬ信号ALEがアサートされている。アドレス信号は、例えば第1および第2サイクルにおいてカラムアドレス信号CA(AD1およびAD2)を含む。カラムアドレス信号CAはカラムアドレスを含み、カラムアドレスは、指定されたページのうちの読み出し対象のカラムを指定する。アドレス信号は、例えば第3~第5サイクルにおいてロウアドレス信号RA(AD3~AD5)を含む。ロウアドレス信号RAは、ロウアドレス、すなわち選択ページを指定する。選択ページの記憶空間を提供するセルトランジスタMTを含んだセルユニットCUと接続されたワード線WLは、選択ワード線WLと称される。
【0113】
制御部220は、ロウアドレス信号RA(AD3~AD5)を送信した後、メモリI/F250経由で、メモリチップ110がVthトラッキングを実行するときの最小電圧値を指定する信号(DA1)を送信する。Vthトラッキングが開始されるときの最小電圧値は、例えば、DAC値で指定される。
【0114】
メモリコントローラ200の制御部は、Vthトラッキングが実行されるときの最小電圧値を指定する信号(DA1)を送信した後、メモリI/F250経由で、メモリチップ110がVthトラッキングを実行する際に変化させる読み出し電圧を指定する信号(DA2)を送信する。変化させる読み出し電圧は、例えば、DAC値で指定される。
【0115】
メモリチップ110は、Vthトラッキングを実行する際に変化させる読み出し電圧を指定する信号(DA2)を受信すると、Vthトラッキングを実行する。メモリチップ110は、Vthトラッキングの実行の間、ビジー状態をメモリコントローラ200に通知する。
【0116】
メモリチップ110は、メモリコントローラ200からメモリI/F250経由受信したカラムアドレス信号CA(AD1およびAD2)およびロウアドレス信号RA(AD3~AD5)で指定されたセルユニットCUに対して、メモリコントローラ200から受信した最小電圧値を指定する信号(DA1)と変化させる読み出し電圧を指定する信号(DA2)を使用してVthトラッキングを実行する。
【0117】
メモリチップ110は、第1のステップとして、Vthトラッキング対象のセルユニットCUの選択ワード線WLに対して最小電圧値に対応する読み出し電圧を印加することによりデータを読み出し、読み出したデータに含まれる“1”の個数をカウントする。
【0118】
メモリチップ110は、第1のステップの後、第2のステップとして、選択ワード線WLに対して最小電圧値に対応する電圧に対して変化させる読み出し電圧に対応する電圧を加えた読み出し電圧を印加することによりデータを読み出し、読み出したデータに含まれる“1”の個数をカウントし、第1のステップにてカウントされた“1”の個数との差分を求める。
【0119】
メモリチップ110は、第2のステップの後、第3のステップとして、選択ワード線WLに対して第2のステップで使用した電圧に対して変化させる読み出し電圧に対応する電圧を加えた読み出し電圧を印加することによりデータを読み出し、読み出したデータに含まれる“1”の個数をカウントし、第2のステップにてカウントされた“1”の個数との差分を求める。
【0120】
この後、メモリチップ110が上記第3のステップのような処理を所定回数繰り返すことで、横軸に読み出し電圧をプロットし縦軸に差分をプロットした場合に、
図10と同様のグラフが得られる。なお、プロット後に所定のスムージング処理を行ってグラフ化してもよい。
【0121】
メモリチップ110は、“1”の個数の差分が最小値となる読み出し電圧を最適な読み出し電圧として算出し、算出した最適な読み出し電圧をVthトラッキング結果(VD)とする。また、メモリチップ110は、グラフ化をした場合にグラフの底部(凹部)を見つけられない場合や複数個のグラフの底部を見つけられた場合には、最適な読み出し電圧を算出できなかったことを示す情報をVthトラッキング結果(VD)としてもよい。
【0122】
また、メモリチップ110は、“1”の個数の差分の最小値が所定の個数よりも大きい場合には、最適な読み出し電圧を算出できなかったことを示す情報をVthトラッキング結果(VD)としてもよい。
【0123】
メモリコントローラ200は、図示せぬ信号REnを繰り返しアサートして、Vthトラッキング結果(VD)をメモリチップ110から出力させ、出力されたVthトラッキング結果(VD)メモリI/F250経由で取得する。
【0124】
図14で説明したコマンドは、1つのメモリチップ110に対してのみ出力される。すなわち、例えば、メモリコントローラ200は、メモリI/F250経由で、メモリチップ110-1、・・・、メモリチップ110-Nそれぞれに対してVthトラッキング要求のコマンドを発行することにより、メモリコントローラ200はメモリチップ110-1、・・・、メモリチップ110-Nそれぞれに対して所定のセルユニットCUに対するVthトラッキングを要求できる。
【0125】
制御部220は、メモリI/F250経由でメモリチップ110-1から取得したVthトラッキング結果(VD)に基づいてメモリチップ110-1がVthトラッキングに成功したか、つまり、第2のVthトラッキングが成功したか、を判定する(ステップ1302)。
【0126】
制御部220は、例えば、メモリチップ110-1から取得したVthトラッキング結果が、最適な読み出し電圧を算出できなかったことを示す情報では無い場合、メモリチップ110-1がVthトラッキングに成功した、と判定する。
【0127】
制御部220は、メモリチップ110-1がVthトラッキングに成功したと判定する場合(ステップ1302:Yes)、メモリチップ110-1からVthトラッキング結果である最適な読み出し電圧を取得し、取得した読み出し電圧と予め定められた読み出し電圧との差分を求める(ステップ1303)。
【0128】
メモリチップ110-1がメモリI/F250経由で送信するVthトラッキング結果である最適な読み出し電圧の情報は、V単位の電圧値であってもよく、DAC値のような所定の数値データであってもよい。
【0129】
制御部220は、取得した読み出し電圧と予め定められた読み出し電圧との差分が所定の第1の値未満か判定し(ステップ1304)、所定の第1の値以上の場合(ステップ1304:No)、パトロール対象のセルユニットCUが含まれるブロックをリフレッシュする(ステップ1305)。
【0130】
制御部220は、メモリチップ110-1がVthトラッキングに成功したと判定しない場合(ステップ1302:No)、セルユニットCUに対して前述した第1のVthトラッキングまたは前述したシフトリードを行うことにより最適な読み出し電圧を取得する(ステップ1306)。
【0131】
制御部220は、第1のVthトラッキングまたはシフトリードにより取得した最適な読み出し電圧と予め定められた読み出し電圧との差分を計算し(ステップ1307)、その差分が所定の第2の値未満か判定する(ステップ1308)。差分が所定の第2の値以上の場合(ステップ1308:No)、パトロール対象のセルユニットCUが含まれるブロックをリフレッシュする(ステップ1309)。なお、所定の第2の値は所定の第1の値と同じであってもよいし、異なる値であってもよい。
【0132】
なお、制御部220は、メモリコントローラ200が保持する読み出し電圧の情報、または、第1パラメータ情報2202の動作パラメータの情報、をステップ1306にて第1のVthトラッキングまたはシフトリードにより取得した読み出し電圧で更新してもよい。
【0133】
図15は、第1の実施形態に係るメモリシステムのパトロール処理の第1の変形例のフローチャートである。
図15のフローチャートにおいても、
図13と同様に、メモリコントローラ200が不揮発性メモリ100の所定のセルユニットCUをパトロールすることに決定した段階から説明を行う。また、
図15において、
図13の構成と同一部分は同一符号で示す。
【0134】
制御部220は、第2のVthトラッキングにより取得した読み出し電圧と予め定められた読み出し電圧との差分が所定の第1の値未満か判定し(ステップ1304)、所定の第1の値以上の場合(ステップ1304:No)、第2のVthトラッキングにより取得した読み出し電圧を使用して、メモリI/F250経由で、セルユニットCUのデータを読み出す。(ステップ1501)。
【0135】
メモリコントローラ200は、読み出されたデータを復号する(ステップ1502)。制御部220は、読み出されたセルユニットCUのデータの復号を復号回路242に対して指示し、復号回路242は制御部220から指示されたデータを復号する。復号回路242は、復号結果を制御部220に対して出力する。すなわち、復号時に誤り訂正に成功した場合は復号されたデータを、復号時に誤り訂正に失敗した場合は誤り訂正失敗を制御部220に通知する。
【0136】
制御部220は、復号回路242による読み出されたセルユニットCUのデータの復号において検出された誤りビット数が所定の第1のビット数未満か判定し(ステップ1503)、所定の第1のビット数以上の場合(ステップ1503:No)、パトロール対象のセルユニットCUが含まれるブロックをリフレッシュする(ステップ1504)。
【0137】
図16は、第1の実施形態に係るメモリシステムのパトロール処理の第2の変形例のフローチャートである。
図16のフローチャートにおいても、
図13と同様に、メモリコントローラ200が不揮発性メモリ100の所定のセルユニットCUをパトロールすることに決定した段階から説明を行う。また、
図16において、
図13、
図15の構成と同一部分は同一符号で示す。
【0138】
制御部220は、メモリチップ110-1がVthトラッキングに成功しないと判定した場合(ステップ1302:No)にメモリコントローラ200が保持する読み出し電圧を使用して、メモリI/F250経由で、セルユニットCUのデータを読み出し(ステップ1601)、読み出したデータを復号する(ステップ1602)。制御部220は、読み出されたセルユニットCUのデータの復号を復号回路242に対して指示し、復号回路242は制御部220から指示されたデータを復号する。復号回路242は、復号結果を制御部220に対して出力する。すなわち、復号時に誤り訂正に成功した場合は復号されたデータを、復号時に誤り訂正に失敗した場合は誤り訂正失敗を制御部220に通知する。
【0139】
制御部220は、復号回路242による読み出されたセルユニットCUのデータの復号において検出された誤りビット数が所定の第2のビット数未満か判定し(ステップ1603)、所定の第2のビット数以上の場合(ステップ1603:No)、セルユニットCUに対して、第1のVthトラッキングまたはシフトリードにより最適な読み出し電圧を取得する(ステップ1306)。制御部220は、取得した読み出し電圧とメモリコントローラ200が保持する読み出し電圧との差分を計算し(ステップ1307)、その差分が所定の第2の値未満か判定する(ステップ1308)。差分が所定の第2の値以上の場合(ステップ1308:No)、制御部220は、パトロール対象のセルユニットCUが含まれるブロックをリフレッシュする(ステップ1309)。
【0140】
上述した第1の実施形態によれば、メモリコントローラ200は、パトロール処理の際、第2のVthトラッキングにより取得した読み出し電圧と予め定められた読み出し電圧との差分に基づいてリフレッシュするかを決定する。
【0141】
このため、第1の実施形態に係るメモリシステムでは、メモリコントローラ200は、第1のVthトラッキングやシフトリードをすること無く、メモリチップ110により実行される第2のVthトラッキングの結果を使用してパトロール処理を行うことができるため、メモリコントローラ200の処理負荷を減らすことができる。
【0142】
また、第1の実施形態に係るメモリシステムでは、誤り訂正処理を実行すること無くリフレッシュするかを決定するため、パトロール処理の際のメモリコントローラ200の処理負荷を減らすことができる。メモリコントローラ200の処理負荷が減ることにより、メモリシステム1の性能が向上する。第1の実施形態に係るメモリシステムでは、パトロール処理の際のメモリコントローラ200の処理負荷が減ることにより、パトロール処理にかかる時間を短くでき、メモリコントローラ200の消費電力も減らすことができ、より短時間かつ低消費電力でパトロール処理を実行できる。
【0143】
また、第1の実施形態によれば、メモリコントローラ200は、第2のVthトラッキングにより最適な読み出し電圧を取得できない場合には、メモリコントローラ200が第1のVthトラッキングやシフトリードにより取得した読み出し電圧と予め定められた読み出し電圧との差分に基づいてリフレッシュするかを決定する。この場合も、メモリコントローラ200は、誤り訂正処理を実行すること無くリフレッシュするかを決定するため、パトロール処理の際のメモリコントローラ200の処理負荷を減らすことができ、より短時間かつ低消費電力でパトロール処理を実行できる。
【0144】
(第2の実施形態)
図17は、第2の実施形態に係るメモリシステムのホスト装置2からの読み出し要求に対する不揮発性メモリ100からのデータの読み出し処理のフローチャートである。
図17において、
図13の構成と同一部分は同一符号で示す。尚、本実施形態の説明において、第1実施形態と同様の構成および動作については、重複する説明を省略する。また、本実施形態におけるメモリシステム1の外観及び構成等は、
図1乃至
図12と同様とする。
【0145】
図17のフローチャートは、ホスト装置2から読み出し要求を受け、要求のあったデータを不揮発性メモリ100から読み出し、読み出し結果をホスト装置2へ送信する処理を示している。
【0146】
ホスト装置2からの読み出し要求では、ホスト装置2がメモリシステム1に対して読み出したいデータの量やデータの読み出し位置を示したアドレス情報等が指定されている。メモリシステム1は、読み出し要求の受信が可能か否かを判断し、読み出し要求の受信が可能である場合に、ホスト装置2から読み出し要求を受信してもよい。
図17のフローチャートではこの過程を省略し、読み出し要求の受信が可能であるとして、メモリシステム1のメモリコントローラ200がホスト装置2からホストI/F210経由で読み出し要求を受信した段階から説明を行う。
【0147】
メモリコントローラ200がホスト装置300から読み出しの指示を受け取ると、
図17のフローが開始する。メモリコントローラ200は、ホストI/F210経由でホスト装置2から読み出し要求を受ける(ステップ1701)と、制御部220は、読み出し要求の対象となるデータの格納場所を特定するためにアドレス変換テーブルを使用して読み出し要求で指定されたアドレスである論理アドレスを物理アドレスに変換し、ホスト装置2からの読み出し要求を処理するためにどのメモリチップ110のどの物理アドレスへアクセスすればよいかを解決する(ステップ1702)。
【0148】
本実施形態では、ホスト装置2からの読み出し要求で指定された論理アドレスに対するアクセス先のメモリチップ110がメモリチップ110-1であるとして説明する。
【0149】
制御部220は、メモリチップ110-1からのデータ読み出しをメモリI/F250へ指示し、メモリI/F250経由でメモリチップ110-1からデータを読み出す(ステップ1703)。
【0150】
ここでの読み出しは、通常の読み出しであり、メモリコントローラ200は、第1パラメータ情報2202の動作パラメータを使用してメモリI/F250経由で、メモリチップ110-1からデータを読み出す。メモリチップ110-1は、入出力回路112にて読み出し指示を受け取ると、シーケンサ114が、電圧生成回路115、ドライバ116、センスアンプ117、カラムデコーダ118、およびロウデコーダ120を制御して、読み出し指示にて指定されたページからデータを読み出し、読み出されたデータは、入出力回路112によりメモリI/F250へ出力される。メモリコントローラ200は、メモリI/F250経由で読み出されたデータを受け取る。
【0151】
次に、メモリコントローラ200は、メモリチップ110-1から読み出したデータを復号する(ステップ1704)。制御部220は、メモリチップ110-1からデータを読み出したデータの復号を復号回路242に対して指示し、復号回路242は制御部220から指示されたデータを復号する。復号回路242は、復号結果を制御部220に対して出力する。すなわち、復号時に誤り訂正に成功した場合は復号されたデータを、復号時に誤り訂正に失敗した場合は誤り訂正失敗を制御部220に通知する。
【0152】
その後、制御部220は、誤り訂正に成功の場合(ステップ1705:Yes)、復号されたデータであるユーザデータをホストI/F210経由でホスト装置2へ送信する(ステップ1706)。
【0153】
制御部220は、誤り訂正に成功しなかった場合(ステップ1705:No)、第2のVthトラッキングを実行する。すなわち、制御部220は、誤り訂正に成功しなかった場合(ステップ1705:No)、メモリチップ110-1からパトロール対象のセルユニットCUに対するVthトラッキング結果(VD)をメモリI/F250経由で取得する(ステップ1707)。ステップ1707での処理は、第1実施形態におけるVthトラッキングのメモリチップ110-1への要求および当該要求に対するメモリチップ110-1からのVthトラッキング結果(VD)の取得(ステップ1301)と同じである。
【0154】
制御部220は、メモリI/F250経由でメモリチップ110-1から取得したVthトラッキング結果(VD)に基づいて、メモリチップ110-1がVthトラッキングに成功したか、つまり、第2のVthトラッキングが成功したか、を判定する(ステップ1708)。ステップ1707での処理は、第1実施形態での、メモリチップ110-1がVthトラッキングに成功したか、つまり、第2のVthトラッキングが成功したか、の判定処理(ステップ1302)と同じである。
【0155】
制御部220は、メモリチップ110-1がVthトラッキングに成功したと判定する場合(ステップ1708:Yes)、メモリチップ110-1から出力されたVthトラッキング結果から読み出し電圧を取得し、取得した読み出し電圧を使用してメモリチップ110-1からデータを読み出す(ステップ1709)。
【0156】
次に、メモリコントローラ200は、ステップ1709にてメモリチップ110-1から読み出したデータを復号する(ステップ1710)。制御部220は、ステップ1709にてメモリチップ110-1からデータを読み出したデータの復号を復号回路242に対して指示し、復号回路242は制御部220から指示されたデータを復号する。復号回路242は、復号結果を制御部220に対して出力する。すなわち、復号時に誤り訂正に成功した場合は復号されたデータを、復号時に誤り訂正に失敗した場合は誤り訂正失敗を制御部220に通知する。
【0157】
その後、制御部220は、誤り訂正に成功の場合(ステップ1711:Yes)、復号されたデータであるユーザデータをホストI/F210経由でホスト装置2へ送信する(ステップ1706)。
【0158】
制御部220は、誤り訂正に成功しなかった場合(ステップ1711:No)、第1のVthトラッキングを実行する(ステップ1712)。
【0159】
制御部220は、第1のVthトラッキングで得られた読み出し電圧を使用して、メモリチップ110-1からのデータ読み出しをメモリI/F250へ指示し、メモリI/F250経由でメモリチップ110-1からデータを読み出す(ステップ1713)。
【0160】
次に、メモリコントローラ200は、メモリチップ110-1から読み出したデータを復号する(ステップ1714)。制御部220は、メモリチップ110-1からデータを読み出したデータの復号を復号回路242に対して指示し、復号回路242は制御部220から指示されたデータを復号する。復号回路242は、復号結果を制御部220に対して出力する。すなわち、復号時に誤り訂正に成功した場合は復号されたデータを、復号時に誤り訂正に失敗した場合は誤り訂正失敗を制御部220に通知する。
【0161】
その後、制御部220は、誤り訂正に成功の場合は復号されたデータであるユーザデータを、復号回路242から誤り訂正失敗が通知された場合は読み出しエラーを、ホストI/F210経由でホスト装置2へ送信する(ステップ1706)。
【0162】
本実施形態に係るメモリシステムでは、制御部220が、ステップ1712およびステップ1713の処理にて、第1のVthトラッキングを実行し、第1のVthトラッキングで得られた読み出し電圧を使用してメモリチップ110-1からデータを読み出しているが、代わりに、シフトリードを使用してメモリチップ110-1からデータを読み出すようにしてもよい。
【0163】
上述した第2の実施形態によれば、メモリコントローラ200は、まず通常の読み出しを行い、通常の読み出しで得られたデータの誤り訂正に成功しなかった場合、第2のVthトラッキングを実行し、第2のVthトラッキングで取得した読み出し電圧を使用してメモリチップ110からデータを読み出す。
【0164】
このため、第2の実施形態では、メモリコントローラ200が通常の読み出しで得られたデータの誤り訂正が成功しなかった場合に、メモリコントローラ200が第1のVthトラッキングやシフトリードをすること無く、メモリチップ110により実行されたVthトラッキングによる結果を使用してデータ読み出しを行うことができ、メモリコントローラ200の処理負荷を減らすことができ、その結果メモリシステム1の性能が向上する。読み出し処理におけるメモリコントローラ200の処理負荷が減ることにより、メモリコントローラ200の消費電力も減らすことができ、より低消費電力で読み出し処理を実行できる。すなわち、第2の実施形態によれば、より少ない処理で、高い精度の読み出しを実現でき、低消費電力を図ることができる。
【0165】
(第3の実施形態)
図18は、第3の実施形態に係るメモリシステムのパトロール処理のフローチャートである。
図18において、
図13の構成と同一部分は同一符号で示す。尚、本実施形態の説明において、第1実施形態と同様の構成および動作については、重複する説明を省略する。また、本実施形態におけるメモリシステム1の外観及び構成等は、
図1乃至
図12と同様とする。
【0166】
図18のフローチャートでは、
図13のフローチャートと同様に、メモリコントローラ200が不揮発性メモリ100の所定のセルユニットCUをパトロールすることに決定した段階から説明を行う。
【0167】
本実施形態では、パトロール対象となるセルユニットCUを含むメモリチップ110がメモリチップ110-1であるとして説明する。
【0168】
第3の実施形態に係るメモリシステムが、第1の実施形態に係るメモリシステムと異なる点は、メモリコントローラ200が、アクセス先のセルユニットCUの消耗度が所定の消耗度以上の場合は、第2のVthトラッキングを実行させず、第1のVthトラッキングまたはシフトリードにより読み出し電圧を特定することにある。
【0169】
制御部220は、メモリチップ110-1からパトロール対象のセルユニットCUに対する消耗度を算出し(ステップ1801)、算出された消耗度が所定の消耗度より小さいか判定する(ステップ1802)。
【0170】
制御部220が消耗度を算出するにあたり、消耗度は、アクセス先のセルユニットCUの読み出し回数、書き込み回数、書き込み世代番号、アクセス先のセルユニットCUが含まれる消去回数等であってもよいし、これらを組み合わせた演算式により算出されてもよい。
【0171】
制御部220は、第2パラメータ情報2203を参照することにより、アクセス先のセルユニットCUの読み出し回数、書き込み回数、書き込み世代番号、アクセス先のセルユニットCUが含まれる消去回数等を取得することができる。
【0172】
制御部220は、例えば、アクセス先のセルユニットCUの読み出し回数が所定の読み出し回数より小さい場合や、アクセス先のセルユニットCUの書き込み回数が所定の読み出し回数より小さい場合や、アクセス先のセルユニットCUの書き込み世代番号が所定の番号より小さい場合や、アクセス先のセルユニットCUが含まれる消去回数が所定の消去回数より小さい場合に、算出された消耗度が所定の消耗度より小さいと判定するが、判定の方法はこれに限定されない。制御部220は、消耗度を演算式で算出し、算出された消耗度と所定の消耗度と比較することにより判定してもよい。
【0173】
また、制御部220は、アクセス先のセルユニットCUの読み出し回数、書き込み回数、アクセス先のセルユニットCUが含まれる消去回数以外のデータを使用してアクセス先のセルユニットCUの消耗度を判断してもよい。制御部220は、例えば、アクセス先であるメモリチップ110-1に含まれるブロック全ての消去回数を合計した値でアクセス先のセルユニットCUの消耗度を算出し、算出された消耗度と所定の消耗度と比較することによりステップ1802の判定を実行してもよい。
【0174】
制御部220は、算出された消耗度が所定の消耗度より小さいと判定する場合(ステップ1802:Yes)、メモリチップ110-1からパトロール対象のセルユニットCUに対するVthトラッキング結果(VD)をメモリI/F250経由で取得し(ステップ1301)、以降は、第1の実施形態に係るメモリシステムと同様の処理を実行する。
【0175】
制御部220は、算出された消耗度が所定の消耗度以上と判定する場合(ステップ1802:No)、パトロール対象のセルユニットCUに対して第1のVthトラッキングまたはシフトリードを行うことにより最適な読み出し電圧を取得し(ステップ1306)、第1のVthトラッキングまたはシフトリードにより取得した読み出し電圧と予め定められた読み出し電圧との差分を計算し(ステップ1307)、その差分が所定の第2の値未満か判定し(ステップ1308)、差分が所定の第2の値以上の場合(ステップ1308:No)はパトロール対象のセルユニットCUが含まれるブロックをリフレッシュする(ステップ1309)。
【0176】
なお、本実施形態におけるメモリシステムのメモリコントローラ200では、算出された消耗度が所定の消耗度以上と判定する場合(ステップ1802:No)、または、メモリチップ110-1がVthトラッキングに成功したと判定しない場合(ステップ1302:No)において、第1のVthトラッキングまたはシフトリードにより取得した読み出し電圧と予め定められた読み出し電圧との差分を所定の第2の値と比較しているが、比較対象となる所定の第2の値は、各々の場合で別々の値としてもよい。
【0177】
上述した第3の実施形態によれば、メモリシステム1において、第1の実施形態と同様に、メモリコントローラ200は、パトロール処理の際、メモリコントローラ200が第1のVthトラッキングやシフトリードをすること無く、第2のVthトラッキングによる結果を使用してデータ読み出しを行うことができ、メモリコントローラ200の処理負荷を減らすことができる。
【0178】
また、第1の実施形態と同様に、誤り訂正処理を実行すること無くリフレッシュするかを決定するため、パトロール処理の際のメモリコントローラ200の処理負荷を減らすことができる。パトロール処理の際のメモリコントローラ200の処理負荷を減らすことができる結果、メモリシステム1の性能が向上する。
【0179】
また、第1の実施形態と同様に、パトロール処理の際のメモリコントローラ200の処理負荷が減ることにより、パトロール処理にかかる時間を短くでき、メモリコントローラ200の消費電力も減らすことができ、より短時間かつ低消費電力でパトロール処理を実行できる。
【0180】
また、第3の実施形態によれば、メモリチップ110の疲弊がある程度進んでいる場合には、第2のVthトラッキングを実行しない。メモリチップ110の疲弊がある程度進んでいる場合には、第2のVthトラッキングが失敗する可能性、すなわち、メモリチップ110がVthトラッキングに失敗する可能性が高くなるため、メモリチップ110の疲弊がある程度進んでいる場合には、メモリコントローラ200は、第2のVthトラッキングをスキップすることで、より効率よくパトロール処理を実行することができる。
【0181】
なお、本発明は、上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【0182】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの実施形態は、その他のさまざまな形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0183】
1・・・メモリシステム
2・・・ホスト装置
3・・・システム
4・・・コネクタ
100・・・不揮発性メモリ
110・・・メモリチップ
200・・・メモリコントローラ
210・・・ホストI/F
220・・・制御部
230・・・データバッファ
240・・・符号化部/復号部
250・・・メモリI/F
260・・・内部バス
400・・・基板