JP2021128810A - 半導体記憶媒体及びメモリシステム - Google Patents

半導体記憶媒体及びメモリシステム Download PDF

Info

Publication number
JP2021128810A
JP2021128810A JP2020022377A JP2020022377A JP2021128810A JP 2021128810 A JP2021128810 A JP 2021128810A JP 2020022377 A JP2020022377 A JP 2020022377A JP 2020022377 A JP2020022377 A JP 2020022377A JP 2021128810 A JP2021128810 A JP 2021128810A
Authority
JP
Japan
Prior art keywords
word line
memory
data
write
erasing
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
Application number
JP2020022377A
Other languages
English (en)
Inventor
卓 西川
Taku Nishikawa
卓 西川
健彦 天木
Takehiko Amagi
健彦 天木
慶久 小島
Yoshihisa Kojima
慶久 小島
俊一 井川原
Shunichi Ikawahara
俊一 井川原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2020022377A priority Critical patent/JP2021128810A/ja
Priority to US17/018,147 priority patent/US11342026B2/en
Publication of JP2021128810A publication Critical patent/JP2021128810A/ja
Priority to US17/572,279 priority patent/US11615851B2/en
Priority to US18/089,695 priority patent/US11749350B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5641Multilevel memory having cells with different number of storage levels

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】処理能力を向上する。
【解決手段】実施形態によれば、半導体記憶媒体は、第1メモリセルMCと、第1メモリセルに接続された第1ワード線WLと、消去動作、書き込み動作、及び読み出し動作において、第1ワード線に電圧を印加するロウデコーダ110とを含む。書き込み動作は、消去動作後から次の消去動作を実行するまでの第1期間内に第1メモリセルに対して複数回実行される。書き込み動作は、プログラム動作とベリファイ動作とを繰り返すプログラムループを含む。ロウデコーダは、ベリファイ動作のときに、第1ワード線に、第1期間内に第1メモリセルに対して書き込み動作が実行された回数に応じたベリファイ電圧を印加する。
【選択図】図4

Description

本発明の実施形態は、半導体記憶媒体及びメモリシステムに関する。
メモリシステムとして、NAND型フラッシュメモリなどの不揮発性半導体メモリを搭載したSSD(Solid State Drive)が知られている。
米国特許第9,244,834号明細書 特開2015−56184号公報 米国特許第8,891,300号明細書 米国特許第7,483,301号明細書
処理能力を向上できるメモリシステムを提供する。
実施形態に係る半導体記憶媒体は、第1メモリセルと、第1メモリセルに接続された第1ワード線と、消去動作、書き込み動作、及び読み出し動作において、第1ワード線に電圧を印加するロウデコーダとを含む。書き込み動作は、消去動作後から次の消去動作を実行するまでの第1期間内に第1メモリセルに対して複数回実行される。書き込み動作は、プログラム動作とベリファイ動作とを繰り返すプログラムループを含む。ロウデコーダは、ベリファイ動作のときに、第1ワード線に、第1期間内に第1メモリセルに対して書き込み動作が実行された回数に応じたベリファイ電圧を印加する。
図1は、第1実施形態に係るメモリシステムのブロック図である。 図2は、第1実施形態に係るメモリシステムの備える半導体記憶媒体のブロック図である。 図3は、第1実施形態に係るメモリシステムの備える半導体記憶媒体におけるメモリセルアレイの回路図である。 図4は、第1実施形態に係るメモリシステムにおける1回目〜3回目の書き込みデータに対応する閾値電圧分布を示す図である。 図5は、第1実施形態に係るメモリシステムにおける書き込み動作において“消去後の書き込み回数”テーブルとメモリセルアレイとの関係の一例を示す図である。 図6は、第1実施形態に係るメモリシステムにおける書き込み動作において“消去後の書き込み回数”テーブルとメモリセルアレイとの関係の一例を示す図である。 図7は、第1実施形態に係るメモリシステムにおける書き込み動作において“消去後の書き込み回数”テーブルとメモリセルアレイとの関係の一例を示す図である。 図8は、第1実施形態に係るメモリシステムにおける1回目〜3回目の書き込み動作に対応するパラメータテーブルである。 図9は、第1実施形態に係るメモリシステムにおける1回目〜3回目の書き込み動作に対応するフローチャートである。 図10は、第1実施形態に係るメモリシステムにおけるSet Feature及び書き込み動作のコマンドシーケンスである。 図10は、第1実施形態に係るメモリシステムにおける消去後1回目〜3回目の書き込み動作に対応するプログラム電圧及びベリファイ電圧を示す図である。 図12は、第1実施形態に係るメモリシステムにおける消去後1回目〜3回目の書き込み動作に対応する読み出し動作のフローチャートである。 図13は、第1実施形態に係るメモリシステムにおけるSet Feature及び読み出し動作のコマンドシーケンスである。 図14は、第2実施形態に係るメモリシステムにおける“消去後の書き込み回数”探索動作のフローチャートである。 図15は、第2実施形態に係るメモリシステムにおける“消去後の書き込み回数”探索動作の例図である。 図16は、第3実施形態に係るメモリシステムにおけるWLコンパクション動作の概念図である。 図17は、第3実施形態に係るメモリシステムにおけるブロックの状態遷移図である。 図18は、第3実施形態に係るメモリシステムにおけるワード線の状態遷移図である。 図19は、第3実施形態に係るメモリシステムにおけるBLK/WL管理部を示す図である。 図20は、第3実施形態に係るメモリシステムにおけるインプットブロック及びインプットワード線の選択動作を示すフローチャートである。 図21は、第3実施形態に係るメモリシステムにおけるコンパクションソースブロック及びコンパクションソースワード線の選択動作を示すフローチャートである。 図22は、第3実施形態に係るメモリシステムにおけるコンパクション動作の一例を示す図である。 図23は、第4実施形態に係るメモリシステムの備える半導体記憶媒体におけるメモリセルアレイのブロック図である。 図24は、第4実施形態に係るメモリシステムの備える半導体記憶媒体におけるSLCブロックBLK及びTLCブロックBLKの状態遷移図である。 図25は、第4実施形態に係るメモリシステムの備える半導体記憶媒体におけるSLCブロックBLKへのSLC書き込み動作に対応するクラスタの状態の推移を示す図である。 図26は、第4実施形態に係るメモリシステムの備える半導体記憶媒体におけるSLCブロックBLKへのSLC書き込み動作に対応するクラスタの状態の推移を示す図である。 図27は、第4実施形態に係るメモリシステムにおける書き込み動作のフローチャートである。 図28は、第4実施形態に係るメモリシステムにおける書き込み速度と書き込み量との関係を示すグラフである。 図29は、第5実施形態に係るメモリシステムの備える半導体記憶媒体におけるSLCブロックBLK及びTLCブロックBLKの状態遷移図である。 図30は、第5実施形態に係るメモリシステムにおける書き込み動作のフローチャートである。 図31は、第5実施形態に係るメモリシステムにおける書き込み動作のフローチャートである。 図32は、第6実施形態に係るメモリシステムにおける1回目及び2回目の書き込みデータに対応する閾値電圧分布を示す図である。 図33は、第6実施形態に係るメモリシステムにおける1回目〜3回目の書き込み動作に対応するフローチャートである。
以下に、実施形態について図面を参照して説明する。図面は模式的なものである。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付す。参照符号を構成する文字の後の数字は、同じ文字を含んだ参照符号によって参照され、且つ同様の構成を有する要素同士を区別するために用いられている。同じ文字を含んだ参照符号で示される要素を相互に区別する必要がない場合、これらの要素は同じ文字のみを含んだ参照符号により参照される。
1.第1実施形態
以下に、第1実施形態に係るメモリシステムについて説明する。
1.1 構成
1.1.1 メモリシステムの構成
まず、メモリシステム1の全体構成の一例について、図1を用いて説明する。
メモリシステム1は、記憶装置10を含む。記憶装置10は、例えばSSD(solid state drive)である。記憶装置10は、外部の情報処理装置であるホストデバイス2に接続される。記憶装置10は、複数のメモリチップ100及びコントローラ200を含む。
メモリチップ100は、データを不揮発に記憶することが可能な不揮発性メモリである。複数のメモリチップ100は、互いに独立して動作することができる。なお、メモリシステム1が備えるメモリチップ100の個数は任意であり、1個以上あればよい。以下では、メモリチップ100が、三次元積層型NAND型フラッシュメモリである場合について説明する。
コントローラ200は、ホストデバイス2からの要求(命令)に基づいて、メモリチップ100に対してデータの読み出し動作、書き込み動作、及び消去動作等を命令する。コントローラ200は、例えば、SoC(system on a chip)であってもよい。なお、コントローラ200の各機能は専用回路で実現されてもよいし、プロセッサがファームウェアを実行することにより実現されてもよい。本実施形態では、コントローラ200内に専用回路が設けられている場合について説明する。
コントローラ200は、ホストインターフェース回路210、内蔵メモリ(RAM)220、プロセッサ(CPU;central processing unit)230、バッファメモリ240、NANDインターフェース回路250、及びBLK/WL管理部260を含む。
ホストインターフェース回路210は、ホストデバイス2との通信を司るハードウェアインターフェースである。例えば、ホストインターフェース回路210は、ホストデバイス2から受信した命令及びデータをそれぞれ、CPU230及びバッファメモリ240に転送する。またホストインターフェース回路210は、CPU230の命令に応答して、バッファメモリ240内のデータ等をホストデバイス2に転送する。
RAM220は、例えば、DRAM等の半導体メモリである。RAM220は、メモリチップ100を管理するためのファームウェアや、各種の管理テーブル等を保持する。RAM220は、例えば、後述する“消去後の書き込み回数”テーブルを保持する。また、RAM220は、CPU230の作業領域として使用される。
CPU230は、コントローラ200全体の動作を制御する。より具体的には、CPU230は、ホストインターフェース回路210、RAM220、バッファメモリ240、NANDインターフェース回路250、及びBLK/WL管理部260を制御する。例えば、CPU230は、ホストデバイス2から受信した書き込み命令に応答して書き込みコマンドを発行し、発行した書き込みコマンドをNANDインターフェース回路250に送信する。この動作は、読み出し命令及び消去命令の場合についても同様である。本実施形態のメモリシステム1では、メモリチップ100に、同一メモリセルトランジスタに対するデータの上書き動作を指示することができる。すなわち、CPU230は、消去動作実行後から次の消去動作を実行するまでの期間に、例えば1ビットのデータを保持可能な1つのメモリセルトランジスタに複数回の書き込み動作を実行できる。換言すれば、CPU230は、あるメモリセルトランジスタに対して第1の書き込みデータの書き込み動作を実行した後、同じメモリセルトランジスタMCに対して消去動作を実行せずに第1の書き込みデータとは異なる第2の書き込みデータの書き込み動作を実行できる。以下、消去動作実行後から次の消去動作を実行するまでの期間に、同じメモリセルトランジスタにおいて実行された書き込み動作の回数を「消去後の書き込み回数」と表記する。このため、CPU230は、BLK/WL管理部260から受信した消去後の書き込み回数の情報に基づいて、消去後の書き込み回数に対応した書き込み命令及び読み出し命令をメモリチップ100に送信する。また、CPU230は、ウェアレベリングまたはガベージコレクション等、メモリチップ100のメモリ空間を管理するための様々な処理を実行する。
バッファメモリ240は、コントローラ200がメモリチップ100から受信した読み出しデータや、ホストデバイス2から受信した書き込みデータ(以下、「ホストデータ」とも表記する)等を一時的に保持する半導体メモリである。
NANDインターフェース回路250は、メモリチップ100との通信を司るハードウェアインターフェースである。例えば、NANDインターフェース回路250は、CPU230から受信した命令に基づいて各種制御信号をメモリチップ100に送信する。NANDインターフェース回路250は、メモリチップ100から受信したレディビジー信号RBnをCPU230に送信する。また、NANDインターフェース回路250は、信号DQをメモリチップ100との間で送受信する。レディビジー信号RBnは、コントローラ200に、メモリチップ100がコントローラ200からの命令を受信可能な状態であるか否かを通知する信号である。例えば、レディビジー信号RBnは、メモリチップ100がコントローラ200からの命令を受信可能な状態(レディ状態)にある場合にHigh(“H”)レベルとされ、受信不可能な状態(ビジー状態)にある場合にLow(“L”)レベルとされる。信号DQは、例えば8ビットの信号であり、コマンド、アドレス、及びデータ等を含む。より具体的には、例えば、書き込み動作時において、メモリチップ100に転送される信号DQは、CPU230が発行した書き込みコマンド、アドレス、及びバッファメモリ240内の書き込みデータを含む。アドレスは、ホストデバイス2からアクセス(読み出し動作、書き込み動作、及び消去動作等)を要求されたデータに付される。また、読み出し動作時において、メモリチップ100に転送される信号DQは、CPU230が発行した読み出しコマンド及びアドレスを含み、コントローラ200に転送される信号DQは、読み出しデータを含む。
BLK/WL管理部260は、例えば、消去後の書き込み回数に関する情報を含む“消去後の書き込み回数”テーブルを用いて、メモリチップ100における消去後の書き込み回数(書き込み動作の実行回数)を管理する。
1.1.2 半導体記憶媒体の構成
次に、メモリチップ100の全体構成の一例について、図2を用いて説明する。なお、図2の例では、各ブロックの接続の一部を矢印線により示しているが、各ブロック間の接続はこれに限定されない。
メモリチップ100は、入出力回路101、ロジック制御回路102、ステータスレジスタ103、アドレスレジスタ104、コマンドレジスタ105、シーケンサ106、レディ/ビジー回路107、電圧発生回路108、メモリセルアレイ109、ロウデコーダ110、センスアンプ111、データレジスタ112、及びカラムデコーダ113を含む。
入出力回路101は、コントローラ200との信号DQ(DQ0〜DQ7)の入出力を制御する。信号DQは、例えばデータDAT、アドレスADD、及びコマンドCMDを含む。より具体的には、入出力回路101は、コントローラ200から受信したデータDATをデータレジスタ112に送信し、アドレスADDをアドレスレジスタ104に送信し、コマンドCMDをコマンドレジスタ105に送信する。また、入出力回路101は、ステータスレジスタ103から受信したステータス情報STS、データレジスタ112から受信したデータDAT、及びアドレスレジスタ104から受信したアドレスADD等を、コントローラ200に送信する。
ロジック制御回路102は、コントローラ200から各種制御信号を受信する。そして、ロジック制御回路102は、受信した制御信号に応じて、入出力回路101及びシーケンサ106を制御する。より具体的には、ロジック制御回路102は、コントローラ200から、例えば、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、及びリードイネーブル信号REnを受信する。チップイネーブル信号CEnは、メモリチップ100をイネーブルにするための信号であり、例えばLow(“L”)レベルでアサートされる。コマンドラッチイネーブル信号CLEは、信号DQがコマンドであることを示す信号であり、例えばHigh(“H”)レベルでアサートされる。アドレスラッチイネーブル信号ALEは、信号DQがアドレスであることを示す信号であり、例えば“H”レベルでアサートされる。ライトイネーブル信号WEnは、受信した信号をメモリチップ100内へ取り込むための信号であり、コントローラ200よりコマンド、アドレス、及びデータ等を受信する度に、例えば“L”レベルでアサートされる。よって、ライトイネーブル信号WEnがトグルされる度に、信号DQがメモリチップ100に取り込まれる。リードイネーブル信号REnは、コントローラ200が、メモリチップ100からデータを読み出すための信号である。リードイネーブル信号REnは、例えば“L”レベルでアサートされる。よって、メモリチップ100は、トグルされるリードイネーブル信号REnに基づいて、コントローラ200に信号DQを出力する。
ステータスレジスタ103は、例えば、書き込み動作、読み出し動作、及び消去動作におけるステータス情報STSを一時的に保持し、コントローラ200に動作が正常に終了したか否かを通知する。また、例えば、ステータス情報STSに、メモリチップ100のレディ/ビジー状態を示す情報が含まれていてもよい。
アドレスレジスタ104は、受信したアドレスADDを一時的に保持する。そして、アドレスレジスタ104は、ロウアドレスRAをロウデコーダ110へ転送し、カラムアドレスCAをカラムデコーダ113に転送する。
コマンドレジスタ105は、受信したコマンドCMDを一時的に保存し、シーケンサ106に転送する。
シーケンサ106は、半導体記憶媒体1全体の動作を制御する。より具体的には、シーケンサ106は、受信したコマンドCMDに応じて、例えば、ステータスレジスタ103、レディ/ビジー回路107、電圧発生回路108、ロウデコーダ110、センスアンプ111、データレジスタ112、及びカラムデコーダ113等を制御し、書き込み動作、読み出し動作、及び消去動作等を実行する。
レディ/ビジー回路107は、シーケンサ106の動作状況に応じて、レディビジー信号RBnをコントローラ200に送信する。
電圧発生回路108は、シーケンサ106の制御に応じて、書き込み動作、読み出し動作、及び消去動作に必要な電圧を発生させ、発生した電圧を例えばメモリセルアレイ109、ロウデコーダ110、センスアンプ111、及びカラムデコーダ113等に供給する。
メモリセルアレイ109は、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルトランジスタ(以下、「メモリセル」とも表記する)を含む複数のブロックBLK(BLK0、BLK1、BLK2、…)を備えている。なお、メモリセルアレイ109内のブロックBLKの個数は任意である。以下、ブロックBLK0、BLK1、BLK2、…を限定しない場合は、ブロックBLKまたはBLKi(iは、0以上の整数)と表記する。メモリセルアレイ109の詳細については、後述する。
ロウデコーダ110は、コントローラ200から受信したロウアドレスRAをデコードする。そして、ロウデコーダ110は、デコード結果に基づいてメモリセルアレイ109のロウ方向を選択する。より具体的には、ロウデコーダ110は、ロウ方向を選択するための種々の配線(ワード線及び選択ゲート線)に電圧を与える。
センスアンプ111は、読み出し動作時には、いずれかのブロックBLKから読み出されたデータをセンスする。そして、センスアンプ111は、読み出したデータをデータレジスタ112に送信する。また、センスアンプ111は、書き込み動作時には、書き込みデータに応じた電圧をメモリセルアレイ109に与える。
データレジスタ112は、複数のラッチ回路(不図示)を備える。ラッチ回路は、書き込みデータまたは読み出しデータを一時的に保持する。
カラムデコーダ113は、例えば書き込み動作、読み出し動作、及び消去動作の際、カラムアドレスCAをデコードし、デコード結果に応じてデータレジスタ112内のラッチ回路を選択する。
1.1.3 メモリセルアレイの回路構成
次に、メモリセルアレイ109の回路構成の一例について、図3を用いて説明する。図3の例は、ブロックBLK0を示しているが、他のブロックBLKの構成も同じである。
ブロックBLK0は、例えば、4つのストリングユニットSU0〜SU3を含む。4つのストリングユニットの各々は、複数のNANDストリングNSを含む。
1つのNANDストリングNSは、複数のメモリセルトランジスタMC並びに選択トランジスタST1及びST2を含む。
メモリセルトランジスタMCは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。メモリセルトランジスタMCは、電荷蓄積層に絶縁層を用いたMONOS型であってもよいし、電荷蓄積層に導電層を用いたFG型であってもよい。1つのNANDストリングNSに含まれるメモリセルトランジスタMCの数は、例えば、8個である(MC0〜MC7)。1つのNANDストリングNSに含まれるメモリセルトランジスタMCの数は、8個に限らず、16個や32個、64個、96個、128個等であってもよい。
また、1つのNANDストリングNSに含まれる選択トランジスタST1及びST2は、それぞれ1個以上であればよい。
1つのNANDストリングNS内では、選択トランジスタST2、複数のメモリセルトランジスタMC、選択トランジスタST1の順に、それぞれの電流経路が直列に接続される。
選択トランジスタST2は、ソースを備える。複数のブロックBLK内にある選択トランジスタST2のソースは、ソース線SLに共通に接続される。
メモリセルトランジスタMCは、それぞれ制御ゲートを備える。1つのNANDストリングNSのメモリセルトランジスタMCの制御ゲートは、それぞれ異なる1つのワード線WLに接続される。また、1つのワード線WLは、1つのブロックBLK内にある複数のNANDストリングNSそれぞれが備える1つのメモリセルトランジスタの制御ゲートと接続される。より具体的には、例えば、ブロックBLK内にある複数のNANDストリングNSそれぞれが備える1つのメモリセルトランジスタMC0の制御ゲートは、ワード線WL0に共通に接続される。ワード線WLの数は、例えば、8個である(WL0〜WL7)。
選択トランジスタST1及びST2は、それぞれゲートを備える。1つのストリングユニットSU内にある複数のNANDストリングNSそれぞれが備える選択トランジスタST1のゲートは、1つの選択ゲート線SGDに共通に接続される。より具体的には、ストリングユニットSU0内にある複数のNANDストリングNSそれぞれが備える選択トランジスタST1のゲートは、選択ゲート線SGD0に接続される。また、1つのブロックBLK内にある複数のNANDストリングNSそれぞれが備える選択トランジスタST2のゲートは、1つの選択ゲート線SGSに共通に接続される。あるいは、1つのブロックBLK内にある複数のNANDストリングNSそれぞれが備える選択トランジスタST2のゲートは、ストリングユニットSU毎に異なる、複数の選択ゲート線SGSに接続されてもよい。
選択トランジスタST1は、ドレインを備える。1つのストリングユニットSU内にある複数のNANDストリングNSそれぞれが備える選択トランジスタST1のドレインは、それぞれが異なるビット線BLに接続される。すなわち、1つのストリングユニットSU内にある複数のNANDストリングNSは、それぞれが異なるビット線BLに接続される。また、ビット線BLは、1つのブロックBLK内にあるストリングユニットSUにそれぞれ含まれる1つのNANDストリングNSを共通に接続する。
つまり、ストリングユニットSUは、それぞれが異なるビット線BLに接続され、且つ同一の選択ゲート線SGDに接続されたNANDストリングNSの集合体である。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合体である。そしてメモリセルアレイ109は、ビット線BLを共通にする複数のブロックBLKの集合体である。
1つのストリングユニットSU内で共通のワード線WLに接続された複数のメモリセルトランジスタMCの集合は、「メモリセルグループMG」と表記される。例えば、それぞれが1ビットデータを記憶するメモリセルトランジスタMCを含むメモリセルグループMGの記憶容量が、「1ページ」として定義される。メモリセルグループMGは、メモリセルトランジスタMCが記憶するデータのビット数に応じて、2ページ以上のデータを保持可能である。本実施形態では、メモリセルトランジスタMCが1ビットのデータを保持するSLC(single level cell)として機能する場合について説明する。以下では、SLCへの1ビットデータの書き込み動作をSLC書き込み動作と表記する。
1.2 書き込み動作
次に、書き込み動作について説明する。書き込み動作は、データイン動作と、プログラム動作と、ベリファイ動作とを含む。そして、プログラム動作とプログラムベリファイ動作との組み合わせ(以下、「プログラムループ」と表記する)を繰り返すことで、メモリセルトランジスタMCの閾値電圧がターゲットレベルまで上昇される。
データイン動作は、コントローラ200から受信した書き込みデータをデータレジスタ112に格納する動作である。データイン動作が完了したら、次にプログラム動作が実行される。また、プログラム動作開始後には、データイン動作は実行されない。
プログラム動作は、電子を電荷蓄積層に注入することにより閾値電圧を上昇させる(または注入を禁止することで閾値電圧を維持させる)動作である。
プログラムベリファイ動作は、プログラム動作の後、データを読み出し、メモリセルトランジスタMCの閾値電圧が目標とするターゲットレベルに達したか否かを判定する動作である。
本実施形態では、消去動作実行後から次の消去動作を実行するまでの期間に、1つのメモリセルトランジスタMCに対して複数回のSLC書き込み動作を実行できる。
1.2.1 SLC書き込み動作の閾値電圧分布
次に、SLC書き込み動作の閾値電圧分布の一例について、図4を用いて説明する。図4の例は、1つのメモリセルグループMGに対して消去後に3回のSLC書き込み動作、すなわち、2回の上書き動作を実行する場合を示している。
消去状態におけるメモリセルトランジスタMCの閾値電圧分布を“Er0”ステートと表記する。例えば、消去状態では、“Er0”ステートに“1”データが割り付けられる。
消去後1回目のSLC書き込み動作では、書き込み対象のメモリセルトランジスタMCの閾値電圧が“Er0”ステートから“A1”ステートに上昇するように、消去後1回目のSLC書き込み動作におけるデータイン動作でデータレジスタ112に格納されたデータが書き込まれる。例えば、“Er0”ステートに“1”データが割り付けられ、“A1”ステートに“0”データが割り付けられる。消去後1回目のSLC書き込み動作に対応する読み出し電圧をVR1とし、ベリファイ電圧をVV1とすると、VR1とVV1とは、VR1≦VV1<Vreadの関係にある。読み出し電圧VR1は、読み出し動作において、対象となるワード線WL(以下、「選択ワード線WL」と表記する)に印加される電圧である。ベリファイ電圧は、プログラムベリファイ動作において、選択ワード線WLに印加される電圧である。電圧Vreadは、読み出し動作において、対象ではないワード線WL(以下、「非選択ワード線WL」と表記する)に印加される電圧である。メモリセルトランジスタMCは、ゲートに電圧Vreadが印加されると保持するデータに依らずにオン状態になる。“Er0”ステートのメモリセルトランジスタMCの閾値電圧は、電圧VR1未満である。“A1”ステートのメモリセルトランジスタMCの閾値電圧は、電圧VV1以上且つ電圧Vread未満である。
消去後2回目のSLC書き込み動作では、書き込み対象のメモリセルトランジスタMCの閾値電圧が“Er0”ステートまたは“A1”ステートから“A2”ステートに上昇するように、消去後2回目のSLC書き込み動作におけるデータイン動作でデータレジスタ112に格納されたデータが書き込まれる。消去後2回目の書き込み動作の後は、“A1”ステートも消去状態として扱われるため、“Er1”ステートと表記する。例えば、“Er0”ステート及び“Er1”ステートに“1”データが割り付けられ、“A2”ステートに“0”データが割り付けられる。消去後2回目のSLC書き込み動作に対応する読み出し電圧をVR2とし、ベリファイ電圧をVV2とすると、VR2とVV2とは、VR1≦VV1<VR2≦VV2<Vreadの関係にある。“Er0”ステート及び“Er1”ステートのメモリセルトランジスタMCの閾値電圧は、電圧VR2未満である。“A2”ステートのメモリセルトランジスタMCの閾値電圧は、電圧VV2以上且つ電圧Vread未満である。
消去後3回目のSLC書き込み動作では、書き込み対象のメモリセルトランジスタMCの閾値電圧が“Er0”ステート、“Er1”ステート、または“A2”ステートから“A3”ステートに上昇するように、消去後3回目のSLC書き込み動作におけるデータイン動作でデータレジスタ112に格納されたデータが書き込まれる。消去後3回目の書き込み動作のあとは、“A2”ステートも消去状態として扱われるため、“Er2”ステートと表記する。例えば、“Er0”ステート、“Er1”ステート、及び“Er2”ステートに“1”データが割り付けられ、“A3”ステートに“0”データが割り付けられる。消去後3回目のSLC書き込み動作に対応する読み出し電圧をVR3とし、ベリファイ電圧をVV3とすると、VR3とVV3とは、VR1≦VV1<VR2≦VV2<VR3≦VV3<Vreadの関係にある。“Er0”ステート、“Er1”ステート、及び“Er2”ステートのメモリセルトランジスタMCの閾値電圧は、電圧VR3未満である。“A3”ステートのメモリセルトランジスタMCの閾値電圧は、電圧VV3以上且つ電圧Vread未満である。
本実施形態では、消去動作後から次の消去動作の期間までに、3回のSLC書き込み動作が実行される。このため、消去後に3回目のSLC書き込み動作が実行されたメモリセルグループMGは、データが消去されるまで、次のSLC書き込み動作には、使用できない。
図4の例では、消去後3回目のSLC書き込み動作が終了すると、データが消去される。なお、書き込みの回数は、3回に限定されない。消去後の書き込み回数は、”0”データの閾値電圧分布とVreadとの間のバジェットに応じて、任意に設定可能である。
本実施形態では、消去後のSLC書き込み動作の回数に応じて、“1”データと“0”データの閾値電圧分布が異なるため、消去後の書き込み回数に応じた読み出し電圧及びベリファイ電圧の設定が必要となる。すなわち、消去後の書き込み回数に応じて、SLC書き込み動作と読み出し動作の条件が異なる。
1.2.2 “消去後の書き込み回数”テーブル
次に、“消去後の書き込み回数”テーブルの一例について、図5〜図7を用いて説明する。図5〜図7の例は、ブロックBLK1へのSLC書き込み動作に対応する“消去後の書き込み回数”テーブル及びメモリセルアレイ109の状態の推移を示している。他のブロックBLKの場合も同様である。なお、以下の説明では、説明を簡略化するため、1つのブロックBLKに1つのストリングユニットSUが含まれている場合、すなわち、1つのワード線WLが1つのページ(メモリセルグループMG)に対応する場合について説明する。また、本実施形態では、SLC書き込み動作は、各ブロックBLKにおいて、ワード線WL0〜WL7の順に実行される(以下、「順次書き込み動作」とも表記する)。
本実施形態の“消去後の書き込み回数”テーブルには、例えば、ブロックBLK毎に、消去後の書き込み回数と、SLC書き込み動作が実行されたページに対応するワード線WLの位置(以下、「書き込みWLポインタ」と表記する)とが記録される。
まず、ブロック単位の消去(以下、「ブロック消去」とも表記する)が実行され、ブロックBLK1が消去状態にある場合(図5の(a))、BLK/WL管理部260は、“消去後の書き込み回数”テーブルにおけるブロックBLK1の消去後の書き込み回数を“0”とし、書き込みWLポインタを“NULL”状態(すなわち、対象となるワード線WLが無い状態)とする。
次に、例えば、ブロックBLK1のワード線WL0に対応するページに消去後1回目のSLC書き込み動作が実行された場合(図5の(b))、BLK/WL管理部260は、“消去後の書き込み回数”テーブルにおけるブロックBLK1の消去後の書き込み回数を“1”とする。また、BLK/WL管理部260は、ワード線WL0に対応して書き込みWLポインタを“0”に更新する。なお、図5の(b)の例では、ワード線WL0に対応するページのデータは有効であるが、“消去後の書き込み回数”テーブルは、データの状態(すなわち有効か無効か)に依存しない。
メモリシステム1は、ホストデバイス2から受信した論理アドレスとメモリチップ100のメモリ領域に対応する物理アドレスとを関連付けるアドレス変換テーブルを有する。有効データは、対応する物理アドレスがいずれかの論理アドレスに紐付けられているデータである。これに対し、無効データは、対応する物理アドレスが論理アドレスに紐付けられていないデータである。
同様に、例えば、ブロックBLK1のワード線WL7に対応するページに消去後1回目のSLC書き込み動作が実行されると(図5の(c))、BLK/WL管理部260は、“消去後の書き込み回数”テーブルにおけるブロックBLK1の消去後の書き込み回数を“1”のまま維持し、書き込みWLポインタを“7”に更新する。なお、図5の(c)の例では、ワード線WL0〜WL7に対応するページのデータは有効である。
例えば、ブロックBLK1のワード線WL0〜WL7に対応するページのデータが無効となっても(図6の(d))、BLK/WL管理部260は、“消去後の書き込み回数”テーブルのデータを変更しない。なお、図6の(d)の例は、ブロック単位でデータが無効となった場合を示しているが、これに限定されない。ワード線WL0〜WL7の少なくとも1つに対応するページのデータが無効であれば、当該ワード線WLに対応するページに上書き動作を実行してもよい。
次に、例えば、ブロックBLK1のワード線WL1に対応するページに消去後2回目のSLC書き込み動作、すなわち、1回目の上書き動作が実行された場合(図6の(e))、BLK/WL管理部260は、“消去後の書き込み回数”テーブルにおけるブロックBLK1の消去後の書き込み回数を“2”とする。そして、ワード線WL0に対応するページに消去後2回目の書き込み動作が実行されたため、BLK/WL管理部260は、書き込みWLポインタを“0”とする。なお、図6の(e)の例では、ワード線WL0に対応するページのデータは有効である。
次に、例えば、ブロックBLK1のワード線WL7に対応するページまで消去後2回目のSLC書き込み動作、すなわち、1回目の上書き動作が実行されると(図6の(f))、BLK/WL管理部260は、“消去後の書き込み回数”テーブルにおけるブロックBLK1の消去後の書き込み回数を“2”のまま維持する。そして、ワード線WL7に対応するページまで消去後2回目の書き込み動作が実行されたため、BLK/WL管理部260は、書き込みWLポインタを“7”とする。なお、図6の(f)の例では、ワード線WL0〜WL7に対応するページのデータは有効である。
次に、ブロックBLK1のワード線WL0〜WL7に対応するページのデータが無効となり、ワード線WL0〜WL7に対応するページに対して消去後3回目のSLC書き込み動作、すなわち、2回目の上書き動作が実行された場合(図7の(g))、BLK/WL管理部260は、“消去後の書き込み回数”テーブルにおけるブロックBLK1の消去後の書き込み回数を“3”とする。そして、ワード線WL7に対応するページまで上書き動作が実行されたため、BLK/WL管理部260は、書き込みWLポインタを“7”とする。なお、図7の(g)の例では、ワード線WL0〜WL7に対応するページのデータは有効である。
次に、ブロックBLK1に対応するページのデータが無効となっても(図7の(h))、BLK/WL管理部260は、“消去後の書き込み回数”テーブルのデータを変更しない。
次に、ブロックBLK1のデータが消去された場合(図7の(i))、図5の(a)と同様に、BLK/WL管理部260は、“消去後の書き込み回数”テーブルにおけるブロックBLK1の消去後の書き込み回数を“0”とし、書き込みWLポインタを“NULL”状態とする。
1.2.3 パラメータテーブル
次に、データの消去後の書き込み回数に依存したパラメータテーブルの一例について、図8を用いて説明する。図8の例は、消去後の書き込み回数に依存するパラメータとして、前述の読み出し電圧及びベリファイ電圧の他に、初期値のプログラム電圧(initial VPGM)及びステップアップ電圧(DVPGM)を含む。初期値のプログラム電圧(書き込み電圧)は、プログラムループの1回目、すなわち、最初のプログラム動作において、選択ワード線WLに印加される電圧である。プログラム電圧は、プログラムループを繰り返す毎に、ステップアップされる。そのときのプログラム電圧の上昇幅がステップアップ電圧である。
消去後の書き込み回数が1回の場合、読み出し電圧VR1、ベリファイ電圧VV1、初期値のプログラム電圧VP1、及びステップアップ電圧VDP1が設定される。消去後の書き込み回数が2回の場合、読み出し電圧VR2、ベリファイ電圧VV2、初期値のプログラム電圧VP2、及びステップアップ電圧VDP2が設定される。消去後の書き込み回数が3回の場合、読み出し電圧VR3、ベリファイ電圧VV3、初期値のプログラム電圧VP3、及びステップアップ電圧VDP3が設定される。例えば、電圧VP1、VP2、及びVP3は、VP1<VP2<VP3の関係にある。すなわち、初期値のプログラム電圧は、読み出し電圧及びベリファイ電圧と同様に、消去後の書き込み回数が増加すると、高く設定されてもよい。なお、電圧VDP1、VDP2、及びVDP3は、同じであってもよく、異なっていてもよい。
例えば、これらのパラメータは、メモリチップ100に保存されており、コントローラ200が使用するパラメータを指定してもよい。また、例えば、コントローラ200は、これらのパラメータをファームウェアの形で保持し、メモリチップ100にパラメータ値を送信してもよい。パラメータを設定する場合、例えば、コントローラ200からメモリチップ100に専用コマンドが送信される。以下、パラメータの設定動作を「Set Feature」と表記する。
なお、パラメータテーブルは、コントローラ200内に設けられてもよい。
1.2.4 書き込み動作の全体の流れ
次に、書き込み動作の全体の流れについて、図9を用いて説明する。図9は、書き込み動作のフローチャートである。以下では、各動作に対応するコマンドの組み合わせを「コマンドセット」と表記する。
ホストデバイス2がメモリシステム1に書き込み要求(書き込みデータ含む)を送信する(S10)。
ホストデバイス2から書き込み要求を受信すると、BLK/WL管理部260は、“消去後の書き込み回数”テーブルを確認し(S11)、書き込み対象となるメモリチップ100のメモリアドレス(ブロックBLK及びワード線WL)を選択する。
選択ワード線WLが消去後1回目のSLC書き込み動作の対象である場合(S12_Yes)、CPU230は、消去後1回目のSLC書き込み動作用のパラメータの使用を指定するSet Featureのコマンドセット及びSLC書き込み動作のコマンドセットを発行し、これらを対象のメモリチップ100に送信する(S13)。
シーケンサ106は、消去後1回目のSLC書き込み動作用のパラメータの使用を指定するSet Featureのコマンドセット及びSLC書き込み動作のコマンドセットを受信すると、消去後1回目のSLC書き込み動作を実行する(S14)。
選択ワード線WLが消去後1回目のSLC書き込み動作の対象ではなく(S12_No)、消去後2回目のSLC書き込み動作(すなわち、1回目の上書き動作)の対象である場合(S15_Yes)、CPU230は、消去後2回目のSLC書き込み動作用のパラメータの使用を指定するSet Featureのコマンドセット及びSLC書き込み動作のコマンドセットを発行し、これらを対象のメモリチップ100に送信する(S16)。
シーケンサ106は、消去後2回目のSLC書き込み動作用のパラメータの使用を指定するSet Featureのコマンドセット及びSLC書き込み動作のコマンドセットを受信すると、消去後2回目のSLC書き込み動作を実行する(S17)。
選択ワード線WLが消去後2回目のSLC書き込み動作の対象ではない場合(S15_No)、すなわち、選択ワード線WLが消去後3回目のSLC書き込み動作の対象である場合、CPU230は、消去後3回目のSLC書き込み動作用のパラメータの使用を指定するSet Featureのコマンドセット及びSLC書き込み動作のコマンドセットを発行し、これらを対象のメモリチップ100に送信する(S18)。
シーケンサ106は、消去後3回目のSLC書き込み動作用のパラメータの使用を指定するSet Featureのコマンドセット及びSLC書き込み動作のコマンドセットを受信すると、消去後3回目のSLC書き込み動作を実行する(S19)。
1.2.5 Set Featureのコマンドセット及び書き込み動作のコマンドセット
次に、Set Featureのコマンドセット及び書き込み動作のコマンドセットの一例について、図10を用いて説明する。図10は、Set Featureのコマンドシーケンス及び書き込み動作のコマンドシーケンスを示す。図10の例では、説明を簡略するため、信号CEn、CLE、ALE、WEn、及び信号REnは省略されている。そして、信号DQ及びレディビジー信号RBnが示されている。なお、メモリチップ100に入力されたコマンドCMDはコマンドレジスタ105に格納され、アドレスADDはアドレスレジスタ104に格納され、データDATはデータレジスタ112に格納される。
まず、CPU230は、メモリチップ100において書き込み動作に関するパラメータを設定するために、メモリチップ100にSet Featureのコマンドセットを送信する。より具体的には、まず、CPU230は、コマンド“EFh”を発行して、メモリチップ100に送信する。コマンド“EFh”は、Set Feature認識用のコマンドである。
次に、CPU230は、コマンド“XXh”を発行して、メモリチップ100に送信する。コマンド“XXh”は、書き込み動作に関するパラメータの設定を示すコマンドである。
次に、CPU230は、データ“W−B0”、“W−B1”、“W−B2”、及び“W−B3”をメモリチップ100に送信する。“W−B0”、“W−B1”、“W−B2”、及び“W−B3”は、設定するパラメータ情報を示す。このとき、CPU230は、メモリチップ100に、消去後の書き込み回数に応じたパラメータ情報(データ)を送信する。
シーケンサ106は、Set Featureのコマンドセットを受信すると、レディビジー信号RBnを“L”レベルにして、パラメータの設定を実行する。シーケンサ106は、パラメータの設定が終了すると、レディビジー信号RBnを“H”レベルにする。
CPU230は、“H”レベルのレディビジー信号RBnを受信すると、書き込み動作のコマンドセットを送信する。
より具体的には、まず、CPU230は、コマンド“80h”を発行し、メモリチップ100に送信する。コマンド“80h”は、書き込み動作を通知するコマンドである。
次に、CPU230は、例えば、5サイクルのアドレス(2サイクルのカラムアドレス“C1”及び“C2”並びに3サイクルのロウアドレス“R1”、“R2”、及び“R3”)と書き込みデータ“W−data”とを続けてメモリチップ100に送信する。なお、アドレスのサイクル数は任意である。
次に、CPU230は、コマンド“10h”を発行し、メモリチップ100に送信する。コマンド“10h”は、書き込み動作の実行を指示するコマンドである。
コマンド“10h”がコマンドレジスタ105に格納されると、シーケンサ106は、レディビジー信号RBnを“L”レベルにして、データレジスタ112に保持されたデータ“W−data”をセンスアンプ111に転送させる。シーケンサ106は、Set Featureによるパラメータ設定とセンスアンプ111に格納されたデータ“W−data”に基づいてSLC書き込み動作を実行する。
シーケンサ106は、SLC書き込み動作が終了すると、レディビジー信号RBnを“H”レベルにする。
CPU230は、“H”レベルのレディビジー信号RBnを受信すると、コマンド“70h”を送信する。コマンド“70h”は、書き込み動作に関するステータス情報STSの送信を指示するコマンドである。
シーケンサ106は、コマンド“70h”に基づいて、SLC書き込み動作が正常に終了したか否かを示す情報“SR[0]”をコントローラ200に送信する。
なお、本実施形態では、消去後の書き込み回数によらず同じ書き込み動作のコマンドセットを送信する場合について説明したが、これに限定されない。例えば、CPU230は、メモリチップ100に、消去後の書き込み回数に応じた異なる書き込み動作のコマンドセットを送信してもよい。より具体的には、CPU230は、例えば、コマンド“80h”の前に、消去後の書き込み回数に応じた異なるプレフィックスコマンドを付与してもよい。
1.2.6 SLC書き込み動作における選択ワード線の電圧
次に、SLC書き込み動作における選択ワード線WLの電圧の一例について、図11を用いて説明する。図11は、消去後1回目〜3回目のSLC書き込み動作における選択ワード線WLの電圧を示すタイミングチャートである。図11の例では、説明を簡略化するため、消去後1回目〜3回目のSLC書き込み動作の各々について、1回目〜4回目のプログラムループを示している。
まず、消去後1回目のSLC書き込み動作について説明する。
1回目のプログラムループにおいて、ロウデコーダ110は、プログラム動作(PG)のときに、選択ワード線WLにプログラム電圧VP1を印加する。また、ロウデコーダ110は、プログラムベリファイ動作(PV)のときに、選択ワード線WLにベリファイ電圧VV1を印加する。なお、ロウデコーダ110は、2回目〜4回目のプログラムループにおけるプログラムベリファイ動作でも、選択ワード線WLにベリファイ電圧VV1を印加する。
2回目のプログラムループのプログラム動作において、ロウデコーダ110は、選択ワード線WLに電圧VP1をステップアップ電圧VDP1だけステップアップさせたプログラム電圧(VP1+VDP1)を印加する。
3回目のプログラムループのプログラム動作において、ロウデコーダ110は、選択ワード線WLに電圧(VP1+VDP1)をステップアップ電圧VDP1だけステップアップさせたプログラム電圧(VP1+2×VDP1)を印加する。
4回目のプログラムループのプログラム動作において、ロウデコーダ110は、選択ワード線WLに電圧(VP1+2×VDP1)をステップアップ電圧VDP1だけステップアップさせたプログラム電圧(VP1+3×VDP1)を印加する。
次に、消去後2回目のSLC書き込み動作(1回目の上書き動作)について説明する。
1回目のプログラムループにおいて、ロウデコーダ110は、プログラム動作のときに、選択ワード線WLにプログラム電圧VP2を印加する。また、ロウデコーダ110は、プログラムベリファイ動作のときに、選択ワード線WLにベリファイ電圧VV2を印加する。なお、ロウデコーダ110は、2回目〜4回目のプログラムループにおけるプログラムベリファイ動作でも、選択ワード線WLにベリファイ電圧VV2を印加する。
2回目のプログラムループのプログラム動作において、ロウデコーダ110は、選択ワード線WLに電圧VP2をステップアップ電圧VDP2だけステップアップさせたプログラム電圧(VP2+VDP2)を印加する。
3回目のプログラムループのプログラム動作において、ロウデコーダ110は、選択ワード線WLに電圧(VP2+VDP2)をステップアップ電圧VDP2だけステップアップさせたプログラム電圧(VP2+2×VDP2)を印加する。
4回目のプログラムループのプログラム動作において、ロウデコーダ110は、選択ワード線WLに電圧(VP2+2×VDP2)をステップアップ電圧VDP2だけステップアップさせたプログラム電圧(VP2+3×VDP2)を印加する。
次に、消去後3回目のSLC書き込み動作(2回目の上書き動作)について説明する。
1回目のプログラムループにおいて、ロウデコーダ110は、プログラム動作のときに、選択ワード線WLにプログラム電圧VP3を印加する。また、ロウデコーダ110は、プログラムベリファイ動作のときに、選択ワード線WLにベリファイ電圧VV3を印加する。なお、ロウデコーダ110は、2回目〜4回目のプログラムループにおけるプログラムベリファイ動作でも、選択ワード線WLにベリファイ電圧VV3を印加する。
2回目のプログラムループのプログラム動作において、ロウデコーダ110は、プログラム動作のときに、選択ワード線WLに電圧VP3をステップアップ電圧VDP3だけステップアップさせたプログラム電圧(VP3+VDP3)を印加する。
3回目のプログラムループのプログラム動作において、ロウデコーダ110は、選択ワード線WLに電圧(VP3+VDP3)をステップアップ電圧VDP3だけステップアップさせたプログラム電圧(VP3+2×VDP3)を印加する。
4回目のプログラムループのプログラム動作において、ロウデコーダ110は、選択ワード線WLに電圧(VP3+2×VDP3)をステップアップ電圧VDP3だけステップアップさせたプログラム電圧(VP3+3×VDP3)を印加する。
1.3 読み出し動作
次に、読み出し動作について説明する。
1.3.1 読み出し動作の全体の流れ
次に、読み出し動作の全体の流れについて、図12を用いて説明する。図12は、読み出し動作のフローチャートである。
ホストデバイス2は、メモリシステム1に読み出し要求を送信する(S20)。
ホストデバイス2から読み出し要求を受信すると、BLK/WL管理部260は、“消去後の書き込み回数”テーブルを参照して、該当アドレスの消去後の書き込み回数を確認する(S21)。
消去後の書き込み回数が1回の場合(S22_Yes)、CPU230は、消去後1回目の書き込み動作に対応する読み出し動作のパラメータを指定するSet Featureのコマンドセット及び読み出し動作のコマンドセットを発行し、これらを対象のメモリチップ100に送信する(S23)。
シーケンサ106は、消去後1回目の書き込み動作に対応する読み出し動作用のパラメータを指定するSet Featureのコマンドセット及び読み出し動作のコマンドセットを受信すると、消去後1回目の書き込み動作に対応する読み出し動作を実行する(S24)。
消去後の書き込み回数が2回(上書き回数が1回)の場合、(S22_No且つS25_Yes)、CPU230は、消去後2回目の書き込み動作に対応する読み出し動作用のパラメータを指定するSet Featureのコマンドセット及び読み出し動作のコマンドセットを発行し、これらを対象のメモリチップ100に送信する(S26)。
シーケンサ106は、消去後2回目の書き込み動作に対応する読み出し動作用のパラメータを指定するSet Featureのコマンドセット及び読み出し動作のコマンドセットを受信すると、消去後2回目の書き込み動作に対応する読み出し動作を実行する(S27)。
消去後の書き込み回数が3回(上書き回数が3回)の場合、(S25_No)、CPU230は、消去後3回目の書き込み動作に対応する読み出し動作用のパラメータを指定するSet Featureのコマンドセット及び読み出し動作のコマンドセットを発行し、これらを対象のメモリチップ100に送信する(S28)。
シーケンサ106は、消去後3回目の書き込み動作に対応する読み出し動作用のパラメータを指定するSet Featureのコマンドセット及び読み出し動作のコマンドセットを受信すると、消去後3回目の書き込み動作に対応する読み出し動作を実行する(S29)。
シーケンサ106は、読み出し動作が終了すると、読み出しデータをコントローラ200に送信する。
CPU230は、例えば、メモリチップ100から受信した読み出しデータのECC(error checking and correcting)処理等を行った後、読み出し要求に対する読み出し応答として、ホストデバイス2にエラー訂正された読み出しデータを送信する(S30)。
ホストデバイス2は、データを取得し(S31)、読み出し動作が終了する。
1.3.2. 読み出し動作のコマンドセット
次に、読み出し動作のコマンドセットの一例について、図13を用いて説明する。図13は、Set Feature及び読み出し動作のコマンドシーケンスを示す。図13の例では、説明を簡略するため、信号CEn、CLE、ALE、WEn、及び信号REnは省略されている。そして、信号DQ及びレディビジー信号RBnが示されている。
Set Featureのコマンドセットは、図10と同じである。
CPU230は、Set Featureのコマンドセット送信後、“H”レベルのレディビジー信号RBnを受信すると、読み出し動作のコマンドセットを送信する。
より具体的には、まず、CPU230は、コマンド“00h”を発行し、メモリチップ100に送信する。コマンド“00h”は、読み出し動作を通知するコマンドである。
次に、CPU230は、例えば、5サイクルのアドレス(2サイクルのカラムアドレス“C1”及び“C2”並びに3サイクルのロウアドレス“R1”、“R2”、及び“R3”)をメモリチップ100に送信する。
次に、CPU230は、コマンド“30h”を発行し、メモリチップ100に送信する。コマンド“30h”は、読み出し動作の実行を指示するコマンドである。
コマンド“30h”がコマンドレジスタ105に格納されると、シーケンサ106は、レディビジー信号RBnを“L”レベルにする。シーケンサ106は、Set Featureによるパラメータ設定に基づいて読み出し動作を実行する。シーケンサ106は、読み出しデータが例えばデータレジスタ112に格納されると、レディビジー信号RBnを“H”レベルにする。
CPU230は、“H”レベルのレディビジー信号RBnを受信すると、メモリチップ100から読み出しデータ“R−data”を読み出す。
1.4 本実施形態に係る効果
本実施形態に係る構成であれば、SLC書き込み動作に対応する1つのメモリセルトランジスタMCに対して、消去動作後から次の消去動作の期間までに複数回のSLC書き込み動作を実行できる。すなわち、データの上書き動作ができる。このため、1回の書き込み/消去サイクルにおいて、書き込み可能なデータ量が増加する。換言すれば、同じデータ量を書き込む場合に、データの消去回数を低減できる。よって、書き込み/消去サイクルの繰り返しによるメモリチップ100の信頼性の低下を抑制できるため、メモリシステムの信頼性を向上できる。
なお、本実施形態では、コントローラ200が消去後の書き込み回数を管理する場合について説明したが、例えば、書き込みデータの書き込み先のページに含まれる冗長領域に消去後の書き込み回数に関する情報を含ませてもよい。例えば、シーケンサ106は、冗長領域から消去後の書き込み回数に関する情報を読み出し、読み出した情報に基づいて消去後の書き込み回数に応じた書き込み動作用のパラメータ及び読み出し動作用のパラメータを設定できる。この場合、CPU230は、書き込み動作及び読み出し動作用のパラメータを設定するSet Featureのコマンドセットを送信しなくてもよい。例えば、CPU230は、メモリチップ100から読み出したデータまたはステータス情報STS等から消去後の書き込み回数に関する情報を読み出し、各ブロックBLKにおける消去後の書き込み回数を確認してもよい。
2.第2実施形態
次に、第2実施形態について説明する。第2実施形態では、“消去後の書き込み回数”テーブルのデータが消失した場合に、メモリチップ100から消去後の書き込み回数に関する情報を読み出し、“消去後の書き込み回数”テーブルのデータを復元する方法(以下、「“消去後の書き込み回数”探索動作」と表記する)について説明する。以下、第1実施形態と異なる点を中心に説明する。
例えば、不正に電源が遮断されると、RAM220に格納されている“消去後の書き込み回数”テーブルのデータが消失する可能性がある。このような場合、電源起動時に、各メモリチップ100から消去後の書き込み回数に関する情報を読み出し、“消去後の書き込み回数”テーブルを更新する必要がある。
2.1 “消去後の書き込み回数”探索動作の全体の流れ
まず、“消去後の書き込み回数”探索動作の全体の流れについて、図14を用いて説明する。図14は、“消去後の書き込み回数”探索動作のフローチャートである。以下の説明では、説明を簡便にするためにブロックBLKの番号に変数i(0≦i≦3)を用い、ワード線WLの番号に変数j(0≦j≦7)を用いる。また、消去後の書き込み回数、すなわち、読み出し電圧VRの番号に変数k(1≦k≦3)を用いる。変数i、j、及びkは、例えば、コントローラ200が備えるカウンタによって保持される変数であり、コントローラ200の制御によってインクリメントされる。なお、以下の例では、CPU230が消去後の書き込み回数の判定をする場合について説明するが、BLK/WL管理部260またはシーケンサ106が消去後の書き込み回数の判定を行ってもよい。
例えば、電源起動後、BLK/WL管理部260は、“消去後の書き込み回数”テーブルのデータを確認する。
BLK/WL管理部260から、“消去後の書き込み回数”テーブルのデータが無いことを示す報告(信号)を受信すると(Start)、CPU230は、変数i及び変数jの初期値として、i=j=0を設定する(S40)。すなわち、CPU230は、ブロックBLK0のワード線WL0を選択する。
次に、CPU230は、消去後1回目の書き込み動作に対応する読み出し動作を実行するために、変数kの初期値として、k=1を設定する(S41)。すなわち、CPU230は、読み出し電圧VR1を選択する。
CPU230は、ブロックBLKiのワード線WLjにおける消去後k回目の書き込み動作に対応する読み出し動作を実行するため、Set Featureのコマンドセット及び読み出し動作のコマンドセットをメモリチップ100に送信する。メモリチップ100は、ブロックBLKiのワード線WLjにおける消去後k回目の書き込み動作に対応する読み出し動作を実行する(S42)。
読み出したデータに“0”データが含まれている場合(S43_Yes)、CPU230は、変数kが予め設定された上限回数(例えば、k=3)に達しているか確認をする(S44)。すなわち、CPU230は、消去後の書き込み回数が予め設定された上限回数に達しているか確認をする。
変数kが上限回数に達していない場合(S44_No)、CPU230は、変数kをインクリメントし、k=k+1に設定する(S45)。その後、CPU230は、S42に戻る。
他方で、変数kが上限回数に達している場合、(S44_Yes)、CPU230は、変数kの設定を維持し、S49に進む。すなわち、CPU230は、ワード線WLj(j=0)における消去後の書き込み回数はk回であると判定し、読み出し電圧をVRkに設定する。
読み出したデータに“0”データが含まれていない場合(S43_No)、CPU230は、変数kがk=1であるか確認する(S46)。
k=1である場合(S46_Yes)、すなわち、消去後1回目の書き込み動作に対応する読み出し動作を実行した結果、読み出したデータに“0”が含まれていない場合、CPU230は、当該ブロックBLKiには、データが書き込まれていないと判定する。そして、CPU230は、“消去後の書き込み回数”テーブルのブロックBLKiにおける書き込みWLポインタとして“NULL”を設定し(S47)、S56に進む。
k=1ではない場合(S46_No)、CPU230は、変数kをk=k−1に設定する(S48)。より具体的には、例えば、消去後k回目の書き込み動作に対応する読み出し動作において、読み出したデータに“0”データが含まれていない場合、CPU230は、ワード線WLj(j=0)における消去後の書き込み回数は(k−1)回であると判定し、読み出し電圧をVR(k−1)に設定する。
S44_Yesの後、またはS48において変数kを設定した後、CPU230は、変数jをj=j+1に設定する(S49)。
次に、S42と同様に、CPU230は、ブロックBLKiのワード線WLjにおける消去後k回目の書き込み動作に対応する読み出し動作を実行するため、Set Featureのコマンドセット及び読み出し動作のコマンドセットをメモリチップ100に送信する。メモリチップ100は、ブロックBLKiのワード線WLjにおける消去後k回目の書き込み動作に対応する読み出し動作を実行する(S50)。
読み出したデータに“0”データが含まれていない場合(S51_No)、CPU230は、“消去後の書き込み回数”テーブルのブロックBLKiにおける書き込みWLポインタとして変数j−1を設定する(S52)。より具体的には、CPU230は、対応するワード線WLjから最後のワード線WL(例えばワード線WL7)までの消去後の書き込み回数はk−1回であると判定する。
読み出したデータに“0”データが含まれている場合(S51_Yes)、CPU230は、変数jが予め設定された上限回数(例えば、j=7)に達しているか確認をする(S53)。
変数jが上限回数に達していない場合(S53_No)、CPU230は、変数jをj=j+1に設定する(S54)。その後、CPU230は、S50に戻る。
変数jが上限回数に達している場合、(S53_Yes)、CPU230は、“消去後の書き込み回数”テーブルのブロックBLKiにおける書き込みWLポインタとして変数jを設定する(S55)。
S47、S52、またはS55において、“消去後の書き込み回数”テーブルのブロックBLKiにおける書き込みWLポインタを設定した後、CPU230は、変数iが予め設定された上限回数(例えば、i=3)に達しているか確認をする(S56)。
変数iが上限回数に達していない場合(S56_No)、CPU230は、変数iをi=i+1に設定し、変数jを0に設定する(S57)。その後、CPU230は、S41に戻る。
変数iが上限回数に達している場合(S56_Yes)、CPU230は、“消去後の書き込み回数”探索動作を終了させる。
2.2 “消去後の書き込み回数”探索動作の具体例
まず、“消去後の書き込み回数”探索動作の具体例について、図15を用いて説明する。図15は、ブロックBLK0の場合を示しているが、他のブロックBLKも同様である。なお、図15の例は、1つのメモリセルトランジスタMCにおける消去後のSLC書き込み動作の上限回数が4回(すなわちk=4)である場合を示している。
まず、シーケンサ106は、ブロックBLK0のワード線WL0を選択にして、消去後1回目の書き込み動作に対応する読み出し動作(読み出し電圧VR1)を実行する。各メモリセルトランジスタMCの閾値電圧が電圧VR1よりも低い場合、すなわち、読み出しデータに“0”データが含まれていない場合、シーケンサ106は、ブロックBLK0のワード線WL0に対応するページにはデータが書き込まれていない。この場合、CPU230は、ブロックBLK0にはデータが書き込まれていないと判定する。
1回目の読み出しデータに、“0”データが含まれている場合、シーケンサ106は、ワード線WL0を選択にして、消去後2回目の書き込み動作に対応する読み出し動作(読み出し電圧VR2)を実行する。同様にして、シーケンサ106は、読み出しデータに”0”データが含まれなくなるまで、消去後3回目の書き込み動作に対応する読み出し動作(読み出し電圧VR3)、消去後4回目の書き込み動作に対応する読み出し動作(読み出し電圧VR4)を順次実行する。図15の例では、読み出し電圧VR4よりも高い“A4”ステートが存在しない。すなわち、消去後4回目の書き込み動作に対応する読み出しデータに“0”データが含まれていない。この結果、CPU230は、ワード線WL0に対応するページにおける消去後の書き込み回数は3回であると判定する。
ワード線WL0に対応するページにおける消去後の書き込み回数が3回である場合、シーケンサ106は、消去後3回目の書き込み動作に対応する読み出し動作を、ワード線WL1から順に選択して実行し、読み出しデータに“0”データが含まれていないワード線WLに対応するページを探索する。図15の例では、ワード線WLjに対応するページにおいて、“A3”ステートが存在しなくなる。すなわち、ワード線WLjにおける消去後3回目の書き込み動作に対応する読み出しデータに“0”データが含まれていない。この結果、CPU230は、ワード線WLjに対応するページからワード線WL7に対応するページまでの消去後の書き込み回数は2回であると判定する。従って、CPU230は、“消去後の書き込み回数”テーブルのブロックBLK0の書き込みWLポインタとしてj−1を設定する。同様の処理を各ブロックBLKに対して行うことにより、メモリチップ100内の“消去後の書き込み回数”探索動作が完了する。
2.3 本実施形態に係る効果
本実施形態に係る構成であれば、第1実施形態と同様の効果が得られる。
更に、本実施形態に係る構成であれば、例えば、電源遮断により“消去後の書き込み回数”テーブルの情報が消失した場合においても、消去後の書き込み回数を探索し、“消去後の書き込み回数”テーブルを更新できる。これにより、消去後の書き込み回数の誤りを低減し、データの信頼性を向上できる。
3.第3実施形態
次に、第3実施形態について説明する。第3実施形態では、ワード線単位(ページ単位)でコンパクションを行う場合について説明する。コンパクションとは、対象となるメモリ領域内のページに含まれている有効データを集めて、他のブロックBLKに移動させる動作である。以下、第1及び第2実施形態と異なる点を中心に説明する。
3.1 ワード線単位コンパクションの概要
まず、ワード線単位コンパクションの概要について、図16を用いて説明する。図16は、各ワード線WLに対応するページにおける有効クラスタ率の一例を示すグラフである。図16の例は、3つのブロックBLK0〜BLK2がそれぞれ4つのワード線WL0〜WL3を含む場合を示している。本実施形態では、1つのワード線WLが1つのページに対応する。1つのページは、複数のクラスタに分割できる。そして、各クラスタには異なるデータが書き込まれている。
データ処理が進むのに伴い、ページ内に有効データを含まないクラスタ(以下、「無効クラスタ」と表記する)が生じる。このため、ワード線WL毎に対応するページの有効データを含むクラスタ(以下、「有効クラスタ」と表記する)の数が異なる。すなわち、1つのページのクラスタ総数に対する有効クラスタ数の比率(以下、「有効クラスタ率」と表記する)が異なる。1つのブロックBLKの各ワード線WLの有効クラスタ率を平均化した値を、平均有効クラスタ率とする。そして、ブロックBLK0〜BLK2における平均有効クラスタ率をそれぞれCR0〜CR2とすると、例えば、CR0<CR2<CR1の関係にある。例えば、ブロック単位でコンパクションが実行される場合(以下、「ブロック単位コンパクション」と表記する)、平均有効クラスタ率の低いブロックBLK0がブロック単位コンパクションの対象として選択される。この場合、対応するページの有効クラスタ率が平均有効クラスタ率CR0よりも高いワード線WL1及びWL2もコンパクションの対象に含まれる。
これに対し、本実施形態では、ワード線単位でコンパクションを実行できる(以下、「ワード線単位コンパクション」と表記する)。この場合、コンパクションの対象(以下、「コンパクションソース」と表記する)として、消去後の書き込み回数が上限回数に達しておらず且つ対応するページの有効クラスタ率の低いワード線WLから順に選択される。但し、有効クラスタ率が0であるページは、そのままデータの上書き動作ができる。よって、対応するページの有効クラスタ率が0であるワード線WLは、コンパクションの対象から除外される。図16の例では、1ブロックBLK分に相当する4つのワード線WLをワード線単位コンパクションのコンパクションソースとして選択する場合、ブロックBLK1のワード線WL0及びWL3並びにブロックBLK2のワード線WL0及びWL1が選択される。対応するページの有効クラスタ率が低いワード線WLを選択することにより、コンパクションに伴う書き込み量の増加が抑制される。
本実施形態では、書き込み対象となるワード線WLを任意の順序で選択してSLC書き込み動作を実行できる。このため、ワード線単位コンパクションを実行する場合に、上書き可能となるワード線WLをランダムに選択可能となる。以下、ワード線WL0〜WL7の順に選択する書き込み動作を「順次書き込み動作」と表記し、任意のワード線WLを選択する書き込み動作を「任意書き込み動作」と表記する。
例えば、ブロック消去後の1回目のSLC書き込み動作では、ワード線WL0〜WL7の順に選択され順次書き込み動作が実行される。そして、コンパクション実行後のワード線WLのSLC書き込み動作では、その順序が任意であるため、任意書き込み動作が実行される。すなわち、データの上書き動作には、任意書き込み動作が適用される。
なお、本実施形態では、有効クラスタ率に基づいてコンパクションソースを選択する場合について説明するが、1つのページに記憶できるデータの総量に対する有効データの総量、すなわち、各有効クラスタのサイズの合計値の比率(「有効データ率」とも表記する)に基づいてコンパクションソースを選択してもよい。
3.2 ブロックの状態遷移
次に、ブロックBLKの状態遷移について、図17を用いて説明する。図17は、ブロックBLKの状態遷移図である。
ブロックBLKは、5つの状態を含む。5つの状態を、「消去済みブロックBLK」、「インプットブロックBLK」、「アクティブブロックBLK」、「コンパクションソースブロックBLK」、及び「フリーブロックBLK」と表記する。
消去済みブロックBLKは、ブロックBLK内のデータが消去された状態にあるブロックBLKである。例えば、CPU230は、フリーブロックBLKのいずれかを選択してブロック消去を実行し、消去済みブロックBLKに変更する。
インプットブロックBLKは、書き込み対象(データの入力対象)として消去済みブロックBLKの中から選択されたブロックBLKである。CPU230は、インプットブロックBLKに対して、書き込み動作を実行する。なお、図17の例では、消去済みブロックBLKからインプットブロックBKが選択されているが、上書き動作を行う場合、消去後の書き込み回数が上限回数に達していないフリーブロックBLKからインプットブロックBLKが選択されてもよい。
アクティブブロックBLKは、少なくとも1回は全ページへのデータの書き込みが終了したブロックBLKである。
コンパクションソースブロックBLKは、アクティブブロックBLKの中からコンパクションソースとして選択されたブロックBLKである。CPU230は、コンパクションソースブロックBLKに対して、コンパクションを実行する。
フリーブロックBLKは、有効クラスタが無くなったアクティブブロックBLK、または、コンパクションにより有効クラスタが無くなったコンパクションソースブロックBLKである。
3.3 ワード線の状態遷移
次に、ワード線WLの状態遷移について、図18を用いて説明する。図18は、ワード線WLの状態遷移図である。
ワード線WLは、6つの状態を含む。6つの状態を、「フリーワード線WL」、「インプットワード線WL」、「アクティブワード線WL」、「コンパクションソースワード線WL」、「ブロック消去待機ワード線WL」、及び「上書き禁止ワード線WL」と表記する。
フリーワード線WLは、対応するページが有効クラスタを含まず且つ消去後の書き込み回数が上限回数に達していないワード線WLである。
インプットワード線WLは、書き込み対象(データの入力対象)として、フリーワード線WLの中から選択されたワード線WLである。CPU230は、インプットワード線WLに対して、書き込み動作を実行する。
アクティブワード線WLは、対応するページが有効クラスタを含み且つ消去後の書き込み回数が上限回数に達していないワード線WLである。アクティブワード線WLは、有効クラスタが無くなるとフリーワード線WLに変更される。
コンパクションソースワード線WLは、アクティブワード線WLの中からコンパクションソースとして選択されたワード線WLである。CPU230は、コンパクションソースワード線WLに対応するページに対して、ワード線単位コンパクションを実行する。コンパクション実行後(データ移行後)のコンパクションソースワード線WLは、対応するページが有効クラスタを含まないため、フリーワード線WLに変更される。
ブロック消去待機ワード線WLは、対応するページに消去後の書き込み回数の上限回数までデータが書き込まれたワード線WLである。ブロック消去待機ワード線WLは、ブロック消去待機ワード線WLを含むブロックBLKのデータが消去されるまで、待機状態にある。
上書き禁止ワード線WLは、ブロック消去後、1回目の書き込み動作が完了していないブロックBLKに含まれるワード線WLである。ブロックBLK内の全てのワード線WLに対応するページに消去後1回目のデータが書き込まれると、アクティブワード線WLに変更される。
3.4 BLK/WL管理部
次に、本実施形態におけるBLK/WL管理部260の構成の詳細及び動作について、図19を用いて説明する。図19は、BLK/WL管理部260の概略図である。
BLK/WL管理部260は、WL状態管理部261、BLK状態管理部262、書き込み先選択部263、及びコンパクションソース選択部264を含む。
WL状態管理部261は、ワード線WLの状態を管理する。
BLK状態管理部262は、ブロックBLKの状態を管理する。
書き込み先選択部263は、各ワード線WLに対応するページの消去後の書き込み回数(すなわち、“消去後の書き込み回数”テーブル)を管理し、WL状態管理部261から取得したフリーワード線WL情報及びBLK状態管理部262から取得したフリーブロックBLK情報に基づいて、書き込み先となるインプットブロックBLK及びインプットワード線WLを選択する。以下、インプットブロックBLKとインプットワード線WLとの組み合わせを「インプットBLK/WL」と表記する。
コンパクションソース選択部264は、各ワード線WLに対応するページの有効クラスタ数(すなわち、有効クラスタ数テーブル)を管理し、WL状態管理部261から取得したアクティブワード線WL情報及びBLK状態管理部262から取得したアクティブブロックBLK情報に基づいて、コンパクションソースワード線WL及びコンパクションソースブロックBLKを選択する。有効クラスタ数テーブルは、例えば、RAM220内に保持される。
3.5 インプットブロック及びインプットワード線の選択動作
次に、インプットブロックBLK及びインプットワード線WLの選択動作について、図20を用いて説明する。図20は、インプットブロックBLK及びインプットワード線WLの選択動作を示すフローチャートである。
書き込み先選択部263は、ホストデバイス2から書き込み要求を受信すると、書き込み先のインプットBLK/WLとして選択されているワード線WLがあるか確認する(S60)。
インプットBLK/WLとして選択されているワード線WLがある場合(S60_Yes)、書き込み先選択部263は、インプットBLK/WLに関する情報をCPU230に送信し、選択動作を終了する。
インプットBLK/WLとして選択されているワード線WLがない場合(S60_No)、書き込み先選択部263は、WL状態管理部261からフリーワード線WL情報を取得し、フリーワード線WLがあるか確認する(S61)。
フリーワード線WLがある場合(S61_Yes)、書き込み先選択部263は、“消去後の書き込み回数”テーブルを参照して、消去後の書き込み回数が比較的少ないフリーワード線WLのいずれか1つをインプットワード線WLとして選択する(S62)。書き込み先選択部263は、インプットBLK/WLに関する情報をCPU230に送信し、選択動作を終了する。
フリーワード線WLがない場合(S61_No)、書き込み先選択部263は、BLK状態管理部262からフリーブロックBLK情報を取得し、フリーブロックBLKがあるか確認する(S63)。
フリーブロックBLKがない場合(S63_No)、CPU230は、例えば、ブロック単位のガベージコレクションGCを実行する。ガベージコレクションGCは、対象となるメモリ領域内のページに含まれている有効データを、他のブロックBLKに移動させる動作である。なお、ガベージコレクションGCは、ブロック単位でもよく、ワード線単位でもよい。BLK/WL管理部260は、ガベージコレクションGCが実行された当該ブロックBLKをフリーブロックBLKに変更する(S64)。
フリーブロックBLKがある場合(S63_Yes)、またはガベージコレクションGCを実施してフリーブロックBLKを生成した場合(S64)、書き込み先選択部263は、フリーブロックBLKのいずれか1つをインプットBLK/WLとして選択する(S65)。書き込み先選択部263は、インプットBLK/WLに関する情報をCPU230に送信し、選択動作を終了する。
3.6 コンパクションソース選択動作
次に、コンパクションソース選択動作について、図21を用いて説明する。図21は、ワード線単位コンパクションにおけるコンパクションソースワード線WLの選択動作を示すフローチャートである。
例えば、メモリシステム1がアイドル状態にある場合、または、書き込み動作を実行するのに必要なフリーブロックBLK及びフリーワード線WLが不足している場合、CPU230は、ワード線単位コンパクションを実行する。このとき、コンパクションソース選択部264は、CPU230の制御により、アクティブブロックBLK内にコンパクションソースワード線WLがあるか確認する(S70)。
コンパクションソースワード線WLがある場合(S70_Yes)、選択動作は終了する。
コンパクションソースワード線WLが無い場合(S70_No)、コンパクションソース選択部264は、BLK状態管理部262からアクティブブロックBLK情報を取得する。また、コンパクションソース選択部264は、WL状態管理部261からアクティブブロックBLK内のアクティブワード線WL情報を取得し、アクティブワード線WLがあるか確認する(S71)。
アクティブワード線WLがある場合(S71_Yes)、コンパクションソース選択部264は、有効クラスタ数テーブルを参照して、アクティブワード線WLの中から、対応するページの有効クラスタ率が最も低い(有効クラスタ数が最も少ない)ワード線WLをコンパクションソースワード線WLとして選択する(S72)。なお、例えば、対応するページの有効クラスタ率が最も低いワード線WLが複数本ある場合、コンパクションソース選択部264は、書き込み先選択部263から、消去後の書き込み回数の情報を取得してもよい。更に、コンパクションソース選択部264は、対応するページの有効クラスタ率が最も低いワード線WLの中から、対応するページの消去後の書き込み回数が最も少ないワード線WLを選択してもよい。コンパクションソース選択部264は、コンパクションソースワード線WLを含むブロックBLKをコンパクションソースブロックBLKとして選択する。
アクティブワード線WLが無い場合(S71_No)、CPU230は、ワード線単位コンパクションを終了し、ブロック単位コンパクションを実行する(S73)。より具体的には、コンパクションソース選択部264は、選択可能なアクティブワード線WLがない場合、コンパクションソースワード線WLの選択動作を終了し、その旨をCPU230に報告する。CPU230は、ワード線単位コンパクションを終了させ、ブロック単位コンパクションに切り替える。コンパクションソース選択部264は、CPU230の制御により、アクティブブロックBLKの中から、ブロック単位コンパクションを実行するためのコンパクションソースブロックBLKを選択する。
S72またはS73における処理が終了した後、コンパクションソース選択部264は、コンパクションソースブロックBLK及びコンパクションソースワード線WLに関する情報をCPU230に送信する。
3.7 コンパクションソース選択動作の具体例
次に、コンパクションソース選択動作の具体例について、図22を用いて説明する。図22は、コンパクションソースワード線WLの選択動作を示す例図である。図22の例では、ブロックBLK0〜BLK2がアクティブブロックBLKである。また、各ブロックBLKが5本のワード線WL0〜WL4を含み、各ワード線WLに対応するページが4つのクラスタを含む。
ブロックBLK0のワード線WL0に対するページは、4つの無効クラスタを有し、ワード線WL1〜WL4に対するページは、4つの有効クラスタを有している。この場合、ブロックBLK0の平均有効クラスタ率は、16/20となる。
ブロックBLK1のワード線WL0〜WL4の各々に対するページは、2つの無効クラスタと2つの有効クラスタを有している。この場合、ブロックBLK1の平均有効クラスタ率は、10/20となる。例えば、ブロック単位でコンパクションを実行する場合、平均有効クラスタ率が最も低いブロックBLK1が選択される。ブロックBLK1に対してブロック単位コンパクションが実行された場合、1ブロックBLK分のコンパクション動作により、10個の有効クラスタの書き込み動作(データの移動)が実行され、無効クラスタに相当する10個のクラスタの空き容量を得る。
ブロックBLK2のワード線WL0〜WL3に対するページは、4つの有効クラスタを有し、ワード線WL3及びWL4に対するページは、4つの無効クラスタを有している。この場合、ブロックBLK2の平均有効クラスタ率は、12/20となる。
この状態において、例えば、1ブロックBLK分に相当する5本のワード線WLをコンパクションソースとして選択して、ワード線単位コンパクションを実行する場合、コンパクションソース選択部264は、ブロックBLKの平均有効クラスタ率によらず、対応するページの有効クラスタ率が低いものから順にワード線WLを選択する。より具体的には、コンパクションソース選択部264は、まず、対応するページの有効クラスタ率が0/4と最も低いブロックBLK0のワード線WL0並びにブロックBLK2のワード線WL3及びWL4の3つのワード線WLを選択する。更に、コンパクションソース選択部264は、対応するページの有効クラスタ率が2/4と2番目に低いブロックBLK1の5本のワード線WL0〜WL4の中から、例えば、対応するページの消去後の書き込み回数が少ないワード線WL3及びWL4を選択する。上述の選択条件により、ワード線単位コンパクションを実行した場合、1ブロックBLK分のコンパクション動作により、4個の有効クラスタの書き込み動作(データの移動)が実行され、16個のクラスタの空き容量を得る。従って、ワード線単位コンパクションは、ブロック単位コンパクションよりもより効率的にクラスタの空き容量を得ることができる。なお、図22の例では、有効クラスタ率が0/4であるブロックBLK0のワード線WL0並びにブロックBLK2のワード線WL3及びWL4の3つのワード線WLもコンパクションソースとして選択する場合について、説明したが、これらのワード線WLは有効クラスタを含んでおらずフリーワード線WLとして選択可能なため、コンパクションソースの対象から外してもよい。
3.8 本実施形態に係る効果
本実施形態に係る構成であれば、第1及び第2実施形態と同様の効果が得られる。
更に、本実施形態に係る構成であれば、メモリシステム1の信頼性を向上できる。本効果につき詳述する。
コンパクションソースの有効クラスタ率により、フリーブロックBLKの生成の効率、すなわち、書き込み倍率(WAF:write amplification factor)が変化する。WAFは、メモリチップ100に書き込まれているホストデバイス2から受信したデータ量と、メモリチップ100に書き込まれているデータ量との割合を示しており、WAF=1/(1−r)(rはメモリチップ100に保存されているデータの有効率)で表される。従って、WAFが大きい場合、データの有効率、すなわち有効クラスタ率が高いことを示している。
本実施形態に係る構成であれば、メモリシステム1は、ワード線単位(ページ単位)コンパクションを実行できる。ワード線単位コンパクションでは、対応するページの有効クラスタ率が低いワード線WLを優先的に選択するため、WAFをより小さくできる。これにより、コンパクションの回数を低減でき、コンパクションに起因するブロックBLKの消去動作の回数を低減できる。よって、書き込み/消去サイクルの繰り返しによるメモリチップ100の信頼性劣化を抑制できる。よって、メモリシステム1の信頼性を向上できる。
更に、本実施形態に係る構成であれば、ブロック消去の消去回数を低減できるため、メモリチップ100の寿命を延ばすことができる。
更に、本実施形態に係る構成であれば、コンパクションにおける書き込み量の増加を抑制できるため、コンパクションの処理時間を短くできる。よって、メモリシステム1の処理能力を向上できる。
4.第4実施形態
次に、第4実施形態について説明する。第4実施形態では、メモリチップ100のメモリ領域の一部をデータバッファとして使う場合について説明する。以下、第1乃至第3実施形態と異なる点を中心に説明する。
4.1 メモリセルアレイの構成
まず、本実施形態に係るメモリセルアレイ109の構成について、図23を用いて説明する。図23は、メモリセルアレイ109のブロック図である。
メモリセルアレイ109は、例えば、SLCに対応する3つのSLCブロックBLK(BLK0〜BLK2)及び3ビットデータを書き込み可能なTLC(triple level cell)に対応する5つのTLCブロックBLK(BLK3〜BLK7)を含む。例えば、SLCブロックBLKは、データの上書き動作に対応し、TLCブロックBLKは、データの上書き動作に対応していない。
例えば、TLCに3ビットデータを書き込む動作(以下、「TLC書き込み動作」と表記する)の処理時間は、3回のSLC書き込み動作の処理時間よりも長くなる場合がある。そこで、本実施形態では、書き込み動作の高速化のため、まず、SLCブロックBLKにTLCに対応するデータを書き込み、例えば、メモリチップ100がアイドル状態のときに、TLCブロックBLKにデータを移動させる。すなわち、SLCブロックBLKは、データバッファとして使用される(以下、「SLCバッファ」とも表記する)。
例えば、1つのTLCブロックBLKにデータを書き込む場合、少なくとも3つのSLCブロックBLK分のデータが必要とされる。すなわち、1ページ分のTLCデータ(3ビットデータ)は、SLCブロックBLKにおいて3ページ分のSLCデータ(1ビットデータ)として保存される。但し、SLCブロックBLKのブロック数を多くしすぎると、メモリチップ100の実効的な記憶容量が減ってしまうため、SLCブロックBLKの領域は、制限される場合がある。このため、SLCブロックBLKにおける書き込み/消去回数は、TLCブロックBLKよりも多くなる傾向にある。そこで、本実施形態では、SLCブロックBLKにおける消去後1回目のSLC書き込み動作では順次書き込み動作を適用し、消去後2回目以降の書き込み動作(データの上書き動作)に任意書き込み動作を適用する場合について説明する。なお、SLCブロックBLKにおける消去後2回目以降の書き込み動作に順次書き込み動作を適用してもよい。これにより、ガベージコレクションGCによる消去動作の頻度を増やさずに、SLC書き込み動作の書き込み性能を維持する期間を延ばす、すなわち、ホストデバイス2から受信した書き込みデータを高速に書き込むことができる量を増やすことができる。
4.2 SLCブロック及びTLCブロックの状態遷移及びデータフロー
次に、SLCブロックBLK及びTLCブロックBLKの状態遷移及びデータフローについて、図24を用いて説明する。図24は、SLCブロックBLK及びTLCブロックBLKの状態遷移図である。
まず、SLCブロックBLKについて説明する。
SLCブロックBLKは、3つの状態を含む。3つの状態を「SLCフリーブロックBLK」、「SLCホストインプットブロックBLK」、及び「SLCアクティブブロックBLK」と表記する。
SLCフリーブロックBLKは、有効データ、すなわち、有効クラスタを含んでいないブロックBLKである。
SLCホストインプットブロックBLKは、ホストデバイス2から受信した書き込みデータの書き込み対象として選択されたブロックBLKである。
SLCアクティブブロックBLKは、ブロックBLK内の少なくとも1つ以上のワード線WLに対応するページが有効データを含むブロックBLK(但し、SLCインプットブロックBLKは除く)である。
CPU230は、ホストデバイス2から書き込み要求があると、まず、SLCホストインプットブロックBLKにおいてSLC書き込み動作を実行する。SLCホストインプットブロックBLKが設定されていない場合、BLK/WL管理部260は、SLCフリーブロックBLK、または、フリーワード線WLを含むSLCアクティブブロックBLKのいずれかからSLCホストインプットブロックBLKを選択する。
選択したSLCフリーブロックBLKの消去後の書き込み回数が上限回数に達していない場合、ブロック消去を実行せずに、そのままSLCホストインプットブロックBLKとして使用できる。BLK/WL管理部260は、SLCホストインプットブロックBLK内にフリーワード線WLが無くなると、SLCホストインプットブロックBLKをSLCアクティブブロックBLKに変更する。
CPU230は、例えば、SLCフリーブロックBLKが無くなった場合、SLCアクティブブロックBLKのガベージコレクションGCを実行する。ガベージコレクションGCは、消去動作を行う際、消去対象のメモリ領域内にある有効データを、他のメモリ領域に退避させる動作である。BLK/WL管理部260は、ガベージコレクションGCが実行された当該ブロックBLKをフリーブロックBLKに変更する。なお、ガベージコレクションGCを実行しなくても、同一の論理アドレスに対応する書き込みデータの更新に伴う書き込み動作により、当該ブロックBLKのデータが無効化(論理アドレスと物理アドレスとの関連付けが破棄)され、フリーブロックBLKに遷移する場合がある。
次に、TLCブロックBLKについて説明する。
TLCブロックBLKに含まれるブロックBLKは、4つの状態を含む。4つの状態を「TLCフリーブロックBLK」、「TLCホストインプットブロックBLK」、「TLCアクティブブロックBLK」、「TLC_GCインプットブロックBLK」と表記する。
TLCフリーブロックBLKは、ブロックBLK内の複数のワード線WLにそれぞれ対応する3ページデータのいずれもが有効データを含まないブロックBLKである。
TLCホストインプットブロックBLKは、ホストデバイス2から受信した書き込みデータの書き込み対象として選択されたブロックBLKである。CPU230は、SLCブロックBLKのデータを3ページデータとしてTLCブロックBLKに書き込む場合、または、SLCブロックBLKに書き込み領域を確保できず、ホストデバイス2からの書き込み要求に対応して直接TLC書き込み動作を実行する場合に、TLCホストインプットブロックBLKを使用する。BLK/WL管理部260は、TLCホストインプットブロックBLK内に書き込み可能なページが無くなると、TLCホストインプットブロックBLKをTLCアクティブブロックBLKに変更する。
TLCアクティブブロックBLKは、ブロックBLK内の複数のワード線WLにそれぞれ対応する3ページデータのいずれかが有効データを含むブロックBLKである。BLK/WL管理部260は、例えばガベージコレクションGCなどが実行されることにより、当該ブロックが有効データを含まないフリー状態になった場合、TLCアクティブブロックBLKをTLCフリーブロックBLKに変更する。
TLC_GCインプットブロックBLKは、ガベージコレクションGCによるデータの書き込み対象として選択されたブロックBLKである。SLCアクティブブロックBLK及びTLCアクティブブロックBLKでガベージコレクションGCを実行した場合に、データの書き込み先として使用される。BLK/WL管理部260は、TLC_GCインプットブロックBLK内に書き込み可能なページが無くなると、TLC_GCインプットブロックBLKをTLCアクティブブロックBLKに変更する。
4.3 SLCブロックBLKへの書き込み動作の具体例
次に、SLCブロックBLKへのSLC書き込み動作の具体例について、図25及び図26を用いて説明する。図25及び図26は、SLCブロックBLKへのSLC書き込み動作に対応するクラスタの状態の推移を示している。図25及び図26の例は、各SLCブロックBLKが4つのワード線WL0〜WL3を含み、各ワード線WLに対応するページが4つのクラスタを有している場合を示している。
CPU230は、3つのSLCフリーブロックBLK0〜BLK3に対してブロック消去を実行する。各ワード線WLに対応するページは、未書き込み状態にある(図25の(a))。
次に、CPU230は、ブロックBLK0のワード線WL0から順に選択して順次書き込み動作を実行する。図25の(b)の例では、ブロックBLK0には、ワード線WL0〜WL3の各々に対応するページにデータが書き込まれている。このため、ブロックBLK0は、SLCアクティブブロックBLKとされる。ブロックBLK1は、SLCホストインプットブロックBLKとして設定されており、ワード線WL0に対応するページにデータが書き込まれている。
より具体的には、ブロックBLK0のワード線WL0に対応するページは、3つの有効クラスタ及び1つの無効クラスタを含む。例えば、無効クラスタは、同一の論理アドレスに対応する書き込みデータの更新に伴いデータが無効化されるために生じる場合がある。ブロックBLK0のワード線WL1に対応するページは、2つの有効クラスタ及び2つの無効クラスタを含む。ブロックBLK0のワード線WL2及びWL3に対応するページは、4つの有効クラスタをそれぞれ含む。ブロックBLK1は、インプットブロックBLKに選択され、ワード線WL0に対応するページにデータが書き込まれている。ブロックBLK1のワード線WL0に対応するページは、4つの有効クラスタを含む。
更に、CPU230は、順次書き込み動作を実行し、ブロックBLK2のワード線WL3に対応するページまでデータを書き込む。図25の(c)の例では、ブロックBLK0〜BLK3がSLCアクティブブロックBLKとされる。より具体的には、ブロックBLK0のワード線WL0に対応するページは、3つの有効クラスタ及び1つの無効クラスタを含む。ブロックBLK0のワード線WL1及びWL2に対応するページは、例えば、同一の論理アドレスに対応する書き込みデータの更新に伴い無効化された4つの無効クラスタを含む。ブロックBLK0のワード線WL3に対応するページは、3つの有効クラスタ及び1つの無効クラスタを含む。ブロックBLK1のワード線WL0に対応するページは、3つの有効クラスタ及び1つの無効クラスタを含む。ブロックBLK1のワード線WL1に対応するページは、4つの無効クラスタを含む。ブロックBLK1のワード線WL2に対応するページは、4つの有効クラスタを含む。ブロックBLK1のワード線WL3に対応するページは、2つの有効クラスタ及び2つの無効クラスタを含む。ブロックBLK2のワード線WL0〜WL3に対応するページは、それぞれ4つの有効クラスタを含む。BLK/WL管理部260は、対応するページが4つの無効クラスタを含むブロックBLK0のワード線WL1及びWL2並びにブロックBLK1のワード線WL1をフリーワード線WLに変更する。
CPU230は、まず、ブロックBLK0のフリーワード線WLを選択して消去後2回目のSLC書き込み動作(上書き動作)を実行する。図26の(d)の例では、ブロックBLK0のワード線WL1及びWL2に対応するページに消去後2回目の書き込み動作によるデータが書き込まれており、それぞれのページが4つの有効クラスタを含む。
次に、CPU230は、ブロックBLK1のワード線WL1に対応するページに消去後2回目のSLC書き込み動作を実行する。図26の(e)の例では、ブロックBLK1のワード線WL1に対応するページに消去後2回目の書き込み動作によるデータが書き込まれており、当該ページは、4つの有効クラスタを含む。
例えば、同一の論理アドレスに対応する書き込みデータの更新に伴いブロックBLK0の全てのクラスタが無効化される。これにより、ブロックBLK0は、SLCフリーブロックBLKに設定される(図26の(f))。
4.4 書き込み動作の流れ
次に、書き込み動作の流れについて、図27を用いて説明する。図27は、書き込み動作のフローチャートである。
CPU230は、例えば、メモリシステム1がホストデバイス2から書き込み要求を受信していない場合(S101_Yes)、または、ホストデバイス2から他の要求を受信していない場合、CPU230は、メモリシステム1がアイドル状態にあるか確認する(S102)。例えば、CPU230は、ホストデバイス2から要求(コマンド)を受信しない期間が、予め設定された期間以上となるとメモリシステム1を通常動作状態からアイドル状態に移行する。
メモリシステム1がアイドル状態にある場合(S102_Yes)、CPU230は、SLCアクティブブロックBLKを対象としたガベージコレクションGCを実行する(S103)。他方で、メモリシステム1がアイドル状態ではない場合(S102_No)、CPU230は、ガベージコレクションGCを実行しない。
ホストデバイス2から書き込み要求を受信している場合(S101_Yes)、CPU230は、BLK/WL管理部260にSLCホストインプットブロックBLKの有無を確認する(S104)。
SLCホストインプットブロックBLKがある場合(S104_Yes)、CPU230は、SLC書き込み動作を実行する(S109)。なお、SLC書き込み動作には、上書き動作の場合も含まれる、すなわち、消去後2回目以上のSLC書き込み動作の場合も含まれる。
SLCホストインプットブロックBLKが無い場合(S104_No)、BLK/WL管理部260は、SLCフリーブロックBLKの有無を確認する(S105)。
SLCフリーブロックBLKがある場合(S105_Yes)、BLK/WL管理部260は、SLCフリーブロックBLKのいずれかを、SLCホストインプットブロックBLKとして選択する(S106)。その後、CPU230は、SLC書き込み動作を実行する(S109)。
SLCフリーブロックBLKが無い場合(S105_No)、BLK/WL管理部260は、SLCアクティブブロックBLKの中に、フリーワード線WLがあるか確認する(S107)。より具体的には、BLK/WL管理部260は、SLCアクティブブロックBLKのアクティブワード線WLのうち、有効データ量(有効クラスタ率)が予め設定された閾値以下のワード線WLをフリーワード線WLとして選択する。この場合、例えば、閾値は0である。すなわち、対応するページに有効データが含まれているアクティブワード線WLはフリーワード線WLとして選択されない。
フリーワード線WLがある場合(S107_Yes)、BLK/WL管理部260は、フリーワード線WLを含むSLCアクティブブロックBLKをSLCインプットブロックBLKとして選択する(S108)。より具体的には、BLK/WL管理部260は、SLCインプットブロックBLKにおいて、フリーワード線WLの中からインプットワード線WLを選択する。CPU230は、選択したインプットワード線WLにSLC書き込み動作(上書き動作)を実行する(S109)。
フリーワード線WLが無い場合(S107_No)、BLK/WL管理部260は、SLCブロックBLK内に書き込み可能な領域が無いため、書き込み領域としてTLCブロックBLKを確認する。まず、BLK/WL管理部260は、TLCホストインプットブロックBLKがあるか確認する(S110)。
TLCホストインプットブロックBLKがある場合(S110_Yes)、CPU230は、TLC書き込み動作を実行する(S114)。
TLCホストインプットブロックBLKが無い場合(S110_No)、BLK/WL管理部260は、TLCフリーブロックBLKの有無を確認する(S111)。
TLCフリーブロックBLKがある場合(S111_Yes)、BLK/WL管理部260は、TLCフリーブロックBLKのいずれかを、TLCホストインプットブロックBLKとして選択する(S113)。
TLCフリーブロックBLKが無い場合(S111_No)、BLK/WL管理部260は、TLCアクティブブロックBLKのガベージコレクションGCを実行する(S112)。その後、BLK/WL管理部260は、ガベージコレクションGCを実行したブロックBLKをTLCホストインプットブロックBLKとして選択する(S113)。
CPU230は、TLCホストインプットブロックBLK選択後、TLC書き込み動作を実行する(S114)。
4.5 書き込み速度とデータの書き込み量の関係
次に、書き込み速度とデータの書き込み量の関係について、図28を用いて説明する。図28は、書き込み速度とデータの書き込み量の関係を示す例図である。
1ページデータを書き込むSLC書き込み動作の書き込み速度(以下、「SLC速度」とも表記する)は、3ページデータを書き込むTLC書き込み動作の書き込み速度(以下、「TLC速度」とも表記する)より速い。また、消去後1回目のSLC書き込み動作では、消去後1回目の書き込み動作に対応するパラメータを用いて書き込み動作が実行される。消去後2回目のSLC書き込み動作では、消去後2回目の書き込み動作に対応するパラメータを用いて書き込み動作が実行される。例えば、パラメータ等の違いにより、消去後1回目のSLC書き込み動作の書き込み速度は、消去後2回目のSLC書き込み動作(上書き動作)よりも速い場合がある。図28の例では、消去後1回目のSLC書き込み動作の書き込み速度が、消去後2回目のSLC書き込み動作よりも速い場合を示している。
メモリチップ100にデータを書き込む場合、まず、CPU230は、消去後1回目のSLC書き込み動作を実行する。そして、書き込み量S1において、消去後1回目の書き込み動作を実行するためのSLCフリーブロックBLK(SLCフリーワード線WL)が無くなる。
例えば、図28の太破線で示すように、SLCブロックBLKの上書き動作、すなわち、消去後2回目のSLC書き込み動作が実行できない場合、CPU230は、TLC書き込み動作を実行する。従って、書き込み量S1において、書き込み速度は、SLC速度からTLC速度まで低下する。更に、書き込み量S3において、TLCフリーブロックBLKが無くなると、ガベージコレクションGCが必要とされる。
これに対し、SLCブロックBLKの上書き動作が実行できる場合、図28の太実線で示すように、CPU230は、例えば、書き込み量S1から書き込み量S2まで、SLCブロックBLKにおける上書き動作(消去後2回目のSLC書き込み動作)を実行する。従って、メモリシステム1は、書き込み量S2まで、SLC速度を維持できる。そして、書き込み量S2において、CPU230は、TLC書き込み動作を実行する。この場合、CPU230は、書き込み量S4までTLC書き込み動作を実行でき、SLCブロックBLKの上書き動作が実行できない場合と比較して、SLCブロックに対するガベージコレクションGCを行うことなく比較的高速に書き込めるデータ量が書き込み量S1から書き込み量S2まで増加する。
4.6 本実施形態に係る効果
本実施形態に係る構成であれば、第1乃至第3実施形態と同様の効果が得られる。
更に、本実施形態に係る構成であれば、SLCブロックに1回の消去動作あたり複数回のSLC書き込み動作を実行できる。これにより、SLCブロックにおいて、1回の消去動作あたり書き込み可能なデータ量を増加できる。換言すれば、SLCブロックにおいて、同じ書き込み量に対する消去動作の実行頻度を低減できる。よって、書き込み性能を向上できる。また、同じ書き込み量に対して消去動作の実行頻度を低減できるため、SLCブロックの寿命を延ばすことができる。よって、メモリシステム1の処理能力を向上できる。
更に、本実施形態に係る構成を第3実施形態に適用できる。すなわち、SLCブロックにおいて、ワード線単位コンパクションを実行できる。これにより、WAFを改善でき、メモリチップ100の寿命を改善できる。更に、ガベージコレクションGCの実行頻度の低下により、書き込み性能を向上できる。
5.第5実施形態
次に、第5実施形態について説明する。第5実施形態では、第4実施形態において、ホストデバイス2から受信した書き込みデータとガベージコレクションGCのデータをSLCホストインプットブロックBLKに一緒に書き込む場合について説明する。以下、第4実施形態と異なる点を中心に説明する。
5.1 SLCブロック及びTLCブロックの状態遷移及びデータフロー
まず、SLCブロックBLK及びTLCブロックBLKの状態遷移及びデータフローについて、図29を用いて説明する。図29は、SLCブロックBLK及びTLCブロックBLKの状態遷移図である。
本実施形態では、第4実施形態の図24で説明したように、CPU230は、SLCアクティブブロックBLKにおいて、ガベージコレクションGCの対象となるデータをTLC_GCインプットブロックBLKに移動させてSLCフリーブロックBLKを生成してもよい。また、CPU230は、対応するページの有効データ量(有効クラスタ率)が予め設定された閾値以下であるワード線WLを対象にして、有効データを退避させる。そして、CPU230は、当該ワード線WLをインプットワード線WLとして選択し、当該ワード線WLを含むブロックBLKをSLCホストインプットブロックBLKとしてもよい。退避させた有効データは、ホストデバイス2から受信した書き込みデータともに、SLCインプットブロックBLKのインプットワード線WLに上書きされる。より具体的には、CPU230は、SLCアクティブブロックBLKにおいて、対象となる有効データを、例えば、RAM220内に一時的に保存する。そして、CPU230は、ホストデバイス2から書き込み要求を受信すると、ホストデバイス2から受信した書き込みデータとRAM220内に保存した有効クラスタのデータとをひとつのページ内に混ぜて、SLCホストインプットブロックBLKに書き込む。
5.2 書き込み動作の流れ
次に、書き込み動作の流れについて、図30及び図31を用いて説明する。図30及び図31は、書き込み動作のフローチャートである。
S101〜S108までの動作は、第4実施形態の図27と同じである。
フリーワード線WLが無い場合(S107_No)、BLK/WL管理部260は、対応するページの有効データ量が予め設定された閾値以下のアクティブワード線WLがあるか確認する(S120)。本実施形態では、閾値は0でなくてもよい。
閾値以下の有効クラスタを含むワード線WLが無い場合(S120_No)、第4実施形態の図27のS110〜S114と同様にして、CPU230は、TLC書き込み動作を実行する。
閾値以下の有効クラスタを含むワード線WLがある場合(S120_Yes)、CPU230は、対象となるアクティブワード線WLを選択して、有効クラスタのデータを読み出し(ガベージコレクションGCを実行し)、例えば、RAM220内に保存する(S121)。
BLK/WL管理部260は、対応するページの有効データを読み出されたワード線WLを、インプットワード線WLとして選択する(S122)。すなわち、BLK/WL管理部260は、当該ワード線WLを含むブロックBLKをSLCホストインプットブロックBLKとして選択する。なお、複数のブロックBLKからデータを読み出した場合、BLK/WL管理部260は、SLCホストインプットブロックBLKとして選択されなったブロックBLKをSLCフリーブロックBLKとしてもよい。
次に、CPU230は、1つのページに書き込むデータとして、ホストデバイス2から受信した書き込みデータとRAM220内に保存されている有効クラスタの有効データとを混ぜ合わせた(S123)後、SLC書き込み動作(上書き動作)を実行する(S109)。なお、RAM220内の有効データは、有効データが読み出されたページと同じページに書き込まれてもよいし、有効データが読み出されたページとは異なるページに書き込まれてもよい。更に、RAM220内の有効データを異なるページに書き込む場合、異なるページとは、有効データが読み出されたページに対応するワード線WLと同じワード線WLに対応する異なるページであってもよいし、有効データが読み出されたページに対応するワード線WLとは異なるワード線WLに対応する異なるページであってもよい。また、1つのページに書き込まれるRAM220内の有効データには、複数のページから読み出された有効データが含まれていてもよい。この場合、有効データが読み出された複数のページは、1つのワード線WLに対応する複数のページであってもよいし、複数のワード線WLにそれぞれ対応する複数のページであってもよい。更に、複数のページの1つが、有効データの書き込み先のページであってもよい。
5.3 本実施形態に係る効果
本実施形態に係る構成であれば、第1乃至第4実施形態と同様の効果が得られる。
更に、本実施形態に係る構成であれば、対応するページの有効クラスタ率が予め設定された閾値以下であるワード線WLを対象にして、有効クラスタのデータを退避させ、当該ワード線WLを含むブロックBLKをSLCホストインプットブロックBLKとできる。この場合、ブロックBLK全体のデータを移動させる場合よりも、ガベージコレクションGCの期間を短くできる。よって、メモリシステム1の処理能力の低下を抑制できる。
6.第6実施形態
次に、第6実施形態について説明する。第6実施形態では、順次書き込み動作を実行する場合において、上書き動作(消去後2回目以降の書き込み動作)を実行する際に、対象ブロックBLKに対して弱い消去動作を実行してから書き込み動作を実行する場合について説明する。従って、本実施形態における上書き動作は、弱い消去動作と書き込み動作とを含む。弱い消去動作は、メモリセルトランジスタMCの閾値電圧を低下させる動作である。通常の消去動作では、メモリセルトランジスタMCの閾値電圧を低下させ、必ず“Er”ステートまで移動させる。これに対し、弱い消去動作では、メモリセルトランジスタMCの閾値電圧を低下させるが、通常の消去動作と異なり、メモリセルトランジスタMCの閾値電圧を“Er”ステートまで移動させなくてもよい。また、例えば、通常の消去動作の完了後にメモリセルトランジスタMCの閾値電圧が負電圧となる場合において、弱い消去動作の完了後のメモリセルトランジスタMCの閾値電圧は、負電圧となってもよいし、負電圧とならなくてもよい。なお、通常の消去動作と同様に、消去対象のブロックBLK内の有効データは、弱い消去動作を実行する前に、ガベージコレクションGC等により他のブロックBLKに移動させられる。
なお、消去後の書き込み動作における“消去”動作は、記載がない限り、通常の消去動作を示しており、弱い消去動作は“消去”に含まれない。
通常の消去動作は、ワード線WLに消去電圧を印加する消去パルス印加動作と、メモリセルトランジスタMCの閾値電圧が“Er”ステートに達したか否かを確認する消去ベリファイ動作とを含む。これに対し、弱い消去動作は、消去パルス印加動作を含み、消去ベリファイ動作を含まなくてもよい。あるいは、弱い消去動作における消去ベリファイ動作のベリファイ電圧は、通常の消去動作のベリファイ電圧よりも高い電圧値が設定されてもよい。また、通常の消去動作は、メモリセルトランジスタMCの閾値電圧が“Er”ステートに達するまで消去パルス印加動作を複数回繰り返す場合がある。これに対し、弱い消去動作は、消去パルス印加動作の実行回数を1回に設定してもよい。なお、通常の消去動作における消去パルス印加動作の条件と、弱い消去動作における消去パルス印加動作の条件とは、同じでもよく異なっていてもよい。以下、第1実施形態と異なる点を中心に説明する。
6.1 SLC書き込み動作の閾値電圧分布
まず、SLC書き込み動作の閾値電圧分布の一例について、図32を用いて説明する。図32の例は、1つのメモリセルグループMGに対して消去(通常の消去動作)後に2回のSLC書き込み動作、すなわち、消去後に1回の上書き動作を実行する場合を示している。
消去後1回目の書き込み状態は、第1実施形態の図4と同じである。次に、本実施形態では、消去後2回目の書き込み動作を実行する前に、弱い消去動作が実行される。弱い消去動作により、メモリセルトランジスタMCの閾値電圧が低下している。より具体的には、“Er0”ステートが“Er0’”ステートにシフトし、“A1”ステートは“A1’”ステートにシフトしている。例えば、“A1’”ステートに相当するメモリセルトランジスタMCの一部の閾値電圧は、電圧VR1よりも低くなっていてもよい。
消去後2回目のSLC書き込み動作では、書き込み対象のメモリセルトランジスタMCの閾値電圧が“Er0’”ステートまたは“A1’”ステートから“A2”ステートに上昇するように、データが書き込まれる。消去後2回目の書き込み動作の後は、“A1’”ステートも消去状態として扱われるため、“Er1”ステートと表記する。例えば、“Er0’”ステート及び“Er1”ステートに“1”データが割り付けられ、“A2”ステートに“0”データが割り付けられる。消去後2回目のSLC書き込み動作に対応する読み出し電圧をVR2’とし、ベリファイ電圧をVV2’とすると、VR2’とVV2’とは、VR1≦VV1<VR2’≦VV2’<Vreadの関係にある。“Er0’”ステート及び“Er1”ステートのメモリセルトランジスタMCの閾値電圧は、電圧VR2’未満である。“A2”ステートのメモリセルトランジスタMCの閾値電圧は、電圧VV2’以上且つ電圧Vread未満である。上書き動作前に弱い消去動作を実行することにより、閾値電圧が全体的に低下している。このため、電圧VR2’及びVV2’は、第1実施形態の図4で説明した電圧VR2及びVV2よりもそれぞれ低く設定できる。
なお、本実施形態では、消去後に2回のSLC書き込み動作を実行する場合を示しているが、消去後に3回目以降のSLC書き込み動作を実行する場合も同様である。例えば、消去後3回目のSLC書き込み動作の前に、弱い消去動作が実行される。これにより、消去後3回目のSLC書き込み動作に対応する読み出し電圧及びベリファイ電圧は、第1実施形態の図4で説明した電圧VR3及びVV3よりも低く設定できる。更に、弱い消去動作を実行するタイミングの“消去後の書き込み回数”は、任意に設定できる。例えば、消去後L回目(Lは2以上の整数)以降の書き込み動作を実行する場合は、ブロックBLK内で最初に選択されたワード線WLに対応する書き込み動作を実行する前に、毎回、弱い消去動作を実行してもよい。また、例えば、消去後の書き込み回数が奇数回(2、4、…)の場合に、ブロックBLK内で最初に選択されたワード線WLに対応する書き込み動作を実行する前に弱い消去動作を実行してもよい。あるいは、消去後の書き込み回数が偶数回(3、5、…)の場合に、ブロックBLK内で最初に選択されたワード線WLに対応する書き込み動作を実行する前に弱い消去動作を実行してもよい。また、例えば、消去後の書き込み回数がM(Mは2以上の整数)回毎に、ブロックBLK内で最初に選択されたワード線WLに対応する書き込み動作を実行する前に弱い消去動作を実行してもよい。また、例えば、消去後の書き込み回数が予め設定された任意の回数(任意の回数は複数個設定されてもよい)となった場合に、ブロックBLK内で最初に選択されたワード線WLに対応する書き込み動作を実行する前に弱い消去動作を実行してもよい。更には、弱い消去動作の有無の選択については、上記の2つ以上の動作を組み合わせてもよい。
弱い消去動作を実行すると、閾値電圧が全体的に低下しているため、弱い消去動作を実行しない場合よりも、1つのページに対する消去後の書き込み回数をより多く設定できる。
6.2 書き込み動作の全体の流れ
次に、書き込み動作の全体の流れについて、図33を用いて説明する。図33は、書き込み動作のフローチャートである。図33の例は、1つのメモリセルグループMGに対して3回のSLC書き込み動作を実行する場合を示している。
S10〜S14までの動作は、第1実施形態の図9と同じである。消去(通常の消去動作)後1回目の書き込み動作である場合、書き込み対象のブロックBLKにおいて、順次書き込み動作により消去後1回目の書き込み動作が実行される。
消去後の書き込み回数が1回目ではない場合(S12_No)、すなわち、消去後2回目以降の書き込み動作である場合、CPU230は、選択されたワード線WLが当該ブロックBLKにおける順次書き込み動作の先頭のワード線WL0であるか確認する(S80)。選択されたワード線WLがワード線WL0である場合(S80_Yes)、CPU230は、ガベージコレクションGCを実行した後に、弱い消去動作のコマンドセットを発行し、対象のメモリチップ100に送信する(S81)。なお、CPU230は、消去後の書き込み回数と選択されたワード線WLに応じて弱い消去動作の実施の有無を判断する。CPU230は、消去後の書き込み回数をカウントする場合、通常の消去動作後から書き込み回数のカウントを開始し、次の通常の消去動作が実行される際に、そのカウント数をリセットする。従って、“消去後の書き込み回数”のカウント数は、弱い消去動作を実行してもリセットされない。また、CPU230は、弱い消去動作用のパラメータの使用を指定するSet Featureのコマンドセット及び弱い消去動作のコマンドセットを発行し、メモリチップ100に送信してもよい。
シーケンサ106は、弱い消去動作のコマンドセットを受信すると、弱い消去動作を実行する(S82)。
選択されたワード線WLがWL0ではない場合(S80_No)、または、メモリチップ100において、弱い消去動作が終了すると、CPU230は、消去後の書き込み回数に応じたSLC書き込み動作用のパラメータの使用を指定するSet Featureのコマンドセット及びSLC書き込み動作のコマンドセットを発行し、これらを対象のメモリチップ100に送信する(S83)。
シーケンサ106は、消去後の書き込み回数に応じたSLC書き込み動作用のパラメータの使用を指定するSet Featureのコマンドセット及びSLC書き込み動作のコマンドセットを受信すると、消去後の書き込み回数に応じた書き込み条件でSLC書き込み動作を実行する(S84)。
6.3 本実施形態に係る効果
本実施形態に係る構成であれば、第1実施形態と同様の効果が得られる。
更に、本実施形態に係る構成であれば、上書き動作において書き込み動作の前に弱い消去動作を実行できる。これにより、上書き動作に対応する読み出し電圧及びベリファイ電圧を弱い消去動作を実行しない場合よりも低く設定できる。また、閾値電圧を低下できるため、弱い消去動作を実行しない場合よりも”0”データの閾値電圧分布と電圧Vreadとの間の電位差を大きくできる。このため、メモリセルトランジスタMCに書き込み可能な回数を、弱い消去動作を実行しない場合よりも多く設定できる場合がある。また、弱い消去動作を実行しない場合と同じ回数の書き込み動作を行う場合は、“1”データに対応する閾値電圧分布と“0”データに対応する閾値電圧分布との間の間隔を広くすることができ、ディスターブ等による閾値電圧分布の重なりを抑制できる。したがって、誤読み出しを抑制でき、信頼性を向上できる。
なお、実施形態は上記で説明した形態に限られず、種々の変形が可能である。例えば、第1乃至第6実施形態は、可能な限り組み合わせることができる。例えば、第4実施形態と第6実施形態とを組み合わせてもよい。より具体的には、SLCブロックBLKにおける消去(通常の消去動作)後2回目以降の書き込み動作に順次書き込み動作を適用する場合、消去後2回目以降の書き込み動作を実行する際に、対象ブロックBLKに対して弱い消去動作を実行してからワード線WL0を選択した書き込み動作を実行してもよい。
更に、上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム
2…ホストデバイス
100…メモリチップ
101…入出力回路
102…ロジック制御回路
103…ステータスレジスタ
104…アドレスレジスタ
105…コマンドレジスタ
106…シーケンサ
107…レディ/ビジー回路
108…電圧発生回路
109…メモリセルアレイ
110…ロウデコーダ
111…センスアンプ
112…データレジスタ
113…カラムデコーダ
200…コントローラ
210…ホストインターフェース回路
220…RAM
230…CPU
240…バッファメモリ
250…NANDインターフェース回路
260…BLK/WL管理部
261…WL状態管理部
262…BLK状態管理部
263…書き込み先選択部
264…コンパクションソース選択部

Claims (29)

  1. 第1メモリセルと、
    前記第1メモリセルに接続された第1ワード線と、
    消去動作、書き込み動作、及び読み出し動作において、前記第1ワード線に電圧を印加するロウデコーダと
    を備え、
    前記書き込み動作は、前記消去動作後から次の前記消去動作を実行するまでの第1期間内に前記第1メモリセルに対して複数回実行され、
    前記書き込み動作は、プログラム動作とベリファイ動作とを繰り返すプログラムループを含み、
    前記ロウデコーダは、前記ベリファイ動作のときに、前記第1ワード線に、前記第1期間内に前記第1メモリセルに対して前記書き込み動作が実行された回数に応じたベリファイ電圧を印加する、
    半導体記憶媒体。
  2. 前記ベリファイ電圧は、前記書き込み動作が実行された回数の増加に応じて高く設定される、
    請求項1記載の半導体記憶媒体。
  3. 前記読み出し動作時に前記第1ワード線に印加される読み出し電圧は、前記書き込み動作が実行された回数の増加に応じて高く設定される、
    請求項1または2に記載の半導体記憶媒体。
  4. 前記書き込み動作の1回目のプログラムループの前記プログラム動作におけるプログラム電圧は、前記書き込み動作が実行された回数の増加に応じて高く設定される、
    請求項1乃至3のいずれか一項に記載の半導体記憶媒体。
  5. 前記第1期間内に前記第1メモリセルに対して2回目の前記書き込み動作が実行される場合、前記第1メモリセルの閾値電圧を低下させる動作が実行された後に、前記書き込み動作が実行される、
    請求項1乃至4のいずれか一項に記載の半導体記憶媒体。
  6. 前記第1メモリセルは1ビットのデータを保持する、
    請求項1乃至5のいずれか一項に記載の半導体記憶媒体。
  7. 第1メモリセルと、前記第1メモリセルに接続された第1ワード線と、前記第1ワード線に電圧を印加するロウデコーダとを含む半導体記憶媒体と、
    前記半導体記憶媒体における消去動作、書き込み動作、及び読み出し動作を制御するように構成されたコントローラと
    を備え、
    前記書き込み動作は、プログラム動作とベリファイ動作とを繰り返すプログラムループを含み、
    前記コントローラは、前記半導体記憶媒体において、前記消去動作後から次の前記消去動作を実行するまでの第1期間内に、前記第1メモリセルに対して前記書き込み動作を複数回実行し、前記ベリファイ動作のときに、前記第1ワード線に、前記第1期間内に前記第1メモリセルに対して前記書き込み動作が実行された回数に応じたベリファイ電圧を印加するように構成されている、
    メモリシステム。
  8. 前記コントローラは、前記書き込み動作が実行された回数に対応する情報を管理する管理部を含む、
    請求項7に記載のメモリシステム。
  9. 前記コントローラは、前記書き込み動作において、前記半導体記憶媒体に、前記情報に基づいたパラメータを設定する第1コマンドセットと、前記書き込み動作を実行させる第2コマンドセットとを送信するように構成されている、
    請求項8に記載のメモリシステム。
  10. 前記コントローラは、前記読み出し動作において、前記半導体記憶媒体に、前記情報に基づいたパラメータを設定する第3コマンドセットと、前記読み出し動作を実行させる第4コマンドセットとを送信するように構成されている、
    請求項8または9に記載のメモリシステム。
  11. 前記書き込み動作において前記第1ワード線に印加されるプログラム電圧は、前記第1コマンドセットに基づいて設定される、
    請求項9に記載のメモリシステム。
  12. 前記第1メモリセルは1ビットのデータを保持する、
    請求項7乃至11のいずれか一項に記載のメモリシステム。
  13. 前記半導体記憶媒体は、
    前記第1メモリセルと直列に接続された第2メモリセルと、
    一端がソース線に接続され、他端に前記第1メモリセルが接続された選択トランジスタと、
    前記第2メモリセルに接続された第2ワード線と
    を更に含み、
    前記コントローラは、前記第1及び第2メモリセルにおける前記書き込み動作の実行回数を探索する場合、読み出し電圧を上昇させながら前記第1メモリセルの読み出し動作を複数回実行して、前記第1メモリセルにおける前記書き込み動作の前記実行回数を探索し、前記第1メモリセルにおける前記書き込み動作の前記実行回数に基づいて、前記第2メモリセルにおける前記読み出し電圧を設定するように構成されている、
    請求項8に記載のメモリシステム。
  14. 前記コントローラは、前記書き込み動作の前記実行回数を探索する前記動作の結果に基づいて、前記情報を作成する、
    請求項13に記載するメモリシステム。
  15. 各々が直列に接続された複数のメモリセルを含む複数のメモリストリングを有するメモリブロックと、前記複数のメモリセルにそれぞれ接続された複数のワード線とを含む半導体記憶媒体と、
    前記半導体記憶媒体における消去動作、書き込み動作、及び読み出し動作を制御するように構成されたコントローラと
    を備え、
    前記コントローラは、前記半導体記憶媒体において、前記消去動作後から次の前記消去動作を実行するまでの第1期間に、前記複数のメモリセルの少なくとも1つに前記書き込み動作を複数回実行するように構成されている、
    メモリシステム。
  16. 前記コントローラは、前記複数のワード線の各々に対応する前記書き込み動作の実行回数を管理するテーブルを有する、
    請求項15に記載のメモリシステム。
  17. 前記コントローラは、当該メモリブロックが有効データを含んでいる状態で前記第1期間内に前記複数のメモリセルのいずれかに2回目の前記書き込み動作を実行する場合に、前記複数のワード線の中から、接続された前記複数のメモリセルの各々が前記有効データを含んでいないワード線を、前記書き込み動作の実行先として選択可能な管理部を含む、
    請求項15または16に記載のメモリシステム。
  18. 前記管理部は、前記複数のワード線の各々に対応する前記書き込み動作の実行回数に基づいて、前記書き込み動作の前記実行先を選択するように構成されている、
    請求項17に記載のメモリシステム。
  19. 前記コントローラは、コンパクションを実行する場合に、ワード線単位で算出された統計量に基づいて、前記複数のワード線のうち少なくとも1つのワード線をコンパクションソースとして選択可能な管理部を含む、
    請求項15または16に記載のメモリシステム。
  20. 前記管理部は、前記複数のワード線の各々の前記書き込み動作の実行回数に基づいて、前記コンパクションソースを選択するように構成されている、
    請求項19に記載のメモリシステム。
  21. 前記複数のメモリセルの各々は、1ビットのデータを保持する、
    請求項15乃至20のいずれか一項に記載のメモリシステム。
  22. 第1のビット数のデータを保持し、各々が直列に接続された複数の第1メモリセルを含む複数の第1メモリストリングを有する第1メモリブロックと、前記第1のビット数よりも多い第2のビット数のデータを保持し、各々が直列に接続された複数の第2メモリセルを含む複数の第2メモリストリングを有する第2メモリブロックと、前記複数の第1メモリセルにそれぞれ接続された複数の第1ワード線と、前記複数の第2メモリセルにそれぞれ接続された複数の第2ワード線と、を含む半導体記憶媒体と、
    前記半導体記憶媒体における消去動作、書き込み動作、及び読み出し動作を制御するように構成されたコントローラと
    を備え、
    前記コントローラは、外部から書き込みデータを受信すると前記複数の第1メモリセルに前記書き込みデータを書き込んだ後に前記複数の第1メモリセルに格納された前記書き込みデータを前記複数の第2メモリセルに移動し、前記第1メモリブロックにおける前記消去動作後から前記第1メモリブロックにおける次の前記消去動作を実行するまでの第1期間内に、前記複数の第1メモリセルの少なくとも1つに、前記書き込み動作を複数回実行するように構成されている、
    メモリシステム。
  23. 前記コントローラは、前記半導体記憶媒体において前記複数の第1メモリセルの閾値電圧を低下させる動作を制御するように、更に構成され、
    前記複数の第1メモリセルは、複数回実行される前記書き込み動作の各々において選択される選択順序が予め設定されており、
    前記第1期間内における2回目の前記書き込み動作において、前記選択順序において最初に選択される前記第1メモリセルが選択された場合、前記閾値電圧を低下させる前記動作が実行された後に、前記書き込み動作が実行される、
    請求項22に記載のメモリシステム。
  24. 前記第1期間内における前記2回目の前記書き込み動作において、前記選択順序において、前記複数の第1メモリセルのうち、最初以外に選択される前記複数の第1メモリセルの少なくとも1つが選択された場合、前記閾値電圧を低下させる前記動作を実行せずに次の前記書き込み動作が実行される、
    請求項23に記載のメモリシステム。
  25. 前記コントローラは、前記複数の第1ワード線の中から対応する前記複数の第1メモリセルに保持される有効データ量が予め設定された閾値以下である第1ワード線を選択して、前記第1期間における2回目の前記書き込み動作を実行するように構成されている、
    請求項22に記載のメモリシステム。
  26. 前記閾値は0である、
    請求項25に記載のメモリシステム。
  27. 前記コントローラは、前記複数の第1ワード線の中に、接続された前記複数の第1メモリセルが有効データを含まない第1ワード線が含まれていない場合、前記書き込みデータを前記複数の第1メモリセルに書き込むことなく前記複数の第2メモリセルに書き込むように、更に構成されている、
    請求項22に記載のメモリシステム。
  28. 前記コントローラは、前記複数の第1ワード線の1つに接続された前記複数の第1メモリセルから有効データを読み出した後、前記複数の第1ワードの前記1つを書き込み先として、少なくとも前記有効データと前記外部から受信した前記書き込みデータとを含むデータの前記書き込み動作を実行するように構成されている、
    請求項25に記載のメモリシステム。
  29. 前記第1のビット数は、1である、
    請求項22乃至28のいずれか一項に記載のメモリシステム。
JP2020022377A 2020-02-13 2020-02-13 半導体記憶媒体及びメモリシステム Pending JP2021128810A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2020022377A JP2021128810A (ja) 2020-02-13 2020-02-13 半導体記憶媒体及びメモリシステム
US17/018,147 US11342026B2 (en) 2020-02-13 2020-09-11 Semiconductor memory medium and memory system
US17/572,279 US11615851B2 (en) 2020-02-13 2022-01-10 Semiconductor memory medium and memory system
US18/089,695 US11749350B2 (en) 2020-02-13 2022-12-28 Semiconductor memory medium and memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020022377A JP2021128810A (ja) 2020-02-13 2020-02-13 半導体記憶媒体及びメモリシステム

Publications (1)

Publication Number Publication Date
JP2021128810A true JP2021128810A (ja) 2021-09-02

Family

ID=77272800

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020022377A Pending JP2021128810A (ja) 2020-02-13 2020-02-13 半導体記憶媒体及びメモリシステム

Country Status (2)

Country Link
US (3) US11342026B2 (ja)
JP (1) JP2021128810A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11342026B2 (en) 2020-02-13 2022-05-24 Kioxia Corporation Semiconductor memory medium and memory system

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114281247B (zh) * 2021-11-29 2022-10-14 深圳三地一芯电子有限责任公司 一种基于混合介质的flash带宽分配方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100666174B1 (ko) 2005-04-27 2007-01-09 삼성전자주식회사 3-레벨 불휘발성 반도체 메모리 장치 및 이에 대한구동방법
US7948798B1 (en) 2009-07-22 2011-05-24 Marvell International Ltd. Mixed multi-level cell and single level cell storage device
JP2012069199A (ja) 2010-09-22 2012-04-05 Toshiba Corp 半導体記憶装置
KR101832934B1 (ko) 2012-01-27 2018-02-28 삼성전자주식회사 비휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그것의 블록 관리 방법, 프로그램 방법 및 소거 방법
KR20140021780A (ko) 2012-08-10 2014-02-20 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 제어 방법
WO2014137928A2 (en) * 2013-03-04 2014-09-12 Sandisk Technologies Inc. Dynamic erase depth for improved endurance of non-volatile memory
US9201728B2 (en) 2013-09-12 2015-12-01 Seagate Technology Llc Memory device with variable code rate
US9972396B1 (en) 2017-06-01 2018-05-15 Western Digital Technologies, Inc. System and method for programming a memory device with multiple writes without an intervening erase
US10943651B2 (en) 2018-08-03 2021-03-09 Toshiba Memory Corporation Semiconductor memory device, memory system, and write method
JP2021128810A (ja) 2020-02-13 2021-09-02 キオクシア株式会社 半導体記憶媒体及びメモリシステム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11342026B2 (en) 2020-02-13 2022-05-24 Kioxia Corporation Semiconductor memory medium and memory system
US11615851B2 (en) 2020-02-13 2023-03-28 Kioxia Corporation Semiconductor memory medium and memory system
US11749350B2 (en) 2020-02-13 2023-09-05 Kioxia Corporation Semiconductor memory medium and memory system

Also Published As

Publication number Publication date
US20220130462A1 (en) 2022-04-28
US11615851B2 (en) 2023-03-28
US11342026B2 (en) 2022-05-24
US20210257027A1 (en) 2021-08-19
US11749350B2 (en) 2023-09-05
US20230145598A1 (en) 2023-05-11

Similar Documents

Publication Publication Date Title
US11763893B2 (en) Memory system
US11004523B2 (en) Nonvolatile memory and memory system
CN107093465B (zh) 包括电压搜索单元的数据存储器装置
US7768844B2 (en) Nonvolatile semiconductor memory device and method of driving the same
US10332603B2 (en) Access line management in a memory device
JP2017054561A (ja) 半導体記憶装置及びメモリシステム
US11749350B2 (en) Semiconductor memory medium and memory system
CN108986861B (zh) 对非易失性存储器装置进行编程的方法
CN113257324A (zh) 存储器系统、存储器控制器以及操作存储器系统的方法
US11216208B1 (en) Memory system, memory controller, and operation method of memory system
JP2020013626A (ja) メモリシステム
US11372766B2 (en) Memory system, memory controller, and method of operating memory system
US10978161B2 (en) Memory system, memory controller and memory device
JP5010444B2 (ja) 半導体記憶装置およびその駆動方法
US11307807B2 (en) Memory system, memory controller, and method for operating memory system for determining read biases for read retry operation
US11645001B2 (en) Memory system and controlling method of memory system
US20230195367A1 (en) Memory system, memory controller, and operation method of memory system
KR20210155467A (ko) 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR20210054188A (ko) 메모리 시스템 및 메모리 컨트롤러