(57)【要約】【課題】一つの実施形態は、書き込み時の温度を適正に記録できる不揮発性メモリを提供することを目的とする。【解決手段】一つの実施形態によれば、メモリアレイとセンサとインタフェースと制御回路と有する不揮発性メモリが提供される。センサは、温度を検知する。インタフェースは、ライトコマンドを受信する。制御回路は、受信されたライトコマンドに応じてメモリアレイにデータを書き込む際に、メモリアレイにおけるデータが書き込まれない記憶領域に、センサで検知された温度の情報を書き込む。【選択図】図１
2020155167.tif 000002
【特許請求の範囲】
【請求項１】
メモリアレイと、
温度を検知するセンサと、
ライトコマンドを受信するインタフェースと、
前記受信されたライトコマンドに応じて前記メモリアレイにデータを書き込む際に、前記メモリアレイにおける前記データが書き込まれない記憶領域に、前記センサで検知された温度の情報を書き込む制御回路と、
を備えた不揮発性メモリ。
【請求項２】
前記記憶領域は、前記メモリアレイにおける前記温度の情報に対する専用の領域である
請求項１に記載の不揮発性メモリ。
【請求項３】
前記記憶領域は、前記メモリアレイにおける冗長領域である
請求項１に記載の不揮発性メモリ。
【請求項４】
前記記憶領域は、前記メモリアレイにおける前記ライトコマンドでアクセスされる領域における不使用の領域である
請求項１に記載の不揮発性メモリ。
【請求項５】
前記記憶領域は、前記メモリアレイにおけるダミーワードライン領域である
請求項１に記載の不揮発性メモリ。
【請求項６】
前記インタフェースは、前記専用の領域の指定を含む第１のコマンドを受信し、
前記制御回路は、前記第１のコマンドに応じて、前記専用の領域に書き込まれた前記温度の情報を読み出して前記インタフェース経由で出力する
請求項２に記載の不揮発性メモリ。
【請求項７】
前記インタフェースは、前記冗長領域の指定を含む第２のコマンドを受信し、
前記制御回路は、前記第２のコマンドに応じて、前記冗長領域に書き込まれた前記温度の情報を読み出して前記インタフェース経由で出力する
請求項３に記載の不揮発性メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、不揮発性メモリに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ等の不揮発性メモリは、使用温度に依存して動作特性が変動することがある。このとき、不揮発性メモリにおける書き込み時の温度を適正に記録することが望まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１４−５０９７６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、書き込み時の温度を適正に記録できる不揮発性メモリを提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、メモリアレイとセンサとインタフェースと制御回路と有する不揮発性メモリが提供される。センサは、温度を検知する。インタフェースは、ライトコマンドを受信する。制御回路は、受信されたライトコマンドに応じてメモリアレイにデータを書き込む際に、メモリアレイにおけるデータが書き込まれない記憶領域に、センサで検知された温度の情報を書き込む。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態にかかる不揮発性メモリを含むメモリシステムの構成を示す図である。
【図２】図２は、実施形態におけるメモリアレイに書き込まれるデータの構成を示す図である。
【図３】図３は、実施形態におけるブロックの構成を示す回路図である。
【図４】図４は、第一の実施形態におけるワードライン記憶領域の構成を示す図である。
【図５】図５は、第１の実施形態の第２の変形例におけるワードライン記憶領域の構成を示す図である。
【図６】図６は、第２の実施形態におけるワードライン記憶領域の構成を示す図である。
【図７】図７は、第３の実施形態におけるダミーワードライン記憶領域の構成を示す図である。
【図８】図８は、第４の実施形態におけるワードライン記憶領域の構成を示す図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかる不揮発性メモリを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
（実施形態）
実施形態にかかる不揮発性メモリは、データを不揮発に記憶するが、その記憶の信頼性が使用温度に依存する特性を有する。例えば、不揮発性メモリでは、書き込み動作時、読み出し動作時の温度によって、エラービット数を最小にする閾値電圧（Ｖｔｈ）が変動する。
【０００９】
これに対して、不揮発性メモリでは、温度補正を行わないか、または、読み出し時に内蔵された温度センサで検知された温度を用いて閾値電圧（Ｖｔｈ）の補正を行うことが考えられる。
【００１０】
例えば、不揮発性メモリが３次元のＮＡＮＤ型フラッシュメモリ等である場合、温度センサで検知された温度を用いて閾値電圧を補正するが、補正しきれない閾値電圧の変動が残ることがある。データの書き込み時の温度と読み出し時の温度とが大きく異なる場合、すなわち温度交差がある場合に、読み出し閾値電圧の大幅なシフトとして観測され、読み出しデータのエラービット数が多くなる可能性がある。
【００１１】
一方、書き込み時の温度情報は外部のコントローラで管理し、記録することを前提としている。例えば、外部のコントローラからの温度ステータス取得コマンドに応じて不揮発性メモリが温度を検知してコントローラに返し、その検知結果の温度情報が、コントローラからのコマンドに応じて不揮発性メモリのメモリアレイ上の管理情報格納領域にメタデータとして書き込まれることがある。その後、外部のコントローラからのライトコマンドに応じて不揮発性メモリがデータをメモリアレイに書き込む。この場合、温度が検知される時点とデータの書き込み時点とにタイムラグがあり、読み出し時に検知された温度とメタデータ中の温度情報とを用いて補正を行っても、温度交差の補正を正確に行うことが困難な傾向にある。
【００１２】
また、外部のコントローラにより管理される温度は、データの書き込みの単位より大きな単位（例えば、ブロック単位）について代表される情報であり、データの書き込みの単位ごとに見た場合に、書き込み時点の温度から大きく乖離している可能性がある。この観点からも、読み出し時に検知された温度とメタデータ中の温度情報とを用いて補正を行っても、温度交差の補正を正確に行うことが困難な傾向にある。
【００１３】
そこで、本実施形態では、不揮発性メモリにおいて、制御回路が、メモリアレイにデータを書き込む際に、メモリアレイにおけるデータが書き込まれない記憶領域に内蔵のセンサで検知された温度の情報を書き込むことで、書き込み時の温度情報の適正な記録・管理を目指す。
【００１４】
具体的には、メモリシステム１は、図１に示すように構成され得る。図１は、メモリシステム１の構成を示す図である。メモリシステム１は、ホスト１００に通信可能に接続され、ホスト１００に対する外部記憶装置として機能する。メモリシステム１は、メモリカード等であってもよいし、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等であってもよい。ホスト１００は、例えば、パーソナルコンピュータ、サーバ、ストレージボックスなどの情報処理装置であってもよいし携帯電話、撮像装置、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。ホスト１００は、温度センサ１０１を有していてもよい。
【００１５】
メモリシステム１は、メモリコントローラ２、不揮発性メモリ３、及び複数の温度センサ４を有する。メモリコントローラ２は、ホストインタフェース２１、メモリインタフェース２２、制御部２３、温度センサ２４、及びＥＣＣ部２５を有する。
【００１６】
メモリコントローラ２は、例えばＳｏＣ（Ｓｙｓｔｅｍ−ｏｎ−ａ−Ｃｈｉｐ）として構成される半導体集積回路である。以下で説明するメモリコントローラ１０の各構成要素の動作の一部又は全部は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）がファームウェアを実行することによって実現されてもよいし、ハードウェアで実現されてもよい。
【００１７】
メモリコントローラ２において、メモリインタフェース２２は、メモリバス５によって不揮発性メモリ３に接続され、ホストインタフェース２１は、ホストバス６によってホスト１００に接続される。制御部２３は、ホスト１００からホストインタフェース２１を介して受信されたホストライトコマンドに従って、不揮発性メモリ３へのライト処理を制御する。また、制御部２３は、ホスト１００からホストインタフェース２１を介して受信されたホストリードコマンドに従って、不揮発性メモリ３からのリード処理を制御する。ホストバス６の準拠する規格としては、たとえば、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）、ＰＣＩｅ（登録商標）（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）（ＮＶＭ  ｅｘｐｒｅｓｓ（登録商標）を含む）など、任意の規格が採用可能である。
【００１８】
メモリバス５は、メモリインタフェース２２に従った信号の送受信を行う。メモリインタフェース２２がいわゆるＮＡＮＤインタフェースである場合、この信号の具体例には、チップイネーブル信号ＣＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、レディ・ビジー信号ＲＢｎ、入出力信号Ｉ／Ｏ等が含まれ得る。
【００１９】
信号ＣＥｎは、不揮発性メモリ３をイネーブルにするための信号である。信号ＣＬＥは、不揮発性メモリ３への入力信号Ｉ／Ｏがコマンドであることを不揮発性メモリ３に通知する信号である。信号ＡＬＥは、不揮発性メモリ３への入力信号Ｉ／Ｏがアドレスであることを不揮発性メモリ３に通知する信号である。信号ＷＥｎは入力信号Ｉ／Ｏを不揮発性メモリ３に取り込ませるための信号である。信号ＲＥｎは、不揮発性メモリ３から出力信号Ｉ／Ｏを読み出すための信号である。レディ・ビジー信号ＲＢｎは、不揮発性メモリ３がレディ状態（メモリコントローラ２からのコマンドを受信できる状態）であるか、それともビジー状態（メモリコントローラ２からのコマンドを受信できない状態）であるかを示す信号である。入出力信号Ｉ／Ｏは、例えば８ビットの信号である。入出力信号Ｉ／Ｏは、不揮発性メモリ３とメモリコントローラ２との間で送受信されるデータの実体であり、コマンド、アドレス、ライトデータ（書込み対象のデータ）、リードデータ（読み出されたデータ）等である。
【００２０】
ＥＣＣ部２５は、リードデータにおける誤り検出及び誤り訂正のために、データの符号化および復号を行う。具体的には、ＥＣＣ部２５は、不揮発性メモリ３に書き込まれるデータ（ライトデータ）を符号化する。また、ＥＣＣ部２５は、不揮発性メモリ３から読み出されたデータ（リードデータ）を復号する。ＥＣＣ部２５は、復号によって、リードデータにおける誤り検出及び誤り訂正を実行する。ＥＣＣ部２５は、誤り訂正に失敗した場合には、誤り訂正の失敗を制御部２３に通知する。ＥＣＣ部２５による符号化および復号のアルゴリズムには、ＲＳ（リード・ソロモン）符号やＢＣＨ（Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍ）符号や低密度パリティ検査（ＬＤＰＣ）符号等を用いた任意のアルゴリズムを適用することが可能である。
【００２１】
例えば、ライト処理時において、ＥＣＣ部２５は、制御部２３による制御のもと、ライトコマンドで不揮発性メモリ３にライトすべきユーザデータを受け、ユーザデータに基づいてパリティを生成し、パリティをユーザデータに付してライトデータとする。不揮発性メモリ２０には、パリティを含むライトデータが、符号化データとして書き込まれる。
【００２２】
リード処理時において、ＥＣＣ部２５は、制御部２３による制御のもと、リードコマンドで不揮発性メモリ３からリードされたリードデータを受け、リードデータからパリティを抽出し、パリティに基づきシンドロームを生成し、ユーザデータ内のエラービットの有無を判断する。ＥＣＣ部２５は、ユーザデータにエラービットが含まれる場合、エラービットの位置を特定する。ＥＣＣ部２５において訂正可能なエラービットの数は、例えばパリティのビット数等によって決まる。訂正可能なエラービットの数以下のエラービットがユーザデータに含まれる場合、ＥＣＣ部２５は、そのエラービットを訂正し、訂正成功の旨を制御部２３へ通知する。訂正可能なエラービットの数を超える数のエラービットがユーザデータに含まれる場合には、ＥＣＣ部２５は、誤り訂正ができない（ｕｎｃｏｒｒｅｃｔａｂｌｅ）として、訂正失敗の旨を制御部２３へ通知する。
【００２３】
不揮発性メモリ３は、データを不揮発に記憶するメモリであり、例えば、ＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤデバイスともいう）である。以下の説明では、不揮発性メモリ３としてＮＡＮＤデバイスが用いられた場合を例示するが、不揮発性メモリ３として３次元構造フラッシュメモリ、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のＮＡＮＤデバイス以外の記憶媒体を用いることも可能である。また、不揮発性メモリ３が半導体メモリであることは必須ではなく、半導体メモリ以外の種々の記憶媒体に対して本実施形態を適用することも可能である。
【００２４】
不揮発性メモリ３は、複数のメモリチップ１０−１〜１０−ｎ（ｎは、任意の２以上の整数）を含む。各メモリチップ１０は、メモリアレイ１１、温度センサ１２、Ｉ／Ｏインタフェース１３、データバッファ（ＸＤＬ）１４、及び制御回路１５を有する。制御回路１５は、シーケンサ１６、ロウモジュール１７、及びカラムモジュール１８を有する。シーケンサ１６は、コマンド解析回路１６１を含む。
【００２５】
ロウモジュール１７は、ロウデコーダ及びドライバ回路を有し、ロウデコーダで、アクセス対象のブロックを選択し、更に選択したブロックにおけるロウ方向を選択する。ドライバ回路は、選択されたブロックに対して、ロウデコーダを介して電圧を供給する。
【００２６】
カラムモジュール１８は、たとえばセンスアンプと複数のラッチ回路よりなるデータラッチとを含んで構成される。このカラムモジュール１８は、ライト動作においては、メモリコントローラ２からＩ／Ｏインタフェース１３及びデータバッファ１４を介してデータラッチへ供給されたライトデータをメモリアレイ１１に転送する。また、カラムモジュール１８は、リード動作においては、メモリアレイ１１から読み出されたデータをセンスし、必要な演算を行う。そして、カラムモジュール１８は、得られたリードデータをデータラッチ、データバッファ１４、及びＩ／Ｏインタフェース１３を介してメモリコントローラ２に出力する。
【００２７】
温度センサ１２は、メモリチップ１０におけるメモリアレイ１１の周辺に配され、メモリアレイ１１の周辺の温度を検知し、検知された温度を示す信号ＴＥＭＰを生成する。
【００２８】
メモリアレイ１１は、複数のメモリセル（複数のメモリセルトランジスタＭＴ）を有する。各メモリセルは、ロウ及びカラムに対応付けられている。メモリアレイ１１は、メモリコントローラ２からライトコマンドで指示されたデータを記憶する。
【００２９】
メモリアレイ１１では、図２に示すように、ページと呼ばれるデータ単位で、書き込みおよび読み出しが行われ、ブロックと呼ばれるデータ単位で消去が行われる。図２は、メモリアレイに書き込まれるデータの構成を示す図である。本実施形態では、同一のワードラインに接続される複数のメモリセルをメモリセルグループと呼ぶ。図２では、各ブロックにおけるメモリセルグループごとのデータがページデータとして示されている。このうち、管理情報格納領域として割り当てられたメモリセルグループのデータがメタデータとして示されている。
【００３０】
各ブロック（各物理ブロック）は、例えば、図３に示すように構成される。図３は、物理ブロックＢｌｏｃｋの構成を示す図である。
【００３１】
各物理ブロックＢｌｏｃｋは、複数のストリングユニットＳＵ０〜ＳＵ３を有する。複数のストリングユニットＳＵ０〜ＳＵ３は、複数の選択ゲートラインＳＧＤＬ０〜ＳＧＤＬ３に対応しているとともに選択ゲートラインＳＧＳＬを共有している。各ストリングユニットＳＵ０〜ＳＵ３は、物理ブロックＢｌｏｃｋにおける駆動単位として機能する。各ストリングユニットＳＵ０〜ＳＵ３は、複数の選択ゲートラインＳＧＤＬ０〜ＳＧＤＬ３のうちその対応する選択ゲートラインと選択ゲートラインＳＧＳＬとで駆動され得る。また、各ストリングユニットＳＵ０〜ＳＵ３は、複数のメモリストリングＭＳＴを含む。
【００３２】
各メモリストリングＭＳＴは、例えば６４個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ６３）および選択トランジスタＳＤＴ，ＳＳＴを含んでいる。メモリセルトランジスタＭＴは、コントロールゲートと電荷蓄積膜とを有し、データを不揮発に保持する。そして６４個のメモリセルトランジスタＭＴ（ＭＴ０〜ＭＴ６３）は、選択トランジスタＳＤＴのソースと選択トランジスタＳＳＴのドレインとの間に直列接続されている。なお、メモリストリングＭＳＴ内のメモリセルトランジスタＭＴの個数は６４個に限定されない。
【００３３】
ワードラインＷＬ０〜ＷＬ６３（各ワードラインを区別しない場合には、ＷＬで示すことにする）は、物理ブロックＢｌｏｃｋ内の各ストリングユニットＳＵ内の各メモリストリングＭＳＴ間で、メモリセルトランジスタＭＴのコントロールゲートを共通に接続している。つまり、物理ブロックＢｌｏｃｋ内の各ストリングユニットＳＵ内において同一行にあるメモリセルトランジスタＭＴのコントロールゲートは、同一のワードラインＷＬに接続される。すなわち、物理ブロックＢｌｏｃｋのストリングユニットＳＵは複数のワードラインＷＬに対応した複数のメモリセルグループＭＣＧを含み、各メモリセルグループＭＣＧは同一のワードラインＷＬに接続される（ｐ＋１）個のメモリセルトランジスタＭＴを含む。各メモリセルトランジスタＭＴに１ビットの値を保持可能に構成される場合（シングルレベルセル（ＳＬＣ）モードで動作する場合）には、同一のワードラインＷＬに接続される（ｐ＋１）個のメモリセルトランジスタＭＴ（すなわち、メモリグループＭＣＧ）は１つの物理ページとして取り扱われ、この物理ページごとにデータのライト動作及びデータのリード動作が行われる。
【００３４】
各メモリセルトランジスタＭＴに複数ビットの値を保持可能に構成される場合がある。例えば、各メモリセルトランジスタＭＴがｎ（ｎ≧２）ビットの値を記憶可能な場合、ワードラインＷＬ当たりの記憶容量はｎ個の物理ページ分のサイズに等しくなる。すなわち、各メモリセルグループＭＣＧは、ｎ個の物理ページとして取り扱われる。例えば、各メモリセルトランジスタＭＴが２ビットの値の記憶を行うマルチレベルセル（ＭＬＣ）モードでは、各ワードラインＷＬに２個の物理ページ（Ｕｐｐｅｒページ、Ｌｏｗｅｒページ）分のデータが保持される。あるいは、各メモリセルトランジスタＭＴが３ビットの値の記憶を行うトリプルレベルセル（ＴＬＣ）モードでは、各ワードラインＷＬに３個の物理ページ（Ｕｐｐｅｒページ、Ｍｉｄｄｌｅページ、Ｌｏｗｅｒページ）分のデータが保持される。以下では、主として、各ワードラインＷＬに３個の物理ページ分のデータが保持されるＴＬＣ（Ｔｒｉｐｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）モードについて例示する。
【００３５】
（第一の実施形態）
例えば、図４に示すように、不揮発性メモリ（ＮＡＮＤデバイス）３への書き込み時に、不揮発性メモリ３自身が、内蔵温度センサ１２の値（例えば８ビット：１ｓｔｅｐを１℃として±１２７℃）をメモリアレイ１１のワードライン記憶領域ＲＧｗｌ毎に設けられた温度記憶領域ＲＧｔｅｍｐに書き込む。図４は、ワードライン記憶領域ＲＧｗｌの構成を示し、書き込み対象のワードラインがワードラインＷＬｋ（ｋは０以上６３以下の任意の整数）である場合が例示されている。
【００３６】
ワードライン記憶領域ＲＧｗｌは、メモリコントローラ２に開放された領域ＲＧｃｔｌとメモリコントローラ２に非開放である領域ＲＧｕｎｃｔｌとを有する。
【００３７】
領域ＲＧｃｔｌは、メモリコントローラ２からアクセス可能な領域であり、各ページ（Ｕｐｐｅｒページ、Ｍｉｄｄｌｅページ、Ｌｏｗｅｒページ）毎に、ユーザデータ領域（１６ｋＢ）とパリティ領域（２ｋＢ）とを含む。ユーザデータ領域には、ライトコマンドで指定されるユーザデータが書き込まれる。パリティ領域には、ユーザデータに対するＥＣＣ用のパリティ及びファームウェアが用いる管理用データが書き込まれる。
【００３８】
領域ＲＧｕｎｃｔｌは、基本的にメモリコントローラ２からアクセス不可な領域であり、冗長領域ＲＧｒｅｄと温度記憶領域ＲＧｔｅｍｐとを含む。冗長領域ＲＧｒｅｄは、冗長メモリセルが割り当てられた領域である。温度記憶領域ＲＧｔｅｍｐは、制御回路１５により温度の情報が書き込まれるべき専用の領域である。なお、領域ＲＧｕｎｃｔｌは基本的にメモリコントローラ２からアクセス不可な領域であるが、本実施形態では、後述するように、専用のコマンドを設けて、温度記憶領域ＲＧｔｅｍｐに書き込まれた温度の情報をメモリコントローラ２から読み出せるようにする。
【００３９】
温度記憶領域ＲＧｔｅｍｐの例として、ワードラインのページ毎に温度を記憶しても良い。例えば、トリプルレベルセル（ＴＬＣ）モードでは、各ワードラインＷＬに３個の物理ページ（Ｕｐｐｅｒページ、Ｍｉｄｄｌｅページ、Ｌｏｗｅｒページ）分のデータが保持される。図４では、温度記憶領域ＲＧｔｅｍｐが、ＴＬＣモードにおけるワードラインのページ毎（Ｕｐｐｅｒページ、Ｍｉｄｄｌｅページ、Ｌｏｗｅｒページのそれぞれ）に温度を記憶する領域とされる場合を例示している。
【００４０】
例えば、ワードライン記憶領域ＲＧｗｌを拡大して通常より４ｂｙｔｅだけ長くし、温度記憶領域ＲＧｔｅｍｐとする。読み出し時にエラーが多い場合、制御回路１５は、温度記憶領域ＲＧｔｅｍｐを読み出し、ｂｉｔ単位または温度記憶領域ＲＧｔｅｍｐ（８ｂｉｔ）単位での多数決を行う。制御回路１５は、（ｂｉｔ単位、または温度記憶領域ＲＧｔｅｍｐ単位で）最も多い値を書き込み温度と判定することで、書き込み時の温度を推定できる。多数決判定回路を不揮発性メモリ（ＮＡＮＤデバイス）３に実装しても良いが、ここでは、メモリコントローラ２に複数の温度領域を読み出してメモリコントローラ２のファームウェアで多数決を判定する例を記載する。
【００４１】
例えば、＋−１２７の範囲の温度を１℃単位で８ｂｉｔで４組記録する。ｂｉｔ０で±の符号をあらわし、ｂｉｔ１〜７で温度の絶対値を表すものとする。各温度のビットパターンは、以下のようにされ得る。
０ｂ１１１１＿１１１１  ：  −１２７℃
０ｂ１１１１＿１１１０  ：  −１２６℃
・・・
０ｂ１０００＿０００１  ：  −１℃
０ｂ１０００＿００００  ：  −０℃
０ｂ００００＿００００  ：  ＋０℃
０ｂ００００＿０００１  ：  ＋１℃
・・・
０ｂ０１１１＿１１１１  ：  ＋１２７℃
【００４２】
不揮発性メモリ３は、書き込み時に不揮発性メモリ３内部の温度センサ１２から読みだした値を、４組の温度記録領域ＲＧｔｅｍｐに記録する。ここでは、（領域１に記録された温度、領域２に記録された温度、領域３に記録された温度、領域４に記録された温度）と書く。
【００４３】
この例では、温度を記録する領域（温度記憶領域ＲＧｔｅｍｐ）は、物理的にはメモリアレイ１１上は通常のユーザデータ領域やＥＣＣパリティ領域を拡張した領域であるが、論理的には、通常のＲｅａｄコマンドやＰｒｏｇｒａｍコマンドでアクセスできない領域ＲＧｕｎｃｔｌにおく。このため、温度情報領域ＲＧｔｅｍｐを読み出すための専用コマンドを定義する。すなわち、メモリコントローラ２は、以下の専用コマンドを発行可能であり、シーケンサ１６のコマンド解析回路１６１（図１参照）は、以下の専用コマンドを解析可能である。
【００４４】
例えば、メモリコントローラ２は、次のようなシーケンスで温度情報領域ＲＧｔｅｍｐに書き込まれた温度情報を読み出す。
【００４５】
温度情報を読み出さない従来のＲｅａｄシーケンスでは、次の（１−１）〜（１−３）が順に行われる。
（１−１）メモリセルから、データバッファ１４へのデータ読み出し
ページ指定コマンド
−    ００ｈコマンド
−    アドレス入力（５サイクル）
−    ３０ｈ  コマンド
（１−２）データバッファ１４からのデータ読み出し
０５ｈ  コマンド
−    アドレス入力（５サイクル）
−    データ出力（最大  １６ｋＢ  データ  ＋  ２ｋＢ  ＥＣＣパリティ）
−    Ｅ０ｈ  コマンド
以降、必要に応じて、（１−１）と（１−２）とがアドレスを変えて実行される。
（１−３）Ｒｅａｄ動作終了
−    ３Ｆｈ  コマンド
【００４６】
一方、温度情報領域ＲＧｔｅｍｐを読み出すための専用コマンドでは、温度情報を読み出すＲｅａｄシーケンスとして、次の（２−１）〜（２−３）が順に行われる。
（２−１）メモリセルから、データバッファ１４へのデータ読み出し：
（１−１）と同じ
ページ指定コマンド
−    ００ｈコマンド
−    アドレス入力（５サイクル）
−    ３０ｈ  コマンド
（２−２ａ）データバッファ１４からのデータ読み出し
（１−２）と同じ
０５ｈ  コマンド
−    アドレス入力（５サイクル）
−    データ出力（最大  １６ｋＢ  データ  ＋  ２ｋＢ  ＥＣＣパリティ）
−    Ｅ０ｈ  コマンド
以降、必要に応じて（１−１）と（１−２）とがアドレスを変えて実行される。
（２−２ｂ）データバッファ１４からの温度情報を読み出す。
０Ｆｈ  コマンド
−    アドレス入力（５サイクル）
−    温度（  ４Ｂ  温度情報）
−    Ｅ０ｈ  コマンド
以降、必要に応じて（２−１）から（２−２ａ）および（２−２ｂ）がアドレスを変えて実行される。
（２−３）Ｒｅａｄ動作終了
（１−３）と同様
３Ｆｈ  コマンド
【００４７】
ここで、（２−１）で、データバッファ１４にユーザデータ、ＥＣＣ  パリティと一緒に４組の温度情報も転送する。（２−２ａ）のシーケンスでは、データバッファ１４から従来と同様にユーザデータとＥＣＣパリティが読み出される。（２−２ｂ）では、データバッファ１４から、今回追加された４組の温度情報が読み出される。
【００４８】
従来の実装では、１６ｋＢ  ユーザデータ  ＋  ２ｋＢ  ＥＣＣ  パリティよりも後ろのアドレスが指定されたり、１６ｋＢ  ＋  ２ｋＢ  よりも長くＲＥｎ（Ｒｅａｄ  Ｅｎａｂｌｅ信号）を送ってデータが出力される場合には、不定データ、具体的には１６ｋＢ  ＋  ２ｋＢの最後のデータが繰り返し送られたり、ａｌｌ“０”などの固定データが出力される。本実施形態でも、同様に不定データが出力される。
【００４９】
メモリコントローラ２は、通常は、（１−１）〜（１−３）に記載したシーケンスで不揮発性メモリ（ＮＡＮＤデバイス）３からデータを読み出す。このシーケンスで読み出したデータがＥＣＣで訂正できない場合、メモリコントローラ２は、（２−１）〜（２−３）のシーケンスでデータをもう一度読み出す。メモリコントローラ２は、（１−２）でデータを読み出した後、他のアドレスをアクセスしていない場合は、（１−２）の後に（２−２ａ）のコマンドを送ることで温度情報を得ることができる。メモリコントローラ２は、（１−３）のコマンドを送ったあと、次のアドレスをアクセスするための（１−１）のコマンドを送っていなければ（２−２ａ）を送ることで温度情報を得られる実装としても良い。
【００５０】
（２−２ｂ）が実行されて得られた温度情報が、例えば（０ｂ０００１＿１１００，  ０ｂ０００１＿１１０１，  ０ｂ０００１＿１１００，  ０ｂ０００１＿１１００）、つまり、２８℃、２９℃、２８℃、２８℃だった場合、メモリコントローラ２は、２８℃３個、２９℃１個で多数決をとって書き込み温度が２８℃だったと推定する。この場合は、メモリコントローラ２は、ｂｉｔ単位で多数決をとっても、温度情報全体８ｂｉｔでの多数決をとっても結果は同じである。
【００５１】
（２−２ｂ）が実行されて得られた温度情報が、例えば（０ｂ０００１＿１１００，  ０ｂ０００１＿１１０１，  ０ｂ０００１＿１１１０，  ０ｂ０００１＿１０００）、つまり、２８℃、２９℃、３０℃、２４℃だった場合、メモリコントローラ２は、それぞれの温度が１つずつなので多数決をとっても温度は決まらない。この場合は、メモリコントローラ２は、温度を不定としてもよいし、どこか決められた温度情報、たとえば先頭の２８℃と推定してもよいし、すべての温度のメジアンに近いもののうち、値の大きい方として、温度の低い方から高いほうに並べなおした２４℃、２８℃、２９℃、３０℃の後ろから２番目の２９℃と推定してもよい。または、メモリコントローラ２は、この４つの温度情報を、１ｂｉｔずつ多数決をとって、以下のように推定してもよい。
１ｂｉｔ目（０，０，０，０）  の多数決をとって  “０”
２ｂｉｔ目（０，０，０，０）  の多数決をとって  “０”
３ｂｉｔ目（０，０，０，０）  の多数決をとって  “０”
４ｂｉｔ目（１，１，１，１）  の多数決をとって  “１”
５ｂｉｔ目（１，１，１，１）  の多数決をとって  “１”
６ｂｉｔ目（１，１，１，０）  の多数決をとって  “１”
７ｂｉｔ目（０，０，１，０）  の多数決をとって  “０”
８ｂｉｔ目（０，１，０，０）  の多数決をとって  “０”
【００５２】
したがって、１ビットずつ多数決を取る場合、メモリコントローラ２は、全体では、０ｂ０００１＿１１００で＋２８℃と推定する。メモリコントローラ２は、ｂｉｔ毎に同数のものがある場合は決め打ちの値、例えば”１”と推定してもよい。
【００５３】
全体、またはｂｉｔ毎の多数決で決まらない場合は、メモリコントローラ２は、同一ワードラインの別ページ（Ｌｏｗｅｒ  Ｐａｇｅを読んでいる場合には  Ｍｉｄｄｌｅ  Ｐａｇｅ  や  Ｕｐｐｅｒ  Ｐａｇｅ）や、隣接ワードライン（ワードラインＷＬ３を読んでいる場合はワードラインＷＬ２やワードラインＷＬ４）の温度情報から推定してもよい。
【００５４】
不揮発性メモリ３は、書き込み温度について、温度センサ１２から読み出した値（例えば、＋２５℃＝０ｘ００１９）をそのまま冗長カラム４個に４回書き込んでも良いし、（内蔵スクランブラなど、別の既知の方法で発生させた、もしくは外部（コントローラ）からデータとして入力した）擬似乱数とＸＯＲをとって、４個の１バイトの擬似乱数として書き込んでも良い。内蔵スクランブラを使う場合は、不揮発性メモリ３は、内部でスクランブルを解除してデータ出力しても良いし、スクランブルされたデータを読み出してコントローラ側でスクランブルを解除しても良い。メモリコントローラ２からスクランブル用データを不揮発性メモリ（ＮＡＮＤデバイス）３に入力する場合は、スクランブルされたデータをメモリコントローラ２が読み出し、メモリコントローラ２でスクランブルを解除する。メモリコントローラ２でスクランブルを解除する場合には、スクランブルを解除してから多数決を取る。温度情報をＴＬＣの３ページの同じカラムに記録する場合、ほぼ同じ温度コードになる可能性が高いため、３ページの同一カラムの（Ｌｏｗｅｒページ，Ｍｉｄｄｌｅページ，Ｕｐｐｅｒページ）に記録される値が（０，０，０）または（１，１，１）の組み合わせになりやすい。このため、各実施形態には特に記載しないが、外部から入力した疑似乱数や、内蔵スクランブラで発生させた疑似乱数と温度情報をＸＯＲして記録して、（０，０，０）や（１，１，１）の組み合わせになる確率を下げる実装にしても良い。また、この実施形態では書き込み時の温度情報８ｂｉｔをそのまま記録しているが、温度情報に＋６４などのオフセットをかけて記録する実装にしても良い。
【００５５】
以上のように、本実施形態では、不揮発性メモリ３において、制御回路１５が、メモリアレイ１１にデータを書き込む際に、メモリアレイ１１におけるデータが書き込まれない記憶領域に内蔵の温度センサ１２で検知された温度の情報を書き込む。これにより、書き込み時の温度を適正に記録して管理することができる。したがって、メモリコントローラ２は、書き込み時の適正な温度を知ることができ、温度交差問題への対処方法の選択肢、自由度を飛躍的に高めることができる。
【００５６】
（第１の実施形態の第１の変形例）
なお、実施形態の（２−２ｂ）では、メモリコントローラ２は、データバッファ１４から、今回追加された４組の温度情報を読み出す。動作上は温度情報の記録されたカラムを出力するだけなので、０Ｆｈ  コマンドという新規コマンドを実装する代わりに、０５ｈ  コマンドで指定できるカラムアドレスを１６ｋＢ  ユーザデータ領域と２ｋＢ  ＥＣＣパリティ領域の外まで指定できるようにして、１８ｋＢ〜１８ｋＢ＋４Ｂでは温度情報を出力する実装としても良い。
【００５７】
従来の実装では、１６ｋＢ  ユーザデータ  ＋  ２ｋＢ  ＥＣＣ  パリティよりも後ろのアドレスを指定したり、１６ｋＢ  ＋  ２ｋＢ  よりも長くＲＥｎ（Ｒｅａｄ  Ｅｎａｂｌｅ信号）を送ってデータ出力させる場合には、不定データ、具体的には、１６ｋＢ  ＋  ２ｋＢの最後のデータが繰り返し送られたり、ａｌｌ“０”などの固定データが出力される。実施形態でも、同様に不定データが出力されるが、本変形例では、温度情報領域が１８ｋＢ  のデータ＋ＥＣＣパリティの後ろに配置されるので、不定データのかわりに温度情報４Ｂｙｔｅが出力されても良い。
【００５８】
（第１の実施形態の第２の変形例）
図５に示すように、ワードライン記憶領域ＲＧｗｌにおける温度記憶領域ＲＧｔｅｍｐの例として、ワードライン毎に温度がＳＬＣとして記憶されても良い。図５は、実施形態の第２の変形例におけるワードライン記憶領域ＲＧｗｌの構成を示す図である。この場合、温度記憶領域ＲＧｔｅｍｐに書き込まれる温度の情報の信頼性を向上できる。
【００５９】
（第２の実施形態）
図６に示すように、不揮発性メモリ３への書き込み時に、不揮発性メモリ３自身が、内蔵温度センサの値（例えば８ビット：  １  ｓｔｅｐを１℃として±１２７℃）をＮＡＮＤの不良カラム救済用の冗長カラムＲＧｒｅｄ（例えば  ２バイト単位で  ３２組）に、冗長カラム数分（この例では  ３２組＊２個／組＝６４組）セットして、メタデータとして書き込んでもよい。図６は、第２の実施形態におけるワードライン記憶領域ＲＧｗｌの構成を示す図である。
【００６０】
読み出し時にエラーが多い場合、メモリコントローラ２は、冗長カラムを読み出し、ｂｉｔ単位またはカラム（８ｂｉｔ）単位での多数決を行う。メモリコントローラ２は、（ｂｉｔ単位、またはカラム単位で）最も多い値を書き込み温度と判定することで、書き込み時の温度をワードライン毎に（もしくは、ＴＬＣではワードライン内のページ毎に）推定できる。
【００６１】
制御回路１５は、書き込み温度について、温度センサ１２から読み出した値（例えば＋２５℃＝０ｘ００１９）をそのまま冗長カラム６４個に６４回書き込んでも良いし、（内蔵スクランブラなど、別の既知の方法で発生させた、もしくは外部（メモリコントローラ２）からデータとして入力した）擬似乱数とＸＯＲをとって、６４個の１バイトの擬似乱数として書き込んでも良い。
【００６２】
従来の実装では、１６ｋＢ  ユーザデータ  ＋  ２ｋＢ  ＥＣＣ  パリティよりも後ろのアドレスを指定したり、１６ｋＢ  ＋  ２ｋＢ  よりも長くＲＥｎ（Ｒｅａｄ  Ｅｎａｂｌｅ信号）を送ってデータ出力させる場合には、不定データ、具体的には１６ｋＢ  ＋  ２ｋＢの最後のデータが繰り返し送られたり、ａｌｌ“０”などの固定データが出力される。本変形例でも、第１の実施形態と同様に、温度情報読み出し専用コマンドとして（第１の実施形態と同じ）０Ｆｈ  コマンドが定義されても良い。具体的なシーケンスは第１の実施形態の（２−１）〜（２−５）と同じ実装で良い。シーケンスは同じだが、温度情報が書き込まれている領域が、第１の実施形態では、温度専用に拡張したカラム領域であるのに対し、本実施形態では、従来からある冗長カラムを温度記録用領域としてアサインされるところが異なる。
【００６３】
第１の実施形態のように温度情報専用の領域を追加するのではなく、本実施形態では、従来からある不良カラム救済用の冗長カラムを流用するため、不良カラムが多くてすべての拡張カラムが不良カラムの置き換えに使われてしまうこともあるが、以下の理由により、実際問題として温度情報が得られなくなってしまう可能性は低いので信頼性が低下する可能性は大きくはない。
（理由１）：ほぼすべての冗長カラムが不良カラムの置き換えに使われる可能性は低い。
（理由２）：通常の訂正手法で訂正不可能でリトライリードを実行する場合にのみ、書き込み時の温度情報が必要になる。
【００６４】
従来の実装では、１６ｋＢ  ユーザデータ  ＋  ２ｋＢ  ＥＣＣ  パリティよりも後ろのアドレスを指定したり、１６ｋＢ  ＋  ２ｋＢ  よりも長くＲＥｎ（Ｒｅａｄ  Ｅｎａｂｌｅ信号）を送ってデータが出力される場合には、不定データ、具体的には１６ｋＢ  ＋  ２ｋＢの最後のデータが繰り返し送られたり、ａｌｌ“０”などの固定データが出力される。実施形態でも、同様に不定データが出力されるが、本実施形態でも、第２の変形例と同様に、温度情報領域が１８ｋＢのデータ＋ＥＣＣパリティの後ろに配置されるので、不定データのかわりに温度情報４Ｂｙｔｅが出力されても良い。
【００６５】
（第３の実施形態）
図７に示すように、不揮発性メモリ３への書き込み時に、不揮発性メモリ３自身が、内蔵温度センサ１２の値（例えば８ビット：１ｓｔｅｐを１℃として±１２７℃）をメモリアレイ１１におけるダミーワードラインＤＷＬの決められた領域に書き込んでもよい。決められた領域の例として、ダミーワードラインＤＷＬの先頭６４バイトに、６４組セットして、メタデータとして書き込んでもよい。
【００６６】
読み出し時にエラーが多い場合、メモリコントローラ２は、ダミーワードラインＤＷＬを読み出し、ｂｉｔ単位またはカラム（８ｂｉｔ）単位での多数決を行う。メモリコントローラ２は、ｂｉｔ単位、またはカラム単位で）最も多い値を書き込み温度と判定することで、ブロック書き込み時の温度を推定できる。（スクランブラは、実施形態と同様に使える）。
【００６７】
メモリコントローラ２は、ダミーワードラインＤＷＬの読み出しについて、通常のＲｅａｄコマンドのアドレスにダミーワードラインＤＷＬのアドレスを指定しても良いし、新規コマンド、例えば第１の実施形態の（２−２ａ）の０Ｆｈ  コマンドを以下に示すようにダミーワードラインＤＷＬの読み出し用コマンドとして使っても良い。
【００６８】
メモリコントローラ２は、温度情報を読み出すＲｅａｄシーケンスとして、次の（２−２）〜（２−４）を順に行う。
（２−２）メモリセルから、データバッファ１４へのデータ読み出し：
（１−１）と同じ
ページ指定コマンド
−    ００ｈコマンド
−    アドレス入力（５サイクル）
−    ３０ｈ  コマンド
（２−２ａ）データバッファ１４からのデータ読み出し
（１−２）と同じ
０５ｈ  コマンド
−    アドレス入力（５サイクル）
−    データ出力（最大  １６ｋＢ  データ  ＋  ２ｋＢ  ＥＣＣパリティ）
−    Ｅ０ｈ  コマンド
以降、必要に応じて（１−１）と（１−２）とがアドレスを変えて実行される。
（２−２ｂ）データバッファ１４からの温度情報の読み出し
０Ｆｈ  コマンド
−    アドレス入力（５サイクル）でダミーＷＬを指定
−    温度（  ４Ｂ  温度情報）
−    Ｅ０ｈ  コマンド
以降、必要に応じて（２−１）から（２−２ａ）および（２−２ｂ）がアドレスを変えて実行される。
（２−４）Ｒｅａｄ動作終了
（１−３）と同様
３Ｆｈ  コマンド
【００６９】
（第４の実施形態）
不揮発性メモリ３への書き込み時に、不揮発性メモリ３自身が、内蔵温度センサの値（例えば８ビット：１ｓｔｅｐを１℃として±１２７℃）をメモリアレイ１１の各ワードラインＷＬへ書き込むべきデータの一部、もしくは全体に対する初期値とする。例えば、不揮発性メモリ３は、ライトコマンドを受信すると、ライトデータをデータバッファ１４へ格納する前に、データバッファ１４（図１参照）上の記憶領域（例えば、１ページ分の記憶領域）を初期値で初期化する。通常、初期値は、所定のビットパターン（例えば、ａｌｌ“１”）が用いられるが、本実施形態では、所定のビットパターンに代えて、温度情報を初期値として用いてデータバッファ１４上の記憶領域を初期化する。これにより、データバッファ１４上の記憶領域において、ライトデータで上書きされない部分記憶領域が存在すれば、部分記憶領域には、温度情報が引き続き格納されていることになる。以下、本実施形態としては、ワードラインＷＬの一部、例えば各ワードラインＷＬの１ページ１８ｋＢデータのうち、最後の３２バイト、に１バイトの温度情報を３２回繰り返したものをワードラインＷＬの初期値とする。
【００７０】
本実施形態では、メモリアレイ１１の１８ｋＢの通常のユーザデータ  ＋  ＥＣＣパリティ領域の初期値に温度情報が使われるので、メモリコントローラ２は、メモリアレイ１１からのリードについて、従来の通常のリードコマンドをそのまま使える。メモリコントローラ２は、書き込み時には従来の書き込みコマンドをそのまま使っても良いし、温度情報を初期値に使う新規コマンドを使っても良い。以下の本実施形態では、新規コマンド（８３ｈコマンド）が定義される場合を記載する。以下の説明では、新規コマンド８３ｈでは温度情報をそのまま初期値とする例を記載しているが、外部から入力した疑似乱数や、内蔵スクランブラで発生させた疑似乱数と温度情報をＸＯＲして記録して、（０，０，０）や（１，１，１）の組み合わせになる確率を下げる実装にしても良い。
【００７１】
メモリコントローラ２は、例えば、次のようなシーケンスで温度情報を読み出す。
【００７２】
例えば、メモリコントローラ２は、温度情報を初期値として使わない従来Ｐｒｏｇｒａｍシーケンスとして、次の（１−１）〜（１−４）を順次に行う。
（１−１）アドレス指定、データ入力
−    ０１ｈコマンド（ＴＬＣのＬｏｗｅｒ  ページ指定コマンド）
−    ８０ｈコマンド（Ｐｒｏｇｒａｍコマンド）
−    アドレス入力（５サイクル）
−    データ入力（１６ｋＢ  データ  ＋  ２ｋＢ  ＥＣＣパリティ）
−    １Ａｈ  コマンド（データバッファの切り替え）
（１−２）
−    ０２ｈコマンド（ＴＬＣのＭｉｄｄｌｅページ指定コマンド）
−      −  ８０ｈコマンド（Ｐｒｏｇｒａｍコマンド）
−    アドレス入力（５サイクル）
−    データ入力（１６ｋＢ  データ  ＋  ２ｋＢ  ＥＣＣパリティ）
−    １Ａｈ  コマンド（データバッファの切り替え）
（１−３）
−    ０３ｈコマンド（ＴＬＣのＵｐｐｅｒページ指定コマンド）
（１−４）
−    −  ８０ｈコマンド（Ｐｒｏｇｒａｍコマンド）
−    アドレス入力（５サイクル）
−    データ入力（１６ｋＢ  データ  ＋  ２ｋＢ  ＥＣＣパリティ）
−    １０ｈ  コマンド（Ｐｒｏｇｒａｍ実行）
このシーケンスでは、メモリコントローラ２は、８０ｈ  コマンドを使うことでＰｒｏｇｒａｍ用のデータバッファをａｌｌ“１”で初期化したあとで、書き込むデータを入力する。
【００７３】
書き込みデータのサイズが、Ｌｏｗｅｒ／Ｍｉｄｄｌｅ／Ｕｐｐｅｒの各ページよりも小さければ，データ入力されていない領域はａｌｌ“１”として書き込まれる。
【００７４】
例えば、メモリコントローラ２は、温度情報でデータバッファ１４（図１参照）上の記憶領域（例えば、１ページ分の記憶領域）を初期化する新規のＰｒｏｇｒａｍシーケンスとして、次の（２−１）〜（２−４）を順次に行う。
（２−１）アドレス指定、データ入力
−    ０１ｈコマンド（ＴＬＣのＬｏｗｅｒページ指定コマンド）
−    ８３ｈコマンド（データバッファの最後の３２バイトを温度情報１バイトの繰り返し３２回、データバッファのそれ以外をａｌｌ“１”で初期化するＰｒｏｇｒａｍコマンド）
−    アドレス入力（５サイクル）
−    データ入力（１６ｋＢ  データ  ＋  ２ｋＢ  ＥＣＣパリティ）
−    １Ａｈ  コマンド（データバッファの切り替え）
（２−２）
−    ０２ｈコマンド（ＴＬＣのＭｉｄｄｌｅページ指定コマンド）
−    ８３ｈコマンド（データバッファの最後の３２バイトを温度情報１バイトの繰り返し３２回、データバッファのそれ以外をａｌｌ“１”で初期化するＰｒｏｇｒａｍコマンド）
−    アドレス入力（５サイクル）
−    データ入力（１６ｋＢ  データ  ＋  ２ｋＢ  ＥＣＣパリティ）
−    １Ａｈ  コマンド（データバッファの切り替え）
（２−３）
−    ０３ｈコマンド（ＴＬＣのＵｐｐｅｒページ指定コマンド）
−    ８３ｈコマンド（データバッファの最後の３２バイトを温度情報１バイトの繰り返し３２回、データバッファのそれ以外をａｌｌ“１”で初期化するＰｒｏｇｒａｍコマンド）
−    アドレス入力（５サイクル）
−    データ入力（１６ｋＢ  データ  ＋  ２ｋＢ  ＥＣＣパリティ）
−    １０ｈ  コマンド（Ｐｒｏｇｒａｍ実行）
【００７５】
このシーケンスでは、メモリコントローラ２は、新規に定義した８３ｈ  コマンドを使うことでＰｒｏｇｒａｍ用のデータバッファの最後の３２バイトを１バイトの温度情報を３２回繰り返した初期化、データバッファのそれ以外の領域をａｌｌ“１”で初期化したあとで、書き込むデータを入力する。
【００７６】
書き込みデータのサイズが、Ｌｏｗｅｒ／Ｍｉｄｄｌｅ／Ｕｐｐｅｒの各ページよりも小さければ，データ入力されていない領域は最後の３２バイト以外はａｌｌ“１”、最後の３２バイトのうちデータ入力されていない領域には温度情報が書き込まれる。
【００７７】
すなわち、書き込みデータサイズを１６ｋＢ  ユーザデータ＋２ｋＢ  ＥＣＣパリティよりも小さく抑えると、図８に示すように、３２バイトの温度情報の全部、もしくは一部が上書きされずにデータとしてメモリアレイ１１に書き込まれるので、従来のＲｅａｄコマンドで各ワードラインＷＬの最後の３２バイトを読み出せば、書き込み時の温度情報を読み出すことができる。図８は、第４の実施形態におけるワードライン記憶領域ＲＧｗｌの構成を示す図である。
【００７８】
（第５の実施形態）
ワードライン記憶領域ＲＧｗｌにおいて、温度記憶領域ＲＧｔｅｍｐを複数（４Ｂｙｔｅ）設けるのではなく、温度記憶領域ＲＧｔｅｍｐだけＳＥＣＤＥＤ（１ｂｉｔ誤り訂正、２ｂｉｔ誤り検出）などのＥＣＣで保護してもよい。例えば、シーケンサ１６（図１参照）は、温度記憶領域ＲＧｔｅｍｐの温度情報についてＳＥＣＤＥＤなどのＥＣＣを行い、そのＥＣＣパリティを温度記憶領域ＲＧｔｅｍｐに追記してもよい。また、シーケンサ１６は、温度記憶領域ＲＧｔｅｍｐから温度情報を読み出した際に、ＥＣＣパリティを用いて温度情報の誤り訂正（エラー訂正）を行ってもよい。これにより、多数決でなく、エラー訂正で書き込み時の温度を推定できる。なお、誤り訂正できず、誤り検出した場合には、温度は「書き込み温度は不定」としてもよい。
【００７９】
（第６の実施形態）
また、ワードライン記憶領域ＲＧｗｌにおいて、温度の数値そのものでなく、温度範囲を複数に分けて、書き込み時に、どの温度領域にあったかが記録されてもよい。
【００８０】
例えば、＋８５℃以上で書き込んだ場合”１”、それ以外の場合に”０”という１ｂｉｔの情報が記録される。不揮発性メモリ３は、この１ｂｉｔの情報を例えば２ｂｙｔｅの領域に１６回記録する。シーケンサ１６（図１参照）は、１６回記録された情報を読み出し、それらについて多数決をとって温度の情報を推定してもよい。
【００８１】
（第６の実施形態の第１の変形例）
別の例では、不揮発性メモリ３は、−１０℃未満、−１０℃以上＋８５℃未満、＋８５℃以上＋１２５℃未満、＋１２５℃以上の４つの領域にわけ、それぞれを“００”，“０１”，“１０”，“１１”という２ｂｉｔの４状態で記録する。不揮発性メモリ３は、この２ｂｉｔの情報を２ｂｙｔｅの領域に８回記録する。シーケンサ１６（図１参照）は、８回記録された情報を読み出し、それらについて多数決をとって温度の情報を推定してもよい。
【００８２】
（第７の実施形態）
第１の実施形態、又は上記の第６の実施形態などで温度範囲を複数に分けて記録するような方式で記憶した温度情報や温度領域を、読み出し時に不揮発性メモリ（ＮＡＮＤデバイス）３自身が読み出し、ＥＣＣ訂正や多数決をとり、メモリアレイ１１の読み出し時の温度情報と一緒に使うことで読み出しＶｔｈや、読み出し速度などを調整する。これにより、書き込み温度が極端な高温だったり、極端な低温だったり、書き込み温度と読み出し温度の差が大きい場合に、メモリアレイ１１の読み出しデータのエラービット数を小さくすることができる。
【００８３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８４】
１  メモリシステム、２  メモリコントローラ、３  不揮発性メモリ、１１  メモリアレイ、１２  温度センサ、１３  Ｉ／Ｏインタフェース、１５  制御回路。
【図１】
2020155167.tif 000003
【図２】
2020155167.tif 000004
【図３】
2020155167.tif 000005
【図４】
2020155167.tif 000006
【図５】
2020155167.tif 000007
【図６】
2020155167.tif 000008
【図７】
2020155167.tif 000009
【図８】
2020155167.tif 000010