JP2020155052A - メモリシステムおよび制御方法 - Google Patents

メモリシステムおよび制御方法 Download PDF

Info

Publication number
JP2020155052A
JP2020155052A JP2019055415A JP2019055415A JP2020155052A JP 2020155052 A JP2020155052 A JP 2020155052A JP 2019055415 A JP2019055415 A JP 2019055415A JP 2019055415 A JP2019055415 A JP 2019055415A JP 2020155052 A JP2020155052 A JP 2020155052A
Authority
JP
Japan
Prior art keywords
data
write
command
volatile
volatile memory
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
JP2019055415A
Other languages
English (en)
Inventor
楠 金
Nan Jin
楠 金
加藤 亮一
Ryoichi Kato
亮一 加藤
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 JP2019055415A priority Critical patent/JP2020155052A/ja
Priority to US16/559,147 priority patent/US11086568B2/en
Priority to TW109103681A priority patent/TWI759686B/zh
Priority to CN202010145584.7A priority patent/CN111722795A/zh
Publication of JP2020155052A publication Critical patent/JP2020155052A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

【課題】書き込み効率を改善可能なメモリシステムを実現する。【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラとを具備する。前記コントローラは、外部から受信したライトコマンドそれぞれに関連付けられたライトデータを受信して前記揮発性メモリに格納する。前記コントローラは、データの不揮発化を要求する第1のコマンドを受信した場合、格納した前記ライトデータを、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリに書き込む。前記コントローラは、データの不揮発化を要求する第1のコマンドを受信した場合、格納した前記ライトデータのうち、前記書き込み単位に相当するサイズに満たない第1の端数データを前記不揮発性メモリに書き込む処理を保留する。前記コントローラは、前記第1のコマンドの完了を示す応答を返信する。【選択図】 図8

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
SSDのようなメモリシステムにおいては、データの不揮発化を要求するコマンド(例えば、Flushコマンドなど)が用いられる場合がある。データの不揮発化を要求するコマンドは、未書き込みデータを不揮発性メモリに書き込む処理(「不揮発化処理」とも云う)の実行をメモリシステムに要求するためにホストによって使用される。
特開2009−282696号公報 特開2008−112285号公報 特開2005−182538号公報
本発明が解決しようとする課題は、書き込み効率を改善可能なメモリシステムおよび制御方法を提供することである。
実施形態によれば、メモリシステムは、不揮発性メモリと、揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとを制御するコントローラとを具備する。前記コントローラは、外部から受信したライトコマンドそれぞれに関連付けられたライトデータを受信して前記揮発性メモリに格納する。前記コントローラは、データの不揮発化を要求する第1のコマンドを受信した場合、格納した前記ライトデータを、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリに書き込む。前記コントローラは、データの不揮発化を要求する第1のコマンドを受信した場合、格納した前記ライトデータのうち、前記書き込み単位に相当するサイズに満たない第1の端数データを前記不揮発性メモリに書き込む処理を保留する。前記コントローラは、前記第1のコマンドの完了を示す応答を返信する。
本発明の実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。 本発明の実施形態に係る不揮発性メモリの構成例を示す図。 本発明の実施形態に係る不揮発性メモリがトリプルレベルセル(TLC)−NANDフラッシュである場合の書き込み単位の例を示す図。 本発明の実施形態に係る不揮発性メモリ内のあるブロックにシングルレベルセル(SLC)モードでデータを書き込む場合の書き込み単位の例を示す図。 本発明の比較例に係る不揮発化処理のパディングを使用して端数データをTLC−NANDフラッシュに書き込む例を示す図。 本発明の比較例に係る不揮発化処理の端数データをpSLCブロックに一時的に退避する例を示す図。 本発明の実施形態に係るメモリシステムの不揮発化処理の例を示す図。 本発明の実施形態に係るメモリシステムによって実行される不揮発化処理の手順を示すフローチャート。 本発明の実施形態に係るメモリシステム内のライトバッファ処理部と不揮発化処理制御部とによって実行される不揮発化処理の手順を示すシーケンス図。
以下、図面を参照して、本発明の実施形態を説明する。
図1は、本発明の実施形態に係るメモリシステムを含む情報処理システム1の構成例を示すブロック図である。
メモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成されたストレージデバイスである。メモリシステムは、例えば、ソリッドステートドライブ(SSD)として実現されてもよいし、メモリカードとして実現されてもよい。以下では、メモリシステムが、ソリッドステートドライブ(SSD)として実現されている場合について説明する。
情報処理システム1は、ホスト(ホストデバイス)2と、メモリシステム3とを含む。ホスト2は、パーソナルコンピュータやサーバ、携帯電話、撮像装置であってもよいし、タブレット、スマートフォンなどの携帯端末であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
メモリシステム3は、メモリシステム3の外部の情報処理装置であるホスト2の記憶装置として機能し得る。メモリシステム3は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とメモリシステム3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)、ユニバーサルシリアルバス(USB)、Mobile Industry Processor Interface(MIPI)、UniPro等を使用し得る。
メモリシステム3は、コントローラ4および不揮発性メモリ5を備える。不揮発性メモリ5は、例えばNAND型フラッシュメモリである。不揮発性メモリ5は、複数のNAND型フラッシュメモリチップを含んでいてもよい。コントローラ4は、不揮発性メモリ5に電気的に接続される。コントローラ4は、不揮発性メモリ5を制御するメモリコントローラである。このコントローラ4は、System−on−a−chip(SoC)のような回路によって実現されてもよい。
不揮発性メモリ5は、メモリセルアレイを有する1以上のNAND型フラッシュメモリチップを有する。メモリセルアレイは、マトリクス状に配列された複数のメモリセルを有する。不揮発性メモリ5のメモリセルアレイは、複数のブロック(物理ブロック)を含む。これらブロックの各々は、データを消去する単位である。複数のブロックの各々は、複数のページを含む。各ページは、データの書き込みおよび読み出しの単位である。
不揮発性メモリ5は、1メモリセル当たり1ビットを格納するシングルレベルセル(SLC)−フラッシュメモリとして実現されてもよい。あるいは、不揮発性メモリ5は、1メモリセル当たり2ビットを格納するマルチレベル(MLC)−フラッシュメモリ、1メモリセル当たり3ビットを格納するトリプルレベル(TLC)−フラッシュメモリ、または、1メモリセル当たり4ビットを格納するクワドレベル(QLC)−フラッシュメモリとして実現されてもよい。
以下の説明では、これに限定されないが、不揮発性メモリ5がTLC−フラッシュメモリとして実現されている場合について説明する。
コントローラ4は、ホストインタフェース(ホストI/F)41、ライトバッファ42、NANDインタフェース(NAND I/F)43、ライトバッファ処理部44、不揮発化処理制御部45、端数データ用のNANDライト処理部46、非端数データ用のNANDライト処理部47、等を含む。
ホストインタフェース41は、メモリシステム3とメモリシステム3の外部の情報処理装置であるホスト2との通信を行うハードウェアインターフェースである。ホストインタフェース41は、ホスト2から様々なコマンドとライトデータとを受信する処理、および応答およびデータをホスト2へ送信する処理を実行する。受信するコマンドの例には、ライトコマンド、リードコマンド、データの不揮発化を要求するコマンド、等が含まれる。
ライトコマンドは、メモリシステム3に対して、データの書き込みを要求するコマンドである。ライトコマンドは、書き込むべきデータ(ライトデータ)に対応する論理アドレス(開始論理アドレス)、長さ、データポインタ等を指定する。
開始論理アドレスは、ライトデータに対応する論理アドレス範囲の最初の論理アドレスを示す。この開始論理アドレスは、論理ブロックアドレス(LBA)によって表されてもよいし、あるいは、論理クラスタアドレス(LCA)によって表されてもよい。LBAは、セクタのような論理ブロックの単位で論理アドレス空間内のアドレスを指定する。LCAは、クラスタの単位で論理アドレス空間内のアドレスを指定する。
1つのクラスタは連続する複数のセクタ(例えば、8個のセクタ、16個のセクタ、または32個のセクタ、等)を含む。例えば、1つのクラスタが8個のセクタを含み、且つ1つのセクタのサイズが512バイトであるケースにおいては、一つのクラスタのサイズは4Kバイト(4KB)となる。
長さは、ライトデータの長さ、つまりライトデータのサイズを示す。データポインタは、ライトデータが存在しているホストメモリ内の位置を示す。ホストメモリは、ホスト2内に存在するメモリである。
リードコマンドは、メモリシステム3に対して、データの読み出しを要求するコマンドである。リードコマンドは、読み出すべきデータに対応する開始論理アドレス、読み出すべきデータの長さ、読み出すべきデータが転送されるべきホストメモリ内の位置を示すデータポインタ等を指定する。
データの不揮発化を要求するコマンドは、メモリシステム3に対して、ライトバッファ42に格納されている未書き込みデータを不揮発性メモリ5に書き込む処理(「不揮発化処理」とも称する)の実行を要求する。
データの不揮発化を要求するコマンドの例には、Flushコマンド、Write−FUA(force unit access)コマンド、等が含まれる。Flushコマンド(以下、フラッシュコマンドと表記する)は、このフラッシュコマンドの発行の前にライトバッファ42に既に格納されている全ての未書き込みデータを不揮発性メモリ5に書き込む不揮発化処理の実行を要求する。例えば、フラッシュコマンドは、このフラッシュコマンドの発行前に完了した全コマンドに対応するデータを不揮発性メモリ5に確定(COMMIT)するために使用される。このフラッシュコマンドの発行時にライトバッファ42に格納されている未書き込みデータの終端位置までが、このフラッシュコマンドに対応する不揮発化処理の対象データとなる。
Write−FUAコマンドは、フォースユニットアクセス(FUA)がイネーブルされたライトコマンドである。Write−FUAコマンドは、ライトコマンドとフラッシュコマンドとのペアと等価な機能を有するコマンドである。
ライトバッファ42は、メモリシステム3が受信したライトデータを一時的に格納する揮発性メモリである。ライトバッファ42は、例えば、スタティックRAM(SRAM)またはダイナミックRAM(DRAM)によって実現される。
NANDインタフェース43は、メモリシステム4と揮発性メモリ5との間の通信を行うハードウェアインターフェースである。NANDインタフェース43は、複数のチャンネルを介して、不揮発性メモリ5に含まれる複数のNAND型フラッシュメモリチップに接続されてもよい。
ライトバッファ処理部44は、ホスト2からコマンドを受信し、受信したコマンドをコントローラ4内のコマンドキュー44Aに格納する。コマンドキュー44Aはライトバッファ処理部44内に存在してもよい。
ライトバッファ処理部44は、コマンドキュー44A内に格納されているコマンド群から処理対象のコマンドを取得する。処理対象のコマンドがライトコマンドである場合、ライトバッファ処理部44は、このライトコマンドに関連付けられたライトデータをホスト2から受信する。そして、ライトバッファ処理部44は、受信したライトデータをライトバッファ42に格納する。さらに、ライトバッファ処理部44は、このライトコマンドを不揮発化処理制御部45に送信する処理を実行してもよい。
処理対象コマンドが、データの不揮発化を要求するコマンド(例えばフラッシュコマンド)である場合も、ライトバッファ処理部44は、このコマンド(例えばフラッシュコマンド)を不揮発化処理制御部45に送信する処理を実行してもよい。
不揮発化処理制御部45は、端数データ用のNANDライト処理部46と非端数データ用のNANDライト処理部47とを選択的に用いて、ライトバッファ42に格納されているライトデータを不揮発性メモリ5に書き込む処理(不揮発化処理)を実行する。不揮発化処理制御部45は、ライトデータが書き込まれるべき不揮発性メモリ5内の記憶位置(書き込み先位置)を決定する。書き込み先位置は、例えば、不揮発性メモリ5の書き込み単位と同じサイズを有するデータ毎に決定されてもよい。
処理対象のライトコマンドそれぞれに対応する書き込み処理においては、不揮発化処理制御部45は、ライトバッファ42内のライトデータを、不揮発性メモリ5の書き込み単位に対応するサイズを有するデータの単位で、不揮発性メモリ5に書き込む。この書き込み単位に対応するサイズは、不揮発性メモリ5として使用されるメモリ製品に依存する。
書き込み単位に対応するサイズは限定されないが、一例を挙げれば、不揮発性メモリ5がTLC−フラッシュメモリによって実現され且つ不揮発性メモリ5のページサイズが4クラスタ(=16KB)であるケースにおいては、書き込み単位は、例えば、12クラスタ(=4クラスタ×3ページ)であってもよい。
不揮発化処理制御部45は、ライトバッファ42に格納されているライトデータのサイズが書き込み単位に達する度に、この書き込み単位に対応するサイズを有するライトデータ(非端数データ)を、非端数データ用のNANDライト処理部47を用いて不揮発性メモリ5内の書き込み先ブロック(TLCブロック)に書き込む。
例えば、あるライトコマンドに対応するライトデータのサイズが18クラスタである場合、不揮発化処理制御部45の制御の下、非端数データ用のNANDライト処理部47は、この18クラスタ分のライトデータのうち、書き込み単位に対応するサイズ(例えば12クラスタ)を有するライトデータ部(非端数データ)を不揮発性メモリ5のTLCブロックに書き込む。この18クラスタ分のライトデータのうち、残りの6クラスタ分のライトデータは、書き込み単位に満たないサイズを有する端数データである。
後続のライトコマンドに関連付けられたライトデータの受信によって、ライトバッファ42に格納されている未書き込みデータの総サイズは増える。ライトバッファ42に格納されている未書き込みデータの総サイズが書き込み単位に達した場合、不揮発化処理制御部45の制御の下、非端数データ用のNANDライト処理部47は、ライトバッファ42に格納されている未書き込みデータ(例えば12クラスタを有する非端数データ)を不揮発性メモリ5のTLCブロックに書き込む。
このようにして、受信したライトコマンドそれぞれに関連付けられたライトデータは、不揮発性メモリ5の書き込み単位に対応するサイズを有するデータの単位で不揮発性メモリ5に書き込まれる。
また、不揮発化処理制御部45は、不揮発性メモリ5の書き込み単位に満たないサイズを有する端数データを不揮発性メモリ5に書き込む不揮発化処理が実行される回数を減らすために、幾つかの端数データを一緒に不揮発性メモリ5のTLCブロックに書き込む処理を実行することができる。
端数データを不揮発性メモリ5に書き込む不揮発化処理は、データの不揮発化を要求するコマンド(例えばフラッシュコマンド)を実行する場合に必要となる場合がある。しかしながら、もしフラッシュコマンドの受信の度に、端数データを不揮発性メモリ5に書き込む不揮発化処理が実行されたならば、これら不揮発化処理によってメモリシステム3のライトアンプリフィケーションファクタ(WAF)が増加され、ひいてはメモリシステム3の寿命が低下される可能性がある。
なぜなら、通常、端数データを不揮発性メモリ5に書き込むためには、端数データにダミーデータを加えるパディングを実行することが必要とされるからである。
あるいは、パディングの量を減らすために、端数データを、TLCブロックよりも小さな書き込み単位を有する不揮発性メモリ5内の別の領域(例えば、メモリセル当たりに1ビットを書き込むSLCモードでデータが書き込まれるブロック、つまりSLCブロック)に一時的に退避するという方法が使用されてもよい。しかし、この方法が使用された場合においても、最終的には、端数データをこのSLCブロックからTLCブロックに書き戻すことが必要とされる。よって、この方法が使用されたケースにおいても、書き込み動作の回数が増えるので、メモリシステム3のライトアンプリフィケーションファクタ(WAF)が増加される可能性がある。
図2は、本発明の実施形態に係る不揮発性メモリの構成例を示す図である。
一つのブロック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がTLC−NANDフラッシュNAND(TLC)である場合は、同一ワード線WLに接続されるメモリセルトランジスタMTの組は3つのページ(ロアーページ、ミドルページ、アッパーページ)として機能する。
また、複数のワード線WLは、ストリングユニットSU0〜SU3に共通接続されている。したがって、ある一つのワード線に関しては、このワード線に接続されるメモリセルトランジスタMTの集合は4つのグループ(つまり、ストリングユニットSU0に属するメモリセルトランジスタMT群、ストリングユニットSU1に属するメモリセルトランジスタMT群、ストリングユニットSU2に属するメモリセルトランジスタMT群、ストリングユニットSU3に属するメモリセルトランジスタMT群)を分割される。一つのグループが一つの書き込み単位として使用される。
図3は、本発明の実施形態に係る不揮発性メモリ5がTLC−NANDフラッシュNAND(TLC)である場合の書き込み単位の例を示す図である。
不揮発性メモリ5のブロックBLKは、ワード線WL0に接続されたメモリセルトランジスタの集合、ワード線WL1に接続されたメモリセルトランジスタの集合、…、ワード線WL(n−1)に接続されたメモリセルトランジスタの集合とを含む。ブロックBLKは、上述のTLCブロックとして使用される。
ブロックBLKにデータを書き込む動作においては、まず、ワード線WL0に接続され且つストリングユニットSU0に属しているメモリセルトランジスタ群に対して3つのページ(ロアーページ、ミドルページ、アッパーページ)に対応するデータが書き込まれる。次いで、ワード線WL0に接続され且つストリングユニットSU1に属するメモリセルトランジスタ群に対して3つのページ(ロアーページ、ミドルページ、アッパーページ)に対応するデータが書き込まれる。そしてワード線WL0のストリングユニットSU3に属するメモリセルトランジスタ群に対して3つのページ(ロアーページ、ミドルページ、アッパーページ)に対応するデータが書き込まれると、書き込み対象のワード線はWL1に変更される。
したがって、同一ワード線および同一ストリングユニットに属するメモリセルトランジスタ群が一つの書き込み単位として機能する。書き込み単位に対応するサイズは、同一ワード線および同一ストリングユニットに属するメモリセルトランジスタ群に書き込まれる3ページ(ロアーページ、ミドルページ、アッパーページ)分のデータのサイズとなる。
図4は、本発明の実施形態に係る不揮発性メモリ5内のあるブロックにSLCモードでデータを書き込む場合の書き込み単位の例を示す図である。
あるブロックにSLCモードでデータを書き込む場合においては、同一ワード線および同一ストリングユニットに属するメモリセルトランジスタ群に一つのページ(例えばロアーページ)に対応するデータのみが書き込まれる。このブロックはSLCブロックまたは疑似SLC(pSLC)ブロックと称される。
pSLCブロックに適用される書き込み単位のサイズは、同一ワード線および同一ストリングユニットに属するメモリセルトランジスタ群に書き込まれる一つのページに対応するサイズとなる。
図5は、本発明の比較例に係る不揮発化処理のパディングを使用して端数データをTLC−NANDフラッシュに書き込む例を示す図である。
図5においては、ライトコマンドW1、フラッシュコマンドF1、ライトコマンドW2、フラッシュコマンドF2、ライトコマンドW3、フラッシュコマンドF3という順序でこれらコマンドをメモリシステム3が受信した場合が想定されている。
ライトコマンドW1に関連付けられたライトデータ(D11〜D14)は、TLC−NANDフラッシュの書き込み単位(3ページ分のデータ)よりも僅かに大きいサイズを有している。ライトコマンドW1に後続してフラッシュコマンドF1がホスト2によって発行される。ライトバッファ42においては、ライトデータ(D11〜D14)が格納されている。この場合、端数データ(D14)を含むライトデータ(D11〜D14)全体がTLC−NANDフラッシュに書き込まれるべき不揮発化処理の対象となる(Flush対象)。
まず、書き込み単位に対応する3ページ分のデータ(D11、D12、D13)が、TLC−NANDフラッシュ内のある書き込み先ブロック(TLCブロック)に書き込まれる。このTLCブロックにおいて、3ページ分のデータ(D11、D12、D13)は、あるワード線WLxに接続され且つストリングユニットSU0に属しているメモリセルトランジスタ群に、書き込まれる。
次いで、端数データ(D14)にダミーデータのようなデータを加えるパディングが実行され、これによってワード線WLxに接続され且つストリングユニットSU1に属しているメモリセルトランジスタ群に、書き込み単位に対応する3ページ分のデータが書き込まれる。
これにより、ライトコマンドW1に関連付けられたライトデータ(D11〜D14)の不揮発化処理が完了し、ライトデータ(D11〜D14)はライトバッファ42から破棄される。
ライトコマンドW2に関連付けられたライトデータ(D21、D22)のサイズは1ページ+αであるので、ライトデータ(D21、D22)は、書き込み単位に満たない端数データである。ライトコマンドW2に後続してフラッシュコマンドF2がホスト2によって発行される。ライトバッファ42においては、ライトデータ(D21、D22)が格納されている。この場合、書き込み単位に満たない端数データであるライトデータ(D21、D22)全体がTLC−NANDフラッシュに書き込まれるべき不揮発化処理の対象となる(Flush対象)。
ライトバッファ42に格納されている現在の未書き込みデータはライトデータ(D21、D22)のみである。このため、端数データであるライトデータ(D21、D22)にダミーデータのようなデータを加えるパディングが実行され、これによってワード線WLxに接続され且つストリングユニットSU2に属しているメモリセルトランジスタ群に、書き込み単位に対応する3ページ分のデータが書き込まれる。
ライトコマンドW2に関連付けられたライトデータ(D21、D22)の不揮発化処理が完了すると、ライトデータ(D21、D22)はライトバッファ42から破棄される。
ライトコマンドW3に関連付けられたライトデータ(D31、D32)は、1.5ページ程度のサイズを有する端数データである。ライトコマンドW3に後続してフラッシュコマンドF3がホスト2によって発行される。ライトバッファ42においては、端数データであるライトデータ(D31、D32)が格納されている。この場合、端数データであるライトデータ(D31、D32)全体がTLC−NANDフラッシュに書き込まれるべき不揮発化処理の対象となる(Flush対象)。
ライトバッファ42に格納されている現在の未書き込みデータはライトデータ(D31、D32)のみである。従って、ライトデータ(D31、D32)にダミーデータのようなデータを加えるパディングが実行され、これによってワード線WLxに接続され且つストリングユニットSU3に属しているメモリセルトランジスタ群に書き込み単位に対応する3ページ分のデータが書き込まれる。
このように、ライトコマンドとフラッシュコマンドの複数のペアを連続してメモリシステム3が受信するようなケースにおいては、端数データを不揮発性メモリ5に書き込む不揮発化処理を何度も実行しなければならず、これによってライトアンプリフィケーションファクタ(WAF)が増加する。
図6は、本発明の比較例に係る不揮発化処理の端数データをpSLCブロックに一時的に退避する例を示す図である。
まず、3ページ分のデータ(D11、D12、D13)が、TLC−NANDフラッシュ内のある書き込み先ブロック(TLCブロック)に書き込まれる。このTLCブロックにおいて、3ページ分のデータ(D11、D12、D13)は、あるワード線WLxに接続され且つストリングユニットSU0に属しているメモリセルトランジスタ群に、書き込まれる。次いで、端数データ(D14)がpSLCブロックに一時的に退避される。pSLCブロックにおいては、ワード線WLyに接続され且つストリングユニットSU0に属しているメモリセルトランジスタ群は1ページを構成する。pSLCブロックにおいては、ページサイズよりも小さい単位でデータを書き込むことができる。pSLCブロックにおいては、この端数データ(D14)は、ワード線WLyに接続され且つストリングユニットSU0に属しているメモリセルトランジスタ群の一部にSLCモードで書き込まれる。
これにより、ライトコマンドW1に関連付けられたライトデータ(D11〜D14)の不揮発化処理が完了し、ライトデータ(D11〜D14)はライトバッファ42から破棄される。
ライトコマンドW2に関連付けられたライトデータ(D21、D22)は、1ページ+αのサイズを有する端数データである。ライトコマンドW2に後続してフラッシュコマンドF2が受信されているので、端数データであるライトデータ(D21、D22)全体がTLC−NANDフラッシュに書き込まれるべき不揮発化処理の対象となる(Flush対象)。
ライトバッファ42に格納されている現在の未書き込みデータはライトデータ(D21、D22)のみである。このため、コントローラ4は、端数データであるライトデータ(D21、D22)をpSLCブロックに一時的に退避する。
この場合、端数データ(D21)は、ワード線WLyに接続され且つストリングユニットSU0に属しているメモリセルトランジスタ群の残り部分にSLCモードで書き込まれる。端数データ(D22)は、ワード線WLxに接続され且つストリングユニットSU1に属しているメモリセルトランジスタ群の一部に書き込まれる。
これにより、ライトコマンドW2に関連付けられたライトデータ(D21〜D22)の不揮発化処理が完了する。コントローラ4は、ライトデータ(D21〜D22)はライトバッファ42から破棄する。
ライトコマンドW3に関連付けられたライトデータ(D31、D32)は、1.5ページ程度のサイズを有する端数データである。ライトコマンドW3に後続してフラッシュコマンドF3が受信されているので、端数データであるライトデータ(D31、D32)全体がTLC−NANDフラッシュに書き込まれるべき不揮発化処理の対象となる(Flush対象)。
ライトバッファ42に格納されている現在の未書き込みデータはライトデータ(D31、D32)のみである。従って、コントローラ4は、端数データであるライトデータ(D31、D32)をpSLCブロックに一時的に退避する。
この場合、データ(D31)は、ワード線WLyに接続され且つストリングユニットSU1に属しているメモリセルトランジスタ群の残り部分にSLCモードで書き込まれ、データ(D32)はワード線WLxに接続され且つストリングユニットSU2に属しているメモリセルトランジスタ群にSLCモードで書き込まれる。
このように、端数データをpSLCブロックに一時的に退避することによってパディング量を減少することができる。しかし、pSLCブロックに一時的に退避されたデータ(D14、D21、D22、D31、D32)は、最終的には、TLC−NANDフラッシュのTLCブロックに書き戻さなければならない。よって、ライトアンプリフィケーションファクタ(WAF)が増加される。
図7は、本発明の実施形態に係るメモリシステム3の不揮発化処理の例を示す図である。
本実施形態では、コントローラ4の不揮発化処理制御部45は、データの不揮発化を要求するコマンド(例えばフラッシュコマンド)をメモリシステム3が受信した場合、書き込み単位に対応するサイズに満たないサイズを有するライトバッファ42内の端数データを不揮発性メモリ5に書き込む不揮発化処理の実行を保留する。つまり、端数データをpSLCブロックに一時的に退避する処理は実行されない。また、端数データを、パディングを使用してTLC−NANDフラッシュに書き込む処理も実行されない。
そして、不揮発化処理制御部45は、後続のライトデータの受信によってこの端数データを含むライトバッファ42内の現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達した場合、現在の未書き込みデータを不揮発性メモリ5(例えばTLC−NANDフラッシュ)に書き込む不揮発化処理を実行する。さらに、不揮発化処理制御部45は、不揮発化処理の実行が保留されていた上述のフラッシュコマンドの完了を示す応答をホスト2に返す処理も実行する。
このように、本実施形態では、コントローラ4の不揮発化処理制御部45は、端数データを不揮発性メモリ5に書き込むというフラッシュコマンドに対応する不揮発化処理の実行を一時保留して、書き込み単位分のデータが揃ってから、書き込み単位分のデータを不揮発性メモリ5に書き込む処理とフラッシュコマンドの完了をホスト2に通知する処理とを実行する。これにより、フラッシュコマンドの受信からこのフラッシュコマンドの完了を示す応答をホスト2に返すまでに要する時間は長くなるものの、端数データをpSLCブロックに一時的に退避する処理や、端数データを、パディングを使用してTLC−NANDフラッシュに書き込む処理は実行されないので、書き込み効率を改善することができる。
以下、ライトコマンドW1、フラッシュコマンドF1、ライトコマンドW2、フラッシュコマンドF2、ライトコマンドW3、フラッシュコマンドF3という順序でこれらコマンドをメモリシステム3が受信した場合を例示して、不揮発化処理制御部45によって実行される不揮発化処理の例を説明する。
ライトコマンドW1に関連付けられたライトデータ(D11〜D14)は、TLC−NANDフラッシュの書き込み単位(3ページ分のデータ)よりも僅かに大きいサイズを有している。まず、ライトバッファ42内の3ページ分のデータ(D11、D12、D13)が、TLC−NANDフラッシュ内のある書き込み先ブロック(TLCブロック)に書き込まれる。このTLCブロックにおいて、3ページ分のデータ(D11、D12、D13)は、あるワード線WLxに接続され且つストリングユニットSU0に属しているメモリセルトランジスタ群に、書き込まれる。
ライトバッファ42に格納されている未書き込みデータは、端数データ(D14)となる。したがって、不揮発化処理制御部45は、端数データ(D14)を不揮発性メモリ5に書き込む不揮発化処理、つまりフラッシュコマンドF1に対応する不揮発化処理、の実行を保留する。この場合、端数データ(D14)を、パディングを使用してTLC−NANDフラッシュに書き込む処理、および端数データ(D14)をpSLCブロックに退避する処理のどちらも実行されず、端数データ(D14)はライトバッファ42内に維持される。
ライトコマンドW1に関連付けられたライトデータ(D11〜D14)の一部(D11、D12、D13)に対する不揮発化処理は実行されているので、実際には、フラッシュコマンドF1に対応する不揮発化処理の一部は完了している。しかし、端数データ(D14)の不揮発化処理は保留されているので、この時点では、不揮発化処理制御部45は、フラッシュコマンドF1の完了を示す応答をホスト2に返さない。
フラッシュコマンドF1に対応する不揮発化処理の実行を保留した後、不揮発化処理制御部45は、後続のライトデータの受信によってライトバッファ42内の現在の未書き込みデータの総サイズがTLC−NANDフラッシュの書き込み単位に対応するサイズに達するのを待つ。
端数データ(D14)を不揮発性メモリ5に書き込む不揮発化処理の実行が保留されてからライトバッファ42内の現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達するまでの期間中に受信される各フラッシュコマンドに対応する不揮発化処理の実行も保留される。したがって、本実施形態では、メモリシステム3が受信したコマンドは、ライトコマンドW1、フラッシュコマンドF1、ライトコマンドW2、ライトコマンドW3、フラッシュコマンドF2、フラッシュコマンドF3という順序で処理される。
具体的には、不揮発化処理制御部45は、以下の処理を実行する。
まず、ライトコマンドW2およびフラッシュコマンドF2の処理においては、不揮発化処理制御部45は、端数データ(D14)とライトコマンドW2に関連付けられたライトデータ(D21、D22)とを含む現在の未書き込みデータの総サイズを求める。不揮発化処理制御部45は、現在の未書き込みデータの総サイズがTLC−NANDフラッシュの書き込み単位未満であるか否かを判定する。
ライトバッファ42内の現在の未書き込みデータの総サイズが書き込み単位未満である場合、不揮発化処理制御部45は、端数データ(D14)とライトデータ(D21、D22)とを含む現在の未書き込みデータを不揮発性メモリ5に書き込む不揮発化処理、つまりフラッシュコマンドF2に対応する不揮発化処理、の実行を保留する。この場合、現在の未書き込みデータ(端数データ(D14)および後続のライトデータ(D21、D22))を、パディングを使用してTLC−NANDフラッシュに書き込む処理、およびpSLCブロックに退避する処理のどちらも実行されず、現在の未書き込みデータはライトバッファ42内に維持される。
ライトコマンドW3およびフラッシュコマンドF3の処理においては、不揮発化処理制御部45は、端数データ(D14)とライトコマンドW2に関連付けられたライトデータ(D21、D22)とライトコマンドW3に関連付けられた後続のライトデータ(D31、D32)とを含む現在の未書き込みデータの総サイズを求める。
不揮発化処理制御部45は、現在の未書き込みデータの総サイズがTLC−NANDフラッシュの書き込み単位未満であるか否かを判定する。
本例では、ライトバッファ42内の現在の未書き込みデータの総サイズが書き込み単位に達している。したがって、不揮発化処理制御部45は、現在の未書き込みデータ(D14、D21、D22、D31、D32)をワード線WLxに接続され且つストリングユニットSU1に属しているメモリセルトランジスタ群に書き込む不揮発化処理を実行する。
そして、不揮発化処理制御部45は、フラッシュコマンドF1の完了とフラッシュコマンドF2の完了とフラッシュコマンドF3の完了とを示す応答をホスト2に返す。
なお、ライトコマンドW3に関連付けられたライトデータのサイズが大きい場合には、現在の未書き込みデータのサイズは書き込み単位+αとなる。この場合、ライトコマンドW3に関連付けられたライトデータの一部の不揮発化処理は実行されるが、このライトデータの残り部分(端数データ)の不揮発化処理の実行は保留される。よって、この時点で瀬は、不揮発化処理制御部45は、フラッシュコマンドF1の完了とフラッシュコマンドF2の完了とを示す応答のみをホスト2に返し、フラッシュコマンドF3の完了を示す応答をホスト2に返さない。
このように、本実施形態では、現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達する前に、データの不揮発化を要求するフラッシュコマンドF2をメモリシステム3が受信した場合、不揮発化処理制御部45は、現在の未書き込みデータを不揮発性メモリ5に書き込む不揮発化処理の実行を保留する。そして、後続のライトデータの受信によって現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達した場合、不揮発化処理制御部45は、現在の未書き込みデータを不揮発性メモリ5に書き込む不揮発化処理と、フラッシュコマンドF1の完了とフラッシュコマンドF2の完了とを示す応答をホスト2に返す処理とを実行する。
図8は、本発明の実施形態に係るメモリシステムによって実行される不揮発化処理の手順を示すフローチャートである。
コントローラ4のライトバッファ処理部44は、コマンドキュー44A内に格納されているコマンド群から処理対象のコマンドを一つ取得する。そして、ライトバッファ処理部44は、処理対象のコマンドが何かを判断する(ステップS10)。
S10において取得した処理対象のコマンドがライトコマンドであると判断した場合(S10 ライトコマンド)、コントローラ4のライトバッファ処理部44は、処理対象のコマンドであるライトコマンドに関連付けられたライトデータを受信してライトバッファ42に格納する(ステップS11)。ステップS11では、ライトバッファ処理部44は、ライトコマンドによって指定されるデータポインタおよび長さに基づいて、このライトコマンドに関連付けられたライトデータをホストメモリから取得し、取得したライトデータをライトバッファ42に格納する。
ライトデータの格納が完了すると、コントローラ4は、ライトコマンドの完了を示す応答をホスト2に返信し(ステップS12)、処理を終了する(終了)。
S10において取得したライトバッファ処理部44が処理対象のコマンドがフラッシュコマンドであると判断した場合(S10 フラッシュコマンド)、コントローラ4の不揮発化処理制御部45は、ライトバッファ42に蓄積されているライトデータのサイズをカウントする。そして、不揮発化処理制御部45は、ライトバッファ42に蓄積されているライトデータのサイズがTLC−NANDフラッシュである不揮発性メモリ5の書き込み単位以上か否かを判断する(ステップS13)。
ライトバッファ42に蓄積されているライトデータのサイズが不揮発性メモリ5の書き込み単位以上であると判断した場合(ステップS13 YES)、不揮発化処理制御部45は、ライトバッファ42に蓄積されているライトデータのうち、TLC−NANDフラッシュである不揮発性メモリ5の書き込み単位に相当する部分(非端数データ)をライトバッファ42から取得し(ステップS14)、取得したライトデータ(非端数データ)をTLC−NANDフラッシュである不揮発性メモリ5に書き込む(ステップS15、不揮発化処理)。
ライトバッファ42に蓄積されているライトデータのサイズが不揮発性メモリ5の書き込み単位以上ではないと判断した場合(ステップS13 NO)、不揮発化処理制御部45は、処理対象のコマンドであるフラッシュコマンドを保留し(ステップS18)、処理を終了する(終了)。
S15の不揮発化処理が完了した後、不揮発化処理制御部45は、処理が完了したフラッシュコマンドを特定する(ステップS16)。S16では、S18で保留されたフラッシュコマンドを含め、複数のフラッシュコマンドが特定されることがある。そして、不揮発化処理制御部45は、S16で特定したフラッシュコマンドの完了を示す応答をホスト2に返信し(ステップS17)、処理を終了する(終了)。
このようにして、書き込み単位に対応するサイズを有するライトデータ(非端数データ)がライトバッファ42に揃う度に、非端数データをTLC−NANDフラッシュに書き込む不揮発化処理が実行される。これにより、ライトバッファ42に残っている未書き込みライトデータは端数データのみとなる。
図9は、本発明の実施形態に係るメモリシステム内のライトバッファ処理部と不揮発化処理制御部とによって実行される不揮発化処理の手順を示すシーケンス図である。
図9では、図7と同様に、ライトコマンドW1、フラッシュコマンドF1、ライトコマンドW2、フラッシュコマンドF2、ライトコマンドW3、フラッシュコマンドF3という順序でこれらコマンドをメモリシステム3が受信した場合が想定されている。
ライトバッファ処理部44は、ライトコマンドW1に関連付けられたライトデータをホストメモリから取得してライトバッファ42に格納する。ライトコマンドW1に関連付けられたライトデータがライトバッファ42に格納した後、ライトバッファ処理部44は、このライトコマンドW1の内容(LCA、長さ)を不揮発化処理制御部45に通知する。
不揮発化処理制御部45は、ライトコマンドW1によって指定された長さに基づき、ライトバッファ42に格納されているライトデータのサイズが書き込み単位以上であることを認識することができる。この場合、不揮発化処理制御部45は、非端数データ用のNANDライト処理部47を用いて、ライトバッファ42に格納されているライトデータ(非端数データ)をTLC−NANDフラッシュに書き込む。
ライトバッファ処理部44は、不揮発化処理制御部45にフラッシュコマンドF1を送る。
不揮発化処理制御部45が、フラッシュコマンドF1をライトバッファ処理部44から受信すると、不揮発化処理制御部45は、ライトバッファ42に格納されている現在の未書き込みデータのサイズがTLC−NANDフラッシュの書き込み単位未満であるか否かを判定する。ライトバッファ42に格納されている現在の未書き込みデータは端数データD14のみであるので、ライトバッファ42に格納されている現在の未書き込みデータのサイズは書き込み単位に対応するサイズ未満である。この場合、不揮発化処理制御部45は、端数データD14がpSLCブロックに退避されずに(またはTLC−NANDフラッシュに書き込まれずに)、ライトバッファ42内に維持されるように、フラッシュコマンドF1に対応する不揮発化処理の実行を保留する。そして、不揮発化処理制御部45は、このフラッシュコマンドF1の識別子(ID)を端数データ用のNANDライト処理部46に通知する。フラッシュコマンドF1のIDを端数データ用のNANDライト処理部46に通知するのは、不揮発化処理の実行が保留されたフラッシュコマンドを覚えておくためである。
ライトバッファ処理部44は、ライトコマンドW2に関連付けられたライトデータをホストメモリから取得してライトバッファ42に格納する。ライトコマンドW2に関連付けられたライトデータがライトバッファ42に格納された後、ライトバッファ処理部44は、このライトコマンドW2の内容(LCA、長さ)を不揮発化処理制御部45に通知する。
不揮発化処理制御部45は、端数データD14のサイズに、ライトコマンドW2によって指定された長さを加えることによって、ライトバッファ42に格納されている現在の未書き込みデータのサイズを求める。そして、不揮発化処理制御部45は、ライトバッファ42に格納されている現在の未書き込みデータのサイズがTLC−NANDフラッシュの書き込み単位に対応するサイズ未満か否かを判定する。本例では、ライトバッファ42に格納されている現在の未書き込みデータは端数データD14とライトデータD21、D22のみであるので、現在の未書き込みデータのサイズは書き込み単位に対応するサイズにまだ達していない。このため、この時点では、現在の未書き込みデータをTLC−NANDフラッシュに書き込む不揮発化処理は実行されない。
ライトバッファ処理部44は、不揮発化処理制御部45にフラッシュコマンドF2を送る。
現在の未書き込みデータのサイズはTLC−NANDフラッシュの書き込み単位に対応するサイズ未満である。したがって、不揮発化処理制御部45は、データ(D14、D21、D22)がpSLCブロックに退避されずに(またはTLC−NANDフラッシュに書き込まれず)、ライトバッファ42内に維持されるように、フラッシュコマンドF2に対応する不揮発化処理の実行を保留する。そして、不揮発化処理制御部45は、このフラッシュコマンドF2の識別子(ID)を端数データ用のNANDライト処理部46に通知する。
ライトバッファ処理部44は、ライトコマンドW3に関連付けられたライトデータをホストメモリから取得してライトバッファ42に格納する。ライトコマンドW3に関連付けられたライトデータがライトバッファ42に格納された後、ライトバッファ処理部44は、このライトコマンドW3の内容(LCA、長さ)を不揮発化処理制御部45に通知する。
不揮発化処理制御部45は、データ(D14、D21、D22)のサイズに、ライトコマンドW3によって指定された長さを加えることによって、ライトバッファ42に格納されている現在の未書き込みデータのサイズを求める。そして、不揮発化処理制御部45は、現在の未書き込みデータのサイズがTLC−NANDフラッシュの書き込み単位に対応するサイズ未満か否かを判定する。
本例では、現在の未書き込みデータ(D14、D21、D22、D31、D32)のサイズは、書き込み単位に対応するサイズに一致する。
したがって、不揮発化処理制御部45は、非端数データ用のNANDライト処理部47を用いて、ライトバッファ42に格納されている現在の未書き込みデータ(D14、D21、D22、D31、D32)をTLC−NANDフラッシュに書き込む。
不揮発化処理制御部45は、不揮発化処理が保留されている全てのフラッシュコマンドのIDを端数データ用のNANDライト処理部46に問い合わせる。これにより、不揮発化処理制御部45は、フラッシュコマンドF1のIDとフラッシュコマンドF2のIDを端数データ用のNANDライト処理部46から取得する。そして、不揮発化処理制御部45は、フラッシュコマンドF1の完了とフラッシュコマンドF2の完了とを示す応答を、ライトバッファ処理部44を介してホスト2に返すことができる。
本例では、次のフラッシュコマンドF3がライトバッファ処理部44から不揮発化処理制御部45に通知されるが、この時点では、先行する全てのライトコマンドW1〜W3に関連付けられたライトデータの全てが既に不揮発化されている。したがって、未書き込みデータはライトバッファ42に存在しない。よって、不揮発化処理制御部45は、フラッシュコマンドF1の完了とフラッシュコマンドF2の完了とフラッシュコマンドF3の完了をまとめて、ライトバッファ処理部44を介してホスト2に返してもよい。
なお、未書き込みデータ(D14、D21、D22、D31、D32)のサイズが書き込み単位よりも大きい場合には、不揮発化処理制御部45は、未書き込みデータ(D14、D21、D22、D31、D32)のうち、書き込み単位に対応するサイズを有する非端数データだけをTLC−NANDフラッシュに書き込む。
そして、不揮発化処理制御部45は、フラッシュコマンドF1の完了とフラッシュコマンドF2の完了とを示す応答を、ライトバッファ処理部44を介してホスト2に返す。そして、ライトバッファ処理部44は、不揮発化処理制御部45にフラッシュコマンドF3を送る。
現在の未書き込みデータは端数データのみである。したがって、不揮発化処理制御部45は、この端数データがpSLCブロックに退避されずに(またはTLC−NANDフラッシュに書き込まれず)、ライトバッファ42内に維持されるように、フラッシュコマンドF3に対応する不揮発化処理の実行を保留する。
以上説明したように、本実施形態によれば、データの不揮発化を要求するコマンド(例えばフラッシュコマンド)をメモリシステム3が受信した場合、端数データを不揮発性メモリ5に書き込むというフラッシュコマンドに対応する不揮発化処理の実行が一時保留され、書き込み単位分のデータがライトバッファ42に揃ってから、書き込み単位分のデータを不揮発性メモリ5に書き込む処理とフラッシュコマンドの完了をホスト2に通知する処理とが実行される。これにより、フラッシュコマンドの受信からこのフラッシュコマンドの完了を示す応答をホスト2に返すまでに要する時間は長くなるものの、端数データをpSLCブロックに一時的に退避する処理や、端数データを、パディングを使用してTLC−NANDフラッシュに書き込む処理は実行されないので、書き込み効率を改善することができる。よって、ライトアンプリフィケーションファクタ(WAF)の増加を抑制することが可能となる。
また、現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達する前に、別のフラッシュコマンドを受信した場合も、コントコーラ2は、現在の未書き込みデータを不揮発性メモリ5に書き込む不揮発化処理、つまりこの別のフラッシュコマンドに対応する不揮発化処理の実行を保留する。そして、現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達した場合に、現在の未書き込みデータを不揮発性メモリ5に書き込む不揮発化処理と、不揮発化処理の実行が保留されていたこれらフラッシュコマンドの完了を示す応答をホスト2に返す処理とが実行される。
したがって、たとえライトコマンドとフラッシュコマンドの複数のペアを連続して受信するケースであっても、端数データをpSLCブロックに一時的に退避する処理や、端数データを、パディングを使用してTLC−NANDフラッシュに書き込む処理は実行されない。よって、フラッシュコマンドの受信の度に端数データをpSLCブロックに一時的に退避する処理、また端数データを、パディングを使用してTLC−NANDフラッシュに書き込む処理を実行する場合に比し、書き込み効率を大幅に改善することができる。
なお、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 情報処理システム
2 ホスト
3 メモリシステム
4 コントローラ
5 不揮発性メモリ
41 ホストインタフェース(ホストI/F)
42 ライトバッファ
43 NANDインタフェース(NAND I/F)
44 ライトバッファ処理部
44A コマンドキュー
45 不揮発化処理制御部
46 端数データ用のNANDライト処理部
47 非端数データ用のNANDライト処理部
SGSL0、SGDL0 選択ゲート線
WL0〜WL7 ワード線
SU0〜SU1 ストリングユニット
DT0 選択ゲートトランジスタ
CELSRC ソース線
BL ビット線
MT メモリセルトランジスタ
BLK ブロック
NAND(TLC) TLC−NANDフラッシュ
F1、F2、F3 フラッシュコマンド
W1、W2、W3 ライトコマンド
D11、D12、D13、D14 ライトコマンドW1に関連付けられたライトデータ
D21、D22 ライトコマンドW2に関連付けられたライトデータ
D31、D32 ライトコマンドW3に関連付けられたライトデータ

Claims (10)

  1. 不揮発性メモリと、揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとを制御するコントローラとを具備し、
    前記コントローラは、
    外部から受信したライトコマンドそれぞれに関連付けられたライトデータを受信して前記揮発性メモリに格納し、
    データの不揮発化を要求する第1のコマンドを受信した場合、格納した前記ライトデータを、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリに書き込み、
    データの不揮発化を要求する第1のコマンドを受信した場合、格納した前記ライトデータのうち、前記書き込み単位に相当するサイズに満たない第1の端数データを前記不揮発性メモリに書き込む処理を保留し、
    前記第1のコマンドの完了を示す応答を返信する、
    メモリシステム。
  2. 前記コントローラは、後続のライトデータを前記揮発性メモリに格納することによって前記第1の端数データを含む前記揮発性メモリの未書き込みデータのサイズが前記書き込み単位に対応するサイズに達した場合、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリにデータを書き込む請求項1記載のメモリシステム。
  3. 前記後続のライトデータは、前記第1のコマンドの受信の後に外部から受信される一つ以上のライトコマンドに関連付けられたライトデータを含む請求項2記載のメモリシステム。
  4. 前記第1のコマンドはFlushコマンドである請求項1記載のメモリシステム。
  5. 前記第1のコマンドは、フォースユニットアクセス(FUA)がイネーブルされたライトコマンドであるWrite−FUAコマンドである請求項1記載のメモリシステム。
  6. 不揮発性メモリを制御する制御方法であって、
    外部から受信したライトコマンドそれぞれに関連付けられたライトデータを受信して格納し、
    データの不揮発化を要求する第1のコマンドを受信した場合、格納した前記ライトデータを、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリに書き込み、
    データの不揮発化を要求する第1のコマンドを受信した場合、格納した前記ライトデータのうち、前記書き込み単位に相当するサイズに満たない第1の端数データを前記不揮発性メモリに書き込む処理を保留し、
    前記第1のコマンドの完了を示す応答を返信する、
    不揮発性メモリの制御方法。
  7. 後続のライトデータを揮発性メモリに格納することによって前記第1の端数データを含む前記揮発性メモリの未書き込みデータのサイズが前記書き込み単位に対応するサイズに達した場合、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリにデータを書き込む請求項6記載の制御方法。
  8. 前記後続のライトデータは、前記第1のコマンドの受信の後に外部から受信される一つ以上のライトコマンドに関連付けられたライトデータを含む請求項7記載の制御方法。
  9. 前記第1のコマンドはFlushコマンドである請求項6記載の制御方法。
  10. 前記第1のコマンドは、フォースユニットアクセス(FUA)がイネーブルされたライトコマンドであるWrite−FUAコマンドである請求項6記載の制御方法。
JP2019055415A 2019-03-22 2019-03-22 メモリシステムおよび制御方法 Pending JP2020155052A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019055415A JP2020155052A (ja) 2019-03-22 2019-03-22 メモリシステムおよび制御方法
US16/559,147 US11086568B2 (en) 2019-03-22 2019-09-03 Memory system for writing fractional data into nonvolatile memory
TW109103681A TWI759686B (zh) 2019-03-22 2020-02-06 記憶體系統及用於控制該記憶體系統的方法
CN202010145584.7A CN111722795A (zh) 2019-03-22 2020-03-05 存储系统以及用于控制存储系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019055415A JP2020155052A (ja) 2019-03-22 2019-03-22 メモリシステムおよび制御方法

Publications (1)

Publication Number Publication Date
JP2020155052A true JP2020155052A (ja) 2020-09-24

Family

ID=72515298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019055415A Pending JP2020155052A (ja) 2019-03-22 2019-03-22 メモリシステムおよび制御方法

Country Status (4)

Country Link
US (1) US11086568B2 (ja)
JP (1) JP2020155052A (ja)
CN (1) CN111722795A (ja)
TW (1) TWI759686B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789643B2 (en) 2021-09-08 2023-10-17 Kioxia Corporation Memory system and control method

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI751482B (zh) * 2020-01-22 2022-01-01 宏碁股份有限公司 資料寫入方法及儲存控制器
US11314456B2 (en) 2020-07-23 2022-04-26 Micron Technology, Inc. Memory device performance based on storage traffic pattern detection
TWI739676B (zh) * 2020-11-25 2021-09-11 群聯電子股份有限公司 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元
CN112486417B (zh) * 2020-12-03 2023-07-04 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元
US11662942B2 (en) * 2021-03-16 2023-05-30 Kioxia Corporation Explicit buffer control
CN115469797B (zh) * 2021-09-09 2023-12-29 上海江波龙数字技术有限公司 一种数据写入方法、存储装置及计算机可读存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089266B2 (en) * 2003-06-02 2006-08-08 The Board Of Trustees Of The Leland Stanford Jr. University Computer systems and methods for the query and visualization of multidimensional databases
JP2005182538A (ja) 2003-12-19 2005-07-07 Toshiba Corp データ転送装置
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
JP2008112285A (ja) 2006-10-30 2008-05-15 Toshiba Corp 不揮発性メモリシステム
JP4356782B2 (ja) * 2007-09-12 2009-11-04 ソニー株式会社 メモリ装置、メモリ制御方法、およびプログラム
CN101464834B (zh) * 2007-12-19 2011-01-26 群联电子股份有限公司 闪存数据写入方法及使用此方法的控制器
JP5166118B2 (ja) 2008-05-21 2013-03-21 株式会社東芝 半導体メモリの制御方法
JP5677336B2 (ja) * 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
WO2015135574A1 (en) * 2014-03-11 2015-09-17 Hitachi Data Systems Engineering UK Limited Computer program product, method, apparatus and data storage system for controlling write operations in the data storage system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789643B2 (en) 2021-09-08 2023-10-17 Kioxia Corporation Memory system and control method

Also Published As

Publication number Publication date
TWI759686B (zh) 2022-04-01
US11086568B2 (en) 2021-08-10
CN111722795A (zh) 2020-09-29
TW202038220A (zh) 2020-10-16
US20200301612A1 (en) 2020-09-24

Similar Documents

Publication Publication Date Title
US10628319B2 (en) Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same
US11086568B2 (en) Memory system for writing fractional data into nonvolatile memory
US10389380B2 (en) Efficient data path architecture for flash devices configured to perform multi-pass programming
US10168951B2 (en) Methods for accessing data in a circular block mode and apparatuses using the same
JP2020155182A (ja) メモリシステム及び不揮発性メモリ
US11776615B2 (en) Sequential SLC read optimization
US11604749B2 (en) Direct memory access (DMA) commands for noncontiguous source and destination memory addresses
US11726690B2 (en) Independent parallel plane access in a multi-plane memory device
US20210232517A1 (en) Quality of service levels for a direct memory access engine in a memory sub-system
CN112771492A (zh) 支持非确定性命令的存储器子系统
JP2020047325A (ja) 半導体記憶装置
US20240103770A1 (en) Improved memory performance using memory access command queues in memory devices
CN113012741B (zh) 用于存储器子系统的媒体管理的弹性缓冲器
CN114546254A (zh) 写入数据的方法和非易失性存储器装置
CN114287032A (zh) 基于字线启动电压的动态控制的存储器子系统管理
US11698856B2 (en) Maintaining sequentiality for media management of a memory sub-system
US11714577B2 (en) Snap read optimization for media management for a memory sub-system
JP2023119953A (ja) メモリシステム