JP2018147543A - 不揮発性半導体記憶装置 - Google Patents
不揮発性半導体記憶装置 Download PDFInfo
- Publication number
- JP2018147543A JP2018147543A JP2017044919A JP2017044919A JP2018147543A JP 2018147543 A JP2018147543 A JP 2018147543A JP 2017044919 A JP2017044919 A JP 2017044919A JP 2017044919 A JP2017044919 A JP 2017044919A JP 2018147543 A JP2018147543 A JP 2018147543A
- Authority
- JP
- Japan
- Prior art keywords
- data
- read
- voltage
- write
- memory cell
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
- G11C2211/5621—Multilevel programming verification
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】信頼性の向上を図ることができる不揮発性半導体記憶装置を実現する。【解決手段】不揮発性半導体記憶装置は、複数の不揮発性メモリセルを含むメモリセルアレイと、前記メモリセルアレイに対するデータ書き込み動作を制御する制御回路とを具備する。制御回路は、第1の書き込みモードにおいては、書き込みデータに応じて前記複数のビット線内の一つ以上のビット線を充電する動作と、前記アドレスに応じて選択される前記複数のワード線内の選択ワード線に書き込み電圧を印加する動作とを含む第1の書き込み動作し、第2の書き込みモードにおいては、前記書き込みデータに応じて前記一つ以上のビット線を充電する動作を含む第2の書き込み動作であって、前記選択ワード線に前記書き込み電圧を印加する動作が省略された第2の書き込み動作を実行する。【選択図】図10
Description
本発明の実施形態は、不揮発性半導体記憶装置に関する。
近年、NAND型フラッシュメモリのような不揮発性半導体記憶装置においては、その信頼性の向上を図るための技術が求められている。
本発明が解決しようとする課題は、信頼性の向上を図ることができる不揮発性半導体記憶装置を提供することである。
実施形態によれば、不揮発性半導体記憶装置は、複数の不揮発性メモリセルを含み、複数のビット線と複数のワード線に接続されたメモリセルアレイと、外部から受信されるアドレスおよび書き込みデータに応じて前記メモリセルアレイに対するデータ書き込み動作を制御する制御回路とを具備する。前記制御回路は、第1の書き込みモードにおいては、前記書き込みデータに応じて前記複数のビット線内の一つ以上のビット線を充電する動作と、前記アドレスに応じて選択される前記複数のワード線内の選択ワード線に書き込み電圧を印加する動作とを含む第1の書き込み動作し、第2の書き込みモードにおいては、書き込みデータに応じて前記一つ以上のビット線を充電する動作を含む第2の書き込み動作であって、前記選択ワード線に前記書き込み電圧を印加する動作が省略された第2の書き込み動作を実行する。
また、実施形態によれば、不揮発性半導体記憶装置は、複数の不揮発性メモリセルを含み、複数のビット線と複数のワード線に接続されたメモリセルアレイと、前記複数のワード線内の選択ワード線に接続された第1の不揮発性メモリセル群にm(mは2以上の整数)ページのデータを書き込んで前記第1の不揮発性メモリセル群の各不揮発性メモリセルを互いに閾値電圧レベルが異なる2m個の状態のいずれかに設定する制御回路とを具備する。前記制御回路は、前記2m個の状態内の第1の状態に対応する第1の読み出し電圧を前記選択ワード線に印加して、前記第1の不揮発性メモリセル群から第1のデータを読み出す。前記制御回路は、前記第1の状態よりも閾値電圧レベルの高い第2の状態に対応する第2の読み出し電圧を前記選択ワード線に印加して前記第1の不揮発性メモリセル群から第2のデータを読み出す。前記制御回路は、前記第1の状態に対応し且つ前記第1の読み出し電圧よりも高い第3の読み出し電圧を前記選択ワード線に印加して、前記第1の不揮発性メモリセル群から第3のデータを読み出す。前記制御回路は、前記第2の状態に対応し且つ前記第2の読み出し電圧よりも高い第4の読み出し電圧を前記選択ワード線に印加して前記第1の不揮発性メモリセル群から第4のデータを読み出す。前記制御回路は、前記第1、第2、第3、第4のデータに基づいて、前記選択ワード線に印加される読み出し電圧の値に応じて変化する、オンした不揮発性メモリセルの数を計数する。前記第2のデータの読み出し動作から前記第3のデータの読み出し動作への遷移時に、前記選択ワード線および前記複数のビット線は放電され、前記複数のビット線の電圧は基準電圧からプリチャージ電圧に上昇される。
以下、図面を参照して、実施形態を説明する。
(第1実施形態)
まず、図1を参照して、第1実施形態に係る不揮発性半導体記憶装置を含むメモリシステムの構成を説明する。
(第1実施形態)
まず、図1を参照して、第1実施形態に係る不揮発性半導体記憶装置を含むメモリシステムの構成を説明する。
図1は、第1実施形態の不揮発性半導体記憶装置10とメモリコントローラ200とを含むメモリシステム1を示す。このメモリシステム1は、ホスト装置2からの指示に基づいて、不揮発性半導体記憶装置10にデータを書き込み、不揮発性半導体記憶装置10からデータを読み出すように構成されたストレージデバイスとして機能し得る。このメモリシステム1の例は、限定されないが、例えば、ソリッドステートドライブ(SSD)、ユニバーサル・フラッシュ・ストレージ(UFS)デバイス、メモリカード、USBメモリ等を含む。ホスト装置2の例は、限定されないが、例えば、サーバ、パーソナルコンピュータのようなコンピューティングデバイス、携帯電話、スマートフォンのような携帯端末等を含む。
図1では、メモリシステム1に8個の不揮発性半導体記憶装置10が含まれる場合が例示されている。各不揮発性半導体記憶装置10は、不揮発性メモリであり、例えば、NAND型フラッシュメモリである。
メモリコントローラ200は、ホスト装置2からI/O要求(読み出し要求、書き込み要求)のような様々な要求を受信し、受信した要求に基づいて不揮発性半導体記憶装置10それぞれを制御する。具体的には、メモリコントローラ200は、ホスト装置2からの書き込み要求に応じてデータを不揮発性半導体記憶装置10に書き込み、ホスト装置2からの読み出し要求に応じて不揮発性半導体記憶装置10からデータを読み出してホスト装置2に送信する。
メモリコントローラ200は、ホストインターフェイス210、プロセッサ(CPU)220、RAM230、メモリインターフェイス240、およびECC回路250等を含む。
ホストインターフェイス210は、通信インタフェースを介してホスト装置2と接続される。通信インタフェースの規格としては、例えばPCIe(PCI Express)、SATA(Serial Advanced Technology Attachment)、USB(Universal Serial Bus)、SAS(Serial Attached SCSI)、MIPI(Mobile Industry Processor Interface)、UniPro等を使用し得る。
プロセッサ(CPU)220は、図示しないROMに保持されているファームウェア(プログラム)を実行することによって、ホストインターフェイス210、メモリインターフェイス240、およびECC回路250を制御する。
RAM230は、書き込みデータまたはリードデータを一時的に保持するランダムアクセスメモリである。メモリインターフェイス240は、プロセッサ(CPU)220の制御に従って、不揮発性半導体記憶装置10それぞれを制御する。
メモリインターフェイス240は、コマンド生成部241を含む。コマンド生成部241は、プロセッサ(CPU)220の制御に従い、不揮発性半導体記憶装置10に送出されるべき様々なコマンドを生成する。ECC回路250は、ECCエンコーダとECCデコーダとを含む。ECCエンコーダは、書き込みデータ(ユーザデータ)を符号化して、ユーザデータと誤り訂正符号(ECC)とを含むメモリ書き込みデータを生成する。ECCデコーダは、ユーザデータと誤り訂正符号(ECC)とを含むメモリ読み出しデータを復号して、ユーザデータの誤りを訂正する。
メモリインターフェイス240は、メモリバス11を介して複数の不揮発性半導体記憶装置10にそれぞれ接続される。メモリインターフェイス240と各不揮発性半導体記憶装置10との間の通信においては、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、ライトプロテクト信号WPn、レディー/ビジー信号RY/BYn、I/O信号DQ0〜DQ7,DQn0〜DQn7、データストローブ信号DQS、DQSnが使用されてもよい。ここで、信号の名称の末尾の「n」は、この信号が負論理の信号であることを意味する。メモリバス11には、I/O信号DQ0〜DQ7,DQn0〜DQn7等を運ぶためのI/Oバス、および複数の制御信号線が含まれている。これら制御信号線は、上述の信号CEn、CLE、ALE、WEn、REn、WPn、RY/BYn等を運ぶために使用される。
チップイネーブル信号CEnは、不揮発性半導体記憶装置(ここではNAND型フラッシュメモリ)10を選択するための信号である。コマンドラッチイネーブル信号CLEは、信号CLEと並行して不揮発性半導体記憶装置10に流れるI/O信号DQ0〜DQ7,DQn0〜DQn7がコマンドであることを不揮発性半導体記憶装置10に通知するための信号である。アドレスラッチイネーブル信号ALEは、アサートされている信号ALEと並行して不揮発性半導体記憶装置10に流れるI/O信号DQ0〜DQ7,DQn0〜DQn7がアドレスであることを不揮発性半導体記憶装置10に通知するための信号である。ライトイネーブル信号WEnは、アサートされている信号WEnと並行して不揮発性半導体記憶装置10に流れるI/O信号DQ0〜DQ7,DQn0〜DQn7を取り込むことを不揮発性半導体記憶装置10に指示するための信号である。リードイネーブル信号REnは、I/O信号DQ0〜DQ7,DQn0〜DQn7を出力すべきことを不揮発性半導体記憶装置10に指示するための信号である。ライトプロテクト信号WPnは、データ書き込みおよび消去の禁止を不揮発性半導体記憶装置10に指示するための信号である。レディー/ビジー信号RY/BYnは、不揮発性半導体記憶装置10がレディー状態/ビジー状態のいずれであるかを示す信号である。不揮発性半導体記憶装置10は、レディー状態においてはメモリコントローラ200からのコマンドを受け付け、ビジー状態においてはメモリコントローラ200からのコマンドを受け付けない。
I/O信号DQ0〜DQ7,DQn0〜DQn7は、例えば8ビット幅を有する差動信号対である。これらI/O信号DQ0〜DQ7,DQn0〜DQn7は、メモリコントローラ200から不揮発性半導体記憶装置10へのコマンド、アドレス、データの伝送、および不揮発性半導体記憶装置10からメモリコントローラ200へのデータ、ステータスの伝送に使用される。データストローブ信号DQS、DQSnは、I/O信号DQ0〜DQ7,DQn0〜DQn7の入出力タイミングを示す。
メモリコントローラ200は、各不揮発性半導体記憶装置10内のデータパスおよびメモリバス11を含む伝送経路全体の状態をチェックするためのテスト機能を有する。このテスト機能には、不揮発性半導体記憶装置10間のデータ出力タイミングの差を測定して各種信号の入出力タイミングを調整するトレーニング機能も含まれる。
図2は、一つの不揮発性半導体記憶装置10とコントローラ200との関係を示す。
不揮発性半導体記憶装置10は、メモリコア(メモリセルアレイ)12、センスアンプ(S/A)13、キャッシュ14、データパス15、I/O制御回路16等を含む。メモリコア(メモリセルアレイ)12は、複数の不揮発性メモリセル(以下、単にメモリセルと称する)を含む。メモリセルアレイは複数のブロックを含む。ブロックは消去動作の単位である。各ブロックは、複数のページを含む。一つのページは、同一ワード線に接続された複数のメモリセルを含む。
メモリ書き込みデータは、I/O制御回路16、データパス15、キャッシュ14を介してセンスアンプ(S/A)13に送られ、そしてメモリセルアレイ12内のメモリセル群に書き込まれる。データパス15はI/O制御回路16とキャッシュ14との間に配置された内部配線であり、メモリ書き込みデータ/メモリ読み出しデータの伝送に使用される。以下では、メモリ書き込みデータ、メモリ読み出しデータを、単に書き込みデータ/読み出しデータと称する。
図3は、不揮発性半導体記憶装置10の構成例を示す。以下では、不揮発性半導体記憶装置10がNAND型フラッシュメモリである場合を想定する。
NAND型フラッシュメモリチップは、メモリセルアレイ12、センスアンプ13、キャッシュ14、データパス15、I/O制御回路16、論理制御回路17、状態検出回路18、ステータスレジスタ19、アドレスレジスタ20、コマンドレジスタ21、高電圧発生回路22、制御回路23、カラムアドレスバッファ24、カラムデコーダ25、ロウアドレスバッファ26、ロウデコーダ27、温度センサ28等の要素を含む。
I/O制御回路16は、メモリコントローラ200からI/O信号DQ0〜DQ7,DQn0〜DQn7を受け取り、またI/O信号DQ0〜DQ7,DQn0〜DQn7をメモリコントローラ200に送信する。I/O信号DQ0〜DQ7,DQn0〜DQn7によって受信されたコマンドは、コマンドレジスタ21に格納される。I/O信号DQ0〜DQ7,DQn0〜DQn7によって受信されたアドレスは、アドレスレジスタ20に格納される。また、データ、またはステータスレジスタ19内のステータスを送信する際、I/O制御回路16は、データストローブ信号DQS、DQSnも送信する。
論理制御回路17は、メモリコントローラ200から種々の制御信号を受け取り、制御信号に基づいて、I/O制御回路16を制御する。制御信号は、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、ライトプロテクト信号WPn、およびデータストローブ信号DQS、DQSnを含む。
制御回路23は、コマンドレジスタ21からコマンドを受け取り、このコマンドに基づいてNAND型フラッシュメモリチップ内の各要素を制御するように構成されたシーケンサとして機能する。制御回路23は、書き込み/読み出し/消去動作のみならず、他の様々な機能を実行することができる。制御回路23は、カウンタ23A、レジスタ23B等を含む。カウンタ23Aは、後述するオン・チップ・FBC(フェイルビットカウント)機能を実行するために使用される。レジスタ23Bは、オン・チップ・FBCによってカウントされたフェイルビットの数を保持するための内部レジスタである。オン・チップ・FBCの詳細は図18以降で説明する。
高電圧発生回路22は、NAND型フラッシュメモリチップの外部から電源電圧を受け取り、電源電圧から種々の電圧を生成する。生成された電圧は、メモリセルアレイ12、センスアンプ13、ロウデコーダ27等の要素に供給される。
ロウデコーダ27は、ロウアドレスバッファ26を介してアドレスレジスタ20からロウアドレスを受け取り、このロウアドレス信号に基づいて、あるブロック内の一つのワード線を選択する。センスアンプ13は、データの読み出し時には、選択ワード線に接続されたメモリセル群からビット線それぞれに読み出されたデータをセンスする。またデータの書き込み時には、センスアンプ13は、書き込みデータをビット線それぞれに出力する。メモリセルアレイ12へのデータの読み出し及び書き込みは、同一ワード線に接続された複数のメモリセルの単位で行われ、この単位がページとなる。
キャッシュ14は、データパス15を介してI/O制御回路16に接続される。キャッシュ14は、書き込みデータまたは読み出しデータ等を保持可能な複数段のデータラッチを含む。キャッシュ14は、I/O制御回路16からの書き込みデータを保持し、書き込みデータをセンスアンプ13に供給する。また、キャッシュ14は、センスアンプ13から読み出しデータを受け取り、カラムデコーダ25の制御に従って、読み出しデータをI/O制御回路16に送出する。
なお、NAND型フラッシュメモリチップは複数のプレーンを含むマルチプレーン構成であってもよい。NAND型フラッシュメモリチップがプレーン#1、#2を含む場合には、各プレーンは、メモリセルアレイとその周辺回路を含む。周辺回路は、例えば、ロウデコーダ、ロウアドレスバッファ、センスアンプ、キャッシュ、カラムデコーダ、カラムアドレスバッファ、等を含んでもよい。
図4は、メモリセルアレイ12内の複数のブロック一つの構成例を示す。
一つのブロックBLK(ここではBLK0)は、ストリングユニットSU0〜SU3を含んでもよい。これらストリングユニットSU0〜SU3は同一の構成を有するので、ここでは、ストリングユニットSU0の構成を説明する。
ストリングユニットSU0は、複数のワード線WL0〜WL7、および複数のビット線BL0〜BL(L−1)に接続されている。ストリングユニットSU0は、複数のNANDストリングSTRを含む。
各NANDストリングSTRは、1つの選択ゲートトランジスタST0と、複数(例えば8つ)のメモリセルトランジスタMT0〜MT7と、1つの選択ゲートトランジスタDT0とを含む。選択ゲートトランジスタST0、メモリセルトランジスタMT0〜MT7、選択ゲートトランジスタDT0は、この順で、ソース線CELSRCと1つのビット線BLとの聞に直列に接続されている。各メモリセルトランジスタMTは、メモリセルとして機能する。各メモリセルトランジスタMTは、制御ゲート、および電荷蓄積層を含む。メモリセルトランジスタMT0〜MT7の制御ゲートは、ワード線WL0〜WL7にそれぞれ接続されている。選択ゲートトランジスタST0のゲートは、選択ゲート線SGSL0に接続されている。選択ゲートトランジスタDT0のゲートは、選択ゲート線SGDL0に接続されている。
ストリングユニットSU0中で、同一ワード線WLに接続されるメモリセルトランジスタMTの組はページと称される。データ書き込み/読み出しは、ページ単位で実行される。
図5は、キャッシュ14の構成例を示す。
キャッシュ14は、データラッチDL0、DL1、DL2、DL3、XDLと、算術演算回路OPとを含む。データラッチDL0、DL1、DL2、DL3、XDLの各々は、ビット線BL0〜BL(L−1)の数と同数のラッチ回路を含む。データラッチDL0、DL1、DL2、DL3は、センスアンプ(S/A)13からの読み出しデータまたはセンスアンプ(S/A)13への書き込みデータを一時的に保持する。XDLは、外部とのインタフェース用のデータラッチ(データキャッシュ)として機能する。メモリコントローラ200からの書き込みデータは、XDLを介して、データラッチDL0、DL1、DL2、DL3、またはセンスアンプ(S/A)13に転送される。また、読み出しデータは、XDLを介して、メモリコントローラ200に出力される。
算術演算回路OPは、データラッチDL0、DL1、DL2、DL3、XDL内のデータに基づいてNOT演算、OR演算、AND演算、XOR演算、XNOR演算のような様々な論理演算を実行する。
図6は、書き込み動作を示す。
センスアンプ13は、書き込みデータに応じて、ビット線BLに0Vまたは正電源電圧VDDを印加する。すなわち、メモリセルトランジスタMTの電荷蓄積層に電荷を注入してメモリセルトランジスタもかの閾値電圧を上昇させる場合(“0”プログラム)には、センスアンプ13は、ビット線BLに例えば0Vを印加する。一方、メモリセルトランジスタMTの閾値電圧を消去状態に対応する閾値電圧レベルに維持する場合(“1”プログラム)には、センスアンプ13は、ビット線BLに例えば正電源電圧VDDを印加する。
更にロウデコーダ27は、例えばワード線WL2を選択し、この選択ワード線WL2に正の高電圧VPGMを印加し、その他の非選択ワード線WL0、WL1、及びWL3〜WL7に正電圧VPASSを印加する。電圧VPGMは、FNトンネリングにより選択トランジスタMT2の電荷蓄積層に電荷を注入するためのプログラムパルスである。VPASSは、非選択のメモリセルトランジスタMT0、MT1、MT3〜MT7をその保持データにかかわらずオンさせるための電圧であり、VPGM>VPASSである。
またロウデコーダ27は、選択したストリングユニットSUの選択ゲート線SGDLに正電圧VSGDを印加し、セレクトゲート線SGSLにVSGSを印加する。
この結果、メモリセルトランジスタMT0〜MT7はオン状態となる。また、ビット線BLに0Vが印加された選択トランジスタDTはオン状態となり、ビット線BLにVDDが印加された選択トランジスタDTはカットオフする。選択トランジスタSTはオフ状態である。
従って、選択トランジスタDTがオンされたNANDストリングでは、選択ワード線WL2に接続されたメモリセルトランジスタMT2の電荷蓄積層に電荷が注入され、メモリセルトランジスタMT2の閾値電圧は上昇される。
一方、選択トランジスタDTがオフされたNANDストリングでは、メモリセルトランジスタMT2のチャネルは電気的にフローティングとなり、ワード線WL2とのカップリングにより、その電圧はVPASSに近い電圧まで上昇する。この結果、メモリセルトランジスタMT2では、制御ゲートとチャネルとの間の電圧差が小さくなり、電荷が電荷蓄積層に注入されず、メモリセルトランジスタMT2の閾値電圧は消去状態に対応する低い閾値電圧レベルに維持される。
図7は、プログラムコマンドシーケンスと不揮発性半導体記憶装置(NAND型フラッシュメモリ)10によって実行される書き込み動作(プログラム動作)との関係を示す。
メモリコントローラ200は、I/O信号DQ0〜DQ7,DQn0〜DQn7を介してプログラムコマンドシーケンス(例えば、コマンド80h、アドレスAdd、データDin、コマンド15h)をNAND型フラッシュメモリ10に送信する。80hはシリアル入力のためのコマンドである。コマンド15hは利用可能な数種類のプログラムコマンドの一つである。コマンド15hが受信された場合、NAND型フラッシュメモリ10は、キャッシュ14(XDL)からセンスアンプ13または他のデータラッチに書き込みデータ(Din)が転送される期間中のみビジー状態となり、書き込みデータがキャッシュ14(XDL)からセンスアンプ(S/A)13または他のデータラッチに転送された後は次のコマンドを受け付け可能なレディー状態となる。なお、コマンド80hの代わりに、複数のプレーンに同時にデータを書き込むためのコマンド81hが利用されてもよい。
(1)まず、コマンド80hに後続して入力される書き込みデータ(Din)は、データパス15を介してI/O制御回路16からキャッシュ14(XDL)に転送される。
(2)コマンド15hが受信された時、レディー/ビジー信号RY/BYnは、状態検出回路18によってロウレベルに設定される(ビジー状態)。そして、書き込みデータ(Din)はキャッシュ14(XDL)から他のデータラッチまたはセンスアンプ(S/A)13に転送される。書き込みデータ(Din)の転送が完了すると、レディー/ビジー信号RY/BYnはハイレベルに戻される(レディー状態)。
(3)プログラム動作が開始され、アドレス(Add)によって指定されたメモリセル群(ページN)にデータが書き込まれる。そして、プログラム動作が成功したか否かを検証するためのプログラムベリファイ動作が実行される。プログラムおよびプログラムベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびプログラムベリファイ動作のループ回数が設定された最大ループ回数に達するまで繰り返される。もしプログラムおよびプログラムベリファイ動作の実行中に次のプログラムコマンドシーケンス(例えば、コマンド80h、アドレスAdd、データDin)がメモリコントローラ200から受信されたならば、書き込みデータ(Din)がI/O制御回路16からキャッシュ14(XDL)に転送される。
図8は、NAND型フラッシュメモリ10によって実行される書き込み動作と、コア動作波形との関係を示す。ここで、コア動作波形は、選択ワード線WLnの電圧およびビット線BL0〜BL(L−1)それぞれの電圧を表している。
メモリコントローラ200は、I/O信号DQ0〜DQ7,DQn0〜DQn7を介してプログラムコマンドシーケンス(例えば、コマンド8xh(80hまたは81h)、アドレスAdd、データDin、コマンド15h)をNAND型フラッシュメモリ10に送信する。
NAND型フラッシュメモリ10においては、メモリコントローラ200から受信される書き込みデータ(Din)は、データパス15を介してI/O制御回路16からキャッシュ14(XDL)に転送される。コマンド15hが受信されると、書き込みデータ(Din)は、キャッシュ14(XDL)からセンスアンプ(S/A)13に転送され、そして書き込み動作(プログラムシーケンス)が開始される。プログラムシーケンスは、プログラム(Prog)動作とプログラムベリファイ(Pvrf)動作とを含む。プログラム(Prog)動作とプログラムベリファイ(Pvrf)動作は、繰り返し実行される。
プログラム動作は、ビット線充電期間t1と、書き込みパルス印加期間t2と、ワード線/ビット線リセット期間t3とを含む。
ビット線充電期間t1においては、制御回路23は、センスアンプ(S/A)13を制御することによってビット線BL0〜BL(L−1)を充電する。ビット線BL0〜BL(L−1)の充電は書き込みデータに応じて実行される。つまり、データ“1”が書き込まれるべきメモリセルトランジスタMT(消去状態に維持されるべきメモリセルトランジスタMT)に接続されたビット線BLは、センスアンプ(S/A)13によって電圧VDDが充電される。この結果、このビット線BLには電流が流れる。一方、データ“0”が書き込まれるべきメモリセルトランジスタMT(消去状態からプログラム状態に遷移されるべきメモリセルトランジスタMT)に接続されたビット線BLは、センスアンプ(S/A)13によって0Vに設定される。結果、このビット線BLには電流が流れない。
書き込みパルス印加期間t2においては、制御回路23は、ロウデコーダ27を制御することによって選択ワード線WLnに書き込みパルス(プログラムパルス)を印加し、選択ワード線WLnを電圧VPGMに設定する。また、制御回路23は、ロウデコーダ27を制御することによって各非選択ワード線に電圧VPASSを印加する。通常、書き込みパルス印加期間t2は、ビット線充電期間t1よりも遙かに長い。
ワード線/ビット線リセット期間t3においては、制御回路23は、センスアンプ(S/A)13を制御することによってビット線BL0〜BL(L−1)を放電するとともに、ロウデコーダ27を制御することによってワード線WL0〜WL8を放電する。これにより、ビット線BL0〜BL(L−1)は0Vに戻され、またワード線WL0〜WL8も0Vに戻される。
このようにメモリセルアレイ12にデータが書き込まれるコア動作期間中は、ビット線BL0〜BL(L−1)の充電によって多くのノイズ(消費電流)が発生する。ビット線BL0〜BL(L−1)の充電によるノイズの量は、書き込みパルスの印加によるノイズの量よりも多い。
多くの量のノイズが発生している期間中は、データパス15を介したデータ転送、またはメモリバス11を介したデータ転送に影響が与えられる場合がある。したがって、多くの量のノイズをNAND型フラッシュメモリ10に発生させることは、NAND型フラッシュメモリ10の信頼性のテストに有用である。例えば、伝送路全体の状態をチェックするためのテスト動作は、実際にデータ書き込み動作を実行しながら実行されてもよい。これにより、ノイズの影響を考慮した状態で、伝送路全体の状態をチェックすることが可能となる。
図9は、書き込み動作とこの書き込み動作の期間中に実行可能なデータ入出力動作との関係を示す。
上述したように、コマンド15hを利用して書き込み動作を実行するケースにおいては、NAND型フラッシュメモリ10は、書き込み動作中に、メモリコントローラ200からの次のコマンドを受け付けることができる。したがって、NAND型フラッシュメモリ10は、書き込み動作(プログラムシーケンス)を実行しながら、メモリコントローラ200から受信されるデータをキャッシュ14(XDL)へ転送すること、またはキャッシュ14(XDL)からメモリコントローラ200へデータを転送することができる。
図9においては、メモリコントローラ200は、まず、プログラムコマンドシーケンス(例えば、コマンド8xh、アドレスAdd、データDin、コマンド15h)をNAND型フラッシュメモリ10に送信する。そしてメモリコントローラ200は、レディー/ビジー信号RY/BYnを監視し、NAND型フラッシュメモリ10がビジー状態からレディー状態に復帰するのを待つ。
NAND型フラッシュメモリ10においては、メモリコントローラ200から受信される書き込みデータ(Din)は、データパス15を介してI/O制御回路16からキャッシュ14(XDL)に転送される。コマンド15hが受信されると、書き込みデータ(Din)は、キャッシュ14(XDL)からセンスアンプ(S/A)13に転送される。センスアンプ(S/A)13への書き込みデータ(Din)の転送が完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻され、そして書き込み動作(プログラムシーケンス)が開始される。書き込み動作中は、プログラム(Prog)およびプログラムベリファイ(Pvrf)動作が繰り返し実行される。
この書き込み動作中に、コマンドシーケンス(例えば、コマンド8xh、アドレスAdd、データData−In)がメモリコントローラ200から受信された場合、新たなデータ(Data−In)がデータパス15を介してI/O制御回路16からキャッシュ14(XDL)に転送される。また、コマンドシーケンス(例えば、コマンド05h、アドレスAdd、コマンドE0h)がメモリコントローラ200から受信されたならば、アドレスAddによって指定されるデータがキャッシュ14(XDL)から読み出され、このデータがデータパス15、I/O制御回路16を介してメモリコントローラ200に送信される。
以上の動作により、データ書き込み動作を実行しながら、メモリコントローラ200とキャッシュ14(XDL)との間でデータを入出力することができる。例えば、メモリコントローラ200は、テスト用のデータを準備し、このデータをコマンドシーケンス(例えば、コマンド8xh、アドレスAdd、データData−In)によってNAND型フラッシュメモリ10に入力し、そしてコマンドシーケンス(例えば、コマンド05h、アドレスAdd、コマンドE0h)によってこのデータをNAND型フラッシュメモリ10に出力させてもよい。この場合、メモリコントローラ200は、NAND型フラッシュメモリ10から出力されたデータを上述のテスト用のデータと比較することにより、メモリコントローラ200とNAND型フラッシュメモリ10のキャッシュ14(XDL)との間のデータ伝送が正しく実行できたか否かをチェックすることができる。このように、伝送路の状態をチェックするためのテスト動作を、データ書き込み動作を実行しながら実行することができる。なお、テスト動作の例は上述の例に限定されるものではない。
上述したように、ビット線の充電に起因するノイズの量は、書き込みパルスの印加に起因するノイズの量よりも多い。つまり、ビット線充電期間t1に高ノイズが発生する。
しかしながら、ビット線充電期間t1よりも書き込みパルス印加期間t2が遙かに長い。したがって、プログラムおよびプログラムベリファイ動作が繰り返される書き込み動作の期間全体に占めるビット線充電期間t1の割合は低い。この結果、高ノイズはある長い時間間隔毎にしか発生しないので、コア動作中に高ノイズが発生する頻度は低くなる。
本実施形態では、メモリセルトランジスタMTそれぞれに対してストレスを与えること無く、高ノイズの発生頻度を高くできるようにするために、NAND型フラッシュメモリ10は、「プログラムパルススキップ」モードと称される特別な書き込みモードを有している。「プログラムパルススキップ」モードは、選択ワード線へプログラムパルスを印加する動作をスキップする書き込みモードである。「プログラムパルススキップ」モードにおいては、制御回路23は、書き込みデータに応じてビット線BL0〜BL(L−1)を充電する動作を含み、選択ワード線WLnにプログラムパルスを印加する動作については省略された、書き込み動作を実行する。
メモリコントローラ200は、「プログラムパルススキップ」機能を有効にすべきことをNAND型フラッシュメモリ10に指示することができる。例えば、メモリコントローラ200は、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信することによって、「プログラムパルススキップ」機能を有効にすることができる。
ここで、コマンドEFhは、NAND型フラッシュメモリ10によってサポートされる追加機能の設定のために使用されるコマンドである。コマンドEFhに後続するアドレスADDは、設定対象の追加機能を指定するために使用される。コマンドEFhおよびアドレスADDに後続するデータData−Inは、設定対象の追加機能の有効/無効を指定するために使用される。
図10は、「プログラムパルススキップ」モードとコア動作波形との関係を示す。
メモリコントローラ200は、まず、「プログラムパルススキップ」機能を有効にするために、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信する。次いで、メモリコントローラ200は、プログラムコマンドシーケンス(例えば、コマンド8xh、アドレスAdd、データDin、コマンド15h)をNAND型フラッシュメモリ10に送信する。そしてメモリコントローラ200は、レディー/ビジー信号RY/BYnを監視し、NAND型フラッシュメモリ10がビジー状態からレディー状態に復帰するのを待つ。NAND型フラッシュメモリ10がレディー状態に復帰すると、メモリコントローラ200は、コマンドシーケンス(例えば、コマンド8xh、アドレスAdd、データData−In)、またはコマンドシーケンス(例えば、コマンド05h、アドレスAdd、コマンドE0h)をNAND型フラッシュメモリ10に送信する。
NAND型フラッシュメモリ10においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能が有効にされる。メモリコントローラ200から受信される書き込みデータ(Din)は、データパス15を介してI/O制御回路16からキャッシュ14(XDL)に転送される。コマンド15hが受信されると、書き込みデータ(Din)は、キャッシュ14(XDL)からセンスアンプ(S/A)13に転送される。センスアンプ(S/A)13への書き込みデータ(Din)の転送が完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻され、そして「プログラムパルススキップ」モードで書き込み動作が開始される。
「プログラムパルススキップ」モードの書き込み動作では、第1の動作と第2の動作とが繰り返し実行される。この場合、第1の動作は、ビット線充電期間t1とワード線/ビット線リセット期間t3のみを含み、書き込みパルス印加期間t2は省略される。
ビット線充電期間t1においては、制御回路23は、センスアンプ(S/A)13を制御することによってビット線BL0〜BL(L−1)を充電する。ビット線BL0〜BL(L−1)の充電は書き込みデータに応じて実行される。ビット線の充電が完了すると、書き込みパルス印加期間t2はスキップされ、すぐにビット線BL0〜BL(L−1)の放電が開始される(期間t3)。
この結果、第1の動作および第2の動作が繰り返される書き込み動作の期間全体に占めるビット線充電期間t1の割合を高くすることができる。よって、あるビット線充電期間t1と次のビット線充電期間t1との間の時間間隔が短くなり、高ノイズが高い頻度で発生する。
第2の動作は、実際にはデータをプログラムしない第1の動作の後に実行される動作であり、一種のプログラムベリファイ(Pvrf)動作に対応する。第2の動作は、ビット線充電期間t11と、読み出し期間t12と、ワード線/ビット線リセット期間t13とを含む。
ビット線充電期間t11においては、全てのビット線BL0〜BL(L−1)は充電されてあるプリチャージ電圧(<VDD)に設定される。読み出し期間t12においては、制御回路23は、ロウデコーダ27を制御することによって選択ワード線WLnに所定の読み出し電圧を印加すると共に、各非選択ワード線に電圧Vreadを印加する。読み出し電圧は、メモリセルトランジスタMTの閾値電圧の分布に応じて定められる電圧である。電圧Vreadは、メモリセルトランジスタMTが保持するデータに関わらずこれらメモリセルトランジスタMTをオンさせる電圧である。そして、選択ワード線WLnに接続されたメモリセルトランジスタMTそれぞれからBL0〜BL(L−1)に読み出されるデータがセンスアンプ13によってセンスされる。ワード線/ビット線リセット期間t13では、ビット線BL0〜BL(L−1)およびワード線WL0〜WL7が放電される。
このように、「プログラムパルススキップ」モードの書き込み動作では、選択ワード線WLnに書き込みパルス(プログラムパルス)が印加されないので、選択ワード線WLnに接続されたメモリセルトランジスタMTそれぞれに対してストレスを与えずに、コア動作(つまり、書き込みデータに応じてビット線BL0〜BL(L−1)を充電する動作)によって高ノイズを発生することができる。
図11は、プログラムパルスの印加および第2の動作の双方をスキップする書き込み動作を示す。
本実施形態では、高ノイズの発生頻度をさらに高くできるようにするために、NAND型フラッシュメモリ10は、「プログラムパルススキップ」機能のみならず、「プログラムベリファイスキップ」機能も有している。「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能の双方が有効にされた場合、書き込みパルス(プログラムパルス)を印加する動作が省略され、さらに、第2の動作も省略される。
メモリコントローラ200は、「プログラムパルススキップ」機能および「プログラムベリファイスキップ」機能を有効にすべきことをNAND型フラッシュメモリ10に指示することができる。例えば、メモリコントローラ200は、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信することによって、「プログラムパルススキップ」機能および「プログラムベリファイスキップ」機能を有効にすることができる。なお、メモリコントローラ200は、「プログラムパルススキップ」機能を有効にするためのセットフィーチャコマンドシーケンスと、「プログラムベリファイスキップ」機能を有効にするためのセットフィーチャコマンドシーケンスとをNAND型フラッシュメモリ10にそれぞれ送信してもよい。
「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能の双方が有効にされた場合、書き込み動作(プログラムシーケンス)においては、第1の動作だけが繰り返し実行される(「プログラムパルススキップ+プログラムベリファイスキップ」モード)。第1の動作のループ回数はセットフィーチャコマンドシーケンスによって設定されてもよい。各第1の動作では、書き込みパルス(プログラムパルス)を印加する動作が省略される。
図12は、「プログラムパルススキップ+プログラムベリファイスキップ」モードとコア動作波形との関係を示す。
メモリコントローラ200は、まず、「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能とを有効にするために、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信する。次いで、メモリコントローラ200は、プログラムコマンドシーケンス(例えば、コマンド8xh、アドレスAdd、データDin、コマンド15h)をNAND型フラッシュメモリ10に送信する。そしてメモリコントローラ200は、レディー/ビジー信号RY/BYnを監視し、NAND型フラッシュメモリ10がビジー状態からレディー状態に復帰するのを待つ。NAND型フラッシュメモリ10がレディー状態に復帰すると、メモリコントローラ200は、コマンドシーケンス(例えば、コマンド8xh、アドレスAdd、データData−In)、またはコマンドシーケンス(例えば、コマンド05h、アドレスAdd、コマンドE0h)をNAND型フラッシュメモリ10に送信する。
NAND型フラッシュメモリ10においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能とが有効にされる。メモリコントローラ200から受信される書き込みデータ(Din)は、データパス15を介してI/O制御回路16からキャッシュ14(XDL)に転送される。コマンド15hが受信されると、書き込みデータ(Din)は、キャッシュ14(XDL)からセンスアンプ(S/A)13に転送される。センスアンプ(S/A)13への書き込みデータ(Din)の転送が完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻され、そして「プログラムパルススキップ+プログラムベリファイスキップ」モードで書き込み動作が開始される。
「プログラムパルススキップ+プログラムベリファイスキップ」モードの書き込み動作では、第1の動作だけが繰り返し実行される。この場合、第1の動作は、ビット線充電期間t1とワード線/ビット線リセット期間t3のみを含み、書き込みパルス印加期間t2は省略される。
この結果、書き込み動作の期間全体に占めるビット線充電期間t1の割合をさらに高くすることができる。つまり、期間t3の経過の度に高ノイズを発生することができ、高ノイズが発生する頻度をさらに高くすることができる。また、第2の動作(一種のプログラムベリファイ動作)がスキップされることによって、テストに要する時間を短縮することも可能となる。
図13は、プログラムパルスの印加をスキップし且つプログラムデータパターンを自動生成する書き込み動作と、コア動作波形との関係を示す。
本実施形態では、メモリコントローラ200からNAND型フラッシュメモリ10への書き込みデータ(1ページ分のデータ)の入力もスキップできるようにするために、NAND型フラッシュメモリ10は、「プログラムパルススキップ」機能、「プログラムベリファイスキップ」機能のみならず、「自動データパターン生成」機能も有している。「自動データパターン生成」機能は、チップ内部で書き込みデータ(データパターン)を生成する機能である。つまり、NAND型フラッシュメモリ10は、書き込みデータ(データパターン)を自動生成し、この自動生成された書き込みデータを、上述の「プログラムパルススキップ」モードまたは「プログラムパルススキップ+プログラムベリファイスキップ」モードにおいてビット線充電のために使用する。また、NAND型フラッシュメモリ10は、幾つか種類のデータパターンを自動生成する機能を有していてもよい。この場合、使用すべきデータパターンはセットフィーチャコマンドシーケンスによって指定されてもよい。
メモリコントローラ200は、「プログラムパルススキップ」機能と「自動データパターン生成」機能の双方を有効にすべきことをNAND型フラッシュメモリ10に指示することができる。例えば、メモリコントローラ200は、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信することによって、「プログラムパルススキップ」機能および「自動データパターン生成」機能を有効にすることができる。この場合、メモリコントローラ200は、「自動データパターン生成」機能で生成すべきデータパターンをセットフィーチャコマンドシーケンスによって指定してもよい。
なお、メモリコントローラ200は、「プログラムパルススキップ」機能を有効にするためのセットフィーチャコマンドシーケンスと、「自動データパターン生成」機能を有効にするためのセットフィーチャコマンドシーケンスとをNAND型フラッシュメモリ10にそれぞれ送信してもよい。
あるいは、メモリコントローラ200は、「プログラムパルススキップ」機能、「プログラムベリファイスキップ」機能、および「自動データパターン生成」機能のすべてを有効にすべきことをNAND型フラッシュメモリ10に指示してもよい。
「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能の双方が有効にされた場合、各第1の動作動作では、NAND型フラッシュメモリ10内部で自動生成された書き込みデータがビット線充電のために使用され、且つ書き込みパルス(プログラムパルス)を印加する動作は省略される(「プログラムパルススキップ+自動データパターン生成」モード)。
すなわち、図13に示されているように、メモリコントローラ200は、まず、「プログラムパルススキップ」機能と「自動データパターン生成」機能とを有効にするために、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信する。次いで、メモリコントローラ200は、プログラムコマンドシーケンス(例えば、コマンド8xh、アドレスAdd、コマンド15h)をNAND型フラッシュメモリ10に送信する。データDinはチップ内部で自動生成されるため、メモリコントローラ200は、データDinの送信を省略することができる。そしてメモリコントローラ200は、レディー/ビジー信号RY/BYnを監視し、NAND型フラッシュメモリ10がビジー状態からレディー状態に復帰するのを待つ。NAND型フラッシュメモリ10がレディー状態に復帰すると、メモリコントローラ200は、コマンドシーケンス(例えば、コマンド8xh、アドレスAdd、データData−In)、またはコマンドシーケンス(例えば、コマンド05h、アドレスAdd、コマンドE0h)をNAND型フラッシュメモリ10に送信する。
NAND型フラッシュメモリ10においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能と「自動データパターン生成」機能とが有効にされる。制御回路23は、書き込みデータ(データパターン)を自動生成する。この書き込みデータは、データパス15を介してキャッシュ14(XDL)に転送される。コマンド15hが受信されると、書き込みデータは、キャッシュ14(XDL)からセンスアンプ(S/A)13に転送される。センスアンプ(S/A)13への書き込みデータの転送が完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻され、そして「プログラムパルススキップ+自動データパターン生成」モードで書き込み動作が開始される。
「プログラムパルススキップ+自動データパターン生成」モードの書き込み動作では、第1の動作および第2の動作が繰り返し実行される。この場合、第1の動作は、ビット線充電期間t1とワード線/ビット線リセット期間t3のみを含み、書き込みパルス印加期間t2は省略される。ビット線充電期間t1では、自動生成された書き込みデータ(データパターン)に応じてビット線BL0〜BL(L−1)が充電される。
このように、「自動データパターン生成」機能を有効にすることにより、メモリコントローラ200からNAND型フラッシュメモリ10への1ページ分のデータ(Din)の送信を省略することができる。これにより、テストに要する時間を短縮することができる。さらには、メモリコントローラ200と1つのNAND型フラッシュメモリ10との間の通信のためにI/Oバスが専有される時間を短縮することができるので、複数のNAND型フラッシュメモリ10を効率良く並列駆動することが可能となる。
NAND型フラッシュメモリ10によって自動生成可能なデータパターンの例は、例えば、以下の通りである。
(1)ビット線ストライプ
(2)オール“1”
(3)オール“0”
(4)ランダム
ビット線ストライプは、図14に示すように、隣合う任意の2つのビット線の一方に電圧VDDが印加され、他方に0Vが印加されるデータパターン(例えば、010101010101…)である。このデータパターンを使用することにより、隣合うビット線間の容量結合を最大化することができる。この結果、ビット線BL0〜BL(L−1)に流れる電流(消費電流)の量を増やすことができるので、ビット線BL0〜BL(L−1)の充電に起因するノイズの量を最大化することができる。
(2)オール“1”
(3)オール“0”
(4)ランダム
ビット線ストライプは、図14に示すように、隣合う任意の2つのビット線の一方に電圧VDDが印加され、他方に0Vが印加されるデータパターン(例えば、010101010101…)である。このデータパターンを使用することにより、隣合うビット線間の容量結合を最大化することができる。この結果、ビット線BL0〜BL(L−1)に流れる電流(消費電流)の量を増やすことができるので、ビット線BL0〜BL(L−1)の充電に起因するノイズの量を最大化することができる。
オール“1”は、全てのビット線BL0〜BL(L−1)に電圧VDDが印加されるデータパターン(111111111111…)である。オール“0”は、全てのビット線BL0〜BL(L−1)に0Vが印加されるデータパターン(000000000000…)である。ランダムは、メモリコントローラ200からのアドレスAdd(例えば、ロウアドレス)に基づいて特定のデータパターンをランダマイズすることによって得られるデータパターンである。
なお、使用すべきデータパターンがセットフィーチャコマンドシーケンスによって指定されなかった場合には、ビット線ストライプのデータパターンまたはオール“1”のデータパターン等が自動的に選択されるようにしてもよい。
図15は、プログラムパルスの印加をスキップし且つデータパスを自動的にチェックする書き込み動作と、コア動作波形との関係を示す。
本実施形態では、データパス15を介したデータ転送を自動的に実行できるようにするために、NAND型フラッシュメモリ10は、「プログラムパルススキップ」機能、「プログラムベリファイスキップ」機能、「自動データパターン生成」機能のみならず、「自動データパスチェック」機能も有している。「自動データパスチェック」機能は、コア動作と並行して、データパス15をチェックする機能である。
メモリコントローラ200は、「プログラムパルススキップ」機能と「自動データパスチェック」機能の双方を有効にすべきことをNAND型フラッシュメモリ10に指示することができる。例えば、メモリコントローラ200は、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信することによって、「プログラムパルススキップ」機能および「自動データパスチェック」機能を有効にすることができる。なお、メモリコントローラ200は、「プログラムパルススキップ」機能を有効にするためのセットフィーチャコマンドシーケンスと、「自動データパスチェック」機能を有効にするためのセットフィーチャコマンドシーケンスとをNAND型フラッシュメモリ10にそれぞれ送信してもよい。
あるいは、メモリコントローラ200は、以下の機能の組み合わせのいずれかを有効にすべきことをNAND型フラッシュメモリ10に指示することができる。
(1)「プログラムパルススキップ」機能と「自動データパスチェック」機能の組み合わせ
(2)「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動データパスチェック」機能の組み合わせ
(3)「プログラムパルススキップ」機能と「自動データパターン生成」機能と「自動データパスチェック」機能の組み合わせ
(4)「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動データパターン生成」機能と「自動データパスチェック」機能の組み合わせ
以下では、「プログラムパルススキップ」機能と「自動データパスチェック」機能の双方が有効にされた場合の動作(「プログラムパルススキップ+自動データパスチェック」モード)について説明する。
(2)「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動データパスチェック」機能の組み合わせ
(3)「プログラムパルススキップ」機能と「自動データパターン生成」機能と「自動データパスチェック」機能の組み合わせ
(4)「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動データパターン生成」機能と「自動データパスチェック」機能の組み合わせ
以下では、「プログラムパルススキップ」機能と「自動データパスチェック」機能の双方が有効にされた場合の動作(「プログラムパルススキップ+自動データパスチェック」モード)について説明する。
すなわち、図15に示されているように、メモリコントローラ200は、まず、「プログラムパルススキップ」機能と「自動データパスチェック」機能とを有効にするために、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信する。次いで、メモリコントローラ200は、プログラムコマンドシーケンス(例えば、コマンド8xh、アドレスAdd、コマンド1xh)をNAND型フラッシュメモリ10に送信する。コマンド1xhは、上述のコマンド15hであってもよいし、コマンド10hであってもよい。コマンド10hが使用された場合には、書き込み動作(プログラムシーケンス)が実行されている間は、NAND型フラッシュメモリ10はビジー状態に維持される。
NAND型フラッシュメモリ10においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能と「自動データパスチェック」機能とが有効にされる。メモリコントローラ200から受信された書き込みデータ(Din)は、データパス15を介してキャッシュ14(XDL)に転送される。コマンド10hが受信されると、書き込みデータ(Din)は、キャッシュ14(XDL)からセンスアンプ(S/A)13に転送され、そして「プログラムパルススキップ+自動データパスチェック」モードで書き込み動作が開始される。
「プログラムパルススキップ+自動データパスチェック」モードの書き込み動作では、第1の動作および第2の動作が繰り返し実行される。この場合、第1の動作は、ビット線充電期間t1とワード線/ビット線リセット期間t3のみを含み、書き込みパルス印加期間t2は省略される。
この書き込み動作と並行して、以下のデータ転送が実行される。
(1)データのロード
制御回路23は、データパスチェックに用いられるデータをキャッシュ14(XDL)にロードする。データパスチェックに用いられるデータは、NAND型フラッシュメモリ10内部で自動生成できる。このデータのデータパターンは、上述したビット線ストライプ、オール“1”、オール“0”、ランダムのいずれであってもよい。
制御回路23は、データパスチェックに用いられるデータをキャッシュ14(XDL)にロードする。データパスチェックに用いられるデータは、NAND型フラッシュメモリ10内部で自動生成できる。このデータのデータパターンは、上述したビット線ストライプ、オール“1”、オール“0”、ランダムのいずれであってもよい。
(2)データの転送
制御回路23は、キャッシュ14(XDL)にロードされたデータを、データパス15を介して内部レジスタに転送する。この内部レジスタは、I/O制御回路16内のレジスタであってもよいし、別のプレーン内のキャッシュ(ここではプレーン#2内のキャッシュ)であってもよい。
制御回路23は、キャッシュ14(XDL)にロードされたデータを、データパス15を介して内部レジスタに転送する。この内部レジスタは、I/O制御回路16内のレジスタであってもよいし、別のプレーン内のキャッシュ(ここではプレーン#2内のキャッシュ)であってもよい。
(3)データをキャッシュへ戻す
制御回路23は、内部レジスタ内のデータをデータパス15を介してキャッシュ14(XDL)に戻す。
制御回路23は、内部レジスタ内のデータをデータパス15を介してキャッシュ14(XDL)に戻す。
(4)期待値のチェック
制御回路23は、キャッシュ14(XDL)に戻されたデータを自動生成されたデータと比較して、キャッシュ14(XDL)に戻されたデータが自動生成されたデータと一致するか否かを検証する。つまり、自動生成されたデータは、キャッシュ14(XDL)に戻されたデータを検証するための期待値データとして使用される。制御回路23は、比較結果、つまり検証結果を、ステータスレジスタ19に設定する。
制御回路23は、キャッシュ14(XDL)に戻されたデータを自動生成されたデータと比較して、キャッシュ14(XDL)に戻されたデータが自動生成されたデータと一致するか否かを検証する。つまり、自動生成されたデータは、キャッシュ14(XDL)に戻されたデータを検証するための期待値データとして使用される。制御回路23は、比較結果、つまり検証結果を、ステータスレジスタ19に設定する。
メモリコントローラ200は、ステータスリードコマンドをNAND型フラッシュメモリ10に送出することによってステータスレジスタ19から検証結果を読むことができる。
キャッシュ14(XDL)に戻されたデータが期待値データと一致する(検証結果=パス)ということは、データパス15が正常であることを意味する。一方、キャッシュ14(XDL)に戻されたデータが期待値データと一致しない(検証結果=フェイル)ということは、データパス15に障害があることを意味する。
なお、データパス15のチェックにおいて、(1)〜(3)でキャッシュ14と内部レジスタとの間を往復させるデータとして、キャッシュ14に残存しているデータを用いてもよい。この場合、キャッシュ14に残存しているデータは、メモリコントローラ200から受信される書き込みデータ(Din)であってもよい。
このように、「自動データパスチェック」機能を有効にすることにより、書き込み動作をしながらNAND型フラッシュメモリ10内のデータパス15の状態をチェックすることができる。
図16は、プログラムパルスの印加をスキップし且つチップ内の温度を自動的にチェックする書き込み動作を示す。
本実施形態では、NAND型フラッシュメモリ10内の温度を自動的にチェックできるようにするために、NAND型フラッシュメモリ10は、「プログラムパルススキップ」機能、「プログラムベリファイスキップ」機能、「自動データパターン生成」機能、「自動データパスチェック」機能のみならず、「自動温度チェック」機能も有している。「自動温度チェック」機能は、NAND型フラッシュメモリ10内部の温度をチェックする機能である。
メモリコントローラ200は、「プログラムパルススキップ」機能および「自動温度チェック」機能を有効にすべきことをNAND型フラッシュメモリ10に指示することができる。例えば、メモリコントローラ200は、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信することによって、「プログラムパルススキップ」機能および「自動温度チェック」機能を有効にすることができる。なお、メモリコントローラ200は、「プログラムパルススキップ」機能を有効にするためのセットフィーチャコマンドシーケンスと、「自動温度チェック」機能を有効にするためのセットフィーチャコマンドシーケンスとをNAND型フラッシュメモリ10にそれぞれ送信してもよい。
あるいは、メモリコントローラ200は、以下の機能の組み合わせのいずれかを有効にすべきことをNAND型フラッシュメモリ10に指示することができる。
(1)「プログラムパルススキップ」機能と「自動温度チェック」機能の組み合わせ
(2)「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動温度チェック」機能の組み合わせ
(3)「プログラムパルススキップ」機能と「自動データパターン生成」機能と「自動温度チェック」機能の組み合わせ
(4)「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動データパターン生成」機能と「自動温度チェック」機能の組み合わせ
以下では、「プログラムパルススキップ」機能と「自動温度チェック」機能の双方が有効にされた場合の動作(「プログラムパルススキップ+自動温度チェック」モード)について説明する。
(2)「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動温度チェック」機能の組み合わせ
(3)「プログラムパルススキップ」機能と「自動データパターン生成」機能と「自動温度チェック」機能の組み合わせ
(4)「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動データパターン生成」機能と「自動温度チェック」機能の組み合わせ
以下では、「プログラムパルススキップ」機能と「自動温度チェック」機能の双方が有効にされた場合の動作(「プログラムパルススキップ+自動温度チェック」モード)について説明する。
すなわち、図16に示されているように、メモリコントローラ200は、まず、「プログラムパルススキップ」機能と「自動温度チェック」機能とを有効にするために、セットフィーチャコマンドシーケンス(コマンドEFh、アドレスADD、データData−In)をNAND型フラッシュメモリ10に送信する。次いで、メモリコントローラ200は、プログラムコマンドシーケンス(例えば、コマンド8xh、アドレスAdd、データDin、コマンド1xh)をNAND型フラッシュメモリ10に送信する。コマンド1xhは、上述のコマンド15hであってもよいし、コマンド10hであってもよい。コマンド10hが使用された場合には、書き込み動作が実行されている間は、NAND型フラッシュメモリ10はビジー状態に維持される。
NAND型フラッシュメモリ10においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能と、「自動データパスチェック」機能とが有効にされる。メモリコントローラ200から受信された書き込みデータ(Din)は、データパス15を介してキャッシュ14(XDL)に転送される。コマンド10hが受信されると、書き込みデータ(Din)は、キャッシュ14(XDL)からセンスアンプ(S/A)13に転送され、そして「プログラムパルススキップ+自動温度チェック」モードで書き込み動作が開始される。
この書き込み動作は、以下の手順で実行される。
(1)チップ内温度の計測
プログラムコマンドシーケンスの最初に、制御回路23は、温度センサ28によってNAND型フラッシュメモリ10内の温度を計測する。これにより、現在の温度のデータ(Temp Code)が更新される。ここで計測された温度の値は、この後に実行されるプログラム(Prog)およびプログラムベリファイ(Pvfy)動作において、選択ワード線WLnに印加されるプログラムパルスの電圧およびビット線BL0〜BL(L−1)に印加される電圧等を決定するために用いられる。
プログラムコマンドシーケンスの最初に、制御回路23は、温度センサ28によってNAND型フラッシュメモリ10内の温度を計測する。これにより、現在の温度のデータ(Temp Code)が更新される。ここで計測された温度の値は、この後に実行されるプログラム(Prog)およびプログラムベリファイ(Pvfy)動作において、選択ワード線WLnに印加されるプログラムパルスの電圧およびビット線BL0〜BL(L−1)に印加される電圧等を決定するために用いられる。
温度の計測が完了すると、第1の動作および第2の動作が繰り返し実行される。この場合、第1の動作は、ビット線充電期間t1とワード線/ビット線リセット期間t3のみを含み、書き込みパルス印加期間t2は省略される。
(2)チップ内温度の再計測
プログラムコマンドシーケンスが完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻される。その後、メモリコントローラ200からNAND型フラッシュメモリ10にコマンドB9hが送信される。このコマンドB9hは、温度の計測を指示するコマンドである。このコマンドB9hの受信に応答して、制御回路23は、温度センサ28によってNAND型フラッシュメモリ10内の温度を再計測する。これは、第1の動作および第2の動作によってどの程度、NAND型フラッシュメモリ10内の温度が上昇したか判断するために実行される。
プログラムコマンドシーケンスが完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻される。その後、メモリコントローラ200からNAND型フラッシュメモリ10にコマンドB9hが送信される。このコマンドB9hは、温度の計測を指示するコマンドである。このコマンドB9hの受信に応答して、制御回路23は、温度センサ28によってNAND型フラッシュメモリ10内の温度を再計測する。これは、第1の動作および第2の動作によってどの程度、NAND型フラッシュメモリ10内の温度が上昇したか判断するために実行される。
(3)温度の値の出力
NAND型フラッシュメモリ10内の温度の再計測が完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻される。その後、NAND型フラッシュメモリ10がメモリコントローラ200からコマンド7Chを受信すると、制御回路23は、再計測された温度の値をメモリコントローラ200に出力する。
NAND型フラッシュメモリ10内の温度の再計測が完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻される。その後、NAND型フラッシュメモリ10がメモリコントローラ200からコマンド7Chを受信すると、制御回路23は、再計測された温度の値をメモリコントローラ200に出力する。
メモリコントローラ200に出力された温度の値が所望の温度(テスト動作を実施したい温度)に到達していたならば、図16のコマンドシーケンスは終了する。一方、メモリコントローラ200に出力された温度の値が所望の温度(テスト動作を実行したい温度)に到達していないならば、図16のコマンドシーケンス全体が再び実行される。この図16のコマンドシーケンス全体は、NAND型フラッシュメモリ10内の温度が所望の温度に到達するまで繰り返される。
このように、「自動温度チェック」機能を有効することにより、所望の温度までNAND型フラッシュメモリ10のチップ内温度を上昇させることができる。また、「自動温度チェック」機能と「プログラムパルススキップ」機能とを組み合わせることで、選択ワード線への書き込みパルスの印加をスキップできるため、メモリコア(メモリセルアレイ)12に負担をかけずに温度を上昇させることができる。
図17は、リード期間を外部から制御でき且つチップ内の温度を自動的にチェックする読み出し動作を示す。
メモリコントローラ200は、リードコマンドシーケンス(例えば、コマンド2Ah、コマンド4Fh、コマンド00h、アドレスAdd、コマンドAEh)をNAND型フラッシュメモリ10に送信する。ここで、コマンド2Ahは全てのプレーンからのデータ読み出し動作を要求するためのコマンドである。また、コマンド4Fhは、読み出し動作の時間を外部から制御するためのモードを有効にするためのコマンドである。
NAND型フラッシュメモリ10がリードコマンドシーケンスを受信すると、以下に示す動作が実行される。
(1)温度の計測
リードコマンドシーケンスの最初に、制御回路23は、温度センサ28によってNAND型フラッシュメモリ10内の温度を計測される。これにより、現在の温度のデータ(Temp Code)が更新される。
リードコマンドシーケンスの最初に、制御回路23は、温度センサ28によってNAND型フラッシュメモリ10内の温度を計測される。これにより、現在の温度のデータ(Temp Code)が更新される。
温度の計測が実行された後、コア動作が実行される。このコア動作では、計測された温度に応じた読み出し電圧が選択ワード線に印加される。ターンオンしたメモリセルトランジスタMTに接続されているビット線にはセル電流が流れる。この状態は、NAND型フラッシュメモリ10がメモリコントローラ200からコマンド7Fhを受信するまで維持される。つまり、コマンド7Fhが受信されるまでビット線にはセル電流が流れ続ける。このコマンド7Fhは、読み出し動作を終了するためのコマンドである。メモリコントローラ200がコマンド7Fhを送信するタイミングを制御することで、メモリコア(メモリセルアレイ)12のリード状態が維持される時間を制御することができる。
NAND型フラッシュメモリ10がコマンド7Fhを受信すると、読み出し動作が終了され、ワード線WL0〜WL7、およびビット線BL0〜BL(L−1)が初期状態にリセットされる(コアリセット)。
(2)チップ内温度の再計測
ワード線WL0〜WL7、およびビット線BL0〜BL(L−1)が初期状態にリセットされると、レディー/ビジー信号RY/BYnがハイレベルに戻される。その後、メモリコントローラ200からNAND型フラッシュメモリ10にコマンドB9hが送信される。制御回路23は、温度センサ28によってNAND型フラッシュメモリ10内の温度を再計測する。これは、コア動作(読み出し動作)によってどの程度、NAND型フラッシュメモリ10内の温度が上昇したか判断するために実行される。
ワード線WL0〜WL7、およびビット線BL0〜BL(L−1)が初期状態にリセットされると、レディー/ビジー信号RY/BYnがハイレベルに戻される。その後、メモリコントローラ200からNAND型フラッシュメモリ10にコマンドB9hが送信される。制御回路23は、温度センサ28によってNAND型フラッシュメモリ10内の温度を再計測する。これは、コア動作(読み出し動作)によってどの程度、NAND型フラッシュメモリ10内の温度が上昇したか判断するために実行される。
(3)温度の値の出力
NAND型フラッシュメモリ10内の温度の再計測が完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻される。その後、NAND型フラッシュメモリ10がメモリコントローラ200からコマンド7Chを受信すると、制御回路23は、再計測された温度の値をメモリコントローラ200に出力する。
NAND型フラッシュメモリ10内の温度の再計測が完了すると、レディー/ビジー信号RY/BYnがハイレベルに戻される。その後、NAND型フラッシュメモリ10がメモリコントローラ200からコマンド7Chを受信すると、制御回路23は、再計測された温度の値をメモリコントローラ200に出力する。
メモリコントローラ200に出力された温度の値が所望の温度(テスト動作を実施したい温度)に到達していたならば、図17のコマンドシーケンスは終了する。一方、メモリコントローラ200に出力された温度の値が所望の温度(テスト動作を実行したい温度)に到達していないならば、図17のコマンドシーケンス全体が再び実行される。この図17のコマンドシーケンス全体は、NAND型フラッシュメモリ10内の温度が所望の温度に到達するまで繰り返される。
このように、読み出し動作の時間を外部から制御することで、NAND型フラッシュメモリ10内の温度を効率的に上げることができる。
(第2実施形態)
次に、上述のオン・チップ・FBC機能を有するNAND型フラッシュメモリ10を第2実施形態として説明する。
次に、上述のオン・チップ・FBC機能を有するNAND型フラッシュメモリ10を第2実施形態として説明する。
この第2実施形態のNAND型フラッシュメモリ10は、図3で説明した第1実施形態のNAND型フラッシュメモリと同様のハードウェア構成を有している。第2実施形態のNAND型フラッシュメモリ10は、メモリセル当たりに1ビットを格納するシングルレベルセル(SLC)−フラッシュメモリ、メモリセル当たりに2ビットを格納可能なマルチレベルセル(MLC)−フラッシュメモリ、またはメモリセル当たりに3ビットを格納可能なトリプルレベルセル(TLC)−フラッシュメモリとして実現されている。第2実施形態のNAND型フラッシュメモリ10のメモリセルアレイ12は、図4で説明した第1実施形態のNAND型フラッシュメモリのメモリセルアレイ12の同様の構成を有している。
図18は、トリプルレベルセル(TLC)に対応する8つの閾値電圧レベルと8つの閾値電圧レベルにマッピングされる3ビットデータとの関係の例を示す。
メモリセルアレイ12内のメモリセルトランジスタMTそれぞれは、8つのステート(一つの消去ステート、および7つのプログラムステート)のいずれかに設定される。これら8つのステートは、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、“G”ステートとして参照される。これら“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”ステートは、互いに異なる閾値電圧レベルを有している。このため、これらステートは、“Er”レベル、“A”レベル、“B”レベル、“C”レベル、“D”レベル、“E”レベル、“F”レベル、“G”レベルとしても参照される。閾値電圧レベルは、“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”ステートの順で高くなる。
読み出し動作においては、“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”ステートを互いに分離するための7つの電圧VA、VB、VC、VD、VE、VF、VGのいずれかが読み出し電圧(VCGRV)として使用される。読み出し電圧(VCGRV)は、選択ワード線に印加される電圧である。電圧VAは“Er”ステートと“A”ステートとの境界に対応する電圧であり、電圧VBは“A”ステートと“B”ステートとの境界に対応する電圧であり、電圧VCは“B”ステートと“C”ステートとの境界に対応する電圧であり、電圧VDは“C”ステートと“D”ステートとの境界に対応する電圧であり、電圧VEは“D”ステートと“E”ステートとの境界に対応する電圧であり、電圧VEは“D”ステートと“E”ステートとの境界に対応する電圧であり、電圧VFは“E”ステートと“F”ステートとの境界に対応する電圧であり、電圧VGは“F”ステートと“G”ステートとの境界に対応する電圧である(VA<VB<VC<VD<VE<VF<VG)。読み出し動作において、非選択ワード線には電圧Vreadが印加される。電圧Vreadは、保持データに関係なくメモリセルトランジスタMTをオンさせることが可能な電圧である(VG<Vread)。
書き込み動作においては、同一ワード線に接続されたメモリセルトランジスタMT群には、データの3つのページ(ロアーページデータ、ミドルページデータ、アッパーページデータ)が書き込まれる。これにより、これらメモリセルトランジスタMTの各々の閾値電圧は、それが保持する3ビットデータ(アッパーページビット、ミドルページビット、ロアーページビット)に応じて、“Er”、“A”、“B”、“C”、“D”、“E”、“F”、または“G”ステートのいずれかに設定される。
例えば、“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”ステートには、3ビットデータ“111”、“110”、“100”、“000”、“010”、“011”、“001”、“101”がそれぞれマッピングされてもよい。3ビットデータを“xyz”として表す時、xはアッパーページに対応するビット(上位ビット)を表し、yはミドルページに対応するビット(中位ビット)を表し、zはロアーページに対応するビット(下位ビット)を表す。
ロアーページにおいては、“Er”ステートと“A”ステートとの間の境界および“D”ステートと“E”ステートとの間の境界にそれぞれ“0”と“1”の間の境界が存在する。したがって、ロアーページの読み出し動作においては、“A”ステートに対応する読み出し電圧VAを使用する読み出し動作ARと、“E”ステートに対応する読み出し電圧VEを使用する読み出し動作ERとが実行される。読み出し動作ARは、選択ワード線WLnに接続されたメモリセルトランジスタMTそれぞれが、“Er”ステート未満の閾値電圧を有するか、あるいは“A”ステート以上の閾値電圧を有するかを判定するための読み出し動作である。読み出し動作ERは、選択ワード線WLnに接続されたメモリセルトランジスタMTそれぞれが、“D”ステート未満の閾値電圧を有するか、あるいは“E”ステート以上の閾値電圧を有するかを判定するための読み出し動作である。ロアーページデータは、読み出し動作ARによって読み出されたデータと読み出し動作ERによって読み出されたデータとによって確定される。
ロアーページの読み出し動作においては、最初に、電圧VAが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作AR)。次いで、電圧VEが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作ER)。
ミドルページにおいては、“A”ステートと“B”ステートとの間の境界と、“C”ステートと“D”ステートとの間の境界と、“E”ステートと“F”ステートとの間の境界にそれぞれ “0”と“1”の間の境界が存在する。したがって、ミドルページの読み出し動作においては、“B”ステートに対応する読み出し電圧VBを使用する読み出し動作BRと、“D”ステートに対応する読み出し電圧VDを使用する読み出し動作DRと、“F”ステートに対応する読み出し電圧VFを使用する読み出し動作FRとが実行される。ミドルページデータは、読み出し動作BRによって読み出されたデータと、読み出し動作DRによって読み出されたデータと、読み出し動作FRによって読み出されたデータとによって確定される。
ミドルページの読み出し動作においては、最初に、電圧VBが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作BR)。次いで、電圧VDが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作DR)。そして、電圧VFが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作FR)。
アッパーページにおいては、“B”ステートと“C”ステートとの間の境界および“F”ステートと“G”ステートとの間の境界にそれぞれ“0”と“1”の間の境界が存在する。したがって、アッパーページの読み出し動作においては、“C”ステートに対応する読み出し電圧VCを使用する読み出し動作CRと、“G”ステートに対応する読み出し電圧VGを使用する読み出し動作GRとが実行される。アッパーページデータは、読み出し動作CRによって読み出されたデータと読み出し動作GRによって読み出されたデータとによって確定される。
アッパーページの読み出し動作においては、最初に、電圧VCが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作CR)。次いで、電圧VGが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作GR)。
図19は、マルチレベルセル(MLC)に対応する4つの閾値電圧レベルと2ビットデータとの関係の例を示す。
メモリセルアレイ12内のメモリセルトランジスタMTそれぞれは、4つのステート(一つの消去ステート、および3つのプログラムステート)のいずれかに設定される。これら4つのステートは、“Er”ステート、“A”ステート、“B”ステート、“C”ステートとして参照される。“Er”ステート(消去ステート)は“E”ステートとして参照される場合もある。これら“Er”、“A”、“B”、“C”ステートは、互いに異なる閾値電圧レベルを有している。このため、これらステートは、また、“Er”レベル、“A”レベル、“B”レベル、“C”レベルとしても参照される。閾値電圧レベルは、“Er”、“A”、“B”、“C”ステートの順で高くなる。
読み出し動作においては、“Er”、“A”、“B”、“C”ステートを互いに分離するための3つの電圧VA、VB、VCのいずれかが読み出し電圧(VCGRV)として使用される。
書き込み動作においては、同一ワード線に接続されたメモリセルトランジスタMT群には、データの2つのページ(ロアーページデータ、アッパーページデータ)が書き込まれる。これにより、これらメモリセルトランジスタMTの各々の閾値電圧は、それが保持する2ビットデータ(アッパーページビット、ロアーページビット)に応じて、“Er”、“A”、“B”、または“C”ステートのいずれかに設定される。
例えば、“Er”、“A”、“B”、“C”ステートには、2ビットデータ“11”、“01”、“00”、“10”がマッピングされてもよい。2ビットデータを“xy”として表す時、xはアッパーページに対応するビット(上位ビット)を表し、yはロアーページに対応するビット(下位ビット)を表す。
ロアーページにおいては、“A”ステートと“B”ステートとの間の境界にのみ“0”と“1”の間の境界が存在する。したがって、ロアーページの読み出し動作においては、“B”ステートに対応する読み出し電圧VBを使用する読み出し動作BRのみが実行される。ロアーページデータは、読み出し動作BRによって読み出されたデータのみによって確定される。
ロアーページの読み出し動作においては、電圧VBが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作BR)。
アッパーページにおいては、“Er”ステートと“A”ステートとの間の境界と、“B”ステートと“C”ステートとの間の境界にそれぞれ“0”と“1”の間の境界が存在する。したがって、アッパーページの読み出し動作においては、“A”ステートに対応する読み出し電圧VAを使用する読み出し動作ARと、“C”ステートに対応する読み出し電圧VCを使用する読み出し動作CRとが実行される。アッパーページデータは、読み出し動作ARによって読み出されたデータと、読み出し動作CRによって読み出されたデータとよって確定される。
アッパーページの読み出し動作においては、最初に、電圧VAが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作AR)。次いで、電圧VCが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作CR)。
TLC/MLCにおいては、制御回路23は、選択ワード線WLnに接続されたメモリセルトランジスタMT群にm(mは2以上の整数)ページのデータを書き込んでこれらメモリセルトランジスタMTの各々を2m個の状態(2m個の閾値電圧レベル)のいずれかに設定する。TLCのロアーページ/ミドルページ/アッパーページデータの読み出し動作においては、少なくとも2回の読み出し動作(2m個の状態内の第1の状態に対応する読み出し電圧を選択ワード線WLnに印可する読み出し動作と、2m個の状態内の第2の状態に対応する読み出し電圧を選択ワード線WLnに印可する読み出し動作)が実行される。MLCのアッパーページデータの読み出し動作においても、2回の読み出し動作が実行される。
図20は、シングルレベルセル(SLC)に対応する2つの閾値電圧レベルと1ビットデータとの関係の例を示す。
メモリセルアレイ12内のメモリセルトランジスタMTそれぞれは、2つのステート(一つの消去ステート、および一つのプログラムステート)のいずれかに設定される。読み出し動作においては、電圧VAが読み出し電圧(VCGRV)として使用される。つまり、読み出し動作においては、電圧VAが読み出し電圧(VCGRV)として選択ワード線WLnに印加されてメモリセルトランジスタMTそれぞれからビット線BL0〜BL(L−1)にデータが読み出される(読み出し動作AR)。
図21は、オン・チップ・FBC機能の概要を示す。なお、以下では、NAND型フラッシュメモリ10がTLC−フラッシュメモリである場合を例示してオン・チップ・FBC機能を説明するが、NAND型フラッシュメモリ10は、TLC−フラッシュメモリに限定されず、MLC−フラッシュメモリであってもよいし、SLC−フラッシュメモリであってもよい。あるいは、TLC/MLC−フラッシュメモリ内の特定のブロックをSLCブロックとして使用してよい。この場合、SLCブロックへのデータ書き込み動作においては、選択ワード線に接続されたメモリセルトランジスタMT群にロアーページデータのみを書き込んでもよい。
NAND型フラッシュメモリ10においては、時間の経過あるいはメモリセルトランジスタMTそれぞれに加わるストレスに起因して、メモリセルトランジスタMTの閾値電圧が変動する場合がある。この結果、上述の各ステートの閾値分布は拡張又はシフトするので、読み出しデータに含まれる誤りの数が増大する。誤りの数を減らすための方法の一つとして、読み出し電圧を適切な値に調整する方法がある。例えば、隣接する2つのステートに対応する2つの閾値電圧分布が重なっているケースでは、読み出し電圧を、これら2つの閾値電圧分布間の交点(閾値電圧分布間の谷間)に対応する電圧に調整することが好ましい。
通常、メモリコントローラ200は、閾値電圧分布間の交点(閾値電圧分布間の谷間)に対応する最適な電圧を求めるために、NAND型フラッシュメモリ10からページデータを読み出して、このページデータに基づいてフェイルビットの数(Fail Bit Count)をカウントすることが必要となる。この場合、図21の上部に示すように、例えば、メモリコントローラ200は、コマンドシーケンス(例えば、コマンド05h、アドレスADD、コマンドE0h)をNAND型フラッシュメモリ10に発行し、キャッシュ14(XDL)から1ページ分のデータを読み出す。このデータは、例えば、18Kバイトのデータ長を有する(18Kバイトのユーザデータ、および2KバイトのECC)。このため、キャッシュ14(XDL)からメモリコントローラ200へのデータの読み出しには多くの時間、例えば約20マイクロ秒、が要される。この長い期間中、メモリバス(I/Oバス)11はこのデータ読み出しに専有されてしまい、メモリコントローラ200は、他のNAND型フラッシュメモリ10をアクセスすることができない。
最近では、パッケージ内の積層されたNAND型フラッシュメモリチップの内部を垂直に貫通する電極を使用するTSV(スルー・シリコン・ビア)技術によって、データ入出力の高速化と消費電力の低減を可能にしたメモリパッケージが開発されている。このメモリパッケージはインタフェースチップを含んでおり、外部とのデータ入出力はインタフェースチップを介して実行される。また、インタフェースチップと各NAND型フラッシュメモリチップとの間の通信は多数の垂直ビア(多数の貫通電極)を介して実行される。このため、個々のNAND型フラッシュメモリチップから高速の外部I/Oインタフェースを排除することが可能となる。しかし、このNAND型フラッシュメモリチップをチップ単体でテストするケースにおいては、このNAND型フラッシュメモリチップは1ビット幅の外部I/Oフェースしか有していない場合があるので、キャッシュ14(XDL)からメモリコントローラ200へのデータの読み出しにはさらに多くの時間が必要とされる。
オン・チップ・FBC機能は、フェイルビットの数(Fail Bit Count)をNAND型フラッシュメモリ10内のカウンタ23Aによってチップ内で計数し、そしてフェイルビットの数を示すデジタル値のみをメモリコントローラ200に出力する機能である。ここで、フェイルビットの数とは、オンしたメモリセルトランジスタMTの数、つまりオン・セルの数を示す。選択ワード線WLnに接続されたメモリセルトランジスタMT群の内、ビット線BL0に対応するメモリセルトランジスタMTがオンした場合、このメモリセルトランジスタMTからビット線BL0に“0”データが読み出される。一方、ビット線BL1に対応するメモリセルトランジスタMTがオフした場合、このメモリセルトランジスタMTからビット線BL1に“1”データが読み出される。したがって、あるページ(選択ワード線WLnに接続されたメモリセルトランジスタMT群)においては、オン・セルの数は、メモリセルトランジスタMT群からの読み出しデータに含まれる“0”データの数に相当する。
図3で説明したように、オン・チップ・FBC機能は、制御回路23内に設けられたカウンタ23Aとレジスタ23Bとを使用して実行することができる。
メモリコントローラ200は、図21の下部に示すように、オン・セルの数の計数を要求するコマンド(例えばMMh)と、計数されたオン・セルの数の出力を要求するコマンド(例えばXXh)とをNAND型フラッシュメモリ10に送信することができる。
コマンド(例えばMMh)の受信に応答して、NAND型フラッシュメモリ10は、ビジー状態となり、キャッシュ14(XDL)内に保持されている読み出しデータに基づいて、オン・セルの数を計数するフェイルビットカウント動作を実行する。計数されたオン・セルの数を示すデジタル値は、レジスタ23Bに格納される。オン・セルの数の計数が完了すると、NAND型フラッシュメモリ10は、レディー状態にもどる。そして、コマンド(例えばXXh)の受信に応答して、NAND型フラッシュメモリ10は、フェイルビットカウント出力動作を実行して、レジスタ23Bに格納されているデータをメモリコントローラ200に送信する。レジスタ23Bに格納されているデータは、読み出しデータそのものではなく、オン・セルの数を示すデジタル値である。したがって、このレジスタ23Bに格納されているデータの長さは、たかだか数バイトである。レジスタ23Bからメモリコントローラ200へのこのデジタル値の読み出しは即座に完了する。よって、メモリバス(I/Oバス)11がある特定のNAND型フラッシュメモリからのオン・セルの数の取得のために長い間専有されてしまうことを防止することができる。例えば、図1のように、メモリコントローラ200に複数のNAND型フラッシュメモリ10が接続される構成においては、特定のNAND型フラッシュメモリによるバス専有によって他のNAND型フラッシュメモリへのアクセスが長い間実行できなくなるという事態が起こることを防止することができる。
図22は、フェイルビットカウント動作とフェイルビットカウント出力動作とを示す。
コマンド(例えばMMh)が受信された時、図22の左部に示すように、制御回路23内のカウンタ23Aは、キャッシュ14(XDL)内の読み出しデータ内の“0”データの数を計数し、これによってオン・セルの数を求める。そして、制御回路23は、求められたオン・セルの数を示すデジタル値をフェイルビット数としてレジスタ23Bに格納する。
コマンド(例えばXXh)が受信された時、図22の右部に示すように、制御回路23は、レジスタ23Bからメモリコントローラ200にフェイルビット数(オン・セルの数)を出力する。
図23は、リードコマンドに応じて実行されるデータ読み出し/フェイルビットカウント動作を示す。
このデータ読み出し/フェイルビットカウント動作は、リードコマンドによって指定されたデータを読み出す読み出し動作のバックグラウンドで、この読み出されたデータ内に含まれる“0”データの数(オン・セルの数)を計数する。
メモリコントローラ200は、セットフィーチャコマンドシーケンスを使用することによって、フェイルビットカウント動作に関する様々なモードを指定することができる。これらモードには、ステート(閾値電圧レベル)毎にオン・セルの数を計数するモードが含まれている。このモードにおいては、一つのリードコマンドの受信に応答して、幾つかのステート(複数の閾値レベル)に対応する複数のフェイルビットカウント動作が実行される。例えば、TLC−フラッシュメモリにおいて、リードコマンドによって指定されるページがロアーページである場合には、“A”ステートに対応する読み出し電圧VAを使用した読み出し動作ARと“E”ステートに対応する読み出し電圧VEを使用した読み出し動作ERとが実行されると共に、“A”ステートに対応するオン・セルの数と“E”ステートに対応するオン・セルの数とが計数される。また、TLC−フラッシュメモリにおいて、リードコマンドによって指定されるページがアッパーページである場合には、“C”ステートに対応する読み出し電圧VCを使用した読み出し動作CRと“G”ステートに対応する読み出し電圧VGを使用した読み出し動作GRとが実行されると共に、“C”ステートに対応するオン・セルの数と“G”ステートに対応するオン・セルの数とが計数される。
メモリコントローラ200は、リードコマンドシーケンス(00h、アドレスADD、30h)を発行する前に、プリフィックスコマンド(例えばYYh)を発行する。プリフィックスコマンド(例えばYYh)とこれに後続するリードコマンドシーケンス(00h、アドレスADD、30h)は、アドレスADDによって指定されたページ(メモリセル群)からデータを読み出すことのみならず、このページに対応するオン・セルの数を計数すべきことをNAND型フラッシュメモリ10に要求する。
以下では、アドレスADDによって指定されたページがTLCのロアーページである場合を例示して、データ読み出し/フェイルビットカウント動作を説明する。
ロアーページデータを読み出す読み出し動作においては、NAND型フラッシュメモリ10内の制御回路23は、“A”ステートに対応する読み出し電圧VAを使用した読み出し動作ARと、“E”ステートに対応する読み出し電圧VEを使用した読み出し動作AEとを実行する。
読み出し動作AR(A Read)では、読み出し電圧VAが選択ワード線WLnに印加され、アドレスADDによって指定されたページ(選択ワード線WLnに接続されたメモリセル群)からデータ(A Data)が読み出される。読み出し動作ER(E Read)では、読み出し電圧VEが選択ワード線WLnに印加され、選択ワード線WLnに接続されたメモリセル群からデータ(E Data)が読み出される。
読み出し動作ER(E Read)の期間中においては、データ(A Data)がXDLに転送され、そして制御回路23が、このデータ(A Data)内の“0”データの数(FBC(A))を計数する。FBC(A)は、レジスタ23Bに格納される。
リードリカバリ動作の期間中においては、データ(E Data)がXDLに転送され、そして制御回路23が、このデータ(E Data)内の“0”データの数(FBC(E))を計数する。FBC(E)も、レジスタ23Bの残りの空き領域に格納される。データ(A Data)とデータ(E Data)とから求められるロアーページデータはXDLに格納される。
リードリカバリ動作が完了すると、NAND型フラッシュメモリ10はビジー状態からレディー状態に戻る。メモリコントローラ200からコマンド(例えばXXh)が受信されたならば、制御回路23は、レジスタ23B内のFBC(A)およびFBC(E)をメモリコントローラ200に出力する。なお、メモリコントローラ200は、信号REnをアサートすることによって、XDLからロアーページデータを読み出すこともできる。
次に、図24、図25を参照して、リード動作ARおよびフェイルビットカウント動作の例を説明する。
図24に示すように、NAND型フラッシュメモリ10においては、各ステートの閾値分布は、時間の経過またはメモリセルトランジスタMTに加わるストレスによって、拡張又はシフトする場合がある。
これにより、“A”ステート(“A”レベル)にプログラムされた幾つかのメモリセルトランジスタMTの閾値電圧は、読み出し電圧VAよりも低下する場合がある。“A”ステートに対応する正規分布曲線の下と電圧VAとによって囲まれる領域(ハッチング領域)は、その閾値電圧が読み出し電圧VA未満の閾値電圧に低下されたメモリセルトランジスタMTの数を表している(これらメモリセルトランジスタMTのステートは“A’”ステートとして参照される)。読み出し動作ARの期間において、“A’”ステートのメモリセルトランジスタMTがターンオンしてしまい、これによって読み出しデータが誤りを含むことになる。
同様に、“E”ステートにプログラムされた幾つかのメモリセルトランジスタMTの閾値電圧が読み出し電圧VEよりも低下してしまう場合もある。“E”ステートに対応する正規分布曲線の下と電圧VEとによって囲まれる領域(ハッチング領域)は、その閾値電圧が読み出し電圧VE未満の閾値電圧に低下されたメモリセルトランジスタMTの数を表している(これらメモリセルトランジスタMTのステートは“E’”ステートとして参照される)。
図25は、リード動作ARおよびフェイルビットカウント動作を示す。
図25では、図示の簡単化のために、選択ワード線WLnに8つのメモリセルトランジスタMTが接続されている場合が想定されている。ビット線BL0に対応するメモリセルトランジスタMTは“A’”ステートであり、ビット線BL1に対応するメモリセルトランジスタMTは“Er”ステートであり、ビット線BL2に対応するメモリセルトランジスタMTは“A”ステートであり、ビット線BL3に対応するメモリセルトランジスタMTは“Er”ステートであり、ビット線BL4に対応するメモリセルトランジスタMTは“A’”ステートであり、ビット線BL5に対応するメモリセルトランジスタMTは“B”ステートであり、ビット線BL6に対応するメモリセルトランジスタMTは“C”ステートであり、ビット線BL7に対応するメモリセルトランジスタMTは“D”ステートである。
リード動作ARの間、電圧VAが読み出し電圧(VCGRV)として選択ワード線WLnに印加される。ビット線BL0に対応するメモリセルトランジスタMTはオンする。ビット線BL1に対応するメモリセルトランジスタMTはオンする。ビット線BL2に対応するメモリセルトランジスタMTはオフする。ビット線BL3に対応するメモリセルトランジスタMTはオンする。ビット線BL4に対応するメモリセルトランジスタMTはオンする。ビット線BL5〜BL7に対応するメモリセルトランジスタMTはそれぞれオフする。結果、選択ワード線WLnに接続されたメモリセルトランジスタMTからビット線BL0〜BL7に読み出されるデータ(A Data)は、“0,0,1,0,0,1,1,1”である。このデータ(A Data)内の“0”データの数(FBC(A))が計数される。FBC(A)は、オン・セルの数を示す。ここでは、FBC(A)は4である。FBC(A)の値は、レジスタ23Bに格納される。
図26は、セットフィーチャコマンドによって設定可能なモード(機能)の例を示す。
制御回路23は、「XNOR」機能、「State毎」機能、「Start and End Col」機能、「Read回数」機能、「VCG Step」機能、「TEMPCODE Update Option」機能を有している。
ステート毎にデータを複数回リードする動作において、「XNOR」機能が有効である場合には、あるステートに対応する最初の読み出し動作で得られるオン・セルの数と、このステートに対応する次の読み出し動作で得られるオン・セルの数との差分が求められる。
「State毎」機能が有効である場合には、ステート毎にオン・セルの数が計数される。
「Start and End Col」機能が有効である場合には、XDL内のデータ全体ではなく、指定されたデータ範囲内にのみ含まれるオン・セルの数が計数される。
「Read回数」機能は、例えば、1〜15の内の任意の数値をリード回数として指定することを可能にする。2以上のリード回数が指定された場合には、データを複数回リードする動作が実行される。
「VCG Step」機能は、読み出し電圧(VCGRV)を上昇するためのステップ幅を選択する。スモールステップ幅が選択された場合、読み出し電圧(VCGRV)は、このスモールステップ幅の単位で段階的に上昇される。ラージステップ幅が選択された場合、読み出し電圧(VCGRV)は、このラージステップ幅の単位で段階的に上昇される。なお、ステップ幅の候補は3以上であってもよい。
「TEMPCODE Update Option」機能は、データを複数回リードする動作中において実行すべき温度計測回数を指定する。
図27は、テストモードにおいてNAND型フラッシュメモリ10によって実行されるデータ読み出し/フェイルビットカウント動作を示す。
テストモードにおいては、NAND型フラッシュメモリ10は、期待値データによって指定されるオン・セルの数と実際のオン・セルの数との差分をフェイルビット数として計数することができる。
図27に示すように、まず、メモリコントローラ200は、メモリコア(メモリセルアレイ)12から読み出されるべきデータ(以下、データXと称す。)に対応する期待値データ(Data In)をNAND型フラッシュメモリ10に送信する。例えば、あるロアーページに対する読み出し動作AR(A Read)が実行された時にオンするメモリセルトランジスタMTの数をチェックするテストにおいては、メモリコントローラ200は、読み出し動作AR(A Read)によって読み出されるべきデータパターンを期待値データとしてNAND型フラッシュメモリ10に送信すればよい。
NAND型フラッシュメモリ10においては、メモリコントローラ200から受信された期待値データ(Data In)は、XDLを介してI/O制御回路16からデータラッチDL3に転送される。以下では、この期待値データ(Data In)は、期待値データExpect(A)として参照される。Expect(A)は、読み出し動作AR(A Read)によって読み出されることが期待されるデータパターンである。
次に、メモリコントローラ200は、データリードとフェイルビットカウント動作とを指定するリードコマンドシーケンス(コマンドYYh、コマンド00h、アドレスADD、コマンド30h)をNAND型フラッシュメモリ10に送信する。
NAND型フラッシュメモリ10においては、読み出し動作AR(A Read)が実行される。読み出し動作AR(A Read)では、電圧VAが読み出し電圧(VCGRV)として選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群から読み出されたデータ(A DATA)は、DL0に保持される。
続いて、読み出し動作ER(E Read)が実行される。読み出し動作ER(E Read)では、電圧VEが読み出し電圧(VCGRV)として選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群から読み出されたデータ(E DATA)は、DL1に保持される。
この読み出し動作ER(E Read)の期間中において、期待値データExpect(A)とデータ(A DATA)との差分データ(delta(A))がOPによって求められ、差分データ(delta(A))がXDLに保持される。差分データ(delta(A))は、Expect(A)とA DATAとのXNOR演算によって求めてもよい。制御回路23は、XDL内の差分データ(delta(A))に基づいてフェイルビット数(FBC delta(A))を計数する。フェイルビット数(FBC delta(A))は、期待値データによって示されるオン・セルの数と実際のオン・セルの数との差分を示す。フェイルビット数(FBC delta(A))は、レジスタ23Bに格納される。
読み出し動作ER(E Read)が完了すると、ワード線WL0〜WL7およびビット線BL0〜BL(L−1)をリセットするリードリカバリ動作が実行される。このリードリカバリ動作の期間中、データ(A DATA)とデータ(E DATA)とからロアーページデータが生成され、このロアーページデータが差分データ(delta(A))の代わりにXDLに格納される。
そして、NAND型フラッシュメモリ10がメモリコントローラ200からコマンドXXhを受信すると、レジスタ23Bに格納されているフェイルビット数(FBC delta(A))がメモリコントローラ200に出力される。
なお、図27では、“A”ステートに対応するオン・セルの数(ここでは、FBC delta(A))を計数する場合を説明したが、“E”ステートに対応するオン・セルの数(例えば、FBC delta(E))を計数してもよいし、FBC delta(A)とFBC delta(E)の双方を計数してもよい。
図28は、データ読み出し/フェイルビットカウント動作の例を示す。
図28の最上段には、選択ワード線WLnに接続されたメモリセルトランジスタMTそれぞれに対応するステートが示されている。ビット線BL0に対応するメモリセルトランジスタMTは“A’”ステート、ビット線BL1に対応するメモリセルトランジスタMTは“Er”ステート、ビット線BL2に対応するメモリセルトランジスタMTは“A”ステート、ビット線BL3に対応するメモリセルトランジスタMTは“Er”ステート、ビット線BL4に対応するメモリセルトランジスタMTは“A’”ステート、ビット線BL5に対応するメモリセルトランジスタMTは“B”ステート、ビット線BL6に対応するメモリセルトランジスタMTは“C”ステート、ビット線BL7に対応するメモリセルトランジスタMTは“D”ステートである。
読み出し動作AR(A Read)が実行される。これにより、これらメモリセルトランジスタMTからデータ(A DATA)が読み出される。オンされたメモリセルトランジスタMTからは“0”データが読み出され、オフ状態に維持されているメモリセルトランジスタMTからは“1”データが読み出される。選択ワード線WLnに接続されたメモリセルトランジスタMTからビット線BL0〜BL7に読み出されるデータ(A Data)は、“0,0,1,0,0,1,1,1”である。他方、期待値データExpect(A)のデータパターンは、“1,0,1,0,1,1,1,1”である。なぜなら、ビット線BL0,BL4にそれぞれ対応するメモリセルトランジスタMTは“A”ステートであることが期待されているからである。
そして、期待値データExpect(A)とデータ(A DATA)との差分データ(delta(A))が求められる。差分データ(delta(A))は、Expect(A)とA DATAとのXNOR演算によって求めてもよい。制御回路23は、差分データ(delta(A))内の“1”の数(ここでは、2)をフェイルビット数(FBC delta(A))として計数する。このフェイルビット数(FBC delta(A))は、期待値データによって示されるオン・セルの数と実際のオン・セルの数との差分を示す。
あるいは、データ(A Data)に含まれる“0”データの数から期待値データExpect(A)に含まれる“0”データの数を減算することによって得られる値をフェイルビット数として算出してもよい。
図29は、ステート分離しない場合の閾値電圧分布イメージとステート分離した場合の閾値電圧分布イメージとを示す。
ここで、ステート分離とは、複数ステートの読み出しデータから生成されるページデータに基づいてオン・セルの数を計数するのでは無く、個々のステートに対応する読み出しデータに基づいてオン・セルの数を計数することを意味する。例えば、TLCのロアーページデータを読み出す場合には、読み出し動作AR(A Read)によって読み出されたデータ(A Data)のみに基づいてオン・セルの数が計数されてもよいし、読み出し動作ER(E Read)によって読み出されたデータ(E Data)のみに基づいてオン・セルの数が計数されてもよい。
ステート分離しない場合の閾値電圧Vthの分布は、図29の左側に示すようになる。この場合、“A”レベルの分布が“Er”レベルの分布に侵食しているのか、あるいは“Er”レベルの分布が“A”レベルの分布に侵食しているのかが判別できない。
ステート分離した場合、図29の右側に示すようになる。この場合、“A”レベルの分布が“Er”レベルの分布に侵食しているのか、“Er”レベルの分布が“A”レベルの分布に侵食しているかが判別できる。図29の右側の例は、“Er”レベルの分布が“A”レベルの分布に侵食しているものである。
図30は、メモリコントローラ200によってスタートカラムおよびエンドカラムを指定することが可能なフェイルビットカウント機能を示す。
メモリコントローラ200は、セットフィーチャコマンドシーケンスをNAND型フラッシュメモリ10に送信することによって、「Start and End Col」機能を有効にすることができる。「Start and End Col」機能は、フェイルビットカウント動作の際に、1ページ分のデータ全体に基づいてオン・セルの数を計数するのではなく、指定された範囲のデータのみに基づいてオン・セルの数を計数する機能である。
メモリコントローラ200は、データ範囲を指定したフェイルビットカウント動作を実行するためのリードコマンドシーケンス(コマンドYYh、コマンド00h、スタートカラムアドレスA(S)、コマンド00h、エンドカラムアドレスA(E)、コマンド30h)をNAND型フラッシュメモリ10に送信する。ここで、スタートカラムアドレスA(S)は、フェイルビットカウント動作が実行されるべきカウント範囲の開始位置を指定するために用いられる。エンドカラムアドレスA(E)は、カウント範囲の終了位置を指定するために用いられる。
以下では、ロアーページデータを読み出す場合を例示してフェイルビットカウント動作を説明する。
NAND型フラッシュメモリ10内の制御回路23は、電圧VAを選択ワード線WLnに印加する読み出し動作AR(A Read)と、電圧VEを選択ワード線WLnに印加する読み出し動作ER(E Read)と、ワード線WL0〜WL7およびビット線BL0〜BL(L−1)をリセットするリードリカバリ動作とを実行する。読み出し動作AR(A Read)では、選択ワード線WLnに接続されたメモリセルトランジスタMT群からデータ(A Data)が読み出される。読み出し動作ER(E Read)では、これらメモリセルトランジスタMT群からデータ(E Data)が読み出される。
読み出し動作ER(E Read)の期間中においては、データ(A Data)がXDLに転送され、そして制御回路23が、このデータ(A Data)内のカウント範囲に含まれる“0”データの数(FBC(A))を計数するためのフェイルビットカウント動作を実行する。FBC(A)は、レジスタ23Bに格納される。
リードリカバリ動作の期間中においては、データ(E Data)がXDLに転送され、そして制御回路23が、このデータ(E Data)内のカウント範囲に含まれる“0”データの数(FBC(E))を計数するためのフェイルビットカウント動作を実行する。FBC(E)も、レジスタ23Bの残りの空き領域に格納される。データ(A Data)とデータ(E Data)とから求められるロアーページデータはXDLに格納される。
リードリカバリ動作が完了すると、NAND型フラッシュメモリ10はビジー状態からレディー状態に戻る。メモリコントローラ200からコマンド(例えばXXh)が受信されたならば、制御回路23は、レジスタ23B内のFBC(A)およびFBC(E)をメモリコントローラ200に出力する。なお、メモリコントローラ200は、信号REnをアサートすることによって、XDLからロアーページデータを読み出すこともできる。
図31は、指定されたスタートカラムおよびエンドカラムによって規定されるカウント範囲内のデータに基づいて実行されるフェイルビットカウント動作を示す。
キャッシュ14(XDL)に格納されているデータの中からスタートカラムアドレスA(S)とエンドカラムアドレスA(E)で指定された範囲のデータ部が特定される。そして、その特定されたデータ部に含まれる“0”データの数がフェイルビット数としてカウントされ、その結果がレジスタ23Bに格納される。
図32は、ユーザデータとECCとの関係の例を示す。
通常、ECCは、ある設定されたデータサイズ毎に生成される。例えば、ECCが1Kバイトのデータ毎に生成される場合には、ユーザデータd1、ユーザデータd2、ユーザデータd3、…ユーザデータd16にそれぞれ対応するECC1、ECC2、ECC3、…ECC16が生成される。例えば、ユーザデータd2とユーザデータd3とを含むデータ範囲のみにおいて発生するエラー数が訂正可能なエラー数を超過していることがあらかじめ分かっている場合には、ユーザデータd2とユーザデータd3を含むデータ範囲をスタートカラムアドレスA(S)とエンドカラムアドレスA(E)によってカウント範囲として指定し、その指定したカウント範囲に対するフェイルビットカウント動作を実行することができる。この場合、制御回路23のカウンタ23Aは、カウント範囲に属するデータに含まれる“0”データの数をオン・セルの数として計数するフェイルビットカウント動作を実行する。このようにカウント範囲を指定することで、効率的にフェイルビットカウント動作を実行することができる。
図33は、NAND型フラッシュメモリ10によって実行される、ステート毎にデータを複数回リードする動作を示す。
例えば、3回のリード回数が指定されて、ロアーページのリード動作が実行される場合、読み出し動作AR(A Read)、読み出し動作ER(E Read)、読み出し動作AR(A+ Read)、読み出し動作ER(E+ Read)、読み出し動作AR(A++ Read)、読み出し動作ER(E++ Read)が、この順に実行される。
読み出し動作AR(A Read)、読み出し動作AR(A+ Read)、読み出し動作AR(A++ Read)では、図33の左下に示すように、電圧VAの近傍の3つの電圧値VA1、VA2、VA3がそれぞれ用いられる(VA1<VA2<VA3,VA3<VB)。
同様に、読み出し動作ER(E Read)、読み出し動作ER(E+ Read)、読み出し動作ER(E++ Read)では、電圧VEの近傍の3つの電圧値VE1、VE2、VE3がそれぞれ用いられる(VE1<VE2<VE3,VD<VE1,VE3<VF)。
メモリコントローラ200は、選択ワード線に印加される読み出し電圧の値に応じて変化するオン・セル数を計数するためのリードコマンドシーケンス(コマンドYYh、コマンド00h、アドレスADD、コマンド30h)をNAND型フラッシュメモリ10に送信する。
制御回路23は、読み出し動作AR(A Read)を実行する。読み出し動作AR(A Read)では、電圧VA1がアドレスADDによって指定された選択ワード線WLnに印加される。そして、選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(A Data)が読み出される。データ(A Data)はデータラッチDL0に保持される。
制御回路23は、読み出し動作ER(E Read)を実行する。読み出し動作ER(E Read)では、電圧VE1が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(E Data)が読み出される。DL0はデータ(A Data)を保持し、DL1はデータ(E Data)を保持し、XDLはデータ(A Data)を保持する。制御回路23はXDLのデータ(A Data)内の“0”データの数(FBC(A))を計数する。このFBC(A)は、レジスタ23Bに格納される。
制御回路23は、読み出し動作AR(A+ Read)を実行する。読み出し動作AR(A+ Read)では、電圧VA2が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(A+ Data)が読み出される。DL0はデータ(A+ Data)を保持し、DL1はデータ(E Data)を保持し、DL2はデータ(A Data)を保持し、XDLはデータ(E Data)を保持する、制御回路23はXDLのデータ(E Data)内の“0”データの数(FBC(E))を計数する。このFBC(E)は、レジスタ23Bの残り空き領域に格納される。
制御回路23は、読み出し動作ER(E+ Read)を実行する。読み出し動作ER(E+ Read)では、電圧VE2が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(E+ Data)が読み出される。DL0はデータ(E+ Data)を保持し、DL1はデータ(E Data)を保持し、DL2はデータ(Best Data(A))を保持し、XDLはデータ(A+ Data)を保持する。制御回路23はXDLのデータ(A+ Data)内の“0”データの数(FBC(A+))を計数する。このFBC(A+)は、レジスタ23Bの残り空き領域に格納される。Best Data(A)は、データ(A+ Data)またはデータ(A Data)から選択される。例えば、
FBC(A+) − FBC(A) < X
が成立するならば、データ(A+ Data)がBest Data(A)として選択されてもよい。成立しないならば、データ(A Data)がBest Data(A)として選択されてもよい。Xは定数である。
FBC(A+) − FBC(A) < X
が成立するならば、データ(A+ Data)がBest Data(A)として選択されてもよい。成立しないならば、データ(A Data)がBest Data(A)として選択されてもよい。Xは定数である。
制御回路23は、読み出し動作AR(A++ Read)を実行する。読み出し動作AR(A++ Read)では、電圧VA3が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(A++ Data)が読み出される。DL0はデータ(A++ Data)を保持し、DL2はデータ(Best Data(A))を保持し、DL3はデータ(Best Data(E))を保持し、XDLはデータ(E+ Data)を保持する。制御回路23はXDLのデータ(E+ Data)内の“0”データの数(FBC(E+))を計数する。このFBC(E+)は、レジスタ23Bの残り空き領域に格納される。Best Data(E)は、データ(E+ Data)またはデータ(E Data)から選択される。例えば、
FBC(E+) − FBC(E) < X
が成立するならば、データ(E+ Data)がBest Data(E)として選択されてもよい。成立しないならば、データ(E Data)がBest Data(E)として選択されてもよい。
FBC(E+) − FBC(E) < X
が成立するならば、データ(E+ Data)がBest Data(E)として選択されてもよい。成立しないならば、データ(E Data)がBest Data(E)として選択されてもよい。
制御回路23は、読み出し動作ER(E++ Read)を実行する。読み出し動作ER(E++ Read)では、電圧VE3が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(E++ Data)が読み出される。DL0はデータ(E++ Data)を保持し、DL2はデータ(Best Data(A))を保持し、DL3はデータ(Best Data(E))を保持し、XDLはデータ(A++ Data)を保持する。制御回路23はXDLのデータ(A++ Data)内の“0”データの数(FBC(A++))を計数する。このFBC(A++)は、レジスタ23Bの残り空き領域に格納される。Best Data(A)は、現在のBest Data(A)またはデータ(A++ Data)から選択される。例えば、
(FBC(A++) − FBC(A+)) < (FBC(A+) − FBC(A))
が成立するならば、Best Data(A)が更新されてもよく、これによってデータ(A++ Data)が新たなBest Data(A)となってもよい。成立しないならば、現在のBest Data(A)がそのまま維持されてもよい。
(FBC(A++) − FBC(A+)) < (FBC(A+) − FBC(A))
が成立するならば、Best Data(A)が更新されてもよく、これによってデータ(A++ Data)が新たなBest Data(A)となってもよい。成立しないならば、現在のBest Data(A)がそのまま維持されてもよい。
リードリカバリ動作の期間中においては、DL0はデータ(E++ Data)を保持し、DL2はデータ(Best Data(A))を保持し、DL3はデータ(Best Data(E))を保持し、XDLはデータ(E++ Data)を保持する。制御回路23はXDLのデータ(E++ Data)内の“0”データの数(FBC(E++))を計数する。このFBC(E++)は、レジスタ23Bの残り空き領域に格納される。Best Data(E)は、現在のBest Data(E)またはデータ(E++ Data)から選択される。例えば、
(FBC(E++) − FBC(E+)) < (FBC(E+) − FBC(E))
が成立するならば、Best Data(E)が更新されてもよく、これによってデータ(E++ Data)が新たなBest Data(E)となってもよい。成立しないならば、現在のBest Data(E)がそのまま維持されてもよい。XDLのデータは、データ(E++ Data)からロアーページデータに変更される。ロアーページデータは、Best Data(A)とBest Data(E)から生成される。
(FBC(E++) − FBC(E+)) < (FBC(E+) − FBC(E))
が成立するならば、Best Data(E)が更新されてもよく、これによってデータ(E++ Data)が新たなBest Data(E)となってもよい。成立しないならば、現在のBest Data(E)がそのまま維持されてもよい。XDLのデータは、データ(E++ Data)からロアーページデータに変更される。ロアーページデータは、Best Data(A)とBest Data(E)から生成される。
図34は、ステート毎にデータを複数回リードする動作のために使用されるVCGステップ幅を示す。
メモリコントローラ200は、VCGステップ幅#1またはVCGステップ幅#2の任意の一方を選択することができる(VCGステップ幅#1<VCGステップ幅#2)。VCGステップ幅#1およびVCGステップ幅#2は、上述のスモールステップ幅およびラージステップ幅にそれぞれ対応する。
ステート毎にデータを複数回リードする動作において、VCGステップ幅#1が選択された時は、読み出し電圧(VCGRV)は、データを読み出す度にVCGステップ幅#1に対応する電圧ΔV#1だけ上昇される。一方、VCGステップ幅#2が選択された時は、読み出し電圧(VCGRV)は、データを読み出す度にVCGステップ幅#2に対応する電圧ΔV#2だけ上昇される(電圧ΔV#1<電圧ΔV#2)。ΔV#1、ΔV#2の各々は、VCGステップ幅を示すデジタル値のみから求められてもよい。あるいは、ΔV#1、ΔV#2の各々は、VCGステップ幅を示すデジタル値と温度との関数F(VCGステップ幅,温度)を使用して求められてもよい。
図35は、ステート毎にデータを複数回リードする時に実行されるデータ読み出し/フェイルビットカウント動作の例を示す。
図35では、図示の簡単化のために、選択ワード線WLnに8つのメモリセルトランジスタMTが接続されている場合が想定されている。
ビット線BL0に対応するメモリセルトランジスタMTは“Er”ステート、ビット線BL1に対応するメモリセルトランジスタMTは“A”ステート、ビット線BL2に対応するメモリセルトランジスタMTは“Er”ステート、ビット線BL3に対応するメモリセルトランジスタMTは“A”ステート、ビット線BL4に対応するメモリセルトランジスタMTは“A”ステート、ビット線BL5に対応するメモリセルトランジスタMTは “A”ステート、ビット線BL6に対応するメモリセルトランジスタMTは“Er”ステート、ビット線BL7に対応するメモリセルトランジスタMTは“A”ステートである。
以下では、図34で示したように、VA1、VA2、VA3が、“Er”ステートの閾値電圧分布と“A”ステートの閾値分布との間のオーバーラップ領域上に設定されている場合を想定する。
まず、電圧VA1が選択ワード線WLnに印加される。電圧VA1は“Er”ステートの最大閾値電圧よりも低い。したがって、“Er”ステートに属するメモリセルトランジスタMTの内、電圧VA1未満の閾値電圧を有するメモリセルトランジスタMTそれぞれはオンするが、電圧VA1以上の閾値電圧を有するメモリセルトランジスタMT(“Er”ステートの正規分布曲線の下と電圧VA1とによって囲まれた領域に属するメモリセルトランジスタMT)それぞれはオフする。したがって、“Er”ステートに対応する比較的多くの数のメモリセルトランジスタMTがオフする。また、“A”ステートに属するメモリセルトランジスタMTの殆どすべてがオフする。したがって、例えば、1,1,1,1,1,1,0,1がデータ(A DATA)として読み出される。電圧VA1が印加された時のオン・セル数(FBC(A))は、1となる。
電圧VA2が選択ワード線WLnに印加される。“Er”ステートに属するメモリセルトランジスタMTについては、オンするメモリセルトランジスタMTの数が増える。したがって、例えば、1,1,0,1,1,1,0,1がデータ(A+ DATA)として読み出される。電圧VA2が印加された時のオン・セル数(FBC(A+))は、2となる。
電圧VA3が選択ワード線WLnに印加される。“Er”ステートに属するメモリセルトランジスタMTの殆どすべてがオンする。“A”ステートに属するメモリセルトランジスタMTについても、幾つかのメモリセルトランジスタMTはオンする。したがって、例えば、0,0,0,0,1,1,0,1がデータ(A++ DATA)として読み出される。電圧VA3が印加された時のオン・セル数(FBC(A++))は、5となる。
図36は、読み出し電圧に応じて変化するオン・セルの数から、2つのステートの交点に対応する最適な読み出し電圧を求める動作を示す。
図36の上部は、読み出し電圧(VCGRV)とオン・セル数との関係を示す。図36の下部は、読み出し電圧(VCGRV)と、隣接する読み出し電圧間のオン・セル数の差との関係を示す。
ここでは、電圧VA0、VA1、VA2、VA3が読み出し電圧CVGRVとして使用された場合を想定する(VA0<VA1<VA2<VA3)。N0は、電圧VA0が選択ワード線WLnに印加された時のオン・セル数を示し、N1は、電圧VA1が選択ワード線WLnに印加された時のオン・セル数を示し、N2は、電圧VA2が選択ワード線WLnに印加された時のオン・セル数を示し、N3は、電圧VA3が選択ワード線WLnに印加された時のオン・セル数を示す。オン・セル数の差(N1−N0)は、読み出し電圧(VCGRV)をVA0からVA1に上昇させることによって増えたオン・セルの数を示す。同様に、オン・セル数の差(N2−N1)は、読み出し電圧(VCGRV)をVA1からVA2に上昇させることによって増えたオン・セルの数を示し、オン・セル数の差(N3−N2)は、読み出し電圧(VCGRV)をVA2からVA3に上昇させることによって増えたオン・セルの数を示す。オン・セル数の差(N1−N0)、(N2−N1)、(N3−N2)をそれぞれ図36のグラフ上にプロットすることにより、メモリセルトランジスタMTの閾値電圧分布を描くことができる。この閾値電圧分布から、“Er”ステートの閾値電圧分布と“A”ステートの閾値分布との交点(谷間)に対応する最適な読み出し電圧を求めることができる。
図37は、ステート毎にデータを複数回リードする動作の別の例を示す。
制御回路23は、読み出し動作AR(A Read)を実行する。読み出し動作AR(A Read)では、電圧VA1が選択ワード線WLnに印加される。そして、選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(A Data)が読み出される。
制御回路23は、読み出し動作ER(E Read)を実行する。読み出し動作ER(E Read)では、電圧VE1が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(E Data)が読み出される。
制御回路23は、読み出し動作AR(A+ Read)を実行する。読み出し動作AR(A+ Read)では、電圧VA2が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(A+ Data)が読み出される。
制御回路23は、読み出し動作ER(E+ Read)を実行する。読み出し動作ER(E+ Read)では、電圧VE2が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(E+ Data)が読み出される。この読み出し動作ERの期間中において、制御回路23は、データ(A+ Data)とデータ(A Data)との差分データに含まれる“0”データの数(FBC(ΔA))をカウントする。FBC(ΔA)は、レジスタ23Bに格納される。FBC(ΔA)は、電圧VA1の印加によってオンしたメモリセルトランジスタMTの数を示すオン・セル数と電圧VA2の印加によってオンしたメモリセルトランジスタMTの数を示すオン・セル数との差分を示す。
制御回路23は、読み出し動作AR(A++ Read)を実行する。読み出し動作AR(A++ Read)では、電圧VA3が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(A++ Data)が読み出される。この読み出し動作ARの期間中において、制御回路23は、データ(E+ Data)とデータ(E Data)との差分データに含まれる“0”データの数(FBC(ΔE))をカウントする。FBC(ΔE)は、レジスタ23Bに格納される。FBC(ΔE)は、電圧VE1の印加によってオンしたメモリセルトランジスタMTの数を示すオン・セル数と電圧VE2の印加によってオンしたメモリセルトランジスタMTの数を示すオン・セル数との差分を示す。
制御回路23は、読み出し動作ER(E++ Read)を実行する。読み出し動作ER(E++ Read)では、電圧VE3が選択ワード線WLnに印加される。選択ワード線WLnに接続されたメモリセルトランジスタMT群からビット線BL0〜BL(L−1)にデータ(E++ Data)が読み出される。この読み出し動作ERの期間中において、制御回路23は、データ(A++ Data)とデータ(A+ Data)との差分データに含まれる“0”データの数(FBC(ΔA++))をカウントする。FBC(ΔA++)は、レジスタ23Bに格納される。FBC(ΔA++)は、電圧VA2の印加によってオンしたメモリセルトランジスタMTの数を示すオン・セル数と電圧VA3の印加によってオンしたメモリセルトランジスタMTの数を示すオン・セル数との差分を示す。
リードリカバリ動作の期間中においては、制御回路23は、データ(E++ Data)とデータ(E+ Data)との差分データに含まれる“0”データの数(FBC(ΔE++))をカウントする。FBC(ΔE++)は、レジスタ23Bに格納される。FBC(ΔE++)は、電圧VE2の印加によってオンしたメモリセルトランジスタMTの数を示すオン・セル数と電圧VE3の印加によってオンしたメモリセルトランジスタMTの数を示すオン・セル数との差分を示す。
メモリコントローラ200からコマンド(XXh)を受信すると、制御回路23は、レジスタ23Bに格納されているFBC(ΔA)、FBC(ΔE)、FBC(ΔA++)、FBC(ΔE++)をメモリコントローラ200に出力する。
図38は、図37のデータ読み出し/フェイルビットカウント動作において計数されるFBC(ΔA)、FBC(ΔA++)の例を示す。
図38では、図示の簡単化のために、選択ワード線WLnに8つのメモリセルトランジスタMTが接続されている場合が想定されている。
ビット線BL0に対応するメモリセルトランジスタMTは、“Er”ステート、ビット線BL1に対応するメモリセルトランジスタMTは、“A”ステート、ビット線BL2に対応するメモリセルトランジスタMTは、“Er”ステート、ビット線BL3に対応するメモリセルトランジスタMTは、“A”ステート、ビット線BL4に対応するメモリセルトランジスタMTは、“A”ステート、ビット線BL5に対応するメモリセルトランジスタMTは、“A”ステート、ビット線BL6に対応するメモリセルトランジスタMTは、“Er”ステート、ビット線BL7に対応するメモリセルトランジスタMTは、“A”ステートである。
まず、電圧VA1が選択ワード線WLnに印加される。この場合、“Er”ステートの正規分布曲線の下と電圧VA1とによって囲まれた領域に属するメモリセルトランジスタMTそれぞれはオフする。また、“A”ステートに属するメモリセルトランジスタMTの殆どすべてがオフする。したがって、例えば、1,1,1,1,1,1,0,1がデータ(A DATA)として読み出される。
電圧VA2が選択ワード線WLnに印加される。“Er”ステートに属するメモリセルトランジスタMTについては、オンするメモリセルトランジスタMTの数が増える。したがって、例えば、1,1,0,1,1,1,0,1がデータ(A+ DATA)として読み出される。
データ(A DATA)とデータ(A+ DATA)とのXNOR演算が実行され、データ(A Data)とデータ(A+ Data)との差分データ(delta(A+))が求められる。delta(A+)は0,0,1,0,0,0,0,0となる。delta(A+)に含まれる“1”の数がFBC(ΔA+)となる。FBC(ΔA+)は1である。
電圧VA3が選択ワード線WLnに印加される。“Er”ステートに属するメモリセルトランジスタMTのほとんど全てがオンする。“A”ステートに属するメモリセルトランジスタMTについても、幾つかのメモリセルトランジスタMTはオンする。したがって、例えば、0,0,0,0,1,1,0,1がデータ(A++ DATA)として読み出される。
データ(A+ DATA)とデータ(A++ DATA)とのXNOR演算が実行され、データ(A+ Data)とデータ(A++ Data)との差分データ(delta(A++))が求められる。delta(A++)は1,1,0,1,0,0,0,0となる。delta(A++)に含まれる“1”の数がFBC(ΔA++)となる。FBC(ΔA++)は3である。
図39は、温度計測動作とデータ読み出し/フェイルビットカウント動作を示す。
上述したように、本実施形態では、読み出し電圧(VCGRV)をシフトさせながら、ステート毎にデータを複数回リードする動作が実行される。読み出し電圧(VCGRV)は、VA1、VA2(=VA1+ΔV)、VA3(=VA2+ΔV)、VE1、VE2(=VE1+ΔV)、VE3(=VE2+ΔV)のように、データリードの度にVCGステップ幅に対応する電圧ΔVだけ上昇される(VCGシフト)。
図34で説明したように、実際の電圧ΔVは、計測された温度に依存する場合がある。このため、もし図39の左部に示すように、データリードの毎に温度(TEMPCODE)を取得すると、VCGステップ幅(電圧ΔV)がデータリードの毎に変動してしまう場合がある。なぜなら、複数回リードする動作の期間中に、チップ内の温度が変化するからである。よって、読み出し電圧(VCGRV)の変化のみに起因するオン・セルの数の差を取得したいにもかかわらず、取得されるオン・セルの数の差には、温度の変化に起因するノイズが含まれてしまう。結果、閾値電圧分布を精度よく描くことができず、最適な読み出し電圧を求めることが困難となる。
本実施形態では、読み出し電圧(VCGRV)をシフトさせながら、ステート毎にデータを複数回リードする動作においては、図39の右部に示すように、制御回路23は、初回の読み出し動作時に一度だけ温度を取得し、2回目以降の読み出し動作においては温度を取得しない。したがって、読み出し電圧(VCGRV)がシフトされる量(つまり電圧ΔV)を、一定にすることができる。取得されるオン・セルの数の差には、温度の変化に起因するノイズが含まれない。結果、メモリコントローラ200は、閾値電圧分布を精度よく描くことができ、最適な読み出し電圧を求めることが可能となる。
制御回路23は、以下のデータ読み出し/フェイルビットカウント動作を実行する。以下では、FBC(A)、FBC(A+)、FBC(A++)を求める場合を例示する。
制御回路23は、温度センサ28によって温度を取得する。制御回路23は、電圧VA1を選択ワード線WLnに印加する読み出し動作(A Read)を実行し、次いで電圧VE1を選択ワード線WLnに印加する読み出し動作(E Read)を実行する。E Readの間、制御回路23は、FBC(A)をカウントする。制御回路23は、リードリカバリ動作を実行した後、読み出し電圧(VCGRV)をVCGステップ幅だけ上昇させる制御を行う。この場合、取得された温度とVCGステップ幅とによって電圧ΔVが決定される。
制御回路23は、電圧VA2(=VA1+ΔV)を選択ワード線WLnに印加する読み出し動作(A+ Read)を実行し、次いで電圧VE2(=VE1+ΔV)を選択ワード線WLnに印加する読み出し動作(E+ Read)を実行する。E+ Readの間、制御回路23は、FBC(A+)をカウントする。制御回路23は、リードリカバリ動作を実行した後、読み出し電圧(VCGRV)をVCGステップ幅だけ上昇させる制御を行う。この場合、温度は更新されていないので、最初に取得された温度とVCGステップ幅とによって電圧ΔVが決定される。
制御回路23は、電圧VA3(=VA2+ΔV)を選択ワード線WLnに印加する読み出し動作(A++ Read)を実行し、次いで電圧VE3(=VE2+ΔV)を選択ワード線WLnに印加する読み出し動作(E++ Read)を実行する。E++ Readの間、制御回路23は、FBC(A++)をカウントする。
次に、図40を参照して、Vthトラッキングと本実施形態のデータ読み出し/フェイルビットカウント動作(On Chip FBC)との違いについて説明する。
Vthトラッキングは、読み出し電圧(VCGRV)を上昇しながらデータを複数回リードする動作である。図40の上部は、Vthトラッキングの動作を示す。
Vthトラッキングを使用してロアーページデータを複数回リードするケースにおいては、VA1を使用した読み出し動作(A Read)、VA2を使用した読み出し動作(A+ Read)、VA3を使用した読み出し動作(A++ Read)、VE1を使用した読み出し動作(E Read)、VE2を使用した読み出し動作(E+ Read)、VE3を使用した読み出し動作(E++ Read)が、この順に実行される。
読み出し動作(A Read)のみ、選択ワード線WLnおよびビット線BL0〜BL(L−1)は第1の制御モードで制御される(ここでは、第1の制御モードをR_CLKと称する)。他の全ての読み出し動作の間は、選択ワード線WLnおよびビット線BL0〜BL(L−1)は第2の制御モードで制御される(ここでは、第2の制御モードをRWL_CLKと称する)。第1の制御モード(R_CLK)では、選択ワード線WLnおよびビット線BL0〜BL(L−1)は基準電圧VSS(VSS=グランド電圧)から上昇されるが、第2の制御モード(R_CLK)では、選択ワード線WLnおよびビット線BL0〜BL(L−1)は基準電圧VSSには設定されない。
ビット線BL0〜BL(L−1)の電圧は、ビット線制御信号BLCによって制御される。ビット線BL0〜BL(L−1)の電圧はビット線制御信号BLCによってクランプされ、ビット線制御信号BLCの電圧の上限はビット線制御信号BLCの電圧に制限される。このため、例えば、ビット線制御信号BLCが基準電圧VSSである時、ビット線BL0〜BL(L−1)の電圧も基準電圧VSSとなる。
Vthトラッキングでは、各ビット線BLの制御および選択ワード線WLnの制御がA ReadとA+ Read(またはA++ Read)との間で異なる。各ビット線BLは、A Readの開始時には、基準電圧VSSから所望の電圧に上昇される。しかし、A+ Readの開始時(またはA++ Readの開始時)には、各ビット線BLは、基準電圧VSSに設定されない。また、選択ワード線WLnは、A Readの開始時に一旦放電されるが、A+ Readの開始時(またはA++ Readの開始時)には放電されない。
したがって、読み出し電圧(VCGRV)の変化のみに起因するオン・セルの数の差を取得したいにもかかわらず、取得されるオン・セルの数の差には、各ビット線BL/選択ワード線WLnの制御の違い起因するノイズが含まれてしまう。結果、閾値電圧分布を精度よく描くことができず、最適な読み出し電圧を求めることが困難となる。
本実施形態のデータ読み出し/フェイルビットカウント動作(On Chip FBC)では、A ReadとE Readのセット、A+ ReadとE+ Readのセット、A++ ReadとE++ Readのセットが、この順で実行される。そして、選択ワード線WLnに印加される読み出し電圧の値に応じて変化するオン・セルの数が計数される。
各セットにおいて、“A”ステートの読み出し動作(A Read、A+ Read、およびA++ Read)は第1の制御モード(R_CLK)によって制御され、“E”ステートの読み出し動作(E Read、E+ Read、およびE++ Read)は第2の制御モード(RWL_CLK)によって制御される。
つまり、各セットの開始時(つまり、あるセットから次のセットへの遷移時)には、A Read、A+ Read、またはA++ Readが実行される。この場合、選択ワード線WLnおよびビット線BL0〜BL(L−1)は一旦放電された後に上昇される。例えば、ビット線BL0〜BL(L−1)の電圧は基準電圧VSSまで放電され、そして基準電圧VSSからプリチャージ電圧に上昇される。
より詳しくは、あるセットから次のセットへの遷移時においては、ビット線制御信号BLCが基準電圧VSSに下げられ、そして基準電圧VSSから上昇する。このため、各ビット線BLは一旦放電されて基準電圧VSSにまで低下され、そして各ビット線BLの電圧は、基準電圧VSSから所定のプリチャージ電圧に上昇される。
各セットの開始時(つまり、あるセットから次のセットへの遷移時)には、選択ワード線WLnも一旦放電される。例えば、E ReadからA+ Readへの遷移時には、選択ワード線WLnの電圧は、まず、VE1からVA1まで低下され、そしてVA1からVA2に上昇する。E+ ReadからA++ Readへの遷移時には、選択ワード線WLnの電圧は、まずも、VE2からVA2まで低下され、そしてVA2からVA3に上昇する。
よって、各ビット線BLの制御をA ReadとA+ Read(またはA++ Read)との間で同じにすることができる。さらに、選択ワード線WLnの制御もA ReadとA+ Read(またはA++ Read)との間で同じにすることができる。同様に、各ビット線BLの制御をE ReadとE+ Read(またはE++ Read)との間で同じにすることができる。さらに、選択ワード線WLnの制御もE ReadとE+ Read(またはE++ Read)との間で同じにすることができる。
したがって、各読み出し動作において取得されるオン・セルの数には、各ビット線BL/選択ワード線WLnの制御の違いに起因するノイズが含まれない。よって、読み出し電圧(VCGRV)の変化のみに起因するオン・セルの数の差を取得することが可能となる。メモリコントローラ200は、閾値電圧分布を精度よく描くことができ、最適な読み出し電圧を求めることが可能となる。
図41のフローチャートは、メモリコントローラ200とNAND型フラッシュメモリ10とによって実行される読み出し電圧調整処理の手順を示す。
メモリコントローラ200は、あるページを指定するアドレスを含むリードコマンドをNAND型フラッシュメモリ10に送信する。このリードコマンドの受信に応答して、NAND型フラッシュメモリ10の制御回路23は、アドレスによって指定されたページからデータを読み出す(ステップS101)。例えば、アドレスによって指定されたページがロアーページであるならば、読み出し動作ARと読み出し動作AEとが実行され、ロアーページデータがメモリコントローラ200に返される。
メモリコントローラ200では、ロアーページデータに含まれるエラー数がECCによって訂正可能なエラー数を超過しているか否かが判定される(ステップS102)。ロアーページデータ内のエラー数がECC訂正可能なエラー数を超過していないならば(ステップS102のNO)、処理は終了する。一方、ロアーページデータ内のエラー数がECC訂正可能なエラー数を超過しているならば(ステップS102のYES)、メモリコントローラ200は、このロアーページのフェイルビットカウント動作を実行するためのコマンドシーケンス(コマンドYYh、コマンド00h、アドレスADD、コマンド30h)をNAND型フラッシュメモリ10に送信する。
NAND型フラッシュメモリ10の制御回路23は、例えば、ステート毎にデータを複数回リードする動作を実行して、A Read、A+ Read、A++ Read、E Read、E+ Read、E++ Readそれぞれに対応するオン・セル数を計数する(ステップS103)。そして、メモリコントローラ200からのコマンド(XXh)の受信に応答して、制御回路23は、これらオン・セル数をメモリコントローラ200に送信する(ステップS104)。メモリコントローラ200は、これらオン・セル数に基づいて、読み出し電圧VAの最適値および読み出し電圧VEの最適値を求める。そして、メモリコントローラ200は、読み出し電圧VA、VEをそれぞれ最適値に変更することを指示するコマンドをNAND型フラッシュメモリ10に送信する。
なお、以上の説明では、ロアーページデータを読み出す時に実行されるデータ読み出し/フェイルビットカウント動作を説明したが、データ読み出し/フェイルビットカウント動作はミドルページデータ/アッパーページデータの読み出しにも適用できる。例えば、アッパーページに対するデータ読み出し/フェイルビットカウント動作では、読み出し電圧VC1を使用した読み出し動作CR(C Read)、読み出し電圧VG1を使用した読み出し動作GR(G Read)、読み出し電圧VC2を使用した読み出し動作CR(C+ Read)、読み出し電圧VG2を使用した読み出し動作GR(G+ Read)、読み出し電圧VC3を使用した読み出し動作CR(C++ Read)、読み出し電圧VG3を使用した読み出し動作GR(G++ Read)が実行される。
以上説明したように、第2実施形態のオン・チップ・FBC機能は、オン・セル数をNAND型フラッシュメモリ10内のカウンタ23Aによってチップ内で計数し、そしてオン・セル数を示すデジタル値のみをメモリコントローラ200に出力することができる。よって、メモリバス(I/Oバス)11がオン・セルの数の取得のために長い間専有されてしまうことを防止することができる。また、1回のリードコマンドの受信に応答して、ステート毎にオン・セルの数を取得することができる。さらに、あるステートに対応するオン・セル数は、別のステートに対応するデータ読み出し動作のバックグラウンドで効率良く実行することができる。またさらに、ステート毎にデータを複数回リードする動作では、例えば、各ビット線BLおよび選択ワード線WLnの制御をA ReadとA+ Read(またはA++ Read)との間で同じにすることができ、さらに、各ビット線BLおよび選択ワード線WLnの制御をE ReadとE+ Read(またはE++ Read)との間で同じにすることができる。したがって、各読み出し動作において取得されるオン・セルの数には、各ビット線BL/選択ワード線WLnの制御の違いに起因するノイズが含まれない。よって、読み出し電圧(VCGRV)の変化のみに起因するオン・セルの数の差を精度よく取得することが可能となる。
(メモリシステムの他の構成例)
図42は、メモリシステム1の他の構成例を示す。
図42は、メモリシステム1の他の構成例を示す。
図42のメモリシステム1では、メモリパッケージ300が上述の複数のNAND型フラッシュメモリ10として使用される。メモリパッケージ300は、インタフェースチップ106とコアチップ1−8−0〜108−nとを含む。コアチップ1−8−0〜108−nの各々は、NAND型フラッシュメモリ10として機能する。なお、図3で説明したNAND型フラッシュメモリ10の回路構成の一部分は、インタフェースチップ106に設けられていてもよい。
インタフェースチップ106およびコアチップ1−8−0〜108−nは、メモリパッケージ300内に積層されている。メモリパッケージ300は、このパッケージ内において積層されたコアチップ1−8−0〜108−nを垂直に貫通するシリコン貫通電極を使用するTSV(スルー・シリコン・ビア)技術によって、データ入出力の高速化と消費電力の低減を可能にしたメモリパッケージとして実現され得る。コアチップ108−0〜108−15は、多数のシリコン貫通電極(多数の垂直ビア)によって相互接続される。
メモリコントローラ200内のメモリインターフェイス240は、一つ以上のチャンネルを介してメモリパッケージ300に接続される。なお、メモリインターフェイス240は、複数のメモリパッケージ300に接続されてもよい。
一つ以上のチャンネルは上述のメモリバス11として機能する。ここでは、メモリインターフェイス240が2つのチャンネルCH0、CH0を介してメモリパッケージ300に接続される構成が例示されているが、メモリインターフェイス240は、1つのチャンネルのみを介してメモリパッケージ300に接続されてもよいし、3以上のチャンネルを介してメモリパッケージ300に接続されてもよい。
各チャンネルは、上述のチップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、ライトプロテクト信号WPn、レディー/ビジー信号RY/BYn、I/O信号DQ0〜DQ7,DQn0〜DQn7、データストローブ信号DQS、DQSn等を含む。一つのチャンネル当たりのチップイネーブル信号CEnおよびレディー/ビジー信号RY/BYnそれぞれ数は複数であってもよい。
メモリコントローラ200は、インタフェースチップ106を介してコアチップ108−0〜108−15をそれぞれ制御する。これらコアチップ108−0〜108−15の各々は、第1実施形態で説明した各機能、第2実施形態で説明した各機能を実行するように構成されている。
インタフェースチップ106は、メモリコントローラ200から供給されたコマンド、データ、アドレス等をコアチップ108−0〜108−15に送信し、またコアチップ108−0〜108−15から受信したデータ等をメモリコントローラ200へ送信する。インタフェースチップ106とコアチップ108−0〜108−15間の通信は、多数のシリコン貫通電極を介して実行される。
図43は、メモリパッケージ300の構成の一例を示す断面図である。
ここでは、8つのコアチップ108−0〜108−7が積層されている場合が例示されているが、積層されるコアチップの数は8に限らず、2以上の任意の数でよい。
パッケージ基板52の上部にインタフェースチップ106が配置される。パッケージ基板52は、BGA(Ball Grid Array)基板であってもよい。この場合、パッケージ基板52は、外部機器と接続される端子となる多数の半田ボール(半田バンプとも称する)62を備える。インタフェースチップ106は封止樹脂20で封止されている。
コアチップ108−0〜108−7は、インタフェースチップ106の上方において積層される。隣接する2枚のコアチップ108の間にはスペーサ46が配置されている。各コアチップ108は表面配線と裏面配線を有する。各コアチップ108は、その表面配線が形成される面が下側(フェイスダウン)となる向きで積層される。
最も上のコアチップ108−0の上側の面(裏面配線が形成される面)は、接着剤34を介して支持板32に接着されている。
コアチップ108−1〜108−7の半導体基板には多数のシリコン貫通電極(以下、単に貫通電極と称する)42が設けられる。各コアチップ108は、メモリセルが形成されるセル領域と、センスアンプ、デコーダ等が形成される周辺領域を含む。貫通電極42は周辺領域に設けられもよい。
コアチップ108−1〜108−7の貫通電極42は、半田ボール44を介して上側のコアチップ108−0〜108−6の貫通電極42に接続される。これによりコアチップ108−1〜108−7の同じ位置にある貫通電極42は互いに接続され、コアチップ108−0〜108−7が貫通電極42と半田ボール44とにより互いに接続される。
最も下のコアチップ108−7の下側の面(表面配線が形成される面)には再配線層30が設けられる。パッケージ基板52の上側表面には配線層64が設けられる。再配線層30と配線層64との間には半田ボール66が設けられる。インタフェースチップ106の表面上に設けられた多数のパッドは、多数の半田ボール(例えば、半田ボール68−1、68−2、68−3等)を介して再配線層30に接続される。
インタフェースチップ106は、例えば、半田ボール68−1、再配線層30を介してコアチップ108の積層体に接続される。インタフェースチップ106は、例えば、半田ボール68−2、68−3、再配線層30、半田ボール66、配線層64、配線63、半田ボール62を介してメモリコントローラ200に電気的に接続される。コアチップ108の積層体は、再配線層30、半田ボール66、配線層64、配線63、半田ボール62を介してメモリコントローラ200に電気的に接続される。メモリコントローラ200からの電源電圧はインタフェースチップ106を介さず各コアチップ108に直接に供給されてもよい。上記の構造体は封止樹脂20が充填される樹脂パッケージ36内に配置される。樹脂パッケージ36は封止樹脂60と同じ材料で構成してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…不揮発性半導体記憶装置(NAND型フラッシュメモリ)、12…メモリセルアレイ、23…制御回路、BL…ビット線、WL…ワード線、MT…メモリセルトランジスタ。
Claims (10)
- 複数の不揮発性メモリセルを含み、複数のビット線と複数のワード線に接続されたメモリセルアレイと、
外部から受信されるアドレスおよび書き込みデータに応じて前記メモリセルアレイに対するデータ書き込み動作を制御する制御回路を具備し、
前記制御回路は、第1の書き込みモードにおいては、前記書き込みデータに応じて前記複数のビット線内の一つ以上のビット線を充電する動作と、前記アドレスに応じて選択される前記複数のワード線内の選択ワード線に書き込み電圧を印加する動作とを含む第1の書き込み動作し、第2の書き込みモードにおいては、書き込みデータに応じて前記一つ以上のビット線を充電する動作を含む第2の書き込み動作であって、前記選択ワード線に前記書き込み電圧を印加する動作が省略された第2の書き込み動作を実行する不揮発性半導体記憶装置。 - 前記第2の書き込み動作においては、前記一つ以上のビット線を充電する動作と、前記一つ以上のビット線を基準電圧にリセットする動作とが繰り返される請求項1記載の不揮発性半導体記憶装置。
- 前記制御回路は、前記第1の書き込みモードにおいては、前記第1の書き込み動作と、前記選択ワード線に接続されたメモリセル群に書き込まれたデータを検証するベリファイ動作とを実行し、前記第2の書き込みモードにおいては、前記第2の書き込み動作を実行し、前記ベリファイ動作の実行を省略する請求項1記載の不揮発性半導体記憶装置。
- 前記制御回路は、前記第2の書き込みモードにおいては、書き込みデータを自動生成し、前記自動生成された書き込みデータに応じて前記一つ以上のビット線を充電する請求項1記載の不揮発性半導体記憶装置。
- 外部とのデータ入出力を実行する入出力回路と、
データパスを介して前記入出力回路に接続され、書き込みデータまたは読み出しデータを一時的に保持するデータバッファをさらに具備し、
前記制御回路は、前記第2の書き込み動作の実行中に、前記データバッファに第1のデータをロードし、前記データパスを介して前記データバッファから内部レジスタへのデータ転送を実行し、前記データパスを介して前記内部レジスタから前記データバッファへデータを戻し、前記データバッファに戻されたデータと前記第1のデータとを比較することによって得られる結果をステータスレジスタに設定する請求項1記載の不揮発性半導体記憶装置。 - 前記制御回路は、前記第2の書き込み動作の完了後に前記不揮発性半導体記憶装置内の温度を取得し、前記取得した温度を、外部からのコマンドに応じて出力する請求項1記載の不揮発性半導体記憶装置。
- 複数の不揮発性メモリセルを含み、複数のビット線と複数のワード線に接続されたメモリセルアレイと、
前記複数のワード線内の選択ワード線に接続された第1の不揮発性メモリセル群にm(mは2以上の整数)ページのデータを書き込んで前記第1の不揮発性メモリセル群の各不揮発性メモリセルを互いに閾値電圧レベルが異なる2m個の状態のいずれかに設定する制御回路とを具備し、
前記制御回路は、
前記2m個の状態内の第1の状態に対応する第1の読み出し電圧を前記選択ワード線に印加して、前記第1の不揮発性メモリセル群から第1のデータを読み出し、
前記第1の状態よりも閾値電圧レベルの高い第2の状態に対応する第2の読み出し電圧を前記選択ワード線に印加して前記第1の不揮発性メモリセル群から第2のデータを読み出し、
前記第1の状態に対応し且つ前記第1の読み出し電圧よりも高い第3の読み出し電圧を前記選択ワード線に印加して、前記第1の不揮発性メモリセル群から第3のデータを読み出し、
前記第2の状態に対応し且つ前記第2の読み出し電圧よりも高い第4の読み出し電圧を前記選択ワード線に印加して前記第1の不揮発性メモリセル群から第4のデータを読み出し、
前記第1、第2、第3、第4のデータに基づいて、前記選択ワード線に印加される読み出し電圧の値に応じて変化する、オンした不揮発性メモリセルの数を計数するように構成され、
前記第2のデータの読み出し動作から前記第3のデータの読み出し動作への遷移時に、前記選択ワード線および前記複数のビット線は放電され、前記複数のビット線の電圧は基準電圧からプリチャージ電圧に上昇される、不揮発性半導体記憶装置。 - 前記制御回路は、前記第2のデータの読み出し動作の期間中に、前記第1のデータに基づいて、前記第1の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数を計数し、前記第3のデータの読み出し動作の期間中に、前記第2のデータに基づいて、前記第2の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数を計数し、前記第4のデータの読み出し動作の期間中に、前記第3のデータに基づいて、前記第3の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数を計数し、前記選択ワード線および前記複数のビット線をリセットする動作の期間中に、前記第4のデータに基づいて、前記第4の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数を計数する請求項7記載の不揮発性半導体記憶装置。
- 前記制御回路は、前記第4のデータの読み出し動作の期間中に、前記第1のデータおよび前記第3のデータに基づいて、前記第1の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数と前記第3の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数との差分を計数し、前記選択ワード線および前記複数のビット線をリセットする動作の期間中に、前記第2のデータおよび前記第4のデータに基づいて、前記第2の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数と前記第4の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数との差分を計数する請求項7記載の不揮発性半導体記憶装置。
- 前記制御回路は、メモリコントローラからの第1のコマンドに応じて、前記第1、第2、第3、第4のデータを読み出し且つ前記オン・セル数それぞれを計数し、前記メモリコントローラからの第2のコマンドに応じて、前記オン・セル数それぞれを示すデジタル値を前記メモリコントローラに出力する請求項7記載の不揮発性半導体記憶装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017044919A JP2018147543A (ja) | 2017-03-09 | 2017-03-09 | 不揮発性半導体記憶装置 |
US15/881,664 US10504598B2 (en) | 2017-03-09 | 2018-01-26 | Non-volatile semiconductor storage device with two write modes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017044919A JP2018147543A (ja) | 2017-03-09 | 2017-03-09 | 不揮発性半導体記憶装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018147543A true JP2018147543A (ja) | 2018-09-20 |
Family
ID=63445714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017044919A Pending JP2018147543A (ja) | 2017-03-09 | 2017-03-09 | 不揮発性半導体記憶装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10504598B2 (ja) |
JP (1) | JP2018147543A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020102283A (ja) * | 2018-12-20 | 2020-07-02 | キオクシア株式会社 | 半導体記憶装置 |
US20220051730A1 (en) * | 2020-08-14 | 2022-02-17 | Samsung Electronics Co., Ltd. | Storage device performing read operation by restoring on cell count (occ) from power loss protection area of non-volatile memory |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10581841B2 (en) * | 2017-02-13 | 2020-03-03 | Zentel Japan Corporation | Authenticated network |
JP2018152147A (ja) * | 2017-03-10 | 2018-09-27 | 東芝メモリ株式会社 | 半導体記憶装置及び方法 |
JP2019204565A (ja) * | 2018-05-22 | 2019-11-28 | 東芝メモリ株式会社 | 半導体記憶装置及びメモリシステム |
JP7122936B2 (ja) * | 2018-10-29 | 2022-08-22 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
JP2020113351A (ja) * | 2019-01-10 | 2020-07-27 | キオクシア株式会社 | メモリチップ |
JP2020123412A (ja) | 2019-01-30 | 2020-08-13 | キオクシア株式会社 | 半導体記憶装置 |
JP2021152779A (ja) * | 2020-03-24 | 2021-09-30 | キオクシア株式会社 | 半導体記憶装置 |
JP2021174565A (ja) * | 2020-04-24 | 2021-11-01 | キオクシア株式会社 | 半導体記憶装置 |
JP2022036654A (ja) | 2020-08-24 | 2022-03-08 | キオクシア株式会社 | メモリデバイス及びメモリシステム |
JP2022038392A (ja) | 2020-08-26 | 2022-03-10 | キオクシア株式会社 | 半導体記憶装置及び半導体記憶装置におけるコマンド処理方法 |
CN112860194B (zh) * | 2021-03-18 | 2024-01-23 | 群联电子股份有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100253868B1 (ko) * | 1995-11-13 | 2000-05-01 | 니시무로 타이죠 | 불휘발성 반도체기억장치 |
KR100399365B1 (ko) | 2000-12-04 | 2003-09-26 | 삼성전자주식회사 | 페일 비트 검출 스킴을 구비한 불휘발성 반도체 메모리장치 및 그것의 페일 비트 카운트 방법 |
JP2006012367A (ja) | 2004-06-29 | 2006-01-12 | Toshiba Corp | 不揮発性半導体記憶装置 |
KR100645043B1 (ko) | 2004-09-08 | 2006-11-10 | 삼성전자주식회사 | 테스트용 버퍼를 구비한 불휘발성 메모리 장치 및 그것의테스트 방법 |
JP2007035214A (ja) * | 2005-07-29 | 2007-02-08 | Renesas Technology Corp | 不揮発性半導体記憶装置 |
KR101401558B1 (ko) * | 2007-08-20 | 2014-06-09 | 삼성전자주식회사 | 플래시 메모리 장치, 그것의 프로그램 및 소거 방법들,그리고 그것을 포함하는 메모리 시스템 및 컴퓨터 시스템 |
KR100933859B1 (ko) | 2007-11-29 | 2009-12-24 | 주식회사 하이닉스반도체 | 플래시 메모리 소자 및 그것의 프로그램 방법 |
US8108739B2 (en) | 2008-04-28 | 2012-01-31 | International Business Machines Corporation | High-speed testing of integrated devices |
JP2010009642A (ja) | 2008-06-24 | 2010-01-14 | Toshiba Corp | 半導体記憶装置およびそのテスト方法 |
JP2010256130A (ja) | 2009-04-23 | 2010-11-11 | Renesas Electronics Corp | 半導体集積回路、および半導体集積回路のテスト方法 |
KR101809202B1 (ko) * | 2012-01-31 | 2017-12-14 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 읽기 방법 |
JP5801231B2 (ja) | 2012-03-22 | 2015-10-28 | 株式会社東芝 | 伝送システム、復号装置、メモリコントローラおよびメモリシステム |
-
2017
- 2017-03-09 JP JP2017044919A patent/JP2018147543A/ja active Pending
-
2018
- 2018-01-26 US US15/881,664 patent/US10504598B2/en active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020102283A (ja) * | 2018-12-20 | 2020-07-02 | キオクシア株式会社 | 半導体記憶装置 |
JP7214464B2 (ja) | 2018-12-20 | 2023-01-30 | キオクシア株式会社 | 半導体記憶装置 |
US20220051730A1 (en) * | 2020-08-14 | 2022-02-17 | Samsung Electronics Co., Ltd. | Storage device performing read operation by restoring on cell count (occ) from power loss protection area of non-volatile memory |
US11631466B2 (en) * | 2020-08-14 | 2023-04-18 | Samsung Electronics Co., Ltd. | Storage device performing read operation by restoring ON cell count (OCC) from power loss protection area of non-volatile memory |
Also Published As
Publication number | Publication date |
---|---|
US10504598B2 (en) | 2019-12-10 |
US20180261290A1 (en) | 2018-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10504598B2 (en) | Non-volatile semiconductor storage device with two write modes | |
US9627077B2 (en) | Semiconductor memory device storing management data redundantly in different pages | |
EP2332146B1 (en) | Data state-based temperature compensation during sensing in non-volatile memory | |
JP5410507B2 (ja) | プログラム、検証、読み出し用の基準電圧の適応型セッティングを用いた不揮発性マルチレベルメモリ | |
US10971234B2 (en) | Page buffer, a memory device having page buffer, and a method of operating the memory device | |
TWI386942B (zh) | 具有源極偏壓全位元線感測之非揮發儲存及其相關方法 | |
TWI657449B (zh) | 半導體記憶體裝置及其操作方法 | |
CN112037839B (zh) | 半导体存储器装置及其操作方法 | |
US11557356B2 (en) | Semiconductor memory device with erase verification on memory strings in a memory block | |
JP2009026436A (ja) | 集合的特性を用いてメモリの閾電圧分布を測定する方法 | |
KR20120004026A (ko) | 비휘발성 메모리 장치, 상기 메모리 장치의 동작 방법, 및 이를 포함하는 반도체 시스템 | |
US11231874B2 (en) | Memory system and storage system | |
TWI715937B (zh) | 半導體記憶裝置 | |
US9466389B2 (en) | Multiple programming pulse per loop programming and verification method for non-volatile memory devices | |
KR102375751B1 (ko) | 반도체 메모리 장치 및 그 동작 방법 | |
KR20130007932A (ko) | 비휘발성 메모리 장치, 이의 동작 방법, 및 비휘발성 메모리 장치를 포함하는 전자 장치 | |
US20220076754A1 (en) | Memory device and method of operating the same | |
CN110648708A (zh) | 半导体存储器装置、其操作方法以及存储器系统 | |
CN108630274B (zh) | 存储器系统和存储器系统的控制方法 | |
US8848450B2 (en) | Method and apparatus for adjusting maximum verify time in nonvolatile memory device | |
KR20210067677A (ko) | 메모리 장치 및 그 동작 방법 | |
US11776593B2 (en) | Semiconductor device and continuous reading method | |
KR20130008275A (ko) | 반도체 메모리 장치 및 그 동작 방법 | |
US11990188B2 (en) | Semiconductor apparatus and continuous readout method | |
KR20120069109A (ko) | 반도체 메모리 장치 및 이의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170531 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180830 |