(57)【要約】【課題】リードデータに含まれるエラーの数を可及的に低減すること。【解決手段】メモリシステムは、第１メモリと、温度センサと、コントローラとを備える。第１メモリは、メモリセルトランジスタとメモリセルトランジスタのしきい値電圧を制御するアクセス回路とを備える。コントローラは、第１メモリに対し、リード動作時に、第１判定電圧を取得し、プログラム動作時の温度とリード動作時の温度との差分に応じて第１判定電圧を補正し、アクセス回路に、しきい値電圧と補正された第１判定電圧である第２判定電圧との比較に基づいてしきい値電圧に対応したデータを取得させる。【選択図】図１１
2019164858.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルトランジスタと前記メモリセルトランジスタのしきい値電圧を制御するアクセス回路とを備える不揮発性の第１メモリと、
温度センサと、
前記第１メモリに対し、プログラム動作を実行し、前記プログラム動作の後、第１リード動作を実行するコントローラと、
を備え、
前記プログラム動作は、前記温度センサを用いて温度を測定し、測定された前記温度である第１温度を記憶し、前記アクセス回路に前記しきい値電圧を第１データに対応した値に設定させる動作であり、
前記第１リード動作は、前記温度センサを用いて温度を測定し、測定された前記温度である第２温度と前記第１温度との差分を演算し、第１判定電圧を取得し、前記第１判定電圧を前記差分に応じて補正し、前記アクセス回路に前記しきい値電圧と補正された前記第１判定電圧である第２判定電圧との比較に基づいて前記しきい値電圧に対応した第２データを取得させる動作である、
メモリシステム。
【請求項２】
前記第１リード動作において、前記コントローラは、前記第２判定電圧と第１値とを比較し、前記第２判定電圧が前記第１値より低い場合、前記アクセス回路に前記メモリセルトランジスタのソース線の電位を所定値だけバイアスさせ、前記第２判定電圧が前記第１値より高い場合、前記アクセス回路に前記ソース線の電位をバイアスさせない、
請求項１に記載のメモリシステム。
【請求項３】
前記第２データに含まれるエラーの検出および訂正を実行するＥＣＣ回路をさらに備え、
前記コントローラは、前記ＥＣＣ回路が前記訂正に失敗した場合、リトライリードを実行し、
前記リトライリードは、前記アクセス回路に前記第２判定電圧と異なる第３判定電圧を使用させて前記第２データの取得をリトライさせる動作である、
請求項１に記載のメモリシステム。
【請求項４】
学習情報が格納される第２メモリをさらに備え、
前記コントローラは、前記ＥＣＣ回路が前記訂正に成功した場合、第４判定電圧と前記第２温度との関係を学習し、学習の結果を前記学習情報に記録し、
前記第４判定電圧は、前記ＥＣＣ回路が前記訂正に成功した場合の前記第２判定電圧または前記第３判定電圧である、
請求項３に記載のメモリシステム。
【請求項５】
前記コントローラは、前記第１リード動作の後、第２リード動作を実行し、
前記第２リード動作は、前記温度センサを用いて温度を測定し、測定された前記温度である第３温度と前記学習情報とに基づいて第５判定電圧を決定し、前記アクセス回路に前記第５判定電圧を使用させて前記しきい値電圧に対応した第３データを取得させる動作である、
請求項４に記載のメモリシステム。
【請求項６】
前記コントローラは、前記第２温度と予め設定された第４温度との差分を演算し、前記第４判定電圧を前記差分に応じて補正し、補正された前記第４判定電圧である第６判定電圧を前記学習情報に記録する、
請求項５に記載のメモリシステム。
【請求項７】
前記第２リード動作において、前記コントローラは、前記第３温度と前記第４温度との差分を演算し、前記第６判定電圧を前記差分に応じて補正することによって前記第５判定電圧を決定する、
請求項６に記載のメモリシステム。
【請求項８】
前記第１値は、ゼロである、
請求項２に記載のメモリシステム。
【請求項９】
メモリセルトランジスタと前記メモリセルトランジスタのしきい値電圧を制御するアクセス回路とを備える不揮発性の第１メモリと、
温度センサと、
前記第１メモリに対し、第１リード動作を実行し、前記第１リード動作の後、第２リード動作を実行するコントローラと、
を備え、
前記第１リード動作は、前記温度センサを用いて温度を測定し、第１判定電圧を決定し、前記アクセス回路に前記しきい値電圧と前記第１判定電圧との比較に基づいて前記しきい値電圧に対応した第１データを取得させ、前記第１判定電圧と測定された前記温度である第１温度との関係を学習する動作であり、
前記第２リード動作は、前記温度センサを用いて温度を測定し、測定された前記温度である第２温度と前記第１温度との差分に応じて補正された前記第１判定電圧である第２判定電圧を前記第１リード動作での学習の結果と前記第２温度とに基づいて決定し、前記アクセス回路に前記しきい値電圧と前記第２判定電圧との比較に基づいて前記しきい値電圧に対応した第２データを取得させる動作である、
メモリシステム。
【請求項１０】
前記コントローラは、前記第２リード動作において、前記第２判定電圧と第１値とを比較し、前記第２判定電圧が前記第１値より低い場合、前記アクセス回路に前記メモリセルトランジスタのソース線の電位を所定値だけバイアスさせ、前記第２判定電圧が前記第１値より高い場合、前記アクセス回路に前記ソース線の電位をバイアスさせない、
請求項９に記載のメモリシステム。
【請求項１１】
前記第１データに含まれるエラーの検出および訂正を実行するＥＣＣ回路をさらに備え、
前記第１リード動作において、前記コントローラは、前記アクセス回路に第３判定電圧を使用させて前記第１データを取得させ、前記ＥＣＣ回路が前記訂正に失敗した場合、リトライリードを実行し、前記リトライリードは、前記アクセス回路に前記第３判定電圧と異なる第４判定電圧を使用させて前記第１データの取得をリトライさせる動作であり、
前記第１判定電圧は、前記ＥＣＣ回路が前記訂正に成功した場合の前記第３判定電圧または前記第４判定電圧である、
請求項９に記載のメモリシステム。
【請求項１２】
学習情報が格納される第２メモリをさらに備え、
前記第１リード動作において、前記コントローラは、前記第１温度と予め設定された第３温度との差分を演算し、前記第１判定電圧を前記差分に応じて補正し、補正された前記第１判定電圧である第５判定電圧を、前記学習の結果として前記学習情報に記録する、
請求項１１に記載のメモリシステム。
【請求項１３】
前記第２リード動作において、前記コントローラは、前記第２温度と前記第３温度との差分を演算し、前記第５判定電圧を前記差分に応じて補正することによって前記第２判定電圧を取得する、
請求項１２に記載のメモリシステム。
【請求項１４】
前記第１値は、ゼロである、
請求項１０に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムに関する。
【背景技術】
【０００２】
従来、メモリセルトランジスタを有するメモリシステムが広く知られている。そのようなメモリシステムにおいては、メモリセルのしきい値電圧と判定電圧との比較に基づいて、そのメモリセルトランジスタに保持されるデータが判定される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一つの実施形態は、リードデータに含まれるエラーの数を可及的に低減したメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００４】
一つの実施形態によれば、メモリシステムは、第１メモリと、温度センサと、コントローラとを備える。第１メモリは、メモリセルトランジスタとメモリセルトランジスタのしきい値電圧を制御するアクセス回路とを備える。コントローラは、第１メモリに対し、プログラム動作を実行し、プログラム動作の後、第１リード動作を実行する。プログラム動作は、温度センサを用いて温度を測定し、測定された温度である第１温度を記憶し、アクセス回路に前記しきい値電圧を第１データに対応した値に設定させる動作である。第１リード動作は、温度センサを用いて温度を測定し、測定された温度である第２温度と第１温度との差分を演算し、第１判定電圧を取得し、第１判定電圧を差分に応じて補正し、アクセス回路にしきい値電圧と補正された第１判定電圧である第２判定電圧との比較に基づいてしきい値電圧に対応した第２データを取得させる動作である。
【図面の簡単な説明】
【０００５】
【図１】図１は、第１の実施形態のメモリシステムの構成例を示す図である。
【図２】図２は、第１の実施形態のメモリシステムに保持される各種データを説明する図である。
【図３】図３は、ＮＡＮＤ型フラッシュメモリの構成例を示す図である。
【図４】図４は、第１の実施形態のブロックＢＬＫの回路構成を示す図である。
【図５】図５は、第１の実施形態のブロックＢＬＫの一部領域の断面図である。
【図６】図６は、第1の実施形態のメモリセルの取り得るしきい値電圧の一例を示す図である。
【図７】図７は、第１の実施形態のメモリセルの取り得るしきい値電圧の別の一例を示す図である。
【図８】図８は、実験により測定された、メモリセルのしきい値電圧を説明する図である。
【図９】図９は、第１の実施形態の補正アルゴリズムによって規定された対応関係を説明するための図である。
【図１０】図１０は、第１の実施形態の温度情報の一例を示す図である。
【図１１】図１１は、第１の実施形態のメモリシステムの、プログラム処理時の動作を説明するフローチャートである。
【図１２】図１２は、第１の実施形態のメモリシステムの、リード処理時の動作を説明するフローチャートである。
【図１３】図１３は、ネガティブセンシングモードを設定する第１の実施形態のコマンドシーケンスの一例を示す図である。
【図１４】図１４は、判定電圧を指定したリード処理を実行するための第１の実施形態のコマンドシーケンスの一例を示す図である。
【図１５】図１５は、通常モードを設定する第１の実施形態のコマンドシーケンスの一例を示す図である。
【図１６】図１６は、第２の実施形態の学習情報の構成の一例を示す図である。
【図１７】図１７は、第２の実施形態のメモリシステムに保持される各種データを説明する図である。
【図１８】図１８は、第２の実施形態のメモリシステムの第１リード動作を説明するフローチャートである。
【図１９】図１９は、第２の実施形態のメモリシステムの第２リード動作を説明するフローチャートである。
【図２０】図２０は、温度データを要求する第３の実施形態のコマンドシーケンスの一例を示す図である。
【発明を実施するための形態】
【０００６】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００７】
（第１の実施形態）
図１は、第１の実施形態のメモリシステムの構成例を示す図である。図１に示されるように、メモリシステム１は、ホスト機器３００と接続可能である。ホスト機器３００は、例えば、サーバ、パーソナルコンピュータ、またはモバイル型の情報処理装置などが該当する。メモリシステム１は、ホスト機器３００の外部記憶装置として機能する。ホスト機器３００は、メモリシステム１に対して要求を発行することができる。要求は、リード要求およびライト要求を含む。
【０００８】
メモリシステム１は、１以上のＮＡＮＤ型フラッシュメモリ１００、および１つのコントローラ２００を備える。ここでは、メモリシステム１は、１以上のＮＡＮＤ型フラッシュメモリ１００として、ＮＡＮＤ型フラッシュメモリ１００＿０、１００＿１を備える。なお、メモリシステム１に具備されるＮＡＮＤ型フラッシュメモリ１００は、２に限定されない。
【０００９】
各ＮＡＮＤ型フラッシュメモリ１００は、複数のメモリセルトランジスタを備え、データを不揮発に記憶することができる。ＮＡＮＤ型フラッシュメモリ１００は、ＮＡＮＤバス４００によってコントローラ２００と接続され、コントローラ２００からの命令に基づいて動作する。すなわち、各ＮＡＮＤ型フラッシュメモリ１００は、コントローラ２００と、例えば８ビットの入出力信号ＩＯ＜７：０＞の送受信を行う。入出力信号ＩＯ＜７：０＞は、例えばコマンド、アドレス、データである。また、ＮＡＮＤ型フラッシュメモリ１００は、コントローラ２００から制御信号を受信し、コントローラ２００へステータス信号を送信する。
【００１０】
制御信号は、チップイネーブル信号ＣＥｎ０およびＣＥｎ１、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、およびライトプロテクト信号ＷＰｎ等を含む。コントローラ２００は、信号ＷＥｎ、ＲＥｎ、ＣＬＥ、ＡＬＥ、およびＷＰｎを、ＮＡＮＤ型フラッシュメモリ１００＿０および１００＿１に送信する。コントローラ２００は、チップイネーブル信号ＣＥｎ０をＮＡＮＤ型フラッシュメモリ１００＿０に送信し、チップイネーブル信号ＣＥｎ１をＮＡＮＤ型フラッシュメモリ１００＿１に送信する。
【００１１】
チップイネーブル信号ＣＥｎ（ＣＥｎ０およびＣＥｎ１）は、対象となるＮＡＮＤ型フラッシュメモリ１００をイネーブル状態とするための信号である。ライトイネーブル信号ＷＥｎは、ＮＡＮＤ型フラッシュメモリ１００に入出力信号ＩＯ＜７：０＞を取り込むように指示する信号である。リードイネーブル信号ＲＥｎは、ＮＡＮＤ型フラッシュメモリ１００に入出力信号ＩＯ＜７：０＞を出力するように指示するための信号である。コマンドラッチイネーブル信号ＣＬＥは、入出力信号ＩＯ＜７：０＞がコマンドであることを示す信号である。アドレスラッチイネーブル信号ＡＬＥは、入出力信号ＩＯ＜７：０＞がアドレスであることを示す信号である。ライトプロテクト信号ＷＰｎは、ＮＡＮＤ型フラッシュメモリ１００にプログラム処理やイレース処理の実行の禁止を命令するための信号である。
【００１２】
ステータス信号は、ＮＡＮＤ型フラッシュメモリ１００の種々の状態を示し、レディ／ビジー信号ＲＢｎ（ＲＢｎ０およびＲＢｎ１）を含む。レディ／ビジー信号ＲＢｎは、ＮＡＮＤ型フラッシュメモリ１００がビジー状態であるか否か（コントローラ２００からコマンドを受信不可能な状態か可能な状態か）を示す信号である。レディ／ビジー信号ＲＢｎ０はＮＡＮＤ型フラッシュメモリ１００＿０から出力され、レディ／ビジー信号ＲＢｎ１はＮＡＮＤ型フラッシュメモリ１００＿１から出力される。コントローラ２００は、ステータス信号やレディ／ビジー信号ＲＢｎを受け取ることで、各ＮＡＮＤ型フラッシュメモリ１００の状態を知ることができる。
【００１３】
メモリシステム１は、さらに、１以上の温度センサ２１０として、温度センサ２１０＿０、２１０＿１を備える。各温度センサ２１０は、ＮＡＮＤ型フラッシュメモリ１００の温度を測定するために使用される。なお、温度センサ２１０＿０は、ＮＡＮＤ型フラッシュメモリ１００＿０の近傍に設けられており、ＮＡＮＤ型フラッシュメモリ１００＿０の周辺温度を検出する。また、温度センサ２１０＿１は、ＮＡＮＤ型フラッシュメモリ１００＿１の近傍に設けられており、ＮＡＮＤ型フラッシュメモリ１００＿１の周辺温度を検出することができる。以降、ＮＡＮＤ型フラッシュメモリ１００の温度とは、対応する温度センサ２１０によって検出された温度と定義する。なお、温度センサ２１０は、ＮＡＮＤ型フラッシュメモリ１００に内蔵されてもよい。
【００１４】
コントローラ２００は、ホスト機器３００からの要求に基づいて、ＮＡＮＤ型フラッシュメモリ１００に対してリード処理、プログラム処理、およびイレース処理等を命令する。
【００１５】
コントローラ２００は、ホストインターフェイス回路２０１、メモリ（ＲＡＭ）２０２、プロセッサ（ＣＰＵ）２０３、バッファメモリ２０４、ＮＡＮＤインターフェイス回路２０５、およびＥＣＣ（error  correction  code）回路２０６を備える。なお、コントローラ２００は、例えばＳｏＣ（System-On-a-Chip）として構成され得る。コントローラ２００は、複数のチップによって構成されてもよい。コントローラ２００は、ＣＰＵ２０３に代えて、ＦＰＧＡ（field-programmable  gate  array）やＡＳＩＣ（application  specific  integrated  circuit）を備えていてもよい。つまり、コントローラ２００は、ソフトウェア、ハードウェア、またはこれらの組み合わせによって構成され得る。
【００１６】
ホストインターフェイス回路２０１は、例えばＡＴＡ（Advanced  Technology  Attachment）規格、ＳＡＳ（Serial  Attached  SCSI）規格、またはＰＣＩ（Peripheral  Components  Interconnect）  Ｅｘｐｒｅｓｓ（登録商標）規格などに準拠したバスを介してホスト機器３００と接続され、コントローラ２００とホスト機器３００との通信を司る。
【００１７】
ＮＡＮＤインターフェイス回路２０５は、ＮＡＮＤバスを介して各ＮＡＮＤ型フラッシュメモリ１００と接続され、コントローラ２００とＮＡＮＤ型フラッシュメモリ１００との通信を司る。
【００１８】
ＣＰＵ２０３は、コントローラ２００の動作を制御する。
【００１９】
ＲＡＭ２０２は、ＣＰＵ２０３の作業領域として使用される。バッファメモリ２０４は、ＮＡＮＤ型フラッシュメモリ１００に送信されるデータ、およびＮＡＮＤ型フラッシュメモリ１００から送信されたデータを一時的に保持する。ＲＡＭ２０２およびバッファメモリ２０４は、例えばＤＲＡＭ（dynamic  random  access  memory）、ＳＲＡＭ（static  random  access  memory）、またはこれらの組み合わせなどによって構成され得る。なお、ＲＡＭ２０２およびバッファメモリ２０４を構成するメモリの種類は、これらに限定されない。
【００２０】
ＥＣＣ回路２０６は、誤り訂正符号を用いてデータの誤りを検出および訂正する。
【００２１】
図２は、第１の実施形態のメモリシステム１に保持される各種データを説明する図である。
【００２２】
ＮＡＮＤ型フラッシュメモリ１００には、ユーザデータ１４０およびシステムデータ１４１が格納される。ユーザデータ１４０は、ホスト機器３００から受信し、ＥＣＣ回路２０６によって誤り訂正符号化されたデータである。本明細書において、データは、少なくともユーザデータ１４０を指すこととする。
【００２３】
システムデータ１４１は、コントローラ２００の制御に要するデータである。システムデータ１４１は、ファームウェアプログラム１４２を含む。ファームウェアプログラム１４２は、ＣＰＵ２０３がコントローラ２００の動作の制御を実現するためのコンピュータプログラムである。例えば、ＣＰＵ２０３は、メモリシステム１の起動時にファームウェアプログラム１４２をＲＡＭ２０２にロードする。そして、ＣＰＵ２０３は、ＲＡＭ２０２にロードされたファームウェアプログラム１４２に従って動作することによって、コントローラ２００の動作の制御を実現する。
【００２４】
ＲＡＭ２０２には、判定電圧情報２２０、補正アルゴリズム２２１、および温度情報２２２が格納される。判定電圧情報２２０、補正アルゴリズム２２１および温度情報２２２の詳細は後述する。
【００２５】
なお、システムデータ１４１、判定電圧情報２２０、補正アルゴリズム２２１、および温度情報２２２の格納位置は、上記に限定されない。例えば、判定電圧情報２２０、補正アルゴリズム２２１、および温度情報２２２の一部または全部は、ＮＡＮＤ型フラッシュメモリ１００に格納されていてもよい。また、ＲＡＭ２０２およびＮＡＮＤ型フラッシュメモリ１００のほかに任意の種類のメモリがメモリシステム１に具備され、システムデータ１４１、判定電圧情報２２０、補正アルゴリズム２２１および温度情報２２２の一部または全部は、そのメモリに格納されてもよい。
【００２６】
図３は、ＮＡＮＤ型フラッシュメモリ１００の構成例を示す図である。図示するようにＮＡＮＤ型フラッシュメモリ１００は、メモリセルアレイ１１１およびアクセス回路１３０を備える。アクセス回路１３０は、ロウデコーダ１１２およびセンスアンプ１１３を備える。
【００２７】
メモリセルアレイ１１１は、それぞれが複数の不揮発性メモリセルトランジスタの集合である複数のブロックＢＬＫ（ＢＬＫ０、ＢＬＫ１、…）を備える。ブロックＢＬＫの各々は、それぞれがワード線およびビット線に関連付けられたメモリセルトランジスタの集合である複数のストリングユニットＳＵ（ＳＵ０、ＳＵ１、…）を備える。ストリングユニットＳＵの各々は、メモリセルトランジスタが直列接続された複数のＮＡＮＤストリング１１４を備える。なお、ストリングユニットＳＵ内のＮＡＮＤストリング１１４の数は任意である。メモリセルアレイ１１１の詳細については後述する。
【００２８】
ロウデコーダ１１２は、例えばプログラム処理およびリード処理の際、ブロックＢＬＫのアドレスおよびページのアドレスをデコードして、対象となるページに対応するワード線を選択する。そしてロウデコーダ１１２は、選択ワード線および非選択ワード線に適切な電圧を印加する。
【００２９】
センスアンプ１１３は、複数のセンスアンプユニット（不図示）を備える。各センスアンプユニットは、ビット線に対応して設けられている。各センスアンプユニットは、データの読み出し時には、メモリセルトランジスタからビット線に読み出されたデータをセンスする。また、各センスアンプユニットは、データの書き込み時には、書き込みデータをメモリセルトランジスタに転送する。また各センスアンプユニットは、それぞれデータを保持するため、複数のラッチ回路（不図示）を含む。
【００３０】
アクセス回路１３０は、シーケンサ１２１、電圧発生回路１２２、およびドライバ１２３をさらに備える。
【００３１】
シーケンサ１２１は、ＮＡＮＤ型フラッシュメモリ１００全体の動作を制御する。
【００３２】
電圧発生回路１２２は、電源電圧ＶＤＤを昇圧または降圧することにより、データのプログラム、リード、およびイレースに必要な電圧を発生させ、ドライバ１２３に供給する。
【００３３】
ドライバ１２３は、電圧発生回路１２２が発生させた電圧を、ロウデコーダ１１２、センスアンプ１１３、ソース線、およびウェル等に供給する。
【００３４】
次に、メモリセルアレイ１１１が備えるブロックＢＬＫについて説明する。
【００３５】
図４は、第１の実施形態のブロックＢＬＫの回路構成を示す図である。なお、各ブロックＢＬＫは、同一の構成を有している。ブロックＢＬＫは、例えば４つのストリングユニットＳＵ０〜ＳＵ３を有する。各ストリングユニットＳＵは、複数のＮＡＮＤストリング１１４を含む。
【００３６】
ＮＡＮＤストリング１１４の各々は、例えば１４個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ１３）および選択トランジスタＳＴ１、ＳＴ２を含んでいる。メモリセルトランジスタＭＴは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして１４個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ１３）は、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に直列接続されている。なお、メモリセルトランジスタＭＴは、電荷蓄積層に絶縁膜を用いたＭＯＮＯＳ型であってもよいし、電荷蓄積層に導電膜を用いたＦＧ型であってもよい。さらに、ＮＡＮＤストリング１１４内のメモリセルトランジスタＭＴの個数は１４個に限定されない。
【００３７】
ストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ１のゲートは、それぞれ選択ゲート線ＳＧＤ０〜ＳＧＤ３に接続される。これに対してストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ２のゲートは、例えば選択ゲート線ＳＧＳに共通接続される。ストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ２のゲートは、ストリングユニットＳＵ毎に異なる選択ゲート線ＳＧＳ０〜ＳＧＳ３に接続されてもよい。同一のブロックＢＬＫ内にあるメモリセルトランジスタＭＴ０〜ＭＴ１３の制御ゲートは、それぞれワード線ＷＬ０〜ＷＬ１３に共通接続される。
【００３８】
ストリングユニットＳＵ内にある各ＮＡＮＤストリング１１４の選択トランジスタＳＴ１のドレインは、それぞれ異なるビット線ＢＬ（ＢＬ０〜ＢＬ（Ｌ−１）、但しＬは２以上の自然数）に接続される。また、ビット線ＢＬは、複数のブロックＢＬＫ間で各ストリングユニットＳＵ内にある１つのＮＡＮＤストリング１１４を共通に接続する。更に、各選択トランジスタＳＴ２のソースは、ソース線ＳＬに共通に接続されている。
【００３９】
つまりストリングユニットＳＵは、異なるビット線ＢＬに接続され、且つ同一の選択ゲート線ＳＧＤに接続されたＮＡＮＤストリング１１４の集合である。またブロックＢＬＫは、ワード線ＷＬを共通にする複数のストリングユニットＳＵの集合である。そしてメモリセルアレイ１１１は、ビット線ＢＬを共通にする複数のブロックＢＬＫの集合である。
【００４０】
データのプログラムおよびリードは、１つのストリングユニットＳＵにおける１つのワード線ＷＬに接続されたメモリセルトランジスタＭＴに対して、一括して行われる。以下、データのプログラムおよびリードの際、一括して選択されるメモリセルトランジスタＭＴの群を「メモリセルグループＭＣＧ」と呼ぶ。そして、１つのメモリセルグループＭＣＧにプログラムされる、あるいはリードされる１ビットのデータの集まりを「ページ」と呼ぶ。
【００４１】
データのイレースは、ブロックＢＬＫ単位、またはブロックＢＬＫよりも小さい単位で行うことができる。イレース方法に関しては、例えば“NONVOLATILE  SEMICONDUCTOR  MEMORY  DEVICE”という２０１１年９月１８日に出願された米国特許出願１３／２３５，３８９号に記載されている。また、イレース方法に関しては、“NON-VOLATILE  SEMICONDUCTOR  STORAGE  DEVICE”という２０１０年１月２７日に出願された米国特許出願１２／６９４，６９０号に記載されている。イレース方法に関しては、更に、“NONVOLATILE  SEMICONDUCTOR  MEMORY  DEVICE  AND  DATA  ERASE  METHOD  THEREOF”という２０１２年５月３０日に出願された米国特許出願１３／４８３，６１０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００４２】
図５は、第１の実施形態のブロックＢＬＫの一部領域の断面図である。図示するように、ｐ型ウェル領域１０上に、複数のＮＡＮＤストリング１１４が形成されている。すなわち、ウェル領域１０上には、選択ゲート線ＳＧＳとして機能する例えば４層の配線層１１、ワード線ＷＬ０〜ＷＬ１３として機能する１４層の配線層１２、および選択ゲート線ＳＧＤとして機能する例えば４層の配線層１３が、順次積層されている。積層された配線層間には、図示せぬ絶縁膜が形成されている。
【００４３】
そして、これらの配線層１３、１２、１１を貫通してウェル領域１０に達するピラー状の導電体１４が形成されている。導電体１４の側面には、ゲート絶縁膜１５、電荷蓄積層（絶縁膜または導電膜）１６、およびブロック絶縁膜１７が順次形成され、これらによってメモリセルトランジスタＭＴ、並びに選択トランジスタＳＴ１およびＳＴ２が形成されている。導電体１４は、ＮＡＮＤストリング１１４の電流経路として機能し、各トランジスタのチャネルが形成される領域となる。そして導電体１４の上端は、ビット線ＢＬとして機能する金属配線層１８に接続される。
【００４４】
ウェル領域１０の表面領域内には、ｎ＋型不純物拡散層１９が形成されている。拡散層１９上にはコンタクトプラグ２０が形成され、コンタクトプラグ２０は、ソース線ＳＬとして機能する金属配線層２１に接続される。更に、ウェル領域１０の表面領域内には、ｐ＋型不純物拡散層２２が形成されている。拡散層２２上にはコンタクトプラグ２３が形成され、コンタクトプラグ２３は、ウェル配線ＣＰＷＥＬＬとして機能する金属配線層２４に接続される。ウェル配線ＣＰＷＥＬＬは、ウェル領域１０を介して導電体１４に電位を印加するための配線である。
【００４５】
以上の構成が、半導体基板に平行な第２方向Ｄ２に複数配列されており、第２方向Ｄ２に並ぶ複数のＮＡＮＤストリング１１４の集合によってストリングユニットＳＵが形成される。
【００４６】
なお、メモリセルアレイ１１１は、上記の構成以外の構成を有し得る。すなわちメモリセルアレイ１１１の構成については、例えば、“三次元積層型不揮発性半導体メモリ(THREE  DIMENSIONAL  STACKED  NONVOLATILE  SEMICONDUCTOR  MEMORY)”という２００９年３月１９日に出願された米国特許出願１２／４０７，４０３号に記載されている。また、メモリセルアレイ１１１の構成については、“三次元積層型不揮発性半導体メモリ(THREE  DIMENSIONAL  STACKED  NONVOLATILE  SEMICONDUCTOR  MEMORY)”という２００９年３月１８日に出願された米国特許出願１２／４０６，５２４号、“不揮発性半導体記憶装置およびその製造方法(NON-VOLATILE  SEMICONDUCTOR  STORAGE  DEVICE  AND  METHOD  OF  MANUFACTURING  THE  SAME)”という２００８年１２月９日に出願された米国特許出願１２／６７９，９９１号、“半導体メモリおよびその製造方法(SEMICONDUCTOR  MEMORY  AND  METHOD  FOR  MANUFACTURING  SAME)”という２００９年３月２３日に出願された米国特許出願１２／５３２，０３０号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００４７】
以降では、メモリセルトランジスタＭＴを、単に、メモリセルと表記する。
【００４８】
図６は、第１の実施形態のメモリセルの取り得るしきい値電圧の一例を示す図である。縦軸は、メモリセルの数を示しており、横軸は、しきい値電圧を示している。以下、本実施形態では、メモリセルが８値のデータを保持可能な場合について説明するが、保持可能なデータは８値に限定されない。本実施形態においては、メモリセルが２値以上のデータ（１ビット以上のデータ）を保持可能であればよい。
【００４９】
図６に示されるように、しきい値電圧の取り得る範囲は、８つの範囲に区分される。この８つの区分を、しきい値電圧が低いほうから順に、“Ｅｒ”ステート、“Ａ”ステート、“Ｂ”ステート、“Ｃ”ステート、“Ｄ”ステート、“Ｅ”ステート、“Ｆ”ステート、および“Ｇ”ステートと呼ぶことにする。各メモリセルのしきい値電圧は、アクセス回路１３０によって、“Ｅｒ”ステート、“Ａ”ステート、“Ｂ”ステート、“Ｃ”ステート、“Ｄ”ステート、“Ｅ”ステート、“Ｆ”ステート、および“Ｇ”ステート、の何れかに属するように、制御される。その結果、しきい値電圧を横軸としてメモリセルの数をプロットした場合、メモリセルは、理想的には、本図に示されるように、それぞれ異なるステートに属する互いに重ならない８つの分布を形成する。
【００５０】
８つのステートは、３ビットのデータに対応する。本図の例によれば、“Ｅｒ”ステートは“１１１”のデータに対応し、“Ａ”ステートは“１１０”のデータに対応し、“Ｂ”ステートは“１００”のデータに対応し、“Ｃ”ステートは“０００”のデータに対応し、“Ｄ”ステートは“０１０”のデータに対応し、“Ｅ”ステートは“０１１”のデータに対応し、“Ｆ”ステートは“００１”のデータに対応し、“Ｇ”ステートは“１０１”のデータに対応する。なお、本図では、ＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を左端に配置し、ＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を右端に配置した表記方法を採用している。
【００５１】
このように、各メモリセルは、そのしきい値電圧が属するステートに応じたデータを保持することができる。なお、図６に示す対応関係は、データコーディングの一例である。データコーディングは本図の例に限定されない。
【００５２】
なお、１つのメモリセルに保持される３ビットのデータのうち、ＬＳＢをロアービット、ＭＳＢをアッパービット、ＬＳＢとＭＳＢとの間のビットをミドルビット、と表記する。同一のメモリセルグループＭＣＧに属する全てのメモリセルトランジスタＭＴのロアービットの集合を、ロアーページと表記する。同一のメモリセルグループＭＣＧに属する全てのメモリセルトランジスタＭＴのミドルビットの集合を、ミドルページと表記する。同一のメモリセルグループＭＣＧに属する全てのメモリセルトランジスタＭＴのアッパービットの集合を、アッパーページと表記する。
【００５３】
しきい値電圧は、イレース処理によって“Ｅｒ”ステートに低下せしめられる。また、しきい値電圧は、プログラム処理によって、“Ｅｒ”ステートに維持されるか、または“Ａ”ステート、“Ｂ”ステート、“Ｃ”ステート、“Ｄ”ステート、“Ｅ”ステート、“Ｆ”ステート、および“Ｇ”ステート、の何れかに至るまで、上昇せしめられる。
【００５４】
具体的には、プログラム処理においては、シーケンサ１２１は、カラムアドレスに対応したビット線ＢＬを選択する。ドライバ１２３は、選択されたビット線の電位をゼロとする。ロウデコーダ１１２は、ロウアドレスに対応したワード線ＷＬを選択し、選択されたワード線ＷＬに、プログラミングパルスを印加する。すると、選択されたビット線ＢＬおよび選択されたワード線ＷＬとの交点に位置するメモリセルの電荷蓄積層１６に電子が注入され、その結果、メモリセルのしきい値電圧が上昇する。センスアンプ１１３は、所定のタイミングでデータのリードを行うことで、メモリセルのしきい値電圧がライトデータのデータに対応した目標のステートに到達したか否かを確認する（ベリファイリード）。センスアンプ１１３は、メモリセルのしきい値電圧が目標のステートに到達するまで、ロウデコーダ１１２にプログラムパルスの印加を継続させる。
【００５５】
以降、プログラム処理によってあるステートにしきい値電圧が設定されたメモリセルを、そのステートに属するメモリセル、と表記することがある。
【００５６】
隣接する２つのステート間には、判定電圧が設定される。例えば、図６に例示されるように、“Ｅｒ”ステートと“Ａ”ステートとの間に判定電圧Ｖｒａが設定され、“Ａ”ステートと“Ｂ”ステートとの間に判定電圧Ｖｒｂが設定され、“Ｂ”ステートと“Ｃ”ステートとの間に判定電圧Ｖｒｃが設定され、“Ｃ”ステートと“Ｄ”ステートとの間に判定電圧Ｖｒｄが設定され、“Ｄ”ステートと“Ｅ”ステートとの間に判定電圧Ｖｒｅが設定され、“Ｅ”ステートと“Ｆ”ステートとの間に判定電圧Ｖｒｆが設定され、“Ｆ”ステートと“Ｇ”ステートとの間に判定電圧Ｖｒｇが設定される。リード処理においては、複数種類の判定電圧によって、メモリセルが属するステートに対応付けられたデータが判定される。
【００５７】
例えば図６に示されたデータコーディングが適用される場合を考える。メモリセルが“Ｅｒ”ステート、“Ｅ”ステート、“Ｆ”ステート、および“Ｇ”ステート、の何れかに属する場合、そのメモリセルが保持するロアービットの値は“１”である。メモリセルが“Ａ”ステート、“Ｂ”ステート、“Ｃ”ステート、および“Ｄ”ステートの何れかに属する場合、そのメモリセルが保持するロアービットの値は“０”である。よって、ＶｒａおよびＶｒｅの２種類の判定電圧を使用することによって、ロアーページのデータが判定できる。
【００５８】
メモリセルが“Ｅｒ”ステート、“Ａ”ステート、“Ｄ”ステート、および“Ｅ”ステートの何れかに属する場合、そのメモリセルが保持するミドルビットの値は“１”である。メモリセルが“Ｂ”ステート、“Ｃ”ステート、“Ｆ”ステート、および“Ｇ”ステートの何れかに属する場合、そのメモリセルが保持するミドルビットの値は“０”である。よって、Ｖｒｂ、Ｖｒｄ、およびＶｒｆの３種類の判定電圧を使用することによって、ミドルページのデータが判定できる。
【００５９】
メモリセルが“Ｅｒ”ステート、“Ａ”ステート、“Ｂ”ステート、および“Ｇ”ステートの何れかに属する場合、そのメモリセルが保持するアッパービットの値は“１”である。メモリセルが“Ｃ”ステート、“Ｄ”ステート、“Ｅ”ステート、および“Ｆ”ステートの何れかに属する場合、そのメモリセルが保持するアッパービットの値は“０”である。よって、ＶｒｃおよびＶｒｇの２種類の判定電圧を使用することによって、アッパーページのデータが判定できる。
【００６０】
このように、データの判定に使用される判定電圧の種類は、リード対象のページの種類に応じて異なる。ロウデコーダ１１２は、リード処理では、リード対象のページの種類に応じた複数種類の判定電圧を使用する。
【００６１】
さらに具体的に説明すると、リード処理においては、センスアンプ１１３は、ビット線ＢＬに電源電圧ＶＤＤをプリチャージする。ロウデコーダ１１２は、ロウアドレスに対応したワード線ＷＬを選択する。ロウデコーダ１１２は、非選択のワード線ＷＬに属するメモリセルを導通状態にし、選択されたワード線ＷＬに、リード対象のページの種類に対応する複数種類の判定電圧を順次印加する。センスアンプ１１３は、プリチャージにより蓄えられた電荷のソース線ＳＬへの流出を引き起こした判定電圧を特定することによって、対象のメモリセルが属するステートに対応するデータを判定する。
【００６２】
なお、実施形態のＮＡＮＤ型フラッシュメモリ１００は、通常モードおよびネガティブセンシングモードを含む複数のモードでリード処理を実行することが可能である。
【００６３】
通常モードでは、ドライバ１２３は、ソース線ＳＬの電位をゼロとする。そして、ロウデコーダ１１２は、非選択のワード線ＷＬに転送電位Ｖｒｅａｄを印加することによって、非選択のワード線ＷＬを導通状態にする。これにより、通常モードでは、選択されたワード線ＷＬに判定電圧をそのまま印加することが可能である。つまり、ドライバ１２３が負の電圧を生成することができない場合においては、通常モードでは、負の値の判定電圧を使用することができない。
【００６４】
これに対し、ネガティブセンシングモードでは、ドライバ１２３は、ソース線ＳＬの電位を正側にバイアスする。つまり、ドライバ１２３は、ソース線ＳＬに正の値の電圧（Ｖｂｉａｓと表記する）を印加する。これにより、ワード線ＷＬとソース線ＳＬとの電位差Ｖｇｓは、Ｖｂｉａｓだけ負側にバイアスされる。従って、ネガティブセンシングモードでは、選択されたワード線ＷＬに対し、見かけ上、負の値の判定電圧を使用することが可能となる。ネガティブセンシングモードでは、ロウデコーダ１１２は、非選択のワード線ＷＬを導通状態にする際には、非選択のワード線ＷＬに印加する転送電位ＶｒｅａｄをＶｂｉａｓだけ正側にバイアスする。
【００６５】
なお、バイアス電圧Ｖｂｉａｓは、判定電圧の種類毎に異なっていてもよいし、複数種類の判定電圧で共通してもよい。
【００６６】
図６では、メモリセルが、互いに重ならない８つの分布を形成する場合を説明した。しかしながら、メモリセルのしきい値電圧は、使用履歴に応じて変化し得る。使用履歴は、当該メモリセルへのアクセス（プログラム処理、リード処理、およびイレース処理）、当該メモリセルへのプログラム完了時からの経過時間、当該メモリセルの近隣のメモリセルへのアクセス、当該メモリセルに対するイレース処理やプログラム処理の実行時の温度、当該メモリセルに対してプログラム処理されてからリード処理がされるまでの間の温度、などを含む。メモリセルのしきい値電圧が変化し得るので、現実的には、リード処理時において、ステート毎の分布が互いに重なり合った状態になっている場合がある。
【００６７】
図７は、第１の実施形態のメモリセルの取り得るしきい値電圧の別の一例を示す図である。ここでは、説明を簡単にするために、“Ａ”ステートおよび“Ｂ”ステートのいずれかに属するメモリセルのしきい値電圧の分布を図示している。実線は、“Ａ”ステートおよび“Ｂ”ステートのいずれかに属するメモリセルのしきい値電圧の分布を示している。破線は、“Ａ”ステートに属するメモリセルのしきい値電圧の分布を示し、一点鎖線は、“Ｂ”ステートに属するメモリセルのしきい値電圧の分布を示している。本図の例では、“Ａ”ステートに属するメモリセルのしきい値電圧の分布の裾野と“Ｂ”ステートに属するメモリセルのしきい値電圧の分布の裾野とが重なり合っている。言い換えると、“Ａ”ステートに属するメモリセルのしきい値電圧の最大値が判定電圧Ｖｒｂを超えており、かつ、“Ｂ”ステートに属するメモリセルのしきい値電圧の最小値が判定電圧Ｖｒｂを下回っている。“Ａ”ステートに属し、かつ、しきい値電圧が判定電圧Ｖｒｂよりも高いメモリセルがリードされた場合、そのメモリセルは“Ｂ”ステートに属するとして認識される。即ち、“１１０”としてプログラムされたデータが“１００”としてリードされる。“Ｂ”ステートに属し、かつ、しきい値電圧が判定電圧Ｖｒｂよりも低いメモリセルがリードされた場合、そのメモリセルは“Ａ”ステートに属するとして認識される。即ち、“１００”としてプログラムされたデータが“１１０”としてリードされる。
【００６８】
このように、リードされたデータは、しきい値電圧の変化によって、プログラムされた時点での値から変化した場合がある。変化したデータは、ＥＣＣ回路２０６によって、エラービットとして検出され訂正され得る。しかしながら、ＥＣＣ回路２０６によって訂正可能なエラービットの数には、限界がある。リードデータに含まれるエラービットの数（以降、エラー数）が限界を超えないように、コントローラ２００は、各判定電圧をシフトさせることが可能に構成される。
【００６９】
例えば、隣接する２つのステートの分布間においてメモリセルの合計数が極小となる電圧値を判定電圧として使用すると、リードデータに含まれるエラー数を少なくすることができる。図７に示される分布の場合、Ｖｂが、メモリセルの合計数が極小となる電圧値に該当する。即ち、Ｖｂを判定電圧として使用することによって、“１１０”としてプログラムされたデータが“１００”としてリードされたり、“１００”としてプログラムされたデータが“１１０”としてリードされたりして発生するエラービットの数を低減することができる。
【００７０】
以降、隣接する２つのステートの分布間においてメモリセルの合計数が極小となる電圧値を、最適判定電圧、と表記する。
【００７１】
図８は、メモリセルのしきい値電圧の一例を説明する図である。この図では、横軸はしきい値電圧を示している。縦軸はメモリセルの数を示している。
【００７２】
図８において、実線は、摂氏５０度でデータがプログラムされ、その後、摂氏５０度でリード処理を実行したときに測定された（条件１）、メモリセルのしきい値電圧の分布を示している。前述の通り、各ステート間のエラービット数が極小となる電圧値が最適判定電圧となるため、条件１のケースでは、電圧値Ｖａ１、Ｖｂ１、Ｖｃ１、Ｖｄ１、Ｖｅ１、Ｖｆ１、およびＶｇ１が最適判定電圧に該当する。なお、電圧値Ｖａ１、Ｖｂ１、Ｖｃ１、Ｖｄ１、Ｖｅ１、Ｖｆ１、およびＶｇ１は全てゼロ以上の値である。
【００７３】
図８において、点線は、摂氏７０度でデータがプログラムされ、その後、摂氏０度でリード処理を実行したときに測定された（条件２）、メモリセルのしきい値電圧の分布を示している。このケースでは、条件１と比較すると、メモリセルのしきい値電圧の分布が正側にシフトしている。これに伴って、それぞれの最適判定電圧は条件１のケースからそれぞれ正側にシフトしている。即ち、条件２のケースでは、Ｖａ２（＞Ｖａ１）、Ｖｂ２（＞Ｖｂ１）、Ｖｃ２（＞Ｖｃ１）、Ｖｄ２（＞Ｖｄ１）、Ｖｅ２（＞Ｖｅ１）、Ｖｆ２（＞Ｖｆ１）、およびＶｇ２（＞Ｖｇ１）が最適判定電圧に該当する。なお、電圧値Ｖａ２、Ｖｂ２、Ｖｃ２、Ｖｄ２、Ｖｅ２、Ｖｆ２、およびＶｇ２は全て正の値である。
【００７４】
図８において、一点鎖線は、摂氏０度でデータがプログラムされ、その後、摂氏７０度でリード処理を実行したときに測定された（条件３）、メモリセルのしきい値電圧の分布を示している。このケースでは、条件１のケースと比較すると、メモリセルのしきい値電圧の分布が負側にシフトしている。これに伴って、それぞれの最適判定電圧は条件１のケースからそれぞれ負側にシフトしている。それぞれの最適判定電圧が負側にシフトしたことによって、“Ｅｒ”ステートと“Ａ”ステートとの間のメモリセルの合計数が極小となる電圧値（Ｖａ３とする）は、負の値になっていると推測される。条件３のケースでは、負の値であるＶａ３（＜Ｖａ１）と、Ｖｂ３（＜Ｖｂ１）、Ｖｃ３（＜Ｖｃ１）、Ｖｄ３（＜Ｖｄ１）、Ｖｅ３（＜Ｖｅ１）、Ｖｆ３（＜Ｖｆ１）、およびＶｇ３（＜Ｖｇ１）とが最適判定電圧に該当する。なお、電圧値Ｖｂ３、Ｖｃ３、Ｖｄ３、Ｖｅ３、Ｖｆ３、およびＶｇ３は全て正の値である。
【００７５】
このように、メモリセルのしきい値電圧は、プログラム処理時とリード処理時との温度差に応じてシフトする。これは、メモリセルのしきい値電圧が温度に応じて変化することに起因すると考えられる。プログラム処理のベリファイリード時およびリード処理時において、しきい値電圧がともに温度に依存して増減するので、プログラム処理時とリード処理時とで温度差が発生した場合、リード処理時のしきい値電圧は、プログラム処理時のしきい値電圧を基準とすると、その温度差に応じた量だけ増減する。
【００７６】
温度に応じたしきい値電圧の増減を、ＮＡＮＤ型フラッシュメモリ１００において補償することが考えられる。例えば、プログラム処理時の温度に依らず、プログラム完了時のメモリセルのプログラム状態を一定としたり、リード処理時の温度に依らず、メモリセルのプログラム状態を読み出すことは可能である。しかしながら、ＮＡＮＤ型フラッシュメモリ１００の内部で補償可能な温度差には限界がある。さらに、ＮＡＮＤ型フラッシュメモリ１００の内部で温度に応じてしきい値電圧を補償しようとする場合、ＮＡＮＤ型フラッシュメモリ１００は、リード処理の際に、プログラム処理時の温度を取得するための別のリード処理を自律的に行う必要があり、リード性能が大幅に低下する。
【００７７】
したがって、ある程度以上の温度差を補償する場合、コントローラ２００によるアシストが必要である。
【００７８】
実施形態では、プログラム処理時とリード処理時とで温度差が発生した場合であってもリードデータに含まれるエラービットの数をできるだけ少なくするために、コントローラ２００は、プログラム処理時とリード処理時との温度差に応じて判定電圧を補正する。
【００７９】
具体的には、ＣＰＵ２０３は、プログラム処理時にＮＡＮＤ型フラッシュメモリ１００の温度を温度センサ２１０を用いて測定する。ＣＰＵ２０３は、取得した測定値（温度データ）をプログラム処理時の温度（Ｔｐと表記する）として温度情報２２２に記録する。
【００８０】
リード処理の実行時には、そのリード処理をＮＡＮＤ型フラッシュメモリ１００に命令する前に、ＣＰＵ２０３は、温度センサ２１０を用いてＮＡＮＤ型フラッシュメモリ１００の温度を測定する。即ち、ＣＰＵ２０３は、リード処理時の温度（Ｔｒと表記する）を取得する。さらに、ＣＰＵ２０３は、プログラム処理時の温度Ｔｐを温度情報２２２から取得する。そして、ＣＰＵ２０３は、リード処理時の温度Ｔｒとプログラム処理時の温度Ｔｐとの差分（以降、一例としてＴｒ−Ｔｐ）に基づいて、判定電圧の補正量Ｖｃｏｒを決定する。
【００８１】
なお、ＣＰＵ２０３は、差分（Ｔｒ−Ｔｐ）に対応する補正量Ｖｃｏｒを、補正アルゴリズム２２１から取得する。補正アルゴリズム２２１は、温度差Ｔｄｉｆとメモリセルのしきい値電圧の変化Ｖｄｉｆとの間の対応関係を規定する情報である。
【００８２】
なお、温度測定のタイミングはこれに限定されない。ＣＰＵ２０３は、温度を定期的または非定期的に測定して各測定値を例えばＲＡＭ２０２に格納しておき、ＣＰＵ２０３は、プログラム処理の間近に格納された測定値をＴｐとして取得し、リード処理の間近に格納された測定値をＴｒとして取得してもよい。
【００８３】
図９は、第１の実施形態の補正アルゴリズム２２１によって規定された対応関係を説明するための図である。本図において、横軸は、温度差Ｔｄｉｆを示し、縦軸はしきい値電圧の変化Ｖｄｉｆを示す。本図の例によれば、温度差Ｔｄｉｆとしきい値電圧の変化Ｖｄｉｆとは負の相関関係を有する。
【００８４】
ＣＰＵ２０３は、温度差Ｔｄｉｆが（Ｔｒ−Ｔｐ）である場合のしきい値電圧の変化Ｖｄｉｆの値を補正量Ｖｃｏｒとして決定する。そして、ＣＰＵ２０３は、補正前の判定電圧に補正量Ｖｃｏｒを加算することによって補正後の判定電圧を決定する。なお、補正前の判定電圧に補正量Ｖｃｏｒが加算されるか減算されるかは、温度差Ｔｄｉｆやしきい値電圧の変化Ｖｄｉｆの定義に応じて変更される。
【００８５】
なお、補正量Ｖｃｏｒを決定するための補正アルゴリズム２２１は、判定電圧の種類毎に個別に用意されていてもよいし、全ての種類の判定電圧に対し共通に使用されてもよい。
【００８６】
ＣＰＵ２０３は、リード対象のページの種類に応じた複数種類の判定電圧のそれぞれを補正する。補正後、複数種類の判定電圧が負の値を含む場合、ＣＰＵ２０３は、ＮＡＮＤ型フラッシュメモリ１００に、ネガティブセンシングモードを設定する。複数種類の判定電圧が負の値を含まない場合、ＣＰＵ２０３は、ＮＡＮＤ型フラッシュメモリ１００に、通常モードで動作させる。
【００８７】
なお、温度情報２２２には、任意の単位領域毎に温度Ｔｐが記録され得る。単位領域は、決まったサイズを有する記憶領域であり、例えば、ＮＡＮＤ型フラッシュメモリ１００、ブロックＢＬＫ、ストリングユニットＳＵ、ワード線ＷＬ、または複数のワード線ＷＬのグループである。ＮＡＮＤ型フラッシュメモリ１００が多段で構成される場合は、該ＮＡＮＤ型フラッシュメモリ１００のチップを単位領域とすることも可能である。多段とは、複数のＮＡＮＤ型フラッシュメモリ１００のチップを積層した構造をいう。ここでは一例として、図１０に例示されるように、温度情報２２２には、ブロックＢＬＫ毎に温度Ｔｐが記録されることとする。
【００８８】
なお、温度情報２２２は、電源断時までにＮＡＮＤ型フラッシュメモリ１００に保存され、起動時にＲＡＭ２０２にロードされてもよい。
【００８９】
また、温度Ｔｐの測定のタイミングは、プログラム処理時の温度からの変化量が十分に小さい限り、プログラム処理の実行タイミングと厳密に一致していなくてもよい。ここでは、プログラム処理時の温度Ｔｐをプログラム処理の単位であるページよりも大きいブロック単位で記録することとしている。よって、一例として、１つのブロックＢＬＫに対していっぱいまでデータがプログラムされたタイミングでそのブロックＢＬＫにかかる温度Ｔｐが測定されることとする。ブロックＢＬＫがいっぱいまでデータがプログラムされるとは、ブロックＢＬＫに空き領域が無くなるまでデータがプログラムされることである。なお、ブロック単位で温度Ｔｐを取得する方法やタイミングはこれに限定されない。
【００９０】
また、補正前の判定電圧は、任意の方法で取得され得る。ここでは一例として、ＣＰＵ２０３は、補正前の判定電圧を、判定電圧情報２２０に基づいて決定することができる。判定電圧情報２２０は、全ての種類の判定電圧が決定できるように構成されている。判定電圧情報２２０には、補正前の判定電圧が記録されていてもよいし、補正前の判定電圧がある基準値からのシフト量として記録されていてもよい。ＣＰＵ２０３は、例えば、補正前の判定電圧から補正量Ｖｃｏｒを加算することによって、補正後の判定電圧を取得する。
【００９１】
なお、判定電圧情報２２０は、任意のタイミングで更新され得る。例えば、判定電圧情報２２０は、使用履歴に応じて更新されてもよい。また、判定電圧情報２２０は、補正前の判定電圧が単位領域毎に個別に取得できるように構成されてもよい。単位領域は、温度情報２２２の場合と同様、任意に設定され得る。
【００９２】
次に、第１の実施形態のメモリシステム１の動作を説明する。
【００９３】
図１１は、第１の実施形態のメモリシステム１のプログラム動作を説明するフローチャートである。
【００９４】
ＣＰＵ２０３は、１つのブロックＢＬＫがいっぱいになるまでデータをプログラムすると（Ｓ１０１）、当該ブロックＢＬＫを備えるＮＡＮＤ型フラッシュメモリ１００の温度Ｔｐを測定する（Ｓ１０２）。そして、ＣＰＵ２０３は、測定された温度ＴｐをそのブロックＢＬＫに関連付けて温度情報２２２に記録する（Ｓ１０３）。Ｓ１０３の処理の後、プログラム処理時の動作が完了する。
【００９５】
図１２は、第１の実施形態のメモリシステム１のリード動作を説明するフローチャートである。
【００９６】
ＣＰＵ２０３は、１つのブロックＢＬＫに対してリード処理を実行する場合、まず、当該ブロックＢＬＫを含むＮＡＮＤ型フラッシュメモリ１００の温度Ｔｒを測定する（Ｓ２０１）。そして、ＣＰＵ２０３は、温度情報２２２に該ブロックＢＬＫに関連付けて記録された温度Ｔｐと、Ｓ２０１の処理によって測定された温度Ｔｒと、の温度差（Ｔｒ−Ｔｐ）を演算する（Ｓ２０２）。
【００９７】
続いて、ＣＰＵ２０３は、判定電圧情報２２０から、判定電圧を取得する（Ｓ２０３）。そして、ＣＰＵ２０３は、Ｓ２０２の処理によって演算された温度差（Ｔｒ−Ｔｐ）と補正アルゴリズム２２１とに基づいて、補正量Ｖｃｏｒを取得する（Ｓ２０４）。そして、ＣＰＵ２０３は、Ｓ２０３の処理によって取得された判定電圧を、Ｓ２０４の処理によって取得された補正量Ｖｃｏｒを用いて補正する（Ｓ２０５）。
【００９８】
なお、ＣＰＵ２０３は、Ｓ２０３〜Ｓ２０５の処理を、リード対象のページに対応する複数種類の判定電圧のそれぞれに対して実行する。
【００９９】
ＣＰＵ２０３は、複数種類の判定電圧のうちに、負の値の判定電圧が存在するか否かを判定する（Ｓ２０６）。負の値の判定電圧が存在する場合（Ｓ２０６、Ｙｅｓ）、ＣＰＵ２０３は、ネガティブセンシングモードを設定し（Ｓ２０７）、判定電圧を指定したリード処理をＮＡＮＤ型ブラッシュメモリ１００に命令する（Ｓ２０８）。
【０１００】
Ｓ２０７では、例えば図１３に例示されるようなコマンドがコントローラ２００からＮＡＮＤ型フラッシュメモリ１００に送られる。本図において、ＶＳＲＣは、ソース線ＳＬに印加されるバイアスＶｂｉａｓの値が設定される。そして、ＥＦｈ、ααｈ、およびＶＳＲＣの組み合わせによって、ネガティブセンシングモードでの動作が指示される。
【０１０１】
例えば、使用したい実効的な判定電圧をＶｎｅｔとし、設定するワードライン電位をＶＣＧとし、設定可能な最低ワードライン電位をＶＣＧ＿ｍｉｎ（＝０）とした場合を考える。
【０１０２】
Ｖｎｅｔ＜ＶＣＧ＿ｍｉｎの場合、Ｓ２０６：Ｙｅｓと判定される。その場合、例えば、ＣＰＵ２０３は、ＶＣＧとしてＶＣＧ＿ｍｉｎを設定し、Ｖｂｉａｓ（即ちＶＳＲＣ）として（ＶＣＧ＿ｍｉｎ−Ｖｎｅｔ）を設定する。これにより、正味の判定電圧を、ＶＣＧ−Ｖｂｉａｓ＝ＶＣＧ＿ｍｉｎ−（ＶＣＧ＿ｍｉｎ−Ｖｎｅｔ）＝Ｖｎｅｔとすることができる。
【０１０３】
Ｓ２０８では、例えば図１４に例示されるようなコマンドがコントローラ２００からＮＡＮＤ型フラッシュメモリ１００に送られる。
【０１０４】
本図において、ＥＦｈからＶ３までのシーケンスは、判定電圧を設定するコマンドシーケンスである。ＥＦｈとββｈとの組み合わせは、判定電圧のシフト量（より正確にはＶＣＧのシフト量）を設定するコマンドである。ＰＳは、ページを選択するコマンドである。例えば、ＰＳによって、ロアーページ、ミドルページ、およびアッパーページの何れかが指定される。Ｖ１、Ｖ２、およびＶ３によって、選択されたページに対応した３種類の判定電圧のシフト量が指定できる。
【０１０５】
例えば、ＰＳによってロアーページが選択された場合、Ｖ１によってＶｒａのシフト量が指定でき、Ｖ２によってＶｒｅのシフト量が指定できる。Ｖ３は使用されない。
【０１０６】
ＰＳによってミドルページが選択された場合、Ｖ１によってＶｒｂのシフト量が指定でき、Ｖ２によってＶｒｄのシフト量が指定でき、Ｖ３によってＶｒｆのシフト量が指定できる。
【０１０７】
ＰＳによってアッパーページが選択された場合、Ｖ１によってＶｒｃのシフト量が指定でき、Ｖ２によってＶｒｇのシフト量が指定できる。Ｖ３は使用されない。
【０１０８】
なお、ネガティブセンシングモードを使用する場合には、ＣＰＵ２０３は、Ｓ２０５の処理によって補正された後の各種判定電圧にバイアスＶｂｉａｓを加算した電圧を、Ｖ１〜Ｖ３に設定する。
【０１０９】
また、このコマンドシーケンスで設定される判定電圧の数は、１つのメモリセルに保持可能なデータの容量に応じて変更され得る。例えば、１つのメモリセルに４値のデータが格納される場合には、１種類または２種類の判定電圧が設定される。
【０１１０】
アクセス回路１３０は、ＥＦｈからＶ３までのシーケンスを受信すると、レディ／ビジー信号ＲＢｎをビジー状態にして再びレディ状態にする。すると、コントローラ２００は、リードコマンドに相当するＰＳから３０ｈまでのコマンドシーケンスをＮＡＮＤ型フラッシュメモリ１００に送る。
【０１１１】
リードコマンドでは、ＰＳは、判定電圧を設定する際に送られるＰＳと同様、ページを選択するコマンドである。００ｈと３０ｈとの組み合わせは、ページからデータをリードする指示を意味する。ＣＡ１およびＣＡ２は、カラムアドレスを構成し、ＲＡ１、ＲＡ２、およびＲＡ３は、ロウアドレスを構成する。
【０１１２】
アクセス回路１３０は、リードコマンドを受理すると、メモリセルアレイ１１１のＲＡ１、ＲＡ２、およびＲＡ３によって指定されたページからデータをリードする。アクセス回路１３０は、メモリセルアレイ１１１からデータをリードする間（ｔＲ）、レディ／ビジー信号ＲＢｎをビジー状態にする。
【０１１３】
レディ／ビジー信号ＲＢｎがビジー状態からレディ状態になると、コントローラ２００は、データ出力コマンドに相当する０５ｈからＥ０ｈまでのコマンドシーケンスをＮＡＮＤ型フラッシュメモリ１００に送る。
【０１１４】
データ出力コマンドでは、０５ｈとＥ０ｈとの組み合わせは、メモリセルアレイ１１１から読み出された１ページのデータのうちの、カラムアドレスによって指定した範囲のデータを出力する指示を意味する。ＣＡ１およびＣＡ２は、カラムアドレスを構成し、出力させるデータの範囲を示す。ＲＡ１、ＲＡ２、およびＲＡ３は、ロウアドレスを構成する。ＲＡ１、ＲＡ２、およびＲＡ３は、リードコマンドと同じロウアドレスが指定される。
【０１１５】
アクセス回路１３０は、データ出力コマンドを受理すると、レディ／ビジー信号ＲＢｎを一度ビジー状態にした後、データを出力する。
【０１１６】
図１２に戻り、負の値の判定電圧が存在しない場合（Ｓ２０６、Ｎｏ）、ＣＰＵ２０３は、通常モードを設定する（Ｓ２０９）。そして、ＣＰＵ２０３は、判定電圧を指定したリード処理をＮＡＮＤ型ブラッシュメモリ１００に命令する（Ｓ２１０）。なお、通常モードが予め設定されている場合、ＣＰＵ２０３は、リードを行うタイミングで通常モードを設定しなくてもよい。その場合、ＣＰＵ２０３は、ネガティブセンシングモードによるリード処理（Ｓ２０８）を完了する毎に、図１５に例示したコマンドシーケンスを送信する。
【０１１７】
Ｓ２０７では、例えば図１５に例示されるようなコマンドがコントローラ２００からＮＡＮＤ型フラッシュメモリ１００に送られる。ＥＦｈ、ααｈ、およびＯＦＦの組み合わせによって、通常モードでの動作が指示される。ＯＦＦは、ＶＳＲＣ（Ｖｂｉａｓ）としてゼロが設定されるコマンドである。
Ｓ２１０では、例えば図１４に例示されるようなコマンドがコントローラ２００からＮＡＮＤ型フラッシュメモリ１００に送られる。ただし、Ｓ２１０では、Ｓ２０５の処理によって補正された後の各種判定電圧が、Ｖ１〜Ｖ３として設定される。
【０１１８】
Ｓ２０８またはＳ２１０の処理によって、各メモリセルに保持されるデータからなるリードデータがコントローラ２００に送られる。
【０１１９】
ＥＣＣ回路２０６は、リードデータに含まれるエラービットの検出と訂正とを実行する（Ｓ２１１）。ＣＰＵ２０３は、エラーの訂正が成功したか否かを判定する（Ｓ２１２）。例えば、ＥＣＣ回路２０６は、エラーの訂正の成否をＣＰＵ２０３に通知する。ＣＰＵ２０３は、エラーの生成に成功したか否かをＥＣＣ回路２０６からの通知に基づいて判定する。
【０１２０】
エラーの訂正が成功した場合（Ｓ２１２、Ｙｅｓ）、リード処理時の動作が完了する。
【０１２１】
エラーの訂正が失敗した場合（Ｓ２１２、Ｎｏ）、ＣＰＵ２０３は、リトライリードを実行するか否かを判定する（Ｓ２１３）。
【０１２２】
リトライリードは、判定電圧を変更してリード処理を再び実行する処理である。リトライリードでは、少なくとも、Ｓ２０５の処理によって補正された判定電圧と異なる判定電圧が使用される。ＣＰＵ２０３は、変更された判定電圧をアクセス回路１３０に使用させてリード処理を実行させる。
【０１２３】
なお、判定電圧の変更方法は、特定の方法に限定されない。また、リトライリードを実行するか否かの判定方法は、特定の方法に限定されない。
【０１２４】
一例では、全種類の判定電圧からなるセットが、複数パターン、予め用意されている。ＣＰＵ２０３は、エラーの訂正に成功するまで、リトライリードを繰り返す。ＣＰＵ２０３は、リトライリード毎に、複数のパターンのそれぞれを順番に適用する。Ｓ２１３の処理では、未適用のパターンが残っている場合、ＣＰＵ２０３は、リトライリードを実行する、と判定する。未適用のパターンが残っていない場合、ＣＰＵ２０３は、リトライリードを実行しない、と判定する。
【０１２５】
別の例では、ＣＰＵ２０３は、ＮＡＮＤ型フラッシュメモリ１００に、ディストリビューションリードを実行する。ディストリビューションリードとは、選択されたワード線に印可する電圧を所定の刻み幅ごとにシフトさせながら当該選択されたワード線に接続された、オン状態のメモリセルの数またはオフ状態のメモリセルの数を観測することによって、メモリセルのしきい値電圧の分布を測定する動作をいう。ＣＰＵ２０３は、ディストリビューションリードによって得られたメモリセルのしきい値電圧の分布に基づいて、必要な種類の最適判定電圧を決定する。そして、ＣＰＵ２０３は、決定された最適判定電圧を適用してリード処理を再び実行する。Ｓ２１３の処理では、最適判定電圧を適用したリード処理が未実行である場合、ＣＰＵ２０３は、リトライリードを実行する、と判定する。最適判定電圧を適用したリード処理が実行済みである場合、ＣＰＵ２０３は、リトライリードを実行しない、と判定する。
【０１２６】
リトライリードを実行すると判定された場合（Ｓ２１３、Ｙｅｓ）、ＣＰＵ２０３は、リード対象のページに対応した複数種類の判定電圧のうちの一部または全部を変更する（Ｓ２１４）。例えば、ＣＰＵ２０３は、未適用のパターンのうちの１つを、変更後の判定電圧とする。または、ＣＰＵ２０３は、ディストリビューションリードを実行し、得られた最適判定電圧を変更後の判定電圧とする。Ｓ２１４の処理の後、Ｓ２０６の処理が実行される。
【０１２７】
リトライリードを実行しないと判定された場合（Ｓ２１３、Ｎｏ）、ＣＰＵ２０３は、訂正失敗に関する処理を実行し（Ｓ２１５）、リード処理時の動作が完了する。
【０１２８】
なお、訂正失敗に関する処理は、特定の処理に限定されない。一例では、ＣＰＵ２０３は、ホスト機器３００に訂正不能なエラーの発生を通知してもよい。別の例では、コントローラ２００がＥＣＣ回路２０６のほかにＥＣＣ回路２０６よりもさらに強力な訂正能力を有するエラー訂正機能を有し、ＣＰＵ２０３は、当該エラー訂正機能を用いてエラーの訂正を試みてもよい。
【０１２９】
以上述べたように、第１の実施形態によれば、コントローラ２００は、プログラム動作を実行し（Ｓ１０１〜Ｓ１０３）、その後、第１リード動作を実行する（Ｓ２０１〜Ｓ２１５）。プログラム動作では、コントローラ２００は、プログラム処理を実行し（Ｓ１０１）、プログラム処理時の温度を測定し（Ｓ１０２）、測定された温度を記憶する（Ｓ１０３）。第１リード動作では、コントローラ２００は、温度センサを用いて温度を測定し（Ｓ２０１）、プログラム動作時の温度と第１リード動作時の温度との差分を演算し（Ｓ２０２）、補正前の判定電圧を取得し（Ｓ２０３）、取得した判定電圧を差分に応じて補正し（Ｓ２０４、Ｓ２０５）、アクセス回路１３０に、補正された判定電圧としきい値電圧との比較に基づいてしきい値電圧に対応したデータを取得させる（Ｓ２０６〜Ｓ２１０）。
【０１３０】
この構成により、使用時の温度に起因したしきい値電圧の変化に応じてリード処理時の判定電圧が補正されるので、リードデータに含まれるエラービットの数を低減することが可能である。
【０１３１】
また、コントローラ２００は、第１リード動作において、補正された判定電圧の符号が負であるか否かを判定し（Ｓ２０６）、補正された判定電圧の符号が負である場合、アクセス回路１３０にソース線ＳＬの電位を所定値だけバイアスさせ（Ｓ２０８）、補正された判定電圧の符号が負ではない場合、アクセス回路１３０にソース線ＳＬの電位をバイアスさせない（Ｓ２１０）。
【０１３２】
この構成により、補正された判定電圧の符号が負である場合であっても、アクセス回路１３０に、見かけ上、負の値の判定電圧を使用してデータを判定させることができる。よって、最適判定電圧の符号が負である場合において、その最適判定電圧に近い判定電圧を適用することが可能となるので、負の値を判定電圧として適用できない通常モードと比べて、リードデータに含まれるエラービットの数を低減することが可能である。
【０１３３】
なお、以上の説明においては、補正された判定電圧の符号が負であるか否か、即ち補正された判定電圧がゼロを超えるかゼロを下回るかによって、ネガティブセンシングモードを使用するか否かが決定された。ネガティブセンシングモードを使用するか否かのしきい値はゼロでなくてもよい。例えば、設定可能な最低ワードライン電位ＶＣＧ＿ｍｉｎがゼロと異なる場合、ＶＣＧ＿ｍｉｎをしきい値として使用してネガティブセンシングモードを使用するか否かが決定されてもよい。
【０１３４】
なお、メモリシステム１は、リードデータに含まれるエラーの検出および訂正を実行するＥＣＣ回路２０６をさらに備える。コントローラ２００は、ＥＣＣ回路２０６がエラーの訂正に失敗した場合（Ｓ２１２、Ｎｏ）、１回以上のリトライリードを実行する（Ｓ２１３、Ｓ２１４）。各リトライリードは、アクセス回路１３０に使用させる判定電圧を変更してデータの取得をリトライさせる動作である。
【０１３５】
第１の実施形態では、第１リード動作において、まず、使用温度に起因したしきい値電圧の変化に応じてリード処理時の判定電圧が補正されることによって、リードデータに含まれるエラービットの数を低減することができるので、ＥＣＣ回路２０６がエラーの訂正に失敗する機会を低減することができる。よって、リトライリードを実行する機会が低減され、ひいては、リードレイテンシが短縮される。また、リトライリードを実行する回数が低減されることでＮＡＮＤフラッシュメモリの読み出しストレスが減少するため、メモリシステム１の信頼性が改善される。
【０１３６】
（第２の実施形態）
第２の実施形態のメモリシステム１のハードウェア構成は、第１の実施形態と同じである。よって、第２の実施形態のメモリシステム１のハードウェア的な構成要素については、第１の実施形態と同じ符号および名称を用いて説明する。
【０１３７】
第２の実施形態では、第１のリード処理時の温度（Ｔｒ１と表記する）と第２のリード処理時の温度（Ｔｒ２と表記する）との差分（以降、一例としてＴｒ２−Ｔｒ１）に応じて判定電圧が補正される。なお、第２のリード処理は、第１のリード処理よりも後に実行されるリード処理である。
【０１３８】
具体的には、ＣＰＵ２０３は、第１のリード処理の後、第１のリード処理において使用された判定電圧と温度Ｔｒ１との関係を学習する。第２のリード処理時には、ＣＰＵ２０３は、温度Ｔｒ１と温度Ｔｒ２との差分（Ｔｒ２−Ｔｒ１）に応じた補正が適用された判定電圧を、学習された結果と第２のリード処理時の温度Ｔｒ２とに基づいて取得する。
【０１３９】
第１のリード処理によって使用された判定電圧とは、読み出されたデータに含まれていたエラーの訂正に成功した場合に使用された判定電圧である。
【０１４０】
学習とは、ここでは一例として、第１のリード処理において使用された判定電圧を、温度Ｔｒ１と所定の基準温度（Ｔｂａｓｅと表記する）との差分（以降、一例としてＴｂａｓｅ−Ｔｒ１）に応じて補正し、補正によって得られた電圧（基準電圧）を記憶することである。基準電圧は、学習情報２２３に記録されることによって記憶される。
【０１４１】
図１６は、第２の実施形態の学習情報２２３の構成の一例を示す図である。本図に示される例によれば、学習情報２２３には、ブロックＢＬＫ毎に全種類の判定電圧（Ｖｒａ〜Ｖｒｇ）について基準電圧が記録されている。なお、学習情報２２３は、任意の単位領域毎に基準電圧が記録され得る。単位領域は、決まったサイズを有する記憶領域であり、例えば、ＮＡＮＤ型フラッシュメモリ１００、ＮＡＮＤフラッシュメモリ１００内の個別チップ、ブロックＢＬＫ、ストリングユニットＳＵ、ワード線ＷＬ、または複数のワード線ＷＬのグループである。
【０１４２】
なお、学習の方法は上記した方法に限定されない。例えば、学習では、第１のリード処理において使用された判定電圧と温度Ｔｒ１との対が記憶されてもよい。
【０１４３】
また、学習情報２２３は、温度情報２２２と同様に、電源断時までにＮＡＮＤ型フラッシュメモリ１００に保存され、起動時にＲＡＭ２０２にロードされてもよい。
【０１４４】
図１７は、第２の実施形態のメモリシステム１に保持される各種データを説明する図である。
【０１４５】
ＮＡＮＤ型フラッシュメモリ１００には、第１の実施形態と同様に、ユーザデータ１４０およびファームウェアプログラム１４１が格納される。
【０１４６】
ＲＡＭ２０２には、判定電圧情報２２０、補正アルゴリズム２２１、および前述した学習情報２２３が格納される。
【０１４７】
ＣＰＵ２０３は、補正アルゴリズム２２１を用いることによって、第１のリード処理において使用された判定電圧を基準電圧に変換する。
【０１４８】
具体的には、ＣＰＵ２０３は、基準温度Ｔｂａｓｅと温度Ｔｒ１との差分（Ｔｂａｓｅ−Ｔｒ１）を演算する。そして、ＣＰＵ２０３は、温度差Ｔｄｉｆが（Ｔｂａｓｅ−Ｔｒ１）である場合のしきい値電圧の変化Ｖｄｉｆの値（補正量Ｖｃｏｒ１）を取得する。そして、ＣＰＵ２０３は、第１のリード処理において使用された判定電圧に補正量Ｖｃｏｒ１を加算することによって、基準電圧を取得する。
【０１４９】
また、ＣＰＵ２０３は、補正アルゴリズム２２１と温度Ｔｒ２とに基づいて、第２のリード処理において使用される判定電圧を演算する。
【０１５０】
具体的には、ＣＰＵ２０３は、温度Ｔｒ２と基準温度Ｔｂａｓｅとの差分（Ｔｒ２−Ｔｂａｓｅ）を演算する。そして、ＣＰＵ２０３は、温度差Ｔｄｉｆが（Ｔｒ２−Ｔｂａｓｅ）である場合のしきい値電圧の変化Ｖｄｉｆの値（補正量Ｖｃｏｒ２）を取得する。そして、ＣＰＵ２０３は、基準電圧に補正量Ｖｃｏｒ２を加算することによって、第２のリード処理において使用される判定電圧を取得する。
【０１５１】
つまり、第１のリード処理によって使用された判定電圧が温度Ｔｒ１と温度Ｔｂａｓｅとの温度差に応じて補正されることによって基準電圧が得られ、基準電圧が温度Ｔｂａｓｅと温度Ｔｒ２との温度差に応じて補正されることによって第２のリード処理によって使用される判定電圧が得られる。よって、第２のリード処理によって使用される判定電圧は、第１のリード処理によって使用された判定電圧が温度Ｔｒ１と温度Ｔｒ２との温度差に応じて補正されることによって得られる電圧と等しい。
【０１５２】
以降、第１のリード処理を含むメモリシステム１の一連の動作を、第１リード動作と表記する。また、第２のリード処理を含むメモリシステム１の一連の動作を、第２リード動作と表記する。第２リード動作は、第１リード動作の後、第１リード動作の対象となった単位領域に対して実行される。
【０１５３】
図１８は、第２の実施形態のメモリシステム１の第１リード動作を説明するフローチャートである。本図の説明において、対象とは、第１リード動作の対象をいう。
【０１５４】
まず、ＣＰＵ２０３は、対象のブロックＢＬＫを含むＮＡＮＤ型フラッシュメモリ１００の温度Ｔｒ１を測定する（Ｓ３０１）。そして、ＣＰＵ２０３は、判定電圧情報２２０から判定電圧を取得する（Ｓ３０２）。ＣＰＵ２０３は、対象のページの種類に応じた複数種類の判定電圧を取得する。
【０１５５】
その後、Ｓ３０３〜Ｓ３０８の処理によって、Ｓ２０７〜Ｓ２１１と同様の手順で、ネガティブセンシングモードまたは通常モードを使用したデータのリードと、リードされたデータに含まれるエラーの検出と訂正とが実行される。
【０１５６】
そして、ＣＰＵ２０３は、エラーの訂正が成功したか否かを判定する（Ｓ３０９）。エラーの訂正が失敗した場合（Ｓ３０９、Ｎｏ）、Ｓ３１０〜Ｓ３１２において、Ｓ２１３〜Ｓ２１５と同様の処理が実行され得る。なお、Ｓ３１１の処理の後、Ｓ３０３の処理が実行される。
【０１５７】
エラーの訂正が成功した場合（Ｓ３０９、Ｙｅｓ）、ＣＰＵ２０３は、温度Ｔｒ１と基準温度Ｔｂａｓｅとの差分（Ｔｂａｓｅ−Ｔｒ１）を演算する（Ｓ３１３）。そして、ＣＰＵ２０３は、差分（Ｔｂａｓｅ−Ｔｒ１）と補正アルゴリズム２２１とに基づいて補正量Ｖｃｏｒ１を取得する（Ｓ３１４）。そして、ＣＰＵ２０３は、エラーの訂正に成功したデータを取得した際に使用された判定電圧を補正量Ｖｃｏｒ１を用いて補正することで基準電圧を決定する（Ｓ３１５）。ＣＰＵ２０３は、得られた基準電圧を対象のブロックＢＬＫに関連付けて学習情報２２３に記録する（Ｓ３１６）。Ｓ３１６の処理によって、第１のリード処理が完了する。
【０１５８】
なお、ＣＰＵ２０３は、Ｓ３１４〜Ｓ３１６の処理を、リード対象のページに対応する複数種類の判定電圧のそれぞれに対して実行する。
【０１５９】
図１９は、第２の実施形態のメモリシステム１の第２リード動作を説明するフローチャートである。本図の説明において、対象とは、第２リード動作の対象をいう。第２リード動作の対象は、第１リード動作が実行された単位領域（ここではブロックＢＬＫ）が該当する。
【０１６０】
まず、ＣＰＵ２０３は、対象のブロックＢＬＫを含むＮＡＮＤ型フラッシュメモリ１００の温度Ｔｒ２を測定する（Ｓ４０１）。そして、ＣＰＵ２０３は、基準温度Ｔｂａｓｅと温度Ｔｒ２との差分（Ｔｒ２−Ｔｂａｓｅ）を演算する（Ｓ４０２）。
【０１６１】
そして、ＣＰＵ２０３は、学習情報２２３から対象のブロックＢＬＫに関連付けられた基準電圧を取得する（Ｓ４０３）。そして、ＣＰＵ２０３は、差分（Ｔｒ２−Ｔｂａｓｅ）と補正アルゴリズム２２１とに基づいて補正量Ｖｃｏｒ２を取得する（Ｓ４０４）。そして、ＣＰＵ２０３は、基準電圧を補正量Ｖｃｏｒ２を用いて補正することで判定電圧を演算する（Ｓ４０５）。
【０１６２】
なお、ＣＰＵ２０３は、Ｓ４０３〜Ｓ４０５の処理を、リード対象のページに対応する複数種類の判定電圧のそれぞれに対して実行する。
【０１６３】
その後、Ｓ４０６〜Ｓ４１５において、Ｓ２０６〜Ｓ２１５と同じ処理が実行され得る。
【０１６４】
このように、第２の実施形態においては、コントローラ２００は、第１リード動作を実行し（Ｓ３０１〜Ｓ３１６）、その後、第２リード動作を実行する（Ｓ４０１〜Ｓ４１５）。第１リード動作では、コントローラ２００は、温度センサ２１０を用いて温度を測定し（Ｓ３０１）、判定電圧を取得し（Ｓ３０２、Ｓ３１１）、アクセス回路１３０に、しきい値電圧と判定電圧との比較に基づいてしきい値電圧に対応したデータを取得させる（Ｓ３０３〜Ｓ３０９）。ここで、第１リード動作では、コントローラ２００は、データの取得に使用された判定電圧と、測定された温度と、の関係を学習する（Ｓ３１３〜Ｓ３１６）。第２リード動作では、コントローラ２００は、温度センサ２１０を用いて温度を測定し（Ｓ４０１）、測定された温度と基準温度との差分に応じて補正された判定電圧を、第１リード動作での学習の結果と第２リード動作にて測定された温度とに基づいて取得し（Ｓ４０２〜Ｓ４０５）、アクセス回路１３０に、取得された判定電圧を用いてデータを取得させる（Ｓ４０６〜Ｓ４１０）。
【０１６５】
この構成により、温度に起因したしきい値電圧の変化に応じてリード処理時の判定電圧が補正されるので、温度に起因したしきい値電圧の変化に応じてリード処理時の判定電圧が補正されない場合に比べて、リードデータに含まれるエラービットの数を低減することが可能である。
【０１６６】
また、第２リード動作において、コントローラ２００は、取得された判定電圧の符号が負であるか否かを判定し（Ｓ４０６）、補正された判定電圧の符号が負である場合、アクセス回路１３０にソース線ＳＬの電位を所定値だけバイアスさせ（Ｓ４０８）、補正された判定電圧の符号が負ではない場合、アクセス回路１３０にソース線ＳＬの電位をバイアスさせない（Ｓ４１０）。
【０１６７】
この構成により、第１の実施形態と同様に、アクセス回路１３０にソース線ＳＬの電位をバイアスできない場合に比べて、補正された判定電圧の符号が負である場合におけるリードデータに含まれるエラービットの数を低減することが可能である。
【０１６８】
なお、第２の実施形態においては、第１のリード処理および第２のリード処理において、ネガティブセンシングモードを使用するか否かの判断のためのしきい値としてゼロを使用した。第１の実施形態と同様、ネガティブセンシングモードを使用するか否かの判断のためのしきい値はゼロ以外の値であってもよい。
【０１６９】
また、第１リード動作において、コントローラ２００は、リードデータに含まれるエラーの訂正に失敗した場合（Ｓ３０９、Ｎｏ）、１回以上のリトライリードを実行することができる（Ｓ３１０、Ｓ３１１）。コントローラ２００は、エラーの訂正に成功した場合に使用された判定電圧を用いて学習を実行する（Ｓ３０９、Ｙｅｓ、Ｓ３１３〜Ｓ３１６）。
【０１７０】
このように、エラーの訂正に成功した場合に判定電圧と温度との関係が学習され、学習された結果が第２リード動作において温度に応じた補正の基準として使用される。前述の通り、これらの補正値および補正された判定電圧はＮＡＮＤフラッシュメモリ１００の使用履歴に依存するため、上記第２リード動作では学習情報を使用することにより、ＮＡＮＤフラッシュメモリの使用履歴に逐次対応するようリード電圧が補正されることになる。よって、第２リード動作においてリードデータに含まれるエラービットの数を大きく低減することが可能となる。
【０１７１】
また、第１リード動作において、コントローラ２００は、第１リード動作時の温度と予め設定された基準温度との差分を演算し（Ｓ３１３）、エラーの訂正に成功した場合に使用された判定電圧を当該差分に応じて補正し（Ｓ３１４、Ｓ３１５）、得られた電圧（基準電圧）を学習の結果として学習情報２２３に記録する。
【０１７２】
なお、コントローラ２００は、学習情報２２３に判定電圧（エラーの訂正に成功した場合に使用された判定電圧）と温度（第１リード動作時の温度の測定値）との対を記録してもよい。しかしながら、学習情報２２３に判定電圧と温度との対が記録される場合、学習情報２２３に基準電圧のみが記録される場合に比べて、学習情報２２３のサイズが大きくなる。即ち、コントローラ２００が学習情報２２３に基準電圧を学習の結果として記録することによって、学習情報２２３のサイズを低減することが可能である。
【０１７３】
なお、学習情報２２３に判定電圧と温度との対が記録される場合、コントローラ２００は、第２リード動作においては、学習情報２２３に記録された温度と第２リード動作時の温度との差分に基づいて学習情報２２３に記録された判定電圧を補正するように構成されればよい。
【０１７４】
また、以上の説明では、第１リード動作のフロー（図１８）と第２リード動作のフロー（図１９）とをわけて説明した。第１リード動作と第２リード動作とは、１つのフローとして実現され得る。例えば、コントローラ２００は、リード処理が開始すると、対象のブロックＢＬＫにかかる学習値の有無を調べ、当該学習値が記録されていない場合には第１リード動作を実行し、当該学習値が記録されている場合には第２リード動作を実行する。
【０１７５】
（第３の実施形態）
第１の実施形態と第２の実施形態とは組み合わせて適用され得る。
【０１７６】
例えば、メモリシステム１は、リードデータに含まれるエラーの訂正に成功した後（Ｓ２１２、Ｙｅｓ）、Ｓ３１３〜Ｓ３１６の処理を実行する。これによって、メモリシステム１は、プログラム処理後のリード処理において、当該プログラム処理時と当該リード処理時との温度差に応じた補正を行うとともに、当該リード処理時に使用された判定電圧と当該リード処理時の温度との関係を学習することができる。そして、その後のリード処理において、メモリシステム１は、第２の実施形態の第２リード動作を実行する。
【０１７７】
この構成により、第１の実施形態の効果と第２の実施形態の効果とを得ることが可能となる。
【０１７８】
また、第２の実施形態では、メモリシステム１は、第２リード動作において、リードデータに含まれるエラーの訂正に成功した後（Ｓ４１２、Ｙｅｓ）、Ｓ３１３〜Ｓ３１６の動作を実行してもよい。よって、メモリシステム１は、第２リード動作を実行する毎に学習の結果を更新することができ、ひいては、繰り返し実行されるリード動作のそれぞれにおいて第２の実施形態の効果を得ることが可能となる。
【０１７９】
また、第１の実施形態のリード処理、第２の実施形態の第１リード動作、および第２の実施形態の第２リード動作は、ホスト機器３００からのリード要求に応じて実行されてもよいし、パトロールリードにおいて実行されてもよい。
【０１８０】
パトロールリードとは、メモリセルに保持されるデータの健全性を確認するためにバックグラウンドで実行されるリード処理である。パトロールリードは、例えば全てのブロックＢＬＫまたはサンプリングされた一部のブロックＢＬＫに対して定期的に実行される。パトロールリードにおいては、コントローラ２００は、実際にリード処理を行って、リードデータに含まれるエラーの検出および訂正を実行する。そして、コントローラ２００は、エラーの検出および訂正の結果から、データの健全性を判定する。コントローラ２００は、例えば、ＥＣＣ回路２０６によるエラーの訂正に失敗した場合、リードされたブロックＢＬＫをリフレッシュの対象に設定する。リフレッシュとは、プログラム処理を再実行することによって、ステート毎のメモリセルのしきい値電圧の分布を互いに重ならない状態に近づける処理である。
【０１８１】
コントローラ２００は、パトロールリードの対象として選択したブロックＢＬＫに対し、第１の実施形態のリード処理、第２の実施形態の第１リード動作、または第２の実施形態の第２リード動作を実行してもよい。また、コントローラ２００は、ホスト機器３００からのリード要求に応じたリード処理やパトロールリードにおけるリード処理の他に、任意のリード処理において第１の実施形態のリード処理、第２の実施形態の第１リード動作、および第２の実施形態の第２リード動作のうちの任意の動作を実行してもよい。
【０１８２】
また、第１の実施形態および第２の実施形態では、温度センサ２１０はＮＡＮＤ型フラッシュメモリ１００の外に具備されることとした。前述したように、温度センサ２１０はＮＡＮＤ型フラッシュメモリ１００に内蔵されてもよい。その場合には、例えばＳ１０２、Ｓ２０１、Ｓ３０１、Ｓ４０１などにおいて、ＣＰＵ２０３は、ＮＡＮＤ型フラッシュメモリ１００に温度データを取得するためのコマンドを送信すればよい。
【０１８３】
図２０は、温度データを取得するためのコマンドシーケンスの一例である。本図において、ＥＥｈとＸＸｈとの組み合わせは、温度データの出力を要求するコマンドを構成する。
【０１８４】
アクセス回路１３０は、温度データの出力を要求するコマンドを受理すると、レディ／ビジー信号ＲＢｎをビジー状態にして自身が備える温度センサ２１０から温度検出値を取得する。アクセス回路１３０は、温度検出値の取得を完了すると、レディ／ビジー信号ＲＢｎをレディー状態にして、取得した温度検出値を温度データとして取得する。
【０１８５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８６】
１  メモリシステム、１００  ＮＡＮＤ型フラッシュメモリ、１１１  メモリセルアレイ、１３０  アクセス回路、２００  コントローラ、２０２  ＲＡＭ、２０３  ＣＰＵ、２０６  ＥＣＣ回路、２１０  温度センサ、２２０  判定電圧情報、２２１  補正アルゴリズム、２２２  温度情報、２２３  学習情報、３００  ホスト機器。
【図１】
2019164858.tif 000003
【図２】
2019164858.tif 000004
【図３】
2019164858.tif 000005
【図４】
2019164858.tif 000006
【図５】
2019164858.tif 000007
【図６】
2019164858.tif 000008
【図７】
2019164858.tif 000009
【図８】
2019164858.tif 000010
【図９】
2019164858.tif 000011
【図１０】
2019164858.tif 000012
【図１１】
2019164858.tif 000013
【図１２】
2019164858.tif 000014
【図１３】
2019164858.tif 000015
【図１４】
2019164858.tif 000016
【図１５】
2019164858.tif 000017
【図１６】
2019164858.tif 000018
【図１７】
2019164858.tif 000019
【図１８】
2019164858.tif 000020
【図１９】
2019164858.tif 000021
【図２０】
2019164858.tif 000022