(57)【要約】【課題】書き込み効率を改善可能なメモリシステムを実現する。【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラとを具備する。前記コントローラは、外部から受信したライトコマンドそれぞれに関連付けられたライトデータを受信して前記揮発性メモリに格納する。前記コントローラは、データの不揮発化を要求する第１のコマンドを受信した場合、格納した前記ライトデータを、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリに書き込む。前記コントローラは、データの不揮発化を要求する第１のコマンドを受信した場合、格納した前記ライトデータのうち、前記書き込み単位に相当するサイズに満たない第１の端数データを前記不揮発性メモリに書き込む処理を保留する。前記コントローラは、前記第１のコマンドの完了を示す応答を返信する。【選択図】  図８
2020155052.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとを制御するコントローラとを具備し、
前記コントローラは、
外部から受信したライトコマンドそれぞれに関連付けられたライトデータを受信して前記揮発性メモリに格納し、
データの不揮発化を要求する第１のコマンドを受信した場合、格納した前記ライトデータを、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリに書き込み、
データの不揮発化を要求する第１のコマンドを受信した場合、格納した前記ライトデータのうち、前記書き込み単位に相当するサイズに満たない第１の端数データを前記不揮発性メモリに書き込む処理を保留し、
前記第１のコマンドの完了を示す応答を返信する、
メモリシステム。
【請求項２】
前記コントローラは、後続のライトデータを前記揮発性メモリに格納することによって前記第１の端数データを含む前記揮発性メモリの未書き込みデータのサイズが前記書き込み単位に対応するサイズに達した場合、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリにデータを書き込む請求項１記載のメモリシステム。
【請求項３】
前記後続のライトデータは、前記第１のコマンドの受信の後に外部から受信される一つ以上のライトコマンドに関連付けられたライトデータを含む請求項２記載のメモリシステム。
【請求項４】
前記第１のコマンドはＦｌｕｓｈコマンドである請求項１記載のメモリシステム。
【請求項５】
前記第１のコマンドは、フォースユニットアクセス（ＦＵＡ）がイネーブルされたライトコマンドであるＷｒｉｔｅ−ＦＵＡコマンドである請求項１記載のメモリシステム。
【請求項６】
不揮発性メモリを制御する制御方法であって、
外部から受信したライトコマンドそれぞれに関連付けられたライトデータを受信して格納し、
データの不揮発化を要求する第１のコマンドを受信した場合、格納した前記ライトデータを、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリに書き込み、
データの不揮発化を要求する第１のコマンドを受信した場合、格納した前記ライトデータのうち、前記書き込み単位に相当するサイズに満たない第１の端数データを前記不揮発性メモリに書き込む処理を保留し、
前記第１のコマンドの完了を示す応答を返信する、
不揮発性メモリの制御方法。
【請求項７】
後続のライトデータを揮発性メモリに格納することによって前記第１の端数データを含む前記揮発性メモリの未書き込みデータのサイズが前記書き込み単位に対応するサイズに達した場合、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリにデータを書き込む請求項６記載の制御方法。
【請求項８】
前記後続のライトデータは、前記第１のコマンドの受信の後に外部から受信される一つ以上のライトコマンドに関連付けられたライトデータを含む請求項７記載の制御方法。
【請求項９】
前記第１のコマンドはＦｌｕｓｈコマンドである請求項６記載の制御方法。
【請求項１０】
前記第１のコマンドは、フォースユニットアクセス（ＦＵＡ）がイネーブルされたライトコマンドであるＷｒｉｔｅ−ＦＵＡコマンドである請求項６記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、ＮＡＮＤ型フラッシュメモリを備えるソリッドステートドライブ（ＳＳＤ）が知られている。
ＳＳＤのようなメモリシステムにおいては、データの不揮発化を要求するコマンド（例えば、Ｆｌｕｓｈコマンドなど）が用いられる場合がある。データの不揮発化を要求するコマンドは、未書き込みデータを不揮発性メモリに書き込む処理（「不揮発化処理」とも云う）の実行をメモリシステムに要求するためにホストによって使用される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２８２６９６号公報
【特許文献２】特開２００８−１１２２８５号公報
【特許文献３】特開２００５−１８２５３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、書き込み効率を改善可能なメモリシステムおよび制御方法を提供することである。
【課題を解決するための手段】
【０００５】
実施形態によれば、メモリシステムは、不揮発性メモリと、揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとを制御するコントローラとを具備する。前記コントローラは、外部から受信したライトコマンドそれぞれに関連付けられたライトデータを受信して前記揮発性メモリに格納する。前記コントローラは、データの不揮発化を要求する第１のコマンドを受信した場合、格納した前記ライトデータを、前記不揮発性メモリの書き込み単位に相当するデータの単位で前記不揮発性メモリに書き込む。前記コントローラは、データの不揮発化を要求する第１のコマンドを受信した場合、格納した前記ライトデータのうち、前記書き込み単位に相当するサイズに満たない第１の端数データを前記不揮発性メモリに書き込む処理を保留する。前記コントローラは、前記第１のコマンドの完了を示す応答を返信する。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
【図２】本発明の実施形態に係る不揮発性メモリの構成例を示す図。
【図３】本発明の実施形態に係る不揮発性メモリがトリプルレベルセル（ＴＬＣ）−ＮＡＮＤフラッシュである場合の書き込み単位の例を示す図。
【図４】本発明の実施形態に係る不揮発性メモリ内のあるブロックにシングルレベルセル（ＳＬＣ）モードでデータを書き込む場合の書き込み単位の例を示す図。
【図５】本発明の比較例に係る不揮発化処理のパディングを使用して端数データをＴＬＣ−ＮＡＮＤフラッシュに書き込む例を示す図。
【図６】本発明の比較例に係る不揮発化処理の端数データをｐＳＬＣブロックに一時的に退避する例を示す図。
【図７】本発明の実施形態に係るメモリシステムの不揮発化処理の例を示す図。
【図８】本発明の実施形態に係るメモリシステムによって実行される不揮発化処理の手順を示すフローチャート。
【図９】本発明の実施形態に係るメモリシステム内のライトバッファ処理部と不揮発化処理制御部とによって実行される不揮発化処理の手順を示すシーケンス図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して、本発明の実施形態を説明する。  
図１は、本発明の実施形態に係るメモリシステムを含む情報処理システム１の構成例を示すブロック図である。
メモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成されたストレージデバイスである。メモリシステムは、例えば、ソリッドステートドライブ（ＳＳＤ）として実現されてもよいし、メモリカードとして実現されてもよい。以下では、メモリシステムが、ソリッドステートドライブ（ＳＳＤ）として実現されている場合について説明する。
【０００８】
情報処理システム１は、ホスト（ホストデバイス）２と、メモリシステム３とを含む。ホスト２は、パーソナルコンピュータやサーバ、携帯電話、撮像装置であってもよいし、タブレット、スマートフォンなどの携帯端末であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
【０００９】
メモリシステム３は、メモリシステム３の外部の情報処理装置であるホスト２の記憶装置として機能し得る。メモリシステム３は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト２とメモリシステム３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）、ユニバーサルシリアルバス（ＵＳＢ）、Ｍｏｂｉｌｅ  Ｉｎｄｕｓｔｒｙ  Ｐｒｏｃｅｓｓｏｒ  Ｉｎｔｅｒｆａｃｅ（ＭＩＰＩ）、ＵｎｉＰｒｏ等を使用し得る。
【００１０】
メモリシステム３は、コントローラ４および不揮発性メモリ５を備える。不揮発性メモリ５は、例えばＮＡＮＤ型フラッシュメモリである。不揮発性メモリ５は、複数のＮＡＮＤ型フラッシュメモリチップを含んでいてもよい。コントローラ４は、不揮発性メモリ５に電気的に接続される。コントローラ４は、不揮発性メモリ５を制御するメモリコントローラである。このコントローラ４は、Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ（ＳｏＣ）のような回路によって実現されてもよい。
【００１１】
不揮発性メモリ５は、メモリセルアレイを有する１以上のＮＡＮＤ型フラッシュメモリチップを有する。メモリセルアレイは、マトリクス状に配列された複数のメモリセルを有する。不揮発性メモリ５のメモリセルアレイは、複数のブロック（物理ブロック）を含む。これらブロックの各々は、データを消去する単位である。複数のブロックの各々は、複数のページを含む。各ページは、データの書き込みおよび読み出しの単位である。
【００１２】
不揮発性メモリ５は、１メモリセル当たり１ビットを格納するシングルレベルセル（ＳＬＣ）−フラッシュメモリとして実現されてもよい。あるいは、不揮発性メモリ５は、１メモリセル当たり２ビットを格納するマルチレベル（ＭＬＣ）−フラッシュメモリ、１メモリセル当たり３ビットを格納するトリプルレベル（ＴＬＣ）−フラッシュメモリ、または、１メモリセル当たり４ビットを格納するクワドレベル（ＱＬＣ）−フラッシュメモリとして実現されてもよい。
【００１３】
以下の説明では、これに限定されないが、不揮発性メモリ５がＴＬＣ−フラッシュメモリとして実現されている場合について説明する。
コントローラ４は、ホストインタフェース（ホストＩ／Ｆ）４１、ライトバッファ４２、ＮＡＮＤインタフェース（ＮＡＮＤ  Ｉ／Ｆ）４３、ライトバッファ処理部４４、不揮発化処理制御部４５、端数データ用のＮＡＮＤライト処理部４６、非端数データ用のＮＡＮＤライト処理部４７、等を含む。
【００１４】
ホストインタフェース４１は、メモリシステム３とメモリシステム３の外部の情報処理装置であるホスト２との通信を行うハードウェアインターフェースである。ホストインタフェース４１は、ホスト２から様々なコマンドとライトデータとを受信する処理、および応答およびデータをホスト２へ送信する処理を実行する。受信するコマンドの例には、ライトコマンド、リードコマンド、データの不揮発化を要求するコマンド、等が含まれる。
【００１５】
ライトコマンドは、メモリシステム３に対して、データの書き込みを要求するコマンドである。ライトコマンドは、書き込むべきデータ（ライトデータ）に対応する論理アドレス（開始論理アドレス）、長さ、データポインタ等を指定する。
開始論理アドレスは、ライトデータに対応する論理アドレス範囲の最初の論理アドレスを示す。この開始論理アドレスは、論理ブロックアドレス（ＬＢＡ）によって表されてもよいし、あるいは、論理クラスタアドレス（ＬＣＡ）によって表されてもよい。ＬＢＡは、セクタのような論理ブロックの単位で論理アドレス空間内のアドレスを指定する。ＬＣＡは、クラスタの単位で論理アドレス空間内のアドレスを指定する。
【００１６】
１つのクラスタは連続する複数のセクタ（例えば、８個のセクタ、１６個のセクタ、または３２個のセクタ、等）を含む。例えば、１つのクラスタが８個のセクタを含み、且つ１つのセクタのサイズが５１２バイトであるケースにおいては、一つのクラスタのサイズは４Ｋバイト（４ＫＢ）となる。
【００１７】
長さは、ライトデータの長さ、つまりライトデータのサイズを示す。データポインタは、ライトデータが存在しているホストメモリ内の位置を示す。ホストメモリは、ホスト２内に存在するメモリである。
リードコマンドは、メモリシステム３に対して、データの読み出しを要求するコマンドである。リードコマンドは、読み出すべきデータに対応する開始論理アドレス、読み出すべきデータの長さ、読み出すべきデータが転送されるべきホストメモリ内の位置を示すデータポインタ等を指定する。
【００１８】
データの不揮発化を要求するコマンドは、メモリシステム３に対して、ライトバッファ４２に格納されている未書き込みデータを不揮発性メモリ５に書き込む処理（「不揮発化処理」とも称する）の実行を要求する。
データの不揮発化を要求するコマンドの例には、Ｆｌｕｓｈコマンド、Ｗｒｉｔｅ−ＦＵＡ（ｆｏｒｃｅ  ｕｎｉｔ  ａｃｃｅｓｓ）コマンド、等が含まれる。Ｆｌｕｓｈコマンド（以下、フラッシュコマンドと表記する）は、このフラッシュコマンドの発行の前にライトバッファ４２に既に格納されている全ての未書き込みデータを不揮発性メモリ５に書き込む不揮発化処理の実行を要求する。例えば、フラッシュコマンドは、このフラッシュコマンドの発行前に完了した全コマンドに対応するデータを不揮発性メモリ５に確定（ＣＯＭＭＩＴ）するために使用される。このフラッシュコマンドの発行時にライトバッファ４２に格納されている未書き込みデータの終端位置までが、このフラッシュコマンドに対応する不揮発化処理の対象データとなる。
【００１９】
Ｗｒｉｔｅ−ＦＵＡコマンドは、フォースユニットアクセス（ＦＵＡ）がイネーブルされたライトコマンドである。Ｗｒｉｔｅ−ＦＵＡコマンドは、ライトコマンドとフラッシュコマンドとのペアと等価な機能を有するコマンドである。
ライトバッファ４２は、メモリシステム３が受信したライトデータを一時的に格納する揮発性メモリである。ライトバッファ４２は、例えば、スタティックＲＡＭ（ＳＲＡＭ）またはダイナミックＲＡＭ（ＤＲＡＭ）によって実現される。
【００２０】
ＮＡＮＤインタフェース４３は、メモリシステム４と揮発性メモリ５との間の通信を行うハードウェアインターフェースである。ＮＡＮＤインタフェース４３は、複数のチャンネルを介して、不揮発性メモリ５に含まれる複数のＮＡＮＤ型フラッシュメモリチップに接続されてもよい。
【００２１】
ライトバッファ処理部４４は、ホスト２からコマンドを受信し、受信したコマンドをコントローラ４内のコマンドキュー４４Ａに格納する。コマンドキュー４４Ａはライトバッファ処理部４４内に存在してもよい。
ライトバッファ処理部４４は、コマンドキュー４４Ａ内に格納されているコマンド群から処理対象のコマンドを取得する。処理対象のコマンドがライトコマンドである場合、ライトバッファ処理部４４は、このライトコマンドに関連付けられたライトデータをホスト２から受信する。そして、ライトバッファ処理部４４は、受信したライトデータをライトバッファ４２に格納する。さらに、ライトバッファ処理部４４は、このライトコマンドを不揮発化処理制御部４５に送信する処理を実行してもよい。
【００２２】
処理対象コマンドが、データの不揮発化を要求するコマンド（例えばフラッシュコマンド）である場合も、ライトバッファ処理部４４は、このコマンド（例えばフラッシュコマンド）を不揮発化処理制御部４５に送信する処理を実行してもよい。
不揮発化処理制御部４５は、端数データ用のＮＡＮＤライト処理部４６と非端数データ用のＮＡＮＤライト処理部４７とを選択的に用いて、ライトバッファ４２に格納されているライトデータを不揮発性メモリ５に書き込む処理（不揮発化処理）を実行する。不揮発化処理制御部４５は、ライトデータが書き込まれるべき不揮発性メモリ５内の記憶位置（書き込み先位置）を決定する。書き込み先位置は、例えば、不揮発性メモリ５の書き込み単位と同じサイズを有するデータ毎に決定されてもよい。
【００２３】
処理対象のライトコマンドそれぞれに対応する書き込み処理においては、不揮発化処理制御部４５は、ライトバッファ４２内のライトデータを、不揮発性メモリ５の書き込み単位に対応するサイズを有するデータの単位で、不揮発性メモリ５に書き込む。この書き込み単位に対応するサイズは、不揮発性メモリ５として使用されるメモリ製品に依存する。
【００２４】
書き込み単位に対応するサイズは限定されないが、一例を挙げれば、不揮発性メモリ５がＴＬＣ−フラッシュメモリによって実現され且つ不揮発性メモリ５のページサイズが４クラスタ（＝１６ＫＢ）であるケースにおいては、書き込み単位は、例えば、１２クラスタ（＝４クラスタ×３ページ）であってもよい。
【００２５】
不揮発化処理制御部４５は、ライトバッファ４２に格納されているライトデータのサイズが書き込み単位に達する度に、この書き込み単位に対応するサイズを有するライトデータ（非端数データ）を、非端数データ用のＮＡＮＤライト処理部４７を用いて不揮発性メモリ５内の書き込み先ブロック（ＴＬＣブロック）に書き込む。
【００２６】
例えば、あるライトコマンドに対応するライトデータのサイズが１８クラスタである場合、不揮発化処理制御部４５の制御の下、非端数データ用のＮＡＮＤライト処理部４７は、この１８クラスタ分のライトデータのうち、書き込み単位に対応するサイズ（例えば１２クラスタ）を有するライトデータ部（非端数データ）を不揮発性メモリ５のＴＬＣブロックに書き込む。この１８クラスタ分のライトデータのうち、残りの６クラスタ分のライトデータは、書き込み単位に満たないサイズを有する端数データである。
【００２７】
後続のライトコマンドに関連付けられたライトデータの受信によって、ライトバッファ４２に格納されている未書き込みデータの総サイズは増える。ライトバッファ４２に格納されている未書き込みデータの総サイズが書き込み単位に達した場合、不揮発化処理制御部４５の制御の下、非端数データ用のＮＡＮＤライト処理部４７は、ライトバッファ４２に格納されている未書き込みデータ（例えば１２クラスタを有する非端数データ）を不揮発性メモリ５のＴＬＣブロックに書き込む。
【００２８】
このようにして、受信したライトコマンドそれぞれに関連付けられたライトデータは、不揮発性メモリ５の書き込み単位に対応するサイズを有するデータの単位で不揮発性メモリ５に書き込まれる。
また、不揮発化処理制御部４５は、不揮発性メモリ５の書き込み単位に満たないサイズを有する端数データを不揮発性メモリ５に書き込む不揮発化処理が実行される回数を減らすために、幾つかの端数データを一緒に不揮発性メモリ５のＴＬＣブロックに書き込む処理を実行することができる。
【００２９】
端数データを不揮発性メモリ５に書き込む不揮発化処理は、データの不揮発化を要求するコマンド（例えばフラッシュコマンド）を実行する場合に必要となる場合がある。しかしながら、もしフラッシュコマンドの受信の度に、端数データを不揮発性メモリ５に書き込む不揮発化処理が実行されたならば、これら不揮発化処理によってメモリシステム３のライトアンプリフィケーションファクタ（ＷＡＦ）が増加され、ひいてはメモリシステム３の寿命が低下される可能性がある。
【００３０】
なぜなら、通常、端数データを不揮発性メモリ５に書き込むためには、端数データにダミーデータを加えるパディングを実行することが必要とされるからである。
あるいは、パディングの量を減らすために、端数データを、ＴＬＣブロックよりも小さな書き込み単位を有する不揮発性メモリ５内の別の領域（例えば、メモリセル当たりに１ビットを書き込むＳＬＣモードでデータが書き込まれるブロック、つまりＳＬＣブロック）に一時的に退避するという方法が使用されてもよい。しかし、この方法が使用された場合においても、最終的には、端数データをこのＳＬＣブロックからＴＬＣブロックに書き戻すことが必要とされる。よって、この方法が使用されたケースにおいても、書き込み動作の回数が増えるので、メモリシステム３のライトアンプリフィケーションファクタ（ＷＡＦ）が増加される可能性がある。
【００３１】
図２は、本発明の実施形態に係る不揮発性メモリの構成例を示す図である。
一つのブロックＢＬＫ（ここではＢＬＫ０）は、ストリングユニットＳＵ０〜ＳＵ３を含んでもよい。これらストリングユニットＳＵ０〜ＳＵ３は同一の構成を有するので、ここでは、ストリングユニットＳＵ０の構成を説明する。
【００３２】
ストリングユニットＳＵ０は、複数のワード線ＷＬ０〜ＷＬ７、および複数のビット線ＢＬ０〜ＢＬ（Ｌ−１）に接続されている。ストリングユニットＳＵ０は、複数のＮＡＮＤストリングＳＴＲを含む。
各ＮＡＮＤストリングＳＴＲは、１つの選択ゲートトランジスタＳＴ０と、複数（例えば８つ）のメモリセルトランジスタＭＴ０〜ＭＴ７と、１つの選択ゲートトランジスタＤＴ０とを含む。選択ゲートトランジスタＳＴ０、メモリセルトランジスタＭＴ０〜ＭＴ７、選択ゲートトランジスタＤＴ０は、この順で、ソース線ＣＥＬＳＲＣと１つのビット線ＢＬとの聞に直列に接続されている。
【００３３】
各メモリセルトランジスタＭＴは、メモリセルとして機能する。各メモリセルトランジスタＭＴは、制御ゲート、および電荷蓄積層を含む。メモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲートは、ワード線ＷＬ０〜ＷＬ７にそれぞれ接続されている。選択ゲートトランジスタＳＴ０のゲートは、選択ゲート線ＳＧＳＬ０に接続されている。選択ゲートトランジスタＤＴ０のゲートは、選択ゲート線ＳＧＤＬ０に接続されている。
【００３４】
ストリングユニットＳＵ０において、同一ワード線ＷＬに接続されるメモリセルトランジスタＭＴの組はページと称される。不揮発性メモリ５がＴＬＣ−ＮＡＮＤフラッシュＮＡＮＤ（ＴＬＣ）である場合は、同一ワード線ＷＬに接続されるメモリセルトランジスタＭＴの組は３つのページ（ロアーページ、ミドルページ、アッパーページ）として機能する。
【００３５】
また、複数のワード線ＷＬは、ストリングユニットＳＵ０〜ＳＵ３に共通接続されている。したがって、ある一つのワード線に関しては、このワード線に接続されるメモリセルトランジスタＭＴの集合は４つのグループ（つまり、ストリングユニットＳＵ０に属するメモリセルトランジスタＭＴ群、ストリングユニットＳＵ１に属するメモリセルトランジスタＭＴ群、ストリングユニットＳＵ２に属するメモリセルトランジスタＭＴ群、ストリングユニットＳＵ３に属するメモリセルトランジスタＭＴ群）を分割される。一つのグループが一つの書き込み単位として使用される。
【００３６】
図３は、本発明の実施形態に係る不揮発性メモリ５がＴＬＣ−ＮＡＮＤフラッシュＮＡＮＤ（ＴＬＣ）である場合の書き込み単位の例を示す図である。
不揮発性メモリ５のブロックＢＬＫは、ワード線ＷＬ０に接続されたメモリセルトランジスタの集合、ワード線ＷＬ１に接続されたメモリセルトランジスタの集合、…、ワード線ＷＬ（ｎ−１）に接続されたメモリセルトランジスタの集合とを含む。ブロックＢＬＫは、上述のＴＬＣブロックとして使用される。
【００３７】
ブロックＢＬＫにデータを書き込む動作においては、まず、ワード線ＷＬ０に接続され且つストリングユニットＳＵ０に属しているメモリセルトランジスタ群に対して３つのページ（ロアーページ、ミドルページ、アッパーページ）に対応するデータが書き込まれる。次いで、ワード線ＷＬ０に接続され且つストリングユニットＳＵ１に属するメモリセルトランジスタ群に対して３つのページ（ロアーページ、ミドルページ、アッパーページ）に対応するデータが書き込まれる。そしてワード線ＷＬ０のストリングユニットＳＵ３に属するメモリセルトランジスタ群に対して３つのページ（ロアーページ、ミドルページ、アッパーページ）に対応するデータが書き込まれると、書き込み対象のワード線はＷＬ１に変更される。
【００３８】
したがって、同一ワード線および同一ストリングユニットに属するメモリセルトランジスタ群が一つの書き込み単位として機能する。書き込み単位に対応するサイズは、同一ワード線および同一ストリングユニットに属するメモリセルトランジスタ群に書き込まれる３ページ（ロアーページ、ミドルページ、アッパーページ）分のデータのサイズとなる。
【００３９】
図４は、本発明の実施形態に係る不揮発性メモリ５内のあるブロックにＳＬＣモードでデータを書き込む場合の書き込み単位の例を示す図である。
あるブロックにＳＬＣモードでデータを書き込む場合においては、同一ワード線および同一ストリングユニットに属するメモリセルトランジスタ群に一つのページ（例えばロアーページ）に対応するデータのみが書き込まれる。このブロックはＳＬＣブロックまたは疑似ＳＬＣ（ｐＳＬＣ）ブロックと称される。
【００４０】
ｐＳＬＣブロックに適用される書き込み単位のサイズは、同一ワード線および同一ストリングユニットに属するメモリセルトランジスタ群に書き込まれる一つのページに対応するサイズとなる。
図５は、本発明の比較例に係る不揮発化処理のパディングを使用して端数データをＴＬＣ−ＮＡＮＤフラッシュに書き込む例を示す図である。
【００４１】
図５においては、ライトコマンドＷ１、フラッシュコマンドＦ１、ライトコマンドＷ２、フラッシュコマンドＦ２、ライトコマンドＷ３、フラッシュコマンドＦ３という順序でこれらコマンドをメモリシステム３が受信した場合が想定されている。
ライトコマンドＷ１に関連付けられたライトデータ（Ｄ１１〜Ｄ１４）は、ＴＬＣ−ＮＡＮＤフラッシュの書き込み単位（３ページ分のデータ）よりも僅かに大きいサイズを有している。ライトコマンドＷ１に後続してフラッシュコマンドＦ１がホスト２によって発行される。ライトバッファ４２においては、ライトデータ（Ｄ１１〜Ｄ１４）が格納されている。この場合、端数データ（Ｄ１４）を含むライトデータ（Ｄ１１〜Ｄ１４）全体がＴＬＣ−ＮＡＮＤフラッシュに書き込まれるべき不揮発化処理の対象となる（Ｆｌｕｓｈ対象）。
【００４２】
まず、書き込み単位に対応する３ページ分のデータ（Ｄ１１、Ｄ１２、Ｄ１３）が、ＴＬＣ−ＮＡＮＤフラッシュ内のある書き込み先ブロック（ＴＬＣブロック）に書き込まれる。このＴＬＣブロックにおいて、３ページ分のデータ（Ｄ１１、Ｄ１２、Ｄ１３）は、あるワード線ＷＬｘに接続され且つストリングユニットＳＵ０に属しているメモリセルトランジスタ群に、書き込まれる。
【００４３】
次いで、端数データ（Ｄ１４）にダミーデータのようなデータを加えるパディングが実行され、これによってワード線ＷＬｘに接続され且つストリングユニットＳＵ１に属しているメモリセルトランジスタ群に、書き込み単位に対応する３ページ分のデータが書き込まれる。
【００４４】
これにより、ライトコマンドＷ１に関連付けられたライトデータ（Ｄ１１〜Ｄ１４）の不揮発化処理が完了し、ライトデータ（Ｄ１１〜Ｄ１４）はライトバッファ４２から破棄される。
ライトコマンドＷ２に関連付けられたライトデータ（Ｄ２１、Ｄ２２）のサイズは１ページ＋αであるので、ライトデータ（Ｄ２１、Ｄ２２）は、書き込み単位に満たない端数データである。ライトコマンドＷ２に後続してフラッシュコマンドＦ２がホスト２によって発行される。ライトバッファ４２においては、ライトデータ（Ｄ２１、Ｄ２２）が格納されている。この場合、書き込み単位に満たない端数データであるライトデータ（Ｄ２１、Ｄ２２）全体がＴＬＣ−ＮＡＮＤフラッシュに書き込まれるべき不揮発化処理の対象となる（Ｆｌｕｓｈ対象）。
【００４５】
ライトバッファ４２に格納されている現在の未書き込みデータはライトデータ（Ｄ２１、Ｄ２２）のみである。このため、端数データであるライトデータ（Ｄ２１、Ｄ２２）にダミーデータのようなデータを加えるパディングが実行され、これによってワード線ＷＬｘに接続され且つストリングユニットＳＵ２に属しているメモリセルトランジスタ群に、書き込み単位に対応する３ページ分のデータが書き込まれる。
【００４６】
ライトコマンドＷ２に関連付けられたライトデータ（Ｄ２１、Ｄ２２）の不揮発化処理が完了すると、ライトデータ（Ｄ２１、Ｄ２２）はライトバッファ４２から破棄される。
ライトコマンドＷ３に関連付けられたライトデータ（Ｄ３１、Ｄ３２）は、１．５ページ程度のサイズを有する端数データである。ライトコマンドＷ３に後続してフラッシュコマンドＦ３がホスト２によって発行される。ライトバッファ４２においては、端数データであるライトデータ（Ｄ３１、Ｄ３２）が格納されている。この場合、端数データであるライトデータ（Ｄ３１、Ｄ３２）全体がＴＬＣ−ＮＡＮＤフラッシュに書き込まれるべき不揮発化処理の対象となる（Ｆｌｕｓｈ対象）。
【００４７】
ライトバッファ４２に格納されている現在の未書き込みデータはライトデータ（Ｄ３１、Ｄ３２）のみである。従って、ライトデータ（Ｄ３１、Ｄ３２）にダミーデータのようなデータを加えるパディングが実行され、これによってワード線ＷＬｘに接続され且つストリングユニットＳＵ３に属しているメモリセルトランジスタ群に書き込み単位に対応する３ページ分のデータが書き込まれる。
【００４８】
このように、ライトコマンドとフラッシュコマンドの複数のペアを連続してメモリシステム３が受信するようなケースにおいては、端数データを不揮発性メモリ５に書き込む不揮発化処理を何度も実行しなければならず、これによってライトアンプリフィケーションファクタ（ＷＡＦ）が増加する。
【００４９】
図６は、本発明の比較例に係る不揮発化処理の端数データをｐＳＬＣブロックに一時的に退避する例を示す図である。
まず、３ページ分のデータ（Ｄ１１、Ｄ１２、Ｄ１３）が、ＴＬＣ−ＮＡＮＤフラッシュ内のある書き込み先ブロック（ＴＬＣブロック）に書き込まれる。このＴＬＣブロックにおいて、３ページ分のデータ（Ｄ１１、Ｄ１２、Ｄ１３）は、あるワード線ＷＬｘに接続され且つストリングユニットＳＵ０に属しているメモリセルトランジスタ群に、書き込まれる。次いで、端数データ（Ｄ１４）がｐＳＬＣブロックに一時的に退避される。ｐＳＬＣブロックにおいては、ワード線ＷＬｙに接続され且つストリングユニットＳＵ０に属しているメモリセルトランジスタ群は１ページを構成する。ｐＳＬＣブロックにおいては、ページサイズよりも小さい単位でデータを書き込むことができる。ｐＳＬＣブロックにおいては、この端数データ（Ｄ１４）は、ワード線ＷＬｙに接続され且つストリングユニットＳＵ０に属しているメモリセルトランジスタ群の一部にＳＬＣモードで書き込まれる。
【００５０】
これにより、ライトコマンドＷ１に関連付けられたライトデータ（Ｄ１１〜Ｄ１４）の不揮発化処理が完了し、ライトデータ（Ｄ１１〜Ｄ１４）はライトバッファ４２から破棄される。
ライトコマンドＷ２に関連付けられたライトデータ（Ｄ２１、Ｄ２２）は、１ページ＋αのサイズを有する端数データである。ライトコマンドＷ２に後続してフラッシュコマンドＦ２が受信されているので、端数データであるライトデータ（Ｄ２１、Ｄ２２）全体がＴＬＣ−ＮＡＮＤフラッシュに書き込まれるべき不揮発化処理の対象となる（Ｆｌｕｓｈ対象）。
【００５１】
ライトバッファ４２に格納されている現在の未書き込みデータはライトデータ（Ｄ２１、Ｄ２２）のみである。このため、コントローラ４は、端数データであるライトデータ（Ｄ２１、Ｄ２２）をｐＳＬＣブロックに一時的に退避する。
この場合、端数データ（Ｄ２１）は、ワード線ＷＬｙに接続され且つストリングユニットＳＵ０に属しているメモリセルトランジスタ群の残り部分にＳＬＣモードで書き込まれる。端数データ（Ｄ２２）は、ワード線ＷＬｘに接続され且つストリングユニットＳＵ１に属しているメモリセルトランジスタ群の一部に書き込まれる。
【００５２】
これにより、ライトコマンドＷ２に関連付けられたライトデータ（Ｄ２１〜Ｄ２２）の不揮発化処理が完了する。コントローラ４は、ライトデータ（Ｄ２１〜Ｄ２２）はライトバッファ４２から破棄する。
ライトコマンドＷ３に関連付けられたライトデータ（Ｄ３１、Ｄ３２）は、１．５ページ程度のサイズを有する端数データである。ライトコマンドＷ３に後続してフラッシュコマンドＦ３が受信されているので、端数データであるライトデータ（Ｄ３１、Ｄ３２）全体がＴＬＣ−ＮＡＮＤフラッシュに書き込まれるべき不揮発化処理の対象となる（Ｆｌｕｓｈ対象）。
【００５３】
ライトバッファ４２に格納されている現在の未書き込みデータはライトデータ（Ｄ３１、Ｄ３２）のみである。従って、コントローラ４は、端数データであるライトデータ（Ｄ３１、Ｄ３２）をｐＳＬＣブロックに一時的に退避する。
この場合、データ（Ｄ３１）は、ワード線ＷＬｙに接続され且つストリングユニットＳＵ１に属しているメモリセルトランジスタ群の残り部分にＳＬＣモードで書き込まれ、データ（Ｄ３２）はワード線ＷＬｘに接続され且つストリングユニットＳＵ２に属しているメモリセルトランジスタ群にＳＬＣモードで書き込まれる。
【００５４】
このように、端数データをｐＳＬＣブロックに一時的に退避することによってパディング量を減少することができる。しかし、ｐＳＬＣブロックに一時的に退避されたデータ（Ｄ１４、Ｄ２１、Ｄ２２、Ｄ３１、Ｄ３２）は、最終的には、ＴＬＣ−ＮＡＮＤフラッシュのＴＬＣブロックに書き戻さなければならない。よって、ライトアンプリフィケーションファクタ（ＷＡＦ）が増加される。
【００５５】
図７は、本発明の実施形態に係るメモリシステム３の不揮発化処理の例を示す図である。
本実施形態では、コントローラ４の不揮発化処理制御部４５は、データの不揮発化を要求するコマンド（例えばフラッシュコマンド）をメモリシステム３が受信した場合、書き込み単位に対応するサイズに満たないサイズを有するライトバッファ４２内の端数データを不揮発性メモリ５に書き込む不揮発化処理の実行を保留する。つまり、端数データをｐＳＬＣブロックに一時的に退避する処理は実行されない。また、端数データを、パディングを使用してＴＬＣ−ＮＡＮＤフラッシュに書き込む処理も実行されない。
【００５６】
そして、不揮発化処理制御部４５は、後続のライトデータの受信によってこの端数データを含むライトバッファ４２内の現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達した場合、現在の未書き込みデータを不揮発性メモリ５（例えばＴＬＣ−ＮＡＮＤフラッシュ）に書き込む不揮発化処理を実行する。さらに、不揮発化処理制御部４５は、不揮発化処理の実行が保留されていた上述のフラッシュコマンドの完了を示す応答をホスト２に返す処理も実行する。
【００５７】
このように、本実施形態では、コントローラ４の不揮発化処理制御部４５は、端数データを不揮発性メモリ５に書き込むというフラッシュコマンドに対応する不揮発化処理の実行を一時保留して、書き込み単位分のデータが揃ってから、書き込み単位分のデータを不揮発性メモリ５に書き込む処理とフラッシュコマンドの完了をホスト２に通知する処理とを実行する。これにより、フラッシュコマンドの受信からこのフラッシュコマンドの完了を示す応答をホスト２に返すまでに要する時間は長くなるものの、端数データをｐＳＬＣブロックに一時的に退避する処理や、端数データを、パディングを使用してＴＬＣ−ＮＡＮＤフラッシュに書き込む処理は実行されないので、書き込み効率を改善することができる。
【００５８】
以下、ライトコマンドＷ１、フラッシュコマンドＦ１、ライトコマンドＷ２、フラッシュコマンドＦ２、ライトコマンドＷ３、フラッシュコマンドＦ３という順序でこれらコマンドをメモリシステム３が受信した場合を例示して、不揮発化処理制御部４５によって実行される不揮発化処理の例を説明する。
【００５９】
ライトコマンドＷ１に関連付けられたライトデータ（Ｄ１１〜Ｄ１４）は、ＴＬＣ−ＮＡＮＤフラッシュの書き込み単位（３ページ分のデータ）よりも僅かに大きいサイズを有している。まず、ライトバッファ４２内の３ページ分のデータ（Ｄ１１、Ｄ１２、Ｄ１３）が、ＴＬＣ−ＮＡＮＤフラッシュ内のある書き込み先ブロック（ＴＬＣブロック）に書き込まれる。このＴＬＣブロックにおいて、３ページ分のデータ（Ｄ１１、Ｄ１２、Ｄ１３）は、あるワード線ＷＬｘに接続され且つストリングユニットＳＵ０に属しているメモリセルトランジスタ群に、書き込まれる。
【００６０】
ライトバッファ４２に格納されている未書き込みデータは、端数データ（Ｄ１４）となる。したがって、不揮発化処理制御部４５は、端数データ（Ｄ１４）を不揮発性メモリ５に書き込む不揮発化処理、つまりフラッシュコマンドＦ１に対応する不揮発化処理、の実行を保留する。この場合、端数データ（Ｄ１４）を、パディングを使用してＴＬＣ−ＮＡＮＤフラッシュに書き込む処理、および端数データ（Ｄ１４）をｐＳＬＣブロックに退避する処理のどちらも実行されず、端数データ（Ｄ１４）はライトバッファ４２内に維持される。
【００６１】
ライトコマンドＷ１に関連付けられたライトデータ（Ｄ１１〜Ｄ１４）の一部（Ｄ１１、Ｄ１２、Ｄ１３）に対する不揮発化処理は実行されているので、実際には、フラッシュコマンドＦ１に対応する不揮発化処理の一部は完了している。しかし、端数データ（Ｄ１４）の不揮発化処理は保留されているので、この時点では、不揮発化処理制御部４５は、フラッシュコマンドＦ１の完了を示す応答をホスト２に返さない。
【００６２】
フラッシュコマンドＦ１に対応する不揮発化処理の実行を保留した後、不揮発化処理制御部４５は、後続のライトデータの受信によってライトバッファ４２内の現在の未書き込みデータの総サイズがＴＬＣ−ＮＡＮＤフラッシュの書き込み単位に対応するサイズに達するのを待つ。
【００６３】
端数データ（Ｄ１４）を不揮発性メモリ５に書き込む不揮発化処理の実行が保留されてからライトバッファ４２内の現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達するまでの期間中に受信される各フラッシュコマンドに対応する不揮発化処理の実行も保留される。したがって、本実施形態では、メモリシステム３が受信したコマンドは、ライトコマンドＷ１、フラッシュコマンドＦ１、ライトコマンドＷ２、ライトコマンドＷ３、フラッシュコマンドＦ２、フラッシュコマンドＦ３という順序で処理される。
【００６４】
具体的には、不揮発化処理制御部４５は、以下の処理を実行する。
まず、ライトコマンドＷ２およびフラッシュコマンドＦ２の処理においては、不揮発化処理制御部４５は、端数データ（Ｄ１４）とライトコマンドＷ２に関連付けられたライトデータ（Ｄ２１、Ｄ２２）とを含む現在の未書き込みデータの総サイズを求める。不揮発化処理制御部４５は、現在の未書き込みデータの総サイズがＴＬＣ−ＮＡＮＤフラッシュの書き込み単位未満であるか否かを判定する。
【００６５】
ライトバッファ４２内の現在の未書き込みデータの総サイズが書き込み単位未満である場合、不揮発化処理制御部４５は、端数データ（Ｄ１４）とライトデータ（Ｄ２１、Ｄ２２）とを含む現在の未書き込みデータを不揮発性メモリ５に書き込む不揮発化処理、つまりフラッシュコマンドＦ２に対応する不揮発化処理、の実行を保留する。この場合、現在の未書き込みデータ（端数データ（Ｄ１４）および後続のライトデータ（Ｄ２１、Ｄ２２））を、パディングを使用してＴＬＣ−ＮＡＮＤフラッシュに書き込む処理、およびｐＳＬＣブロックに退避する処理のどちらも実行されず、現在の未書き込みデータはライトバッファ４２内に維持される。
【００６６】
ライトコマンドＷ３およびフラッシュコマンドＦ３の処理においては、不揮発化処理制御部４５は、端数データ（Ｄ１４）とライトコマンドＷ２に関連付けられたライトデータ（Ｄ２１、Ｄ２２）とライトコマンドＷ３に関連付けられた後続のライトデータ（Ｄ３１、Ｄ３２）とを含む現在の未書き込みデータの総サイズを求める。
【００６７】
不揮発化処理制御部４５は、現在の未書き込みデータの総サイズがＴＬＣ−ＮＡＮＤフラッシュの書き込み単位未満であるか否かを判定する。
本例では、ライトバッファ４２内の現在の未書き込みデータの総サイズが書き込み単位に達している。したがって、不揮発化処理制御部４５は、現在の未書き込みデータ（Ｄ１４、Ｄ２１、Ｄ２２、Ｄ３１、Ｄ３２）をワード線ＷＬｘに接続され且つストリングユニットＳＵ１に属しているメモリセルトランジスタ群に書き込む不揮発化処理を実行する。
【００６８】
そして、不揮発化処理制御部４５は、フラッシュコマンドＦ１の完了とフラッシュコマンドＦ２の完了とフラッシュコマンドＦ３の完了とを示す応答をホスト２に返す。
なお、ライトコマンドＷ３に関連付けられたライトデータのサイズが大きい場合には、現在の未書き込みデータのサイズは書き込み単位＋αとなる。この場合、ライトコマンドＷ３に関連付けられたライトデータの一部の不揮発化処理は実行されるが、このライトデータの残り部分（端数データ）の不揮発化処理の実行は保留される。よって、この時点で瀬は、不揮発化処理制御部４５は、フラッシュコマンドＦ１の完了とフラッシュコマンドＦ２の完了とを示す応答のみをホスト２に返し、フラッシュコマンドＦ３の完了を示す応答をホスト２に返さない。
【００６９】
このように、本実施形態では、現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達する前に、データの不揮発化を要求するフラッシュコマンドＦ２をメモリシステム３が受信した場合、不揮発化処理制御部４５は、現在の未書き込みデータを不揮発性メモリ５に書き込む不揮発化処理の実行を保留する。そして、後続のライトデータの受信によって現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達した場合、不揮発化処理制御部４５は、現在の未書き込みデータを不揮発性メモリ５に書き込む不揮発化処理と、フラッシュコマンドＦ１の完了とフラッシュコマンドＦ２の完了とを示す応答をホスト２に返す処理とを実行する。
【００７０】
図８は、本発明の実施形態に係るメモリシステムによって実行される不揮発化処理の手順を示すフローチャートである。
コントローラ４のライトバッファ処理部４４は、コマンドキュー４４Ａ内に格納されているコマンド群から処理対象のコマンドを一つ取得する。そして、ライトバッファ処理部４４は、処理対象のコマンドが何かを判断する（ステップＳ１０）。
【００７１】
Ｓ１０において取得した処理対象のコマンドがライトコマンドであると判断した場合（Ｓ１０  ライトコマンド）、コントローラ４のライトバッファ処理部４４は、処理対象のコマンドであるライトコマンドに関連付けられたライトデータを受信してライトバッファ４２に格納する（ステップＳ１１）。ステップＳ１１では、ライトバッファ処理部４４は、ライトコマンドによって指定されるデータポインタおよび長さに基づいて、このライトコマンドに関連付けられたライトデータをホストメモリから取得し、取得したライトデータをライトバッファ４２に格納する。
【００７２】
ライトデータの格納が完了すると、コントローラ４は、ライトコマンドの完了を示す応答をホスト２に返信し（ステップＳ１２）、処理を終了する（終了）。
Ｓ１０において取得したライトバッファ処理部４４が処理対象のコマンドがフラッシュコマンドであると判断した場合（Ｓ１０  フラッシュコマンド）、コントローラ４の不揮発化処理制御部４５は、ライトバッファ４２に蓄積されているライトデータのサイズをカウントする。そして、不揮発化処理制御部４５は、ライトバッファ４２に蓄積されているライトデータのサイズがＴＬＣ−ＮＡＮＤフラッシュである不揮発性メモリ５の書き込み単位以上か否かを判断する（ステップＳ１３）。
【００７３】
ライトバッファ４２に蓄積されているライトデータのサイズが不揮発性メモリ５の書き込み単位以上であると判断した場合（ステップＳ１３  ＹＥＳ）、不揮発化処理制御部４５は、ライトバッファ４２に蓄積されているライトデータのうち、ＴＬＣ−ＮＡＮＤフラッシュである不揮発性メモリ５の書き込み単位に相当する部分（非端数データ）をライトバッファ４２から取得し（ステップＳ１４）、取得したライトデータ（非端数データ）をＴＬＣ−ＮＡＮＤフラッシュである不揮発性メモリ５に書き込む（ステップＳ１５、不揮発化処理）。
【００７４】
ライトバッファ４２に蓄積されているライトデータのサイズが不揮発性メモリ５の書き込み単位以上ではないと判断した場合（ステップＳ１３  ＮＯ）、不揮発化処理制御部４５は、処理対象のコマンドであるフラッシュコマンドを保留し（ステップＳ１８）、処理を終了する（終了）。
【００７５】
Ｓ１５の不揮発化処理が完了した後、不揮発化処理制御部４５は、処理が完了したフラッシュコマンドを特定する（ステップＳ１６）。Ｓ１６では、Ｓ１８で保留されたフラッシュコマンドを含め、複数のフラッシュコマンドが特定されることがある。そして、不揮発化処理制御部４５は、Ｓ１６で特定したフラッシュコマンドの完了を示す応答をホスト２に返信し（ステップＳ１７）、処理を終了する（終了）。
【００７６】
このようにして、書き込み単位に対応するサイズを有するライトデータ（非端数データ）がライトバッファ４２に揃う度に、非端数データをＴＬＣ−ＮＡＮＤフラッシュに書き込む不揮発化処理が実行される。これにより、ライトバッファ４２に残っている未書き込みライトデータは端数データのみとなる。
【００７７】
図９は、本発明の実施形態に係るメモリシステム内のライトバッファ処理部と不揮発化処理制御部とによって実行される不揮発化処理の手順を示すシーケンス図である。
図９では、図７と同様に、ライトコマンドＷ１、フラッシュコマンドＦ１、ライトコマンドＷ２、フラッシュコマンドＦ２、ライトコマンドＷ３、フラッシュコマンドＦ３という順序でこれらコマンドをメモリシステム３が受信した場合が想定されている。
【００７８】
ライトバッファ処理部４４は、ライトコマンドＷ１に関連付けられたライトデータをホストメモリから取得してライトバッファ４２に格納する。ライトコマンドＷ１に関連付けられたライトデータがライトバッファ４２に格納した後、ライトバッファ処理部４４は、このライトコマンドＷ１の内容（ＬＣＡ、長さ）を不揮発化処理制御部４５に通知する。
【００７９】
不揮発化処理制御部４５は、ライトコマンドＷ１によって指定された長さに基づき、ライトバッファ４２に格納されているライトデータのサイズが書き込み単位以上であることを認識することができる。この場合、不揮発化処理制御部４５は、非端数データ用のＮＡＮＤライト処理部４７を用いて、ライトバッファ４２に格納されているライトデータ（非端数データ）をＴＬＣ−ＮＡＮＤフラッシュに書き込む。
【００８０】
ライトバッファ処理部４４は、不揮発化処理制御部４５にフラッシュコマンドＦ１を送る。
不揮発化処理制御部４５が、フラッシュコマンドＦ１をライトバッファ処理部４４から受信すると、不揮発化処理制御部４５は、ライトバッファ４２に格納されている現在の未書き込みデータのサイズがＴＬＣ−ＮＡＮＤフラッシュの書き込み単位未満であるか否かを判定する。ライトバッファ４２に格納されている現在の未書き込みデータは端数データＤ１４のみであるので、ライトバッファ４２に格納されている現在の未書き込みデータのサイズは書き込み単位に対応するサイズ未満である。この場合、不揮発化処理制御部４５は、端数データＤ１４がｐＳＬＣブロックに退避されずに（またはＴＬＣ−ＮＡＮＤフラッシュに書き込まれずに）、ライトバッファ４２内に維持されるように、フラッシュコマンドＦ１に対応する不揮発化処理の実行を保留する。そして、不揮発化処理制御部４５は、このフラッシュコマンドＦ１の識別子（ＩＤ）を端数データ用のＮＡＮＤライト処理部４６に通知する。フラッシュコマンドＦ１のＩＤを端数データ用のＮＡＮＤライト処理部４６に通知するのは、不揮発化処理の実行が保留されたフラッシュコマンドを覚えておくためである。
【００８１】
ライトバッファ処理部４４は、ライトコマンドＷ２に関連付けられたライトデータをホストメモリから取得してライトバッファ４２に格納する。ライトコマンドＷ２に関連付けられたライトデータがライトバッファ４２に格納された後、ライトバッファ処理部４４は、このライトコマンドＷ２の内容（ＬＣＡ、長さ）を不揮発化処理制御部４５に通知する。
【００８２】
不揮発化処理制御部４５は、端数データＤ１４のサイズに、ライトコマンドＷ２によって指定された長さを加えることによって、ライトバッファ４２に格納されている現在の未書き込みデータのサイズを求める。そして、不揮発化処理制御部４５は、ライトバッファ４２に格納されている現在の未書き込みデータのサイズがＴＬＣ−ＮＡＮＤフラッシュの書き込み単位に対応するサイズ未満か否かを判定する。本例では、ライトバッファ４２に格納されている現在の未書き込みデータは端数データＤ１４とライトデータＤ２１、Ｄ２２のみであるので、現在の未書き込みデータのサイズは書き込み単位に対応するサイズにまだ達していない。このため、この時点では、現在の未書き込みデータをＴＬＣ−ＮＡＮＤフラッシュに書き込む不揮発化処理は実行されない。
【００８３】
ライトバッファ処理部４４は、不揮発化処理制御部４５にフラッシュコマンドＦ２を送る。
現在の未書き込みデータのサイズはＴＬＣ−ＮＡＮＤフラッシュの書き込み単位に対応するサイズ未満である。したがって、不揮発化処理制御部４５は、データ（Ｄ１４、Ｄ２１、Ｄ２２）がｐＳＬＣブロックに退避されずに（またはＴＬＣ−ＮＡＮＤフラッシュに書き込まれず）、ライトバッファ４２内に維持されるように、フラッシュコマンドＦ２に対応する不揮発化処理の実行を保留する。そして、不揮発化処理制御部４５は、このフラッシュコマンドＦ２の識別子（ＩＤ）を端数データ用のＮＡＮＤライト処理部４６に通知する。
【００８４】
ライトバッファ処理部４４は、ライトコマンドＷ３に関連付けられたライトデータをホストメモリから取得してライトバッファ４２に格納する。ライトコマンドＷ３に関連付けられたライトデータがライトバッファ４２に格納された後、ライトバッファ処理部４４は、このライトコマンドＷ３の内容（ＬＣＡ、長さ）を不揮発化処理制御部４５に通知する。
【００８５】
不揮発化処理制御部４５は、データ（Ｄ１４、Ｄ２１、Ｄ２２）のサイズに、ライトコマンドＷ３によって指定された長さを加えることによって、ライトバッファ４２に格納されている現在の未書き込みデータのサイズを求める。そして、不揮発化処理制御部４５は、現在の未書き込みデータのサイズがＴＬＣ−ＮＡＮＤフラッシュの書き込み単位に対応するサイズ未満か否かを判定する。
【００８６】
本例では、現在の未書き込みデータ（Ｄ１４、Ｄ２１、Ｄ２２、Ｄ３１、Ｄ３２）のサイズは、書き込み単位に対応するサイズに一致する。
したがって、不揮発化処理制御部４５は、非端数データ用のＮＡＮＤライト処理部４７を用いて、ライトバッファ４２に格納されている現在の未書き込みデータ（Ｄ１４、Ｄ２１、Ｄ２２、Ｄ３１、Ｄ３２）をＴＬＣ−ＮＡＮＤフラッシュに書き込む。
【００８７】
不揮発化処理制御部４５は、不揮発化処理が保留されている全てのフラッシュコマンドのＩＤを端数データ用のＮＡＮＤライト処理部４６に問い合わせる。これにより、不揮発化処理制御部４５は、フラッシュコマンドＦ１のＩＤとフラッシュコマンドＦ２のＩＤを端数データ用のＮＡＮＤライト処理部４６から取得する。そして、不揮発化処理制御部４５は、フラッシュコマンドＦ１の完了とフラッシュコマンドＦ２の完了とを示す応答を、ライトバッファ処理部４４を介してホスト２に返すことができる。
【００８８】
本例では、次のフラッシュコマンドＦ３がライトバッファ処理部４４から不揮発化処理制御部４５に通知されるが、この時点では、先行する全てのライトコマンドＷ１〜Ｗ３に関連付けられたライトデータの全てが既に不揮発化されている。したがって、未書き込みデータはライトバッファ４２に存在しない。よって、不揮発化処理制御部４５は、フラッシュコマンドＦ１の完了とフラッシュコマンドＦ２の完了とフラッシュコマンドＦ３の完了をまとめて、ライトバッファ処理部４４を介してホスト２に返してもよい。
【００８９】
なお、未書き込みデータ（Ｄ１４、Ｄ２１、Ｄ２２、Ｄ３１、Ｄ３２）のサイズが書き込み単位よりも大きい場合には、不揮発化処理制御部４５は、未書き込みデータ（Ｄ１４、Ｄ２１、Ｄ２２、Ｄ３１、Ｄ３２）のうち、書き込み単位に対応するサイズを有する非端数データだけをＴＬＣ−ＮＡＮＤフラッシュに書き込む。
【００９０】
そして、不揮発化処理制御部４５は、フラッシュコマンドＦ１の完了とフラッシュコマンドＦ２の完了とを示す応答を、ライトバッファ処理部４４を介してホスト２に返す。そして、ライトバッファ処理部４４は、不揮発化処理制御部４５にフラッシュコマンドＦ３を送る。
【００９１】
現在の未書き込みデータは端数データのみである。したがって、不揮発化処理制御部４５は、この端数データがｐＳＬＣブロックに退避されずに（またはＴＬＣ−ＮＡＮＤフラッシュに書き込まれず）、ライトバッファ４２内に維持されるように、フラッシュコマンドＦ３に対応する不揮発化処理の実行を保留する。
【００９２】
以上説明したように、本実施形態によれば、データの不揮発化を要求するコマンド（例えばフラッシュコマンド）をメモリシステム３が受信した場合、端数データを不揮発性メモリ５に書き込むというフラッシュコマンドに対応する不揮発化処理の実行が一時保留され、書き込み単位分のデータがライトバッファ４２に揃ってから、書き込み単位分のデータを不揮発性メモリ５に書き込む処理とフラッシュコマンドの完了をホスト２に通知する処理とが実行される。これにより、フラッシュコマンドの受信からこのフラッシュコマンドの完了を示す応答をホスト２に返すまでに要する時間は長くなるものの、端数データをｐＳＬＣブロックに一時的に退避する処理や、端数データを、パディングを使用してＴＬＣ−ＮＡＮＤフラッシュに書き込む処理は実行されないので、書き込み効率を改善することができる。よって、ライトアンプリフィケーションファクタ（ＷＡＦ）の増加を抑制することが可能となる。
【００９３】
また、現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達する前に、別のフラッシュコマンドを受信した場合も、コントコーラ２は、現在の未書き込みデータを不揮発性メモリ５に書き込む不揮発化処理、つまりこの別のフラッシュコマンドに対応する不揮発化処理の実行を保留する。そして、現在の未書き込みデータの総サイズが書き込み単位に対応するサイズに達した場合に、現在の未書き込みデータを不揮発性メモリ５に書き込む不揮発化処理と、不揮発化処理の実行が保留されていたこれらフラッシュコマンドの完了を示す応答をホスト２に返す処理とが実行される。
【００９４】
したがって、たとえライトコマンドとフラッシュコマンドの複数のペアを連続して受信するケースであっても、端数データをｐＳＬＣブロックに一時的に退避する処理や、端数データを、パディングを使用してＴＬＣ−ＮＡＮＤフラッシュに書き込む処理は実行されない。よって、フラッシュコマンドの受信の度に端数データをｐＳＬＣブロックに一時的に退避する処理、また端数データを、パディングを使用してＴＬＣ−ＮＡＮＤフラッシュに書き込む処理を実行する場合に比し、書き込み効率を大幅に改善することができる。
【００９５】
なお、本実施形態では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような他の様々な不揮発性メモリにも適用できる。
【００９６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９７】
１  情報処理システム
２  ホスト
３  メモリシステム
４  コントローラ
５  不揮発性メモリ
４１  ホストインタフェース（ホストＩ／Ｆ）
４２  ライトバッファ
４３  ＮＡＮＤインタフェース（ＮＡＮＤ  Ｉ／Ｆ）
４４  ライトバッファ処理部
４４Ａ  コマンドキュー
４５  不揮発化処理制御部
４６  端数データ用のＮＡＮＤライト処理部
４７  非端数データ用のＮＡＮＤライト処理部
ＳＧＳＬ０、ＳＧＤＬ０  選択ゲート線
ＷＬ０〜ＷＬ７  ワード線
ＳＵ０〜ＳＵ１  ストリングユニット
ＤＴ０  選択ゲートトランジスタ
ＣＥＬＳＲＣ  ソース線
ＢＬ  ビット線
ＭＴ  メモリセルトランジスタ
ＢＬＫ  ブロック
ＮＡＮＤ（ＴＬＣ）  ＴＬＣ−ＮＡＮＤフラッシュ
Ｆ１、Ｆ２、Ｆ３  フラッシュコマンド
Ｗ１、Ｗ２、Ｗ３  ライトコマンド
Ｄ１１、Ｄ１２、Ｄ１３、Ｄ１４  ライトコマンドＷ１に関連付けられたライトデータ
Ｄ２１、Ｄ２２  ライトコマンドＷ２に関連付けられたライトデータ
Ｄ３１、Ｄ３２  ライトコマンドＷ３に関連付けられたライトデータ
【図１】
2020155052.tif 000003
【図２】
2020155052.tif 000004
【図３】
2020155052.tif 000005
【図４】
2020155052.tif 000006
【図５】
2020155052.tif 000007
【図６】
2020155052.tif 000008
【図７】
2020155052.tif 000009
【図８】
2020155052.tif 000010
【図９】
2020155052.tif 000011