実施形態にかかる不揮発性メモリは、データを不揮発に記憶するが、その記憶の信頼性が使用温度に依存する特性を有する。例えば、不揮発性メモリでは、ライト動作時の温度と、リード動作時の温度と、によって、エラービット数を最小にする検出電圧Vsenseが変動する。
ここで、実施形態と比較される技術について説明する。実施形態と比較される技術を、比較例と表記する。比較例によれば、不揮発性メモリでは、温度補正を行わないか、または、温度センサでリード時に検出された温度を用いて検出電圧Vsenseの補正を行う。
リード時の温度を用いる場合、検出電圧Vsenseを適正に補正できない場合がある。例えば、データのライト時の温度とリード時の温度とが大きく異なる場合、すなわち温度交差がある場合、リード時の温度に基づいて得られる検出電圧Vsenseは、適正な検出電圧Vsense、つまりエラービット数を最小にする検出電圧Vsenseから乖離する。このようなケースでは、比較例のメモリシステムのエラービット数は増加する可能性がある。
比較例では、ライト時の温度情報は不揮発性メモリの外部に設けられたメモリコントローラで管理し、記録する。例えば、メモリコントローラからの温度ステータス取得コマンドに応じて不揮発性メモリが温度を検出する。不揮発性メモリは、検出した温度情報をメモリコントローラに返す。温度情報は、メモリコントローラからのコマンドに応じて不揮発性メモリのメモリセルアレイにメタデータとしてライトされる。この場合、温度が検出される時点とデータのライト時点とにタイムラグがある。よって、リード時に検出された温度とメタデータ中の温度情報とを用いて補正を行っても、温度交差の補正を正確に行うことが困難である。
また、メモリコントローラにより管理される温度は、データのライトの単位より大きな単位(例えば、ブロック単位)について代表される情報である。そのため、メモリコントローラがデータのライトの単位ごとにメタデータの温度を参照した場合に、その温度がライト時点の温度から大きく乖離している可能性がある。この観点からも、リード時に検出された温度とメタデータ中の温度情報とを用いて温度交差の補正を行っても、温度交差の補正を正確に行うことは困難である。
また、不揮発性メモリの使用温度の記録は、故障解析のための情報として重要である。比較例では、データのライトの単位より大きな単位について、代表される温度情報が記録される。そのため、故障解析の際に、メモリコントローラがデータのライトの単位ごとに温度情報を参照した場合に、ライト時の正確な温度を知ることができない。
そこで、本実施形態では、不揮発性メモリにおいて、メモリセルアレイにデータをライトする際、メモリセルアレイにおける冗長な記憶領域に、内蔵の温度センサで検出された温度情報を制御回路がライトする。これによって、データのライト時の温度情報が適正に記録・管理される。
以下に添付図面を参照して、実施形態にかかる不揮発性メモリを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリチップ10を備えたメモリシステム1の構成の一例を示す模式的な図である。
メモリシステム1は、ホスト100に通信可能に接続され、ホスト100に対する外部記憶装置として機能する。メモリシステム1は、メモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。ホスト100は、例えば、パーソナルコンピュータ、サーバ、ストレージボックスなどの情報処理装置であってもよいし、携帯電話、撮像装置、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
メモリシステム1は、メモリコントローラ2、およびメモリ群3を有する。メモリコントローラ2は、ホストインタフェース21、メモリインタフェース22、制御部23、およびECC(Error Checking and Correction)部24を有する。メモリ群3は、複数のメモリチップ10-1~10-nを備える。複数のメモリチップ10-1~10-n(nは、任意の2以上の整数)のそれぞれをメモリチップ10と表記する。なお、メモリチップ10は、実施形態の不揮発性メモリの一例である。
メモリコントローラ2は、例えばSoC(System-on-a-Chip)として構成される半導体集積回路である。以下で説明するメモリコントローラ2の各構成要素の動作の一部又は全部は、CPU(Central Processing Unit)がファームウェアを実行することによって実現されてもよいし、ハードウェアで実現されてもよい。
メモリコントローラ2において、メモリインタフェース22は、メモリバス5によってメモリ群3に接続され、ホストインタフェース21は、ホストバス6によってホスト100に接続される。制御部23は、ホスト100からホストインタフェース21を介して受信されたホストライトコマンドに従って、メモリ群3へのライト処理を制御する。また、制御部23は、ホスト100からホストインタフェース21を介して受信されたホストリードコマンドに従って、メモリ群3からのリード処理を制御する。ホストバス6の準拠する規格としては、たとえば、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、PCIe(登録商標)(Peripheral Component Interconnect express)(NVM express(登録商標)を含む)など、任意の規格が採用可能である。
メモリバス5は、メモリインタフェース22に従った信号の送受信を行う。メモリインタフェース22がいわゆるNANDインタフェースである場合、この信号の具体例には、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディ・ビジー信号RBn、入出力信号I/O等が含まれ得る。
信号CEnは、メモリチップ10をイネーブルにするための信号である。信号CLEは、メモリチップ10への入力信号I/Oがコマンドであることをメモリチップ10に通知する信号である。信号ALEは、メモリチップ10への入力信号I/Oがアドレスであることをメモリチップ10に通知する信号である。信号WEnは入力信号I/Oをメモリチップ10に取り込ませるための信号である。信号REnは、メモリチップ10から出力信号I/Oをリードするための信号である。レディ・ビジー信号RBnは、メモリチップ10がレディ状態(メモリコントローラ2からのコマンドを受信できる状態)であるか、それともビジー状態(メモリコントローラ2からのコマンドを受信できない状態)であるかを示す信号である。入出力信号I/Oは、例えば8ビットの信号である。入出力信号I/Oは、メモリチップ10とメモリコントローラ2との間で送受信されるデータの実体であり、コマンド、アドレス、ライトデータ(ライト対象のデータ)、リードデータ(リードされたデータ)等である。
ECC部24は、リードデータにおける誤り検出および誤り訂正のために、データの符号化および復号を行う。具体的には、ECC部24は、メモリ群3にライトされるデータ(ライトデータ)を符号化する。また、ECC部24は、メモリ群3からリードされたデータ(リードデータ)を復号する。ECC部24は、復号によって、リードデータにおける誤り検出および誤り訂正を実行する。ECC部24は、誤り訂正に失敗した場合には、誤り訂正の失敗を制御部23に通知する。ECC部24による符号化および復号のアルゴリズムには、RS(リード・ソロモン)符号やBCH(Bose-Chaudhuri-Hocquenghem)符号や低密度パリティ検査(LDPC)符号等を用いた任意のアルゴリズムを適用することが可能である。
例えば、ライト処理時において、ECC部24は、制御部23による制御のもと、ライトコマンドでメモリ群3にライトすべきユーザデータを受け、ユーザデータに基づいてパリティを生成し、パリティをユーザデータに付してライトデータとする。メモリ群3には、パリティを含むライトデータが、符号化データとしてライトされる。
リード処理時において、ECC部24は、制御部23による制御のもと、リードコマンドでメモリ群3からリードされたリードデータを受け、リードデータからパリティを抽出する。ECC部24は、パリティに基づきシンドロームを生成し、ユーザデータ内のエラービットの有無を判断する。ECC部24は、ユーザデータにエラービットが含まれる場合、エラービットの位置を特定する。ECC部24が訂正可能なエラービットの数は、例えばパリティのビット数等によって決まる。訂正可能なエラービットの数以下のエラービットがユーザデータに含まれる場合、ECC部24は、そのエラービットを訂正し、訂正成功の旨を制御部23へ通知する。訂正可能なエラービットの数を超える数のエラービットがユーザデータに含まれる場合には、ECC部24は、誤り訂正ができない(uncorrectable)として、訂正失敗の旨を制御部23へ通知する。
メモリ群3を構成するメモリチップ10は、データを不揮発に記憶するメモリであり、例えば、NAND型フラッシュメモリ(以下、NANDデバイスともいう)である。以下の説明では、メモリチップ10としてNANDデバイスが用いられた場合を例示するが、メモリ群3として3次元構造フラッシュメモリ、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)等のNANDデバイス以外の記憶媒体を用いることも可能である。
各メモリチップ10は、メモリセルアレイ11、温度センサ12、I/Oインタフェース13、データバッファ14、および制御回路15を有する。制御回路15は、シーケンサ16、ロウモジュール17、およびカラムモジュール18を有する。
ロウモジュール17は、ロウデコーダおよびドライバ回路を有し、ロウデコーダで、アクセス対象のブロックを選択し、更に選択したブロックにおけるロウを選択する。ドライバ回路は、選択されたブロックに対して、ロウデコーダを介して電圧を供給する。
カラムモジュール18は、センスアンプと、複数のラッチ回路よりなるデータラッチと、を含む。カラムモジュール18は、プログラム動作においては、メモリコントローラ2からI/Oインタフェース13およびデータバッファ14を介してデータラッチへ供給されたライトデータをメモリセルアレイ11にライトする。また、カラムモジュール18は、リード動作においては、メモリセルアレイ11にライトされたデータをセンスし、必要な演算を行う。そして、カラムモジュール18は、得られたリードデータをデータラッチ、データバッファ14、およびI/Oインタフェース13を介してメモリコントローラ2に出力する。
なお、本明細書中で、プログラム動作は、メモリチップ10においてメモリセルアレイ11にデータをライトする一連の動作のことである。リード動作は、メモリチップ10においてメモリセルアレイ11からデータをリードする一連の動作のことである。イレース動作は、メモリチップ10においてメモリセルアレイ11内のデータをイレースする動作のことである。
温度センサ12は、メモリチップ10におけるメモリセルアレイ11の周辺に配され、メモリセルアレイ11の周辺の温度を検出し、検出された温度を示す信号TEMPを生成する。
メモリセルアレイ11は、複数のメモリセルトランジスタMTを有する。各メモリセルトランジスタMTは、ロウおよびカラムに対応付けられている。メモリセルアレイ11は、メモリコントローラ2からライトコマンドで指示されたデータを記憶する。
図2は、第1の実施形態のメモリセルアレイ11の構成の一例を示す模式的な図である。
メモリセルアレイ11は、複数のブロック30を備える。1つのブロック30にライトされたデータは、一括にイレースされる。各ブロック30は、複数のメモリセルグループMCGを備える。各ブロックに対しては、メモリセルグループMCGの単位でプログラム動作およびリード動作が実行される。
図3は、第1の実施形態のブロック30の回路構成の一例を示す模式的な図である。各ブロックは、共通した回路構成を有する。
ブロック30は、複数のストリングユニットSU0~SU3を有する。複数のストリングユニットSU0~SU3は、複数の選択ゲートラインSGDL0~SGDL3に対応しているとともに選択ゲートラインSGSLを共有している。各ストリングユニットSU0~SU3は、ブロック30における駆動単位として機能する。各ストリングユニットSU0~SU3は、複数の選択ゲートラインSGDL0~SGDL3のうちその対応する選択ゲートラインと選択ゲートラインSGSLとで駆動され得る。また、各ストリングユニットSU0~SU3は、複数のメモリストリングMSTを含む。
各メモリストリングMSTは、例えば64個のメモリセルトランジスタMT(MT0~MT63)および選択トランジスタSDT,SSTを含んでいる。メモリセルトランジスタMTは、コントロールゲートと電荷蓄積膜とを有し、データを不揮発に保持する。そして64個のメモリセルトランジスタMT(MT0~MT63)は、選択トランジスタSDTのソースと選択トランジスタSSTのドレインとの間に直列接続されている。なお、メモリストリングMST内のメモリセルトランジスタMTの個数は64個に限定されない。
複数のワード線WL0~WL63は、ブロック30内の各ストリングユニットSU内の各メモリストリングMST間で、メモリセルトランジスタMTのコントロールゲートを共通に接続している。つまり、ブロック30内の各ストリングユニットSU内において同一行にあるメモリセルトランジスタMTのコントロールゲートは、同一のワード線WLに接続される。すなわち、ブロック30のストリングユニットSUは複数のワード線WLに対応した複数のメモリセルグループMCGを含み、各メモリセルグループMCGは同一のワード線WLに接続される(p+1)個のメモリセルトランジスタMTを含む。
メモリセルグループMCGごとにプログラム動作およびリード動作が行われる。そして、メモリセルトランジスタMTにライトされる1ビットのデータをメモリセルグループMCGの分だけ集めたデータは、ページとして扱われる。
以降、メモリセルトランジスタMTを単にメモリセルMTと表記する。
プログラム動作においては、メモリセルMTのしきい値電圧は、データに対応した区間に設定される。より具体的には、メモリセルMTのしきい値電圧がとり得る範囲は、Nビット(ただしNは1以上の整数)のそれぞれ異なるデータが対応付けられた2N個の区間に分割される。そして、プログラム動作においては、メモリセルMTの電荷蓄積層に電荷が注入されることによって、当該メモリセルMTのしきい値電圧が2N個の区間のうちのデータに対応した区間内に設定される。
リード動作においては、隣り合う区間の境界に対応した1以上の電圧が検出電圧Vsenseとして順次印加されることにより、メモリセルMTのしきい値電圧を含む区間が特定される。そして、特定された区間に対応するデータが、メモリセルMTに格納されていたデータとして取得される。
メモリセルMTには、1以上のビット数のデータが格納され得る。メモリセルMTに1ビットのデータが格納される方式は、SLC(Single Level Cell)と称される。メモリセルMTに2ビットのデータが格納される方式は、MLC(Multi Level Cell)と称される。メモリセルMTに3ビットのデータが格納される方式は、TLC(Triple Level Cell)と称される。メモリセルMTに4ビットのデータが格納される方式は、QLC(Quad-Level Cell)と称される。メモリセルMTに5ビットのデータが格納される方式は、PLC(Penta-Level Cell)と称される。
実施形態は、メモリセルMTに2以上のビット数のデータが格納される方式であれば、任意の方式が適用可能である。以下では一例として、TLCの方式が適用された場合について説明する。
図4は、第1の実施形態のメモリチップ10においてTLCモードでライト動作が実行された場合に形成される、メモリセルMTのしきい値電圧の複数の分布の一例を示す図である。
TLCの場合、それぞれは異なる3ビットのデータが対応付けられた8個の区間R0~R7が設けられる。
例えば最も低電圧側には、電圧Va1までの区間R0が設けられる。区間R0よりも高電圧側には、電圧Va1から電圧Vc2までの区間R1、電圧Va2から電圧Va3までの区間R2、電圧Va3から電圧Vc4までの区間R3、電圧Va4から電圧Va5までの区間R4、電圧Va5から電圧Vc6までの区間R5、電圧Va6から電圧Va7までの区間R6、電圧Va7からの区間R7が設けられる。
プログラム動作では、各メモリセルMTのしきい値電圧は、データに対応した区間内に設定される。その結果、複数のメモリセルMTのしきい値電圧は、区間毎にローブ状の分布を形成する。区間RXを状態SXと表記する場合がある。Xは、2以上の整数であり、図4に示される例では、0から7までの整数である。
イレース動作では、メモリセルMTのしきい値電圧は、電圧Vc1よりも低い状態、即ちS0、に設定される。つまり、状態S0は、データがイレースされた状態とも見なされる。イレース動作の後に実行されるプログラム動作によって、メモリセルMTのしきい値電圧は、状態S0~S7のうちの何れかに設定される。なお、メモリセルMTのしきい値電圧が状態S0に設定されるとは、メモリセルMTのしきい値電圧の上昇が行われずに、メモリセルMTが状態S0に維持されることと同義である。
リード動作では、隣り合う区間Rの境界に対応する電圧が検出電圧Vsenseとして設定されることによって、メモリセルMTのしきい値電圧がどの区間RX(換言すると状態SX)に含まれるかが判定される。例えば、図4に示された電圧Va1、Va2、Va3、Va4、Va5、Va6、およびVa7が検出電圧Vsenseとして使用される。
TLCの方式によれば、各メモリセルMTには、3ビットのデータが格納される。3ビットのうちのLSB(Least Significant Bit)はロアービット、MSB(Most Significant Bit)はアッパービット、LSBとMSBとの間のビットはミドルビットと称される。また、3ビットのデータのうちのロアービットのデータをメモリセルグループMCGの分だけ集めたデータは、ロアーページと称される。3ビットのデータのうちのアッパービットのデータをメモリセルグループMCGの分だけ集めたデータは、アッパーページと称される。3ビットのデータのうちのミドルビットのデータをメモリセルグループMCGの分だけ集めたデータは、ミドルページと称される。
前述されたように、しきい値電圧が設定され得る各区間RX(換言すると各状態SX)には、データが対応付けられている。区間RXとデータとの対応関係は、データコーディングと称される。
図5は、第1の実施形態のデータコーディングの一例を示す図である。なお、本明細書においてデータ“abc”と表記した場合、“a”はロアービットの値、“b”はミドルビットの値、“c”はアッパービットの値を示すこととする。
図5に示されるデータコーディングの例によれば、区間R0にはデータ“111”、区間R1にはデータ“011”、区間R2にはデータ“001”、区間R3にはデータ“000”、区間R4にはデータ“010”、区間R5にはデータ“110”、区間R6にはデータ“100”、区間R7にはデータ“101”が対応付けられている。
なお、上記のデータコーディングは一例である。データコーディングは任意に変更可能である。
メモリセルMTのしきい値電圧は、セル間相互干渉を含む種々の要因によって変動し得る。よって、各区間RXに形成されたローブ状の分布の高電圧側の一部または低電圧側の一部が、隣接する区間RXにはみ出す場合がある。
或る区間RXに形成されたローブ状の分布の一部が隣接する区間RXにはみ出している場合、リード動作においては、当該分布のうちの隣接する区間RXにはみ出した部分に含まれるメモリセルMTからは、誤ったデータ、つまりエラー、がリードされる。誤ったデータは、メモリコントローラ2に送られて、メモリコントローラ2が備えるECC部24によって訂正される。
しかしながら、ECC部24によって訂正可能なエラービット数には限界がある。よって、各メモリセルMTのしきい値電圧は、プログラム動作時に、目標の区間RXから出来るだけはみ出さないようにしきい値電圧を設定されることが望ましい。
各メモリセルMTのしきい値電圧を目標の区間Rから出来るだけはみ出さないようにするために、メモリチップ10は、マルチステージプログラム動作を実行可能に構成される。マルチステージプログラム動作は、複数のステージに分けて実行するプログラム動作である。第1の実施形態では、メモリチップ10は、マルチステージプログラム動作の一例として、フォギーファインプログラム動作を実行する。
フォギーファインプログラム動作では、第1のメモリセルMTに全ビット(例えばTLCの方式の場合には3ビット)のデータが粗くライトされる。すなわち、全ビットのデータに応じて第1のメモリセルMTのしきい値電圧が粗く設定される。その後、第1のメモリセルMTに隣接する第2のメモリセルMTに全ビットのデータが粗くライトされる。換言すると、第1のメモリセルMTが接続されたワード線WLに隣接するワード線WLに接続された第2のメモリセルMT、に全ビットのデータが粗くライトされる。その後、第1のメモリセルMTに全ビットのデータが精密に再ライトされる。つまり、各メモリセルMTに対し、全ビットのデータが粗くライトされる第1ステージのプログラム動作と、全ビットのデータが精密に再ライトされる第2ステージのプログラム動作が実行される。
フォギーファインプログラム動作の、第2ステージのプログラム動作によって、各メモリセルMTのしきい値電圧が精密に設定されることが可能である。フォギーファインプログラム動作を用いることで、各メモリセルのしきい値電圧の変移量は小さくされることが可能である。これによって、隣接するメモリセルMTから各メモリセルMTが受けるセル間相互干渉を抑制でき、セル間相互干渉に起因するしきい値電圧の変動を抑制できる。つまり、セル間相互干渉に起因して、各メモリセルMTのしきい値電圧が目標の区間RXからはみ出すことを抑制できる。
図6は、第1の実施形態のメモリチップ10が実行するフォギーファインプログラム動作によるしきい値電圧の分布の変化を説明するための模式的な図である。図6には、1つのメモリセルグループMCGを構成するメモリセルMTのしきい値電圧の分布の変化を示す3つのグラフが示されている。各グラフにおいて、横軸は電圧を示し、縦軸はメモリセルMTの数を示す。
イレース動作の後のブロック30においては、全てのメモリセルMTのしきい値電圧は状態S0になっている。特に、イレース動作の後にまだプログラム動作が開始されていない場合、図6の最上段のグラフに示されるように、電圧Vc1よりも低い範囲に大きく広がるローブの形状の分布が形成される。
イレース動作の後の状態のメモリセルグループMCGに対し、第1ステージのプログラム動作が実行される。フォギーファインプログラム動作における第1ステージのプログラム動作は、フォギープログラム動作と表記される。
フォギープログラム動作では、各メモリセルMTのしきい値電圧は、8つの区間R0~R7のうちの目標の区間RXにできるだけ近くなるように、粗く設定される。
より詳細には、区間R0と略等しい区間R0’、区間R1を若干低電圧側にシフトした区間R1’、区間R2を若干低電圧側にシフトした区間R2’、区間R3を若干低電圧側にシフトした区間R3’、区間R4を若干低電圧側にシフトした区間R4’、区間R5を若干低電圧側にシフトした区間R5’、区間R6を若干低電圧側にシフトした区間R6’、および区間R7を若干低電圧側にシフトした区間R7’が設けられる。
具体的には、図6に示された例では、区間R0’は電圧Va1までの区間とされ、区間R1’は電圧Vb1(ただしVb1<Va1)から電圧Vb2(ただしVb2<Va2)までの区間とされ、区間R2’は電圧Vb2から電圧Vb3(ただしVb3<Va3)までの区間とされ、区間R3’は電圧Vb3から電圧Vb4(ただしVb4<Va4)までの区間とされ、区間R4’は電圧Vb4から電圧Vb5(ただしVb5<Va5)までの区間とされ、区間R5’は電圧Vb5から電圧Vb6(ただしVb6<Va6)までの区間とされ、区間R6’は電圧Vb6から電圧Vb7(ただしVb7<Va7)までの区間とされ、区間R7’は電圧Vb7からの区間とされている。そして、区間R1’~R7’は区間R1~R7に比べて若干低電圧側に設定されるため、区間R1’~R7’が設定される範囲R11は、区間R1~R7が設定される範囲R10よりも狭い。
フォギープログラム動作においては、最終的に設定される区間が区間RXであるメモリセルMTのしきい値電圧は、区間RX’に設定される。これによって、各メモリセルMTのしきい値電圧は、区間R0’~R7’のうちの何れかに属するように設定される。なお、第2ステージのプログラム動作(この例ではファインプログラム動作)によって最終的に設定される区間を、最終目標の区間、と表記することがある。また、区間RX’のように、第1ステージのプログラム動作(この例ではフォギープログラム動作)において設定される区間を、中間目標の区間、と表記することがある。
メモリセルMTのしきい値電圧は、ワード線WLを介して当該メモリセルMTのゲートにパルス状のプログラム電圧(プログラムパルスともいう)が印加されることで上昇せしめられる。フォギープログラム動作では、プログラムパルスの印加一回あたりのメモリセルMTのしきい値電圧の変移量が、後述されるファインプログラム動作のプログラムパルスの印加一回あたりのメモリセルMTのしきい値電圧の変移量に比べて大きくなるように、一つのプログラムパルスの波高、パルス幅、またはそれら両方が設定されている。よって、フォギープログラム動作では、短い期間でしきい値電圧を大きく変移させることが可能である。ただし、プログラムパルスの印加一回あたりのメモリセルMTのしきい値電圧の変移量が大きいため、しきい値電圧が中間目標の区間内に収まらない場合がある。
また、フォギープログラム動作によって、指定したメモリセルMTのしきい値電圧が中間目標の区間内に設定された場合であっても、指定したメモリセルMTに隣接するメモリセルMTとのセル間相互干渉に起因して、指定したメモリセルMTのしきい値電圧が中間目標の区間の外に変動する場合がある。そのため、図6の中段のグラフに示されるように、フォギープログラム動作後には、区間R0’~R7’に対応する8つのローブ状の分布のそれぞれは、対応する区間の境界からはみ出し得る。
なお、以降、区間RX’を状態SX’と表記する場合がある。
なお、区間R0が最終目標の区間であるメモリセルMTに対しては、フォギープログラム動作では、実際にはしきい値電圧の上昇は実行されない。よって、区間R0が最終目標の区間であるメモリセルMTのしきい値電圧は、フォギープログラム動作では、状態S0に維持される。つまり、図6に示された例において、状態S0’は、状態S0と等しい。
フォギープログラム動作の後、第2ステージのプログラム動作が実行される。フォギーファインプログラム動作における第2ステージのプログラム動作は、ファインプログラム動作と表記される。
ファインプログラム動作では、各メモリセルMTのしきい値電圧は最終目標の区間RXに設定される。ファイプログラム動作では、プログラムパルスの印加一回あたりのしきい値電圧の変移量がフォギープログラム動作の印加一回あたりのしきい値電圧の変移量に比べて小さくなるように、一つのプログラムパルスの波高、印加期間、またはそれら両方が設定されている。
ファインプログラム動作では、プログラムパルスの印加一回あたりのしきい値電圧の変移量がフォギープログラム動作の印加一回あたりのしきい値電圧の変移量に比べて小さいため、各分布の形状を細くすることが可能である。つまり、各分布が対応する区間RX内から、メモリセルMTのしきい値電圧が出来るだけはみ出さないような精密な設定が可能である。
また、ファインプログラム動作が行われる前にフォギープログラム動作が行われることで、各メモリセルMTのしきい値電圧は、イレース動作の後の状態のメモリセルMTのしきい値電圧よりも最終目標の区間RXに近くなる。このため、ファインプログラム動作における各メモリセルMTのしきい値電圧の変移量は抑制される。よって、ファインプログラム動作では、セル間相互干渉を小さくできる。
また、ファインプログラム動作は、プログラムパルスの印加一回あたりのメモリセルMTのしきい値電圧の変移量が小さい。このため、ファインプログラム動作だけでメモリセルMTのしきい値電圧を変化させる場合、比較的多くの時間がかかる。しかしながら、予めフォギープログラム動作が実行されることによって、ファインプログラム動作における各メモリセルMTのしきい値電圧のトータルの変移量が抑制されているため、ファインプログラム動作の完了に要する時間の増大が抑制される。
前述されたように、メモリセルアレイ11に対するライトは、メモリセルグループMCG単位で実行される。第1の実施形態では、メモリチップ10は、メモリセルグループMCGにデータのライトを行う毎に、ライト先のメモリセルグループMCGが備える複数のメモリセルMTのうちの一部に温度情報TEMPをライトする。
図7は、第1の実施形態のメモリセルグループMCGにおける温度情報TEMPのライト位置の例を示す模式的な図である。
メモリセルグループMCGは、記憶領域ARmcgを構成する。そして、メモリセルグループMCGのうちの一部の複数のメモリセルMTは、冗長領域ARredを構成し、他の複数のメモリセルMTは、メモリコントローラ2から受信したデータがライトされるユーザ領域ARusrを構成する。
ブロック30は、故障に備えて、冗長な複数のメモリセルMTを含む。ブロック30内の各メモリセルグループMCGは、必要とされる数のメモリセルMTよりも多いメモリセルMTを備える。ユーザ領域ARusrにアサインされた何れかのメモリセルMTに故障が見つかった場合、故障したメモリセルMTの機能は冗長なメモリセルMTによって代替される。メモリコントローラ2は、原則的に、この冗長な複数のメモリセルMTのうちの、故障したメモリセルMTを代替していないメモリセルMTにはデータのライトを行うことができない。冗長領域ARredは、冗長な複数のメモリセルMTのうちの故障したメモリセルMTを代替していない複数のメモリセルMTによって構成される記憶領域である。
ユーザ領域ARusrには、3ページ(即ちアッパーページ、ミドルページ、ロアーページ)分のユーザデータと、各ページのユーザデータから生成されたECCパリティと、がライトされる。なお、ここでは一例として、各ページのユーザデータは16kByteのサイズを有し、各ページのユーザデータから生成されたECCパリティは2kByteのサイズを有することとしているが、各データのサイズはこれらに限定されない。
冗長領域ARredには、複数の温度記憶領域ARtempが設けられている。温度情報TEMPは複数に多重化され、複数の温度記憶領域ARtempのそれぞれには複数の温度情報TEMPのうちのひとつがライトされる。この例では、冗長領域ARredには4つの温度記憶領域ARtempが設けられ、温度情報TEMPは4つに多重化されてライトされることとしている。
また、この例では、温度情報TEMPは、摂氏マイナス127度から摂氏127度までの範囲の温度を8ビットで表現したものである。なお、温度情報TEMPのビット列の長さおよび表現可能な温度範囲はこれに限定されない。
フォギーファインプログラム動作では、フォギープログラム動作とファインプログラム動作とでは、同一のデータがライトされることを前提としている。第1の実施形態では、ユーザ領域ARusrへのライトに関してはこの前提が守られ、冗長領域ARredへの温度情報TEMPのライトに関してはこの前提は守られない。
また、プログラム動作では、メモリチップ10はメモリセルMTのしきい値電圧を維持または上昇させることはできるが、下降させることはできない。つまり、フォギープログラム動作時にメモリセルMTのしきい値電圧を上昇させた後、ファインプログラム動作時に、上昇させたしきい値よりも低いしきい値をメモリセルMTに設定することができなくなる。よって第1の実施形態では、メモリコントローラ2は、フォギープログラム動作時には温度情報TEMPのライトは行わず、ファインプログラム動作時に温度情報TEMPのライトを行う。
さらに、第1の実施形態では、メモリチップ10は、温度情報TEMPに関しては、メモリセルMT当たりに1ビットの情報をライトする。1つの温度記憶領域RAtempは、8個のメモリセルMTによって構成される。すなわち1つの温度記憶領域RAtempは、8ビットの情報を記憶可能である。1個の温度情報TEMPは8ビットである。よって、4個の温度情報TEMP(32ビット)は、4つの温度記憶領域RAtemp(合計32個のメモリセルMT)を用いて保持される。以降、温度情報TEMPを構成する各桁の1ビットの値を、温度ビット値TEMP-bと表記する。
図8は、第1の実施形態の温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧の変移の一例を説明するための模式的な図である。本図においては、温度記憶領域ARtempを構成するメモリセルMTが含まれ得る分布にはハッチングが施されている。なお、本図の説明においては、特に明記されない限り、温度記憶領域ARtempを構成するメモリセルMTを、単に、メモリセルMTと表記する。
フォギープログラム動作では、メモリセルMTのしきい値電圧は、当該メモリセルMTにライトされる温度ビット値TEMP-bに関係なく最も低電圧側の区間R0’、即ち状態S0’に設定される。つまり、フォギープログラム動作では、メモリセルMTに対するしきい値電圧の上昇は実行されない。メモリセルMTのしきい値電圧は状態S0’(即ち状態S0)に維持される。
続くファインプログラム動作では、メモリセルMTのしきい値電圧は、温度ビット値TEMP-bに応じて状態S0または状態S1に設定される。一例では、温度ビット値TEMP-bが“1”である場合、メモリセルMTのしきい値電圧は状態S0に設定される。温度ビット値TEMP-bが“0”である場合、メモリセルMTのしきい値電圧は状態S1に設定される。なお、温度ビット値TEMP-bと2つの状態S0、S1との対応関係は、設計者が任意に決定できる。
図8に示されたしきい値電圧の変移の例によれば、ファインプログラム動作においては、メモリセルMTのしきい値電圧の変移量は、最大でも状態S0’(即ち状態S0)から状態S1までの量であり、区間R0~区間R7が設けられた範囲R10に比べて十分小さい。よって、温度記憶領域ARtempに作用するセル間相互干渉は抑制される。
また、ファインプログラム動作におけるメモリセルMTのしきい値電圧の変移量が十分小さいので、メモリコントローラ2がメモリセルMTに対しファインプログラム動作を完了するまでに必要とする時間を抑制できる。
前述したように、S0~S7の各状態には3ビットのデータが対応付けられている。よって、温度記憶領域ARtempを構成するメモリセルMTに対しては、そのしきい値電圧を状態S0または状態S1に設定するために、実際には、温度ビット値TEMP-bの代わりに状態S0または状態S1に対応した3ビットのデータがカラムモジュール18を介して、メモリセルMTにライトされる。具体的には、シーケンサ16は、温度ビット値TEMP-bと図5に示されたデータコーディングとに基づき、状態S0または状態S1に対応する3ビットのデータを生成する。カラムモジュール18は、シーケンサ16から当該3ビットのデータを受信して、受信された当該3ビットのデータを、温度記憶領域ARtempを構成するメモリセルMTにライトする。
図9は、第1の実施形態の温度記憶領域ARtempに対するプログラム動作の際に生成される3ビットのデータを説明するための図である。本図の説明においても、特に明記されない限り、温度記憶領域ARtempを構成するメモリセルMTを、単に、メモリセルMTと表記する。
フォギープログラム動作においては、シーケンサ16は、温度ビット値TEMP-bが“0”であるか“1”であるかに関わらずデータ“111”を生成し、データ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、そのメモリセルMTに保持される温度ビット値TEMP-bが“0”であるか“1”であるかに関わらず状態S0’(S0)に設定される。
ファインプログラム動作において、シーケンサ16は、温度ビット値TEMP-bが“0”である場合には、データ“011”を生成し、データ“011”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“0”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、“0”の温度ビット値TEMP-bに対応する状態S1に設定される。シーケンサ16は、温度ビット値TEMP-bが“1”である場合には、データ“111”を生成し、データ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、“1”の温度ビット値TEMP-bに対応する状態S0に設定される。
続いて、第1の実施形態のメモリシステム1の動作を説明する。
図10は、第1の実施形態のメモリチップ10のプログラム動作の一例を示すフローチャートである。
I/Oインタフェース13は、メモリコントローラ2からライトコマンドとともに3ページ分のデータを受信する(ST101)。メモリコントローラ2から受信する3ページ分のデータは、ロアーページ、ミドルページ、およびアッパーページの分のデータである。各ページのデータは、ECCパリティが付されたユーザデータである。制御回路15(より詳しくは制御回路15内のカラムモジュール18)は、3ページ分のデータの受信に応じてフォギープログラム動作を実行する(ST1)。
フォギープログラム動作では、シーケンサ16は、温度記憶領域ARtempを構成する各メモリセルMTにライトされるデータ“111”を生成する(ST102)。そして、制御回路15は、プログラムパルスをライト先のメモリセルグループMCGに接続されたワード線WLに1回以上印加することによって、3ページ分のデータをユーザ領域ARusrにライトする。つまり、制御回路15は、データ“111”を、温度記憶領域ARtempを構成する各メモリセルMTにライトする(ST103)。これによって、フォギープログラム動作が終了する。
続いて、制御回路15は、ファインプログラム動作を実行する(ST2)。
ファインプログラム動作では、シーケンサ16は、温度センサ12から温度情報TEMPを取得する(ST104)。シーケンサ16は、温度情報TEMPに基づき、“0”の温度ビット値TEMP-bに対応するデータ“011”または“1”の温度ビット値TEMP-bに対応する“111”を、各温度記憶領域ARtempを構成するメモリセルMT毎に生成する(ST105)。
そして、制御回路15は、プログラムパルスをライト先のメモリセルグループMCGに接続されたワード線WLに1回以上印加することによって、3ページ分のデータをユーザ領域ARusrにライトする。つまり、制御回路15は、ST105において生成されたデータ“011”または“111”を、各温度記憶領域ARtempを構成する各メモリセルMTにライトする(ST106)。そして、ファインプログラム動作が終了し、メモリチップ10におけるプログラム動作が終了する。
このように、メモリチップ10は、メモリコントローラ2から受信したユーザデータをメモリセルグループMCGにライトするプログラム動作において、自律的に温度情報TEMPを取得して温度記憶領域ARtempにライトする。
メモリチップ10は、温度記憶領域ARtempにライトされた温度情報TEMPをメモリコントローラ2からのリードコマンドに応じて出力することが可能である。
メモリコントローラ2は、メモリチップ10にリード動作を実行させる場合、センスコマンドとデータアウトコマンドとから構成されたリードコマンドを用いる。センスコマンドは、リード先のメモリセルグループMCGから、データラッチを介してデータバッファ14にデータを転送することを指示するコマンドである。データアウトコマンドは、センスコマンドに応じてデータバッファ14に格納されたデータの一部または全部をメモリコントローラ2に出力することを指示するコマンドである。データアウトコマンドは、センスコマンドの後、1回以上使用され得る。
データアウトコマンドは、データバッファ14内のデータのうちの出力対象のデータを指定する情報としてカラムアドレスを含む。メモリチップ10から温度情報TEMPを取得する場合、メモリコントローラ2は温度記憶領域ARtempが設けられたカラムを指すアドレスを、カラムアドレスとして指定する。
温度記憶領域ARtempを構成するメモリセルMTには、温度情報ビット値TEMP-bに対応する3ビットのデータがライトされている。よって、メモリコントローラ2は、温度記憶領域ARtempを構成するメモリセルMT1つあたり、3ビットのデータを取得する。つまり、メモリコントローラ2は、1つの温度記憶領域ARtemp当たりに、3ビットのデータを8セット集めたデータグループを取得する。
メモリコントローラ2は、4つの温度記憶領域ARtempから4つのデータグループを取得し、4つのデータグループに基づいて温度情報TEMPを取得する。
図11は、第1の実施形態のメモリコントローラ2による、4つのデータグループから温度情報TEMPを取得する動作の一例を示すフローチャートである。
メモリコントローラ2は、4つのデータグループに含まれるデータ“111”を、データ“111”に対応する温度情報ビット値TEMP-bである“1”に変換する(ST201)。同様に、メモリコントローラ2は、4つのデータグループに含まれるデータ“011”を、データ“011”に対応する温度情報ビット値TEMP-bである“0”に変換する(ST202)。
前述されたように、メモリセルMTのしきい値電圧は、種々の要因で変動し得る。そして、温度情報TEMPは、誤り訂正符号化されずに温度記憶領域ARtempにライトされる。よって、温度記憶領域ARtempを構成する各メモリセルMTには、ライトされた3ビットのデータと異なる3ビットのデータがリードされる場合がある。
例えば、あるケースでは、しきい値電圧が状態S0から状態S1に変動したり、状態S1から状態S0に変動したりする。このようなパターンでしきい値電圧が変動した場合、4つのデータグループは、データ“111”としてライトされたデータがデータ“011”としてリードされたデータ、またはデータ“011”としてライトされたデータがデータ“111”としてリードされたデータを含み得る。このような、状態S0と状態S1との間での変動により正しく取得できなかったデータは、後述する多数決の処理(ST204)によって訂正される。
また、別のケースでは、4つのデータグループは、例えば、データ“111”およびデータ“011”の何れにも該当しないデータ、つまり状態S2~S7の何れかに対応するデータ、を含み得る。変動前の状態と変動後の状態との間の距離に基づけば、状態S0から状態S2~S7に変動する確率よりも、状態S1から状態S2~S7に変動する確率のほうが高い。つまり、4つのデータグループに状態S2~S7の何れかに対応するデータが含まれる場合、当該データは、ライト時には状態S1に対応するデータ“011”であった可能性が高い。よって、メモリコントローラ2は、4つのデータグループに状態S2~S7の何れかに対応するデータが含まれる場合、当該データをデータ“011”から変化したデータと見なす。つまり、4つのデータグループに、データ“111”およびデータ“011”の何れにも該当しないデータが含まれている場合、メモリコントローラ2は、当該データを温度情報ビット値TEMP-bである“0”に変換する(ST203)。
ST201~ST203によって、状態S0に対応する3ビットのデータは温度情報ビット値TEMP-bとして“1”に、状態S1~S7に対応する3ビットのデータは温度情報ビット値TEMP-bとして“0”に、それぞれ変換される。これによって、4つのデータグループのそれぞれから、温度情報TEMPが取得される。ただし、各温度情報TEMPは、状態S0と状態S1との間での変動にもとづくエラーを含み得る。よって、メモリコントローラ2は、変換によって得られた4個の温度情報TEMPの間で桁毎の多数決を行うことで、1個の温度情報TEMPを決定する(ST204)。
具体的には、メモリコントローラ2は、先頭からi番目(ただしiは1から8までの整数)のビット値について4つの温度情報TEMPの間で多数決をとり、i番目のビット値を決定する。メモリコントローラ2は、8ビットのビット列の各桁において上記した多数決を行うことで、1個の温度情報TEMPを決定する。
ST204の後、温度情報TEMPを取得する動作が終了する。
図11に示された例では、メモリコントローラ2は、メモリチップ10からメモリセルMTあたり3ビットのデータを取得し、取得された3ビットのデータに基づいて温度情報TEMPを取得した。温度情報TEMPの取得方法はこれに限定されない。
例えば、メモリチップ10は、たとえメモリセルMT当たりに複数ビットのデータがライトされた場合であっても、SLCモードでのリード動作が可能に構成される場合がある。SLCモードでのリード動作では、メモリチップ10は、各メモリセルMTのしきい値電圧がメモリコントローラ2から指定された1つの検出電圧Vsenseより高いか低いかに応じて“1”または“0”を出力する。メモリコントローラ2は、SLCモードでのリード動作を利用して4つの温度記憶領域ARtempのそれぞれから温度情報TEMPを取得することが可能である。
メモリチップ10は、SLCモードでのリード動作において、例えば、メモリセルMTのしきい値電圧が検出電圧Vsenseより低い場合には“1”を出力し、メモリセルMTのしきい値電圧が検出電圧Vsenseより高い場合には“0”を出力する。メモリチップ10がこのように構成される場合には、メモリコントローラ2は、電圧Va1(図8参照)を検出電圧Vsenseと設定し、SLCモードでのリード動作をメモリチップ10に指示する。これによって、メモリコントローラ2は、状態S0にあるメモリセルMTからは“1”、状態S1~S7にあるメモリセルMTからは“0”を取得する。つまり、メモリコントローラ2は、図9に示された対応関係に従ってライトされた温度情報TEMPを、各温度記憶領域ARtempから直接に取得することができる。換言すれば、メモリコントローラ2は、図9に示された対応関係に従ってライトされた温度情報TEMPを、各温度記憶領域ARtempからデータコーディングを参照せずに取得することができる。メモリコントローラ2は、各温度記憶領域ARtempから温度情報TEMPを取得した後、図11に示されたST204の処理、つまり多数決の処理、を実行することで、状態S0と状態S1との間での変動に起因するエラーを除去した温度情報TEMPを取得する。
このように、温度情報ビット値TEMP-bに応じてメモリセルMTが状態S0または状態S1に設定される場合、メモリコントローラ2は、メモリセルMTが状態S0にあるか状態S1~S7にあるかを特定できる限り、任意の方法で温度情報TEMPを取得することができる。
なお、第1の実施形態で説明した例では、温度情報TEMPは4つに多重化された。多重化された後の温度情報TEMPの数は4に限定されない。例えば、メモリコントローラ2が多重化された温度情報TEMP間での桁毎の多数決によって1つの温度情報TEMPを必ず決定できるように、メモリチップ10は温度情報TEMPを奇数個に多重化するように構成されてもよい。
以上述べたように、第1の実施形態によれば、制御回路15は、第1ステージのプログラム動作であるフォギープログラム動作において、メモリセルグループMCGのうちのユーザ領域ARusrを構成する複数のメモリセルMTのそれぞれのしきい値電圧を区間R0’~R7’のうちのライトデータに応じた区間RX’に設定する。さらに制御回路15は、フォギープログラム動作において、メモリセルグループMCGのうちの温度記憶領域ARtempを構成する複数のメモリセルMTのそれぞれのしきい値電圧を区間R0’~R7’のうちの区間R0’に設定する。制御回路15は、第2ステージのプログラム動作であるファインプログラム動作において、ユーザ領域ARusrを構成する複数のメモリセルMTのそれぞれのしきい値電圧を区間R0~R7のうちのライトデータに応じた区間RXに設定する。さらに制御回路15は、ファインプログラム動作において、温度記憶領域ARtempを構成する複数のメモリセルMTのそれぞれのしきい値電圧を、区間R0および区間R1のうちの温度情報TEMPに応じた区間RXに設定する。
よって、データのライトの単位(即ちメモリセルグループMCGの単位)よりも大きな単位ではなく、データのライトの単位で温度を記録することが可能となる。つまり、ライト時の温度を適正に記録することが可能である。
第1の実施形態は種々の変形が可能である。以下に、第1の実施形態のいくつかの変形例を説明する。
(第1の実施形態の第1の変形例)
第1の実施形態では、ファインプログラム動作において、メモリセルMTのしきい値電圧は、温度情報ビット値TEMP-bに応じて状態S0または状態S1に設定された。メモリセルMTのしきい値電圧が温度情報ビット値TEMP-bに応じて設定され得る2つの状態は、状態S0および状態S1に限定されない。
設計者は、メモリセルMTのしきい値電圧がフォギープログラム動作後における状態と同じ電圧の状態か、またはより高電圧側の状態である限り、温度情報ビット値TEMP-bに応じて設定され得るメモリセルMTのしきい値電圧の2つの状態を任意に決定することが可能である。ただし、セル間相互干渉を抑制し、かつファインプログラム動作の完了に要する時間をできるだけ抑制するために、ファインプログラム動作によるメモリセルMTのしきい値電圧の変移量は小さいことが望まれる。
第1の実施形態の第1の変形例では、図12に示されるように、温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧は、ファインプログラム動作において、温度ビット値TEMP-bに応じて状態S0または状態S3に設定される。
図12に示された例によれば、メモリセルMTのしきい値電圧の変移量は、最大でも状態S0’(換言すると状態S0)から状態S3での量であり、区間R0~区間R7が設けられた範囲R10に比べて十分小さい。よって、温度記憶領域ARtempに関し、セル間相互干渉を抑制できる。また、ファインプログラム動作の完了に要する時間を抑制できる。
図13は、第1の実施形態の第1の変形例の温度記憶領域ARtempに対するプログラム動作の際に生成される3ビットのデータを説明するための図である。本図の説明においても、特に明記されない限り、温度記憶領域ARtempを構成するメモリセルMTを、単に、メモリセルMTと表記する。
フォギープログラム動作においては、シーケンサ16は、第1の実施形態と同様、温度ビット値TEMP-bが“0”であるか“1”であるかに関わらずデータ“111”を生成し、データ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、そのメモリセルMTに保持される温度ビット値TEMP-bが“0”であるか“1”であるかに関わらず状態S0’(S0)に設定される。
ファインプログラム動作において、シーケンサ16は、温度ビット値TEMP-bが“0”である場合には、データ“000”を生成し、データ“000”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“0”が、ミドルビットとして“0”が、アッパービットとして“0”が書き込まれる。よって、メモリセルMTのしきい値電圧は状態S3に設定される。シーケンサ16は、温度ビット値TEMP-bが“1”である場合には、データ“111”を生成し、データ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は状態S0に設定される。
メモリコントローラ2は、温度情報TEMPを取得する際には、第1の実施形態と同様、メモリセルMT1つ当たり3ビットのデータをリードしてもよいし、SLCモードでのリード動作をメモリチップ10に指示してもよい。ただし、第1の実施形態の第1の変形例では、状態S0~S1にあるメモリセルMTからは状態S0に対応する温度ビット値TEMP-bである“1”、状態S2~S7にあるメモリセルMTからは状態S3に対応する温度ビット値TEMP-bである“0”を取得する。
メモリコントローラ2がメモリセルMT1つ当たりに3ビットのデータをリードするように構成された場合、メモリコントローラ2は、3ビットのデータを次のように変換する。即ち、メモリコントローラ2は、状態S0に対応するデータ“111”だけでなく、状態S1に対応するデータ“011”を、温度ビット値TEMP-bの“1”に変換する。メモリコントローラ2は、状態S3に対応するデータ“000”だけでなく、状態S2に対応するデータ“001”、状態S4に対応するデータ“010”、状態S5に対応するデータ“110”、状態S6に対応するデータ“100”、および状態S7に対応するデータ“101”を、温度ビット値TEMP-bの“0”に変換する。
メモリコントローラ2がSLCモードでのリード動作によって温度情報TEMPを取得するように構成された場合、メモリコントローラ2は、電圧Va2(図12参照)を検出電圧Vsenseと設定してSLCモードでのリード動作をメモリチップ10に指示する。これによって、メモリコントローラ2は、しきい値電圧が状態S0~S1にあるメモリセルMTからは“1”、しきい値電圧が状態S2~S7にあるメモリセルMTからは“0”を取得する。つまり、メモリコントローラ2は、図13に示された対応関係に従ってライトされた温度情報TEMPを、各温度記憶領域ARtempから直接に取得することができる。換言すれば、メモリコントローラ2は、図13に示された対応関係に従ってライトされた温度情報TEMPを、各温度記憶領域ARtempからデータコーディングを参照せずに取得することができる。
第1の実施形態の変形例1では、温度ビット値TEMP-bに対応する2つの状態S0、S3は、2つの状態S1、S2を挟むように互いに離間しており、温度情報TEMPのリードの際には、メモリセルMTのしきい値電圧が2つの状態S0、S3の中間の電圧(上記された例では電圧Va1)よりも高いか低いかによって温度ビット値TEMP-bが判定される。よって、温度ビット値TEMP-bに応じて状態S0または状態S3に設定されたメモリセルMTがたとえ隣接する状態に変動したとしても、エラーなく温度ビット値TEMP-bを取得することが可能である。つまり、温度情報TEMPをリードする際、エラーの発生を抑制することが可能になる。
なお、第1の実施形態の変形例1では、温度情報ビット値TEMP-bに応じて設定され得る2つの状態は、間に別の2つの状態を挟むように互いに離間する。温度情報ビット値TEMP-bに応じて設定され得る2つの状態は、間に別の3つ以上の状態を挟むように互いに離間するよう、温度情報ビット値TEMP-bと状態との対応関係が設定されてもよい。また、温度情報ビット値TEMP-bに応じて設定され得る2つの状態は、間に別の1つの状態を挟むように互いに離間するよう、温度情報ビット値TEMP-bと状態との対応関係が設定されてもよい。前述されたように、ファインプログラム動作において設定される2つの状態は、フォギープログラム動作後の状態と同じ電圧の状態か、またはより高電圧側の状態である限り、設計者が任意に選択することができる。
(第1の実施形態の第2の変形例)
イレースされた状態に対応する状態S0は、他の状態S1~S7と異なる特徴を有する。具体的には、状態S0にしきい値電圧が設定されたメモリセルMTの分布は、状態S1~S7などに比べて広範囲に広がり得る。したがって、状態S0から隣接する状態S1へのしきい値電圧の変移量は、他の状態から隣接する状態へのしきい値電圧の変移量に比べて大きい。
第1の実施形態の第2の変形例では、ファインプログラム動作において、温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧の変移量をできるだけ小さくするために、フォギープログラム動作においては、メモリセルMTのしきい値電圧は、状態S0’~S7’のうちの低電圧側から2番目以降に位置する状態SX’に設定される。
例えば、図14に示されるように、温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧は、フォギープログラム動作において、状態S1’に設定される。続くファインプログラム動作においては、メモリセルMTのしきい値電圧は、温度ビット値TEMP-bに応じて状態S1または状態S2に設定される。
図15は、第1の実施形態の第2の変形例の温度記憶領域ARtempに対するプログラム動作の際に生成される3ビットのデータを説明するための図である。本図の説明においても、特に明記されない限り、温度記憶領域ARtempを構成するメモリセルMTを、単に、メモリセルMTと表記する。
フォギープログラム動作においては、シーケンサ16は、温度ビット値TEMP-bが“0”であるか“1”であるかに関わらずデータ“011”を生成し、データ“011”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“0”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、そのメモリセルMTに保持される温度ビット値TEMP-bが“0”であるか“1”であるかに関わらず状態S1’に設定される。
ファインプログラム動作において、シーケンサ16は、温度ビット値TEMP-bが“0”である場合には、データ“001”を生成し、データ“001”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“0”が、ミドルビットとして“0”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S2に設定される。シーケンサ16は、温度ビット値TEMP-bが“1”である場合には、データ“011”を生成し、データ“011”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“0”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S1に設定される。
メモリコントローラ2は、温度情報TEMPを取得する際には、第1の実施形態と同様、メモリセルMT1つ当たり3ビットのデータをリードしてもよいし、SLCモードでのリード動作をメモリチップ10に指示してもよい。ただし、第1の実施形態の第2の変形例では、しきい値電圧が状態S0~S1にあるメモリセルMTからは状態S1に対応する温度ビット値TEMP-bである“1”、しきい値電圧が状態S2~S7にあるメモリセルMTからは状態S2に対応する温度ビット値TEMP-bである“0”を取得する。
なお、上記の例では、フォギープログラム動作においてメモリセルMTのしきい値電圧は状態S1’に設定された。フォギープログラム動作においてメモリセルMTのしきい値電圧が設定される状態は状態S1’に限定されない。設計者は、フォギープログラム動作においてメモリセルMTのしきい値電圧を、状態S2’~S6’のうちから任意に選択することが可能である。
また、上記の例では、ファインプログラム動作においてメモリセルMTのしきい値電圧は温度情報ビット値TEMP-bに応じて状態S1または状態S2に設定された。ファインプログラム動作において温度情報ビット値TEMP-bに応じて設定され得るメモリセルMTの閾値電圧の2つの状態は、状態S1および状態S2に限定されない。ファインプログラム動作においては、フォギーファインプログラム動作における状態と同じ電圧の状態か、またはより高電圧側の状態である限り、メモリセルMTは、任意の2つの状態に設定され得る。例えば、第1の実施形態の第1の変形例に示されたように、ファインプログラム動作においてしきい値電圧が設定され得る2つの状態は、間に1つ以上の状態を挟むように互いに離間していてもよい。
第1の実施形態およびその変形例では、制御回路15は、ファインプログラム動作時に温度センサ12から温度情報TEMPを取得した。
よって、メモリセルグループMCGに対する全ページ分のデータのライトの完了の時点に近い時点における温度の記録が可能になる。
なお、温度情報TEMPの取得のタイミングはファインプログラム動作時に限定されない。例えば、制御回路15は、フォギープログラム動作時に温度情報TEMPを取得し、当該温度情報TEMPをファインプログラム動作時に温度記憶領域ARtempにライトしてもよい。
(第2の実施形態)
第1の実施形態およびその変形例では、フォギープログラム動作においては、温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧は、そのメモリセルMTに保持される温度ビット値TEMP-bが“0”であるか“1”であるかに関わらず共通の状態に設定された。フォギープログラム動作においては、メモリセルMTのしきい値電圧は、温度ビット値TEMP-bに応じて2つの状態の何れかに設定されてもよい。
例えば図16に示されるように、温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧は、フォギープログラム動作において、温度ビット値TEMP-bに応じて状態S0’(S0)または状態S2’に設定される。
続くファインプログラム動作では、温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧は、温度ビット値TEMP-bに応じて状態S2または状態S4に設定される。
状態S2および状態S4は、フォギープログラム動作において設定される2つの状態のうちの電圧が高いほうの状態S2’より高電圧側に位置する。よって、ファインプログラム動作においては、メモリセルMTのしきい値電圧は、フォギープログラム動作後の状態に関わらず、状態S2および状態S4のいずれにも設定され得る。よって、フォギープログラム動作の際と、ファインプログラム動作の際とで、それぞれ異なる値の温度情報TEMPがライトされ得る。メモリチップ10は、フォギープログラム動作の際と、ファインプログラム動作の際と、のそれぞれにおいて、温度センサ12からの温度情報TEMPの取得と、取得した温度情報TEMPのライトと、を実行する。
図17は、第2の実施形態の温度記憶領域ARtempに対するプログラム動作の際に生成される3ビットのデータを説明するための図である。本図の説明においても、特に明記されない限り、温度記憶領域ARtempを構成するメモリセルMTを、単に、メモリセルMTと表記する。
フォギープログラム動作においては、シーケンサ16は、温度ビット値TEMP-bが“0”である場合には、データ“001”を生成し、データ“001”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“0”が、ミドルビットとして“0”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S2’に設定される。シーケンサ16は、温度ビット値TEMP-bが“1”である場合には、データ“111”を生成し、データ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S0’(S0)に設定される。
ファインプログラム動作において、シーケンサ16は、温度ビット値TEMP-bが“0”である場合には、データ“001”を生成し、データ“001”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“0”が、ミドルビットとして“0”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S2に設定される。シーケンサ16は、温度ビット値TEMP-bが“1”である場合には、データ“010”を生成し、データ“010”をカラムモジュール18に供給する。メモリセルMTのロアービットとして0”が、ミドルビットとして“1”が、アッパービットとして“0”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S4に設定される。
図18は、第2の実施形態のメモリチップ10のプログラム動作の一例を示すフローチャートである。
I/Oインタフェース13がメモリコントローラ2からライトコマンドとともに3ページ分のデータを受信すると(ST301)、制御回路15は、フォギープログラム動作を実行する(ST3)。
フォギープログラム動作では、シーケンサ16は、温度センサ12から温度情報TEMPを取得する(ST302)。そして、シーケンサ16は、ST302によって取得された温度情報TEMPに基づき、“0”の温度ビット値TEMP-bに対応するデータ“001”または“1”の温度ビット値TEMP-bに対応する“111”を、温度記憶領域ARtempを構成するメモリセルMT毎に生成する(ST303)。
そして、制御回路15は、プログラムパルスをライト先のメモリセルグループMCGに接続されたワード線WL1回以上に印加することによって、3ページ分のデータをユーザ領域ARusrにライトする。つまり、制御回路15は、ST303で生成されたデータ“001”またはデータ“111”を、温度記憶領域ARtempを構成する各メモリセルMTに、ライトする(ST304)。そして、フォギープログラム動作が終了する。
フォギープログラム動作の後、制御回路15は、ファインプログラム動作を実行する(ST4)。
ファインプログラム動作では、シーケンサ16は、温度センサ12から温度情報TEMPを取得する(ST305)。そして、シーケンサ16は、ST305によって取得された温度情報TEMPに基づき、“0”の温度ビット値TEMP-bに対応するデータ“001”または“1”の温度ビット値TEMP-bに対応するデータ“010”を、各温度記憶領域ARtempを構成するメモリセルMT毎に生成する(ST306)。
そして、制御回路15は、1回以上のプログラムパルスをライト先のメモリセルグループMCGに接続されたワード線WLに印加することによって、ST301で受信した3ページ分のデータをユーザ領域ARusrにライトし、ST306で生成されたデータ“001”またはデータ“010”を、各温度記憶領域ARtempを構成する各メモリセルMTにライトする(ST307)。そして、ファインプログラム動作が終了し、メモリチップ10によるプログラム動作が終了する。
メモリコントローラ2は、ファインプログラム動作によってライトされた温度情報TEMPを、第1の実施形態またはその変形例にて説明された方法と同様の方法で取得することができる。
また、メモリコントローラ2は、ファインプログラム動作が開始するまでは、フォギープログラム動作によってライトされた温度情報TEMPを取得することができる。具体的には、メモリコントローラ2は、状態S0’と状態S2’との間の電圧(例えば図16の電圧Vb10)を検出電圧Vsenseと指定し、SLCモードでのリード動作をメモリチップ10に指示する。これによって、メモリコントローラ2は、しきい値電圧が電圧Vb10より低電圧側にあるメモリセルMTからは状態S0’(S0)に対応する温度ビット値TEMP-bである“1”、しきい値電圧が電圧Vb10より高電圧側にあるメモリセルMTからは状態S2’に対応する温度ビット値TEMP-bである“0”を取得することができる。
メモリコントローラ2は、フォギープログラム動作によってライトされた温度情報TEMPまたはファインプログラム動作によってライトされた温度情報TEMPを4つの温度記憶領域ARtempから4個、取得する。そして、メモリコントローラ2は、取得された4個の温度情報TEMPに対して多数決の処理(例えば図11のST204と同じ処理)を実行することによって1つの温度情報TEMPを決定することができる。
このように、第2の実施形態によれば、制御回路15は、第1ステージのプログラム動作であるフォギープログラム動作において、温度センサ12から温度情報TEMPを取得する。そして、制御回路15は、ユーザ領域ARusrを構成する複数のメモリセルMTのそれぞれのしきい値電圧を状態S0’~S7’のうちのライトデータに応じた状態に設定する。さらに制御回路15は、温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧を2つの状態S0’、S2’のうちのフォギープログラム動作において取得された温度情報TEMPに応じた状態に設定する。
また、制御回路15は、第2ステージのプログラム動作であるファインプログラム動作において、温度センサ12から温度情報TEMPを取得する。そして、制御回路15は、ユーザ領域ARusrを構成する複数のメモリセルMTのそれぞれのしきい値電圧を状態S0~S7のうちのライトデータに応じた状態に設定する。さらに制御回路15は、温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧を2つの状態S2、S4のうちのファインプログラム動作において取得された温度情報TEMPに応じた状態に設定する。
よって、メモリチップ10はフォギープログラム動作時の温度情報TEMPを記録できる。メモリコントローラ2は、ファインプログラム動作が開始するまでは、当該フォギーファインプログラム動作時の温度情報TEMPをメモリチップ10から取得することが可能である。
よって、例えばフォギープログラム動作が終わってからファインプログラム動作が開始するまでの間にメモリチップ10が故障した場合、故障時の温度情報として、フォギープログラム動作時の温度情報TEMPが取得されることが可能である。
なお、第2の実施形態では、フォギープログラム動作においては、メモリセルMTのしきい値電圧は、温度情報ビット値TEMP-bに応じて状態S0’またはS2’に設定された。ファインプログラム動作においては、メモリセルMTのしきい値電圧は、温度情報ビット値TEMP-bに応じて状態S2またはS4に設定された。フォギープログラム動作およびファインプログラム動作においてメモリセルMTのしきい値電圧が温度情報ビット値TEMP-bに応じて設定され得る2つの状態は、これらの例に限定されない。
ファインプログラム動作において設定され得る2つの状態のうちの低電圧側の状態が、フォギープログラム動作において設定され得る2つの状態のうちの高電圧側の状態と同じかより高電圧側の状態であるかぎり、設計者は、フォギープログラム動作およびファインプログラム動作において設定され得る状態を任意に選択することができる。
例えば、ファインプログラム動作において設定され得る2つの状態は、互いに隣接していてもよいし、間に1つ以上の状態を挟むように互いに離間していてもよい。
また、フォギープログラム動作において設定され得る2つの状態は、状態S1’~状態S6’のうちから選択されてもよい。
(第3の実施形態)
マルチステージプログラム動作としては、フォギーファインプログラム動作の他に、インターナルデータロードを用いたマルチステージプログラム動作が知られている。第3の実施形態では、インターナルデータロードを用いたマルチステージプログラム動作が可能なメモリチップ10について説明する。インターナルデータロード(IDL)を用いたマルチステージプログラム動作を、IDLプログラム動作、と表記する。
IDLプログラム動作の第1ステージのプログラム動作においては、メモリチップ10は、最終的にメモリセルMTにライトされる複数ビットのデータのうちの一部のビットのデータをメモリセルMTにライトする。最終的にメモリセルMTにライトされるデータのビット数を(P+Q)ビットと表記し、第1ステージのプログラム動作においてメモリセルMTにライトされるデータのビット数をPビットと表記する。P、Qはともに1以上の整数である。つまり、第1ステージのプログラム動作では、メモリセルMTのしきい値電圧は、それぞれはPビットのデータが対応付けられた2P個の区間のうちの何れかに設定される。
IDLプログラム動作の第2ステージのプログラム動作では、メモリチップ10は、既にライト済みのPビットのデータをメモリセルMTからリードする。リードされた当該Pビットのデータとメモリコントローラ2から受信するQビットのデータとを合わせた(P+Q)ビットのデータはメモリセルMTにライトされる。メモリセルMTのしきい値電圧は、それぞれは(P+Q)ビットのデータが対応付けられた2(P+Q)個の区間のうちの何れかに設定される。なお、メモリチップ10が既にライト済みのPビットのデータをメモリセルMTからリードする動作は、インターナルデータロード、と称される。
メモリチップ10は、各ステージのプログラム動作の対象とされるメモリセルMTを、例えば、フォギーファインプログラム動作と同様の方法で選択する。即ち、メモリチップ10は、第1のメモリセルMTと、第1のメモリセルMTに隣接する第2のメモリセルMTと、に対して第1ステージのプログラム動作を実行し、その後、第1のメモリセルMTに対して第2ステージのプログラム動作を実行する。これによって、セル間相互干渉が抑制される。
図19は、第3の実施形態のメモリチップ10が実行するIDLプログラム動作によるしきい値電圧の分布の変化を説明するための模式的な図である。本図の説明では、一例として、TLCモードでライトされる3ビットのデータのうちの2ビットのデータが第1ステージのプログラム動作においてライトされることとする。つまり、Pは“2”であり、Qは“1”であることとする。第1ステージのプログラム動作を、メモリセルMT当たりに2ビットのデータをライトするという意味で、MLCプログラム動作、と表記する。また、第2ステージのプログラム動作を、ファインプログラム動作、と表記する。
イレース動作の後のブロック30においては、図19の最上段のグラフに示されるように、全てのメモリセルMTは状態S0になっている。
イレース動作の後の状態のメモリセルグループMCGに対し、第1ステージのプログラム動作であるMLCプログラム動作が実行される。
MLCプログラム動作では、各メモリセルMTのしきい値電圧は、それぞれは2ビットのデータが対応付けられた4個の区間R0”~R3”のうちの何れかに属するように設定される。区間R0”は、電圧Vc1(ただしVc1≦Va1)より低電圧側の区間である。区間R1”は、電圧Vc1から電圧Vc2(ただしVc2≦Va3)までの区間である。区間R2”は、電圧Vc2から電圧Vc3(ただしVc3≦Va5)までの区間である。区間R3”は、電圧Vc3より高電圧側の区間である。以降、区間RX”を状態SX”と表記する場合がある。
MLCプログラム動作によって、状態S0”~S3”のそれぞれにしきい値電圧が設定されたメモリセルMTの群は、ローブ状の分布を形成する。
ここで、各分布が隣接する状態にできるだけはみ出ないように、MLCプログラム動作が実行される。つまり、MLCプログラム動作によれば、互いに分離した4個の分布S0”~S3”が形成される。
インターナルデータロードでは、メモリチップ10は、MLCプログラム動作が完了したメモリセルMTに対し、例えば電圧Vc1、Vc2、およびVc3を検出電圧Vsenseとして使用したリード動作を行う。そして、各分布は、隣接する状態にできるだけはみ出ないように設定されている。よって、メモリチップ10は、当該メモリセルMTからエラーが少ない2ビットのデータを取得することが可能である。
ファインプログラム動作では、新たにメモリコントローラ2から受信する1ビットのデータに応じて各メモリセルMTのしきい値電圧が維持または若干上昇せしめられることにより、各メモリセルMTのしきい値電圧は、8個の区間R0~R7のうちの何れかに属するように設定される。
具体的には、MLCプログラム動作後に状態S0”にあるメモリセルMTのしきい値電圧は、新たに入力される1ビットのデータに応じて、状態S0”(S0)に維持されるかまたは状態S1に設定される。MLCプログラム動作後に状態S1”にあるしきい値電圧は、新たに入力される1ビットのデータに応じて、状態S2または状態S3に設定される。MLCプログラム動作後に状態S2”にあるしきい値電圧は、新たに入力される1ビットのデータに応じて、状態S4または状態S5に設定される。MLCプログラム動作後に状態S3”にあるしきい値電圧は、新たに入力される1ビットのデータに応じて、状態S6または状態S7に設定される。
図20は、第3の実施形態のデータコーディングの一例を示す図である。なお、本図に示されるデータコーディングは、MLCプログラム動作ではロアービットおよびアッパービットがライトされ、ファインプログラム動作ではアッパービットが新たにライトされることを示している。本明細書においてデータ“ab”と表記した場合、“a”はロアービットの値、“b”はミドルビットの値を示すこととする。
図20に示されるように、区間R0”(状態S0”)には、データ“11”が対応付けられている。区間R1”(状態S1”)には、データ“10”が対応付けられている。区間R2”(状態S2”)には、データ“00”が対応付けられている。区間R3”(状態S3”)には、データ“01”が対応付けられている。
そして、区間R0(状態S0)にはデータ“111”、区間R1(状態S1)にはデータ“110”、区間R2(状態S1)にはデータ“100”、区間R3(状態S3)にはデータ“101”、区間R4(状態S4)にはデータ“001”、区間R5(状態S5)にはデータ“000”、区間R6(状態S6)にはデータ“010”、区間R7(状態S7)にはデータ“001”が対応付けられている。
このデータコーディングの例によれば、ロアーページの値と、ミドルページの値とは、アッパービットの値に関係なく同じ値に設定されている。よって、MLCプログラム動作によってロアービットとミドルビットとをライトした後に、ファインプログラム動作においてアッパーページを追加して3ページ分のデータをライトすることが可能である。
第3の実施形態では、メモリチップ10は、MLCプログラム動作の際と、ファインプログラム動作の際とで、ロアーページ、ミドルページ、およびアッパーページのうちのそれぞれ異なるページに温度情報TEMPのライトを行う。
図21は、第3の実施形態の温度記憶領域ARtempを構成するメモリセルMTのしきい値電圧の変移の一例を説明するための模式的な図である。本図においては、温度記憶領域ARtempを構成するメモリセルMTが含まれ得る分布にはハッチングが施されている。なお、本図の説明においては、特に明記されない限り、温度記憶領域ARtempを構成するメモリセルMTを、単に、メモリセルMTと表記する。
MLCプログラム動作では、メモリセルMTのしきい値電圧は、温度ビット値TEMP-bに応じて状態S0”(S0)または状態S1”に設定される。
続くファインプログラム動作では、メモリセルMTのしきい値電圧は、温度ビット値TEMP-bに応じて状態S0~S3の何れかに設定される。MLCプログラム動作によって状態S0”に設定されたメモリセルMTのしきい値電圧は、ファインプログラム動作では、温度ビット値TEMP-bに応じて状態S0または状態S1に設定される。MLCプログラム動作によって状態S1”に設定されたメモリセルMTのしきい値電圧は、ファインプログラム動作では、温度ビット値TEMP-bに応じて状態S2または状態S3に設定される。
図22は、第3の実施形態の温度記憶領域ARtempに対するプログラム動作の際に生成されるデータを説明するための図である。本図の説明においても、特に明記されない限り、温度記憶領域ARtempを構成するメモリセルMTを、単に、メモリセルMTと表記する。
MLCプログラム動作においては、シーケンサ16は、温度ビット値TEMP-bが“0”である場合には、データ“11”を生成し、データ“11”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S0”に設定される。シーケンサ16は、温度ビット値TEMP-bが“1”である場合には、データ“10”を生成し、データ“10”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“0”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S1”に設定される。
ファインプログラム動作において、温度ビット値TEMP-bが“0”である場合には、シーケンサ16は、アッパービットのデータとして“0”を生成する。そして、制御回路15は、既にメモリセルMTにライトされた2ビットのデータ、つまりロアービットおよびアッパービットの値を、インターナルデータロードによってリードする。そして、シーケンサ16は、リードされたロアービットおよびアッパービットの値と、生成されたアッパービットの値とを組み合わせた、3ビットのデータをカラムモジュール18に供給する。
例えば、MLCプログラム動作においてライトされた温度ビット値TEMP-bが“0”であった場合、インターナルデータロードによってデータ“11”がリードされる。シーケンサ16は、リードされたデータ“11”とアッパービット“0”とを組み合わせたデータ“110”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“0”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S1に設定される。
MLCプログラム動作においてライトされた温度ビット値TEMP-bが“1”であった場合、インターナルデータロードによってデータ“10”がリードされる。シーケンサ16は、リードされたデータ“10”とアッパービット“0”とを組み合わせたデータ“100”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルページビットとして“0”が、アッパービットとして“0”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S2に設定される。
ファインプログラム動作において、温度ビット値TEMP-bが“1”である場合には、シーケンサ16は、アッパービットのデータとして“1”を生成する。そして、制御回路15は、既にメモリセルMTにライトされた2ビットのデータ、つまりロアービットおよびアッパービットの値を、インターナルデータロードによってリードする。そして、シーケンサ16は、リードされたロアービットおよびアッパービットの値と、生成されたアッパービットの値とを組み合わせた、3ビットのデータをカラムモジュール18に供給する。
例えば、MLCプログラム動作においてライトされた温度ビット値TEMP-bが“0”であった場合、インターナルデータロードによってデータ“11”がリードされる。シーケンサ16は、リードされたデータ“11”とアッパービット“1”とを組み合わせたデータ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S0に設定される。
MLCプログラム動作においてライトされた温度ビット値TEMP-bが“1”であった場合、インターナルデータロードによってデータ“10”がリードされる。シーケンサ16は、リードされたデータ“10”とアッパービット“1”とを組み合わせたデータ“101”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“0”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、状態S4に設定される。
つまり、図22に示された例によれば、ミドルページにMLCプログラム動作時の温度情報TEMP(より正確には温度情報TEMPをビット反転した数値情報)がライトされ、アッパーページにファインプログラム動作時の温度情報TEMPがライトされる。
よって、メモリコントローラ2は、アッパーページをリードの対象としたリード動作をメモリチップ10に指示することで、ファインプログラム動作時の温度情報TEMPを取得することができる。メモリコントローラ2は、ミドルページをリードの対象としたリード動作をメモリチップ10に指示することで、MLCプログラム動作時の温度情報TEMPを取得することができる。
なお、MLCプログラム動作の際に温度情報TEMPがライトされるページはミドルページでなくてもよい。MLCプログラム動作の際にロアーページに温度情報TEMPがライトされるようにメモリチップ10が構成されてもよい。
図23は、第3の実施形態のメモリチップ10のプログラム動作の一例を示すフローチャートである。
I/Oインタフェース13は、メモリコントローラ2から、ライトコマンドとともに2ページ分のデータ、より正確にはロアーページおよびミドルページのデータ、を受信する(ST401)。すると、制御回路15は、MLCプログラム動作を実行する(ST5)。
MLCプログラム動作では、シーケンサ16は、温度センサ12から温度情報TEMPを取得する(ST402)。そして、シーケンサ16は、ST402によって取得された温度情報TEMPに基づいて、“0”の温度ビット値TEMP-bに対応したデータ“11”または“1”の温度ビット値TEMP-bに対応した“10”を、各温度記憶領域ARtempを構成するメモリセルMT毎に生成する(ST403)。
そして、制御回路15は、プログラムパルスをライト先のメモリセルグループMCGに接続されたワード線WLに1回以上印加することによって、ST401で受信した2ページ分のデータをユーザ領域ARusrにライトする。すなわち、制御回路15は、ST403で生成されたデータ“11”またはデータ“10”を、各温度記憶領域ARtempを構成する各メモリセルMTにライトする(ST404)。つまり、制御回路15は、メモリセルMT当たりに2ビットのデータをユーザ領域ARusrおよび温度記憶領域ARtempにライトする。そして、MLCプログラム動作が終了する。
続いて、I/Oインタフェース13は、メモリコントローラ2から、1ページ分のデータ、より正確にはアッパーページのデータ、を受信する(ST405)。すると、制御回路15は、ファインプログラム動作を実行する(ST6)。
ファインプログラム動作では、シーケンサ16は、温度センサ12から温度情報TEMPを取得する(ST406)。制御回路15は、インターナルデータロードによって、ST404でライトされた2ページ分のデータをユーザ領域ARusrから取得し、ST404でライトされたデータ“11”またはデータ“10”を温度記憶領域ARtempから取得する(ST407)。つまり、制御回路15は、ユーザ領域ARusrおよび温度記憶領域ARtempからメモリセルMT当たり2ビットのデータを取得する。
シーケンサ16は、ST406で取得された温度情報TEMPに基づいて、“0”の温度ビット値TEMP-bに対応したデータ“0”または“1”の温度ビット値TEMP-bに対応した“0”を、各温度記憶領域ARtempを構成するメモリセルMT毎に生成する(ST408)。
そして、制御回路15は、プログラムパルスをライト先のメモリセルグループMCGに接続されたワード線WLに1回以上印加することによって、ユーザ領域ARusrにST407でリードされた2ページ分のデータとST405で受信された1ページ分のデータとを組み合わせた3ページ分のデータをライトする(ST409)。さらに制御回路15は、各温度記憶領域ARtempを構成する各メモリセルMTにST407でリードされたメモリセルMT当たり2ビットのデータとST408で生成されたデータ“0”または“1”とを組み合わせた3ビットのデータをライトする(ST409)。そして、ファインプログラム動作が終了し、第3の実施形態のプログラム動作が終了する。
メモリコントローラ2は、ミドルページをリードの対象としたリード動作をメモリチップ10に指示することで、MLCプログラム動作の際にライトされた温度情報TEMPを取得することができる。また、メモリコントローラ2は、アッパーページをリードの対象としたリード動作をメモリチップ10に指示することで、ファインプログラム動作の際にライトされた温度情報TEMPを取得することができる。
なお、上記の例では、Pは“2”であり、Qは“1”であることとした。P、Qの値はこれらに限定されない。
第3の実施形態によれば、I/Oインタフェース13は、メモリセルMT当たりPビットのデータ、つまりPページ分のデータを受信する。I/Oインタフェース13は、Pページ分のデータの後にメモリセルMT当たりQビットのデータ、つまりQページ分のデータを受信する。制御回路15は、I/Oインタフェース13がPページ分のデータを受信した場合、第1ステージのプログラム動作を実行する。
第1ステージのプログラム動作では、制御回路15は、温度センサ12から温度情報を取得する。そして、制御回路15は、ユーザ領域ARusrを構成する各メモリセルMTのしきい値電圧を、2P個の区間のうちのPページ分のデータに応じた区間に設定する。さらに制御回路15は、温度記憶領域ARtempを構成する各メモリセルMTのしきい値電圧を2P個の区間のうちの第1ステージのプログラム動作で取得された温度情報TEMPに応じた区間に設定する。
第1ステージのプログラム動作の後、I/Oインタフェース13がQページ分のデータを受信した場合、制御回路15は、第2ステージのプログラム動作を実行する。
第2ステージのプログラム動作では、制御回路15は、温度センサ12から温度情報を取得する。そして、制御回路15は、インターナルデータロードによって、ユーザ領域ARusrからPページ分のデータを取得する。制御回路15は、温度記憶領域ARtempから第1ステージのプログラム動作で取得された温度情報TEMPに対応した、メモリセルMT当たり2ビットのデータを取得する。制御回路15は、ユーザ領域ARusrを構成する各メモリセルMTのしきい値電圧を、2(P+Q)個の区間のうちの、インターナルデータロードによって取得されたPページ分のデータとI/Oインタフェース13によって受信されたQページ分のデータとを組み合わせた、(P+Q)ページ分のデータに応じた区間に設定する。つまり、制御回路15は、ユーザ領域ARusrに(P+Q)ページ分のデータをライトする。制御回路15は、ユーザ領域ARusrに(P+Q)ページ分のデータをライトする。さらに制御回路15は、温度記憶領域ARtempを構成する各メモリセルMTのしきい値電圧を、2(P+Q)個の区間のうちの、インターナルデータロードによって取得された温度情報TEMPと第2ステージのプログラム動作で温度センサ12から取得された温度情報TEMPとの組み合わせに応じた第2区間に設定する。
よって、第2ステージのプログラム動作が完了したメモリセルグループMCGから、第1ステージのプログラム動作時の温度情報TEMPおよび第2ステージのプログラム動作時の温度情報TEMPの両方を取得することが可能になる。
(第4の実施形態)
第2の実施形態にて説明されたフォギーファインプログラム動作によれば、フォギープログラム動作時とファインプログラム動作時との両方において、温度情報TEMPがライトされる。しかしながら、フォギープログラム動作時にライトされた温度情報TEMPは、ファインプログラム動作後は取得することができない。
そこで、第4の実施形態では、フォギープログラム動作時と、ファインプログラム動作時と、でメモリセルグループMCG内のそれぞれ異なる複数のメモリセルMTに温度情報TEMPがライトされる。これによって、ファインプログラム動作が完了した後であっても、フォギープログラム動作時の温度情報TEMPを取得できるようにする。
図24は、第4の実施形態のメモリセルグループMCGに設けられた冗長領域ARredにおける温度情報TEMPのライト位置の例を示す模式的な図である。
図24に示されるように、冗長領域ARredには、フォギープログラム動作時に温度情報TEMPがライトされる温度記憶領域ARtemp0と、ファインプログラム動作時に温度情報TEMPがライトされる温度記憶領域ARtemp1と、の対が複数、設けられている。ここでは一例として、温度記憶領域ARtemp0と温度記憶領域ARtemp1との対が4個設けられている。つまり、メモリセルグループMCGは、フォギープログラム動作時に4個の温度情報TEMPがライトされる32個のメモリセルMTと、ファインプログラム動作時に4個の温度情報TEMPがライトされる32個のメモリセルMTと、を含む。
図25は、第4の実施形態の温度記憶領域ARtemp0を構成するメモリセルMTのしきい値電圧の変移の一例を説明するための模式的な図である。本図においては、温度記憶領域ARtemp0を構成するメモリセルMTが含まれ得る分布にはハッチングが施されている。なお、本図の説明においては、特に明記されない限り、温度記憶領域ARtemp0を構成するメモリセルMTを、単に、メモリセルMTと表記する。
フォギープログラム動作において、メモリセルMTのしきい値電圧は、温度ビット値TEMP-bに応じて状態S0’(S0)または状態S3’に設定される。
ファインプログラム動作においては、メモリセルMTのしきい値電圧は、フォギープログラム動作後の状態に維持される。
図26は、第4の実施形態の温度記憶領域ARtemp1を構成するメモリセルMTのしきい値電圧の変移の一例を説明するための模式的な図である。本図においては、温度記憶領域ARtemp1を構成するメモリセルMTが含まれ得る分布にはハッチングが施されている。なお、本図の説明においては、特に明記されない限り、温度記憶領域ARtemp1を構成するメモリセルMTを、単に、メモリセルMTと表記する。
フォギープログラム動作においては、第1の実施形態と同様、メモリセルMTのしきい値電圧は、温度ビット値TEMP-bに関係なく状態S0’(S0)に設定される。
ファインプログラム動作においては、メモリセルMTのしきい値電圧は、第1の実施形態と同様、温度ビット値TEMP-bに応じて状態S0または状態S1に設定される。
図27は、第4の実施形態の温度記憶領域ARtemp0、ARtemp1に対するプログラム動作の際に生成される3ビットのデータを説明するための図である。
温度記憶領域ARtemp0に対しては、フォギープログラム動作においては、シーケンサ16は、温度ビット値TEMP-bが“0”である場合には、データ“000”を生成し、データ“000”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“0”が、ミドルビットとして“0”が、アッパービットとして“0”が書き込まれる。よって、メモリセルMTのしきい値電圧は状態S3’に設定される。シーケンサ16は、温度ビット値TEMP-bが“1”である場合には、データ“111”を生成し、データ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は状態S0’(S0)に設定される。
温度記憶領域ARtemp0に対しては、ファインプログラム動作においては、シーケンサ16は、温度ビット値TEMP-bが“0”か“1”であるかに関わらず、データ“111”を生成し、データ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。
データ“111”は、状態S0~S7のうちの最も低電圧側の状態S0に対応する。しかしながら、フォギープログラム動作後は、メモリセルMTのしきい値は、状態S0と等しい状態S0’か、または状態S0よりも高電圧側に設定された状態S3’にある。よって、ファインプログラム動作においては、状態S0’(S0)または状態S3’にあるしきい値電圧は、ファインプログラム動作においては上昇せしめられず、状態S0’(S0)または状態S3’に維持される。
温度記憶領域ARtemp1に対しては、フォギープログラム動作においては、シーケンサ16は、温度ビット値TEMP-bが“0”であるか“1”であるかに関わらず、データ“111”を生成し、データ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は状態S0’(S0)に設定される。
温度記憶領域ARtemp1に対しては、ファインプログラム動作においては、シーケンサ16は、温度ビット値TEMP-bが“0”である場合には、データ“011”を生成し、データ“011”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“0”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、“0”の温度ビット値TEMP-bに対応する状態S1に設定される。シーケンサ16は、温度ビット値TEMP-bが“1”である場合には、データ“111”を生成し、データ“111”をカラムモジュール18に供給する。メモリセルMTのロアービットとして“1”が、ミドルビットとして“1”が、アッパービットとして“1”が書き込まれる。よって、メモリセルMTのしきい値電圧は、“1”の温度ビット値TEMP-bに対応する状態S0に設定される。
第4の実施形態によれば、制御回路15は、第1ステージのプログラム動作であるフォギープログラム動作においては、温度センサ12から温度情報TEMPを取得する。そして、制御回路15は、ユーザ領域ARusrを構成する複数のメモリセルMTのそれぞれのしきい値電圧を状態S0’~S7’のうちのライトデータに応じた状態に設定する。さらに制御回路15は、温度記憶領域ARtemp0を構成するメモリセルMTのしきい値電圧を2つの状態S0’、S3’のうちのフォギープログラム動作において取得された温度情報TEMPに応じた状態に設定する。
また、制御回路15は、第2ステージのプログラム動作であるファインプログラム動作においては、温度センサ12から温度情報TEMPを取得する。そして、制御回路15は、ユーザ領域ARusrを構成する複数のメモリセルMTのそれぞれのしきい値電圧を状態S0~S7のうちのライトデータに応じた状態に設定する。さらに制御回路15は、温度記憶領域ARtemp1を構成するメモリセルMTのしきい値電圧を2つの状態S0、S1のうちのファインプログラム動作温度情報TEMPに応じた状態に設定する。
よって、メモリコントローラ2は、温度記憶領域ARtemp0をリードの対象としたリード動作をメモリチップ10に指示することで、フォギープログラム動作時の温度情報TEMPを取得することができる。また、メモリコントローラ2は、温度記憶領域ARtemp1をリードの対象としたリード動作をメモリチップ10に指示することで、ファインプログラム動作の際にライトされた温度情報TEMPを取得することができる。
なお、フォギープログラム動作およびファインプログラム動作においてメモリセルMTのしきい値電圧が温度情報ビット値TEMP-bに応じて設定され得る2つの状態は、上記された例に限定されない。
例えば、温度記憶領域ARtemp1を構成するメモリセルMTに対しては、フォギープログラム動作において、制御回路15は、第1の実施形態の第2の変形例と同様、しきい値電圧を、状態S0’~S7’のうちの低電圧側から2番目以降に位置する状態に設定してもよい。
また、ファインプログラム動作において、制御回路15は温度記憶領域ARtemp1を構成するメモリセルMTのしきい値電圧を間に1つ以上の状態を挟むように離間した2つの状態の何れかに設定してもよい。また、制御回路15は、第1の実施形態の第1の変形例と同様、温度記憶領域ARtemp1を構成するメモリセルMTのしきい値電圧を、間に別の2つの状態を挟むように互いに離間する2つの状態の何れかに設定してもよい。
ファインプログラム動作後における温度記憶領域ARtemp1を構成するメモリセルMTの状態がフォギープログラム動作後におけるメモリセルMTの状態と同じ電圧の状態か、またはより高電圧側の状態である限り、設計者は、ファインプログラム動作において、メモリセルMTのしきい値電圧が設定され得る2つの状態を任意に決定することが可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。