(57)【要約】【課題】メモリコントローラの負荷を低減すること。【解決手段】一つの実施形態によれば、メモリシステムは、不揮発性のメモリと、第１パッケージに封入されるメモリコントローラと、第１パッケージと異なる第２パッケージに封入されるメモリインタフェース回路とを備える。メモリコントローラは、誤り訂正のための符号化を行う符号化部を備え、ホストから受信したデータを符号化部によって符号化し、符号化されたデータをメモリにプログラムする。メモリインタフェース回路は、メモリとメモリコントローラとの間に介在する。メモリインタフェース回路は、誤り訂正のための復号化を行う復号化部を備える。メモリインタフェース回路は、メモリに格納されている符号化されたデータをリードし、リードされたデータを復号化部によって復号化することによってデータの診断を行い、診断結果をメモリコントローラに報告する。【選択図】図１
2018160065.tif 000002
【特許請求の範囲】
【請求項１】
ホストに接続可能なメモリシステムであって、
不揮発性のメモリと、
第１パッケージに封入され、誤り訂正のための符号化を行う符号化部を備え、前記ホストから受信したデータである第１データを前記符号化部によって符号化し、符号化された第１データである第２データを前記メモリにプログラムするメモリコントローラと、
前記第１パッケージと異なる第２パッケージに封入され、前記メモリと前記メモリコントローラとの間に介在し、誤り訂正のための復号化を行う復号化部を備え、前記メモリに格納されている第２データである第３データを前記メモリからリードし、前記メモリからリードされた第３データである第４データを前記復号化部によって復号化することによって前記第４データの診断を行い、診断結果を前記メモリコントローラに報告する、メモリインタフェース回路と、
を備えることを特徴とするメモリシステム。
【請求項２】
前記メモリコントローラは、前記診断結果に応じて上書きリフレッシュ指示を前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、前記上書きリフレッシュ指示に応じて前記第３データを前記メモリからリードし、前記メモリからリードされた第３データである第５データを前記復号化部によって復号化することによって前記第５データに含まれるエラービットを訂正し、前記エラービットが訂正された第５データである第６データを前記メモリの前記第２データがプログラムされた位置である第１の位置に再プログラムする、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記メモリは、それぞれ保持する値に応じた閾値電圧が設定される複数のメモリセルを備え、
前記メモリインタフェース回路は、前記第４データに含まれているエラービット数に基づいて値毎の閾値電圧分布間のマージンの広さを取得し、前記取得されたマージンの広さを前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記マージンの広さと所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項２に記載のメモリシステム。
【請求項４】
前記メモリインタフェース回路は、読み出し電圧を変えながら前記第３データを２回リードし、前記読み出し電圧を変えながら前記メモリからリードされた２つの第３データである２つの第７データの間で値が異なるビットの数を取得し、前記取得された数を前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記２つの第７データの間で値が異なるビットの数と所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項２に記載のメモリシステム。
【請求項５】
前記メモリインタフェース回路は、読み出し電圧を変えながら前記第３データを複数回リードし、前記読み出し電圧を変えながら前記メモリからリードされた第３データである複数の第８データに基づいてソフトビット情報を取得し、前記ソフトビット情報を前記復号化部に入力して誤り訂正を実行する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項６】
前記メモリコントローラは、前記第２データを前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、バッファをさらに備え、前記メモリコントローラから受信した第２データを前記バッファに格納し、前記バッファに格納された第２データを前記メモリ内の第２の位置にプログラムし、前記第２の位置とは異なる第３の位置に前記第２データと異なる第９データをプログラムした後、前記第２の位置に前記バッファに格納された第２データを再プログラムする、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項７】
前記メモリコントローラは、前記第２データを前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、バッファをさらに備え、前記メモリコントローラから受信した第２データを前記バッファに格納し、前記メモリコントローラから前記第２データに対するリードコマンドを受信した場合、前記バッファに格納されている第２データを前記メモリコントローラに送信する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項８】
前記メモリは、それぞれＯＤＴ機能のオン／オフが可能な複数のメモリチップを含み、
前記メモリインタフェース回路は、それぞれのメモリチップとＯＤＴ制御信号線で一対一に接続され、前記ＯＤＴ制御信号線を操作することによって各メモリチップのＯＤＴ機能をオン／オフする、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項９】
前記メモリは、複数のブロックを備え、
前記メモリインタフェース回路は、前記複数のブロックのそれぞれに対し、定期的なリードを実行する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項１０】
前記メモリインタフェース回路は、前記ホストに接続されるインタフェースを有さない、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項１１】
前記メモリインタフェース回路および前記メモリは、前記第２パッケージにともに封入されている、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項１２】
前記メモリインタフェース回路と前記メモリコントローラとを接続するインタフェースの接続方式と、前記メモリインタフェース回路と前記メモリとを接続するインタフェースの接続方式とは、互換性がある、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項１３】
前記メモリコントローラは、第１基板に装着され、前記メモリインタフェース回路および前記メモリは、前記第１基板と異なる第２基板にともに装着され、前記第１基板と前記第２基板とはコネクタおよび／またはケーブルで接続されている、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項１４】
ホストに接続可能なメモリシステムであって、
不揮発性のメモリと、
第１パッケージに封入され、誤り訂正のための符号化を行う符号化部を備え、前記ホストから受信したデータである第１データを前記符号化部によって符号化し、符号化された第１データである第２データを前記メモリにプログラムし、その後、上書きリフレッシュ指示を送信するメモリコントローラと、
前記第１パッケージと異なる第２パッケージに封入され、前記メモリと前記メモリコントローラとの間に介在し、誤り訂正のための復号化を行う復号化部を備え、前記メモリに格納されている第２データである第３データを、前記上書きリフレッシュ指示に応じてリードし、前記メモリからリードされた第３データである第４データを前記復号化部によって復号化することによって前記第４データに含まれるエラービットを訂正し、前記エラービットが訂正された第４データである第５データを前記メモリの前記第２データがプログラムされた位置である第１の位置に再プログラムする、メモリインタフェース回路と、
を備えることを特徴とするメモリシステム。
【請求項１５】
前記メモリインタフェース回路は、前記第３データを前記メモリからリードし、前記メモリからリードされた第３データである第６データの診断を行い、診断結果を前記メモリコントローラに報告し、
前記メモリコントローラは、前記診断結果に応じて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項１４に記載のメモリシステム。
【請求項１６】
前記メモリは、それぞれ保持する値に応じた閾値電圧が設定される複数のメモリセルを備え、
前記メモリインタフェース回路は、前記第６データに含まれているエラービット数に基づいて値毎の閾値電圧分布間のマージンの広さを取得し、前記取得されたマージンの広さを前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記マージンの広さと所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項１５に記載のメモリシステム。
【請求項１７】
前記メモリは、それぞれ保持する値に応じた閾値電圧が設定される複数のメモリセルを備え、
前記メモリインタフェース回路は、読み出し電圧を変えながら前記第３データを複数回リードし、それぞれ異なる読み出し電圧を用いて前記メモリからリードされたそれぞれの第６データに基づいて値毎の閾値電圧分布間のマージンの広さを演算し、前記演算されたマージンの広さを前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記マージンの広さと所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項１５に記載のメモリシステム。
【請求項１８】
前記メモリインタフェース回路は、読み出し電圧を変えながら前記第３データを２回リードし、前記読み出し電圧を変えながら前記メモリからリードされた２つの第３データである２つの第７データの間で値が異なるビットの数を取得し、前記取得された数を前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記２つの第７データの間で値が異なるビットの数と所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項１５に記載のメモリシステム。
【請求項１９】
前記メモリインタフェース回路は、前記第３データを読み出し電圧を変えながら複数回リードし、前記読み出し電圧を変えながら前記メモリからリードされた第３データである複数の第８データに基づいてソフトビット情報を取得し、前記ソフトビット情報を前記復号化部に入力して誤り訂正を実行する、
ことを特徴とする請求項１４に記載のメモリシステム。
【請求項２０】
前記メモリコントローラは、前記第２データを前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、バッファをさらに備え、前記メモリコントローラから受信した第２データを前記バッファに格納し、前記バッファに格納された第２データを前記第１の位置にプログラムし、前記第１の位置とは異なる第２の位置に前記第２データと異なる第９データをプログラムし、前記第１の位置に前記バッファに格納された第２データを再プログラムする、
ことを特徴とする請求項１４に記載のメモリシステム。
【請求項２１】
前記メモリコントローラは、前記第２データを前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、バッファをさらに備え、前記メモリコントローラから受信した第２データを前記バッファに格納し、前記メモリコントローラから前記第２データに対するリードコマンドを受信した場合、前記バッファに格納されている第２データを前記メモリコントローラに送信する、
ことを特徴とする請求項１４に記載のメモリシステム。
【請求項２２】
前記メモリは、それぞれＯＤＴ機能のオン／オフが可能な複数のメモリチップを含み、
前記メモリインタフェース回路は、それぞれのメモリチップとＯＤＴ制御信号線で一対一に接続され、前記ＯＤＴ制御信号線を操作することによって各メモリチップのＯＤＴ機能をオン／オフする、
ことを特徴とする請求項１４に記載のメモリシステム。
【請求項２３】
前記メモリは、複数のブロックを備え、
前記メモリインタフェース回路は、前記複数のブロックのそれぞれに対し、定期的なリードを実行する、
ことを特徴とする請求項１４に記載のメモリシステム。
【請求項２４】
前記メモリインタフェース回路は、前記ホストに接続されるインタフェースを有さない、
ことを特徴とする請求項１４に記載のメモリシステム。
【請求項２５】
前記メモリインタフェース回路と前記メモリコントローラとを接続するインタフェースの接続方式と、前記メモリインタフェース回路と前記メモリとを接続するインタフェースの接続方式とは、互換性がある、
ことを特徴とする請求項１４に記載のメモリシステム。
【請求項２６】
前記メモリコントローラは、第１基板に装着され、前記メモリインタフェース回路および前記メモリは、前記第１基板と異なる第２基板にともに装着され、前記第１基板と前記第２基板とはコネクタおよび／またはケーブルで接続されている、
ことを特徴とする請求項１４に記載のメモリシステム。
【請求項２７】
前記メモリコントローラは、第２の復号化部を備え、前記診断結果に応じて前記上書きリフレッシュ指示を送信するかまたは通常リフレッシュを実行し、
前記通常リフレッシュは、前記第３データを前記メモリからリードし、前記メモリからリードされた第３データである第１０データを前記第２の復号化部によって前記第１０データに含まれるエラービットを訂正し、前記エラービットが訂正された第１０データである第１１データを前記第１の位置と異なる第３の位置にプログラムする処理である、
ことを特徴とする請求項１５に記載のメモリシステム。
【請求項２８】
前記メモリインタフェース回路は、前記第４データに含まれているエラービット数を前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記エラービット数に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項２に記載のメモリシステム。
【請求項２９】
前記メモリインタフェース回路は、前記第６データに含まれているエラービット数を前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記エラービット数に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項１５に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリのような半導体メモリを備えるストレージデバイスにおいては、メモリコントローラは、データの喪失を防止するために、半導体メモリに対し、種々のメンテナンス動作を実行する。メンテナンス動作としては、例えば格納されているデータの診断がある。メンテナンス動作のための処理量は、半導体メモリの容量の増加に応じて増大する傾向がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第９２４４７６３号明細書
【特許文献２】米国特許第９２７４８９５号明細書
【特許文献３】米国特許出願公開第２０１５／０２２０３９４号明細書
【特許文献４】米国特許第９５０２１２９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、メモリコントローラの負荷を低減したメモリシステムを得ることを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、メモリシステムは、ホストに接続可能である。前記メモリシステムは、不揮発性のメモリと、第１パッケージに封入されるメモリコントローラと、前記第１パッケージと異なる第２パッケージに封入されるメモリインタフェース回路とを備える。前記メモリコントローラは、誤り訂正のための符号化を行う符号化部を備え、前記ホストから受信したデータである第１データを前記符号化部によって符号化し、符号化された第１データである第２データを前記メモリにプログラムする。前記メモリインタフェース回路は、前記メモリと前記メモリコントローラとの間に介在する。前記メモリインタフェース回路は、誤り訂正のための復号化を行う復号化部を備える。前記メモリインタフェース回路は、前記メモリに格納されている第２データである第３データを前記メモリからリードし、前記メモリからリードされた第３データである第４データを前記復号化部によって復号化することによって前記第４データの診断を行い、診断結果を前記メモリコントローラに報告する。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１の実施形態のメモリシステムのパッケージ構成例を示すブロック図である。
【図２】図２は、メモリインタフェース回路と複数のメモリチップとを同一パッケージに封入した構成例を示す図である。
【図３】図３は、第１の実施形態のメモリシステムの要素間の配線例といくつかの要素の内部構成例とを示すブロック図である。
【図４】図４は、各メモリチップの内部構成例を示す図である。
【図５】図５は、２次元構造のメモリセルアレイのブロックの構成例を示す図である。
【図６】図６は、３次元構造のメモリセルアレイのブロックの構成例を示す図である。
【図７】図７は、４値データを記憶できる４値メモリセルの閾値電圧の分布を示す図である。
【図８】図８は、閾値電圧の分布の変化例を示す図である。
【図９】図９は、第１の実施形態のメモリシステムの動作を説明するシーケンス図である。
【図１０】図１０は、ＥｔｏＡマージンを説明するための図である。
【図１１】図１１は、第２の実施形態のメモリシステムの動作を説明するシーケンス図である。
【図１２】図１２は、第３の実施形態のメモリインタフェース回路の構成例を示す図である。
【図１３】図１３は、第５の実施形態のメモリインタフェース回路とＮＡＮＤメモリとの間のデータ線の接続例を示す図である。
【図１４】図１４は、第５の実施形態のＯＤＴ制御信号線の接続例を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
図１は、第１の実施形態のメモリシステム１００のパッケージ構成例を示すブロック図である。メモリシステム１００は、プリント基板２ａ〜２ｃを備え、プリント基板２ａ〜２ｃは、メモリシステム１００の外装を構成するハウジング１に収容されている。プリント基板２間はコネクタおよび／またはケーブル３で接続されている。
【０００９】
プリント基板２ａには、メモリコントローラ１０がＳｏＣ（System-on-a-chip）として封入された第１パッケージ４が装着されている。また、プリント基板２ｂおよびプリント基板２ｃには、メモリインタフェース回路２０が封入された第２パッケージ５と、それぞれ２つのメモリチップ３０が封入された２つのＮＡＮＤパッケージ６と、が装着されている。
【００１０】
また、ハウジング１は、ホスト２００が接続されるコネクタ８を備え、コネクタ８は第１パッケージ４とホストインタフェース７で接続されている。
【００１１】
このように、第１の実施形態では、メモリシステム１００は、メモリコントローラ１０と各メモリインタフェース回路２０とがそれぞれ異なるパッケージに封入されている。なお、図２に例示されるように、メモリインタフェース回路２０と、複数のメモリチップ３０とが同一の第２パッケージ５に封入されてもよい。
【００１２】
図３は、第１の実施形態のメモリシステム１００の要素間の配線例といくつかの要素の内部構成例とを示すブロック図である。メモリシステム１００は、ホスト２００に接続され、ホスト２００の外部記憶装置として機能する。ホスト２００は、例えば、パーソナルコンピュータなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータまたはスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
【００１３】
メモリコントローラ１０は、ホスト２００に接続され、ホスト２００と８つのメモリチップ３０との間のデータ転送を制御する。各メモリインタフェース回路２０は、ホスト２００に接続されるホストインタフェースを有していない。各メモリインタフェース回路２０は、メモリコントローラ１０といくつかのメモリチップ３０との間に介在し、メモリコントローラ１０がデータ転送の相手のメモリチップ３０を制御するための各種コマンド（後述のリードコマンド、ライトコマンド、イレースコマンド）および転送データの中継を実行することができる。ここでは、各メモリインタフェース回路２０は、同一のプリント基板２に装着された２つのＮＡＮＤパッケージ６に含まれる４つのメモリチップ３０と接続される。即ち、各メモリインタフェース回路２０には、４つのメモリチップ３０が接続されている。なお、各メモリインタフェース回路２０に接続されるメモリチップ３０の数はこれに限定されない。メモリシステム１００が備えるメモリチップ３０を、ＮＡＮＤメモリ４０と総称することがある。
【００１４】
各メモリインタフェース回路２０は、各種情報の中継にあたっては、電気的な信号の伝達元および伝達先の選択、電気信号の増幅などを実行し得る。
【００１５】
なお、メモリコントローラ１０とメモリインタフェース回路２０の間のインタフェースと、メモリインタフェース回路２０とメモリチップ３０の間のインタフェースとに、互換性のある接続方式が採用され得る。接続方式とは、コネクタの形状および信号のプロトコルを含む。メモリコントローラ１０とメモリインタフェース回路２０の間のインタフェースと、メモリインタフェース回路２０とメモリチップ３０の間のインタフェースとに、互換性のある接続方式が採用される場合、メモリシステム１００からメモリインタフェース回路２０を省き、メモリコントローラ１０と各メモリチップ３０とを直接に接続する構成が採用可能となる。メモリインタフェース回路２０を介さずに、メモリコントローラ１０とメモリチップ３０とを直接に接続したとしても、メモリシステム１００は動作可能である。即ち、メモリコントローラ１０は、各メモリチップ３０に対し、直接に各種コマンドを送信する。また、メモリコントローラ１０は、各メモリチップ３０との間で、直接に、データの送受信を実行する。メモリコントローラ１０とメモリインタフェース回路２０の間のインタフェースと、メモリインタフェース回路２０とメモリチップ３０の間のインタフェースとに、互換性のある接続方式が採用されることによって、メモリインタフェース回路２０の有無によってメモリコントローラ１０およびメモリチップ３０の構成を変更することが不要となる。
【００１６】
なお、メモリコントローラ１０とメモリインタフェース回路２０の間のインタフェースとして、高速なシリアルインタフェースを採用し、メモリインタフェース回路２０とメモリチップ３０の間のインタフェースとして、より簡易なパラレルインタフェースを採用することも可能である。その場合には、メモリコントローラ１０側のピン数を低減することが可能である。
【００１７】
以降、あるメモリインタフェース回路２０に接続されているメモリチップ３０を、そのメモリインタフェース回路２０の配下のメモリチップ３０、と表現することがある。
【００１８】
メモリコントローラ１０とメモリチップ３０との間にメモリインタフェース回路２０が介在することにより、メモリコントローラ１０とメモリチップ３０との間の配線の長さが長くなったとしても信号品質の低下が抑制できる。また、メモリコントローラ１０とメモリチップ３０との間の配線を長くすることが可能であるので、メモリシステム１００に搭載可能なメモリチップ３０の数を多くすることが可能である。
【００１９】
また、信号線あたりに接続されるメモリチップ３０の数を少なくすることができるため、負荷容量が低減される。また、信号線の分岐が削減される。これらによって、信号品質が改善され、ひいては、信号伝達の高速化および低消費電力化などを実現することが可能である。
【００２０】
また、各メモリインタフェース回路２０が複数のメモリチップ３０に接続されることから、メモリコントローラ１０のメモリチップ３０側の接続ピンの数を抑制しながらメモリシステム１００に搭載可能なメモリチップ３０の数を多くすることが可能である。
【００２１】
なお、メモリインタフェース回路２０と４つのメモリチップ３０のそれぞれとを接続する接続線は、分岐を有していてもよいし、分岐を有していなくてもよい。
【００２２】
一例では、メモリインタフェース回路２０は、４つのバスを備え、各バスには４つのメモリチップ３０のいずれかが接続される。即ち、メモリインタフェース回路２０と４つのメモリチップ３０のそれぞれは、それぞれ異なるバスによって１対１に接続される。
【００２３】
別の例では、メモリインタフェース回路２０は、１つのバスを備え、バスは４つに分岐する。そして、分岐した４つの端部のそれぞれに、４つのメモリチップ３０のいずれかが接続される。バスは、プリント基板２ｂまたはプリント基板２ｃ上で分岐してもよいし、ＮＡＮＤパッケージ６内で分岐してもよい。
【００２４】
各メモリチップ３０は、不揮発性のメモリであり、一例では、ＮＡＮＤ型フラッシュメモリである。不揮発性のメモリとしては、ＮＡＮＤ型フラッシュメモリに限らず、３次元構造フラッシュメモリ、ＲｅＲＡＭ（Resistance  Random  Access  Memory）、ＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）などであってもよい。
【００２５】
各メモリチップ３０は、メモリセルアレイを有する。メモリセルアレイは、マトリクス状に配列された複数のメモリセルを有する。メモリセルアレイは、データ消去の単位であるブロックを複数個有する。各ブロックは、複数のメモリセルグループＭＧ（図５、図６参照）により構成されている。
【００２６】
図４は、各メモリチップ３０の内部構成例を示す図である。メモリチップ３０は、Ｉ／Ｏ部３１、ＮＡＮＤ制御部３２、メモリセルアレイ３３、ロウデコーダ３４、センスアンプ３５、ページバッファ３６およびカラムデコーダ３７を備える。Ｉ／Ｏ部３１、ＮＡＮＤ制御部３２、ロウデコーダ３４、センスアンプ３５、ページバッファ３６およびカラムデコーダ３７は周辺回路を構成する。周辺回路は、メモリチップ３０の外部から供給されるコマンドに従って、メモリセルアレイ３３に対するアクセス（リード、プログラム、イレース）を実行する。
【００２７】
Ｉ／Ｏ部３１は、メモリコントローラ１０等の外部の機器との間の入出力を制御する。Ｉ／Ｏ部３１は、コマンドを受信した場合、当該コマンドをＮＡＮＤ制御部３２へ入力する。ＮＡＮＤ制御部３２は、Ｉ／Ｏ部３１から入力されたコマンド等に基づいて、メモリチップ３０の動作を制御する。具体的には、ライトコマンドが入力された場合、ライトコマンドによって要求されたデータをメモリセルアレイ３３上の指定された領域へ書き込む制御を実行する。また、ＮＡＮＤ制御部３２は、リードコマンドが入力された場合、リードコマンドによって要求されたデータをメモリセルアレイ３３から読み出す制御を実行する。メモリセルアレイ３３から読み出されたデータはページバッファ３６に格納される。ＮＡＮＤ制御部３２は、ページバッファ３６に格納されたデータをメモリコンローラ１０へ出力する。
【００２８】
本実施の形態で前提とするメモリセルアレイ３３の構成に特に制約はなく、図５に示すような２次元構造のメモリセルアレイであってもよく、図６に示すような３次元構造のメモリセルアレイであってもよく、さらにはこれら以外であってもよい。
【００２９】
図５は、２次元構造のメモリセルアレイのブロックの構成例を示す図である。図５は、２次元構造のメモリセルアレイを構成する複数のブロックのうちの１つのブロックを示している。メモリセルアレイの他のブロックも図５と同様の構成を有する。図５に示すように、メモリセルアレイのブロックＢＬＫは、（ｍ＋１）個（ｍは０以上の整数）のＮＡＮＤストリングＮＳを備えている。各ＮＡＮＤストリングＮＳは、隣接するメモリセルトランジスタＭＴ間で拡散領域（ソース領域またはドレイン領域）を共有して直列に接続された（ｎ＋１）個（ｎは０以上の整数）のメモリセルトランジスタＭＴ０〜ＭＴｎと、この（ｎ＋１）個のメモリセルトランジスタＭＴ０〜ＭＴｎの列の両端に配置される選択トランジスタＳＴ１，ＳＴ２と、を有する。
【００３０】
ＮＡＮＤストリングＮＳを構成するメモリセルトランジスタＭＴ０〜ＭＴｎの制御ゲート電極には、それぞれワード線ＷＬ０〜ＷＬｎが接続されており、また各ＮＡＮＤストリングＮＳ中のメモリセルトランジスタＭＴｉ（ｉ＝０〜ｎ）間は、同一のワード線ＷＬｉ（ｉ＝０〜ｎ）によって共通接続されている。すなわち、ブロックＢＬＫ内において同一行にあるメモリセルトランジスタＭＴｉの制御ゲート電極は、同一のワード線ＷＬｉに接続される。
【００３１】
各メモリセルトランジスタＭＴ０〜ＭＴｎは、半導体基板上に形成された積層ゲート構造を有する電界効果型トランジスタから構成される。ここで、積層ゲート構造には、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮遊ゲート電極）と、この電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極と、が含まれる。メモリセルトランジスタＭＴ０〜ＭＴｎは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶することができる。
【００３２】
１つのブロックＢＬＫ内の（ｍ＋１）個の選択トランジスタＳＴ１のドレインにはそれぞれビット線ＢＬ０〜ＢＬｍが接続され、ゲートには選択ゲート線ＳＧＤが共通接続されている。また、選択トランジスタＳＴ１のソースはメモリセルトランジスタＭＴ０のドレインと接続されている。同様に、１つのブロックＢＬＫ内の（ｍ＋１）個の選択トランジスタＳＴ２のソースにはソース線ＳＬが共通接続され、ゲートには選択ゲート線ＳＧＳが共通接続されている。また、選択トランジスタＳＴ２のドレインはメモリセルトランジスタＭＴｎのソースと接続されている。
【００３３】
各メモリセルはワード線に接続されるとともにビット線にも間接的に接続される。各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別可能である。上述した通り、同一のブロックＢＬＫ内にあるメモリセル（メモリセルトランジスタＭＴ）のデータは、一括して消去される。一方、データの読み出し及び書き込みは、メモリセルグループＭＧ単位で行われる。１メモリセルグループＭＧは、１つのワード線に接続された複数のメモリセルを含む。
【００３４】
リード動作及びプログラム動作時において、物理アドレスに応じて、１本のワード線が選択され、１メモリセルグループＭＧが選択される。このメモリセルグループＭＧ内のページの切り替えは物理アドレスによって行われる。
【００３５】
図６は、３次元構造のメモリセルアレイのブロックの構成例を示す図である。図６は、３次元構造のメモリセルアレイを構成する複数のブロックのうちの１つのブロックＢＬＫを示している。メモリセルアレイの他のブロックも図６と同様の構成を有する。
【００３６】
図示するように、ブロックＢＬＫは例えば４つのフィンガーＦＮＧ（ＦＮＧ０〜ＦＮＧ３）を含む。また各々のフィンガーＦＮＧは、複数のＮＡＮＤストリングＮＳを含む。ＮＡＮＤストリングＮＳの各々は、例えば８個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ７）と、選択トランジスタＳＴ１，ＳＴ２とを含む。なお、メモリセルトランジスタＭＴの個数は８個に限られない。メモリセルトランジスタＭＴは、選択トランジスタＳＴ１、ＳＴ２間に、その電流経路が直列接続されるようにして配置されている。この直列接続の一端側のメモリセルトランジスタＭＴ７の電流経路は選択トランジスタＳＴ１の電流経路の一端に接続され、他端側のメモリセルトランジスタＭＴ０の電流経路は選択トランジスタＳＴ２の電流経路の一端に接続されている。
【００３７】
フィンガーＦＮＧ０〜ＦＮＧ３の各々の選択トランジスタＳＴ１のゲートは、それぞれセレクトゲート線ＳＧＤ０〜ＳＧＤ３に共通接続される。他方で、選択トランジスタＳＴ２のゲートは、複数のフィンガーＦＮＧ間で同一のセレクトゲート線ＳＧＳに共通接続される。また、同一のブロックＢＬＫ内にあるメモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲートはそれぞれワード線ＷＬ０〜ＷＬ７に共通接続される。すなわち、ワード線ＷＬ０〜ＷＬ７及びセレクトゲート線ＳＧＳは同一ブロックＢＬＫ内の複数のフィンガーＦＮＧ０〜ＦＮＧ３間で共通に接続されているのに対し、セレクトゲート線ＳＧＤは、同一ブロックＢＬＫ内であってもフィンガーＦＮＧ０〜ＦＮＧ３毎に独立している。
【００３８】
ＮＡＮＤストリングＮＳを構成するメモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲート電極には、それぞれワード線ＷＬ０〜ＷＬ７が接続されており、また各ＮＡＮＤストリングＮＳ中のメモリセルトランジスタＭＴｉ（ｉ＝０〜ｎ）間は、同一のワード線ＷＬｉ（ｉ＝０〜ｎ）によって共通接続されている。すなわち、ブロックＢＬＫ内において同一行にあるメモリセルトランジスタＭＴｉの制御ゲート電極は、同一のワード線ＷＬｉに接続される。
【００３９】
各メモリセルはワード線に接続されるとともにビット線にも間接的に接続される。各メモリセルは、ワード線およびセレクトゲート線ＳＧＤ０〜ＳＧＤ３を識別するアドレスとビット線を識別するアドレスとで識別可能である。上述した通り、同一のブロックＢＬＫ内にあるメモリセル（メモリセルトランジスタＭＴ）のデータは、一括して消去される。一方、データの読み出し及び書き込みは、メモリセルグループＭＧ単位で行われる。１メモリセルグループＭＧは、１つのワード線ＷＬに接続され、かつ１つのフィンガーＦＮＧに属する複数のメモリセルを含む。
【００４０】
リード動作及びプログラム動作時において、物理アドレスに応じて、１本のワード線ＷＬおよび１本のセレクトゲート線ＳＧＤが選択され、メモリセルグループＭＧが選択される。
【００４１】
２次元構造のメモリセルアレイおよび３次元構造のメモリセルアレイにおいて、各メモリセルは多値記憶が可能である。メモリセルをシングルレベルセル（ＳＬＣ）モードで動作させる場合は、１メモリセルグループＭＧが１ページに対応する。メモリセルをマルチレベルセル（ＭＬＣ）モードで動作させる場合は、１メモリセルグループＭＧがＮページ（Ｎは２以上の自然数）に対応する。
【００４２】
図７は、４値データ（データ“１１”、“０１”、“００”、“１１”）を記憶できる４値メモリセル(2  bit/cell)の閾値電圧の分布を示している。横軸は閾値電圧を示している。縦軸はメモリセル数を示している。データを“ｘｙ”と表記した場合、ｘは上位ページデータを、ｙは下位ページデータを表している。以降の説明では、図７における閾値電圧が低い左側の分布の山から閾値電圧が高い右側の分布の山に向かって、Ｅ山、Ａ山、Ｂ山、Ｃ山と呼ぶ。図７では、データ“１１”の閾値電圧分布がＥ山に対応し、データ“０１”の閾値電圧分布がＡ山に対応し、データ“００”の閾値電圧分布がＢ山に対応し、データ“１０”の閾値電圧分布がＣ山に対応している。各山と、４値データとの対応は任意であり、例えばＥ山、Ａ山、Ｂ山、Ｃ山と、データ“１１”、“１０”、“００”、“０１”とが対応するようにしてもよい。
【００４３】
つぎに、メモリチップ３０における４値データのプログラム処理について説明する。Ｅ山は、ブロック消去後のメモリセルの閾値電圧分布に対応し、データ“１１”が割り当てられる。下位ページデータの値に応じて、すなわち下位ページデータの値が“０”のメモリセルに接続される選択ワード線にプログラム電圧Ｖｐｒｇを印加し、同メモリセルに接続される選択ビット線に例えば０Ｖを印加する。具体的には、センスアンプ３５は、カラムデコーダ３７により選択されたビット線の電位を０Ｖとする。ロウデコーダ３４は、選択ワード線にプログラム電圧（プログラミングパルス）Ｖｐｒｇを印加する。すると、選択されたビット線および選択されたワード線との交点に位置するメモリセルの浮遊ゲートの閾値電圧が上昇する。センスアンプ３５は、プログラミングパルスが印加される毎に、閾値電圧がページバッファ３６に格納されているデータに応じたベリファイ電圧に到達したか否かを確認する。センスアンプ３５は、閾値電圧がデータに応じたベリファイ電圧に到達するまで、ロウデコーダ３４にプログラムパルスの印加を継続させる。このようにして、下位ページデータの値が“０”であるメモリセルの閾値電圧が所定のベリファイ電圧以上となるまでプログラム動作が繰り返される。
【００４４】
この後、データ“１１”のメモリセルに対しては、メモリセルに高電圧がかからないようにし、メモリセルの閾値電圧Ｖｔｈの上昇を防止する。例えば、データ“１１”のメモリセルに対しては、他のデータ“０１”、“００”、“１０”のメモリセルに対するプログラム動作のときに、データ“１１”のメモリセルに接続されるビット線に、書き込み禁止電圧Ｖｄｄを印加し、選択トランジスタＳＴ１をオフにする。
【００４５】
データ“０１”のメモリセルに対しては、所定のベリファイ電位ＶＡＶが設定され、このメモリセルの閾値電圧がベリファイ電圧ＶＡＶ以上となるまで前記プログラム動作が繰り返される。
【００４６】
データ“００”のメモリセルに対しては、所定のベリファイ電位ＶＢＶが設定され、このメモリセルの閾値電圧がベリファイ電圧ＶＢＶ以上となるまで前記プログラム動作が繰り返される。データ“１０”のメモリセルに対しては、所定のベリファイ電位ＶＣＶが設定され、このメモリセルの閾値電圧がベリファイ電圧ＶＣＶ以上となるまで前記プログラム動作が繰り返される。３ビット以上の多ビット記憶方式においても、上記の動作に更に上位のページデータに応じ、閾値電圧分布を８通り以上に分割する動作が加わるのみであるので、基本的な動作は同様である。
【００４７】
つぎに、メモリチップ３０における４値データのリード処理について説明する。リード時においては、センスアンプ３５は、ビット線ＢＬに電源電位Ｖｃｃをプリチャージし、ロウデコーダ３４は、選択されたワード線ＷＬに、各山の間に設定された読み出し電圧ＶＡｒ、ＶＢｒ、ＶＣｒを順次印加する。なお、ロウデコーダ３４は、非選択のワード線ＷＬには転送電位を印加し、非選択のワード線ＷＬに属するメモリセルを導通状態にしておく。センスアンプ３５は、プリチャージにより蓄えられた電荷がどの読み出し電位が印加されたときにソース線ＳＬに流出したかを検知することによって対象のメモリセルに記憶されているデータを判定する。
【００４８】
例えば、図７に示したように、Ｅ山とＡ山との間に読み出し電圧ＶＡｒが設定され、Ａ山とＢ山との間に読み出し電圧ＶＢｒが設定され、Ｂ山とＣ山との間に読み出し電圧ＶＣｒが設定される。
【００４９】
下位ページが読み出し対象である場合においては、読み出し電圧ＶＢｒが判定に用いられる。センスアンプ３５は、読み出し電圧ＶＢｒが印加された場合にソース線ＳＬに電流を検出したとき、対象のメモリセルはデータ“１”を記憶していると判定する。また、センスアンプ３５は、読み出し電圧ＶＢｒが印加された場合にソース線ＳＬに電流を検出しなかったとき、対象のメモリセルはデータ“０”を記憶していると判定する。
【００５０】
上位ページが読み出し対象である場合においては、読み出し電圧ＶＡｒおよび読み出し電圧ＶＣｒが判定に用いられる。センスアンプ３５は、読み出し電圧ＶＡｒが印加された場合に電流を検出したとき、または、読み出し電圧ＶＣｒが印加された場合に電流を検出したとき、対象のメモリセルはデータ“１”を記憶していると判定する。センスアンプ３５は、読み出し電圧ＶＡｒが印加された場合に電流を検出し、かつ、読み出し電圧ＶＣｒが印加された場合に電流を検出しなかったとき、対象のメモリセルはデータ“０”を記憶していると判定する。
【００５１】
図３に説明を戻す。前述したように、メモリコントローラ１０は、ホスト２００とＮＡＮＤメモリ４０との間のデータ転送を制御する。
【００５２】
メモリコントローラ１０は、ホスト２００から要求されたデータをＮＡＮＤメモリ４０から読み出す際には、リードコマンドをＮＡＮＤメモリ４０側に送信する。メモリコントローラ１０は、ホスト２００から指定された論理アドレスにマッピングされた位置を求め、求めた位置をリード位置として設定する。当該リードコマンドはどちらかのメモリインタフェース回路２０を介して宛先のメモリチップ３０に送られる。リードコマンドを受信したメモリチップ３０では、データがメモリセルアレイ３３から読み出される。読み出されたデータは、メモリインタフェース回路２０を介してメモリコントローラ１０側に送られる。
【００５３】
メモリコントローラ１０は、ホスト２００から受信したデータをＮＡＮＤメモリ４０に転送する際には、当該データとプログラムコマンドとをＮＡＮＤメモリ４０側に送信する。当該データと当該プログラムコマンドとは、どちらかのメモリインタフェース回路２０を介して宛先のメモリチップ３０に送られる。
【００５４】
メモリコントローラ１０は、データをＮＡＮＤメモリ４０に送る際、空き領域からプログラム位置を決定する。空き領域とは、いずれのデータもプログラムされていない領域であり、新たなデータのプログラムが可能な領域である。メモリコントローラ１０は、当該データの位置を示す論理アドレスに、決定されたプログラム位置をマッピングする。
【００５５】
ここで、当該データ（新しいデータ）の位置を示す論理アドレスに別のデータ（古いデータ）のプログラム位置がマッピングされていた場合、マッピングの更新により、当該古いデータのプログラム位置は、いずれの論理アドレスもマッピングされていない状態となる。その結果、ホスト２００は、新しいデータをメモリシステム１００からリードすることが可能であるが、古いデータをリードすることができなくなる。論理アドレスにマッピングされている位置に格納されているデータを、有効なデータと表記する。論理アドレスにマッピングされていない位置に格納されているデータを、無効なデータと表記する。
【００５６】
空き領域を有するブロックが枯渇した場合、メモリコントローラ１０は、無効なデータをイレースすることによって、空き領域を有するブロックを生成する。１つのブロックに記憶される全てのデータが無効であることは稀であるため、実際には、メモリコントローラ１０は、ブロック内に残っている有効なデータを別のブロックに転記（コピー）し、その後、転記元のブロックに記憶される全てのデータをイレースする。この有効なデータを転記するプロセスは、ガベージコレクションと呼ばれる。有効なデータの転記によって有効なデータを全く含まなくなったブロックは、フリーブロックと呼ばれる。
【００５７】
ガベージコレクションでは、ＮＡＮＤメモリ４０からメモリコントローラ１０にデータが読み出され、その後、そのデータは、メモリコントローラ１０からＮＡＮＤメモリ４０に送られる。よって、メモリコントローラ１０は、ガベージコレクションの際には、ホスト２００とＮＡＮＤメモリ４０とのデータ転送の際と同様に、リードコマンドを送信したりプログラムコマンドを送信したりする。
【００５８】
メモリコントローラ１０は、フリーブロックに格納されているデータをイレースするためのイレースコマンドを送信することができる。イレースコマンドは、メモリインタフェース回路２０によって対象のメモリチップ３０に転送される。
【００５９】
メモリコントローラ１０は、プロセッサ１１、ＲＡＭ１２、ＥＣＣエンコーダ１３、およびＥＣＣデコーダ１４を備える。本実施形態は、ＲＡＭ１２をメモリコントローラ１０の内部に設けているが、ＲＡＭ１２をメモリコントローラ１０の外部に設けてもよい。
【００６０】
プロセッサ１１は、ファームウェアプログラムに基づき、ホスト２００からの各種要求の受信および解釈、論理アドレスと物理アドレスとの間のマッピングの更新と維持、各種コマンドの生成などを行うことによって、ホスト２００とＮＡＮＤメモリ４０との間のデータ転送およびガベージコレクションを実現する。
【００６１】
ＲＡＭ１２は、各種バッファとして機能し得る。例えば、ＲＡＭ１２は、ホスト２００とＮＡＮＤメモリ４０との間のデータ転送のバッファとして使用され得る。別の例では、ガベージコレクションにおいて、ＮＡＮＤメモリ４０からリードされた有効なデータがＮＡＮＤメモリ４０にプログラムされるまでの間、ＲＡＭ１２に一時的に保持される。
【００６２】
また、ＲＡＭ１２は、プロセッサ１１のワークエリアとして機能し得る。例えば、論理アドレスと物理アドレスとのマッピングを管理する翻訳情報がＲＡＭ１２にキャッシュされる。プロセッサ１１は、ＲＡＭ１２にキャッシュされた翻訳情報を更新し、更新された翻訳情報を所定のタイミングでＮＡＮＤメモリ４０に不揮発化する。別の例では、ファームウェアプログラムは、ＮＡＮＤメモリ４０に予め格納されており、メモリシステム１００の起動時に、ファームウェアプログラムがＮＡＮＤメモリ４０からＲＡＭ１２にロードされる。プロセッサ１１は、ＲＡＭ１２にロードされたファームウェアプログラムを実行することによって、各種機能を実現する。
【００６３】
ＥＣＣエンコーダ１３は、ＮＡＮＤメモリ４０に送られるデータに対して、誤り訂正のための符号化を実行するものである。ＮＡＮＤメモリ４０には、符号化されたデータが格納される。ＥＣＣエンコーダ１３による符号化の方式としては、任意の方式が採用可能である。例えば、ＲＳ（Reed  Solomon）符号化、ＢＣＨ(Bose  Chaudhuri  Hocquenghem)符号化、ＬＤＰＣ（Low  Density  Parity  Check）符号化等を用いることができる。
【００６４】
ＥＣＣデコーダ１４は、ＥＣＣエンコーダ１３によって符号化されたデータに対し、復号化を実行するものである。ＥＣＣデコーダ１４は、ＮＡＮＤメモリ４０から送られてきたデータの復号化を実行することによって、誤り訂正を実行する。ＥＣＣデコーダ１４は、復号化によって検出された誤りの程度を、プロセッサ１１に報告する。前記誤りの程度は、例えば、エラービット数、エラービット率、誤り訂正回数、訂正成功の旨、または訂正失敗の旨である。
【００６５】
エラービット数は、例えば、所定単位のデータ中のエラービットの個数である。エラービット率は、例えば、所定単位のデータ中のエラービットの割合である。誤り訂正回数は、誤り訂正に成功するまでに誤り訂正処理を行った回数である。
【００６６】
なお、メモリコントローラ１０は、ＥＣＣデコーダ１４よりも誤り訂正能力が強力な符号化／復号化手段をさらに備え得る。メモリコントローラ１０は、ＥＣＣデコーダ１４が誤り訂正に失敗した場合に、当該符号化／復号化手段によって誤り訂正を実行し得る。
【００６７】
ＮＡＮＤメモリ４０では、データリテンション誤り、リードディスターブ誤り、プログラムディスターブ不良等の誤り要因がある。これらの誤り要因により、メモリセルの電荷量が変化する。その結果、メモリセルの閾値電圧分布が変化する。例えばデータリテンション誤りの場合、メモリセルの閾値電圧分布は、図８の破線で示すように変化する。このように閾値電圧分布が変化すると、設定された読み出し電圧ＶＡｒ、ＶＢｒ、ＶＣｒでは、正しくデータを識別できないセルの数が増加する。なお、以下では、上記した誤り要因によって閾値電圧が許容範囲外であって、データを正しく識別できないメモリセルをエラーセルと呼称する。許容範囲外であるメモリセルとは、例えば、データ“１０”を書き込んだメモリセルのうち読み出し電圧ＶＣｒより小さい閾値電圧を持つメモリセル、データ“００”を書き込んだメモリセルのうち読み出し電圧ＶＢｒより小さい閾値電圧を持つメモリセル、データ“０１”を書き込んだメモリセルのうち読み出し電圧ＶＡｒより小さい閾値電圧を持つメモリセルである。
【００６８】
ＮＡＮＤメモリ４０では、このようなエラーセルは、時間の経過とともに増える。エラーセルの個数が少ない間は、ＥＣＣデコーダ１４での誤り訂正処理によってデータを復元することが出来る。しかし、ある程度以上エラーセルの個数が増えると、ＥＣＣデコーダ１４による復号化ではデータを復元できなくなる。
【００６９】
このため、メモリシステム１００では、パトロールリードが実行される。パトロールリードとは、各ブロックに格納されている各データを試行的にリードすることによって、復元できなくなる可能性があるデータを検出する処理である。復元できなくなる可能性があるデータが検出されると、メモリシステム１００は、当該データの書き直し（リフレッシュ）を実行する。
【００７０】
仮にメモリコントローラ１０がパトロールリードを実行する場合、リードされたデータが逐次メモリコントローラ１０に送られ、ＥＣＣデコーダ１４において逐次復号化処理が実行される。よって、メモリコントローラ１０と各メモリチップ３０との間で、情報（リードコマンド、およびリードされたデータ）の授受が発生する。メモリコントローラ１０に接続されるメモリチップ３０の数が多いほど、授受される情報の量が多くなり、メモリコントローラ１０にかかる負荷が増大する。
【００７１】
そこで、第１の実施形態においては、各メモリインタフェース回路２０は、配下の各メモリチップ３０に対し、パトロールリードを実行する。これにより、パトロールリードを構成する情報の授受を、メモリチップ３０とメモリインタフェース回路２０との間だけで閉じることができるので、メモリコントローラ１０にかかる負荷が低減される。
【００７２】
各メモリインタフェース回路２０は、パトロールリードを実行するために、シーケンサ２１とＥＣＣデコーダ２２とを備える。
【００７３】
シーケンサ２１は、シンプルなプロセッサと小規模なメモリとを備えるマイクロコンピュータユニットである。シーケンサ２１は、当該プロセッサにおいて、当該メモリに内蔵するプログラムに基づき、パトロールリードに関する決められた動作を実行する。シーケンサ２１は、ハードウェア回路によって構成されてもよい。
【００７４】
ＥＣＣデコーダ２２は、ＥＣＣエンコーダ１３によって符号化されたデータに対して復号化を実行するものである。パトロールリード時に、ＥＣＣデコーダ２２は、ＮＡＮＤメモリ４０から送られてきたデータに対して復号化を実行することによって、誤り訂正を実行する。ＥＣＣデコーダ２２は、復号化によって検出された誤りの程度を、シーケンサ２１に報告する。
【００７５】
なお、各メモリインタフェース回路２０は、データを符号化するためのエンコーダを有さない。
【００７６】
次に、第１の実施形態のメモリシステム１００の動作を説明する。図９は、第１の実施形態のメモリシステム１００の動作を説明するシーケンス図である。
【００７７】
メモリコントローラ１０は、まず、パトロール指示をメモリインタフェース回路２０に送信する（Ｓ１０１）。パトロール指示は、プロセッサ１１によって生成される。パトロール指示の送信タイミングは、特定のタイミングに限定されない。
【００７８】
パトロール指示は、パトロールリードの範囲を指定する物理アドレスを含む。パトロールリードの範囲は、ブロック単位で設定されてもよいし、メモリチップ３０単位で設定されてもよい。
【００７９】
なお、パトロールリードの範囲は、指定されなくてもよい。シーケンサ２１は、そのシーケンサ２１を備えるメモリインタフェース回路２０の配下の全てのメモリチップ３０の記憶領域をパトロールリードの範囲と見なしてもよい。
【００８０】
また、パトロール指示は、任意の設定情報を含み得る。例えば、各メモリチップ３０が、読み出し電圧（読み出し電圧ＶＡｒ、ＶＢｒ、ＶＣｒ）の設定が可能に構成される場合、設定情報に、読み出し電圧の設定値が含まれていてもよい。シーケンサ２１は、リード動作の際の読み出し電圧として、パトロールリードの対象のメモリチップ３０に、設定情報に含まれていた設定値を使用させることができる。なお、この設定情報は、パトロール指示毎に通知されなくてもよい。メモリインタフェース回路２０は、一度受信した設定情報をシーケンサ２１内に保持し、以降、シーケンサ２１内に記憶された設定情報を使用してもよい。
【００８１】
別の例では、ＥＣＣデコーダ２２の符号化の方式として、コードレートが可変の方式が採用される場合には、設定情報に、コードレート情報が含まれていてもよい。ＥＣＣデコーダ２２は、設定情報に含まれていたコードレート情報を用いて復号化を実行することができる。
【００８２】
メモリインタフェース回路２０は、パトロール指示を受信すると、パトロールリードの範囲の記憶領域に格納されている全データに対し、パトロールリードを実行する。
【００８３】
なお、メモリコントローラ１０は、パトロール指示を送信せず、メモリインタフェース回路２０は、パトロール指示を受信することなくパトロールリードを開始してもよい。
【００８４】
パトロールリードでは、１回以上のリードが実行される。一例では、メモリインタフェース回路２０は、パトロールリードの範囲の記憶領域を構成する各ページを順番にリードする。別の例では、メモリインタフェース回路２０は、パトロールリードの範囲の記憶領域からブロック毎に１ページを選択するなどによって、１以上のリード対象のページを限定し、限定された１以上のリード対象のページのそれぞれをリードする。
【００８５】
各リードでは、メモリインタフェース回路２０のシーケンサ２１は、リードコマンドを生成し、生成したリードコマンドを宛先のメモリチップ３０（以降、単に対象のメモリチップ３０）に送信する（Ｓ１０２）。対象のメモリチップ３０においては、周辺回路は、リードコマンドに応じてメモリセルアレイ３３に対するリード動作を行い、メモリセルアレイ３３からリードされたデータをメモリインタフェース回路２０に出力する（Ｓ１０３）。
【００８６】
メモリインタフェース回路２０がデータを受信すると、シーケンサ２１は、ＥＣＣデコーダ２２を用いることによって診断処理を実行する（Ｓ１０４）。診断処理の具体的な内容は、任意に設計され得る。
【００８７】
一例では、診断処理では、ＥＣＣデコーダ２２は、誤り訂正を実行する。シーケンサ２１は、誤り訂正によって検出された誤りの程度を、診断結果として扱う。
【００８８】
別の例では、シーケンサ２１は、誤り訂正の成否に基づいて、リフレッシュの要否を判定する。ＥＣＣデコーダ２２がデータに含まれる誤りの訂正に失敗した場合、シーケンサ２１は、リフレッシュが必要であると判定する。ＥＣＣデコーダ２２がデータに含まれる誤りの訂正に成功した場合、シーケンサ２１は、リフレッシュは不要であると判定する。シーケンサ２１は、リフレッシュが必要であると判定された位置を、診断結果とする。
【００８９】
さらに別の例では、シーケンサ２１は、データに含まれていた誤りの数と所定の閾値とを比較し、比較結果に基づいてリフレッシュの要否を判定する。データに含まれている誤りの数が閾値を超えている場合、シーケンサ２１は、リフレッシュが必要であると判定する。データに含まれている誤りの数が閾値を超えていない場合、シーケンサ２１は、リフレッシュは不要であると判定する。シーケンサ２１は、リフレッシュが必要であると判定された位置を、診断結果とする。
【００９０】
Ｓ１０２〜Ｓ１０４の処理は、繰り返し実行される。シーケンサ２１は、所定のタイミングで、診断結果をメモリコントローラ１０に送信する（Ｓ１０５）。
【００９１】
診断結果をメモリコントローラ１０に送信するタイミングは、特定のタイミングに限定されない。一例では、シーケンサ２１は、所定数のリードが完了する毎に、診断結果を送信する。別の例では、シーケンサ２１は、１ブロックなど、単位サイズの記憶領域に対してリードが完了する毎に、診断結果を送信する。さらに別の例では、シーケンサ２１は、リフレッシュが必要であると判定した場合に、診断結果を送信する。さらに別の例では、パトロールリードの範囲内の記憶領域を一通りリードした場合に、診断結果を送信する。
【００９２】
以上述べたように、第１の実施形態によれば、メモリコントローラ１０は、ホスト２００から受信したデータをＥＣＣエンコーダ１３によって符号化し、符号化されたデータをＮＡＮＤメモリ４０にプログラムする。メモリインタフェース回路２０は、メモリコントローラ１０が封入された第１パッケージ４とは異なる第２パッケージ５に封入されており、ＥＣＣデコーダ２２を備えている。メモリインタフェース回路２０は、メモリコントローラ１０とＮＡＮＤメモリ４０との間に介在する。メモリインタフェース回路２０は、ＮＡＮＤメモリ４０に格納されているデータをリードし、リードされたデータに対してＥＣＣデコーダ２２によって復号化することによって、リードされたデータの診断を行う。メモリインタフェース回路２０は、診断結果をメモリコントローラ１０に送信する。
【００９３】
これにより、パトロールリードを構成する情報の授受を、メモリインタフェース回路２０とＮＡＮＤメモリ４０との間で閉じることができるので、メモリコントローラ１０にかかる負荷が低減される。
【００９４】
なお、以上の例では、メモリインタフェース回路２０は、診断において、誤りの程度、または誤りの程度に基づくリフレッシュの要否を演算した。診断では、メモリインタフェース回路２０は、隣接する２つの閾値電圧の分布の山の間のマージンの広さを測定してもよい。
【００９５】
例えば、図１０に例示されるＥｔｏＡマージン３００の広さが測定対象である場合を考える。ＥｔｏＡマージン３００は、Ｅ山とＡ山との間のマージンである。シーケンサ２１は、読み出し電圧ＶＡｒを設定し、上位ページおよび下位ページをリード位置とするリードを実行する。即ち、シーケンサ２１は、２回のリードを実行する。ＥＣＣデコーダ２２は、上位ページからリードされたデータと下位ページからリードされたデータとに対して誤り訂正を実行する。シーケンサ２１は、誤り訂正の前後の各データを比較することによって、データ“１１”がプログラムされ、データ“０１”がリードされたメモリセルの数と、データ“０１”がプログラムされ、データ“１１”がリードされたメモリセルの数と、をカウントする。設定された読み出し電圧ＶＡｒが、Ｅ山とＡ山との間のマージン内に存在する場合には、２つのカウント値はともにゼロである。よって、シーケンサ２１は、２つのカウント値がともにゼロとなる読み出し電圧ＶＡｒの範囲を探索することによって、ＥｔｏＡマージン３００の広さを求めることができる。他のマージンに関しても、同様の手順でマージンの広さが測定できる。
【００９６】
このように、メモリインタフェース回路２０は、ＮＡＮＤメモリ４０からリードされたデータに含まれているエラービット数に基づいて２つの閾値電圧の分布の山の間のマージンの広さを取得してもよい。
【００９７】
なお、メモリインタフェース回路２０は、診断において、読み出し電圧をＶＡｒよりもやや低電位側に設定してリードを行い、エラービット数をカウントすることによって、その読み出し電圧における閾値分布の高さを取得してもよい。
【００９８】
また、メモリインタフェース回路２０は、Distribution  readを実行することにより、閾値電圧分布を取得し、取得された閾値電圧分布を診断結果としてメモリコントローラ１０に送信してもよい。
【００９９】
Distribution  readでは、シーケンサ２１は、対象のメモリセルグループに対し、読み出し電圧を順次変更しながら複数回のシングルレベルリードを実行する。シングルレベルリードは、ＳＬＣモードでのリードである。シングルレベルリードによってリードされたデータの各ビットは、使用された読み出し電圧よりも、対応するメモリセルの閾値電圧が高いか低いかを示す。よって、シーケンサ２１は、読み出し電圧をＥ山の最小電圧値からＣ山の最大電圧値に至るまで順次変更することによって、各山の形状を求めることができる。
【０１００】
また、メモリインタフェース回路２０は、Distribution  readを実行することによって、２つの山の間のマージンの広さを取得してもよい。
【０１０１】
また、例えば、ＥｔｏＡマージン３００そのものを取得する代わりに、メモリインタフェース回路２０は、図１０に例示されるように、Ｅ山の頂点とＡ山の頂点との間に位置するそれぞれ異なる２つの電圧（ＶＡｒ１およびＶＡｒ２）をそれぞれ読み出し電圧として用いてリードを実行し、２つのリードの結果で異なるデータ値が得られたビットをカウントすることによって、閾値電圧が電圧ＶＡｒ１と電圧ＶＡｒ２との間に位置するメモリセルの数を測定してもよい。閾値電圧が電圧ＶＡｒ１と電圧ＶＡｒ２との間に位置するメモリセルの数が小さいことは、ＥｔｏＡマージン３００が広いことを意味し、閾値電圧が電圧ＶＡｒ１と電圧ＶＡｒ２との間に位置するメモリセルの数が大きいことは、ＥｔｏＡマージン３００が狭いことを意味する。閾値電圧が電圧ＶＡｒ１と電圧ＶＡｒ２との間に位置するメモリセルの数に基づいて、リフレッシュの要否が判定され得る。
【０１０２】
（第２の実施形態）
通常のリフレッシュ（以降、通常リフレッシュ）では、エラービット数が所定の閾値を越えたブロック内のデータが別のブロックにプログラムされる。しかし、通常リフレッシュは、プログラム先のブロックを確保するためのイレースを伴う。よって、通常リフレッシュが繰り返し実行されると、ＮＡＮＤメモリ４０の疲弊が進む。
【０１０３】
第２の実施形態では、各メモリインタフェース回路２０は、上書きリフレッシュを指示することができる。上書きリフレッシュは、データリテンションなどにより閾値電圧が負側にシフトしたメモリセルに対し同一のデータを上書きする処理である。上書きとは、イレースを行わずに重ねてプログラムすることであり、換言すると、再プログラムすることである。上書きリフレッシュはプログラム動作のみでリフレッシュを実現する。よって、通常リフレッシュに比べイレースを伴わない分だけＮＡＮＤメモリ４０に与えるダメージが抑制される。また、上書きリフレッシュはイレーズレベルからのプログラムではなく途中の電圧からのプログラムに該当するので、上書きリフレッシュにおいては、プログラムは短時間で完了する。
【０１０４】
図１１は、第２の実施形態のメモリシステム１００の動作を説明するシーケンス図である。
【０１０５】
まず、メモリコントローラ１０は、メモリインタフェース回路２０に対し、上書きリフレッシュ指示を送信する（Ｓ２０１）。なお、上書きリフレッシュ指示は、上書きリフレッシュの対象位置を指定する物理アドレスを含む。また、パトロール指示と同様に、上書きリフレッシュ指示は、任意の設定情報を含み得る。
【０１０６】
なお、メモリコントローラ１０は、上書きリフレッシュ指示を送信せず、メモリインタフェース回路２０は、上書きリフレッシュ指示を受信することなく上書きリフレッシュを開始してもよい。
【０１０７】
メモリインタフェース回路２０においては、上書きリフレッシュ指示を受信すると、上書きリフレッシュの対象位置からデータをリードするリードコマンドを、宛先のメモリチップ３０（以降、対象のメモリチップ３０）に送信する（Ｓ２０２）。対象のメモリチップ３０においては、周辺回路は、リードコマンドに応じてメモリセルアレイ３３に対するリード動作を行い、メモリセルアレイ３３からリードされたデータをメモリインタフェース回路２０に出力する（Ｓ２０３）。
【０１０８】
メモリインタフェース回路２０がデータを受信すると、ＥＣＣデコーダ２２は、ＥＣＣデコーダ２２によって誤り訂正を実行する（Ｓ２０４）。Ｓ２０４においては、Ｓ２０３によって送られてきた符号化されたデータに含まれるエラービットのみが訂正される。よってＳ２０４の処理によって得られるデータは、エラービットが訂正された符号化されたデータである。
【０１０９】
シーケンサ２１は、上書きリフレッシュコマンドと誤り訂正後のデータとを対象のメモリチップ３０に送信する（Ｓ２０５）。上書きリフレッシュの位置は、Ｓ２０２、Ｓ２０３によってデータがリードされた位置と同一である。
【０１１０】
対象のメモリチップ３０においては、周辺回路は、上書きリフレッシュを実行する。例えば、図７に示した４値メモリセルの場合、Ａ山に属するメモリセルに対しては、Ａ山用のワード線電位が設定され、またＡ山用のベリファイ電位ＶＡＶが設定されて、プログラム動作が行われる。Ｂ山、Ｃ山に属するメモリセルに関しても同様の再プログラムが行われる。これにより、閾値電圧が負側にシフトした場合に、その閾値電圧を許容範囲内に移動させることができる。
【０１１１】
対象のメモリチップ３０は、上書きリフレッシュが完了すると、完了応答をメモリインタフェース回路２０に送信する（Ｓ２０６）。
【０１１２】
メモリインタフェース回路２０は、完了応答を受信すると、上書きリフレッシュの完了報告をメモリコントローラ１０に送信する（Ｓ２０７）。
【０１１３】
なお、Ｓ２０１において、メモリコントローラ１０は、上書きリフレッシュの対象位置を、ブロック単位など、範囲情報として与えてもよい。その場合には、Ｓ２０２〜Ｓ２０６の処理が、指定された範囲情報に含まれる各メモリセルグループ毎に実行され、指定された範囲情報に含まれる全てのメモリセルグループについて上書きリフレッシュが完了した後に、Ｓ２０７の処理が実行されてもよい。
【０１１４】
以上述べたように、第２の実施形態によれば、メモリコントローラ１０は、上書きリフレッシュ指示を送信する。メモリインタフェース回路２０は、上書きリフレッシュ指示を受信すると、ＮＡＮＤメモリ４０からデータをリードし、リードされたデータをＥＣＣデコーダ２２によって復号化することによってリードされたデータに含まれるエラービットを訂正する。そして、メモリインタフェース回路２０は、エラービットが訂正されたデータを、データがリードされた位置と同じ位置に再プログラムする。
【０１１５】
これにより、リフレッシュにかかるデータの授受が、メモリインタフェース回路２０とＮＡＮＤメモリ４０で閉じることができる。
【０１１６】
なお、通常リフレッシュにおいては、メモリコントローラ１０は、データのリード、データの書き直し先のブロックの確保、およびデータの書き直しを実行する。よって、通常リフレッシュにおいては、メモリコントローラ１０とＮＡＮＤメモリ４０との間で、リフレッシュにかかるデータの授受が発生する。
【０１１７】
これに対し、第２の実施形態の上書きリフレッシュの場合、メモリコントローラ１０とＮＡＮＤメモリ４０との間で、リフレッシュにかかるデータの授受が発生しないので、リフレッシュの動作がメモリコントローラ１０に与える負荷が軽減される。
【０１１８】
なお、上書きリフレッシュの対象位置の設定方法は、特定の方法に限定されない。例えば、第１の実施形態のパトロールリードの動作が実行され、メモリコントローラ１０は、メモリインタフェース回路２０から得た診断結果に基づき、上書きリフレッシュの対象位置を特定する。
【０１１９】
また、メモリコントローラ１０は、メモリインタフェース回路２０から得た診断結果に基づき、通常リフレッシュを実行するか上書きリフレッシュを実行するかを判定し、上書きリフレッシュを実行すると判定した場合に、メモリインタフェース回路２０に上書きリフレッシュ指示を送ってもよい。
【０１２０】
一例では、メモリインタフェース回路２０は、２つの閾値電圧の分布の山の間のマージンの広さ（例えばＥｔｏＡマージン３００）の広さを測定し、診断結果としてメモリコントローラ１０に送信する。メモリコントローラ１０は、２つの山の間のマージンの広さが所定の閾値よりも大きい場合、上書きリフレッシュを選択し、上書きリフレッシュ指示を送信する。メモリコントローラ１０は、ＥｔｏＡマージン３００の広さが所定の閾値よりも小さい場合、通常リフレッシュを選択する。第１の実施形態で述べたように、２つの山の間のマージンの広さの測定方法は、特定の方法に限定されない。メモリインタフェース回路２０は、ＮＡＮＤメモリ４０からリードされたデータに含まれているエラービット数に基づいて２つの山の間のマージンの広さを演算してもよいし、Distribution  readを実行することにより２つの山の間のマージンの広さを演算してもよい。
【０１２１】
別の例では、メモリインタフェース回路２０は、エラービット数を診断結果としてメモリコントローラ１０に送信する。メモリコントローラ１０は、エラービット数が第１の閾値よりも大きい場合、通常リフレッシュを選択する。メモリコントローラ１０は、エラービット数が第１の閾値よりも小さく、かつ第１の閾値よりも小さい第２の閾値よりも大きい場合、上書きリフレッシュを選択する。第１の閾値は、ＥＣＣデコーダ２２によって訂正可能な最大数よりも小さい値に設定される。
【０１２２】
また、メモリコントローラ１０は、パトロールリードとは関係なく上書きリフレッシュの対象位置を設定してもよい。例えば、メモリコントローラ１０は、プログラムされてから所定の時間が経過した記憶領域を、上書きリフレッシュの対象位置として設定する。
【０１２３】
また、メモリコントローラ１０は、パトロールリードとは関係なく、通常リフレッシュを実行するか上書きリフレッシュを実行するかを判定してもよい。例えば、メモリコントローラ１０は、同一の記憶領域に対して上書きリフレッシュを連続して所定回数実行した場合、次はその記憶領域に対して通常リフレッシュを実行する。
【０１２４】
（第３の実施形態）
第３の実施形態では、メモリインタフェース回路２０は、ＮＡＮＤメモリ４０に対するリードにおいて、訂正強度に優れた復号化を行うことができる。
【０１２５】
図１２は、第３の実施形態のメモリインタフェース回路２０の構成例を示す図である。図示するように、メモリインタフェース回路２０は、シーケンサ２１、ＥＣＣデコーダ２２のほかに、バッファ２３を備えている。バッファ２３を構成するメモリの種類は、特定の種類に限定されない。
【０１２６】
メモリコントローラ１０に具備されるＥＣＣエンコーダ１３は、軟判定（soft  decision）を用いた復号化が可能な符号化方式で符号化を実行する。メモリインタフェース回路２０に具備されるＥＣＣデコーダ２２は、ＥＣＣエンコーダ１３によって符号化され、ＮＡＮＤメモリ４０に格納されたデータに対し、軟判定に基づく復号化を行うことができる。軟判定を用いた復号化が可能な符号化方式としては、例えばＬＤＰＣ（Low-Density  Parity-check  Code）がある。
【０１２７】
軟判定とは、ソフトビット情報を用いた復号処理である。軟判定においては、ソフトビット情報すなわち尤度情報が必要となる。ビット値の判定の基準となる電圧すなわち硬判定するための電圧をハードビット読み出し電圧（ＨＢ）とすると、ＨＢと、ＨＢより上側にシフトされた読み出し電圧を用いることによってリードされたデータと、ＨＢより下側にシフトされた読み出し電圧を用いることによってリードされたデータとが、ソフトビット情報の生成に使用される。即ち、ソフトビット情報を得るためには、ＮＡＮＤメモリ４０に対する複数回のリードが必要となる。
【０１２８】
メモリインタフェース回路２０では、シーケンサ２１は、リード対象のメモリセルグループから、読み出し電圧をＨＢを中心とする複数の電圧のそれぞれに順次変更しながら、データを複数回リードする。各リードにおいては、シーケンサ２１は、読み出し電圧を指定してリードコマンドを送信する。シーケンサ２１は、各リードコマンドに応じてＮＡＮＤメモリ４０から出力された各データを、バッファ２３に保存する。シーケンサ２１は、ＮＡＮＤメモリ４０から出力された複数のデータに基づく演算によって、ソフトビット情報を取得する。シーケンサ２１は、ソフトビット情報をＥＣＣデコーダ２２に入力し、ＥＣＣデコーダ２２は、ソフトビット情報を用いることによって誤り訂正を実行する。
【０１２９】
以上述べたように、第３の実施形態によれば、メモリインタフェース回路２０は、読み出し電圧を変えながらＮＡＮＤメモリ４０から複数回、データをリードし、それぞれ異なる読み出し電圧を用いてリードされた複数のデータに基づいてソフトビット情報を取得する。そして、メモリインタフェース回路２０は、ソフトビット情報をＥＣＣデコーダ２２に入力して誤り訂正を実行させる。
【０１３０】
このように、メモリインタフェース回路２０は、多数のリードを伴う誤り訂正の強度が強い誤り訂正を実行することができるので、当該誤り訂正をメモリコントローラ１０で行う場合に比べてメモリコントローラ１０の負荷が低減される。
【０１３１】
また、軟判定に要するデータの授受が、メモリインタフェース回路２０とメモリチップ３０との間で閉じており、メモリコントローラ１０に対しては、メモリインタフェース回路２０は、軟判定によって訂正されたデータのみを転送すればよい。メモリコントローラ１０とＮＡＮＤメモリ４０との間で、軟判定に要するデータの授受が発生しないので、軟判定の処理がメモリコントローラ１０に与える負荷が軽減される。
【０１３２】
なお、以上では、メモリインタフェース回路２０が軟判定を実行する、として説明した。メモリインタフェース回路２０は、ソフトビット情報の演算を実行し、演算されたソフトビット情報をメモリコントローラ１０に送信し、ソフトビット情報を用いた軟判定をメモリコントローラ１０のＥＣＣデコーダ１４が実行してもよい。その場合、ソフトビット情報を得るためのデータの授受をメモリインタフェース回路２０とメモリチップ３０との間で閉じることができ、ひいては、メモリコントローラ１０に与える負荷が軽減される。
【０１３３】
（第４の実施形態）
第４の実施形態のメモリインタフェース回路２０の構成は、第３の実施形態と同様である。第４の実施形態では、メモリインタフェース回路２０は、ＮＡＮＤメモリ４０に対するfoggy&fine書き込みを支援することができる。
【０１３４】
foggy&fine書き込みは、多値メモリセルにおいて隣接メモリセルへの書き込みに伴う閾値電圧の変動を抑制する為の書き込み方式である。foggy&fine書き込みでは、より具体的には、ターゲットのメモリセルに一旦粗くプログラムされ、次に、ターゲットのメモリセルに隣接するメモリセルへのプログラムが実行される。その後、ターゲットのメモリセルにプログラムが再度実行されることで、ターゲットのメモリセルの閾値電圧が目標値に補正される。即ち、foggy&fine書き込みによれば、１つのワードラインに、一度データが粗くプログラムされ、後に、データが再プログラムされる。再プログラムとは、過去にプログラムされた位置に対し、イレースを経ることなくプログラムされることである。
【０１３５】
foggy&fine書き込みの手順の一例を以下に説明する。ここでは、４値メモリセルを有する２次元構造のメモリセルアレイに対してfoggy&fine書き込みが実行される例について説明する。foggy&fine書き込みは、３次元構造のメモリセルアレイに対しても実行可能である。また、foggy&fine書き込みは、４値以外の多値メモリセル（例えばTLC、QLC等）に対しても実行可能である。
【０１３６】
（１）まず、メモリチップ３０に下位ページ及び上位ページに対応する合計２ページ分の第１データが入力され、ワードライン０（ＷＬ０）の下位ページ及び上位ページに第１データが粗くプログラムされる（foggy書き込み）。
（２）次に、メモリチップ３０に下位ページ及び上位ページに対応する合計２ページ分の第２データが入力され、ワードライン１（ＷＬ１）の下位ページ及び上位ページに第２データが粗くプログラムされる（foggy書き込み）。
（３）次に、合計２ページ分の第１データが再度、メモリチップ３０に入力され、ワードライン０（ＷＬ０）の下位ページ及び上位ページに第１データが正確にプログラムされる（fine書き込み）。
（４）次に、メモリチップ３０に下位ページ及び上位ページに対応する合計２ページ分の第３データが入力され、ワードライン２（ＷＬ２）の下位ページ及び上位ページに第３データが粗くプログラムされる（foggy書き込み）。
（５）次に、合計２ページ分の第２データが再度、メモリチップ３０に入力され、ワードライン１（ＷＬ１）の下位ページ及び上位ページに第２データが正確にプログラムされる（fine書き込み）。以下同様である。
【０１３７】
このように、foggy&fine書き込みでは、同じページに対し２回の書き込み処理が行われるため、同一のページに対応するデータを２回入力する必要が生じる。なお、データ入力回数は２回に限るものではなく、各ページへの書き込み順序もこれに限定されるものではない。
【０１３８】
シーケンサ２１は、メモリコントローラ１０からプログラム対象のデータを受信する。プログラム対象のデータは符号化されている。シーケンサ２１は、受信したプログラム対象のデータをバッファ２３に格納する。そして、シーケンサ２１は、バッファ２３に格納されたデータを、対象のメモリチップ３０に２回入力し、それぞれプログラムする。１回目のプログラムは、foggy書き込みであり、２回目のプログラムは、fine書き込みである。
【０１３９】
なお、上述のfoggy&fine書き込みの手順の例では、第１データの２回の入力の間に、第２データおよび第３データの入力が発生する。よって、バッファ２３は、少なくとも３つのデータ（第１データ、第２データ、第３データ）を格納可能な容量を有する。
【０１４０】
以上述べたように、第４の実施形態によれば、メモリインタフェース回路２０は、プログラム対象のデータをバッファ２３に格納する。そして、メモリインタフェース回路２０は、バッファ２３に格納されたプログラム対象のデータをＮＡＮＤメモリ４０の第１の位置にプログラムし、第１の位置とは異なる第２の位置に他のデータをプログラムし、バッファ２３に格納されたプログラム対象のデータを再度、第１の位置に再プログラムする。再プログラムは、前回のプログラムからイレースを経ることなく実行される。
【０１４１】
これにより、foggy&fine書き込みにかかる同一のデータの複数回の入力を、メモリコントローラ１０ではなくメモリインタフェース回路２０が実行するので、メモリコントローラ１０の負荷が低減される。
【０１４２】
なお、foggy書き込みによってプログラムされるデータは、全ページ分のデータである必要はない。例えば、１つのワードラインに対しては、１回目に、最下位のページのデータが粗くプログラムされ（foggy書き込み）、２回目に、全ページのデータが正確にプログラムされる（fine書き込み）。その場合には、最下位のページのデータを２回入力する必要がある。メモリインタフェース回路２０は、foggy書き込みが実行されたデータを保持しておき、fine書き込みにおいては、保持しているデータを含む全ページのデータをfine書き込みしてもよい。
【０１４３】
また、メモリインタフェース回路２０は、foggy&fine書き込みを実行するか否かに関わらず、バッファ２３にプログラム対象のデータを一時記憶させてもよい。具体的には、シーケンサ２１は、メモリコントローラ１０がＮＡＮＤメモリ４０に対して送信したプログラム対象のデータを、バッファ２３に記憶しておく。そして、シーケンサ２１は、メモリコントローラ１０がＮＡＮＤメモリ４０に対して送信したリードコマンドを受信した場合、リード対象のデータがバッファ２３に格納されているか否かを判定する。リード対象のデータがバッファ２３に格納されている場合、シーケンサ２１は、リード対象のデータをバッファ２３から読み出してメモリコントローラ１０に送信する。その場合、シーケンサ２１は、リードコマンドをＮＡＮＤメモリ４０に転送しない。
【０１４４】
これにより、メモリコントローラ１０は、データがプログラムの最中に当該データのリードを試みる場合、プログラムの完了を待つことなく当該データを取得することができる。
【０１４５】
（第５の実施形態）
第５の実施形態では、メモリインタフェース回路２０は、動的ＯＤＴ（Dynamic  On  Die  Termination）を制御することができる。
【０１４６】
図１３は、メモリインタフェース回路２０とＮＡＮＤメモリ４０との間のデータ線の接続例を示す図である。データ線５０の一端は、メモリインタフェース回路２０のドライバ回路２４に接続されている。データ線５０は、４つに分岐し、それぞれ異なるメモリチップ３０に具備されるドライバ回路３８に接続されている。そして、データ線５０のメモリチップ３０側には、ＯＤＴ回路３９が具備されている。ＯＤＴ回路３９は、ＯＤＴ機能のオン／オフを切り替えるための２つのスイッチを備える。当該２つのスイッチは、ＯＤＴ制御信号線によって制御される。
【０１４７】
図１４は、ＯＤＴ制御信号線の接続例を示す図である。図示するように、メモリインタフェース回路２０と各メモリチップ３０とは、ＯＤＴ制御信号線５１で１対１に接続されている。即ち、各メモリチップ３０は、メモリインタフェース回路２０と、分岐しない１本のＯＤＴ制御信号線５１で個別に接続されている。
【０１４８】
シーケンサ２１は、配下のメモリチップ３０のうち１以上のメモリチップ３０に対してデータを転送中であるか否か、および、各メモリチップ３０はデータの転送対象のメモリチップ３０であるか否か、に応じて、配下の各メモリチップ３０のＯＤＴ機能のオン／オフを実行する。シーケンサ２１は、メモリコントローラ１０からのコマンドを転送する際に、当該コマンドに含まれるアドレス情報に基づいて、動作するメモリチップ３０を特定し、特定した結果に基づいて配下の各メモリチップ３０のＯＤＴ機能のオン／オフを決定する。パトロールリードなど、メモリインタフェース回路２０自身がＮＡＮＤメモリ４０にアクセスを行う場合には、アクセス先のメモリチップ３０を動作するメモリチップ３０として特定し、特定した結果に基づいて配下の各メモリチップ３０のＯＤＴ機能のオン／オフを決定する。
【０１４９】
ＯＤＴ機能のオン／オフの決定方法は、特定の方法に限定されない。一例では、シーケンサ２１は、配下のメモリチップ３０のうちの、データの転送対象のメモリチップ３０のＯＤＴ機能をオフし、それ以外のメモリチップ３０のＯＤＴ機能をオンする。別の例では、シーケンサ２１は、データの転送対象のメモリチップ３０のＯＤＴ機能をオンし、それ以外のメモリチップ３０のＯＤＴ機能をオフする。さらに別の例では、シーケンサ２１は、配下のメモリチップ３０のうちのいずれかのメモリチップ３０にデータを転送中である場合には、配下の全てのメモリチップ３０のＯＤＴ機能をオンし、配下のメモリチップ３０のいずれのメモリチップ３０にもデータを転送していない場合には、配下の全てのメモリチップ３０のＯＤＴ機能をオフする。
【０１５０】
仮にメモリインタフェース回路２０ではなくメモリコントローラ１０がＯＤＴ機能を制御する場合、メモリコントローラ１０と各メモリチップ３０とがＯＤＴ制御信号線５１で１対１に接続される。図１に例示されるようにメモリシステム１００が８個のメモリチップ３０を有する場合には、メモリコントローラ１０側に８本のＯＤＴ制御信号線５１が接続される。メモリコントローラ１０側のＯＤＴ制御信号線５１の配線数は、メモリチップ３０の数が増加するに応じて増加する。
【０１５１】
第５の実施形態によれば、メモリインタフェース回路２０が配下の各メモリチップ３０と１対１でＯＤＴ制御信号線５１で接続されるので、メモリインタフェース回路２０を複数設けることによって、ＯＤＴ制御信号線５１の配線を簡素にすることができる。
【０１５２】
（第６の実施形態）
３次元構造のメモリセルアレイでは、電源オン状態であるか否かに関わらず、メモリセルの閾値電圧が徐々に変化し、エラーレートが上昇する。定期的にワードラインに適切なレベルの電圧を印加することで、閾値電圧の変化が抑制される。
【０１５３】
そこで、メモリインタフェース回路２０は、配下のメモリチップ３０が備える全ブロックのそれぞれに対し、定期的なリードを実行してもよい。リード位置は、各ブロックにつき１つのワードラインであってもよいし、各ブロックにつき複数のワードラインであってもよい。定期的なリードによって、リードされたブロックの各ワードラインには電圧（例えば転送電位）が印加されるので、閾値電圧の変化を抑制することが可能となる。
【０１５４】
（第７の実施形態）
第７の実施形態では、メモリインタフェース回路２０は、バックグラウンドで、配下のメモリチップ３０に対してDistribution  readを実行することによって、閾値電圧分布を測定する。そして、メモリインタフェース回路２０は、測定した閾値電圧分布に基づいて、エラービット数ができるだけ少なくなる読み出し電圧（以降、最適読み出し電圧）を求める。そして、メモリインタフェース回路２０は、求めた最適読み出し電圧をメモリコントローラ１０に通知する。
【０１５５】
ここでは一例として、メモリインタフェース回路２０は、最適読み出し電圧を例えばブロック単位で求める。最適読み出し電圧が求められる単位はブロックでなくてもよい。例えば、ページ単位、ワードライン単位、ワードライングループ単位、またはメモリセルグループ単位など、任意の単位でに最適読み出し電圧が取得され得る。
【０１５６】
メモリコントローラ１０は、メモリインタフェース回路２０から通知されたブロック毎の最適読み出し電圧を例えばＲＡＭ１２にキャッシュする。メモリコントローラ１０は、キャッシュしているブロック毎の最適読み出し電圧を、メモリインタフェース回路２０からの通知に応じて更新する。メモリコントローラ１０は、あるブロックに対してリードを行う際に、そのブロックの最適読み出し電圧をキャッシュしている内容から取得して、取得した最適読み出し電圧を指定してリードコマンドをＮＡＮＤメモリ４０側に送信する。
【０１５７】
このように、第７の実施形態においては、最適読み出し電圧の測定に必要となる多数のリードと、演算処理と、がメモリコントローラ１０ではなくメモリインタフェース回路２０によって実行されるので、メモリコントローラ１０にかかる負荷が低減される。
【０１５８】
また、最適読み出し電圧の測定を構成する情報の授受を、メモリチップ３０とメモリインタフェース回路２０との間だけで閉じることができるので、メモリコントローラ１０にかかる負荷が低減される。
【０１５９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１６０】
１  ハウジング、２，２ａ，２ｂ，２ｃ  プリント基板、３  コネクタおよび／またはケーブル、４  第１パッケージ、５  第２パッケージ、６  ＮＡＮＤパッケージ、７  ホストインタフェース、８  コネクタ、１０  メモリコントローラ、１１  プロセッサ、１２  ＲＡＭ、１３  ＥＣＣエンコーダ、１４  ＥＣＣデコーダ、２０  メモリインタフェース回路、２１  シーケンサ、２２  ＥＣＣデコーダ、２３  バッファ、２４  ドライバ回路、３０  メモリチップ、３１  Ｉ／Ｏ部、３２  ＮＡＮＤ制御部、３３  メモリセルアレイ、３４  ロウデコーダ、３５  センスアンプ、３６  ページバッファ、３７  カラムデコーダ、３８  ドライバ回路、３９  ＯＤＴ回路、４０  ＮＡＮＤメモリ、５０  データ線、５１  ＯＤＴ制御信号線、１００  メモリシステム、２００  ホスト、３００  ＥｔｏＡマージン。
【図１】
2018160065.tif 000003
【図２】
2018160065.tif 000004
【図３】
2018160065.tif 000005
【図４】
2018160065.tif 000006
【図５】
2018160065.tif 000007
【図６】
2018160065.tif 000008
【図７】
2018160065.tif 000009
【図８】
2018160065.tif 000010
【図９】
2018160065.tif 000011
【図１０】
2018160065.tif 000012
【図１１】
2018160065.tif 000013
【図１２】
2018160065.tif 000014
【図１３】
2018160065.tif 000015
【図１４】
2018160065.tif 000016